spatstat/0000755000176000001440000000000012333117317012146 5ustar ripleyusersspatstat/inst/0000755000176000001440000000000012324667727013142 5ustar ripleyusersspatstat/inst/CITATION0000755000176000001440000000311412324667727014301 0ustar ripleyuserscitHeader("To cite spatstat in publications use:") citEntry(entry = "Article", title = "{spatstat}: An {R} Package for Analyzing Spatial Point Patterns", author = personList(as.person("Adrian Baddeley"), as.person("Rolf Turner")), journal = "Journal of Statistical Software", year = "2005", volume = "12", number = "6", pages = "1--42", url = "http://www.jstatsoft.org/v12/i06/", textVersion = paste("Adrian Baddeley, Rolf Turner (2005).", "spatstat: An R Package for Analyzing Spatial Point Patterns.", "Journal of Statistical Software 12(6), 1-42.", "URL http://www.jstatsoft.org/v12/i06/.") ) citEntry(entry = "Article", title = "Hybrids of Gibbs Point Process Models and Their Implementation", author = personList(as.person("Adrian Baddeley"), as.person("Rolf Turner"), as.person("Jorge Mateu"), as.person("Andrew Bevan")), journal = "Journal of Statistical Software", year = "2013", volume = "55", number = "11", pages = "1--43", url = "http://www.jstatsoft.org/v55/i11/", textVersion = paste("Adrian Baddeley, Rolf Turner, Jorge Mateu, Andrew Bevan (2013).", "Hybrids of Gibbs Point Process Models and Their Implementation.", "Journal of Statistical Software, 55(11), 1-43.", "URL http://www.jstatsoft.org/v55/i11/."), header = "If you use hybrid models, please also cite:" ) spatstat/inst/doc/0000755000176000001440000000000012333041747013673 5ustar ripleyusersspatstat/inst/doc/getstart.pdf0000644000176000001440000034556712333041752016243 0ustar ripleyusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 3046 /Filter /FlateDecode /N 79 /First 642 >> stream xZYs8~_'rk*U>N8V';ZmȢG=$%%V"$&L@2Ô,`Zf9V,d.,bR(?Lj혔LZR19)e,X:hLP3阑*`2dFQ*LL bA`$SXRHaA10b2k@S[L̺elMh:l9hŜVfNb s:D0g mQhڭC{By@Y(1΀ČfC1,"&@}Xd0 YdiJLa(@( "!@3>9$6gPElonW0עq/$kz)e0mMρ{ |琇P7m6Mt׭/G &61z1"/V=ULjcVэM=RBFe$ש[hl2g };nQ*R>j ࢞)Ze<{::xoGm)#p}­~rSW>R˚Di&AC}3[64bQqݏG@s#NE'xV[.<տ@w!a}- R"38i0eDž<"]D7AIܕ;hDtvoQX÷d"ɜRfej~VmRNl-aT MݬcU;[d66 +2:h擜)tqu8 aT)4[JdGs%pWiX=)EjZhk}ф]{(R?fHKl?qiuy%Dw DX4#&HS#;Iw{Vb=oyjCP-ZWB>=xI4K9ԯncpM XIw칐eQZǬncV7W1^KZNkv_ V6e_ՂF<&}|`pH˛%~pL0o7"Iu4xw[W,>&HޭO%U}d>L9vy:%D]"Q'EӁru6Ͼ茺nH!p2mDT%ne<u;Z~ؓۗ͡A̞=T{.y;|nzv`ݴݧ3ROq k7H褿ZR\*,oF/fzr> stream 2014-05-09T10:56:41+08:00 2014-05-09T10:56:41+08:00 David M. Jones CMR17 endstream endobj 82 0 obj << /Filter /FlateDecode /Length 2887 >> stream xZKorԯ- !H aV;WjV&Y͡{Y]]^MH/^xR]s0jr~{U6RGɏڻΫ0:W j)iӿ٩%2ȋ A~܁Ą_Tꏻ(5z@sB> l)¼.Q*Tp9͇bhB⯇'pOY/La2ѳv#ֱ64mlΐTo˕"OH#ExI;֢](ȌpjsΔWcdPB8 k\א׉'Qjz9x<WuMtQ"3A+Uiƣd}DžAY&wYˍpbXL۵BȗI֎ 8]1l.j2.bB--1 4$-r*J4`xH\]->-AU(rrB)Z:u@OxSLῷe90b ?tԮӡKӹ[Rުp%Bj2v>G}cXTPƝ~?> stream xTmL[ۄu[zjڐ& ISR YԂm\7Ɓe}}lll d#,*s!AQS 5U,딭Q}/{KYk:J>9! i A,pkYIRX"<%\{`*I M:b~yF%? $$Ymi5f]֪ToPlޤxa˖+zYVV+ VF*EAXZո=+noV- 抝6):VQh5rEڪ8kkmVYQ`(ט H6[YrMVG"$oD*OX%$;ėdS = V+9[: RZΤHp`x".^&. 4'l<ޓ.qZݮʱ'[Ԝ>~Ԑp;" TJˑnv0n:vz(۫1Ė rI$h)G +PCƭn1GQ)sQDTVb“W 3\Gd 42T{ꄫq};ӥl)u,ҿu -9=5z5JG@'G!ulP/'AG/N$e OĒE(:%Av o-8?笯 )*SZ:?Owv^V t=.~bԀ"s=Qr:jQ(.Ge?~Ə N|< \kt1}ź '`~A{{Ag&LbRqY/zsN/2̑tlʸIЫs'Ɓ9׏#g.p<-.:["=p>^֚ ~"\)f_K*ͬ^ *hSX3VzJ Gܻ%HRM}LiU ԌyD_^ m.m,!_=CaQ } `sq^z.&?xDSvd juXmځD_l̄?!K0!+Ȩ BQ.ɕ ÐH4"gendstream endobj 84 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1147 >> stream xEoLgZ,'PKe. ӡE&`$8t3*ZB[-B_ @)aA_0ngKt.Ǣ3|'>8pOMH ]׉qqB|K +Zj%FׄcP FcJg5qtlANܼ9N)ѳqE'GLAEgٶijו3lqi+l$1stDO//iLӳt&sRϚ1 q7'h1,bJ, V`1؛2$ 8"YQ5J%H,ytPDyKz|02R ՚|dTy-9 ̣7Ptӵǎמڣ.>7'S6y4%k<~G}R*#a)kZ1!%o5{q&`i|rS ݥT6P k1 P& u iБN/y.ehvA"}AmV6_,.%-TpdN%o ԡpw MP^AfMPhCi]mP5|6⤠r0A2 4eZWfB:'gAt$^"auZ;8ȷUf L}8 a S<~U!3DӤTT{ c1Ն>yv%BҔ@lpF(QvAZD>R yCaR9L`2ȏ-1Dn͑AlbYSt4Tjxǧ4!DWpM'՟P,مfRԮϛ.Sv*3Py$?dWGRj=.pR]~ٶzͩ-M`mit@5aTT[LBU3QavFWu$ D7endstream endobj 85 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2693 >> stream xVyTSW1T8hmQnZ]lUAM(HB PE`R[=-ZXӪ]}s8ۙ䝼sw~]0D5f7IxF$&<+,K1$CF'1qJ,)Rr"*&1>AЙϛ:kƌK2Mn"tT K%9trwL }aaVZ0}zzz4ZjѸ{Xmd3mY`͠z,iO;tbS7q$X0%BeXx X-E0d/3?I@}V1ٰ$&)|pVe1Eҿ\9{BHgϵ[@ML! ׇnw_c.87Dp !H_ݻYu\17Osx)EV(FK~hbX̿fwȇz-Z$0%jCM}baJbfpx4~)HFpa Zѣ:V.v8|hu+t]Cls48H5m2 `}pzѨM)W$CyʒT*<%ChJм Od<5J R$C?$4iCogw޹jBA!kڗ*Fͮv*T;_RL X_zh=M?P:n.kc^B#>7gQZdV=syoK gHzJ}B&oc%O O\KcHwL r3RssuE{WlȆEyh3ůTP2;5fC*grb.4A>0`xcbqpbVUo? 5kZrJfUъryQx%4FiVΒ[ )L#3~)'Nq/4?ud@|SR+$k L>zYnq:X0g|" Sl ! 2!JHVG69dChzj,o5M$C!gT&࿇Vc9C8&.Y{.яѮ}O!Kq玎_R{kkjj!9nG61 9ΓNp{s|70s_gSRr28Uŭa“vnvEmVn.I}D,.7{eAƼoخ&(`-m;,aAϧ'NQкOn(x'dDBm ZB!K\ &sŨ.سel}+jVP 9vcE2 c 9o}:q47.tg#| 7ޫ*s9C~8]%^d:C"K1tnPY A}tgUY`>]%3Ƶ ÉSyu{M-2uÆ*rXQP.,4 ISl_Q-ӉЂ l}WNMSk3js8RI}?~_Ѓ t!z?޿/r5DJ,b `7-Ye}t"øx3 OA!^Pg-.[}AI|%58*I J*1:,X.ۯwt䠆͠2Ǥ 8<G(&9 \~/lЏidinBR.ff`NjK3_2`FI"\b^HUdUԦb[w f7R͛ `b6SDsin! )Kn ѾGr#湂J.W;> stream xywXĂ:b=v%&cbo;+{]X R,D[L/11;r{wN`ݙy}cBLLLKo9x~ ? k^˺`5Ƃ_: FۇPAQ>^&YϜ?f3[/qs ^N~e=qwxxGӧGDDLs ɤ>֛=g) ]!NO{F 8\*liq?Yto&U[ \mS87>|uc=Xl趑DUZZC/V542RRɕ UjKuuΜZL:jMУ=inա:k} YTFM2(mwT|P(FϹ} $Nބ dm)I؜Z~^E.3 lrGYmڝXv[huHN^LO&Rؒ SA]Zv吲>&}ݳ]ؒ̈_L5J!@F7إ* !%&=j]!tcX>VuNO*Gz}# {8\?HZɁ"1ZBg|AHSU@v<2zF)^K:)%1 h&i~ۉ`7yxv.h6E}YЄrG~ (]̏cX=օ '1q?IhZ{"w:t+M*xTȇzOoA?gy7*[| ƬzNOŷonסш0#`P'.oBj%d@hH~-v&YGx D oح\bɡ{&gdz!@S9Q)8X[w1GQHb_w6d z3oiz3Kp!o[Vo!1*i?BoR 9>SYrAG+}֬ HHRIٖ pV-PJܢ`pS7}ehFq(\\ 2Mڐ)t_N][V/3ouSPy'iUϯ]'Vect[!\ OtRx( ě_ ޛУgOZ[zT_hHKBҒ@ 8#{jRj2P9Q}ZҰkZ<#PSؗU3+r3dyYsqTTOKﻢi]sQȗ! eF&PufFo9nN>*MOmRmi||Xk~1|l[K0 oOn7ʤi28dOa޲+WGWזW685GZ9r}ؓ8S\.S|4Gr u0)Cv=unƣ'dK!?a*8;"#ӧY3! bS%ir)W̤xH p 7F+Nm'=aeV$W P+J`ZVaE"@B] Ev<&1 -doVPTSnBZ{^+RvYM{ "ZWUC+ztDREk8,1|IIuWuJ%E/(uxc$Z'bĢ+jH(OtJ]Xfd+f^1QDRȕ2P:])ʣU\Saw8WUX3QY(%;njp[9pP8" ~/ B/ rKwMRAVhKBGl2 EZ8D"5a*4yH5R}U7U͚Kh~{ !ʔ(}֒Tt0I')H(_J\30yY3GDP%IAVqY记5q IocZAݫc!'4<6ı?\p10ELDd_Ct 0.4B`(q6:lH4u*Nh;E8vj5MW"Ƀ>AHY)W)!.N*e2'A:^z+w+|v{@݋T%Z f.Ag2L4n0/rHw1NâzVn{J>̍x9CHPNMRȒmoxsgp H֥.j^e8l#٢9&h)E gAJLxqDM]QyUg0W:]0E,Z(Du/bQ *{L! wنZ6WҢ3:ZrpR>eU}N_Y 0!6Qh?gpcwlg-vl | )*=z c2_fǯ8vn[kOx:4X,N=#fMh{,T?\^n+ǦE3Y~&ѣrS~G75 R鹬O_|gᢺZMyH?=h OsDSXo̩DN-*d2du,IDX%!t_E|'&="\};ڳ'hx̻%ZZԩ@}Df^\=\W,ʧ\uW}'ųOnXxOP0D4-[1>Vpkh:) ͒;/ReQ=2ef5|4W/ =A ,6$E0L*£}eZ"gC+%!}NkFũꐋ請IA%3VWN>39 dy9gRyosmEf/,K;p%=IٛRYKYkMࢌ#۹M'Mdv{kR8Pi4 >w~b5xM9)"MÌUq{r%C3= ujˍM (j򠠨N_?]Lªꪪꈮ$U_74PtMv#a$Z5)PJ`H)3>7sia1F}N0VXG]F | \iG*F!&. ^BuZ?}[ *2:-|V:e]*&(H+cBؕ 8BA~VM( &,&ߙx/L"8> rc4Ԝ>^Yxy#S]ǖ[rA"~<ެ!4$$8ʗkSŪ*4`}HӨDg~4 >~po;{A s.X֛Ʋ_7KYgLh(c=#4bS-G~%2MC\dELVf / V?1w_'*q$k#D_tqXMu%"IL@kNFOLhYfm̹: $dʉ8mg<6BT3#p:*k/h$ S}&挅FAL?߯gk/4^F/ |3EEd 2:!^IJPvB~~KZ1ރOyc}Ti SŶ8 vQd| PF6]ٜ(gφr  ) n*/$YRQC\_u Dəߢ${Kx3tdKPd6Вh FCdid3WbFn'(A'Y<\`25Y?obȽۑR4h+2E~,-M&EYlyex U+$;#3Lִj P6ְ_O}ڊ{,X oAк!pDZ]Ÿ?^@c%VJFL{9W,b⽟om_< ؉M8,snІ<;YA:NO'TŰ6FgfrjJ[^,ҌM̿u [@1+=n=9lϘRC\6JϠDۺSp˞(0Kʑƥ%&9?_OdJW1DsFΈr4АV~ [](qJ 볾p^ T釋p*5FvYjMZ]c_qy~ ’i~+Ri̶E>a o+T9&bƺF]ҳ>p)Dp=G p)lbX$Y)];usY7V:[v6O[uV3Ed % ^2CWgɊEaj# ^Moq%rzst zf xf3lY[1:;YJ9Wʼn3<:w-غ^b_,'JhY05 )16%y5|uW{OYv072}xы"L%{R;OMv6N_;jȥ&`NJf&(68|de")JHdDRipwWN£V:9Z򹷸1ULSpy`_ӌ' 29G w[Su4Bϻw eG9;cΝ2^{3ގ4$3&Inxvtz˅Hοcֳ:iGӣ 9hgs\֐ROv+ 2)JBD∤ +5 RicɅYjMf:W|6t!;SkYm\=C|j5lXx ٰfh 4jhX7pi9هxYBV,.G̲'HD~NԽ> stream xX XS׶>!prD CVT CE " I1a "*u@*AVkzc+vw׾{/_6{^׿ 07#x<`{ӏcF7 dGVuրǓ'-(~"xOl8:~fg;Y+u|2ndZ+S؎#BfM,'y&I~>D||mKe˽ž]mD.ںKJ HdK#K#)|_$CǏnIL6}LXA|A$Vb-XOvbXH,"KWbFL'wb91Eф1$y`b1&l!1b +aNm?6Wۄ06#==6O a! TøR$FQ7ida5h £/n8yPu5uS/o/Awvnyg Pe Iϱ964[c;0' /_v$w'gK0YtͅpfA }7ϹLm\ k}8Q{0d6y*YڴBw~& QrALzX QMܗ*yɻlF*HTٻ}V "!Hb>u=#/$2x"FW(L߃SA Ya ^ 0anaDjiLd(b/%"}۾?6u1z^Gjwb .Heha?\fe傢QgUq *7zA Qc8"gV׼ ilUգ.?[" kzġ娆u;Eu7J3=}]@A0Ȁ3|K@ ^iUra$ nelR"!M#ln~: ?o"&%y/;IATdJY6l$b'CF!(&u{)U(=+Ґ(E>GadK7 7 F;ILrlfgD\p:{ڃ(MT"R[R{#䉝Va`=+a{M'{b1Ř72l+MB 6t@L'! hgN'徉3[P^Mƻw7 l'ﹾeAdo'H[0^y7N~{gx~ >w8N#hEY..]@~,|.v44WF18FSUYo4ȩm%r4Q»HnJrؤ1T`W/!Q1($ɂ&.Ҍ THedrdcQx$-DQY7!C[6G 0LS(ѶSmǿsvӺU^.Aw5G[Y;x lάU6|uXOOky-Zfn\ s~tvŮLw'{xr OΟyL=kd23BPViz `^c;4q4;\(Əމ?% buVV6**P~fGخؕܛIʫ6=tA#jl8_#DH$jD yݬpnWJvԅ6wh7zB#K*KIdXB(q(JSS'N \0aͰ8<008\zXxkx~O8< [~ ֿrpx6+29...>2-Z$49,{APƾ[wynAb(ۇG]V U)apy/v`l9q]|DW'!):RQnohJW[.'x+: cR<#mugWM+XmZP1mV{W&S_v感X) gCi~iRS_MfO.Y|2{y-lVVN6P,\8JNiF1*uFhxWA?X1"„{?'=w kroR?#!P*VNo)tFv=MZ:(Z6IW7]5 $k(UgejKq{G]f/\di jnj8B)Np{9ojGNuSB}8>+JF *T^])kS9E$s{vց96C> stream xcd`ab`dddw 641H3a!O/nn߷}O=J19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU8OB9)槤1000103012)ٽgf|;?̿ܥ;~3>,}} |g|Waq6;7<_s/wt\7Xp9|zaendstream endobj 89 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2655 >> stream xV PSg1!H[(XjS[RR@@"$ /a\_Yń0Zf3+ g62 ELY,e1˘L0(f(1ZdR?߮~733^# |d @.;;Q4u{[qJP܌x;_G&Ǿ-ONf`/!Z E5O]ס|w;5,2]9IBX?3%uJKW*֡V/OL!3$ɐw8'VZAz9 g*]BuK{.kAmU pn&(x?qKG~DNјpqz;wd@:8tyc74ATNfMq=܆ޜӜW:EeCP***# ;<ӮI[\ybJQ3:sBKvK29ϭg &@Xv;٭P^l=p_*ŀSIδ !ƶxyɪ8](-JB(5ʺqnZmRG+pP2.|8mƉ7s҄UA X nlwc[o[=D'C.RAnaE͛#zO'p8-7,%x=W*~H;wo7, zV|rgr9p\edQ1!I<=}oN5:Vua)/J<TC^\'Ft(%0ӺxVqe2<g͕9%*U=KbT2m "vm'=!wB#v +j8"xuFzH;D}Us+4R1`wŒeso[282pb{g>!Nb-dɜh!Gwk[GQ3aɰ'X҈SP'=O5MRD1fQ߽NV: Y zK%{ 0 "U7 ;m5 'ҝ[hUs]Zsl2T $E 5tRP_Mw|m4H?ulfZL\!ip1ڂ/_eWeߪݴo=؍:^f6nG˝%V؝\TSjWى֘D&?z^ w\lj©o6ᨤlw8)N%]2GbvAhz`*MT>6(Y_٦2Na ru R>v9Ld{V3U~a~Y~;?M hp+dXWރ2s㘍  T!A?CPZ\Rt l9 BFJkM{rf,#c{kOIʖ$߾z۝;> fBYW T|ч2{⷇}{x/.R[>ϨZG%1o-3?[\&p߬$Ͼw:eH~dlGwq_j fԈ _N FX-3O5+O!aH sOO[2&Bg(1:r/qAʖo%kwpuFNe9z;Vlwo+& ! ^$a{}S]9NU!z쒕J k ”I0\k]>A*Z⚢⢢ZZZgshZZEE/)n)qAZ۠$nkHM!r2QCcYdq{f'~YbHn*.Mv탒lF"__c`Iendstream endobj 90 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4289 >> stream xX teN ?ZF_AP@QGuYR"v/mhfiMI%I-mi,Rp\Aq\n/9~i 9|}yc2&Ob0)nXD\fI`?JIa0'?8{  )(TKxQ SE-[QO>U9yd~TtrAfzNr~'HF-|!@Nj&/eab^AfԖWM9Qwti GXX-HK3yᚵy n(NN)MNK߳9#s /nkVvΊ%KfF,w8VB6"vƣkKk011360bld<=5F4cc.#0.c2njcOJt;y/NQL#L枆iaӮOwN{ 'ofPD9:k32 v=,q^JRgje:]A6AСi6!R3 si#|iL %R'3>tP璃hڬlOgWjRFd,N}-Ngee*C9&kNq8dH(NS) OS EDbk/"] hդ\(\ D]do6R~4v-=DB*ړ  D9%͠%*`r>YwfDZIj:h2kYk;t9f| Cϣ? 8hzʹ͈q9ھc gP;vJoW\b}Nȳ4Q0,T nQ+t@?^e"gwn4WPh)$pMC Ѣ9+)ǧC μعD 5\vzd!=*%KZ؊VhRA5L?3ZGS!a\ؠBg(!*DPEPo2 hbl>bt5O<k˚灘lW`0.fpc+r C J2&37OA߱2j =j r9V Bjh"O#ah[`:HI))\ Y;C7E3وєFh)JWUu56+c (X3J(XD_@>zōq\E1 ]g!)?0tBD00WQ,aP^~RldM9zF赖4 k@OMyl#ᢸUI HD~ Gs~jS% <\$H0&X @nvAΥj:rAZY )m4BܡFGE~ӹ,Pb9*rUz3Tq :kVJUIckKYt!-Chil X`6:pt׏V{0ϲ+0s]d<-2SE^E4ge5jOV@̍L=͉[B'],}=u TcK+5<@cZACaPP鐢ITH1 # 70})'r~)=wNT;HBq?Afh%4P V[K) 7О_T*7輥e#=0c0M`$rwq/ג/RVJ%~N" :G:?o^S5f \1TWVC@8 8] vOO v7u*Mn]s`7:]Ǖ"Zo&7Y9c]ƍ뷚JdM @1%[qjJt~p_REP*h-T0C?(4 P ̡*Ѳtecf8 Ą,k]שwz.O? ל!⑴~½O8 g@R$IEaV,,YR wdDM8D@/}>LP !nİ"c42'0DZh]w`5A,O##ddͥY=bz3׾GE~ }LjSMʳWlnpq?Zwj9|ۑZJM2sXLpgb6Q4BT'A WfEF#pi*R uh*z=鼢, wȶ )K#ܞޮ_R:=x/0#E}fNMlW%פFOM!"G4Mw|&Ro6`2q$ӑ+Rc6Wya7\xPՁ C|X|"{,տf}n!WtrrՒ'e@ll(}p֝B8koǙ?UFlS(z4 +;w\`HB>{/z֘S.Mr2]iYcڡ3zT`ĄA@zw2PL 2CcQ{`?vX 5=L7Vԯ_,-) [NA!>)67R ~F+4v%ѩ[MHBr$%p,=_G?^3_r7kPf z;!!z90쫿(%z}̼vUx$̮jwu+`7_%Q(ij;Ґ(SE !\bsǦJ+RE\9O#*(sCJ̄E==8A{ftbK2=Fhhuh&E~˔Ÿغ-+'r_-._Heŗ`CX.|p9? r+1T2yNW\qHkL9U'z*Pi*łGY{/r&<2*KkXo!!en1'˭RQ/>ʕ7Z zRmh;tBAJiR-zJ:vW϶ 'fPD?K[KL6.~|uru u!N"DfP 1jhZ oGKb3KIclGU82VqCSnݯYcUۛZD V*3++'N0Q'`xN)͉lN8**g ۠QUxa{~˕\>raƿDvK@@= E5b<8^>sY }#8ܞZ%pj< V2yA.]򚭡m8fE%+T ھֺҮIɩBrD/;+3OD1z `62Sށ)DTNXPG(PcɎ){FL~3}6}:lZ=endstream endobj 91 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 368 >> stream x%KKQueһ+!LkF![Ԫ0Rh fR):iNQѦںl@vP,qp ּZ({,mCswiv:ŒhprLE%1"2Z hGJZ2(!Kt iL hi3EHvceEUՐ Br\Fj>a ]9CО a/_1Y VPB>J]|U?w^ dY^5ccͬ%꽾.eN^ҲW/޷ 4؉hFEf5h {EY皭LJfn4n[h[]o;FƏxa _( iendstream endobj 92 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 945 >> stream x%RoLufΤ̲dl_ܢ.ψA h\+)׾kKBGO c aa32 웛}%Y~n,Û}☶ q|hNyX9+/U)/k@5=޻F54?>Cϡ cg&踽T.F;-΋7@|6*Jrծ;[[YsE#5tIoKn/˸fKL !Sd$MxdŘI!?r,G{|F{6aendstream endobj 93 0 obj << /Filter /FlateDecode /Length 161 >> stream x]O10 vA,tahU@p' aK,N>~l#GpƲ5 HeQ7-Ɲ剳B7O~W3g]].!tD[U]kL'F;e4',CIT @s$Lg)lSendstream endobj 94 0 obj << /Filter /FlateDecode /Length 11351 >> stream x}ٮ$G{>"&S/# HH] t%,.^:=#ܣfnd^O_m9ۿ i7Ϳ[׷o-؀oT{{[bOoq5?lӏ<}~{zչqy _9uֈ^~g[:1Fכ>`ȘɸޅOev>lѵ~6t; 㺧T}y-1뢏[]$Sߡt@vn1 ϾMƷ82h-5r~nwGOnwSCҍZoP^0bbhk$M}^ ۔^bj컱O/j )` x`K*M6Nm1?c&N^9G—amzY6a\䕼>Tc Y=xq*ޮ? +.8RңlRBAǑ~+&?׽&$WhÿK; FaOf8ȗ&<ؑ޿W4<7 "i\NЧב;[K7MWl;R2(`]>Z[;`]V㿰+bGkfI)`HQ>Gljdbn2mz`և.D2lڧmqg qCgG* P/D9,XE; ,e:ݒ3|5Ql1vTh4qx=6zj`-Jl\YLR &.[=Odx] V&$˒ Hs=!1:zM. I@\AZ!n\$Sȫ-|F-)0b{1aq&#rkM QϻbnÄ~]h8?jO 92 *\1ؗGFH}N6AYx!pPlJS5H6 qjB®ȁnm+%͸ctf*`&_rIvo/F.B7Fl#PM/>l_.G'??O_r 1|}Tn!WFBn'd}2gf 6M)?_|ؾTNffo.z->J(M F"CbG\J7m.}Z]nmAl):~a9&_W%9I+|SdY7 4aӖfPIJ Զ@nf* s-A6)`MJ^0@< 7-*} ff?9۶`%e qQvuDϯoi٨+2"ۑyhL@O;Ъ̍gexVg*r $F&9EWtU(P&ZCeVtWDEqu&{B0-hA*sEw <Ubc iZI4O&iW9 5#4;-Neg`;v agX<ڟ)i79[0m&+%RӁl~xY`ʚi5 [rssZjcJr>Pi۫ I!Q%Iv+!+Tǁ@!'u0-@|<J}!vj"gm]m9U/jrPowg7MiKD|$Lpn* B w&糬I@ll趮pvwrgxxF,Ձ,=eub M{iCSе6L lXq4L6td)\Ny,$<%H.'\S:(tL=ȃK@&0СvR%btQ*·%7B+ (wI@@ę𬏊`oX̽*3g&:]R0\ Д ,(L2 o4G5al:CMnӶ}3N/qP+s4'zo3t l +N3-z2S_KD"/G1. :dӀTEIpLl : 9iU*_[û0p!}J}.u PզLaRC~to!Vr XL' P9L]iK/RK) }Jb5-y"]! f(uU:y'c깫~8 ҭ8+~~p^u#Na fC[=,x+vyD%9kPY␐3:j"?C},7r%wslS[P),-`t6] K3LrҪ 3l;S~f~U-3誄u9f}Φ\"Qy(NQH8sda.ZD{;&QJMxy'hf&ͧD1[ԠJR;4y(6R!<̀(]ȃցdU(P|2|kez&ГZ~ӝ%V=kL!bbŦiyrl{Aӧ1,vulѨqQ9DJ%"HfzwЎzEu([3r pi976bB`j|ܝΫet6*n Rma/ba$JA)67|ml1n!QtM8)\@KCjTq' lcH)mL` r1f5M[0:SJ1oP/cϡ"  (-K,*|pDܵzId©)sͅ1}7̬ͤڀPdkhYy3]-RTZ<2CFw7EQ6 KйJqlgGsˆ f I /g:h`eNDd&ğxdriP&Q` VBzr*┛M0EKF 6xJE 'Z,Ξ7H\Fb:^x D)~n ǹH]HN(|s[紽]盓:pᭀ%twJ$]f#}4wi5LbıLj׽~emb\|xcYxImME͆344qE-Hre | QOfj MNit1m@ 3:Q00K .ӥ픦 &ˀH5(U!'q%Y:];HbwUy DfL,Gu2$Fqb դ6je@aﺭS%n#=-t@sg @´!Җ%8{)NNB섋DHMM.JP@qԐgsتu*+I*Q-XK1N! 0ɑ1P "d1b&N-s ]rMY!f_Z3o$'dˡ،%x͕3IBLaWf~F2MVAL&Dq@ĥ~f7+nDB"7k3mifci) LeX ) :}s U $-(&BmU2p^v $Hel m£URou!g(;jO _l&CG*nIO[>ao 1I2@6'{ѩ`4tRcX] Iu$w8eEfb %c v;a7![y199C\^9.a#ax91flKƩ|Ѕkx\Q-Yܚ  #Ӌeb]+b3 c{-muҮ=tȈh.ArΙa(H"\4X{Q0jS3!pIjMԝ-zr$$25Y~bL&gacͳ ܁{^RЄ+X1tg<7a]apMkA`Ñ3F%宇d' #lZ{ImMr^`|n *n=t gPX|ȴt#w -UviMMe| 9" FZjygAӅm7m~hjL0" GqT!mwQkwHV|K6B%^pf-^T02Q+m7o]"GUa2gXB t=r߶:Vcpox<{V3 N͙ʛy#XDY%n`] 1*{{D}k[r)F ~1!Wxep뜳\U.܉~gD)>NSWφg{gmk1Ԡ/+Zw L+2\g5M9yYnkt /I:joO-Ɂ3$k9j{5NZα݋@/&M }ɑk`b= -]Sc9?䋉%eᡉbTdFZVLY<3uO?*lۦiMla_)ܞܪZBoGrpS4tڮO]K6I渔G1mB>]{Tl\JzjⱅP9D+ٔuC\= +o7ʺV䧽P/Q@]ĩ~0c_u,yYReLB^TzzU}W:y4jB%Ӌҵ:RIѳ VP`b? ;ۃRHhԵarPo(uOη*9lx_Qڦ|HP6A[6 vzbRX|MZǨMV;+N[1:M=84$1hzD5@aH!‰sZM6|g\C5nNˬXeWce&*;5LPyj̭ Ot8oe.7q\6C}a;]b UUuBWp/mHȋywn|xZ_ w xZu{Y;{( @[PZ|c3 Bn,I*9PHkA?E9^h]JjT+ 7@{,jSRܖ)oPsSaU@oҋeC x,'ډDy>=*_YՊ]nXg: @#tyYįs]ril0ji;P)0.~ דqR6f/ /5Y7UЯ CZvG4wsUx% {:kwy%THOV KFJΎWjYE9~)6E2Vli?W>Pڽ:5vI'2[͜^#Q$ű`uTcQ`?vsC z(;OjOWz{^<#į7X@|b0 ^?Kh]a8A=^{kKic^]Ε5K08 Zq]Wxaf/ӥ5Xvo$H }#σXٷ7j3[JKrJHo$T2$40ªҿ&s7%Mk+8zdl~zl~2]ŤMwϼm`W.?riim)_+oٜu=KƠGs]~hlpnn6襑Q!VY戂Py[z:(i!y"ȧzs> stream xmkRa߳<!S8NGqt'O:TSvo w#T@MjdJǮx?}x2Dz8SJ&5ViEĮyz^//:x*YraI5m<`1U:N\Wϐ 2<>A8*8/\]Izs܃sfv$0o-&߼VE0WM?`ݘendstream endobj 96 0 obj << /Filter /FlateDecode /Length 2635 >> stream xZn}p~y H6`c ȃ7y$ʒ jiˁE5f_N:UԛFO}ߜ.tB?nʯ8|qߔlc8+{eYϗE!vM !?nu+u鍗+=DocuAɴ?^ܳi«woo0+-@}%ŝԡFmv KO~!Dfn-3itӐv7kȎ6 x"yd:#TCoJwW̬h-T_ >#^:G+T#MY*h՝yIGwAu]2SbwMB{]mWal{㔍@n^ nƺZgjNj#ڋ=)Tr NabtӉd/,Xf"]`::MR &bdKQq]].qXvJY;\NkE6r}~/1 2/GӛA ţ`o nHLQ[89"8o،oS|-{9^]1Il 1$^W簃5MJ?P=g{Y|c|< )B5#]Y 6dK`ᶠ@4`r{ز`( 6p#lث;LK; %*.yi7ZsݴL:+0Ձf`xev!SBXIw1IaVaνqvsb5'k|;)rkG+y&]˔H&eBpV;eC#IgV&Ls%Uþ55'F:I{莿Vf]; c;Éͽe3*Pec=)łWew5Kj1; 4Y'湏̡l>ނRҫH!;ާ_"ϪCz1ȸ,8 ~U h+qE3S#{Cc\Jm'JW %嚚]#YR^Q>qFwL37vò8l ^|O2oM)R oʨk\ l 'K횪<}/xn'a ?h[?0!EYyi@.n -7V0vrfX/!tUyez3b\d_~6`2y!*ek̫lr|(t[,EE6j4铙mojR(I(q^^ig H(Ԙb0*|\u)4EHVr44d2 Bp}}G;Q5k jjWyA!xL\f!^>V0yqv%۰YkTsYHgb~";1&+{zOFor)}nL'*¼{>ZZY0M )"9S2JjmVN@f$0b$OR_6NքQG2J 7x䨜EO4mSc?: JP$e=:kP!K:=eЀ{n xɦ1 Ko 63ܞ;J.5-{d4maNz?<1$|bbLr\t%mx*ܧ ,gmޚ M gW+joD`ҙH D%x*զO(z@)%uJ1Mml#ΰ]PS}> a!0uxU:|[ lӢBEch|҇-r9.7 {Ok=빐 ߲F')w5~FY0Q-ձ0!G"g:p88oQ& \4MgR1yVlJ9}X|]) Kec?W#RS2uq)-%S[Ty*t3/R9o&XAX$iGK%W&}<=.e_>X3W6`Agzq ]_/N8-2;]zqƗ -bIO$b1G2.d/m:KC݌X4Rr-oڏjZl x]*U2bV3$!?:Ԅn. ?/mrA KG"C&mߕplɠ%L Xb M`0哘|e 4xyip}.1)84EԜ͖fIJlT[袤!?RRmհ#]N!5HFAk:/2q~{PYJOU\G4.ss/33( 5z| 1YtWXrRc+PfRMP>of};{&}揗ϵ\endstream endobj 97 0 obj << /Filter /FlateDecode /Length 159 >> stream x313R0P0U0S01C.=Cɹ\ &`A RN\ %E\@i.}0`ȥ 43KM V8qy(-> stream x]O10 *,tahU@p$ aKtpw'y?\gG:ikD&똨A[L+go*?`3]ğB\J!rdgdtFs8VM*9K7ɥҴ43 F1S|endstream endobj 99 0 obj << /Filter /FlateDecode /Length 3282 >> stream xZko.GE-|7|/-"ER $%Y-*gpnRiKgΜypz}O苗ݑ:8HNr3.GK}׽m2&tUWJw?mvpٞ}J_䍎f6w]o]LC)RvNỔ-.I%M mTX:ߟw]SnwG-Uw|h(EӇ;W魦}SF8J`>)ڭOC:l`}tJDg iFTIlgJA r)[$%7xRz=N:߽t $b _zLyukSChP%>&#?7[40%Vq fݞ T`@ݞpDkVuMj"ZBjևQE;ݦ สTT>'Ƹ $[b9j{7[g">  [sŬ]GAaY(i`]^8K o/cR\]tӬ4U0wbv3 ; wo\}$%l`?*+;Ӓ QzH{^vS0:<9p{> cC*=t :Ah@`5~~CxnoFi>+Ky>?8@0Ť:K֐i nk 2'Xmv76Z C)ⴢ`|[Dlzz]^ Y6tLI`^N䠼!=<Ns(1Xր,mp8.΄V\em πF9p6"Ω.]8r/EȱNG[JP\ \JL_*%bRpB%o 2ԙR  MDXNo/1Aij|Ô45AM8RE!hf7T}>1`(AIIb8 HpٰE$f Z`7p `H9Ӑ ("3ZQP~o@ބ9y Kol vUIDloÐ1ɳLn.CHʴUylfԉJe4keEbR:.r/+Dz)D6)˱}^@EcϑƸuwK) wRAÄ HDPaSB"]갯:7KpP'!`0d: slSKI Gܦ8kPdy DyBMNjò=R[FTv 2&+9GWEqU#`q %'07cXBפic`Aq`bA/ \aQ KCG'McQbr<&^Ζb:?3OC;e: wؒGg3PaР=C,ro"(=%+2 DlXAIhS-B]. Pqqø_$Fu=/la\j wDϻtoɩ6=?݈:iCL.m'[Dp:$RO/1.X f',Սi*UCb MMy+l iH]5n=ױ5~وځcĉr}<)N+PUޖ2*azPv  j;dyJAC嬢"M.ېXnI~*LZxWHRsE(GdN3^4H{ìo5)h,yHO DZ޹{qwEҬi_.)4ilj3VS*ɧ' 34bVoæ8P1S_Kw=QȥV,"n#/]YD4 5=i d1VNv3`yuT݉ҫԤpz&n{J0 nl-9ToBܬ _">o\쥆Nwqch=s)ID9}Uo(fjr:D"67e3KgΊmIgzP{m>ee6~Md&I^`@7n54{Z~iuIQ АRgL8şp&wXN}Z` ̑3|F6r7- KntΦdti^&<`rWn-٠$'Qƹr:e:4<@m@ 2BwgFQX.B/#f}C8}SFLtYסuI'bXk-IQ7 Ac:OT2vQ@tpVO0l\=C*'oTb/R*[FORgHe]јJe*,Je\*Jӕ]n| r' 1 '³^b`CHbyݣ(8!R>l-hoޔ/~=RaR?0KK]M-|SerzuyzbB荵mJ6ey./EyI/KZI5bZNen ze7Nj)q9_~b/9"g ֲ.]{?л:M~|QrM ϗW${J^RK ;o~k#wyҳLD.~5 ==T6*j|P5nPE{2uXf.ay\Y:es7)&e+@uv9kMyW+rβϴUxls(xNeMw1;qݻ`?l7 |y [sRLt,ǵexe ?W<όJ֡gM]9%5r)ZC,6]9pQ.~s7?E8zp¬ROOzbV\J"> stream xW TSgھ1zQuzh(GpZRSD@@ @B|ـ@H’aSVikVZ;uƺ97D ϙsrrO}}0a_~˺[gF{.oㇹdk8 ǖA0a4f T+aFZ(tJЙ ̏ t7U ]$JO&-TQAE"`aTT~~~d7'/L[25"4?C95'UnH⦆ >W+J秤 yMQn^ZqArJ޴-Y,Z2ej\D虳fŰ&=l ۆmv`˱,{[Vc`1ػl[m16:&Fcl6 [bAl,5l6!ÌuVaر>H>1|,^?#qDˆ#&8~5w|ԅC׃ QѼ܎@%9v\ 2yN` ud)j+Acȍ]ّK  j9.wsD54R+]knk9q GżrMFA3X.xź{v]bDB%Wg1(F4"`  ($CdL?n}c[WX6 ]0ʛ6\~txgG'@ע7gV`I=EWBa0LFyQڀӀ8wh ͜5zł]R~$j'[{EN)j+ptXfYCru,,3<۸Mto\l5m6}DsQfI4:sCkq'jD"\Ey]rĂK q.eft5@ t!&Uc&W]$QQEQh_!S\U@5dֵwܲ8Z`;1\;V8>{% F#P ͹rw* K=q$@_ ]O\| ~oȀZSR=e%'I14U} kepQBLNgfEQD'o- 9c.~ϲ98gِ"@1(\p^ר6y0 ~saQ@[:Qh/3nouo%Upw S& &͙f)iHc c͍-ĪkLIc)N=wѾ׿qC?6hnmfpU&%G/ <x'#?Z:^,3_N=f'ϓ-b?KfLGC"f2)#;]'pr.BE}U@GXK,bBE PK{R;هhǡQutۇ->OufQ'oȩ>ˁ~_DfTG> >P7hgٰE s~?DO}U;/DEVQ1=̜WVw|06q[$K)Z!Hٖ٦2A;<_eJYhV!@[/uZlz3Sՠ ՠ9[PHU'3ΚXa8qV2Ͱr6vZ-De\CRZ6"O v\p2Ivo2@l1fPGإMl.p! 0lՕp PQ')^MɽחPF1F⵫v=8 N M,wԀQPW(SSJ@ JJx[Kj r#p-6Uk*$L șf&2Q5]t+QHK@AHnCq}Io4! H`)&au쀱 ULUBlɨ&gM'ʦjj;GAзP_&VKK0bQ,-R̘e^ {`zmQ$`s@" \*bTz2gÊp po*|1}2Ӝy]:y|PR[52FUoa=cp>Oae?lwl!='ݳ5_e =X6sgdpS ypFBr-dMBf/N ߀[a6nʭ`sgih}7MYYJyr㗭PH4yj%䕅޾G'^@eT#kwA]?b] 9>?!zْɅuib̈́3ߚvLG'~?q'qv%䏦o[3\QԁZ+  RxycytR1 mŁ%c&HPQZ |VnQAp׈~?/]endstream endobj 101 0 obj << /Filter /FlateDecode /Length 3518 >> stream xZn}W[vA$ &kd\Y#9{fz+2 lDFO_Nޟ5AgL g?q3epԃqRQ4\ܜ==W4rS9F3EA'J sUߣW+U_51eN b)o{W[d:WF[;# q O5h5ߵ&⍅ֻko&ߍ}\I)zִJ+lk\7Y[Sm=cc;DuH Bct[v-~2FyAp[BU T24 `8Y^VUfXc[sj<m |-] O; ٻ6^Q_oSkk}k> ա%/N˅CYHzrMZ#N$ kMe鈥?qף [QCx:E(}Fe-39?}@-{yD%d2`_]4>)uD}29's@Nތ\M^rZ/y"JSE<VLiGʌ˽p/Nds: ZLzh~`4 N\׫ m~ݤ;ˉyׯh+Eb0)Gَ] Gps4_ IkrJ Z?~{l]&lzz>vR0H&d"݋ 绊7EiQ ȵ)d; J΍-Y7i*"/ҴBd$}uGrHθO's]_Ӓ8xX '=y-8w*'Mc~pe~V%D U)@ 9m,բufC&*i$e>kyhh'\moi<֜3Ҿi}Ik hM|q5KɹXI͙ λ@j(S5o_mSb#$ /(=Ngu!N,=o'cyyÞ6,@y\Hr> p[xϻ3gagaHTTŁRl_ ?B>nVyԾ}<(_ Fm&{;8&L .l!c%d3|{h"8}#P#ҷ99:*e)#Um ;K-D>ŠYo7M~59GuQ:t9IAZs ZB`Xinc%UBgLsBH < v e\IPqbμC3ۖܤT&ɓheg%l ``G-AF`<LJ,est2m UTc-;  qj'MYi;Y"O̚|q n 'PQaj>:E5AaАfs0 57b Cb):j%yG!Ylm@3` V NO{)Y!]"MC#Hhùba0dTk[ "3$hI+  G.j^Ib܍LUBq{C 㵗(GbB QFRQ0np#8/ j>6ٙ@`tpB +F>Ō]99^cY 7E0IRdŃS@.*py>ԶW81(1Qm,{#IU%LG h!> ^4x*ظO 9fx\L4oON\%mf4vF#=9FȀ#,7ӟ_YV!WITS:gQe .Ɩ,{:k,WC))g\_ZK f`T ċH~?']nyj*}U}xz-Owpi8Oj}ojSV &LW0ZjjTDa9òL},(e,_~/DQ|_}/RU,sMYYg!'$ID Esο2adֺyke_uhmI>k(-oOB7ּ>K덥 yUC亂}9^ _~9h*V;bWtukKXsE̽4QoXWˣf{toX^K&, / r|Bendstream endobj 102 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 UЅUqP(/ Ct;̇:Z?Eƪ@L4D `,,O\g|Ix@w q+q)ZD ĺ;{FVI%0l>nSIT @6榹I*`,Χ`_CSwendstream endobj 103 0 obj << /Filter /FlateDecode /Length 26028 >> stream xێ.Iry"/sX?FB(ܐ,@bW0Y] |=2[c"9 mer/㿘/OxKk|SKyWZ2yEZ__~:?>/j?/S9S9[/e)[vSi>5Oe}oa}|;~i>W>u ?_򟾵QKo>s:_q奍˷v|?/lTGW?ӟ*e7[]:-㼮Oe=-i{S<>ՏS<>uVǢeu}j??v~.8y?~k.r4sG}6k9rv}n_ac C}],+ b]]c@u;]_Fo/>*_~ ;{{꧟QZFin߮^_wo}}{v奷leaŨ/^rW/h|<̏_9i߮UG3v4Wk{eYO̰f_a7avG`o=,~+Â[kӄ= wXfYէe eb(~TŮaOƕ77_eh^{q.+6N>`ОL\d8L1uzl0}$+,OM58a6[stg3Ft V|a4wb8_OK0˩por4݂)`(aſ'7`uN涷N›J[6Kʼn|(<w|3-A:,-2vbjںV\Tzų0 A34޾fNEfŁk8 ͿKXnZl65ٴ6gpď~ulK \N67NyVN6w/dho~|~pM̂3qZfXra`>J| c |e; a77,y`Lf<8ixBfi8 {CqVؤ4Z&ZM5v3\ak?oS#, O}=4 [hEр!ƽhEkt_pOYܮ#fzkذƼ0U33/ڇ'[?6 Se?m>]˳̢qLdc,ð,A#u,0|2_2θÏq',!v3$&y2drqN[Ϫ4e?e ~ɞafi8sX|OUO; <އHmO/aM+a,N~pK?'"D7ov__ W)~_"j[Glb\nzJ\:eƩl8S|Tb2x 8"Hz6s]c*>f8D,z_M]dl:i0;vk1q;, f?clebrTMg6Ywlf 1&b @1{$جgcsDJ+؜$tBAXokA`#[qZp [x2x2c2 np;6g<kfVbqUvu\b/慫Z$[Je#6l7t-1']'s\|㶧M ,76}<_[ q+*lջX }SLXY[lyTo[܋LvO阖,#6 xJ פX;lfa(iqo[%+ܷe[%fr/TR1~0_%D.pٚf Um3c]E$s&ƅwk=b-☥鹇Ϟņ@Y0fxpW9pa~䛯m >JK}bV;W,fPGlf\GgĎXU⎥ G"a}iJQΨY|3Kʆjeƥ/5fug,@tORl;lWikP!l@F3.o= •,?Vp"+\Y82XRݕu׈UXɖ\&Ǹ)fCb:NTxXZ?Yp8gh۬½o3`j p;GNia\jn0ϳ(F&|y0` ';?6?r78LwcsŏwO(vdW ?۴}q57,y6aV9&iC?ec=}f؂qQ61!0p1w+iS燧ƈ߱e@= ͜K61aib;:1p` ki- ]'#Nl -*G<_;~U8onLjg9w93;ܻA't8kXO#vd[bHT$vpLYbyLop<xj$Uvŏv$Qۅ'_с}e#\3$UO ؎l-ً~yv^:}A4Z|V|06]7QbW\^'ܱۗKok%V 74ahK&6z-qE =ٻ4+l8?r_M_o "PATϼ uy:գpj!1?}63ٌjE1<1QMwjc[ 8*6q.^bn؉z?J\8ݩ5NݵӝXP"`̢iĉӵi(,1GV[ckY kLќn_"!x>-wH<م#wHM!X8~b:ai ǁO|^>8#@)Q Nx<ꉁᡛXKÔ"X0HX0@ ⌛awt3< T m.k2/&v7 I0ݫp/G ~/x6^lk+!SޘBBLdtd1˲L4,T?c*dYLEwBEULr _b*d!VvbHb XXŲ8#SYX" Xb=V Xa .BUEX d"*6ba7#/ Xa 'V*ܰeVA^Xň]*AXË8NbU2'XqJ-bY@<2ƒhIV܌&YqE( / " * a[ldŲ2Nΰ,+;pEa9e\]pŲ"zl^uZV$lŲPydr\lŲ2@lf![U$؊*L"يwj N$\  V'\-]$͂+n 㑁\15%&\Q |@?.Tpť˂+p Sp(W̦$_qsspHfx|0X+̢+.IW*$]xA$]9%-b2Θ+.B9L!(nIW EW >̅W,On W 4$] --NbYWSXxESP~S\vᏅW@ Z|P>[zXJbԷ'^Ϝ5'E'@qWLj_y>IK)-+l_a`N_W+C+^yI6e ^q݉+-Ex#q+qD(lg-B"-W +.Wx}A6#.b1+%@tE?9 @6~IxE|W_]8 W,Ap8e\,t|IpŐttf!]b0)bN+ dhH[dW\.bCK "3 W W+ *% ;1+ WCIӄ+0".*WF%"; '@ Mi JY+zg wm$^,+4!ABt5AWC8ɌʆW\m HK .9^Rlx؅Wܤ+ GG·qq+lxb-bq^q^@qNAt%`Q7[3`BSGiIdMBjpkc,%c-So2L_%bA{C,YqE@5 ,lD1Y0( ŁÈhZ],O@IY!BŔ+-,NEn@&A㞘ʷgqjŲ8+Kh , gaNDEhhLJ,B/ GP ,aCwa7DʎkȲp y5hp  _H`LF ߃e Q[8t!??Ř,XDzฤM]h>u16SDa8&Ӡ ค$q 'IcYpbsEp, Ua-,'=, Oo(eq14܇,}T]VrB8}lq >/-cYH}܇,>3-A}lRwgwQKcD}\$,>TPe|LRMT-3KPѢ>}lrIZ$H-?6 L^T1޾> CL>n},JhaGL/cGS6BI&gFtXqEwKt%,$AI؎!bIHtHאH k O d2 ~b }3b xA Rb!8@nb @"2O!50q$jmtk[Amtc jem0Am8b/QxM퉠6ڡ(pm8Qŏx#38%FǾ32LT0%-g6g6\fpfù@6{ȆSN'?qDoFd|p |)>JB"<V0ė঄! ),Dq32niq,U Mw8:Ff=d ep=\.DO%mh&E# 7)o&nR8.ܤ(+nRknRƗ Kh!n$sXe-7) ¬1Tj[&RTHJI~BHJ"DR@1!)nM$*jHJUJ3")U ,D;ZKl&!lR?̊`Y]R{.dDVJJd%cYy,dJ3;TId)^BdV&f4 Yi BYi%eH^HG/ZB+YJ &tX j`VŻJSB,AqA"*& Q,]5I"_KW!rCS}Ѻ䚓tȾ1鲤qD\% oKD@=R*$]cBIxx>,$]|H#r' uY`.d dU+qT7_!Vp}0phTKNd&pKkz0#)+pv6u*60bR<F bC0P&x̕io1p$O\$ OwDd@4W,S4N](i1ޮhc/hR%#R) ~R`59T`5fQ9'ص''1 8Aƛ\w`b[{/Sff e]:ũomGSLRmC %.5ThqҦy)Gv6> ƻ61lMҎ I66.?D}m6⍠K Zj<;h=ڸrCr4˩5 dSjMsP%(f9)$ 085%6 hjC 7!e!ZH  rkqR6?EYjPd7nΝU.c”J1#nP +qō..(N9om,N`}b L08$"#0' 9݉#Ĩ1Jr9dɒI)r*`Ar9@r20!.'#)G\NӅ'r;,.Gˁa\> 1\bD:P`#8sJp)6 )|_|DR>a:Kpt|H:G^HcHSBFIj 9!P&S,PG.um$Szԩ*NV"V90i;͑;tD.TG; 3ITgP"DuBՙ[μt^@Bu%tSo* S.VòXYHV8buȈձxSΩj(]NQcuZpױI!S;O'qԓSENf:Rۀ$<쨏Iؑ"v:,b"b'5ؙGu^AJmlͯ/d˷_PXDMv(s`:U}aC~Ͼg]r~ ;컇Xl-_~QAL&חoHf[bmg\+;oc_bnٮ6v3=77x3.{I{N~_߷aG#O e,݀6XрfoКUawάϸ/." lwxXOO,`8ovY;hJU&_g4xyb|1}}>oA9mlcolm8ޯm~0Lnvg`|'~8!׿ \}1|_ni,~ϟ}ֈx cx_<.3_NOpKf.ixgRl.mtG`&I'\q[g Fyj9=o j ۧ?_Fb=oo_2C )m8~<227ݸ-?~c?|cWw_ןꫧWWOc퓐M?HNL-vlv=-%K[o?AaS֟{m*t$eywOrb 5`ۧhy|j#>ES =~0 giy|YW_' nM`_iKYߩF@A/ݮ }Z|+꧊#%<>jS<>5{>E uS<>s>vqG(=KaʻnS:WYZЗ׳O#q>/{ecd(j;}uQj`.$@qto=l l (=5[z֨S0Qx[( W&׀rC(Є ">JvW-"YP ,zԝ-A:J=,w[Mtt["V[/L =;| fapf8)z0ϵ+?d;2oM$7C*=|3B H^@6/1K Bȶap}!2A C:E?}^@+ƍIEyZ'~ }^6i}^ N[sCfd>/%+>GsRDy$=>/@vR=cgU8^kIuɀK"ۧS9"17|Nb` zR2R2yAh?yp\&|E}RDyA%Ādƀϋw*?V7,yxh>/ByPI1"hD5 5,1fjI}^C VAĻ>7K>w5.!R =w?69swd?-ʶ+@Kd=8y^@TlkLZ@wKf!Syq ]ep%-{`!KKKKi]rϓsw|)YOxo!@^Nq V1tdϋSA*;x^M ~yAi3g7Ur .*"f ,0stK;źk׉,R"xnd<-!i d:$ EyZ^@m غs6 jPEcBZyA'Hּ͢ 8YK:v>򎝛e>űsHع{5 ͒?:wG:䣂:/h1~ALmРm29so2NL}JX䜭uC0R1spt^֒)?_9X3KIiI nJ>:7/-V5Z:7T Jỳ巾'u^+u `\Aʑ(wܽc_ߐ҉yq+n^PȖ:/WD 꼸FN΋ 2[;XpսH3Ɨ:Oٹs8w!;w^ Fv8Q8 UGܹBع;i 畒cRңZ2R횑7±Dݝ7y`,srU#PE/ȹs! G@FY @=I큜9/ ip8w/,558/hq^)8w*ʁHW< +q0VAAw}%q{oqn^OyEc}Ɖz$J⼢̞*A?,>ew$q^QDAwYC IF Aw\Wx>Wϱ'"o9r^ond9gV"9w/e#+*y97za:l$ JtE;`sSQ@Gwؼ"$;y=%)"ؼzq7%$WDYϼQjL6?`*lޗ+y.AWϝ6H]0sc_(y۱#nW$l:Y)[8l^(+[ΛB~N?,X|e:;^^ +oxyEΖM/;{^^ΗWcic.7Gƭ:e^9ggtUP$bӽ Hew-je.#)V$ں|Z|W'2:۱ Mh8xZ*'k5i >?)&ºd񎹏-w> o;v^y1.ZW~(|Q?=k!^N\AlCꮚN:P 5)_BvgGJ+Á9բ?4kw>{Lǥl+2 1 xd87X05<ʧ}C>ELCj gipq`$stB;k=d'^29}o>WmP{EJ #]z9,';8VㅷmT+$B=|-;܇_P~&of[`%6.uxs={:ՑgWREt}+(p3׳Luڃ\UW +H]HjFݥ.jTw=B,P{Gbw.Ww qӂ=JEbܕ`w:<Ų\0"TU4Ibool<6G긱-^EřT^[b#q{lVT/vԣ; bպj7 X.eo}r챫`2ꂽd bPU}JBq"s|Ē<13ƛh3$uꑡWIDlERMP-bhP-lް:~8ʨx qs{F#璷V؋‡E]i8QȫR@#vnmF$wgBWqFMQͨ$#Wx. ^A,"[<}pC˳SM7 S¦PFc9qE X'fz/dU zRGuT 9̦0>հ/c%b21?j0?06C!*Qi)LE- )["끀2eEbʝE@HU m 5c/K\S[p}@}7bZ-)YBJ^Z%=+o+oBtrבS ǓwOdg(y&7h.~huK@,5)W18U¢~u}вXaĂ9 Y0b Q^ [q LI!Y !~P⡲f`J棐(&o e3ĂB^&ZP8*_A-^u !4klXpP_bf iX0T㩺ѵa9YF,*%-# Ob$TJiPES2*z ePu3$ŵjnJHq)irrb`Uw]S $:yXX7UCY[6lZgˢgEl%En\nn|3zx2˩ o5+E|C3${xa+T=}NpUGrîz U$vY'; 7 ;qUQg eٳr8J~< dhT*چzHIV]Z|qCKeaj;W// KdSd!!!K*o:rW:;{w=s6aa\D[bd`|EL|F3^Xp5U7^ͩ&f;q*I=JmҖ]"|oY4Y8KgtkrJC21YmkBl %K[*}*I8 +ek.,"sIhr,\ZӖ,\6 :[#ȉQ5#426Nz:Rob.曅}V߰Y[ e]QQn dk:CSql!OjJ9] mP7֠w^fxu 96Ӝt\+ t\3fG|y]^[7KxH?ӏ),vN_;,[bcv{/vKAP_L!k/;2w7 =v1odnpQ wh ]C>7P)qrKbjbQn!{28oo^vAk\ -Gweyr~|p|幫,u Uwu  1PbLXqtΘLǼ%u8 W. d"4d89]V@讒aa y઎="Hr}Y0:+=~$V,$#h=ΈG "IWQu gD+-l+CЌ:GKD}3[2(s-EnVY e@V 7Ljg43z7 SjQs 矩T(l^&Ti 2sq+Gٍ[̀ܙ}Q侔0b"h%-HOV"!eIIT3]y)2H"oRHP#La+sJNaU.Ɉdr&RI/Ӕ`blJ#SQL$\Dki#L7fv)A0ʈf"7ғRfT)Lxq.JsU=S=8+|faεO /}kv1Px*;ybD_%o6Oe2}I ,sڷoe%C盛<;G1r-9C+Ym 0z^!ٰYH? zBLТ3c4$+'^ilH#=!ɻPTZfF&ˬi!3o4fZdk|7~zFW!xE54SO#h[SZÄ,urI".v nBwF952$Nj,#K*-d nE`j)AH(0S ?MƬi$&U5bٚv$ g-Phh *MDo* 1q+QA,aPlԱ”HBbᇿ"7 )p/vR25?ހKc2iٸ͋*]0BD"4MQcU/$ZL"x^bm! ԭԯ[0oY nL-lwF ?m bM8%WaxWbVh6܂x=ߖ۸IC 88/8q:K~H#yJx1SbXI]軀څK]a!eo Bpp _z|O >K U=0P@ a]ePQEJ&"U7AU[q)!bYTQ4#*У\*^J+EZѨ*QIWmRn]֭KU3mI>_CFf*R xqLՂe=E63K3da+3PF7TAtH:%Id%RM#N X++`fVEUR,*ϺSW>+SHd+uvtFQ)CEgzf]ڼ~VKnS/eU$a\*\4gAyHb+ړ 21P#ga碳 M>&4Z$+U8X?J'U ,;k0U41T9dP BohYai}֞(O=V)gjW)YVۯZUW[\]gEqBaZNaUoSkB5ɝ8˖ U<;˟4X -ŅUC*UJ ׳\Qύ\Y$* /U*y*/RzXv6ZuuYUܦjAE *`ifQU/uD'0Jϰ % r)|R@K!],^L.7&R&l:\nR$RbY( @3 w ~yiR5DrKB'fKW)ȿ< `qpןN+SlџBw$‹VCiĂ2 1qPvrHEI$H%ID(Sg /EK$!5%$dzT#' ӽ/o*5Y.0$D;K 0$2X EڂdrD"DQ| E%BBQ\ ( ix+E"X1i63": W9A&r W9O&rHH \PG&\E_*$xPiA.H!܄\IHA\eq9qs$oE'\ ,"e'\ var*+_69s' ,=#OT^)#B^-yRrS1E%yInSd Ed'DbJ"1ETE"1 %섒HL6>I$jJ$=a@/> F0ʓ3-| P4I][bf&WNfd4J .f %bf|{B#D]=G0 1]}}& C?SY")̲ + Tۛqq *XMu *|CEC_P$ER3ZHS,pw}+“s|BO3o?E ʄjdIk̅: H:Hyu,a4Wǚ[ө:$k, eÎ5˰cMfke-f/[dh25>ļ9TstK 9A5P:%PM`M9펠D՜9oA7,Ac1YBTp*Tmp/wjVꙍnX#W)VVDITVUAY(eU@Cd!Vu"c+4P+: U@R+^|'4ç9q%jk֦7jkӛH"uCw]m3au\ggѿ@sA;Lu_6p@1p@%6S ^.\p6JMMVfec;6W9`DslHRYHh1PLZ?.)I :trM]O$waTd=XZH3C%5צQiCL4xʶ6tV[e[W[e[W[T9bW1fd̦a6%͕[jwl\LEMmQTcSVG9l Wg#0]EdY$#&2RsjȜBE^9\$2鈑9Mz$s AvѴtMW5YZhjj386C*f(]mj̚[t\H6ق%\6AH؜P'9lj͉i}csNnSNq$s -8\IΩEs࿱ 8p3YskT~9ӶYbsfvy%!]9gS6s|Y8 pQ[kζ6wEͭ^UbXh1t朇7j$hy{QC ́4*BHw)H%s5 9\!sQhN9Wİ͹sIluC\%+\"͝hМ#OYhN" 9"ќSjkI))q_]m6ZvkŮ6bSi6wΞ6"(˞63lj*c.6/6G@mj6p !u.I\-5jsIe9ȜC Dǭ7$sC>!s/ė`֗9D''sDI;X!:D0p;@|9XpÍM&#s19d\a!sKG.bks_}mR \\Cr2'`r9rAGNp9gI $9>` 9HWGxށrBx޻,:dM X79C`9XOX%b9r y~rNA9FsH-.GIj\{[hEsA x4D0nfMlH &pT+2Nx'ds$sN95i.†MmnqI58QhwZ9ޮY'DsAALN9u!iIiAKmnd;ϐ̩I`B @d!S{9/C9N$(D2sAL"sdWƅA1@9h[99Myd9AI{p+^Ӟ`w=w` dOs,}x_?շjǰw 9wi;aOc_m獈y!{g~<6/?(xs{첩_/lWg?׿.vls uąbJB[~k\=[|a&Vŵڜ^}w\__q?_6#h`y]&|ܳw3_7rY_yG>`GGnxvѿuU!~S`v۞>믷5Nt0sB6Vm{~FG1mF>endstream endobj 104 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10  ]ZUm?eB:gׁm_Xց$i, x`ES{endstream endobj 105 0 obj << /Filter /FlateDecode /Length 2912 >> stream xW peVS 8JPJH$t=B !r "BIHB&3C `qHla9X#[It-H$@vr![r{àe55o޼Aӏ8ϨLAt U91O1%(( <N)tLc):-arBpDu FEN )q`ᢲ3@8E.(3ܜq9,]X8Ib$YBX)ED9S&G? Y"4"H0HU'#~<DN^f^&w)G#*5 ;6UdoB8YnKpv?T=Ax 9icpg3|wzfJ;3W- @ Kaz@(̈ LŻ9=2qzm~ oۘ?hC]ߘꬼU.($|əg_l9xwZ_z^ύ˳/uv~=W\\cn|]{}whbB•g\8s}ݹ=k׎WOx>;{ɓ'{~vݾ9t֭WosS۷oo0<U/?VYk{r5];0_?"99aɒo2'31C s߭[=:`…WOV3+%/)jªON0lԲnwJi}޾8𱯾ꟛ{77;7~Qߺ?ؼ#se||)-}gtuwwwaAݻwzKw=GM4gꆺKozzO\FNO܎ٟ%5}ƊrqS޽dǬ _}'N zzOjMMɭӧϞ'~Of| ׌}mٰa7?Lzvne^QQ=m9ϛ7o}uu۶3u lTFv_O s}q8vjǔu6?N#Gpr#d#Y._w|7ߦ{X3|L2+#ƍ_M\=yu<%u:W 8:zÏ.J{}N.|\zժI)COX6b69&o|q}j_{gC׊%K S-ۓ&0бz5hpE] LސՁb0FxIfM )aapR2RN-RMJ`^YtM4JE,5 eFABa!T$<'+9 }%q"8EVa+|x)+Y9iEIX!ÉENBN( hF @ Il>9 ExQ عx^&qV}2#d(<&-s `4} ,[tW25DXBd,5əI<7ɰIdI.0I.uIcPg\PP ws${ ɜDe䂅 ϥ\SC!/l\ 3Sq *j=yfiD,(zYȪ1 .א#`n0/^3lf A*[Nš. T6`8(̃y ni"\>kYgIS#&iP:QH@4l C=E7k^jT"J-^- Og,kݟB!L؋{* Ɏ3-zF{?la~}Gid@tnȂ;zGS4mPڽ$k7hQuڋVmeLTXj/C<&2b hEey&J[TŘM1.[s9#,&ldp$6tnՌ&bJ@[Zyh/0xfkkՅ4Dg{̊fS:mPGI?&L$ Ab*ӝKi݃}M< Xw4{'eCI*ݥF_:mܯػc6eo;1 SbTfYV> dYr̎YR ~$NTxa!B?:sE^qZzendstream endobj 106 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 5293 >> stream xuO7܍+AE%(.5j\!QUt}79[=мr>f];:gXћљQl6c>nlmmE;ݰ/w_OG矃XPv [s^+ '4}jQY jXl5+zԌB)cT_0$ZB &4_=oU/] Οd,":82.t!:)6__50̝*` W-FD {FB/Reu ʂ۩&,pƪb5?uZǩ duj?;0k$zH}'7)hO?-``)4k© Y Ѵ|d *^20`+U @ h9q%9/!4 CĀv`j~&EXT:G\Q{@;8r @]VZ ֠bX&& BIIz}9wDmI;1yUz`4D_o@4^7zA dꀎyVP5>"~pfFS5/Z L)&bMB0\PWKgOBS}DNbt7#z2ER+P>sQk. bP D}@WիW49;.=@P')Ͱ 42UVrTߑEb&GG P?*4'E|MEIbAD`c# ?conQ.]B@ "(Z[nS 7 w}F@ŋ]g3 >0T~ mpH( *; D *(Z fO?|DXGӸ[ ]"GeEP2% USR>cEKi.Ǫo1w'@B4 ;}FPǵ_\WX&ByS I\6>݂qy :"Gy"%pGsYxMSF P~p)QsRbSO]xwARiz-&*@D3p!$htB:sCgjYۿB@ox4CnȀJ}K|ЍÔj6Ό(Vdžӟ+w#:6( >%Q`kalO't 0J3U}`kIڊN"\!~;R?ՀMCO6@K$+oVaMhƍ6OP!$&Tx_/~P /P& IJ(5K{nV0/O*mcd"}\ia !ˀ MwqV[uR||`7c`7 nDc`Dc`S ko$׭P f"Ł{jc7B_Oُ_KGPPP}hD {l|oY7^{ ρMТgԍN 4Kb!v#^y\o5wI =fgI V1{Ic9uT 'P> 6zv.aFcZh}"e_ Pbk8 t:"TH.pjx(/Rm=Àzra^}BqyT28T~I1QQNO1D+9Fg[Uǵ` nD0@Qz ~RzqE߃?xǪJ!CG 'y߽3:;z.ⲿYG0PQ}T\U5.D?ꞿl&tDa ʽ+H!@a#tL6wє^nI NV)'_؄4G"!D$6~i-?] zy7xPq 2hz?+k!K1\Y`8 (ztU2]mAQe`4E0h@#-kFW^` +z4 ZUmZD9Jo* Q`,dY *HtEց Yi2GnKPPF(ëj&: ##z?wn D+v VWNP'I_'xHGӑ_9[#v'xvm'}<m.mwCQC?4>u#P-fST8z= &,|S(_ ؕk]wE`c#kFjxwV;zFg@3R>LL?~G*l ufD>Vׯ EDp1wT}aH}:/,#>`轇@TW=pgO 0l`9,xPwb6|k׬O?m(J ?~@F}0gY;{ @珵 ?<a|0qH}͟ᣯ{KڿK^$Sܑw,1|v.>۬&ny=o1h#AS}t}g\.?;~`%O<ңVwɣ?Xw._u{\u?~< ;qХۯ?RǦ}0F x7K{k9G[qɣ3G{oRU@s } ,N↏P ԩSBzǠi)  k;ac̩VW_r'?@KhGo_6=`_ӵf7RW>Z' >:d9}4+7>ń ܏qתY ދW鑁qͅ_K4|O8ۿN\^ڿGc^LR%˙3g"#ݩt@U\ % i÷jS3;N}lWԓDDG 9{Ӕ]L@b^6ܢ^G@3V}=5s(k®K܁7/W\siM3G"7p  4{oW[ Ο?b[Tz `!nB+~mHF|ť"6P.&u`6%6~k}.\б{v8P(l]uvn͟_ŏKDӋ/D׋YtAˉ55U_7OmV m;l|D\K.aF ̀:fnrWtZUvG'ΑM/_=d* ]i\FDԁ) 0EPlx$DWwLu5Tz*Ea~E^DDנ@{>nM\ > stream xY{UřWrCB!pdssO*Ke`23 3sgAPJb`@V\o#%A:̖{ w?eM7_wc]ԱQԑՑ/ZE#(s]&VG(u@f%UD8$]YIyhMĉ3eQGqutp!\HXsJS#D.Q1axklu*P>!:jM64XΐU3!+*0R?(V ~`STe%g?0z7ceL~X%Riv4mh]sfM5r=׆Pץ6E` G.΀F#裐EK#c6 tW6 f f6xx$qĘGFQ$1 |4<($&VECF]_ZRQܐ"RU5it >$:٢e]#7)kLjq{߿E?=gy9g|QeGdȢUw]{Il|`=\ۅ>>}ӫ*+HUEſ zѳfo^[۽{:Imz]~yϙ3g֬^WYYyR?;{}~ы~͹/\vP+ۺx g8gv-s/yn'.)--mxOwϷ-3??ۼy7s~vj'J$pc0С ?='NL>8b~zrܸqm;x7.xgf^hSTԒɳf?eN ԑm?Q+VL1"wu3Q,W66?Ėmۆ6mm37evDц'zkۯc%o\i-^x…]7AݺuC3[?7 };x=2v'ߜwzp;h:uB .]ڵsg9s?x.Pk߁{̙={w.I$j0k֬/_b֭ û{]--p9nӧO/[>5]j>[[[]}k<ț>xȑ^/f͑M=WpKO2uSOE|a`m;x>K#wb"۲n4`;;/!:ɛ`˗// /iAo=ź=+ XlQya~owsǶx-Nt}jѢAmУ-;ŝmS?ٷZ~,7o/=_v~QG "أIUVslIJIklǰce$c.65kq %&&'$Ł! -_ Zb32.0KBZ6"/ i~ZF$R%]JKĜ@]8C,L) S~{ !++ Ta!//(+ot:j|~W{]ko`yTLI]WJ|PڮJL-渮IVF"?8d|IHfT2}uҥٞGm>L$W/M95jCc n1U ヾbq*4RjƗ1>ŠQ*ئ8dWp,A05pHpʭРG.m s)CS1َC5C_yJލr+'JUj;8djm8R./D.fBM78lJiU)pVڰM/Spx}pJpsJkABEkMgsAC%)%.XB  Tex!4sBN/v+k)*θƉB@q SNfTn%`ԵJRr`ZR~'DS^0VcցjS8@Y* -V>C]"!.i4DvSñ՘Yظ[@""wKa vYptJ!A~j1\ %U",^+PA'?QV \vZŔwP{&o^+&Y$T5p 4-]je2X6tNiH7W8ӠEF#5IDԌF*RO( }3# 1QWiP@OɌe[#Y2…FJtMlU&2C"U= (>#3A-LtMX6{#Vc-{K}oo੆T슐r*,A7@L#%WRLu 3 %)5=`#p:.к2`Q@V]pZIKcP.0׬XdJ-}$5j` |sT9& VX΅p >1vnj d(k&mBHQͺHa1 *$'w6SU'}0=6۱Jv6'R-&>ǁv#߼: 9=F(f-ԇDoUe;0^@;s]S'Lq2F2 n΄ fip([$Um$a^;ZƳ Wendstream endobj 108 0 obj << /Filter /FlateDecode /Length 161 >> stream x]O10 . 2D! }I.|D/J`H_#490Lu@vw=|*J!􆖠D[U]km'͟tF{8+/,S\ HJ$pLg9AAStendstream endobj 109 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 4764 >> stream xEŻ71泈""QxW  jB4Wfͬ9uzvcXzggί.l믥Zk1M:O<ߚqی_ ~z1-O30`}2 *ATHyJPmҭ?4e$q mKPhX7~8W'h]^e@ 72o*c@+<0tLy :h'VIV@8=3(=1 ` uvh7a 4?]8Ge"ңdbPS2 `74.W4RjO :x8&L rNm( A7L úJP|֭[4D9-X++6@[ "e oܸ{[' P8]ö6s 7B ^$A ! ic `6@y8HD^~] ͨu`Nh*S )p5gDV2(H}S_m%(J%2Zwo hs[" Nn.XW6tQ>@2%`_D#d[W (qr\;y+u?b?Av^(€*bɡO+DyȀv(֜ h .{UdP=YFE'~L@c`s.[qTU_ ￟` k;ؚeK 0;w! (?+AMu 2{"k *+o6^"a M̥I n2IPE]O2_  tl%N;eE>/Bd0 [ևIBB *S ]/_[һǠ,}H4H<4||V҃=- CEi ;wţ@6W%hk|!:&#wޡPtt vS3O"O^0~.#&cPXr!l%^݊Q2"׷z{" b{UYbq~A Cpo+iy@&D* U~V?o+8 M]{ak+GUb0Aa$@J&0 I1^u\7" [v#Gf]Qĸq\_{5QX %(AM8Hpr$0 ` ? :#e8 AbTzneST2wZm1 CS&YfE tc W=lji7+yѺ@PFzeufԏ׼>5 }B0dp jGGI*vP1%0QNaɫ?wm/Z#CSG$(3MB/#Yh λyzE\2Ec+0%AڍZDB뿫 VH2*b?fڙ)8'W/A@@lGQ#1/HfDg˗ōs;Bid+togn?$=*%ɿ Ωm?C.EfP0S Ou?ruB#eЭBcj~;9" ttwB Y6n TT?B$ߺj" *ZidM̀Jn:`/6 &>(6-Lk>^v\ L -ꨟu yU{Z8%hEmXԫ?=7"ѓ0{ G= ˕ DNGa՗ΤbGY;O 𧩰:#[[SJA[I2G bH>PeیΒI+rkY7I 0c'] Oe\,~rChm Ż=vnjw`uS%d݅t·%jI Plq(wxA<*jH6 A3~q֍wnV}!=bꎧEDN1,.o?΍"$R_3#0i028((9vİڣ?АBD>~:tUo=B4&R_`(A@"۰o)R_dyJGp6*{f(ȃI?`ƚuG䭊¿;hξQh$GdU$d`Juʠ 8ap# |%Όa:#6TYz + k~a ܰȀ.TJ0  1F\%aXdچmJ&tcyԽ7QIDY> j*H^U!)ja#tCw1|6 h,oyLLрvҫ?mь.p੧aP)[). 2 q{cߪ?n'6;3u'.ip p q 5͑v47>g_3΂'x@(k7ۤ8!ϴ$A^}ZQ6 'vG+H}#Ǣr $S|h 1tir1}4"n/Tبo[T8d< ?1g4t!v.pg6G5 CB{hvA*z;cxgX X(+S܎D]:I&%oSO,>6݃}Ey>endstream endobj 110 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 5049 >> stream xŜ=E_1`Yʲ, aHH,@l{=uw`T3S]u{zjZ)ezmȴ>x`zǴYkNO#lθpQ{tm:x8}ܭ+Z]}ڎmfO:M.}wvP&1ocZSj$]R9&k[>G&c_mn I٦>eژyȠS9EƁ 6LSfk݋b՟:S""g@4i +2f!"[~ cN?2XaS k P!]SPu?u- ̋3e`9yI5TSKH"+)f(t>KwAu8:ր*SPԺ2+Ӯ}O&Ym ՘ +R՗3AW`\t3H?vրn ]1(2?2Ov(эYȮpw@?Qqw%WʼXT._5ߕ_w[FuAtk{*=Htg6@^}`MU`jHA]p@~Wt8up&pN.h4bs+aէG@@@N"] r(f#$`@ayEt#PM+E۱w8JA7$dM+2 a&+vD8g*@c2?GD*XQ<a"8AmV_&.Z^&p Z w/F/tQڕ0f]|%k@Ġ᩵ܕ) 1 D#o.Gv(ԅ@ D ~DO_(xxBNz k`|8@ߧGZFKA (>Q ?(.ǜ!X44{ˆ QݑA$kCtw,L'-Y3e@a-DJ(yg[l" -lD *`spETjoF}|J/sݻM;"|)h{(#g6?QopY( E) BQ=JT?o25 "8$0}B]ݻGgݺZ_@p'+eLj@A4Z_$jْFqrh(w8Qr;,4|GO^RQ_Zu[i:Bȥ ] fUPmE_8/U(DN}Jh&~4:pnyϭQZ jX7p-VJ"*4EgOAV>3zPᒘ./YՀ L9)zIA~hZX)D[U1ި؏[]'#q&)Tw'|&|"y*f)*G;2>q޺&Z6u @J܏R Gd>hQ.Ha@͕:1A?D G@#'z ʲMG`ԠS+`Rԩ|AE[?b5eR >e۠ӉH0@`ލ`ؕ7]82Ha5dPܹcuG+ (rvWhZ{dg!aw;9&"!,MDIoOGV[otN>9)#aZ @1XWXA7o:SD ֥#:OA&ȸ!c޸q6 f!P0ĕ  .+u~}5cEUaj3Cb畠^v _E JG.!d`Y*huYP2>W^3ZP<@]%`Q,ˑQ @.,%$D@P." I{W\[A3ґv@Uc]y+\|9:B2X/X"4!ҥK(coOnr&hqsmu&8#IkeE%A2mL _}PM)^,v+he} 2M1)2d$Š@%zER7tDd2gV3Cp 2&W \?zhvȤ'z饗]cnw. fm40ui t(%mz[҈AT4|`n_! gݠM086B~e^q / `VR]D[ ZT8?'CAWW<*JO? RR=z1Q'`[Dw1>q>;> i} @Eq!OP)+.&J"];gs %NGJ 0~RLPRQkU~( kS* ];yRuHu_ `f맞zj%)}긜.0X7'Yv z @O[NRZ \c)$,H_ f'x'ŌmgVe@wڀvUF&(8Ae8@7jdEwpɻ%`t+"2 l ՉȽk JgNXH">e^tG1! HY+wyeb r'b|:\xj!!py{&HzHnԁqHVXJ9… G+UE ٓ"L4|f=/:T-_EE}: ;IA=ꫯ wٳLU $Utӕ["4].$1hQwc.;;!:6D@ilE/p^0Bwa !Z=)ep|| y`dĩ_HEHP ]yQCZ\3h5H4nX$ m Dwe]=R k7,.N@_ݙRГ| ~:^P!S;6T? J*N!! HqF>+H1 p(h]v_GqU4m?vZza @~{|;OA7o\tI鑁IDRAs|M;]ݜpT?€Mc>{i@էx?@& _tq\nBEwPq"D K"1 }v$=u,VnS)`e* xκ؏t8|w$#(dfD3xwo2t 0T~& B}T)_5y~-pCDwG}jJS͒(sDB5g?u-LwQ#自 5lR}f{G:x_,AYu^2&IણG  0J^S pѢGAu ˸ 6ׁ !eM;]ϲ/P0z2J|@e`X`WdgNc[Vmǧb`*A$]87AOcELu&1=Yȭ_,ALT}4;UlP;"M"nIn1(ึ QF.31Ӆ~.̕ KAv4 ZB"n> Uyh4*w´u1OAb$?ԏ>;,7b@S9 [92@vJ2OfJuJ6D5`1C5ȭ'ƎP? ;P}s`rU̝KDt͇N}P>eP/)mS3:$WC4"]CI9իW;i gqu~;h`'#DgnE 6hI]>pş8>>dk} %qZ#: #: (7߈" +S9R@yZ*>5I]*/_tדg-)"и Gs/žS`cNP. P+Uր >wͼ@沐=2/!0߂,6B~v1Q'x1)h_~QD rոۙDy9N1 &[?fMendstream endobj 111 0 obj << /Filter /FlateDecode /Length 3508 >> stream xZ[G~WDt~!E!ثD(D7;ٝm/gs.]zm/ \:uwڨ^o+ݜ|,n'jsuӉ?ng7OOav0g7:^E ^Ƨw˭Ꝏ6bSE]ôQ>enw&>ԽYlH~k&RQ9h;,*Rwmupp)峣AmΈ9woa6)v~xN1ԝmMpw(lk9ia_|d} U2I9 wxl5)Sh2fL*Llu$/DAhL(92) Iux:nq_:1ގ5.-xͤN W@{ zӶ.^`^Y(|n h@GUu)soPF] W`Rt,8pqС;gБ@Qz0>k3ǐ1֗ eJE@/\ ݳ/*-.d  Z1A8.wqukSߜ~yrCHZi W"e k1_;,:5$w7ɷzywc$A MZӊƏ<`i8GPbgݻ`J,5 fgLK'&]U4k< ?!1e?hCKsMQ5Ia6 ¹h`7[ɥ#uD /4|9k\c)'@9tBN8[ W0Auw[ryqlu0([\D%7uxY@0 5Bh[T|pqĿ}SsK@Y2 lBB&ǃZdʰ}S1C(WdX1`%p. pT) :ÏP钃g=eR=wGmo2"֔W cnZ}[{X 1@j mb/s܎17#`\w9Mu4I- N#\M.3V3˛6-5( vm}؍nӊp`D&T'󥧼%L g#!)G8k@A& )чd| THP(}$򒠍 Cc3R9i)~X|/H5^Tޣqc%_8n M ˆ; 'h{-gݕp l"U49q`1œ=*r-ԼS*%ؔs3zBPiP@`ppyfwhl]>\'*Hx MHq ||YȦaorh6N?X0IT*.1?s~EGŽ,;o,$+\b !׋kˠL-Ey#rSI1PD^'T9p VYoQkr?ޱxr-B܃ODvqP_]]05G4=]pUS`|%fX(Ɉ`+:\{(.GeSRٻЀ@ˮ /*:Όu:y،GB5Rv} *h׊Y$H;)m =tGA8&LZ[pW'n5i:kLk<@D^\]6-z([K|N54o+z#\Qw?Un\x44 a_#t< I7!?K ְIRgz@!-.Z҃SR2Gez#cc|8x4lm@L-Yن<_ 0/K.)*.`Gသ$quLD}!=ֲK,qAwi&Y̑,m/--h3gуG# ٯDrX=2|m33n]7:qF!.r=Srn6r 0 GA~,xg h^[!&B3nngp)ZB1M6,yr$]`čqXO)݃w=IyaLۄC!Y?`D*AC$(*EZ)uA&V4%oǦ|:{Fh]IO#o@lo rخ򥈹4~agArKYrwSs(j.,:#l.CF\&ËI#>B˜M' S婐㶞~z=Kwh+lP^UEr!e(*:2-k:i-YJGIVSB\W<%뵂IyXg83$8{rQlEU~Ԣ=-jZ&G)R;cz])B}/Ϯ>?Ɨ&j\ 1J{)} W1˗e]pg A 9d(*:teB7CVv/0TYbOde<{6,~me]ke<炏Ћuȯ.˼&.5 fFǘ07J6{c|J  $ϴ-=ʞ,_W O;0*#XE:_. ڲL*Dz?d> iX ?398 Ėn 8aکiaM+1FK &r\- e _W NrD{jKnv1}ώÄ%ك}E%\Jh$"udNw?Ɂ1 ho ]goQ,ZH;6_f?1^]>rCG? E|> stream x]O10 BVUAD! }I.GOJ`H_#L4;0L| p oMTSVj75$;k{Al#0ٶ}A4Xyp8I.~r 6/DSzendstream endobj 113 0 obj << /Filter /FlateDecode /Length 2891 >> stream xZrÿ{"8H6-aCP0 -qˬa5ٵeP^(g߼gjq}/vad*YyS/գv<}OOK5lHyr9I˕C6a$œXzYY& }G~`S޶5k>a}k(9lhPVJ$~I*'yP'iTc*) S:a}C2Ii_M$ Ͽƌ4h7$m:l~IaDgMʇ`qiBY|Zމy;a5: c4{:RQ%Vjǣ*\pXb8\C"m>BSpbӖ~MQAWM`I$%%dE߈moIa)P7I3Zlxf#bK'3vIze-Jѻl22Pvi[G '" [g&X՝| -M3l:ƕazOgƑitx{sx4s,QNN)99b5Jؑq}9qy:]ruE; #n2f:s yw G'  B(Ffx#6*,yDRox jPO9/p=MusIն(-{V%bU;_ٰa.'v6[=iL3֏9]Ȝ j%=^G!QixF2sQm$\,~r/ nAANFgH)u0]aQX7ĉ$Nu97 ,(4#Z>BFc\ [?&FDg% )_ُla |vwӂ8W$Olὖ!%Bf{ҒD oE\I`U#%-(TDIa#TͺUvFR CIi3"BDDUL1Ǧ"/` jdil|.&st\Pt.ۋL+^.5тH {;Ȧ8/ 6.c56uyCt2r"WFw%df{=kYNq0Hֺͨ^MH{0XS"ZK %(inbR%Tr%a E -; .^zBY$'3CL)1CIn^DcYSr6(1B7s+oZI">BE͔KĄ`폇 6geTl;WX$:v'=Mlb5[ MZh(iqVD6|$36?GPkXEc5T`N˄+`SKDP<U!(_.CHl^s=CR/Ѣ"hgcg up8"Ft7K&E,f^TN"kGFDl*x)Y@J.%@FD|B#XXȘJ%(Ö3iRL2)"E}IeܓCpTX r' 0ԃrNQAI]'PbCٍPT niLQDVI>Q6s8پiC`yq9tD n'aiUxXd%!ebқb@}I%њ!2} -Q4qmP bA$h !#s7^Zo }S4_IsgX6ƠH/uV!&YCgtK!. |cK~-@㜰ƞSk]1w4I\Lmj,S8QwZE`9WU'ms (9/vs>7C/E1t&GH cRSuxJƳ(DC>70[,ElN4$4%`Deww}`VFR٬KyR|TPYcě“^ԹrRH#I`)ݵLw:qN!0.`lxEaո 좎8*: Ck"@N;ۋ^dJ+Y12n^k*ZwYt/uዛ# 5sAa~>ě 9Y$ B#fȩ,jţ5:D&Q+6.fe,EK/ PҶUZ&3`1$bu,uZђYW \Ac eYͲoNL@D&WŻk ^D칽VCi?6kS^?XLX@:/4EOO, iՀfZ%gendstream endobj 114 0 obj << /Type /XRef /Length 143 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 115 /ID [<510eed6ffe55395e385445c08f95ddbe><027cc80b15f1e8b258d355870dbd725d>] >> stream xcb&F~0 $8J+?O& <@$JrDr RdZ ""')%]O"W  Dquij^] D5U! H^q < endstream endobj startxref 117205 %%EOF spatstat/inst/doc/shapefiles.Rnw0000755000176000001440000004265312333041747016523 0ustar ripleyusers\documentclass[twoside,11pt]{article} % \VignetteIndexEntry{Handling shapefiles in the spatstat package} \SweaveOpts{eps=TRUE} <>= options(SweaveHooks=list(fig=function() par(mar=c(1,1,1,1)))) @ \usepackage{graphicx} \usepackage[colorlinks=true,urlcolor=blue]{hyperref} \usepackage{color} \newcommand{\pkg}[1]{\texttt{#1}} \newcommand{\bold}[1]{{\textbf {#1}}} \newcommand{\R}{{\sf R}} \begin{document} %\bibliographystyle{plain} \thispagestyle{empty} <>= library(spatstat) options(useFancyQuotes=FALSE) sdate <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Date") sversion <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Version") @ \title{Handling shapefiles in the \texttt{spatstat} package} \author{Adrian Baddeley, Rolf Turner and Ege Rubak} \date{ \Sexpr{sdate} \\ \pkg{spatstat} version \texttt{\Sexpr{sversion}} } \maketitle This vignette explains how to read data into the \pkg{spatstat} package from files in the popular `shapefile' format. This vignette is part of the documentation included in \pkg{spatstat} version \texttt{\Sexpr{sversion}}. The information applies to \pkg{spatstat} versions \texttt{1.36-0} and above. \section{Shapefiles} A shapefile represents a list of spatial objects --- a list of points, a list of lines, or a list of polygonal regions --- and each object in the list may have additional variables attached to it. A dataset stored in shapefile format is actually stored in a collection of text files, for example \begin{verbatim} mydata.shp mydata.prj mydata.sbn mydata.dbf \end{verbatim} which all have the same base name \texttt{mydata} but different file extensions. To refer to this collection you will always use the filename with the extension \texttt{shp}, for example \texttt{mydata.shp}. \section{Helper packages} \label{S:helpers} We'll use two other packages% \footnote{In previous versions of \pkg{spatstat}, the package \pkg{gpclib} was also needed for some tasks. This is no longer required.} to handle shapefile data. The \pkg{maptools} package is designed specifically for handling file formats for spatial data. It contains facilities for reading and writing files in shapefile format. The \pkg{sp} package supports a standard set of spatial data types in \R. These standard data types can be handled by many other packages, so it is useful to convert your spatial data into one of the data types supported by \pkg{sp}. \section{How to read shapefiles into \pkg{spatstat}} To read shapefile data into \pkg{spatstat}, you follow two steps: \begin{enumerate} \item using the facilities of \pkg{maptools}, read the shapefiles and store the data in one of the standard formats supported by \pkg{sp}. \item convert the \pkg{sp} data type into one of the data types supported by \pkg{spatstat}. \end{enumerate} \subsection{Read shapefiles using \pkg{maptools}} Here's how to read shapefile data. \begin{enumerate} \item ensure that the package \pkg{maptools} is installed. You will need version \texttt{0.7-16} or later. \item start R and load the package: <>= library(maptools) @ \item read the shapefile into an object in the \pkg{sp} package using \texttt{readShapeSpatial}, for example <>= x <- readShapeSpatial("mydata.shp") @ \item To find out what kind of spatial objects are represented by the dataset, inspect its class: <>= class(x) @ The class may be either \texttt{SpatialPoints} indicating a point pattern, \texttt{SpatialLines} indicating a list of polygonal lines, or \texttt{SpatialPolygons} indicating a list of polygons. It may also be \texttt{SpatialPointsDataFrame}, \texttt{SpatialLinesDataFrame} or \texttt{SpatialPolygonsDataFrame} indicating that, in addition to the spatial objects, there is a data frame of additional variables. The classes \texttt{SpatialPixelsDataFrame} and \texttt{SpatialGridDataFrame} represent pixel image data. \end{enumerate} Here are some examples, using the example shapefiles supplied in the \pkg{maptools} package itself. % fake data because we don't want spatstat to depend on maptools <>= baltim <- columbus <- fylk <- list() class(baltim) <- "SpatialPointsDataFrame" class(columbus) <- "SpatialPolygonsDataFrame" class(fylk) <- "SpatialLinesDataFrame" @ <>= setwd(system.file("shapes", package="maptools")) baltim <- readShapeSpatial("baltim.shp") columbus <- readShapeSpatial("columbus.shp") fylk <- readShapeSpatial("fylk-val.shp") @ <<>>= class(baltim) class(columbus) class(fylk) @ \subsection{Convert data to \pkg{spatstat} format} To convert the dataset to an object in the \pkg{spatstat} package, the procedure depends on the type of data, as explained below. \subsubsection{Objects of class \texttt{SpatialPoints}} An object \texttt{x} of class \texttt{SpatialPoints} represents a spatial point pattern. Use \verb!as(x, "ppp")! or \texttt{as.ppp(x)} to convert it to a spatial point pattern in \pkg{spatstat}. The window for the point pattern will be taken from the bounding box of the points. You will probably wish to change this window, usually by taking another dataset to provide the window information. Use \verb![.ppp! to change the window: if \texttt{X} is a point pattern object of class \verb!"ppp"! and \texttt{W} is a window object of class \verb!"owin"!, type <>= X <- X[W] @ \subsubsection{Objects of class \texttt{SpatialPointsDataFrame }} An object \texttt{x} of class \texttt{SpatialPointsDataFrame} represents a pattern of points with additional variables (`marks') attached to each point. It includes an object of class \texttt{SpatialPoints} giving the point locations, and a data frame containing the additional variables attached to the points. Use \verb!as(x, "ppp")! or \texttt{as.ppp(x)} to convert an object \texttt{x} of class \texttt{SpatialPointsDataFrame} to a spatial point pattern in \pkg{spatstat}. In this conversion, the data frame of additional variables in \texttt{x} will become the \texttt{marks} of the point pattern \texttt{z}. <>= y <- as(x, "ppp") @ Before the conversion you can extract the data frame of auxiliary data by \verb!df <- x@data! or \verb!df <- slot(x, "data")!. After the conversion you can extract these data by \verb!df <- marks(y)!. For example: <>= balt <- as(baltim, "ppp") bdata <- slot(baltim, "data") @ \subsubsection{Objects of class \texttt{SpatialLines}} \label{spatiallines.2.psp} A ``line segment'' is the straight line between two points in the plane. In the \pkg{spatstat} package, an object of class \texttt{psp} (``planar segment pattern'') represents a pattern of line segments, which may or may not be connected to each other (like matches which have fallen at random on the ground). In the \pkg{sp} package, an object of class \texttt{SpatialLines} represents a \textbf{list of lists} of \textbf{connected curves}, each curve consisting of a sequence of straight line segments that are joined together (like several pieces of a broken bicycle chain.) So these two data types do not correspond exactly. The list-of-lists hierarchy in a \texttt{SpatialLines} object is useful when representing internal divisions in a country. For example, if \texttt{USA} is an object of class \texttt{SpatialLines} representing the borders of the United States of America, then \verb!USA@lines! might be a list of length 52, with \verb!USA@lines[[i]]! representing the borders of the \texttt{i}-th State. The borders of each State consist of several different curved lines. Thus \verb!USA@lines[[i]]@Lines[[j]]! would represent the \texttt{j}th piece of the boundary of the \texttt{i}-th State. If \texttt{x} is an object of class \texttt{SpatialLines}, there are several things that you might want to do: \begin{enumerate} \item collect together all the line segments (all the segments that make up all the connected curves) and store them as a single object of class \texttt{psp}. \begin{quote} To do this, use \verb!as(x, "psp")! or \texttt{as.psp(x)} to convert it to a spatial line segment pattern. \end{quote} \item convert each connected curve to an object of class \texttt{psp}, keeping different connected curves separate. To do this, type something like the following: <>= out <- lapply(x@lines, function(z) { lapply(z@Lines, as.psp) }) @ The result will be a \textbf{list of lists} of objects of class \texttt{psp}. Each one of these objects represents a connected curve, although the \pkg{spatstat} package does not know that. The list structure will reflect the list structure of the original \texttt{SpatialLines} object \texttt{x}. If that's not what you want, then use \verb!curvelist <- do.call("c", out)! or <>= curvegroup <- lapply(out, function(z) { do.call("superimposePSP", z)}) @ to collapse the list-of-lists-of-\texttt{psp}'s into a list-of-\texttt{psp}'s. In the first case, \texttt{curvelist[[i]]} is a \texttt{psp} object representing the \texttt{i}-th connected curve. In the second case, \texttt{curvegroup[[i]]} is a \texttt{psp} object containing all the line segments in the \texttt{i}-th group of connected curves (for example the \texttt{i}-th State in the \texttt{USA} example). \end{enumerate} The window for the spatial line segment pattern can be specified as an argument \texttt{window} to the function \texttt{as.psp}. \subsubsection{Objects of class \texttt{SpatialLinesDataFrame}} An object \texttt{x} of class \texttt{SpatialLinesDataFrame} is a \texttt{SpatialLines} object with additional data. The additional data is stored as a data frame \verb!x@data! with one row for each entry in \verb!x@lines!, that is, one row for each group of connected curves. In the \pkg{spatstat} package, an object of class \texttt{psp} (representing a collection of line segments) may have a data frame of marks. Note that each \emph{line segment} in a \texttt{psp} object may have different mark values. If \texttt{x} is an object of class \texttt{SpatialLinesDataFrame}, there are two things that you might want to do: \begin{enumerate} \item collect together all the line segments that make up all the connected lines, and store them as a single object of class \texttt{psp}. \begin{quote} To do this, use \verb!as(x, "psp")! or \texttt{as.psp(x)} to convert it to a marked spatial line segment pattern. \end{quote} \item keep each connected curve separate, and convert each connected curve to an object of class \texttt{psp}. To do this, type something like the following: <>= out <- lapply(x@lines, function(z) { lapply(z@Lines, as.psp) }) dat <- x@data for(i in seq(nrow(dat))) out[[i]] <- lapply(out[[i]], "marks<-", value=dat[i, , drop=FALSE]) @ The result is a list-of-lists-of-\texttt{psp}'s. See the previous subsection for explanation on how to change this using \texttt{c()} or \texttt{superimposePSP}. \end{enumerate} In either case, the mark variables attached to a particular \emph{group of connected lines} in the \texttt{SpatialLinesDataFrame} object, will be duplicated and attached to each \emph{line segment} in the resulting \texttt{psp} object. \subsubsection{Objects of class \texttt{SpatialPolygons}} First, so that we don't go completely crazy, let's introduce some terminology. A \emph{polygon} is a closed curve that is composed of straight line segments. You can draw a polygon without lifting your pen from the paper. \setkeys{Gin}{width=0.4\textwidth} \begin{center} <>= data(chorley) plot(as.owin(chorley), lwd=3, main="polygon") @ \end{center} A \emph{polygonal region} is a region in space whose boundary is composed of straight line segments. A polygonal region may consist of several unconnected pieces, and each piece may have holes. The boundary of a polygonal region consists of one or more polygons. To draw the boundary of a polygonal region, you may need to lift and drop the pen several times. \setkeys{Gin}{width=0.4\textwidth} \begin{center} <>= data(demopat) plot(as.owin(demopat), col="blue", main="polygonal region") @ \end{center} An object of class \texttt{owin} in \pkg{spatstat} represents a polygonal region. It is a region of space that is delimited by boundaries made of lines. An object \texttt{x} of class \texttt{SpatialPolygons} represents a \textbf{list of polygonal regions}. For example, a single object of class \texttt{SpatialPolygons} could store information about every State in the United States of America (or the United States of Malaysia). Each State would be a separate polygonal region (and it might contain holes such as lakes). There are two things that you might want to do with an object of class \texttt{SpatialPolygons}: \begin{enumerate} \item combine all the polygonal regions together into a single polygonal region, and convert this to a single object of class \texttt{owin}. \begin{quote} For example, you could combine all the States of the USA together and obtain a single object that represents the territory of the USA. To do this, use \verb!as(x, "owin")! or \texttt{as.owin(x)}. The result is a single window (object of class \texttt{"owin"}) in the \pkg{spatstat} package. \end{quote} \item keep the different polygonal regions separate; convert each one of the polygonal regions to an object of class \texttt{owin}. \begin{quote} For example, you could keep the States of the USA separate, and convert each State to an object of class \texttt{owin}. \end{quote} To do this, type the following: <>= regions <- slot(x, "polygons") regions <- lapply(regions, function(x) { SpatialPolygons(list(x)) }) windows <- lapply(regions, as.owin) @ The result is a list of objects of class \texttt{owin}. Often it would make sense to convert this to a tessellation object, by typing <>= te <- tess(tiles=windows) @ \end{enumerate} {\bf The following is different from what happened in previous versions of \pkg{spatstat}} (prior to version \texttt{1.36-0}.) During the conversion process, the geometry of the polygons will be automatically ``repaired'' if needed. Polygon data from shapefiles often contain geometrical inconsistencies such as self-intersecting boundaries and overlapping pieces. For example, these can arise from small errors in curve-tracing. Geometrical inconsistencies are tolerated in an object of class \texttt{SpatialPolygons} which is a list of lists of polygonal curves. However, they are not tolerated in an object of class \texttt{owin}, because an \texttt{owin} must specify a well-defined region of space. These data inconsistencies must be repaired to prevent technical problems. \pkg{Spatstat} uses polygon-clipping code to automatically convert polygonal lines into valid polygon boundaries. The repair process changes the number of vertices in each polygon, and the number of polygons (if you chose option 1). To disable the repair process, set \texttt{spatstat.options(fixpolygons=FALSE)}. \subsubsection{Objects of class \texttt{SpatialPolygonsDataFrame}} What a mouthful! An object \texttt{x} of class \texttt{SpatialPolygonsDataFrame} represents a list of polygonal regions, with additional variables attached to each region. It includes an object of class \texttt{SpatialPolygons} giving the spatial regions, and a data frame containing the additional variables attached to the regions. The regions are extracted by <>= y <- as(x, "SpatialPolygons") @ and you then proceed as above to convert the curves to \pkg{spatstat} format. The data frame of auxiliary data is extracted by \verb!df <- x@data! or \verb!df <- slot(x, "data")!. For example: <>= cp <- as(columbus, "SpatialPolygons") cregions <- slot(cp, "polygons") cregions <- lapply(cregions, function(x) { SpatialPolygons(list(x)) }) cwindows <- lapply(cregions, as.owin) @ There is currently no facility in \pkg{spatstat} for attaching marks to an \texttt{owin} object directly. However, \pkg{spatstat} supports objects called \textbf{hyperframes}, which are like data frames except that the entries can be any type of object. Thus we can represent the \texttt{columbus} data in \pkg{spatstat} as follows: <>= ch <- hyperframe(window=cwindows) ch <- cbind.hyperframe(ch, columbus@data) @ Then \texttt{ch} is a hyperframe containing a column of \texttt{owin} objects followed by the columns of auxiliary data. \subsubsection{Objects of class \texttt{SpatialGridDataFrame} and \texttt{SpatialPixelsDataFrame}} An object \texttt{x} of class \texttt{SpatialGridDataFrame} represents a pixel image on a rectangular grid. It includes a \texttt{SpatialGrid} object \texttt{slot(x, "grid")} defining the full rectangular grid of pixels, and a data frame \texttt{slot(x, "data")} containing the pixel values (which may include \texttt{NA} values). The command \texttt{as(x, "im")} converts \texttt{x} to a pixel image of class \texttt{"im"}, taking the pixel values from the \emph{first column} of the data frame. If the data frame has multiple columns, these have to be converted to separate pixel images in \pkg{spatstat}. For example <>= y <- as(x, "im") ylist <- lapply(slot(x, "data"), function(z, y) { y[,] <- z; y }, y=y) @ An object \texttt{x} of class \texttt{SpatialPixelsDataFrame} represents a \emph{subset} of a pixel image. To convert this to a \pkg{spatstat} object, it should first be converted to a \texttt{SpatialGridDataFrame} by \texttt{as(x, "SpatialGridDataFrame")}, then handled as described above. \end{document} spatstat/inst/doc/updates.R0000644000176000001440000000361612333041747015471 0ustar ripleyusers### R code from vignette source 'updates.Rnw' ################################################### ### code chunk number 1: updates.Rnw:20-24 ################################################### library(spatstat) sversion <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Version") options(useFancyQuotes=FALSE) ################################################### ### code chunk number 2: updates.Rnw:41-47 ################################################### z <- read.table("packagesizes.txt", header=TRUE) z$date <- as.Date(z$date) Plot <- function(fmla, ..., dat=z) { yvals <- eval(as.expression(fmla[[2]]), envir=dat) plot(fmla, ..., data=dat, type="l", xlab="", lwd=2, ylim=c(0, max(yvals))) } ################################################### ### code chunk number 3: updates.Rnw:49-50 ################################################### options(SweaveHooks=list(fig=function() par(mar=0.2+c(2,4,2,0)))) ################################################### ### code chunk number 4: updates.Rnw:56-61 ################################################### getOption("SweaveHooks")[["fig"]]() Plot((Rlines + srclines)/1000 ~ date, ylab="Lines of code (x 1000)", main="Spatstat growth") lines(srclines/1000 ~ date, data=z) text(as.Date("2013-01-01"), 9.5, "C code") text(as.Date("2013-01-01"), 50, "R code") ################################################### ### code chunk number 5: updates.Rnw:2494-2498 ################################################### nbugs <- nrow(news(grepl("^BUG", Category), package="spatstat")) nbugssince <- nrow(news(Version > "1.21-2" & grepl("^BUG", Category), package="spatstat")) ################################################### ### code chunk number 6: updates.Rnw:2505-2506 (eval = FALSE) ################################################### ## news(grepl("^BUG", Category), package="spatstat") spatstat/inst/doc/updates.Rnw0000644000176000001440000027104412333041747016040 0ustar ripleyusers\documentclass[11pt]{article} \usepackage{graphicx} \usepackage{Sweave} \usepackage{bm} \usepackage{anysize} \marginsize{2cm}{2cm}{2cm}{2cm} % \VignetteIndexEntry{Summary of Recent Updates to Spatstat} \newcommand{\pkg}[1]{\texttt{#1}} \newcommand{\code}[1]{\texttt{#1}} \newcommand{\R}{{\sf R}} \newcommand{\spst}{\pkg{spatstat}} \newcommand{\Spst}{\pkg{Spatstat}} \begin{document} \bibliographystyle{plain} <>= library(spatstat) sversion <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Version") options(useFancyQuotes=FALSE) @ \title{Summary of recent updates to \spst} \author{Adrian Baddeley, Rolf Turner and Ege Rubak} \date{For \spst\ version \texttt{\Sexpr{sversion}}} \maketitle This is a summary of changes that have been made to the \spst\ package since 2010, when the last set of workshop notes \cite{badd10wshop} was published. Those notes covered \spst\ version \texttt{1.21-2}. The current version of \spst\ is \texttt{\Sexpr{sversion}}. \Spst\ has almost tripled in size since 2010, and now contains over 100,000 lines of code. <>= z <- read.table("packagesizes.txt", header=TRUE) z$date <- as.Date(z$date) Plot <- function(fmla, ..., dat=z) { yvals <- eval(as.expression(fmla[[2]]), envir=dat) plot(fmla, ..., data=dat, type="l", xlab="", lwd=2, ylim=c(0, max(yvals))) } @ <>= options(SweaveHooks=list(fig=function() par(mar=0.2+c(2,4,2,0)))) @ \SweaveOpts{eps=TRUE} \setkeys{Gin}{width=0.45\textwidth} \centerline{ <>= Plot((Rlines + srclines)/1000 ~ date, ylab="Lines of code (x 1000)", main="Spatstat growth") lines(srclines/1000 ~ date, data=z) text(as.Date("2013-01-01"), 9.5, "C code") text(as.Date("2013-01-01"), 50, "R code") @ } \tableofcontents \newpage \section{Overview} Following is an overview of the most important changes. \begin{itemize} \item \spst\ and all its dependencies are now Free Open Source. \item polygon clipping is now performed by the Free Open Source library \pkg{polyclip}. The library \pkg{gpclib} is no longer used. \item \spst\ now `Imports' (rather than `Depends' on) the libraries \pkg{mgcv}, \pkg{deldir}, \pkg{abind}, \pkg{tensor}, \pkg{polyclip}. This means that these libraries are not accessible to the user unless the user explicitly loads them by typing \code{library(mgcv)} and so on. \item polygon calculations are now enabled, always. \item geometrical errors in polygon data are now repaired automatically. \item Improvements to Gibbs models (\texttt{ppm}): \begin{itemize} \item now accepts syntax \verb!ppm(X ~ Z)! similar to \texttt{lm} and \texttt{glm}, as well as old syntax \verb!ppm(X, ~Z)! \item Covariates no longer have to be passed in the argument \texttt{covariates} but can be objects in the {\sf R} session; \item new 'logistic likelihood' method; \item variance-covariance matrix; \item print method shows standard errors and CI for coefficients; \item new interactions (\texttt{Triplets}, \texttt{Concom}); \item hybrids of interactions; \item self-starting feature of interactions; \item better control over dummy points; \item improved quadrature schemes (removing a source of bias); \item spatial covariate functions can depend on additional parameters; \item extract interaction from a fitted model; \item check whether model is valid; \item project to a valid model; \item calculate \emph{intensity} of fitted model; \item calculate $K$-function and pair correlation function of fitted model; \item confidence intervals using \texttt{confint}; \item improvements/extensions to \texttt{rmh}; \item exact simulation for many models; \item predict conditional intensity for another point pattern \item compute confidence intervals and prediction intervals for intensity, and for total number of points in a region. \item covariates can be tessellations. \end{itemize} \item Diagnostics for Gibbs models: Leverage, influence, partial residuals, score residuals, residual summary functions (\texttt{Kcom}, \texttt{Kres}, \texttt{Gcom}, \texttt{Gres}, \texttt{psst}, \texttt{psstA}, \texttt{psstG}, \texttt{compareFit}) \item Improvements to cluster/Cox models (\texttt{kppm}): \begin{itemize} \item now accepts syntax \verb!kppm(X ~ Z)! similar to \texttt{lm} and \texttt{glm}, as well as old syntax \verb!kppm(X, ~Z)! \item Covariates no longer have to be passed in the argument \texttt{covariates} but can be objects in the {\sf R} session; \item Guan's second order composite likelihood; \item new cluster types \texttt{"Cauchy"}, \texttt{"VarGamma"}; \item log-Gaussian Cox processes; \item fitted intensity; \item variance-covariance of trend parameters; \item generic support e.g. \texttt{coef}, \texttt{model.matrix}; \item conversion e.g. \texttt{as.fv} \item extract K function (\texttt{Kmodel}, \texttt{pcfmodel}); \item more control over trend (more arguments passed to \texttt{ppm}); \item confidence intervals using \texttt{confint} \item covariates can be tessellations. \end{itemize} \item Support for point patterns on a linear network, including geometrically-corrected linear $K$ function, pair correlation function, point process models, envelopes, tests. \item Support for replicated point patterns: An object of class \texttt{mppm} represents a point process model fitted to several point patterns. The patterns may be treated as independent replicate observations of the same model, or as the responses from different units in a designed experiment. Methods for this class include \texttt{plot}, \texttt{print}, \texttt{summary}, \texttt{fitted}, \texttt{predict}, \texttt{simulate}, ... \item Nonparametric/summary statistics e.g. \begin{itemize} \item \texttt{rhohat} (nonparametric estimate of intensity as function of covariate) \item \texttt{idw} (inverse distance weighted smoothing) \item \texttt{convolve.im} (image convolution) \item $k$-th nearest neighbours (\texttt{nndist}, \texttt{nncross}, \texttt{nnwhich}) \item more methods for \code{intensity}. \end{itemize} \item Statistical tools e.g. \begin{itemize} \item several algorithms for bandwidth selection (\texttt{bw.*}) \item bootstrap confidence intervals for summary functions (\texttt{lohboot}) \item pooling operations (\texttt{pool.*}) \end{itemize} \item Changes to \texttt{ppx} format: An object of class \texttt{ppx} may now include 'local' coordinates as well as 'spatial' and 'temporal' coordinates, and marks. \item Improvements to plots : \begin{itemize} \item colour map objects \item graphics symbol map objects \item texture map objects \item automatic legend in \texttt{plot.ppp} \item collision avoidance in \texttt{plot.fv} \item \texttt{plot.im(log=TRUE)} \item \texttt{plot.listof(equal.ribbon=TRUE)} \item improved labels in \texttt{plot.fv} \item Switch all plots from colour to greyscale by setting \texttt{spatstat.options(monochrome=TRUE)} \end{itemize} \item simulation: \begin{itemize} \item \texttt{rmh} interface restructured \item \texttt{rmh} can save transition history \item visual debugger for \texttt{rmh} \item exact simulation for many models \item quasirandom point patterns and sequences \end{itemize} \item envelopes: Extended functionality; Envelopes can be pooled and transformed. \item Many, many, many bug fixes. \item Substantially increased performance. \item data in \spst\ are now lazy-loaded, so you don't have to type \texttt{data(amacrine)}, etc. \item user interrupt: Long calculations in \spst\ now respond to the Interrupt/Stop signal. \item vignettes: New vignettes 'Getting Started with the Spatstat Package', 'Analysing Replicated Point Patterns in Spatstat' and `Summary of Recent Changes to Spatstat' \item demonstrations: New demonstration \texttt{demo(sumfun)} shows the nonparametric summary functions in \spst. \end{itemize} \section{New classes} Important new classes of objects are listed here. \begin{itemize} \item \texttt{linnet}: An object of class '\texttt{linnet}' represents a linear network, i.e. a connected network of line segments, such as a road network. Methods for this class include plot, print, summary etc. \item \texttt{lpp}: An object of class '\texttt{lpp}' represents a point pattern on a linear network, such as a record of the locations of road accidents on a road network. Methods for this class include plot, print, summary etc. \item \texttt{lppm}: An object of class '\texttt{lppm}' represents a point process model fitted to a point pattern on a linear network. Methods for this class include plot, print, summary, fitted, predict, simulate, ... \item \texttt{linim}: Pixel image on a linear network. \item \texttt{linfun} Function defined on a linear network (e.g. a distance function) \item \texttt{mppm}: An object of class '\texttt{mppm}' represents a point process model fitted to several point pattern datasets. The patterns may be treated as independent replicate observations of the same model, or as the responses from different units in a designed experiment. Methods for this class include plot, print, summary, fitted, predict, simulate, ... \item \texttt{rhohat}: Nonparametric estimate of intensity as function of covariate (result of '\texttt{rhohat}'). Can be used as an R function. Methods include \texttt{predict} \item \texttt{layered} : A simple mechanism for controlling plots that consist of several successive layers of data. \item \texttt{timed}: A simple mechanism for recording the computation time taken. \item \texttt{rat}: 'Ratio objects' (suitable for pooling) \item \texttt{objsurf}: An object of class '\texttt{objsurf}' contains values of the likelihood or objective function in a neighbourhood of the maximum. \item \texttt{simplepanel}: An object of class '\texttt{simplepanel}' represents a spatial arrangement of buttons that respond to mouse clicks, supporting a simple, robust graphical interface. \item \texttt{symbolmap}: An object of class '\texttt{symbolmap}' represents a mapping from data values to graphical symbols. This makes it easy to ensure that the \emph{same} graphics map is used in two different plots. The graphics map can also be plotted in its own right as a legend to the plots. \item \texttt{texturemap}: An object of class '\texttt{texturemap}' represents a mapping from data values to graphical textures. \end{itemize} \section{New datasets} The following datasets have been added to the package. \begin{itemize} \item \texttt{pyramidal}: Diggle-Lange-Benes data on pyramidal neurons in cingulate cortex. 31 point patterns divided into 3 groups. \item \texttt{waterstriders}: Nummelin-Penttinen waterstriders data. Three independent replicates of a point pattern formed by insects. \item \texttt{simba}: Simulated data \item \texttt{demohyper}: Simulated data example for \texttt{mppm}. Point patterns and pixel image covariates, in two groups with different regression coefficients. \item \texttt{clmfires}: Forest fires in Castilla-La Mancha \item \texttt{gordon}: People sitting on the grass in Gordon Square, London \item \texttt{hyytiala}: Mixed forest in Hyytiala, Finland (marked by species) \item \texttt{paracou}: Kimboto trees in Paracou, French Guiana (marked as adult/juvenile) \item \texttt{waka}: Trees in Waka national park (marked with diameters) \item \texttt{mucosa}: Cells in gastric mucosa \item \texttt{gorillas}: Gorilla nest sites in a National Park in Cameroon. \item \texttt{chicago}: Street crimes in the University district of Chicago. A point pattern on a linear network. \item \texttt{flu}: Spatial point patterns giving the locations of influenza virus proteins on cell membranes. Kindly released by Dr George Leser and Dr Robert Lamb. \item \texttt{simplenet}: Simple example of a linear network \end{itemize} \section{New Functions} Following is a list of all the functions that have been added. \begin{itemize} \item \texttt{split.hyperframe}: method for \texttt{split} for hyperframes. \item \texttt{complementarycolour}: Compute the complementary colour value of a given colour value, or the complementary colour map of a given colour map. \item \texttt{dmixpois}, \texttt{pmixpois}, \texttt{qmixpois}, \texttt{rmixpois}: (log-)normal mixture of Poisson distributions. \item \texttt{gauss.hermite}: Gauss-Hermite quadrature approximation to the expectation of any function of a normally-distributed random variable. \item \texttt{minnndist}, \texttt{maxnndist}: faster ways to compute \texttt{min(nndist(X))} and \texttt{max(nndist(X))} \item \texttt{boundingbox}: Generic function, replaces \texttt{bounding.box}. \item \texttt{Smoothfun}: create a \texttt{function(x,y)} equivalent to the result of \texttt{Smooth.ppp} \item \code{vdCorput}, \code{Halton}, \code{Hammersley}, \code{rQuasi}: quasirandom point patterns and sequences. \item \code{ellipse}: create an elliptical window. \item \code{clickbox}: interactively specify a rectangle by point-and-click on a graphics device. \item \code{symbolmap}: Create a graphics symbol map (a mapping from data values to graphical symbols) \item \code{update.symbolmap}: Modify a graphics symbol map \item \code{invoke.symbolmap}: Apply graphics symbol map to data values, and plot the symbols \item \code{plot.symbolmap}: Plot the graphics symbol map in the style of a legend \item \code{add.texture}: Draw a simple texture inside a specified region. \item \code{textureplot}: Display a factor-valued pixel image using texture fill. \item \code{texturemap}: Create a graphics texture map (a mapping from data values to graphical textures) \item \code{plot.texturemap}: Plot the graphics texture map in the style of a legend \item \code{reload.or.compute}: Utility for use in {\sf R} scripts. Either reload results from file, or compute them. \item \code{im.apply}: Apply a function to corresponding pixel values in several images. \item \code{hexgrid}, \code{hextess}: Create a hexagonal grid of points, or a tessellation of hexagonal tiles \item \code{shift.tess}, \code{rotate.tess}, \code{reflect.tess}, \code{scalardilate.tess}, \code{affine.tess}: Apply a geometrical transformation to a tessellation. \item \code{quantile.ewcdf}: Extract quantiles from a weighted cumulative distribution function. \item \code{scanLRTS}: Evaluate the spatially-varying test statistic for the scan test. \item \code{intensity.splitppp}: Estimate intensity in each component of a split point pattern. \item \code{intensity.quadratcount}: Use quadrat counts to estimate intensity in each quadrat. \item \code{as.owin.quadratcount}, \code{as.owin.quadrattest}: Extract the spatial window in which quadrat counts were performed. \item \texttt{mppm}: Fit a Gibbs model to several point patterns. The point pattern data may be organised as a designed experiment and the model may depend on covariates associated with the design. \item \texttt{anova.mppm}: Analysis of Deviance for models of class \texttt{mppm} \item \texttt{coef.mppm}: Extract fitted coefficients from a model of class \texttt{mppm} \item \texttt{fitted.mppm}: Fitted intensity or conditional intensity for a model of class \texttt{mppm} \item \texttt{kstest.mppm}: Kolmogorov-Smirnov test of goodness-of-fit for a model of class \texttt{mppm} \item \texttt{logLik.mppm}: log likelihood or log pseudolikelihood for a model of class \texttt{mppm} \item \texttt{plot.mppm}: Plot the fitted intensity or conditional intensity of a model of class \texttt{mppm} \item \texttt{predict.mppm}: Compute the fitted intensity or conditional intensity of a model of class \texttt{mppm} \item \texttt{quadrat.test.mppm}: Quadrat counting test of goodness-of-fit for a model of class \texttt{mppm} \item \texttt{residuals.mppm}: Point process residuals for a model of class \texttt{mppm} \item \texttt{subfits}: Extract point process models for each individual point pattern dataset, from a model of class \texttt{mppm}. \item \texttt{vcov.mppm}: Variance-covariance matrix for a model of class \texttt{mppm} \item \texttt{integral.msr}: Integral of a measure. \item \texttt{objsurf}: For a model fitted by optimising an objective function, this command computes the objective function in a neighbourhood of the optimal value. \item \texttt{contour.objsurf}, \texttt{image.objsurf}, \texttt{persp.objsurf}, \texttt{plot.objsurf}: Plot an 'objsurf' object. \item \texttt{fvnames}: Define groups of columns in a function value table, for use in \texttt{plot.fv}, etc \item \texttt{multiplicity}: New generic function for which \texttt{multiplicity.ppp} is a method. \item \texttt{unique.ppx}, \texttt{duplicated.ppx}, \texttt{multiplicity.ppx}: Methods for \texttt{unique}(), \texttt{duplicated}() and \texttt{multiplicity}() for '\texttt{ppx}' objects. These also work for '\texttt{pp3}' and \texttt{lpp} objects. \item \texttt{closepairs}, \texttt{crosspairs}, \texttt{closepaircounts}, \texttt{crosspaircounts}: Low-level functions for finding all close pairs of points \item \texttt{nnfun.ppp}, \texttt{distfun.ppp}: New argument \texttt{k} allows these functions to compute $k$-th nearest neighbours. \item \texttt{nndensity}: Estimate point process intensity using $k$-th nearest neighbour distances \item \texttt{simplepanel}, \texttt{run.simplepanel}: Support for a simple point-and-click interface for general use. \item \texttt{as.lpp}: Convert data to a point pattern on a linear network. \item \texttt{distfun.lpp}: Distance function for point pattern on a linear network. \item \texttt{eval.linim}: Evaluate expression involving pixel images on a linear network. \item \texttt{linearKcross}, \texttt{linearKdot}, \texttt{linearKcross.inhom}, \texttt{linearKdot.inhom}: Multitype $K$ functions for point patterns on a linear network \item \texttt{linearmarkconnect}, \texttt{linearmarkequal}: Mark connection function and mark equality function for multitype point patterns on a linear network \item \texttt{linearpcfcross}, \texttt{linearpcfdot}, \texttt{linearpcfcross.inhom}, \texttt{linearpcfdot.inhom}: Multitype pair correlation functions for point patterns on a linear network \item \texttt{linfun}: New class of functions defined on a linear network \item \texttt{nndist.lpp}, \texttt{nnwhich.lpp}, \texttt{nncross.lpp}: Methods for \texttt{nndist}, \texttt{nnwhich}, \texttt{nncross} for point patterns on a linear network \item \texttt{nnfun.lpp}: Method for \texttt{nnfun} for point patterns on a linear network \item \texttt{vcov.lppm}: Variance-covariance matrix for parameter estimates of a fitted point process model on a linear network. \item \texttt{bilinearform} Computes a bilinear form \item \texttt{tilenames}, \verb!tilenames<-!: Extract or change the names of tiles in a tessellation. \item \texttt{bw.ppl}: Likelihood cross-validation technique for bandwidth selection in kernel smoothing. \item \texttt{is.lppm}, \texttt{is.kppm}, \texttt{is.slrm}: Tests whether an object is of class 'lppm', 'kppm' or 'slrm' \item \texttt{Smooth}: New generic function for spatial smoothing. \item \texttt{Smooth.ppp}, \texttt{Smooth.fv}, \texttt{Smooth.msr}: Methods for \texttt{Smooth} (identical to \texttt{smooth.ppp}, \texttt{smooth.fv}, \texttt{smooth.msr} respectively) \item \texttt{fitted.kppm}: Method for \texttt{fitted} for cluster/Cox models \item \texttt{nncross.pp3}: Method for \texttt{nncross} for point patterns in 3D \item \texttt{nnmark}: Mark of nearest neighbour - can be used for interpolation \item \texttt{dclf.progress}, \texttt{mad.progress}: Progress plots (envelope representations) for the DCLF and MAD tests. \item \texttt{deriv.fv}: Numerical differentiation for \texttt{fv} objects. \item \texttt{interp.colourmap}: Smooth interpolation of colour map objects - makes it easy to build colour maps with gradual changes in colour \item \texttt{tweak.colourmap} Change individual colour values in a colour map object \item \texttt{beachcolourmap}: Colour scheme appropriate for `altitudes' (signed numerical values) \item \texttt{as.fv}: Convert various kinds of data to an 'fv' object \item \texttt{quadscheme.logi}: Generates quadrature schemes for the logistic method of ppm. \item \texttt{beginner} Introduction for beginners. \item \texttt{nnmap}: Given a point pattern, finds the k-th nearest point in the pattern from each pixel in a raster. \item \texttt{coef.fii}, \texttt{coef.summary.fii}: Extract the interaction coefficients of a fitted interpoint interaction \item \texttt{edges2vees}: Low-level function for finding triples in a graph. \item \texttt{affine.lpp}, \texttt{shift.lpp}, \texttt{rotate.lpp}, \texttt{rescale.lpp}, \texttt{scalardilate.lpp}: Geometrical transformations for point patterns on a linear network \item \texttt{affine.linnet}, \texttt{shift.linnet}, \texttt{rotate.linnet}, \texttt{rescale.linnet}, \texttt{scalardilate.linnet}: Geometrical transformations for linear networks \item \verb![.linnet! Subset operator for linear networks \item \texttt{timed}: Records the computation time taken \item \texttt{connected.ppp}: Find clumps in a point pattern. \item \texttt{kstest.lpp}, \texttt{kstest.lppm}: The spatial Kolmogorov-Smirnov test can now be applied to point patterns on a linear network (class \texttt{lpp}) and point processes on a linear network (class \texttt{lppm}). \item \texttt{bermantest.lpp}, \texttt{bermantest.lppm}: Berman's Z1 and Z2 tests can now be applied to point patterns on a linear network (class \texttt{lpp}) and point processes on a linear network (class \texttt{lppm}). \item \texttt{rhohat.lpp}, \texttt{rhohat.lppm}: Nonparametric estimation of the dependence of a point pattern on a spatial covariate: \texttt{rhohat} now applies to objects of class \texttt{lpp} and \texttt{lppm}. \item \texttt{intensity.lpp}: Empirical intensity of a point pattern on a linear network. \item \texttt{as.function.rhohat}: Converts a \texttt{rhohat} object to a function, with extrapolation beyond the endpoints. \item \verb![.layered!: Subset operator for layered objects. \item \texttt{shift}, \texttt{rotate}, \texttt{affine}, \texttt{rescale}, \texttt{reflect}, \texttt{flipxy}, \texttt{scalardilate}: These geometrical transformations now work for \texttt{layered} objects. \item \texttt{iplot.layered}: Interactive plotting for \texttt{layered} objects. \item \texttt{as.owin.layered}: Method for as.owin for layered objects. \item \verb![.owin!: Subset operator for windows, equivalent to \texttt{intersect.owin}. \item \texttt{rcellnumber}: Generates random integers for the Baddeley-Silverman counterexample. \item \texttt{is.lpp}: Tests whether an object is a point pattern on a linear network. \item \texttt{is.stationary.lppm}, \texttt{is.poisson.lppm}: New methods for \texttt{is.stationary} and \texttt{is.poisson} for class \texttt{lppm} \item \texttt{sessionLibs}: Print library names and version numbers (for use in \texttt{Sweave} scripts) \item \texttt{round.ppp}: Round the spatial coordinates of a point pattern to a specified number of decimal places. \item \texttt{rounding}: Determine whether a dataset has been rounded. \item \texttt{Hybrid}: The hybrid of several point process interactions [Joint research with Jorge Mateu and Andrew Bevan] \item \texttt{is.hybrid}: Recognise a hybrid interaction or hybrid point process model. \item \texttt{Finhom}, \texttt{Ginhom}, \texttt{Jinhom} Inhomogeneous versions of the F, G and J functions \item \texttt{delaunay.distance}: Graph distance in the Delaunay triangulation. \item \texttt{distcdf}: Cumulative distribution function of the distance between two independent random points in a given window. \item \texttt{bw.frac}: Bandwidth selection based on window geometry \item \texttt{shortside.owin}, \texttt{sidelengths.owin}: Side lengths of (enclosing rectangle of) a window \item \texttt{clusterset}: Allard-Fraley estimator of high-density features in a point pattern \item \texttt{pool.quadrattest}: Pool several quadrat tests \item \texttt{nnfun}: Nearest-neighbour map of a point pattern or a line segment pattern \item \texttt{as.ppm}: Converts various kinds of objects to \texttt{ppm}. \item \texttt{crossdist.lpp}: Shortest-path distances between pairs of points in a linear network \item \texttt{nobs.lppm}: Method for \texttt{nobs} for \texttt{lppm} objects. \item \texttt{as.linim}: Converts various kinds of objects to \texttt{linim}. \item \texttt{model.images.slrm}: Method for \texttt{model.images} for \texttt{slrm} objects \item \texttt{rotate.im}: Rotate a pixel image \item \texttt{parres}: Partial residual plots for spatial point process models. A diagnostic for the form of a covariate effect. \item \texttt{addvar}: Added variable plots for spatial point process models. A diagnostic for the existence of a covariate effect. \item \texttt{intensity}, \texttt{intensity.ppp}, \texttt{intensity.ppm} Calculate the intensity of a dataset or fitted model. Includes new approximation to the intensity of a fitted Gibbs model \item \texttt{LambertW}: Lambert's W-function \item \texttt{exactMPLEstrauss}: Fits the stationary Strauss point process model using an exact maximum pseudolikelihood technique. This is mainly intended for technical investigation of algorithms. \item \texttt{split.ppx}: Method for \texttt{split} for multidimensional point patterns (class \texttt{ppx}). This also works for point patterns on a linear network (class \texttt{lpp}). \item \texttt{model.images}: This function is now generic, with methods for classes \texttt{ppm}, \texttt{kppm}, \texttt{lppm} \item \texttt{model.frame}, \texttt{model.matrix}: These generic functions now have methods for classes \texttt{kppm}, \texttt{lppm} \item \texttt{as.owin.kppm}, \texttt{as.owin.lppm}: New methods for 'as.owin' for objects of class \texttt{kppm}, \texttt{lppm} \item \texttt{as.linnet.lppm}: Extracts the linear network in which a point process model was fitted. \item \texttt{dclf.test}: Perform the Diggle (1986)/ Cressie (1991)/ Loosmore and Ford (2006) test of CSR (or another model) \item \texttt{mad.test}: Perform the Maximum Absolute Deviation test of CSR (or another model). \item \texttt{convolve.im}: Compute convolution of pixel images. \item \texttt{Kmulti.inhom}: Counterpart of \texttt{Kmulti} for spatially-varying intensity. \item \texttt{rmhexpand}: Specify a simulation window, or a rule for expanding the simulation window, in Metropolis-Hastings simulation (\texttt{rmh}) \item \texttt{transect.im}: Extract pixel values along a line transect. \item \texttt{affine.im}: Apply an affine transformation to a pixel image. \item \texttt{scalardilate}: Perform scalar dilation of a geometrical object relative to a specified origin. \item \texttt{reflect}: Reflect a geometrical object through the origin. \item \verb![.lpp!, \verb![.ppx!: Subset operators for the classes \texttt{lpp} (point pattern on linear network) and \texttt{ppx} (multidimensional space-time point pattern). \item \texttt{is.rectangle}, \texttt{is.polygonal}, \texttt{is.mask}: Determine whether a window w is a rectangle, a domain with polygonal boundaries, or a binary pixel mask. \item \texttt{has.offset}: Determines whether a fitted model object (of any kind) has an offset. \item \texttt{lohboot}: Computes bootstrap confidence bands for pair correlation function and $K$ function using Loh's (2008) mark bootstrap. \item \texttt{rho2hat}: Bivariate extension of \texttt{rhohat} for estimating spatial residual risk, or intensity as a function of two covariates. \item \texttt{rStraussHard}: Perfect simulation for Strauss-hardcore process (with $\gamma \le 1$) \item \texttt{simulate.slrm}: Method for \texttt{simulate} for spatial logistic regression models. \item \texttt{labels.ppm}, \texttt{labels.kppm}, \texttt{labels.slrm}: Methods for \texttt{labels} for fitted point process models. \item \texttt{commonGrid}: Determine a common spatial domain and pixel resolution for several pixel images and/or binary masks \item \texttt{as.matrix.owin}: Converts a window to a logical matrix. \item \texttt{rDiggleGratton}, \texttt{rDGS}, \texttt{rHardcore}: Perfect simulation for the Diggle-Gratton process, Diggle-Gates-Stibbard process, and Hardcore process. \item \texttt{bw.scott}: Scott's rule of thumb for bandwidth selection in multidimensional smoothing \item \texttt{valid.ppm}: Checks whether a fitted point process model is a valid point process \item \texttt{project.ppm}: Forces a fitted point process model to be a valid point process \item \texttt{leverage.ppm}, \texttt{influence.ppm}, \texttt{dfbetas.ppm}: Leverage and influence for point process models \item \texttt{ippm}: Experimental extension to 'ppm' which fits irregular parameters in trend by Fisher scoring algorithm. \item \texttt{Tstat}: Third order summary statistic for point patterns based on counting triangles. \item \texttt{rCauchy}, \texttt{rVarGamma}: simulation of a Neyman-Scott process with Cauchy clusters or Variance Gamma (Bessel) clusters. Contributed by Abdollah Jalilian. \item \texttt{rPoissonCluster}: simulation of a general Poisson cluster process \item \texttt{model.covariates}: Identify the covariates involved in a model (\texttt{lm}, \texttt{glm}, \texttt{ppm} etc) \item \texttt{as.im.distfun}: Converts a 'distfun' to a pixel image. \item \texttt{cauchy.estK}, \texttt{cauchy.estpcf}, \texttt{vargamma.estK}, \texttt{vargamma.estpcf}: Low-level model-fitting functions for the Neyman-Scott process with Cauchy or Variance-Gamma cluster kernel. Contributed by Abdollah Jalilian. \item \texttt{Triplets}: Geyer's triplet interaction, for point process models \item \texttt{coef.summary.ppm}: You can now type \texttt{coef(summary(fit))} to extract a table of the fitted coefficients of the point process model \texttt{fit} \item \texttt{scan.test}: Spatial scan test of clustering \item \texttt{rat}: New class of 'ratio objects' \item \texttt{pool.rat}: New method for \texttt{pool}. Combines K function estimates for replicated point patterns (etc) by computing ratio-of-sums \item \texttt{unnormdensity}: Weighted kernel density with weights that do not sum to 1 and may be negative. \item \texttt{compatible}: New generic function with methods for \texttt{fv}, \texttt{im}, \texttt{fasp} and \texttt{units}. \item \texttt{imcov}: Spatial covariance function of pixel image or spatial cross-covariance function of two pixel images \item \texttt{harmonise.im}: Make several pixel images compatible by converting them to the same pixel grid \item \texttt{contour.listof}, \texttt{image.listof}: Methods for \texttt{contour}() and \texttt{image}() for lists of objects \item \texttt{dummify}: Convert data to numeric values by constructing dummy variables. \item \texttt{pool}: Pool data from several objects of the same class \item \texttt{pool.envelope} Pool simulated data from several envelope objects and create a new envelope \item \texttt{pool.fasp}: Pool simulated data from several function arrays and create a new array \item \texttt{envelope.envelope}: Recalculate an envelope from simulated data using different parameters \item \texttt{bw.diggle}: Bandwidth selection for density.ppp by mean square error cross-validation. \item \texttt{bw.smoothppp}: Bandwidth selection for smooth.ppp by least-squares cross-validation. \item \texttt{layered}, \texttt{plot.layered}: A simple mechanism for controlling plots that consist of several successive layers of data. \item \texttt{model.depends}: Given a fitted model (of any kind), identify which of the covariates is involved in each term of the model. \item \texttt{model.is.additive}: Determine whether a fitted model (of any kind) is additive, in the sense that each term in the model involves at most one covariate. \item \texttt{sumouter}, \texttt{quadform}: Evaluate certain quadratic forms. \item \texttt{flipxy}: Exchange x and y coordinates. \item \texttt{idw}: Inverse-distance weighted smoothing. \item \texttt{localKinhom}, \texttt{localLinhom}, \texttt{localpcfinhom}: Inhomogeneous versions of \texttt{localK}, \texttt{localL}, \texttt{localpcf}: \item \texttt{envelope.lpp}: Simulation envelopes for point patterns on a linear network \item \texttt{lineardisc}: Compute the 'disc' of radius $r$ in a linear network \item \texttt{linearpcf}: Pair correlation for point pattern on a linear network \item \texttt{linearKinhom}, \texttt{linearpcfinhom}: Inhomogeneous versions of the K function and pair correlation function for point patterns on a linear network \item \texttt{lppm}: Fit point process models on a linear network. \item \texttt{anova.lppm}: Analysis of deviance for point process models on a linear network. \item \texttt{predict.lppm}: Prediction for point process models on a linear network. \item \texttt{envelope.lppm}: Simulation envelopes for point process models on a linear network. \item \texttt{linim}: Pixel image on a linear network \item \texttt{plot.linim}: Plot a pixel image on a linear network \item \texttt{Gcom}, \texttt{Gres}, \texttt{Kcom}, \texttt{Kres}: New diagnostics for fitted Gibbs or Poisson point process models based on score residuals. \texttt{Gcom} is the compensator of the $G$ function; \texttt{Gres} is the residual of the $G$ function; \texttt{Kcom} is the compensator of the $K$ function; \texttt{Kres} is the residual of the $K$ function. \item \texttt{psst}, \texttt{psstA}, \texttt{psstG}: New diagnostics for fitted Gibbs or Poisson point process models based on pseudoscore residuals. \texttt{psst} is the pseudoscore diagnostic for a general alternative; \texttt{psstA} is the pseudoscore diagnostic for an Area-interaction alternative; \texttt{psstG} is the pseudoscore diagnostic for a Geyer saturation alternative. \item \texttt{compareFit}: Computes and compares several point process models fitted to the same dataset, using a chosen diagnostic. \item \texttt{as.interact}: Extracts the interpoint interaction structure (without parameters) from a fitted point process model or similar object. \item \texttt{is.stationary}, \texttt{is.poisson}: New generic functions for testing whether a point process model is stationary and/or Poisson. Methods for \texttt{ppm}, \texttt{kppm}, \texttt{slrm} etc. \item \texttt{raster.xy}: raster coordinates of a pixel mask \item \texttt{zapsmall.im}: 'zapsmall' for pixel images \item \texttt{linearK}: Computes the Okabe-Yamada network K-function for a point pattern on a linear network. \item \texttt{pairdist.lpp}: Shortest-path distances between each pair of points on a linear network. \item \texttt{vcov.kppm}: Asymptotic variance-covariance matrix for regression parameters in kppm object. [Contributed by Abdollah Jalilian and Rasmus Waagepetersen] \item \texttt{rLGCP}: Simulation of log-Gaussian Cox processes [Contributed by Abdollah Jalilian and Rasmus Waagepetersen] \item \texttt{predict.rhohat}: Method for \texttt{predict} for objects of class \texttt{rhohat}. Computes a pixel image of the predicted intensity. \item \texttt{Kmodel}, \texttt{pcfmodel}: Generic functions that compute the K-function or pair correlation function of a point process \emph{model}. There are methods for \texttt{kppm} and \texttt{ppm}. \item \texttt{as.function.fv} Converts a function value table (class \texttt{fv}) to a function in R \item \texttt{coef.kppm}: Method for \texttt{coef} for objects of class \texttt{kppm} \item \texttt{unitname}, \verb!unitname<-!: These generic functions now have methods for fitted model objects (classes \texttt{ppm}, \texttt{slrm}, \texttt{kppm}, \texttt{minconfit}) and quadrature schemes (\texttt{quad}). \item \texttt{nobs.ppm}: Method for \texttt{nobs} for class \texttt{ppm}. Returns the number of points in the original data. \item \texttt{rgbim}, \texttt{hsvim}: Specify three colour channels. These functions convert three pixel images with numeric values into a single image whose pixel values are strings representing colours. \item \texttt{scaletointerval}: Generic utility function to rescale data (including spatial data) to a specified interval \item \texttt{runiflpp}: Uniformly distributed random points on a linear network \item \texttt{rpoislpp}: Poisson point process on a linear network \item \texttt{clickjoin}: Interactive graphics to create a linear network \item \texttt{superimpose}: The function 'superimpose' is now generic, with methods for ppp, psp and a default method. \item \texttt{as.ppp.psp}: New method for \texttt{as.ppp} extracts the endpoints and marks from a line segment pattern \item \texttt{runiflpp}: Uniformly distributed random points on a linear network \item \texttt{rpoislpp}: Poisson point process on a linear network \item \texttt{clickjoin}: Interactive graphics to create a linear network \item \texttt{superimpose}: The function \texttt{superimpose} is now generic, with methods for \texttt{ppp}, \texttt{psp} and a default method. \item \texttt{nsegments}: Number of segments in a line segment pattern \item \texttt{clarkevans.test} Classical Clark-Evans test of randomness \item \texttt{msr} New class \texttt{msr} of signed measures and vector-valued measures supporting residual analysis. \item \texttt{quadrat.test.quadratcount}: Method for \texttt{quadrat.test} for objects of class \texttt{quadratcount} (allows a $\chi^2$ test to be performed on quadrat counts rather than recomputing from the original data) \item \texttt{tile.areas}: Computes areas of tiles in a tessellation (efficiently) \end{itemize} \section{Precis of all changes} Here is the text from the `overview' sections of the News and Release Notes for each update. \begin{itemize} \item Likelihood cross-validation for smoothing bandwidth. \item Faster computations for pairwise interaction models. \item More flexible models of intensity in cluster/Cox processes. \item New generic function for smoothing. \item Substantial acceleration of many functions \item New 'logistic likelihood' method for fitting Gibbs models. \item Nearest neighbours for point patterns in 3D \item Nearest-neighbour interpolation in 2D \item New 'progress plots' \item Hard core thresholds can be estimated automatically. \item More support for colour maps \item More support for 'fv' objects \item More support for pooling of envelopes. \item More functionality for nearest neighbours \item More support for 'layered' objects. \item Find clumps in a point pattern. \item Connected component interaction model. \item Improvements to interactive plots. \item Visual debugger for Metropolis-Hastings algorithm. \item Rounding of spatial coordinates \item The spatstat manual now exceeds 1000 pages. \item Hybrids of Gibbs point process models. \item Second order composite likelihood method for kppm. \item Inhomogeneous F, G and J functions. \item Delaunay graph distance \item Pixel images can now be displayed with a logarithmic colour map. \item random sequential packing \item Allard-Fraley estimator \item method for pooling several quadrat tests \item better control over dummy points in ppm \item nearest neighbour map \item changes to subsetting of images \item New code for Partial Residual Plots and Added Variable Plots. \item maximum profile pseudolikelihood computations vastly accelerated. \item now possible to capture every k-th state of Metropolis-Hastings algorithm. \item scope of 'intensity.ppm' extended. \item quadrat.test can now perform Monte Carlo tests and one/two-sided tests \item improvements to 'plot.fv' \item improvement to 'rescale' \item some datasets reorganised/corrected. \item New approximation to the intensity of a fitted Gibbs model. \item Improvements to 3D summary functions. \item A multidimensional point pattern (ppx) can now have 'local' coordinates as well as spatial and temporal coordinates and marks. \item More support for fitted cluster models (kppm). \item split method for multidimensional point patterns (ppx) and point patterns on a linear network (lpp). \item Variance estimates are now available for all Gibbs point process models. \item Cressie-Loosmore-Ford test implemented \item plot.fv now avoids collisions between the legend and the graphics. \item Extension to predict.ppm \item Improvements to envelopes and multitype summary functions. \item Line transects of a pixel image. \item Changes to defaults in Metropolis-Hastings simulations. \item More geometrical operations \item Variance-covariance matrix for Gibbs point process models. \item Bootstrap confidence bands for pair correlation function and K function. \item Nearest neighbour distance computations accelerated. \item Improved support for fitted point process models. \item Improved mechanism for handling 'invalid' point processes \item New functions for perfect simulation \item Code for ensuring a fitted point process model is a valid point process \item Leverage and influence for point process models \item New cluster models (support for model-fitting and simulation). \item Fit irregular parameters in trend of point process model \item Third order summary statistic. \item Geyer's triplet interaction \item more functionality for replicated point patterns \item changed default for simulation window in point process simulation \item changed default for edge correction in Kcom, Gcom \item data in spatstat is now lazy-loaded \item Spatial Scan Test \item Functionality for replicated point patterns \item Spatial covariance functions of windows and pixel images. \item Area-interaction models can now be fitted in non-rectangular windows \item New vignette on 'Getting Started with Spatstat' \item Functions to pool data from several objects of the same class. \item Bandwidth selection for density.ppp and smooth.ppp \item Layered plots. \item Model-handling facilities. \item Inverse-distance weighted smoothing. \item Inhomogeneous versions of neighbourhood density functions. \item changes to renormalisation of estimates in Kinhom and pcfinhom \item new diagnostics based on score residuals \item Fitting and simulation of log-Gaussian Cox processes with any covariance function \item More support for 'kppm' and 'rhohat' objects \item Metropolis-Hastings algorithm now saves its transition history \item Easier control of dummy points in ppm \item Convert an 'fv' object to an R function \item marked line segment patterns can now be plotted \item multitype point process models are now 'self-starting' \item new functions to manipulate colour images \item \texttt{superimpose} is now generic \item improved mathematical labels when plotting functions \item A line segment pattern can now have a data frame of marks. \item Increased numerical stability. \item New 'self-starting' feature of interpoint interactions. \item Point process model covariates may now depend on additional parameters. \item New class of signed measures, for residual analysis. \item Spatstat now has version nicknames. \item Improved quadrature schemes in \code{ppm} \item More methods for \code{intensity} \item Counterpart of \code{apply} for lists of images. \item Hexagonal grids and tessellations. \item Extensions to scan test and Allard-Fraley cluster set estimator \item Extensions and improvements to plotting functions. \item Improvements to labelling of \code{fv} objects. \item Geometrical errors in polygons are now repaired automatically. \item Switch all plots from colour to greyscale using a single command. \item Change parameters of fitted model before simulating it. \item Improvements to layout of printed output. \item Plots using texture fill. \item Changed default behaviour of perfect simulation algorithms. \item New syntax for point process models (\texttt{ppm}, \texttt{kppm}, \texttt{lppm}) equivalent to syntax of \texttt{lm}, \texttt{glm}, \ldots \item Covariates in \texttt{ppm}, \texttt{kppm} can be tessellations. \end{itemize} \section{Alphabetical list of changes} Here is a list of all changes made to existing functions, listed alphabetically. \begin{itemize} \item \code{adaptive.density}: Now has argument 'verbose' \item \texttt{affine}: Argument \texttt{vec} can be in various formats. \item \texttt{as.function.fv}: Now allows multiple columns to be interpolated. \item \texttt{alltypes} Now works for lpp objects \item \texttt{ants}: The function \verb!ants.extra$plot()! has been renamed plotit() for conformity with other datasets. The auxiliary data \texttt{ants.extra} now includes a function called \texttt{side} determining whether a given location is in the scrub or field region. Can be used as a covariate in \texttt{ppm}, \texttt{kppm}, \texttt{slrm}. \item \texttt{applynbd} The arguments \texttt{N}, \texttt{R} and \texttt{criterion} may now be specified together. \item \texttt{areaGain}, \texttt{areaLoss} These now handle arbitrary windows \texttt{W}. They are now more accurate when \texttt{r} is very small. \item \texttt{AreaInter} Point process models with the \texttt{AreaInter} interaction can now be fitted to point pattern data in any window. \item \texttt{as.box3}: Now accepts objects of class \texttt{ppx} or \texttt{boxx}. \item \texttt{as.fv}: Now handles objects of class \texttt{kppm} or \texttt{minconfit}. \item \texttt{as.mask}: Argument \texttt{eps} can now be a 2-vector, specifying x and y resolutions. \item \texttt{as.owin.ppm}, \texttt{as.owin.kppm}: New argument \texttt{from} allows the user to extract the spatial window of the point data (\texttt{from="points"}) or the covariate images (\texttt{from="covariates"}) \item \texttt{betacells}: This dataset has been restructured. The vector of cell profile areas, formerly given by \verb!betacells.extra$area!, has now been included as a column of marks in the point pattern \texttt{betacells}. \item \texttt{bw.relrisk}: Computation in large datasets accelerated. New arguments \texttt{hmin}, \texttt{hmax} control the range of trial values of bandwidth. \item \texttt{clusterset}: The argument \code{result} has been renamed \code{what}. It is now possible to give multiple values to \code{what} so that both types of result can be computed together. \item \texttt{colourmap}: The argument \texttt{col} can now be any kind of colour data \item \texttt{connected}: \texttt{connected} is now generic, with methods for \texttt{im}, \texttt{owin} and \texttt{ppp}. \item \texttt{crossdist.ppp}, \texttt{crossdist.pp3}, \texttt{crossdist.default}: New argument \texttt{squared} allows the squared distances to be computed (saving computation time in some applications) \item \texttt{crossing.psp}: New argument \texttt{fatal} allows the user to handle empty intersections \item \texttt{dclf.test}, \texttt{mad.test}: The argument X can now be an object produced by a previous call to \texttt{dclf.test} or \texttt{mad.test}. \item \texttt{default.dummy}: Can now generate dummy points as a quasirandom sequence. \item \texttt{default.rmhcontrol}, \texttt{default.expand}: These functions now work with models of class \texttt{rmhmodel} as well as \texttt{ppm}. \item \texttt{density.ppp}: \begin{itemize} \item The argument \texttt{weights} can now be a matrix or an \code{expression}. \item Numerical underflow no longer occurs when \texttt{sigma} is very small and \texttt{at="points"}. A warning is no longer issued. \item New argument \texttt{diggle} allows choice of edge correction. \item New argument \texttt{adjust} makes it easy to adjust the smoothing bandwidth. \end{itemize} \item \texttt{disc}: Argument \texttt{centre} can be in various formats. \item \texttt{distcdf}: Arguments W and V can now be point patterns. \item \texttt{distfun}: The internal format of objects of class \texttt{distfun} has been changed. \item \texttt{duplicated.ppp}, \texttt{unique.ppp} New argument \texttt{rule} allows behaviour to be consistent with package \texttt{deldir}. \item \texttt{effectfun}: Now has argument \texttt{se.fit} allowing calculation of standard errors and confidence intervals. \item \texttt{envelope}: All methods for \texttt{envelope} now handle \texttt{fun=NULL}. New argument \texttt{envir.simul} determines the environment in which to evaluate the expression \texttt{simulate}. \item \texttt{envelope.lpp}: Now handles multitype point patterns. \item \texttt{envelope.envelope}: New argument \texttt{transform} allows the user to apply a transformation to previously-computed summary functions. \item \texttt{envelope.envelope}: In \texttt{envelope(E, fun=NULL)} if \texttt{E} does not contain simulated summary functions, but does contain simulated point patterns, then \texttt{fun} now defaults to \texttt{Kest}, instead of flagging an error. \item \texttt{envelope}: Can now calculate an estimate of the true significance level of the "wrong" test (which declares the observed summary function to be significant if it lies outside the pointwise critical boundary anywhere). Controlled by new argument \texttt{do.pwrong}. \item \texttt{envelope}: Improved plot labels for envelopes that were generated using the \texttt{transform} argument. \item \texttt{erosion}, \texttt{dilation}, \texttt{opening}, \texttt{closing}: If the original set is a polygon, the result is a polygon. \item \texttt{eval.fv}, \texttt{eval.fasp}: Improved behaviour when plotted. Evaluation is now applied only to columns that contain values of the function itself (rather than values of the derivative, hazard rate, etc). This is controlled by the new argument \texttt{dotonly}. \item \texttt{eval.im}: Images with incompatible dimensions are now resampled to make them compatible (if \texttt{harmonize=TRUE}). When the argument \texttt{envir} is used, \texttt{eval.im} now recognises functions as well as variables in \texttt{envir} \item \texttt{exactMPLEstrauss}: New argument \texttt{project} determines whether the parameter gamma is constrained to lie in $[0,1]$. \item \texttt{expand.owin}: Functionality extended to handle all types of expansion rule. \item \texttt{F3est}: Calculation of theoretical Poisson curve (\texttt{theo}) has changed, and is now controlled by the argument \texttt{sphere}. \item \texttt{fitted.ppm}, \texttt{predict.ppm}: Argument \texttt{new.coef} specifies a vector of parameter values to replace the fitted coefficients of the model. \item \texttt{fryplot}: Now has arguments \texttt{to} and \texttt{from}, allowing selection of a subset of points. \item \texttt{fryplot}, \texttt{frypoints}: These functions now handle marked point patterns properly. \item \texttt{Hardcore}, \texttt{StraussHard}: The hard core distance \texttt{hc} can now be omitted; it will be estimated from data. \item \texttt{identify.ppp}: now handles multivariate marks. \item \texttt{im}, \texttt{as.im}: The pixel coordinates in an image object are now generated more accurately. This avoids a numerical error in \texttt{plot.im}. \item \texttt{image.listof}: New argument \texttt{equal.ribbon} allows several images to be plotted with the same colour map. If \texttt{equal.ribbon=TRUE}, the colour ribbon will no longer be displayed repeatedly for each panel, but will now be plotted only once, at the right hand side of the plot array. \item \texttt{inside.owin}: Now accepts the form \texttt{list(x,y)} for the first argument. \item \code{intensity.ppp}: Now has argument \code{weights}. \item \texttt{intensity.ppm}: Now works for stationary point process models with the interactions \texttt{DiggleGratton}, \texttt{DiggleGatesStibbard}, \texttt{Fiksel}, \texttt{PairPiece} and \texttt{Softcore}. \item \texttt{intersect.owin}, \texttt{union.owin}, \texttt{setminus.owin}: If A and B are polygons, the result is a polygon. \item \texttt{intersect.tess}, \texttt{dirichlet}: The tiles of the resulting tessellation are polygons if the input was polygonal. \item \texttt{iplot}: \texttt{iplot} is now generic, with methods for \texttt{ppp}, \texttt{layered} and \texttt{default}. \texttt{iplot} methods now support zoom and pan navigation. \item \texttt{Kest}: \begin{itemize} \item Now includes fast algorithm for \texttt{correction="none"} which will handle patterns containing millions of points. \item New option: \texttt{correction = "good"} selects the best edge correction that can be computed in reasonable time. \item Options \texttt{correction='border'} and \texttt{correction='none'} now run about 4 times faster, thanks to Julian Gilbey. \item New argument \texttt{ratio} determines whether the numerator and denominator of the estimate of the K-function will be stored. This enables analysis of replicated point patterns, using \texttt{pool.rat} to pool the K function estimates. \end{itemize} \item \texttt{Kcross}, \texttt{Kdot}, \texttt{Kmulti}: New argument \texttt{ratio} determines whether the numerator and denominator of the estimate of the multitype K-function will be stored. This enables analysis of replicated point patterns, using \texttt{pool.rat} to pool the K function estimates. \item \texttt{Kinhom} \begin{itemize} \item New argument \texttt{normpower} allows different types of renormalisation. \item Now accepts \texttt{correction="good"}. \item New argument \texttt{update}. If \texttt{lambda} is a fitted model (class \texttt{"ppm"} or \texttt{"kppm"}) and \texttt{update=TRUE}, the model is re-fitted to the data pattern, before the intensities are computed. \end{itemize} \item \texttt{Kmulti}, \texttt{Gmulti}, \texttt{Jmulti}: The arguments \texttt{I}, \texttt{J} can now be any kind of subset index or can be functions that yield a subset index. \item \texttt{Kcom}, \texttt{Gcom}: New argument \texttt{conditional} gives more explicit control over choice of edge correction in compensator. Simplified defaults for edge correction. \item \texttt{Kscaled}, \texttt{Lscaled}: Argument \texttt{lambda} can now be a fitted model object (class \texttt{"ppm"}). \item \texttt{kppm} \begin{itemize} \item now accepts syntax \verb!kppm(X ~ Z)! similar to \texttt{lm} and \texttt{glm}, as well as old syntax \verb!kppm(X, ~Z)! \item Covariates no longer have to be passed in the argument \texttt{covariates} but can be objects in the {\sf R} session; \item Now has the option of fitting models using Guan's (2006) second order composite likelihood. \item More flexible models of the intensity, and greater control over the intensity fitting procedure, are now possible using the arguments \texttt{covfunargs}, \texttt{use.gam}, \texttt{nd}, \texttt{eps} passed to \texttt{ppm}. \item Also the argument \texttt{X} may now be a quadrature scheme. \item Error messages from the optimising function \texttt{optim} are now trapped and handled. \item Confidence intervals for the fitted trend parameters can now be obtained using \texttt{confint} \item Now accepts \texttt{clusters="Cauchy"} or \texttt{clusters="VarGamma"} for the Neyman-Scott process with Cauchy or Variance-Gamma cluster kernel. \item Can now fit a log-Gaussian Cox process with any covariance function implemented by the \texttt{RandomFields} package. \item Covariates can now be tessellations. \end{itemize} \item \texttt{latest.news}: The text is now displayed one page at a time. Can now be executed by typing the name of the function without parentheses. \item \texttt{layered}, \code{layerplotargs}, \code{plot.layered}: The plotting argument can now be a list of length 1, which will be replicated to the correct length. \item \verb!layerplotargs<-!: Now handles any spatial object, converting it to a \texttt{layered} object. \item \texttt{Lest}: Now handles theoretical variance estimates (using delta method) if \texttt{var.approx=TRUE} \item \texttt{LennardJones} Increased numerical stability. New (optional) scaling argument \texttt{sigma0}. Interpoint distances are automatically rescaled using 'self-starting' feature. \item \texttt{lgcp.estK}, \texttt{Kmodel}: Computation can be greatly accelerated by setting \texttt{spatstat.options(fastK.lgcp=TRUE)}. \item \texttt{logLik.ppm}: New argument \texttt{new.coef} allows the user to evaluate the likelihood for a different value of the parameter. \item \texttt{lohboot}: When the result is plotted, the confidence limits are now shaded. New argument \texttt{global} allows global (simultaneous) confidence bands instead of pointwise confidence intervals. \item \texttt{lppm}: \begin{itemize} \item The model-fitting function \texttt{lppm} now accepts a syntax similar to \texttt{lm} or \texttt{glm}, for example \verb!lppm(X ~ Z)!, but still accepts the older syntax \verb!lppm(X, ~Z)!. To support both kinds of syntax, the function \texttt{lppm} is now generic, with methods for the classes \texttt{formula} and \texttt{lppp}. The \texttt{formula} method handles a syntax like \verb!lppm(X ~ Z)! while the \texttt{lpp} method handles the old syntax \verb!lppm(X, ~Z)!. \item Covariates no longer have to be passed in the argument \texttt{covariates}: variable names appearing in the model formula can simply be the names of objects in the {\sf R} session. \item New arguments \texttt{eps} and \texttt{nd} control the quadrature scheme. \item Stepwise model selection using \texttt{step} now works for \texttt{lppm} objects. \end{itemize} \item \texttt{markstat}: The arguments \texttt{N} and \texttt{R} may now be specified together. \item \texttt{marks.ppp}, \verb!marks<-.ppp!: New argument \texttt{drop} determines whether a data frame of marks with only one column will be converted to a vector. \item \texttt{model.depends}: Now also recognises 'offset' terms. \item \texttt{MultiStrauss}, \texttt{MultiHard}, \texttt{MultiStraussHard}: \begin{itemize} \item The argument \texttt{types} can now be omitted or NULL; it will be inferred from the point pattern data. \item The ordering of the arguments has changed. (The old syntax will still work.) \end{itemize} \item \texttt{nbfires}: For conformity with other datasets, there is now an object \texttt{nbfires.extra}. \item \texttt{nnclean}: Extra arguments are now passed to hist.default. The result now has attributes which give the fitted parameter values, information about the fitting procedure, and the histogram bar heights. \item \texttt{nncross}: This function is now generic, with methods for \texttt{ppp} and \texttt{default}. \texttt{nncross.ppp} can now find the $k$-th nearest neighbours, for any $k$. New arguments added to control the return value and the sorting of data. \item \texttt{nndist}, \texttt{nnwhich}: New argument \texttt{by} makes it possible to find nearest neighbours belonging to specified subsets in a point pattern, for example, the nearest neighbour of each type in a multitype point pattern. \item \texttt{nncorr}, \texttt{nnmean}, \texttt{nnvario} These functions now handle data frames of marks. \item pairwise interaction Gibbs models: Many calculations for these models have been accelerated. \item \texttt{owin}: Polygon data are no longer subjected to strict checks on their geometrical validity (self-intersections, overlaps, etc). Instead, geometrical inconsistencies in polygon data are automatically repaired. \item \texttt{pcf.ppp}: New argument \texttt{domain} allows the computation to be restricted to a subset of the window. \item \texttt{pcf.ppp}, \texttt{pcfinhom}: New argument \texttt{divisor} enables better performance of the estimator of pair correlation function for distances close to zero. \item \texttt{pcfcross, pcfdot}: Algorithms have been reimplemented using a single-pass kernel smoother and now run much faster. Bandwidth selection rule improved. \item \texttt{pcfinhom}: Now performs renormalisation of estimate. Default behaviour changed - estimates are now renormalised by default. \item \texttt{persp.im}: The \texttt{colmap} argument can now be a \texttt{colourmap} object \item pixel images and grids: The default size of a pixel grid, given by \texttt{spatstat.options("npixel")}, has been changed from 100 to 128. A power of 2 gives faster and more accurate results in many cases. \item \texttt{plot.fasp}, \texttt{plot.fv}, \texttt{plot.im}, \texttt{plot.ppp}, \texttt{plot.owin}, \texttt{plot.im}: Can be switched from colour to greyscale by setting \texttt{spatstat.options(monochrome=TRUE)}. \item \texttt{plot.colourmap}: Now passes arguments to \texttt{axis} to control the plot. Appearance of plot improved. \item \texttt{plot.envelope}: If the upper envelope is NA but the lower envelope is finite, the upper limit is now treated as +Infinity \item \texttt{plot.hyperframe}: The argument \texttt{e} now has a different format. Instead of \texttt{plot(h, plot(XYZ))} one must now type \texttt{plot(h, quote(plot(XYZ)))} This is necessary in order to avoid problems with 'S4 method dispatch' \item \texttt{plot.fasp}: New argument \texttt{samey} controls whether all panels have the same $y$ limits. Changed default value of \texttt{samex}. \item \texttt{plot.fii}: Increased resolution of the plot obtained from \texttt{plot(fitin(ppm(...)))} \item \texttt{plot.fv}: \begin{itemize} \item Improved collision-avoidance algorithm (for avoiding overlaps between curves and legend). \item Labelling of plots has been improved in some cases. \item New argument \texttt{log} allows plotting on logarithmic axes. \item The formula can now include the symbols \texttt{.x} and \texttt{.y} as abbreviation for the function argument and the recommended function value, respectively. \item New argument \texttt{add} \item Argument \texttt{legendmath} now defaults to TRUE. \item New argument \texttt{legendargs} gives more control over appearance of legend. \item Increased default spacing between lines in legend. \item Improved handling of argument \code{shade}. \end{itemize} \item \texttt{plot.fv}, \texttt{plot.envelope}: New argument \texttt{limitsonly} allows calculation of a common x,y scale for several plots. \item \texttt{plot.im}: \begin{itemize} \item Now handles many arguments recognised by plot.default such as \texttt{cex.main}. Also handles argument \texttt{box}. \item New argument \texttt{ribargs} contains parameters controlling the ribbon plot only. \item Now returns the colour map used. \item Argument \texttt{col} can now be a function. \item New argument \texttt{log} allows colour map to be equally spaced on a log scale. \item The colour ribbon can now be placed left, right, top or bottom using new argument \texttt{ribside}. \item Can now plot images whose pixel values are strings representing colours. New argument \texttt{valuesAreColours} \item New arguments \code{add}, \code{do.plot}, \texttt{clipwin}. \item More arguments recognised by \code{ribargs} \end{itemize} \item \texttt{plot.kstest}: Can now perform P-P and Q-Q plots as well. \item \texttt{plot.layered}: New arguments \code{add}, \code{main}. Better argument handling. \item \texttt{plot.listof},\texttt{ plot.splitppp}, \texttt{contour.listof}, \texttt{image.listof}: \begin{itemize} \item Default behaviour has changed: panels are now plotted on different scales. \item When \code{equal.scales=TRUE} the panels are plotted on exactly equal scales and are exactly aligned (under certain conditions). \item The arguments \texttt{panel.begin} and \texttt{panel.end} can now be objects such as windows. \item New arguments \texttt{hsep, vsep} allow increased spacing between plots without adding white space around the outer margin. \item Argument \texttt{mar.panel} may have length 1, 2 or 4. \end{itemize} \item \texttt{plot.lpp}: New arguments. Automatically plots a legend. \item \texttt{plot.owin}: \begin{itemize} \item Polygons with holes can now be plotted with filled colours on any device. \item The window can now be filled with one of 8 different textures. \end{itemize} \item \texttt{plot.ppp}: \begin{itemize} \item Automatically plots a legend \item Return value is now a graphics map object \item Now behaves differently if there are multiple columns of marks. Each column of marks is plotted, in a series of separate plots arranged side-by-side. \item An `empty' plot can now be generated by setting \texttt{type="n"}. \item New arguments \code{show.window}, \code{show.all}, \texttt{do.plot}, \texttt{clipwin} \end{itemize} \item \texttt{plot.psp}: Now handles marked line segment patterns and plots the marks as colours. \item \code{plot.scan.test}, \code{as.im.scan.test}: These functions can now give the optimal value of circle radius \code{r}. \item \code{plot.tess}: For a tessellation represented by a pixel image, \code{plot.tess} no longer treats the pixel labels as palette colours. \item \code{plot.ppp}, \code{plot.owin}, \code{plot.im}, \code{plot.psp}, \code{plot.tess}, \code{plot.layered}: New universal argument \code{show.all} determines what happens when a plot is added to an existing plot. If \code{show.all = TRUE} then everything is plotted, including the main title and colour ribbon. \item \code{plot.quadratcount}, \code{plot.quadrattest}: These functions have now been documented. \item \texttt{print.fv}: improved layout. \item \texttt{pool.envelope}: New arguments \texttt{savefuns} and \texttt{savepatterns}. Envelopes generated with \texttt{VARIANCE=TRUE} can now be pooled. The plot settings of the input data are now respected. \item \texttt{ppm}: \begin{itemize} \item The model-fitting function \texttt{ppm} now accepts a syntax similar to \texttt{lm} or \texttt{glm}, for example \verb!ppm(X ~ Z)!, but still accepts the older syntax \verb!ppm(X, ~Z)!. To support both kinds of syntax, the function \texttt{ppm} is now generic, with methods for the classes \texttt{formula}, \texttt{ppp} and \texttt{quad}. The \texttt{formula} method handles a syntax like \verb!ppm(X ~ Z)! while the \texttt{ppp} method handles the old syntax \verb!ppm(X, ~Z)!. \item Covariates no longer have to be passed in the argument \texttt{covariates}: variable names appearing in the model formula can simply be the names of objects in the {\sf R} session. \item Can now fit models with 'hybrid' interactions. \item New option: \texttt{method = "logi"} for the 'logistic likelihood' method. \item New argument \texttt{nd} controls the number of dummy points. \item New argument \texttt{eps} determines the spacing between dummy points. (also works for related functions \texttt{quadscheme}, \texttt{default.dummy}, ...) \item The default quadrature scheme for a point pattern has been improved (in the case of a non-rectangular window) to remove a possible source of bias. \item Confidence intervals for the fitted trend parameters can now be obtained using \texttt{confint} . \item New argument \texttt{project} determines whether the fitted model is forced to be a valid point process. \item Interaction objects may now be 'self-starting' i.e. initial parameter estimates can be computed from the point pattern dataset. \item The spatial trend can now depend on additional parameters. This is done by allowing spatial covariate functions to have additional parameters: \texttt{function(x, y, ...)} where \texttt{...} is controlled by the new argument \texttt{covfunargs} to \texttt{ppm}. \item The print and summary methods for \texttt{ppm} objects now show standard errors for parameter estimates if the model is Poisson. \item Covariates can now be tessellations. \end{itemize} \item \item \texttt{ppp}: New argument \texttt{drop} determines whether a data frame of marks with only one column will be converted to a vector. \item \texttt{ppx}: Arguments have changed. An object of class \texttt{ppx} may now include 'local' coordinates as well as 'spatial' and 'temporal' coordinates, and marks. \item \texttt{predict.ppm}: \begin{itemize} \item Can now calculate the conditional intensity of a model relative to any point pattern \texttt{X} (not just the original data pattern). \item New argument \texttt{correction} allows choice of edge correction when calculating the conditional intensity. \item New argument \texttt{interval} allows confidence intervals or prediction intervals to be calculated. \item New argument \texttt{total} allows for prediction of the total number of points in a specified region. \end{itemize} \item \texttt{predict.slrm}: New argument \texttt{window} \item \texttt{print.ppp}, \texttt{print.summary.ppp}, \texttt{print.owin}, \texttt{print.summary.owin}, \texttt{print.im}, \texttt{print.summary.im}, \texttt{print.fv}, \texttt{print.msr}: These functions now avoid over-running the text margin (i.e.\ they respect \texttt{options('width')} where possible). \item \texttt{print.ppp}, \texttt{summary.ppp}: If the point pattern x was generated by Metropolis-Hastings simulation using \texttt{rmh}, then \texttt{print(x)} and \texttt{summary(x)} show information about the simulation parameters. \item \texttt{print.ppm}: Standard errors for the parameter estimates, and confidence intervals for the parameters, can now be printed for all Gibbs models (but are printed only for Poisson models by default). Now has argument \texttt{what} to allow only selected information to be printed. \item \texttt{print.summary.ppm}: Output gives a more precise description of the fitting method. \item \texttt{profilepl}: Accelerated (typically by a factor of 5). Does not generate warnings when some of the candidate models have zero likelihood - for example when fitting model with a hard core. Can now maximise over trend parameters as well as interaction parameters \item \texttt{progressreport}: Improved output (also affects many functions which print progress reports) \item \texttt{project.ppm}: Improved algorithm. Now handles terms in the trend formula as well as the interaction. The projected point process is now obtained by re-fitting the model, and is guaranteed to be the maximum pseudolikelihood fit. \item \texttt{psp}: A line segment pattern (object of class 'psp') can now have a data frame of marks. \item \texttt{psst}: Argument \texttt{funcorrection} changed to \texttt{funargs} allowing greater flexibility. \item \texttt{quad.ppm}: Now accepts \texttt{kppm} objects. New argument \texttt{clip}. \item \texttt{quadscheme}: Can now generate dummy points from a quasirandom sequence. \item \texttt{quadrat.test.splitppp}: The result is now a single object of class \texttt{quadrattest} \item \texttt{quadrat.test}: Can now perform Monte Carlo test as well (for use in small samples where the $\chi^2$ approximation is inaccurate) New argument \texttt{alternative} allows choice of alternative hypothesis and returns one-sided or two-sided $p$-values as appropriate. The print method for \texttt{quadrattest} objects now displays information about the quadrats. \item \texttt{raster.x}, \texttt{raster.y}, \texttt{raster.xy}: These functions have a new argument \texttt{drop} \item \texttt{rDiggleGratton}, \texttt{rDGS}, \texttt{rHardcore}, \texttt{rStrauss}, \texttt{rStraussHard}: By default the point pattern is now generated on a larger window, and trimmed to the original window. New argument \texttt{expand=TRUE}. \item \texttt{redwoodfull} (Full redwood data): The function \verb!redwoodfull.extra$plot()! has been renamed \texttt{plotit} for conformity with other datasets, and improved. \item \texttt{relrisk}: New argument \texttt{casecontrol} determines whether a bivariate point pattern should be treated as case-control data. New argument \texttt{case} allows the user to specify which mark value corresponds to the cases in a case-control dataset. \item \texttt{rescale}: \begin{itemize} \item If scale argument \texttt{s} is missing, then the data are rescaled to native units. For example if the current unit is 0.1 metres, coordinates will be re-expressed in metres. \item New argument \texttt{unitname} makes it possible to change the name of the unit of length. \end{itemize} \item \texttt{residuals.ppm}: New arguments \texttt{new.coef} and \texttt{quad} for advanced use (make it possible to compute residuals from a modified version of the fitted model.) The value returned by \texttt{residuals.ppm} is now an object of class \texttt{msr}. It can be plotted directly. \item \texttt{rhohat}: Now has arguments \texttt{eps}, \texttt{dimyx} to control pixel resolution. If \texttt{covariate = "x"} or \texttt{"y"}, the resulting object has the same \texttt{unitname} as the original point pattern data. Estimation can now be performed using local likelihood fitting with the \texttt{locfit} package, or using kernel smoothing. \item \texttt{rlabel}: Now works for \texttt{lpp}, \texttt{pp3}, \texttt{ppx} objects. \item \texttt{rlinegrid}, \texttt{rpoisline}: These functions now handle binary mask windows. \item \texttt{rmh}: If \texttt{track=TRUE}, the history of transitions of the Metropolis-Hastings algorithm is saved and returned. \item \texttt{rmh}, \texttt{rmhstart}: The initial state ('\texttt{start}') can now be missing or null. \item \texttt{rmh}, \texttt{rmhcontrol}: It is now possible to save every $k$-th iteration of the Metropolis-Hastings algorithm. The arguments \texttt{nsave} and \texttt{nburn} may be given to \texttt{rmh} or to \texttt{rmhcontrol}. They specify that the point pattern will be saved every \texttt{nsave} iterations, after an initial burn-in of \texttt{nburn} iterations. \item \texttt{rmh.default}: New argument \texttt{snoop} allows the user to activate a visual debugger for the Metropolis-Hastings algorithm. \item \texttt{rmh.default}: \texttt{track} is no longer a formal argument of \texttt{rmh.default}; it is now a parameter of \texttt{rmhcontrol}. However there is no change in usage: the argument \texttt{track} can still be given to \texttt{rmh.default}. \item \texttt{rmh.ppm}, \texttt{simulate.ppm}, \texttt{default.expand}: For point process models which have a trend depending only on x and y, the simulation window is now taken to be the same as the original window containing the data (by default). That is, `expansion' does not take place, by default. (In previous versions of spatstat the simulation window was larger than the original data window.) \item \texttt{rmh.ppm}, \texttt{simulate.ppm}: The argument sequence for these functions has changed. New argument \texttt{expand} allows more explicit control over simulation domain. \item \texttt{rmh.ppm}, \texttt{simulate.ppm}, \texttt{rmhmodel.ppm}: New argument \texttt{new.coef} allows the user to change the parameters of a fitted model before it is simulated. \item \texttt{rmhcontrol}: The default value of the parameters \texttt{periodic} and \texttt{expand} has changed. \item \texttt{rmhcontrol}: The parameter \texttt{expand} can now be in any format acceptable to \texttt{rmhexpand}. \item \texttt{rmh.ppm}, \texttt{rmh.default}, \texttt{simulate.ppm}: Any \texttt{rmhcontrol} parameter can now be given directly as an argument to \texttt{rmh.ppm}, \texttt{rmh.default} or \texttt{simulate.ppm}. \item \texttt{rNeymanScott}: Argument \texttt{rcluster} may now take a different format. \item \texttt{rotate}: The user can specify the centre of rotation. \item \texttt{rotate.owin}, \texttt{affine.owin}: These functions now handle binary pixel masks. New argument \texttt{rescue} determines whether rectangles will be preserved. \item \texttt{rSSI}: Performs 'Random Sequential Packing' if \texttt{n=Inf}. \item \texttt{runifpointOnLines}, \texttt{rpoisppOnLines}, \texttt{runiflpp}, \texttt{rpoislpp}: Can now generate multitype point patterns. \item \texttt{rVarGamma}, \texttt{kppm}, \texttt{vargamma.estK}, \texttt{vargamma.estpcf}: New argument \texttt{nu.pcf} provides an alternative way to specify the kernel shape in the VarGamma model, instead of the existing argument \texttt{nu.ker}. Function calls that use the ambiguous argument name \texttt{nu} will no longer be accepted. \item second order summary functions (\texttt{Kest}, \texttt{Lest}, \texttt{Kinhom}, \texttt{pcf.ppp}, \texttt{Kdot}, \texttt{Kcross}, \texttt{Ldot} etc etc) These functions now accept \texttt{correction="translation"} as an alternative to \texttt{correction = "translate"}, for consistency. \item \code{scan.test}: Now handles multiple values of circle radius 'r'. \item \texttt{setcov}: Can now compute the `cross-covariance' between two regions \item \texttt{shift}: Argument \texttt{vec} can be in various formats. \item \texttt{simulate.ppm}: New argument \texttt{singlerun} determines whether the simulated patterns are generated using independent runs of the Metropolis-Hastings algorithm or are obtained by performing one long run of the algorithm and saving every k-th iteration. \item \texttt{simulate.ppm}, \texttt{simulate.kppm}: The total computation time is also returned. \item \texttt{simulate.kppm}: Now catches errors (such as 'insufficient memory'). \item \texttt{slrm}: Confidence intervals for the fitted trend parameters can now be obtained using \texttt{confint} \item \texttt{smooth.fv}: Further options added. \item \texttt{smooth.ppp}: Accelerated, when there are several columns of marks. Bandwidth \texttt{sigma} is now selected by least-squares cross-validation. \item \texttt{smooth.ppp}: Now handles bandwidths equal to zero (by invoking \texttt{nnmark}) \item \texttt{smooth.ppp}, \texttt{smooth.fv}, \texttt{smooth.msr}: These functions are now 'Deprecated' in favour of the methods \texttt{Smooth.ppp}, \texttt{Smooth.fv}, \texttt{Smooth.msr} respectively. \item \texttt{Smooth.ppp}: \code{sigma} is now a formal argument of \code{Smooth.ppp} \item \texttt{Softcore}: Improved numerical stability. New argument \texttt{sigma0} for manual control over rescaling. \item \texttt{spatstat.options}: \begin{itemize} \item New option \texttt{nvoxel}. \item New option \texttt{print.ppm.SE} controls whether standard errors and confidence intervals are printed for all Gibbs models, for Poisson models only, or are never printed. \item New option \texttt{project.fast} allows a faster shortcut for \texttt{project.ppm}. \item New options \texttt{rmh.p}, \texttt{rmh.q}, \texttt{rmh.nrep} determine the default values of the parameters \texttt{p}, \texttt{q} and \texttt{nrep} of the Metropolis-Hastings algorithm. See \texttt{rmhcontrol}. \item New parameter \texttt{n.bandwidth} \item New parameter \texttt{monochrome} switches all plots from colour to greyscale. \end{itemize} \item \texttt{square} Now accepts vectors of length 2. \item \texttt{str} This generic function (for inspecting the internal structure of an object) now produces sensible output for objects of class \texttt{hyperframe}, \texttt{ppx}, \texttt{lpp}. \item \texttt{stratrand}, \texttt{overlap.owin}, \texttt{update.slrm}, \texttt{edge.Trans}, \texttt{edge.Ripley}: These already-existing functions are now documented. \item \texttt{summary.ppm}: Now reports whether the spatial coordinates have been rounded. Improved behaviour when the model covariates are a data frame. \item \texttt{superimposePSP}: This function is now deprecated in favour of \texttt{superimpose} \item \texttt{superimpose}: Now handles data frames of marks. \item \texttt{union.owin}: It is now guaranteed that if \texttt{A} is a subset of \texttt{B}, then \texttt{union.owin(A,B)=B}. Now handles a single argument: \texttt{union.owin(A)} returns \texttt{A}. \item \code{varblock}: Ugly legends have been repaired. \item \texttt{vcov.ppm}: This function now handles all Gibbs point process models. New argument \texttt{matrix.action} controls what happens when the matrix is ill-conditioned. \item \texttt{vcov.slrm}: Can now calculate correlation matrix or Fisher information matrix as well as variance-covariance matrix. \item \texttt{with.fv}: Argument \texttt{drop} replaced by new argument \texttt{fun} (with different interpretation). New argument \texttt{enclos} allows evaluation in other environments. \item \verb![.fv! Now handles the argument 'drop'. Improved behaviour when plotted. \item \verb![.im! and \verb![<-.im! New argument 'j' allows any type of matrix indexing to be used. \item \verb![.im! Default behaviour changed in the case of a rectangular subset. New argument 'rescue' can be set to TRUE to reinstate previous behaviour. \item \verb![.lpp! Subset index may now be a window (class 'owin') \item \verb![.msr! Now handles character-valued indices. \item \verb![.psp! Now handles binary mask windows. \end{itemize} \section{Serious Bugs Fixed} <>= nbugs <- nrow(news(grepl("^BUG", Category), package="spatstat")) nbugssince <- nrow(news(Version > "1.21-2" & grepl("^BUG", Category), package="spatstat")) @ Hundreds of bugs have been detected and fixed in \spst\ since the version covered by the workshop notes \cite{badd10wshop}. Bugs that may have affected the user are listed in the package \texttt{NEWS} file. To read all these bug reports, type <>= news(grepl("^BUG", Category), package="spatstat") @ which currently produces a list of \Sexpr{nbugs} bugs, of which \Sexpr{nbugssince} were detected after publication of the workshop notes. Following is a list of the {\bf most serious bugs} only, in order of potential impact. \newcommand\bugger[4]{% \\ {} % {\small (Bug introduced in \texttt{spatstat {#1}}, {#2}; % fixed in \texttt{spatstat {#3}}, {#4})}% } \begin{itemize} \item \texttt{nncross.ppp}: Results were completely incorrect if $k > 1$. \bugger{1.31-2}{april 2013}{1.35-0}{december 2013} \item \texttt{nncross.pp3}: Results were completely incorrect in some cases. \bugger{1.32-0}{august 2013}{1.34-0}{october 2013} \item \texttt{rmh}: \begin{itemize} \item Simulation was completely incorrect in the case of a multitype point process with an interaction that does not depend on the marks, such as \verb!ppm(betacells, ~marks, Strauss(60))! due to a coding error in the \texttt{C} interface. \bugger{1.22-3}{march 2010}{1.22-3}{june 2011} \item Simulation of the Area-Interaction model was completely incorrect. \bugger{1.23-6}{october 2011}{1.31-0}{january 2013} \item Simulation of the Geyer saturation process was completely incorrect. \bugger{1.31-0}{january 2013}{1.31-1}{march 2013} \item Simulation of the Strauss-Hard Core process was partially incorrect, giving point patterns with a slightly lower intensity. \bugger{1.31-0}{january 2013}{1.37-0}{may 2014} \item Simulation of the Geyer saturation process was incorrectly initialised, so that the results of a short run (i.e. small value of \texttt{nrep}) were incorrect, while long runs were correct. \bugger{1.17-0}{october 2009}{1.31-1}{march 2013} \end{itemize} \item \texttt{nncross}, \texttt{distfun}, \texttt{AreaInter}: Results of \texttt{nncross} were possibly incorrect when \code{X} and \code{Y} did not have the same window. This bug affected values of \texttt{distfun} and may also have affected ppm objects with interaction \texttt{AreaInter}. \bugger{1.9-4}{june 2006}{1.25-2}{january 2012} \item \texttt{envelope.ppm}: If the model was an inhomogeneous Poisson process, the resulting envelope object was incorrect (the simulations were correct, but the envelopes were calculated assuming the model was CSR). \bugger{1.23-5}{september 2011}{1.23-6}{october 2011} \item \texttt{leverage.ppm}, \texttt{influence.ppm}, \texttt{dfbetas.ppm}: Results were incorrect for non-Poisson processes. \bugger{1.25-0}{december 2011}{1.34-0}{october 2013} \item \texttt{rVarGamma}: Simulations were incorrect; they were generated using the wrong value of the parameter \texttt{nu.ker}. \bugger{1.25-0}{december 2011}{1.35-0}{december 2013} \item \texttt{rCauchy}: Simulations were incorrect; they were generated using the wrong value of the parameter \texttt{omega}. \bugger{1.25-0}{december 2011}{1.25-2}{january 2012} \item \texttt{kppm}, \texttt{matclust.estpcf}, \texttt{pcfmodel}: The pair correlation function of the M\'atern Cluster Process was evaluated incorrectly at distances close to 0. This could have affected the fitted parameters in \texttt{matclust.estpcf()} or \texttt{kppm(clusters="MatClust")}. \bugger{1.20-2}{august 2010}{1.33-0}{september 2013} \item \texttt{ppm}: Results were incorrect for the Geyer saturation model with a non-integer value of the saturation parameter \texttt{sat}. \bugger{1.20-0}{july 2010}{1.31-2}{april 2013} \item \texttt{lppm}: For multitype patterns, the fitted model was completely incorrect due to an error in constructing the quadrature scheme. \bugger{1.23-0}{july 2011}{1.30-0}{december 2012} \item \texttt{Geyer}: For point process models with the \texttt{Geyer} interaction, \texttt{vcov.ppm} and \texttt{suffstat} sometimes gave incorrect answers. \bugger{1.27-0}{may 2012}{1.30-0}{december 2012} \item \texttt{vcov.ppm}, \texttt{suffstat}: These functions sometimes gave incorrect values for marked point process models. \bugger{1.27-0}{may 2012}{1.29-0}{october 2012} \item \texttt{linearK}, \texttt{linearKinhom}: If any data points were located exactly at a vertex of the linear network, the weights for Ang's correction were incorrect, due to numerical error. This sometimes produced infinite or NA values of the linear $K$ function. \bugger{1.23-0}{july 2011}{1.27-0}{may 2012} \item \texttt{Kinhom}: the results were not renormalised (even if \texttt{renormalise=TRUE}) in some cases. \bugger{1.21-0}{december 2010}{1.37-0}{may 2014} \item \texttt{predict.ppm} Calculation of the conditional intensity omitted the edge correction if \texttt{correction='translate'} or \texttt{correction='periodic'}. \bugger{1.17-0}{october 2009}{1.31-3}{may 2013} \item \texttt{scan.test} Results were sometimes incorrect due to numerical instability (a 'Gibbs phenomenon'). \bugger{1.24-1}{october 2011}{1.26-1}{april 2012} \item \texttt{selfcrossing.psp}: $y$ coordinate values were incorrect. \bugger{1.23-2}{august 2011}{1.25-3}{february 2012} \item \texttt{predict.slrm}: Results of \texttt{predict(object, newdata)} were incorrect if the spatial domain of \texttt{newdata} was larger than the original domain. \bugger{1.21-0}{november 2010}{1.25-3}{february 2012} \item \texttt{Lest}: The variance approximations (Lotwick-Silverman and Ripley) obtained with \texttt{var.approx=TRUE} were incorrect for \texttt{Lest} (although they were correct for \texttt{Kest}) due to a coding error. \bugger{1.24-1}{october 2011}{1.24-2}{november 2011} \item \texttt{bw.diggle}: Bandwidth was too large by a factor of 2. \bugger{1.23-4}{september 2011}{1.23-5}{september 2011} \item pair correlation functions (\texttt{pcf.ppp}, \texttt{pcfdot}, \texttt{pcfcross} etc:) The result had a negative bias at the maximum $r$ value, because contributions to the pcf estimate from interpoint distances greater than \texttt{max(r)} were mistakenly omitted. {\small (Bugs fixed in \texttt{spatstat 1.35-0}, december 2013)} \item \texttt{Kest}, \texttt{Lest}: Gave incorrect values in very large datasets, due to numerical overflow. `Very large' typically means about 1 million points in a random pattern, or 100,000 points in a tightly clustered pattern. [Overflow cannot occur unless there are at least 46,341 points.] \item \texttt{bw.relrisk}: Implementation of \texttt{method="weightedleastsquares"} was incorrect and was equivalent to \texttt{method="leastsquares"}. \bugger{1.21-0}{november 2010}{1.23-4}{september 2011} \item \texttt{bdist.tiles} Values were incorrect in some cases due to numerical error. {\small (Bug fixed in \texttt{spatstat 1.29-0}, october 2012)} \item polygon geometry The point-in-polygon test gave the wrong answer in some boundary cases. {\small (Bug fixed in \texttt{spatstat 1.23-2}, august 2011)} \end{itemize} \begin{thebibliography}{1} \bibitem{badd10wshop} A.~Baddeley. \newblock Analysing spatial point patterns in {{R}}. \newblock Technical report, CSIRO, 2010. \newblock Version 4. Available at {\texttt{www.csiro.au/resources/pf16h.html}}. \end{thebibliography} \end{document} spatstat/inst/doc/replicated.R0000644000176000001440000003773012333041747016144 0ustar ripleyusers### R code from vignette source 'replicated.Rnw' ################################################### ### code chunk number 1: replicated.Rnw:29-30 ################################################### options(SweaveHooks=list(fig=function() par(mar=c(1,1,1,1)))) ################################################### ### code chunk number 2: replicated.Rnw:35-42 ################################################### library(spatstat) spatstat.options(image.colfun=function(n) { grey(seq(0,1,length=n)) }) sdate <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Date") sversion <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Version") options(useFancyQuotes=FALSE) ################################################### ### code chunk number 3: replicated.Rnw:189-190 ################################################### waterstriders ################################################### ### code chunk number 4: replicated.Rnw:208-209 ################################################### getOption("SweaveHooks")[["fig"]]() plot(waterstriders, main="") ################################################### ### code chunk number 5: replicated.Rnw:216-217 ################################################### summary(waterstriders) ################################################### ### code chunk number 6: replicated.Rnw:225-226 ################################################### X <- listof(rpoispp(100), rpoispp(100), rpoispp(100)) ################################################### ### code chunk number 7: replicated.Rnw:231-233 ################################################### getOption("SweaveHooks")[["fig"]]() plot(X) X ################################################### ### code chunk number 8: replicated.Rnw:262-263 (eval = FALSE) ################################################### ## hyperframe(...) ################################################### ### code chunk number 9: replicated.Rnw:288-290 ################################################### H <- hyperframe(X=1:3, Y=list(sin,cos,tan)) H ################################################### ### code chunk number 10: replicated.Rnw:298-303 ################################################### G <- hyperframe(X=1:3, Y=letters[1:3], Z=factor(letters[1:3]), W=list(rpoispp(100),rpoispp(100), rpoispp(100)), U=42, V=rpoispp(100), stringsAsFactors=FALSE) G ################################################### ### code chunk number 11: replicated.Rnw:332-333 ################################################### simba ################################################### ### code chunk number 12: replicated.Rnw:346-347 ################################################### pyramidal ################################################### ### code chunk number 13: replicated.Rnw:353-354 ################################################### ws <- hyperframe(Striders=waterstriders) ################################################### ### code chunk number 14: replicated.Rnw:361-363 ################################################### H$X H$Y ################################################### ### code chunk number 15: replicated.Rnw:373-375 ################################################### H$U <- letters[1:3] H ################################################### ### code chunk number 16: replicated.Rnw:380-384 ################################################### G <- hyperframe() G$X <- waterstriders G$Y <- 1:3 G ################################################### ### code chunk number 17: replicated.Rnw:392-396 ################################################### H[,1] H[2,] H[2:3, ] H[1,1] ################################################### ### code chunk number 18: replicated.Rnw:402-405 ################################################### H[,1,drop=TRUE] H[1,1,drop=TRUE] H[1,2,drop=TRUE] ################################################### ### code chunk number 19: replicated.Rnw:418-419 (eval = FALSE) ################################################### ## plot.listof(x, ..., main, arrange = TRUE, nrows = NULL, ncols = NULL) ################################################### ### code chunk number 20: replicated.Rnw:434-435 ################################################### getOption("SweaveHooks")[["fig"]]() plot(waterstriders, pch=16, nrows=1) ################################################### ### code chunk number 21: replicated.Rnw:450-451 ################################################### getOption("SweaveHooks")[["fig"]]() plot(simba) ################################################### ### code chunk number 22: replicated.Rnw:463-465 ################################################### getOption("SweaveHooks")[["fig"]]() H <- hyperframe(X=1:3, Y=list(sin,cos,tan)) plot(H$Y) ################################################### ### code chunk number 23: replicated.Rnw:477-478 (eval = FALSE) ################################################### ## plot(h, e) ################################################### ### code chunk number 24: replicated.Rnw:487-488 ################################################### getOption("SweaveHooks")[["fig"]]() plot(demohyper, quote({ plot(Image, main=""); plot(Points, add=TRUE) })) ################################################### ### code chunk number 25: replicated.Rnw:500-502 ################################################### getOption("SweaveHooks")[["fig"]]() H <- hyperframe(Bugs=waterstriders) plot(H, quote(plot(Kest(Bugs))), marsize=1) ################################################### ### code chunk number 26: replicated.Rnw:515-517 ################################################### df <- data.frame(A=1:10, B=10:1) with(df, A-B) ################################################### ### code chunk number 27: replicated.Rnw:530-531 (eval = FALSE) ################################################### ## with(h,e) ################################################### ### code chunk number 28: replicated.Rnw:541-544 ################################################### H <- hyperframe(Bugs=waterstriders) with(H, npoints(Bugs)) with(H, distmap(Bugs)) ################################################### ### code chunk number 29: replicated.Rnw:567-568 ################################################### with(simba, npoints(Points)) ################################################### ### code chunk number 30: replicated.Rnw:575-577 ################################################### H <- hyperframe(Bugs=waterstriders) K <- with(H, Kest(Bugs)) ################################################### ### code chunk number 31: replicated.Rnw:585-586 ################################################### getOption("SweaveHooks")[["fig"]]() plot(K) ################################################### ### code chunk number 32: replicated.Rnw:591-593 ################################################### H <- hyperframe(Bugs=waterstriders) with(H, nndist(Bugs)) ################################################### ### code chunk number 33: replicated.Rnw:599-600 ################################################### with(H, min(nndist(Bugs))) ################################################### ### code chunk number 34: replicated.Rnw:612-613 ################################################### simba$Dist <- with(simba, distmap(Points)) ################################################### ### code chunk number 35: replicated.Rnw:626-630 ################################################### getOption("SweaveHooks")[["fig"]]() lambda <- rexp(6, rate=1/50) H <- hyperframe(lambda=lambda) H$Points <- with(H, rpoispp(lambda)) plot(H, quote(plot(Points, main=paste("lambda=", signif(lambda, 4))))) ################################################### ### code chunk number 36: replicated.Rnw:636-637 ################################################### H$X <- with(H, rpoispp(50)) ################################################### ### code chunk number 37: replicated.Rnw:666-667 ################################################### getOption("SweaveHooks")[["fig"]]() plot(simba, quote(plot(density(Points), main="")), nrows=2) ################################################### ### code chunk number 38: replicated.Rnw:686-688 ################################################### getOption("SweaveHooks")[["fig"]]() rhos <- with(demohyper, rhohat(Points, Image)) plot(rhos) ################################################### ### code chunk number 39: replicated.Rnw:705-706 (eval = FALSE) ################################################### ## mppm(formula, data, interaction, ...) ################################################### ### code chunk number 40: replicated.Rnw:716-717 (eval = FALSE) ################################################### ## mppm(Points ~ group, simba, Poisson()) ################################################### ### code chunk number 41: replicated.Rnw:750-751 ################################################### mppm(Points ~ 1, simba) ################################################### ### code chunk number 42: replicated.Rnw:758-759 ################################################### mppm(Points ~ group, simba) ################################################### ### code chunk number 43: replicated.Rnw:765-766 ################################################### mppm(Points ~ id, simba) ################################################### ### code chunk number 44: replicated.Rnw:776-777 ################################################### mppm(Points ~ Image, data=demohyper) ################################################### ### code chunk number 45: replicated.Rnw:795-796 (eval = FALSE) ################################################### ## mppm(Points ~ offset(log(Image)), data=demohyper) ################################################### ### code chunk number 46: replicated.Rnw:808-809 (eval = FALSE) ################################################### ## mppm(Points ~ log(Image), data=demop) ################################################### ### code chunk number 47: replicated.Rnw:826-827 (eval = FALSE) ################################################### ## mppm(formula, data, interaction, ..., iformula=NULL) ################################################### ### code chunk number 48: replicated.Rnw:877-878 ################################################### radii <- with(simba, mean(nndist(Points))) ################################################### ### code chunk number 49: replicated.Rnw:885-887 ################################################### Rad <- hyperframe(R=radii) Str <- with(Rad, Strauss(R)) ################################################### ### code chunk number 50: replicated.Rnw:892-894 ################################################### Int <- hyperframe(str=Str) mppm(Points ~ 1, simba, interaction=Int) ################################################### ### code chunk number 51: replicated.Rnw:921-924 ################################################### h <- hyperframe(Y=waterstriders) g <- hyperframe(po=Poisson(), str4 = Strauss(4), str7= Strauss(7)) mppm(Y ~ 1, data=h, interaction=g, iformula=~str4) ################################################### ### code chunk number 52: replicated.Rnw:935-936 ################################################### fit <- mppm(Points ~ 1, simba, Strauss(0.07), iformula = ~Interaction*group) ################################################### ### code chunk number 53: replicated.Rnw:954-955 ################################################### fit ################################################### ### code chunk number 54: replicated.Rnw:958-960 ################################################### co <- coef(fit) si <- function(x) { signif(x, 4) } ################################################### ### code chunk number 55: replicated.Rnw:971-972 ################################################### coef(fit) ################################################### ### code chunk number 56: replicated.Rnw:1029-1030 (eval = FALSE) ################################################### ## interaction=hyperframe(po=Poisson(), str=Strauss(0.07)) ################################################### ### code chunk number 57: replicated.Rnw:1035-1036 (eval = FALSE) ################################################### ## iformula=~ifelse(group=="control", po, str) ################################################### ### code chunk number 58: replicated.Rnw:1046-1047 (eval = FALSE) ################################################### ## iformula=~I((group=="control")*po) + I((group=="treatment") * str) ################################################### ### code chunk number 59: replicated.Rnw:1057-1062 ################################################### g <- hyperframe(po=Poisson(), str=Strauss(0.07)) fit2 <- mppm(Points ~ 1, simba, g, iformula=~I((group=="control")*po) + I((group=="treatment") * str)) fit2 ################################################### ### code chunk number 60: replicated.Rnw:1085-1088 ################################################### H <- hyperframe(W=waterstriders) fit <- mppm(W ~ 1, H) subfits(fit) ################################################### ### code chunk number 61: replicated.Rnw:1109-1110 (eval = FALSE) ################################################### ## subfits <- subfits.new ################################################### ### code chunk number 62: replicated.Rnw:1122-1124 ################################################### H <- hyperframe(W=waterstriders) with(H, ppm(W)) ################################################### ### code chunk number 63: replicated.Rnw:1147-1149 ################################################### fit <- mppm(P ~ x, hyperframe(P=waterstriders)) res <- residuals(fit) ################################################### ### code chunk number 64: replicated.Rnw:1159-1160 ################################################### getOption("SweaveHooks")[["fig"]]() plot(res) ################################################### ### code chunk number 65: replicated.Rnw:1165-1167 ################################################### getOption("SweaveHooks")[["fig"]]() smor <- with(hyperframe(res=res), Smooth(res, sigma=4)) plot(smor) ################################################### ### code chunk number 66: replicated.Rnw:1179-1182 ################################################### fit <- mppm(P ~ x, hyperframe(P=waterstriders)) res <- residuals(fit) totres <- sapply(res, integral.msr) ################################################### ### code chunk number 67: replicated.Rnw:1188-1195 ################################################### getOption("SweaveHooks")[["fig"]]() fit <- mppm(Points~Image, data=demohyper) resids <- residuals(fit, type="Pearson") totres <- sapply(resids, integral.msr) areas <- with(demohyper, area.owin(as.owin(Points))) df <- as.data.frame(demohyper[, "Group"]) df$resids <- totres/areas plot(resids~Group, df) ################################################### ### code chunk number 68: replicated.Rnw:1216-1219 ################################################### getOption("SweaveHooks")[["fig"]]() fit <- mppm(P ~ 1, hyperframe(P=waterstriders)) sub <- hyperframe(Model=subfits(fit)) plot(sub, quote(diagnose.ppm(Model))) ################################################### ### code chunk number 69: replicated.Rnw:1232-1240 ################################################### H <- hyperframe(P = waterstriders) fitall <- mppm(P ~ 1, H) together <- subfits(fitall) separate <- with(H, ppm(P)) Fits <- hyperframe(Together=together, Separate=separate) dr <- with(Fits, unlist(coef(Separate)) - unlist(coef(Together))) dr exp(dr) ################################################### ### code chunk number 70: replicated.Rnw:1257-1266 ################################################### H <- hyperframe(X=waterstriders) # Poisson with constant intensity for all patterns fit1 <- mppm(X~1, H) quadrat.test(fit1, nx=2) # uniform Poisson with different intensity for each pattern fit2 <- mppm(X ~ id, H) quadrat.test(fit2, nx=2) ################################################### ### code chunk number 71: replicated.Rnw:1295-1296 (eval = FALSE) ################################################### ## kstest.mppm(model, covariate) spatstat/inst/doc/replicated.pdf0000644000176000001440000140163312333041756016512 0ustar ripleyusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 3624 /Filter /FlateDecode /N 89 /First 744 >> stream x[Ys۶~oN$t2q6;vm'N-6[Yr$9MwP"ٴ0bif%3L ,"c90DRe˘T &m$FE2"aPaJ1Ʉmh32LfjIdN:ɔB]3 -bQ)`f,ʄ9tRZpas&/l&Ehta #qTdaz&H!bcceL,㻎"r$*4NDKb{U&^}2\y1Ϡtð̟MtATL|ctPŷ9\ ȤKM'bpgI gLLb[6jՔ|V73a9`?en9͟_SwN 8j㛳_.ar8$vstGّڔgh4+P"ـN/8_*ʋ[?9!//_)9#Gз(5DxV1t9t:+Kx_z 5S/ Xf8,O\ϋ^j7f 6;9#;9[(5EVV-ز_jU_Umց80HsH9?߯/ ']r2;͊(_t.ܥ;܅NZVlqisWl N^]^;{d3v_V[X%Դf( ,\;mlU/)=.2Ҳ&ךzwD*=DZ=9Dg64iO/b>B,Y#je(: a6f!ɼ9ǵFm'^(LJ  ce d2c 2CH-:XЗq *~LpÍ(&-TT5iTE,o?~ď Fw0Mƞ=sWrkn,_$c\Btbg巅97?7tteIL[,,ػ0u&#?/>ꅵ!>oq$}M7`SzR}gź7cC_ZJQqnB,K"AM62YaO#bS! s= eBG(*>JX_$Cax,vMzWm"'fI)xTmx؂KvD6EѮŗ^xq"ͳi>@y>S/&WWde1-fl!0]b/7hXVHtOf#!@k(ף¿3Q̋^ lAs\akK^IȾJ<2"3:-uISj+jg> .iU,ݐwL XzDֆoަϺ+VkuhZԂEߥ)PBAAYѰ@hǽd4ʧKQ)¨V[t—s Vc϶-yV'-iNܒSS% wO'ocRҬ~u>[x}.T*?'j)=1H"j-dDˎ2B65\n -Sݟ-ei2ڸ:vVEO$a)puQ/O,NE.ȩ{Wg^9ϴ_ %Z#%Lok'b~fudU&9څdS7fOO< )U>%˶L6}U1ZAd4Uus,jv<JqtK#ح[ αvOIR\C,lNPA{L_g~.e֬9-6fa>xd;tu6]>pgvVp۹xβ-nN&_ַ%DRX"BEt3JlJ\jJΟ/(?^ ,e|:=!wvmI gZ*k||T _L9k!4ͤX!Zv2D-*Ly,{&_MFu/>+ٍ^͏z%Ny~^y[ ^wh)ja hv~П\ٶ03Pzo|)~H; kwvK|,slyGז,~|ﭾ6(H]zQln^rsJ-!?0[pwFo>=5%91qvTKendstream endobj 91 0 obj << /Subtype /XML /Type /Metadata /Length 1337 >> stream 2014-05-09T10:56:42+08:00 2014-05-09T10:56:42+08:00 David M. Jones CMR17 endstream endobj 92 0 obj << /Type /ObjStm /Length 1920 /Filter /FlateDecode /N 89 /First 778 >> stream xZnF}Wc  4FEaJ4{f%Ҥhʔ8,kZΜRQ )&hNy\ .Fa %K^)|j?;Nd7^ 6 L`%JNO`D1WA3i檢 x 4ؓ啅f%i & dց 'Is<WN2ASXT( Ii 5B005ʰF&0Dɀ2P'F $aQn)xIXg0FF Nڑf"` #^J 0KY譬y& spAf  *䢓l"e"JxrL(<1,Mey&%:d ,A 9EAJͦ$0s"_"Äy/Bd'K(did*?vlR'N҈02HN?$[:>{[cW1x3a(elyq,8iL&[ 9 No>I<Rcv2[zBSe>^AQGREĪMO-v¢.Ȣ{yhݫow?> Kd>pgR蚖>:R9(KY݋]mw>bpIe(L*p6sw]F*rEi$ ݌j BbŰfj=0:0`[EIGѶERzO`.("꙯RԲ ZS͐S-M*)tغmWka_oW9t<:'Zݪ 8ըSFkЇtl7.ӵ-"ݓmûDxtA^z#s#Ղ% ch$Bcu5.e"fX$@$7+0 `POU p)0ږ88x%YB6@{:Ԋ|X|| Vo{`t^> =55V;=!+Q>*Rwۧ4Usn{{9Y[1Mon(KE.\2ӮƓyKp=ΣkvQCG㳥RV 1=XC+~S ]D6;k}VVuڪǕŦsaj:j9-< _:`dyt9 r!;#|Wp-l =Xs_aնk)[ə܉Tb-)A|+:W;pLtn؋Aþ4cN%F5r+ο+ب}/i̚*jպOXŹuJV&RG:VfhzA_q|8˙ϟ3rOćb . }Fjxe8/Sz*l )Q馺\7m~n:ͼendstream endobj 182 0 obj << /Filter /FlateDecode /Length 3060 >> stream x[Ms#av7I9'aU(R"h̠gKJdSr@~neFZin~wGTjnV`@^Q-:8"*z7:9ڌp{lFS3xkJ)oy1d-J`!dB v<^;ÃGRl2ixpXOx]WB1?h=_3sH6q8% $mqبWud;"p;E_hb-ww\В>∷"csW<8c)9 )Xasi['sOśʰ(be{vV>lWDc k4:J+M|vOT`p_aHƸTuçŀs=* JjeA<2 Z3&PcjmC/aw5YOc[JdKTۯ'Hny>O8MtXoUu^_  Kоs2TsR6%v=5We, c0mCPs Mfo '+@ͫvBYs>m1m騗ljMy}}a b>XdCŨa0dP1>7Pd6m 1 xG<*C..ZgS ;X#*`2m4PQ+ nrM-Yn<;.z{z:wz xiZ{5\CzvfB}&ѵ&J9,ϕ2z\pWټױ7UR wBz]^H%UDtVHo]Brg NFf|BQ\*lK!L(5LX\I|t)'A/<:zē(hϻ]5zJ%Ȃ5S5Z5q%JL29=Z<\ʲ@zD&`-`b1ˆ4*-k8mRnvwQ=E{<Z-"j5 4k\lnaJymz;R^0NJDdgt6n8Ë(, EϥH5VG3%0X(fB /~.P]^ui*OJ` 7h66j-] nЯ"8%\Y'9zS 8d:6dxؠ Pru\ WhrR! suƒSl1QDD!\ӂ$/<㨔9,XrpLmm4@op@ywow si 81xIBbCaxB/JpeʆZi,' fɍǙA\Q?nE/lojzLUO_c50V`a໇V.ATGoUts{[Fn ~ĺ4JdoAe;ov'rpu'.gN(1% O @yN:jݓ]|т|6 Eo;aށJGLͅlLyc$$ôBקP8,7*->J86~g =,b#n)M}Xn}.(ݸqɠi-\a"mB\ikcXO׽' ЁKz0{cr-qHpa~;孩oou3N7^lK9I,4(*E?i/EF|P w}?T[1֏*@4t@TM=|ݎAT6:G&CTZJZ-A 6ߡ NUUɇK)7ko5Ϥcs=ǒkgd2հ܃mq,97CBRJG ArGX= Hnߞ~} C;@B 3 ͝A:ɻMqSCN^@t-?6%_®?!rS6t !x v)ɤۓ$xڀ˞P%d/:9P5?>R Wcy;#6}m4{n6*b.;BR}3]^^KLo3FO7)Kk۠(6Gb'pK Þ[sٞ6Z!%G_b1nQhsaRO-5$,S BcKWhmi,ܱhi@ s̛z/NOBw8SY7~|fH?h@Κ0Z^1v~2xO!endstream endobj 183 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1846 >> stream x}U{PT7J8z鈴E>ƒQ |,ˆEX*v]XuV0+(XL4Lhx.=̴W;M?ߜ3s|}CQI􌤵OV?&Q1+*r",-;RE $^\~ڕK6)"T.)JNؔH2U"(ߨV ReYJ[|D_SH2erm@*IKrR]k% yJUjmNj J'b'$lb3xH%$"҉a"Qu_$$$)⦷Bus:j6 +f^hȖU+P~0t@ C},0Ujp#hB&'7Ty``5TBƞ]#iƏ2(m8a^#FPADįF/eϩPSMGr[-N׈g۬Cʢn4nby "SA &1 YHD޹c[7M|:  k;`+@}zjA D? Zu#@b`ͽ;9(SqRx)(4@+l81%b1oKXX3 >:=-qD]WQ5s<By9+~ps RY3B=0gKR\f:Oe~w8Z*f=Rcpdv%=9}l Z[PHK˲W)zZip92:u7uI$"0>nj攽 1VD['>v/+vNK&k{, ~~Z3Hnۗ*~a Pшx`̤R_'rþ'7}%3 'CyޘvwK!q>>? DZ.ibT09|<21{!Ⱥre#@&vٔF؜NfMzn֞3'Z"س'\ 8 Ϳ?BwKVÔu%ICos 5vJPxh!F-`Ɇ2{hA P>{<--hh[w~.F}fjlq^Ή6bycc#-Ŀendstream endobj 184 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1367 >> stream xMmLSWP E71nH yYN', ,Xr) /C+[ DYh3ӹ,NQ㌜kv Nt&9y! o/$IEjjds1y|"7A6ж$uE{tVc3Cdqq1a8٪|Tje !G4C]Ze(ɗ eKpe~a*$LfTrdU*XKV5R*]ԒTLۥbAHtB2KyxDd4Al$6b5H$ b>!!@"G okbL ^^fDLN99iޏV Zá?8s#[oGy4 x LDq z:1) bpwǟ^qct]x">A*`CQÑOݨ-B阥zʥH#vOiGzd}b}zU{.hd։ @6ہ5_F_qVG&&z8̼ɡvN3` Ū3YWǽ+ R'+o3mu,P0fjgΪZ^Fit8M;oH/0cg(tڤS8wm$ uh|?FKĝp,W&no?Aqօ/mХɅbfUV25GIh' n*?e]\fv|p Şԁ7S&gC" OW<4@9SFˡriU Pa)u@mib{0CcǑ(ǣ noruV~3"6M׋?G$RȏF,k3vwl Njx œi=9z(iQ3|^$ѓq j,1_KCy}Yh`6?Loq uۘ(1H)vk (21پ%`p@7y{;wM\ ~C|HеڥwhsY67QvS.(E O p2Ny#LlG(\q`dT<ͽq%=Қ=5if}e례*m9sry*w:q[^=tft~uvu,f,mh<͔}bcEH>?=<{SƻWi4U]m`fN ^jl8{^iV}`rJk#'4V1.if0Kt~8???A(+endstream endobj 185 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1728 >> stream xuTkTa`gHflRsj4$5ZRoQXqewvY*{dY,n厰,]bS/xGOC=hlc1M|L9swμ><I$I*2=zNzb¤QsB 2h ] YGyK $Œ$Ψ//0(W)7lHX\40W%*TA2r6P0^/0t][^^F)Yo[,/4(3A_&S&kE2]í'i5RWi z MbV\R2 cmb%b ;8VD#,w+ԯмzN{7_|pzR vK^1VTDIAK13(w~X+ GcBxW,L S!5>: RKg+p:fng5{I-S<ٶ`_֦ _MGI&WZ!f,%e"q_cG~he.YlduSaɮq=Ҋ3TDIKooP5db~lFRwt[t |9/k+jD)>YAhtm -雖aD[QܠQ,08>Gn~>#m֢ދJ 梟rQboıW̓f@ ݔ^c]0[*Jq~]`UP0V=tlUG}L~cJ:l: jۢq8 v68V zAsZ׮F+&{m;4<w邇{H_Dp5f|-tF$\Xk$FG x\RtLIq3v`lY@ ,vDc tb[1 غ % %硹C¢cZgٯ Y+\C1Wa_fN;>uy@^GPVZ* YL-Ht?'. y>?ߋCa'ݝ|2b[#)^':GVTZRW L1&ZAO%dh/Ol7ًtn4t%JZ*Y_m/8/ -@D"k'ڠFmݴ6.| Nk+dPlp&')J؁^mqiNW7r2+-52<)gaqB_RY' z<*둒#mkshܢO<-3]K߾Uendstream endobj 186 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5491 >> stream xX XײqdUDel5=h\Q(nȾ#" ;"*+2kbKhRMwI^r}{_}ԩeLNL&cg/wcgh-I:IɁ֥&`*ε4Œ'#gFxyZ 4jɓFYl53g"PoO?PV|*'338jnb7?OӍ Z0Y8 QxHwǨMK6/Z|VILbj;nq'L40%`f)3Y e Y gV1#Ռ3cόb0[f-3q`2v+30d[d:tA.ȣ:OH*bufreT.Ozu͡[imך^O}χ:nnm^ ݩEI~ʯgY,n%֢@Vz@.v@4@rBbѵ}W0pEj,I9n:Xd5a.5GS&XHMFхϡT/o$_„D*Zͩg 樠+*,Mēs]؃jɢa˕Å3RKrWڌ\$( Ò &.r&xZ/PM' ZiDXPJX!uq.`_O]?}ݢ*TD"L X0.]'i"Li+hL*$ٙMu?co } Ŀ_˫?Qܵ9zv8Atֹqg=p8'BKoȐF/ZX` ͟MWIg~1Qz,hNHh#GV%ؘ,-HF O֪]5 |P5FXaݼqg֚LR-b)փp(o"c"(>6uJ.Y#8؊jˌ\a&ѭwghȘ̈GLcU;uMf`h'x*\/EWV 9ʈºS+W &ش&ԑ:EXoTǡD} (v?g~Tuj ѩ{HꔙFmWu;/ J9/͙ v]~oHt1BJ Xu53YBnMyMѪ:A};viC[ ;$\CUDFB|~ :(ړo= Uh@놈j*rߌi93i[7]Ei OV_-ᔋ3;7$`\-Cb]XaR8/ 4"[)ΐ)^3F1>clMKZ%tDZ3Mm:E+e&?E ]*eD~zJiÓed܄4Lh}S wzW+\zzfz3*X3MrSI'Rdge^Nd5` pqvyJVIW%[4cZx6ۗ]eqvinn '5FByk;-JO밒ݢKIQkSTH6Q`YQ]7pok_u-\BqT e\q׺Vبu!ڶu͌NY 'h$Ϫ ~".9J2{xc¥wᘢ Jc!VXG+З}RB2~#gg2EGhÏbG켩w=~K^ۢ%̍&c<._TlL!2X ɑYI\ y[d;hAJ?R;;ZaҲrIua|%fA5WR,_sTdQӣNVCŏ=c4ڦ x-.c77p4N<\fv& A"iU4|ݪԈ=5F#FH,.|W&UԮY?4 $}h.Rt&ll *}`tYSηȟ"v*ҡ%w*r@֚͆Us!HW#pmi_~$$EkU|hyBUY_;ZXUVW[BMC\}]B[yk~V2`ETdL6E73/_lpjҵ TS|PQ´0Ǻ`hQ&2HK.ɛ.?7Ȋk;}]L!&.!"9ȲCG '1?[~v%u"%Iv_dm[0+/҈`t2RE7YoQ0`hy7(9(G-?a:ZS\{oǩN9䄦2rșઘC{ t$M<}QeeGWqI(D΢b{{%խLzKx?I[[bw/\?peaa%0hkMm̌|Iۓ]&+iST ,XIӵ@d{bu 6ÀTJyjB*\qU41EU: 1) 﫱YMԪԞ ~q#YUOפTh{=:Qv Vy&* Jo{^i L'w?[DWvgVK FQͮϴۯpo.mX]P>PiO]x7 TZƶ}Bch"V:G7zvsvun8j8HeN4_m?{1ByKdhŦe˯!мU踰]Su3NذqYl9ɨ#-Z_jY{8e!#NĔRsAFAaovgf ͟}K|M^S孞byQʓA@{]h$Dm"*$>N]b8J|^v#%/X 9qF1FVzL!#qJ14k'f­BN|rpQÒ\sk Oב-nJKvUmRzڃ"M4m&sQxLÜ/vNʸhX`$<2,d?Y8z,S̾Vx3jך{6q['۲a̺ /4 pޮ(aȍw7 Ǔ6otՏtGyvBf@f㫣3[:n6N'=P] {'z`E|rX_a.Dޯ 7H4qCzxy;D[@/sN2hҏj3ksDΏۯ^½/ڙs :I0 /wJj׷knH}?UT7'\t?. t$-o`)d5UaZX*$6/>0)XVF&ΣT)b~M0K\Ĭ_Aـo ǰg1-.^V8Bن* 2 $;R~Oq@mmIYe+2yIfX?WEuۿa?Eman3~5&V ^3a5̲:NG]Q~WNĵOW;} ,3ozU*ˆ<{xr^aIJaslVRE>(atm32O4!SHzV -?+M#Ci˒\f`O_us?(,Cmd|RHKHf dvIKqCa.YɊ]QMyRiLSST435c yendstream endobj 187 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8213 >> stream xz tS B +2qlз'O1)$ݱ"}yExt\-rI CB^+C<ƒ)8?xAօ(bqҝˢܖGXko)h̷fΰ9}|R vL4uiߘ1M~5ZMPoSk:uj=5@6RcM8j35B-&P[Dj5NOMQSTj 5ZJMQoP˩ Mj%5ZEESj(5ʥ8>#՗MR jLKR!K@j>5zbW(j/MC%_{}{c " =2C8>֏귷mn/]5ܠ4WnznN2E'ݱj.#+f#32qdTk^k}}ch^aۙ&/ : +"eNāB=Qҕ꽚f0AAuH5XU5h Q7mĶs YcCybn@æ77-6 %R؇%+\W*GUE(er0r{og]BJ|ŃDNʜF Fk'-yoQ[^!3S @,zy3<xf?N+C}5[aVVZ(u:oRNIn7ٖ?lD*=Tk5aj@4:J&O̐K,Ki,1s?g} `Mcreag7񋚵hVI#AiNos>)8X8M<B3@CN *.t[v#Om1ܙ_qPS Z%e#ȀTn|-ǃ^gؕo2 ޡ=h*1Xgi<ʌ 9rzov;4PGMl:Ίk%0? {K瀛KEuGӱ ^PIԠ#.w?6ueD੗F֠ux(Jwd-w[H yo00z϶uk_' ૺ#gJI]~9Rb#~X~1=|1$OmѢ@! &D̂Uwq76^Mz 5aw6#ohU'KvT`. Ǔ"y`ݥ)1p Y8n*JYPK(ImNt-?n}vk z}â^4magZ Z,hIi|S ʍ uYJ*HGh D+EYAc37/=HjP{ w"|MdWY'&dA!?f5W*W1_KTMqJSQ%2vweh'~ԁKSei;i8zJQ6&ԜC=ol_`f}&90Ma_m'-{7 #DRsڂk\9$.OY5}MB6 39}0zr*bT B tͫ,{VMY2X Ckg-HeF5k{yơzp+#!YҾI5G,"<\b*e; .(s*aU^u;73TEr2sl{xߘ2*`E~Ϊ3zz5D>)+=7EfYf(K IV>.lN>&Ui,'*ezXeȐ$]X@gHžh\>=1_(h9rSfJ(ibsm'NTq2JoA,uѼ*&]!D&W|u!weS r8yut(8CFhC=rj++1աH9^uAU--3h}WU=Ti18= v#T{W`&<(b8|Q$3l-="n"%;$r2w fHP}E=n]JѿCϿ8]7cXbcg`.cMmw\;Mqͩzc(M1vjYB9M)Tɍ NUTUtUI%t*SOzhVS 9])i|~NsAz`Glp z,6i̓|끹Zum6$ %=ߘpG$~esf[ b3-6 xfwgU,v4i0'M c*£M=iZG")6Ca0SQ@Fi9xuM$!cޞ/Vx}|co9gsj9 }1a1i*UR.νm1™ӇutPIAƑAMZ}Z>,P+օ3fĭ=8jV姂ǵ;Y\{ZSÁZm_zIүgHJNiR-aɊΚms^ŗ#2cyz$q%bact!!1Qaə{DtN]Q\QWWUUGt7,="h6;((9Bh,%(iD㡜2_D2~0i Y0A]N0V\Y@]A J ˶êQXYHHUժQg>2}=8DfDժ?艸SY? R:hJMcSkfHbVjB/DJH"`8#Rb[fɬ4XJ? bK#t  2Ej`$wb>s8ۅksu5^l;T0Rr/iyZםeY\{NYz9Y"(MVV1eqXŚ 8xpC?/&yp{@2PE8,Ig*?D\J8'2ןjK[q^sPcxKL%Mo?2 SW6E\>9Eheʶ`}z+ Pg!¶,ʨ`E؝44tQaNU("!T<K5&>~{,־O,7E@eFÑPL~>c1~ yn_/ZuYSF=Rƹ݉+Hj 7|6x1C?^|wf~v.ZƢF Um5c'7N6 g9I(r#ϻDBt qkc7jvrrL%Ҹ%ܿ!Ԗ4fӟO۰-ٕswty Xԛ1Wdw8cZ0cpPRsxwQF2€yotܿP3gBet? bT70ٙb u=:wsgˌo c4, ktfhgNz\c1r2ʄJn$p'K E`皸҅ɰqc@^XyxƿP iY*C6 &#Ȑ+@Y#a <=<%Z+&ο9A n"ֶ>*@}[(kq' 8,'GǷ@Wh+;JO:\왈6*-4Z岆 )maw+#+~,u:YENf Rd  (dy)řZ3`/8< (wEY*+K;UaAEs9m޷/Fڗ}5˺ /܇ =V]3B# "}˖OXl~J (h1#zIvV&[|:HWuT3]%D$M;dxH=UQBX%5Nj. \AOd;ܳWgOĝ:hW̟Rs4LuܘRo'leω7ZuGc?Lyc*cƹqD b} h*W4T dBZˏq,NeDv!{tQ6|]g=9*PZoP0N1=@FO 9qbAevnXiʽa l#mkOc,~c7Cw#2ؖ 37:"t[WQUSzH L(ƕ: &rxFt烃pEkt.e}V(00SU&Zl_z6ԜUFwruxM"R 4m+5 PpAA iSsg1NEOendstream endobj 188 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 6465 >> stream xY\T+pXoKb,QcQ4Fl (ƂbQޖ-;HmcWX5q/&DhcIL5{?ywv99w(>H$/trv2YaHGY*r@fҼa[oZ vCfLDI "ޞ^2qޱ2{mNuso])rrOv\{.zks?7;ibϘIQoQPQ ʎzZI͡FS1jj,LPPk 5ZG-S w "jZLG-&SQS5rS3eLʉzZN͢)ʌN,Q՗GRy@j5$Pʍb7aR$ʜ~E^yO dWX`10^̾~rπ;A+l5 + =C;;-~cߺuuLo~|E#9#7lo&pn\* HtwE脻l>E @Q(X+ %+㒓Q _JtYj-G|0e)G~UA֠”L>9=E#/B4 Y`kkSh:kY7L% CFT[@GIB5?܌#FuwKQiɑg<] ]j5M?_wh.'ct-(}XE]N0GRW*Ex<cDGQ *+iġZQ!dj鯆eBk?? @\V Z8A1U8luϿMÚ@rSq8VmF%|m 2qwtؕa+dd-|AL?㤧O`ɏ';;~+o\v<7vE|z䮨4!Z.,{Zڍ,`/:`Ŏ?zpcJhD 477Fy'"?ḳ1͋:sp+FY(9|ILQ^iΈhm+P9/=ٹ#q9Barn!ޮ2En;NE(;4 {0π؆cI  f&~Jb`6֬"1=KCG+5<`9Xo6̞mxko$T n];DB-o\ G0} V% [QT^TQ=~ k^N:J:XrHa9Å`R*FLV{pֺ˜yɗ{ K>Fmv 6G+zf!Ա0~#_cGt*|L";hXBO;LNB+ːK32>*@15?8K;Atb}* ϑ|e#/yܒu;vL޴:K)KF>"xq6䖤5p-u$q6~scթxiSkb3 œ ݙ srFEIޯkPwdң#(=L[ (I3]qߌĂ2TQzIF)gZ-D0&id+!3y__-~{h_UU\ۜơ4B[K;/5c8R2 =3%"iZ5 mAڞ[ U o? 8<ϰf{0dYۺB^&Ԛǿ30R3՜#L/ވ\#/"$XBjrF6w*vGe$#l'zjEXcv$G$٨MR$H~}-*#))cΞhJALuD4(2"}ﶖgG:?땘7uA غ'q13sׁFh>C |W 1U+ 9 [0si7LFA+ խfpH`c=Hrʬ*)R fw*ľa݇i//7_19B̤ĂTrrҳLZg0/+čn &,Hfzܢ]ըQi{lrBv&WD!' +3zW{j@?'XOϙm!5u{*-iZeMfFpڊ3kHuּE\ڕk[V;qˆW 7=AȄ\;̈́l4u,*Q }U-)ȋ0T+:*ȹՔf'%2t1zhE$ OC׭IDQl g!:Isfz[VԒU< v ‡AM8Z88'}tG /.hGQSBs&rŭ[6"^{r aIj 0boRᲲܻYg(W6|.+]9ɡ y]*:Zїy VTk rEh Ū49bhE OIۙ][%̄(Xu?ܐ#{}wbET]&% &NA?:bו487kއoԇCDsj C9"rRTFҪ;"ӗPNB%[/({s3+xڄᬡz$[,p`FEK JЊк:6X%W<oZ.9θlY17pCF6ν6LU*kuWcSUԘF]& sAeσA1veMɖס_~Y\zh~Q64W)֦5Xf7!P=4jGP[#NIno~'O^0M&2|2L<^6t4r@KbIaҁnK}{.3.G:迩p֤h[~1Yux=qލ|э&yiCXqICoaF/ʄh}jmVyBeVSjiBxƺ/3?%,(AȦ^;kNB&J$f r_q3;<LO8Y{{m.uaYqil2~' مı~/U9'dIHsa"W<&":I ?r`B/_ R5 JI1z ДF;mMLtqdi3G3m2_z鞬]&+ϾzLHy?F&cł6U  UlAX/&Cg_:ψ0 c^,A0Ái>p~0޺y<s>~4P'rkcK\2JD,@־\dQf]< nClBbr R0j<28p}Oz21@o;J5u) \c"oXwEt@n%3϶~Zwan-K|jbEy;ӹݻ/׮t }JOh/qG'?^| 33.rꓕ:cRMuFK+ValItIT\rJr SS(x %G&8$?+3+k))ByDƨZTWRY.@e" }բk m5;ل$MA&LzArqVR7HUs:w9[0:P' ܒ90x+ )HX6(;OG8YKsdJ¢v1Ð|Ϥ2D f .]slCed2yMx Y`)~,ց { .%u+눶ȵ,U2AHOZ.B',G(ixwOl?aBn`\0>̧qDXOןghWki@Qendstream endobj 189 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4932 >> stream xX TW֮DĵTK(( K7l .}i]UDhD.LbL4ј[IO5R{}kcԏdb癳?'o1Mdhnc0ѱ# ` 2d{mvz{z[XM9oTY,yz-^~`1#8Ϙ:]4= IS-B,{yx[[QyXmoz/{=-=`{@e UwsXk ~N6sNn=s97a28f382 lb&3N32Ә-f)cX3˘rf3YaV12f.31gb3f3 c3<3)3a3FLsQBvߐ~m1*1ak|D1XZ.10gSnffIf)p!T ;tPÌ 7}8!#,Tnc0&zQQ&ai#oAdAJrNVn!z݄JǦc v"sLJjT.`oxFf9c246P:$|\ڨh>^bи8 #`c@2\YEZqsJH+|dxjy"0' d:OvWD&E34)NJX2L%LX K/y5›']<>Ls JU)i&׋#e/i3ivxLpzo[p̏_?$o;8);Xdg΢c]r x[U*UI_ ڷah-o^̫^}ԩֵt H('^ۖ YwՀEyW+BȤ b5v).Ta8Z@\{~yl6V;P {y}¾\vC.x۩Qd6N-|UÚu;-כ-Ϧ[6^<[]QCNx{cYI},N1E؀8VzqH30&Eò038P\ȗBVT⣄Ԁ@F%+kIjCkq^]4@H*ӦEJ²aX2`q3PgqH>ڣ-Q6xgn]6NqWB93ꄴl t^4{Qлġ}(1 XFGSVxB -047N OME㝿ng]Es>(|-R+訳\X&r8@ơZrJv}EX˻7n%t~kj`ZN{܀%ޑ ɿ2(i~^rK^# [#BrPDs0"?Й]}͂R %v4xǪ[AH{_2 }"SF{3cixFf"5<eFshshìG"o U} 8р+ }[Smr'Ef) u7Kz+u9et;VvYYH+kiA]!ٜMWHSCKs 8}lbGgħ'A2hR ɺQR)>X i=C3+pmySibIDϩR>ktc,2{[#N)w{]Q O: #s4p-FkG4qr?ߠm wj+]LDڐeh"? qZmL{ sSwHեIj255: 9uCDuyӁw -.%qfrY¯")sIߐvvoZ;;f 2{h~d҉E_Cd^M *u2+;X&5c-~EgWfBN*խIx2X)8(HԦF')\B#ksZ#]Kڱ#ʏ94m3-ݕH "cDI<тXnzY%z \W:.7J ΧZ>kvU)ZlA|;pDˇudDa ^(^Hj2V4x.&r n׿cr EI d'=SOħ<΀yV $J֡lYoct.ʼ+?JwOcrEUźB ,(- W\CC*gaÇK}s][a^U;#a=pe9ͺ|j̆@i&Jiy8ρO<mnqo^vZG=(sM/A򧣁8LزOri)~2Owb!cb4a2H!U0C\H,ъ ~Ck6H_= {]'*eޓr3u.>iA$'D_o t_&B2!v4௒DB;.0깲2p=OKaFV)rMd( ^|y*L ir9bӴky9_S NH_τ-vȮ.8%( pZ]ݻ\Qv^#Ȍ; _p/f1_pƚb9(?w'wY{ >4/nΏp W%(|3V_<~Tлt?p\G@Vk_6ݕ>{vEXz 5]<@"0i>G哏дQl]\.n&Kggt~.nSȸ,5&yzX=Κʦ?@d7(LE ՙZ/%[Ա %e)+L:gҔQFvw}RT.L/kFdEO&X$q 1iL>t <:0쎂g7*.FP |gIl>?qA noY7jGX)saRl>Tm' Zd ^FvZPcP4y(vx¡uƓWMdk,?[!4(qG 6ٺďSkn!e{t zom}^2x av$LȊ!rg_=FӁߒ575^/۶sxȃGJOT5lZ[>L_6xxhbMR*$B  /J\I'ILaHQ @T@5VQ.tz~FշAMo='S*:,%`N`t. 5UyRWqC~Vq¶-\'Ru@\Qي-Q *ôla,suyoe=5;vo O`4qsIQ){7DMỊ'bO]Cg*Zۏ]1*#%2vs5m>} ! @ 1G}o=7e ϤdpPgG3? 揥C=gS;ҒG[!oְ"($MO2@_Gw/F,Pq*!5[MȂXʝYL萃;rd[k0AȦ̴C)*M1̿k>endstream endobj 190 0 obj << /Filter /FlateDecode /Length 2588 >> stream x[KsS{MNxJ[|X%Hl.ߧ14fgH,+$ҁ+,׏qzX)7=>wauq{VG?\:`O*(? +{WGzk՛B/ =4=6~J+vkgD]]tBr.7&>Ny\zh0nK} /i{@yL4cJޅ%5[\wt31up荦ny+:\5u=~L3Xί?6;Ak >z/ M.7=^Œ*`ywþ_oH)f<& Y4^qUrj#E@"O ylDmCP{Q 6 _޸F޺kMQQ07&g++CvCJNZKa b)H1挍bp Pj7fڿhqFa]x|BImuC7Oy%XD^H /-?\p Uz4Nc/w5368$ʃsAjAt}I"H#j"r"o泘ӇVJ7 ϵs&Y@+ĸhlFPH }u8аxIx,+z!/j.|]64~ ]턵MȲR'U EלjFB싵HFGx[= cQ%LS U|3qh. g"OQgyI1  DuUM3pK,ɻuV|)5+lU  GV3Nhʎ+s#6Qd~1쓻3!Zgn4x57{ZԢ/͒ˠINȀbcw^5#}m6Id AܒC8nR`8O,C2;!Μ5óE{Z{jRq@Jܪۃar[ ?ni|ۻj;ɇ5P!y;qAS2>>Vʣ7pܾJM$zn`9] @ʡlKnpshք#1 3r7Æb9$&f)S*:?L_wJ.|Y9[90Pف|"82؂B!%+sReWFmJGÎ ;cqڶwR(a~r($夊m*BB~%(4MxXxwCWR#܇=倓m@%kr-rw%l)Zy-@< bGqH_UH׀EXvj|ͺ 䋛/W;ܖyREr [H&QO_}CmtC1>/<݉?*seM~0w"]n _fFwzhdi?BdɱM|v^d^C?\vDɼ\fW|.):)LUyBRIarctJgD_* ,6 ~' D "}N|9AzTno0nnw+UR&Wt$ LcɸT&аmb?Ve mÞ~8!%57q;kW[Il&}BP1yZ#<2eL֋ֻ |.@χPA6#CqF9*l6x2=!R$75Z1'%/u,TLFv{!\lc@^VdF ]G4"PN4^PvR|a?y*ɡ&LGA̧q`(n K/o]ҫ~tS݂<%)q9l]R(ÅX fasZ{Lɔ.z yoET& ׄeAA4;&L7Dluż1G`B6!D$"˧diK\M[?LMendstream endobj 191 0 obj << /Filter /FlateDecode /Length 6199 >> stream x\YoGv~̏ {N3A` E$Feg,8n5r,;S}W>>RgJxsvRpٞ.W?\k~/suPao5C>k5va.[?.g~HH;1?r3`Ɲ|vo.ݏ0ިT}hK|v t0ĦM|}dme~w?w: Mcq%G JD[ (;I'l9e_gO;LJJ,%)akGkmJ݄dϵ=xR!ⴖZ%YJ3ꜥ^RvcVzԭ9:pS! #@$ [1'm ʫ+焩Y9Z ֿ # z4ޔd/**媜܎59`/)mytt-O5&Nʙ<(xysثǎ$bMBUĉxg(Wt:brP h0``0[nrq28LWact?; yrvoH}32\֩0)Zgg-ʆI I2iKm4gL95⑎lz@ eVe&'DǛLva|9/cH Uq ^J*YWS4% #0=`RG)E,Q܌@yR'ryU5a/sg}v wPX3 m ZnCC/y;lḛCM♶B ؎!kZ#` )F}>#;8Ĵ |n48`,]eZ8:51ŭj6VZ! .LrsZ")|Vk~n=Dm&gRM#༞2J#C艕|@ż%[1}WpOTryCh)M[S"^5c}iJZ^(c?Y\IЯGZLY籦_ Dh$=o-[ (Ǽ/,3WN .EDsr@eVD^y]!'-.Ǯ˒.rA" J^AH!ꖥ ͘eJJw4`+%@aLsP(KH+K>v!9.=|ݷ;Lhx C' ƪDUdF:g 0u@7J*QENC\` 85ڡ&0]{)/8DNRKWfǜ0]D 2Ɨ7,uHq=%@ʃ͸/QBQkOI])3QFW$cWH!!,:A3@Π>p B{՟ Ae'ȝ'&cmP,q,1Cns0UN5tYDooUem?`1q`n5¢"9!,G2R)KQ~E?`[JqPM$,7rgl+BŸ =/ϣ0 "{D{92 }қRhin6m mO@IG# L᧥(NVd-}Uۅ;s?u(Դ?9V4 (|[-t?se~mțR&2ZcYe\ba.JH_KKkR04\آ4nXCAmY/R !u"2a(!",GC?-_X9>NaFٹ@YQv낢bj/"OA/Haw,6$\Thy$PaNTCgkKh| W}x_o :ǰat SBcʲ!EL:)"LsBG`ߚFgD~=A+MM"R]q iëΎb00%w<{F`yߺĉ/;/0?O}0n.,D8Ɨ"v,A/]ޘGKOpf 6c[]1ջDqW]Aa9HZ(]ʊu7mW z diE3HO/ 2qk.*Wۡ%*ubb"; z)'jP @Po>l!~zjYX15?X>*g5Ao 6}OF)SkKt J?=kҹ ϼhRR ?A$Nw#{6xx^̂ˮ;GYu4\&_957IY>M4NMQ^0?9De5ܴݨ{6:Uӥnvg3푸6+);WhJ4T1z5#CƖ|Z ^)z>IG9AK%~kk))rmvZtm 1.Fg!)yۮKJ/e]^K2D58zz7 YC=K |]=y3Ō}$4tށS`f\J,=vr0 6AMW!WnVݤ?u#?@3ު2& WiD>A)tabONrb+ 7{Jk>3%J 6R2V0=vS)D;=Qx{UўauH0Vg?_F?"O $Dk?3ߜB:`lѺx`=T-S>3B/l`]&=0Qlz~sMߒjQͧl,Biw8!x $bZNG e}"@תQ"r]4~DGto\>6 L[q)\/>5вvbh I3ՁnzV S E3wm} $TxT]7x+|QV uq@D34Cr_u0j&QLN4I""uIB ^UټPLe5}"QU[zt,'-jSJ_B dӲ=^Ssh#Y2'A[ݢy18҅cvf#,M?}Td)Iee+ߗ!/[XX#D|sev_pD2-ÝDb/FdX*RDm/oQ-[ %MeFB|ϚtAo_}] a-%j)E!7ǰ 'F֮p7xvq[U.,u-jkkZv+7w>t1BX: "pfO)t&$6 IEVXx07"]N37/MIDw܈ujC_D൬e;/\mc]+#D/1ۦ?@2ጓ/8DڄyhL:4X蹆x.܉o`sMZبSk5sDixawcz-m2ohw+k&~ jWx${aR`J왽k*/!f)33y|d<~*Ms[c\INbWg}>U9я]6qAōѲ΃(^MX6/ *WI4"n$⫏[6LE"Zl#`Ʉ G ͈ :/ }f=y?^Oɐendstream endobj 192 0 obj << /Filter /FlateDecode /Length 159 >> stream x313R0P0U0S01C.=Cɹ\ &`A RN\ %E\@i.}0`ȥ 43KM V8qy(-> stream x]O10 P ]ZUm?eB:gׁm_Xց$i, x`HSendstream endobj 194 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4861 >> stream xX XWH]JL1XjiGiZjUKaI f$dK!,WP h[mg:vrO{::sԌ&_z0jW;!|DAd^rG(B>ͨ6D%nBO}V un h̴Μj*kC3fIsUjT`: `=^o38F:~grAթL^ cSx̠,sPZ7EEh%l`i2,; b(hP䮦ԣ7/X䡌> o3|oyCyr5ꂍPd^AF"jtճ\4Bo?}rfiL:VN_Bah9W9yg7#z%TqQOX>;s>Eo(Y/?ywm=Iw m9䱦]ɈEn c;31_3L!D`hmC ZCPE1(ewʪh!hOh ]dFrm6=wr ^ƌ1;E*įNjq#pQ[;gdmw-r0n0J ,%l> ;biFDѨrmԖQ8%`T@C$_2296|8ڭI/Ѽ(T; z  ]EPk@n3<{ohPi)ft~5 nzZ42𵧡glS(Hu毷*O>~B9lw{XA1@nkv3ʖ]A8=- @CRCE22VSnw{гv !؊b q5#1^y(w׸F wT]VXj"{23f\v2UґCcI`7h2- A4n:|öԨJRU~N5t1IŰ;[DwbChsz?6*o,`э./)WWV'7k BQUոn9^Z%g?>X)*U䂔̯-nh;7q_ {քp!gy/NR+N4BT(UiUՃ4mo';\3roGPg4jl?hn$ЅArAR*VS҉W{Ӓce1جG1/LkV5pTwUl iGs%duV,)T$'u^;(a֖ydI*O#S_5+M Dv.;#d}wvWTo*Nv&dm1^vmA|G膓zquiڡMF0=u*M=r~zܥGJZZV&sVgߏqڿ vS-N?Z:-[,Qlj P?+/\dSl]!4A86CORa(Ql; +2]k0ڕJS@m2[utZZ5O4S DE2zGDp4 sc>^p5 N4^(dV1(U2:t~)z\odr}bߗmh~R& u* lWSmkk0?8F#Gv(#-&gqɤ.vnJYY>i)fqj w>{huS`1[0%SC7Ʀ&nt6a"r~OѬi%AuA̖Y^jzZ]iVOa2j'E>%8- |lR-Wtչ)gnnrl5nƽ޽& 0U>_coٔ-M͘7v wnOHRiE"rPȣܑ|fua4\M ,HljNpjSZײ=ҙ_XKU5 nH2Ҭ顥!O~R"gFG-2si5*fv={}mۉ1TMaؾGKl另h]5-)UveQvB ĥ 7 |@arVFE~$~/;#=+=(lk">F{yҦ`k0C PlM% ˭ΟVǤfuԡih ֒Ҟ$I(coefg>75碰KQN0|w9YYa6cְZSI] [\E%zgMcfYWȍ3ؐ4cCv1B Px5f-(VëC9&8bh*]]?d'%W$T°8gy/#q8U@ܚ !#;7lPF-c 2y>I E{є6E VB2bŜ|\n=*,v54m<)>^iԕB8'ԎayLO!?+!,O!<]*|?ҍr-~<<> stream xV{p0&VSvp :7@8@x5P ƖߒlK[jWo?嵅-?q(pPhI`Ltr0?94=I#~?ZxJV/-(,|N?(YT1v^Ji%Y@gh M_8.,<|8岰vp-?8z$qGZwV; D'қ e{O(Z~&Zژ=%OsLFZ. !@~b e+ʶܹ:?΍e{g{ =ݒ_%#τN'~bio`x Liъʭ5 ЄOJ<@O >|k VGOC#nk)g &1xGax91yy(cF@_O K*Ho\B'4;D Ԇ1Gh["K K\fAsv2oF.v+hpƇ`8ym`$51>rST4eF`<۱|70Tf,CVh2DŽ,4mWVΏhfH4b~[T,~.KEN~"e%⬲@=ro}AՍ,eMh0 α K'v- RRJhLubodu2e+ܤm1~o!˧p-*6(A7qjRaׂLib|p[ev-T隆B8LUͱr'; ͩi)F uEC}O[gBpE蠛: eP"e@ K VIh4Xʴ.zgda7zZ1o.QD"_*,SmKh-"PX Wg8κIxE^%}z\keM!?DEeYOut B|:0Q[ꚼboAy bbՋ.CH<5rfrQ]J\X^t X (i>b:z:us$ұ@|~iƸ*v(iN`NaB2ɡ[j{O@rlkccDg<4# f0۔⩣|7Ep!nO{% [;wnD"yΠo~b9[%XQjV[ fpDd]c\7VJr2u6`V*nwY@̶,ApYTy#CT Fa#`qqj/!ANHNj^`D'?& QA"2ÖQ6ss8 FlŞۃFL_ޡd)?xT)x-V/&y^ø5@~* II NG1Fޚ$ MmdcfjI7`=c_=N*1% 1gQ ς3|3Y|ic\&S/Y[~~ [kt3ER޾ ^Hp"U85  tԽЗ[/~Z3}l9Ak74ɩbLtƿkQ8¬Dn0vTz竴i`Nt8"OC]G|}6ÝSVE/ԧrHS'ʄ)߂5u\\&:;F:CRO]¶Y0;ߡe$B5>l6}}dnnkܺz:Bs.(uX:#, {t{Mḿ/pƄLLIjnzUfG#!ܧMAϲ٬ai 'օ01B+*Q9WeH{GZ(<|7BȘ<ꝋ)Feqa#UzA"6E+S]j֯T雚w_۴\[N/mZ/zCh@۽{܁wGN]8l饲k0K(MV1㼲N1Qlyaګgk"VހyWIKBC;7(^S^b~ $̢ (t3ջjD)x7ZAxt{>TP1;i9z/nbo,+<~&`uKmI)v+MJD5W @D(Z+ۧ>bR\d$425GdI9FKf؋"5p lyR o-=xHG8SN!əqC{CW?-fv[(0Dz9]ƑAVK~\xc"gYRQ)endstream endobj 196 0 obj << /Filter /FlateDecode /Length 5444 >> stream x\KoIrkwb9 րwlam؃4Iq8$g;YY|hv Gd_DF/'j' ?'WիIϠvd*듳M}= )N.njrTM*gjΛ|RmmsvoΡKJ1=ssS1lS̔1lzR*[S׆iZܾ<MgٿB#c&=]v=O,:\VÌw>){S ɫ`U $ӨZN-uy8i<6&ج-nO hNfmkܷV6Ǻ| 72!".U)8'p48E7& 煮'"+"Qs9k#1 V/!Cgs ;+!LPAxMX ; I tgS$O9@-bī@Sy7.Jelz0e>WlGy.y#Լ#h~3$ ɀ&ե6z׹ U-> ``z ,@У*)vFHLp jYףF FS#v*7%7>5ƞ8ےnac8fɑ]ʊ#NԆ&[-.vބ+ @CED9Q-k=i")8`wed8`לּ:H*lX)r/{ %)eH9^4joA~.*.d+;y{ lBXZg kJCefɶJ;!dwL2ZiDjx NVX޾~}8McGW[=tQR A43ўނ&dd_ s##4V҅I =9>lY @ZɊ`\Wu5:H&YPI ʮ* aa;fBM5n>> I젩Z? 7~,Vx:(IË:u>6d'E\C 0ή¶S1v\g hZ7II;;q-AҡbJm.S"is[A&p4}}Odѐ0ˮp86DB I^m#`ErQ!ܵp;z70Èv.Ym|.hR*mZ#k,檂gT0 }s?)rhc'sD.{$}3T}}}m>emp]O!,ϼ׋+m*L ؒ68ji6?um^ Waw߉ct^˛2p~we: ;s"ia碳FpBT+qf(M|v-O6VC T/7F2PGF<:qL*/Vp%m;:faUKjȨ BwRLM{" 0{g\};>0zS"h^#\!!jOq5 f2μ;)38=gzzI9|Me֦֔7'qwD"^ f߱' =@,PPRޞp X/1%Q6g_J|v͋\l1WBH"C-njqIρ}7&Eo?NZoXoUjV:[D!ֶ䰋 I[^]JGx&.{ir ITYTvc45;*CkP b}(BmޓoyDR,cR[mC&%De K:V ?'iJ~u̞K;*ʶïRt_-͐&gamE/y#"aǧM].dgyA#p=  TaWW'[3BpԂ+.yLhC | ؏ 2zAЧ:[U9-:#dzp^ 3) D'Y pln\hp0^D&DڛY * 1-,_܎3LKC0iO&H%V2e:Y<8BB# O֒﷧tN>9B21a-u0a[b蓚G\< @[{Zo^[;&"(NBbKμjɨ84iL+DD>$qɆty,f'/Z\( ߏi5G)[ čoo>TrSBG7jx %'O]SE? CE=–6,sz w#]I\Ø]W޴~/x_01*kJf4׌"[[qIj NbzY#@"~8x?P/'\4: $QuXk^RtINH,S }nc R'$FTZjrz(i^|V.0ye!nY$I!MdžlkEsPG=܈h)?%}aj]UR8mhP)GNAV+iim靸+q%QS_YաW-Qwfi*8YӓV0sd}E`-gY t~q1/FUltweKOa1!/iO-8^ZW06;V=Y*mnxZ0ưƭ/ =\|q09jd,}r0 9-8%+U/T֝)X ]\A]wR@* đkm6;[Up;cUzy$"yG_,1mHT624'(Trەs PGyXרdzOVHWo\%RybDrZNN/y[My `8A-#l>F8*fՋj2XEiZ(vi| GAK0^E?L ~q~Z?C|`H_Z7Ut)Uk<ʭtIpFdqTZHXg/1ɑ7rҘyd6ZDU뮦ۢx:ŝOXl6J6 㻕A1N0춢(m㾙V,dwTK8rGJq1rWna 0{ߘuFp2/څ'jbkii&<_z+#fbd)&8H~ 7#b3seu.ITp&v`tԷ[ p'Μn89u-1kgep$]CZmw󾥪q\zN9+?p!rsQfZ Bxq?_%ʾ| [H}B$+QvT3nv=&n*nCy6fdE:ݟ(T$UZ|CuIa\1H~M#+k KU4o6*`sHkI6w #e ˂N:8$c qQ baMܶ*( .W?ZZ3t=  \tf &c8@C/f;aI&Tg&7[Rxx<ِ+;tqlĩyO\hVNؙ*Y9ŢN9ti欤C tW+ H?3>"sm}|r[0:\]рkвl,b8͇|o2G X0͇}"SB–Dy>utASkm|&]}؃ _-h_ͫop"P_6Dx$>Y0Wc| '*e)kn)VM~F%&n,~=ĕխ9ʟD(?P_ΓBۜÒ n--?:WU?|v_W_)>:S*_K뗥y_栩nnR[r|Sv@˝5}c,_AN~Mvw/HRZXy bçwU")j0n(D,}Sǵig#=ZLPQNB¹xMpký9زAI-{jSwk_]okUkWd#bcF?XO+YQ|,RنHxHendstream endobj 197 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1477 >> stream xE{lSU]˼i*[ ( Ĉ3c0e:mk}޾u -$B4j4S#x75旜{> 303󷬛-If_Gρ,d S PóH ڷBm)kj-YZ+Y~5VlKU5U I~-+h>9"٥Zҍ2}kr Z&)J-Q!JfV̮yJym=-UI*E0k.ِanl+ ێÞƝ\@Lip X%+C+|g7& л]7.Xt?3xTMԪ/lSV=gYF]:٢2@'.8WsU(2-N[lW  ѡ8b"Tv裸8wSpUSM#cHL: S,L~[ 9@ĂF6zUTDWuoecޏ%>`pX,T[T m';þ~캝KG7 zLfdzH ~ |(4u wh_L DimIDO"Imch' U@ D32H 6J ~ B1Qu|kD{g) Uitr޴M\y2,N=D֭y-qNYiR>~SԲc -k0I@FCQUqeȻv &E"\LOONN&IXIp4uo4pf""v]z Z. `1aՒkSŇǢ=5W(+XFޡ+tS7~o?Z6R_V :KO" {{)!=ўp§cg!a{Xl2p-=TaHia"Hl&C#ihpp .5~lvF Y/7[Q'C%FPdmRsFSƃ,\Lٹbtn Ba5rͼF+x(aX 6 mheVK`P'JsNZ X"vwMHDUWo;m?7hgeZe\93'H?l9 (vC$ &y:N[e(Ins - "Ѳkӥ')3L Wʽ-ڵ ΄'8:Y;^@"()Y S+}@><ʄR)u0-ĖWak(s*xr\nN籡٧z>9O+knғendstream endobj 198 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 504 >> stream xcd`ab`dddwu041U~H3a!nnne?2W ~/^$Ș_2as~AeQfzFFcnjQfrbobIFjnb ZRaQRR`_^^[_nPYZZTWqr-(-I-ROI-+IM/J)I().Y000000v1v3032Խ#녋|gB~choܾ+'/ɱtFEyi]nތv?zPn߷O<{>kڽsaE^{sIw-GºyX;rN}\}HuMy9~mWsfVǻ]aJ\~e-b+r3˫ns+ǖuKvwN}Gl߫Z.XfEyl2+-Rùy20Pљendstream endobj 199 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10  ]ZUm?eB:gׁm_Xց$i, x`K+Sendstream endobj 200 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 6680 >> stream xY xڞ2LYhg 싀 Cti5iҤi,'{M-PV *BA"uS?I {f&g~~w#z"x<^ȢVm8mHnً{ܟ|пwgpKöp 㥋5ibQRBbfgç͙3{bS焿'JN _H I6wʔ)N IL _'ʎ _"L _ H' _-ԭ Ҷ/NE$ci沬9+sǬĮ_>i7l=:b3/̛`ܳwLk)SMn,MDsb-1XG@!b,Gl"%6-Vb!1F,"&ۉdb 1XB,%ˈ b1XE"V5D('z#1x`!yD b1H ";!Pb7$apb5N~'۫g\0A'}iQB$oH?[S'~ḱ4fj 1mhO#XsXB#BoaG~Dȹ#e#o<Χ }3gGmuqtW3{j76hqR R @{,o3=~OgA6)MRA9l2@2]'J)^^(=^ɗ\o x 8tGKPv}[d `0X,>Z]lZizJp刣Nyu$7HSX8;C7L`[Qf){|6<eŨBx" a CY. "PxX)큻q Qp&釻!vv"~ 'S+u1]CM[Tζ"1t>i;UWLW=]3B {/2 F "ep#$Ge{,CJMJEŌ 8zV;4~4:jn~>4jr7XCJ^_y~& 90** X[ ./RJb4l?8@&1%PXȇj{`-fq5'}vsnǞ,쥴k[G F:S@ *7kK@%q++C̫WG~8s41=P#4wlTm)H'KX{\M%gUffExû:br[SþIJmPKw\\ I87w/ԳY n376Y8΂JYXt :%޵oqV=hq^=^j^i5 @T5pX[/ozDj| +? h&o`j 3_H yǗ.PԌ|@`0VEbZMG(:ye$(y83rn׶hDU4ag @к+%Xs܇>aNZO0`c R7߮ :){ƻ U8m~RE!TK蓍@k6KbaՠZ з˻xcr^H2U-$uAmH_@):8G;G=pL:}aX VQ<;]U mk 5F: Nk*#'-F/vӡH<(GAMM߷#7P-뺺]ԏ 9 k%lPذ@3s.BErc%| :DMT؇ޙ~¹Nw^ME?:W:;NԳM.PwWV>8)b?^p3WG$>缭gT5|ߦ?=v M}*0hzGgo;ŪbUJOjяoa)JAb+wgJYdjtMʨRP:B6zo+m[7_CjpǮ_X=.F)4@!Ah u,&? A?ApJp \w֛V`*y: uloVgMi Os =#IqԚE3rP`V;5+@ZȨ"4މd;ZŜHx7e+H|~b{~֘k5'[UdGF=8Bu(?8BR!h}9v=a? MXBcGp<49Ѓ( Mx~ @zN|R090֔q]4%$ d5'oosG15|7,X|֣d,Z¶;q)yx_=y0꒯ 6$~p>3g :*67lw g4 Gi;QHQvuK!>:x:yxݕ jewPE:L dͭX\Jj?8({.A_z[K(؁RLucl4FPox@yE8t3EI S|]ө+M2 Ņ(6+6N=mgቩDZY 8BԱ> Nł}Xn[ rV e-b7 FV}a,f'i}i|n՚硧`U!w\FnIpV4 FS s%Eui4b(!oM׀3/Q 7` C~yh`f".e:ZcrvLiFL?]pt58A:A{{"ג'` d aҊtU\ģ'ua)Ov(R)A@HaYVw_wa1ŷDOps_\_%11))%.&p[[Qf+:/w=trN4ƽAjɲɔy@J2_3^ٵ\17+| iI*4:-kQE/y rH"YsvЉ:`4q\:T2B,IjJPT6mzTma?ל]NElq$xJ)jg`Me^]@fT p(8azDQ\PdT~Yne $[bII{+^pqs{y\G-vPIՈ$BmQ>QtHda@\4Y,dRՕ"3|.5.pJ0⼲MWa?GiZ+T$+G@,*rPo/60.TjW`rbGv]G T qf4x75Gv*./mAyEns=NF3S0f唣ЕЋXyLS&@[KR&qipRuDyr e%*uAhJEUjeƽМp:|xm7T57;/yRiTDhU [Q J0aeQqb1#F&o+]-,K#Yʊ؟֢~*d)͹v+& ^BFBqYZkm23zf8MEuKiQٱ=# ۨ?Ԡ?tɈse&@ಠN,[j7F>؀d7ckkUfh @cGh4U@&)[v,z|xHO IT*] Pvޛp !F&)zތ_9HAYxsS\2Y`[b+7!|ͥ?2yj VEU+7H^PtosE\ASR]U[>GK|{JF(^3|9[U9 VG>,߼?<(äuҦZi}<||hMCs5mh&L)% t{ڝ*\M>JTn sa4 *&E?Y2ϕvpHҘV^kɫ ~W\Fݟr3[RPhˋTR]P HGeM {`bI3fk#msR޾  GC׈%5zʡ63}P~xॱ(dSm*Z}Rg[|'; El*+pڨ;(lYfIgaZtwu`/&/M{x_(J-ث*e3L+HѳZJQj^coެL4gL 4?p يq۰ϭwZ򂱒7DXӐL= wׅoEd{K@t oMl-*jv[9֥wxZlj޸T6>-E]p| 89σ a7keUbu@e-UI~/ʔ1%+W-)/=^m.ʬ6Fꪫhn qDŽ ,A|!yh@„d6Y21:M@^nRAri` dWFug3=OuVwnҸIT{Q?jJjպF9s Z7m0imS2n զ[ fzDu֎ˎ\sp kWp?|sUŸdRNqcMCm1+AA?pQQ2R☯iZRmEh&`09𿭧';.c(JE6bE"~Lba_yendstream endobj 201 0 obj << /Filter /FlateDecode /Length 3686 >> stream x[Y~_gO!# bA x/Yl ȏW$YZb ,Uz5Q-?Y~گpzǡf)Ȁ1(U)FMpΘ~Yux^:d۞lң~}fq}QguP:ë:nq> D~T:Іc/ma]> D~T.'87'_~R~1 N|IW7ux]v-uY@њ0Nm06{_ᮞ×]3ض-_2'}gd]:|}RW?=~戃F sFJH` 1!6VJ(0Zz{?fF^ґ"xZoEXM\hԐ4JQRhpf5րLYmr]KԂn"2pѶQA26 &THllD0q#h"rЕWIe8ljZQ̌:Yb PNÙ1HX؞6j.*!;wWE^NKmFA+ɫ|hւZ #z`6DQ!MrAvwtͰI &L{E6d^ZN$_: _2 FHLO3ǛW*=@j=5*'_TK; )˾geHaMɛ`! /밟 i^9^"_5ũ⨃Y Fup F;U$]2p'Af9TAd* rxg($cӬ>6jLv-" g /C&h-3."$JNZ9ucO"r[C6*7'2d.2JipE*A݁F K얗 L׷L]yކ%xCU|J>-X@0b1b+[lymh6KREOm-ˎbStkZe@-^A3ď;OW_Z9à)tpBh1ӄ8f113/V> +xBS>H@ބj=NN"kj+rr[^>[Ң$ PF oAS5# m.k[ag 2-̴pY#AE9.GA O߯௧Ķi|aT:{Ea0( `;jzKRRMSZ#nV6\8@6bxTmlqEtt Kv"扷hˡ2Oll.; QntZc$o`Đ6'?: 'CSu^g]\0"(chŸI7b}⊛#iygBI65$0^r4Pj\8 ARf#&@zaXlc&R Z NRqIaBt ~DQηP73wF5 O0 r0xf*N(.Hl{Zܹ%ipB с/G,L 'srdҩ8B7CtGp3Ts-X4/s(%RoADCE{d&O[7ԗz|5tJS@~TP:@׹P1/T}fb Tu+_%?bO> stream x]O10 J ]ZUm?eB:t8K结ϲ(-n H0dY hqgy⬼Ml2L\ʪ.!tD[U]kL'F;e4',CIT @s$Lg)oSendstream endobj 203 0 obj << /Filter /FlateDecode /Length 4881 >> stream x\َ%G}ﯨ;[X,l z{Ή[q`07tPgt}zx_)v4ꯣѹZ%x4 Zih^jGFc@mWbOCbOw1 .-(9ZTN;ڕiGsͤbh~ϰ?](9bPy6zw%o8ѸMe6lWk7rwh~gY \fK [Ů^\ovzw]߻zm|71 yow~3+׻rzn"{paU>.PZN[~mުVx={b݀?awjSvj&6@ARow0$dWw5x+] ^}@N~w%ˮ{>lm*TTZN>H9哔E ȣsLCcmt 8b%Jݛ'9zҜF/E9RTnEe_ymA^csϛ:{:r'H)؋abq.Eɇ޻ݓAsDk㎃3pˣc4rdʢḞo!6cڲ/8,%0!&|B栈E޹,@{0|DX*1! ֑ VjEOvpD?XȖ7a+is!d=Q`9&xqu'u+Z3.TC&/^#r_ UY˕2˙+X9 5 z!\o.eyOoqR*>oަ=Q{<T(j<--hVVTr9(.\[mkCH%x Yz*zȝ>Qr[ZXJ,Nz7eEtxD-wmr¥եEk8aP;ܾ5.'bpz6V@dA"[ąEfSܠt& $SD6!G9h|6<w&c_/½m.RX\r=B{/02 %T_\R9:6x]3^t{'o.Tix:^Gao#Ccˋ^謽8\="Js=z߄mW ՕXoiBiE=>4/'Hөz'>?s> | ?:?qɻR gw7/n޾߮#by9K9N{d߼o-l=[!gc[n t \L 륜_cG$ׅŅꔰ #|aj0+(LJ@pi:Ž{֏4Xtp+s<N)Xk):Jlu nIMbcXB^IsP∹}솫F8ON !s6d}r0Vlw: 8jeYQp K^P̤i{d%E. |ڜR> gBBH},\t>#1>ec"Z8Uٖ/QShE^/X85fTp )c@ԹIRmpA%LpTW ҄lלqdH5Ú*#iIDŽexFg >#IoDD\)SCW_ܐqx=ڳ=[l{`l5p梸POЛ8bCpe.{|h_ pRFLgy*Ol Aw:eU5A.)8\k@XP%Ћ `l\\FqRV2# T#ڬ !戻% /;8)O @9Ů9KPf7ShU('^gWanj#F#<ZF)lK &(NSLpjKU W3! c3ŢgD vDgtlo!%ѢNDl%0hº|ʙd|A,[cw4zeFXȨ""4Y-Nfnͳ v >%8$or,%H"U  w TI{;>fkBq_X;IbR @@is v*a1R$ ~OP>BE,61P!GGJō`1\M=f[NWi'P\laEux$XרmBfuA13b~CGB`꧎rᶐL|aiߊGplź׎Os|2f:Pu#"!)IY F~@kFm7@xa|J":1I,Ѐ_EIݱ5I!8Z)ǀ&l?z|"DFR5Ha]wI9v,AWCP,ޗlQol,8Oxxt2HU' 7D=@Ť>0+"9A%rFH0 d)CĠNF|JdnR wxt I,%tNNLYI;0gGqTLz0s] %^{E! 8ҭ%4|႙&zpH ~#&b1∬]f#+*ja8,pÉU$o/jCɳ*w%:)> otp3GpoJ0@KdB܍deSHV"U? tYO%"RBL$|@+@-3Hx蘻8 d$IQrz(R JJdvLԗ)z <A@И+qnĮC6]-]U6D u)@Ix PS$βFx"3 cYD4&uRXH [f`.fF6AI,%kPXKNnŚAKWM2 v!4W>aBmNФ2@5 u$RNnU)cxBQ(t_A,ڞ83AQC; < vVL},`=jQ1,h؄yZ>"~9I/%4rժ-2fq U<7:tmpS18Lz 6N:=Va`O@uuH#* L{NOAM5hƚ qlx|X A884LFӨaGQK;f@BsT٤Z$ i Z%N)jәKA*1X&v)(B#,e?gle?_VC_7wd?1uU&siÞSF?o~_)JK.b+d@r̝3AZBR1p)fx!&R{aQE".|FXg7(X!KFD2Q -~LQj8ٔ-ĻY`4GY& YБ) C$Ѭwo5 ì8 ARfeE/{kJ )a簲vV J,5H}H"cd[ YQ~)^2(Na,. ' ТiNb՝S%yG6D ,Rj6AX*' [|ݝL,fHQDŇ9 p7N5rVZOZByA 5u9,m#y}S_̓KFwV(kaǢ&TYgH []IsfZKF |swO$4p)bԑDnpP5!q}o3yӳY.=Y᧑enX" $0t2M3D, DM_@,_oJ)U/̄6L?$c0C,3 6Ö́z"t:Sugl><%-̌۾3gi5l~hԾQ3T$g?rSEP\.&&l*$Gf{{K</?UC:}\_<lK7z0c)[ci82Zl*B^@I{旺U;oK,{C5)EuYF*ny v}o":D$?a0bO/(&0ɻn2! UB(띦["PO )Յm/jKJY7endstream endobj 204 0 obj << /Filter /FlateDecode /Length 4612 >> stream x\[o\q~2k&},@녱I0KRmrFˋvS>gv™>u?U[}_{~{OOO'~<-oOst'۬>={{oh|RܺNnO]&Xk9Zm}Nڄ[}X5z6gZeqJݞL7Gs14ZِV8)3N*G sfus-_ݴ#)eZ+?SN32k8]$A 1W{xw6r6'ß~O&.@rn}#yhu;X&iWQiVfo7oȟu/^o yZ|[̓ (Z XmatAhhPŭ_}v "X2, -iK ዠVN$ AnIPQ8ڢr3 0em̧gߜ^~zAL; SDp*ZkhB*|e?x " ô)0MW%8)t8T ڃX`;6n䐷ueW@nQ؊qM:4x;>/M9,x]⑲X5( Ua58_%@'Na w 㠓a!{<8 ՟%C&=xPmYc+Aiy/8 )kGa'(< j6nw_Vga/c=*R\N;GQvB38)<jʡ(1ج'ӞYJ$S ,H+2""^CAE&w~+ڻ[dû,:kAgeкS? 燻T5tXO]b8>8=@y]Ȉ eͦМ:-z^qvDڰ|5XyHX$ښek;m"}%l>d7䫭/hwWGtF"XE(<@M<`&5T$X/u14ndoB[p$GMBYr޻+ l^VrM[m*l G>P]R>>%Rgfp诤3&y=08Vwx LPS&vK6'38m8BSWQDMOyE ,dsGsI)݈ACcVBya~/,F/r:!#w7,ԼJ*ڨm$*u,s; IB־ƴD\4dy]M(&J`Յc@9E{m[JPȌLܬ0'!Ȼ$sRʔFEE0[k\g^ޓ9RxPe<; 3Z@%m?eopטGy"N ir~R` BׯRO^GRSLYyOedz ).=OAȆ$R-"2؂nX4*4*R倽qS w71<9kjAό*l 1*,M *UXb ˰sYHs}dkv HGuaWX,~lF^6oOw3PZbޔH/lWؑ೘S%(!i4Dy0b\w n C)אr@逈|F5eTIr}>GgX\c-=RRWqQHz%p#Տs[xS)`U&R%E Q% D0B%07~ő9 c;a-w9Y I)$3^7'z~WcE'ȤM\j0a/Z !OzPώe8ڋžZ~hygp|67/S/_.fSSfp\B:YtlQIl]YJ?b/^jc]kPx!lH]xw_Ae1S0O(y SO%'hlޯtY`RfiN\Cz[niMʪ|eO˶0yL)@C :DM g} cNq0eh0W8ud8uXK= J6ppAaG#Y,2\p޷ TS8Ni}GVgzeEO6ekH5'*]]Hڀ.yqWؐ-|?]1,e]sa.RRM# &s]+RBxQPG8_F/ٗ˦C֨\2Ë2(~z3t@+9gsz)l 6̧@NjpCJ w !rA8TRYQtնaW`$-pL=d(bZ]㨅(.[p}=gV Mw铽/C,.p YBϩCw{>Ri%"%NXY| 6g=_38Y'8d!^Ic됰H$7@aLA&.r2CzwݕzZ;hځ^}Չ8l"ؕ.؂|0R0hvV3D)m䶢!JnN#2쯐a>csSi8W+dQ[x L}wD˼ bVj}^yBo~^{gY~^Wccx/YO[#`ShKur6ZΝJ9M^㡫nj></ܷ<~TArT/puqv}GDxnֵ7]a_46{XzT<޾ypWvy!VJ%;Iv9,cN >u;O=/au`i |y DYv %hi:u쭿Vz!#=]AR, W>\Td.P]d{x,Ǟ,Q)HԖӇF5F^5Rzt. Q"̜WsKy#y:FU#_7FoA{TTa]#]-TӗR 0 kS94(tT(`oe#vTD[9ðlљWbx"@v,lvrznyk} ΒO{];^:.aL"v: s|ȽpJv"];3d~|uatȷC/ 6 51O!V, ]Ð[6R7FFɴ!¡/r>d0dRfe.yйjy쒊|6Y/כ~ϡ2[r7R`RZBLrt2 {%%P;H )XSUǿ5H1H\1K1Dz3 w#qUQzd_ 7M')uBޛM=09\"6ߜ+_aendstream endobj 205 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 *XЪj8(Nߗ,N>~l#GpƲ5 HeQV-ƃ剳B7OfϪUiZB 'mQt1 l.kSIT @s$Lg)GuS~endstream endobj 206 0 obj << /Filter /FlateDecode /Length 4350 >> stream x\Ko$y&t~A`$N8qҒVZ9F֬֏_",G(a nXW5X X߳_wGx99^ QDy|rq .c`;>9zދΘw|]J^tDz!ꦒ+?I9FO΁7VAZoXcAӰܴkF֔u!F]U1uЭL}.G)ׯj]p,#Ϻ `,5↨m<(;XеE'*XCPZDX-`$]uI'ɜxOml j0X1IG"s¹xC6@v{w9_'RfZ"=;B2FC>r1MG7^.cxBIeVD4¬&6=5|#HG }1{ > }2"Eu@ aG1px2c%Yٱ|lT1HA(}FrWy E?(ˁ7SSf"irϮR_}ttۺa_@ΦW9Ny*bb2;(/BcUEl.]Uɡ⅚`ildhs{ha\1&&5Iyʍ^<|)G{*ZR9,2-3W\1D3x=Ol58Y]RpP| qeݐun憈.3cIlThRNa"1Wx?$ Ⱥ"" *]kk(x V ,&.@ }CmAЍmR5e xeIhT16 fMZFg̠mu>J2|XB'\\đ T}<Ϙ籃x+|mDnh& 羜 Z]]#M :+Zh%!zKgs5+ DŽ3ĀMX3phczhͲ4D^l${fI_E]#EH0䶸YXEtut1eϡ% ꥍSdԚ3=!/d b:Xҿx.{2+/aRVD e|zO M/wg9m*m,TCG#qpWg//Y 4f%q`wV{ 3R:- /.̫ʘ&-DLЭAXѶ@S8Sp!8.|LBn*ؐ#ME)God8AZLL3IDs UpMoVٸO𩓖*.ƏelW*ZcE,Ȫ{I^(dmېbC,ch?vly2Bc@&܊ ^8쾅v%=y9M8SY#msR+-s,$4=YA<{3QRHS^ūZi࢑'"~}[ZrhP 8lIV4yT(ȀKC٤fd7w:6&'!vB׳$h>{ )gy~1 Y\c< 5n,3W-Acz#A!&ӂ\Jifشs'(F?p>4tg 'a筩JW MC${NBjFHqud`Zq4N$vnJøkr="zt\ `0Yh܋AkCwQ$^xf{fQܳ4)=uA>Ռ.螵"t{˺L?uf/$3Jn;kLm\=w{=7`4Oyр#.(Nlj^@a+ҕ(O=- z PPVJ e iW/_N)U/+endstream endobj 207 0 obj << /Filter /FlateDecode /Length 1437 >> stream xXKo7W,- }ZhTNl,)$pei=lFp7}[q&*z􅭮v3^]DJ9.5s/j6xL9S׳Vr˺=(7Ǣ| lVY%$nHܓx[\{Ӽ4r<q^SrL;gB>yܔʒOůSy mbZ~% 3aZ;RgA5}\*##e:GA6ٞ(͝2@ K4f(D!w>QcF~xon7E1c 9C9fܚ&ɖ3cM1&n`4=p̘h(AŘgz8o a }J4WP/fi9Koqj9l >Kɤw6Sl_8ñ+-Bfk!{G%,XW/‘Y鸬W{AW R0/dtF Y\(a+%shcyA`laxǭ4'hB8ςmǹBר6r=e8O3 3@[]&8WC.3|sL7tun3koU'" ~ o0XJHp4XtW)[t~2I%ㅤqU1{kXK2$Ni4Z䖳xgaOqC$:m̀V%U^݄\|$9)+͔0 -Ԡx1[ti 9P]࠸#:)@L)h/2{pFC1}L>ba93 ;Րl_7cij#WmIq}l˼*j3[-_#ůI|O=$ Iư!v)y%"=V!ײwey>)Wd[(Iq3YɊݑ!qIk×̜?d\`~1_e|V7$fkqc!3]$naf jft|Mendstream endobj 208 0 obj << /Filter /FlateDecode /Length 1888 >> stream xYKo7 9ݩ$=( k4~v^qv=&dHFt.g隳hfog2ɿVKTW lY)c;Y^[/N̏$tF,->ls֡}Wī"x_ċ"^m0۾j"j>_H]'dەߋx[ċ"^VW﫫xNf}E`"}ty No1&4 e:# 4 rBמ u-PǛpҐ !hg;\c1#li7,}{|^JmRvB)@'-CgAyTc `=z}o06QbxË)xMebŐ mʲG9x'mB8Sg.=!*Kk$WKR$S|mJyH^u/cBRydќE+dBcb{Z0k|PNz~U *`@ތyOcU NM8y,k[Z+쥐@|Rzd^gBFuxᡖƪq|ƫd޻^hѾYzdF}q]s`m ȵ& T=#8ex9F K?^MU߱j+:0ma#OovWŽ"9ՀJ[É|ISKT@bS&AHf1ٷi?+ (`gge޲ P|2$KN%ux8"pHUBLB*݁T}I)N:VJtxVD L2jE䐈 L#$ ӳ敖Q 9p~&pV0H+UZ6sL@OLaS!=/>2 &@Yt 4'J']:9Wja٧d1P12{J9e",lB9D >٧rj0IL:c3< 30EfFi;BNjÆ'{\zoZ}֓Ptlng4Mߗ>=).JGPeU)~!aeEpJqs~؇ya߳:UOEه^y7Yq^cU'C3UO b/]lULIyT$_@d0ݗ&j1`}b^bȭ`GU5A12 9J4h4Ap]M-l;gL׻㻄$H,&A(:`ND A8KN>k AF>b^Pd> stream x[ko\_q/ ߏ) A:2 $6$bu{%wH|p8s y$f9 yv}s?]#~gNAQD9>#d좞\ n:>zyΘx}oxM|=l& xOO9󑔳ZMgkBNϡ?N6Vx,;~oQjPMi5ok"ISUѲ/NX7}ϧYRw8c-sMM|6l,#*?^}}vWٛKa131D;BGAYy rϚxM|/@hfViÜ'2cfdCڣC)gMo&J 1Kz|s̭Cc0fv=l W-K5moBGBw>gC#..Ӗ eZ#-(½G^Q##5'4AI4CrZOҞ:Dti] ,%G ")bZ'e&-Kp]2Ctq6F-e3KR.}WYL|Affm=;!0W*CI6BL<ѹɖE-9?J w֠1>$kd\DFB^{&<-JG2܉C(fJIEp11_Ѳ'y2zq"-*oaUs:;Bnfm"g_2`8 z d@!Z3;R|fi_Hni36eko9ZB.N#>kMKj%S.!N**+94mځ)PJ{>sk 1)j^%wMdEʼbi׭ud#KA2Fxuq ~}EGxV쮴3#$8=6dHM66:Yʨ *6BR{~n x=K T%fW.N&42{'Dq%QÁ47[β[C"izۓVE$c^<$%_lFՐ0"4>ሆgV14Y_ƙC˩B黮Ǚ:.x&(G u`9-j_g|a)mZRm*آB_,!"gf~<l<ʚG,V-z "2UX /I,; W@JaJ(7a`*+6a%Oswᰱ>NXG/i|v@Z\l"+~\19:ag-'W!Dbi|523|u$G.DidD~Mfnof+nk- nŀ+w'*x̶Mրj}UbbRm!eC;Vo8໌LcPFS8vKi.!etՙǛPc/V-ٵC??d^:1t9y'kjkĤ^?~1pHY24]N:SvսR-Bjq2/9$]Uh^j%a\T9*e> :AXO#JUd/oo$FtT9$7y}c<)[{YtxYc !Aʸ]M׮vY]c±-W3 ~{we t2B^&՟喉՟KQ02' %v]!X*bYK˫$N%W/O7YHNs9fqL5ECEҐ[1%U41*[&H}]dI~.uyf8nT;>z 4Yu=񷽕9R~:DOInPNΫr`|.E$IPÌ˫rS}Bv&8zSS=`X+q Ί1s -Bq 'Zfp׮#Jk[VKzb[ ȽޞЉR'd_R9xQ\(rr XCcу|N '^̬kn|E0 uT]">t&2fiAŢ_>\IxزvN i Awtq2ۻ[L}G=}#fzfpy#&c7}쩘7MdR65n#˖(Y_#LmփmXHZZZKK:9tǚNM 9i?T}D-ZoךO=T9Es44ݹѣG9, WfFwv$I??+zָ>:QFY*a''2;|w}Ni;0N1= ,D ܌:bi-8|Z51_ީ`n|*h iW4O:pA&ľv-Hޗ ;m < McgodhM2s .(pN#GÇA_jj(>^~ Щz5 z.x~2Z=m4=)7R*+H6vXNVn#0*q.ZA;HJCE'|v.H)A˕JyԸEED'}H!ͤ֒F9UC7e'A{woa 4j߄^ [eC䶲s&pȉyxWwqJƪxkӣ:o!3)x~VpC )Pa[ih跌oy: *PrrX*YẢ2NDQ>x)%pO{KA!|.M9Gr6":D4n]UՉD * m?G/9X#U!#K^p` 踡< kꒋK>yUł[ˈ b;УJ̙WC``,y{O8UՁ krڹU(v_/Sk@58 XAO\b` `kQ|y(E^y vi$=M2 U(߈-7]ȓ`v5fZlSL{ -Lcsw< osbXma^}i/ OwOҺ+ߋ= ) %b  `T_>j!q5.@K 65IU[B]%>_iŗog{##9`5/W_HkNm]Rڴ>>r|ZǤ r}NUp||y|xO`[[*)R,e)vA(p-TK+p 9 ~\/45u`S NySq9lq[^2p.,y9ábk&bO34'Qn)4^g#' >e<-YB)oJXvah&Z.<{g uwmH,B㛫7[0w~˲BeQPZgxM_A@h9|hˋc1NA)Cm>d3v|wjdBR ,$05w۷M5mxxFMfYn¨pܣ 8063x2ʤm+7ݚ7 `lȮ_QxПuҪj=C٬Wpp2ΞaC w  ذg<-qQ mxHO٬2w bW2vF \ atȥAm]hT;rGvΔޒb\V-@jx18,<j _{ڭ&'y!C@Sˊ&ڀ0uV0*< ھS m : P{2J22u0X/e r^#{$ (GS5JBoJ: gL|RZ!SΠ-l +`)%w芟S'` 8%̱SvXuOH%8zHb @mad,ú T2l&#re$(}&C~y"0reO ~|LL뺪3@A%iW& [hE.Ռ 8r\;)#,1@OKWe5,TZXWSSO5F1܄b( Ox/@ vKt/DeUy=ecneoldXhag.0،f84b,셅}] |xO n|;V[ a>dAWyOa03 qK(OD((Aw-c닏'(_{&>)0vV o܌"f"[hàݤ =+uս&=9?Ϥ _8äJ1睲{W1=8R&766+V,W{hm ޘNO*B2~m3}+}Dc7lMF#WfP/ 9Kl+!ՍMLv9ix3 jtEg ~~gLzJeE9'xGAHƅ=]VG^,Q[W<1lHv:1ҲVYԦCr'T3dժ%cnhQ-fX$[;bJzvqURw%t+ KyFyDɹ(KR⥌|<^<b$ר&r$$ww|X)үy*-֥WK):08*R+۾z%0,LJ6-o r aQsMH*TO9 1)`0~X<9 `#2c# c"{} .a(Ӻ{hO2PIښηA4 {;#cdղMӒaDb"`%Wxj]$^8(&F{#; 4[5رob:8JfC5 oFqUydyұhƒ&VH Si&/ }&bT0_`y)< j+bڼZQ.k 05>K/ * o(c!v1@Pf"6˅g9;b"W J:Ī[0Ģ W#Nq,Ż-E.FF0ƈ6LE-y5B>EcIv !Zt{N:y@3͂dIS]en,g3{MUb&1B>D1 gSBRɪn*o)%a  mY ״c/`L$'Vyr@^6;e>Mw:D<T'4D0lcӆqXԏ gn`u}\#07HNwF ` KLs#@31,:wN{H$.PAMH;U쮡$c?ش}hSM&snL~0>my/0u`&D-Ũ81 -7i_'zsd|V ʐ`ęޏ9E?EEf?gv,yܳ9{RQH"{mlx6Y=!$8lzMmyEL&=wzQNI&9){'CdnΛs?j(═O|Z%V/lZzXfkxB''?{;:xG;yWVe0Ǭ*TokXk:;Me&;<=`=;};vkQH{ <$OVM aw>.Lo&bg̤Žra(oȹ_agZ>OX`Òa(G=ֈy;}KYdݹnot@lyΎˋI^~|8UfbX̏DF"Tb&T},Z̋?p^% }a0=3yx3^eC0-XH-,itv ugTA-R/S8p .& Mb1i5D'bt:EnkBۭƄ᯺3ed 'TN0c ɜ3Rw S*ּ)u!I\^6rUM*U:A`Tb&j5|}ۨ~{·VX>(AH4wMvKPY7LQ-ntU_n&6f*4d9=#M{4GiËiŜz {eXeeS6tG&շγxۀ{ag7= 3)u=t*^*ȬʍP2C9&)EOn7F 53Dbr{g7/Q4h o^y/o*vr U³Tb,'xMRt1糷[.|dBY}bj"Z6Pd 3&r6Y>JdI?YkE4Y1Lxl,N\xH1fV3c6/wr.&Lb#xVdY>A5l{ay?'Ɖm'>amp'y"F~g`D28Oa1DZuVڰfrvm}X3Wex2}C~8o {أN+>%6gmذ,dX1XF8k-)vc0y+18̢omNFQ흹:[Qڙ]_,=WPlS;nҫjj:Mk}>[K֩~}҇}3os w62VځfYM>FOpIX6Z輺,ih!4=0 9dpßmc3^Ŏˬ>$Ta{[fiىgoAl/G?vK0GbZ~um7_}?;׶טzionxnJj 'mui>;G'V{r7ymˎ-= ;YpY͖˒ӕy4wwܹfkZ&, / gm˻V+)(}0^oL6_BNrqgtܔ4(g,>``,%3$JS-(kᬃ@YMIJ@/ Ea$'#+)m,`J*ÈxwɩT@ [X΂ҩ@|y&lcIC8ٓ=ph{8ۑfw{bK҂V3iJp,iw'$z⪚*r MKj}xMs wF)BEJ۞S@aFuj%#)qq!B(*4(1kIKWFv.xN \0py'eu~-JXla*^-L>4VIRv7$uMs c[IIL3m* +X{M3aBU#)n0=&Kf0U|P',S؋@@$~: Ԓc2!R"i~|.pA3t JJ.y0AK\B9IΡ]8zD} CM]lŗ#Hq`RR/FKP]T|Uu.Flx8)lpBH'!HQ=9p)cpc9zy8K$ODŠ>mB $4t%}oEHXBE__QVhI1WM\5))U^2I1Wftˀ~MzC-^2ߔ` TR1v>W9.TFY 7 qF1WEu\sUf+WMsU&gg9Xu,gW?*`@5܁~rW)Bl;S"Ltl ?c?k"=5-g$KЍ0S5ndU(wgv]'2Bȣ'=IvmfƓja&/_t|1YtJ߬ X4~CB="{P:~Y\i8i/c=98Ia ^U)JӓS6w$)n1c?3 nز@~:޹0@/Eƹ c҇l]H^h{rbg8/v5";㑥G`Fc/F=1Z-QZࢌ+:z:JdY&o:o\P[ 5wj솛E=D;ʘ~S!_!w2V&9:T9SQ,$Ț S?aQOM?בq91U{IH;P&?> $O1/orn@YQ"7>r|Öo5 3=ę4M!ɕ=DeM'XJB$xRNpfwZW.)0'jDzBex)K@'MۀrSL2z^*oR"+[ؤL}x%N9=sI#"|E )_{J=pCgS /IL#K28Gi 9e۪S4J _oGdfږO^S<,(Iڊ%Iaq =Ce,~d㛣r5ĵ㹹nH4mw*vvf[Jn}e0Td!Br[O=>Yvet^?C2T!mEĜwꬕ`yT۽WηTp[/ؗkߌZeָ>r|_:>;>z ? hY?CȫZx? # }JTaU_n4'Ba" *y ^˹H5RoqƯa+7endstream endobj 211 0 obj << /Filter /FlateDecode /Length 25604 >> stream x nYYR$bhs?{rnm7r)PCS uP2^P3hiQ)AAQ(L˼{Y]9}Lo{u{۳n?9Ɂpk?| _'n=yutAȄc|3zVG:^OSOpv#ӳ|Gʧ*Y=Bgpixz]0z?J;׎Xs;}.}e\ބ8O_tRꑞs;׏?Bcol칟\ }SO?EfcD|b>2}fc G/RS5tZo/+=vh{,qzE<~%^KO7CK>kN}6}6K-79HQG;Kn5[\w㋡Oӛo=E{Y=_%q~&MF\w=O9z 9ptT[f+ ۞sÊ.f7Hd_aoi$:GWy^77sͧ_VȩF퍀S~ްF޸=ॐJQPy4`Gx~j~K?ʫh7'ܼގ)2iXQG_Tbi,5g:yN[cu KVy(KHi;z!㈣S8Xbkl g%$nwݗ],4 }vxU^>޶>]ذP n. Yr.蓧1ynݤ?5CB]rּztWZy}D~emTr{|ޜWTQ.vkӛ?xtZx)т򶪽43e!:ױ#Ǭ~ϯrbK ZzoYyH+u>mX6ֺxQ>|NiS-yRxa%vsӱr]y'.Cw^hqH׭ޥeZ/GWD[7nP܅q<7~E#`|\ѻͲ{(1}vn_e7-nWW]o_ϻW/̂mGqמ>>g}|WH;?߸{U/~P! [ s՛y&K;{MZ[?o}GjF9}xO“ɬ!O[ -ߴA=h㎛N9wkՈ)EKj-g#%Ds,&Ѝ7z7ݱ= 㬝JF & <}[.qo'ʴL$yLKA7擔J8M pF^Y_F 4c{fz?B?@K~.w1yO{ʵp >nkO;}ܵ|>鑏IwtnxmwB_o}Ν };Oң}3{oyo.|?y7g}чߧ7}wQ/K_]O_|}wŇȏ3'-?S?S/گ}[xٷ~뷾/w׿M_pY>m;?7_k_?~_>+?]zk_<~oS5?ʿˏww{oOx_{/|{S_g?gԋ_ƛn}Oҥ7~7}5gg?\s?c}9\{G|~[;_G_>/wg?oo~__w>Ko_O~o{Ooxx{W_YuO?כŋ/x>{ߋ^w_xOc}O|Ї?s_g{N_W^ܷȷ}W={wE_!<ݿO͇W-|݃?o{3奧'~';k/=_G~ٳ}?Wo~?˾˾/~_?vo˿կ~qooQx?6}髾.|η?~?[M>KOO_=~ngr\! O~]]Os᯸ᆟ};;oyŋ_w<>c~7{ۻ{>.a_oil<|~þ?OЇW' >=9'oП{_?§ɓ/_`nFIę&ry"u֕Sqk566#k9W_[ӒH$=Orz&R:: -*Ez' /WZQʐHO*ErRdJro60c{ QM(gG:#X<;8J`J=I0S$x8ɡ x@KlNoMV*u"FopKC//Rz=TɌo%z̎K̎TܯЋ `$W];hS&۔J%lԄh_"B˘4ioԖDG#~nX$k){e8# w;?h8pp?t)urSqK^GtG]t%Fߡn .8Bo!)▨]a$7n`q\ZhsMӅL =bnF'&KEIFaEs XަZA :(`t7m =@n0i<h$&g6^V=ɞF,رP ?=+-e^j~.NG9\Oӓ*M:@:vr ?] 0D0EÏg^ig+Xhjwo@ĺ7Z WIӚW2@hZox]{22jƽ;6u=I,?s"٘S.M7VnN DztkN73^bZiAo{г5z[dԥ[Cc_0SВ'Y7ð!D ֶNїhBjh5qx|hDplGT&lAyA}4 襁`['#jK ~m-2mӢёh[{%GK-mk!ZҠinޒ^#zmc-Um6a-lS4(Z4~% E聁:`k#P+Đ` ZxYDr?rڠ-dлA@:1촏7 ?@iűI=1Mc9b&RDOx=p@[V/cۺ}6 '̓V¹H'$ދmVabDhu_Xˠߡ'iKopj(cgAW޺&zw֊ְѐ>6>VM:dm ޭ*"P԰T݆Cj:v^-` ZںfG6ЈKD݃yHXh/ ic{+tmegJliM..TMsmŻsmݗIcF][As)a spm}\[kCeBMDr}$|Jd}ښO@܋{L6<~\ѿ]EfUlW zΜUѐ*2rώRdx,m*E*&k J7{`C޹rgymIXL,+V"j8rVoDպѣ 2NVGi2˥!*>,X[nJ<&L8`1jbRHwnPcy;#$BGL F?k W;MƼ9ŐXh(:Y#Ή7[B HoQD$x)]rxCF33Y8g>@7xv,cs !Y( )@g#!r^FPL^yKv%j(Y+ްQaҫݻ)6yMᣳW|n݈BJDsHc7|ȹ~̽Oe^~#KovY,n8@ilk +!?loHF855mKhȽj97 &=-i[;+OIofl KI|ZkzP[|^uq9d+0 dcHjc`ER@-N C|%it F }xZ.KbQ09GgC8Lӳғl+'ܑꞎn,9Sx{FHH~ ".^19pȧ7Qƶt͹oμNAVj5,f'uAj1KW~x;COoKO~xbjx!{K4^#x `&tA a ^5uL(F+ VvH{h< Y-ykdcއOi3[ͥ/ XXgF}p{AY9RFA] mE "ȶYկN}`Y~PmnU|27_}^QN쑤~a U8UżgO İj jY9Km2MJxQHؚay:vdm1D+cl8uL" h'-Y0>t' G9mG*ݝGwG AB?Gxx 9?}K,}J푚O;}MijWEHͫGj^2<ic"7nF{@#-hsޓzƉےN(^DBZ.\MՇPh+2&ijv\]]sKɺ_H7z;8GmdvQd-l~Kq<ꏃ%sb0 tGi"nOOmpk+g X~3 ?!AlfNAB=sE =2eA ed+^N>" 6xU aKB Vcdb`ȋvGVE RY5ep?2ӊDf1/ okI9ot.ﰈɷ-^H>p9GLaϮg~uYxoxq|Nˤ? *'F~uJ c_*/8eI!YMXma.%W%qV Ӷ6 ~mRKĂSLaZ*%ߟ@_x B{H)];bz^U#41A2ߕj䑹-(㞫ϗE $/U辂Yi`=78](gu/4n!^Jr=V$U/_ +ZCnw|m|o}?'k{Wh}]sz!RHɊ˛l˟dU ؤL]˕dfUI\WzxG*yVwK*e.m.a'߅P^hD,#p*=J㟔G51p2X]D5]8#w3pEbs zƪ[q^1lR]m$ ^ Z9]WIU/p7ͮ6&Z|v{PlSzN~\㼈yt՞p&KB×^w!nz7wZ_x՟{w\@LLNqt '\w =f}|x]{|W(׿/j:upEdP./ XU˖{Y !ťƑI`v Wp@]evUD[W)]*EYUa39Z%1%UF9.^"8nΜ&cN[d;F!4A,c6 ď׫Irn2ܛ]8j5WM;ay+O 8bw>iywPFLn@:ԃK{߽CN~ԍmoGfdّΓ}T(0UDj-t9,FRe;B.#Hoe= ]S>{~3vkxunzBޑȯpA2Bɂ ?S<#}]Cq@Ôt#X <I,AZ' !Е}9e;RS%}!2q)E`fngo܆ >|Ce&2?8D%$elc/A{@+lC@$6H8Dgo!C>"ߢQnFwla!F 8mx=v7J bHN&O% pI&pO#Ǎ@8D r'%(ؖ1ӽV)GB~U  8·B1IR(7 #&XQtD(CB ,1dd2HH%*AxDDˍ1Hs+0F # RkʰA$(yznYS'Xi&XFB?D\?8CNP(,C?@OՔ)pHGouc 1РGT8hm08яPZP1!/%dmoj + Q eBHI 3@xB ;0 k KGAng6f*A7RB'*3j3a60RvfydC#Ԧ:u:| ,Ĉ dd631Q\ҼrbHrpOy1HdM醑0a1Oq #InqL߸1TSsr $ּq (Wgbŕ Yr ՍY8D,b"c W@@So%h?QD(m!(2܇myی"qlE6cf#1#CV*Muf5TZ↔.m??u3]wʹ˶JVjRm2Qy8Yoq-fim_4og'[Y)5Nxe@ %oHeSQJH PÆ`l 5݇iQ#.eɚ޼ѷ.%,NP EB <>^bo!%?4؏Ԡx%mjQ'$H{Ԧ= ~`uwq (Ό0[jaEq^R됔6 5W#*@}H}1q40gc$"ơOo{g)b@0 2 sM~ĈGGb`^?(\Co"+nj6$tQ`p;j ϖk(w#$ LXED,+(B]‡1thr` af]}`Z ĖjOp03i{f CۀS~;(W7G&J+0$eVQ@f7yGaz07zf$/b7nQ0ĘMrAR҄=A4 qCĮNӡ((_8 @؇v$Z7Qqem@#2~@]"I(h*K,"TDT_P$i# v1i('+^FE#F B~@b7pbVYddapȸukM`K|fDT|gZTfyaef[115Y,Qxc`p φ??KKEk.rMei(>C5!iCgJGoljE*>O/܌xzSg,SAe^ekƾ隞hXJM][xN_Չ&YҠ)+,k>="w,RPC3|#lq$ޒTB*/h;h`t6 UPc0! N͏4 *ܜ=ig%OsJOdg7b(4͇֠ i1"_9S@7GfNk-lPOQQ$9 (umԣ̈ p@dSĻ Zu!χ]MɌw HAQ)H& $H?Q0l "G/P#wv1iD0 ꠮(Ui9#CF$K G+b;x$1 5 nfhG@Z$86Di+?MD#c `@^, ibD/>eKdB*(JI"'L)FmDH7$## lRjvE_ RsTO:Y4dts[f>A4f4&ǡ)j/H9 #{F冪%jA4i dApPB^$FfX4)oOh\*RĉSm3h "j>nU뗡0iaT!Ȑ6)o8 tLHF(~ӕa23;hZsd$ 6̩GoIoH$n1Mef"UV(Dޣz*ꘒ4a"δ^Ċ c:5KKF1GΌhti(䍪ǓV^]FNa?- >x`i6(Ƥd'KJ]~'\ob%ʨ/&D x64"s=M4K:>>RX!RΦH&cCtfXM${/e恭WSa#S )g6̯:V\yW h2"0{(Y-I U>Bz,VXx5ZYcCZ%tVD A hā[ԝ"U킹jxpvE45sZl\y uH3д,EF9>6gΥxE)qXd'B38˯[°-3hVkdkْˆ,9}}H̦EmfP%npH15— ?А6,dAƱΕñ%/ #!0tn +1DlrČ$~˱K@$A#qeght[FVD:"ZTek8,}L[ ` ff<;d$YfAg$Qv6B!nb8OpMs.*Ö[*Kgظ{)RM i/Ι| iiZTz{a+ص-ȏ`O 醙D!I)]W;Y< ȠTKv!qa [.$sM@O $S5B1CU+1hU:%pN !a% NV|U >ʩh$H-u&DbI!\58 -%QdؖE@ehhu nɕ Ҡ_]cɚo;e`K[h2O4T-æǖ|G&KbQ*9U~$rf}$9AH`!&S -(D*MDi3 jcf"T=Zh ]iNEshF&+c+WXCۀHǞO`iD"vFDNIsC CMڀxԘO=7-I S7Ո YD6fhLӲd($q䖦SKے9i$ J6w5fӖA}IvJC/ֆ\ 6d͝NQ)E-mYWؖdɲMnu2$uGκBcې[qb4q܆2!58MH/nѲZu6ԙ]ֵඒ'YТ2ڵVZ{g?B@uiCӸ!a cS{S;Sػv$}h?ըuN"q;ȒFk@8xی-H?`ݠCFE|iQR k[ ŸX"P`& cSr+y$}*JP"JJy]! Ă2WpM,"L.M-W "rЄlMi2 G%xǃPWѪ"AKH@e[Jd-B>@,8Nn /R-hIXVv9Z{2lZQ,[Z:,o˿PM\#I`+z3ʚ8ؽū<_?* ax bt̕)H.E H*[ HErڄ 5ɣ"XɫfV&ibH7T=^&H:fKIĺ=+ ؓi}M2]Z |,rcIgPgf&i1=tɴ4JC ;N*{hY7}{XDFA]Ŋ&>"&qn%VEk>  ]U l\h'Cwvi?·^''H'jOl?hy陰oyV*7 VΟpOp&%&>9C.9w75Ox CMlqE{턅{jn5Ч#fIG?$pQ8Xft-Rx@Jߏoeg{#{#_"">d+ͷpE7Kx^t%@ ֱn3_pˆdAHXSE*-e}.;PSXyGp2zU+2\DG)/*3E@bx0_4ByDE) k` >zC\]!lqWW!<ʦ1])*C#w"UpJ*Nٮ\XΫ|ȇF|u@D4{BWrD72 Y!W U>΋zYwM.CWÎsJ:sndÙs`+W4"%ߛ3FxX8!R@`/Uv:1"Y&~.rw=Hb,!몲AH0H`  1I~]dc&{~T̎5jCɊ!I85sjC2 %Y7bCxdXKЬgZ5|+Lܴ#CN  cEq@ CEnU=Bt #!Ab;/D9xkΎd$qCݸ&h#fA!l# g$[# ےI,#]U}f= GC^w.U(XC{ H,D,x":Fm}G*i"KlnɃ YLct("b4": Z4j)r]'tC4FPM,XtiV*^[\!b#"iD._-hV2=[uG0ǪLd + KZlR.,xdpB3k֤FYxp.H"!u6sDāRaAFzI "۴$EY~3wt9M5W!QBِKsdr )8^E+޴B:;! i(䔠WgE8?Ydaz@,ck'F0JKyҋAB‰\bk |ݎǙ3G0ƎaN26TNEFvr'ِΣ5&8$0#|p2'OPeǓCYG</T>C^`',)rux! p8E)vv#; ". +lȂ;Ί4~cC̜c Qpxe(w_ /D s-¿L+IHe(7E"-b1&wN|hti}(C+Ϙ|#v[JPܚ BǠl~(-3Mw2~+& .7xC#F P޿UK@yC[* Qޏ8bޏ|HaJi<*#~~(G|XBb`wrC/]/ĸvccMdߐI5B= iJ="ȗL="@BƒQx)[f8D \#;- `2b&Zߛ 0P2q.`!f$ˬ!=ƪ!1+ !]bx@ >ajxD K3<VpUc5O`* Y.f,̀U p4AreXP̻CV3XN3 Eȹ1Ch2b@?n@Ӫe8D ~WCRY!C3 {D D!d!1Mp3,)P-iQS4<"f 8@ *U=)'3`ADEX,ɘ0j\` tp`l#M!+V ayX~ow yt"A3/ tY PŠq '?BpCԸ0 h8aNpA2.buᄅpB Ɇ X8!B Yͺ`-o],dZ{,4"I,"ͱrͲWX},ĕ 3030?͌=X-!JdfUhݠ*bVE((\fCfFX43&bfP:3c"̨ ;3c!:d~,23k E,X tJ!4 9` ϖu1NPK@!! &PxK:#G0PdQ3ϛ%h͝ PB("kagaA=5XbaĒFL([A^:en@c==0aD}pz7KU~LS.F \ ,THBat"0Q]Rb^^)T.8]RSqL1<Ӌ9a(9 ++ fYWPJ$P}dqcC0C9J%cdi/|%Y 56qEp7Q/ J>yK,DYٳP/5m2!fV,"\_Ogm()C (1KrKH"$znLiiT~`y8*#m;QAU{%s&{GAMW|sQ>!A1~"!)K.Da@AQGu lzɏ[vS\RaR'ri.F&Xԡ2?hDe2?v"ˁ[bjϳk.E4:P>r]BPFssyQDd1 ¨kD֎(_fh,Ԙu*C".cD{"yg`tf4D{B Y f(pnz)Bjl_Z!ܪAd1VICS98Z&EjhG:R*(3Hc,h&(MZcYbb+{3d^q}: bq23P40Q*-dTy(y"hDQYQGZ Xn - _"β' " J Wh?T_I+j~`!HӺNvKȇ溂| "YC  /W iY]3@ Ct]De\D;3h|D-*h?t430#+g'p-.mKjv*?R#<0퇑[*8EDUU MoApo1[Y=`fTiI*(|w,Iv,O0C8cn($ !J=OZp`++&Gf(Ȟ᣹A(nDT0B1)h+CY4!(nTPIgzrp톤.rYt}UXx@-Sݍ=hG\!(uy*b& Gt\-L! pY,~F9*!Ic OS]Ye|"Y V&`9 x  ]:-ZQ;6@+*E,j{YI 7MhI9KEդH#rf x`r4ǰ}7~ZC"þ& i2Żj24QUA"NQ&n#iH8X}]{QI}]Caw+X* EHu jI ti>) I'f J>y("! dI Arr%)2!dځ}Y+tj+t qN'bM"aM (:Q1u^Ud*. C(q-Rf{dFn&fSЮ(/nTIIW!:Ҭyæi=ԛ¬JLSoama +5<],wSYrR-3U!Ae+TVg!䫔5K5+ LrZ܋TeMlu/fkJhd$85,5V;]4`Ί9n$NCҀr  ,zl8t'qet]8C2: Y:jm5(u{277$U,s9@)ͺf26Xih]q} SOX|H3-)i,k( !#VK?X3 ib̚!8}W~ XpNyYt -^mCfIas,X9hU2J*8*bf[пga> èdȋdÔ2FnBX cYhw'&2ڬ-50VZQ#01gfte@κalغ!g-O, v*ba a˾62Z4%"8Ksz4\aU~K`#;ya5 ocȽp W%+FMDi6.4!J`((:tjL!Q?rM%Q $hD9H*8"!SM Z);})`٢S&CNYS0:ՍN-DTŧ*k"TQBeGS/B#TUP9D U_!J:|jF E&TBN q.:%jOt43W՟YKj|oe|vn|I98|8CY|QΗ4sq>(˪κ8CY|QW5kq>$]!dN'i[Rd.ydXbgGQ>;w|Q>(˓9sR>dY?M~jFj$6DI 6 F3I 2|ʇsF"m ˖3)GMQ>(d㛀#|eQ@%|‡,!yF<"BDyDO]νoIx޴9<"to;C;T!BjbD ?巅y@&v9GrhD!BжrxEk5}ܮ9@I -vBT8t[cvDL%#Z2J8>C Q;p]6J8.eGpFJNݒ6J8>'m[6"IL(XXQù:%#BjGg$} NȈ.\BF s#T(TQ¡U~ES.0"\T"Mu![tD !)@D#8rQ± % &\plqE." %R%KH[jxz]38X ,L&@d{Px1"."B螒` J/j$FzIbl!CҚaQ)wERL"c9kD4"΅"R$% sF"ݰ2p2!"EU$l,I"B4A'΅^(\xHSt浊jYrڥ XA&P EN,R8-z/yí!"Wi +0%;%OIhmว" S(\x,Sȣ%fl5d5K˃d#)g& _DeHU|f Ր!@UW$XHGL١LM١шytq ^V. ?2 ϦV$[p2.XhA(=ڈNFb<\颅p|N퇧$K|dDj[S@yB$1#'rtiBWI4tA[و\ F.S,#B-H4-רkl:]cjAIV"N<ĂPq%6"UXX˹ ÆWRO@Ⱦ%=I W ygSX' ޒI)4>au iQP(`b|2!{E3 @dAYI];Qݑfy 4,6u8$ >dHq7"_=K I~U tK0 Ĩ%c%cb Ԏj?{Y]stєX㢳jyϼk7ԠUĸٝkӻ\gyy;j.77W~ݟ!36}-;|3J=}-OnJcMtk3 j/4ɮHTzGmg^kSq^k3TDGQ$D tQ\ݣXL 7aC>sB0f6VNB0_ϼ37o|fEH\Gӛˬg=QW=2ٯ.ST_q R\3^VzsWܤeѣ25sUfyA/P\gy)C!/Q1k[.FPPD tWǡ돮"pyEg=2D9R`dh;֖ |%CQ {DĔxVH$A+$bggMr-H2${G9A_ xpH;Qr2T,dʧ"k7@ԝ%DG1M3F4&4U A3$9 B6UVȦiihG`[ݠQ$YFHei|g{85O'J%ĝ =~qg1 } n d C}HR&C ))Y,Z"X8NvfIOH=Gtṯ1g`cHnEba8e ,:ijPg5qH2Rn@ǮIΙɊ%E6F8!6]PWAgT҃.Vx.Z9VCesۺFVAp隇ե DS~s]nELQp>JWTJiEJ9ʎRS9GSf1MsCBލ@`gֹ#rNTVYU As㡗PrG#(+8p3,7SpfZ9IOMr&y!42l~0Te-儉a[bǐ@tƮ2a$f2 Qm4-N' B᧕ YQV=(=c1 m0qG0ZjvdZpL#̍ېMbcZ8`d9B+?ZA J÷0Q.c/j^6"j*+;J}V_;՗,=lu]i}"c]RfZ_KCxU!:k(PFg*Zpe[1Op/|34z`goIiK*L]j}!. Y*/TAׂ`SP$$] n("/FHSFl~V;Gڐ,:7RQnUIP9B4PsRRr*3lafJVp.efJ6ʔI lrCi>cdh]p%@ې,Qgf\&[¥QDF[iAڐ䛨 6*mUM)=K6@ m9܆mtRu~v(<1D!_(Cv93j'[Q},PH G'92ML."92U;#H=$ "Ȩ{X@g95&iʑg҃I֬#YM:<)f-"h:Ğ9iHDUĩ)س:, 3z+ mmS3ӔEFPA5j s Or9ykf.S^i< Qy: s #]qZ/tڅG[/fiت +]v9"Rqn7]>fHma mYI/ff$ĞD]p)j3%aw6@Y{#fq 3Ph=KKw gIV1jB&GuJ!P͹/hg|jcŤ9Iײw43[Y`-.fWsqB-)f>LRʕcbjTLrI҄5e!{y>KٞhBOVH=FzBPn i>L D &qO/#bcoGQ_<M(A,={Y覷G6^hd͛?yé~4oxՏۄpu#H~BȚKn֣H.ԏBH_6ԏKIH #&ܽѸGSADīkR4!?Hendstream endobj 212 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 329 >> stream xcd`ab`dddw 641H3a!O/nn߷}O=J19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU8OB9)槤1000103012)ٽgf|;?̿ܥ;~3>,}} |g|Waq6;7<_s/wt\7Xp9|zaendstream endobj 213 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 39 /Predictor 15 >> /Filter /FlateDecode /Height 53 /Subtype /Image /Width 39 /Length 1223 >> stream xV0@7ԥ|+5ҖߓA0>G!y{{{yyL&F5Hԓ- J[ >==e[k/x ]ZWpwwwyy^ROOOM%0.\]]M:Vm0K;!@L)G^\\HEx*W; SCY[[LNX%h fʃl%8Ys DP>!؃ A6'S.Xq p񯠢pN]7aR9wJhVPZs}`Lձd]x^*O oREҵ`Pbw'E,=Sc0Ү`BE *O)gjPP/::0UgSAPL!_THWk S;onDlT07`*A}M %3V 9:0ʬc3X=bP=d=T {jih jTo±)[a,F&w\ Uܤ7<wA,7lUgLGK4zuS(K SU›0;o+y^47nd޸=;ʕZMV6/:n?FD< [ ->;U70Jk|bGRNTk:DlSdg0_B{%YhM$T6u[^O<TmeWy'aendstream endobj 214 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 53 /Predictor 15 >> /Filter /FlateDecode /Height 39 /Subtype /Image /Width 53 /Length 1350 >> stream xŘV#AE%<۔ #$"&!က/--TAWuUooov.?<<ӾNLLЎ 5 k4vh? {+ 8C{{{K A`vjb-L AZP+,M0;>>M%!S>"eKo,L/F 3|lc5DUD [XX ) L?\ZVT%*|www?䛚N("d|t S?J0)XA_da8/Y~d28 bkCv_+%cnnV,n~ /kd@iQ>S1eusYS?ĺ|Z0\oA.+A<<<kqqZ֍ .QAࣃ7!@r|Vamav{{{u@nB6;&*/e $Ƌ];'qсST/M:~p۬!@D<8I_&5|H+/nGo;WWWGkgc~r (*CM^vFߊGVu`> /Filter /FlateDecode /Height 39 /Subtype /Image /Width 53 /Length 1332 >> stream x͘9R+IEU3,ER܇:Y% ;T)S Rv;U?booo|sssKKK?S'ߣ+d%\m?nggg|+++?d=klxbemEfZ\__nыeBmbbSSS̽2_!>v:==mG,466l ӈwqq!@+NNN%>AFL@DoC>~uUnϏ0G\^^Ex=ܯbMtq'%oDsgaL;[7i]@M}jёB<2V,f;y!y"< |]v>j^!@H3e)6 fdђ=ٛ(,#MdCN$Ѷ-C/hyrD3ry`YA-SctA[_" q4_j"eNJP52>f,gv_y722Lmk1t e#6 2V:q+p.#OP77ޞ /#ycWRjS?qAB9a~øJŵEL^&ɷA{:BƷ-|lLpޔee>Ҿ t꣙&j Ԯd^@r}{?HHr!vehq̛N|o˨4-N~qCO>Vg{4pNSB6`B6'O2LRLR[[`2l?? c㡡~gJV^>,^Uy4=*䣥dʇ9 >kSy&؃ogg̑ژ? v0hA4"ʞOq{.[僦~V2CT? ~ VG5?sag_CиD >,xm(?I>666ϴ|nu10ʙa_٪/C67B_ɔ֪I_?>/Gg-TQV_2F2g>ƴeBe Yc9Ҷ330k.?2G~~endstream endobj 216 0 obj << /Filter /FlateDecode /Length 3705 >> stream xn]GX#` H޼Ж6ҌV#߇nkFj`.۱?׻#q>HgǯNak黣R[׻] uV'R*/ѫݰAy;BhaD{G!'&mbWVw;JvlaceMf=>[ћ] ,%Fi^a V CEuu /tiwlBԢra%nwvoqBFnwBF'BDX) :]x .mYJi&p%D3XfPC"`&67Z_h<c4h0`PDDkmh-!κE궷F7sb"tt toLjvTH`fL.!l O89A40\J]`>4$UR>87nr"qk_>>QNO pw@˖ 8G=Q;wўw6^; {%/5B(=@A感W3eͨwI{&I w qB+Fժ%zDdIt$ h:jl6Gusae/E3` qfk6,@Έ~R M 2 ߍ<{3MnHη7) !:|_p 3ޞxA`O9Cs\k+ $)+S3: BE_4r?m;;NQ&'tFfɅN U!IĀ)*zEZ]fM7$* =Yr@# ){!z2 w|3~>.-r ^_| ya~#ٳ#Zev[b_!FT :fxŤ ;M >0Xg a=W_0^TQ<ب ;7ɭ+&K]|ޘVg &QLy'&79${br:#,dM zu(cQ0Wd;u;n90ֶVUfLXPLK,lt[ȃ}&Ϣ'z,N=%P><aK&RŒ ¯`ex狕j~T4y%A6s̩܀;7gԃXFZLiI\5Q$Q٨3WO0"\:ocSܯȥ9U{%p |`*V=o|h.eOQyw g*L8= 9 ʆX i({X3$&Tm⬩(CnkNf/4ڪܻ,)j%|MXQ8 Er87ߪF궏h.yUMu7MtpMb>_u?戅>2g~4OiZvФF;CSIC(?VYcjb$FX̟!Ij.f۝6(pV7nLyuzޝ"u2#"**仳"/if]DdvE K][Y}& çByc ,X~pAI%PeY/ UIu'l++ 7gf!%8"f?8"PFa7TprB?͙C#D9$K =!LrWPd5| QH(߹\' y㉍ٚݩƏg%Oɟ|l=DM;eEzz[>RCd*(7 M]&N?H6bx*z -쌭NgVlLgYƺa놷ثV BrSXun Yٽjasz^OyV]eu@SlA,Zs+[0y7MriU՝e56p<{0WM{@uhU^ba1~3CUTԛ8.i.\V 6x+[e_{jas%!:ԔJֶ:5my 7\͚d4Tջ QndSybr\$;we2#5RmM}mi]H!Ytc3z{ӗ!e1_iR'DX$8 d.^X&ڏe~IC`}={z|$tM%BZ(7٪ڜE+>! _tطIQ-U!m<0):#> stream x}ۮ%Ǒ{y<=e03l G x HJ&9X;"cEd>}IJ|>k׮\Zn!'o_ExË{?>}k: o/[~+=~7eR1>bLV[k9Ƿ/ǤYF ?˭,<~~t3: !>~L_ ĝ ql4f;Nt(?x7yyZ73g30o%5}J߸#/QXbm<~Gd^F(Wr׿ߧ3FȓOBdž0 vyflv}c}??{y5cbzn !e:N~ 2,t46o@F;rm?CBOb=1u'?0!}M4G[Lt߮@rNw3qo\oCz_K[lQ`ck_I2߈]O^NSzktxr#(v&, lym(Χ*ȬUUh 'e}; NXYCiboq Zcx[b2Lrd* ? RY#;yOʍ邜1t I'ҠG4_eEs_˿鎿+1WLol34x..LBu6!;Vϐ7оEtw^)r/#7 G?!'vOWZe]?|iңHXLYF+ "׼8Fhs$fIvkl_ѻ\%tW4fO)s'X7Jnlq8""34!+XJ@U6>WlXR̦$U .u8m'77IB}x:vjY: ^nbaåLO?~2(@j '1.-?~T.Ocd~~^`$K.0SΗ#()4V.j,{|~_l-^lB3ēږbs7 4?b3˔̖!?x oR|Dz*c? 䇃݆.%JA_sﶟkљR~Փ_/Em<He>}Qf( r#J+ x܁].|HYDuur.%K2)G y>q3]/(폙D-' 2|WG)8娘ibG)"sK?[>RUc(EQ-[(EQwFS()Ӄ Ltj(Q`sVE/bb,*FK9[!{4;;כ]I*AfBWRd>qPm8R;qp.Ɩ,t ?[&ҵ=aJHjQE7 dgM n\."osKWM6w|!R+Sh V.fzd=BJZxϑ|Ŧ"m4d!Ч/}OWkϚ'Ʀ+CWQY O713 aN:<4:yicBkӟbo4/ҁ 7BFgt L z'BӞB `v'%@g"?CÔDLQ=0B~-٘Ӹz"t] 7 TB286!2s9>1]蚯L?4O&ާ'n\bKgGt,i Bzi֋1Y Ӡ 9ikA~&1s\?젱RL"q]B"gZ<([d$PC9x׼fB8_@R)+i#LRDEjk^6pVJ=yL #i-Jc2v f i3҉}C:eOdUxheIh zX TȒj3-.^ GwFhOAD=B댯* "#mEoKF+Gέ;^HMH0͡MӚZHMS1VA{-%<B!BD-@_AUOGن{|6NdhKq:C拊k;z"ebwFJX[G"?iE>٫'eWE[01BxșyHˉȐv,Glh|>v:!~鱾IS[B4 6jN! 6b`ob#* * pN` `J|pCcv@>؎$a#2뇍~Л<#A:~p!)!rb| @CV!4sdp4DY5FTCп`V h:!Zf#kI?4C!8 QBI*Pr( @I3؈* D؈* ?4* @I!!0MG8:8W@G8CDIx;##":-޼D_ׁPYWw/"*/EC "*/"<""2}4/"<""/ /"<A/v!"'z_(0c"!D9*!CF z5B&#d_ohjeGDF4yٳZs*#Ⱥ)`PIeCTFpSF(2"<~1lAcED{""ڝa2R2;DV/[By6Na-g~ȧyRO1SQ`KxDDL+ny^CS: ͘=,]5^C ymT xt L hg`gŠ[wsEaߺ+dJp!ʔBM`ɒ*˼-D5_ֳLa[FXY"\NׅE#XL Bo,7F*&?R*&F10,F1084#l dZV}@l>ՈIv-wR!*O(r!-1[X. yU.\EH1*6p $8rUȫ UD?bFq4[*WqF pk !bT*{pdZHCd3K "~ȂH28hdJ6!"r]iDU1Wh5R$a]7xaY-@@R|@gdY-7UiB<@DG%)BS$e!$e$Ń 61͙N1R[BQTǪDsxei<; H`;-"q?GL +@3e*VTȭ"`WqtsX몳z/XB>Yܰ֘zWԻj1!XXf%)! >2}?Ը`GM2KY<Cאg!ݶRs[dqmEYfQ^wf&TEO T@ɍ/*Ge]MP73Fh2AnMXqPD8C\WwT4U#-P9N9Q2/d`ce983"kkYIHe ;=zd^V ("5i<JOg0|BzD`H EUюN- ![H ⌉+ 'H["M[` dvRE{R/X,U$1'sD,0TK'k]HČ2'& TY±EF,M7̩P+c"R"~?@.1&2d HYN:Ȧ57VP' ѥ$jC5d`> @" @qR4a(aZZCq 3 i@-,VM&ۏunvQ@8@S͔3Ϻ%9q גM%dqd SKY|Ci!YG4ʼn-8CB NvA DhqiгSԲi~$ hEZ7ƅ4/)N0*+D)UNlk,՚o Xd:04|]5a<-$I61Z!)NRnGԶօh6MyDmvDm["-A>%mH^$# NvЬAQI0#a|cS` OC6gH#=,KxY^|Mp+/}*3kYn\ TQ'ڦYԡ`,:re{R$렞$m rbl ,գfjE\XӲi'o4LSd6 Nc!J ,v@8ӳQ+.yX`im&zb(N<<Gt:+qT/tغ:'mvqqC⨝ $ihrQ+FNA n(NM͂'/aquG9DoukS, GuN̕d"m^] ]v!KR|5zLGW}Lx 3k  BR}vC$)O}H,>AS=}K {:XjnFPUZtz@kK K#`!R#jRsDFTzr`ASm;;|5i>fi6:YR]hjphX?f&q/ KĠ阒28nA ꠩:7 "щQ4eԤ U~v[Xcg"sTMVXˋǪ+2"AmFZ˛Y)3"p9"FOw@7ĜCV}_qTȧV4U*i }@6+Nf>Mw 4;MB ^nivb3d9X@*߭2icU׼VwGVۍ7Z[%ʝ[Se{ zwJizpOnW0YUBX+Bsl;"WCHKMrJ[&#; KӧJݟU4 P7WbEFS[v֌'$3!}"`e8H?JlD\v4Tkp2%e#= U  >"Y-DH;tɾH-Hl#(ɒ8Sg|9$3Ml8i p$:2I2 0$&*6JY)tȊJpH =8s\y-dZ)| :&G*'tn2Od ܴ fFlHnD|")Iᑌ$b)`pA[YIQJbݶ7dLKP~C2j)q{B"b!$iŤFLjS6RBi2*Xi] نn2U/f|մ⭟@F|UgE9iqz$!T*>!ϵ2Ă5Fh !1HAXC)5!kHHoϲ3WW#I*,oL (j#WryHC$+LH㤵yDǪ7+!QBxRErqH jCX:!:LH^^ljbBq}@Y"WfGV* -Ej YbYZoE|jԯodJJ}9bvyDȦa̵#dvqlL刹,1'ڃepNJ9DRvd.m5Wj(RrC4DLkݐC~f8H -(H#J<OBVqH2Q>\ɰ!H\ɐW m"h#$ .1%n\8+fRei֮HCD;]|y1E9b{D1 *bHC"I\li)S 2DÙD9j?B'؈U֧ @in_DSkYQЀv+@wC*LY5SS` 6ܡEyDlK7[`hiʶP]=*LF_EC +lY[<NE*Gj1qx>SF9'IމHj1)"|1sŘlRUj:^7~lmt3tPXT HBˮw93y-֘py@`iTO5&ΐ,G..O_ISI;c44*|!-wv0ߴv>q2ϴcjium;]eqYTB:aDF&D"%2"U \Ԗ Qxtkwv#^͟@jdj\>gs2z\0ZlJVWB {҆ATP}O߾'m }ORSŴDou"+(D^gFͩUD.VL*3?ql'LbW2sLM9U>5(BQř)GK},97LM9JG&@rT"( ~^F*$e.DB*+|̩)Gqp9M25s!i%5833iKv>N1Qh~:8-8J{ܧj?]ЏJv.QԔڰc zmKRTT,ݡE I,މ}RSQJQs25(9R\4zA4XJҒ4\t%ڴ+9uՋ]ɩJN]YK1kOuĝ"EϻP]ҕzFݴpDfmx: bϭ \$-)3|p9u3YRS- 9)R;N4p=$`!d&ӀہsR%ULg;0b4Pb&2UK8{BlH>M`Z&te*}!T.1NJf9HM%'C0rWQ8%@{''7TE:^ׄF6}Mh]::hg]û?Qu*Sb쿫, ko)[ME@ԪަX,e6\;ۏ'{bq8;AQ1!j{lF+Zb;,Gx#(Zo"Ł̆@@M]@Sk`+FDԊ e!aCSgbUU X݄ן$@<v9j9XUvUXbZ6FB4jhl!qj' ؖC#҈mI-skt ڵ`MžD6Kո=Lv b磨 I٫H]YWbמ MOڳ Ɏ 7Z5ZJ$FVA#]}O?aTO Rn3"].h@OZBI՝iunZeenzQ%WAZ(*H2ر4}HiC ({ھܤ.IG h Jܡ'!Me3&4#M$K$"N""`!u'VFҿ= GWܗuL54W_=3|cmJ< YFD ة;5bf8ogh3PB(wYL%]RdIM$j]Y@|]L;(J v^q H;`(ZξִMwe>Z& fg&T  O4M!Jڴ o-޹ub};VM_ǤZ :Q7fYDhiAWBЃ+VT%Uߓm2iE:4[B\f fD.)Ԋ^+,<3XڰE-u^M hLb"*3GԢX*^X<#Ǣz,I~\E;X:!JEn"cQ:\%Ś,>]HώTr}l cɀ{~?KɏjϓOoC[,/Z,1L\6خ+ӣ q [s){߽mv8v"(vd?HkMexcqA,fq͢+wZBOGN/ł'v$>?wX^pA?" ̕?t?=D?GZOqzJ^!,nkx*kZ%>mc'~O?}b^mgOkv썩ӽ}!d᷆;d=ȴ,l7Jv!ܗa.'ITυt} (aI54J&|~n'$E_[F#Al$(l#;$EHF*]yF:^+q4jlFWqH&ߊs /.:ܒN$Ir!i9ƪwHXm+ vih_յ+4됴"tU~}:J|_G ?N 9$IOc_u*Yi5_x᷋C].Z4P5KtIJfh#ѶLTB[P- V]~3CE 'o,N&\ aRT =r`vd.84Ϟ=GN$*^0aK\*@4&LZ.E Sw2WC-k i!_Y3C4X @@R9 n?ej'QЎKyqK *rB $Z$A3ނS>jR"2c"wI0Q L56kl-lXdclHEJ &|KJ_FH&E#Aيã@V%Be[l"R]NI-։lݔ[i;VPL|M|f$ Y 5QqT*N * V.pQTҀM%cҳ =sꐖ^hT(Ϫ4(\yU6TU5\x ]x&(G@8 TZ_*@ T;Zav!t4 "Qx2UEÍ̷0e*-$LeI\J Ya *PWTբmT !<+jD5x%*UUZURUCT_ GԉJUc-Kߺ]^fGPp|ؽ Si3%Rר.-Q{# Hng? dʉ2\JT]^)Mr;Pꈤpjρ# h{Ϳ@KފNG (J5}I4%M#莬VQ[JQڵD(}k(!"%3vgj#B@RҸo!`1hgNuV :#6*.Jɶas04yt:hGhj6s2B&)K!u6.X}NJ`"bT!D.Z-&B0mGs k@C;BI16t.*_,SKEkw x&5I}p1n8C;u BRɊ Qia|  R_svm`NcN1l@i@ GY"s#;筺5VR&{#m9\pu6[^0MYͼmVy77jIlGZ{m 0V#b:<1O%Y4Iv!yj!Ý[;py"b2 5 <x2 Iv*u*0- {rx_úzM"~dnFTVAq *h#&;)G["i*jI&0cRjQxr73]FOk4T8|NC;Q`M`9mG >,(\2V?:iw-wFm l0!Q(f _pq=KVzx?h[j-2Եf$e(}͎H/}&NAqFceP'"T2!]ca"]'As9?]z5 %EV9bIx2OMOU[YYYd Hߝ(y)@*׸UcePT{dMyҹhWԙWl)}r,Z7AxUb )NI[ԬkڒFʹCPaEs]-ASfT6u% I! , |+oo ˥Ue@QUZ.D(!2Q+肰ֱIբp)~=@S#%Li_i_\ڤm\@Q5(❐Gؼo Třb2 )#f9dIM5I HeIqre PTmVugͨI(8W5HqGqC fрWp 8G&v5R=9_aTOTpT~*$eQw)K6V D7w tI&CIqDH?y$!9 Ig@w9K}N9UVZ/DsJ#*ko»tɱ|!N?2]rCp5Z u31)'BT0v)ɭF9U+,3"muLME˥v),ė)ۚ+h-xKKђ{Ťړk' ;nw}v]=Bm[&祥CejG29Y!]2I108sVdlਾkQܒ[fpI 3 rnӖ@t`S )nEZHPk?x+C^;$smEijZK)$5%Ӆ{խ#&jkKR%jpoMnJTbk #/"5X%meԐ)24frc}O3O6sZ ?ƚ9i>Ě9I~\3';5sfNlL/9q9=ӵ^Nh)Ŀ^/OxVN?OC+r>S?o3͜~D*kt$1Hi:F>n4yBx(3^Zo4IKF u9ho}aog9zD,'yt~*1=ēb ɾ߯kǯ }I4W|3ʌ%*-%'Dɚѓ9:/2?FeR$G#G}ҿr|:a[<9H9[!|6||u˕֘vb~:dڒp[j-k7ղCf#F?_( 뤧o?^}?]# ?'O/^ó>rMKCO/.Fg1m =g/羚$Zosc1{$Fo计w͘?Ǧk˯1<[/yrt?+Ř S}#B&\%]m_sǖc]+WFwMs7俞cX$ukMҟyTp=t7w<;ܱL3¸M|n=4]~͝zOP09<=upMG$tM}-_;{ϑ곛a>og܄vխ3OZAA\4knqK}d"5|=Uk V?YDYqxv^*.PʮiO #1[累O~}$}zͼ}Cˏ׏]=kygƸ<õy5k!-5@ gq]~| 'ީ$}b.m\՝Z_}ztyk?n3E0pot]NRa?_+t z/Ӈ1)gt?_kR ;2vCܟZ> stream xZKs3[fS1+J)d\r+d(tAc%i|Pi?|O ˅ʿgo؞|:鏋n&#}Q.'KwQ/}~ޝreݷOlj&z/]tNVr%񽐝}2)i8nʕ(1`i!F))I0h~WE<_y,<`"5 sBWSUL쨫I2^C8kx^ QbgR:(9XqHɄhܯfz6%f>zW/{܈W͂2QA}H <9^C5 G7l^Rρd&1W ?@J`%:Pڌ ?W2A73^j 5?4G+aL?f>G)L Wlf?Ryܑ8_]3') "w%߯bGyqhJVXHGkUdéGH(4fI{=SoqPe@%7x6LGhܹkC~ SVJ qG{,G/p|pپ:N%V%7z810|P03y) T>/즥Mܤ!BA3DlMj.&RΚĔ)*Tt-L$I* J䇒ПڟU*S6x:k5^MVh9,8_sAP{EIv ]K#plJ4gED,.oDi!8ȒKMB8m W Ov7IvFrg;6-@RƙĊe3"=>hM}oA i3 hm8FZ&!i,@TLwgUj:/ ǡpVƤQ$Wryi+AeӂM FEk5 XQ·7]UsWj@(75=8C{(3P/79L] *f3RX\Ef1mEu^GJΊaۊ4(#1%9pԻܭ!A?덆m@X.`1UEYºZVn rHn8@AxC3tfnH^ ḡ^ۃ¸ƒUI_ kq„}m;rM,^:D)|JƻjVsq%;誎>-*LB>>'BGw,g{vv 2+_!-$-sEn%H>=U|C:01ӓ 3% "_j~G^wg7U1d$?}SM 耉#&bUGI6I`GI;MX۰sΝ\*-șMjIt3y%0:M*D 1Y_%,k^ēo=tl^sA{D re!-[ҁ],|Η&޲~IЖƙf4xI?3_"_79mo@%69W>Q*ڻW'rߓOYendstream endobj 219 0 obj << /Filter /FlateDecode /Length 6658 >> stream x\kqΏ0n;#!T>,"EgKi)9zUs0<;ӏSNU򻃛|{ǫr)SRjZ8=)nk-MehmW=z0˷?x-pj }܋Ҁxv*#D82NQB !+{ZriU=tV౗sUFɽVa_kt`DAX 7?<8o,j։e;L@0tPaƮ :LZ&! w0v{P㻉{  +){R`mi,"^ 6S.yWa{C֝,tH9b**H`JAR̽ .c>PHLb T:@!Cf :bv)[coӈ QvlI4ZKBޕ+hM"i~ p΄T&Ջ)+s,#qMmĒMv=,igdjؙe0ooQq:2hXxjt 0K zIDdDU; (C$g9(X<-<ѭI9IV?`G=qIbU%pOIBy$=tcY&#d UU$Э2se dF1%~h|S d kVkرU {iP?jkj)a3@}D,H!u {iJ؈BA -WPfi#A{_<!38Q!i=X@'V2,GUnћw$"%cOޘHkRK"D8H05ۙLRdTTBLuhygz D_gtm*ֳNT(p`# gb^d8G f5QW*Tu9]gՒZΨR7V ;̙;ԅC@A"qz Ies ͋/b4xL@.bv0\fn+(aME0`w7xY+"bZi̷AǩBN2Fi2ֻ=cIPgĄqs.kQb/񢍹&nb2+`ާ)c*w4b]m +b8bg7ވ*yq,y3˨ZD/J?^Xca1 yx E+oY8Dr?^` Ft{G8=]x17[KIjYroW_!#_.B^l'[!-q~|=~=~}ܞz~k}=>\.ُn{<_OtxzˍX|tq~ܡ46dg7oxNO\¡b>5;V`yfyh gˣQyܻ$/*f;ܭ$?a2 t_W/ԥxK/% bq?]w |^XqюG@~Ą7_o~= 149N!5oTHU|=KoЖ# l@V H1u*/j`YנĿ(> ;8n"//[U}f5n|/%VoKko~3<2"pe'LJW|U =;6`,7=EJTブC6z n,Upc{Z=\281Q佢{/c\j?ıDa)YJbKGj `04!iv!1^ӭ5CrH\ov?PH{u~&yf-%h/joQMpA9r|A-N"Ԏ .«QuQXq^'Al yM.+oKȆ9ֵ\ySԭ;ʚb8uW]TgODۻMeBo_^P$ Wl$DHƆm${!n17!/TT7#J'l&XDP[|"h?eNi,k+R{!L}Wjd^wmɲXCTz")6 ճo&Op@% Sϯ++ɀ:4ß1sp]9<7A{YAS =C}MF/D͈D dmjՇn~p8~%0d'kQo7cKyM5,B䱘9>_ Yǎ|M wOwӓj5r:Wa_4(c׫FeI4zr6Y"wJIN4kĴ0BԌwZVfs'[U)F@M>C 5<J1l/`yҰff7s3KyKdab^n;e FM˥]vDPBAgWى &:RFlڃ_Z׭m,<62l'1$*7Sz_'Ծ&L CFd~ypJ޸JspvB!ܿuVrMրyJcr,JWA4^˳^yF8C{Ns@R0..tzF p$^ã |nhZ$1;M&)Cis}jH vjj/yZ~P)) 5^=ƈ&YyG5aZ4@}uk3BLV ,GD~̣|.rFԢ0m05dz}Uzs/6 ˭>%?]2bkɑ^2/݌w˽0|;DQ%P\]$mqV{o4 se E'G zbp¿dȊ\/z`o->(};{19UHnфwaTqŗd켏ۣI GF_ܸi'=cFT;Umvyv l*.XSR}<~1P.,em/7'ǣO2faquW}Ԟ*_^J%KXߗRNb232jH]wjFo/*/7IFe*uNI>r\QqFIJM-hQrR;  !C+] ƌ_ABف 몾@o=괨Dh!-$bdk;hn_Mta|@īQ9~~k*O¾U۞}59;?UL+ 3SgT}oȨ֭=PURwau0 ^ )#Mdk&NoVjbtviLRSw%B;o/q9|x=>no={Y.\+YfKWFgQOe_[yM\Y nՑИej]-zS1=SxyVG b{ GuA@]f{W uh;?o؛N_YfJ:ۋ(S}? .tqjvɳs~5endstream endobj 220 0 obj << /Filter /FlateDecode /Length 5055 >> stream x]}UŕWTL\)P|ev̝}-*DK0jPa`aFEMBeݪ$&~]E--)-]$Ň btE}}ߛ(W5͙_w>}~;>Y3?2? S[2sO,A mPɐGd,O$R0 :ł N*k~T7dTtd12[9%ꁳ d+2[2WVf>f01a㱠>hfi B >&?jf2s8; =sdGŸiΫ2>X29&3#L1lq2"SqŸ^5$SqCg*2抬T V:fР13k&U6b:5آ@ifK14; V9c̽5rY+\d??tҚszhxown|Ν;߲eޣ>zÓ>>xOǎ^?}[f^_+~=jՏd۳vگu\pСU+W>}lٸqmٲnӏθx#ѽW=3Ͼp/8|tw?|wkg'.9Gz2{'.*++[ァq*&F\Qq5qO`}~;|W}/lǏ?~ds>u\xx ~Y_|2aMˁS&OeKw;iyAӮ[nen92O_Cp>g':g'_?t:~|֚e&ӯb kowo,_[h8}͌==v=׭[wt+-}<~P3ϛ7?F~Cyt߈3{~/1c~8ѣfO7mxܹsz;hw9n> .VTT ٳg_nZw9k„ l_p]vױ%/@/r';_m޶rݻ-ٱWk/cǎ:uK/T[]}֭[_/>QFx]kؼꗛ\U^oZ0}6%"WN|;o{{~_.Z4c>гgϗg~4m6K{l7i)iի?}~_/y%>nχmhĕ/3n9uڴiO̟+~5Zse6ٲBgƋ+3<>zK?%.喬Y37ܳi}U]6ҥKǂul7vd{so睷G?Ȟu?W%Z9L> {࠾E]++[ԣWW\{ケln{׆˾rDvl&`~0}ၫ{J^lL9gD.pFq+`@b.P{0PF=(#qQx.H ]ﰅ$.JPFeBYWؙ{GrΊEc< K8 =ߔc(_ <)rB%9 P92KVV6m#Ix;"nC=M:"t!yK]"qN9pB%H,6 % 4+} I0(80F=8 )mؠHd %{x!rM~ȟ]i4}ز!C|<[I,,` TBi@i%>HD%-Oi|/=d簑$˨Who|3YG˅I8(AP(#qPqPe$6(,Ï\z9eII|RH1Mp* HH1$XH"R:T.P"UO%F,1bKx1_j 0$g:N>^ f1T`Xp/m8(c(#QYw5)r@yȚXZqUF$ŠiLbP3`͗R"PcP.HD%=$r0g!2#EWo%V3He1#qP7 c2%|f/B Fhn dlcEU1}/TE}QMdMW"ȯD~o5Q`ZHT1N ݲkH^'ٷ<#p0xv8.ى$h`,CCo%U:3U:)B :SB4~D%B, ұєXIzJN>!^τScAŠH^ɀQL]Fo"2ZX(KP0|\X.(Hhv?еQp̧T2h'jwRt);Q 4ȲD%,剪I2(IX/u*tL [KU26*$HvO$qP 6HBYz}x/@z{eā_i [;LjQ]K u.HD%R, űX~XIzJN>/ *z1_Lv9 $J}^쪗Hh <3Fb:4F`}l9H<m9,dՐr!\SdWy)幪y598W\U+R2ɗ3=j"OIaW6Cȗ,\K8 AnRݖW=2D8&u?)@ԦhjHa1  + RntS!@v192q,OfiUrH9uz<[w`f!/vaJ9.̶Dsj$lBr5<1R&(R 8㪜 4#0KY0" 䬯A#k9o.V1@ ggb.$,Z`Q>Dr {0()$\qk똉pOq>% 6֎(Ӧ*56o5! ƈa?˱9kvGpUWM-|p|F#VX kQ70nZҪٚ7c;~I=bI Br\ ՀTTK\X}K6U}MQ%~nzhj68S{8O([:5:໕-Sk}^RaY/`j]kr-aO^mNΡȅ 5=3+pK"$ m7Nڭ)5sʆ~ʩOA o}&K)mڡQUX}ҝ\}8اL&qV|l|bu2= t!MU+Rg&(o,pZx. ޥ]QڕEh \N,'`IXV(SH tZ(X:ɍnbZYK(UAC1DL\ rҞD$W4O1#!ۄcy-:Z~HzfpEz6*9.qg`K—V5 ʫHA;.8np\,WЇXI;X.c>랑)QɈrjJ ..Y.n:_Zm8E-9Z1B#Ӧ`/\Nqe})cCav}hB; <.!]ZmTզIm7XֺچКp38L:kiMv1Q:<}HW 5`Q6tظ#6SSéVI(^HŊNCu|8^TwKnFjJeV&;Ev2thKPq:jZ4#<}`˛Ԥj%,HːJsA6q1#={דּv32! hmh SGYd*8cY $0˅j)^ViQG%ID*{uS. 8UAj؝PnO_1)p&B:qPwp@Ul* 6a(QIULmK`nڋ`b  TʤXn Ktly2? ܖ)jV*lmD#3 %s.!&4syBoS97-K#{E``;gvM}s(^GK>0w2j.]`5}Bc86G'c'_]Դ>IssOC[Twr\g~)'hi9&7[ꠖKMWnwѬ HvB.BhtSuU"뵴1_Z&n_èb{V5P;ھ :?u.!V_9DT:ax; $)SsKxy%lL%7! !|XlJ- vP>~-XZ4[fm̴''ِ͚4qgҜQt롹,2;7=uI-I3VMh~6҆JLM5>y=歂ch}cnMf]j>pE :J`a""A:Uendstream endobj 221 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 5054 >> stream xdUϩ_( & " h (h 2 _8"@鞺_w{N[՞8UuksotןfNqQ5h:^ Fe Tr;A1{°_?#.ڹF ^EP?aFNl=oԧw`k`z ʠ ʀ6dʀMO[ >WZPӛn1Afhyva%to/-nJ-+"Eiu"n_) =ߌ/2 v> ԍ szOPDH2"aE@B8ABY 0ؼO?uwBl{l8V)t>j -{}tM5*@@u"ݷfyy'|"D 2/[U Mx1V} @cpL=h9:̲B?tN+<.26(bp >9 ީ݄k{v@>"Q ɱcǢo H}>=8 j_D5DeGD00 ,+vVA耨Zf:v :۟~S^gEPT} wC#uW ; 7Ym@t.Xu1 .>Q`p.a4 0 "'|@V0؇GP[@7x PwAWR88D>Hxך^NY! zȴ݄- >@ &c9W_}jݱ6tm akL/cbOid& @N1$T،֗^ziTI-! iv +4 8^JE>@O:t)BpQ@1X7}Rh/?=LcP{2$r&p}Y[N}A"O N#;B0 !gyզ%=DX;\Du' ܗU:S9Bb_/;j7bϒ Af185jn+w,Ha(`5VWQZ ϋYyOF&͛ bPD(̯@Xqw&ݨb`!3yD hWpg|``tO;ERe- e ooDVMÞSկlW@1vu,{v}'ePr$>Qpp4 Th][ou@(@Aw?Z$@:ЛoZde@MC7`X檏|7H V)Q8N8&0d~3zJ1l0:n2PĮxsb ID&n qKH`uGUO.a]-%\{N}GBc$` 0 &ꫯV#R\pb߲ P} !W^y%}A:,P?ߐjbpG / CQP{ R9K/ͫ/ ^'m#(݂YzhOK.Pw7❫8pNBwqZ .+}Db ýW,EYȍ=s[It!\x%QNzT@3ԧVSel7< .J?I3@J?Lg :Zz@uC쎰>矟Q.)w2"hgo!}@ɕ?&D46$;<{r_Ƿ"ʟ*wʊ!qps=_S13A_wQ sN@ZF/݃ڏp' F ɬ`g}-j_3NT2+G5HnDjbI>izw3GӚN'_H y2A1# '= 8yݻC_LdU$.H.D /8]=.#Th;bVo>G+#x{|j(TwՀEaɍzeUu]6Al~VtUG4zWh)+;4gTb# j?RgH$ ^uUs?c+~ w'\sM$}G#v^X;NH}G~sŁ/R vDj~+A"p 7EwýŰZIQȤ&"3nRo&T_d Rdup#Y][nEk-ǧ&4Etu@hţ_JC2pCGPc*M]p>CZz{5 aqy\9uȟ\| ¨"4\6{aN6Gp-2\y裏h;}\ ]eJ `=af'4ǏGv{fvAD ?\>ʍY! %یJ@u] h@Y믱`ɓGptHtG+ #u@$N8EW6YdMm]`K?,sMr/YDH@;WlH}eB} @0L1믿v;" ``MU4mG̟\v> $id8~`u$ ?u@a'z"`=SN6 \;9'ĬG3& 0?C#4bu$ty?ivHdPY#\'?p_$D %P aӁLnlG7twV COf?2u}'=oC<'="4(Cbҟj%;S u%"@?0N0hp4@F8 sç+zXUo)|&pW݋a'e9k 0ԕ"Gaw[TDPcRdIY4}&,r`|nDt`"h Ī/ԓ[=-endstream endobj 222 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 5710 >> stream x=$UuFFFFfFFFFfF&F"((((; "h" """((tWٽsνUz|{gfRu|o;a_qkǩS6G>].a;ciƂcߎ!Ͷc{fXK;v̴d? 2`vXXYI,eЛ fkU[`8tWHTv:j'՗#`@dyzްDҨJPP̻C;df92ɀ1}/'ꪫq6<Y^ Yq g͇CW_}y#Ʉtge'ņnA6 ,Q.9Gco5\$}<%KT p0 }?NFkY`gM?5/]; !k lGdHbozrZ3H7tC~s{2m'VKQF`IHgK=o*#8S2' e_[7[l+t!NI=$X_>3:R^أ 3 N젾g>rp6؟+zUaW?eg.|E}YP6Q޶1Qυ֓'moKx%w #f0 oz$8Gw 5&0 :3w"-DL< ق31X/XTk~x,z4U-lnfuܹ t P>,@8Wwf2[LfY I^4ueWsAU;Р/,O}K<`*3`IϞem#Ÿu3%+Bq&\ux*eyni{dHK0uʫ`-mgyFf@p* 32~Y ;X}f =e09\@_`Nșb\5=A..i~dQ9sbX.G d!!6%!O#iNg6 L!1Oz`YY%$ YA`5`a`kW iᅿq <]نC{aX986`{ښQ,[d,XM_fT<6@qy z7 `#J gY;gPv[Hf.Zzۢ~ UM60T3 %l>PRhE} x^,T^XHK$AgLd< /N`a`ARƛwkA-:6 0H#^d79lNe g?WCe>  M,6?qߙ0g<h,^N=Sʝ$AV_NU? ;,,Spxxh'Ѱoe d6x,T0s:ѹ:$ a ` :s-D0t9kw/ LRRT^t:,O"^}A CRi$% e vDR}\EΟ?ojw``0x Q? L&A_}Zp (6hz뭥sեWg=0@}"HDo;Q<zӕl;,fzw؛[sy b vy 1* #%/= {/''V̠% I 3r s 6`~'9}K `ߘy&Axؗ1HPr :yؾ;=^yG!9w d _|_k$$ktg-<iSǵLVW_L % $켅Ȓ N +֝=9^x07A+s"~sqȹ&,Խ#B,x8,*,rj\e_JiGy d/vB0Ls]K~?^̀8R-IВV,]<ٝc@S36vrRz/8 SYvg XzC|Fe p!HߗW8)!md  DBd/ּX|Ȥgc0  ςz߅$VWZԗ!0! CzŋY,1߰(o,` |i;'TWce#"<6cN @bPK_g>^OtJ`?Ht A>ǾWH4zI.o^>p0[cA'*1'_m=8`g-u;ˉ yUoYzO}CTd yT\ƾ< hI~@_) d2i1CR]a^N z,CNL|6{ @gF|Hkfy$dP6߫%=+V^z5޶ϣSݧ\(p!NCW<v@'Tb/yF,h@'oQcQϽ3~׿,J r-+_ +P6O? jyS!x)"E㡡TkԝƢy W$-:O~M63I*L<@t DiL֢ Iî". һ;5!`՗cR p]Po6/! KƺIU}`0]Ь<z57|+^6H@@FlA. k:PP!ST3:םӟ53 ~ j3=j{8O#2l&6,yֈ_ 7c3TvA-.Hwz64^yTVD4$ > wWj@| >v)+hz饗f &hiA6,|zIPv2҂AIR}/4 %'#1X-yy @,}B7I0=2ɀ|pNH_ <?jJg ^1s<]tN1!`ccAgϞB,\w>̓K,? 4&Aޙ$dChz.Μ93o%N@}l1``>;HU͋oAp}e/9!5?o/Bӕv+n WEdps~ð>ُvƑO֫ `/{.$x`GT`Iykw$H8 b}TmI~ p;A`P:Sl>2M'HoNI<65;{l/$FEhg=*ePpmYO:F$t{2/2xORCkWoV~ܑ$<I@SUb@T &o3IOκg-L–vv\x᥹tdTc$xmendstream endobj 223 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 5456 >> stream xˋ$E32kf| *Ȁ 9E("o .\.ADDoz*{V|_,܈Wϟ?c98q,{{{ˇ{p8?y^q _=y}zPѾE 3,sƙѝtq}N* pý#c-,y&Z J'M8#-.{j;;8mď2 LPկ_XȨo/)K9ļ/*Q1JMˠ_Z} a=cOU/^pdy3{4 AA#u@dO~ ~h_E?Tixi݅ _c/EԟD j/tnQ9ԝ~wZ@'I)v㤯, gBnT}Z[woۯ[t#6plT?% }+8R?rVM>G׊r| i|nIcGXnEh~Hq-FߍADw 9g}A*rd|\n} ̠|Ǿ̚娺EջhAB6l9e#zY4)|M$}W8HHhGW'NP+` V Rg/[/w@Ew7^2f++fe`M`ۀl:M+>(~(aգQk lǖ p壏>r Iocc@SɍUO)B`R(3X*T}A8@էG?~Om{O(W? ԝP_>(Z !Yʠ؜Xo 覍V\xf;6+FW}joN@s r·_?ѿ'O [BE/gxרBgyOk2[7XT}+@[qv6Ur,*L Tz<.گ#G.v bv7x饗PYq@G?GXG5^ !lubGyiiGgbXۆO} D ٞTHb@U?/J;S@&.tcuw 0Q݊2AygQU%pE4#2A=qRH y @^IM@BQ]w27 τ ZqePxNDymg}Xt`Z([hmc|cN`fATz){:Gk$L§֣(@VI!'E2Њe?7\q޻:*7St DJFtCɾ}0>/jˀRh{ T}$Y(dG+d>tS^x J/C]"ͨ?7 ԩS60ŋmM H9s2Y ^laxK /nh!9.FW=^67 L{@wS D;v Zs/9wDP@ VDBzWuS$<]Qa@2l>,R(H~78Nc ~|^]f`=&ȷbPz qvMbn[KA1wAE 9'UP bN wމD Iah%ZM0g"@Ű fK L `e(@J4j؊16FG.LPO+0ۇADa ڇv7P8jE6􈁶J42 z`9 D+vuù:ҝ2&(X]l 54>dtI.t'p+ <:hЭ;>忭'QBPo,_|EW} `+QH+:`Mͯ(QX o aAJqN=믿^Ϸ],mAHSa;vӢڡl A˨QN2L XhR>@çu;Pէ@A~v.m]qC/AT(1k0Fubp[6pL*AC$=1( {J[v P ܬ?&J<#hTw:A^܅E vj7hQj0ͬұT}:]ZVt}Aa`Q䀝MPkn[A} K^HD0zrہ{9v@DٳTE>E7OuQ_lkh^HqL0{jm݆SݩXb8H8Q;Ů:u>vH]12(7|}hCION kC]}dd/A. ,r̙!z+_N|V 5Wgq4{4{i1nodnᆨuዪsVo4\w>2&@SVa E\; ʕW^aV!X8؁w~I7)T/G3/L,%#6 FBԏ`[1:@{[ /dqŪ?&u6>eb/sզ<2Hۆ:kSt؆ATݻ׷>;"P}˒m`S>Dzb <ꪫ.U5aa; N>}+5%q@>* wGP MpW#(:dمt?z0â#wh kֽ btxu D 'ڈE HCx; D[?o@{[>lu@]B+,ߔF>e`AQnuϫ9و w wP _h-얡 "A"3goLV,0h)1p =Ac8͓7t/1eBD@1*;(`G-ܒ4` t M!~tDM۩2`jW}k~l)(wq}DTl"*BvuO}m^ (!&8g"ĶfAbPV |spܧ\@$~;sSD+"݇Z1ك؂Ϗ@GP/wu}3jCk-o w=ᒇ?gn{GT= Jvc퀩da[bDn8cnTg38{7Z ?ecK!׍# 4y݅#ꌮ]t: }M":`1pKN@ ?R6a|KlY<1bQ }1al>.x22D&ʃ>h+F`lItSU "lؾrn~~==$̣~衇TQ;6?n`~a;5  Н+"j U}W<Jt(毥pLlkw&Xvƀ.G;GZc0ݘxGEo FˡA#4yU=A8c&}纴& P-:,;xtΡ]D]^`cL_ѩD2Hb!eLq2'x"2/ΏeN7Эٮ3YP%ZN.s;㶝X?+ܵ 5Ovf@ϝ;_9 "8( DĦI?~cΎL 89^Av;Vc?VH6Ht,V> VCrZIendstream endobj 224 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 5374 >> stream xɏ#E]M;H8pā@3bX/:,#@\]x/^F/t]|2mw?vUzxܵG輭VvǾmsy;=oO];۷k[5kV6uǶ8eЇc3}hOdP9`Ui؜7y@1 L?d (<uO=\3X  0 evG{fԧ$\, N@t񪧟~ ky`! h"P@pgyK=T}^5^ B^A% >ֳ>3gw1 :2`@Y){P}Z V$UyiLSWAO0)93T^xtG#N=`w47l)pϖY,:'(z{M_?23Va! TE XX SEKѬ"`Fu!4 ~`AS|7 ͂O8 A 4 . 򜓓Z/ r\a1l!萭NIo^pҫO@= [ h˪~1MHhoW9;i2}ɋ#L4d!e,@OM ݫOlfBSEk MH?ό=H͟f BAf awcV@ū WXꫯI,l.@(5,$7|cz.Q($ ìViѳhw}<OkеHmm-<ĮW,P#~ 5h!Pߺ; Dq5U("~G*zfL7h!D[1ذOmf%Tdoϙu$p>eD?2/Ou GQP%=Pa!O7<,ݯgĚ914կ_.4;oe~6|+!Jڡ1h ̄(}S}3 Y|1Gxw<@C/OsnTKTg v`~Yo*H;!ԋL_a00oYOKJ/*M6KY 4"q?iq ʹn'.~%V/2НLV*8 [{YC Tpk|@h_믿lox3'{ 컅IΒ~.AAi%4i3p~V& &U s^Wpuk Ƞ"2?GV^"7/H\MkEoǠ+^ \,(T Y/:_pEduv3=0 +eO=͖J*AYZ`، W1n2Oww= >[WoЗbAiAH{gtgg1 foa:W0,넷Vt Q; hͪ?E$dǪ)P 4%kHC>@_~J/FRuOopE?\$#'~' W hG"S/{HuN61I2!w6Id?-|&w֚+d~0|41~~]gg$fAg?<@@:eg=\ܸǀ 1?oX@d2USC !,O@lg9ywdP,Ph=MC{٢Mb@(ɽMt 4 p"װ'gVSLwACƠ`xIFEWԯP== #)ʆ slyx܍1Mҟɽ@_ȝٚv`> pl%7n:`;] o/2 GK/YPBt5 `*(7dT? @D D1z(4K}B]^yзnc-_P}݄cyZ}t&~/lBq^ԧ.hb_W~б$|QC{Lğ P&]@'@ @J? Г»X' D@A6BD)>_YSh% ?__Z #HTH. " AET-(@I *m˓c0ȰS20]i@S&iC,?~@ ` *BMj^_8+;laI/bk>J? >b&믇? Lf+A\*toFk!l8@$C +4`ː,Pn޼OK>2y <hA}m4n?k'<@͊ўŢ *}vQO ?۬6ӛ!"՝ ?hejEw}׿lEVOX 73A"zrMYlV߱%}|q`of AE:7dgS~AîO@P"t-猄PUf/t_@~[ؖȜ`ֶD1ez0cO>t- q&8~AXM3AQLC?̚Xd/7(~kM~0+!R0TD_ (7u>2r8$(~Me1O?RgO7J3}+Ym_SQu_ 4?# P5QSLTqq5q0NW>tÄ.|Ub"AdV!lal;KCye^ h5ͯj f,2hg1!=:7R'zV %@s 0e] JSP$3S!4Uw4L:0` ӛ3хL[JO;xɠ CB@@ >H"Boy1m:i |Ua?t&~a C0"F]!MƀB |o~JAςO5BfDaH cZṄ jP;<@9 {@)BB}z93PQwtssn0 {eϤ‚ @IݷK= ZBPf+b'ͩ~@~sCP{"d%t?J{~AAܽ{2&!!L)ô ƥ~OKBp4~#;5Ð615(tE?>cA~S"Et^824L!B !Z?'\lx"b5fY $惺, O#O'9,sv0aVu .j;wcw*@>Ϸ"h 8foM~VAo##ܵBX}yMyJ Ԍ?aV& < VBЂ%7uoOAez@ L,<O*I‹/Ioە+WsXIX!(+ѣ2@_VI 7?uz 9ʶ)?7̽Ch!/̿sm M]ի_[IC!M00?YO1 Vlk+3d0Eş[__џ&vLIS}o$NHM۬(?B}gQp+WU6QwS0~UƟJ4'HRTxB˂O0|ؼ׮]_֑EKMkG:AVVtQC oh ;B{'k6|]MLJ ,B >` b61մB c A\~@>FÐ|BPE!7=f ? <<Կڎ2q:" ],`5h@ڎN r @7PAly_YF=YfL^t x@Vޡ@A@xP+XbAۿo>2 ,p ^0e= Of&|? ؾMFdXWA> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 4970 >> stream x$Uտ"" ` >Qedķ 3##3#33#3####An[=w: S}YS} pl6LzctF~|<=غ[1mZoVطm|8vFPݘk:q vr:2 Fꯠ;6~zN2p껑[Y5?T'z";m*jLWKomg쿝]=\ *AA:@U%gᤷv'S   nn&WCXJe7~i 9jӳW0u2q oՏJ[eI;M鈛 XC Zd1#mg)D Fd ]t~efE ;n.:S1#שoO{Nq'`w*B4 ݺO[O' /߼Q!u#[酐ЛŀvP Pso+wIډai!p UgiJvO@oCPs8cىtqBӻwT_؎6L@f% \D2p%pӤu*}5 aUW>5Y,"tP"QMO;[G;.H8M ()2 Gv/^l!+ n"LoD?k'_@Y!XfWe$Py@c%a@ϵRD pS̥B D?̩dJ@n[t!:q d`T$n̿{&} mwŨ;]p/F'LC'a )*>)o?M"EnbQa`5R T86*d_uާ6 "`7b7( Z$h_~%~&ni ™[_D9(J? ?dV1}U3+E7;?|-DX )fY2ph#cm ?cFL%?;2" ' ᇼB"ﯧ'ZLm;D<ܾ{i-rFi/ۣ5Pl}I0h=#b5 ^ (,K!9^Pm_'Goɨߌ` w\-R?!pp?R?_է(M5<)֟d O$YEY#I7sN pOvK-@3 }T.7y R?/GI @/0jaQ_A3ky=q !HJwY~IτVY ,CH_OYL!%\;|@zCuJ@կ >*Ѩ.\@%[5$A @hM Pv$Ο?/_M#I$ sErIQt}wͧw1tD5TtqG1K4e Pz:]W_Z]0yX|%(c%(Ϡ@ɜ|_iWh.[} kb~>;+=U~i-Z} VҗE eu=ӧOiP+DT:qˆI&IFx#^Y ~^Msr^<"M MD^DUay'd0bt%н6?fH ~Z3P>^- {&v7R(voVY?:'@(ݩZuvp mB}Rk;nDfṇK AI"_]e074:~38 ':pSc=Ŏs*@9:YgENDЕGK͎NOth_MSI`)/5?j]ECF=4D ! }6Ԟ@%(oˆ!ʁ;oj2IBI?)ANr0pZœ 0QX5<l{(nJ}Og0PLٖ?X_dE4 QI\ZK j-O>`P\Ԝf%`GkW? *A%R,XB( @W!m p:,^W["E;]p1XTnzd kBD:*E.F fL \s''Y X#xeP1p~A755ZSgaGK Bv"uo߈93p1@B,Az8JK|p"4]<nе H4I{EGo4# p d+?>e D?zEmVz$fVPo6?@D")qWk``-LIPSFX mzWAΚ#={VKowMQs`$ 72;QTU+Cy2wO&Q|/x^{ 1䷂ e0J1t4DB^Ee_+ƀWIASPt^xYGM 0N0pHscz!ېۙ3gR[P @Z4CM>Gb4s[ ɑo[O4AXoO:Gph2f@;N}wHe#t v|ɦ PDHZKŹ4i͂Nj"4/fqA0En=pv7塇ʏ\ 8!=9CwLOdtS|Țb0)5'FG.)=2yuvt'0T=!@!(&)z<7lw'\s;ڧ!Š?6<{+n էާ4R dTZBCO-mCu鏬aHԷ; A@+sM8C1n!>0֖2Z. K@@͆#B?N}ib#gUuH4b8//R `k[]w(.;GkPx5tE7; AT耯02p>K.! kvkU_%3Jw#SoC90`і(r5XGG߀.D M|N>e@n`vj,U}tXǒ"ەW^he @wvEaફBqPw0GFt`Z|\Uut$#B}H}Gbkendstream endobj 226 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 4990 >> stream x$Eū'~""""_躮뮋 ~w}Xl˼oD +͏~f{6sndFiDŽrUP)Q oAơ!vk,J 믿N8bBQ}jWvDOz_K?M~W6XR@SgDZ _l)81–!z+}u/i5 Z @ߩEw}>nF4iPt}~/"me NWa43 @f:?i7VpMa[/'G4g}+ujGD7ce0RTʹ :ذɫoO? D2 0DV@IQl||pS!'|R Pw ̀JՏ쯋Sd(Ld>cZ8hK1?Zaޙ?5hG}DVH!*[O>Q]Vz~{= JH}wNrOԭ#D7m=|PkEup(:p"#j"3o*\QR;O^aSNދȻ]'vsY):Ʉ-Һ;?-8:|1l؞'{-;+WP})D9BHk ܳID$ޱ>v^|9Sew#Eq;4v@F}'ԩ.]Z BK,T?Bh?BrsoVw.T⩅nLV_c"`i铹v<… 8tPWq3r# WV^<o*.,ʔD4"# 5SDPq;DP[1믿qV JYȝ|hJOuuk&&PBh=hl STr/R?x}W"FPrwC,;M:ߤǓ}Wi`0x"ݣ-\w8`*49}G$# @qБ廳fK/`+!]t[e 9x/'8U/R 8ʈAC`CuBc,;wn_Xvhu 8i,2GO|B&џ"Wc~͕';#8h^ wad3e@gDfB,OfGP}:=d&ag';]бS"ݓ #ޏAbк W(4 TDL`5>P5e.}tG39 2<"Kum%VT@@@SwgxAξT ЗĈ X~yԄbTi&[ms"vVA4OTQ͌ѐķU5P 蒠hEav?W7K/j +;&Of.P׊i]/tͮ]"Rlkỡun 4;Q`Ȉ#eI1g(~tCU<-0l?Y ؕ{%dkS]*`l#S D?EAҕ=[Fzw[* 8eP^bEU~}1I_ Φ%@:k$h:&@ED?bpvNe}s]`[Q/w]fTY 2 FЛoDxQ(NoFm" (+H,U;0C]?bd|ꮺ.^U+"AţyDHB@Al݀23ٙꞁAId q@IkGv>SBf ᡋëC{.w``@}Li7'=QE3 U:SLPEP觍%mՙ*%$`t=իv@Tz =C<Jh2q1vʕ|88Vj{OGEp ܝ$Ph*9} +b&its =:mnwY*}9wÀYD]K1`5PϥKV ž>ADM4 ̀@c&ŋQ#^}$Q@Uv3"Cs… $=o ?AnR7Q #ر{sEGΞ=/G6BRE:F~9w2;{)¸;Q^LkC0p |}} Zk[]-:,*ozmy`Pg+3" >؉"( 눂@c\ ]7!VV W@w9zvi['ˬFVq>0$Sgc~c{WU=[ 7 ;(;X=P<2i;;jp hBЖ$Q}Y}ԏ.##2ڱ>3]Q}YaCS[71b0}Q؛駟֔`Q ذO1"uSO=-Vʑ n-S_@>`@䋀2O>8ܯuQdž)`@ypEelMQ'G/MSro °㏻i؛yѿ+>7lAQaf"c2GmS?M|"XB裏Rѻ ?`~墟n~ܬ2% xGyfJ/n{Ϟ又gO#P_R;=PWz~~uWO2#@ooq,0>`EDS&0 蒨<սu̇vө+f`T?>md ?ߩIܣNɱP+=M`Oxg2ƏBcu0#AMO?(}7{/M(v7ynʍٿt۵7~tDG(a`{'~&vp ]ɫy?i| `i1{QPg}voDϨ3lu]fF&q75WXJ]yEd:[wy v`]o;m6㎌b"kOɝ~2th Qz Ŏb" Z{A;c*I *n[<ֿNoyrءcEO}]zT3lܤf|0yV4?Fާ~'[neO]k( Anuzjׯ_:T-7ndر݃Nͽ UɍGɣ.s\ .e`+E[Ozj$VH.@Yob t9 grU@=ث6PGGnڐеWc4endstream endobj 227 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 4958 >> stream xŝmEgG| * "" 1/(   "DG3lsS=ԇf9U= 1i8Ѷb`jѶsMǮfwjڦS85;ivI;::t6L.[1:D4O7LCӥ+}LG1:met:ixU:ͱүMhpc,.4ý^v,}wʢ6iӁ=fu6SwlOG-̀X: H '@T!*q M3r$vU 8E;MT(AMB^&[ \Zf@ԟfD[eM*Igd 瓠:1-؛㯿Z$Lh(& *բ#Q$r@]tt+nXEEu&A>#9cZgTaY ?#+4wz*@,[ *T:MH84KO?QN\#5cûX r` ~G,):: p$s:@vX&`{4_]G<4P*$ځ4#`GB=G,MrlQ`?jGNWc'0h !}&% `^,hAN3k7ovz@j}f$`j6(x@Q Ro\8 Gln"Aa+KhA&dmG_G5QTJ\DcxN9 HdhW_y5 ᾊI`45PM'?I`gd lpk@u|n]|aD2Ep<6ႌ^[P_|$};(<&4`w΁ao:_3>sTh,Ṗq Lh/#" BD&Qg}f hѡrwD4w"n " D!B.(,Aߧ݅9pG?S>ؾt?E {nD36ޡI(fr0$ D-ʄC۷ED  !NFPGnM^&z!`p1z&,&} }D/4藔x'Yvn#GbV9k׮-S JB) MAmP𷻠k towiV$^M!u5 &"r~P>^-5+"PG؀@vAR4jQ?jɕfTX`YA u@#L'.wb>s+*% :Ujqb h ^grS75\Jofq L" vtO젓[ L6{5(wky*ݻ h STFsx;{ʝњJqm> @!NYJѣBnܸNM }:O-CCqh"}]?/P{:›7o6w%vP1eM% W@ItήLMmxEt 9Ѷo;}QDYsȀ X~Tҏ*tLGkȀB>AL ~ kcF;\D]14$2h5>-MCuwjVd@ćCGcP|޹s#b"Q& XtlaNq̀f5}U4U}c6⃠<{q6@%>үtOG U^pwӉ1'8zpwP k=ȇ.7w'o3({P-H?)#:>6 ] 3@N5zI,O(}^2|\Tx1+ۧ7pwP c(階zQ*`ˡ pcj (k#N6%%暢?2 _XG?{E{MtFV+A攉@ "x'!U$џȒ3)`V*VߠeO&#ӄ44r'^ Q׆3B .an S"#'HY}MI4@͓pDE'n"| wyؤCw E9 |~@dFpի"o:A::DO[;[Ag+W$Q!Q旜5ԟKћ?A3ֱ0 hf@oYs1[og:#ԟu\#z^ʼZڹ9|Ș+>Հ"H?#ѽa+?I_8σoѷ~{zUEԏT7Ft_GRGQҏGGo6jя58xf7W`QJ\#e0 NMTPD֟"K'}<)W^yE~H{ "{3KM>wZ2_~مkVrL9GvƸ`Cf =i/_v؏g 7~}/qq (]^@@ hi3l~$@BOL\t OFLҁ!lj$jn.z٬w؟y#ʝn~~aEY{rP-J5A ]x/ѣi#+A}g-dDI`&@g!s!C>RK< ߕh4v?ԍHMH9~˖u@kHŞŨc'"4W*Edqzf JP30]h\&Oыu&Y6|I,ӑ. 8_,(:F𔳨9I;Oh$Bd,ۚ-X#q=51M#8(.3w@tzp9GNS X&"v@ycO Ȅ?&2ܩ~݃6Dy Qtuu3 z ` ǰ+Ά|c x衇0  p* \G&XDߕ{1)n[(@'AބHs@kŇ"Ъ Vc P/UP$Ǣa̹n(HEO@8%&A;di {ݾ$ܰpL~]2HQ# r os7BeAUUSRpA:Lj8U]vF 1GT&0a'D  L"X]lUX ~olD . BĖ!(>͐wpaF L (^%{9uf b]9Q.l?Ưa*d8ֶ";z1G F3Dwm|-r>ivH hΟ?__BFM$z@ -@I ¿5Ina bm #*`ӉJӦCS~$ ٶuIФܹfه*w2uJ ;> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 4849 >> stream xŝ}EŧgE%"" BDMLz}O|76Nf[Sz&ww知ain9Ɲ;wlݨ vOQ/8hh9bȍppӰkVDڟkDmk_^,QoDN;/mxwT_ ;>ގbuQRZu0ؙԩbuusN L( w+aH:w`8ibz 0A}~LiB㒻 J=` E^t ۤD …3;)?D[-]/mkd+ݞ:rnݺ?."߁#c*; H$V|1>?"Z@Wԡo8jq(6?_g "G P믿ֻO @$zfEiz1@~/d$3$X =D} ZД>R_C/4KEmT}!}CD(UN 1]hէd2G0dgB_TE$lO o9(t QتSZnnd vP'^0Hh"Gd @NpӦAST= ;Mћ0ТИXtaXwΫGl Z`btHiAZ'I8e)z:I0Dܼy3Z{ߦx ux`yDy7npl`$& xԧX~p]Paͨ?$DN7|`o8v]uc_).zׄ @fyqQ+mhL=0"#;Ǘ_~GlV!ݽgѾMY/ơ'JnJp7t7^jo 4οޭKN w]K%z=q@>&؆$Rk(Hgo|g8@; DsH=z_A`Cҟ?SN ʀ锄bG9;C@ ̀i|pzE7hc`G}CYx}J|jE2 fR1ׯS\I)շ ^V5A2!P}gNQ.c|TnTna|މetl"1p(hѿ!:|3GU(@o;H(HzJGr5`i` e@2hb_{RA!FB?gpQ`a\G hؼ %vSׯ{}*@S\lF|ʕ+ H;=hI{D˗˗ $ Q80 Cwt@һ1PWwuI ͇$pЃ%d?m>;3@MaDrQImue@iϊ/ $~m~A3"2I R$O4m.iץUyqf4z?&nh"bPIK.a `%Sߞw1(PO@M??ŋe]U'f&/ɏi(@1 8@3`ˀfM} SATȀVe3A.E KGS?[o.= A4'k뜰9A} em@xf0Q(}I†(DNw4$Xy"Q]Pztc%( J #/zԗ.D6Ъ׸TPOh"~yStxـ0t1dIFR Z̿<6Bؠ 2 v$:#hCTza$$a ܆UATt1w @1 1jaq7~ E*hTz{>KP}+Bg@d)w#cPEϹs2ahffpҥT&|0՝E_3JW\ DId 9v$:RB;fT! "ˣXڿ / 'FWwxgpzji-2M8 Sҋe0_ QP`z @FޕN4RYGeA΃sA K}Dd5"%x;JP(䫰 dT1Sӆstd087R_}61j[EUHԢ$T Qg\"nhmf 8@p<,ߐ.BwHCy|W1к7aؽ]P !tEnh}Tݜ]Mj@x ZD.WCgȿ؜>|'8N״Uw @灨?ak #3ާrkg?Ug #Iw-Q軾c%4нYkc\50!u-rNi]OONN [oΟ@݁coHF2>VZ!>=n1M^͡Óuשop 31E8@oS I T@ًWM܏ԏUbH2A!vSq݈'YM&P}@nŠ [ 6䁖&imlY[1 P}a]LJ: 萐AmD=_o1g6MWT k ^Џܡ82SJ\ l9='vn ,5(Et B8SO1NĨQvx<i$AeȧՏ@5''fö(!'bSL)!a?*D%B6); I0   Oo 2&36}8fЄX퀪B8& 'd xԷ"cȶp@3`4:.)}S]_jC5Pj&3ޚ:-Ka7%mS7j_Y-H/ ?Cks M`>M+ '''Ty3کV vmz>K؀a?OIT8B.*f;~Sޘ ?Tk.>t|C5{G4!оT={eX`X #jrsF]пeI;ecДqM㯞 ҔT2p4t]؟jx m\gCSR;G-AykQz>mDls'X00Rخ<-OwC=ޏtHТdb`gQ֦]GT& Y8+}!}@q7ن*̓EeghKvbvwXM6x1p`H~I/翛^U.̓&=7|'T^ o>V^wli?lS v goG Qןz]d:Ɍf d &Xr=Nw`X`)D1PN$Cb˯IeP^nfwgߜD"^{5aT>V~\NTLq 4~=ZZ^}1D_{k?'CR0p*ʆO+OK4S_ 3^ 4/,6R 83$A̓K/9U>k2$2T"@M3_|Q{?^+pdjNhܝoS?^x$_~]iw~\OncёZf,¨Ry4>1 0Юa87ͣhz_d Œy@}i PuGף;թ~G3~ڟb(= @lx5aF#ѵQ}>,VMQףP &F3)[a]Ayg*"%#qG/Ӷ#0 N3(O?4Uym+ ?up+R(O=ԆO6\Y&wZ/Q4J c+6ʓO>A}Kh+/ߩA  >F;-O<ā/cTpvB߾}`P'u2"{?xW G7ppGK]i`W}={@P-A.~gw5ѭ4"s N` B{>h~ep,z uXh݅KXSz+w=E>%_GuJF ͯ/ǿ^OE- ;j71s?0.V=j)Xߙ}iDUH 3ࡇ:ZGVmyKԶô`((C>-Vnow,Qrk~c Omu~>endstream endobj 229 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 5192 >> stream x;EӅfA@@BD?oG5sTQ:OꞋ[nZ<ϭ?/t-evz>NFi 7qgsiΝks[أk$mvlNuvZOҶc8 VHiX@ ls$@o(BS0<;wv hX63lt= A~y]}`'믾 ]M ªߎ_oV}̀ȅ('zhAHqڱkgm9 ]zV}.m 0"ˏ?p1 Y p Tp > ~wշX h6??2'BvD5H}߄(p̝QTz?4\%`7ԁdgRCޮqW~סQڈhBD:vfV}QZ: @7O,_~'!H`p*$H2p껆֎ 2`, @ͪFqAE;Q &ҩ/O?$,:pOp3-(#o2IOUG ?؇&0]PI3#[2d2/ &A>gxXLh\ o&cYV$tNtBbA< _R(|-.s oIZP&1]Ln4?Z4 Ơ ΂\c*?䌮0}>#4#@Ka`+5f"OZ?]8Y~>C5!H}rTM 3X<}8y4Ww>8@5Sf1 $1T-6 |dD /@0(k\(a^_3Oyi 00ת 6sE3_ ڃA >,p1ȅl^O憶 .&u':mg_O.|HeTiAżQ@h.|oo_dSO=.>j5 Sq'tSm9v!:av8Q7駟Q"8"p2:W(`o⛝+WTV20Q8eY~÷v Khm>xefs=G_H%2.F ˀ!%]L/W?J?ȅigpzq6y#;''D Ђ."/rd~Wb+f@]n@###B|n@?t`lZQ_$ LF p h: ?ɀ Sm W< ,hBC}7{dʯ2L8'h BjhN?`Ië_X2Ꮭ| b] LͨRW;C3X: 4gfrXt8X)l8nwu_hHe8)܌VD2E*AdDn;H{O|M]gi3Z"~ԩvC~7jKS:\c 3p-6bݟ~zd;gfy)&F-X Jh޸q# |J5Q? a юܛhC8W@/6B W`2)D<͛7]hXQD5`@Mg#$M])"9lE P! 'wAG7 ,3M֩| = ;KjQrQ8 Nڝ/y[OghQ6h+s&F4Wsfp7M-jS>C: sf4 p/m4"@@dF;J@gVjN? Z  vڃ&"Yu7'QG/yA #z^/mO?VثРI,68`mUG0#{E2kuy-̣k1G wkh@L9FD44 #/:|$Dnxa I-rG4,Q@a`v( M@d0/ke_$aFԝOp5/^8A *wޔϸb0CA숚& hD.,i>rF4mH5{ԗhdF9(2k@+vtgN4]F4("ݏ?mC[jfFI:t ۭ4> 36+ %Έ&WJ GJWwе*A{ꚯڂ2I Ζm=ԥa5D0I@AJ"[Og`0jPgN &(.:G}D` `8 rV%A^ +8}?޼y HV w>? ( \Ċ\ Q6LqvEдs<0_>!,XgaG$%a[x1#ީ0 €^4TuX'j׮]C&T][PM܇pLA$H2(Ŭm @K'ئ2pһ~Eix|NF_EZДTS~@@wիWݩ'y!g…(\$3 TlP} ?n0jg- ".4w~S>:3܀&'a:|PA eQ#VJtuhM8X `?rOad:՗^zו\EIP{}2NG'̣GN??3D<퐶2w:hsC5 *+WS0-Ha7ӫg@y4˗Tݩ:ֵE593syKi"FQ:$G3#ѝ0In؝?CȩȂPMzx=Jw- n=ݪ?KOC1:Fwe"ŒQFf@4z m&AdA]/_0V(7V@2kuTv@DO{~r놊c{ bfTh p+'o,jPeAD{gf  @Ho; 5PofN#k;guendstream endobj 230 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 4905 >> stream xgcB "" XX`aa!X&wu6<ߗ썧=s>gvmL؉xLx4-0=LmVyqxN tN<&`?D+(. w@"4C,GAJT?Ӌ +A񇒾 ݸTiR *9ONZ$Sy5T EIedk~b@,A=~/.Y14Ix $ F!0'M T "4I$*H )O_~KG:X+VGA!i(%Z$zHOT A3ZI~:b S8~E(b@͓}- iI(?.6oE=S $}:mbAbO:?C]w #*=MR?=L9H C`*( R)$vTE=(űD6!Ccnh #}(7 J蹔`Wu/b7n])}UO7 "FUݴ7|Z}ŀ2L* Խb;%at$a<_@1XZ" )[0b.'`૯:JlEUK0qYf/z*Դ,X<[AJ@ AeM?*`/H V$AĩW(>Tw^"+Y 6ybiJnԯX `}dž * i iTw *+* 0/iq ;= zQ. M3駟y_9M=$@ tb?#,cZdaDPqro4 T!:E~]P4r74օ.a> կXCPы!`u)iJ"iZ wpDէ!h( * >m0m@3=!0 #f`HĉI$;VSlSI79+ U;>gPMwQ8e:ՒT!z, 6~wWx8Ze~^}ĠR~=]oGYS(TzO LQ @=zQt?SBĴ(e? e|(U`$FA?0=o4J)JІ̑䀶8HOzhЙ:U_ghOL7b04 Ē CRczݕ(ૼ5kQ$9&FD2qꫯ=z^:u7+Ea"}YÀ#4xEs/l{qj6uՓ @D:߉CIxtKTl OUʭv]Tuخph:V ii$AWʍ^nӅ/b";NNI( #}ޯHOOkWb`BP7꫟h(qS3N*0PT>Nch6/^ۖ /@/@fO/(m: n_*=WBnniFPId]2;A݀t\[mF?dU*K {E7^#F4N0mLʦ>18?Reß&XcP ~<>tJzNOc-\@S&ZlJw|r|` "|׮P:WG]k :/1H~)`UH zjlhd/:oGE7FO>`Ohzo$? 265v'xb@Ӥ_$=ڜ# jnQqߴ?N?`<^bmsJQ#R~:(tTHh߉;*_vYҠEL K# U о8S u-~J;?@KDzjI#=`+<eTf8+WI ދQ+l˗qKEVMiE~i 07`0^ҥKh~R2HYl6E[1ι7ŋJC_8Nk{`h݌J/\@_i^-UxU(sܹ2 a:K1 xppٳEnwF}ʠhv}]C=9sL8`2"SvJhwI̽O>FPSi sԩSWw *6WPQߗɤ+uyV7GCl$xiI\;&m R_Ia++P7%hP! vKN+}Wu˷_TQnQ0ާ#{Wgp?cZ:V 蠨LɓُW}[{O[b%h'ש8s= cfL:{g$?*D1qJI-No&(ԉ3&n/2Xm%n0/R*~6cTKǾxE'_Ϥ#7951[V0P0t*Ղ惇*U.N"s2XPQaO yv*A ا[՟:JA\:ݑh6IàKVxzf ȫO]H *}KzI"s!厴Tӂ.}]OgC<C ~DDA:f+t3``% ]=4 +}ܩTO  aEi8Ԛ_*A+)5}G81:gOREۺ 踇c!0RP7ߞSqmJB} MS)x'et*# `87^C`(}/7PNJٜX`&LQ_1He.6=Y1>Jr ċ"Yu ^hJ @Քғ( r=}^W_it0Vp8E:Q3W54x֓`<A͛7=KէYԉ  K Q 'u+/Nl5T uIӡd}78ݼ'pPx衇\ z(A_Z K@° ۵dJhE0 51&&) wwJ)MO”25쬝={Ve8ei;[hItO@S&m ΝCĽ7 : xn`1*T@աE %?߾0*_L͇ \E}܍14G) o_G{MO# }j/J (JpyZ=M:R:dO1'f0 ٵy#5(8ojP$oܸAw!|> CRjM1ėk]pKS\O'm߽p y*=ŀ<(/^<s*5~Up,A {` ' _ Dh.]tk4 @bЇ⤣p`w`ܺWiP}iX0j%tDOURO$ 8䤔 iH8/_Gi%o0 R )LG:f^բ~솽r .aR-;0iw` Q\CpU#\IHJ ?5SV! AdD7(ܸd4/@O'߼ 0~?ބ`?k׮?PVQxT.}߃sgܺP,+Dׯ_WqN;A[b0ه}0h AۇP!JpOkQ`N-mQqUN?60 *5Qendstream endobj 231 0 obj << /Filter /FlateDecode /Length 31669 >> stream x콹.Kr$SXG81 5@uIt0?an摑߽WFѧ/f=_C~[msVRLs>10k`}>?g}}y_HqHyM?XFJLy nJ%1% nJ} VHR ~v)T}$MPT/JgyCqYCsY0>{?k\G9Xγ/15ꚽrAKcLr_b3c?pɵsΖQyXkf?"^^9?޿-_߰@sokA>]9ւi8su_C Gela&|z5҈yd?E^kRoޣ͵]᳴1XoWQ7=z֊?ׇ ՝k>sUHlaamac7.'$KvϚ{h5;kMk&V3 fI، zlSkl>uVoدR\}$m^oͺ d}DtIg.ֵLL IEMtj0d}zZTyUZ2&YgX?_$em&X!HSjյӾj-?=|-ǚ&lcfevj %a_?lς zho_-W?{1.uxY[76⚖&k5.IYnk3[35࿬ѝSMW+X X4Z>3?uo1R!ɟݺ @^W]Lx5IƺEf=-, I>r,=%ICmdj'-Z=M{Gwu%YKSH1/:qY{(&)h} N+ YfUVlmzj`$ȄLgu f7Lgc;]Ԣ 7!fZ,^\-Bg_Zl5~VY>YX9wK>Rm/#t!y'uu/R힂fkI7!6`42"Gߵ/z^~ͺemfʒ_8񂫽vэ7\ჩn'\8XkR[;%>k8JbS\ǔ4$I: %I=Mtj'xvkcFɘ5[m%>Ú,>k&sf`k"ѵP$߳Bh 6咏$e8$~j'8ډZfkT;fBdI}4aK7.?- L;;/QGŵזۇú1CrI)he?᫁^F6vJ2XG1.jAn`Lmte1Ye(U9g/ɄyaRYsb;k~sUD즓i,IQ;U;xUhQ L9[?%kY#kGz 4R%tbdz<2c}+,IaTө4dX|?1l9l'Dq 4#,2td=e,3LzIXXƽ(ܖ56ߵs',*; qkݯ#!Pk]#_OsK2MzYwَ]M#eNaIS9v^$4ƚnU&y˫C?8(J'a ک`u[U:!Nj#eG:;pK)+aЊܔ&єCwmo#GuI/iI)JXSS? %0 %yC;! %D*fH45C;p 5mp>)!`:Y]p0 OZn1?i$l44HAQ x0&E lI1Oί[;o)zeZ;kj|C49Ӛo.]}F#i'LgsK cWDmAi{.Z&@?*f.ɠ$ٶ |MMLe O4TIѳK97&-$ SB*qR-)f|TyZC2k5՘WZ nzz@VH$;zyHONJΈ;W (Zt BttZNL7 ]k6/#YyN9o;m`Ј%Y{CkhkZC2$:WfD`шzY'Ns_I2)bʵ'Ć3v aH2$;k6ۉ JFI;33#?oŤKՊ6(kG]fAC)N39$eS)hotsZN]-9?$CDCby9e[7%py/IsdE4"v/^6ˊhYV5YVZ|J7~u69X2maKGk-pf6.ɰPoTt%|C痋Yn^Yd]ʼvZO%6(ZSVzweVm <8jm\\š뷩0t`WtYtܺ)r22({z6ax_^O2՞W2^4]2b4@6%]Sq?;חHNÓGQ3CeF|tzvhZ^v+YӝSAy~)a2x:lX~(#;=ܗv&0e^e4&&).kHjZ:":^LE'f6"ò]z-5t4Oο٭,Iyf$n.IԌ嫕6!\$n$}棧`unCw6'csOaN;kRCRy^GkF|1HtjBRDsD/mTKMYm ϭ m/M;&(18wc67ǎ]gv^̓tnHii5Mr`FaѦ(@<9 Xg 4qOyBcJ'N+8n{؟#v;c7Dӄ8%43vn+x L{=>Kf}ID p:W&v9 Y|)V!$n]ru IJ% nb}dcRҗܦw[Tv]^,t) F2*zkwuZ|T\;XYnOS;Ruf|q v?ET3d5LtF.v.nvysݮ-ݻlknr#Hlnv :p*"'qvw { o7q!I'o=yt!x@C$IqVbx' P'9 @$,iNV;Eʃ.pV\"F8$U I1${J3-eo,ƫ ( -X{$RQ[ps0*X(D bxS#lh8`#j:[ Z8G;qY&$劀_ )>RqԫWi=&Lj(^QSF1#m-3c E?nm cnǡ[:xUpg3yZ]*,jVӎ[l_2h5x@ZeΞ(JĠwQƠ(:W*Jvh F`q`9˔T2!A-Lzu%Aiy?mYBJ(EԒʞFj\_WŪU:6R櫩GdyZ-kI]W[ QBPBY0HӔA3z-cMHe!QOA ;' yPDyWe^ +y<[ 4=A;|DS[ ZcJBr󢓳̲ .Xy"=J;Cɯ4ETc(ōٔ'g* |U;C]<)yLe%orS_%@Ku\$=+k'>,a A!˂.E|];$f4f) zE9£h@ZR Tq8i'*H:r &hK3"%2A47M?[H*GmwN ZS4($PA3֑EGG(~0k9jGBU4_-UaSGڲ]fU@+3*v`McV Vko GVfX'GkN옵ZEs\[- 9f8<.Tx4"j`(j@pxuW#o=6T_p~!-ɝ/VxB-XXuX'<1;l%re]+ %n77z ZVwgZCv Jq1j "(-*$lL#n!'(X=] ڋ,BBWqp8uG[WdXD8h! j[g~9 m`)45MOl56 DhC V ܧ0GB[у(DΏ0 y'zA-@Dw勓6xf(?FI}H*F8&BƧV.:+ u!V$Ȉ`lNQ3V HxbC#b.I6ق$9b$% lgyr0y@~i8 \c;|iǤ CqARFM.F+r)AqsAS>#t)A,>p jc],NvA4]-vMyKs b[7]7&U3#iN/r"\^~$V\|'G->jݔQċmbn&D4Ғ۴m} x[n]XAV\efd)@ܶn1Qpl2űk4GV`InZfpg0A7)sKx2{-JY]@$kybATO,[$"e4z7S j֜=&Qs 6 cn~Jq_B?ϒ_xA*w8BnK­Xp?`|YCƁcL_[W4@Sޤ* Y7rSn[JR|i|S,>EhJ%-`ԡfb{v@0~r%F<ƂFS4P a=yW'jQBB.'s®W2zw)Lբ%=$Ԃi+ ֢03@WX  y@^sAYaAebEGDߨX)a<2Gc'$]԰QڃT|ÊBR01E]{!Q \1a b_e ?C2o1jL %ƾ[f0sMz˯Bה;UpE Eh<u쬦 5LJ5 WS-J0qA VRa-~ "+ ӊ@\ OjccxFfeZͻ3Kxf(Q* Њve([&PLduLۥ1S:&4!p(픺3d$LQ yGR#H58o a >IM=yL(C}BS=݌SǝSFG%ra|=)JwA$a2y<3ϨGeQD],7,;zPNDO u:T*yW(yr"ZSJjL ~dj戠@2n KSB$M-(Ғp# E*P4~D |P'kygڊptyqyX ^*1䘒]Ca'cbMW&M;Ktd:@'JY)6=rHrG5R~愆s- ATm.HD{"{DAN S+ ]Da٣#Rz %@a=77lOsK3HDF e T()mºan:^!O =z]Œ|uwaJ*a1H(U-ᆨ$\ W.-b39BT5"+$V$E6.-#G 6%yi$|^BhyyUD{5,UyVR QI4Z !UomɄx6^O ɝC I, 󯋋yJnw;^OH⭬PEё>1ŗK(UʩWm,^ W: -JuHQxA'bDLqy1Wڭ$*!>0&&8Ø^TAub Tɫor2$* 37'9:$B:_YX"T qёwŽ*DFohNM78:1Cq1W䛣Lȩ⤣⭣YvcS;ȣc$)TT᜺[pS2˩$L/J[/-8- N%^t(UlM.9$8fo[pS/]C /J߂Ry*IpSߧJء゛j7% nJ*:$˕}ڂW2Qr/S%ܔ$MɰRMɻ7z?VGJ nJ~ᝬݩÿo*e*b؅SGSc|(diSI69$xQEiqܝJJf nJ\_t^SgödSIRo[p*1Pw(4J$8J.)ʹ7~-xQE)W%tJJ򧇒 nJSI^J%ܧJ6Υ7|?;ܔ؂|qJ2 ^=RN[pSz9^f Nn!C/Jn nJ&;$8硣nJͥ@I{/~I KK(U-8;Ϗ-8,}*TBmyl[p*?C鏅AT1AG~>PW`Xe|aS"&I\_gSñ4~A+A.M orhIrv֒Բ0Mrie1%M t1O-IN-K?o0F1Xh Of#}/0Gl]1?2R?,xL2 k ZrDůc}"^f l~;`撆X0bǦ{gg;hAa5pLNC^d!:p"Ȧ1EGp2YY ,_PY" |2^¸wk {1Pس/+?M" 6?ba^ s] +z h`Db*@FYۂWR @^ Qj5X&g؟2 8VNO/Dͨ_Y ݊ |G!X-yգq%Yөv@6r RgW3+rtY;ZzSbS+ ߉[aPt>_5`Kck Ppz#1PWfD, FNnvwm~3C75dF 743tdw[T[U<0`tW;[Z<̻2jKX&/Y%1dmAT ns QqZGH0|q/r(&vBYk{vE!X&ѮoX&Λ_eb:g4(`<Վ!\+q-iZ$h& $,fwm@3A;T`kV 4=E˘쥒"5lo)gr-V5H'}]Y@ɴ+zn0?]pQ~Ѯ6}vE]O,qBrBuhܒjD6P~:dܪ&Oa'CUL-b#w*"0onp&J$FV!$!-9!ęλ, l+ݦv{sJMޥp/@*铷4N"+`kĬS"?jd FQni]++ȗ ,r4P;~"!oQ7+d,AV^* <vkHv]/Vp֟5 FjdIuR}A%}AylГUJ,0/3_iձJ0% ͜P҈2'F ڕ+|G{%PF/*$b H.L27 )*>7ϿtUQP͖d]UJAB{)9}ce%D7fMI!Kx 7àO#B@1(0b"3K2&C =7~3J%&4V!I*& Bh7`UW2_w'pC%3 pKߠ)>!v%9h#TNIJ1 &l3KZDaR|l EvQc L㾭cO+TmdIuYHBwqP%I,KgoR&J"gmwG0VGOϻHv6tBN/2'UM`: ĘNM A'F#~I# *Gp(j+PԔFꍅO;Kp:/IH/f%v+J( +&ٻgߨlًo &i֛%UҞ PV8& NS`kZtYZӮx|;^5l,j7AeqNJ ˏg3`~!i-/У9 `~jŒw\D+$sa]3!x&6(<sHf?A *0WY94U!My&rN`z{/d[Y[PhRpLRe$z2<" PSӞ!*;jxz23$Cu:^:^4ͣ΃某ZEͬNXZ-*B͘g1E~I$B_ѾBod5L$Z.tm` eM4 adF%:x:L/ ^td#:lV~5q'6w@2 LIERDmwaUMg WaX/ +D^JwU/$]팽M>=Ge>+&XhKR'Od8.F+jIomFkBJ1y+.XIl @H 99>MAhDe)YR"$ׯ\f]vJemm€%֦kJTiw1|Tź R*k}~P1&>L-DeL/+?浝,{.et`-ժIƽZ=^sV(EmjUоl~Bؓlkp LT.l(]g@m&pۣ$$%`;~Si$gZJgoCL Oq"Hf] _=1@8btd<: EМݢk?9ZmlOXmݩLae{oDķ0mXSYx[H/W]mYD=uqjB)ȃ\Q*DA*At& j&8:Z WWIU~;*p}= YAQ} ~յikŶeR帣NNIncJQ*NT+Y%TkM%B^MwpԬ[ftNY7墉Qs^T˘Ӧu{7 mڇ{_{gf-INSXKUKҸe^Tkv=FZm *5yg-2 ^]NՖ= *cF(+T=:kwM'%@#H`#ZQ2iw٨FZj.?*RdΊ6rҜnYl^C+\trZ.@%UfGZMqa][&<(tnNKGI4,LW=|?xβ~4y=Gp7]Kwʑ6|rw/6bIcmfu g>Iìa KG{FjT¡]\nj!:(%^LݥΥo<d^^ I 6$I%${r;5"ؾ8=iȾN 4/ m{vjtdvORT*.qX)ۯE>[ӭE<0jY/{xo(qXթ_z{N?Bc#{>~y|`s u>38D>%*KX\ouj ڹN8Ў0ގHT}fhk†/Ekμ6Xp8cȷ}p/[:ܯcG}87FPSy-؊"ܶitR|'<r?3f=I b?{ߎ'e_̩#r(myH'e)|bA:lA:dT;ЄС :O;V_~a XMzԛPR$2rhlݤĭ=P@yyE (Wڿ. M#Yr+YG˲6.Y@Ӣ^zlܣd7 q[(4FE]67$Ҳ11:^eCAP0K@ 㘑I0ke,oQl$@oB$!aq`r/HBO ,ޘUylWg 7 Gx\LH ELUHG˙V⮫ԛC IV3t!OO)O{hn?#>C?l'k|yZQ-+ F |"W ^@-~]1(]E@2(R02UF[S@F!ɯ+hc{b4 @"C?TRxȦ aFci*H4ͺTaή%5,p qaEA}~"(֪!$I?\YR!Ư(u!s#IW7լX_WQRD!Q3Vhu}խ-#3zcEq--Fzg?rœ! 2>֜bא(f3G'swb鐨o7t3 cK}-(eyمP J*0Y j--]2IJi^SfY_AD&OTS%ÔrY&P0ce9% AQ0t'ו:$sAЕAkʗYWGSRyGN;R|y(qh)@ 2B7Q"fTlIC/M9KHV^SE}'$J)? N9S<+bϖu^醙1ɕ>Ac\喭Jfe>f =\7ʇc*kh3G-9ÕV\ʢ3u# >2]Kc*=) Al%wDH&LR F}QhZ@ -igmEpN'#oB0'8p%vp@!HsRh1Y Iraw8DL]!Rz,9p7r `^BA B;?*@Gp8SॼQp (H1PJp E0V[]ds9l ]X] bQ.FX)0 C l]aa~9#2T!vS6_O.a|XA*Qh@D!qTc07g8:ѶA#`y֥C#v8%=HJ\ZOpġQri&Iwoɕ6[*%[p!*$z VT@cgqVZH|-Apa+mӽbe!Nqd6||%PNI1$-7L¯ 6jY_ݑwK nG^&!wApX'N|J뛇!sS_0 F:~ߎÿoA!748 _8+ H\v'*YFp6/v/~ĐMW51q|XW™o x cD'1(,Fg`3%:TC &X05( 6rȱ|ہ&ئHNRSFtdhLM,xHf ״EqeVH'ʎ-tMm!?ˎ$l>"E2{QĐtMݯ} N#kqH:3I8i)YfvH(mV&g5$(yf0(azww'`Z:NLD4-e'nW&Vj'{Z)\}XK \)+s6h yRX-U"͵u'Me S/VK7Z-0ź%{$7lRԏX>]>B l.cPAfKȊڼeWP/?_!]pQ 7 H#un8%&\]oqwS^l+^oo$r-3/Q=dTe܇֯㡭?)yhm?C[hm?C[hm?C[hm?C[hm?C[hm?C[hm?C[h{[8(5û(t*$ bEixSm:!ݾb换71ZbN6'C/!!Mk'C=^y̅TsCRDP]'7ulk&⋠c#>V1V8Vܒ#\s{ζ)|$t779fw"}C#Ӧ5escX'C}IZlW=tX>;)߬v>˦sGm 3Mp39tx6!5yv٘g1< X|x`H8|G It>y-+*yPae0Teˤ4u{:#=ȐȾw{@E&NGmޜ%!s7GTEkۤtZmUM4T}[,۰m6h?6fO @*f} d/^umFCeXqf{ĔyTr QtsocQjR/w-X{!hu&  n A]V<~nP+3uW=N:]856@6Ǎ!2o."@FQW."͋C(gW3v(/ 1Pf<) u&Lr/x`4#s`0g] h !0p,<` Lsũu(Q&LYL&{-vEd\碨 0\MqER"D)z p@X"+uPam܂Z)x0tcp 8|?N<p}]:-W. UldH`v >v|E`ۜEWl_WQjo5AP 68yS'=Z'l=,+<zLawk񸝇SHZab %Dr,QHYI/H3(`V8"=@Ȯ i)"HNsKh.|]uz*ylO u* l" y҄t=?1#d(kU JlA䒒_kNC$"3Vv5ϳG1_w4P~hPnAZ1+DUP(1{Dll12̈b,sz^s@a^1M8=?$«r[re1dsg3匵 ꕋ^ǿ<&X(Aa%HT2^v$L[-Ǯ LBμ?PN*'6Y~ŝ5ˍHUD8  xJ a!69; U΀Dp]Q. .$V@&t>R K낭`T4`gVÂ`,հ2~] l hIrr`fUaq)w@+UuC8w#vC:"T q3A"R<zcNP_p$dmuJ:E2]Å:Os $L]ɸ[*َM w # V:H,Pzes$ȡBARn@H 8jK=! !|ҖPHle_8~Cqa($$" MiC:Y@JM,3n x uD!8R_1i5DsQ!(7u%!~73jFkp,^F`k/1-.BSPk{q/XsKhF+ƈtǘ6,gϯl5! GBC"\k8:7uצxyݵy6ljC"X0›CJ¤CRoSRy15ǿ["/8~a?J-}N0Kw?{tD$v8ZpfM^,ODiSOk7Jm ЖyGly}?8SWOϟQg^VzZ'] <36|s_\% Um׏.?->Nch,.xQOyé$mWقۺۂ_fU-z nJ~llMi'JbӇ nJHA:T~lMrІ7%ܔ&SIS؂S [K.)U_/Jy(s_|{ nJVঔJܔعT8\pSJ5O% nJ:rdlH:(T^:pv(_)܂5O% nJ~nMp12Nj|lC#} nJSI7yיs qۦ7%`N}S)Rd䂛RDTUi*S/S[C7hȩ$/Jup;\pS*Jܔd؂SiZPrM)-)!wCEu/-8XPrMɠ<u"<qYi. Wl,q8JHcc߂S\p*Rn p Nw(=7ZXحoߍB@72Wؙ40.fSL+/sMT$79?(8u*hqJ.ihCKS˿:qwt{Dϸ<QajhGodF>R8M9~!9fIGk  ;3ɱnJ fJfJJ$fZ^ :=[8Rpz Wv֡Kou _C 0:~ I2X4bsmlqi,m>yOj\#!c v q5l)EUލm? !y255Yc2RVu% fE@ JTdWJ&^2 ڢ-\OmlNv`UPjcHOZ>d*Xވqe>FN^U#ՊRU9ɞae ǫGfٍ|2ˉUJHbjAI6)0|x5 $,,-/Hhf rbyb ~h+3,c2'`p-'*6Uvk w:;05ψ|V?71LwNfCN13\\X$1#`f9Uqd/AR0y0 əΠR;ΜX×m2 #\AN_1 暳UѨ-!ha 4$?;a14jH*JJA3ܽ$v+b?A"[b{yBҌluU ai4ɧ}.1n`V>[, >CÕv/ ([o50n@CKsb/𚁴 QpxzҌWNĒǍQp3Wb2``x% TZW7ʉ5k 7z<(1r^ Pj4H*8t;KvaT]=Τ,&y](bZY s%|GVGxIT&# 0\uC Cv|un9 7,AX %QT&p`q%8T ]ogޮH?Fwy껇]| BǴ똖DxyPm^_![==Rq^J9RÛӪ⍓s@y{VU6ADlN#GM(qgEU-)1PұxA5TA+uQ$g_ɨV%̎S1HբVl_g(q}Dˌ(~'6V?2xݬW "TAW@3?! R]E46!vD5nsSd?uVr!}+Ż+R\c@Zj/VmEfPv X5NVB3-Mf4"hpl\@Qc|q /L$pLztSH\ɶ^h$@^z閠$tFi"nBon>pp}< [qV0Z:aɨ?vlDICaM_hk.lk.LmB-$ f'锍`k*34)4:0c0r\+n E h?cw2ݞ84q-3B@ILo, t_/ڑ{"0l3_F84b^Z1pn/gv ZPgaiN.ghq܆14efjq^*א]܉e$p]u,5T3ϊl;$J Қq`xQ )-]sPo%v.ddw_Bg?Dilzc %Q Zql.EC0&N?;iwAݏ7 )9skr q28z C kf/T~1[%yS1×'%F_^EiD*U7d`||ͳi:n6mXwE2D杼:lh<0ߙTvI IPg#Z,ϡ5{׆ C4`g_".I2uK_9o&?Pl&xCS ;N`x\+k7Tjd*U]f8BS]mxXvdsixjvIMdJXcUQ rlh$ ]A*CDI0HYBá9NT;} oMގ}]rI,NMcr_7BএQ,Xgef]Nk؊HzvmIY6An K↴2{ӈ[L֠ې%:QrځYQ-+Ӷhuru"p{/-+|TU;+&m<**!jSv`,9:|*LrnN:* zaƿ s%t,ǑZQOcZŻ|h(W#9.Z5n(TV%Du(+fh,& uj:lޮ?&G$CQ& OSZv3g, [PV2>.C(۔{dkʬ(NK”Ѥ4czohV3ma&ޔlfq5cGF0,J2Ih\۬$ poFzE)p&LUly%xgүfEIף&[y'>kYul^ΒYpt*,i`i?e+Lj\ {ʬ$ O:5Vxr*cetMBo. |bΈyug$EN9zQsjM2ԚkCα}KmuN8l|: u;t;62zC:M$L\bj9~jEax"n!!E)lT-lG0hV0 b 0sP`'5ȋ B1gTyy8YYk&1dCVڶI'أ]:*4sm[,Ւ$duUjk_Me$f{ڙOyl!I`)f$6E7 ʙ#ULng}ICTu/H)hPVJPrPC d9yCQMXϳ P:¢K X4_JD2\b))|mHi LF͘`VYHCvXEd$C$DXI&$ +ȎDtV1I6%q n8 bDZEϷ%r(Omj%)_$6K ύa]>x?Y;I)ĐI >[#\CtuVIw dR{_X)E<%BXl#%\+b |mxU!`& x>Q4 nfYEݟI؛U8(-sV-Z@2B쮺û:;TX)XȽnViDzFJxa1 A,NX !O'ڱDD<]J?"+ĖJ{̫4c8>^Dā5zIjp4DTS#oNg(~tà{^:–]I51zHׅ݌Rl . \y\>e"`;j0%Mc{&Թ`EdY*Km'`<&2d}ƝP/W! x;1(x~Es mnmH/vY/ |/$k# "BY6=@`u{aȵ~ BBճ}<")<,FݨA#WdަJ_GO@Ngm!!쿦H;nm{Ԫ#WhU ︭1=nK ntrW_q!E?ZruH?!0䮉~u$'m_[Ol6|ztKY@v,tp[`Y-qlqs~C+ɉ&D9b tl{$m1p@D.$g`3` qF`'<%$ ؗ(fÔq2@E?8>Ze>D`\ >a|[u yd[܃Xj#GBL=qyŅ `by4Ÿb ͪع12` + .vALb Ѫ谘8m]j0w.ȵs;~}M%_z"egz9JH=0?@i໅}܃HSK@AI˹pI q~pd_Ӥ(m{ Fb'yW;ا^kM>N\m,ړ$-T<=ݙr"6}04|==w=@hH\sbZUCZe1wuNZbGCUL`%kPqtζoSnz- FhxmXqz'sNek K#jukx=$dHkJ$(X; Nx<*Hи>. Rz/ A`*#,.ZrDrFQ%\-AX%A<KTb㯠"}"帠1I<4X ʕ>O}f)71[H93= Jш0M=Hx'˶}줤l-ϥqЄ&pvr˔)ŊSp+KVe !%)S ~r!:.W6W vpbSӔZw6:;(_p9-@'t9p':cLj<+e!m7]:6a[2`!ӂ "6,FD)P)IaQb5E :䘚bi.JĄR'S2>jf2LY](}TX &pl֮mW\9)mr Z}mlQtUFq{܈9!No 'ʒՌX- nIkoĔ,FLʒpS;F؟sl/#&sl9w9IRbh{qK9=rbKl)8l.`RpSxӌc2pNikjo8.ʩWYu8edP$FfTd^R QXO /,=܇U._|9|N{{QC]-X[b}$uvN|OX>\@B[>'] >Yg~6RФ5|w׮Ʉp_~' M7</ [~l7hVi6"m&_~G>--}@wOA} #z=Phv^q=w_{?yO$泾\,PMC  }Y (#HtJOTA `o YYL8;,Hߘo lLXPbs*;Вve!E RbP8  eaA*qMj? Xej j3r)`@M`A9x&Q1&؁JځJڃVF؞ 8kƂTŠĴRjb&A)@i߅)#ToT/ w (z_shλ]@Fn8.؁b܁⃒kgA*XJ-.Iv#ŨW]`AySv΂T@e7Mpu5qĂT@qW]8R,HT9b@M@Ƿ 8Y (bA*0Z;&p/) $IqpÀjށ2W*~w Q̀*s hZ8Pك^l8bA* P,F;HtGB䍒JAI[T?j]`A v gwqT}٧iayTq[.OX:KڦnpZt_ Ot, ξrs(\yq!Ln@B,i>j訏lk\q1u\AHqՁ!cNpq̡ө9;*yt+&W?"L[;\Bѩ??N?@sp'5K,3uHew,tyZ|)uXe__Ł2 OVk^_LKT:ۖS1$z[GaiL3O!'wڤDnu'{rl:xyTG!h½izцp˄hl!LL{yZFBKV0'@{gSIAMYWB:뭸7ZwlfҞo} MC6et-%,uvZ *ysM.Z"Du˹hDUg(y 6%nvxenE է:` ic[G5"m!?KY\U'%}Mkj|HҍZ_ +ltL;כ(?4⺴4_J?˸Kamz^#B]s1XH%>e5Wh-qsWV ^ Y0яطZOuL]ikLrhg0n®JuOk{r^'53X_y/ؽk:p4=T܋d?\pԑ {CRIjCqѩ{tUJ )817zn }<ߖnt1/[j/ԭYt^q%;[,[i*B %38m5YKl?-.1̳4y%r8ylyKKfKk3h5ဍB1oǸ\ox y15luߌ5S(+^cl-ĔGˉr4SZlKX#KVmpt2[>hqpha n!ێmlwCnCgX ml|{ؙ]iuz?ׇ)g@nL61cY{Ŀ8UeO'r۶Qmn$jͅC'B 3kJ;ɹ9&6֐UR8Kc5Q!:4Bxd}b3C o 찔o30qXu "utsWnx")5>ěaRt[=l]+Y]gOOk2: X1dsm?ycKMtv?~mu25SncHf=Ü,{ C}wo~?mHS6fjX6/endstream endobj 232 0 obj << /Filter /FlateDecode /Length 3385 >> stream x[Kse6~C*nv"H6$(Y=3;ӳ%H٩R*ZΣ׳iz`'}y{obpۋ.xq]q SO%$2(_83c *ԜKϋħ!+5JN=ݟq6o jy4Fo4E< ]%TcŅBU@R+iPB\$ЊTjR3]b<0M+ӌ|{ftN0þiPfJnm{Qs,:U(SE:D/aeBcnΩOp@! x'=ZT.!Os q õrƌ I5d񤯪>! 4|7;B F  Ґ0%H<5VW@e 'c].Pn T­6Bљ h 5Pc 飹$UY`F@ag}jcU6]4hR{ҨتqF$~frP:6n Ц΅vHv.$F5-`=܄7#K76XpmPz87ɩo泻rƍkJtK* vMx"ؕEvxOP&J؄7u)hY8>Ҵ7jUH+L`j">OvG.,8;'&8sr `3LMR+a^7&y5eѱ,ߝ5Oh)a)Fsix/TTy T# zSs/PKCTA2(=v3+Lze>V䕟xycjV.: nb@پjgDgKCS a ]q)c݁;Xբv΅ks"#b3Lz?o^a(=Y!kEJsg4~]tK(Ӆ>=|淐WY5/$)u ws `?w?lendstream endobj 233 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10  ]ZUm?eB:gׁm_Xց$i, x`F;S|endstream endobj 234 0 obj << /Filter /FlateDecode /Length 3609 >> stream x[oEoV]}b EHöX¶wo ɏRdy9dB1ofgW36:g鯋aw02x,3m8;(gf7g̿^kU8dɡ0rd,$ﺜ=I7Dy *(!kڧyQꎺC9C p?_*'R]Hm <הHf#sL|"c%TMі.CRTi O} .K! G BSUI# =-xVAV3P̹ժ*ȉ֚tΩ=!V |O fTû0A>$VF2"kڄn–xf 5eߞR\ .'noH/A7]ņ^?hs5( miLmm$He|aڠN\r)?oqqrS" <jOnh_N*7;6P${;]'UlۦGFA( nh +XbA|"(6"3H#EnJ?]?⣓P&{I5!4Ǩ5A@ Edj)zҺ1;y­sC.Dml9ǧ$CWU.b Qb9b1r^D~39$Zys&olju}&7QJ 7u9s 9Ύ2e Ƽ4xJ ~˫ݝ(̩N P=1xW!&ӛAr &*wL8)nA+!v?YG9/)6%묜"s'WM hđsCKR@auG/[5 -h2gքׅ4G_ ul 3z0fBp>!hj9I`쒹mz*8Rk.tԗBC #,fM*KQqӫm{g|p2Ec= -Uw1`kRt0c@x >@V/|vtK˒X=pjU.Q*i7((kFc/Q=IS, 0i+nQke(ܭIbEB|,ԓ9V>02\JD ۙ %+k[x<)h3 *}9bu hm8K&Y"eXH,]YH0*$}mwQiY Œl&h`Y2y usZM@oQ_[D*qB`Omr`dˡQ~~PUxP_|?~ByLuT%I%P Zcq? ~GP4][h7y-4#2A^C!soɄU>nFGq]@c_g֏_>UM#FS `|&/]Niu0uTk97n&ZlL>H(>E @.1\e"Vr:Luкx^ގ Ҧ$OR?gY`= ̪p.͖|E>bE_$kg sz/Dg t$UCpC4n?CWV,·OŲ`@q*:lc\ýM{#%)(DQ"6Z8CEaز '-5cp=.p}h|;JP4=ӟd7zW`{%ɛoUt*YA&گuizɌIԊb'Bt[!:xZ׫«$J6b-P}n-бy⧉?]BZQl> yBqXf5#Ê;hHUs؏iUaĎH vfen(0񚊦 (ר~.dSw=q[!(puEI+a<\pM{fџ̝ާÁdy[Hjc%&YK? )5JRTߺ "O3@ 8ٟ  oGendstream endobj 235 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 742 >> stream xE]HSaͱp6s-4 &b¥-̜&g9T!JѲ`bf<^` o8szPtr>-UHE2tQ'+NL#Qל =CUf\X8xí^Ϝl./kPIH p6?Gأf,+wM@tuvu`$L}@R\% Xv.Oo~5^.̄{`EB DlUmYJ(&ם ag霗w`GfO=,M22CϾv6&5Sendstream endobj 236 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 426 >> stream xcd`ab`dddu 21T~H3a!]cO]nn?G ~(Ș[_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*\"s JKR|SR @bI?V3+_}ߝݿ:9w^{g倂'D߫>d3.yz}ƺgK qV 7qZѽM3~_+ۻsO/{Vw\B ۡ݇f<ʛUg+[yNƾ|Փxxe`Vendstream endobj 237 0 obj << /Filter /FlateDecode /Length 4575 >> stream x\[sd7~7/2DU\R y8kKlY$n4:;3Tkt׭ЋK;Wl8>?]ޝ&HDJ[y~,~S۠έwoX  õFtZ~YuO0 {c`=8{pƥu+i`]!a|b*'N?.> G ]o5 2Q^jPLHKC^)5`P b)`t^t`$W'mR^2e 6*}B@yoiÔxe Qn!\(HT`WOJ&OIk @iUx9&~g)"fZv($Ayo,PVrZqO 3%\w Un>^ *@)7y:<5x kǝV<\u`:BCR+$e> _ bKK<6km7ge"zz( zyyxyxc : L1+$8Z?q| H!^T҉!@4OS\u~4ǒvNx5ƄעLCp<|Wy<>lݗ-!9oU95 Q|>CƠn!V*8nh ɖtfA 3)"0yZG@V~W+Æi *fG2|[w`7/OMSBFvi-'rc?[!&2ز'kpd0Xm`j H+eFNKfSGfIϡxFߧ( ȸdzwR&V]'-Zۃ6Lc$AvIKH%u0Dy'dQ )-7;2qH{pWʧ'2/]8KO.A%DZ% !|!t$skE3N Z.^k4 r7&!Kt:\3ʲa*5YR4ıh 4 6a@B P#aGT J@_6x92yfbg3"7JWkw2*ŨOImO烪(ezSFiewHYpBHI#/ ,5 ?Cџ4U&'Ma-@~3& ,'E{IV3KTKF%_>gN<FF=HHc0崷[ю ݯh!|=l^pdo/k[39lĄKUy 0E>Lb*L#>ǼKg*Izq8/I&=Lzϛs ؇\Eڂ@HBoe+<f3|b G*C3YTcyȟ\rC D݄@ȇ^o{i/iИ4 ۤɑ&deM#1"-&1A%esl1urFf{M}ybg93M^#ȩŰ·\ H;XAc;AOrQfo E@ %gqaTLpD 4e++Psb< +6M)9N/;xQL f$C  1کXz.l?ť-lKײַ&he&ЬtٌI*\/B.^7}*?=FvdmTVHvCJ'ݗ⇑ݶל"Yl;1{U!eW<$v&rgQ8̠*Ӯ`EчWa-׏3Ͼ~̬vOlʴUU"`/=w`[ڭ he%9Lmb޺0DǑαh62~h48ܙmR63|'(е!?1J4t<,Ibx&[ ҁLq`GinL+ʓҒ*)_](Ȋ8m2Y u,סGHJl8;&5&[kEäELRل;L3pkR$H)eKL1~CA^'}Mp :'bևwVb’ֿ4Pد}a$ÙWy/;7DCf޾l~ʬ]sRAWV۱u=fC>|t&f`?|^O+. Wi W@Qb./QT_p qJEXWefcÛ9E?p}-\Fl'G8a:VAK^{E2CD3Y'_g8 _)޵endstream endobj 238 0 obj << /Filter /FlateDecode /Length 2109 >> stream xZMoFBGm)rHݚrXcAso3dvlAlyo I}V)ovǯ0ǙL9/mvWXirrn]뢞[|XZ[!||DgLldiW].z!b 2Oɼ$s[]]zxӐ} Xӽ6~o2,~IZ|b~EdJ~I'wd's_eo2%mxD_ 3){2YNI[^v# D_j{I|U6U6xN2V c<~sѪUAUdAu[9Xy^5$ 5_'` VƟoպ'պYM .:=:VṬWY-O8hêLa#UX5O+^ƦMWl[56#iq݌Pu30X }#DUX1%STStIʷ";]WoXpAFf;{Q{SOA^Rz W{f I5zfLn^WC{Ejq)6dUG%SUWY9RhW5V!@&PluCф@_-,gOj#@>Tȓnxʺ3yY51w_,{hG`2YD3co-ˀg|^/r_;ӃX]eMa=X&*={H}jz}]J7jFm|'K:i xQKc p.ku]2o0쭓z}|rfxF % N`k\@$aMpf+-r;RK)#[^ t6~{ *͖ߘ8/i;hT^(z&KʉB% VHAGuR(R|i 1#DcrawỨ脔Jh}Mi OiJ{0RI `U5g-028jRi#}pX`LpQŃ:-ux/:'$0:T qȨa?/,t $s`PͧtRSI%Uqp. XL-;\&Ac^t@O kSsIJ7-r],Pן؝J.s@rAAFWdӱ@s5 'M{=Ѷkp(W)*4eu2糞4\18\5[NA~UON7Wh'X3VE7“;Y~P!L-;t!=J*1p\E4Z6<-% s)a*H)E0dSP20T :5+yC/Rt -r^}QRN ascJX Ri.` =n!.{I{wd_'V},^>]:M>f?$_&Z j7CrRa"SxdFӻaɭq2vβaEO{Fi3&?Drc-w;2/\W`" 4>xI dHb}Ι RO懔_9VÂ#0u2+~]0U݌A`aiG.la%޸[`>wZ:?MIO s{RFQks O8gbaj;܏endstream endobj 239 0 obj << /Filter /FlateDecode /Length 4348 >> stream x\K$ }s!Xv j l_uOWk\&bvC`cr`0`D?S>SS~_|g7g4Yuad*g>v &峐R8;7-̭vi_w۝|1'Jr"c`/b&2*7FjFnm#s'_4Zِ6Z;4:'3>VS@:VRv=KJdӿ_  /8{R5^h>w|hU#_5rȋkbރH!L^8w:߾) [296dŤ<ʃh4.:gʶw4I S`y*{w7mS V_7B8ǻޜRT"|vg~yNHjb=!ukG"2Zrĵw@H'1]@$jFy1|M{ :tس ,#-vOQ0pa |dIB[``ltTSb`uNNǤ6OIYRuЕnT OIDzPjggL9sB\y~VvYߴ'T8{F^ zt?<5t^6F0)~hBD"|*J W|0^,eo59m:UY-rmDL)qHJ6݇s1dlL1 ˏCNtMG= }ٔ~HDu"lH)KOZ~7L#7ľVf$bdGP׌h]'aJ,vH kC +\ Ô/3\gm 0$uէ-];^wɓX]%y~o&,@ბ $HP~wG#0I F0$u*|e%lGڸKRjb!0= ɫ!C(]l; _BG/OLpf1H{#9}XXƊ9Փ΢ kFN4KL =a33#Oh;;3-q!scK>~&lc Dp B|_o$SQV<YP`71S TAP0d j(^78$A0xpmnrHL4MU layWӳqOe´sQZ=iJ.Ԏe]w$%),15ԋlHzRU;$iNs^ Y-enGՕK݄lG¹dX$ y/ȲS-id{V@aRNݟ[)35wVxܶTl@ e2źDҢu%E wJ)>*J2El[OPP[ox wL112fbdL_Vs'2\1]Yl ˚^mC/=鿾R{vVe[g^"*/K"6O.֠hԪbԕPMuk:w'r 5͊;Krij&i inoeWgeOI,'頃6gO C%x(I)l| S2g0wذ͌˿ƶ¿KlO,DE^tFE=* Gf]ޅrdtdg-~qx)0vEgFNçRYSGUqꣴTF ?!^EFNXb6md_Sv̓= !-j㒪O*'f5> XCQ.>| |p(%4Kf\׀ڬ燧i!~xH_v9zlkv@?&!ԼmKIcyqG jqk $_ti"ǻV4/vӜeHA =,>垙n>밐 VBXwZ{1@\n/=rA띯ed].E2ڤ"?W/),jhȄox}[(J2Tz%_c$D>t({z_2/2jM by| =cvBLSZ+-EE0|yӿ7a8F&qls,ҝe2_CDR `r!393zBQ@D>guKDr~L>DE:vkWL\O k,.yqs:"Wy ##.)l>9v'OFE"hZz3buG|Efc'MB5lLt [:_I9STXADYN!BSλTjJgevT㡫Oc$rʆA9 sq3_([:>D W͔gVG:Bfhe̫C,jD}| O޼c$QEm;;& _dWE]0#Ujz G`)'a?NnB?^?"Vn2!{yn&IzB{"TqN/qgendstream endobj 240 0 obj << /Filter /FlateDecode /Length 151 >> stream x31ӳP0P0T06P0P05WH1230!U`aS027i`9'O.}O_T.p .}*.}gC.}h\nn@n.P9?47XΎEAmGTa?ߠ pS! B)endstream endobj 241 0 obj << /Filter /FlateDecode /Length 160 >> stream x]O1 y@BvX%C1C2 tpw'y?\gG:ikD&X+@[L 7ޟ@fOq9UkZBMĺ1R :YV,C\ H.I.` >l`_AQSkendstream endobj 242 0 obj << /Filter /FlateDecode /Length 2000 >> stream xZKo7 /=݉ -"6[fh]G^K=fDl u9)Qy?=EW~nv'/j&g3H*Ǒ>,τan뵷n-P/XCwDuW埫O"tox^*^-F^}"ToofWxF I⺊7Ub}E{vԑy*R=5sǚ~>⇪lPNguL)荑H1,vpbJ^Z?_>/tIϫxUFO|*Y0=F+ ɲ kSE͎zVְt~*}>Fi5WHO˺*'$H3AEc51iw D_-AB8 M`*L|/LÁ_"Zȿ0^J\X` XXrzR{q3<%>(zKK!dpo $bqԠNwe VH2E0A'XpѸ[ԅQE>R"ojvLLFEIz st+e>jY * ǵJ:Jt/.:rN p8٧W-[0P[O&hP8BR ddy^'mԒn&0GgCޟ'S]Gی:R;k~#1RyoLbb@#O9n}@^2 Z  A;|X)PB;rHzB:ᕲc破2]L%e Ys9yiV2I E ->Ǣ@{v/Yގ4CAAHo1cyq,@KDT0~txomcPm@!6eM`0AMp̼cF' ꭳNX z֊!AB yECOx-!9`"e; &=o o M3w KQ[,bRa4yf5KD&A%"<Đ|m!ِu!E SPMÂ(4L)ï9K\R6gT0ۈdi_x[9F7 '~S/[TF<7.Q6Ad9%‚Ɔo+kcw@7ʩTi*Zon>YO*TOHSg{iDo_K7/ Bn`0ױM=}f(Uޤr-%d&πcB5w=()/ez04yλ€vcZ^ b@lۦ # Pw w0 R^zrs;xhڞ;J'{OIgdj江޷i]jsCb'6miY !Hmcc)^4E8=o.{'bnj feendstream endobj 243 0 obj << /Filter /FlateDecode /Length 7568 >> stream x]͓\qϙrۖ.5TJR̪Te$WKJ{x@][qA[<<WbW~'HU۫x 'KQ^=}$)^ ஞ}A,JXt0QJڽcD*}"F"vb4BIevi>S08XRE>1:{FjwiI;maϰ9DܝJ^Wlޫ4e7i_m]yѹu4@$;Q fޙbyRdc۸x +";ݧݓY.cɈ>f\X^^#kFE@E~?Yrw$)Vx.oHށamo!Ƀzw|('=:*R{k؇y(#%f.=5F?cOk7¢}R xFkQKk2g iLS9|Z9O|f+%KPa BS?!%a礥mh/"~.1wt0 5FԨpo@܌4TnwlW׵y[jF%kXwþ~D[WxpѪQK*Ywn׵ގ'aCXASm|_ڼeO'B4+ҭwd}Ӂh~BһG|%6J9 {=N(%gw)lLE04)M. "I-@ʮ 45I4%5b@)  Q>Y95ү9~hxR`.Wk0}V~NLf6[a-mv$MPDǁhm@'䡄rys0 x ;gE->h%a9mڜ0.<*Hl8ɭ'JD|@\ ֈDq_$3w ^М~Yofӥ%ߧ!߸h3KFL] -8 niM`}]Oq?Rɰ͋8" gmHP|?T:,& ^= Bf8YH@CEli\15L)-xI/2E :gSu1ZBW$Pi sl'[g [C(^yŏjXP(wGhJ= 5YzC|jv\G.a$/FL&LG/*Pki&'k wpi|xl \bP&OMBEEXgL:,8cU Aon?UeGW|QIۢf2Ls%I\)Gh3fXd y< H2~Em*i!\!.rNf@p (͗tдɞWCV*kQ>@[eA ${7@Ҟ)昊9HFh6J+{ ^dkd(RK!6g+$Ge}h\cD\K&`^^ h\kh ̑%w65$XβU*\l y&XszaT䕓jdPy9aЊ_]o.q/.ûyF:K)"iAK~CXrX߷þ0#0Jt)yV;cV_Yخ.Z`)⊑Qmgsg"vh4Ah|}UsẎBf[<,r6ߍ}k@WR#$Kt,9tﹾ"Dɱ^07B6딞_:GpӿvϞ-f7 :8 [2-()?#щ`g`8T%M_(\|@'SW%diJis1E%0Eٸ -\I|f@kb*)ENò([`xj4B{0դ间-1ꦞ(uFhseAH&V-9Y]z.SZNQ3FyCmaګ+Cru'adƜٰAĐyUE,TI5g!g`o\X[Axνx0atՠ.lX#QiDH_eKsݲ6\ɤ~az2bL%SAL>"3rGvDP0ehB}( l~W n'ˤSFCeQyoK[/ <ǶrIn[4ה,ϐYQ ;T+KHp(6f( 2E=Hp^/;F# B"My:0 H y8@mõxȇX⩘"wDQ-X+#Ct\mN'az|6v\;]]@*@9/yJOJs/}MǐzfXSsTl`4=b8D|]ӻm:,vtJ-\Od:`)&mhpO|PX b 76r'i7 usatbL{bNGŜkP,3h[fSblfTYj.M RMt)= RQPp] q[7Lx:GQ\O .$]zQȼƯ(#ܦS>I2¾5;ɍ%IIpm:$XJS2 XqU;kCP3t˦+25F wICݰ )ƴuF  Ri7W<ˮ>dwMv um~͋}]dMvF)&F63w8=ʏ/+K}Y\ g%FGgV>>cnk4r ۵]{÷uxi]<Oᙢ_zV &C gGƮ?0ɖ95Q||Tۆ@Z='嶸>+Q:`[53:UmK%|[b7CTi|1ym>6Ip\+!thrt|.uT4d=Q*DN,"%'UV8Ubx=5}޳qsq=&?hc uڅU'> 9})rx&R"1_'e- ҢxTcC[?^d6,>vF20<7TIЪY+Km;}K&J) ;`]V4zz`Ȕg",nT*D*>iF_DZ_cmaupχ;FOH_tjdal=tb=OUXveX<3 ܯϪ"-*l,C>7TOendstream endobj 244 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 437 >> stream xcd`ab`dddwt1H3a!SG$kc7s7B``fd/mq/,L(QHT04Q020TpM-LNSM,HM,rr3SK*4l2JJ s4u3K2RSRSJsS ӃP%E )Ey  L,~tk:s2n.wIȋ&Uevp]i> stream xcd`ab`ddpt24H3a!Ïnn?ԅ' ~O+XP_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*@ݧs JKR|SR+"Y޼zƍ_cU"9kmX@::9~ Ϫ=e+]^cڐt߲5~鹙ݒm%O{ ªYiyQa2Nٰm %+ts|:̚v<ܤnʹ80e^N=U't/_W5G~Mf[2s}?Oendstream endobj 246 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 864 >> stream x]lSeϻ։9\X]YH qYKDABLjwa?NiO[֐eӏն7Z$fVM$$dF jzaDO}kaGzyyd}||^ٍ=]^|Nl>i<lhp*W P\ ns#6lzr''G]x7ZlE:_9Eݢ{? ~{9Ϣ!|ˇB{ym@PBQM9(e)5zzخU%^&A~3/@:1L& ]y[I|MqPUpClEFNB|ut0c& 0.??Lg$ .å"T2U< 82fxV 0r 1˾^O~.C vvrSA6cBrwMC&6PaH+Po~Րasث3x+-kTϠ~f~k&&8̍t{jK'E98ΨRMl)KUM#&y4 WTyS iF2wX2NHSW/+kdT\۩؉jD"i#[Ҷ؛s}S>wG+x6> stream xYKO@WXDāV QҼDI IڋC' Oٙ<=ǐ3S~҆EicX~ K3SXa&C,S΄i\G?z9_bJ;1Fs>yh9$x88f0"%ñ P.I8rK dk*%yl(8D]noV΅E_G_!$<4pD(τ $D 7V5#@F.H(m~ބ / Cp{ k)zFc}5[I+W)Ѿg1[&Y[v3v3!s u +,8™WS7(3.I8&]6Jb֠9#MHJbHRik[P,etηI7=LCPDiX$f\Gx S i 旨0FE)4L@$lJڊ$vIÐsz<`<%w{d6 y3Nh Bgpr䌫1} 5dD2*z~iO蝀dC/u:[=!y ɝ*ZKuL͸ײȻJyf_ os\B| 2/x tjZ!kNYwkM9.f)2LTkTޒޠ=AXcwS$Z_&ɻ;kC+kwh5(7+j=z+ gy5͡FřQsIwp}yu^ f*_U̜x/4І9endstream endobj 248 0 obj << /Filter /FlateDecode /Length 3784 >> stream x[o$ wEv"[iӇ (ڜM:^.~^Qڽ\rA Ը#dDQnzX(7zsaq=Rˣ;Y'@đ>㋣%,}2 Co_}}y[B>\tYP*u )r],-}#01.rtۯMn,<r$n ʄb4e]Ilb7f22%O^I|ؽ&|?^m}_hh5!1,OM6$ @A򁇣==-WG^u|6\L.wJmY}wMfKo&lN֨*2ؘy .n;s%,Y"{A>(x}Ag ck# @0!qa1iic!OiIx3.*ͼi=v'K\‚/(*\. b4~FG}|~Yݜd͹Y6I"8߭o3S9a,DB0Lğ,ݨ]xA$c11ՇyCF˲sx'\.5{[jP#XM|x;nM:U7Ffo$ϧ]DSxCQYHbdqkѲb'TWRnұG,l^@Kt=CF>$n<&ƠF` ]"ܒIoi.'F6P*aLuU3Ϩ:x~Q=G=JHjN4dFD;=f`Ҹ3Fav# Ս_t C4kT0dbƀTWe67@usM#dp`l= hb<)EM mE/e6,6itgߒè*t\ `Gs]VGq ’kzhVCf7w.`@@Zw'G9-&/l;h|;F ̉OB\[ H_vB=a6"XNlHRή3>swWfWA @3kEkCW(!DvݽϮ ̊y!VSTD@qb56w3Cټ*>v<."&D;ާ\^E!WőľcLP ʃ_ETR@ }pYwm?)B{6nd)Vw NyvY $ &9vS~Ѣ_^GI^N5GVye \4RHG&pc6c~bK/ZƺDpK/ر`<-H_)Cg^ M &QZ늲Jsxbg1y*ԑ|= splkDFEbʳ2SZ %\XLS|:̱BGfkø-SZ^B`z6 } HAMd[ K,[q yB;L; 5B 3y 'V!n 76W"ٿM|&N_5wsO_mAym A}"?zKߜ F͞ t4|C|2}E;oXڐ2{zy,/RgAWsT|S"%<\rȞ #3 s`RUMMe9h )r"(z(ѪX JNhma[&[w3R XA@۴@=CvպAAhd юdE|ȆCNSE+;D_6l\[{)R V=Ky͠*&*5R3d+1 c?F3 ΉoT7U6e3ZV-8-"%.<8ʯ󕾽 xoG!I^-E39Oͥ'Z@R^p|N j.LjW/˕JIo\`gsT0y-!d 0*W2ᶅ\LXFR2!qJv3To[yAq[gB.M;Tvc,.Vs)56*m0oA[Y2BEQy_Pl/T{#-.5c2UeΊV"]u!j:PŸGDndI?U{e ,bĕq,N>0r]qldy=(@3:DfP@ OKŒW_ '"&sg`r:j`EMPmQs}\hM~y\Ӯǣlv˾2;/!x`zYoKK[Q?n4>فc S錫6 )BMҮE%378ݬH1E =[91wtv;<\󒉩YPIB"C&RhbQRe0h9MeIrXLAm>gON9XHF@Y}tfW<9Tbӽ*5"L?I_o+@-䗷ezO>i},.g?\hU#~zv<㣿\endstream endobj 249 0 obj << /Filter /FlateDecode /Length 3888 >> stream x\Ko$ +F~`]a` ;Z@>v4Y#yK~{HVuUvI LG ˅6݁Xx 鏋0飈rqxz zߛo/WV^It% a>+2+w(dH*I!-;pC z/c\wtr)hQNT\!~N(!aJJz 6N`pbVB+M3n1ٝ-W:></vV8!Ό+wQ7B ;7`5p`;b aQD}sׅ<)M!OBn -+  ( 1HzP&QN gհ鎌|"tj``r^Kѵ.j&Fr+ǽxiz{JaX&]NJA|pj iHEhOAM ړiBU Y` 6NKy%`8@Dad6c_.-o5;cc4,F;8`D 8 Y6?\Ql,zUFKl{_f{ 躐 v[!?vk}5Q}vIB, W<`3Mks>?lTu[d5c\}خA>j'yG c:ڡ)EJ ^UirbIl}fe:Kv֛&mGS\CڔNΜ5Bɒ=Cr,Hqbb~T3uű8!$P߃zZJv?,Ǵ<_(h]oKq0]݊c=UݬX 7/Q_8#z̉{̵;YpgfU.i2ϛH>)A[RPiqV`|58cˁE y5 gX / "orM+ /b^"Ju쓷J,*Je%C Ni/Ҡ N-#۷QB^<br nMb}ZH VNradjeѥNnM'U[TŖ'. <<ٽikլ2WU˱[f zUΈCߣo¤nt\.Aemb P3mӎ0}5VW:TJΪ7Ɂ{?CK ɠ yABqBYxҮDAo&Z0"+E~cXz ǽcX_N ݳe5vR"Do8LT;F+(6Y|'wCX~_ ڼw?!+x+1؆ 걖!aO<`6'8Ru &o N$)dj'S_O:d*59`c5Sc{Ix30?kձɸe·%SUhK)boGR2NK &`MppxkJ@9(OV"Mͤ6^48X:2"<܌Aqp0k@w@gAlϓäT0CPδ[z8]B,g]fLE|Sg!.X>ɀ3>D)|\]jht'm~nucJ臕X!H/m}0$Lj,F~ Q#Ox}R)x| ]AӗګAhC^{;Mk*9O1i~ܦfzo唦*x*IݑS Mbpm3q5~ȔYɔƺТq9$PS13AK9:U%'f|O`sDx(&uwW̙Rº#u] V,AX s ߜmj||r + 4=E߉ܤq/#})u@( doDbPz$/'d1T )n4 \+Iکw^Zm(g!j}XR5WSBJIc=^'$2ѷP|x)I @tgK[G?$!4@F+޷ iP! RC ,4mZ%x*ʼD"AQ[>nm,b@" t:8Jfhsu*nܪQTzx{٬kL±Tᩉ!w&cjS&5}\ 6j#&IUf \%[7V?+ȷ9@5`%nDK7> x9b KN pEendstream endobj 250 0 obj << /Filter /FlateDecode /Length 4191 >> stream x[{pUWRyﵹ}:3($j)! !$EiL[[ R(P޶"!-V@kHG~{{N"itǝL&{~owSc96-JnغTMqn+b1Uʡ6¡2pGQ"AE.kbʱBUY}J;-maܛ@&JZLQSlTҵuKRC'q@ ls*#AhqbP_>@b;>A)mkeY}5CA9Ա FF7BjwDdq6_k PؿVYc)v%Ԫ-O 1ErN-iy Cs'B`&\7X2Wܳgnpmqek-ĠRu唪u k,һw_kꓥƖO]!7vkM?ǻ-*|/vpwn/]^}uwݻ~ݺu3>ݷm۽c짞z;*'Lذs睕8kW˿յK^Μ:n?~|eE&L8O?:;v4}|3t^'=w[өC7 ;}'N[sS㿆Oeg2rݴW\qG_^^{نXlۯ/\xuqqY.ys˖MWFux׃=ӻa޻xGu}3zȰaÚNa'OL=AںE3jڴѵz٢zƮbŋ0 k9](kzqDƍ}|󟛚}/5bιՏt'`_Ӽ__$=o޼>~<}C7lpj諸Ywٳcso? kn5x7_?6m ˺ٳ[l0cƌSM!=k{zӧgOݮ{]}s\I.6mڻ~uÆ60[zҭ _;=sYfA񧻞홇>m׹ARSI*# afP* \+fJR2BZCkaϑڒGK@l<Ĵ@/iQ3Z$[ahv%TÏ $ xESHfQ`=Liɀ/o $A695qTIhPt3 dԦҕL S[1‘<,d#E1tm f~k),V\ oCyᘛBDVLALR\O Ka6-#3 jQIHELqGYYȅsdak{9f%yFuۥ) 9nNq#D CyӁ>  Yq'Ϭfal"Ih<!Nx FǨ0b&2I1! as4D,U<8=aG,Bi,N>4":4%Qlơ1.Ra5Yu&] 7AdcJV _<0D` 1˵}W" EP1;qS5X$ o sBǘ >sIP/@]#R`.R`.\9r H>%Tg\Sص$6lsbS>1iUL0YTqx@I^ҺH dS?ȘO ~rOMY %݂RMD35iFf JCVFfrX4I. TƨBF#7*6RAZpAt`6f:K3͂z8`A 3Ug}PceS*r.B`9Iwe0֭OړCX aS9SRKmw$33` VjME)&S|;0'gy<-gW1M4,c$MW%d}yP0JĥIe!k%P ȼ$3IF"R7Aj~\(4 NOΖ&bG rJ,<A'j`'o1[_m$Gw b: SɗĴ 5|ILK|1djS CZZ$2Fؒ J PmN&4'ww~"ϓ#vn"$N7>sy#! $[}t{up"M$@@5 ]tk%dAW ݡzۍcrP54 %1-Ή-M%OzNJ$!|KL-h @BTMZ$2В{b.R3#iG==ߛ&4G_yp}ŋ%{{Fp ^ 7%FSO#$>U_5vZcXxG"d$%$ HZ$ 1|Xiv䎄Dޫv48)5b@ 7yBN1w$Ž1 %t*endstream endobj 251 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 2019 >> stream xۖ* D'7AR_b=¶@P;~۶ͼ di v@%_~k?"IN)Cz&@~rW,tdwx@cK踣4?_WaR|Jj.d:=Ht@#`,I` Gzk?M VG aV+;i[sK93?aa}Oͳ'_߿5,@c8V}I 5}f 0<uiey?կ\Uwh-5(twgѳПշ "mH3P4oJb)6nun{ [@>`@Bg`x}ҟ62i%\@;L@n1rK3l `?ns_@ӰSh_G#@6]lW6q  Rb˺<ezT.w\ MBO/ [Y.;w:J Y/uWP{^o'4On}gTjkY[_WjRs 3Q[j`R>!s<2nK^^HE7͹3 @/AIդϮqs kA͆Ph;;4֏bpy %ȵ m*m@2C37ͤw`嵍؁&48'~3f茞 4PmGn*?n}):G940(d^/(M6X)L>R3Hfv@YWpRfz w!ɝt{{sj|3 jM` qW@R'C%`yzr2u+m и@V~s~2n@..HƝR }[A̔FH,Ǵ^S-\ UҡiM$љYf3(cw3 y2 [ (ލǍ7>k "  Lqu,zP\?M#y,x~/3fA}!Cd@MY?^׸7&q&/oz&`=`} <퀦'Pj3@J֎ŀ7smҨohZ \f7 (p8p{Y; ^@Mf;0f4W0aܼt}-|endstream endobj 252 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 1752 >> stream x흍r k߹in萴,ؙv|f%>i??8D+{V8)sɀ9j:ϯ @;_tdR lأ@cvH2t껑(rg6x4Swj hП B*IAQAe,?@L-ul6=c@?5)ىn' :ЩAcd4h FR;]9t+ fu vpK![}QV?Y3mYwǓRO@<my\`.h?{z7s1NjX"% S٢{܉>x)F4 \Z@dTo`n ߾1Myf=sy h@1{$"l34rl3Q, Ȟg$00 v)EI' "`M[`\mm.69wAQ6 f'8 fX[6&ǁn@n*/bv;0OC葓d MzQ/{cmժ7>@vH?`@(]?J+7Ab/ qASи^$3 xd"Ot~=`e:!Eǭ\Rۺj@ދ;(BSww^=8[[ugn~k EzT @<S#7C] yP Ɨ/7"`4zM=:Q xڵu @FEs 6g2uʮ$ #7dưDI6nl]6j`rmٞnvFc`@ ` *Z J2 J@l;Fp`.Jc I1.j7EG@t>(fpu n ^Wx{3f(5E׳&P}=\ 3@;A ѻ A4G8mdN>gIٟ#@2 )ig t/=F8d(2 i+(1nUhbր||endstream endobj 253 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 1809 >> stream xb* kvnZ ha1^#Cvtf~>zUbZ_ZGCsQxw;8|b PfpnG Ed'P&Y`#5h9vg]*}v_<2~]h#pk\ӣٱp ]H<bh)n94v+M/s+3$FRX e@:#W@vq }3vV:UږK4 <VA.+?7tyUT&nȅ `Ӹ'^uv#q*KQh=':+p{:'Ԓ>@L'Z@ + jn (Mp/b`gٿUvM`] f0 IOz{ <P{g@u6؆F-XF CT@;:x GPY r{^GliB?Wzmh H8/cp$% L x/TXt D;Y d*?8<. ; AHbR2U*@J7_N@ǖk>ޛ 3@&#c˺dj/ǫPw j TMLdMg*7]BlWO@ubߣIy> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 6306 >> stream x]$[?(((>uED\POEe5 @܇;]ޚ9f~7hjz{^߭GWavիۍ-knܸmnqaofl8G݈+NnlO>==N-^08>p8lۙ8l_@fj[X&|O r4FዧAah =RCۧ6} ÆLšDL@=O:}]+WpD@P(FE٢C}pMχɐy^ɟEw_t\< ?!CS(W蕃ZpID@`/QA_hۧA ' l C,? QVYk*B& 'SuPāE?>ʁ% !|@ q^"p`^@)}DaL'dЗGP 8^ N\o p{PiAV]bO3ͪ:AѬ "pEJ\a'jҮgo eh=YO~nBb)&} $3Xbeh?BQ<(5YS`%zOZxEA@~HAS Φȸ]Ed@gcZh""c:@C6Ъ.)iOK &܈xJ][i;Aш1&@ZKTv`w}>fQsHg>;0B)\p x(: ed#"N44x#p؋? ~<Ts`qй_~Q 2y)1)kwڜйE"kqb\ 8Rn'7M$7ld( 9XfݱA+Mо+:I P&2b(sp,,t RL1A" Ϝ9C6!<+%Am " ztGP#;@B'Zl5A>k=]|>& ާzA@+:-Y+\ N E1"+-JVA|#|dOy,t6| @Pr;K??q`in@3m@B36|/h% / p)'Me%Ѡ[/"TߤX(nCBS|UX_+0GBG}`9*uX/K)Y'tBL&VkQB='>"W_]/%!lC=DOPҴ7xctѷL,%V wf$W(A{뭷 O-"R,FeÄTбaXA{-8w}WOSt%^(W3-BZ/?}֐z.?Y!d:n?>z`bn C_ k);>#M^Q;T9Pе+- ;VED9;>{^!PP:v4YgM`ߗǗzY&t/h%Ѕ (JALp#=У,a?kċ? ׷>,@+%N:8UGgwcrע_P@@_|_lIr E+fHBz]ГveD@`/,|,?ݦ_&UY 3JngLLm5cI p #a d'kk#3W 6=.v1P: ~9y`LV; KH~!1sJ')LSMdkq^4Y/_ZA0EM3W7* ǯ(ۯodw? 3&ZdnKE#BnoFyX,뺚 "b? ?$)T@?`5F$$:U6p$ p].]H+w_Faٟo~+ ] ݱn_~& hŏ-@Ŏ9O?E]2,Z(.ucr""}4éu` , 6{gM0px%98Le@MP)TlXƤ/ixǢ OmJ[?1aM@)dKbKOM@q{wY \,F{ |[n! D+b!4+վ2ov 0pD4J0}v!EB86o~fPn^ v1Qؗ@ր!d$"HHc#Nn/^/V6wD,dKҠaFhH(qg`AB$c$VDK/4 zF@՝D jɑ ay#NRMPFАE(p?/e_AL{#?#ΰůS$'-F1NAM N&-,i@3'og |!m P jGZΞl>v CSkԂ=&cDH@;<,lհXjULJ_g|쾦ڹ% @`gb7j(c$Ad4菒 ܹs1r#`-DNP#JWW#⊾rBet3g$q!9-^h Nd1 2n$ G~}. A0:P??7yj~\@pTeW>?;u"X~#*jCa6(lf/K@GSrg* z82'qjBD5A3^s.& bMY!!#hߢ z?N=ZwmY*.8Pz"Izm~(Bjb:7wuW=%`@im*[NtϏ?gfn^sj.yf;k! ,G?@)QrDlbymDAy*$:싺S$ j1o]'bQdXi!:vk]C%F?mF&\aE'fk::LkAwKd4L.h@* UBӉThG-^p-}뭷 f]YYѧvS=%[Ѭ1 _;pͧs& FCX_$gHkzUzޕIi(x"?/|GWAأ/EHt0:UPqM9of-vٞv̦}lqf`Ş0.d9g?LH (uF"%aG@`OxY-EP'ANGpM@5^^a#XMi Pu(IVdeW寢[$ #&%s=kZbo>$w&=8| @?RF璡Og}gśA祸~E6E܋`k/qv@<@S&*J2sS{M.=CQeE\ qpa'u:BO"m%b`wYoPpu[ɿh>Ҁ-ր3'mPG61,>^o޶]h]&`z 9SPǥeB(ƝVВ%LC$`."w0  rR~0:`MSkяУ&endstream endobj 255 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /DCTDecode /Height 128 /Subtype /Image /Width 128 /Length 1754 >> stream AdobedC    %,'..+'+*17F;14B4*+=S>BHJNON/;V\UL[FMNKC $$K2+2KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?SJ@<ѵT6dwIceq[M8P!]]W`H4łk?j1Y~j[ +Wba]N6:&RWvjheJ7P>> stream AdobedC    %,'..+'+*17F;14B4*+=S>BHJNON/;V\UL[FMNKC $$K2+2KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?WpKW%~rMojW۶MgV>aTeN?P[mOi+W[bQ@sRUr m'Xځ4jqrk]vsXPx Q5fO'<1b⣖.*^* d̘r Ѹj9bk:E,kVhMV0sҀ*EMkX8A=+Z1@Zt{q[EdڨP*h Z͹}٢Yޡ@.bߚ˸'tk9̎hALMwm`ƛn_ "$sQ2֋[J>7TmW\Ք"*hdGQDԪ jP[ȭ1YEZ6.(hik):MqQ<)͸ҾXwsP|~8w {PA%;WW.:Uy~o&q\״nB7UU;WVl1@ 0 izT ֜G,LOMy@]6sY2jwT-Z@H{X-[v8 K#E-#^RMjZbԎn(h\`u;E2I z=&[;v9@=hs޹ =j@K?iL٪qEK,5YK&&f}uyn9@$pj ҙޠLκk5օg5!&<ܱn,i&G/QO7h]{kTnhD7-Y!&[PpVl- un_-endstream endobj 257 0 obj << /Filter /FlateDecode /Length 3240 >> stream xZK#A=Hr(6rruhVݑ."٬f% p .HV} >,E/ϯ~B, ~\ί?i`""). 7-Ϯ:QNQZ!);JH[KiB×0 hdBVk|}]'5[Hl.3 ?Eµ1v#+kMz}= q(1<ϯZ ga_!q|u;XT=%7J/6h>-]x-ʡ2Q 4.! 쨊dg#о% VgܱJ=8+\?BIk\A[7YFKr.Z,LH*:~`*C*)KY5mI,i;Q7%luK{rIlPNjMX FKmB&g:G ڠ h4tF|!R8:ۀ#G{Ɛt0`DY%F;?u6$T 03iwuCm৺co$:iGLM76HH!1&E0d`8ҡP֣TRDs.*!<dӆ" Wvh \<[ۮ҆l#Y^eV*mآ % Gn 'μJ7$G x sIpNBy*X?EЀnQINn\ǻ]Z_af3p})쓙[YÃ;{T֐CB"8HJ@ ԩh^A2;|ab?u({[{+dmyճnbo 1y'r88J8s"1Tf4 $9ivr'@K-8s2aJD:vbI@uCY!UflUU+ (ď ]I#]3a8pIţgtO#PgdLΜF4L`9g۹gs{ϋ( $%-S4ᖆ4haOkq-['~;5g?Yir-o t(+\ /4g]2x,pR.WB[\ゆY6g!hxM ] MnMnl&-#3%McT?j;Lɷ ޝRmSw4ᆆ4hkrظl2gtyOs0 A"]Dms~lX 0Aܜw4pP>D-m̵cxTJCmFXy>˪F<g9`L#%n%g5sE/*=1ӰCIOIR AbLq*$˳Q~~,Hכ6 \?5ܖvH_ ٛvg\x3\ vD&@κ XRlS5^Il:$UTհeC0uoԛweW~\yܛ%Q]X16,PȜ՞oiO؞,[:|F_LE!??EvhEÛ&߶O|[D $NfN}hh)ԾmzӔ5X&'+h |&`vvhk_GbM'vr*]^~:yn"}s}m [B+21[@[ǮNۓ?t.YS&fV/d t ۱ 귄=o ̻%[EA??,>,f)=܋\^/(̮|56fƯh?˛[nw |p-Y*ot-W+/D| .{ ߷( nW= dTX&83heNG%=܂& 1,4xJSY [*@*/aKa\Q<]y2|y=j'  OzY4 sRڐ6̢0TufWgg=ՄF lP=wF#U5He*#N\pPjTZjT.S}h8{c_ 0p 2vspZw [w z|F}A/oSԦU"c(yge9)5> JГ.]nn1RN:Sx]0WL.֬"i.],#EȂw;dʜIm06媖sqR aLy},r'WKYIs o@̑s낷>?0"fHI.%@wY>ykJڨPy1uU}cX90J[59$NydOC7vf7 ˿ٍ}sx|Y7ȱ`d[;flj|ׇ5P̎1$h vT\$絧BQ ^BlRgöC(ؿIٽ[VDZ6^8q ;AMjg+9އIXaLd0QȇvEueq6gmn( H> stream x̽YfIroL< 4#IU(>4{!bwuqyo?f#͞Q'o|߽~m9yM/~!???}/H}#Y_|пL/y}J/}:w_>ͧL|ymk?~f圭ΏO9nY52ǟゲKlV쩷?Xs?ås>x>'??~ }{&~ќ_=J[v7SoSy_Z׺dYoA??~t<ϒ[px~/#1 A7c{П~~]ΏO û׆ ~y~?7xiokϏ^?ȏxɻ#|B(gxw~޾u!+_Zߢr|PS_S6==yOW˯~e䧗uv@gǿ滿ֻ WrJ$gGg-^n/?}cVBX{{-|v`e7_#G~Kk󒧵+<~ߵA=[/5u^ړ^K%|9g|wowkg[};[{[o׺-1q[y󼍑 mP3~SKݶW5m `-96:F͎R_6!Rw٧^瓯*#Y_>-X|-~>"?믭۔i'x-5uOsQmk{ۚg?i}uxmJ^g\w4aMwޖcwoo׻/c붥ӛ%_?rx/m^V{º@<ຍ}k б7iv?dkqxW"̵A3VTi{=Xc3Vů{/WTEۇO/UdE+!z`#))+oA~wBs{@l_٧^S#ׁ6F"uVIϸ#A;6ZoWw Ϻχ"{?`gE>o)npȆȋH;bd[b!86=ÿ|k߶,D8fOt#Ñݴ)_U)]EWH{c!Td 7F S-A&y|ws*>'w G'e5C ՖoK'_z4].ћ]+I[j^b}v""m6I{/i+ck+nOCd[$-`%ֲ2,v~;ߏ`n%mBd6;u 3 r8⭶rV$w%'n!ĻwZ{cSPt9_ x(ov7RLEn65?6er>~8H2?i&2zMQgGqr Oګ&2l"ALd]}*&N:+HKR(RdRdA2=F:4T {TyeeϊR@I72dǍ,}=M 주ou#fyGh i#KU)MmL o؈RDmŔ-M}졶X}hT{R ݑcV,\Y{>^Y"2rKcg[y[ldP2-6(Ld0:)Jr_[%^y#&6TA=z  n ɂt62(ܒbRٶoOF2E"Sa)"h#l1,W'74}- &:dB r5Tm-V*5hۍ5|s dSWk%1$+kcMHX~іfe" XdW]m]Ѝ!چN/_~m=-o GX]헺wUZZF{2FҲ[^|rZҪkj/R^mGb*Ҋڙv(t}'b|vİG7HSK}y ,85HRd+oU)k);VMWk,:2[8V7<B[2QSVZm-( Ikz8 CJc3T3GMgcJ$ggq5IkbաK% +"M{[/Զf+S;-op;6NJѽ+k9H@R519:< ik )ʇĆ^%*Q@ pV @F#%s*n=GDN)V]J-9ti+&ؒiPQ&7X{l7戊;^p)5ԯѧ6ŐTI鵢I+**޺4|qSn,4qs܆kq5+k)ވrNG%Q'|3Qv4N>StL j a_wQ) '̜/ސC0#(uCH 锜3 @1 f Vr `H i2r:3`bnoOVӹ34 RvW F tq Lze93P0><@"]]#7. qՃ痽r{1rс˗7AB t"Cq|?hUt9,)53GGu7AR?sKssW2=-Fu_c*Я]_#v2D\5Q?֎PtA ;j~= eˉˢ(zpٿ4å$u9QH#"FSq,g%5~ҫPR%MGTiZy4] v3X%4AQf7vQݍv5?H tg-ϞD PP?IOPc~&P-EDɊu"7bk2#ٲXD= 6)zzܷ׶D Ҳnljo*xJdf=)ӶW3ه$H2foUlwd1s<+.O__g\@ f7-tr"x{1.d\!6Xپ $.q!X¯dYjc92bb1ZIVakӅfIyNH-?Bd(%P,u:߈ * t@7ja#%xxU䙕hAЃ J KT.wFXcν]רhc\֎Bh aN.o~ߚl.Օ⛤HVIs|%s: !/ ό6<g gQ+ldrTYmvDy ^UM \⡩#y0 ( Wvj3떵S&/6LF""u#d${d7 6bn:$0 3Ѷ$", nN/ַo mFAvCnP!ϽN'']MDd֌H=>==@d&9on]s1ۮ- '`ݹxrFdr7:5C RҮ\. e3v>hʛ:.nY`gmH3ypYWR䪭;BWWyUf 28p +8%j8)wOQ@B;MC9Ô㿈RݹicN(NLHtљI{3y@~8g&Rת$,lu[`jm!4] w3 X RMd0.mI3{Y/)|Hys:Jî7D9*FbdnZռB|^a>*`}9bEcǓI8ƶ=6bTy-'K/{xr[{K6"Z˞)2#*4b#Bl$*#_v~ro);77}Fjnh261Dâ:Ob"X7{o_rof^ qvͼ$ZAr:F9&>A-SH{$HB r [(9$K!!#GZb.h R.e *Hzn$[B8u1$v5ұeS-ȃ,Djrd2ȌnDژLd6jԚw젿%n% Dx@fU(K #i1{#KzP8R&ެm[ab|eo6d&XP%bՂ7j=Puo>f547 ,mχF=-*h{u= CrA{J:صXnMsQL,xHayòشԺDL\Ȳ8eu!]Յ9$/0bTfJdqmvX-ܣ~G^D\e5.d]#@U)okbvf:dKBUr&͜;cqssn4'] YL{d ىMsvO B>vOiߒIS6D^qw]̣D/][govֱX:(v>QHDaA(vbYسuĎS y[a􇶡o.uE\/7 2Eg9l@.rdѳ ޮ堳öXȧoj.7-׈,UM!VRuE_}{ AҴ?; @8ȄҘ_?JタƤ .iyH: ΄lhƘ$CP$ Z?4s i- VSuO$L+;CrrEB0ťOO._!%مpPk1 4I*A lHظ^aT+k# VTwՓ~K3_$r퍊/}*r?,A::5 _"cf/\c+M+l,d (yFXmh`-X,1Nקj\pÊHrk/I>oCOGr5A S-Y;X#Bk=߳.𸑽BjƠFKO'sHa^q#0E "^IۢsE hF2ρi, x} y-S7KM[yh0$OgBgݲFxK6y%BDiG䉰Wraͫ"Fj %[˔X߫:[^r)O$UJx̚[R>BO.7w.+Q$.lV+:oʁ^ Z8y˳M5\emØWPڸ%\˷_k*>MѓO\RWN7w׹q8BQna?;OO r>'~#]_Ï_^of6A>|_ǟ|<;(N\ ƹ֘B*Y%!0LRqCY]XEIHGfD$t^8܆߀*I,qېrTmV6sJ az!YU(\{Q O"Lօ(M ?V"Ex,A"%k>hx)X'  SXٻA-?˅4-FzD2Ar`?FH[++9"S$Y;$(vvp HF G =zVr^BZg d2YQp~fG8CZDYbdYct-k,y]\a/DKTּ$E@uĂ*e XhD+R KI4ZL/${3Q(baBh@ܳ*uhȹ"zY K֩ Q33+H{%Cw-eWz , $Z"hm\CI^_5}J Džd HȂ; Q(xmҬJ727룚Z ~D/j'rm97ҼҌzx.>ؾW0xgr}?b"K|x2J(`= шE?,ip"G;m% 9vQ;-K; EwZ|qD7?!%#.e?\G1ĬA;ߦ\ztYwD#.Q ^zG\!HvG\F$H!Hr DI~~!`InȑV~$#.ǔ A;~PQ;HQ;|^K8S1d;{nqgK?H) r㲖9r+_,ܣ/ A\Դz9LJXuU/셫\W VUpDkx58|튜&P !JkB1ђX?"<>n`|}#/:f HpUGKW9zsU?Is) E %=|ԠgP.qCU,n|O Ed}-G4g]2cʈ6tģqoT;Dt_ȫ @DFV1 5(j`|C70?a#?KY)0h#x_<'⨪8#Ð8UjtߟŒ5T)¢QQ^J eK5) 4M鲺©ҵn>ᷝ9o[Rx9a:dkgV& "*F:V&g8uګD7V~!EhU}NF SMY8ehEn3k;~ E3b[8kX+dƲЌB3bu]obdEy 722d:,b, pKzD%]:ȍTLdnC^[>[IX0-Ɗ[^XK~4 Fv|.zG}T)ue W+R(Hӓe)k$n=PO>R\j"|"kAoVC # t--K2maLQ}JK"gvf%˔dibڴ}*~{-Dai!vk`K8o L70s%LIy`JF೮dX8G {A$&xH8a3C3)6f`"Ϥ>њV @zdxhɟ7%"`Eg(歿\y/q}F_.G|̛}I+v].DdQгK`ΡiEt̀M;D.Jq.3284a9\PuNRBnGiPj&( {aGtWj0\*H`-j JMPa(Z}#HvAMi|T~gWJ.6vWьfz(f[%ȭҤR`PIJuAZ,xfZoLd(6s~f.=BJa+*1~4t?JRcwami3Qih/.oQ\-MIyYooLP(PP=z{+FC4ZZEK@yi4KTz%5yk45-! J khT%fvDtrԤϬy[ I}Qjz6>ubAulh{ij,]Н/MW(vMY)/x+)EuEOdNs RE-k*dsDQed͔-Z!{msP>%3XbTԲ)tfKGK _jfR_Ɉ[bhk6.KlM6XuKl-mv %2tgl1dbs GË&zR`(nv*aRf @Z63aƾY:3.:m.7d1>fqrK"e:5pP9o.d^]ĶK]fI{@ˍnyZYb Hd-/$9^ -V*f9vFgRT`1PR. 9U+lβ!Vլf*yiUc6]XՔґj͇c5dVq2Gj]~l.^8:FH"14Y} eScv Np#k<4WZIcuѱh$xp|ƱЪT"E=k+Y].LV_)CD^[]e/ ґT]H"8)l,XFE*wE *7Q1f,Mcb=.1D]L'Ru#5_2d[4αN)HlheMc_8:GU,Rב 9Zb!t, d3cϰz1cYf=͌Aeu+#2S/Cd &Kli,xagq +̏akqİ?r,x\ǰ [r,|7U;ŽI ŽA$cnu1ϦYz_iD &I@A7m;b! ^ȑ)dd-4$L( .Ja>OoYz5PQ[xг) _K6A|'g>wm]#ίلD6.j%yS}szJnz m8VvL5/*Vhi 3nm7q' i*NVҝ ?!858Ȗic ;Gct"BRy9t#B{}ц>h]- izِ]3g6uKx-tvk<[mMydz*u݊t܄Cid0DD՘Yw,*[=*>VTxDu7fuW1D?n<w*a,"!^t46qV7tm}<ɢQmmi@>JQڢ q}g3tc "]hx1r@w@]G=z qKFy5 S,7 0@x+!@䏜2ʴd;" "̜DeQ}N3k᪀<32\^\_H_9Ȕ ׬xkg$^3n_Wf'J܎Ism16i$ԁ4شOHC儃ϑB$>%H&cЁYl(H#y{f "C$D,kfSاVffﹽ~̖涯 ltnXxS̲Џr<䞆o4;I˅=>Nj-<*AEy]=j2ܹ?SOhm6^|};^v۳]B WjhՃ2 1*Q n9F7 _+㟇sXpTYL /Q$.;ݖ|yF_TmH$*@Kc8{ @ tfsK:Na,qg!gң-GRR7)Se6l-h Az}rZ  c 䃍)cK[AFh?,g& efy: =1H~3(i1.H3CxԚʂ`>ʛXQR\37${:ǙX3ߍ<@NA^]hjH*+gzvexЪQumjgl$OqO;2A$pVhyVx3eWo.O$ [aq甪]0w`ђKBI׾qkoۣ\uKo&/pZ"pN H%\6vhȭk3{#MC~ϐ9îN~l̸c] =I/I ICƃF&+7[Yz$Ѡ\z}4W,l]$uAkU_ =:h0sZa۴?:zLIW+2-iaäفIgL:BZ7w>I߷ze&xf8*'^H^^~!5G"116O:g2 AӮMKUKئEU]#e496w#9h0 KXD]pXrdXhuē 8?bwO*#,zqpP܈")nƕ* WS}2;){mq'񁸭epq$7*M*d~YlJ&Shl8m>]=VAI\FV CMɨ*58rW23O5W2$Yřgyf@KzƇ~tC )i%W2*#%8).f+$8"uFZ3## W~ВcNUJ:i;g^<4e G!G\ҷ!咡$<ސ=H#T$3KFp@ܖ p$18:39w TT8~6v$L-S̗*KciC} X<^qe57x֭3sA-Z:֫8`_ctqfޜRk7%%U$O$Ab4 ̆ UfqbLtD/c̲ iw&+.Ii$Yc\pq'#Q1`aߤ2#gJ4#HoȑfV:۸@ͳag4`rڬ "u%a40A}ԵQB`,c3OFt + 2XkK?d{y$*iXHxk׺/fOH2JهfDyg:?:leyѬXOPQJY9Χ2xdlY۪exAaDEΘTWgbXẀ vQM|rHvCrzCrH=ʼn@rHWlÐ59"!/l'T萦_ ^l1.DB` ᭪/!&VՉU:bkU[R]JO6ďM6P Ö4uԆc5!:ɓ.͉r6I9q&SKBiCR0U,$uRȭEOt"Ok$E'O :aLXhĬUŸmF8+LJv !tK਷  k{JfOq2;eUJbV!LG=0ߓuOœѳxT~X2g=LTLxjDGKȢ怆9gnFkhtx'Abˆ 8ĜC!G(;!SBŰL:.@$VmoW0-_դs3 .quS*u.z8"?l4sJUwS@R80#΋1ݿZ20|䒬"վ\ 7\"g(FDHy5Qyd?ӌ(|eIAwjy#˳4 ZjFt:8,"IN/6h h&!&ڴ12X-2 *Z-jŁ6JL (}*nx )b:σVHKϦDNK',Ǡ` Z=L{;Ak P=>~hVw[+'beJDX!Tl zG4buѿkB@߼4>hմAm':ڵҬ[6r.cZBQ aCX*WJ&{]1$T̗L9A-DҍcXi1&8VZZpXꞇ8VNZ @dD_Xn  ~+=q,dc+ı,xg$x)G &_+~;8!,M!ҵ' XY8o\*e,!9+meTBz45,·Ajsx$br 1TQ@ |UBJĐU]:!+CVC R=#T#TMUKjrQzqGLhgG5YgENG7(AX @R#N^+OZ!|-Ɵ& U}x?pCɈk BE$&r 29PCMUM'(>x Qy$+ &S1BzP=(pL3zMk'eoB2a[t3pX_lZ`Sld~8HBmJXAH,X5WcMX5^sDpj2X'x"^,碋BIza̱c`ܘs O( Z&#|>'[ؤ4)]H]^];:-<4nIxhDc-4׺w?Ixd#x͵``oc`y`nX MOd6c`H%q\R4 @d 1-J aK *d)xC:2Wծ'i, ԸydZO$8=1 LYI}VHw6 /xS,uUx3KzmE:"[j"L=Irql[>=FR,: mMq 5mP k+MF3أRr.&MrD&~/^~,Bܥ)!meE;©] oL;Me1 ʦLhzl:x (o6mH2A&{?٦](ָaSXKh&kZH-O%|49qUYG1kF _ @ȫjw\ƍGSA.k"rixs6y0"D`6-9`Fn?yT{A=[nnUUa0FB0kL d2u¤ YW ԇGD>YuP<.X8EH1kU,˵x3/Z8t 5"'"(Pj۔2F#Ssn+aմxf?c"kZWܖ(jra+A,,"7gGα @K`x;0΀%e;6 5R8R2T$uErZa$'ȨUM]k##OUt`]EzN!?kO+B!Hpă'`9# _cx` I:.NJ0TH 6YCjU֑!7$9" eV6y,kJ%'fssU3y eZ@`!X-x≶\'txw#;d'Dw` B4Is\UbMK[ `.K ۸42'*ƞ-Lik#ZQpb#O4>v5+F\fjxhpxKBO.ÚWxԆ 9 L+Hۣee!7a{ & Od} dEq7+;n ѻklJڽE Фk8!=,L2^ҞY 1H&PA}$PhrښJEش6. 2 وi5W!.v#9V%=2#3V:D&HdN $5k?$j{"=2I@+O:aV YI@ZE颕8JDjlȡl|heC+C4 &Hdi~'"fw>Bd/kCqhecQL2c::ݓ"X&uhecSx[UV^V6zhKMVEGk ejrndұw2~UHCZ2C06Ntz iڎ6 jYƯPUPD.|1K526VGJ`q d`_zrZ?E42M /h['Ү *q:umZ9"^XK\{s)]) Ҍs8,)Qq:AT {Xe*[&] 2ibnr.j!j>h;R_Em3SkdogtVa3z5 kl*C%mJy4Xv@RMS|Z@йT ?IVNW@4: z, yV"7$ѩ訿tH"=23iit*AD[?Szd 쥕; g!ӼOOzO[Pڣϧ9OrV:$zN.ɡ9$T.!A?!IsԪN/o +(HՊi -{Lu;]$-J<Т8 e:1|s8 3p V`8V o9χpy~;it&$Sj糘8Oa7͉EhCr>f4%v Mn'"ۡ8mHq Mm MUym@q>>G]&s;9ڞM#23M|TB^)ZWSuL6sJS(#N )g6KE2>Rb#[L G6s LȁěSp&_lHpR#l%dS*'z1 LIu8E;R}9eqL 2@lo_mVLO/b'a )hEc}>)۞E`3 h5EpX,H<nED"0Sj&5EuFvb<\%N|ުM\(UEn]{7uZֆR5)>$f܀@boƽFPtg*4_j"dރfz1SSqW!28SG&I@Xm;_سUl8T2.;_ Ge1EyI{ם/a%Dc#aX#̄8Rpqc!{2c8P}$sl&4Qm=JO He-f)t ~:Zp5+F Y?6da&^Ept E'M )w]AծӜuX;idZ@}A67xiQdʩG EAɔ+<‚p˔ᎎGLS)HʷcF.|9+k?5'I\Qk XnI~ePzҫ9dxf5a`+|FCXWE;XFbS"KfQ[jؼ|jv6̍V58VFdo`P`=Vd!v؈nkhj HU9խU dm񳂠(hDF"j%=HֱE c:`o`m`Ek]QF~y4z1z[RL\kzLܺu: rMFլfڕ,L\?mI$]F/F*hrbu0q9/Uj`2d 1nwiewpq ג[tp^~M+#mޚY 6/lԫ/ؼU.[U=gi\"` v2ݹ#q˙dX|33$՚n6u°.cɚy9~y-z*A].fk-kJ73ˑ ~se)DUkaT$=-Y+Q+hيW:=%ޜLI~iV>33Mރ=%AV!c0aV$ӾFΊ}^ MRV2zD+U$U@UEwIW1ga]B7ê-,h*.vX,a >T}tLB% 4'N ]nUVNcJ._]ozX=ێ_(5L@hu?l+ mcGY1Qr=}mX#s9; iՓOὠlu6;ΖOqת3VktW5ZoW GkgJ;TEoJHQ >UC0:S{|Kɫa;)-oժҔǓ-<)LZ I;"JTlGOJ[[l:N8!zR6dxRh[/OZ Ci, (9<)Խ讍.UAhV:NEQ[ih袨~.$HӝzEG)FEL頵e\λ~/ .WXWo-,C֭V!.A'٬Wmk܅10ju5:3:5Q'85jHLw BY樭"=q|7e1ۭIAL2A^RfvFr浊r"308>yyjLz^=d+:Y-ӾHq)$HbFַw Ná P\HLiy|h[rjHҪCVNJ€V{ER"=QD-2.zSxJV"~[ ͤČDGmu-N!LHM.NHֆ ~$qf!ȚCCw!2ShrUfSsY D)HkXM R?ݔm8QWuh!#B!&1H ,=õEUR(!YZ᪭!yYԓ?& \VﴶP4nåՆ(yЉrM̯?H|d1~ tEd;y$m@]+-iVj9$!qcTy#f2XB꣭ylԪ@N4$Ieɴ6`Z 3 H|$ 6R6,v| EB[U_,a9hak@c:rƅdI$Y,\r)*je=1C(3nd19{-Ap*D1*N+sdiITVڞCъ]E֒6b %QI%[+A(`.GƂg <ɦr~q3r[:9"ͤhu fBTͰIՍ)0WNk*hޓ[p*2 *0CɃrr!+WOh,J7IM.lUGaބ-S@>~ ۈ%-ܣ []T lBahbU@%l#"y,pj6 *l i +\A(r +#X RFDEn) YdnDTJoh*s#sGSnR̍P!W2B6DjAٽG^b3)s#2,~dL09.J LHT :7""qִJ Jh-j<2BH=ir\[y6enaM2,Gg|vD,῿|-2^CzyO.:Nwp#&$WeU*GUM\x#*y]Hgf !|ffpx- ) O䀾?Zn+"-ѻO7?~۟{ݿ4 w >FO=5/8ƑExpɁ>1[S†dgK-l \vOioI_Ï_^oA'Z?|_ǟ|4վ,lS^u@*н׭fjյlF"z QjccSRnFDǩXhKp$L A y-Du)tzDx /'j0h8)50nG[2n,xtDOg·sy(/>@ғGpY;h;^8aazm *f F7MP2+}̡=X},p`S>K",Q_6#kRG=R n + 6a gω0hCQmîJxhG6|u1_mƨsDzycctlYXFD&=l 8tP24. M>/H,G|1rcm78[d'Qa&/&55+ dH2d rZn+1w1Lj ˺jp[E' ]2PRa)P:< P\/LsDxWs e""ylU*=mDgE7:T믿b!Zr$|6jښuJn wя-T 3~8Gs"g{KcMi>JEq{I #tm#eMjBPXaH ȕԃV!H&dF50dqB'2c6,2ȴPdyX7QwlXc[Lu7+:?F&3M6 ""MimJFR,#؋^2NNKI-|5zۈEӺfjT">sp _:@>:p<>Ő쎡\ ) FTcH~Gv 1%YSv@]\7CǼCSI au`>9Cن8RBԱP GiF4e䚎 opڕL*29Or#:PIƻ YY-?[[  Gr=·n v] ׁӵ%.|0+@_AJw=_i kį ]y tmzWт# dK_L.|b== _A=&veί1+H+Az>Ů#.ve.D,}7t>bW u0+-ZwG26E{%'bB &t}BdmIRW}YA(K~Y.F9%1|sk, wpJ]0s!oxAL04TS&DF.#.y5aL K"h.bbXAAh11,,A K?%&bbXȧAL ^1[0g#tp 'IG\Yo߽jiVUHBeuU/RE"r]O_W;ﺊu(\ 1EoFp/|KWd-љ?s" j~ ȹpUbs#7\GOJ ]gAgI # 淎lѭ>p3?ZcO>ژD_=`ܓbуs"W_#AZJc%+^h^ֲXܲf|H XA)?烾{0ny֋"^vq|:rF2_zqC-|_@?be6P>r;ʘs1zlM&g,|B?g箐C=_lg[M6y}Le{A(y8~Ȩ͓4϶7_6PdZVn5J^Rn%sPfٮ9j6 iˁO"vnm8fdǴf\|xB旸w gヤwof7樂?_pƐԻxa[(x_.U݃KMw&_{DUFzOH ،#$5#RqT.S㌣h "XTARmM7¬^kG*)"gYTFr>HҪu ?F{ "Z}CWv dbZPq`uV.{n'zj]B+2zC 'F݈MJ"SOг7t}lE2${  - C00f ȸ : :h !!'l`-oqFlgR8ɕ h6PW2D*~hDFh'ڴ9mm %-uIp9uݣyu@Ԝs@=k@<hy=|tV TTS^8zʬs^ 编Ԛg.Fиkp\K66P \ ۢ`ukmv\m ~_zpfxB8aZ).;|2kA2> C1*C)594"l䛗b_&Yƽ eK, Y@YzldA%EHK uK<$ӢVֆ@Ъ@͝gy,TX )Rrmv/%voAK 5ib#yOڧt8ҵ-7rfRHR]|5=;4[堾D@ YX4l#+V>P*]w״zԶLVC_h7_d(gE=|1Clm*OV}Xx[&vD^pbǏ$⛩PGbߦ*nKDZk`-M@ ؘf]cK< 8S,iim[Ȏ /\Y"$eDFh@iAv;.t['v\&e[0xιؕ;se%pLS@q8u ZǛ~M(Yd&6]kS`#ceL2%mvxEv.qFxH{Ӷ۽CDo4F 8_" sqҍ{xE $w_rIQpJ'w..ڢFܡ㢃daDn9Pqg [8HFe:;d{uZ-!߽ odH;Hثqs!p|,OD§{c., :N6xV}lƹǘ4YUK!nDG†r YI'Ew̯dׅ=Nrgr ;4--nSTeדVAjd[U:5Pѵ 7 BYR2;9@?mcӼѵA`sJnVV٤oո6 o9^ԉMf+/+ 0h. I>cբ}QUj0Bw2DBE<_.6o NuMFߋd̫ &%Q}/7Ni Ҷ:)'/HpLVni?y/#&I&G2wp Enʟ;x3(7®ޛ)K):io?.# |noX_k6zXBS.|d}޻{]vwoFoln36{̷Em Wm^{ᾭizQY<בuOթT^N~Vږ;2Y},e*>0Gk zgKЕ-nX#uD%4"At{mH7\Ȟ*Qolos"^i=KYto%4Sbt$dU=xAQ.7'y'.ʕC_F溺0Kf'wغ;5uk,vD,3#@Sݹ`fu- أQAR20 ɴu~qż>cʼnU.[}%Z/lc-b&$}MF}ҕNoiN [}9H( gt CFzmkH Iu|JBu:v~LUn+y%p pe͞7Od Itʬ L]~JԤ.&8/m_YF\KJ~W0^V'Ă.&7Cpw7 +"zy%y$@ҹn"+8[z-9$fՁ "öc+[c Dm UU7jocm#K;ֈț껯ľmscCnq1ZUpQMuSՒZg_3Ec:C2eF#atF2e㰨L(fDϩU7nz\]gxm2Cl%Bò|6-f\y͡1?b0XBdjr @C*',OLjP4' 3gq@e62xpK5_de?Bjgg&cȧ9uT| a4otN·S^4R. ųY6_Z?3X #u6D` Sxғs7>+-Hn{[Ahn'uM1GeIl"VՑ̴?2-?>-I 26y훈/K/ݫBeĖ/|152EvytJ?ʀ?zl(HA̓)Tko % ,p(&Q-Vg)b %M8DF=xfȹ 1Ț^g! 깂pdf[Phy쨳d>zKڒW3k7/|.71)zLI&cC @2zo*O: 7~8Y"e(Djq1.sݟ59NŨT͒xdI v`*hkg*$O.ܙ OtIf1FkL^] ?RS*S4my:l%bĦ3N"VQ× E)3=_ŠE:^cblϢos7D9'2Ås; si墅CYt𕭹(ۼN- ؘ:V3Fh%6T;pC2Uuj⹼Y kIp=JW_ " =JĿ`/ጅg mR+ےJMoq BN.u25O_Ըv2X69AD+)5ͩwSywG bS@s4ae1 g8\~ٖ̀k /h7UKn7q97aqв Co?L*^y;F iyNYgt#,x#ʄӑAdBh={Vf mX !&*vVc*VeȴLj$MXuOE)I[9U5_ < :yԍIy/jg̖y ϲ׉D /&G jg?JҹA~-0i q vx+#Z9LbjK!%=_! 7!& *b^&,S\f4Hp:4\ӇܪyvFߐ0? o 2HMy8hOG]ZH]E;SLAv+>("/HۃPiJ>=^08/x~6~Nh* Es4ȾJ:a.Q>_jSK dn/2&Y[y{8: <:?K-=$p^rXo2e?3MFc3;gC Dmt)bL*y(<-wd46œ ݎluuT#[Arҗ*F*rۆ/yk"1(%\g˳Zq)1Vsʸ퐤/<̀PyRbzrK" ƭa[aq[dŶO+n ¶KfNΛnN©J)pJf* T5~׭SNbg1Wr $1(z%S)Ǿ`nLy<6rCEK=E*-  a0W㗶GciC<9?|lH:4z0e*t0>> ug)V Ͻx(los)`{/C"|sqzfyy/! ܜ)hoi`%% ƚ>byEIw:0Ūlʊ[Rro[ׄxt[<9@D!YIGdۚ9O^Dn-]=)P̭bQ+HSs4, FC-\eל z͑ 2>YqS@o s%GD7bɓ/a)>$-뱃C"#B-)Vb VO=x„T"*rxDcy$,5Rl8FXd%TP}ޘtYLY0=XxGs9gr[ND4SZҚ(ԡ]#EQ2)ȹQ2} wRml :зw/@NwݣQ3X{mXqT*}zi'[8ʧTuztSm5ɩ~€望@Sշ;.X©2RMTmhK#UA9lj+@jbƢlD2(i$oB/IS鍬{,6)RO;{[S*aHaFbm6h^bdgFvHNJt+mntȥAXgne.♷[sKSk \fy60LVZ-ߒeJ͗oV9`62]D`_6`e 2|*S_;Żjγdv% { -m#~밉9 U${mQ.A%pFk$iм% 54Ѧm:Iĵ *R_M1T$.Y~TP/*ox_R.g4IkcI"gȾkdHD0Tx|Pw +D0U ƛjsɭ^,Wtq[4t+=ޤGE`RK2S{ 6.XP,sZ-C'Ą/̩AMlDsʔ^9DPa."ujGQ iQ/9t^9tm/ oL"ZSg%%=ޗ.&B-]ЭM=m˺$TeHy!) CWuh V^f]^bVAWX^af|<$x@iMOL8Kg2ӍfJ(_2*HS11?SF&wg(hgT_@ک /Ʊ kFM˘c-G٤QV7ryN늘&2zN3"8KXD83 d]Q noB6k Wĩ,%{^0N^H:Wӣ쫽PwC%< 11nazLq6vL/;i'h0K5 [ O3&Tg\"ao]GB#6<'Ȏq\ܕbO{[=MJi!G»8՟GZc ۏ_5՝M>Ӟ&~b0=Nt%12jw= /م3pgj.ew2ɥ4\7CNj{b×.~8ڿSӒtO?- ef4 Ѿո(P& ;#o֕mkjT[z.bF~vM6\X鎴n@3m9VͦY*=@,!ΩٗSx0hu*  }cvFg:f0Ck3V^/<DF46%¬0bY+/* alY+1p 34H΍IX =ָ/=fkA| __/Tk(*E^oM'Foga-1:Ok/t^K ab4^@,_ zȩ2?|q=%9{$ zVWwȞ4+Bco8=rN#>o kKdXYh,~-(G~wV2"9ڶJtT/{}hkx$9MkIue>i̡:4uڂOZ ~iX||6gg>,O2$أ՗=2$(VP:cߊݐDMHڄ\{# Kgykګe8`CI/٤ύM( [6Zm:秨X0'MC=$ßY{Yxԩ)eB!lYzc +#¤A:V#GR<tAR<ɰ=#'Zf7C!&ݝ*`2$ՔS>@k3 ~U,*T&4\FQp[݈{oK y[%-~UIqE lPTġ]wcL=.E6\Zݦ PDŶ-L-.v]89"SZ^ldDZYzqiphKo@<Kq)[).<ť<ZPu.Wܷ8GjȳZ$65&+DZl6u`G<(Ya.7bksS`["كp}rmoz~MjZ [.{˱nX<s,.yGoe{am:cjx;<6[83o^T5(VG|!SR 8Qbw nq+%wc/Έ:$^(r1g;Y\}H߰ ^U&, bҾi`ҧ*fM"VT q=Xc;NvaJ->p ۏ{[mN=Mݢ@&Э$BL[@ˆ,vj!5i7Pi#ֽoq kήɣkhKSXè9%ũIqIq/q2eK[&&Vir <eN5iro6[<-m9Bdznf@X/~5x]yXxxrx}Kkxx{EY.(ϢWcB{{q/Wa~~7t{s(q ˌˋ,Kφ@9m[A7F@g,mkԑvV6Xz\8#1 `` ht Cq2 `LJ6kGNfdX1Egh26Dְ#yM8t0aG,6qI _>Y * EydЮe3"4s5hܑqOʿk'r0onl6M!--C[ 揋!XK=uPQ(mtcͬb m-Ez9,<+GP0_R!We%~!kt!Z+Gg;bRi*)) diLdn7_Xxoxu2Cu+Etk{VjNQHvVre۫8Z1NZ/Hf@_ֳP{!J"#zo:W3#S_ho%tdKM9Y?tʖW= Yyv~O{6uΜuJj2\[Iޣý Mxr?I-6\F&T5(F&lϽI 92dz'PY%n~mU D\Z;HzF)LrX&hyMv]rA'4M-FF>'OC2@'`EiYMJGVRNJkhQ42O( gF b ڼF?}7t؀S0 N. .NZ\ΓQ7J5}keE&S4t8mp2]݄hMk! cm*9htȟnF3rbQ=.hFԌBklFB3 91u{͌fD(܆?`F3f3Fvԧ!YRDwKIsnfIBK*`єfDm [ 3n4#jLez Ǖ鍜`T % b4#jLEPp~<|Ԝnr#YhLKgNc1HC~s+ggo&c5Tժ5͈S:Z2Ӡt84͜fdqq4<5̀fԘfDY=11rh՘fDRtCN]ņxfDl<3SdTnȩ+`׶Zo5cd.ô틊M? pJ /ۯW*"*1^"ώL\R| &U^꿹mN,TH~ߖŒIGS8t#([q#q4D8#W1:^_k68p?D A(qx % ~sSKcSN_6T˫_~_pf ,:[zBv!?bA? gGَ⹦OJ31 >%MXi>4#tstۨ?~x hw?|ϯ|^O_}ëyk?{]߿o󧸼kH @bfUg[sjDdmGT<oifDV8L{!tGB}EYa}6Kg;4ݽ*oHKtԟ2m(=:hn%P\|K%ж32 DG4FM{s`j% ,ѳ |1az$6NN 2@R45;і2džb DJIMśoQK_l3B;+-Brb:a٤Tzw[E2." g!gweMHCu,LUVaIb^&a9~9ÁH*' F)£K&63jljl"~ej2'jNd3[>[i* J洢'GN=*: ~!{Xܔ8+`"9ΐz&Fd>BefeEBJnt`JnI0L[N?5y9ԣz҉JŹ!ˆSIIE0 DaBM(Y3 oOk?Bog^U:U9~̻W srK82Ou&.H58ʑtԋ2ǘ(ckIGgEbVn]AW?)~Eh:yDRAƟۯ?o۟<{sqt. 'xzGu<{u7lW5`L?1]Ɵ_:\O_hx.ݳyor}${^O? ]Ouo%Q,7@q<}^x^Z?eoޑ#. ױژzt[?S*dx籶Zxz߿F0ߥ{cΧwrr4xy fB<^[&?U܍v3r/1;.',?^_K~ViLTU>~+Oʽ^އ6CV?;Y_/Vxx |]|77 T,Wu\Hy};ASOon։S[~VߦkκQ~EߚY,( S 8Џޫ?^V䁤_>/3תng+?Ykÿ׿:KЦ]oFyҫv/~όl3a`n/WϿz׸K)~ߟ_sNqImnYQ7v|l T~^p㖼Og,Mۤ&4}}n+[~?ܱ[^Oz#zԞV^\f~ez Omd_?Y٘nF_?Q~ɭ+}Ph8tbPr4]s]ǚݱWYӏɢZu\\3?juòQ6,WS"5]H:5Ao套w7kоKEuߵSx7[1XK a|JJ#պ=w_ ?~h9G`q^rOQ}c)c(~kZ p?(%oxMp%1dsGo~/1=h&XݳynKc\Lڻ_ǢD.D}ǟoӽ0-[J?n _ Z_/,p֪Gno~sWqmo&KwY~Bť?o^>-/\@p}pm|z|Ow~||{>={~p{~է]Tr݉G/xj^O/K3No~/odZ⡝?y=᱿»ë e:\h17vu~۾/_&(mɞ}ا__?\9&ݽWM&>G|¦^RWToĕ{>"E|}m Y/|uf@ORj|lGDIDŽ/}<{|\&#>}·]^)4 6>&?DK|=<~߱N0X>{g.] (}wȏ"ovic<<6K:.cG~ߕg{x!7̳u7Yfs}BSaQJ2 әLj?d${eAY2$$וg<{ff@hV˯ s`vwՔ?Bendstream endobj 259 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 282 >> stream x10ѭ ŹYendstream endobj 260 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms << /Colors 3 /Columns 128 /Predictor 15 >> /Filter /FlateDecode /Height 128 /Subtype /Image /Width 128 /Length 2961 >> stream x+-9wTuQ8p8ḣp87Cp! tUwHSSKvRITD'zߥzG@‘pzt{.B٫'B?A?`@]/ .a& B\+$MQ`xDJY8##X+]T &S,?ujD$Ncx"M[Lvwʞ5VMG',K+BxIdda͑jwZ9`}gXR=xju5]>4_%Yg}O^C:wf>qc?[>ڮd(<9nYsֳ{j/ߏ">$RUOiql45))QG }R4QadR?$YדX.Tbz5`:ݹ$JcsؙXR"D{n?qwӏ t%Τ?cӰso_yi3>;W8zϗ`of!V~HrqD_ nZLI1.Կ v>2)P'2\o>-S6ɳot%Oxm*xM6^$VpM;R>YaOiV0(gwگJ60/Nk>RM +dr% b* {,|Ap@O4T=՝bR}F1$+o-b`j6KrfK(ܿ)>뿃9Rxߪ )x7O998u3O 'wo |[ R&) DX&NN0'&-ŲLLSə`j$iy "|@䝃D. Ff2I:u}[9T1¬0 ^ģ: Vq\!@RĊ%EY'iv1y JFZc'vy~ҋ#ڃM3 Cπm|+OL7rrK'[ߚ"l?0g0\- B GV -GM]1&:4* gn#| MPb@Ӱ#yb@ u]oRU{k( r |e!Rh '1;ײeyU%I듿"noQVNP0d߮zGm.&xj֞A\HodH##GM$H,r*W=)w{pRO:7I gG/'fl.o37p3noY\ @t3Pas&o@B@Lתkr zqÍG ѿ.0Vf XN(A 6v2f<J:Z?-BO}%}Z8Ok&;X na/-STY+ En> q7u}jweO C+$[x3_zTV# JmNtZ7cYP T]z'I-PkCP!{:w'tue(8J}T>4Lǖx %_Y0_ĹO Jpmh;\1OܧcXJ t?9jIqߏ evM`OUʾ>< xEZeދ9gAPg }@0!0d]}mh-Q|n42xkiE&H@D0ڳ3_|srߐ `jᘔH'>% aqLwG "ε1H ĢIyw&u7O Cߊ2Go202A&:d0P!NV3 %fNendstream endobj 261 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /DCTDecode /Height 128 /Subtype /Image /Width 128 /Length 2488 >> stream AdobedC    %,'..+'+*17F;14B4*+=S>BHJNON/;V\UL[FMNKC $$K2+2KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?ZUx-ӥ~RGVEhյTkҼnYFj82Z4zdTҥ~Al]J]#){l,%饈53'>PՒhGB֍(헥~VG畤h'J۰̑TwE[Zcsc:<6Hm=^qpo_E'q2sRݿ&pZ4iڿ)UKgV%yںpNa\$ⷵL &_*%~ ZEڢT&))nծDCv&=j#T!VYۿ1Ya :MF/jUQAy+g.y7cʼ7^i{֝TaZҶ+J4GJ߰;m?aZbl`|OP_jzyg9WNn5i('q:x'W>)݌}}pcTpF85Y{,\1UX+\Е/=T҄ .bĕ~#LUWvԑՕݫwNQ/kչE_!/~f3K0"k*ck^}X'_ GT~0zOσJ]NGctnEqW"ްa5~ 3LE1˞f&fpԍ:R(j'*ΕNqT%jC#iWXQVKkJNVSNS_C*XSq)rP3?ֱZc09KiQSo2c" y$?x95w [jZ0't/l+Zvҹj洁pppk.պVj^UUk1T5nj1EE(,5weiZjĭTj= hԠuuNrFl*6N\8*i5)U#5Ѧj_^^&[ *2}zf~ǂf j]mM{0zx[Ҷ~`gYՎUZ?J؈<~ٿJ޲=xՏ h\5pk+s>6H3U)ZNBgVONN Py*=j-[yI$f3Djc_[ X7͌Wp=IMumepw]:CWf^%TVfVtgе*-Uhmu|I=s۔-yR֍(&|k]Q:fMuWdֿ_H[Օ'zϙy߭QԧإWZRAڙJx=ExM?< SiE %_||ɦAn8U֎-s}M|{O AFErljʵUhŕe\kR^{'Z|40ۧ{5=j׵N6Gҍ4\kZs˷",#V5ݑψŒ*֩&ݱ?SNӣ Ͽۇ꽠~iSTWc:Nrjԝk&`|iީJ,U$j֧endstream endobj 262 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /DCTDecode /Height 128 /Subtype /Image /Width 128 /Length 2479 >> stream AdobedC    %,'..+'+*17F;14B4*+=S>BHJNON/;V\UL[FMNKC $$K2+2KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?5&̠c?2kCQ?X .n :Ԟ+J|{^jKq!U(/zW(?ù1X56?FhִVZث͂+z鬮Nu8"A{]5 ,\LT[l?O2p[WETe-ndzV\bSb!Z pwL.T5fVE9cRz0Nw3ZAW%VA]gu6zwxdU0=+ieMҘD۹b:dY|F y_݌c{Kh9fU+Wn+65FR> F4y=ɬ׭zYXwG椉cfkb|blk|ѵj78+árU,nsZq <>eWnI]P$]8)RS^9yk:u˸Nm)\0 Йj^S[қA_6>r=]~RQ[Celֵ^:WJGFFD˃TngL9FRw$V}K VhpM-k<\m+Ӥ^>*ci+15<OnqZ5ĒaE_߭a!6Z?U{DZ>.GXš:,^շ,9U$CZuOG+R(B;Jp1<+3pXxseWtRUYj`z): ׭h*]I7 Y&fNBh^9h!L"sucV+"YLPEhr 9DGj]dxJw]OŽhnV{l# d֘_0Uo^O~Tsn ݇-؏S-'] )[NJWn u:Sڲoz9_C^~+q45 syl= 7ŻW֤oLj3Gp08osE_5'(>Y+3ibcV%ͿK/8ԑu~j& (kЧkV:6{ބxkcҲ-W8|*<ɯΫFe̘,ǩ> stream xZKo# B q  AhhDRſ=3S5dQöa*z~"Z9_ru7~r 9~\&FkdzuQnʉuzoMpJ֢5)+U7Aʪc+6u#pGBȨMģ )|.JdK>F `A!٠ΫEŪyA޴Vj=F Y^?b! " &L~lQ+0ڬO XNw N(xL^0C2E:xi$\j6Oimfc^UdUЭL"Fb( u B*SXP#z:i|S"t` Ebԣ@mtS:56L|̮ 0р>di@*]X)\B{Y%')4>CDj;56XV+r;ilfM+@;`z_ΞJq6#Ig A7yaw@NSpWGecUӃpb&B!*?PN&]u N3l(4eRPsNW/1.=IDk\u,ʽ@C ȿ/^Nj0 ;>_mf0#͗YU1"!L[S=du)I zly t@k%(6Wts:H)9+:}*,O#@0Ωo `4RIY3!9Gr2l3Hv\ cȵ;}81JV3rf)r2Q!-T$hXJ1<%Z KiTm_a{c\aOGbz?S9Cre#ٲ $w箭;mѷ{Og[[f Ih듮R&rDN92+TGf6:Wq:sƭ +}m90ˊ͜Lpa1kI<(w[G0Mm0X1}{ږ\FH]#8 -H%OÇ6KDHS1whu™GVt m. zhg >YbTl+pi[mџ2|fCxE38 \g@,Ͽ &on[& ˉR"%bT%0,$l_*%V=Z`Nܗ39FQ<`kR-=S݋aamvjl>MyiTƥ)A`UaF[z}.dz~T}GHؑ.5uqq,uƘUzszE5#,OːePT!59C"NOOop7d<"yŞLI=E?qh[-iK/X^" zkr>g$ߣ7H.7$׽0Gdp'kg,:k}Kڧ^EpO74n)90)nO<=E Wl0^!,;AGd8AKH~:&"jΌizd'z*E#%G8o' qxx u35ְ#֖-z^$Wl%g۱$].BʨqG36/Eκ@Pc1MfHi_+)'y{@r-0v?nXkzm Kyk`I''yRHzBN֍&mzO⾁ھ}~ɳ'>!IZId2D5mEs/Nu)G,`Oj\)2׽B@|Sp@@8?:>cnOX{ 0Z@x d$J*JH;ްFY^(*)T^$au%*HODyBhTfual9[-ɏ_{D|˶|t=U5u}uɮ^weUwv%*)VI$Yq7b{-Y u}]eϔʞ`KYZYK֤93!G ӌ_#:endstream endobj 264 0 obj << /Filter /FlateDecode /Length 160 >> stream x]O1 y? aI%]2~1 BH.q^ud"~|k%7Ree¢M' h~ te!נY4V1$'dSvBBJM[H4-MrG{&S|CSoendstream endobj 265 0 obj << /Filter /FlateDecode /Length 4053 >> stream x[Is|LS> Sb䐪8؇fUQrKEj/4 9c9I@{[ǍFпٯ3>L7ϳ/A:<rs,)7^Nq&b0kWh !=zH! ۗ]ANAh6D}M`upB(7?1j'qgZwa0bϱ1\^}ۚ|ޚo;ܷ*5mq{ך9yHw"9d' ¢!ZN2H3m]k>o77Þ"۟&iuO/]/K Py _NYą3, 0u( ں훌:/4sڡZƼ-+.h[ Bl*:>.2|SZ.T|>NI4x=/$m@KOԛ:Cr7M&LGDkΗ$nv>T=֭ MCkg DҺ۠؋Ѵ{3(ᦀ bJ!&ҙ""-1By CɤEex1eK1 vx^8ªgqZŲBYŃU tۿ&MVf?{/CnQQD*s(PgL|b”FƹayjaSQ@'-&!Z6݁B,wcѯ( )fȶ}wijHC%1GďJ&V+|G&&NR1M$q;ӋecP]~CipژND VFŞ alZz: Z$5ibNVߝ p蠶i'hf oOŽꉲ$qtֺ'gD==gr&nFoZxeIq٬8wM0.6NsaC'ZI뗅 OBOIJoU;{oB\.,yLNyn`qxAaNP3^zépZU};Eo?(ocn?z\ϛo*ppr!re.)l7:Ѩ"C GMcZނ_[9E2R2 C=I'[ ORwӍψ(f$Am'Pc¯ ֗&cMWmF]0(> v4!Y!a N7嫌3x`rƒv\7zG]+6OȧP{ mktRg O eyƆPBAc%]'ͩ昮ČuAg!mo(AzF˄ߞ5i_M24xFaL2Fa}V."Oc<3x uӽàܣe,sUa;}KtD9#Dyvu2beq ~=QiBj(%m,P:caXJЅΔ&X2EtyW5̯)._ ئA30Gp4}"`#(q@KH@ [C.)8ͪ/PER\keλ=i\,MiZ /{6o㭥g}]?!XB`cR8+8ନ܎%R_9/9f\m H6f xߔ09'A wռ]rkZ[ NҤ Pt}fUȿ_, ̦>`ъpV?5.lwOBjv1k?b'dK+װ3r74X=^ ٷSԂSk#$BD֤U^=VjՑRj@t&WTg1wWr%ݟ[k"o"f1ڋsSjRZMl qcMwQSuJt 7u)ͷ|n%P_ظ/KEm'kh~Es@^K|*aФTۈKޱ>]67."6ZߏL(![l1pۖ%,{t]d}ȒF㝨}3+'y>nO|jpnjqVoa22/OSPTUtt.pjr#Cc]STXӗM6JQ [R$riVt⥦*5Rc ޼*X,L' %\3+t~w~R,"Iּzô&5_/6Yt8̪%YaUk޴ql>»dĬUk.2Ā˰>s/Yx6p;% AiZyuK7Lky)O&ʭ<+ \)CUzp*f\1gLn\{ ׀sُ~m~,VCݕ' P*c QInz,;!FƗQ*Of}{tjU&)h&wQ{)G!BnDsлVwW^}oM^-{NLu^&\dS4Q0ϫ,5*H:>˜Еb^Dz^W4_*GS&s/!@UBՊÊԕ8CŠԃJA~~?ޝֹwc )ºlP C9|Қ[so(%UGS^ x;\zϓ *̻"FfvbkhiN+٭D϶|{QpzIrMOm<ȴ;4H`D+W/oyi@܎{`. p2+59wendstream endobj 266 0 obj << /Filter /FlateDecode /Length 163 >> stream x]O10 TA%B2D! }I쯗+(n H0hYhqgy⤼M2:B4^!#(֘N?i fw6MQ5fh*q\B in X3 IQSendstream endobj 267 0 obj << /Filter /FlateDecode /Length 3275 >> stream xZKs 7ٔ879q(٥(L.k2)ʦu_t4zvW]Itr@Jz_OD.O~:w~ Ѻ`Vg/Oʛz]Gl}Fs6/Q'?cR{=!pG_Ĝ至o`0p*k22IIA>u9I>5C>R YnxA=lf`꜇k)lE?<&GS DZ1 A[ z'&@6͖M*4oܓ/=դ܏䆧k&Q'u^cff%נM;Q aؽ{Pu-W-mNyWrs;2,Ni8b&^6aSpwEank(ϒ} ֹ͚:8 (rQj"C@Wk G#ip|vKs+'ȗPθpQ̑DN& 0"->^#s"i頴CPd oSR\p-6 SGRrթG*;Z&:XAqx%\% |[*#>XRT&[ c ecVG^Lyy(M݈{a*l=f:np-kWfd)+JJE1gŋ5z>>!xi"`"+fpU/)\,Q1L|\`$j(ZgX~4HScF)2VV[a@676٤r dj-ckqzѲf\l Ҏ39;5?<ۮ\53e+[M&pCE2hzҵ@sJ$jĩ_ 6?m]!9ZO-XmvuQ岩,#ю}We9m[3r)4v, q=lgi#kdZV4EQHwWna2 ޭ7aU۔Dþ)w ²sxB7 &bs(*YGHg>u’t[p(7AȨ<&(h") si3(0-uoOX!|0fuVНnl mʹ<1:]f;5dQ[:3 axSD^s "BiYg49-5EBLw t2i&N+bSX@SQ:8 ;> "={^ݾn N4Qͧn[2̆z$n=-%T.vIϦ a`~5_5JnۢFhɷŬHpieFw-gK{ղ){Qt-mO T*7[FL];E4߭hD(F-唢K^SDӥvD$Z5`wѱ!^թ1X$鋳ڀendstream endobj 268 0 obj << /Type /XRef /Length 329 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 269 /ID [<1de582f6a73908ec11ce8182452b54cc>] >> stream x;K`DZ64)E\\t]DAG/888(NtAWqupE]7$7ClǶ"FI5cg[6$ )_jCڍ\N,C1w,/ 6U>x;#&wmr*鰦,ɼ5+f'šQm51,Ks~1v@e1oĩq.'־NЃ{򜀏\?%S&VQ }zsb~ZWLl1OYb# Pf,\CJCΡJ"Wa\-,pSL dRH!9b endstream endobj startxref 393535 %%EOF spatstat/inst/doc/updates.pdf0000644000176000001440000064171012333041761016040 0ustar ripleyusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 3239 /Filter /FlateDecode /N 100 /First 833 >> stream x[YsF~_1oI*e`nl\eK-ٲ|)?$$aC2 9v~}HDˤU[E3st}L(`41tjeV+M5,)KY,1 KP UI-Qx1feOg'IQ:. `,hʤkhObL¦LbdIMRfL ƥF9fǠPz͔a.oOpQ9N(à ҂y-R V2eL,4 RATv,U$=⠵@3 KԃB3*1T1)"8T 8LS5$XE8LB."譤 !4%~Aj jrгTW,ZN4dzoINg-rQC0Cr }9 )ϩ:,I'ҡ}e JpEJ_J ZSx*2ÐyOΣeӂ*)XO-)$$@bЎ @R$ 0u$д֊$PY>.K1Gl ''_2w@0G3;Ӭ_nϻ#3"Dv ?RM ·!;N=|4 ~z=̊`_,}( Nbv|hqA:ßV!c" X  :DIl$q3HDdUƲ:,m,UIJ:UNt3%)lIgK:Wҹ<ٸ|>̆y xEZEL} p&v~R<$B2d ɏv0K&=ӓC_N㯎Y笘^g, O~ (x0sYOgEJ:FE@E$`w j,۷ b_Ahf訔4(Rؖ2dP.Z0(? H2* ݼz,_S 83>!c>W|g+O<2 >n: C2=aٿڲ؇Rg+"|CښPrbǻG]O0NJ]pV- lQVՈڐBJ n._.2 g;W4 Y ^\LM' 4I9Gꠉ$tJ=dhj +\0շbKtmm]h;[钵!HlS-W ~~)DrL&U(|Ky:lyhDI۱YM9'wǏ &҆Gvd, 6_׎۱fر{^D ksl#Lw4vJ- KŖt's Z(=dl [RL-=,z`FZw)sK5/absĂ۪NW|at.㠉}}cXS]aPI`hGI0ӆݠ(O3s?@=?.2igS`2k:z78gnR1.&Ӡ2jғ\gt=)Q/N׹_lԟ]=QkL_ 'bfa$hboۉk'̪xcz{{6lC5mPKm˥ѽrmK,myG͂ `jA(Aڀyl`hԟH݃Q6}/4+6i®Q1Rഭ-[bLWJ}/ϲrcLFo{v qmڙW"EkY\ytc ʈ9ğ>wwDD`$=4KZ뾶q(A(X?X 8F17ʼWjqX՛ꗗoԳ,їf<'\TjEPnuton 풅7ףe-gwѥ3+Q6g XjOф}8ʳ xALJ"+PtrMyt]bJR6mV4V/i-zZS袵"oϺhEw+ZMcp9[һ=NURYTSV1 iR#icTnŭr ߛU,KCĖ ^;=0WJ, ˛64eK+QD S{(212}j1V ij_r# {-Y^anL1ˮaj瘉f-d4qMk dS)BmqaM]뜼BNɏR,ҀJʓ&E+Qf]VQŕve='!?mY-r;7ŗ/vaSWwϜduvs9JS%S9ޭy8 kuAvTfNXKG4NSSy;_ڣͦXۑn"/1'> }I.h&+* kQʢN赌N&oaޒf-9]_ua8?uRv PׂP` pfjO3X. ԅf)4wBSZTʹ^! mk9tp6Lz0aL-Am(hpuqԜD{Q"O{tL:NtҴZ/F O:2_-Qo#sء(V$&0LPNnŅ_JP]IP?rpRr[\uoraVYtC©/wV;S&Aszu$UnWR\Hqqtܺ`ZMT|BUݰeILj9zˏ-ۆOKI7x1n}w|ёwmD h ZSQЦO؀ ŤM Uܘ߆%z'endstream endobj 102 0 obj << /Subtype /XML /Type /Metadata /Length 1337 >> stream 2014-05-09T10:56:47+08:00 2014-05-09T10:56:47+08:00 David M. Jones CMR17 endstream endobj 103 0 obj << /Type /ObjStm /Length 1669 /Filter /FlateDecode /N 100 /First 896 >> stream xZnF}Wc  vAQʒ#ҍ=l2DHsH̙=ܵ &e1mYq KdR U  J+uӎݞ^῍!N=1h !RL CO4> SF=z*Cʔg)S UA-T KbZ9 2m 8Hm<^PLՑH FB0(f"A3= Ka1Gf"L wM@SHXIZɬ$(fE8` a c-c1x1#=R:)>N1ght, slv@6;!5HBQ` / P07żCD%,4 )>ޱDϐ􁅄 ^4h@%.! A@Ӡ)tBX4xMD5+BqfDJghA!=tHBbBsf#@[SjJiHK ʻ?gh6iU"5g-aCkNm|][@NE b2L,C ۇelDΥMmm?1-&bze"bWLWiq [늕+1hD+VB.o+-Vbe%nXI-]~uPl~ʀ{B;vb%J\$ 8+}XN;#Zyu]%O^B@/IgXn.p}rh8zJtPy+[8a՛ӓ_|rtvJY=p\@vǴ ?n5Ⳃ3~o@&椝U W38}J8պO_;\ߘܕ7o>ҥ'.J}.c.cp50hǮUA,wA #B6e;ny@UH>ÇokcS--z;|/Eendstream endobj 204 0 obj << /Filter /FlateDecode /Length 4490 >> stream xZn%W}Wc @BKt7Nۡg9gUsD(5cU}7Oٿ_ϗuzt7W]yd~?}qmu >+'rJKWXع{n?zuŠ䒯q8):TGcDRo#bI{u)P0>Y(SKww;zr6sKaq'].vϕw8zͯCtPbi-@7w~ÞzXG܃H\9¶Tx3O%K ?ȓCw%/0nҕs(V/Tdf|.56K~% ʂ_|+}ӗy\[a[Xx_Gy`u潨?Z?g>bFB4{)O4` KJ~: sL4"?'n)b/tu>dhCt6~|rDgǣw1JXm;USN-0FRj oTIȋK;%ta?-$5MGЃZX)/JQzn9Pk {DWR Zƈou"#!ݾ탈BXn{ZMNb[Q YG4;L 岖Ot|Ѳ²jY /ީEbT أN{MhP)!+ԇv|.(ŵnak$dTZͪD5DL_$Tٶ5^#a)䊈̟e=&AДu8r/Nakq9RTk"{69Y9F Eͥ8?W4wdt=E9f+9J`#~eYa|U(56F|nhطף;YSOHi nz@?r5S~6bPXp.%>n] Kb^:Aa[m3LA "kw>=t,XJZhYjbÊFsӂ}ϳ*l׺&RZ < 8\BgV5I|ҜtGWl5Px7TCeJܶr.,8,5%?$xs'ă7IJiD%$U,&~qs@{^jP rC7$6kG^qzB@OW~5˕~uBAp ԅ{?%q@*I-.N< 9482'É|T ʜ!87?y"y)yB)ԸbAVp"-ATE:!G#IM,Hā J$Cp|@8$a(lp,%F$.^vҫ 2;!l'T 9Q'DdWŗ@gQYK&.-H4lH0$/1To~h{SVLr&CD"x<"-D@DK=1cl4 MDi9c :ah="8y$'9'%ybKyD3D74"=k'͞4ׅDII1Kxu~["0ʟo w,T4$"HrWD!m \%f IDhS7W TEzD݄p>&TBǸt >^"Y:+aw-;>p]\nL)DC.UNA$v* nV,n: ɠbR#"H(`Љ(=o[dLLV ̱41_'O s."E6>\{ݝזܝ& bbMP7bI"3\'[@4E"Jͥh@EMX"0(kAF8Cd K!p^UfaY0`3n]._E:$aRPhtQU V;RkVB)T=)Rɇb͒AzA<)abEԨ*,"t H*%*Ĉjk`DEHm2J/iN2L`L֕aJ2%4BrY0h\@/2 R5g,&RLͫcH W)ښcF AH @H4({qrF KT6X#Bi&"ї$" ):xH*D: PСiZ-9.slu+8 9JW.Ӥ& SP]b<:)phk qkF*+utZx>)"a蔘D'xY3Թ&Ȕ*LѕT 51$ 1I+]ac9ݡa7x[p#-B=c:r1.p?rJTUﯤG*]z̲n50md+F:kG)ϻ}Iy`#ՅQ+_5^0 S2>ʐèNqe8 =I20 JGrU0ʐèsG^ txPɐf`3:v(`=yKŦ*W99a7` 6JYܩbNY ,jEo8ʐèZue8 W>jE0*^@à7[N'214X3T̻ky18Ź3Wx4._OlL*2z%Z„55bs|?=]/.NX1J Oo=|4=~;~fwHܟoZo5>[ oП[+bG tExvC#  `lؐ[g_]8Eڀ{6e^ 8+ FD (]/<@ʱ8guSi4&RW{+ZI/:Gлa{8!ư9FTV>} {c YSaOoFGD.x5PF tƗ}_;Ǖcߓ+Œ,%+cd|Q9SopyF}GD |@WwDg+%/9edҞt%bĒc &LDƬ2@Kڭq@4,vF(?5(y(#2%;C| 0+)mW8 FXeO2f@ #{4%hF@!we +;4mp@FvpcqkmWv7]!vvHSaX7.CojHT'܈_dJ( wFĈ_ QBW{)?8FaL7cy,)Ƀ6q#yrqaFD+17" Eey譲<%W+˓ H]Yjey(S'Oσ'"3'pybZ7_}x!mxl֍1'myrY!4OպF"y8(rXّTKsV |6[uy[¸UfjK9ߝyߌ2Q^9x\?@2둯}g|W\ba&x ?:X87,d[9b/V G#$]qv.^Nρ;ư[y ]`?O\n7Lݣ+#C'vم~TCWTo1/J/HX pwD5JhBw%z> ϣG^O7'1&x?@{>FWO! 7~T[7Y`%ҹ~ʸYAޏmQrZ_us@ ߏ+6E$|*<~ͯGW{TrE6FC[\t gs$EfҹMswJru߫A;cQZ=CmbXKgyRN* BUJLK~nOAvpÚS`Ne:^&//<+endstream endobj 205 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1799 >> stream xUkPT>]e:ш $J E,²Fm=.E] "R`%6ı՘I&qj819jM;93ߜ3sw/W`8 "cBߞc~3V0M](^H_6;ע5(s:xn^ERdeʵbVqPhhv񋁁] &K*JrB>rĉJiL˵ZU؎E^Ru0K+'dYx2W+(d%pKgR4XeLaت\J͗ `D, Ka7=^lcqj0n2 ~7Wyj? nFxP]NzI).R*^BfDe3 gDvXg~[ G(VcR.&؉wΡ9NS߱8lab݆p߽Rl &< .fzFe=?7=ihȁ SXZ H{؍~d]}r}Y5\Py )RCcŏЈb᡺ځ ?|/̌3V'- |yyT&ΗYt|:&[/9"qa:,QbN%q1aBm4tq)Um(6fI /_jlK[!%ιvGGU;ROӅ"v3ufsCUY5'U%6Wn4$:*vL?xT%B OA#jʍBo=r6_nVbu&yЯL?D|D\E]%T$(K3CStyEDWݻB grQ f)&Hs+%po6ir*E{b褳'NU1  J5f}Took(:E-_r 91"J%AFF|JYR#@xft DJ_S#ԡvapljCc=vϕ>js5odq&MxF٩_RXO^hG<ՅK4+"Z6}c?9ǚ:  ZУ(i4^뉇D2`@Nlx[-u\MD8SE\"\PcDGCkt*{`~ͮij2'S`/f1 /qf 'dE J?;JpH+?Nf )Nvp{{|(oNg:?endstream endobj 206 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1147 >> stream xEoLgZ,'PKe. ӡE&`$8t3*ZB[-B_ @)aA_0ngKt.Ǣ3|'>8pOMH ]׉qqB|K +Zj%FׄcP FcJg5qtlANܼ9N)ѳqE'GLAEgٶijו3lqi+l$1stDO//iLӳt&sRϚ1 q7'h1,bJ, V`1؛2$ 8"YQ5J%H,ytPDyKz|02R ՚|dTy-9 ̣7Ptӵǎמڣ.>7'S6y4%k<~G}R*#a)kZ1!%o5{q&`i|rS ݥT6P k1 P& u iБN/y.ehvA"}AmV6_,.%-TpdN%o ԡpw MP^AfMPhCi]mP5|6⤠r0A2 4eZWfB:'gAt$^"auZ;8ȷUf L}8 a S<~U!3DӤTT{ c1Ն>yv%BҔ@lpF(QvAZD>R yCaR9L`2ȏ-1Dn͑AlbYSt4Tjxǧ4!DWpM'՟P,مfRԮϛ.Sv*3Py$?dWGRj=.pR]~ٶzͩ-M`mit@5aTT[LBU3QavFWu$ D7endstream endobj 207 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2693 >> stream xVyTSW1T8hmQnZ]lUAM(HB PE`R[=-ZXӪ]}s8ۙ䝼sw~]0D5f7IxF$&<+,K1$CF'1qJ,)Rr"*&1>AЙϛ:kƌK2Mn"tT K%9trwL }aaVZ0}zzz4ZjѸ{Xmd3mY`͠z,iO;tbS7q$X0%BeXx X-E0d/3?I@}V1ٰ$&)|pVe1Eҿ\9{BHgϵ[@ML! ׇnw_c.87Dp !H_ݻYu\17Osx)EV(FK~hbX̿fwȇz-Z$0%jCM}baJbfpx4~)HFpa Zѣ:V.v8|hu+t]Cls48H5m2 `}pzѨM)W$CyʒT*<%ChJм Od<5J R$C?$4iCogw޹jBA!kڗ*Fͮv*T;_RL X_zh=M?P:n.kc^B#>7gQZdV=syoK gHzJ}B&oc%O O\KcHwL r3RssuE{WlȆEyh3ůTP2;5fC*grb.4A>0`xcbqpbVUo? 5kZrJfUъryQx%4FiVΒ[ )L#3~)'Nq/4?ud@|SR+$k L>zYnq:X0g|" Sl ! 2!JHVG69dChzj,o5M$C!gT&࿇Vc9C8&.Y{.яѮ}O!Kq玎_R{kkjj!9nG61 9ΓNp{s|70s_gSRr28Uŭa“vnvEmVn.I}D,.7{eAƼoخ&(`-m;,aAϧ'NQкOn(x'dDBm ZB!K\ &sŨ.سel}+jVP 9vcE2 c 9o}:q47.tg#| 7ޫ*s9C~8]%^d:C"K1tnPY A}tgUY`>]%3Ƶ ÉSyu{M-2uÆ*rXQP.,4 ISl_Q-ӉЂ l}WNMSk3js8RI}?~_Ѓ t!z?޿/r5DJ,b `7-Ye}t"øx3 OA!^Pg-.[}AI|%58*I J*1:,X.ۯwt䠆͠2Ǥ 8<G(&9 \~/lЏidinBR.ff`NjK3_2`FI"\b^HUdUԦb[w f7R͛ `b6SDsin! )Kn ѾGr#湂J.W;> stream xytaL2L wMǸ7p/ݖr$"˖ 0:@%$c_J %Z^H{9յ %DW8a|? ?Puo䭉VS=0 2FޣA@hȐ>a#GO9sI&̴5~kkg3,~,Ə:.0c÷د a00 ~es,I>R(j8AFRQFj4G6Sj5J}FREDj15ZBMRSeTj95ZAMVR3([ʎGPCSݨ,'OO(k75CPb}>©Օ vpۻmU'"ʦEt)6[yߺwCsD{#{>]h6lăv?;+;js8_6g`0.͵JH~f zЇ >8d!!f~8aAҺ5Lh_Դ[)yh<%`=f4`UH!&zsBh%P_+cxF8?^w~8nRoWAl>EV0VMR r y^+>g,.d{i<Ԍ+rgNOgִh+mYtݴ`P_B,wWp), > s Il)h@Xv ?:!` εɰ(@Vd66,5$EA)ǻ*D%c ` ukjGٹuWNwb]DhDI4k`4>KOr%hGdhAxfKc ܚjN|cx/u!lOl6Ca3!2ZgmP&$-w4z Icvgv榢{(0:bls2?Ħ94}Wy Aq73|gO>mS&ɑlKGArNFSRi-.9zP]JKwJvxdf␳8tKD?-I"AZKC >S*J*7!ճ\SX)Wɿ%1JMzb?˴G>u}1lt{0YY A轩i_:RSi5 -Ӫ~yIf-u(a͵g~"o Ƿf`WixvŮh J1Wv3WleF4\Mh^%ԏt.?ECLxZ"R`j~_T:S}.L0& Z V[͹D>ʹdx§cqnAq\5\#Ss\: ~BO,-@-Ϯ"T+3HHU-|[D ͱ2џ%e&muѼ}񗛠$0'@U5[ x$DRs[\9Y$.Y}KR6 6^ձ`zҲrY)$(c*+ѬPT0mڨI٠ HT)q-jyZPLvPAk->P(<ʪG/^#dv3j1ΓUjG2'%z'!VYz1ՙÒNڈՆHY 8vQ r/MPΨP&ψSl }J.XjyPwG Wloi$siz!Uf.tQ Q&kxzr#\CJd4Ni[ݑMtҊOgb473;f5%S A"D'$$%㋸]/4|1,YqoAYE鐽zؙ<ͣ$5Bų9\^ao,h6"X&EޠkE*3脸ٶI4t;(([P/QENp2hͫ~ƬXcժf^5i*T:@K΃0TמᶙhĘ nߥ95ٰW3HmX5c!!)bŢ:B(mOF_̈4mֿS3H" YFC hr ܳMK*i D領+zko!"هD/ k.z7՚D DIJ"r5祄 ɤm+[6G>&uaq jUJ0BdPdRIV4@ ^wsk&M! \ RY(6f( ;5y9xT9gͯ&IѬ6>5R7weW{qnJ?1U]_ 3S=N ~5gvv( U\^ 7#:ʾ/#D֑lAI6oǡS{Z8ܩ/BsH.iqiv9LA^+ήj}e*w/L<[ NāmgmIȿo4٬31yIDO%=EIBDHkz%@)v쫈Mw:c]91,1{'%4<.ıPR#1?@fd_5 *]i, =SD6hV,5=N)EkPϬIlbZAįZTzuLQCV'(R4T9?mVFL>dHt%4$QoQE$iCcο3x1(MG#w2ĝ,tPgCq \Wa>%IڔD??+.^!LXaxeuvg6 0=g:v7GK,-B=uO#%;G2ZEe&MA[4dv+CkO/CPfS~ͻ^|7 ASyY(-C $Ň 1,BY~o`.hn)O+6=N-S ʋ/.(+wr:)0.i)>'f o|+yn2?b}<':Q:i ۾`1,FF],[9q2HL&[[ hӸ۶Ԯ+!6c^mb_S̒6tFs\[Nx3MKi{%_R=lMHi4(8l2֐Q"5N9Y|}uaIUen xS:<m㙬V's>k')>yЌcnIrG/G1⧕ɻJ 2 6ϟ0'nqu:; 34ڜ 4:]1 ޏv'E" ϗܝ')9MIw|%+OZ^-h.9/cye_Se)a󡒩Fo<x'u\ЀjHg z#|2q36$壩h4XfJ 0`b;Dp{ LӃ!y@Fx崣]&on5}}?%}čAMi UihKVW_R㈻Zn!G S$*tzȂ} JA VoUmت~g[U@DxQ>k]ʾ:5wXżADʶn l~CeW3hx{ݢ. &:/I)W񲶝؁-ֺ- Ih[s_Ŭ'i{c̃"Цy~ߝX"7_X3]}rorX&TfI`{f_&~u&/j2$pT-ǩSU: .E~)(\ogX6OejhyuHMBmD]Bd桙|--Ko.^ZyCp!Ŀfg V5%Lhv#+:~dѳ@c"KC&QNNdO-p "U/PѦHTq t:ݶKs_6]za[Wp-py2ԄujrrB<_ 0ߠ_!V/;EFg/ weQUngNŽ5m,;rJx"^4mMz @fu)@۷ėZ25`ID:pnNa)|7uĿƦ ~68846TٓWGxv{Sor>j2g(k!Z[@?!b /Ey:W?[4M>lnrJ&9MmT . OӂFehrhBGkO6+#3rLpO<(ҊlD->POlЃ.gAh4h!V< I|۹ n.S6Ѓo)+sXHAvTE!Pc|PUF'\b8z|uoO }F>4м=hc2:yEXۄc!9 lu~4T]Gh&c ZVSLFPȕ*4 /m#*ҳgK.}}o(}ތy=x>tH/ (K@X A|( XZ:6 J$J&~To~K?1 #?=&e~nB$F؉U*폻#+}>!LϹ쨈+)++uf]q&,?_ݠAnV)Vvl9k *MZ+F,pD.'RX`{Fz%^o3^L]r+5 o3`,p"O@& y͡kYX%* "3c)DtQh=@N rPUUi\pF;aǎ7[v lZ,Y"!A>/%L,+1'?5;[g&{=m6HQOslETwxl\ΩU3*O܎IIM͘*w_W\Ya![CAʼ']UnǙ ]2>OS'6p3Y~SzKi7UV#'p.%,#Ȓ0AH,fZ'O%)xiӠkB>[0nŲ 'j` CbKOT44@^b9 9~!~& qxnDockl5w$#+mIRZɕ}y40hǛg[!)NEUhU(?9!&9i Ѧ# " u 2Pi/O+ڏ^w+O_&;asVa6 G!3WL x՚`gu:T Id5$06, F ]>-:#K1`Sut  CJxW$h&;r;x&8֡;C>7 緒ܧG'*ͯٶDK!#)nVjOhgs&<ףm,19Dxsh#&1yʴd5!Ix2Kt*iM%0 IZ]z*Spq[fd637D\ u FcQgtDosW[d,/2I6(U" 1/~Db3@Z>GcSm9}(י(&yFgjgOE ly?=$Z5gw<\NMGͦW L$7LR?D-6uԃug7CVϞ={Qqendstream endobj 209 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 6577 >> stream xyXT3GxԜMb-bXPTa``EfzS+Q5q7~hcIL1x}{Ξ~Zz>"ʲ%K]\L6;Z!F޲H a+'+dm-F}FpS"Q`h K0v{Sf`ɓg;,zpppvyyamoa}$w_}bsUs>.~w}8f{6M8SN>c&EM}Bͦޡ>PR(j 5ZK\:=j=5rS3j 5H-&Qerj25J9R('j:AfR*jeGYP)+-/ՏOͣPA`jeCIVQJ'ʒRP"E/|ЧbE,+x$? Pq/f}BsXv8h ٠7hH0d$sܡl?6}>l\feڿeq}>#G<9~F֬v;=7wB]Qcz._C({Z;%ؤ8נR]Vȓ fҕXyʑ*_Х509/&OJEQKPVM_z+lGwm :=m%_a(ۄwpH)YGqVEdF)2Zr٭~aNq׼Zü$_ܼÙN_p#_,X̪.6|'EQRW*x|mD R`4XPlKBw5w2!H?Oz+Y ;ȺӁG=D7.ga}v_q4 d/W9ڙa J ըTҒAfhqGʜrXa7,v۸<8I_D_Zo!xqSl-'C  p`9~+o\v81݋E=#xy( 1{CQ8> >bq8 k0;b|SPw*%';$.G^(L-uLoqQێbSJ`; f0Xy9ƃNSIvX\P5#&` 8sXKǾ|=rvٳ9]{G;r, .w7D,x;LG_5bI'x;lދ*ʹݏ#sBzћƤȭz8UB_Z:vF=Ť'k M0j70Ia]49oUBWt_OuDyP>Ғz%F`.}p$NСںz|-׺͚\rrZS>n0'*=1LCIaV@5 +;wzj}CA~^Ȫya TuaNtNUyՖW5:c ۨ9إ`3irFKcŮ z#^r fYj |xC,LOw*4;iAio[>"saE7l%Ƃ܏ȑgm^fVW~_֊G7ot4GڂBuVPebbJ+ +nTyo#ʷ f҅3LFƇG^EܘEn#x З߷(Nn墳+ fQB)-RiPH+c?ĎYxHYnS.E7VhօtuOOygV GʚsfE_c 3cRrbQ Ca5KOA򺸳UtNPS`E E EE̥/7XU|Bꮈ@t%_˴ܺ<-'=va8k6+܎ SMK uuuu\7؜%W<oZ.[9θnt^ƌ{m!UTU^a");ோL+ƃ˞b ?,c$甹x4ZO\~$MOdg# H`Y,7c߆/CDV`Kt/Ή4@^A~D4RP6S'+ F,Q2'y,Ft5Fzi% xÝ}a4FO(OA0Vf $31Dx4nd*;ʍfY.-BoJgZޏ?n!P`D;8w:'?54f=?{v u_u0Ҁf{fEcAݕ QFaQm/D_͠SJ[ v[giG G&L7D(6A5}=ú0GbIk+"8p&Sz蝁\2H"eH(Ӆ (_PY<όU@HͰQ_)Cœ8mƛ|Dijg#P.otj2H3gKY&=,Dg ^YPfKkP6y^2ԆVhщ 5X8>4sa,- 1m9-T0tk(4wΥLp\o*"-M7%\fӏ{D5 6}k!jJC(L]?0^n|kD߱<ޅ6px:$#33*&X*-[JjI!$l-F0`*$ONӥG2 vnݿvpL^l U(1>I *a>N/`W ;~دwlQid ٙjeKmQ$(UUSfk_hDpwEʼn<-`=< $?;.9ɚ \ؔϸ3o% ^M&7-K"7 F$OO,,*3X x(!$dɫa\ia t]csU/m% G!y\sLC9䦪yiG{`W]Mwpx$vL 0uIy55Q#k/+n/f?;QA)0ڐ4QΛ#cRv+*(mzqv~uף^'+[EU׌8؂f&^0Nx0i&d`"" ;loWCpFcViD ۫Alv,TDx_#U%+#4ŅYJtRڮUczmX>@Ji>t~0F޺y=<u>쾲{AB'RI11ɜLHUX* de:Ldi ݯH?}_g1UqxR݇r8pۇ\j;v}Àx 7o]uҺlsi6vtvH'ߡ7g}2z٦>Ja\cu]ՓnQ^Ao43uMJB7OO}zڕw?gffg!M' O~1dt}W 1`t>f+^pɖDD&%'%rJR)r Zo#eP`"#K2"GzaLa&l/Eu% T֭,(W#6F$p}r9ĔYI@1>4mK3xn'Â^X.۾N3XOhY/5q{&p1pXdMey9\mDpubK? pEι@hN6A^Vsw<}%-0ek#[f&$aHZSyvIl:rSX=:*" 8*ץfRTs:i*;'yNjf8Y ‚|+ź~\?KEu_zE?tBendstream endobj 210 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3866 >> stream xWyTS?1sDGsy*WR'*V, @e0"Hy*ZDmV[gV^݇~ۮ{筏Eb';2j#XO%~Z*I &ȁlc rj}eQHLF0r,"F;^8} GWَx8. TlW;zTMoxoGG~9..n*,jn:BFcw8zEG; tψ1сjGpa&/_[};kv uw}u3Df 3a&3k_fld%&ƓY,c/ƅyqe3+yJƍf1K όa2Sh+s_V4d֐!|߬W0;ap?0~k{͎žw#JZ`FR&m5広Q]&]V̀╊Cp jtN21y`4fqXH\(MM; fmii&}`lL2 L.^Sdw[!(Tk%{!vK/%[c y CXdxU"־ k2yk^Rc;Yqrs d\>ZiO2T$3<~,-#!VzӚMFBKxĕM"c{so?Q1<8f|X,V}PnywYDeln}_O7V* 0.d%5#{rybp d.BvAfE{)K3$$'Bf~+y[vגk]>($S!K)yP\ kE y׌SLfV6YWt}SQ{۵]<͒D?ߡ'{J[ׇ#S*ł6Z$,4%9F(U||,,Dr1hHUk $By2Q0$Z`t@Y3.NQc4f2}U tӵߑFf =슰5pN5si~좭,|+Y'Kjwfg[Yo k/MxLJ܋ `7` d5zЧ'd('<>kVDѠpX aY\?*o1J!טW зCs2s>d%BAf;4CF8[?2+t>4Ǧ^63`bVJfZ~Nkh4~Cx?2'>KS ʧX>))͋ur^20LNTiޒ ɗؤ4TThZr{%yۈ/:Y)oB*R`P9~{L'~B׃E."PFRBh{1أt Nt1;^T\aх7-iFy"vA{0\ZV)Kt]ZN&M ,̳o%Wj-((~6JE['̹K&l޳+@<;yo+ºb]6\7ER»>2#^.Z1~=@}>x, '6مxsjU(MLV x6ЇV"(SWmjIEDys~iOc"SƾANM : !/_((+xDtӿ{%݃ՆL "}VWQMѦR7I|JWA ,].S)'`ݡ0~YV=UTW((;% !\+-ܺ⢜J|'bxL/bfۏr| :%,^E䖧= 1n+d;.zBǠ`4 ~f9t@|I.qRhc5> ɩ@YpC+tgg9DGhUhv' {oy.|3@)0B?a`Om(cf8-TxI[0+2漒F8µ7UΏ6.o~ztJ q~|HDbڦ}UI>9Gh -T#C"u$}>C dp{Rh'eW,~eYe?0ϔ+Yx$$ Ak%' "S ƇtCL*RO 92 qr+GS)҇K?f &u,l_X4FQ \$I'F:3Baqs0 OD\]QSVY3n߸0@ɄŐΠfYt(m6kkՁ"`7TtTy~'Hp!)^qܯ_Ssy [ (#U>B{N>קM' IOn/T-9e+JۡGlmQVckgg=endstream endobj 211 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4054 >> stream xW T疮TDS".Ui\Q0APe tfA*\s2Ɯlh^Ԙh|1ϙ̛3sΜ>U}nwUFPKW̘s$W##@|yk5(ƪi]q FPD\39&,$4q|sΙ8sK"c#WDžG/;G%;s޴iS#bFń,011,.q]plpLBp{Td*`ާ{X3>.8qeTPpL$0DFqOHO  Z5!awD̙{Y.ejf Yˬg FƋf|WfYƸ1wf:|x0.Jf3D1vy!=DX1)Kvŕ>++[]V[.ZZca>} 6~6an3P9f tl Yk:IGRrS.̴m"4Fc-4eH{f\ȐU`0gq5T׈djڠCp"K!8 q"QIpX2v2jq*S[bCh~Tק7JLV|- _/\c­ k(װzk6M9${k-+Bn)VV\/ׅʋ>?{XIUp:>O:$U9%y]>b`1@ aKkiz.H8EXe}QRm)m5Xnۦ0 L'z2)⩗CW{"4^/T6]G|S֗%U[omʚ6c9l:iS_ ]W !r9B'qٮ.ғC~C8*+{a@0}/d:b9k[C҉:SɤQέ3ƪeZw6 %,>ۅ3i{c|N#3fQzM1ZRהyCs y3he6zsV ƒ̜3ed%US2-fwYN<=qޕ[xސg]$䤜\/P} px ]wb1#LH3vyQBb;/[;un|2'הgdNqM\.c6{L%Jp@i`CtntqZC6+)=`%v˓ݺ8#%˗ó8=\^؟=$GD@ˀCo(jް$Yi INO Y\+~"f՝Ms'NgQd跓q< :9^[M+M@3p \jkZZ呜/CAH6/șxk6Z7$Ћ{ (mVGpZ,,&.C12KO)X9˂}Qp8r:xTuD Y=R1]֠x{)yy1RNԦtVu̝>X2 {9g̶7%ǒ c.cwe]Gs)+ct/!2?R[T-[8E^S]-;8bH2x! DG2q 8n+r_lv+qT+rp˜-~#p pYA=rmE>vRv쇌)^i2y|MbO)Sp$>f\1ȉ+Y<,%h;$ttup7RΒ 6<Y}]'zCWVM^-_wި/O\?U`RȾi;{otZV0ӿ.讀\%}A'.? 8⧊✳';![+4Pg- >)*6J(H6xL"VKp .CQ)B gIMWZGm&i7Mvgp#Uq$< ,X+o;$C10bh㪃b[G<g|ۀd?=~FӅCsHyw8 'Ãg?_ڟ-nyFӳ`Y]|ys]*&*K+.%_ѩ:8x@Xn,A)SK\w157Tw›:r'()XtGA)c Qis05}1tᬒηBW$x!;x0e5gR5=4%[9x ܣ݃-/߻jDdy k.On#{< *Hzb& ?_GE7 VW?o7&;T~e%pCwxy\~.E>,F$i8!MNr}k ҰY_~ETxuc +8Op;b呝҆kVgӖu+tiDN{"*?@=[$T.-/2f:. zOT &3犿`6_;}`ջh'ߠ`m|UEU8Gث,Ԗwt|".$#y'DpaQMMǫoEFI{^;4/p::'Duw<q?7lJ;1_.=NIM=,ǭ*JP_g5̦os mll>tendstream endobj 212 0 obj << /Filter /FlateDecode /Length 4459 >> stream x\Io$ F~nFe}JHl a;@ZcK걤-9?;KY> ]}|ȏY/y~sW_t_?oJ}QTF>Jڌc쨜9>9v΅ =cBd^s9ܭ :15 =4cRȦ/WVϴ(h4aQ4~ytoVNq=lilWu1ƌ6+aF%GmLsY:V'R;M=hAIUR?oSDE0Ck )y;3469L!H,i @=If>J{kE%ӛ,8̰cL_<0[oW'x,aN:\-X<|Դ(ZMǍQ0aj.aqFHDzt0't4ALӑNκ8F)O;*um>Ħe羱 _rʏ?͘Iܴ:)e}#|8MP(D+kg:]>;MTVŹu* ARywH:A.g2zYߵ@m'lVwcfMU\$74״9vsY7]Bx9ho8Mزç'%#!B%SO(YZ7S}c= -_(wMAẞ?[8 cJ3fn)|dؙ)wt'Ywz߹-I]л0vpg) GG~8˼Z'ҙrf~rnSTFiOQ2wѩ3EZ&i5&bN FhǺ3/%UqfS׵XojmKJV:p8I<HE@E+N";p"y O8Ivy]]<[ڑj?pV/£4ё a j󵆼6q.+R։/?xM'U A.:䅘Pg!H0PIu‘j54qHss :EGv`C@Ə4яPzlE+Uڂ $vSW$ht*q2z 瞽 CZo)l J;cA^="^XV\E 8ŻsPjTC[ϺS⚺bp0Ly )  <䲕s¢=ul>Vr^}WoSAVr740" qq>G5ބ$!u9-)$8:r1iX@J#e_d"VOK|YkfõqY)e#'p%gQYN^6irL=T}ޖ,-YQ,|@䝲ϳ4j"CYY+#I։$ǼmUN 'hL-zEnjMDaB4Etu®x[-h1(+6ݯ!Dn?bgݪ,)6zAيTNQfewdRHcQv2qRS5ؠ08JO*GI!@ֹ̈4Q 2Jlz_ޯ*%D/a>&X ft 鼬 ]$JPP8ɣ]\5'Ӭhd>;d!6p&VlmwZ*XhO ʺ*hq6%.*մ~)\JNL: C)F8|9:@Ne=z>'y(=?%>m{ MDAI%<hALr帺FLfˇMs;O)Dx섅hOQZvO0;l k4\w; g\>lk*=@:]FW'Zȑ4U &CR5$YP3T'.G >}*?J]= Hga2nFiږpQ'=gV hTSW$bm}ԓh!wSEKI(g;Wy ͛j_I4iT nҨJMڎRĵR hmJ"~0.Pf ܟ늻{61,3͍]H 6 zCRϹ_gbӇCeDkl= }*\0YK6tWu ]II7U3ϳf`"ׯB8Mut@a]v] ԸWJ#kJ҂tȨH`E #3obzKc0N& (k{ębE]cꏷt1(1, kZ)R L[uߺ'gyi6" H$mVxsWp̯jc.qۚh/j&5J6Nиp "r˜¦ܭ.%*aaE @{O:_ ͺ4yKf 4WrG=7I?& ZKTS ۃNVUa$<~YW3޺8ҲFO6AG+N\GA%:w`R%]EE u&/ qc,bus_őc%Zl)T覚+6jRL'dP.e}˭4&<9"g$]"pYr%7Q?XΔR,&0qZm 3g'{Ðְ%FtdZYW:PSOP\A%bCnCd#XJkK q-Z/] `a>.CM uTL)h[x#І<.is ѱY"[ cT8e![CoϜo0RoZgSއ+TI{{U x,Ce_;==&mZ"noo8Ȼ ~nn-dFbA@. 2M) 5>q^'bX|(UzgbpHWU siZ]r9qT8!>HjrMx,>1BnS9^HWN8E0sW]/S1\[wͿxB>CY5βUxV( u" \2K|UVVh\ UU>_u 7Pt57l O-$Uyy5$O7V@N0?<u NG9rDE>3unT) Ww5bU`6%ih6r^o 5j8rO 4<rF%;&-ű{>qT 4 g}KOԏ&ԏVPv?0xCY-X B9R8#GG1@OJendstream endobj 213 0 obj << /Filter /FlateDecode /Length 159 >> stream x313R0P0U0S01C.=Cɹ\ &`A RN\ %E\@i.}0`ȥ 43KM V8qy(-> stream x]O10 *A%B2D! }I쯗+(n H0hYhqgy⤼M2:B4^!#(֘N?i fw6MQ5fh*q\B in X3 HSendstream endobj 215 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 329 >> stream xcd`ab`dddw 641H3a!O/nn߷}O=J19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU8OB9)槤1000103012)ٽgf|;?̿ܥ;~3>,}} |g|Waq6;7<_s/wt\7Xp9|zaendstream endobj 216 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1587 >> stream xmL[ǯ1*(6IڦJM[CK! 5~&ccbe B4/%Ck5jfMiLNs݇݅Nɔ/4=pL$+(*i>q[D)WoO 1d?5 YDuMX$6; V ˩͕jɝ;eJV J |hkUJC,' '0yruSV_lvQehlR[ ًZAV,W+ek]Z٠ˊ ^aF oU(UVbk XVNJb,CKfDqʈ"TcZF536P2*Z6T@ _?|WRToRV5c_48iwN[x IGTY KlUt,C= fZ eBnL=_t2NpKmX`OWr]s(I.V~[/nM@[ѣ$E]׋#H%jry~ c5K(MUgrm{7P"-ޡ6KC*Yy;7f7/ ~8>= !etc3 =D__LCYart 7X.;fcYY-Z!|JZ^K%}0͡E灊7_'?q.i7C&Q[R+T @_<w/i. 9PTwN&v]0n2`l D}m,Iݨjwz60M\a>V̐6hjn;lcE{JSbD#31ꚏ~|=\ݙl w﹍~?] c};tᙩQ%ft~SGLf9H,Еw.?,+xGGI}\ `TzYۡswN|yd8LiH-J bȻ_MN990,-:V#)2 Vsͻ_ OOFarunҡo+4ɵ 'su/|?8t 9x]xNP}8vH ءʚ5I_VC TU,WBM6%7l$7>Xfd`?D8endstream endobj 217 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1774 >> stream xkpWਸ16j3y &I&%MJܐ0dqBFmٖeV՞]굒m):~ql:!AhiZ!@ɔSz:$~;޹sV`w4w-J˿V-V Z(-Z]m(Co!XFcsle469  Om۶ YvPSh2[հf.ÆMG|kSs޸cch23woMmmVιM*0 56fl4[lyղYr6`A%Vi `Ŋ =+ʴk,:S-.oʴN'$vQH( B8AdtN = Kȋ^诃x2GLD:ξvj45dž0t|. и7\e8n젩py'r ,'mVJ\fҲPsOcp4katAR{ : |\"'8~sOOHA ֐:^[92{e Gں bh]KƝ_4.K/꣑f"v  Sq*J *%h,y>|8OR \%9.0|f9|V\d+,.xK;~m H$DF1Z >ꈷPWyW_]_ݡF/PX4rLޠgD T+9~*`S,p 'NhS񮖀% q"U.BMrOb4 6m?ݻnz1Lh дGytykޣ2ICt(L 1)2 x.>nA.̥EWt;D Xa=(Ju- 1 y˴?)od)\'zi½@u# }`aW#l?OKaA/h~i۱ ŀ W=<ݥ]$$G> &1BH. ^io7^:-gş|@{p?MtrP;H[#g-b!7==rܥwϼ1`cA}&ܫʱIinq*b6}n)ggOe]ڊ i@ @;p|Bp @ʒ.? JĨ CSkGԠjIs.=q2)"ʱ, 825L!,nպ)V)v[z(lDX8C }?TA8? I.&p4)ڙ=:}ZU D~GI7^0Ņ8ȅRkҦ+2V3"1꾗&}n8{PySex@iРjAq*AVTRPOtq;pJ$2 ms _2\L}mC> stream x\[ܶ~w#y(LڠڠE: ?<Qvf(`Zx9\8zq1?ߗO>] '|"^]^%=ųOKqT?x.w?gBW w>~߻?l08!xoכWAy߽F^Ruv?WMf]L epoJ^yGOqwsq z,h]̯C9w{MI$aj] O?OtB=o:>m$VuW4}"M+cqK,qxH|[^I?{$nv9݌T,_kIl.`;YV!.4TtjJprZ.)A ~ Kr+5IAIJx:ֶb N(g!2?t?&*kt[~vaEh:9yfk$)Qe i2ZbԻyO:-jH^f` bvo"mto'-a"}_!A]b $Oe$mL}Y:d<%$[tQ "vA8!,/LO'FWWDa4*GJ? Y/(]'!o*@,ɓҍB4ޖ(Oiu>ɐhwhtXk/DM%*Zj YϕCH򫤹i~gQ8˒p_}IoRxy6ep }NVQ⎾V/ pD+jU1B!u9ȾMN˦ -TģO1Ub!]*a>L31٢R8$H B4jIhj3\JXi#@29_.S9AMN 5(w4>\!Aҹf8`&$j,"-?ѫ!2^E} 18i7XY+o䏐p}5m o_(K@,xŠ(I)Q; <6Nb4ZiIiTGZSTA&dfTfZ>A9 Q%Lb`4v ,E"l멷ZEQnet83x.ZM{ffh3;P cÔ F<Ie !EMu06!^Fm`]I!Pc6kpt1ܹ0Mzg.P.oJkRnk8V{\9c$ c#ɳ/| =wVBʛ$EKӖ@n%]o,ֽG)ԁwj Np|] ietl: ~{''ť;^+nd՚ \<4I ߥ|S#sVMԉbP30aSf]!`_I@QQ`11Uf&{դ\q;.vf놦R-(rEb63#Y8YuOc_Y+3&%["Ȑ?w^n-(H@f3lMcҦG @m]{sF"Y48 L1U+\WHn#B^qB>zDtD~l-P`X 1WWtU2k5𼀎oS$:Ta*<6^n*Zc]p/Ǔش6Fz "a-4 M; 86uAxeXx$W7j*9ٶJ1+ݴpϔP~A_}ɨyIL6mɆHv'EK GMQyk] nɟ6v<(zB{?%WŸ"Z{t=Osۭ.ϑADM<tԚ&`ZO[Az%M7o,ٮy5vգaB)29mǀخ, ч*|ӗoC(q\`YYr!xYma;2; }e B)|B J ٌI!18' Xa:x0h>C1c8udk8qjA\.+j*+PoQ1FYSB5H[ *MOݖ~EǮ X.;LqnK݊lUL)a3Ͳ4:i&64Hs{ɕ8|[(jIf |E$MʐjїEnjalI`8O΋ CbZ G{?`M|V,Uv QFDGzٴ6we« em1 7ZHqDZ*밟6T;ngH*"txRfF]TI}av=mzȡ֐xFPt{ =9ۃZ~ &O<,:+8Z.2( LC@+~[ڷXexӤRլ}TIy;B0@F`1 22Y N<b?"+7vvp#)Buko%Hz0P[ ؉y嶕MN^TI.Y>҆1䎚z9sa.1VZ;=֖͕"ĈPf}]zďJu;zN"./;%Y):}$աW xMdMK iS+T:8qϛ/VOǡ{죑\)}ݔR0Q޴sۏ""c> stream x]O10  ]ZUm?eB:gׁm_Xց$i, x> stream x[r}g#ݔw%)?$)%r$NUF-r)hG w)9.=a0@ s1sߗ7g_<8ߞ=˛?\@EgMyݠL.w~qsxA9xtxV{hmz#cn5HaTRhVz0RޔWx^s'->1zV/M#x?.v|1 "Ӿp07+9]>X[v#E| ~$^2pv2j4[{!l48wf#  18 [lڥ{kV|W^GX|>ץS|WvNBL4ߗPK4_m[_Ei>+oK)ƺg_o7_c]uUoK4嗗4_fmi~Y4-ͧy~#;O?c (FPi!ҭN _p/x jV(<]c׳~XiJ>S,+L ^Y^k2W`ij|SMz샅^!J  ,ݍBo't"U.zݠ_}zW |5M |#q V[''Vh&F%c1r&-D}14%7|v/f8e[ޤ훬;6i|;4]3}"Hs_j.]iޖ43Q{ei*w;lܫ4/JYi~[Oل' Ѧ+po3|eǒ;= La`ݷfa >!|'QHIۄp{AU{v˛#rۑ]!Re"7@Ch/(1AiEAuqt6y3gU%CugzU=v$#^1ѩC&}[\C'z4A'"BT`;Z^b:rld5S6&P<;\u0yKL@oE>mB4';ܡ'k)<)9|V6k' <*$b"+DŅeۂ+rI Qɓ%Q\L]coάET,ߥΚ˨hCe?S={!8L]AABeZwrW<|69EƬ!+ְW.ӎ AE T }Y~AKМ_a)$po`@0qyeWôla_.MD>+(¡v9,0r۳|Qg))'c*|x_trHP Q攞[<F ܠɉ!52v3GBmJiN=jS9eWx͕'=cPґFΗI]B ]lWms1iZt=׊eDs 0oGaaaњ{,eƗш.ҰеpcueLEqxY"mWNH?2M6VZ ,$H).p;(Y¿j>i>ee V`V`P{N_Wa&]wϗΎxà{4F2 K\3MlT@亐l\ڥB@jw[<}[СJ)~_ڃE2 CcTSծBj%VWfYO4،;RrURS%2ʩBou/]D^cTIK S"Km-yA\QWjL ep|j2щE.433)FD!T(VX146s4yQxjU͚e %MMzB-=r#-,3+)w$%)_^{4 `Љ&%Q8:ޏkk?VGƓ@~[@wc}J S:}Ü${^5f?Sc uK}šL#@X疊vi cK&>@7 Hbt6k#m$}[{ j /U9#^4!1'D<-xgo^d\h $D4" 7a^G-?`ǒ%syaCٵ 54 u$O1.wkHΘ5o啴v0W8^0Y?;7*zHx/ txpNyU&\ny6mcwZ }ֹP:xEg!0РBӠ`bEG$DAm<_*L5H[Ƃb$_Qk©JuN(Cl2/s15 ?b&0XSroVWZ* .:-I{˓1S,o??#񱗰KؖoZ8ȤFu:HsPqn"KkE9;!;>:JSQ(3x _L$ m/C"Bd BOw~&}9*&\6.veɄi%Lv]X_٧ rw,%50(UE2" AiABLVcwHyڜnWD!/=Dt;PܼiEy;S{`}!Ė0[n|1%{ ᛫0(_<_ Ȏ~.-5=^sd;anP8OBkVO3zS,Ů-Zr~@K1Cą(G?{svNtv,q7xę&8(W9T!PEnT=vwJ'v@%3Hs*(9fBt*ݼjsNkPH,b`<1_Ug#w'T癩hSZt jW2G`f9Kf~E@ou)S!C(^?GRI囷>VZIv_qƤ Fl F}36߼bz@*7p(?8G퉃qsԚ]C(O)=rN;?qgϿl@צjI{9|NiP y;|/b`ev)bq/!jUtq_FA_. =8CQ :Ӌß)endstream endobj 221 0 obj << /Filter /FlateDecode /Length 163 >> stream x]O10 @€XҡUqP(/ СY:ߝ|reA>E0u- -m1,O)x@fw5|VS^[+x$E b'Φ2?M%K17MR{;RB|F8S|endstream endobj 222 0 obj << /Filter /FlateDecode /Length 5151 >> stream x\Ks$7rs7xc*ߴw7lb-15$ ɦjD2Q(9QD|~@t ʋm _;8 )yk;;߳UgFoʿZ qɩjRޟ:CK˓Sd9"\5 ,n? i*h7(eZ ɾN[xАht#(TFۭs9"E!e}|w718蛘h_ :N,$gdl]zB_fTY}QI{6(R\# ,ٱ(\5 ߻,B`g|q]v3~ThiE1 BJ V@&#f=2j_>qEJc\L+c|6YfߙZ.mA@*k:L C;*0EbS |">ƾ0Z߽ƽv^*k~\8IqPRaE*3=T[_@GCQh~+N+l[Yi-c0 4_3ąL$ =$i)\uxQ7ux^46Yk&Ím5c>e?!{zѕek3h@~ [儴QHmF22JL=k 0fKSi?x^hY3%Z <])&"# .y}_(̚ ʚ]KUm;"laAC_1%TYs%Ln\͞6xXx7X9d&A֑ 0R\nr4w5g&eX5\Ú#lz%KZW۪$'59Le7+.(5\ %kDwWldAó@)A[ZE\ZD|4äGf|c+^ǐ 9:~ʠ0դֶAFZ)/![E~m`\2rr!Vj !LNB#xW#HWbEVţwYkbPӣ, | |fp@=}0?Y?ڛ., ]r`A^GWf"AʌY&UX1f6^:Mmc _ R.DNW0DJc #;^BmU Y؝|"WZ7v\D) ֓ c/gR(ʾ.AƜ)C#»k@*DvІ#9Wb 7W9Ai Ri('T&*6*KE +:ME,'9YZMpcI+!{ڿFElewvk0UCca.M7c+!oS=eV[%%ۀ_Ss;:JH+Ks!SNZKLfs˾& {!05@Kb̜U<6 gLYSjk6;xB$ؔ&a^i6_Rjmmc1r1HQfLk,ϷY*:XPSdw0ӽ_rg7E+:ľ`z JONiO's@EP;fy*8VU,a%^DhTW'5B#ewcy (һCE tupiXi4Z*P96"9eך"&$KDX5 %a8Nt~Uֺ)jDŻFLKyB.c|S3?c'I=cq@/dԎU2ZiUiv*VȘy!G{jZlX \pٕfnVҪ\!nZ[7?#{VSH *ėLd&02;V&$*W~e1KXqW.&\ʯFp$/iYAs=ier R\P9 7 N0 IM>:w4)e%;^Ka2PU34,QMм_u+*jTra;w&$[Q ~T k7<׽l|b>wa[*L* ^dՐ:\S,L [+oQ㻶 ۳";j.eK,sS&J]%s %{M igEn`W ׫Wbeq%CjcrѾzb lZdrօQzՄ$X٭^S5#0ǧ9UvcNN%Re, b!HNtѳMƖV2-DCJȍ]C;qE#.c{M@c쯼[P ?ɵ^JaXd h'mHbFzmp^ъkgTt2~x$IrYy\1>tbשX`Q/m]M^tT?'81F,s"j3 -Ӑd|Q`ۉ& d273,Et)T< !C9U,08{xQtAja.,^Va6$)1~@/c}f3i}_BK޹4eelnfܢDHfcm{cE,Z.˝/R46(1Hy(1T1>Gײ+goʦy[zאZҚ v_hcY[gx7er@׿䢬r:6=~2X~n[ }<ʉ޲{5o:{T(5~ Vհ>{DsucD h_:W|k=>5~ksS%::jo[FbMR&x-K-0&R2O„*wh?&ic8"3v4MB,9{?۰穮cWX/͡Tʀ77gYe|KWT// 5-/V=[eG.ZU:d ”Xdq)g/eX !W>ŝ\ƶYvmDmjM W쿑$v-wh(!&[ms]^)?1(}3Ut_cHUnd͋0Qq,h0O*6?WA=Κ.!^3qHp z=O-;wΦFQ{~FJ smѥfr㟘1-Ԡ="VJe_N<]aFC3}kB´A+X`oQߟ/dWc\a%pqM/enrnԥMuyTR2[ɕ0)Obr[mC}o&aw%6d{4.-/|8b 7GǟawfY./O+ЮB.r9.פcyOc:w_DB3: 8ǙLVdM䖺endstream endobj 223 0 obj << /Filter /FlateDecode /Length 163 >> stream x]O10 €XҡUqP(/ СY:ߝ|reA>E0u- -m1,O)x@fw5|Vs^[+x$E b'Φ2?M%K17MR{;RB|GsS~endstream endobj 224 0 obj << /Filter /FlateDecode /Length 4627 >> stream x\r$9}w~&ƅ%, ,"vyhamwx14PzN8Xi)a}/0MϓMeew8TaӴzM,QzC#91_m[jWMZ Ei F'-1i<#bDC\mY0cN/?񂼐}2y*X#Yy JڙNv(Mi>4UN4ރʑa#@9R9THA ^M^K{0ȗ0Fk 짓 b,66ڛ"yhb])*vvbb^5p(؁U@5f5`Uܮ1}N2+yeI,3{dᆹ$RW5-$- 31Xi׋oUj󒈭Xf uQsq東L|-DϴdKKKCVo 2RIQ*Jw0Oʘ)2fDX, W#)Ѵ,L#$67iRoO[67!&rx+;;3{{|5p \h]Ws" K _|MD =$g4G&-m#-ͻӏMCleg ;OA^DJʄޔoӎ@=B³]ͯ7߰NcO tx{6 Cz'Am}Ĺ"a4NEa?NI;eLig{OXh10Z>.Q,Rowl D,JokKn>͈VZra`G_ bs]`p̌i4'lɃyoL`jΗS[P3S6kqϞ=1Au /smr*T>|Bm'TagXA*U^MUq%C0%txڥؤmA4|WO ,ՇҼn>R@Ή]7v}ǁܻA`$/4 @U/Z](jœw2귥ySKmi84{I>m ~$઒ AOv29FJ?'1> Ut[3lX3I)rOl !*D'4$ͮc8):C-<4xu3xg<Z!͔X姥g`\l&"nAZ4BN1s#N. 5fTF`B I>0K+{I|.Y T"T6 C+/ojxޮ&Q 8e6@eWۃs/WM }. ]ݛJ&#OǾ0mstț3Ӌ.N7Mw~>6|5hbf1[>E~ɝ$Ey&J-oF=ȏe `Rd֫+'\,Rj2>o{f` C"r`DeKvn u Qv& )VPi{vUU# E0&mz2ӐY=jP,!bw)6э.7*%IshbcR$n;K{兪zTrGslSip޳!Pn<2(hS(M{i`v51KlC&,8|ZL#'Qoܕf6y5à uj$zfbZ WcUFi>0ؾk6J}iޗU}l墨3djU AcS^ji2Uz\Ukd3y9YU皋-9uNi5uN48Ŵ$~a[tK.'v2U ɭ6JP:.ͮ4CHsD%!ǃKpNisʎ_C~}wG!buʟ#*vO-ٚ f[s˦|ߔ׌yMi>5$@=N2g?KSrntž, v̰1w$ThEI0:y3.mٷۦ6M{44v_:.|;}*:/(m9 5 r/m=3_q"n/"Զ=])q|iv/M߰jNm\ N R^N H3"*p]76¢UZO ~SzaUHEeLSfm>8]ۢ7&9{au s.OJd+^V!x`K'ʙ]ln$}b &HQMx,DTc)\8%Ӗp"f$4~P8ݟJi`PMI&1HӞ+`m@e]]\cw9`ju,h^MYvUurxu`3RYfi9P*\@ +=yh`s)'dqw?e#9SCE{+{Yg .A=SiB  v>pw*(!!Azq| 䁠 "Ѕ8*7 bՑ1]jrCYCOf_"a^YgԱWw;c;#H|ZcL&Nk\#Ùw;,9|x*}_jm)%MRJ ygJw+"7`MDC,!¿a#.$c`mO.#6%z)ɞ&-s޸yƻ=߾e}5—i?sue= u9f3p۹1\5ȶ?~lv^Ds5+EfzOi7R33w{Z:FMd{9h;iz$lmus_q]oGvxy<1=6MZvev;|gn$\&!Vf ,p, r* LC 7-a)P -ʸG0st(.Wn 1> U!|T3dzKn)5g *}|g Ys/&xJβ̣%4+Z;H {|n@ t<_0MK鸫C]H(hy/!~ 22mNz$R~-3UС{K7)ﳺ1]=Ҥ7Km HMWP5nC[k {IהVzeHd\960b-FbVo&`rWOvJxpt8f9Wn2̶w' zxW|]^ p>Og׊cg^^2zq[ vvN&M 7ޑ3g tэ64> stream x]O10  ]ZUm?eB:gׁm_Xց$i, x`K+Sendstream endobj 226 0 obj << /Filter /FlateDecode /Length 4771 >> stream x\r9v+: ܹ*+xލco<^nR%5Evs/Ld!Y$nۡI^uxwݛ;ӟ]F?vwgpN/]8;&R9ޅ3]=;{Q7_ӟ:ޕMiMa4׫Ҽ+C:넕aXǷM߹ɝE{ڜfc|\N\~nV9Jmi6;JSivͯWc[ VͭW8Ҽ9_~-%vJ@"Mi/ͫJS=6x#~>nCLp^㕢W֯>7Z9گP5oUZDZYo]/6BuF{fNm\ "DB{":kS&ί=}54zhw=lb[|n&xغa;lNq4%=wJfa6O_7|$C:\ ^cΤEW@>mz)-dQw^ ^oԬX+͠7 dJ?P|T7y{LןJsW֞Gl51; #59fHcFZ%qL _2HԫY x#eiI{Q$AweQ?t$. LLw{eە;>O`G1x^M3_W>J@V^$6x%JEY.3nO$ܶ7ƭk(zwQcRX]2")eםٓ 4Xh9Ui~>/%<` ˪&dpM*1Y w0Ѿ[:aOK2Buyv0^S0A2$p^Ft~rvl~*M0 *}i_gf=؇fKDO"' PT~glmsV9] ;"MY/"j U$]DSȐGTYA#kZ=n`d6!Dp Zђj!0G3a&Xx[Zqc␑oIPMcA((z`Zb&Y}]X 3` slʘ$fAޟ'`z ׆@elb²Y $>Ir `~a (24ZyHXYTX`(`#+PfɗbSĸkD$ A}iT|y|(M "9?6;|j6ہ}g;GݿI@K8jK1~,Sw=gb 1a8Žf!pк\Yق3\^xW.jC' fHD- S@ bG*3kng}f+obT ;ځ 3}#&bϹOsT~2@/h+:Cys[# F28$3` D:?sT,qdfIAG>g[>E}nj,2 <2cB|I!u =dzS@4^ SDޯ)\v}Vk|zk.!ULMAe:!X.u`ᤙ;_%T&O;DylaA@2+$e&1QV8R*.Kt{_>>R 5̉ C]vױo}bjlɟʧ1t7)CoPr(Tˆށpo!D 4Fx>caxp軆w)detUX(c\s\mI2wo1p!Sh)e/i߾F7h6:MXK::`"Rkd|$:}S, MKb+GT(r01aE_)QZa*=z`tnf9dQLhVˁŒ_4mNSɸyĸ8Vf}/NjtVs>6ԮD7ig!is=ikܶ3ؼ:A(z: A%mT R<[1D@gLmW4%b>>43ldo~(1vBW[=D^szA3C,b0AJ+J 'jNcnͭuXx48dLajŨ %'9ݧPo4@bKӭ>aRX;Ip~xnIm҄$>ɲ&Ғ4-q B Q@++ _"a^j8r"zVDe`{ɒ|d/3p֩f(}%ki ;䋅NŎ2a=y*a:'JSi*@!6"O^U~5UծH@7b7@e$ Q X0 6f*ZNY20(LMâ:XyND~­ _ࣔc EeR J8,gz "Nw>djf9+>f*97 1<xN1n KRGPVI/)XreU9^nTa%0p}ܻI 6NZN5Grr ^lto9 ĵPpd2wI:X>q1M~y-%R; ӉNL2&Y,Pӕ@m7_;,l'ԋS' h&#pQha/mӳZ֡eWBupb'LˬR!k1-MMvqh@*iE$p4tթTB"`(N€qB20%"D>\P5~X~UYao z׸51ˆKK 7ebE;dvUus]T35,2cH1#1\lh'P!%I·P"a4IywBEXN*ŭ|Zd1Uv Whٸ`%Ȑ*\;>c{aI_s.BPjaVxSEk">C҆cǴEr S<@CavC$8N$LWm'!\Fs,.>WI=DegP1Yht\嶿#2S< $vJy /T*v<+pCd9R^g3u4 úZ3/cT'h.yZJbP)?sv*x@T&# 04Cj48x&#"o5r&L:XE}VkUEC ̀%*"$ȀBOSX]$,ŢjE%/e;O5^MD}{9O|801S f|;tQߗ&\[Bp+RE\n]DjN kwu#G+m.ЗIDgƵSkL<ܫ+ j-9H-9Hp%>h}'Z?G)+jq;&/Q 5jyr:VMn26yMurn`#؝T.G0+[s~*P∲ qN!'!@IӐbY Tl{QS0oq&1ӸL֤C2b4 KSV<ȷEMIv5PkdPjMXPW㖉c^Fj_o?JW"[^Mlg!/0I{ ho;N͆|sjjWebTϊƘ(Y˦LfXy-I "j迬אsEw"] :,zWۦW$/@z/3~C@'4(y1ov%H;kir9o~D>ө 0%?32 Cfr/7(xa^yLD_hxT t[=!7}Uv*n"61|GuB#e'3xBh VWM6e["4O<{ LvXUm5=0S@ȣ@lk.vثQ û]n+{I-̈@xJ!aIΊ1F H0`1 eL84- ΔQ(bRE [DЏ*i pr@\>A4L͛L|ӆl֗wo@ ǭ{Mendstream endobj 227 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 P ]ZUm?eB:gׁm_Xց$i, x`HSendstream endobj 228 0 obj << /Filter /FlateDecode /Length 4539 >> stream x\Iw+y=K'xyIėKÈCQ4DRA~vt50HV|PiRWK݉hn^|rqB\xB?ݜ;(xDFO\ ?U?Mv{16_Cjz!ٔۑO/7V6ƸؽF4>hLCV+_]iޗ|;}7߭7#VߟZt ںƄ(!W0ZzVb Oo PhˁNzvw|Vy*J@Qo2hVRRhVrM VQ +0)U EXvs;??4po^f<#quF~/)ؙK2[nd?#vis0کtKȔҪ 1mZZn 4Biary#U47`]dCr#6y;ln,_QpkBvYA,ߠzM_ЬIM0!~a@yk\t8Q Ъ$G]iM h1 ?YIwN"lS,YNtpZk~ bXv2a}@u *O"ۊzuPDGe}D6ut\Tv~F:58쀁LeXשbjY(Xϥe(Z[jFsڃ qTW * Sh.Ho`ZBv0-ޖQ*QI$ dwE.K4.MÖs:¨ 3k6 RB7|[Ҽe+ W/Rcm*{3 a vRDtҹCKY+70iV^(/KW_=C`e=`sM7-Q{sKT.Vʍ3Tej`0T 9 8P1HUe8P/N2a^yIgbPF!/KCR:dwXx;%7ao:}oJ)kga `A]J0P2`_:cY8Xfh6WA$h=&z_@8dC) bKPmOH ͠Cy<c]Z VQ,{w̔vLq7c!gai4=G["yh'`u LRDM=JѝEZhXQ$%jK(<%\/c*C`x9J9X)G%CSR,@`Qaw1ZZ#[YSxA-ǻ"J,^r[ lqZemOGOޡ}tf(Sλx[I-(/uF"+D5K2떘 5]52rB>Y=hgDȋrEdXM9ߔaϲ;zr.7 ^[pߏyʤSqޗ7yv cް%ߌ;Rv%,EU"a_}d1*a gO%mh)Ǟ & 3M#chRAaQ޵Ȩ[EḉИ&t3~jkCB[i@#QԉD7_L%fkQexdQS s<ȹp4f~N ms=-mNym/ 6rh]f yLc[^}+F;S%D]{9 `3#JGrb.XKb$Z!"qwX4te>ǧIV=_I .M\(qץ+MBK)Ҽ-%={+S&ԤGkIqĄ+%03 'cR[<#Ƅֹ Ѝ=4 ڻNf &B͏0K*zQ}$v/$lykem BӐhzjݥ}-CӁ#{ǟoP#3ufC8Y]3Y[ȴ =Ug֓2e)glcoMؓm5GMKP9holXNO F$o}|3d'5M ~t[|da'g7%(&M='?WI iy{&;)%<ē"I@eR6 qrwLή':;ҙEPXatUWs5@&a zE)IP~ʠA|x]ߖ=+%dgӱn?Rj=]r]1vBc(}<儣 .BIgOg U Hڸ$2$-tYWH Ƀ.Cc CzӕjُP=U7dS˭_>B,Z9 m ~9;9',snތd鵰 K,]`jB9]X jT.,&ZMtL&Z ְr|-]#4p"QQm{"w7@h6!p ›[N3||Yt\f]AuK{19G 5 _x5*]ݺ%^d:*r~` n{7`Zuygan$ûEXr u=;g&񇧻[’mnRҰ#\wm @-@Gr$,rF{ma5j75oxa撟Q$A W oqr1ף"Iݔm u#AoGsp'Ep:kR 5_Ƨ uCzo#xFP9^\2FKu68ԃ&"ayr}Vr~X$#P60[U0u?lD;vH$yW읎 SlxdoIEfy׹ f[LUUA>4CMe72Vx~JH$BEÊw&J@@鋿Lendstream endobj 229 0 obj << /Filter /FlateDecode /Length 161 >> stream x]O10 b C+qP(/ СY:ߝ|pFcpƲ- DeQV-Ɠ剋BwOϪ)> stream x\n$}|8AV bHGsTU-il#0 E^~1 6=6>;Gd眯vND^gn"a&ϣ7JhN5g46k!6+NpØ ,gcLaNJ?TO&E>"8Hh„uqUp܀v|M.Ɉmwwsbm@HK~uYX.=ܮ /V CЉ[V O7wYW_YVn) ru[V'΋ܞIayioUT@cD-ly^Nrw #o:3rz^ᾉM`4ߴTo,5?=vF(q7!`Lb/&D~Dj@YWM"cQMTzM* q%G~ 2v\TѺ]/Ak)[-`A9YA^7Iڌ墍fcb9D͊|ScE֪=)y> bTw.> ;g7Q͒ݛ9-6πU8mÀY#MDJUF]*c;[rsd!#m s3D⇃m9!h qmUtBC|"ZbwdGxچNmЃbHb8% #M98*%:I_At>gA)H^WRM܎0]ϊyLe=|m"ftPN3%$@ט#$sP<Px7p՚ɘ.i߈IUV]l#qki8לİ+Ƙ4LNMoLxuI8ΊH *XɌȌńr U -&!@XOS4St~KoZej]xZ_}LUfC%n2hWIHJ)c5#e i۳ʒ{Q*$dD8 4-iђ f`O /q <6srɸ)ibp(9rtژ yآ4 KOBDȈ4KGLg<_-7b )JCSZ톃=%ݝt#Ǩ8 rk.ed1ᤨbgs$wQw̛Uk~S@/!0)~맻B(~@Ҍ2n>evf9uzsLXC@ 2~

wEJ4ͧ :4I}i5~IlzV=Q OaMھc#bKM`:TT̅ o/rUy^4Dq-*d*Zֹ*M6Ҫf@}2_5l]FxB_!1k\.z+-pڿ́ _M(R̴,|]: rsnR|.=qHL)2LZ2"uER6^K!sk*?`Up@?*z 5FpVۦJ4̽PVU0my㶶3N6ZC>cJ錋ZI6דR PAte|jx0#@sATX3&BM*Uʈ1mGF!8D rߝ@Ґ$Ug8)H7Znpb1ζY~ L1mx1rLr!sfL̞mX@> p;_H1o!X0%BN VJʠ0D@ ;G 'YdLTl0ЉX`pܹZKd.~}(+5B(?4;@ Ӯg?!B:tVYTD 3MUl ~21)GQn"rN =3,ԡd| a`w=4ѽ x$^X|ฟV%z-FFu7Ƌj|ՠ&Qlw&v$nEhօkHXU7fbgԹy!N`$%ik),1mY^Hɠ7G5a RE٥ RX Ura:Ĭ2Fq]ҽYS- 9cih;iiA*ÇPX#dPbwuH 'PG4oT*7Qu 8\[Gڇ;U3Q%raF.B@_" g:ڂOcq:[A2JfzC(Q8%CO(slWZä8Q/-!k 17;,Hhq}:| e 0t4"EaTr@Q'p1Jxz{R;ɫmxhcM!LГPUqq0esJ[^$dA »FUBғc_zW=ӓd@%.P$ 35äЮD/p'@Н*2wP-[%~=hޒP\e[2qx/)Kʫ #9o)p 5a9(Yj?o D̘ UD4!R}n+襗<ϫU.Mtu !uXT{ɩ0eNjAs__kم -JHjytӅmO"N9A}l3F0Z05q3W*VKR8%PB;L[%2J>R^ țUO&ܜȣ#ţҽVJC'rA `u:MN!;,{le@QUϣڠnތfgޟ:Q-A(}d{˲,]p$MgٗvnG, ?s&=kOE^DhrcWպkwٕ67PF#խ"ץk>anC ]kڜkMo]Z KƩiyhvp ,XSzL$rc.lD43EIWw֖Mۗ&CpP,O~lJ% Vd.rb[&>P 3;&6Cα4HLM_Cʀ\v=j |T4uzoAz lXar xE.ٴLJ6;>*R0 C #>~ mzu%i:vmEIt)RM<2 ]Fi+̔>[k*WX9R|+#W PW8ŭBP~Ì~֥ 8g]\-LҾWbKjtKiI )$^ 6*>;0]S>6,ڦ/cH3VUuB w&g Z3"EFگoUAr?},R`R2S94)p$-I_KQr|oNA,endstream endobj 231 0 obj << /Filter /FlateDecode /Length 163 >> stream x]O10 PXҡUqP(/ СY:ߝ|reA>E0u- -m1,O)x@fw5|VS^[+x$E b'Φ2?M%K17MR{;RB|ISendstream endobj 232 0 obj << /Filter /FlateDecode /Length 4343 >> stream x\rތPõ/lK%F &% 5vT`wsV=Z3_\߳?}kGx{xsvs tp ~i=(}ɏl8*gOnN~>`.|v9Z?yoJ-ش7:yƮ#U+jl]sruL|f^Y3hmGh2 XK)[ Y0&m.t W>ԜK(n܇Ekn6L4jua?qpˍtVu?k zfVY jhp7^5+ :z<]* [Y<_=Č)}hg~ܓƋ. ]8"#6 gRǰ~Ua29L}FZb>с߹sIDjy]+rkZrAV>>|,͎4Ҽ%?/ٖ撊R[8jߧagN KͻK4&{K{MNVn2!1D7_c){N=q{"h<q,Gc\f! z~* u>I䯏qayU}iޖ&4ߓj}˵BL8)!P;S b4Ҽ#MEjk<^sjVxW :g@vF(3i\=*4CA~jJBH[q'AFpD3a;K)F H$tta ilu`Xi`t3/M-8 6E]O70dQ40 eTe@omSx*k ?!4,ϑ؋k~l(mI0R4Vu/+F;wEK󜄙wl%EkdGN9EJ *9ȚSU?).%lrN^TH6aA澚JJ3Mܷaa rlx$qJf.ЋMwv ogEƐ쑆nvaDN,Xv>rQyz, U:sO{dp0^59Ijܹ/Kkbǘ\?)R{k4πy $AV-L2xr|a7D|x>F'zm x|"5-fA*'b``0ASlbW2`?PHѯV09N+^}i=)J=nNd1v!0yqV72KQ&X@Nٕ&.C"DÅ#hq%"kr ڇԄ]f31)M"2Pzl kG'}Q}3boY 8xpq` 0ب0KBDAm&@aSWG&qM<-9!`l.VZñq1CL:3ttYx/u(̙`2*8+Ro3BF'7 0ĤُU ^FaJ 'lH6nO#*CugxMT1Lb|\o&iUJŬQ[T8gn0P'/vEKgI)Fb~K6 $qڞҏbOCۏGXH67 c#oq#QY!#d}@8cDv4\ U酚uj pp)Lz :69#awFsܫ0 dU6 &( w]( DJ@'hdgMqVtۖMhur{b)K/b"@MrJLOZ0fWb|/!iTBhX\DQ&O#e==e&;řkk0 ^7O4/qȔ}Z8S0oXI;KZaI^*_J=*dcMW| ;1 Uc iۺ,p`vFF_C&(xˆ8~G%O{^}$gwӱyѺ佨VJJ 8Oh*/w0B="gɕ1,ǹsC+qG.hovpg3;m%Q"$}5"b7WBDE!u'$#,p3d O \;MLbRTapeN/E39x٫K cy?ڴ4=//e)Z\-:GIk^&"9ANv"uN*Dڟ>Y"osJN).K2@ϥy ! #jmj(Ϝ ydj0oievku.lږ8 [16ƸsJ\Ɛ98>Ep: Z |.ΝΊ"eQhWI4#Ĉyu4\LK(bQ5W. B#$ٌ*!)>iFu+,ʗm/,l q]:5LgI]x$M$y ڤqw7FM.uEHfG~]5e*_QqCb,w=vA('u[gڒwIpR[{6+MWbNqS(ĥ]ٕ\'a.z@w\Z荱,uKyO_vmuCE)CIHs1EMtjܓK !$9.Q݀;,9%U?UGZy5m>: $~ao]t({C5ܣqB4D^IZr-ri0QCvd 4 *5Pfe7> stream x]O10 @+XҡUqP(/ СY:ߝ|reA>E0u- -m1,O)x@fw5|s^[+x$E b'Φ2?M%K17MR{;RB|CSxendstream endobj 234 0 obj << /Filter /FlateDecode /Length 5226 >> stream x\Ms7ks4#r̬w'cc6C_҈d"%K`~&( dDŽ(d|NAow'/Ɠ?Ǔ^R˫Iq0zNwͿN_y`/K*=m$Da]ըVaN 5}z8Jv|y,Mw{n԰9yOQRM/3D~ кP֠P!{k= p;>6? 5e8=ZAH &QҊ|+h$&>)=% C(+N"uܫqPzsI]Zzm輵P%NW5JZ;ZMzISx:GINFLKwD&׮m\4 Sq]s>,qճu'Ah•%azkh"dI9adܣ C5YySofhnc=ڢZij$0M2ĪQҨIrGv`$cQHy!.X=M0O͛|S#\m=q,(Y3z'AfFIRZ#%gd3 Tl&r6Ŕ$Ǹ&gɋn)MKۙa,}l ^Mg O=9=iY4!F/O&kUp2 "!ڥ$b.=F 2fyٜ ƨdNM#oNNcm9P'uD% 嚝(XDzq>2*Fm XtML1-P/wȷıe:?m//c;"ϫ =idY^PlV%Cy ڼ 7];pۍAk QɳkRrr 'lUIn(V&)u JF]1BGƏ󹹾"NY[<IhV+ ?V+ړ\t~9'TȆAJ4RB_ݣ1c1o흓ty1 Ňi< 59>k6e_i| a|"+ڼbL}ZP)st+F[Z%$"QOԥ< f<"h: %9Jp/C^G 0<߽SpiR n_-qt'̱U3OK{~ucҫ}hóу+/ 0֣N]W)f?noL!I5*=-_hO$/u~;AƄQW5b^柵KKR%$E"Q Kh]=Eث7`4 v{:yB]9"}N5p&焒V+W|#͜vN:qPW \% dJd1 ̥3DM57dCp_,sʆ~Khکm=Wu+P$NVpS $>rUK~Upjͫڍr%Uw]cno&>i|P8=p,|U׵ 6!r $@'ݒ;eL-zDI~O&MP2FJC5¬VA8z #F336]k dpy8{l vA&W=L1_[mF$X ¨o[OCHs$:?yslk诪V?:3!rIIo$S=_iyNL<%⺄6Z$,z̚iۺx]7.nLXYT &P&`b]Mbt3#LŞy}`lyL>7|`?/>K@&3̂&}62zSq:EWn**cl$V@njan\JIĞ|^{ )z XߣÔ@R,(Mt+~K9+ٌ-۔>UibrWv!09\ LH ihЁĦ = ]9?09Hgjb v~_ttWTXAFS-kj<n/ ji(@b=H%>G+衦;N3kIQ\L+L62_PN?ݑDŽKm"3*o0ps `洇!r:.$̋-d!G6q,;Ik#[P}F_Q_ yܔ@nGc?x,pa Gl8oV6H{sskn #Ήz&<{Z9ZxiS=3:OG~p!Mf`YF(jPmQauR Jo 8G\.֢V. <BKV_xZM!\$dRwKCaUc.1iE[A wЛǼIOOe /\m(n64c&1>T?$R>C ˑ:\m>p~S_ހOkB4|v3Lݾe{`)OE7Mink˼U*<84RB/Mn9˸v#~𛚊mqRA/QHH'zq(.Dz)N#ȱibU*;+9 g!u.c JRn`bD?LԝƤcw9,kX-%!$:jo[rd_(0IVZ&p xM]m0.Gѡ#X}JN㩒aqo}="mre5St|wu~]|pÓͬ7G'*ĚBdfʢef.hLw- .ac ̼"iez?4eū`v0Z.fœ1) a(P=CVKFOtyuՔyՊ\.CoSݧeh+!8w\TsiqcMbSKk9=a;b_)5HIoJE ΁߶k<\|ݬy2c1nV>FoN׻{?EYEaBZ{?* u]*[LwD/WOdYC>>BXE=.;XA ԱǯIƕ;\]'kr#{uԮݭWI74JgKT>@?y=k}d Wiͱ5)جWl^= =p̢S8[)s5zjS~.ݑ(j:(J,ռ'] 1MZ1~/# ײC[m/p/{=cE =RtY7l .kZ!ѸrecIOHe+VJpzݻ0eT F2i2 c;ϲҐܻe 84I'$q8xNՐ{u/ηOW8bXGpϞ|[.̷6(.`zkωikGS@iojMd7d\N0|f)[\BK^߾|wF endstream endobj 235 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 @ ]ZUm?eB:gׁm_Xց$i, x`ASuendstream endobj 236 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 366 >> stream x%AKAFgt3,*2f]Ĉ"q\vGCҚ EٔN]๿t/,!{Ap<;>-Cbc^;!ލYb r\霒8 h# P($$B "bI Hc9$"!uMӂe|'Vŧh_Nt(HGR:Cb)VRI2#$p;`dUٵ}#>zv3~zNzU)Vn+/sUii5ڋr>PjJ1h]ei7tTӺVW]UpV'O> stream x\r9r}Wl6͈a]z/k-jjdsEQ#~3TbwSrxCZ(.y9y2Q=<'}u}<=gW}%忮~}I_ <|*=)F=?3xwvyj˿U|7s J.6G!BJ}i+O94>v?9Pet~a 1(!T7sEK|t9 Ӝm^H}m8oBE5u Ih +aܖ&txSWP'sT"Xu &!#-0$WQѬ NB;~z!јD1 i6OPQOMLyPIЬ03F:eybS,8nw[tvz篼3^ϳ(/7c5ه2h\( 4iFyhR?C;NQzR҆^a`=,AKv!`MPI`a3MaQ~d3MvH]q7F=rtžIzZi뤜 fR24X."oe,ûu3>lY*Y p]:2v{nbzb⮺2=b0j*ʣ&٣x%!6yyL{=r)rr;X[hh8p_9BkbhQY|A7B4K%$IePƙ(OjFqIPD+]Q6w4] \1a!]gQ4IRvؗ=l#a*6&!-vɀ2bV_6Ew]^ ǢBo[hM?twz%+}'nЛ JQ8n֡.{D~#W}"b3ev|̎]ܾ>ϨFo!Ao}m2ǸZtq8Cq$nVԄk2/ڸ, .ZfP{'IPMՇCQd%-!G&_]S]bP#DPWv SZDˏ+v̈́ h]^d Js;cKbcXTΆ~ t4cLgu:ŞxnKs= {/_dtȉ?zbF2N<7t;OEKA7οq3n_0/s?H_GWk& ;U#c{LUhCoGBl¬oUh3+r 9yٜ"*36"Ξ,]?,xXŅ$;j.]\:] /O -!1 "A1V,"EnTg)g r&|7. Nk:shr:[?$0C^}LM* p7zضzؖnx8q wv2{yTݘ&lXXS,sjf%[u11_|_ nIP%ԉCЀ0?S98n(Ɗ1"M!pJ" !(3e$N.I{B4OJ9Ʌ^ak`ᵤG52eb~~V !l/S|%+\M)5۫JJF|o3 v_e1\)Az$1+O cDz?@@@9DJJdeJzTKR/ZK%R[4%$~$[Vtmω]1d(۳iwwAS(H s`x߻.Ҥ]B)`.y9D4kf9s!|SsRƫפ[dHxv:d.n-2"AX.,zX~ԉ'1tꐲ1z [ $vdۃsU@PYȅq[㑡) ?yܵ{zsB co;e>sep%'sB։Y#^*;Cy2Ee K a Wr,ôQ1נcQ$^86jjJ52Vw4XX"S~6g񑨘/ez_|B0^\OUpgzdɑcb0薬o4o׋NgkN*;ιJ yMlϻEC/ f})W12kVh0rT=&-E#[/v6X=]K>vW沌V ANZ{cy⤩]CyAp!ejTIRa@}>Z"@UUcWٮۂwT] FR&dA |ѯ[ft N? U;RyXx&Vt<:g *K|*Fjq6\yw$%LS'v_X<t{;.8\>2LE$W >.M/$7(lCO E~-mkERYQ3u;v> LE=Cd ԟ~j@Y BPץY1u]NЩ%V_r+zуWS]2t&)Αn9rݢ~d/)|j9.ȧrٍOve'Tm@a3%!'m̻g!y]4*VܗP} p0j/vy0P*?o]ꫪ$Ӳl'C9߹ T;GDL!({">Xt 㮔)i_z2􋯀/c]b "I,FW'/E.pވCCkcFsSoxaT  Zpث٪9uqKy *>,7k Pƶ>}a}Ŝb lIx#Ǭv$(M`j)KC6O]9ܕt[3b+baGE^~DzDх[.Z=B4ߦ㍵i(. ӱǛ?5\]4{z(1aF r*nR2MwbqV]hI/IWFv'endstream endobj 238 0 obj << /Filter /FlateDecode /Length 161 >> stream x]O10 b C+qP(/ СY:ߝ|pFcpƲ- DeQV-Ɠ剋BwOϪn> stream x\Is3y`_ⓜ8*.0"%6ɑ4t Fr|<-7l Kߜ'{z9a'oNxigg ~<˓*?r`S제9}vs/)^`_{vq%b^e/<|ya}Ohq2k7Rɸ0 LJ98.O;-^\Pp&[,|q?*n zbu?3/W"%N|Zo,3R)XImbp/~9$\:.8/`:N!ߑiK_ O;|w]?_iZ?fqNt2BQҹ p2L4x1EI#%R2m"JDe M.LmIAz0p\IK=;pbqOa/p@-|PLZR >g&gRe\dnR#~C 1m`GAY=<|ܫiےl$4J,>IF*t$MJϔPn$sA2PjLkx/n9-߈A d_eE<|<9ԤS?!7+/G]&p8$:#TmqFdmTiNtHZ,7&KoryWB6d6sMȓLTFq FiYwvAd2kUџ`h55eWrfBg^Qݹ od=b!fQ{YᐇY9ޥ%=5Ox\24h4%uZC0Nc64%lDG |HKL%u\'m8zmEU`( x&񼟋34B/M4A{M0`d30ZFCDAY7 a*kWɾɳqT.mRv7dx8shZC&P>Q! PvUVBN\^3=6G:OPh&w΂ˮe \sEdXJ5&E˱J Z=uVU~lķMhwմ̗=!39P$ƍDy$n!G+zƒ![֙ioi92x8sDV& B# 3dn9I›ڞN<uW 0. '8DN=]|s[m0 0 eBCZ@l8B8J_NDXqAj˧xIVSV&FsRx̯BdЀ2FqFH`} U\j]lha-Rvo[tI\4mQ;uC`5y6_۴3j\i OQܜQQɛeCtVh0石ͣ-jPp"@c"A= Oȫ~-2ZfrJQݻ<9 VM3h( !W(aQ:a<}ZΉn̲084/x5E?/09G:d*a<8h>EĨѷ?K_QJ70N 2M!x`}n`&>au;b'VzD IR&ɿ̐@hS=[ UhH3.]cp: rrV­7 Zh+-;.Bj S7$<1:s$(dL:NzG>0PcLUzvqܸW51\"fW$#{̦1eN9murEieOf7@3x4E،[A#0WjPl9>x۶n$ݔsH\/K 4R!Q>Q b,Y_x @2vE3>4-]x>3ep^j]80!u;E%WyHyA`n+?SNa*Tɭ,,*Ǘ/rCNģWyqɰH:Ɂ1,W`kJcGn  {$:ܜߒ2bp$-}cxA0%&!-Cɾ4( JRf Ǹ% -VՄ>@T<.˝,n`wD>CbZ IO ANc2 P^ȳ8o9Ug_7}Wyxj MB'Bu,1q{mOiE܅,R{,LHh}mg\lɛyCw{x/g\!"rȍ|81eo|#) `P!=t.b:uD1 %ERI'~hyOzHdui:hܚ1r*"#g\Uy8ȋT)33BhƅbabâD"f9Vx봾UA4E2D{R̋4xvU& +L[# @o5M!SvAuLN~Ӏ3G)a m~ : ~`∯p=F|ؐWK֭RdHB'{v.HpOKNHZh ?O ^Z$ՏuN1L lL'X!GCN _/jg &~w "a7Nq6endstream endobj 240 0 obj << /Filter /FlateDecode /Length 160 >> stream x]O10 b C+qP(/ СY:ߝ|pFcpƲ- DeQV-Ɠ剋BwOϪ9VBi )(IEѵtXIg`2i1/%ES&qMsT2Χ_FS}endstream endobj 241 0 obj << /Filter /FlateDecode /Length 5189 >> stream x\r$Gr#pc"Ӆh"ge2pغ l="3ET$ J2:Ȋ%1Mݼݟ qr2d_ R!(O^^?'^"xLp'/o^lgg~ lζ茉]iޔ]jz!f,wyQRoJ__~08TS|=BELhM* =ԩWz2Pb1S9xߞj6-?wB 9ϏmL+zQxCpyT0Ե4xÕmVSM %ٌyAu)78h"o h]as˝),-1EHah,K;l)+w,'wwi62vq͛!hղoNB|*xܸ<Nji`ՓYy&!}H;ˣ]3$VYeXǘ V7#+,qjD 'RքzHxCBhd_F:iݹiRS:Б*OFi],o6w @Oǫn&pZ4A%v/K7Ps:CǩHx2cJ2=Hg)R7Vk6OiH17kg (ژK/gו F8{RpGoDƝ1B{/M h3h6 }n qLPA=sbSZ0 O[FmEYF)]ZUޖghd ڃ .2H3~&bPFe#|vs \dSSR1<Dv& dfqr1)BؘFegtLI ²Iq6Ymk&EFD+:O]n{7[Z2LEJǥٽڞZj6Y+j+*:pЄ'C8x0sׅ>]EGo-2ѯV制ĨUaCiug3Bܕ:4!y$.VIm:5ȫtܳ&6c/ xp5JE"W 8uP.vllg3q2g3dk3ŨcbB] bEQq䲸se,(-awRwbb.33CFy3哶f(O@47$PӚǼj1ɄDnM6ԳCHf&.йI>цw>+ʺ& =PjzW7] |O%EbymwC$~ސ^ץDbw:O$cdt'l;'8`C6c\IRCaV,ֲl.JWyL]+qѤZrx`,K܉ڑ^H21+1'LΌVxGo#.6`kAUopPHDs$~-\s6Mk`pKw6e# mPGu9. y=9ckdMHg~wDgKٚ,8<+f| r$6$L!˳| "J4^`m-շa&Nra_6nE Lf b78`frRXKt4[&\y>tv8y3% er# 3h&/##89Ҧ *v)6Q%[89vuRhE@p𯋪fmm #4k^R dA_ʚE& t;ן-6qUfN ~HSP~8#3cQȊeɋ1x:'hV @89^Iui "iHZL*DZFeܤDo"4Ӻ0j]Qd|Z'7( |d a*qe'+uM _ Zlx䣝)o)F&b eO湸)P{4MR:+tڛB́|? %MO.ʬU6 MIZE!:rDXZPOn>ioLSedMd1Fc'9h).q帋pP{M*/yR |CMK 74ا1o^% KVp 姞#"fi⧙@ݰ޸dls6hXԵ\sWb+)* wm bAlS=J]+ZdQyyOwWߕ 4*lXqɦx:P?ajJĴ.׉gȫ.r^uY{d )s],[ '%YVu(|Sg_,Sk20-gYs& +HO$6"ؐ|&\mĪڡAZ[ץ>m6K܀HUBz2AN}~c9=\ҏ*1[^ABb^A1cT5n7q0&XDVrtrcDZN0BKF&FZO%>1*rܿMePn#E sH.Z,ML3;NkQ'mnOWNΙ巭hϕ߶)ഩcC3:&LQGk 3aȚ`ܖ*ҍfL<>BxJ*Lč,/*FE4{Y[Dpl\I>{}KAPcGЦ ڌ2^<%.y\4He#@])x,VfA.A왴:uE=_f[-](yʁ4T쉖MsKN?4^e14uuIdvlM!D;`E`J 4`t}{rS*gWBERl)Kq"UxU ݟ6u+xewOb? )r IVh+".ąoS+e'舊Gs~ˮl?[?#|M]f<۴t:[:Pm^>>[_2\|F$[J@nu%WH~){Pq=J3 !<&Y]"0^#Gp'JOH*ϧw+#F /G&怴Wrh!,H8/dcIt[r+%bP<~lV^cʘS^mfsWVWmT0e6P9T]%8vë,NvcI&B@EFT`$I0l7D.S\KxSȿAH Nu&ӕ`(zƪ@Yn"]F: >W|OJH*"-u:ZtZ<K7C>( t& +OsuB=οI*H_+=(r.EUʟ[P`F~.A./,C֩wgJhsʝ]GCyݚPڮMn|5`sW3Uj% R3\Y mbLQ~q݄A}z},rf܎'GE?\. WK>WM4W1ȹj[| 'ߜr3͙j@_-`P׹a?bcy!,l gNr-ؗ{pB$ƧQdo:6XY/C>L\ɚk$Jq~>(ǹ{.,Ltm(_Be6Ϧ3ݫLb0=yxOJ4ɛKdPL%*M8Xc310C_۽mSeĚl$G{$dp[Wya <==P)L!e)卯S}r4d,(kbEB!cʊc z̮-1N]5e:xT'SbTiJMyXO@ڹǧOb?.HwD'9PޣfCi,u0c Y]Vي:@{\M_¼ȻU} kO-qc p׿FceI> stream x]O10 @ ]ZUm?eB:gׁm_Xց$i, x`F4S|endstream endobj 243 0 obj << /Filter /FlateDecode /Length 3624 >> stream x[r}g 7ͦ#/yI*GaTeDR+Y.%)i1@cCZRR҃P\O_N7Â|¿vޝ \ή<87/왳~a3ӫ?ӟwօNO~n'o]n]Z| /u+*[XYX[+2iE\F:ˍa{+yw;gIU\I 1ӝSŭv;Ř ǔ' !&; ^:Y溋N,uS H'WI^ wۆ7*.$]l_-l7apF9)\/{ 786*Xq#tg1@W}:ƹsI5V^+T~,p=h,)V"i!tQɨJFrD N$)30.xwFyim??˷A2`4_N!gE2ܖ!AΦ {_P`)vTQ\4Օ!`}S߭iŻẸٍ Φ7uۂeKj6I+5J3`O$B8`K8Xf#碀 !p# 7ػs"Vw11&o+ɭ.Mycu{FHA-A*uWKL;7J, o]^5?ۖN֔h;Q0@4Tp /čGCj h 5gl_-W޺"֌L;hQau B0'7((h =`ɹq!OH8 C1 %Z >m(>ԁÖӯ̲ZQm2!61~B OvBrV!ߨi&Ut`ti0C4M2ѹsNRS o+"Ќяyuw.hEr.ptSĥmzc *ūȍg"c2sF$S7cl Â5Sd <rzvthE}m8Ye)cV@v=%!: }jN5!w/á)&.6|/&)-ҮX.QE28#d#lx0As Vːx%y RkrsQm$CbL5a[U/ݴ=H1GԼ TKAJaDV,హlq -*ؘv[d =(3H3Dp&ɊUPtpKP"^7(pwmt}A XCSS%mM4"%n׸gcl"<(M QBBx%UAYX^0RZUZ){сC@p@~o} R MW1ؙOѾVj$&!%OlWX̥i/Rlz mͧǚ,` U}(zBFU~8Dfʄv('H8ɱPKFZrWCM2<+ms %Օt.]b1(NwL 9KC4x"N_J=)jC/Xva{&$=nx"~#0t8 .pT)EaS$ң։sC_%-m*:`k\OLs)j> #/&JXKt;C|- lFE gզ_ZӰWwQFHc[7E* 3FNJ* UT[H3'%n᲎+]M^!Fp@pW˒]ȷ%7ai$IB f8A6-ခɤ(xfA"U14!%{qr& ')X+mJCq.עߙ^h/ِ+Z>/\kƂţ`祓K+ H&g*g^2<q>pE ^ZahUb:\!oL&PrcPV ʤ80PBB$ ^ ]6w|\xjُhث>q(ouDu,Eڐəeq3khH 䨹` ljc:^.=%0ey?:o,N q G0ax}KQ5dc({A(hOIK.Qhk1w !Q7A$*_)%2y]d2wr@;@Xb Hub !:u:ȌF($dJH`Cx'EϤ9xV$FR1> + f4#pr wP}L'o Ol(]zX`3_eҖ [ m+}"X &XTLʠsvdpeؼ|ASj&ՊXT^T*tDgOUKgʓ6hQNhwl]Xg$RU=L{yHY8RGЛuUKNN8ٻ|Qn+eNŎrOe[oem8i)g:4*Ow^cɘcHggduME80hUtDvzz&2Joe@xrj応Moia뾅3Sߤfy[B4v3T-/S@r_斺ROocKT)keQǎjKZ1mPm}9+#8;O;X|'kjVY u,4pc{W Z!7&O^TRirgrF;%']h]coP$h8xJZ{ppjuVYzjBe%g\#`+ivpD8Wendstream endobj 244 0 obj << /Filter /FlateDecode /Length 163 >> stream x]O10 ZXҡUqP(/ СY:ߝ|reA>E0u- -m1,O)x@fw5|VS^[+x$E b'Φ2?M%K17MR{;RB|F7S|endstream endobj 245 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 368 >> stream xeCMR8'q-   ZWTmqCopyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMR8.CMR8Computer Modern2vt`‹ ' <02ZYΤ<7#B? rGlwYx?{FvCoa  7 כ endstream endobj 246 0 obj << /Filter /FlateDecode /Length 3090 >> stream x[ndF~,8c@Y4ҐLQ [uNtKD /Lt>9Vͱc:z?ћ#<: G(<>yyğc7"xߘONh?C_VkQB^c'ۦ:Fmh%_18ZkMt'1]m:9H%Oo44~WRhɀBxW= 0y"(|JkHKvwWi a=oT2iy6thRm24.-YFZ&?hpK&!k݊Ҵ4eK`&%E6OOާ)豤I ٯu_-ļBE&IPPAhVbdޮNd8*-9u .5-TFyF#(MwSGH{dfO:Zk۵f8ez'x;{'fN:KyidpMN-5Dڏ=ZN6v7ׄL'RV9BX3 */ o[7G {~AfZ!_$ww?H<+YU%Wd]BPo\7 c̓Q4M]f$1}W) )}Ni} ƒA1jv FNjWUcq %Us1BC!!p-TIxD\ r$6dxJy6Ba\r.Ns[gɨT愇 1 N+O. 7%.׎?c = &XFv|9DUh>ZşP!*9ތҠ?"2|rl7㓬*(N0mSe8bX,V~Z.ulX\|Bc YjCʉ, }C#J@PYoXzy*rjqp᫺ufhlk>fN/x/F E{VnO(?hns"ۂ}0H! =S[qcCFk=F(3ٜ*po"?pi"*\5qf8iͯ+6,fy`$VJZP#́xNiqx8|_ߺZMR@'};&HZAXt MG;(WAQ!OrRh2 w{DdѾ=*z:5NT3AsAk=8(]΁<@/IM}`H|cO zE7y47C h'ϹF[]9/歀vc'8rǂDŽ~n(f5ʴgЧƢuDALN|j2݃j*B:٥q #B>ZTpr3RK-VBo */t/9uwQ/u2HampU?xZVOUEJC[YQ tY!rߋV?dYmRҎiLwcNTRBgendstream endobj 247 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 TXЪj8(Nߗ,N>~l#GpƲ5 HeQV-ƃ剳B7OfRUiZB 'mQt1 l.kSIT @s$Lg)CSxendstream endobj 248 0 obj << /Filter /FlateDecode /Length 2982 >> stream x[Ko ss8f< KC[G^XencwS0tP&U_KؖX~_]v{`/ $X\-5u \- WQdHv7@s3>^':cgN `ýo^59qG2^KX`DC~8fFBrVޒ t v?Iǯ .94*~ZUKؘ$Ue&ҡ}KF%Pj4}LqYqrt.ئMYk M- RD_w?8Uo I-|>@Ơmn3 -A ̜J9^I^H]y|XOb5.E5ə|yoQM!Fس!*JTm`:8OiQʞƒ@v~ k-|ZeŐ6 $Z߁[b'QCĄњAao2lf1ZY@0B 01mmOCXa±ʪWld.*U(eǜZ0x9P{.o %2sZ3ߌV/hQj'^CQeou!u( GԊ4?rH@7;]񴱪|L)GNz=dUn-iiv!@/ޫNKNKV@ptRJga nk7o5`}7IqjLg1%-odU"qb7oz˼,{TȾ6=99KX-ݔ(wH`X ?@ X<,1O|ynyH8?:WDV\ }V;) ꜟD^*pmTr1@k|Ȇk4.s2 Y7zȊR?B B RNapj_Is%dB<1⟉ */ܺŀ'Lr_@ 2>1G-Z&ڢ}+hՌKX 9@I޷%Y1+HP[Y:K'CTu  2r|:R1BG;l `ZW^*d% "j8+cLbD~Ͼ. .l[A/S83@dt6trl7Mk#dsDrb]CeI=geӗr`V+Cx BA+>SbbrPlMÖ䯠~_NbNp:DigUҁ|x#:m%\Ld]8}%*y#n6D3UFZ tɄɼ9!UԋU{o>/_tk(8Ti\m@2;&8Z2jT!2x'l %p=dqfZbIޜ-va=]wu𗒫܂84,. ?ny.rBw 62ڭՁDޜL Tfy m Aв0e1h(+/#V9zg؊k:6NɹTh?G_ԄzЙy|p%vAvPimRudO %,Lm~RC\hRh>N+q\1eg>eҟf'Q 4`oݵl[SCZ7)sc@P>{DU5>&~WIkf#ؠ0D<_k3"n)mPeOldy F>x4SӞz⋃$c(.lYy$e{S݇ax_`t>?-=Gj fj%cnI0GsOQ"|yw4zendstream endobj 249 0 obj << /Filter /FlateDecode /Length 161 >> stream x]O10 @ ]ZUm?eB:gׁm_Xց$i, x> stream x[r3a/ǙװǼ9|hDdS"2B'tPGQK˗/Jن'9/|wwgx K6y~~,[asF9s~qsou!B.53]bŘ J_' okx-BZ{o5 ֽ_} wn>y2-^a45 4n2{ܘnf\5)%EW愕> m?EkCcݥ W턓""3;TAVka6nuV8&avu'şX^ Q1o` xƸB=#z^}ghHڔONurI48sȾz{<]},Wul ]2w ǐP^j@p1˜Lb^E0;% ̋-00+]J(O2-W1b$x|pDzIaxs -0Ǹ6BܽVl%6,Pō5ok`yܹbz(X0/ɒP[Fůǚ! s;֥{hûގ5 Q>\⻷K wb\h$O׌m)/qY}D}Yt|ǭS iWBE2H܈c$ў=XzL{qC#d'<ӂ-l4\&$`&XP)/,0EC ᕀ9Gr4ŮU(X+*H 2!KIH&ığ& K܁cp/@k^]:*4L~=i*Ic XId~iyHj0MU("x9b>Q!b"Hi\aGOȍ a0QN덟VT3Cԭ_8ȉH;BpFF ga}M=N Q_cb4 c/cQyYN;"_w?,=D PU/ΎAq))̓ *P6FΥ b@>K<[(ǡJ3aBW# j _g,N٩Ǐ!/݀&8NRX0$=`zEXopFJcH$Pk=!jC[@!PՄ2vQ<8 g }nn aI P6@,&<נ~&<1CS0#SS$׸,i\nK1W3Y)#Ōg,L83fN|٨hPw͌mZuΏ6̴*IA44 c+g RitL&@3\G)`D!`NkPpy(#fCƌfi@aq-4%oU#X`W)^G*$F2ΒQ`c Kãuȍ~f.Ny/fPXlk).QIw[QClI#I:rc=J(B荸aK:`m曘nôKM=WV;]ftvEhH:t7:+iǰKQ _s8g'߃pOMRQ)a|(qq? u-)Ş|< xj Ut[t˴J8*MSrB눼DRD5ξ5u Λ=h<㛀:R>n2?ǫN:#?^ǛxWx_Vy.l4Ԩ㒨^@Y(̢0OM=d[$;CM D^4%HOC.6U:w?7h55pp*Xpcʴ lnWOiV8WNN(^@_YMɤpx-F LGP4@CrQ>ڡso>pᴴ Mѩp#3G6r#@#Sv>%Ցq}AI264NƊ!daR({7UI!A^v6AьTUJơIk*}B&$|#-b,7RnTQPс ȡ BɌPp:B5Ș[d9! ӄ.ZZo is5oI *"bI=nPX榍ݢ;akEp0UK,;JEϰ~Rh*}O'؅89*/k_Lj"bY7^yLN}>TPSV|oUfWi'2K0rqzCiiŴOO7J>pḃN,_SJ*la,o ;Q΢6&#۠2׿* dIrgr,eridQC&4$0Z@ fj.94GWK-t2pL[m85xj{N2,7ntOCa:%8cGvǛU;oүp $ ܾ "&[cN:r[VA}u}|O {z)߹ (JH3@ ۉ-ix<~\S_qO}P}rU69K$I>7YF=ƞ61FYy#ƒ˪5pI|`ݴcBK\Q_UWM8mVڣ"in~9 C?Oʁ>زeM)}yQ"{L87|ݾ %Qq<.~Z> stream x]O10 *XЪj8(Nߗ,N>~l#GpƲ5 HeQV-ƃ剳B7OfϪUiZB 'mQt1 l.kSIT @s$Lg)HSendstream endobj 252 0 obj << /Filter /FlateDecode /Length 4904 >> stream x\n$9v}/G2ZiyhqgF[RKU%پd#TU5z+.._F Wݽwݯd9;S G(<:|_G^oD1޽Fw|,6*8cpq|"6F0T!8Al#5E6B0 c3jDk "u[zBIep#7fC pqx8>Q~cxKd p_jp5,!apaYďNrJbmm-_>a{bD6a5X:l?{B5^!`m޷2 qHK&-$h?wd6p=kDLqZ/Yd3&'m1_ 3B4.lhLPxCA&`&j%+\e_.,S嗙/iHϋ%I!1OTFT _gyϏm& ZҶ.%,8M G}WΒ:4vGϽ$BWҜ'+VN3ҟ{l&P1m"o\f|E2M/*kG6\Q?Oğ~]ďb$/*)A.:bD RPB*c]u^&ƙt68%TZK>ܱ<Djhfͫl7UTxo?$dJV_e<(~2;ˎDo^+ӏX;+TrY4嬩|#D6J6#\U$͈0óFN ҙ֦feUtUD=73;lz#:D_e}PJ9d:*jq~+ Sހ zc>  Jn\tr^VTXm\"'=tkzAX,5½pg jB{`1f"("6ck^Gaz7OZ+οt;%I$i:~Ŕn*(V b5 ϱp&L>F^ɼT3plfm4[ZbˍѪ9@ U?Mt TTiiVP5*P^0Lj1hs"֋}uOC= VXtDlBǨS;)|r^lw'0PqA )a"%hT6WWG'dZ{w yd~cv٭6h)uhreFz>L~ xζ`Y~Ret|̶(3 #rzI e3\9 EgP޴:Ixtw?@' 'ՈS &-~=6+!K=ׂdhҴTWTogxo .{q+ 9 C̪ĩF |V,~H, -N`A{]cQ\YSIdV_S~y$֐u ^ۤ !9;Mx cmڼMmw;cw\#YrRNĐz Ï## 'C6+#f j|S+~(Ys`<ru€ۼEl>)}Vz_YHў%Af캍4_\$qhmyҐ{m2QpJOg.$z5%L:K,X%w$~r>0v_S|` թ¡RS0Fl"i,Ǧu%Xy܇~ٰ:~ hlco1=.k*Nͬ'tG=J맰0 xVr(I0EkP|dwL3> YoI#|~hB4@</*bJ+ 9IAcXb(jx %0NZGfh"pnϦR+B*{bתHdd6\\OlD|:n|Dam}W"/ڑA@doXN1mi>{*l4@󺳋eb Y)EirHHHV΢V"iUt3mBYRW駽sg- ]$fK NEÉ]M6d ^Ι$dl,Cf|!ꌝ'x^/ǺZ#?=׋zi+šN6؀<ar#9`5{#S~C̝ES6䞄s$'JEjB;o( đnkCm4>oۑ_^W84}X6qhmT45`_bSi6EÏ|%%$5:7рY>JX3%Y,.}HWJ~$2WUl2ݐj򓿻h]B Fb(}j6sm&>ڕ>bd]t|PUE6! h$Or :Ӊ\#~gtQZH.XC6~Y6akb|y{{548).eԄ‹Oa0m)rމh!'//q(d#g /7 p$ c5vӈ{`ʉ l@K4Bӌ\E t.BE9;Ob{_j ^jCΐQJ=SB Oi.C)  x"Y)HET~tpcEČkiOl-sz:OgCl}}p ^{RK+? 8ע+2|(0oh]04 N3Ul3ߦQ#?6)Q Pa rei%0v L>T켼Pp~0煕*)ڜM? ^$=n4Ģ nx> =VYCz&CwʷyȊh-\([bLM!SBb WUMiI$)l I!If& LVC s:qkKjCMU' 9<#to/@^.e*1һ>/oҋ߃5O1%ӿ[Sj XS38>.)=$BSv`8\ (ƪYp=K{=W;ߺ9""IH6X# wsTMm;"&Ry. WS~uڣ*1ݺk%?1*wM~w·4TPȁ`x[YhxClc QiMM0\ j^wNlcUsbK8qxK2 (Mv8&yN0]vTbU\-;o׽֭Uth)H)?Bۇ)ʃwyݛjVBxքZT,trY(\C~a`.8L"W߁k {т3oP sHLYɱ6?6?MڼM(O]$Q݂˚{~Ay_"D6hmٚXOr$&rdO[^e~kJCghɵM9xHi x{>x],ڤn 50c-h.Io j;Dc Ok)km &=VRW.>*6B-8w/BGKl‰.zfoi `. _,=t=wgНݧ;W$ T&yKglx)w6UjOЫ-Q}N f%os׉ɩsn, ]EVDԦ'1,S012ZS.|~- rk" |X*ע/ݗ*n `jZZ} ~MW~]qOa2jt+J䛋ڹ>ٓ+v|~ Ocpze .b`L=j l4 k3DF[ńKp bQl.Oy1\<w?'$4+b~EI * VSF^ [S-{1_(z[˵{za^$; 3]b SejbK_ DU*/RoS"л!; $5Y黿ҿMMendstream endobj 253 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10  ]ZUm?eB:gׁm_Xց$i, x`F;S|endstream endobj 254 0 obj << /Filter /FlateDecode /Length 5337 >> stream x\َ}# tp ma!{ڤnUeR[gϽ$#xd"m vV]= ~x/tWŻ2*spW4~݋rzޅѻË_o bkn^zM 1a4?>6a4oK4ޯտǑ84]o jjBzMhoFqAunǪSڭ!x?ؠ5g4z̬c{1Y4?Wb/Oذyf9~\ohN*4 +X~`FΩ#=SwQ(!{ /ejKs{jJфIXs/o 6K!#< У_ӯFtvdOev{clVk!ii[>x ("xs#B(9BJW q_L*=>JJS`hL(o0WkO+qm-J-+Hk+ 2Z@hMi_oץ=߼}a$o4] #)ί,DǛY\@sH2󞷂z1OqhM7XoŘWvwK:8VꁣM׻{`B4!qLJw\i2Ić(Ii#>YR_}4sgݜ$rlڐJ+oe3"E+qO}"cڣ'$ 閿QA?)˕̧Wf68C ^h2w9Cݫf_$H+F/@JbM6j0(P%)33Q}N: hS^Z%%`Y6[r} ܜ){e|] hG;}x6H-qB[D+K4n&}I. =Ȑ5V,l`^/S ^ X Tf{vSvNZFe-~.$гwT*Y+f | },JxSZJ2)~Kfwwܛ葐bi?G an>37{K̠IiK8vݑ9 POݦ^tjԺ w7]Y?9+x BnrIHs``x R,ВC1h+`zVw4\w oj@{ wBlwi)"'I6CM`|Ȁ}}*n S~ r;˔A*jo 6I/5kh¤KX}@|홁sh)⨗2 zGhɸ N=OowT$^"1L. '(?0 vEA|,^&ja ;ZC&:Yu `!ѣZZꃍl2&/FMQ>}U~(Ua3H^Q~cJO O)Ԡի5;I2$b4=K53,;7apv1'_@jG꧆pg^֑m s(܈#t3Ǫ?ιOG;qB GcklP`'yؘ^A~')h o_YjTXNm~}}Zuo߶+0A Pv'8t^{6? w@NL%wq 4#Fo+z0I2J+ڨK#gZ^|k_hdU^]LH L^>~ '>͡:[ j?~U' 3uN}lc\d6\QPboMOh|Xߓ_P # K_"Zgfs 4Z)0NqGbI=~ao+MŃ `~NxXՌ|0#3JET]DaF}sA̚P{\!h-: gy(ץ{1Z|erAl>ml&/lOX5zlcֲdddY6];,1- ` *}Ks5WZ 5Og8|"50:v 8W!{ ݵN*X(Oqh$l ڙ}F}|,"95N>AXz ɩXUhRK3(b2ῸOKr*th(zǮBg8Ye;lṼecܙPu~y]JE澞B 2(Ī1SqHv.j:9VBKAJףԼ| 0b%J2ϟ"R#cHo9Xرif#4!+7laIͼ71}X%N \B)UlלU0J=@VT z뫢9 :ɴ9&RSs@!⸳ T@UۓUz +K.FV_Ȏ_FZcw 9rMZ:t8c|`1OUKL'~*MdRᗟcmWjj(q*djBd{Sv9_7NեUqe7g8EkRK68H)p̭%3ޘJR\q ?IH3R}N\ f2-|FL~(’#RlV$tDX/d*8Ui*RȚXOKMhy1Y>j3V]^uR>`aW0R2`ue [F6%՟#)S}P7Gz߆J>IN|ctO )@`5=e^B6\dÕϷ.Ӽ/qg3(vY"L2װf]?fqY<#_xKg<CΒoxOh;<h|Bש&`ֵC] 6 \DžXٓd}V!(uqIĊ-/Bq:^{\UVR BMO*U0^v=Ț6LLb)XH>y60$!6!QF1[\RldR/QtHA~*:,,hŅ~Vg5oPZ &J3'7[,쓃#ub n6cWC .'&fȲ)dF% P= BzMi,?bsY0{Dc=8.C?+ѽaKibD8 (Js},MX(L,\Ȟg 7z/0&uv_ ɮCu<&Wr0> jΑN'd@iE?C2Ě"\TObM9 90h )L 5⫫d{䩘<rRvJ@i|@7^q9Q@)JU}fN!)hJJ 9 %V k.(1zHb9shm+h+Gs3ߗwU|yݯVd|&_0Pf4^ 5L5, 1>`1<~~&kP=ELmķhYayDMMqn̒ oo94H5v&˱{T+5nhLk6*N-Q UBXI61S5YsGxbkÙnuI{!tk&Ü $X}(J?ا&ݦDag/cסBL8: &cb^#әGc89;.Ib2uLH2mW,0․ J?3| /G.;l7 ,A2s!&-X潽ǛGz`Fj"#'忩R"1 ښ51(_^> stream x]O10 *XЪj8(Nߗ,N>~l#GpƲ5 HeQV-ƃ剳B7OfRUiZB 'mQt1 l.kSIT @s$Lg)GrS~endstream endobj 256 0 obj << /Filter /FlateDecode /Length 5598 >> stream x\r}WL7;bX[ewc:C[PlHJP4MZޘU* dzqg#տ~ζwƳ_dzg  .^[řS]8 ۳V;a;Ϸ]y5)X ?acX] oo+m}n,qC0>>.G!>piNiiѓx r*JgFެ~-r>,Ũ,Ÿ7`CRX钑DtENX}`na鴠unin+y)j{ѪUYijK̓Qד|d9G)dUasx&)g+{s;t nz("Y Qx.]% JT~Yy!]\in w'|j!uv b}m>J hp܋S*0Y7E^Rd#zNUԽQE/Ё!.b&Ae*@"5j;{ԷiN=\bݭ'sa 6.oy5ξbSo<1ul$(>9k&E/] f.c 1,3chϻ AVC*e/ /?7]\gx A? M~Sb?Ra#kxV4ސy#p,H(EOeQbΙ҅bt` (PyБt] Ms,bd)L'MZI;7c| Fz_)& ?_fF, N:Өu61JMe26i(lfӀ~fF'2VIj@dV,x9p@wY憤weS=.xv mK鈵1c&F@+/ҺyKoze%{w;d_ BAYwi8ZVGn``qY4זv6m9 ,=؋vsn7H5p'6iQ?4,ʬU)~ʄ;wBIF)|1Ͱyoؘ:LMXYJ1h0*k >f#Ft`2swmXqBe!mh-BI!`q /Xs}UGNEoמWa:i`$i:`1W9 Wn4sVu!#zS@D 䐘*j8;!RN 5@u;O$_Ėz1o8oJ-Nuԍ;-r=}؝g(LX{y̦K^ YObC|5q,2xX[pr0XP#zػZu4) ZʺbJl7֭]푁[! 0y",\Om$*yPNxҊ^)!w̕$47 m~V^.%_YP6$v gu됪6HUj dB&*&FUC>qAt@:HnӈuWX28# y5I쟚jBNUex[~;\hyq'vJcOGJVҠWm0,a7%: k97ʍ"9 TY :ɦ'sH=c(~l~v<]t~?kl4nϫb홣~FbN**pˮn yNj7|rZb{ZIHY+tBwӬ[ᜌG<&sUjx}-(+ M yzƸI*цɃ9'SiwۼHzWc.Fm4nү6?|BJJǝwۼBƾkdQX1B>u?Xn">{]oެ~\Z~WY!k1(Bm.hn-hq爐Y*fhbXq/ZuJhA\[ztW΁2K!PpꙎWy1ypcG\9CѾPuӯ?yNk%Jh_=E8j};Iߎk$pAm92xWLʶG  }a#''v% .m# h"z K!'_]^W. 2ƪXrTJ{bdTmr,?"UwI4vMgKBT|eWČ%5Pt*c3;<$k*SbcjUFcB`z!D`OPy2(eoZW"\I;}΅*Eǘ`ZWӫHp.E.dpnm}&kO? 2blr+Kٳ#-T!~ ;+[ < rp$nrه~>0h!yLuRV èp-X,:\V)RX)r 屽7XsO1|i㉚6W)ȨMBBSӫsХ m`c<^0 lߥW^tK]'B7:thl~:^BѮ-giJyU|.t)D_7we >{A?#Y˄$&mٳ8e7ln3A:x.)vKA< .GxuZ=/ʜ8t8-5d9{$gK;O?ަȼ{Q*tz!_|Y=9|.SQ4.$4* uu_ l>r*/ZߴwyX&!9RA7 ]:'}`bR,pX| %I򉥵u*Fͺ3uM2`s e4>cL?|hw F41^; vSF21QH3zfMԿ5ems:?rł ~Z,fMh!-WZr7Ojq{¶C_?t}]&|׽_oЩ]Z%2d(w+ծ-BU Wt{F)R7pFg!c:Fޛt~OIjbRoV]AJE\'e,c2t{?O!=ԞKم%=MպnI bOnUM.d:|3V[BΠ{!^`26FexK.d]n2}r6ԁ˷/i+ =T}WsKyB0W䠓!U_>;lZTFv0y| *&&M޷"JdOCCi]x$PNA\žAbGIuV; zm9Ni%u9u/>rcF b<;/Z|[!fnJȰ~-P a "<)LxC)iD}tOgbC~9hlb6~۝rwlh#h=իUŞ u^~Z& Pf xJ-S1|L%٫Mq}⇞s kqq~1쵅Op-Q$LVH|sMendstream endobj 257 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 *XЪj8(Nߗ,N>~l#GpƲ5 HeQV-ƃ剳B7OfϪUiZB 'mQt1 l.kSIT @s$Lg)GuS~endstream endobj 258 0 obj << /Filter /FlateDecode /Length 5830 >> stream x]Ko$GrG~z!eX;^kr8C)>?UYMΌ0tPYOԠO3!\޿P'/~~'^_+xe*Wo^7Iq)ɫZ xAQG/:kY>J:ջV6T >59suZ]6gV~JW5t}osyu.a=#JEVoK/&ea}#Q)w( D N"Yͻn6kMm6@ 8)(I1!s^R$O\*Ϛ,>3챉'xu:XM'rl\ eoPv*'WuN+r2ΐ8lr٤4|l NqIJgwBv8woRqovʭ.IvHTTLsJH&$k2QotpРa}CZOf"]}дe@6{i|1>lG]߳DkʯS|Pd lh9 7' sqT)5Zܔ<R\7=9ibV9|Mpce0o^:!-[.#oUoo7gLM(S mPζmڅRhT l=w`]ܚOw<;_tj!jlLk z Aʂ8꼹;ޢٸ ,\Ѩ|@!-PQlPx>W<-!AO뾼f W2r \ς1Sw_WQ@EQk F K|`Ћۂ)`0``=.Txl^e €dt~\' EGڐ3*_>ΦG =N)wwlޞl詿swO˶7%y k!X~ww؝e¯<;JZ,"5FdY4 h2aXM!33#Hk!,!^9cW'tmHMY~yԏI18뤀qNa @X\?*+~Z?c*ۛk̗xpeE4X%#o4(r gG̙f iP{_eA%,[HaЗ?V*QQW3m[߈G-&n(keNqxH~p1a/H q_;Y.=}:M(J6zH5jsMa{ f}#{hj{UyfWuHJ㸸H손d[`"`P 6b4ON VyWMeKA@Hi޷U M薚wɖ7P9(8 m7|niQO383Ãh!|l wiT (Co[Bl.y!_p)\@f3sW 9\2h9'9qV>j\=Ԃ, xi}Fb8 @HD?D&b> bZ6fe,E6O5 (L5 /R"с. T3;ݹ ւh^N.grQ TV'Q9GhuAp\?Yr>+z!I5V # @h4@aǽG"q ԃzA%+!M~[7e6k V<#W"~Zm)!k"ɢ)cw0V~p! &-lokUmP^= E wDE'1UDžUy-+#t9GSpAE,g큳˂Md0(@XL"Ϥ 5c8d+.>$reišoY;y 7i>ԠXW4;"+Q)^w_~'q׵X'H`լ/G#&/7o0f`$q *[TC<5'`ɼF9vf*UV$Ϣ)(bʩ ڒYfc LlKpځ'\U#aRtU^^ϛ|(!$bQEb%X&Vd`Zjx$E"T~\ujx9Hʱƫr;"NJcF/=RiB e嘶af4'/y14o*l? }1 i'&3XQɪwS_GbP9@EOY,uMk\=*Ojkև2nj` 츔1߂$bl[:GAݕiZXZ*,T&^uI,d tfeRF, +h.;Jf`FvZR$8L) [x_8a;&Ro.a?^Jno'i-dbp4GOn/`F P0M Zy"xfϵsVF.]1ivyL֟*v*%b x/> fNv </빎s M'BbJX̴Y ]C¾KteXLr bm 㶦lNC`V:v{h9lBYك-&)/yHt%hStE-0!IYvLEiA?} pԡwp9cP"4R`M u7ͯ aoͿ*yp=9i{u{Tbh4MJ tj r 3lu urܻ%Gw#m P"-:1͍D+%-V ZKYl( ?X̻6P/ h1֣9":S8zIt L3P{I\GT щb-M㍚sC5y kwX|?SN[Զ(B0^ 5Cu`J' ǀBnjn UBC *ϛ6^ff'XW5L*`Io)[O #wR$}W*o09,-_3b~E`)+yYN߰ӱuR˚NފJSC'ꧻ%&-լɤncvKt5V\reDyb@G {mY(GIOM%e 7Y ޖˣ1|NʈY+Ae;C,K;;. (cX zR{D;}W"mDToA}.lmTcٛCb";L+wˊF{Sޟ+3ݰKB1kӅKwAn۳=%(pO߮0IXU s(jky4U.9e)"X;sCa miأƞ#l)i?|)8yƾ}5iJv<'"; 7IivI PsuBTdL 1HU:/̒K(vff^@(?Ѫ;;#@bw}̱Aȗ9fqktU nV/hKH64^Vy%7$˶M&|҄1z`e:,"DʂeW.}ګtAuϫ-ՂR6/͡kڕqŎx> s-)I(J:\$4XY:: }bŒ7!KɊHgwB]o|^\yjrSiFDK36PveO>a)/7ʊGrL'㨙PRgID]1͕["iG4 o[8._eg1i}2Cٳ+b`{s4wK"BXg_NTt芴K ,7cо}ſ? Ʒbendstream endobj 259 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 P ]ZUm?eB:gׁm_Xց$i, x`INSendstream endobj 260 0 obj << /Filter /FlateDecode /Length 5811 >> stream x\I7vs#UbFzzaCIIAYH-߽ؽH~w7My~qE)rb 줜|b˿_T?`vyWo'om~.02$OosQlb\|ްzuzZwNk osdMeHfؗcw^2î j\!k e,If@`~X31 5yyDjyr>>sO_27$6=.UxXux:>!l'q±udʠYnk[诬p,NOUi9O (S2 [0E) T6L00+@=)Ċq T U(n =Vp |)FZzT ?:>o{WI}C o[gyRd,)$B^)>ւ~-Щ}wH~/Oe/exY?@LT=R9k Mk ĸ|8C㳹<$|,$'QTfAPE0 2OH0uVd&:b.e"qa`Ǡ``-&t5h}T h>+*W~c)* G7(KH"tilߖ T!q&q29$;#L2U>Vɬ`{B+y +EJ^ uuP*`lG2d#3iu2W/JnSh3>~Hq ,mU56NZeqaEDk+2ՖRV[52cjz+4rPn27iߖ7$#̱7 5JgyWD.;k9n=tC :k W5 D+OJZ8Iû/P&׵a7=AweH`_12]rcd# ̺/SQN ?O9jK@$ے#7ʪ5B_B|^pʣ-m+W9u[Be}}w?_v_ݥeϖÚIyvNbwuԏE_ᛮu h ""XjD}͵Bړ¹Je^Id6 I ݟ-<.g@'Q5UX9hXv É/ x!X~`GZ^#}|tKpqtԬnɒnoZ/AQWJF. 1fDFH1 \p:1<-Oq-î?,wr=Q V Aٶ`rkK"}tHH8j3!ւSo pP3ZR0*WexE$U!d!@h.nXEX=N DV${ICy)&X #p9YUG }7mh1 +e(34lk6.Q}bpc|>aM1JFěKfr{H_|@y1}"RCVn'01M8c2s$NpG~ LMa`!Һ2kM:UBv/*SV 2U"@G*K&xIP79Ut3T u(!>.5ARA ݑLۛEdw9.Ϟ1jBlAK֫q$?M;DjOtSnqOk$!P`*0Bqi˗)zt nHbS4I uMEZI[yBHJs1QOqd%9\8DQIZOK_'VWDI5s V]z/?!p:o a5xjOԎ Էƒz+)^o@Ŭ B^ ?+rYZD +U|Ù 2o0O}J؆ }+ ?)(`,w Sk>jC%ӑHn~Nw*GppZ@J+t_t}pKVcv$ӛu0Fx$gPS3G2$ @ۇ5 Aw-$zC6KE!ߩLF ^ zRZo㈨jf]A$M&Hk)G<~y)A Y1:`NۚmkkTU8-mιWcYS_TS(8ukg֏2ozu}X vyx iJU5ؼ'۾MTx.8qeR?&&]ـHQq2>TUsƌTqV:ःrX=!j8R ;)uc7sG7] !}C@<3-6(޺ FF?g1RѯѢ2i 'Z,ՙ/|5&b'u׍,6{pB4&v8|NamZvn)+!זrlp%grW§pPø'%v*P8-PX}It0ZXЛv93UA  n#BO[_ V}&`'EJQ#)D>VԾVdن.-.Śj K-cV̟4J*? l89)şʈrEIkۢ)WECY7>t w栮nH^W#Fpk= 2 2:[nzt{nlfbQ3Q7LڵDw - <N IFKSpȥJ=i[[(`C{{S ʾr&h{Qz7c=8zT4u_܌-Wј1o3[s6vCYiɄ96(!h}WԦVm%%Dxa PMXhIk_ر+/@P;:/:mFwm|_2_O=Yύ_\CP.l,uKNX~Qԟ@*l$-?&- `+k W.V }ʆV`YT2*>րYuWzҪKdXPR5A=̴fN 4QL֑lΡQY:mJsMχ`QlLLKRH+W*P0o1fWz6 _Lw 7?*5)kgC{炂Yj! ٓPSPeGˎoxsTGbUC v`Q՟1w4u}ԓ^SVUDǒ"2jz:߂s}zفkh] ~9 ;%v8N$;~?EK^e2$ ^/Jywvtm*7P8z;l0{cCtI#L-'!cȅ]}g'AGm| wtDuoeL|-N%xaA 7Jєe9EmqFMe[-Ӭ(!1mbTf)Jb>} pF*"EMvkn|L[ubM%Xt7XVa_3~ǽ=ŹĊ-ʝfxHޞyj4fsu͖2=~dc'FRrOU,Cb>vݒKLk04M D8"Z&7&H~Č"3EiWg _K I?&⦔z;P]cىA@c0BJפW#eR2P> stream x]O10 P ]ZUm?eB:gׁm_Xց$i, x`DSzendstream endobj 262 0 obj << /Filter /FlateDecode /Length 5537 >> stream x\[sdq~G♊y%UyWʩDt(gIɡUrWr\zh wgbg˯8۽?]ޟ&HEgo^3'|.^a ΘȇWuxKC/D<^mL*e_lc6mN~kuxSK>aDl^)/>#^tnT-Fov8E68]Ou : W˅xowD\HyM!MN篟wʠP"& b qha=egs&n2FhS6n%Rhp, snMx??{3uWWwR+Š̲/TC]LzmJf ۅ_FJ{CO_z·|~gu}^tXq/|A/WҔ Z~"D9 qW w3=k-KK⸃"@K.20Hx@sAl@)j0t dLwL1Lێ@ȔsD[n{,:6zOfpW YYdgx`.|l#518#t#fˀB3I zWO}\f627+9mR5zvv@LՊs19ٵ(mR_+'gO{1h{`p$sGxWtR)0BzC;SI7j %K.8;9&I+{B[Qj~3 qf1x1i& +ڲl &/6U~x ,Tmź\ 2,}}ؒۺKbEg u) LvVM 1tXj1hB0ɷ 56@5Lꨈi i_$c0 x [knU ڐ2@gxT0O\T c'×LO<>nG:jX2|^rE '6#}dw<4:ʜ4ULJJ`Sru_u8m/K3AJv:3 l"L%8-w =}رdHV2F-Ι͖W)w_J$#nut$Yi)=w)sڝl `rO^V$RPY:eqXeYuJѪdL8M'gWw p_A>j|:0aihƙ;ԂM6ϑ!`KQZM$gKў@S >=h"QG*]ͯW *!nJ/r&!Z`vBPA K>C,?f4Qv,kz0;4z Ҍ59<&w m5bZx n<6`Y.T>HuV$!ҋe)dif鞆CV wڮ^ k,u&/ґX$YJ“"YFt#M^7"LuY͎|H>S,<mB\ẢvA`99Vz^Uz8e ]!)Fx,4ݱ؆1mO![}s&sR˼KTԓMB^!T<8c+ "5lW|v*1hj6Gegr\-r58t" RM'OVӒPU80.eH!4@ ć$>f:Yx"u%b-ϖ'R[SUEoS Qh:t`+kĩsҋK A3.㖒K? 2K~@(<~ݰ2Ti Ab_( u" tnoۥњ(,,\Ly5qaΚjtx{Ô`}^hDN?TΞPPyaEovߎA܎ax jc N*j9,3E_=ؿa4dOөu8{;0|1w :.vnפdk*B"]tSCA@ոu0PAuz*,y D(/HyQا9BT#' (_,0<ȋ00>ķS_꫖NKyfAٞfJP3b+-wWdC; zq9~z($dTmaÑ 3t_@4UGV,Ҥi-EGؘǕ:~flȰ&|?d㸲MA&;٦{BW$/ ‡HUH۳,.n*3%`mg}]Nqj8Eio -Ս]kÖEANqa+A6=?׎__*}wjX;sos/ƿcOY8xSosٺu/uxQ_׌E~STK:9yϓ}K YQ Mb+k7).w:-UAՉ-?!(SCa Rk.Yu"KXK0bz^m-WbXF`^΄| ""<;׹{]˺K2NsjJqk߸%/j c~sG DJ5!I~V/o q?Ijf5Emq$lH"JER;;+4mix_ 3zҿXCO&G[Ʋ˰ r9nU^%gok{犵imbj?SB~6e Pg F7Im* (,?ͤsY_, &S\R҂qt6DK)߿ kj?Xx3|`Esv0^c7zEYOzQ8ڲ3GaA.?L)*4RLCf-+{l<S8?֋A#CV\ l(ߥ`8*`S{Ba_oŷO3JLM~0ɫXbx$tJk{]-v^fOi.Ղ2]4(h'm'g<d\9>eqrx|WP?؀/w~NHɫJim8($uI%-Pf4צ*!`_ Qd.㵗EEIWy҆^Ѯy~w _idb/CS8J ZFz-m\:8@:۪[8l<ݶbOíK"}}w9><Az q. ݒznUJ캥?:G. PV6Ԥa]}8?'e~ i5K/-ߪqŒ>@`)T@] KZ ׅVPD)K~|$JïRov8a<өa Bk-``;*+xYX8DEvˁs[_n.rrcZ4i D28Ey1G.+L%dc (V/sRLwkvwuUMª"3s|axkAAg7R_.)ZROuz,cBG9gn]9aj WC=Ֆc{9U[rWzUTӗqGݗRҞB5p-e|= vp.UW F#bJ!DS8N5Ƹ ҟ$Hx%ue!s8Xmw!VJRO4]֛dmjtD/x~&&yP+f\endstream endobj 263 0 obj << /Filter /FlateDecode /Length 161 >> stream x]O10 TXЪj8(Nߗ,N>~l#GpƲ5 HeQV-ƃ剳B7Of겯=NRP> stream x\Ks+:rva!vɕC#if5xh}.@zwJZzJߋ?O7r9ywB񟋻o`cӳ&=e˜Set+:=;i:^xj/]9[IaV7oWFXfZXXPK탛B[1*h\LӅ%<(ɛ>v+&-,opkTa+"e@@^QhAg0#ǚ)/uh-@SekQIqYl RN=MpHքH "ƓjnzCJLMwNƫ$Z H/:f=RxSye85t޵Re@ft+p"ssabԶj?S;,б7O^5Cƺ NNfD*iXiX=-HǞu ->^sFVRsOp˰odD2R[kDzzYR=og[T؎"%ۇ)n#9KɠT4?`͊4-a2[ߋL/yx`* G~'I nfhG_ -{4&խ-}6nKAN>[!.bq1Z()k,+:@VI]T*E+,f-` &x^UsPR0R΂YC,#4F)Iؿt(mn1cyJɠ"mjH~Aj%Cgőia:ϭJ 04o  K3& \cO%rN \p/N7yxW}3$!̳;֧~c JK_8BXH=LJSt]xi4h[cyx]}]eH 5B̍mm ARE !Hcp "'e€u)z^I`BG4 " . PEDtM(MuL@.Kf fpK` C̋ː;2&a/f2$p*@#({Jv\MpT$P]d]2A A.4m174^ )2.c"1I;.M":aru4{.ɋ{/ V.l!W'/ʞWbn:楥&8Wgcfr|{El,`۱GMU&6p2I'uBFwك2ѡp1(_ '!yH'OI%N|g=(._ 0ǣtg[W,leCeX3Tro冁 40߽㏄ +'lހ}/ݛV{^[tmQ@/aG5vG37|E؂߼I0B7y$6B jNב[An!)Q |pweSu}C7Uerᆐ.5'Jգ^]V>~Bb7U>T'L$J.r'T}#+8-N`=hn.M\Q~q.%8c~8h)rPnK)<n>a!I:`_̽6۽9<9ԝB[S($gJO*2Ynt^ ɽkz4wO/*NeŢ1 v]-70R~nȴo<|J" _ Xq'0fWEdQG au{.iM1H!e~u3ʾ.+YURuK_;'zP&)T6 $*5 ]&`Zt4] VbyS6uqNEITQJ1wA J *|JdU뇹Vl}4$Cl_[=woͯ\0ѹQ!zPf;֩7h0BTm2׎>5RIzu5Um#s 7?zXHxAoD_V~YSgM@õCEC+ڲ?GҎ-b" W{#9s^Ga ǟg%B_m]5$toȐ \XWEO]hlG Lw +3&_P.}ueZkW;g,©⦽ZQq럆h|q[`Y*YnQAE#f*xgSר?B~zjV}i_PBUYPCsp}&m ~T1@BhcM V4s*%逸V"ݲ |e9}W Z 7*d˶)hPo$" Pհg㪄/`[ IC8cugtSw,IVDŌ](>)Kɣ`1iܑ^IN:fW hF~i]+s?{71\fI 0vp> stream x]O10 b C+qP(/ СY:ߝ|pFcpƲ- DeQV-Ɠ剋BwOϪ>VBi )(IEѵtXIg`2i1/%ES&qMsT2Χ_F9S|endstream endobj 266 0 obj << /Filter /FlateDecode /Length 5858 >> stream x][o\9r~wGyn:4g*zν5̿bm1-;̾6FN(!u9oRjD8NpB43.Z.'{vhY=!Ms0ܑzim`3&Q65RR"l[Z9 3ߕ0fw5l`yY‚rqpy Wgk۽^_Nګp^N\4.'*Qi[Ҁ.r^ObD86pp% iWܿ3:3Ra* Q 'B۴nGNGF $@>hxlAxr2k#̋ a2%#9L }8X]-c:YsOXh[ rfo,my`q'9ٰ6aMS~cQzXex}(ag:uZTe\@])iBv" )C=Ϗw)Ac.OdzrN֛LRM8,3Y6D0^Χ`at^v@\:aXFp$A&ζF]ֈ ȂcW$*TqwKyS&媷%nwI5ʖ6.׸h\2-2 jӪyqm٢Y<|F@;T`oaqy{AVW}O=BS_6S [ YՌdc"W2 s3@:AvBg-!QLgVni[32  "5[5on-Z&d`䵈G8LE0*o`(DV>'Oݲ/wB[܈jQԃm9f(]k(6&vHݛџh󅜗9_?5/?}0h|G'pՁj;0 yݰഥ _BoKZ:2K0\/.h \Ji`+fR)茙qj|_1qrQMKoxԄJ'o5`tBp7Pyrd !xz닦jJ!Ge<6!H) := l:ۍVg&̧vL]+u\X|4̞Dz25-9{ pԝ=|0Uݯۯ[sӚ`ƺ&pR ; ĩH#>QQP_ d:!a, y`wN Uh1eH͝]"a퉙xR(Z|D,4n Ƚ_#ͳe]2NrG6 b_/0pB)=NcB9ʚ5wskNiwyiF~N]LvՄUk5Jmd܏,)t>.I&)l^it8D$IwPƂ ^2xݸn\.{B5%P5˅:E$I4/- Cٷ9 . 0nfmS9(aGrw]_mߚ5ȸg ҟd\MFB}k~z8$=4a<Q9x8OL?5eJeu[e|81 !̝ j rzM֣Jf# p{jͷɤd$oZ)Aj|ݯM W92nM$U}b@V*ʌa$~ w!U u\rBCR}c;5LIʣz0xZPjOnb>+!h9!!q~:c_)mvH5?25p`%L X*9sjٻ>4~ [=Ðs(U ʬ2L0'?|FRXk3S?[Ckj߷ev (mD;W5ZUk51aճ\.:\J<;6!ד.h %T{PŸ֑-du >uGL,ZE OZ/A\YvO ~ C7 k +|-dU?@bCÙ5wgg'UgQǙ/RdUky[/zlH=àJ!^$WтgMoX= ɚ-U*ψUO3f$ ,(\g8GQ-RSϭr>Z_C*IѱrgQgʸQ ]{*o >K#r%W]hI™Aח]^y''ُ?8y4cg}=sPRbƤh}[1qw[#wр I6a X'/HAXujڕeR[t+90Ky>Y(BR&,}.jEsyF6?@a9GiILFgEk90ۜ~Qz h^&ڃF=}yLzYL'1I Լcp9a` ,ZyMdN%$bTﱔ?g0fBILfm7xAj\Bq./Ҥ 5CXBتha d.Yow<"۲ LMYػ'ms6htt׋$K Nr;I j/%x,K ȣ|92+ ,EGeF'(k.Vh텅X?œiaS~fL^DTC;+Ë/'^`M%ěf:BB.x YcHbs窣_9j\DH~W2PI8[ڮT 0Vze۫SMwzfodzs*̚R"摃5QRkNڑGÚ~CTxN}JXDg6rc,Ac:aRڷ9uRIZesq镗4,j:銄Jw#Y__BtBS,/ 5XuT!0/b8h ɎH.K锠i!.U2P>j70!'FFcuqзZ~ѾUSS<~xD7.PVqB:o:⬌ o?{6?RVSk_1^%G`_:rD0 3&{T}S{~߃?TzXđ1ED%:=(Yz~}=}w1i`C^U V;p!m靈#e n %.%-v= X'6i61F+F䴣_ؐHJ>P/<<7W٤!pa֮i tӴ]em7JL Uk,}[f rZD93;kzl7h2S#yW̬ǦJѯ`trtCwNep{>` /Zl4F(c/VZkmŁXXG% Of7DF½QՈߥױأ#p遛1 eGIU>s!էXTc< WS:wuiV>5;,cN-F۳ʽi_&4맡H7.18eY9 vp:=xu`oׇYA0oѕBljȬc \>ber)OEtY1k&Ԫ2Wq 1BW]KTç ..e3é]'Vِͯq͞õMlcA!9]<.1AVs;>LXZ/X]3&Q Ku͗.V,Pb>$$2I&#|]M^"#ܾ@.>vV_sЧ{[wY+9͞LMe5ݫr;h/]v({43>_GCbכ΢I o $$~R:fo.mZJg..'i%P-x>zendstream endobj 267 0 obj << /Filter /FlateDecode /Length 161 >> stream x]O10 . 2D! }I.|D/J`H_#49ua:X8 d z&l*z75O$ڪZk;Al#0éTW\.Xyp8I.~r 6/JSendstream endobj 268 0 obj << /Filter /FlateDecode /Length 5704 >> stream x\Isrq&B3}M^K6| q@Rsʪ Jpb/ʬ?]P_ۏ_ᕺyWxQ_'۬xR_5.֥p?ЮF իXYo(er\_M.^o[o8|v_sswmIʬnSqV*ư+g]>ꊿT^oqކ`|^&lsfFOmu0捉[|.}]mVi +IA=5Zِ~ ddjv C ;ei67<ޮ7 v?SvTB`Ii +ۖn>!X8;>vQSI<92 U(՗5,ft ;lw8T?}Vlu?(]FTgX8TR!E0/kqc Pi2/4 U^)PՍٞ!Qp+H2)$j}Q};j&m"rimmkSUmZ߯7->7\˴:8E~ױ/_h6hmQl<(غ6G3nfk…uQ;IXv%f3*g{QN[-@ 4,F\}"af+wlX-{(!'Zyq&=K9G)z[r__j SsWj6M ~FGm4NR͏c[&њ_n0:{ƞjss».tc!=>Tyz&x,sȨTydƦ|&!{ÏoXBoQ읰7lXF`-a(:d(R|Fٚyqka&)"vBIPan0 Fe#}Ԏ7Xk+mPaMY\mv&U\9 nc W{[]N@2[T)D_[Ry b=,{d H}ٱK$ %t eR!O\0fih MPmCF]ho)g+_5u~!:k)XybpB(܆YY/D&9qgQzSOQOy]ڼMe|EϧrjxYL: 5Z{G)46@zDǠJ֢ " i? M̹䠰l}ۊoΰ FIQp5Pt=F%o5<˒)v+@ϙgA4:UqL$0K2.dS,BG5@ <տ=o R*eq1d\{,B;APLJLh$oݏj fx0AK5wCrPG+ŋѾ`GHҸyɶdЇVqx۞Za`58\ J+T"Q$4190V姌Oo7Cm~C5wï=-Bhy>nƐm Dxӌb%֦G桉s07lccx)BGfs>i;ɺ@f>+o_UZ}&KOI<:TQA~x=ӕI>fR}{Oi8<2p9Pļ(GmRWa1RпmRCԘrDS1R2w[L լ(}WԨD Iْ}En%1 dIj/g~C{C-%iRigNАM^LX?1x8")'*'N~ -Ӯ``bSloZ#fJPYʹkȟaRzPUowӅ=ɍ|^hDL F žr[oF!|K"ќ?⊭&&P]ϵvqYwAT˅ >!m).vWR+GǕ>l{U T6KEqؤќ(MdE>$R&r>{hviFm.HFgf3i+B_UjoS=e/*kd/`N3#ws*țXRQX6ngF;$VS=٤~o-Ks׏CL=>1/snFWq dmZob!egmwrZ(>T;*dtX Ke2&@]Ro%QJFrV"RG%5|wBImY+1 M?F*m(Aq롴})1beOQ*Zn&aAr?]Jkr b@g~zQ#ws\7Ĭłu\٢(#IKq:bgJ 5"}UvX ӡi|ٜsLa!̾Six{ /JbhT*F>ygQDc$GMFa@݈9<4*b`tFv90!a꣤>z#C3AJlJl:v6-A>>꘎ YސD83 e9O55gyiNH% `_,ЦL՚!;V&^ ˈ$E(|Cޚ֞nOA|35 SE\4kFdũ,T*\.)n̏ڏOe$:r)Dpw'6oMun_ð9~WpqأM;DN3+bEfCy{q+} ɤ{qAݟuQ܀W4Yc=X Db!*)"C d&u@JZ%u .D K=a^7ǘR9B2ĚR_-5);"5}F6o uiWq6AV0 + F5̾JB[nJ8{o Rq Eï4եL8K=ZD$U_sdg݌$|%3on1RG3x0924vW]]96q Mr\\KJs4}s2[,4Yl J#\+:x+gipJ)gvOƃqtb9ݎT\L2n[]xz}ʙ/kqCyʮ)3ş21_,Od(cdWLkF8aY=:K8KM tx՛CPo+Ɯn /X%9L*%~W4)mj"vr] vf1MqWGxAn"6LcY18ф(+7#vG)t,s9$w!/͉(7g{*7o^ oendstream endobj 269 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 P ]ZUm?eB:gׁm_Xց$i, x> stream x]n\9v}7tIi 3S:eKݖTdmٛ!YoɄp[\ZPsi'-y<66aRWqnCm}4އ|YkMmkvx2MmYKޠ6K-4aYz%7Wq=t"Rr :Ӝ14ą}56aW0]նgw -)fey|݈ؤvJ WI"WU$hx*xefǻlՙ\S7Ot|>jt~eít4:cAA({W9CmjTw,x}Yov/aLd+%|SYF2~ !(a,x[ noE(rg|k4Q]@bdDy/6b?S>AgrYwtĚ%T32EI4nt&B+_EPܭ c I A)*0ïki~θ87ϳ jta {JaMt$lT2S?Hh\w|*H 7W~49loZD-[zs A&o)H{&}Wn>-%bVI9ꩡ}W6a, tÆ-O\U`6%!? :7r~,$<e^-*!6/j~yYa9J:Eқ_Gc5Il_fKZiXĪ U$JpBE e꫈n~A!msLd X}0g3TeW͇@ש/K6uY1?m6miVe_WR ^wFPJe[ԈqM(@ȲM}$*^@-˞ߕiݐ,AH'&])~'/͙$LE œl+TIYg+nR9dr%)+D)Ƣ R@'ץeP`m PLsvQ ]ޓs(2~HBx;t|QMtfnJy;Fc'RMVZ=J l=V V~ƙMN }Wt%Cf@h+h!iO4y'"WrfUr&ŨxiZ|萛 溦{PX h&76؎$q oEPHIǙf+6c'+[AT1Z;mRS kGnxWiNp޽ܞ1r k&&fM rѰqωΌs5oUg PS"0:14ssZ@Ok>g>zU]eI٤lVEtVˡ&RRXY-*5XY}U-(ޖ-ވ.e Rq8:ORc 3K814. ᳚4h"44"irM"9, نF·ɋ4~ǑW<+j%_jϵɳhIuԶ]8E@/ uZqr_R*J 3LL$`0Wjלp/4WF}=7ND~SS_47~g@F*DE@}i~9мEs%OLfٟ EWT2;W\$0燪O0!@~%E,[+}wU^! ,&8 +!|`D^}O6H@KpuoLp>Yw s:$85GwU^\ ;}.-Ϛ o@a0A[/*RCXUOuX3E Hk^B6c,7պUlJйP?aPfYmGG\+/HS<Hd}  6 b> :%nE-/bTCgy|\rn%0{4P #01z3z`NhܖxKV޹b_GIa$SA?HCxFaEp٬Fy}`l8ƷC Jbj=4ߐ=݊KX#EUF#Aɬ@**ϒ_ |t4 +/ֲ IT0bDk6eǏu }ۦh%&byZ$03{`@ʝƉ^ثl mEh`R ڼ8ũk PaS#@.!:Z!bmǰџy +Hu3P$\~E+3v%{|#wU]1 ]AuuWiyl5PJ4ӎI}սؔ ªKsCh,'D/v-? $y3vJ=Uj|{)ZOGn`iJ[2V@6LЇQd RKrs>FmŸJ{s~5-я0I=3<5I Dj~`Xn& }ʚtp!?)k I&?~;da߱v P(M/_hl1Z;|,gs)p) )`bT)01N?لė(34=$;z 3-f)𡰴'UrӞLhH6vxdzt /LmWȇӃ+_:GgYELL|X4wa/ X`NU3x.+iّHr<S1l;P'bdeLx(CLnM&4I.BY>ov޶%h+s LF e4;"A.!SOk!xV&aLW6_8$x[?tD3h|сp!cIel5̺$]/x\0Ɋib2U_.aGFiꨒRx$jû*904YsZξ'9=erZar2`RP,I~h {apkŶ' }Z!Sm,Sl1t6 m\O15X$>kۆK>ÙF8tzEmƒ,W8YS,hwQk7~쳭J1?endstream endobj 271 0 obj << /Filter /FlateDecode /Length 163 >> stream x]O10 ZXҡUqP(/ СY:ߝ|reA>E0u- -m1,O)x@fw5|Vs^[+x$E b'Φ2?M%K17MR{;RB|F6S|endstream endobj 272 0 obj << /Filter /FlateDecode /Length 5868 >> stream x]YsGr~#z Bh}J=ؗ]G4 <3꩞$גC,tבUL L˛''"6O~z"ӏg˛{F/(EgϞ?ɟ3|M܆6tW`[3%h$() .x{>iF^/F:ey B/x{\XǠmGة!j}__&Jݹiҫ5@즂P8؝iBdi0oIIa%NeLN.NLC4¬.-L`0vB{D?0BmJNiέo/):=BPxyum>ff AL/XiZn*T#wE :K4N[\3kHe+Yj҅>fŚa&'U PeX/P'< |]&)GB<ˋ@SS*2kaE%F 3Xgg8`/&mjOLq«,?Zzu5 ? ~2^&"VLٴ[FQ'3G`L/GsX&MC0co6Qv Fh[4+ 7Ff>ON65_%5jL5i7fG9R61QZg=*Kp [, &m?^v&Kׯ,ZsY4Ȯ 9e,(`&DXK1'CG-8mc렋$}pz$;cFqt4>>|TKu_kA}3`d\ixC@q|ÜGEȼΧ6Uۂ¼ DӘ_Bzi8}~VG;ZѸ2َh#.6z HnUfj\.%Or6oQ|Do*K&1ZX}FnM~*>Qo]6a+9`.M^/{g|i-d&Q'eCcg0_@Ў ύ$H L,Fbr̜܇Ku}`}G-"Nu486a^) _(gIu+M0jM 3w3+xn-iG_Dz>2%z$YR7l%tD%Rs O8| :=( n?Ǘ=r6crWˆ?r5et;84b>z=v>ܵaqR/anHHͬݸ:+:<:+C'o&ku,cf7L\'%f> ] 1^[H_**1r*q^DxDnEv]B.EBl.\H}+* XUZ-ޙE)R𙥥Hyt BܾjOt{b=(4##1Vd Xm`/4lK#e0OJz(h>SCiKgq9*!ꌃdC4:57ㄎLВ80`?yg=m[y + U4!hTv5B FlVX4qM (2aǜR 0k;0kZsh 酓NVDF!3=DGHŞ!3DrH Hhtshf i!]/\h0ca`V2e f1y6s;F_?m#- `Qd,_v3ppV99qUG[w}[嶻}H -Q?w4R9 +Y٘:>Nxj&i`l3jer A*"~@)͢ 1>΂ʇO *5Fݴ۹ h}e5KH}F:=PCN gu<މRaˑrnF#b8䖀8~Cdi'H 4y@{F!IiN OtFOL{_8+ ؟/~ qlˑ1Gk|%9HIp!= ah؃aNx֮=h$}`mwzh\6#5[eq.s.bn ܍ 1N9VcMp25 zӔTb[Ug`(f8wWԉ3VufA/|ks]p6&6k ͋))UW$~ky]0Pd"s7"8 }wUyC8CuFAճsYWm}H5q7-$e_,--d|͡6! Um0͸.Yuϴѥ\ۜouiT#}٬ܴNDR3}q\H Yԝrbs Sq,t, jQZ$_u/oz\#b\v9xi%\_ ]}<6=t2B3;50ʬƫngD[$[ .oˣv1C҅L̉2 H40?"XFCmVߏ@natkwB!tE!ttUzɠt,guc2h擜ݢSmCs=aL['襱R3D.LU2K18^RILN~ȳPrͮs ˜ C JMM9:,4w ͼrPzc솯ڟKx\^W9Qy Y .CI%|RZ)9_֓>17ne H>,W4t>zշ{E 9<#oB#A<& %  qJ!@!]2ҖhsU6lkFc;4 ﺣcsq;zLxRd7+r([`U)_fp6?<_h aE3)=7YWD.A~­8'Ȼ6l~B}USN>01NW|KQTbڿ c|B|/" zϨv3ۄd n{`#$KMb.I"v;[? JOdon ˆf! _2x4[w+&onEIpH0] D_89=["<.p4̮bhNNɃ_ɣk.e[ UO'\2d F04%ȩ JK__U "ۭ8l_X5:.Zjv΀ٻS~ {I1Ό|=fxѨ`nFI{Fj&aKoy[ Cxc&ZBdFl(KOɒָ J-LA"~ŝ[\]A OmMDfYpP6!RT]ЅX ~!?jS٥r5KW,xm6{#cUM׷萉|EGG_/)x"CdŵMA3]Q[9.sIOMX?^:ۜ{狀ޞܟ'_0um׏Kt*8a'f3^iJzoݘǖ_Eb)3+w7,qUO"9&pćMl1v"_ůNa$|;CݿqWU{u?q\}O\(_7E Hᛸ(Ek9GfJl,7AW ž #m.T^#M\I2Lߋ0b kwIe&Zo* c}H B,sd&ʓVC^zj$jiiMC?CsR}jxU*$"zX`l㹩DĻCnΐٟ~9SVCKc]@hxrqT2r˧ Pɿ?{GMDendstream endobj 273 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 0 0~ 8ʀ0%!tpw'0^GGpȍ%pu[ΖXUsm!',31ܔ<݀wx^̫Ӹz:)Θ!?&SmgM*)J79l! 47I,|J ADStendstream endobj 274 0 obj << /Filter /FlateDecode /Length 5165 >> stream x\r$7vwLfC^HGX1W/jJ*vgϽ2qBVIɲBH$8ޝA /{ٝ<g7/޽gg߽Jxi"ȳW/ңAxάw_HOH[= 7F~n VsY]ŠC0n\mxJ+/?P1xz]FzSqVj@D{sgԤήvVAKeE?K!3OƵMGZQ[6y #<VaiUi<}tgmyF*M/CZD+7ivI*_q Q69ml#~ uvÏֻ|%_( nK-Qn;˸VJ^"cic}E%zWiUԴlYw@R %Y}Zc\. E횻z'mܓi,o\eEW :Z'"aaťYi'heƴ.ViU ~|$XItb9jW2qߕwixVyQBI?.P#u?i,e|3j%$қ=Q$ܕ4Kú23hS ]luÛn.Oݣ;?=oiFDKyH! e9"&-d\}@4@VƃjQ$Çb(x2wU'.$fV/i?%zMJeC*ntx/hyFAQ.#c92,*F:W\q/em,H(4=jwPtOE9jcX:GGw`D e*O@p{hkinQ4ߖ+|Qpa¯ ( 9;ii6;<O5@Ok"heoG]Ԉ&=ECD"D]:)4@h2x=6TI8B%p*v,ԕDJÂ6qc| 3"tT9MPe%nʴA^?ŭhOwtϤSFx[nCi)͡;D|!EvW[JN<*q{$F8^Msg3!lw|,>[z &RNՑA{ATrmc>`ZMry1GOui 35诀hg% ;\'#z  cOizy -afGݖMW-%2䂥`B(n k<:i.g,ECt? dakHHDyh&G6 HRiQ[e g9[;&EiKx4פ1/8 0Ҽ 4E!O y獶 FgT/qwiΆ[qT A$q6xe#*&QcLDD2ObyiM a)Ks=k?"  w/O NcŢ"K Wȑ߼@հR͠=:TἝ?z`tMނ|A$w'{E5CΨI0xڐmB>ϣ⎏Xb~*Hl`_[Xf5~~g≮Uyg—2L1dwF9 :īoB:-Po\9/-Cz7GH^ .]|aFSc&ɋ }6BjIEz478T=7zz)IVoPEH3QD 9=2>Ȭ UEw5 ܳjLN,,ձ( WβA% 0~,x vu=DmXP,K4/p Ciw,*{sm/qtf6F.!0z,yv)fE#) [*75_ ![iL*΂^;j2Yh1q[ qÂ< n|H~=-sE~D m1 hdeءwNȇU҆0/ntI|; d2~yX-)C fH:vIߗs7) n]DO1~$ ̨Ihl*t.IKjW׺~KD)p2U0cO-FM7QMhb|!p0fӺ aYÓHu} PeKs]\ޓh2VxV&sac *=dбwl03Q&%&{EAUt젰sA7x xb*OiKMΕdh̚w4{{4R\ӥ)PR"1}D1\Q -E;1vSk-4ʨ[c<?kg>f?POL#)՘o*⑴ Y0Ev,͢O%*KӘI< =\5n#\ȂÓ% \J9NUs'z\`Fl׳qO]AJ < `0%r=t,0ܟͱ:vʷU>͢?q.ݵ#D)ΞRעe|m! xOdCVH*T{YDZ~\2u~{6[`\/ hAϔ tu,7v,>9pnyQBY%OT^~!A uH3[o*Ng~\iRRtR2e)Ciң76gorC'n;S&UivF)e9!S]ei>>WFx4 ʓ?`p(!fО+Zh48.9$JHww@NPg-LY 7wGb,"-͗t^?`n8CYk?h}kXF@A jQq̇|)V^Sw[,٬r"\D \H'h \x,Bl ?.)CG5B%= B?A|*:J u)'3 f̩- K : gf[׹^q{Sf*®=4rL iԋ#&?TD$'9&D03..q)Q_¥1Mb2D$5Q &p 8mvr#N܈+ )ӓ@(WbQWN΁E_~@az~BU\4[w$Ara5L#tG*Z)~Nߑs݆X_jCjt fVCv(;pU-ZUc>f `7\r/l8{eyW.dVW.vfKR&~w&6%s=IWX4$aA#Z([5!^ wTw|ѣuFn-DGֿ#0_=dki<%uYJܗ|%WӾϋYCy4'ۿ.2U=vCp))ۆꜞ$u,)ZvH> stream x]O10 @€XҡUqP(/ СY:ߝ|reA>E0u- -m1,O)x@fw5|s^[+x$E b'Φ2?M%K17MR{;RB|DSzendstream endobj 276 0 obj << /Filter /FlateDecode /Length 5084 >> stream x\[odq~g#L9I X,;Df]RZCsȕV\IIzPa>}K_̏zu_;>?Z+=;_߮lWar{kϽJYqaRkYk>Ðgu͛ᴅed'Ɖ: `B:5]BSp&6E1j0>kž@׾jO[wL1v [B[$m|C6g)AҫgΜaL . 3AR6d8ofÞ,x cJdž)Rt].n+Fb靲xIGn gv!Oa~p{MӪ|t-fvLM_vg ^ ,Y+'1Ps jEv%I 87iruZ|Y6OkrPH;{m{r@KlZ@I퉽B!'e-i`(SC47 emT<6 [*/5~Xx{VGXY \k7r%1ٙm֦ڴW~lM_:lvaO1hSI. 0vEbλU)}}@ǩ7q80zQmj VW\Ϫ1Wn16BgR=17V OQXOy,?'۸k@2^Wyw -J;j <><,g>ZY(-՚ze/Ò4nhi%-q/ NϹ?'}HߥIƭ c9˸Cڬbl?NY0Q,1`l&U58Ea{(/pjդmk6fHwv[0z؁|em[mbht>[H{pE ע>nI+#~Z>Ѳ(ZAm*~GKN!tiā)u6m>"I|Jߥ& Cz Yy!ӫ4 hfrXWN "C0@Q)mz_D*Nr5!Kw!2G܀$=m^J(m\1 N81F74&|T-2%-D 0L iy-j]AwD)5.faW$h9p+iyg~rcq9p1m\╬xMsmS8PF @*'xgD Ģخxش䞦aD#qكq˜fv">]ˋ=c|沔0mHm8Q,I*~%{ɎAƕ( ag0&f9IqBHVޥ(%X;ӕ 1Q^`L}(͘x.j۴_+cws t %6uWZS 42|\Z_ץ%V#`;XfU@xa2mWxl$b-삮d.BogxoDZ&.ꦴ.nvSv-1{)Y/},ыqr K\xlCf7?(?K _|2D#<&# V|hn';{A~FΟOڊ(Qל~<\q=Ʀk~r+1 Zu Q\['= ZZY RI C/\j~r6{Ƨ]8SXTV gPp8~hMv 7 ŸkgZ`#D}]Q, 1ral9N Gץ:@Z[,: e,v~օrl^~j\Vd@!™‘e)hަھ1ի,e -n_d_,@ہDc"_T{AZSeОv?>a9fFC+Фcm7h{**8NoqK~CV1-˞kʝfBo~AbT%*z([S۽ ؃-Vln@>LkU :\􂡦>;Si vĝ] 8/jxy 2!J<׆;0nGěp7bdᎤq~VZz[0L> |џ2Fp qşM{"?Tno|k>,>`gP0\7ÌgdM#?7Ոendstream endobj 277 0 obj << /Filter /FlateDecode /Length 163 >> stream x]O10 TA%B2D! }I쯗+(n H0hYhqgy⤼M2:B4^!#(֘N?i fw6MQ5fh*q\B in X3 IMSendstream endobj 278 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2576 >> stream xV{Tg2HU;X;*ZWŪ -*b< @&!@ $Kn*ۭhG_=֮ݵ|ݳ;*9=d}~nDDp!Bc7l8{V)?!Z~Z#01L$ Gy1X$5E+4uԔ"g/X0zYD"S呱4,Y-wY!o7ff8|0 n%VV@CDߎëܯÀV *pYN(a jnr+(6 ipf4⨫8NVK-;~% ы<Ʌ?k%@ $_r)\atu| RmTkiNriwD?N!cQ_&:^*ٸfV C}~YۑFK>qYL]_W4B#dzNڏ_ܺ+f,<;*N@g|m-V5ye%R̠3NZ3}'}Fs.WUbLm-NGAݗ'"kv"bf(дmگj_ =P]>!+'mfm6_MFt*4 6+-ǷDcbyZ]Dh>G g[hn26t{w)@4Z/icZ.?K!m?%9Tȉ{bH2~&!檎1\l.,Z T^Ȝ}|OK?UfŮxz'B+c)> `sU)o:v^6~\DGt 9 =&=2ou%@)" DiJ\neAY<hXLC{;' 8M XXM.pBT4Z~4,y`S_~heBoI-%7m`[Ԑ!3YC-r܍u<0CQKK?\7У *#]XT tx*f 4#Aqyt)#IrP3]F_lqA:3c8jk-XS GiBof6eUmUC xf#EYH(M˕?:rssyKX >*YFѬWMY yj9+;ԟVlvuڐnOd*IjKjӑѨ.nsГ|&'-u2@T`$Kd&"6!-M:A(K뵻b,JG(K%:8~W1Q/r|#svݪl!_ϨIى@-{ GYjiǽ5.Gv xWg vqoxB-'݋v>Gwp(%|J^$h-qMeyl֮9@.9\9 }E`Sۃ^9~JE b$(ˆ#5zZ*_ (s:L;3œLQk a} E!zh=D wȺN]<ýuxoB캸G?}}m*P~ LIzlh0$P-8T5$ai^aJ#q͐5߃Ynn[)wisUgd=E}b>@kfa܌ xk 2ȥ,v顊rɠƹ"|VWUt5|-yI[9 Ʉ*B?S~endstream endobj 279 0 obj << /Filter /FlateDecode /Length 5526 >> stream x]_sqW-_[+?saRIy#EJw$'J YHdU6F~><7/{ruB\ӵ| ͘`z|Q_ɷyYjqd@ֹL"/ksSHM(Sj͗;R+c\?ӵƪWE [iѐpl{%Ey):$^bo'=!85[]O4yϛu10rCғLb ao\ݝA}q)) qF:eqA[\!"wߞuC?+T@zOUm`o5IN̻Lvf&!T 6w+9D}__}Q %AdRքPH}XmAB[ͩ_ 1QHH1 +`sCB̎k!Ty͵W˟&Y.s2F #@m tCge ӱ 7{2]g}m2>~[}v`͛:!K/D5`mUcqNWmC8Q;0g6:PYmӯ̰nvQl3 )j{EFk۴F_Bc @Be'ł[?t ,S.;PpXy Qߠ3E@~OP¬.+w]pɷ,Xfƒ%E%sƆyפMUiՇ ^QFJ`W ݦ9y1#,"{_KQ)b+xtkkcgzzt8K|"{#/0h!T%U2 e.9%ih% J?3Հq{Nh~RY!7]g9jÒ_cjx#{ '@>[(iwG/SW={td|) .€>Tw<ϣbOdMk݋L3=#=q#Tū)L~-AL닖NNd\Z[> ۺnjX\Ϣ c3H$?U+pmì>8&%SK3Џ3ߙ[P߻.s 98$̕ūYZ8&gt3 8M1 6NkʽToRwI>äczwE7Bp}0nK1YHƩGiblf|XF&3GkEИ%Tɲ?:߇"$y&g2#M܀R1{{A2oxb(LHΝx?wGʇoz)4HJ!I @qY1@9l$d2uo6$7I_Y7i'RJHmb?_N NchY&w iK).t=g3Ǘ>.y]ٵ5D JsF$R>O"VOCcbum2~IECmn>1'\S,*H~FnU?7|WUӮaJ<4;|yW=De ;B'm^a ,#YD^2ґIH(;M A=Iava;'˖/H,k &w>%vQAFrpgϴL`Nsg甏bvsHZ:}8emZBB@U#`S}Z?JM P?'|[˨0uO^$K]7d+|)(˯$S%Ld VG,tx|#!We>0vp:S+sl]itCיUIҭ[:`z-0 [uQ:~5ggɬþ & ^-{ZN8$;咈$ٕwhsvcPO"B_ځ/ Sxx8BL@ ~Z{o _={be^eNB '%a겼x9'UX .ysX[22n>kH'+; #ʔ|3?g U ǪW~2ekݶ׿17_2Gy1MgŚ t ڿx9Ē *H Mz0їfR-,tR3\5L!3iSc3OY(hUI.2^aR4shO _?Ne~tWʳeپ)GLտj#k40dʤb|_v+ef5F07M]q_7g_fҘGnc^ySŢhLJy:ĹTY8{BEM6 MAǜO[8YT [,U5JV:9b%ƎziB-7[.Ǖgm0RsiS"bdrڞeq1ҍ,տF%ylտ|Og1:hv@Y 4P=۬5/im Grn#Y?~[6Emay9 s`7*x$ÀPIBQ5~-Aw9ڶ)#'ie '[2K o.8֗UVb#"6?-'fY|͑nZ7 i!6ruo?pӟgz0~6ïO੓e?m@ǁ]%Xg`3֙1.~u_xu p;@ߩ<҅/[@AC+-x'7kh'Pm^1޲! XGJz׎zXt`<t{sbն+18J_]o'qiJ @ T{?=3=*5(X}ԪqD|;^.ww+'r2ߝW~endstream endobj 280 0 obj << /Filter /FlateDecode /Length 161 >> stream x]O10 b C+qP(/ СY:ߝ|pFcpƲ- DeQV-Ɠ剋BwOϪ.> stream x\Ko7 B.YX rHAu{l{dHY#e&==laTMU_}Uݯ >}q>x} ӏWA(<<~~@C|-?!Xxy$ 4%( e#fq,Sc6=^ Eꬔt07K xZ( ^VJx4URv9*MCZ=<.pY ;D'u4 QW) IvF:eQi9 ;_"<wUeQ!Exhn誐8 :! Z!iE.Ee>/Wgg]4`=p:xm^;loPATA+.Lɀ+9@xHJ u\ dTƙ*7֜6x^`"2⁨7YF;cUM0V >Ypb0UYx94qN9<3Gix$`Mlnvׯ۠f( :^iDA>jTQ1K4YR V!M5U>V֌G:Ƨ9馝" $/α7HmUFr" 0Һ,mG\rq(-UZJK.;{C:4R}ZM6$k5S@H:Td2.s3,>J+X_jЩ,g#9&Dt[Gʠq 2.ֶs-'e#e0EIWA|pOkou~~'摶~gc>|^6/js6]w=ywi(zY1Y[ك6L=hzΈE"{eV92/KkIOqL({eT Pl~oA~}8 @n(h^t0xk"z?eǫjI6f;6;7脍=NAg DMTDo1EY:[Jf(yT^y NMJ2͇7&?nfYl73ا]Oq5.̌[p6>rޙ0KrI#G*"H}!/J1M4w,NZ 0Fxg2DI#M5bw T5Vh$fAЫi|=c4 48D HVuv.Txa$Q{p}K8xbocg/2ّBAp{K@:INyX";nUu~Tr&#^<<ß=voO礅c*h^4pƹxydm`Hpu3#f6* JwH$JN؎V9LR2|ēUյX4$dqɍ@,'p|vyQCyn毵EmWm~=QIeffa<cMbHk&fzvP x:!XžS!zhv2f_Pߏم{zMd(vlNaXob d;ԓ-Xv9n7ihMP4}olPm&Ȧdl>CVa]%R@̀)s HU!N'+?3L~$MvɟI~r7(:gFpzoى hrcred Lv3mm2JYς6M!EUҧ{f8=HEhNQHx?+Fʇo7rƓZFGG,u28")`CaN$BHΨ[l$!C^^ 1xk Pd0)ʻG&Y߳%-;蚘mqo-3m6te2Mu-%2q&#cX |s>HSdXǜDEjAV[/QSiMy:^+! 8Q[-n1p,r ks=. S?gpk(u9Km0Dfx,?҆͋\ʥv:oE<%dRf^9zSΥ*"MH>ӧ kd$XCYD0ZΉ<ȋGRW:&{SlȋGR`b7/KM[Ps|OBab{VbhA,AޕYGg#6&u~Je^U!S ǡ㾊ήG! v>8fBku7*i6Gs= 5,@fYPa@y%bU!d/3;Z|F'_b'կx:,(8&e@GKB-tl1b҆܏~f@':5a1-%Hf}l}p)c4wFFIht[0 PƪfRq(֦pK6&rh ߆B֧hK0ƫHur%YR.8S\=n\-$DHr0GB%ŸW9“]nG.^" VH zw*8ͥEH|UuvzPpT򠺡u8gsϻtz1d=$Qdc=dM"7ǕhHOƒGgdb=V2 czmE| ![z}of9 |/sJUqIZHZ0>Q0,KǏb CCZj/bp>aS<3DNÕs\B lM<ԺY$ee7 -Hrd4MF16te#.v;mw0vum^uGWo2݀d8ݢ=F[DEDm1-R+!̄JS},HFR{b5rQ0:5ᐎ1,{ky,&b;جnEmXzkظvƮf*7\R-l v/r3=ObŲ~h6_f6Nk0u`QKr!p;N_H}ÌVzmahGpNZ6(v~#݉OnptM\ҙR:x5fTJ,|)'\M;7S)Kv+R~ pɨx|JOH_guk=;1^Gv^P݂*XQiulP (3U;ŐK"7LCi\A1)J*6a5R5l^tiHP*sMcHy%@|!TTfRM %j"TR)r4.XME6dKm+ m{)xH@3]\g7tJWNqf5HPeJ>{R(IZH`bm-_SمUfle2cnEk?$n2cGLŏˌ^;^q /FԶͷv!8pS9A V8lIud唞p8\s*yЂn4ACxx_~ jRGR/f)`2\ἉOe.#u%C[a˽%/,*/kUEeXzn]jK"e/^-oz"oN}o3H7ri%|)+WWd^%%`Lca_St9]skӠJ9<W0Mo)ʨ?WEE^t&Cv7!-&{g/0,)^͐ї)q+qnD>ѷZ"lARB `M o$BW=Ʀ^uo[6{+d56]m2u^e)OT0}j @>5ʯ 擼endstream endobj 282 0 obj << /Filter /FlateDecode /Length 162 >> stream x]O10 P ]ZUm?eB:gׁm_Xց$i, x`IPSendstream endobj 283 0 obj << /Type /XRef /Length 249 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 284 /ID [<8507ae474746b8baecb4fc464223e25a><5a8b2f1962450f9afe0093a67f59ca05>] >> stream xcb&F~0 $8JT#3Y{@i46JR?IҘPbO@$`"x@@)4B[A$ p|"M`5l`5@0R$f_H+B^^AG[t B= .`KEOH, >= options(SweaveHooks=list(fig=function() par(mar=c(1,1,1,1)))) @ \SweaveOpts{eps=TRUE} \setkeys{Gin}{width=0.6\textwidth} <>= library(spatstat) spatstat.options(image.colfun=function(n) { grey(seq(0,1,length=n)) }) sdate <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Date") sversion <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Version") options(useFancyQuotes=FALSE) @ \title{Analysing replicated point patterns in \texttt{spatstat}} \author{Adrian Baddeley} \date{For \spst\ version \texttt{\Sexpr{sversion}}} \maketitle \begin{abstract} This document describes \spst's capabilities for fitting models to replicated point patterns. More generally it applies to data from a designed experiment in which the response from each unit is a spatial point pattern. \end{abstract} \tableofcontents \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} `Replicated point patterns' are datasets consisting of several point patterns which can be regarded as independent repetitions of the same experiment. For example, three point patterns taken from micrographs of three pipette samples of the same jug of milk, could be assumed to be replicated observations. More generally we could have several experimental groups, with replicated point pattern data in each group. For example there may be two jugs of milk that were treated differently, and we take three pipette samples from each jug. Even more generally our point patterns could be the result of a designed experiment involving control and treatment groups, covariates such as temperature, and even spatial covariates (such as image data). This document describes the capabilities available in the \spst\ package for analysing such data. {\bf These capabilities are still under development and will be extended soon.} Our aim is to fit a model to the data which explains the influence of experimental conditions on the point patterns. The paper \cite{statpaper} outlines a method for fitting such models using maximum product pseudolikelihood. This has been implemented in \spst. This document is an explanation with examples on how to use the code. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Overview of software} The main components needed are: \begin{itemize} \item the model-fitting function \texttt{mppm}, an extension of the \texttt{spatstat} function \texttt{ppm}, that will fit Gibbs point process models to multiple point pattern datasets; \item support for the class \texttt{"mppm"} of point process models fitted by \texttt{mppm} (e.g. functions to print and plot the fitted model, analysis of deviance for Poisson models) \item some tools for exploratory data analysis; \item basic support for the data from such experiments by storing the data in a \emph{``hyperframe''}. A hyperframe is like a data frame, except that each entry in a column can be a point pattern or a pixel image, as well as a single number or categorical value. \item four example datasets. \end{itemize} \section{Formulating the problem} We view the experiment as involving a series of {\em `units'\/}. Each unit is subjected to a known set of experimental conditions (described by the values of the {\em covariates\/}), and each unit yields a {\em response\/} which is a spatial point pattern. The value of a particular covariate for each unit can be either a single value (numerical, logical or factor), or a pixel image. Three important cases are: \begin{description} \item[independent replicates:] We observe $n$ different point patterns that can be regarded as independent replicates, i.e.\ independent realisations of the same point process. The `responses' are the point patterns; there are no covariates. \item[replication in groups:] there are $K$ different experimental groups (e.g. control, aspirin, nurofen). In group $k$ ($k=1,\ldots,K$) we observe $n_k$ point patterns which can be regarded as independent replicates within this group. We regard this as an experiment with $n = \sum_k n_k$ units. The responses are the point patterns; there is one covariate which is a factor (categorical variable) identifying which group each point pattern belongs to. \item[general case:] there are covariates other than factors that influence the response. The point patterns are assumed to be independent, but no two patterns have the same distribution. \end{description} Examples of these three cases are given in the datasets \texttt{waterstriders}, \texttt{pyramidal} and \texttt{demohyper} respectively, which are installed in \spst. \section{Installed datasets} The following datasets are currently installed in \spst. \begin{itemize} \item \texttt{waterstriders}: Penttinen's \cite{pent84} waterstriders data recording the locations of insect larvae on a pond in 3 independent experiments. \item \texttt{pyramidal}: data from Diggle, Lange and Benes \cite{digglangbene91} on the locations of pyramidal neurons in human brain, 31 human subjects grouped into 3 groups (controls, schizoaffective and schizophrenic). \item \texttt{flu}: data from Chen et al \cite{chenetal08} giving the locations of two different virus proteins on the membranes of cells infected with influenza virus; 41 multitype point patterns divided into two virus types (wild and mutant) and two stain types. \item \texttt{simba}: simulated data from an experiment with two groups and 5 replicate point patterns per group. \item \texttt{demohyper}: simulated data from an experiment with two groups in which each experimental unit has a point pattern response and a pixel image covariate. \end{itemize} \section{Lists of point patterns} First we need a convenient way to store the \emph{responses} from all the units in an experiment. An individual point pattern is stored as an object of class \verb!"ppp"!. The easiest way to store all the responses is to form a list of \verb!"ppp"! objects. \subsection{Waterstriders data} The \texttt{waterstriders} data are an example of this type. The data consist of 3 independent point patterns representing the locations of insect larvae on a pond. See \texttt{help(waterstriders)}. <<>>= waterstriders @ The \texttt{waterstriders} dataset is a list of point patterns. It is a list, each of whose entries is a point pattern (object of class \verb!"ppp"!). Note that the observation windows of the three point patterns are {\tt not\/} identical. \subsection{The class \texttt{listof}} For convenience, the \texttt{waterstriders} dataset also belongs to the class \verb!"listof"!. This is a simple mechanism to allow us to handle the list neatly --- for example, we can provide special methods for printing, plotting and summarising the list. \SweaveOpts{width=6,height=2} \setkeys{Gin}{width=0.9\textwidth} <>= plot(waterstriders, main="") @ Notice that the plot method displays each entry of the list in a separate panel. There's also the summary method: <<>>= summary(waterstriders) @ \subsection{Creating a \texttt{listof} object} For example, here is a simulated dataset containing three independent realisations of the Poisson process with intensity 100. <<>>= X <- listof(rpoispp(100), rpoispp(100), rpoispp(100)) @ Then it can be printed and plotted. <>= plot(X) X @ To convert an existing list to the class \code{listof}, use \code{as.listof}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Hyperframes} A \emph{hyperframe} is like a data frame, except that its entries can be objects of any kind. A hyperframe is effectively a two-dimensional array in which each column consists of values of one type (as in a data frame) or consists of objects of one class. The entries in a hyperframe can be point patterns, pixel images, windows, or any other objects. To analyse an experiment, we will store {\bf all} the data from the experiment in a single hyperframe. The rows of the hyperframe will correspond to different experimental units, while the columns represent different variables (response variables or covariates). \subsection{Creating hyperframes} The function \texttt{hyperframe} will create a hyperframe. <>= hyperframe(...) @ The arguments \verb!...! are any number of arguments of the form \texttt{tag=value}. Each \texttt{value} will become a column of the array. The \texttt{tag} determines the name of the column. Each \texttt{value} can be either \begin{itemize} \item an atomic vector or factor (i.e. numeric vector, integer vector, character vector, logical vector, complex vector or factor) \item a list of objects which are all of the same class \item one atomic value, which will be replicated to make an atomic vector or factor \item one object, which will be replicated to make a list of identical objects. \end{itemize} All columns (vectors, factors and lists) must be of the same length, if their length is greater than 1. For example, here is a hyperframe containing a column of numbers and a column of \emph{functions}: <<>>= H <- hyperframe(X=1:3, Y=list(sin,cos,tan)) H @ Note that a column of character strings will be converted to a factor, unless you set \texttt{stringsAsFactors=FALSE} in the call to \code{hyperframe}. This is the same behaviour as for the function \code{data.frame}. <<>>= G <- hyperframe(X=1:3, Y=letters[1:3], Z=factor(letters[1:3]), W=list(rpoispp(100),rpoispp(100), rpoispp(100)), U=42, V=rpoispp(100), stringsAsFactors=FALSE) G @ This hyperframe has 3 rows. The columns named \texttt{U} and \texttt{V} are constant (all entries in a column are the same). The column named \texttt{Y} is a character vector. \subsection{Hyperframes of data} To analyse an experiment, we will store {\bf all} the data from the experiment in a single hyperframe. The rows of the hyperframe will correspond to different experimental units, while the columns represent different variables (response variables or covariates). Several examples of hyperframes are provided with the package, including \texttt{demohyper}, \texttt{flu}, \texttt{simba} and \texttt{pyramidal}, described above. The \texttt{simba} dataset contains simulated data from an experiment with a `control' group and a `treatment' group, each group containing 5 experimental units. The responses in the control group are independent Poisson point patterns with intensity 80. The responses in the treatment group are independent realisations of a Strauss process (see \texttt{help(simba)} for details). The \texttt{simba} dataset is a hyperframe with 10 rows and 2 columns: \texttt{Points} (the point patterns) and \texttt{group} (a factor with levels \texttt{control} and \texttt{treatment}). <<>>= simba @ The \texttt{pyramidal} dataset contains data from Diggle, Lange and Benes \cite{digglangbene91} on the locations of pyramidal neurons in human brain. One point pattern was observed in each of 31 human subjects. The subjects were classified into 3 groups (controls, schizoaffective and schizophrenic). The \texttt{pyramidal} dataset is a hyperframe with 31 rows and 2 columns: \code{Neurons} (the point patterns) and \code{group} (a factor with levels \texttt{control}, \texttt{schizoaffective} and \texttt{schizophrenic}). <<>>= pyramidal @ The \texttt{waterstriders} dataset is not a hyperframe; it's just a list of point patterns. It can easily be converted into a hyperframe: <<>>= ws <- hyperframe(Striders=waterstriders) @ \subsection{Columns of a hyperframe} Individual columns of a hyperframe can be extracted using \verb!$!: <<>>= H$X H$Y @ The result of \verb!$! is a vector or factor if the column contains atomic values; otherwise it is a list of objects (with class \texttt{"listof"} to make it easier to print and plot). Individual columns can also be assigned (overwritten or created) using \verb!$<-!: <<>>= H$U <- letters[1:3] H @ This can be used to build up a hyperframe column-by-column: <<>>= G <- hyperframe() G$X <- waterstriders G$Y <- 1:3 G @ \subsection{Subsets of a hyperframe} Other subsets of a hyperframe can be extracted with \verb![!: <<>>= H[,1] H[2,] H[2:3, ] H[1,1] @ The result of \verb![! is a hyperframe, unless you set \verb!drop=TRUE! and the subset consists of only one element or one column: <<>>= H[,1,drop=TRUE] H[1,1,drop=TRUE] H[1,2,drop=TRUE] @ Currently there is no method for \verb![<-! that would allow you to assign values to a subset of a hyperframe. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Plotting} \subsection{Plotting a \code{listof} object} The plot method for \code{listof} objects has formal arguments <>= plot.listof(x, ..., main, arrange = TRUE, nrows = NULL, ncols = NULL) @ where \code{main} is a title for the entire page. If \code{arrange=TRUE} then the entries of the list are displayed in separate panels on the same page (with \code{nrows} rows and \code{ncols} columns of panels), while if \code{arrange=FALSE} then the entries are just plotted as a series of plot frames. The extra arguments \verb!...! control the individual plot panels. These arguments will be passed to the plot method that displays each entry of the list. Suitable arguments depend on the type of entries. <>= plot(waterstriders, pch=16, nrows=1) @ \subsection{Plotting a hyperframe} \subsubsection{Plotting one column} If \code{h} is a hyperframe, then the default action of \code{plot(h)} is to extract the first column of \code{h} and plot each of the entries in a separate panel on one page (actually using the plot method for class \verb!"listof"!). \SweaveOpts{width=7,height=5} \setkeys{Gin}{width=0.9\textwidth} <>= plot(simba) @ This only works if the entries in the first column are objects for which a plot method is defined (for example, point patterns, images, windows). To select a different column, use \verb!$! or \verb![!: \SweaveOpts{width=6,height=2} \setkeys{Gin}{width=0.9\textwidth} <>= H <- hyperframe(X=1:3, Y=list(sin,cos,tan)) plot(H$Y) @ The plot can be controlled using the arguments for \code{plot.listof} (and, in this case, \code{plot.function}, since \verb!H$Y! consists of functions). \subsubsection{Complex plots} More generally, we can display any kind of higher-order plot involving one or more columns of a hyperframe: <>= plot(h, e) @ where \code{h} is a hyperframe and \code{e} is an \R\ language call or expression that must be evaluated in each row to generate each plot panel. \SweaveOpts{width=9,height=5} \setkeys{Gin}{width=0.9\textwidth} <>= plot(demohyper, quote({ plot(Image, main=""); plot(Points, add=TRUE) })) @ Note the use of \code{quote}, which prevents the code inside the braces from being evaluated immediately. To plot the $K$-functions of each of the patterns in the \code{waterstriders} dataset, \SweaveOpts{width=6,height=2} \setkeys{Gin}{width=0.9\textwidth} <>= H <- hyperframe(Bugs=waterstriders) plot(H, quote(plot(Kest(Bugs))), marsize=1) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Data analysis} \subsection{Computing with hyperframes} Often we want to perform some computation on each row of a hyperframe. In a data frame, this can be done using the command \code{with}: <<>>= df <- data.frame(A=1:10, B=10:1) with(df, A-B) @ In this example, the expression \code{A-B} is evaluated in each row of the data frame, and the result is a vector containing the computed values for each row. The function \code{with} is generic, and has a method for data frames, \code{with.data.frame}. The computation above was executed by \code{with.data.frame}. The same syntax is available for hyperframes using the method \code{with.hyperframe}: <>= with(h,e) @ Here \code{h} is a hyperframe, and \code{e} is an {\sf R} language construct involving the names of columns in \code{h}. For each row of \code{h}, the expression \code{e} will be evaluated in such a way that each entry in the row is identified by its column name. <<>>= H <- hyperframe(Bugs=waterstriders) with(H, npoints(Bugs)) with(H, distmap(Bugs)) @ The result of \code{with.hyperframe} is a list of objects (of class \verb!"listof"!), or a vector or factor if appropriate. Notice that (unlike the situation for data frames) the operations in the expression \code{e} do not have to be vectorised. For example, \code{distmap} expects a single point pattern, and is not vectorised to deal with a list of point patterns. Instead, the expression \code{distmap(Bugs)} is evaluated separately in each row of the hyperframe. \subsection{Summary statistics} One application of \code{with.hyperframe} is to calculate summary statistics for each row of a hyperframe. For example, the number of points in a point pattern \code{X} is returned by \code{npoints(X)}. To calculate this for each of the responses in the \code{simba} dataset, <<>>= with(simba, npoints(Points)) @ The summary statistic can be any kind of object. For example, to compute the empirical $K$-functions for each of the patterns in the \code{waterstriders} dataset, <<>>= H <- hyperframe(Bugs=waterstriders) K <- with(H, Kest(Bugs)) @ To plot these $K$-functions you can then just type \SweaveOpts{width=6,height=2} \setkeys{Gin}{width=0.9\textwidth} <>= plot(K) @ The summary statistic for each row could be a numeric vector: <<>>= H <- hyperframe(Bugs=waterstriders) with(H, nndist(Bugs)) @ The result is a list, each entry being a vector of nearest neighbour distances. To find the minimum interpoint distance in each pattern: <<>>= with(H, min(nndist(Bugs))) @ \subsection{Generating new columns} New columns of a hyperframe can be created by computation from the existing columns. For example, I can add a new column to the \code{simba} dataset that contains pixel images of the distance maps for each of the point pattern responses. <>= simba$Dist <- with(simba, distmap(Points)) @ \subsection{Simulation} This can be useful for simulation. For example, to generate Poisson point patterns with different intensities, where the intensities are given by a numeric vector \code{lambda}: \SweaveOpts{width=6,height=6} \setkeys{Gin}{width=0.7\textwidth} <>= lambda <- rexp(6, rate=1/50) H <- hyperframe(lambda=lambda) H$Points <- with(H, rpoispp(lambda)) plot(H, quote(plot(Points, main=paste("lambda=", signif(lambda, 4))))) @ It's even simpler to generate 10 independent Poisson point patterns with the \emph{same} intensity 50, say: <>= H$X <- with(H, rpoispp(50)) @ (the expression \code{rpoispp(50)} is evaluated once in each row, yielding a different point pattern in each row because of the randomness). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Exploratory data analysis} Before fitting models to the data, it is prudent to explore the data to detect unusual features and to suggest appropriate models. \subsection{Exploring spatial trend and covariate effects} Points may be distributed non-uniformly either because they are intrinsically non-uniform (``spatial trend'') or because their abundance depends on a spatial covariate (``covariate effects''). Non-uniformity of a point pattern can be investigated using the kernel smoothed intensity. This is the convolution of the point pattern with a smooth density called the kernel. Effectively each point in the pattern is replaced by a copy of the kernel, and the sum of all copies of the kernel is the kernel-smoothed intensity function. It is computed by \texttt{density.ppp} separately for each point pattern. <>= plot(simba, quote(plot(density(Points), main="")), nrows=2) @ Covariate effects due to a real-valued spatial covariate (a real-valued pixel image) can be investigated using the command \code{rhohat}. This uses a kernel smoothing technique to fit a model of the form \[ \lambda(u) = \rho(Z(u)) \] where $\lambda(u)$ is the point process intensity at a location $u$, and $Z(u)$ is the value of the spatial covariate at that location. Here $\rho$ is an unknown, smooth function which is to be estimated. The function $\rho$ expresses the effect of the spatial covariate on the point process intensity. If $\rho$ turns out to be constant, then the covariate has no effect on point process intensity (and the constant value of $\rho$ is the constant intensity of the point process). <>= rhos <- with(demohyper, rhohat(Points, Image)) plot(rhos) @ \SweaveOpts{width=6,height=4} \setkeys{Gin}{width=0.9\textwidth} \subsection{Exploring interpoint interaction} Still to be written. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Fitting models of spatial trend} The command \code{mppm} fits models to multiple point patterns. Its syntax is very similar to that of \code{lm} and \code{glm}: <>= mppm(formula, data, interaction, ...) @ where \code{formula} is a formula describing the systematic trend part of the model, \code{data} is a hyperframe containing all the data (responses and covariates), and \code{interaction} determines the stochastic interpoint interaction part of the model. For example: <>= mppm(Points ~ group, simba, Poisson()) @ Note that the formula has a left hand side, which identifies the response. This should be the name of a column of \code{data}. \subsection{Trend formula} The right side of \code{formula} is an expression for the linear predictor (effectively the {\bf logarithm} of the spatial trend). The variables appearing in the right hand side of \code{formula} should be either \begin{itemize} \item names of columns in \code{data} \item objects in the {\sf R} global environment (such as \code{pi} and \code{log}) \item the reserved names \code{x}, \code{y} (representing Cartesian coordinates), \code{marks} (representing mark values attached to points) or \code{id} (a factor representing the row number in the hyperframe). \end{itemize} \subsubsection{Design covariates} The variables in the trend could be `design covariates'. For example, to fit a model to the \code{simba} dataset in which all patterns are independent replicates of the same uniform Poisson process, with the same constant intensity: <<>>= mppm(Points ~ 1, simba) @ To fit a model in which the two groups of patterns (control and treatment groups) each consist of independent replicates of a uniform Poisson process, but with possibly different intensity in each group: <<>>= mppm(Points ~ group, simba) @ To fit a uniform Poisson process to each pattern, with different intensity for each pattern: <<>>= mppm(Points ~ id, simba) @ \subsubsection{Spatial covariates} The variables in the trend could be `spatial covariates'. For example, the \code{demohyper} dataset has a column \code{Image} containing pixel images. <<>>= mppm(Points ~ Image, data=demohyper) @ This model postulates that each pattern is a Poisson process with intensity of the form \[ \lambda(u) = \exp(\beta_0 + \beta_1 Z(u)) \] at location $u$, where $\beta_0, \beta_1$ are coefficients to be estimated, and $Z(u)$ is the value of the pixel image \code{Image} at location $u$. It may or may not be appropriate to assume that the intensity of the points is an exponential function of the image pixel value $Z$. If instead we wanted the intensity $\lambda(u)$ to be \emph{proportional} to $Z(u)$, the appropriate model is <>= mppm(Points ~ offset(log(Image)), data=demohyper) @ which corresponds to an intensity proportional to \code{Image}, \[ \lambda(u) = \exp(\beta_0 + \log Z(u)) = e^{\beta_0} \; Z(u). \] The \code{offset} indicates that there is no coefficient in front of $\log Z(u)$. Alternatively we could allow a coefficient: <>= mppm(Points ~ log(Image), data=demop) @ which corresponds to a gamma transformation of \code{Image}, \[ \lambda(u) = \exp(\beta_0 + \beta_1 \log Z(u)) = e^{\beta_0} \; Z(u)^{\beta_1}. \] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Interpoint interaction} The stochastic interpoint interaction in a point process model is specified by the arguments \code{interaction} and (optionally) \code{iformula} in <>= mppm(formula, data, interaction, ..., iformula=NULL) @ \subsection{Same interaction for all patterns} In the simplest case, the argument \texttt{interaction} is one of the familiar objects that describe the point process interaction structure. It is an object of class \texttt{"interact"} created by calling one of the functions \begin{center} \begin{tabular}{rl} \texttt{Poisson()} & the Poisson point process\\ \texttt{Hardcore()} & the hard core process \\ \texttt{Strauss()} & the Strauss process \\ \texttt{StraussHard()} & the Strauss/hard core point process\\ \texttt{Softcore()} & pairwise interaction, soft core potential\\ \texttt{PairPiece()} & pairwise interaction, piecewise constant \\ \texttt{DiggleGatesStibbard() } & Diggle-Gates-Stibbard pair potential \\ \texttt{DiggleGratton() } & Diggle-Gratton pair potential \\ \texttt{Fiksel() } & Fiksel pair potential \\ \texttt{LennardJones() } & Lennard-Jones pair potential \\ \texttt{Pairwise()} & pairwise interaction, user-supplied potential\\ \texttt{AreaInter()} & area-interaction potential\\ \texttt{Geyer()} & Geyer's saturation process\\ \texttt{BadGey()} & multiscale Geyer saturation process\\ \texttt{Saturated()} & Saturated pair model, user-supplied potential\\ \texttt{OrdThresh()} & Ord process, threshold potential\\ \texttt{Ord()} & Ord model, user-supplied potential \\ \texttt{MultiStrauss()} & multitype Strauss process \\ \texttt{MultiStraussHard()} & multitype Strauss/hard core process \\ \texttt{Concom()} & connected component interaction \\ \texttt{Hybrid()} & hybrid of several interactions \\ \end{tabular} \end{center} In this `simple' usage of \texttt{mppm}, the point process model assumes that all point patterns have exactly the same interpoint interaction, (with the same interaction parameters), and only differ in their spatial trend. \subsection{Hyperframe of interactions} More generally the argument \code{interaction} can be a hyperframe containing objects of class \texttt{"interact"}. For example, we might want to fit a Strauss process to each point pattern, but with a different Strauss interaction radius for each pattern. <>= radii <- with(simba, mean(nndist(Points))) @ Then \code{radii} is a vector of numbers which we could use as the values of the interaction radius for each case. First we need to make the interaction objects: <<>>= Rad <- hyperframe(R=radii) Str <- with(Rad, Strauss(R)) @ Then we put them into a hyperframe and fit the model: <<>>= Int <- hyperframe(str=Str) mppm(Points ~ 1, simba, interaction=Int) @ An important constraint is that all of the interaction objects in one column must be \emph{instances of the same process} (e.g. Strauss) albeit possibly having different parameter values. For example, you cannot put Poisson and Strauss processes in the same column. \subsection{Interaction formula} If \code{interaction} is a hyperframe, then the additional argument \code{iformula} may be used to fully specify the interaction. (An \code{iformula} is also required if \code{interaction} has more than one column.) The \code{iformula} should be a formula without a left hand side. Variables on the right hand side are typically the names of columns in \code{interaction}. \subsubsection{Selecting one column} If the right hand side of \code{iformula} is a single name, then this identifies the column in \code{interaction} to be used as the interpoint interaction structure. <<>>= h <- hyperframe(Y=waterstriders) g <- hyperframe(po=Poisson(), str4 = Strauss(4), str7= Strauss(7)) mppm(Y ~ 1, data=h, interaction=g, iformula=~str4) @ \subsubsection{Interaction depending on design} The \code{iformula} can also involve columns of \code{data}, but only those columns that are vectors or factors. This allows us to specify an interaction that depends on the experimental design. [This feature is {\bf experimental}.] For example <<>>= fit <- mppm(Points ~ 1, simba, Strauss(0.07), iformula = ~Interaction*group) @ Since \code{Strauss(0.1)} is not a hyperframe, it is first converted to a hyperframe with a single column named \code{Interaction}. The \code{iformula = ~Interaction*group} specifies (since \code{group} is a factor) that the interpoint interaction shall have a different coefficient in each experimental group. That is, we fit a model which has two different values for the Strauss interaction parameter $\gamma$, one for the control group and one for the treatment group. When you print the result of such a fit, the package tries to do `automatic interpretation' of the fitted model (translating the fitted interaction coefficients into meaningful numbers like $\gamma$). This will be successful in \emph{most} cases: <<>>= fit @ <>= co <- coef(fit) si <- function(x) { signif(x, 4) } @ Thus we see that the estimate of the Strauss parameter $\gamma$ for the control group is \Sexpr{si(exp(co[2]))}, and for the treatment group \Sexpr{si(exp(sum(co[c(2,4)])))} (the correct values in this simulated dataset were $1$ and $0.5$). The fitted model can also be interpreted directly from the fitted canonical coefficients: <<>>= coef(fit) @ The last output shows all the coefficients $\beta_j$ in the linear predictor for the (log) conditional intensity. The interpretation of the model coefficients, for any fitted model in \R, depends on the \emph{contrasts} which were applicable when the model was fitted. This is part of the core {\sf R} system: see \code{help(contrasts)} or \code{options(contrasts)}. If you did not specify otherwise, the default is to use \emph{treatment contrasts}. This means that, for an explanatory variable which is a \texttt{factor} with $N$ levels, the first level of the factor is used as a baseline, and the fitted model coefficients represent the factor levels $2, 3, \ldots, N$ relative to this baseline. In the output above, there is a coefficient for \code{(Intercept)} and one for \code{grouptreatment}. These are coefficients related to the \code{group} factor. According to the ``treatment contrasts'' rule, the \code{(Intercept)} coefficient is the estimated effect for the control group, and the \code{grouptreatment} coefficient is the estimated difference between the treatment and control groups. Thus the fitted first order trend is $\exp(\Sexpr{si(co[1])}) = \Sexpr{si(exp(co[1]))}$ for the control group and $\exp(\Sexpr{si(co[1])} + \Sexpr{si(co[3])}) = \Sexpr{si(exp(sum(co[c(1,3)])))}$ for the treatment group. The correct values in this simulated dataset were $80$ and $100$. The remaining coefficients in the output are \code{Interaction} and \code{Interaction:grouptreatment}. Recall that the Strauss process interaction term is $\gamma^{t(u,\xx)} = \exp(t(u,\xx) \log\gamma)$ at a spatial location $u$, for a point pattern $\xx$. Since we're using treatment contrasts, the coefficient \code{Interaction} is the estimate of $\log\gamma$ for the control group. The coefficient \code{Interaction:grouptreatment} is the estimate of the difference in $\log\gamma$ between the treatment and control groups. Thus the estimated Strauss interaction parameter $\gamma$ is $\exp(\Sexpr{si(co[2])}) = \Sexpr{si(exp(co[2]))}$ for the control group and $\exp(\Sexpr{si(co[2])} + (\Sexpr{si(co[4])})) = \Sexpr{si(exp(co[2]+co[4]))}$ for the treatment group. The correct values were $1$ and $0.5$. \subsubsection{Completely different interactions for different cases} In the previous example, when we fitted a Strauss model to all point patterns in the \code{simba} dataset, the fitted model for the patterns in the control group was close to Poisson ($\gamma \approx 1$). Suppose we now want to fit a model which {\it is} Poisson in the control group, and Strauss in the treatment group. The Poisson and Strauss interactions must be given as separate columns in a hyperframe of interactions: <>= interaction=hyperframe(po=Poisson(), str=Strauss(0.07)) @ What do we write for the \code{iformula}? The following \emph{will not} work: <>= iformula=~ifelse(group=="control", po, str) @ This does not work because the Poisson and Strauss models are `incompatible' inside such expressions. The canonical sufficient statistics for the Poisson and Strauss processes do not have the same dimension. Internally in \code{mppm} we translate the symbols \code{po} and \code{str} into matrices; the dimensions of these matrices are different, so the \code{ifelse} expression cannot be evaluated. Instead we need something like the following: <>= iformula=~I((group=="control")*po) + I((group=="treatment") * str) @ The letter \code{I} here is a standard R function that prevents its argument from being interpreted as a formula (thus the \code{*} is interpreted as multiplication instead of a model interaction). The expression \code{(group=="control")} is logical, and when multiplied by the matrix \code{po}, yields a matrix. So the following does work: <<>>= g <- hyperframe(po=Poisson(), str=Strauss(0.07)) fit2 <- mppm(Points ~ 1, simba, g, iformula=~I((group=="control")*po) + I((group=="treatment") * str)) fit2 @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Studying the fitted model} Fitted models produced by \code{mppm} can be examined and validated in many ways. \subsection{Fits for each pattern} \subsubsection{Subfits} The command \code{subfits} takes an \code{mppm} object and extracts, for each individual point pattern, the fitted point process model for that pattern \emph{that is implied by the overall fit}. It returns a list of objects of class \code{ppm}. <<>>= H <- hyperframe(W=waterstriders) fit <- mppm(W ~ 1, H) subfits(fit) @ In this example the result is a list of three \code{ppm} objects representing the implied fits for each of the three point patterns in the \code{waterstriders} dataset. Notice that {\bf the fitted coefficients are the same} in all three models. Note that there are some unresolved difficulties with the implementation of \code{subfits}. Two completely different implementations are supplied in the package; they are called \code{subfits.old} %(used in versions 0.1--1 and earlier) and \code{subfits.new}.% (introduced in 0.1--2). The old version would occasionally crash. Unfortunately the newer version \code{subfits.new} is quite memory-hungry and sometimes causes R to hang. We're still working on this problem. So for the time being, \code{subfits} is the same as \code{subfits.old}. You can change this simply by reassigning, e.g. <>= subfits <- subfits.new @ \subsubsection{Fitting separately to each pattern} For comparison, we could fit a point process model separately to each point pattern dataset using \code{ppm}. The easy way to do this is with \code{with.hyperframe}. To fit a \emph{separate} uniform Poisson point process to each of the three waterstriders patterns, <<>>= H <- hyperframe(W=waterstriders) with(H, ppm(W)) @ The result is again a list of three fitted point process models (objects of class \code{ppm}), but now the fitted coefficients are different. \subsection{Residuals} One standard way to check a fitted model is to examine the residuals. \subsubsection{Point process residuals} Some recent papers \cite{baddetal05,baddmollpake08} have defined residuals for a fitted point process model (fitted to a \emph{single} point pattern). These residuals are implemented in \code{spatstat} as \code{residuals.ppm} and apply to an object of class \code{ppm}, that is, a model fitted to a \emph{single} point pattern. The command \code{residuals.mppm} computes the point process residuals for an \code{mppm} object. <<>>= fit <- mppm(P ~ x, hyperframe(P=waterstriders)) res <- residuals(fit) @ The result is a list, with one entry for each of the point pattern datasets. Each list entry contains the point process residuals for the corresponding point pattern dataset. Each entry in the list is a signed measure (object of class \code{"msr"}) as explained in the help for \code{residuals.ppm}). It can be plotted: <>= plot(res) @ You probably want the smoothed residual field: <>= smor <- with(hyperframe(res=res), Smooth(res, sigma=4)) plot(smor) @ \subsubsection{Sums of residuals} It would be useful to have a residual that is a single value for each point pattern (representing how much that point pattern departs from the model fitted to all the point patterns). That can be computed by \emph{integrating} the residual measures using the function \code{integral.msr}: <<>>= fit <- mppm(P ~ x, hyperframe(P=waterstriders)) res <- residuals(fit) totres <- sapply(res, integral.msr) @ In designed experiments we can plot these total residuals against the design covariates: <>= fit <- mppm(Points~Image, data=demohyper) resids <- residuals(fit, type="Pearson") totres <- sapply(resids, integral.msr) areas <- with(demohyper, area.owin(as.owin(Points))) df <- as.data.frame(demohyper[, "Group"]) df$resids <- totres/areas plot(resids~Group, df) @ \subsubsection{Four-panel diagnostic plots} Sometimes a more useful tool is the function \code{diagnose.ppm} which produces a four-panel diagnostic plot based on the point process residuals. However, it is only available for \code{ppm} objects. To obtain a four-panel diagnostic plot for each of the point patterns, do the following: \begin{enumerate} \item fit a model to multiple point patterns using \code{mppm}. \item extract the individual fits using \code{subfits}. \item plot the residuals of the individual fits. \end{enumerate} For example: <>= fit <- mppm(P ~ 1, hyperframe(P=waterstriders)) sub <- hyperframe(Model=subfits(fit)) plot(sub, quote(diagnose.ppm(Model))) @ (One could also do this for models fitted separately to the individual point patterns.) \subsubsection{Residuals of the parameter estimates} We can also compare the parameter estimates obtained by fitting the model simultaneously to all patterns (using \code{mppm}) with those obtained by fitting the model separately to each pattern (using \code{ppm}). <<>>= H <- hyperframe(P = waterstriders) fitall <- mppm(P ~ 1, H) together <- subfits(fitall) separate <- with(H, ppm(P)) Fits <- hyperframe(Together=together, Separate=separate) dr <- with(Fits, unlist(coef(Separate)) - unlist(coef(Together))) dr exp(dr) @ One could also try deletion residuals, etc. \subsection{Goodness-of-fit tests} \subsubsection{Quadrat count test} The $\chi^2$ goodness-of-fit test based on quadrat counts is implemented for objects of class \code{ppm} (in \code{quadrat.test.ppm}) and also for objects of class \code{mppm} (in \code{quadrat.test.mppm}). This is a goodness-of-fit test for a fitted {\bf Poisson} point process model only. The model could be uniform or non-uniform and the intensity might depend on covariates. <<>>= H <- hyperframe(X=waterstriders) # Poisson with constant intensity for all patterns fit1 <- mppm(X~1, H) quadrat.test(fit1, nx=2) # uniform Poisson with different intensity for each pattern fit2 <- mppm(X ~ id, H) quadrat.test(fit2, nx=2) @ See the help for \code{quadrat.test.ppm} and \code{quadrat.test.mppm} for further details. \subsubsection{Kolmogorov-Smirnov test} The Kolmogorov-Smirnov test of goodness-of-fit of a Poisson point process model compares the observed and predicted distributions of the values of a spatial covariate. We want to test the null hypothesis $H_0$ that the observed point pattern ${\mathbf x}$ is a realisation from the Poisson process with intensity function $\lambda(u)$ (for locations $u$ in the window $W$). Let $Z(u)$ be a given, real-valued covariate defined at each spatial location $u$. Under $H_0$, the \emph{observed} values of $Z$ at the data points, $Z(x_i)$ for each $x_i \in {\mathbf x}$, are independent random variables with common probability distribution function \[ F_0(z) = \frac{\int_W \lambda(u) \indicate{Z(u) \le z} \dee u} {\int_W \lambda(u) \dee u}. \] We can therefore apply the Kolmogorov-Smirnov test of goodness-of-fit. This compares the empirical cumulative distribution of the observed values $Z(x_i)$ to the predicted c.d.f. $F_0$. The test is implemented as \code{kstest.ppm}. The syntax is <>= kstest.mppm(model, covariate) @ where \code{model} is a fitted model (of class \texttt{"mppm"}) and \code{covariate} is either \begin{itemize} \item a \code{function(x,y)} making it possible to compute the value of the covariate at any location \code{(x,y)} \item a pixel image containing the covariate values \item a list of functions, one for each row of the hyperframe of original data \item a list of pixel images, one for each row of the hyperframe of original data \item a hyperframe with one column containing either functions or pixel images. \end{itemize} \newpage \addcontentsline{toc}{section}{Bibliography} %\bibliography{% %extra,% %extra2,% %biblio/badd,% %biblio/bioscience,% %biblio/censoring,% %biblio/mcmc,% %biblio/spatstat,% %biblio/stat,% %biblio/stochgeom% %} \begin{thebibliography}{1} \bibitem{baddmollpake08} A. Baddeley, J. M{\o}ller, and A.G. Pakes. \newblock Properties of residuals for spatial point processes. \newblock {\em Annals of the Institute of Statistical Mathematics}, 60:627--649, 2008. \bibitem{statpaper} A. Baddeley, I. Sintorn, L. Bischof, R. Turner, and S. Heggarty. \newblock Analysing designed experiments where the response is a spatial point pattern. \newblock In preparation. \bibitem{baddetal05} A. Baddeley, R. Turner, J. M{\o}ller, and M. Hazelton. \newblock Residual analysis for spatial point processes (with discussion). \newblock {\em Journal of the Royal Statistical Society, series B}, 67(5):617--666, 2005. \bibitem{chenetal08} B.J. Chen, G.P. Leser, D. Jackson, and R.A. Lamb. \newblock The influenza virus {M2} protein cytoplasmic tail interacts with the {M1} protein and influences virus assembly at the site of virus budding. \newblock {\em Journal of Virology}, 82:10059--10070, 2008. \bibitem{digglangbene91} P.J. Diggle, N. Lange, and F. M. Benes. \newblock Analysis of variance for replicated spatial point patterns in clinical neuroanatomy. \newblock {\em Journal of the {A}merican {S}tatistical {A}ssociation}, 86:618--625, 1991. \bibitem{pent84} A. Penttinen. \newblock {\em Modelling Interaction in Spatial Point Patterns: Parameter Estimation by the Maximum Likelihood Method}. \newblock Number 7 in {Jyv\"askyl\"a} Studies in Computer Science, Economics and Statistics. University of {Jyv\"askyl\"a}, 1984. \end{thebibliography} %\addcontentsline{toc}{section}{Index} %\printindex \end{document} spatstat/inst/doc/shapefiles.pdf0000644000176000001440000023074312333041757016523 0ustar ripleyusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 3451 /Filter /FlateDecode /N 79 /First 641 >> stream x[[S#~?BoI*5:ڪpx=fƞpSu nI_A2i&d))e:v1#c3vϜRLpǜ rLH 闣]&ס2&bḡB&9t &u0i zaNF;H=&$-SBL:̒1S)2V b`Z2"~Ì3hX/3k1.X9)p09&9>~c!*b,6X -WLgb~;0=MrɐL@ZK,86@"LI"b,C VP˷ CEHZ5TpKF HΣ+dS+4KrTФV%yGJGs T7JC=rtC0Rl4e#pYqot-NjuM8 jj,e:Y?`c Bᑷ@SIdN"Y?I1ī<͈%n:ϒ9d:I@E-*X-@Y4Y71ﲃaFrh}E:&xF'{[r˗ibXf/e/ KJPчH`7MW/.AQ@PrtOg{ ouy1Er[.u24G/KEQEhE+Y,88?c@ӗu&DUijhhX2ބ-W a9ףlu51%xoLTW1icțt~FYκtIGUc17n%UXxtEIt'hfmXpհtqPׄxl} 6習1Dl\!f')ѥ"<*"+R Uk@&T]rUh1JXK'sQ<\^s9;ݜ}&Tݜ}+ewԚp5HE&LV{&Ḫp 51jp|Oξ^.#'+bq bbQz`Sb6Eel3ɧjS 6UDQʧS$|b:Y;|.uHj']L|b!%/+!pMg֎);9PV= Qo>gA.h}f<$Z`Br F!v,*`ԹT1_ I~%7P)tj~%Awp C*_QnчbYZ6?~z7XggrnXO "<|Q Pl]zΟM\.7acxGnK] "\h]~LUF<|:N PLnѕE"I$+)KX)U 4`X UVR8s~6c7tf 3l`&6pRB>R*pJv#\w=xM详P_M#ٲD\gZ,mۓAWW |D?G9WWܯ\]'nkܬ`*`6.̨JOqid?>g*;hѴШ:=l1Ƙ$ [+:atQ}3!ڒ!Gg6B Rs᠗EA災@oY qpGá K!rꩀ=,2b Ԯ<-:lIIm'TNBf'{(5:N`9CcnAY:XR`%W2J^u66[ vU76lKϒ,/-b;&͒Y (+9MEgg9[:aݑq,׼<IöUӶ׶`WgT>S9.,[lYh-e9KMMmi5b~Z@@Myk<%~2h%rq:o,{_amM5-bEHSJ_$ uoHuâ":۷A|sη6viiZV,p ZlF,Jcj쌶HtF(Ʀz>'I%OwDURz01E(iVDYWMhmatП=|-`tAxs[0M07w_P缦#=>{˧״ }SB73^rں Օ⠓W{5 +:m&b-"Oq3-b+ Ӷf"v# n0 wrGxaNlTL8z"'3*|JqAURv:l^l9|q-}n:uiWq@!ᡉ1Va.< {pq;49Y!SVs[ ΛxhH%{88kxTٴdSM nk?ؘ69VvmǤOO\(S|RFLYG,s#wޞ7_nƑTis,ym2 H~yTOO[=<*l̔ᜳs~gg?Ϣjed0۴^ #Bzy[ٵqfa\c`f: *DΗЈTPɛ8*z:}ņ.x|qMSʂ 2KoTϮ6xJ_ Γx` ޺io4`a2k5n7gmNO){S3ĸq !SӖOYV0^T<唐y: jIA&+ZUy'Hj#N Ά`1eN֕H,}Fxc G.I'_'$G/vd+V|P*;t?ӻݎc^~klշĖDboz~@$?Br~Y-jטtUP M3/?̬~ +?c_Jendstream endobj 81 0 obj << /Subtype /XML /Type /Metadata /Length 1337 >> stream 2014-05-09T10:56:46+08:00 2014-05-09T10:56:46+08:00 David M. Jones CMR17 endstream endobj 82 0 obj << /Filter /FlateDecode /Length 3275 >> stream xZKo# q#Nrd}ZzgY|*ޞ(rH*6٨Qo__67 BKZ7:F{([F;&6AQ9vFsyoh0JC>pi3I.cPi8a6(m[GC7?oD"BYn/)o1fc ѿl N@UJ+TR64؀P.v ˴d NJ6cv6Ϋ_H;mңN!j~S4rMrԘ@vx/$FXc౐MpF Ce-@.K`o|:^w j?kO8ֺ#b/+AB_='wd,<Nm+r! nq#7;mGRjcsx؛z =ygf5+Uָιф\-~Y0)pLI D<@kmN.yW`B5TuѳZ[]LKL[+Qb4:ew%Բ t0>7_g[JN ds,LP8?YKw!v<)Sl4*`"Y?/JKe&І6|jlv]\9)'(gx8t8Fwz8ޗLl0Dqgr2E寘R1h9[[˄RT FޔCLLJwߟqDz1" F6b2׳>KR{l䊯T ʣ Hñ(j~_ D> tLR7*HϤ/YÊ$B§+S\1ts>^J]xRA߯nem\u {~OHQ u8d3{W-FA/=#Fy}=[E :$mb]ó#eNm -uq"_+"&Ȧ%H!жal]UQ,aN$'( ̛N3EqMpQgwVtx )d5{"pS#adEYӮF݁ToX+nzmf^Nm mh0 8Nֶ  ^3$H*YZT suhR UGij?rBfg55]4*M7Y4o OųjHq\~wqGuџ̃ar]Ƀcߔ,ܺXO!T#}覹CNSd%b}֚DҜ )8pu87 O-K(ỴT,$m"< T9z[fG&JU;C"Q|0d$̢.uvӮJ\P06 ;G<_Z4{zS]̬ *zsٱscmU@'ϰeh hoLA|y^s[9\pZiA7˺Uj}z}nUT18@^5ʄʾUd'zVw ^,Rt#tIYlJZN2_/ .ڢ%4ZXr o@i:jYф>\=@=VDRBHWKr+ zsYqԝKB ?ct_{cʳwSd]5l6xμS ?֓WimTU =RGev_IegR1F0B)R)snn$S\z %y\SҎTYV[ݽ,u73 NwE||lCiuV76mNi_C>O I9 !_Ub׫NؑS?|j6<3/w8"QBz))uIP7?1wĂ-eM=.Z hKTq+ md϶]n>Z ަVRͧ}BӲ/ړ't6yOÂ{˥E}JEemc_/e8Zӄ :cOsTNtURrݼ^k`}Ks&Ck* ˻rv)LISU]]P|C]9Y$۹iU1WbZYOR*f_ 㠊H$)d=SzrܼB[1.B/^}Kqө$]/dpZ2}MvI g]&498µWpm}I;dLV]X`E btT/lrw KpP P %[Xro/ }Kmŏb7`'PТЖ> stream xZKo\x'~Ac8K")R6ɕE*}3]=]=6կꪯ_Wj+?~8S_4wU~]ܭzCϐU֫Wg~}y[bsuWĹÊ[czw '5 &d֗xD{θ<u6.=LfT\> `mM?<\lO0Y=o>zI+CXrwԚnqTͽ8%+獜OF _|`r(KDbZH;etpwtl0F'UWMyVώ;Dٱ pfW)G%^nlJaw^+U 04Zp:RlEjW-N.[^ieMWg`)t' :hs~}_`Œ20%+&'}cEpewh*'[SɰHl-Q[^p mq%;tc^&K'&K];E(CJ:܆I8CM?xOe 6ԇ O4kFFFSxympLnGxx3VBe0doƒ>ܻo؉ vI[q< 1D כg-,^%{pwV`;a$QM&D1T5튊a|gvڷ Hu-|(* `.y 3&fۆM\ }zp` gDGAuz&Yf6ga  2L+eڸ+KYzYJe;Qr,IFߑSx3iOKIUw9p఑9_]UHE-ZD*& q}eP4&½܎oRN&N s#g%Z/jTz@e8Ŝm 1okXy=;,sJEFv!J1D-ˢ*%r"={ f %JaP>'AM?u¤ n/gnsdlq#c9EK0̘#,@WS$Z E|٢ ZzGCXHIXLYi((ի#oD.=_Y3`sz\I9gZ3ﴼmb9`cup .kqҎ 9 An>=WC։z:hd-pN*S "qD"Olλ9DaW5?'ϐ؅S)49%I4F ͩ 2X@[T͏ ߛ8e lN(9XStB $f%`\54QiK&bHIVSFN|ρqEYj#R~fKG2FPu%NSUkpa_@g-LgWHWFe2=T!{i82$a>@kPV!/6#Ubm|M j0Յ@9@NCf ŵ0t JZ;EsއKn:ۜ`@_J4 kIqwV9 Cm֦fo|m&(: tP>TY55 NI]ؠ+XtYb,\ǂ K&Ž7.Ta4CʇKmJ<[jUTR> stream xZ[o\~#~:[~)mݤ(4M7Gwū]+ CZ4:"\O}r}-.vGlqq]_'׋`e(N .Zbu}Swd^;].{6h݈9N鲗J ΤqA;ٍY1l(nu0Y`Zdf$vbG0s8_/c#x5wRfɰ{pL}k*/mV/g0U;N('#Mq\l wHdrՍE V!C\E%03%KA'y]ړ)-z!wμXDbt[6 bRAnUJGAx:խ $G1pAòW+`,,-X35l/(T1,S AŤ@fSp 䦐c!o y.wͱw_зM%~^V4Z x$NCT@It@ŵ含v,_U ľHv>:I:>4QpVo ur^7]9`W~:$NM7~R($J4/[[|לG/C} B;r%M$۲(V*x!_<5hI}zb?T<@9v/i{ȡϚ"x64(k-PXnYL-aүW*͘r|݆pp>-6&k,XI.cՠ{{9 ~Gv^B<1xt: Gjӹ҆SIgG|F2 nQ(9-F,3=m%|RpLw"7 뭖2Jr tDXp* R-ζsU|^b]=1ԬV31b Kr,Z޷ey}gLZ8"GoZmQ0." -Im*b(aO&4#ܲx1j/ֺsl{V}pN],s9.j:lv2mxJb1thh MSO])KT8ҩu4־$xK QiVn^"{Nf8?nf\ h^ZR_׆Xv@oܣgN2DqZo NP Tb$p'<@gam6Mj?hC8#Q P3k jWozAB {q5is&Vj.*10H~i?a.}{=,%Z {X1F=Q@؝Ʃ֛ wmy"B"o G7q:2^G9H,.E4f2 z+UIƖGmf7UAǘvczn0͞ta]n>Vn2Ucd 4_܆}|B *4&=|<^y߫V.ЄW b` )yRP= c -('7;-=D ^rǤk~+$0x8&C8"/J @yu~zP=\,酂ڗj =hFNp^Qy&1 ʻ%qDi/Mp5' r5 w{6\_Ia0O#[ n}GptpHNvZ6nJ<\=)B1UJFZy(} oub7dF!pWc)ؕ@mFr troxy6fيpfFTP0<@7nf*㕥6" W. *>,pfebfOT|aq-T=oመw0)¨֕°OzW73ZxCWqy[͑kgY?LٟQ RyYM3?B?0'LJs=!^rBXqjjCZCt-Bk{s2<*MG8׬sz˳l\aF/z5F'd{~t~,[g %B uNq}uo3endstream endobj 85 0 obj << /Filter /FlateDecode /Length 4576 >> stream x\Yo~Wq߇ap` M?ˢHb~}{{{vI =5风N$Ox/U8}&NL^>pLQDyrz,} 'V6~^IjZoĤc4ޮ= PLN(!FJ&J7Ʃ)D.}u K!81!e[ݮ7:([ve vC#f]*NʀS7V~^O_1:]p]ἷuc{`O?7^:rZlfblщ$oe ЮvIC+zS`p%Y@8݈ 'Qhz>noKaVٳ{ f^D Q%;҉MB{;IdTihᲒf*#U{!L ;a f| 'uM46ahA}^) ww|?iF;2f2` Hzl*&& 1:ލPANl RODS''f*y@߸v1"N@8+ wFx]MhVZk/Lǵv-?}r{ϐT"ivl\}Zo}51hglXu8f&'5L*E m_0o P0<I˿SWDfLwM\w0hپ'`͜Wg@8UWnv-c9Y B7ܬ_ ۛBmWIlGRTM+-dVy3=Ud)PU_-ͭyWH0`+ώZf #XRF΀AQkzN@ ۲Wc' B|he\ ":V/.bh<\0&hc2d\vn@V7clL&PΖ#FB'iaPW6Lh#@Wk :RB#eUUDC T2F~Idt9Ov@.*wLPD}iAs>"x5D -dnf8f zmzNWoA)'i`e@ %n %f gs#|`vzD^ԇ~p۲!^nܕs-@U}2Khû:|9|Yg7yo~Vo/ÅO,=/5GJƄEϞnP'1uA$_s6d C直<w8`:Vixм"@=9K̇s`3Fl`CER\^Vߞ wht6ǧ!i^Gʹy1NŃb (W Wt!zw.AuSN1* prMsy Y*5C`Zvf8D歾j Ka:n3UB#COxvYyC̍Hɱ߈ YK:J0<* ;2;Nnu_WkSYq4@tOYn"ɫUaFD;K,{Ti.if 鋪n[2_ݺ1~Im_0+>hlXU"iHt wQE#<Ȼ [ir\gDo)t=+Z{+Hqٕ*]}IøCha&bU/~\nS桰nG9?/ZOf`aWϹ@&UѸ4FB)-iw}}~i{SVYAZ: `?Y2JV$S]ܞ Wo"FP^d)D|p_^/r׫Gd0uɘG,$dWWU'COzڒ||"o*Hsɫv[Lq6bQWqhv@d!p7<ɾ˶/ƥX.DNvA޺܋Nޗjr }#>SGaxGc*k:}JXm_E9`V6{Ȃf|-Rve]^V^K+uQM]b{!}DuRM#sJY2bIAp^ J.{;^= i5YUQ"~hnh"ʶl?@L9~457zDC@@^Hj CmŽb_&c0`t@pW:9#uzY1b]DޘIisʞ#3Kz v_K&]E<*y}דb|o2bUءlƇBތKM. .f Jj Pmt3őG s.ZAJ=HV 5jgbRgQCtն5c?&/ra2 9>.$̖%m } iR;6%b;A frŭ|N.|056n,ɪ+tt/COjM%j-]1g(ɛ4ښ|G뜁jV|$K&#@Wa= 3!R9ccٞQS;8ܤ|1g=Y#jjt b'Yj֥;ETF9KBƴВ;R+ƁDfJk</?JE ! K+qX se;Us@y*Uvy$Yze) Ldx]O5B4ދ]aӎF0Y ʺmSSԥ;^u ߮KG*DPczc'ca/4Gw, 1CC !ǎ2oUToYqhUp0g90YKKY.s=g"@JN?m1* `d_cg(q4ݒ3;LԴ}bK_z 5en&K+ N.sU2=&G m]\[dtp@<H?Q-jGz/+_%DЅʍrR<Ezj*arFdV`! 5w, Z쪕?/[ҟ(sL%0cS0'u.tn\!>v(q`+X>Aԇ;=>>9r8%݀|9 8K^%z-[8R?u1> stream x\[o\~W#y{h zI''[I[ZE8E{gHró+Ynh~3o[яGrZy:>Js >+)E} $Mh9fyIcQԔhqntԷ("N 1Y ; 3J[}NGuybIQQw˧UK!H.:yBEYR:3h~=L oPqò12$baaѫ㯏 ~->ߕ:}X[4;rX r#.56ӜF(CN!z#<-Hz+I- v-ݠh ém%ZwkӽD@Ӡtm8vnBhے?&';%cA{|t!Ҧ@)e###q6hV7T ]68$=c,wvfF֩Jxnֹ 38&BW{2..Ȕ&I@@PH\6$xǢWn? i#IF.#MP8:C.0JA.=STl^hJbvf~alגNK@1"/:3l1ytH]7v*y qwۃ, Q4Y48/gǶ LE6r--JFl0{-HJt.AzȈJ"[@oQ1 n]ZX"{"@@νrQ}k=e}yڬ&_qXRdHC-.9 ރg91eɘ_R, LPKvAp}H07g{l7Q'A$^J>xL2;:FYI0Ͻ4.*埂G]3 6 0?-<"Se2cgqD~nK|[(qn+ 6܃ab h`$,׉ѫ5!` 'Eatb ~[ny] y8z)Z°+ꮖ [áI utVh %rhޣl`k|;$q,^j}O%f5\B BҨ~( H`vIɚk()P֧0j?1}&(뺉 n19*cD%+iɽd>"+퉇Yz. qmf?_!d^$jyZқeI\7 -s{֨~lQ;t[>UgF<Ź\f^]ĵ }){ZÈ5xAk*X0N6rMx`Z34jƏX'LH,^'U1ro ~]m^ 8EL~W q@_ͪDŽI}IIvT8^6}II ˎ]\ Y͆K)ä4r۰gtB8|^%M/ AI Ɨّt%|هDJ꧅sga21Z;&,s $Zƛ"gt kKKk{B?+lpi;],8ǎP Ex$ƕ &Ublےv }F/) ^=Q)"\SMvX>l}Qۿz /T1q Ҍљ 0c) H쨥p9DuN;Z)^==>Ԅ-*X82kYţ?7<]7C(P#Aԋ_f70Up};䭫w<j#0X>F}?%gendstream endobj 87 0 obj << /Filter /FlateDecode /Length 4618 >> stream x[[q~_q茦AA,#A hCKTzgg$am_եW~iŸ_w?W@XBa`G_ʐM_J)wlZ\nO֌.35 P-qp8d'c|8vDʴ`v!_*KڟGcrLO՟ӈPJJV}>_~CGy1r{d)mYCwOtb%ߟ v8ݿm^ 5@ mDNǒ}ZtZJ0˜OҤhIMO ōewG.aSy7D>!G ru1 ޟ_Fř_ [Q)1L2\hgDt3$+#yAS%Y9siyVW0c8p2Gٛ1..̼-b!˜RS2!vkɀV+RJ66C#Gԡ$>ZĴ;Z7@YF]2TJ9m ؂f6PEf2!雬c f̞$Rv:Ή2}{o*cj&4Ly&F`p cj6RJ]Fv fVȹzYJ&лA,G9.g6D>‹uKhսjyIy}6n:|л &ʶЃw >r11w-4g=75 KvzV D^6\L88]1u/T:T]M5?lSFU[ᤖ`U?!m\4چO>=MbW=rdH^dK;Y-!Lبwz:Enƾ{ohe|j*iԷ+\χΫ4?uiɼ>!Ӯ}޵w?ߵ}>[MgY͚0<:z/IoںבNr=*nx\7US}Z,B/.榱9htF;S*a}5esj?e?{Ia?&@jv~׫JWyOuʻR bv߬zU9Bozu*(uͤKmy*7߯"WGLbS5 NJ\q^LGb_" ؕhAV(+r},sn'M7SjJ5StY{4-$S1POq9ԲA"L)A.տҗ sy3ϜF+UOIJw:UʩG|VDQ^c(xgrHj"D/\SPԓ':;:3TGx|;|w9$9P8بk.4gޣͨokawHFm{{X5T UQǒ AiX>[#g*RRaUY]Ubbs:H ѠZ(XON)HǪ~Lvy5bJ鬇ScֆZNn`A?'r<$eK:@ O߲-DdǰVTo]H]W94%$T/7) 첪UlLtzZЧ_&yA*Xw[)d([=|ʂ,tK P/ʈ8TA/7Z+^cqNB3b+wx YT$IھIf$R1OwCȝM@G(=AO2b!D=PbCf DPQOd y[3 лNB. D-E(=tLAoHB3`칮kB,30J/)|փ2&:>QP[HdL\X35+x %fِ&aἴ%4֎+"X6CΙ`XxDX Ja(4 6a2{B^A"1E04rR@C& mB.ԶG33ʅ{ ͂XhyW}l0^JBmTW&)o:E LU)w!EݸYQĊ[/#Կ]۷誎HWLǭW"]덐}4me.D7i0Ϸ K!ΨՀG+w2ԥ?,JOc蚳DOT͍Ԣۏ9zOtYo=_kУjϡMtu}ܞU7~2A:$crz^jP?Sv@hd@^<ݵLd k'&AjS}D>mWMgM?6[y8zMt4(S}b6J^DwbL|EWwfy6YCHwхR՛5oӘwpʶ{~P69-p {O&ݓp{\@_Vt̿%U^zRȷ?H$ 7h#=Bؐendstream endobj 88 0 obj << /Filter /FlateDecode /Length 4437 >> stream x\KsqОfzwRxڕP"| CD8ߝꮬZ,6둕Yù?/`Lߜp_翺Ó./U}إޝ;ٟV\oRav ^*j4+8X\sy)O]swݪ?2Cs41Si<)nϋ=Ӷ.ߟ]ĆۼҼj nuy|yζp0=6#jgPs(wypWߖ4o}w=.Zx;ϛ+Vvh.]Q<^WI*S=%m5mP=/L˷)e<wj=4;t9EV#\73Jԯ6D*9M{*|huA`Ù$cbhyF+iX CtZPˣExm ޿QSCiEu*c\ac [I~5v\Un_ywI^p^ gCgaڬ Brzx[Z^vLҺLL$cgW)3؎cidj/|QGc&=Q>l NF}b [Qo5/Lp-z-g58:z)7bEF)X}Yk05}}h(g\}H$k>оco2|xOSA_M=C r;?+)%>`<?2$[pfSt=7/>e_9h) !mFa_Cdp΃r8.Nj_zߑ¦pJ|(Gv+:$78 s0xO{.@P~~[[ [LexSt2tv0A ž孾!LCJ;@D-igˁ&dc\ tViI;~ Ham=Yt:֣ƴ>A{W nȃICl3XxMvӏIr:~=f.\Q}M;I]B-m9I:g$P-Rn.ڿ}Agwd\pY)[bzZn<[ATMG0)0djVoT@ $>.HpW: ZXF>ɭJ;Fÿ$XJ0Už_K"ΝAY3_D?!M 3\@ $R0U=b6y@E;mCY>LiN }wdO SͨD6<%:n\f0M#& $o'F7) +룕ky`mGC)d5rk   %k+h }j7XA[R5̾𘘼&-~~ķM4hBE ^_a8({MqىOa]nq}TP=Gσ\(ee#{kpr聦 HȟS xJ5vN2n\RDE Ep(hZ18~䑴&4lKMpB}-HC&َc^` r6Oc1{*Ţű[xQ3|lSkaTf$LTB:O&r'Fh8"gFqh!̈́h}W&".P"-tpWߖ~3Z1UL2ѠBgl WpV*'1JG"o/LS+z-1"%2wNj6(Q\ /Eݯ~Fk4N~]1lӈAO%: 4ϹيIg"w8w'AB93ͽ=e6cyj57@\ӏfɁGr屒 Z(Xa3Jb;W'bCi҅-* Qc4#]m|~,b<&?hM$fp`}2p#u(ݶ-L θߖgV37/BK_Sf& `-MH6=S8vI,D,"(覼}ɫڳ@> )i*>t0Y4I <IB 4 JFE,] !C 1o(g3H:4ߢ_ì¨Q[ށ jM/.t|/"/6vTTo;fIʡ{Uh*qD@ 8cqdP*yш]5L&Y_:vVG3uxxo R1#}FЛ=յmMVmdD+Ҍ{yw5PT t#kkyRFWL6\-#QfI~⡢$鬩N@g/wxVMyuר\)`t1 1. -'TsxTp" th>mJS|J)BIusu(4_}-P@{# m*7&u<;Ut+X[ҭG.q)!C5yb6 RSF@2s تB|ƫF~MB p:'1Y!ѷB4ϭlhfjfeIᑶW>kP'„c T$Q0CSJeBm~9@q1NU;hbmGBZ*]\'@dAWK,{EN%ƪ]asugKa37Uԉa:3oo||xn"SܐOPhkvYPh^d '3's$nf!8#嚴8.W" _Ls6I1)${fʌ͋w7 qy͡rΖG NVy 9d'#3aՆ>֍`Fdc,XDbRz§+Si㛧74oS`>kܩyQrC9<12uBdC1OۇHo`u)뭪Ko^mW?wa9Y?}O1m” 0؉O\%tߤ,oU5/3z6;-gi,1><ҋshFIS'Al/ Od@ [s-kkhI Q*jJU [ *י~r*>N:)ɋ4ϩԺ?!++BԘwբi벼Q7Wh_|ҾxmwJh +8 9c:;gŧaus1OM餋.o$_ldۿ ]?!2)?bOf8[,UQ'-˦?ksd=t__;_ endstream endobj 89 0 obj << /Filter /FlateDecode /Length 3620 >> stream x[Ys$~W#4i>l pz<-HE 3zg$*rkwb?>K7wGxsݑ_Np3!(O.ҧ:vVʆ룯,WVA8]7 <䦒+M%UJi !.*EO+y[Jn*JT/E} kc˺*:M%ׇf3=[Dn_H+;mAN@{JU2_hw3W0t5t%` =?tiYWg>u_w' ~u< /u+V&,WbPB a.rj0c[I]@yxecpVݮ+ZBu̫9lqT~0R:RKAC A?$]H,2҂N8e+:Aΰ{ N(!3O}SiP&;I6ބq mbr&6P<#zvTQ^V>2v0>n2{akhtBdX|+aFEZThu?t=M;+C̎(+05& T%a$U~ !JEH}RkiI%VJ-{A) =(?oI9V[ A ,ž^6;Lm*52yϽoo;G_w$fAp3jPⱨoUhpF Kp1sILVE1+gYQ)"V.?38賈C0nRK87h]`Vnx w[ +Β52p~p.P/< .Egay952$IJCFߢ2CT2k&sWX Dhc]dY/}hDtِ?-T\2eʧ8zA }VnN: 7i؁RBNg(,5T3do/W,Dht ;i60C妶D 1?9xeBg3tHB* ``dgY=hXz` P"B(Ev=O 5^g}[JN㠝)r~^ G$ zN^fʣ1R0%b(Cj|"o'- Rjͅ.e2uYŀ.뮖xs08;|\ӟs]9)qG'ɼfsQSE`6ʴ,Q/+2.WYݫ&w׷f6z0GEqNQ$ 8;2ֵr[82N<̗x3քD7/`*޷5xuf,Ent|4[P 1V0xAI_P%8/Kfn3 2@~9AQ]d RLA@VM@h0U=M85P, # VRjJVԲz'jjBjHVx{H,zH+`Y {&уFo/fUE%g`}b­jʔ657fP/E6qB Va48Skd3DpHViq C ( 09pzq;`a\5bP:1y([<<ߔǎPquiArXWԭ -Ct&'2I*e)İ80cidjxs41 _<İ-ۧ8c|C\][{ 03>gsDKw`h*"wBC9h].٤\#aN7c~azl+ 6㴞t$ 5آ{=#BIQ|~Т pq 56u $zfSЈ;mmkx$>w̷`FT9PJaUg5>D*IA*%S,{SZ'I|. 9$HZhJ0J{H@7,G8%;s/j;!驩otS p,4dڎncL*rR'-$1 Z r؄f^q㴉Em~KF8_K2)rIRˎ*nONMCzY2&.o ,6Mup 'hr%Xe81݋~WɗuWYOz/x)gWu/Yw'[{oZ[^~?vw~h{UɗU1$"/2q%\eJ_gSvNT|-k !:u~\f(Ϙ>se_3W->ܢjİ@`a#136~W]R#Y&oҖR{W7{IYl%p<>gp7aZ`d QjYL!iv:F 8Vd.M'OZ "<ë9 UA~ x4iQ&gږCBgYA`*%kA#j޾¨JWM> stream xT{PTW%ltBvb^ɴ΄93goyH"4 IR=%5vy*DX-5̥ACWѺ'y%]W,,ڮrU:Yb,6.nFً11qWq3Z{AG/7uKJ,cЀJijy-{ٿ̢}:]ל:hk> q6aH-컸j/zfp!gD.ͽ|}Y.VO%?&mzV9p¿)FN3.\ӂ!y(k*+ã=)WJgK<^Klx[-ݙw K(qx0h p9َCE Պ|ڊ47NtdʰI.a~p4Μ} Y-| UM-.wS[y{Be(Ұ\w8)/u*3e+p~?IQȃߠU8t`7ueg`?/g6"E7= E2}>#)D%Å=q*Y! SC_6VLΊ-3>c`ԕz 6o'}ΌS ]6t>J R*B0n @L،ZavB 8~~BN)qg4ȵj&8N0&TPJ[&oPhJ/ ؟Éu~H|?{YR`1VO yDDX#$3%+fARDz.||Px*۽^w#C)8$pxODhuU(Gֈ4fg5PeP&|l   endstream endobj 91 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1337 >> stream xmLSW^TaQwlpt0)8beF@fB[- e(oE " "-QtSW:}Xt8]s Q.ɹ{!0$II2779%;EEMʷ+HDq3E#47ٶ-lqXVW/ONOO+OIJJ/6bITQ AXf Z̛gUDrת &R稌jĉ#lXU4oR[MAD-`L$1)YA5D.$D1ӈh"x D81Bfް0H,9E=3RCq$Dޠ/@E'=&p4yŃG(8Rxի'&(elP nr jP!Ҟ>(Y҉}1?Gi?͖t35e`2G6rL ^2-[(5ur">CwAmb}Ni|J1mwKh5٪+힆v+P:>TPG+t2''BJ@mto~Lѹ Q?Ǜ ܌T{dvnr(!Bx]q7u0%5I.qO@N i-,P a7){ΑcAT)ҷTRͽc.v\^wk/t`ZݸfҞW] ˨%?z?IG78 7]#[q**5U/PTp|G"wDַi*$}Yo◊_)BCct/pF[]ba;mPS&82NA,&M(`{GN}huP•`ˏp9!(†oq =N]$ooknTŮz[%S*qZR$B{BY\; Bm@"tiX|&ժ7B*őAtTp q4ʉC3I8<3h&fp13V(}ƕXVbid4TX:3mLU[LF;67U4BUV;v{'rbb]Cz_"p(į̡=QE-d+:M?;n"r\斝{V/; g#)kaspeQP-_;U .>.*>&+inNL^Hk;Vy;Z$;p9r "endstream endobj 92 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3286 >> stream xW TSgھ!{eZvbUuuAE BBB@@ M$k@AHk[XkVtǜh?99=[yy+(H$Z>.bpq<:m`:"J%d پTeLT^˗/xѢʘ2pU4.\Eb=HUoV[099yAx\2j|UG4ALFxTqR p &~}q*_!U(zuG2!1)|_j42*0f^%z 5JmS;(ʗ >R7G-6Q˔+FHMS,j(GJ'r;lws\xdL;VSN}qjk38qF..amT vfXD/G7"5AKұ}rFF_04)h nJ+y.鎌˘ :Ό JNFn%p '7A*{lX௜pM0"BX؂Yxͪ6Yמ ws$xVP0,#4vLQvp8߮J(haF7"Zqq#UB_;ǚHƗK .~sm/s%t2`z.%/Xd84M}ǒ ;b-G6TW|Gv~4l{=y7A[D-#eD,,b= v?O3$h4!l$ > Z{jڡ "Z&hWޛ"%;:*Bn:4T&J5YIlGK:T(Y;[hfJЯuW5~(PX"$9C$/L&OrKGjq%((rs!gX,氥)\KOn glOJ}t4aItm}FMNJb!.1 5jö,G>UmL6eT& SްD.0dA^*gѩWf뭵 5{O5t-j/PWSVohAa`h"0 WV6Xaq4dNxx#]4CTˁEOG68jt0^4˜ P E&A%?u I{ :}\g,eݱ#jϫ*0lgHLnX:Qmȫb(22µ4sQhߕ:CBBY)OfV76DA_H4ޫ] V2+GySfpOkT/0sU_É[Ts~ρ};ZYa&]hA1Dl4B6bх%̓ cĢo(cxC &04ti1o[ Oc nO 0v%F,|C,x{z3APNwLW"vG׼Xsag6dKsPW<Cg.?'-.^Ll xh/loHLMKȤ" \j⟧}.љqIe :@'?D#}*~-f?Ӓgo:KjՉ dQ` mV]wvEh)KH#S 4u(ތ|' ,X2:}] v߹He-+!eUiFy37%kS3l} NbGE/.'^0ENvL)oN)Vpl1cQzS~-Dí(WVd.\EW\= |7m9`$B _&?OY,d3wDPsqѕw֯[Ygf +Kvo`~~xͭΦ]5efBmQmYDzzx 0G Y& F۔T/W$&548"˥D)џ&|c/8n;>JOoGgǎ=:IZ\ځchE3fc@E$mH?AęQ'T; Қ@(‹I$Aq#ĂP 𥡒qN) TP[P Lrrj_Ӝ$y>g 熠?ӗa:8 3SyIdiaB/wri<fQI??^M7 MlwX9 ;(Xp@},z-xsJHR(cL]YHOSC/"W4š:7vc^_KMQ9pdهc*SYa)d0ˤ9L|-b#!KITě[ˋEzB;cuFн|@L1X:r[hːUQ z<>Q*!6{ݎw׷.YM-Xӵji:ns كgJA0B*\Z{> stream xY TSWȽZE%jophjZ32!$; S$ Q(VSmVC8jk{' X^{˵X콿;PVVVMd[0+~x 'ּu@3|ڎ; DQ+Ȕa~QNc=9M5k)&r=;=>;*il}7::z{pMpsZiqhHNM4\&pZBQԢy!C- _8rIRɲ1>^o 7ެ?mCV5Ɔ7߸%sJ'S^nەF/Zw#VEx,={v3a +UM`EHQFzkޠQ~GAcz&% లUaZKiu|>l5,`mZ%:;"h/:G,]QuT] KpHVҿ]>q\uNo cz1)4@想[*FtGHmhѡKiĶ][HV.PoS?("%ݠi Vl) sݛuOPZ+E| ~9B*|ŃΊ125։Kn5Zl˥z~Ϊ%QyF}р_~F"cg \+G3-p`ᶊ}pH n7X %א+eeBl21A OeZud/_-%ex'i, }!Hڴr%7= 4Z24Me?緈Fo2 :ޱ5Bo"*e/z>h3f'V $?='ƮlP[ޒوCcC\1'\U~+Ogkվ֭ۢ}ԁ|>Zk*!:%sI =F&03r<~~bH.ZFX5B;6=z[ kloW&B'F{G?*!֣tixn2JZzwzC 3za(tm [~Xo?*}Ϣ>4mnDѡ?Eզ}IS4D7AdgB+teZ7Ntu>.Mt#u"aaKh^_v~ٯ/ڨF5EbC]osQvOh<ח`lsR?ܮA G}b/D^h˸ -~sf>)3wib@AZAJU^Ωՠ.+?~HYALcuɅz\\2,-:5Ѱ59HͩRHo2EU..i8yƮ w$z/]WZ-:kd_%%-0oN` X-YQnP'_{x-jXokDGQp-Nn`J@S!FȀTnǂ#S;vGTN,J3ThQ"JP:͢QF< *g;`$Z|tyd(ppY#c4㠣SwMꂫ\Q'Gf7|~z'DS+7hO$ŨSd JuV / 1vL6FzQjN;ihmLQ'[vXhVB@c,6)uw(ғ&<>PiВ]C[ !6C"?)KV3;L@Brsf&e(";CV&tNuv_Pï9Sjȱ4Qpo:֫ۋ;߲mT}C|"b=6B& 8!gZŷ٫ekv`f-v^3Ԕi ;TB'}hсc[+? "qd px_yclh+3fꠄ1ĔDEK]Z}d2R4McDIE!,yX9o#!C^]cЖ}9C<]LAx,bz??IK\>MSbc{S _uCd]s^f߮nheh̟CU$ :Ͱ0E?E&C{ 4BEf™!ro~IVէkU6FhM0đsƾj(k RTŐ> VYtM%Jt2SO~䐗Rr|;] mO B~P?0q\ڂ 4_gGNʅ3Qi>%);YT/iG0ƃsC' 秪ST7z2삭Y \&u5`ESA7z"76%< {1OBr6\8=}F/oE<\ߘ2D4v Y_xpW X?|AM1sIDDWk}6-iAտ tB:QSFY4G#Ɠ篘ͿrTʢJ+0b3Fjأ;uA]MG7h7EKQO*Uzqnae>`˜0e`B859*ԓb!*K-& T;@d4Ⱦ{jğ kqqbe-,J|3q zjvEItthG\&R"O2؋^(E4TBN-0u~sqxI ~Wf#ȇF/{鱗:`ެɆ$))Ų~ R&>L! D>֙.؋E,v2y 2]oUUd5iYFVXK& 5zHcפHBF,b\UuN9^:~@sT2l(Ҕ4o]p)PfNޱG/1iui5>dB1 .27}I ^7lvc9*uA*o'ၾE_Óe7gjIJN/4gAdzL1e)/WLRÉvI"= ¹Lnf 'BO~s}«]k#BB"#CB"kkju!YU5[5Qn' &vb0KKFӋPF`)D18  ɿߌ Oz$cbGe@^PO7XDV/l2j))lOh]1q1g "j|@ǰ-qPӳ<ʼ|:?VuI"ȓ |a:B|)$Atbrjm{2KYQ'h<_RgR< owi+  ZT,U)ӂ'u ֠/NR]둨p0t&QJ3^뼶t Wpy01ϛviu #d>]2}ء#~] x&!V.">>f;Ωi }ygo?}$MnWQ- e6Iv̭ۨ-5FKS*[jb2urʆm.nK;|?C֜3}: GC[EsEd5f{rDVw &_ъ i%)P^_=dBY1/-k9UwU\^֔QssL;Qv_3߃Þ<ֻB;?ZRČ+Wַ)<|ڡ : ^YC\ot.S*J%0 ؝YչB5LNzf*emz_Yf;`MŋZǧ6Nc4WǕ.{|4 .yIFk,Zm} 9x4xgy>0ٙFݭH5)٬F YFLXcO⩀ ldI,3#;ޗHw)D|d :&3ZDG-~4{8'C+ hl4%QtKP@0wiWPB! 0$WV}uDla?]-45*|~^ДfsjJL\X�uDs //")?h_F(UDP0#QmW )5\JF.܄R;h)T&@h5{ ]lic1I;vW[5v"i6$P "@m]C*PGqVL@`h-|0Md.۶@z`"^ ^ģ\VG6*zݑgϟI;}8"-G@SXkKURU~~0?냭7 8@jt=ia o!LNsݕ+3\FU~%Y}`S{Y}\gnN=[sW #ΐ/5SdpWqvy2UHTev1n4J›KC\>*Oܘn^)L:2dl#[͕FU0欣Fޝ*I;N3yyNN g|q $;>En': B$Xh߲;xtxi#f=vx?_mzB//ʖg)HGl^ #ǹ"U &/t,Qk37;rcK|^ qu{OLC 1( 8}@_ڎ#kwKrh0 CX$5[y=XN9lM|㠦U2 .AU Ӯaб1 "F։{ lΠ7J>-+mV^aXe|` ako|g[Y:=υw= [FIۡpi۳~wF:Ҽ>+ ٌB>{GM݆~tPqJ:Nm.2UDu 11)`( ['׸~3?a{kendstream endobj 94 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4610 >> stream xX XSWھ!*(Js/uiݭ:jwqi놵 "";vdM،RZ7܊P}ڨԩJ[ڪ<$@ҧ̟'psNsDD"OjsH$EkS_ r#WQ"7xg%E",$T=>eisuSxD+‚W*C!{<(,X?/T;eZ;YDou2{mpl".xRy{M`TmwmɣbT`j`E4EQ3}7c/Q,]Tũ㷯%Xаu"ǿ݉['M:Y"&5zzCQxj6Q wE$j3zZBMR˨irjK͠VRYjj 5_(D ^QCPʍNS#(jAr4oDYN9bZ)%$]xtY tc']].ݮC:yh8n]b{ ~}zG2MhĄo5,;nP7TC_M`#/,ak"Q4JDxHS(+75++ %3QM{L45 ,~$D"P nBY*HPyUl`Oں(t֛aCF2[H'*H&T]'x q[(%ÛϞau~˼IG>>[ڂ$:,8 (%ut;P?NRzT/cX4+lCPip*셫%*:1H>&)`xDe,|f]4CY,@$ 'x80Áx&o^~ɫ$V` >yB5ѥ߼pƄ%K^wc~ފ=d6Dr+{?Nw 5feؾ|]VE܎^mޓF+y0A)!{ga,T( ֖U%' ƲoVƨ\.I2IwZ^v##w e]m]lb,_&"EsiU^{9r>H7Ӽ"KU'5h& 6Xj ct v޼e#bIrc%┦-os\vjXTH~~^rXsW! i<~ы,INhf1ijL3_,|> y烞d %pkӔ5-oo{+a@5馫Gpf=/tisS"桃K<`dGѽF -A A1Ȏ"|  )_GUQAkxAlU bae9D,Ґ5~Yw)dQ9e((UjFGYIM>(~_=ʂ#*(15˫(c"v<0<vTPUX$7I}LFx( ,+$ =ba'Xc4JLUgrY[|3kѵoOA G|^h1 ݣ?^&*v~ j;M:p}^fP<V@o|);ԺVj9+FzT\a0ŧןϰ!H{s=B3ztZq |{նhD,þy7‚Ntl΋g_]vcz; wB\ 7ؔI1YfXcVa͞' ϣaUoξ*]j./8 ōҁ/+ۨ0$ y5ԢvW.k1X`7i2r3yզ r-8wkRJ2?Z Y۟fnw6}}k([gp5k7`c*D@sI̅\bh`,j|`Qu7n[:e) eezxOx Ƕl\O e r+;] FPP/8>s/bǷlHݬ 'nE̤ fmeJMLWED 230I?5g6K!f QF~B):=G{p|pU7Vn Xm\_X- XxN9X/Wbyz]H^tȲw!:mOԋ쑐lT*\^2ꌜ {LB૖5f}F3mo͓o.}LWDY-iZuܑ(SⵘzKo?Sz #{4&< :q: Yʲ2mw/7k_W{aZ3txXx"8@1?<;F (xWhLp$hO\>*a8*!Q^d_]H9:uZtu n 9CYxxk7+oC~Pok`{Hږ#R̐jD)YuT=or}y֬iD43'z$CCz s\,oMP$asH!q}Lg;g2詣 J&)Dс=yK:$ GNƪ,$0+M2A'̲~0ϡ5~:9+[`8^҉T4b(-٫DE ~ϳ'#*bJh\#X_E*! zA1&qE!d 1;1ZV]]v+v MkQcY_YU7 Cx>Ok\;pJo*2n$Zx%Q#*ɫf`-l3HNu S[B"[VoestZAY( %Iݛ _`ϊU6ݽ&:, ![~$VD<<يv2Rx;NF H9^C[Er<˭=< <=]xĥ䴶w o#H!{4G,߄ؽ31,uFRYfQDhN&ed$&Xx'Y4v’Nas4}w&`ksovx |"Hċ(=r 7_^<`ƇFIB/ˏb<_[/N{\,mz:!WVJ#q¡'>mUvxؕW8X\_W4?|B_Y'k4f-hfh`HC-NԷRX  .=)"XyWƖ1hš18<58C DŽ=0X7x67 5=&&"f-BKM"9ɮ=Z|8;wt@⩶6~1{ k=Et,ŮK]ި꫍Y{s gBBcT|.EnHIE3_,Xr'.{ͺUS旝4JURoiw9t}G+WsHg;h{̖o x!TZM^YH֨!^!hC?'{y Kp?࿝o|E;:Ԧb]qn1W^)Bg\GJrfw]>;\v74LXT oXS"5 6p5rA&WW?Fendstream endobj 95 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3014 >> stream xVyTT "vU*RIP\1 bU`f 6Ȣ 0,"6IKi^fv*󽲬|0ywf~Y~2e#XBMwI ȁ7?<>kg2Y|/~sZbTDV9aDٳgMVNQ Pk#cZz MSNx%Rԩ)))SԱIS#^8YT Si+Ա29Y  OcfL\$d]zcX7cb=L>a^gqJ&YŬf&2o2LY3f,gL,3<ƅgN˖Ȏ 9{$iI.\Px+~3T9~I#cMrzɥ=9FD΋L8DA乪%&Ul"('&HRo]z&kA@Ԅ<>=2̚9$np֗?pJtvޭu>7`^^?Z\jECv.yNLy~AG7/GdD2,z̜jsdO0:Ld[I@teG 0^[ ՃA 78&P-twLq1`߁1w?G|M I(g{NU $xe*UݑS08;w~FNaJp [!m:B')W~;+_3| cIzMRnjri4|#f C|&Kpy #Ǔ[ Ħ[6H5/BW݊kME ˦ UCA5x'*h-ZԴFYV-+r+- BQv'V([_By:pn' .9FHy 0H0M0iai/^>sY8fż Cvpƫ8Zޟ?s(JK qf TX`w-ol vBxCtLrݏ} sׯ3߱Ѭr>p>sE/+p]\nX%!$Or394Muz rDF' q!-0Pv Kk9a0dWq)g8cC{C1Ȣ sgbE16f-{'k[nq~YѠ7撕 5zqP}P/$m)a>RUbKI5)9mi™6Y+Xt3ovxY}iM{m5rV5 -ndt2c"rc]kMQVXC5ˋ 9"_vdZG Tm\D7b+dL>uoɇzp*5L&I42!S7ZvFXj⿐ZKv*>Z+ Ww8sY&lh}Ad/#5v1EGX"Wɢ2&l]kN8f@-˷cP3:hڹ7R&hܫ ڱ>d8Q싓pҡ]a2d KBix>#6;ڭ}Tģh Q9s`!;_; -֩h Yq*[d96K]g<ѵ 'Lup+0Ur ,8Gzzp򓏺ebsUö]fC8ݻwXU]N4^]SS"TIZx <߻ !àDE6JE;8jg…Ç—_u?S!##WRv T$s>o-uZ_ʩ;ft<`Cc8؆ޣFdJ4w$@:脊fC'<8C/.ao$b4Q#]yY&}I,Xe0&7"32alT5zxn~Hg;dor, a'mu˵dU(ցAa D+Ji/ΝFdkwnɿ\ajN{ ^LPK.bQQiP^^ԺkYC}} Ad4n $@(+/^6 @;h BQ$KbO 'Mp!5b**wU0;$zI-m0@Ka't [o C=8}e `zq'^Ɔou5kqq꩷Wc8onKLmjiwevk3v79\ӺD<u1!*n6 C!nZ3B , e ul2íeÊ<<Z"endstream endobj 96 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 324 >> stream xcd`ab`dddu 1H3a!#.kc7s7넾G ~"Ș[_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*"s JKR|SR YtX޽53~OAe=rIa:Y˺v]g*{ZG\Fۖ;Q> stream xcd`ab`dddu 21H3a!.kc7s7넾G ~"Ș[_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*"s JKR|SR Yt޽M3~_+ۻsO/{Vw\B ۡ݇f<ʛUg+[yNƾ|Փxxe`qendstream endobj 98 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2650 >> stream xVyPSw1D v$ H(ں**ޭ"B !N ȑA@!xE֮e5Zkc^wf_y30Iڼ-e$u6Љc㱾? BHb^,\ReS$R T&x+2rq`r:E$T6 5R\a~1JQX-}GѤ-}MV;_(OTKE)`8]' *\,6ehjfeX0lBRk2gj$qD=U&aac[mX v`X [b:l=- یm^W^`>X=Kz4)W]lGeN3Uĥs'SMY2E=PWMAg %sO-]n{<:z ?in6SPg5@ F79NqN+ #{!NŻtt^Cʪ,]wMe|B9z=I( DǏQ qN:4TQ#p5r?%Mh!$V^e|VS-Í"+Πc~7G_=?2 o͉^4Aћ?fh&}:T=/IC(([/vgF=|C=u^$:=KbV'.Y)ֶj)͚GBA>sj<>OB6奩 Swr=䋈k߸9d;u@?(Asg H'ZsZl]'8=p5יF8/z5GPa:AF!lR EE%2̒U\j-#;Z6eZA5n IiZ yBL7 yv|+{|*_ Đ4BD_&]29KʧwLDcE7kuu"ЃTH:#$Օؘ<-MR@ʄ3ND?T5:LAJxDʡE믽ec;ud%qvNNN5PROBݶ@,^#(kp6t 4]@/ǹXaE(i ""]11>g;O{| /ڣD}_¨2m>(U5G 4$ !~7zVzrJx18 6F~Bт'/ԝ1==AW(y q=LMGeD Eՠc膓ю~( L6EBZFef?PFo):1وy3Y}6Lvܻ!W=M+oLe:( ?m*ˌ y 0@j4~C' B=@,{Wl4U)zĠj( Tlw#ߟˣwd~EV:щ6]DNʻshґWo +{Z(,lBWV`mmw :fOgZDT;q]^U7UsSGɮvLV(.#ZoGV7{|x$3|;9(ŅtTf*dHp %8}hW>o$|zSuK&`\(H3ӅȚ Ŷ~hvϵ1~C:!PO/ȼe1YvkngؐG_ Zd;!6cm1#YF<#F^FMޛy٦5/bόeG2E2Af> stream xu}LwZNdtgn#30P6'h plRk+RZƋOE2(ZD fэBt&11L碋3%s_r|?2 qen%"\X,^X# ,HCŊ;^a6*P?^Cߞ*(ɉ3&:kN޾+g)c~K< *e J; jslIKO}:t1<]FBj5w@g`x=GBGot'y e;lDW7yt\tYd>X!{/5j. _HZK 8Up8( Hg5US$pP~@l;rchqIɞ]/@4t 6F |3I &y1* e']ֺ`uQZ& l6~^si_զ"~JDU(CL梔_޸wfe]Dœ8Cb{ꠡ! [j^h3 q++T;Lx{ܝU  5\XFnU9e8XUdnQ䃓ȸ__G)`vrgX4:66>>VcGiN-摿#j6.I95695<% gYcY? !J,Gh4KO||_3ft+F4I u> )AI t\-EJ3O͡v6i6Kzbendstream endobj 100 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 329 >> stream xcd`ab`dddw 641H3a!O/nn߷}O=J19(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU8OB9)槤1000103012)ٽgf|;?̿ܥ;~3>,}} |g|Waq6;7<_s/wt\7Xp9|zaendstream endobj 101 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4444 >> stream xW tSպ>!PH+s*}2IdB :Җi)Ҧi cC:Ђ \0(}pksz; z=MӮ&眽-|Q"wٚ a7Κ0Q'"?[%?1[9 G#ЎX$J.2&<4kyӂfϜ 8YbLTjК̄L!9h4&1.37h̴3fDdHeK>.#N453GBL' Z#R5ҴW32sa1yq;߈OHܐ>EL~n֩"+(jZ@AS $j#& 6SP[et-j9ZAJfQk*y*ZCNͧx/G/5zZDQè%pjN&|\DT&:?hݠ ]>>J%kh48c}F|wϐC?O;l0OͨirFatcfcsǞ ) k /X]΃ (܅w>hȠ avwe?ͥ+%tA$v\Þ H`ֺ~1$P: {St)B.'õCRj;YMmdtPol۽2|Gt'Fc%+=ӛY[V=p64b؉#N`WSKz5"(R(/<_ްቛDI[M |0/{I#q$/eǣhGx$]/y@)ABSt2(LE>KN@P"p^W_ݍ˧/ ˜h'/+fYO`0|3g鵙#|Xc9:IGܡ`ƃQY_\`Tim= Sf0N5Ra,kʙV IQ-ñ/ O|{W5 8^ɛv4^L@yz2UZ~cc(0Je9BY/B#sh:u&gc c 6&%~E;$HKkJcAd4ٺu-n"wכ6z$K5\}Xg EmOM8 n|H<'€^6t:ęR̵Lh> %uB}*Bynﳞ<oO; M(`w-x(H{Qz~OCukHMq-X@1A-_0SIЇq7f2a—6;ح\MiV1<!M`f2zs}B NHGa1,Ns(Uˏs^7 4_ŀ0Ol^א0nl YYu6?>'0$ֽ>o C2t?jxTI勵ÓT4T谝rG>^_ׂq1 -jvcבoָ2[SRW,X3 hSt!"z?^p<Ν)(_c.Op?|~/>p iΈQ-!(`hCp뻭fUik62Gw}fTY6>ݑX̳ϞoO6jxybjȰe΍(z7W YhR추#gO;ٽ+bͺ;e Ns{6&tpKRW8WrcՒ&7gS8X$c[L,ݑ,5`OG?hQs<1]6'6*9V@A QlкTSyۍܡgo'i69RmLd>̅7|j>dU4? J@X"%xs7⩧`7UGܥC}\uwgL4ě4{|o! ?=P7HHC"N2kvk!jop>^MɓVwrT!tCtRH 25Y._KKZrϷ'KB/~GX]AO_` 1V@^.qβ~}m<@%ʅ8p3 Un?+qdU M"7zM8]>N ѺXvG;9U73W j1\M Ɲ&fC^腊&Y` 5tz$ѡTAp;G1 8YXMB)(ore?%e4אDXa۝ّҜmx0͏S)7t#*r$;.FcoQεII$t lMܺdC!zωwN%dE2]K2lW>:w_-G|x,<cvU"! WiAYDmfJWƢ`4B]_`v_gu\39tQ+߂I+>0ZP/K̿VS'm3BhK_FKDbߨEh xM02+SRu OIt}`x:O L I=UF08ot3~ b 3T  i,W4`2wLL"uŋݥ?v -B BqB?[RLmʟ2QRl> stream xW TgNCWJ[}CqqG]@AmfٛMQv .lC.qyˋzF'Ocuc4; 1dw;u~yd~ܬ#2i{҇roYl^6uC?1r,2nȨ1ΓfΜ1yLA1mHPFKlw  &9F}gN4yi{3Jff|5ZƗcܙzfx2nbSf ,gV0/(q1(X ܒ߫ɣlm̶N"^%=ťq봝nݣޞ7GoI"8[PlOyLPW' g쇉Ģqy)&7kF[-(#ÒijVr-UҝzIiU˥:qWdmH}5 g'@e(|CXTTp.WGd.lR96M!{ñU89>$J%8hA.? u)8̧gޢ5,U[LP 7>>;`H uBeeJ_A8i]E\Xۨ9E~kkϠll0W٥?Ő_BtaHNpdcQvCjO-_4"ĹDm-de.b!]"265!`Cְsp *8)&Jy?2,gN!ݩwz=^|؉ג OOnktW8cFVHDo5k~hҴ[SҒ;=rlEv>S)[$ʴ@[>WW~A翹u~7AXwf(ʥLɞ)ʽ# 1LF#5[\K3G2+l/mIDR3n,.?S0g9=^;8%0> Q6xk7tj(# '#TdwX5mPOt*cjx@=d jtY Æܢ6< mؿ`P(JVvh7m[1-3/jSe~g/_t\pP[/%va/DŽYM/n92xO"[ $)B ~֋ _sD+T*Jn\N)N7Y\sEIo~1eu|s &#N!.dq4*Usx݆d)I>[>BEQ̯KPVA-~^%JxUugT[-kzNNAߍi8푣C3]+l p1S6:cTE}J^`"NZnߧ6t*d7UZzd%1$h3 ˆ\W {ۮ݆p#?+T?vi\X 'k<7{ĭZ( {!ʱT+~IW,w/<;BrjZ"$r[j+NV[!RN!-8/-mp~r\r㱓T<^7 >ٴ >"{سrJn1N6 ^Hb$UT).+Q1Y ,$ԘPp?_M[_'-~$gKѹ2ίc>['ӮrZ>A4l Z8 Yrp{)!]"UCD;mB)bouVtt#v8)VZwՕr'ҽrV*_7l ٲ&rYYJE#] ^8/)uܙfJp>Y/νTnjCjsTSDŰ"ಬQ}8Dys_$VTmCUIqtrUzpa?+(8Q B!#GmךzBQml35AOp~Ĩ8)I% sU&~ |mM )lGGwSfY#R/\E2*{WV|!Oϩ!$b0TЊY2,$qrZYhln4P=SKY!^mt_cY+&{nr}6%+b1rSΗ@~tz xx*"*5ۜ{2ZWMԊK8=QKEëKwKM;i=RuZN"T.-9,={,RDN VM芶uw:6t%}hCzvuR"xow/ckO9Kgmm)5B͉U9sq =LʮԤ|8*4+Pc0bXo SyUmքDMzy\|o:"U\7(% ]+VR+TgG ɻOm@dFf~C^Oޱ,x nU-_c?K8 Ro䑝X S 8=Q?Mi4[-A-U6} ̃y{3 Fp uIRRh:+Ե^ȧo!Oa,GwEce_SeCɾ{WL0 p_Fn7kKE8)pY@)Pxr i]68#) ¹Ⱥk.d9d avެOq޽[4_ tyQ)47: QuiwV]8a b ?j$,IkϝVdQK$}_)2,!;`9!3ՂcDT~꫿(Wv]e}$}G%Vؑt7:Hp9@A6沢*z v63ϵG >F{"endstream endobj 103 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2481 >> stream xVkXS>12+f>9Z uZz t BH$1\H!@.n) x"xAuEN;nkku[k=~]D* N&Vmjp=%T#Eʧ~UEy=4ӬhꈹR eܤ̓8qO`.ůg5As]'My==5O2 jkjpYiM+ԐL*B,OK|CYᅭf}h @FPGȩXJ5d: Wi2rVJ (jnKSqoqR*-I}~e-tU{{l/aG$\,fdB)`Hn[ZpGk2~f_WwE F Iۿv2U&L_AQ  Ƿ}66Q'mnUH7 '}{~vi)Zviat<'D'>-hw8ȷK ]\_Z!io1 "N[N_2A%M%o8qz! lerIX6;]]Zc||Zu"(wwDˡ0;=NZ{_ىk$6 ՍKRNd c)7Zo׶ |B{)ѕ +̻{t׼kn}E<N磌|Vs:(!(-Ǜ N8nI*BlB-)oSHjVN.Od @KTpFuEg +EjV/sYE9*ޠ+f6h%؅@T7{YϾпhj1(h;4[aLendstream endobj 104 0 obj << /Filter /FlateDecode /Length 3705 >> stream x[Ko$+bS+:|?8A2rs]IcْF^)տWEvQa$‡mS|"ǍF7GʤHmvG?izS-cVYoN/P&5l69>fx{FBΏO𕳋~]Ug7''?A)Lc4hʆVpJ{4driB4).&;='&`dNJ딆Q1 ;hj\d}NЀ1gt0>7m\N :BQ^C*&U&Y3HZ6[H}fPֈYuB2=hFi?Nx0D0<둶wӿuӨ8lhA& K0S **- #5Fme,' 5_\|iz>)K{Ý'Ϫޗa᪹ {}12lo >kQ\(}*1s"d RA+h*D "dnqve"0w͡%8@p6u:#I'-aJY!|MZ|gЧ8Fy @ } Wmej89TiXdO^@U pd,cى0!Yi Ua jF.!:?>Qg!., r!6B!H$R4v-}3H\p>hsFN;L*PR nx;Kt%ɁD<=C-*#v.J#Bb^k 1g-fwsф\D3N(CN#ET,*Rëy]ڴI  'ze"5acZ[}n%@ܶS@ tO0a9w1 7.8 ;Yb>/# .( GLd4E>~4 rι&_h)T&mzVWVaP ^dvy :B*>Jถ씎 (N,16`P"`LQپg;"ti? s ?USRۢH ]Eb4G}[>R#EŸ>UvJJhGcF:i0|Ɖ %r-=2 bhv\˦XS-}vZ$2w%+) !}Vw" i -e$=3`Y`|'C]l𮻯ycacPyR!el<t c)=1ölw2vw@.XeriYr)qTdc'\-gA[gIhs}ȗ](DqBBJM3,5yW>)3VOa/ZgY@팩wu>[z|I/xS6p}YPiW^iOq <9;&51{mzpc礁E=eUˀw^/=tpѻ"d0?ͨ% eUN ,>7tب,@dX=fDAt@k[0"V艷M04*z.=%d# B{,gYҲBzYM/r4aVk|mJEe<̛祺]G; |yxoQ~)-SR(is&"}iO设K„eB0e2:ڽGw^fݴ~vfsxIܡ{͵_80kji,=[AiD|Qg7t+3Lq;"7Nœ'2 4 ]9GH`aIT56{hS3􉲖Ac6V߷O,jb! ?05h`37\-!R?SQ5c}OE~:ԜFG[0weMVl]ˣ5 t-ARI/ x3endstream endobj 105 0 obj << /Type /XRef /Length 118 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 106 /ID [<9a98de1dabe6d17ee2072e616634a041>] >> stream xcb&F~0 $8J+?M@6[7(~yEdaš RPD y /DH`] R: +ld "$z ,H2 m& "x@$ab endstream endobj startxref 77915 %%EOF spatstat/inst/doc/getstart.R0000644000176000001440000001154512333041747015661 0ustar ripleyusers### R code from vignette source 'getstart.Rnw' ################################################### ### code chunk number 1: getstart.Rnw:5-6 ################################################### options(SweaveHooks=list(fig=function() par(mar=c(1,1,1,1)))) ################################################### ### code chunk number 2: getstart.Rnw:23-30 ################################################### library(spatstat) spatstat.options(image.colfun=function(n) { grey(seq(0,1,length=n)) }) sdate <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Date") sversion <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Version") options(useFancyQuotes=FALSE) ################################################### ### code chunk number 3: getstart.Rnw:54-56 ################################################### getOption("SweaveHooks")[["fig"]]() data(redwood) plot(redwood, pch=16, main="") ################################################### ### code chunk number 4: getstart.Rnw:77-79 ################################################### getOption("SweaveHooks")[["fig"]]() data(longleaf) plot(longleaf, main="") ################################################### ### code chunk number 5: getstart.Rnw:136-139 ################################################### data(finpines) mypattern <- unmark(finpines) mydata <- round(as.data.frame(finpines), 2) ################################################### ### code chunk number 6: getstart.Rnw:154-155 (eval = FALSE) ################################################### ## mydata <- read.csv("myfile.csv") ################################################### ### code chunk number 7: getstart.Rnw:165-166 ################################################### head(mydata) ################################################### ### code chunk number 8: getstart.Rnw:181-182 (eval = FALSE) ################################################### ## mypattern <- ppp(mydata[,3], mydata[,7], c(100,200), c(10,90)) ################################################### ### code chunk number 9: getstart.Rnw:185-186 (eval = FALSE) ################################################### ## ppp(x.coordinates, y.coordinates, x.range, y.range) ################################################### ### code chunk number 10: getstart.Rnw:195-196 ################################################### getOption("SweaveHooks")[["fig"]]() plot(mypattern) ################################################### ### code chunk number 11: getstart.Rnw:203-204 (eval = FALSE) ################################################### ## summary(mypattern) ################################################### ### code chunk number 12: getstart.Rnw:208-209 ################################################### options(SweaveHooks=list(fig=function() par(mar=rep(4,4)+0.1))) ################################################### ### code chunk number 13: getstart.Rnw:211-212 ################################################### getOption("SweaveHooks")[["fig"]]() plot(Kest(mypattern)) ################################################### ### code chunk number 14: getstart.Rnw:218-219 (eval = FALSE) ################################################### ## plot(envelope(mypattern,Kest)) ################################################### ### code chunk number 15: getstart.Rnw:221-222 ################################################### env <- envelope(mypattern,Kest, nsim=39) ################################################### ### code chunk number 16: getstart.Rnw:224-225 ################################################### getOption("SweaveHooks")[["fig"]]() plot(env, main="envelope(mypattern, Kest)") ################################################### ### code chunk number 17: getstart.Rnw:227-228 ################################################### options(SweaveHooks=list(fig=function() par(mar=c(1,1,1,1)))) ################################################### ### code chunk number 18: getstart.Rnw:234-235 ################################################### getOption("SweaveHooks")[["fig"]]() plot(density(mypattern)) ################################################### ### code chunk number 19: getstart.Rnw:245-246 (eval = FALSE) ################################################### ## marks(mypattern) <- mydata[, c(5,9)] ################################################### ### code chunk number 20: getstart.Rnw:248-249 ################################################### mypattern <-finpines ################################################### ### code chunk number 21: getstart.Rnw:252-253 (eval = FALSE) ################################################### ## plot(Smooth(mypattern)) ################################################### ### code chunk number 22: getstart.Rnw:256-257 ################################################### getOption("SweaveHooks")[["fig"]]() plot(Smooth(mypattern, sigma=1.2), main="Smooth(mypattern)") spatstat/inst/doc/BEGINNER.txt0000644000176000001440000000151012324667727015636 0ustar ripleyusers -== Welcome to the 'spatstat' package! ==- For a friendly introduction to spatstat, type the command vignette('getstart') which displays the document "Getting Started with Spatstat". For an overview of all capabilities, type help(spatstat) View the documentation for any command/function 'foo' by typing help(foo) Activate the graphical help interface by typing help.start() To handle spatial data in the 'shapefile' format, see the document "Handling shapefiles in the spatstat package", by typing vignette('shapefiles') For a complete two-day workshop on spatstat, please download the workshop notes at For news about new features in the latest version of spatstat, type latest.news or vignette('updates') (Press 'Q' to exit, on some computers) spatstat/inst/doc/shapefiles.R0000644000176000001440000001307012333041747016142 0ustar ripleyusers### R code from vignette source 'shapefiles.Rnw' ################################################### ### code chunk number 1: shapefiles.Rnw:7-8 ################################################### options(SweaveHooks=list(fig=function() par(mar=c(1,1,1,1)))) ################################################### ### code chunk number 2: shapefiles.Rnw:23-29 ################################################### library(spatstat) options(useFancyQuotes=FALSE) sdate <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Date") sversion <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Version") ################################################### ### code chunk number 3: shapefiles.Rnw:104-105 (eval = FALSE) ################################################### ## library(maptools) ################################################### ### code chunk number 4: shapefiles.Rnw:109-110 (eval = FALSE) ################################################### ## x <- readShapeSpatial("mydata.shp") ################################################### ### code chunk number 5: shapefiles.Rnw:115-116 (eval = FALSE) ################################################### ## class(x) ################################################### ### code chunk number 6: shapefiles.Rnw:133-137 ################################################### baltim <- columbus <- fylk <- list() class(baltim) <- "SpatialPointsDataFrame" class(columbus) <- "SpatialPolygonsDataFrame" class(fylk) <- "SpatialLinesDataFrame" ################################################### ### code chunk number 7: shapefiles.Rnw:139-143 (eval = FALSE) ################################################### ## setwd(system.file("shapes", package="maptools")) ## baltim <- readShapeSpatial("baltim.shp") ## columbus <- readShapeSpatial("columbus.shp") ## fylk <- readShapeSpatial("fylk-val.shp") ################################################### ### code chunk number 8: shapefiles.Rnw:145-148 ################################################### class(baltim) class(columbus) class(fylk) ################################################### ### code chunk number 9: shapefiles.Rnw:170-171 (eval = FALSE) ################################################### ## X <- X[W] ################################################### ### code chunk number 10: shapefiles.Rnw:188-189 (eval = FALSE) ################################################### ## y <- as(x, "ppp") ################################################### ### code chunk number 11: shapefiles.Rnw:200-202 (eval = FALSE) ################################################### ## balt <- as(baltim, "ppp") ## bdata <- slot(baltim, "data") ################################################### ### code chunk number 12: shapefiles.Rnw:250-251 (eval = FALSE) ################################################### ## out <- lapply(x@lines, function(z) { lapply(z@Lines, as.psp) }) ################################################### ### code chunk number 13: shapefiles.Rnw:260-261 (eval = FALSE) ################################################### ## curvegroup <- lapply(out, function(z) { do.call("superimposePSP", z)}) ################################################### ### code chunk number 14: shapefiles.Rnw:301-305 (eval = FALSE) ################################################### ## out <- lapply(x@lines, function(z) { lapply(z@Lines, as.psp) }) ## dat <- x@data ## for(i in seq(nrow(dat))) ## out[[i]] <- lapply(out[[i]], "marks<-", value=dat[i, , drop=FALSE]) ################################################### ### code chunk number 15: shapefiles.Rnw:326-328 ################################################### getOption("SweaveHooks")[["fig"]]() data(chorley) plot(as.owin(chorley), lwd=3, main="polygon") ################################################### ### code chunk number 16: shapefiles.Rnw:341-343 ################################################### getOption("SweaveHooks")[["fig"]]() data(demopat) plot(as.owin(demopat), col="blue", main="polygonal region") ################################################### ### code chunk number 17: shapefiles.Rnw:379-382 (eval = FALSE) ################################################### ## regions <- slot(x, "polygons") ## regions <- lapply(regions, function(x) { SpatialPolygons(list(x)) }) ## windows <- lapply(regions, as.owin) ################################################### ### code chunk number 18: shapefiles.Rnw:387-388 (eval = FALSE) ################################################### ## te <- tess(tiles=windows) ################################################### ### code chunk number 19: shapefiles.Rnw:424-425 (eval = FALSE) ################################################### ## y <- as(x, "SpatialPolygons") ################################################### ### code chunk number 20: shapefiles.Rnw:435-439 (eval = FALSE) ################################################### ## cp <- as(columbus, "SpatialPolygons") ## cregions <- slot(cp, "polygons") ## cregions <- lapply(cregions, function(x) { SpatialPolygons(list(x)) }) ## cwindows <- lapply(cregions, as.owin) ################################################### ### code chunk number 21: shapefiles.Rnw:449-451 (eval = FALSE) ################################################### ## ch <- hyperframe(window=cwindows) ## ch <- cbind.hyperframe(ch, columbus@data) ################################################### ### code chunk number 22: shapefiles.Rnw:471-473 (eval = FALSE) ################################################### ## y <- as(x, "im") ## ylist <- lapply(slot(x, "data"), function(z, y) { y[,] <- z; y }, y=y) spatstat/inst/doc/getstart.Rnw0000644000176000001440000003077312333041747016232 0ustar ripleyusers\documentclass[11pt]{article} % \VignetteIndexEntry{Getting Started with Spatstat} <>= options(SweaveHooks=list(fig=function() par(mar=c(1,1,1,1)))) @ \usepackage{graphicx} \newcommand{\pkg}[1]{\texttt{#1}} \newcommand{\bold}[1]{{\textbf {#1}}} \newcommand{\R}{{\sf R}} \newcommand{\spst}{\pkg{spatstat}} \newcommand{\Spst}{\pkg{Spatstat}} \begin{document} \bibliographystyle{plain} \thispagestyle{empty} \SweaveOpts{eps=TRUE} \setkeys{Gin}{width=0.6\textwidth} <>= library(spatstat) spatstat.options(image.colfun=function(n) { grey(seq(0,1,length=n)) }) sdate <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Date") sversion <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"), fields = "Version") options(useFancyQuotes=FALSE) @ \title{Getting started with \texttt{spatstat}} \author{Adrian Baddeley, Rolf Turner and Ege Rubak} \date{For \spst\ version \texttt{\Sexpr{sversion}}} \maketitle Welcome to \spst, a package in the \R\ language for analysing spatial point patterns. This document will help you to get started with \spst. It gives you a quick overview of \spst, and some cookbook recipes for doing basic calculations. \section*{What kind of data does \spst\ handle?} \Spst\ is mainly designed for analysing \emph{spatial point patterns}. For example, suppose you are an ecologist studying plant seedlings. You have pegged out a $10 \times 10$ metre rectangle for your survey. Inside the rectangle you identify all the seedlings of the species you want, and record their $(x,y)$ locations. You can plot the $(x,y)$ locations: <>= data(redwood) plot(redwood, pch=16, main="") @ This is a \emph{spatial point pattern} dataset. Methods for analysing this kind of data are summarised in the highly recommended book by Diggle \cite{digg03} and other references in the bibliography. \nocite{handbook10,bivapebegome08} Alternatively the points could be locations in one dimension (such as road accidents recorded on a road network) or in three dimensions (such as cells observed in 3D microscopy). You might also have recorded additional information about each seedling, such as its height, or the number of fronds. Such information, attached to each point in the point pattern, is called a \emph{mark} variable. For example, here is a stand of pine trees, with each tree marked by its diameter at breast height (dbh). The circle radii represent the dbh values (not to scale). <>= data(longleaf) plot(longleaf, main="") @ You might also have recorded supplementary data, such as the terrain elevation, which might serve as explanatory variables. These data can be in any format. \Spst\ does not usually provide capabilities for analysing such data in their own right, but \spst\ does allow such explanatory data to be taken into account in the analysis of a spatial point pattern. \Spst\ is \underline{\bf not} designed to handle point data where the $(x,y)$ locations are fixed (e.g.\ temperature records from the state capital cities in Australia) or where the different $(x,y)$ points represent the same object at different times (e.g.\ hourly locations of a tiger shark with a GPS tag). These are different statistical problems, for which you need different methodology. \section*{What can \spst\ do?} \Spst\ supports a very wide range of popular techniques for statistical analysis for spatial point patterns, for example \begin{itemize} \item kernel estimation of density/intensity \item quadrat counting and clustering indices \item detection of clustering using Ripley's $K$-function \item spatial logistic regression \item model-fitting \item Monte Carlo tests \end{itemize} as well as some advanced statistical techniques. \Spst\ is one of the largest packages available for \R, containing over 1000 commands. It is the product of 15 years of software development by leading researchers in spatial statistics. \section*{How do I start using \spst?} \begin{enumerate} \item Install \R\ on your computer \begin{quote} Go to \texttt{r-project.org} and follow the installation instructions. \end{quote} \item Install the \spst\ package in your \R\ system \begin{quote} Start \R\ and type \verb!install.packages("spatstat")!. If that doesn't work, go to \texttt{r-project.org} to learn how to install Contributed Packages. \end{quote} \item Start \R\ \item Type \texttt{library(spatstat)} to load the package. \item Type \texttt{help(spatstat)} for information. \end{enumerate} \section*{How do I get my data into \spst?} <>= data(finpines) mypattern <- unmark(finpines) mydata <- round(as.data.frame(finpines), 2) @ Here is a cookbook example. Suppose you've recorded the $(x,y)$ locations of seedlings, in an Excel spreadsheet. You should also have recorded the dimensions of the survey area in which the seedlings were mapped. \begin{enumerate} \item In Excel, save the spreadsheet into a comma-separated values (CSV) file. \item Start \R\ \item Read your data into \R\ using \texttt{read.csv}. \begin{quote} If your CSV file is called \texttt{myfile.csv} then you could type something like <>= mydata <- read.csv("myfile.csv") @ to read the data from the file and save them in an object called \texttt{mydata} (or whatever you want to call it). You may need to set various options to get this to work for your file format: type \texttt{help(read.csv)} for information. \end{quote} \item Check that \texttt{mydata} contains the data you expect. \begin{quote} For example, to see the first few rows of data from the spreadsheet, type <<>>= head(mydata) @ To select a particular column of data, you can type \texttt{mydata[,3]} to extract the third column, or \verb!mydata$x! to extract the column labelled \texttt{x}. \end{quote} \item Type \texttt{library(spatstat)} to load the \spst\ package \item Now convert the data to a point pattern object using the \spst\ command \texttt{ppp}. \begin{quote} Suppose that the \texttt{x} and \texttt{y} coordinates were stored in columns 3 and 7 of the spreadsheet. Suppose that the sampling plot was a rectangle, with the $x$ coordinates ranging from 100 to 200, and the $y$ coordinates ranging from 10 to 90. Then you would type <>= mypattern <- ppp(mydata[,3], mydata[,7], c(100,200), c(10,90)) @ The general form is <>= ppp(x.coordinates, y.coordinates, x.range, y.range) @ Note that this only stores the seedling locations. If you have additional columns of data (such as seedling height, seedling sex, etc) these can be added as \emph{marks}, later. \end{quote} \item Check that the point pattern looks right by plotting it: <>= plot(mypattern) @ \item Now you are ready to do some statistical analysis. Try the following: \begin{itemize} \item Basic summary of data: type <>= summary(mypattern) @ \item Ripley's $K$-function: <>= options(SweaveHooks=list(fig=function() par(mar=rep(4,4)+0.1))) @ <>= plot(Kest(mypattern)) @ For more information, type \texttt{help(Kest)} \item Envelopes of $K$-function: <>= plot(envelope(mypattern,Kest)) @ <>= env <- envelope(mypattern,Kest, nsim=39) @ <>= plot(env, main="envelope(mypattern, Kest)") @ <>= options(SweaveHooks=list(fig=function() par(mar=c(1,1,1,1)))) @ For more information, type \texttt{help(envelope)} \item kernel smoother of point density: <>= plot(density(mypattern)) @ For more information, type \texttt{help(density.ppp)} \end{itemize} \item Next if you have additional columns of data recording (for example) the seedling height and seedling sex, you can add these data as \emph{marks}. Suppose that columns 5 and 9 of the spreadsheet contained such values. Then do something like <>= marks(mypattern) <- mydata[, c(5,9)] @ <>= mypattern <-finpines @ Now you can try things like the kernel smoother of mark values: <>= plot(Smooth(mypattern)) @ \setkeys{Gin}{width=0.8\textwidth} <>= plot(Smooth(mypattern, sigma=1.2), main="Smooth(mypattern)") @ \setkeys{Gin}{width=0.4\textwidth} \item You are airborne! Now look at the workshop notes \cite{badd10wshop} for more hints. \end{enumerate} \section*{How do I find out which command to use?} Information sources for \spst\ include: \begin{itemize} \item the Quick Reference guide: a list of the most useful commands. \begin{quote} To view the quick reference guide, start \R, then type \texttt{library(spatstat)} and then \texttt{help(spatstat)}. Alternatively you can download a pdf of the Quick Reference guide from the website \texttt{www.spatstat.org} \end{quote} \item online help: \begin{quote} The online help files are useful --- they give detailed information and advice about each command. They are available when you are running \spst. To get help about a particular command \texttt{blah}, type \texttt{help(blah)}. There is a graphical help interface, which you can start by typing \texttt{help.start()}. Alternatively you can download a pdf of the entire manual (1000 pages!) from the website \texttt{www.spatstat.org}. \end{quote} \item workshop notes: \begin{quote} A complete set of notes from an Introductory Workshop is available from \texttt{www.csiro.au/resources/pf16h.html} or by visiting \texttt{www.spatstat.org} \end{quote} \item vignettes: \begin{quote} \Spst\ comes installed with several `vignettes' (introductory documents with examples) which can be accessed using the graphical help interface. They include a document about \texttt{Handling shapefiles}. \end{quote} \item website: \begin{quote} Visit the \spst\ package website \texttt{www.spatstat.org} \end{quote} \item forums: \begin{quote} Join the forum \texttt{R-sig-geo} by visiting \texttt{r-project.org}. Then email your questions to the forum. Alternatively you can ask the authors of the \spst\ package (their email addresses are given in the package documentation). \end{quote} \end{itemize} % The following is inserted from refs.bbl originally generated from refs.tex \begin{thebibliography}{10} \bibitem{badd10wshop} A. Baddeley. \newblock Analysing spatial point patterns in {{R}}. \newblock Technical report, CSIRO, 2010. \newblock Version 4. Available at {\texttt{www.csiro.au/resources/pf16h.html}}. \bibitem{bivapebegome08} R. Bivand, E.J. Pebesma, and V. G{\'{o}}mez-Rubio. \newblock {\em Applied spatial data analysis with {R}}. \newblock Springer, 2008. \bibitem{cres93} N.A.C. Cressie. \newblock {\em Statistics for Spatial Data}. \newblock {John Wiley and Sons}, {New York}, second edition, 1993. \bibitem{digg03} P.J. Diggle. \newblock {\em Statistical Analysis of Spatial Point Patterns}. \newblock Hodder Arnold, London, second edition, 2003. \bibitem{fortdale05} M.J. Fortin and M.R.T. Dale. \newblock {\em Spatial analysis: a guide for ecologists}. \newblock Cambridge University Press, Cambridge, UK, 2005. \bibitem{fothroge09handbook} A.S. Fotheringham and P.A. Rogers, editors. \newblock {\em The {SAGE} {H}andbook on {S}patial {A}nalysis}. \newblock SAGE Publications, London, 2009. \bibitem{gaetguyo09} C. Gaetan and X. Guyon. \newblock {\em Spatial statistics and modeling}. \newblock Springer, 2009. \newblock Translated by Kevin Bleakley. \bibitem{handbook10} A.E. Gelfand, P.J. Diggle, M. Fuentes, and P. Guttorp, editors. \newblock {\em Handbook of Spatial Statistics}. \newblock CRC Press, 2010. \bibitem{illietal08} J. Illian, A. Penttinen, H. Stoyan, and D. Stoyan. \newblock {\em Statistical Analysis and Modelling of Spatial Point Patterns}. \newblock John Wiley and Sons, Chichester, 2008. \bibitem{mollwaag04} J. M{\o}ller and R.P. Waagepetersen. \newblock {\em Statistical Inference and Simulation for Spatial Point Processes}. \newblock Chapman and Hall/CRC, Boca Raton, 2004. \bibitem{pfeietal08} D.U. Pfeiffer, T. Robinson, M. Stevenson, K. Stevens, D. Rogers, and A. Clements. \newblock {\em Spatial analysis in epidemiology}. \newblock Oxford University Press, Oxford, UK, 2008. \bibitem{wallgotw04} L.A. Waller and C.A. Gotway. \newblock {\em Applied spatial statistics for public health data}. \newblock Wiley, 2004. \end{thebibliography} \end{document} spatstat/inst/ratfor/0000755000176000001440000000000012324667727014437 5ustar ripleyusersspatstat/inst/ratfor/Makefile0000755000176000001440000000244412324667727016106 0ustar ripleyusers RATFOR = /home/adrian/bin/ratfor77 #RATFOR = /usr/local/bin/ratfor CPP = /usr/bin/cpp ########################################################## # Sources actually written by humans: RAT_SRC = dppll.r inxypOld.r C_DOMINIC = dinfty.c dwpure.c C_MISC = raster.h areadiff.c closepair.c connect.c corrections.c \ discarea.c distances.c distmapbin.c distseg.c \ exactdist.c exactPdist.c \ massdisthack.c poly2im.c trigraf.c utils.c xyseg.c C_MH = methas.h dist2.h areaint.c badgey.c dgs.c \ diggra.c dist2.c fexitc.c getcif.c geyer.c \ lookup.c methas.c stfcr.c \ straush.c straushm.c strauss.c straussm.c C_KEST = Kloop.h Kborder.c C_SRC = $(C_DOMINIC) $(C_MISC) $(C_MH) $(C_KEST) CC_SRC = PerfectStrauss.cc HUMAN = $(RAT_SRC) $(C_SRC) $(CC_SRC) Makefile ########################################################## # Source to be generated automatically: RAT_FOR = dppll.f inxypOld.f GENERATED = $(RAT_FOR) ###################################################### ########### TARGETS ################################ target: $(GENERATED) @echo -- Done ------- tar: tar cvf src.tar $(HUMAN) clean: rm $(GENERATED) -rm src.tar ####################################################### ######### RULES ################################## .r.f: $(RATFOR) -o $@ $? spatstat/inst/ratfor/inxypOld.r0000755000176000001440000000216312324667727016435 0ustar ripleyuserssubroutine inxyp(x,y,xp,yp,npts,nedges,score,onbndry) implicit double precision(a-h,o-z) dimension x(npts), y(npts), xp(nedges), yp(nedges), score(npts) logical first, onbndry(npts) zero = 0.0d0 half = 0.5d0 one = 1.0d0 do i = 1,nedges { x0 = xp(i) y0 = yp(i) if(i == nedges) { x1 = xp(1) y1 = yp(1) } else { x1 = xp(i+1) y1 = yp(i+1) } dx = x1 - x0 dy = y1 - y0 do j = 1,npts { xcrit = (x(j) - x0)*(x(j) - x1) if(xcrit <= zero) { if(xcrit == zero) { contrib = half } else { contrib = one } ycrit = y(j)*dx - x(j)*dy + x0*dy - y0*dx if(dx < 0) { if(ycrit >= zero) { score(j) = score(j) + contrib } onbndry(j) = onbndry(j) | (ycrit == zero) } else if(dx > zero) { if(ycrit < zero) { score(j) = score(j) - contrib } onbndry(j) = onbndry(j) | (ycrit == zero) } else { if(x(j) == x0) { ycrit = (y(j) - y0)*(y(j) - y1) } onbndry(j) = onbndry(j) | (ycrit <= zero) } } } } return end spatstat/inst/ratfor/dppll.r0000755000176000001440000000203312324667727015736 0ustar ripleyuserssubroutine dppll(x,y,l1,l2,l3,l4,np,nl,eps,mint,rslt,xmin,jmin) implicit double precision(a-h,o-z) dimension x(np), y(np), rslt(np,nl), xmin(np), jmin(np) double precision l1(nl), l2(nl), l3(nl), l4(nl) one = 1.d0 zero = 0.d0 do j = 1,nl { dx = l3(j) - l1(j) dy = l4(j) - l2(j) alen = sqrt(dx**2 + dy**2) if(alen .gt. eps) { co = dx/alen si = dy/alen } else { co = 0.5 si = 0.5 } do i = 1, np { xpx1 = x(i) - l1(j) ypy1 = y(i) - l2(j) xpx2 = x(i) - l3(j) ypy2 = y(i) - l4(j) d1 = xpx1**2 + ypy1**2 d2 = xpx2**2 + ypy2**2 dd = min(d1,d2) if(alen .gt. eps) { xpr = xpx1*co + ypy1*si if(xpr .lt. zero .or. xpr .gt. alen) { d3 = -one } else { ypr = - xpx1*si + ypy1*co d3 = ypr**2 } } else { d3 = -one } if(d3 .ge. zero) { dd = min(dd,d3) } sd =sqrt(dd) rslt(i,j) = sd if(mint.gt.0) { if(sd .lt. xmin(i)) { xmin(i) = sd if(mint.gt.1) { jmin(i) = j } } } } } return end spatstat/tests/0000755000176000001440000000000012324667730013321 5ustar ripleyusersspatstat/tests/badwindow.txt0000644000176000001440000005451112324667730016046 0ustar ripleyusers x y i 486959 6497047 1 487223 6497012 1 487293 6497170 1 487434 6497187 1 487504 6497047 1 487539 6496959 1 487557 6496889 1 488875 6496924 1 488945 6496643 1 490808 6496643 1 490737 6496854 1 490298 6497644 1 490140 6498541 1 490298 6498857 1 490491 6497855 1 490948 6496854 1 491036 6496555 1 491950 6496537 1 491282 6500298 1 491282 6501546 1 491124 6501792 1 491124 6501985 1 491563 6502319 1 491493 6502740 1 491475 6503355 1 491686 6504375 1 491616 6505324 1 490772 6505675 1 490526 6506237 1 489683 6506237 1 489490 6505605 1 489578 6505359 1 489191 6505078 1 488892 6504023 1 488910 6503795 1 488716 6503812 1 488611 6504568 1 488031 6505201 1 487522 6505042 1 487522 6504919 1 487486 6504849 1 487416 6504884 1 487399 6504814 1 487346 6504832 1 487240 6504638 1 487117 6504515 1 487117 6503935 1 487276 6504006 1 487346 6503971 1 487399 6503865 1 487486 6503812 1 487574 6503777 1 487557 6503689 1 487082 6503303 1 486994 6502266 1 487205 6501159 1 487117 6500526 1 487188 6499437 1 487012 6498259 1 486924 6497029 1 487186 6499396 2 487182 6499396 2 487186 6499426 2 487186 6499396 2 487126 6500589 2 487126 6500476 2 487156 6500476 2 487156 6500176 2 487186 6500176 2 487186 6499462 2 487117 6500526 2 487126 6500589 2 487156 6500686 2 487140 6500686 2 487156 6500805 2 487156 6500686 2 487186 6500986 2 487181 6500986 2 487186 6501021 2 487186 6500986 2 487216 6501076 2 487194 6501076 2 487205 6501159 2 487187 6501256 2 487216 6501256 2 487216 6501076 2 487186 6501406 2 487186 6501260 2 487158 6501406 2 487186 6501406 2 487156 6501466 2 487156 6501417 2 487147 6501466 2 487156 6501466 2 487096 6501766 2 487096 6501732 2 487090 6501766 2 487096 6501766 2 487066 6502936 2 487066 6502636 2 487096 6502636 2 487096 6502606 2 487156 6502606 2 487156 6502486 2 487066 6502486 2 487066 6502456 2 487036 6502456 2 487036 6502156 2 487015 6502156 2 486994 6502266 2 487064 6503086 2 487066 6503086 2 487066 6503112 2 487066 6503116 2 487156 6503116 2 487156 6503026 2 487126 6503026 2 487126 6502996 2 487096 6502996 2 487096 6502936 2 487066 6502936 2 488956 6501496 3 488956 6501256 3 488926 6501256 3 488926 6501046 3 488896 6501046 3 488896 6500806 3 488866 6500806 3 488866 6500506 3 488836 6500506 3 488836 6500236 3 488806 6500236 3 488806 6499996 3 488776 6499996 3 488776 6499486 3 488686 6499486 3 488686 6499126 3 488716 6499126 3 488716 6499006 3 488626 6499006 3 488626 6499036 3 488596 6499036 3 488596 6499066 3 488566 6499066 3 488566 6499126 3 488536 6499126 3 488536 6499216 3 488416 6499216 3 488416 6499456 3 488446 6499456 3 488446 6499696 3 488416 6499696 3 488416 6499936 3 488446 6499936 3 488446 6500056 3 488476 6500056 3 488476 6500146 3 488506 6500146 3 488506 6500266 3 488536 6500266 3 488536 6500386 3 488566 6500386 3 488566 6500656 3 488536 6500656 3 488536 6500986 3 488566 6500986 3 488566 6501136 3 488536 6501136 3 488536 6501376 3 488566 6501376 3 488566 6501406 3 488596 6501406 3 488596 6501496 3 488566 6501496 3 488566 6501616 3 488596 6501616 3 488596 6501796 3 488626 6501796 3 488626 6502036 3 488656 6502036 3 488656 6502096 3 488686 6502096 3 488686 6502246 3 488716 6502246 3 488716 6502276 3 488776 6502276 3 488776 6502336 3 488806 6502336 3 488806 6502426 3 488836 6502426 3 488836 6502636 3 488866 6502636 3 488866 6502666 3 488926 6502666 3 488926 6502696 3 488986 6502696 3 488986 6502726 3 489046 6502726 3 489046 6502756 3 489136 6502756 3 489136 6502096 3 489106 6502096 3 489106 6501976 3 489076 6501976 3 489076 6501826 3 489046 6501826 3 489046 6501736 3 489016 6501736 3 489016 6501586 3 488986 6501586 3 488986 6501496 3 490216 6502426 4 490216 6502246 4 490246 6502246 4 490246 6502186 4 490306 6502186 4 490306 6501946 4 490216 6501946 4 490216 6502096 4 490186 6502096 4 490186 6502156 4 490036 6502156 4 490036 6502126 4 489946 6502126 4 489946 6502096 4 489916 6502096 4 489916 6502066 4 489826 6502066 4 489826 6502036 4 489796 6502036 4 489796 6501946 4 489706 6501946 4 489706 6502036 4 489736 6502036 4 489736 6502186 4 489766 6502186 4 489766 6502216 4 489796 6502216 4 489796 6502276 4 489946 6502276 4 489946 6502306 4 489976 6502306 4 489976 6502336 4 490006 6502336 4 490006 6502366 4 490036 6502366 4 490036 6502426 4 488642 6504346 5 488716 6503812 5 488910 6503795 5 488892 6504023 5 488926 6504143 5 488926 6503806 5 488956 6503806 5 488956 6503686 5 488986 6503686 5 488986 6503566 5 489016 6503566 5 489016 6503476 5 489046 6503476 5 489046 6503386 5 489076 6503386 5 489076 6503296 5 489106 6503296 5 489106 6503206 5 489136 6503206 5 489136 6503086 5 489166 6503086 5 489166 6502846 5 489046 6502846 5 489046 6503086 5 488926 6503086 5 488926 6503236 5 488746 6503236 5 488746 6503266 5 488536 6503266 5 488536 6503296 5 488506 6503296 5 488506 6503326 5 488416 6503326 5 488416 6503386 5 488326 6503386 5 488326 6503506 5 488356 6503506 5 488356 6503536 5 488416 6503536 5 488416 6503566 5 488446 6503566 5 488446 6503656 5 488626 6503656 5 488626 6503746 5 488656 6503746 5 488656 6503776 5 488686 6503776 5 488686 6503956 5 488656 6503956 5 488656 6503986 5 488626 6503986 5 488626 6504046 5 488596 6504046 5 488596 6504076 5 488566 6504076 5 488566 6504106 5 488536 6504106 5 488536 6504166 5 488506 6504166 5 488506 6504226 5 488476 6504226 5 488476 6504346 5 489886 6503386 6 489886 6503146 6 489916 6503146 6 489916 6503056 6 489736 6503056 6 489736 6503206 6 489706 6503206 6 489706 6503266 6 489676 6503266 6 489676 6503356 6 489796 6503356 6 489796 6503596 6 489916 6503596 6 489916 6503386 6 490006 6505666 7 489916 6505666 7 489916 6505756 7 490006 6505756 7 487426 6504856 8 487396 6504796 8 487276 6504676 8 490786 6505366 9 490786 6505336 9 491176 6505336 9 491176 6505276 9 491236 6505276 9 491236 6505126 9 491266 6505126 9 491266 6504976 9 491236 6504976 9 491236 6504916 9 491206 6504916 9 491206 6504886 9 491176 6504886 9 491176 6504856 9 491086 6504856 9 491086 6504886 9 490996 6504886 9 490996 6504916 9 490966 6504916 9 490966 6504946 9 490936 6504946 9 490936 6505006 9 490876 6505006 9 490876 6505186 9 490846 6505186 9 490846 6505246 9 490726 6505246 9 490726 6505276 9 490696 6505276 9 490696 6505366 9 487906 6505066 10 487906 6505036 10 487936 6505036 10 487936 6505006 10 487966 6505006 10 487966 6504616 10 487906 6504616 10 487906 6504586 10 487846 6504586 10 487846 6504556 10 487756 6504556 10 487756 6504526 10 487606 6504526 10 487606 6504646 10 487636 6504646 10 487636 6504766 10 487666 6504766 10 487666 6504886 10 487726 6504886 10 487726 6504976 10 487756 6504976 10 487756 6505006 10 487786 6505006 10 487786 6505036 10 487816 6505036 10 487816 6505066 10 491416 6504856 11 491326 6504856 11 491326 6505006 11 491416 6505006 11 491386 6504736 12 491266 6504736 12 491266 6504826 12 491386 6504826 12 487456 6504586 13 487456 6504436 13 487366 6504436 13 487366 6504466 13 487306 6504466 13 487306 6504556 13 487336 6504556 13 487336 6504586 13 487396 6504586 13 487396 6504676 13 487486 6504676 13 487486 6504586 13 489226 6504646 14 489226 6504616 14 489256 6504616 14 489256 6504556 14 489286 6504556 14 489286 6504466 14 489106 6504466 14 489106 6504586 14 489136 6504586 14 489136 6504646 14 488296 6504406 15 488296 6504316 15 488206 6504316 15 488206 6504376 15 488176 6504376 15 488176 6504466 15 488206 6504466 15 488206 6504496 15 488236 6504496 15 488236 6504526 15 488326 6504526 15 488326 6504406 15 490666 6504466 16 490666 6504376 16 490696 6504376 16 490696 6504316 16 490756 6504316 16 490756 6504256 16 490786 6504256 16 490786 6504166 16 490696 6504166 16 490696 6504226 16 490576 6504226 16 490576 6504286 16 490546 6504286 16 490546 6504466 16 489346 6503986 17 489346 6504076 17 489406 6504076 17 489406 6504166 17 489526 6504166 17 489526 6504256 17 489496 6504256 17 489496 6504346 17 489586 6504346 17 489586 6504256 17 489646 6504256 17 489646 6504196 17 489706 6504196 17 489706 6504016 17 489676 6504016 17 489676 6503896 17 489586 6503896 17 489586 6503956 17 489496 6503956 17 489496 6503986 17 489346 6503986 17 489346 6503986 17 489346 6503836 17 489376 6503836 17 489376 6503746 17 489346 6503746 17 489346 6503566 17 489256 6503566 17 489256 6503506 17 489226 6503506 17 489226 6503416 17 489196 6503416 17 489196 6503386 17 489076 6503386 17 489076 6503446 17 489046 6503446 17 489046 6503566 17 489016 6503566 17 489016 6503626 17 488986 6503626 17 488986 6503836 17 489106 6503836 17 489106 6504106 17 489076 6504106 17 489076 6504226 17 489196 6504226 17 489196 6504196 17 489226 6504196 17 489226 6504076 17 489256 6504076 17 489256 6503986 17 487936 6504166 18 487936 6504136 18 487966 6504136 18 487966 6504016 18 487846 6504016 18 487846 6504046 18 487816 6504046 18 487816 6504136 18 487846 6504136 18 487846 6504166 18 488596 6504046 19 488596 6503986 19 488626 6503986 19 488626 6503896 19 488596 6503896 19 488596 6503716 19 488506 6503716 19 488506 6503806 19 488476 6503806 19 488476 6503986 19 488506 6503986 19 488506 6504046 19 487396 6503896 20 487486 6503836 20 487516 6503806 20 487126 6503956 20 487216 6503986 20 488296 6503806 21 488296 6503776 21 488326 6503776 21 488326 6503746 21 488356 6503746 21 488356 6503626 21 488236 6503626 21 488236 6503656 21 488206 6503656 21 488206 6503686 21 488146 6503686 21 488146 6503776 21 488176 6503776 21 488176 6503806 21 491146 6503686 22 491146 6503626 22 491176 6503626 22 491176 6503536 22 491146 6503536 22 491146 6503476 22 491026 6503476 22 491026 6503656 22 491056 6503656 22 491056 6503686 22 487816 6503506 23 487816 6503476 23 487846 6503476 23 487846 6503386 23 487936 6503386 23 487936 6503356 23 487966 6503356 23 487966 6503296 23 488026 6503296 23 488026 6503236 23 488086 6503236 23 488086 6503116 23 487936 6503116 23 487936 6503146 23 487846 6503146 23 487846 6503176 23 487816 6503176 23 487816 6503206 23 487786 6503206 23 487786 6503386 23 487696 6503386 23 487696 6503356 23 487606 6503356 23 487606 6503506 23 490036 6503506 24 490036 6503386 24 490096 6503386 24 490096 6503266 24 490066 6503266 24 490066 6503176 24 490096 6503176 24 490096 6503026 24 489976 6503026 24 489976 6503086 24 489946 6503086 24 489946 6503146 24 489916 6503146 24 489916 6503386 24 489946 6503386 24 489946 6503506 24 489496 6503356 25 489406 6503356 25 489406 6503446 25 489496 6503446 25 488386 6503356 26 488386 6503326 26 488416 6503326 26 488416 6503236 26 488326 6503236 26 488326 6503266 26 488296 6503266 26 488296 6503356 26 490726 6503206 27 490636 6503206 27 490636 6503326 27 490726 6503326 27 489496 6503056 28 489406 6503056 28 489406 6503176 28 489526 6503176 28 489526 6503086 28 489496 6503086 28 490726 6503086 29 490726 6502996 29 490756 6502996 29 490756 6502876 29 490666 6502876 29 490666 6502936 29 490636 6502936 29 490636 6503086 29 491176 6502996 30 491086 6502996 30 491086 6503086 30 491176 6503086 30 487786 6503056 31 487786 6503026 31 488116 6503026 31 488116 6502996 31 488266 6502996 31 488266 6502936 31 488626 6502936 31 488626 6502906 31 488806 6502906 31 488806 6502876 31 488836 6502876 31 488836 6502786 31 488806 6502786 31 488806 6502636 31 488776 6502636 31 488776 6502606 31 488686 6502606 31 488686 6502576 31 488656 6502576 31 488656 6502546 31 488506 6502546 31 488506 6502516 31 488476 6502516 31 488476 6502486 31 488416 6502486 31 488416 6502456 31 488356 6502456 31 488356 6502396 31 488296 6502396 31 488296 6502306 31 488326 6502306 31 488326 6502216 31 488416 6502216 31 488416 6502246 31 488446 6502246 31 488446 6502276 31 488476 6502276 31 488476 6502306 31 488506 6502306 31 488506 6502336 31 488536 6502336 31 488536 6502366 31 488566 6502366 31 488566 6502426 31 488596 6502426 31 488596 6502456 31 488656 6502456 31 488656 6502486 31 488806 6502486 31 488806 6502396 31 488776 6502396 31 488776 6502366 31 488746 6502366 31 488746 6502306 31 488686 6502306 31 488686 6502246 31 488626 6502246 31 488626 6502186 31 488536 6502186 31 488536 6502156 31 488506 6502156 31 488506 6502126 31 488476 6502126 31 488476 6502006 31 488416 6502006 31 488416 6501976 31 488386 6501976 31 488386 6501946 31 488326 6501946 31 488326 6501886 31 488296 6501886 31 488296 6501856 31 488266 6501856 31 488266 6501706 31 488206 6501706 31 488206 6501676 31 488176 6501676 31 488176 6501646 31 488086 6501646 31 488086 6501616 31 487996 6501616 31 487996 6501586 31 487876 6501586 31 487876 6501556 31 487786 6501556 31 487786 6501646 31 487756 6501646 31 487756 6501766 31 487726 6501766 31 487726 6501856 31 487756 6501856 31 487756 6501946 31 487816 6501946 31 487816 6502066 31 487786 6502066 31 487786 6502096 31 487666 6502096 31 487666 6502186 31 487606 6502186 31 487606 6502246 31 487576 6502246 31 487576 6502276 31 487546 6502276 31 487546 6502306 31 487516 6502306 31 487516 6502426 31 487456 6502426 31 487456 6502636 31 487486 6502636 31 487486 6502696 31 487546 6502696 31 487546 6502786 31 487516 6502786 31 487516 6502906 31 487546 6502906 31 487546 6502966 31 487606 6502966 31 487606 6502996 31 487636 6502996 31 487636 6503026 31 487666 6503026 31 487666 6503056 31 489466 6502816 32 489466 6502786 32 489496 6502786 32 489496 6502756 32 489526 6502756 32 489526 6502726 32 489586 6502726 32 489586 6502696 32 489616 6502696 32 489616 6502486 32 489586 6502486 32 489586 6502366 32 489616 6502366 32 489616 6502156 32 489586 6502156 32 489586 6502096 32 489556 6502096 32 489556 6501976 32 489586 6501976 32 489586 6501796 32 489556 6501796 32 489556 6501766 32 489436 6501766 32 489436 6501646 32 489406 6501646 32 489406 6501616 32 489316 6501616 32 489316 6501526 32 489196 6501526 32 489196 6501586 32 489106 6501586 32 489106 6501856 32 489166 6501856 32 489166 6502096 32 489226 6502096 32 489226 6502246 32 489166 6502246 32 489166 6502426 32 489196 6502426 32 489196 6502486 32 489226 6502486 32 489226 6502576 32 489256 6502576 32 489256 6502606 32 489286 6502606 32 489286 6502726 32 489316 6502726 32 489316 6502786 32 489376 6502786 32 489376 6502816 32 487276 6502336 33 487276 6502306 33 487306 6502306 33 487306 6502216 33 487216 6502216 33 487216 6502096 33 487126 6502096 33 487126 6502246 33 487156 6502246 33 487156 6502306 33 487186 6502306 33 487186 6502336 33 490126 6501856 34 490036 6501856 34 490036 6501976 34 490186 6501976 34 490186 6501886 34 490126 6501886 34 490756 6501406 35 490666 6501406 35 490666 6501496 35 490756 6501496 35 488116 6501346 36 488116 6501316 36 488146 6501316 36 488146 6501076 36 488116 6501076 36 488116 6501016 36 488056 6501016 36 488056 6500866 36 488086 6500866 36 488086 6500836 36 488116 6500836 36 488116 6500746 36 488146 6500746 36 488146 6500716 36 488236 6500716 36 488236 6500776 36 488296 6500776 36 488296 6500926 36 488386 6500926 36 488386 6500776 36 488356 6500776 36 488356 6500656 36 488326 6500656 36 488326 6500566 36 488356 6500566 36 488356 6500476 36 488236 6500476 36 488236 6500506 36 488146 6500506 36 488146 6500416 36 488206 6500416 36 488206 6500326 36 488116 6500326 36 488116 6500296 36 488086 6500296 36 488086 6500206 36 487996 6500206 36 487996 6500116 36 488026 6500116 36 488026 6500026 36 488056 6500026 36 488056 6499846 36 488116 6499846 36 488116 6499786 36 488146 6499786 36 488146 6499696 36 488176 6499696 36 488176 6499606 36 488056 6499606 36 488056 6499636 36 487966 6499636 36 487966 6499606 36 487876 6499606 36 487876 6499636 36 487846 6499636 36 487846 6499726 36 487816 6499726 36 487816 6499786 36 487786 6499786 36 487786 6499936 36 487846 6499936 36 487846 6500026 36 487726 6500026 36 487726 6499996 36 487636 6499996 36 487636 6500086 36 487666 6500086 36 487666 6500356 36 487636 6500356 36 487636 6500446 36 487756 6500446 36 487756 6500566 36 487786 6500566 36 487786 6500656 36 487816 6500656 36 487816 6500746 36 487846 6500746 36 487846 6500896 36 487816 6500896 36 487816 6501076 36 487846 6501076 36 487846 6501166 36 487906 6501166 36 487906 6501286 36 487996 6501286 36 487996 6501316 36 488026 6501316 36 488026 6501346 36 489226 6501046 37 489136 6501046 37 489136 6501196 37 489226 6501196 37 490666 6500896 38 490576 6500896 38 490576 6501106 38 490636 6501106 38 490636 6501196 38 490726 6501196 38 490726 6501046 38 490696 6501046 38 490696 6501016 38 490666 6501016 38 489646 6500926 39 489646 6500836 39 489676 6500836 39 489676 6500716 39 489556 6500716 39 489556 6500926 39 488986 6500836 40 488986 6500776 40 489046 6500776 40 489046 6500626 40 489106 6500626 40 489106 6500446 40 489016 6500446 40 489016 6500416 40 488986 6500416 40 488986 6500356 40 488896 6500356 40 488896 6500836 40 488356 6500296 41 488356 6500176 41 488386 6500176 41 488386 6500026 41 488266 6500026 41 488266 6500056 41 488206 6500056 41 488206 6500116 41 488176 6500116 41 488176 6500236 41 488206 6500236 41 488206 6500296 41 489226 6500146 42 489136 6500146 42 489136 6500236 42 489226 6500236 42 489226 6499756 43 489046 6499756 43 489046 6499846 43 489106 6499846 43 489106 6499876 43 489136 6499876 43 489136 6499936 43 489226 6499936 43 487486 6499666 44 487396 6499666 44 487396 6499756 44 487486 6499756 44 488386 6499666 45 488386 6499636 45 488416 6499636 45 488416 6499546 45 488386 6499546 45 488386 6499486 45 488296 6499486 45 488296 6499576 45 488266 6499576 45 488266 6499666 45 487936 6499546 46 487936 6499186 46 487906 6499186 46 487906 6499156 46 487876 6499156 46 487876 6499126 46 487816 6499126 46 487816 6499066 46 487786 6499066 46 487786 6498886 46 487636 6498886 46 487636 6499066 46 487606 6499066 46 487606 6499186 46 487576 6499186 46 487576 6499306 46 487696 6499306 46 487696 6499396 46 487606 6499396 46 487606 6499486 46 487786 6499486 46 487786 6499516 46 487846 6499516 46 487846 6499546 46 489286 6499396 47 489166 6499396 47 489166 6499486 47 489286 6499486 47 488296 6499036 48 488296 6498886 48 488446 6498886 48 488446 6498796 48 488506 6498796 48 488506 6498706 48 488446 6498706 48 488446 6498676 48 488386 6498676 48 488386 6498646 48 488356 6498646 48 488356 6498616 48 488116 6498616 48 488116 6498586 48 488056 6498586 48 488056 6498556 48 488026 6498556 48 488026 6498526 48 487876 6498526 48 487876 6498646 48 487996 6498646 48 487996 6498676 48 488026 6498676 48 488026 6498706 48 488116 6498706 48 488116 6498976 48 488146 6498976 48 488146 6499006 48 488176 6499006 48 488176 6499096 48 488236 6499096 48 488236 6499306 48 488266 6499306 48 488266 6499396 48 488386 6499396 48 488386 6499306 48 488356 6499306 48 488356 6499096 48 488326 6499096 48 488326 6499036 48 489886 6499276 49 489766 6499276 49 489766 6499396 49 489886 6499396 49 490156 6499066 50 490156 6499006 50 490186 6499006 50 490186 6498766 50 490156 6498766 50 490096 6498556 50 490096 6498526 50 489976 6498526 50 489976 6498706 50 490066 6498706 50 490066 6498826 50 489766 6498826 50 489766 6498916 50 489736 6498916 50 489736 6499006 50 489766 6499006 50 489766 6499066 50 489976 6499066 50 489976 6499036 50 490066 6499036 50 490066 6499066 50 487756 6498466 51 487756 6498256 51 487666 6498256 51 487666 6498226 51 487636 6498226 51 487636 6498196 51 487516 6498196 51 487516 6498226 51 487486 6498226 51 487486 6498376 51 487396 6498376 51 487396 6498406 51 487336 6498406 51 487336 6498526 51 487576 6498526 51 487576 6498556 51 487816 6498556 51 487816 6498466 51 489316 6498106 52 489226 6498106 52 489226 6498226 52 489316 6498226 52 490066 6497836 53 489976 6497836 53 489976 6497956 53 490066 6497956 53 489436 6497536 54 489346 6497536 54 489346 6497926 54 489466 6497926 54 489466 6497596 54 489436 6497596 54 490726 6497926 55 490726 6497656 55 490756 6497656 55 490756 6497596 55 490816 6497596 55 490816 6497506 55 490786 6497506 55 490786 6497476 55 490696 6497476 55 490696 6497536 55 490666 6497536 55 490666 6497656 55 490636 6497656 55 490636 6497746 55 490606 6497746 55 490606 6497776 55 490576 6497776 55 490576 6497926 55 490156 6497746 56 490156 6497716 56 490186 6497716 56 490186 6497656 56 490216 6497656 56 490216 6497566 56 490336 6497566 56 490336 6497476 56 490306 6497476 56 490306 6497326 56 490246 6497326 56 490246 6497296 56 490096 6497296 56 490096 6497356 56 490066 6497356 56 490066 6497596 56 490036 6497596 56 490036 6497716 56 490066 6497716 56 490066 6497746 56 488026 6497536 57 487936 6497536 57 487936 6497626 57 488026 6497626 57 489466 6497206 58 489346 6497206 58 489346 6497446 58 489376 6497446 58 489376 6497506 58 489526 6497506 58 489526 6497296 58 489466 6497296 58 490876 6497266 59 490786 6497266 59 490786 6497356 59 490876 6497356 59 490936 6497236 60 490936 6497206 60 490996 6497206 60 490996 6497176 60 491026 6497176 60 491026 6496996 60 491086 6496996 60 491086 6496936 60 491206 6496936 60 491206 6496696 60 491116 6496696 60 491116 6496726 60 491086 6496726 60 491086 6496846 60 491056 6496846 60 491056 6496906 60 490996 6496906 60 490996 6496966 60 490936 6496966 60 490936 6497026 60 490906 6497026 60 490906 6497116 60 490876 6497116 60 490876 6497146 60 490846 6497146 60 490846 6497236 60 490366 6496906 61 490276 6496906 61 490276 6497026 61 490306 6497026 61 490306 6497176 61 490396 6497176 61 490396 6497206 61 490516 6497206 61 490516 6497116 61 490456 6497116 61 490456 6497056 61 490396 6497056 61 490396 6497026 61 490366 6497026 61 487456 6497146 62 487486 6497116 62 487486 6497086 62 487546 6497086 62 487546 6496936 62 487216 6497026 62 487216 6497086 62 487126 6497086 62 487126 6497176 62 489586 6496936 63 489376 6496936 63 489376 6497026 63 489586 6497026 63 spatstat/tests/alltests.R0000644000176000001440000015455612330130002015265 0ustar ripleyusers# nndist.R # Check that nndist and nnwhich give # results consistent with direct calculation from pairdist # Similarly for nncross and distfun # Also test whether minnndist(X) == min(nndist(X)) require(spatstat) local({ eps <- sqrt(.Machine$double.eps) f <- function(mat,k) { apply(mat, 1, function(z,n) { sort(z)[n] }, n=k+1) } g <- function(mat,k) { apply(mat, 1, function(z,n) { order(z)[n] }, n=k+1) } # Two dimensions X <- runifpoint(42) nn <- nndist(X) nnP <- f(pairdist(X), 1) if(any(abs(nn - nnP) > eps)) stop("nndist.ppp does not agree with pairdist") nn5 <- nndist(X, k=5) nn5P <- f(pairdist(X), 5) if(any(abs(nn5 - nn5P) > eps)) stop("nndist.ppp(k=5) does not agree with pairdist") nw <- nnwhich(X) nwP <- g(pairdist(X), 1) if(any(nw != nwP)) stop("nnwhich.ppp does not agree with pairdist") nw5 <- nnwhich(X, k=5) nw5P <- g(pairdist(X), 5) if(any(nw5 != nw5P)) stop("nnwhich.ppp(k=5) does not agree with pairdist") # Three dimensions X <- runifpoint3(42) nn <- nndist(X) nnP <- f(pairdist(X), 1) if(any(abs(nn - nnP) > eps)) stop("nndist.pp3 does not agree with pairdist") nn5 <- nndist(X, k=5) nn5P <- f(pairdist(X), 5) if(any(abs(nn5 - nn5P) > eps)) stop("nndist.pp3(k=5) does not agree with pairdist") nw <- nnwhich(X) nwP <- g(pairdist(X), 1) if(any(nw != nwP)) stop("nnwhich.pp3 does not agree with pairdist") nw5 <- nnwhich(X, k=5) nw5P <- g(pairdist(X), 5) if(any(nw5 != nw5P)) stop("nnwhich.pp3(k=5) does not agree with pairdist") # m dimensions X <- runifpointx(42, boxx(c(0,1),c(0,1),c(0,1),c(0,1))) nn <- nndist(X) nnP <- f(pairdist(X), 1) if(any(abs(nn - nnP) > eps)) stop("nndist.ppx does not agree with pairdist") nn5 <- nndist(X, k=5) nn5P <- f(pairdist(X), 5) if(any(abs(nn5 - nn5P) > eps)) stop("nndist.ppx(k=5) does not agree with pairdist") nw <- nnwhich(X) nwP <- g(pairdist(X), 1) if(any(nw != nwP)) stop("nnwhich.ppx does not agree with pairdist") nw5 <- nnwhich(X, k=5) nw5P <- g(pairdist(X), 5) if(any(nw5 != nw5P)) stop("nnwhich.ppx(k=5) does not agree with pairdist") #### nncross in two dimensions X <- runifpoint(42) Y <- runifpoint(42, win=owin(c(1,2),c(1,2))) # default nncross nc <- nncross(X,Y) ncd <- nc$dist ncw <- nc$which cd <- crossdist(X,Y) cdd <- apply(cd, 1, min) cdw <- apply(cd, 1, which.min) if(any(abs(ncd - cdd) > eps)) stop("nncross()$dist does not agree with apply(crossdist(), 1, min)") if(any(ncw != cdw)) stop("nncross()$which does not agree with apply(crossdist(), 1, which.min)") # sort on x nc <- nncross(X,Y, sortby="x") ncd <- nc$dist ncw <- nc$which if(any(abs(ncd - cdd) > eps)) stop("nncross(sortby=x)$dist does not agree with apply(crossdist(), 1, min)") if(any(ncw != cdw)) stop("nncross(sortby=x)$which does not agree with apply(crossdist(), 1, which.min)") # pre-sorted on x Y <- Y[order(Y$x)] nc <- nncross(X,Y, is.sorted.Y=TRUE, sortby="x") ncd <- nc$dist ncw <- nc$which cd <- crossdist(X,Y) cdd <- apply(cd, 1, min) cdw <- apply(cd, 1, which.min) if(any(abs(ncd - cdd) > eps)) stop("For sorted data, nncross()$dist does not agree with apply(crossdist(), 1, min)") if(any(ncw != cdw)) stop("For sorted data, nncross()$which does not agree with apply(crossdist(), 1, which.min)") # sanity check for nncross with k > 1 ndw <- nncross(X, Y, k=1:4)$which if(any(is.na(ndw))) stop("NA's returned by nncross.ppp(k > 1)$which") ndw <- nncross(X, Y, k=1:4, what="which") if(any(is.na(ndw))) stop("NA's returned by nncross.ppp(k > 1, what='which')") # test of correctness for nncross with k > 1 flipcells <- flipxy(cells) calcwhich <- nncross(cells, flipcells, k=1:4, what="which") truewhich <- t(apply(crossdist(cells,flipcells), 1, order))[,1:4] if(any(calcwhich != truewhich)) stop("nncross(k > 1) gives wrong answer") # test of agreement between nngrid.h and knngrid.h # dimyx=23 (found by trial-and-error) ensures that there are no ties a <- as.matrix(nnmap(cells, what="which", dimyx=23)) b <- as.matrix(nnmap(cells, what="which", dimyx=23, k=1:2)[[1]]) if(any(a != b)) stop("algorithms in nngrid.h and knngrid.h disagree") ## minnndist mfast <- minnndist(X) mslow <- min(nndist(X)) if(abs(mfast-mslow) > eps) stop("minnndist(X) disagrees with min(nndist(X))") mfast <- maxnndist(X) mslow <- max(nndist(X)) if(abs(mfast-mslow) > eps) stop("maxnndist(X) disagrees with max(nndist(X))") }) require(spatstat) local({ Y <- split(urkiola) B <- Y$birch O <- Y$oak B.lam <- predict (ppm(B, ~polynom(x,y,2)), type="trend") O.lam <- predict (ppm(O, ~polynom(x,y,2)), type="trend") Kinhom(B, lambda=B.lam, correction="iso") Kinhom(B, lambda=B.lam, correction="border") Kcross.inhom(urkiola, i="birch", j="oak", B.lam, O.lam) Kcross.inhom(urkiola, i="birch", j="oak", B.lam, O.lam, correction = "iso") Kcross.inhom(urkiola, i="birch", j="oak", B.lam, O.lam, correction = "border") }) require(spatstat) local({ # critical R values that provoke GCC bug #323 a <- marktable(lansing, R=0.25) a <- marktable(lansing, R=0.21) a <- marktable(lansing, R=0.20) a <- marktable(lansing, R=0.10) }) # tests/NAinCov.R # Testing the response to the presence of NA's in covariates require(spatstat) local({ X <- runifpoint(42) Y <- as.im(function(x,y) { x+y }, owin()) Y[owin(c(0.2,0.4),c(0.2,0.4))] <- NA # fit model: should produce a warning but no failure misfit <- ppm(X, ~Y, covariates=list(Y=Y)) # prediction Z <- predict(misfit, type="trend") Z <- predict(misfit, type="se") # covariance matrix: all should be silent v <- vcov(misfit) ss <- vcov(misfit, what="internals") NULL }) # tests for agreement between C and interpreted code # for interpoint distances require(spatstat) local({ eps <- .Machine$double.eps * 4 # pairdist.ppp X <- rpoispp(42) dC <- pairdist(X, method="C") dR <- pairdist(X, method="interpreted") if(any(abs(dC - dR) > eps)) stop("Algorithms for pairdist() do not agree") dC <- pairdist(X, periodic=TRUE, method="C") dR <- pairdist(X, periodic=TRUE, method="interpreted") if(any(abs(dC - dR) > eps)) stop("Algorithms for pairdist(periodic=TRUE) do not agree") # crossdist.ppp Y <- rpoispp(42) dC <- crossdist(X, Y, method="C") dR <- crossdist(X, Y, method="interpreted") if(any(abs(dC - dR) > eps)) stop("Algorithms for crossdist() do not agree") dC <- crossdist(X, Y, periodic=TRUE, method="C") dR <- crossdist(X, Y, periodic=TRUE, method="interpreted") if(any(abs(dC - dR) > eps)) stop("Algorithms for crossdist(periodic=TRUE) do not agree") # nndist.ppp nnC <- nndist(X, method="C") nnI <- nndist(X, method="interpreted") if(any(abs(nnC - nnI) > eps)) stop("Algorithms for nndist() do not agree") nn3C <- nndist(X, k=3, method="C") nn3I <- nndist(X, k=3, method="interpreted") if(any(abs(nn3C - nn3I) > eps)) stop("Algorithms for nndist(k=3) do not agree") # nnwhich.ppp nwC <- nnwhich(X, method="C") nwI <- nnwhich(X, method="interpreted") if(any(nwC != nwI)) stop("Algorithms for nnwhich() do not agree") nw3C <- nnwhich(X, k=3, method="C") nw3I <- nnwhich(X, k=3, method="interpreted") if(any(nw3C != nw3I)) stop("Algorithms for nnwhich(k=3) do not agree") }) # ppmBadData.R # $Revision: 1.4 $ $Date: 2011/12/05 07:29:16 $ # Testing robustness of ppm and support functions # when data are rubbish require(spatstat) local({ # --------------------------------------------------- # from Rolf: very large proportion of data is NA SEED <- 42 K <- 101 A <- 500 X <- seq(0, A, length=K) G <- expand.grid(x=X, y=X) FOO <- function(x,y) { sin(x)^2 + cos(y)^2 } M1 <- im(matrix(FOO(G$x, G$y), K, K), xcol=X, yrow=X) M <- im(matrix(FOO(G$x, G$y), K, K)) BAR <- function(x) { exp(-6.618913 + 5.855337 * x - 8.432483 * x^2) } V <- im(BAR(M$v), xcol=X, yrow=X) # V <- eval.im(exp(-6.618913 + 5.855337 * M - 8.432483 * M^2)) set.seed(SEED) Y <- rpoispp(V) fY <- ppm(Y, ~cv + I(cv^2), covariates=list(cv=M), correction="translate") diagnose.ppm(fY) lurking(fY, covariate=as.im(function(x,y){x}, square(A)), type="raw") }) # -------------------------------------------------------- # from Andrew Bevan: numerical overflow, ill-conditioned Fisher information local({ SEED <- 42 nongranite<- owin(poly = list(x = c(0, 8500, 7000, 6400, 6400, 6700, 7000, 7200, 7300, 8000, 8100, 8800, 9500, 10000, 10000, 0), y = c(0, 0, 2000, 3800, 4000, 5000, 6500, 7400, 7500, 8000, 8100, 9000, 9500, 9600, 10000, 10000))) #Trend on raster grid rain <- as.im(X=function(x,y) { x^2 + y^2 }, W=nongranite, dimyx=100) #Generate a point pattern via a Lennard-Jones process set.seed(SEED) mod4<- rmhmodel(cif="lennard", par=list(beta=1, sigma=250, epsilon=2.2), trend=rain, w=nongranite) ljtr<- rmh(mod4, start=list(n.start=80), control=list(p=1, nrep=1e5)) #Fit a point process model to the pattern with rain as a covariate # NOTE INCORRECT TREND FORMULA ljtrmod <- ppm(ljtr, trend= ~ Z, interaction=NULL, covariates=list(Z=rain)) ss <- summary(ljtrmod) }) local({ # From Ege # Degenerate but non-null argument 'covariates' xx <- list() names(xx) <- character(0) fit <- ppm(cells, ~x, covariates = xx) st <- summary(fit) }) # # tests/ppmgam.R # # Test ppm with use.gam=TRUE # # $Revision: 1.2 $ $Date: 2013/03/01 08:46:34 $ # require(spatstat) local({ fit <- ppm(nztrees, ~s(x,y), use.gam=TRUE) mm <- model.matrix(fit) mf <- model.frame(fit) v <- vcov(fit) }) # # ppmlogi.R # # Tests of ppm(method='logi') # # $Revision: 1.2 $ Date$ # require(spatstat) local({ fit <- ppm(cells, ~x, method="logi") f <- fitted(fit) p <- predict(fit) fitS <- ppm(cells, ~x, Strauss(0.08), method="logi") fS <- fitted(fitS) pS <- predict(fitS) if(spatstat.options("allow.logi.influence")) { a <- leverage(fit) b <- influence(fit) d <- dfbetas(fit) aS <- leverage(fitS) bS <- influence(fitS) dS <- dfbetas(fitS) } }) # ppmmarkorder.R # $Revision: 1.2 $ $Date: 2011/12/05 07:29:16 $ # Test that predict.ppm, plot.ppm and plot.fitin # tolerate marks with levels that are not in alpha order # require(spatstat) local({ X <- amacrine levels(marks(X)) <- c("ZZZ", "AAA") fit <- ppm(X, ~marks, MultiStrauss(c("ZZZ","AAA"), matrix(0.06, 2, 2))) aa <- predict(fit, type="trend") bb <- predict(fit, type="cif") plot(fit) plot(fitin(fit)) }) # # tests/ppmscope.R # # Test things that might corrupt the internal format of ppm objects # # $Revision: 1.4 $ $Date: 2014/04/05 02:45:41 $ # require(spatstat) local({ ## (1) Scoping problem that can arise when ppm splits the data fit <- ppm(bei, ~elev, covariates=bei.extra) mm <- model.matrix(fit) ## (2) Fast update mechanism fit1 <- ppm(cells, ~x+y, Strauss(0.07)) fit2 <- update(fit1, ~y) fit3 <- update(fit2, ~x) ## (3) New formula-based syntax attach(bei.extra) slfit <- ppm(bei ~ grad) sl2fit <- update(slfit, ~grad + I(grad^2)) slfitup <- update(slfit, use.internal=TRUE) sl2fitup <- update(sl2fit, use.internal=TRUE) }) # # tests/ppmtricks.R # # Test backdoor exits and hidden options in ppm # # $Revision: 1.1 $ $Date: 2013/06/17 06:54:51 $ # require(spatstat) local({ # (1) skip.border fit <- ppm(cells, ~1, Strauss(0.1), skip.border=TRUE) }) # # tests/prediction.R # # Things that might go wrong with predict() # # $Revision: 1.1 $ $Date: 2013/11/12 16:06:11 $ # require(spatstat) local({ # test of 'covfunargs' f <- function(x,y,a){ y - a } fit <- ppm(cells, ~x + f, covariates=list(f=f), covfunargs=list(a=1/2)) p <- predict(fit) }) # # tests/rmhAux.R # # $Revision: 1.1 $ $Date: 2013/02/18 10:41:27 $ # # For interactions which maintain 'auxiliary data', # verify that the auxiliary data are correctly updated. # # To do this we run rmh with nsave=1 so that the point pattern state # is saved after every iteration, then the algorithm is restarted, # and the auxiliary data are re-initialised. The final state must agree with # the result of simulation without saving. # ---------------------------------------------------- require(spatstat) local({ # Geyer: mod <- list(cif="geyer", par=list(beta=1.25,gamma=1.6,r=0.2,sat=4.5), w=square(10)) set.seed(42) X.nosave <- rmh(model=mod, start=list(n.start=50), control=list(nrep=1e3, periodic=FALSE, expand=1)) set.seed(42) X.save <- rmh(model=mod, start=list(n.start=50), control=list(nrep=1e3, periodic=FALSE, expand=1, nburn=0, nsave=1)) stopifnot(npoints(X.save) == npoints(X.nosave)) stopifnot(max(nncross(X.save, X.nosave)$dist) == 0) stopifnot(max(nncross(X.nosave, X.save)$dist) == 0) }) # Test examples for rmh.default # run to reasonable length # and with tests for validity added # ---------------------------------------------------- require(spatstat) local({ if(!exists("nr")) nr <- 5e3 spatstat.options(expand=1.1) # Strauss process. mod01 <- list(cif="strauss",par=list(beta=2,gamma=0.2,r=0.7), w=c(0,10,0,10)) X1.strauss <- rmh(model=mod01,start=list(n.start=80), control=list(nrep=nr)) # Strauss process, conditioning on n = 80: X2.strauss <- rmh(model=mod01,start=list(n.start=80), control=list(p=1,nrep=nr)) stopifnot(X2.strauss$n == 80) # test tracking mechanism X1.strauss <- rmh(model=mod01,start=list(n.start=80), control=list(nrep=nr), track=TRUE) X2.strauss <- rmh(model=mod01,start=list(n.start=80), control=list(p=1,nrep=nr), track=TRUE) # Hard core process: mod02 <- list(cif="hardcore",par=list(beta=2,hc=0.7),w=c(0,10,0,10)) X3.hardcore <- rmh(model=mod02,start=list(n.start=60), control=list(nrep=nr)) # Strauss process equal to pure hardcore: mod02 <- list(cif="strauss",par=list(beta=2,gamma=0,r=0.7),w=c(0,10,0,10)) X3.strauss <- rmh(model=mod02,start=list(n.start=60), control=list(nrep=nr)) # Strauss process in a polygonal window. x <- c(0.55,0.68,0.75,0.58,0.39,0.37,0.19,0.26,0.42) y <- c(0.20,0.27,0.68,0.99,0.80,0.61,0.45,0.28,0.33) mod03 <- list(cif="strauss",par=list(beta=2000,gamma=0.6,r=0.07), w=owin(poly=list(x=x,y=y))) X4.strauss <- rmh(model=mod03,start=list(n.start=90), control=list(nrep=nr)) # Strauss process in a polygonal window, conditioning on n = 42. X5.strauss <- rmh(model=mod03,start=list(n.start=42), control=list(p=1,nrep=nr)) stopifnot(X5.strauss$n == 42) # Strauss process, starting off from X4.strauss, but with the # polygonal window replace by a rectangular one. At the end, # the generated pattern is clipped to the original polygonal window. xxx <- X4.strauss xxx$window <- as.owin(c(0,1,0,1)) X6.strauss <- rmh(model=mod03,start=list(x.start=xxx), control=list(nrep=nr)) # Strauss with hardcore: mod04 <- list(cif="straush",par=list(beta=2,gamma=0.2,r=0.7,hc=0.3), w=c(0,10,0,10)) X1.straush <- rmh(model=mod04,start=list(n.start=70), control=list(nrep=nr)) # Another Strauss with hardcore (with a perhaps surprising result): mod05 <- list(cif="straush",par=list(beta=80,gamma=0.36,r=45,hc=2.5), w=c(0,250,0,250)) X2.straush <- rmh(model=mod05,start=list(n.start=250), control=list(nrep=nr)) # Pure hardcore (identical to X3.strauss). mod06 <- list(cif="straush",par=list(beta=2,gamma=1,r=1,hc=0.7), w=c(0,10,0,10)) X3.straush <- rmh(model=mod06,start=list(n.start=60), control=list(nrep=nr)) # Area-interaction, inhibitory mod.area <- list(cif="areaint",par=list(beta=2,eta=0.5,r=0.5), w=square(10)) X.area <- rmh(model=mod.area,start=list(n.start=60), control=list(nrep=nr)) # Area-interaction, clustered mod.area2 <- list(cif="areaint",par=list(beta=2,eta=1.5,r=0.5), w=square(10)) X.area2 <- rmh(model=mod.area2,start=list(n.start=60), control=list(nrep=nr)) # Area-interaction close to hard core set.seed(42) mod.area0 <- list(cif="areaint",par=list(beta=2,eta=1e-300,r=0.35), w=square(10)) X.area0 <- rmh(model=mod.area0,start=list(x.start=X3.hardcore), control=list(nrep=nr)) stopifnot(nndist(X.area0) > 0.6) # Soft core: w <- c(0,10,0,10) mod07 <- list(cif="sftcr",par=list(beta=0.8,sigma=0.1,kappa=0.5), w=c(0,10,0,10)) X.sftcr <- rmh(model=mod07,start=list(n.start=70), control=list(nrep=nr)) # Diggle, Gates, and Stibbard: mod12 <- list(cif="dgs",par=list(beta=3600,rho=0.08),w=c(0,1,0,1)) X.dgs <- rmh(model=mod12,start=list(n.start=300), control=list(nrep=nr)) # Diggle-Gratton: mod13 <- list(cif="diggra", par=list(beta=1800,kappa=3,delta=0.02,rho=0.04), w=square(1)) X.diggra <- rmh(model=mod13,start=list(n.start=300), control=list(nrep=nr)) # Geyer: mod14 <- list(cif="geyer",par=list(beta=1.25,gamma=1.6,r=0.2,sat=4.5), w=c(0,10,0,10)) X1.geyer <- rmh(model=mod14,start=list(n.start=200), control=list(nrep=nr)) # Geyer; same as a Strauss process with parameters # (beta=2.25,gamma=0.16,r=0.7): mod15 <- list(cif="geyer",par=list(beta=2.25,gamma=0.4,r=0.7,sat=10000), w=c(0,10,0,10)) X2.geyer <- rmh(model=mod15,start=list(n.start=200), control=list(nrep=nr)) mod16 <- list(cif="geyer",par=list(beta=8.1,gamma=2.2,r=0.08,sat=3)) data(redwood) X3.geyer <- rmh(model=mod16,start=list(x.start=redwood), control=list(periodic=TRUE,nrep=nr)) # Geyer, starting from the redwood data set, simulating # on a torus, and conditioning on n: X4.geyer <- rmh(model=mod16,start=list(x.start=redwood), control=list(p=1,periodic=TRUE,nrep=nr)) # Lookup (interaction function h_2 from page 76, Diggle (2003)): r <- seq(from=0,to=0.2,length=101)[-1] # Drop 0. h <- 20*(r-0.05) h[r<0.05] <- 0 h[r>0.10] <- 1 mod17 <- list(cif="lookup",par=list(beta=4000,h=h,r=r),w=c(0,1,0,1)) X.lookup <- rmh(model=mod17,start=list(n.start=100), control=list(nrep=nr)) # Strauss with trend tr <- function(x,y){x <- x/250; y <- y/250; exp((6*x + 5*y - 18*x^2 + 12*x*y - 9*y^2)/6) } beta <- 0.3 gmma <- 0.5 r <- 45 tr3 <- function(x,y){x <- x/250; y <- y/250; exp((6*x + 5*y - 18*x^2 + 12*x*y - 9*y^2)/6) } # log quadratic trend mod17 <- list(cif="strauss",par=list(beta=beta,gamma=gmma,r=r),w=c(0,250,0,250), trend=tr3) X1.strauss.trend <- rmh(model=mod17,start=list(n.start=90), control=list(nrep=nr)) }) # Things which should cause an error require(spatstat) local({ if(!exists("nv")) nv <- 0 if(!exists("nr")) nr <- 1e3 # Strauss with zero intensity and p = 1 mod0S <- list(cif="strauss",par=list(beta=0,gamma=0.6,r=0.7), w = square(3)) out <- try(X0S <- rmh(model=mod0S,start=list(n.start=80), control=list(p=1,nrep=nr,nverb=nv),verbose=FALSE)) if(!inherits(out, "try-error")) stop("Error not trapped (Strauss with zero intensity and p = 1) in tests/rmhErrors.R") }) # # tests/rmhExpand.R # # test decisions about expansion of simulation window # # $Revision: 1.2 $ $Date: 2011/12/05 07:29:16 $ # require(spatstat) local({ fit <- ppm(cells, ~x) # check rmhmodel.ppm mod <- rmhmodel(fit) wsim <- as.rectangle(mod$trend) if(!identical(wsim, as.owin(cells))) stop("Expansion occurred improperly in rmhmodel.ppm") }) # # tests of rmh, running multitype point processes # require(spatstat) local({ if(!exists("nr")) nr <- 5e3 if(!exists("nv")) nv <- 0 spatstat.options(expand=1.1) # Multitype Poisson modp2 <- list(cif="poisson", par=list(beta=2), types=letters[1:3], w = square(10)) Xp2 <- rmh(modp2, start=list(n.start=0), control=list(p=1)) # Multitype Strauss: beta <- c(0.027,0.008) gmma <- matrix(c(0.43,0.98,0.98,0.36),2,2) r <- matrix(c(45,45,45,45),2,2) mod08 <- list(cif="straussm",par=list(beta=beta,gamma=gmma,radii=r), w=c(0,250,0,250)) X1.straussm <- rmh(model=mod08,start=list(n.start=80), control=list(ptypes=c(0.75,0.25),nrep=nr,nverb=nv)) # Multitype Strauss conditioning upon the total number # of points being 80: X2.straussm <- rmh(model=mod08,start=list(n.start=80), control=list(p=1,ptypes=c(0.75,0.25),nrep=nr, nverb=nv)) stopifnot(X2.straussm$n == 80) # Conditioning upon the number of points of type 1 being 60 # and the number of points of type 2 being 20: X3.straussm <- rmh(model=mod08,start=list(n.start=c(60,20)), control=list(fixall=TRUE,p=1,ptypes=c(0.75,0.25), nrep=nr,nverb=nv)) stopifnot(all(table(X3.straussm$marks) == c(60,20))) # Multitype Strauss hardcore: rhc <- matrix(c(9.1,5.0,5.0,2.5),2,2) mod09 <- list(cif="straushm",par=list(beta=beta,gamma=gmma, iradii=r,hradii=rhc),w=c(0,250,0,250)) X.straushm <- rmh(model=mod09,start=list(n.start=80), control=list(ptypes=c(0.75,0.25),nrep=nr,nverb=nv)) # Multitype Strauss hardcore with trends for each type: beta <- c(0.27,0.08) tr3 <- function(x,y){x <- x/250; y <- y/250; exp((6*x + 5*y - 18*x^2 + 12*x*y - 9*y^2)/6) } # log quadratic trend tr4 <- function(x,y){x <- x/250; y <- y/250; exp(-0.6*x+0.5*y)} # log linear trend mod10 <- list(cif="straushm",par=list(beta=beta,gamma=gmma, iradii=r,hradii=rhc),w=c(0,250,0,250), trend=list(tr3,tr4)) X1.straushm.trend <- rmh(model=mod10,start=list(n.start=350), control=list(ptypes=c(0.75,0.25), nrep=nr,nverb=nv)) # Multitype Strauss hardcore with trends for each type, given as images: bigwin <- square(250) i1 <- as.im(tr3, bigwin) i2 <- as.im(tr4, bigwin) mod11 <- list(cif="straushm",par=list(beta=beta,gamma=gmma, iradii=r,hradii=rhc),w=bigwin, trend=list(i1,i2)) X2.straushm.trend <- rmh(model=mod11,start=list(n.start=350), control=list(ptypes=c(0.75,0.25),expand=1, nrep=nr,nverb=nv)) ####################################################################### ############ checks on distribution of output ####################### ####################################################################### checkp <- function(p, context, testname, failmessage, pcrit=0.01) { if(missing(failmessage)) failmessage <- paste("output failed", testname) if(p < pcrit) warning(paste(context, ",", failmessage), call.=FALSE) cat(paste("\n", context, ",", testname, "has p-value", signif(p,4), "\n")) } # Multitype Strauss code; output is multitype Poisson beta <- 100 * c(1,1) ri <- matrix(0.07, 2, 2) gmma <- matrix(1, 2, 2) # no interaction tr1 <- function(x,y){ rep(1, length(x)) } tr2 <- function(x,y){ rep(2, length(x)) } mod <- rmhmodel(cif="straussm", par=list(beta=beta,gamma=gmma,radii=ri), w=owin(), trend=list(tr1,tr2)) X <- rmh(mod, start=list(n.start=0), control=list(nrep=1e6)) # The model is Poisson with intensity 100 for type 1 and 200 for type 2. # Total number of points is Poisson (300) # Marks are i.i.d. with P(type 1) = 1/3, P(type 2) = 2/3. # Test whether the total intensity looks right # p <- ppois(X$n, 300) p.val <- 2 * min(p, 1-p) checkp(p.val, "In multitype Poisson simulation", "test whether total number of points has required mean value") # Test whether the mark distribution looks right ta <- table(X$marks) cat("Frequencies of marks:") print(ta) checkp(chisq.test(ta, p = c(1,2)/3)$p.value, "In multitype Poisson simulation", "chi-squared goodness-of-fit test for mark distribution (1/3, 2/3)") ##### #### multitype Strauss code; fixall=TRUE; #### output is multinomial process with nonuniform locations #### the.context <- "In nonuniform multinomial simulation" beta <- 100 * c(1,1) ri <- matrix(0.07, 2, 2) gmma <- matrix(1, 2, 2) # no interaction tr1 <- function(x,y){ ifelse(x < 0.5, 0, 2) } tr2 <- function(x,y){ ifelse(y < 0.5, 1, 3) } # cdf of these distributions Fx1 <- function(x) { ifelse(x < 0.5, 0, ifelse(x < 1, 2 * x - 1, 1)) } Fy2 <- function(y) { ifelse(y < 0, 0, ifelse(y < 0.5, y/2, ifelse(y < 1, (1/2 + 3 * (y-1/2))/2, 1))) } mod <- rmhmodel(cif="straussm", par=list(beta=beta,gamma=gmma,radii=ri), w=owin(), trend=list(tr1,tr2)) X <- rmh(mod, start=list(n.start=c(50,50)), control=list(nrep=1e6, expand=1, p=1, fixall=TRUE)) # The model is Poisson # Mean number of type 1 points = 100 # Mean number of type 2 points = 200 # Total intensity = 300 # Marks are i.i.d. with P(type 1) = 1/3, P(type 2) = 2/3 # Test whether the coordinates look OK Y <- split(X) X1 <- Y[[names(Y)[1]]] X2 <- Y[[names(Y)[2]]] checkp(ks.test(X1$y, "punif")$p.value, the.context, "Kolmogorov-Smirnov test of uniformity of y coordinates of type 1 points") if(any(X1$x < 0.5)) { warning(paste(the.context, ",", "x-coordinates of type 1 points are IMPOSSIBLE"), call.=FALSE) } else { checkp(ks.test(Fx1(X1$x), "punif")$p.value, the.context, "Kolmogorov-Smirnov test of uniformity of transformed x coordinates of type 1 points") } checkp(ks.test(X2$x, "punif")$p.value, the.context, "Kolmogorov-Smirnov test of uniformity of x coordinates of type 2 points") checkp(ks.test(Fy2(X2$y), "punif")$p.value, the.context, "Kolmogorov-Smirnov test of uniformity of transformed y coordinates of type 2 points") }) # # tests/rmhTrend.R # # Problems with trend images (rmhmodel.ppm or rmhEngine) # require(spatstat) local({ set.seed(42) # Bug folder 37 of 8 feb 2011 # rmhmodel.ppm -> predict.ppm # + rmhResolveTypes -> is.subset.owin data(demopat) Z <- rescale(demopat, 7000) X <- unmark(Z) X1 <- split(Z)[[1]] Int <- density(X,dimyx=200) Lint <- eval.im(log(npoints(X1)*Int/npoints(X))) M <- as.owin(Int) MR <- intersect.owin(M,scalardilate(M,0.5,origin="midpoint")) X1 <- X1[MR] Fut <- ppm(X1,~offset(Lint),covariates=list(Lint=Lint), inter=BadGey(r=c(0.03,0.05),sat=3)) Y <- rmh(Fut,control=list(expand=M,nrep=1e3), verbose=FALSE) }) # strange boundary cases require(spatstat) local({ if(!exists("nv")) nv <- 0 if(!exists("nr")) nr <- 5e3 # Poisson process cat("Poisson\n") modP <- list(cif="poisson",par=list(beta=10), w = square(3)) XP <- rmh(model = modP, start = list(n.start=25), control=list(nrep=nr,nverb=nv)) # Poisson process case of Strauss cat("\nPoisson case of Strauss\n") modPS <- list(cif="strauss",par=list(beta=10,gamma=1,r=0.7), w = square(3)) XPS <- rmh(model=modPS, start=list(n.start=25), control=list(nrep=nr,nverb=nv)) # Strauss with zero intensity cat("\nStrauss with zero intensity\n") mod0S <- list(cif="strauss",par=list(beta=0,gamma=0.6,r=0.7), w = square(3)) X0S <- rmh(model=mod0S,start=list(n.start=80), control=list(nrep=nr,nverb=nv)) stopifnot(X0S$n == 0) # Poisson with zero intensity cat("\nPoisson with zero intensity\n") mod0P <- list(cif="poisson",par=list(beta=0), w = square(3)) X0P <- rmh(model = mod0P, start = list(n.start=25), control=list(nrep=nr,nverb=nv)) # Poisson conditioned on zero points cat("\nPoisson conditioned on zero points\n") modp <- list(cif="poisson", par=list(beta=2), w = square(10)) Xp <- rmh(modp, start=list(n.start=0), control=list(p=1, nrep=nr)) stopifnot(Xp$n == 0) # Multitype Poisson conditioned on zero points cat("\nMultitype Poisson conditioned on zero points\n") modp2 <- list(cif="poisson", par=list(beta=2), types=letters[1:3], w = square(10)) Xp2 <- rmh(modp2, start=list(n.start=0), control=list(p=1, nrep=nr)) stopifnot(is.marked(Xp2)) stopifnot(Xp2$n == 0) # Multitype Poisson conditioned on zero points of each type cat("\nMultitype Poisson conditioned on zero points of each type\n") Xp2fix <- rmh(modp2, start=list(n.start=c(0,0,0)), control=list(p=1, fixall=TRUE, nrep=nr)) stopifnot(is.marked(Xp2fix)) stopifnot(Xp2fix$n == 0) }) # # tests of rmhmodel.ppm # require(spatstat) local({ f <- ppm(cells) m <- rmhmodel(f) f <- ppm(cells, ~x) m <- rmhmodel(f) f <- ppm(cells, ~1, Strauss(0.1)) m <- rmhmodel(f) f <- ppm(cells, ~1, StraussHard(r=0.1,hc=0.05)) m <- rmhmodel(f) f <- ppm(cells, ~1, Hardcore(0.07)) m <- rmhmodel(f) f <- ppm(cells, ~1, DiggleGratton(0.05,0.1)) m <- rmhmodel(f) f <- ppm(cells, ~1, Softcore(0.5), correction="isotropic") m <- rmhmodel(f) f <- ppm(cells, ~1, Geyer(0.07,2)) m <- rmhmodel(f) f <- ppm(cells, ~1, BadGey(c(0.07,0.1,0.13),2)) m <- rmhmodel(f) f <- ppm(cells, ~1, PairPiece(r = c(0.05, 0.1, 0.2))) m <- rmhmodel(f) f <- ppm(cells, ~1, AreaInter(r=0.06)) m <- rmhmodel(f) # multitype r <- matrix(0.07, 2, 2) f <- ppm(amacrine, ~1, MultiStrauss(c("off","on"),r)) m <- rmhmodel(f) h <- matrix(min(nndist(amacrine))/2, 2, 2) f <- ppm(amacrine, ~1, MultiStraussHard(c("off","on"),r, h)) m <- rmhmodel(f) diag(r) <- NA diag(h) <- NA f <- ppm(amacrine, ~1, MultiStrauss(c("off","on"),r)) m <- rmhmodel(f) f <- ppm(amacrine, ~1, MultiStraussHard(c("off","on"),r, h)) m <- rmhmodel(f) # multitype data, interaction not dependent on type f <- ppm(amacrine, ~marks, Strauss(0.05)) m <- rmhmodel(f) # trends f <- ppm(cells, ~x, Strauss(0.1)) m <- rmhmodel(f) f <- ppm(cells, ~y, StraussHard(r=0.1,hc=0.05)) m <- rmhmodel(f) f <- ppm(cells, ~x+y, Hardcore(0.07)) m <- rmhmodel(f) f <- ppm(cells, ~polynom(x,y,2), Softcore(0.5), correction="isotropic") m <- rmhmodel(f) # covariates Z <- as.im(function(x,y){ x^2+y^2 }, as.owin(cells)) f <- ppm(cells, ~z, covariates=list(z=Z)) m <- rmhmodel(f) m <- rmhmodel(f, control=list(p=1)) Zim <- as.im(Z, as.owin(cells)) f <- ppm(cells, ~z, covariates=list(z=Zim)) m <- rmhmodel(f) Z <- as.im(function(x,y){ x^2+y }, as.owin(amacrine)) f <- ppm(amacrine, ~z + marks, covariates=list(z=Z)) m <- rmhmodel(f) m <- rmhmodel(f, control=list(p=1)) m <- rmhmodel(f, control=list(p=1,fixall=TRUE)) Zim <- as.im(Z, as.owin(amacrine)) f <- ppm(amacrine, ~z + marks, covariates=list(z=Zim)) m <- rmhmodel(f) }) # # tests/rmhmodelHybrids.R # # Test that rmhmodel.ppm and rmhmodel.default # work on Hybrid interaction models # # $Revision: 1.3 $ $Date: 2013/01/29 02:12:13 $ # require(spatstat) local({ # ......... rmhmodel.ppm ....................... fit1 <- ppm(redwood, ~1, Hybrid(A=Strauss(0.02), B=Geyer(0.1, 2), C=Geyer(0.15, 1))) m1 <- rmhmodel(fit1) m1 reach(m1) # Test of handling 'IsOffset' data(cells) fit2 <- ppm(cells, ~1, Hybrid(H=Hardcore(0.05), G=Geyer(0.15, 2))) rmhmodel(fit2) # Test of handling Poisson components fit3 <- ppm(cells, ~1, Hybrid(P=Poisson(), S=Strauss(0.05))) X3 <- rmh(fit3, control=list(nrep=1e3,expand=1), verbose=FALSE) # ............ rmhmodel.default ............................ modH <- list(cif=c("strauss","geyer"), par=list(list(beta=50,gamma=0.5, r=0.1), list(beta=1, gamma=0.7, r=0.2, sat=2)), w = square(1)) rmodH <- rmhmodel(modH) rmodH reach(rmodH) # test handling of Poisson components modHP <- list(cif=c("poisson","strauss"), par=list(list(beta=5), list(beta=10,gamma=0.5, r=0.1)), w = square(1)) rmodHP <- rmhmodel(modHP) rmodHP reach(rmodHP) modPP <- list(cif=c("poisson","poisson"), par=list(list(beta=5), list(beta=10)), w = square(1)) rmodPP <- rmhmodel(modPP) rmodPP reach(rmodPP) }) # # tests/rmh.ppm.R # # $Revision: 1.1 $ $Date: 2012/10/14 07:24:21 $ # # Examples removed from rmh.ppm.Rd # stripped down to minimal tests of validity # require(spatstat) local({ op <- spatstat.options() spatstat.options(rmh.nrep=10, npixel=10, ndummy.min=10) spatstat.options(project.fast=TRUE) Nrep <- 10 X <- swedishpines # Poisson process fit <- ppm(X, ~1, Poisson()) Xsim <- rmh(fit) # Strauss process fit <- ppm(X, ~1, Strauss(r=7)) Xsim <- rmh(fit) # Strauss process simulated on a larger window # then clipped to original window Xsim <- rmh(fit, control=list(nrep=Nrep, expand=1.1, periodic=TRUE)) # Strauss - hard core process # fit <- ppm(X, ~1, StraussHard(r=7,hc=2)) # Xsim <- rmh(fit, start=list(n.start=X$n)) # Geyer saturation process # fit <- ppm(X, ~1, Geyer(r=7,sat=2)) # Xsim <- rmh(fit, start=list(n.start=X$n)) # Area-interaction process fit <- ppm(X, ~1, AreaInter(r=7)) Xsim <- rmh(fit, start=list(n.start=X$n)) # soft core interaction process # X <- quadscheme(X, nd=50) # fit <- ppm(X, ~1, Softcore(kappa=0.1), correction="isotropic") # Xsim <- rmh(fit, start=list(n.start=X$n)) # Diggle-Gratton pairwise interaction model # fit <- ppm(cells, ~1, DiggleGratton(0.05, 0.1)) # Xsim <- rmh(fit, start=list(n.start=cells$n)) # plot(Xsim, main="simulation from fitted Diggle-Gratton model") X <- rSSI(0.05, 100) # piecewise-constant pairwise interaction function fit <- ppm(X, ~1, PairPiece(seq(0.02, 0.1, by=0.01))) Xsim <- rmh(fit) # marked point pattern Y <- amacrine # marked Poisson models fit <- ppm(Y) Ysim <- rmh(fit) fit <- ppm(Y,~marks) Ysim <- rmh(fit) fit <- ppm(Y,~x) Ysim <- rmh(fit) # fit <- ppm(Y,~polynom(x,2)) # Ysim <- rmh(fit) fit <- ppm(Y,~marks+x) Ysim <- rmh(fit) # fit <- ppm(Y,~marks+polynom(x,2)) # Ysim <- rmh(fit) # multitype Strauss models MS <- MultiStrauss(types = levels(Y$marks), radii=matrix(0.07, ncol=2, nrow=2)) # fit <- ppm(Y,~marks*polynom(x,2), MS) fit <- ppm(Y,~marks*x, MS) Ysim <- rmh(fit) spatstat.options(op) }) # fvproblems.R require(spatstat) # This appears in the workshop notes # Problem detected by Martin Bratschi local({ Jdif <- function(X, ..., i) { Jidot <- Jdot(X, ..., i=i) J <- Jest(X, ...) dif <- eval.fv(Jidot - J) return(dif) } Z <- Jdif(amacrine, i="on") }) # # Test mathlegend code # local({ K <- Kest(cells) plot(K) plot(K, . ~ r) plot(K, . - theo ~ r) plot(K, sqrt(./pi) ~ r) plot(K, cbind(iso, theo) ~ r) plot(K, cbind(iso, theo) - theo ~ r) plot(K, sqrt(cbind(iso, theo)/pi) ~ r) plot(K, cbind(iso/2, -theo) ~ r) plot(K, cbind(iso/2, trans/2) - theo ~ r) # test expansion of .x and .y plot(K, . ~ .x) plot(K, . - theo ~ .x) plot(K, .y - theo ~ .x) plot(K, sqrt(.y) - sqrt(theo) ~ .x) # problems with parsing weird strings in levels(marks(X)) # noted by Ulf Mehlig levels(marks(amacrine)) <- c("Nastricreechia krorluppia", "Homo habilis") plot(Kcross(amacrine)) plot(alltypes(amacrine, "K")) plot(alltypes(amacrine, "J")) plot(alltypes(amacrine, pcfcross)) }) ## tests involving strange mark values ## $Revision: 1.2 $ $Date: 2014/01/08 11:15:05 $ require(spatstat) local({ ## ppm() where mark levels contain illegal characters hyphenated <- c("a", "not-a") spaced <- c("U", "non U") suffixed <- c("a+", "a*") charred <- c("+", "*") irad <- matrix(0.1, 2,2) hrad <- matrix(0.005, 2, 2) tryit <- function(types, X, irad, hrad) { levels(marks(X)) <- types fit <- ppm(X, ~marks + polynom(x,y,2), MultiStraussHard(types=types,iradii=irad,hradii=hrad)) print(fit) print(coef(fit)) val <- fitted(fit) pred <- predict(fit) return(invisible(NULL)) } tryit(hyphenated, amacrine, irad, hrad) tryit(spaced, amacrine, irad, hrad) tryit(suffixed, amacrine, irad, hrad) tryit(charred, amacrine, irad, hrad) ## marks which are dates X <- cells n <- npoints(X) endoftime <- rep(ISOdate(2001,1,1), n) eotDate <- rep(as.Date("2001-01-01"), n) markformat(endoftime) markformat(eotDate) marks(X) <- endoftime print(X) Y <- X %mark% data.frame(id=1:42, date=endoftime, dd=eotDate) print(Y) }) # # test cases where there are no (rows or columns of) marks # require(spatstat) local({ n <- npoints(cells) df <- data.frame(x=1:n, y=factor(sample(letters, n, replace=TRUE))) nocolumns <- c(FALSE, FALSE) norows <- rep(FALSE, n) X <- cells marks(X) <- df marks(X) <- df[,1] marks(X) <- df[,nocolumns] Z <- Y <- X[integer(0)] marks(Y) <- df[norows,] stopifnot(is.marked(Y)) marks(Z) <- df[norows,nocolumns] stopifnot(!is.marked(Z)) }) # checks validity of fast C implementation of Geyer interaction require(spatstat) local({ X <- redwood Q <- quadscheme(X) U <- union.quad(Q) EP <- equalpairs.quad(Q) G <- Geyer(0.11, 2) # The value r=0.11 is chosen to avoid hardware numerical effects (gcc bug 323). # It avoids being close any value of pairdist(redwood). # The nearest such values are 0.1077.. and 0.1131.. # By contrast if r = 0.1 there are values differing from 0.1 by 3e-17 a <- pairsat.family$eval(X,U,EP,G$pot,G$par,"border") b <- G$fasteval(X,U,EP,G$pot,G$par,"border") if(!all(a==b)) stop("Results of Geyer()$fasteval and pairsat.family$eval do not match") # ... # and again for a non-integer value of 'sat' # (spotted by Thordis Linda Thorarinsdottir) G <- Geyer(0.11, 2.5) a <- pairsat.family$eval(X,U,EP,G$pot,G$par,"border") b <- G$fasteval(X,U,EP,G$pot,G$par,"border") if(!all(a==b)) stop("Results of Geyer()$fasteval and pairsat.family$eval do not match when sat is not an integer") }) require(spatstat) local({ co <- as.ppp(corners(letterR), letterR, check=FALSE) co[letterR] }) # tests/segments.R # $Revision: 1.7 $ $Date: 2011/12/05 07:29:16 $ require(spatstat) local({ # pointed out by Jeff Laake W <- owin() X <- psp(x0=.25,x1=.25,y0=0,y1=1,window=W) X[W] # migrated from 'lpp' X <- psp(runif(10),runif(10),runif(10),runif(10), window=owin()) Z <- as.mask.psp(X) Z <- pixellate(X) # test of distppll pointed out by Ang Qi Wei p <- matrix(c(1.5, 0), 1, 2) l <- matrix(c(0,0,1,0,1,0,2,0), 2, 4, byrow=T) a <- distppll(p, l, mintype=2, method="interpreted") b <- distppll(p, l, mintype=2, method="Fortran") d <- distppll(p, l, mintype=2, method="C") if(a$min.which != b$min.which) stop("conflict between Fortran and interpreted code in distppll") if(a$min.which != d$min.which) stop("conflict between C and interpreted code in distppll") # tests of pixellate.psp -> seg2pixL ns <- 50 out <- numeric(ns) for(i in 1:ns) { X <- psp(runif(1), runif(1), runif(1), runif(1), window=owin()) len <- lengths.psp(X) dlen <- sum(pixellate(X)$v) out[i] <- if(len > 1e-7) dlen/len else 1 } if(diff(range(out)) > 0.01) stop(paste( "pixellate.psp test 1: relative error [", paste(diff(range(out)), collapse=", "), "]")) # Michael Sumner's test examples set.seed(33) n <- 2001 co <- cbind(runif(n), runif(n)) ow <- owin() X <- psp(co[-n,1], co[-n,2], co[-1,1], co[-1,2], window=ow) s1 <- sum(pixellate(X)) s2 <- sum(lengths.psp(X)) if(abs(s1 - s2)/s2 > 0.01) { stop(paste("pixellate.psp test 2:", "sum(pixellate(X)) = ", s1, "!=", s2, "= sum(lengths.psp(X))")) } wts <- 1/(lengths.psp(X) * X$n) s1 <- sum(pixellate(X, weights=wts)) if(abs(s1-1) > 0.01) { stop(paste("pixellate.psp test 3:", "sum(pixellate(X, weights))=", s1, " (should be 1)")) } X <- psp(0, 0, 0.01, 0.001, window=owin()) s1 <- sum(pixellate(X)) s2 <- sum(lengths.psp(X)) if(abs(s1 - s2)/s2 > 0.01) { stop(paste("pixellate.psp test 4:", "sum(pixellate(X)) = ", s1, "!=", s2, "= sum(lengths.psp(X))")) } X <- psp(0, 0, 0.001, 0.001, window=owin()) s1 <- sum(pixellate(X)) s2 <- sum(lengths.psp(X)) if(abs(s1 - s2)/s2 > 0.01) { stop(paste("pixellate.psp test 5:", "sum(pixellate(X)) = ", s1, "!=", s2, "= sum(lengths.psp(X))")) } }) # test for step() operation # require(spatstat) local({ Z <- as.im(function(x,y){ x^3 - y^2 }, nztrees$window) fitP <- ppm(nztrees, ~x+y+Z, covariates=list(Z=Z)) step(fitP) fitS <- update(fitP, Strauss(7)) step(fitS) fitM <- ppm(amacrine, ~ marks*(x+y), MultiStrauss(types=levels(marks(amacrine)), radii=matrix(0.04, 2, 2))) step(fitM) }) ## badwindowcheck.R ## $Revision: 1.2 $ $Date: 2014/01/27 07:18:41 $ ## require(spatstat) local({ ## Simple example of self-crossing polygon x <- read.table("selfcross.txt", header=TRUE) ## Auto-repair w <- owin(poly=x) ## Real data involving various quirks b <- read.table("badwindow.txt", header=TRUE) b <- split(b, factor(b$i)) b <- lapply(b, function(z) { as.list(z[,-3]) }) ## make owin without checking W <- owin(poly=b, check=FALSE) ## Apply stringent checks owinpolycheck(W,verbose=FALSE) ## Auto-repair W2 <- owin(poly=b) }) # # tests/hobjects.R # # Validity of methods for ppm(... method="ho") # require(spatstat) local({ fit <- ppm(cells, ~1, Strauss(0.1), method="ho", nsim=10) fitx <- ppm(cells, ~offset(x), Strauss(0.1), method="ho", nsim=10) a <- AIC(fit) ax <- AIC(fitx) f <- fitted(fit) fx <- fitted(fitx) p <- predict(fit) px <- predict(fitx) }) # check kstest with strange data require(spatstat) local({ # Marked point patterns with some marks not represented AC <- split(ants, un=FALSE)$Cataglyphis AM <- split(ants, un=FALSE)$Messor DM <- distmap(AM) # should produce a warning, rather than a crash: kstest(AC, DM) # should be OK: kstest(unmark(AC), DM) # linear networks X <- runiflpp(20, simplenet) fit <- lppm(X, ~1) kstest(fit, "y") }) # # tests/kppm.R # # $Revision: 1.6 $ $Date: 2012/04/08 03:22:20 $ # # Test functionality of kppm that depends on RandomFields # require(spatstat) local({ if(require(RandomFields) && RandomFieldsSafe()) { fit0 <- kppm(redwood, ~1, "LGCP") simulate(fit0) fit <- kppm(redwood, ~x, "LGCP", covmodel=list(model="matern", nu=0.3), control=list(maxit=5)) simulate(fit) # ... and Abdollah's code fit <- kppm(redwood, ~x, cluster="Cauchy", statistic="K") simulate(fit) } }) # temporary test file for localpcfmatrix require(spatstat) local({ a <- localpcfmatrix(redwood) a plot(a) a[, 3:5] }) # check for various bugs related to factor conversions require(spatstat) local({ # make a factor image m <- factor(rep(letters[1:4], 4)) Z <- im(m, xcol=1:4, yrow=1:4) # make a point pattern set.seed(42) X <- runifpoint(20, win=as.owin(Z)) # look up the image at the points of X # (a) internal ans1 <- lookup.im(Z, X$x, X$y) stopifnot(is.factor(ans1)) # (b) user level ans2 <- Z[X] stopifnot(is.factor(ans2)) # (c) turn the image into a tessellation # and apply quadratcount V <- tess(image = Z) quadratcount(X, tess=V) }) # # tests/splitpea.R # # Check behaviour of split.ppp etc # # Thanks to Marcelino de la Cruz # # $Revision: 1.9 $ $Date: 2014/02/05 09:30:38 $ # require(spatstat) local({ W <- square(8) X <- ppp(c(2.98, 4.58, 7.27, 1.61, 7.19), c(7.56, 5.29, 5.03, 0.49, 1.65), window=W) Z <- quadrats(W, 4, 4) Yall <- split(X, Z, drop=FALSE) Ydrop <- split(X, Z, drop=TRUE) P <- Yall[[1]] if(!all(inside.owin(P$x, P$y, P$window))) stop("Black hole detected when drop=FALSE") P <- Ydrop[[1]] if(!all(inside.owin(P$x, P$y, P$window))) stop("Black hole detected when drop=TRUE") Ydrop[[1]] <- P[1] split(X, Z, drop=TRUE) <- Ydrop # test NA handling Zbad <- quadrats(square(4), 2, 2) Ybdrop <- split(X, Zbad, drop=TRUE) Yball <- split(X, Zbad, drop=FALSE) # From Marcelino set.seed(1) W<- square(10) # the big window puntos<- rpoispp(0.5, win=W) data(letterR) r00 <- letterR r05 <- shift(letterR,c(0,5)) r50 <- shift(letterR,c(5,0)) r55 <- shift(letterR,c(5,5)) tessr4 <- tess(tiles=list(r00, r05,r50,r55)) puntosr4 <- split(puntos, tessr4, drop=TRUE) split(puntos, tessr4, drop=TRUE) <- puntosr4 ## More headaches with mark format A <- runifpoint(10) B <- runifpoint(10) AB <- split(superimpose(A=A, B=B)) }) # # tests/imageops.R # # $Revision: 1.6 $ $Date: 2014/03/20 04:02:20 $ # require(spatstat) local({ A <- as.im(owin()) B <- as.im(owin(c(1.1, 1.9), c(0,1))) Z <- imcov(A, B) stopifnot(abs(max(Z) - 0.8) < 0.1) ## handling images with 1 row or column ycov <- function(x, y) y E <- as.im(ycov, owin(), dimyx = c(2,1)) G <- cut(E, 2) H <- as.tess(G) E12 <- as.im(ycov, owin(), dimyx = c(1,2)) G12 <- cut(E12, 2) H12 <- as.tess(G12) }) # tests/triplets.R # test code for triplet interaction # $Revision: 1.4 $ $Date: 2012/07/12 02:43:32 $ require(spatstat) local({ fit <- ppm(redwood, ~1, Triplets(0.1)) fit suffstat(fit) # hard core (zero triangles, coefficient is NA) fit0 <- ppm(cells, ~1, Triplets(0.05)) fit0 suffstat(fit0) # bug case (1 triangle in data) fit1 <- ppm(cells, ~1, Triplets(0.15)) fit1 suffstat(fit1) }) # # tests/project.ppm.R # # $Revision: 1.3 $ $Date: 2012/10/22 03:12:08 $ # # Tests of projection mechanism # require(spatstat) local({ # a very unidentifiable model fit <- ppm(cells, ~Z, Strauss(1e-06), covariates=list(Z=0)) project.ppm(fit) # multitype fit2 <- ppm(amacrine, ~1, MultiStrauss(types=c("off", "on"), radii=matrix(1e-06, 2, 2))) project.ppm(fit2) # hybrids r0 <- min(nndist(redwood)) ra <- 1.25 * r0 rb <- 0.8 * r0 f <- ppm(redwood, ~1, Hybrid(A=Strauss(ra), B=Geyer(0.1, 2)), project=TRUE) f <- ppm(redwood, ~1, Hybrid(A=Strauss(rb), B=Geyer(0.1, 2)), project=TRUE) f <- ppm(redwood, ~1, Hybrid(A=Strauss(ra), B=Strauss(0.1)), project=TRUE) f <- ppm(redwood, ~1, Hybrid(A=Strauss(rb), B=Strauss(0.1)), project=TRUE) f <- ppm(redwood, ~1, Hybrid(A=Hardcore(rb), B=Strauss(0.1)), project=TRUE) f <- ppm(redwood, ~1, Hybrid(A=Hardcore(rb), B=Geyer(0.1, 2)), project=TRUE) f <- ppm(redwood, ~1, Hybrid(A=Geyer(rb, 1), B=Strauss(0.1)), project=TRUE) }) # # tests/hyperframe.R # # test "[.hyperframe" etc # # $Revision: 1.2 $ $Date: 2012/01/31 11:04:44 $ # lambda <- runif(4, min=50, max=100) X <- lapply(as.list(lambda), function(x) { rpoispp(x) }) h <- hyperframe(lambda=lambda, X=X) h$lambda2 <- lambda^2 h[, "lambda3"] <- lambda^3 h[, "Y"] <- X h[, "X"] <- lapply(X, flipxy) h[, c("X", "Y")] <- hyperframe(X=X, Y=X) # check fast code for Kest require(spatstat) local({ Kb <- Kest(cells, nlarge=0) Ku <- Kest(cells, correction="none") Kbu <- Kest(cells, correction=c("none", "border")) }) # # tests/vcovppm.R # # Check validity of vcov.ppm algorithms # # Thanks to Ege Rubak # # $Revision: 1.5 $ $Date: 2014/01/24 05:59:31 $ # require(spatstat) local({ set.seed(42) X <- rStrauss(200, .5, .05) model <- ppm(X, inter = Strauss(.05)) b <- vcov(model, generic = TRUE, algorithm = "basic") v <- vcov(model, generic = TRUE, algorithm = "vector") vc <- vcov(model, generic = TRUE, algorithm = "vectorclip") vn <- vcov(model, generic = FALSE) disagree <- function(x, y, tol=1e-7) { max(abs(x-y)) > tol } asymmetric <- function(x) { disagree(x, t(x)) } if(asymmetric(b)) stop("Non-symmetric matrix produced by vcov.ppm 'basic' algorithm") if(asymmetric(v)) stop("Non-symmetric matrix produced by vcov.ppm 'vector' algorithm") if(asymmetric(vc)) stop("Non-symmetric matrix produced by vcov.ppm 'vectorclip' algorithm") if(asymmetric(vn)) stop("Non-symmetric matrix produced by vcov.ppm Strauss algorithm") if(disagree(v, b)) stop("Disagreement between vcov.ppm algorithms 'vector' and 'basic' ") if(disagree(v, vc)) stop("Disagreement between vcov.ppm algorithms 'vector' and 'vectorclip' ") if(disagree(vn, vc)) stop("Disagreement between vcov.ppm generic and Strauss algorithms") # Geyer code xx <- c(0.7375956, 0.6851697, 0.6399788, 0.6188382) yy <- c(0.5816040, 0.6456319, 0.5150633, 0.6191592) Y <- ppp(xx, yy, window=square(1)) modelY <- ppm(Y, ~1, Geyer(0.1, 1)) b <- vcov(modelY, generic = TRUE, algorithm = "basic") v <- vcov(modelY, generic = TRUE, algorithm = "vector") vc <- vcov(modelY, generic = TRUE, algorithm = "vectorclip") if(asymmetric(b)) stop("Non-symmetric matrix produced by vcov.ppm 'basic' algorithm for Geyer model") if(asymmetric(v)) stop("Non-symmetric matrix produced by vcov.ppm 'vector' algorithm for Geyer model") if(asymmetric(vc)) stop("Non-symmetric matrix produced by vcov.ppm 'vectorclip' algorithm for Geyer model") if(disagree(v, b)) stop("Disagreement between vcov.ppm algorithms 'vector' and 'basic' for Geyer model") if(disagree(v, vc)) stop("Disagreement between vcov.ppm algorithms 'vector' and 'vectorclip' for Geyer model") ## tests of 'deltasuffstat' code ## Handling of offset terms modelH <- ppm(cells, ~x, Hardcore(0.05)) a <- vcov(modelH, generic=TRUE) ## may fall over b <- vcov(modelH, generic=FALSE) if(disagree(a, b)) stop("Disagreement between vcov.ppm algorithms for Hardcore model") ## Correctness of pairwise.family$delta2 modelZ <- ppm(amacrine, ~1, MultiStrauss(radii=matrix(0.1, 2, 2))) b <- vcov(modelZ, generic=FALSE) g <- vcov(modelZ, generic=TRUE) if(disagree(b, g)) stop("Disagreement between vcov.ppm algorithms for MultiStrauss model") }) # tests/windows.R # Tests of owin geometry code require(spatstat) local({ # Ege Rubak spotted this problem in 1.28-1 A <- as.owin(ants) B <- dilation(A, 140) if(!is.subset.owin(A, B)) stop("is.subset.owin fails in polygonal case") # thanks to Tom Rosenbaum A <- shift(square(3), origin="midpoint") B <- shift(square(1), origin="midpoint") AB <- setminus.owin(A, B) D <- shift(square(2), origin="midpoint") if(is.subset.owin(D,AB)) stop("is.subset.owin fails for polygons with holes") }) # # test addvar options # X <- rpoispp(function(x,y){exp(3+3*x)}) model <- ppm(X, ~y) addvar(model, "x", crosscheck=TRUE) addvar(model, "x", bw.input="quad") w <- square(0.5) addvar(model, "x", subregion=w) addvar(model, "x", subregion=w, bw.input="points") # additional test of parres X <- rpoispp(function(x,y){exp(3+x+2*x^2)}) model <- ppm(X, ~x+y) # options in parres parres(model, "x") parres(model, "x", bw.input="quad") w <- square(0.5) parres(model, "x", subregion=w) parres(model, "x", subregion=w, bw.input="quad") # check whether 'update.ppm' has messed up internals mod2 <- update(model, ~x) parres(mod2, "x") # # tests/lppstuff.R # # Tests for lpp code # # $Revision: 1.2 $ $Date: 2013/01/23 08:20:41 $ require(spatstat) local({ # check 'normalise' option in linearKinhom X <- rpoislpp(5, simplenet) fit <- lppm(X, ~x) K <- linearKinhom(X, lambda=fit, normalise=FALSE) plot(K) g <- linearpcfinhom(X, lambda=fit, normalise=FALSE) plot(g) K <- linearKinhom(X, lambda=fit, normalise=TRUE) plot(K) g <- linearpcfinhom(X, lambda=fit, normalise=TRUE) plot(g) # check empty patterns OK X <- runiflpp(0, simplenet) print(X) }) # # tests/density.R # # Test behaviour of density methods and inhomogeneous summary functions # # $Revision: 1.1 $ $Date: 2013/02/26 09:13:52 $ # require(spatstat) local({ lam <- density(redwood) K <- Kinhom(redwood, lam) lamX <- density(redwood, at="points") KX <- Kinhom(redwood, lamX) }) # # tests/slrm.R # # $Revision: 1.1 $ $Date: 2013/04/19 10:14:52 $ # # Test slrm fitting and prediction when there are NA's # require(spatstat) local({ X <- copper$SouthPoints W <- owin(poly=list(x=c(0,35,35,1),y=c(1,1,150,150))) Y <- X[W] fit <- slrm(Y ~ x+y) pred <- predict(fit) }) # tests/linalgeb.R # checks validity of linear algebra code # $Revision: 1.2 $ $Date: 2013/04/18 09:14:37 $ require(spatstat) local({ p <- 3 n <- 4 x <- array(as.numeric(1:(p * n * n)), dim=c(p, n, n)) w <- matrix(1:(n*n), n, n) y <- matrix(numeric(p * p), p, p) for(i in 1:n) for(j in (1:n)[-i]) y <- y + w[i,j] * outer(x[,i,j], x[,j,i]) z <- sumsymouter(x, w) if(!identical(y,z)) stop("sumsymouter gives incorrect result") }) # # tests/undoc.R # # $Revision: 1.1 $ $Date: 2013/07/25 10:26:09 $ # # Test undocumented hacks, etc require(spatstat) local({ # pixellate.ppp accepts a data frame of weights pixellate(cells, weights=data.frame(a=1:42, b=42:1)) }) # # tests/mppm.R # # Basic tests of mppm # # $Revision: 1.1 $ $Date: 2013/11/10 08:59:08 $ # require(spatstat) local({ # test interaction formulae and subfits fit1 <- mppm(Points ~ group, simba, hyperframe(po=Poisson(), str=Strauss(0.1)), iformula=~ifelse(group=="control", po, str)) fit2 <- mppm(Points ~ group, simba, hyperframe(po=Poisson(), str=Strauss(0.1)), iformula=~id * str) fit3 <- mppm(Points ~ group, simba, hyperframe(po=Poisson(), pie=PairPiece(c(0.05,0.1))), iformula=~I((group=="control") * po) + I((group=="treatment") * pie)) fit1 fit2 fit3 subfits(fit1) subfits(fit2) subfits(fit3) # test handling of offsets and zero cif values in mppm data(waterstriders) H <- hyperframe(Y = waterstriders) mppm(Y ~ 1, data=H, Hardcore(1.5)) mppm(Y ~ 1, data=H, StraussHard(7, 1.5)) }) # tests/ppx.R # # Test operations for ppx objects # # $Revision: 1.1 $ $Date: 2013/11/19 03:36:27 $ # require(spatstat) local({ df <- data.frame(x=c(1,2,2,1), y=c(1,2,3,1), z=c(2,3,4,2)) X <- ppx(data=df, coord.type=rep("s", 3), domain=box3()) unique(X) duplicated(X) multiplicity(X) }) ## tests/percy.R ## Tests of Percus-Yevick approximations ## $Revision: 1.1 $ $Date: 2014/01/31 11:49:46 $ require(spatstat) local({ fit <- ppm(swedishpines, ~1, DiggleGatesStibbard(6)) K <- Kmodel(fit) }) ## legacy.R ## Test that current version of spatstat is compatible with outmoded usage ## $Revision: 1.1 $ $Date: 2014/04/30 08:05:57 $ local({ require(spatstat) ## (1) Old syntax of ppm ppm(cells, ~x) ## (2) Old syntax of MultiStrauss etc. r <- matrix(3, 2, 2) a <- MultiStrauss( , r) a <- MultiStrauss(NULL, r) a <- MultiHard(, r) h <- r/2 a <- MultiStraussHard( , r, h) NULL }) spatstat/tests/selfcross.txt0000644000176000001440000000071512324667730016070 0ustar ripleyusers x y 0.3057897 0.1518920 0.6038506 0.3132859 0.6343093 0.2740279 0.5364061 0.2936569 0.8170620 0.4681368 0.8083595 0.6535217 0.6125531 0.6796937 0.6103774 0.6360737 0.4363273 0.6338927 0.4689617 0.6927797 0.6538900 0.7560286 0.6169043 0.7756576 0.5994993 0.7276756 0.3514779 0.7363996 0.3123166 0.6622457 0.1447933 0.4877658 0.2274671 0.4332408 0.1578471 0.3721728 0.2753309 0.4027068 0.1817790 0.4136118 0.2100621 0.3067429 spatstat/src/0000755000176000001440000000000012333041761012734 5ustar ripleyusersspatstat/src/linnncross.h0000644000176000001440000000625712333041761015307 0ustar ripleyusers/* linnncross.h Function body definitions with macros $Revision: 1.1 $ $Date: 2013/10/21 02:01:39 $ Macros used: FNAME name of function EXCLU whether serial numbers are provided WHICH whether 'nnwhich' is required */ void FNAME(np, xp, yp, /* data points 'from' */ nq, xq, yq, /* data points 'to' */ nv, xv, yv, /* network vertices */ ns, from, to, /* segments */ dpath, /* shortest path distances between vertices */ psegmap, /* map from data points to segments */ qsegmap, /* map from data points to segments */ #ifdef EXCLU idP, idQ, /* serial numbers for patterns p and q */ #endif huge, /* value taken as infinity */ /* OUTPUT */ #ifdef WHICH nndist, /* nearest neighbour distance for each point */ nnwhich /* identifies nearest neighbour */ #else nndist, /* nearest neighbour distance for each point */ #endif ) int *np, *nq, *nv, *ns; int *from, *to, *psegmap, *qsegmap; /* integer vectors (mappings) */ #ifdef EXCLU int *idP, *idQ; #endif double *xp, *yp, *xq, *yq, *xv, *yv; /* vectors of coordinates */ double *huge; double *dpath; /* matrix */ double *nndist; /* nearest neighbour distance for each point */ #ifdef WHICH int *nnwhich; /* identifies nearest neighbour */ #endif { int Np, Nq, Nv, i, j; int segPi, segQj, nbi1, nbi2, nbj1, nbj2; double d, xpi, ypi, xqj, yqj, dXi1, dXi2, d1Xj, d2Xj, d11, d12, d21, d22; double dmin, hugevalue; #ifdef EXCLU int idPi; #endif #ifdef WHICH int whichmin; #endif Np = *np; Nq = *nq; Nv = *nv; hugevalue = *huge; /* initialise nn distances */ for(i = 0; i < Np; i++) { nndist[i] = hugevalue; #ifdef WHICH nnwhich[i] = -1; #endif } /* main loop */ for(i = 0; i < Np; i++) { xpi = xp[i]; ypi = yp[i]; #ifdef EXCLU idPi = idP[i]; #endif segPi = psegmap[i]; nbi1 = from[segPi]; nbi2 = to[segPi]; dXi1 = EUCLID(xpi, ypi, xv[nbi1], yv[nbi1]); dXi2 = EUCLID(xpi, ypi, xv[nbi2], yv[nbi2]); dmin = nndist[i]; #ifdef WHICH whichmin = nnwhich[i]; #endif for(j = 0; j < Nq; j++) { #ifdef EXCLU if(idQ[j] != idPi) { #endif xqj = xq[j]; yqj = yq[j]; segQj = qsegmap[j]; /* compute path distance between i and j */ if(segPi == segQj) { /* points i and j lie on the same segment; use Euclidean distance */ d = EUCLID(xpi, ypi, xqj, yqj); } else { /* Shortest path from i to j passes through ends of segments; Calculate shortest of 4 possible paths from i to j */ nbj1 = from[segQj]; nbj2 = to[segQj]; d1Xj = EUCLID(xv[nbj1], yv[nbj1], xqj, yqj); d2Xj = EUCLID(xv[nbj2], yv[nbj2], xqj, yqj); d11 = dXi1 + DPATH(nbi1,nbj1) + d1Xj; d12 = dXi1 + DPATH(nbi1,nbj2) + d2Xj; d21 = dXi2 + DPATH(nbi2,nbj1) + d1Xj; d22 = dXi2 + DPATH(nbi2,nbj2) + d2Xj; d = d11; if(d12 < d) d = d12; if(d21 < d) d = d21; if(d22 < d) d = d22; } /* OK, distance between i and j is d */ /* update nn for point i */ if(d < dmin) { dmin = d; #ifdef WHICH whichmin = j; #endif } #ifdef EXCLU } #endif } /* commit nn distance for point i */ nndist[i] = dmin; #ifdef WHICH nnwhich[i] = whichmin; #endif } } spatstat/src/linnndist.c0000755000176000001440000001167412333041761015116 0ustar ripleyusers#include /* linnndist.c Shortest-path distances between nearest neighbours in linear network $Revision: 1.1 $ $Date: 2013/10/21 02:01:14 $ linnndist linnnwhich */ #define DPATH(I,J) dpath[(J) + Nv * (I)] #define ANSWER(I,J) answer[(J) + Np * (I)] #define EUCLID(X,Y,U,V) sqrt(pow((X)-(U),2)+pow((Y)-(V),2)) void linnndist(np, xp, yp, /* data points */ nv, xv, yv, /* network vertices */ ns, from, to, /* segments */ dpath, /* shortest path distances between vertices */ segmap, /* map from data points to segments */ huge, /* value taken as infinity */ /* OUTPUT */ answer /* nearest neighbour distance for each point */ ) int *np, *nv, *ns; int *from, *to, *segmap; /* integer vectors (mappings) */ double *xp, *yp, *xv, *yv; /* vectors of coordinates */ double *huge; double *dpath; /* matrix */ double *answer; /* vector of output values */ { int Np, Nv, i, j, Np1; int segi, segj, nbi1, nbi2, nbj1, nbj2; double d, xpi, ypi, xpj, ypj, dXi1, dXi2, d1Xj, d2Xj, d11, d12, d21, d22; double dmin, hugevalue; Np = *np; Nv = *nv; Np1 = Np - 1; hugevalue = *huge; /* initialise nn distances */ for(i = 0; i < Np; i++) answer[i] = hugevalue; /* main loop */ for(i = 0; i < Np1; i++) { xpi = xp[i]; ypi = yp[i]; segi = segmap[i]; nbi1 = from[segi]; nbi2 = to[segi]; dXi1 = EUCLID(xpi, ypi, xv[nbi1], yv[nbi1]); dXi2 = EUCLID(xpi, ypi, xv[nbi2], yv[nbi2]); dmin = answer[i]; for(j = i+1; j < Np; j++) { xpj = xp[j]; ypj = yp[j]; segj = segmap[j]; /* compute path distance between i and j */ if(segi == segj) { /* points i and j lie on the same segment; use Euclidean distance */ d = sqrt(pow(xpi - xpj, 2) + pow(ypi - ypj, 2)); } else { /* Shortest path from i to j passes through ends of segments; Calculate shortest of 4 possible paths from i to j */ nbj1 = from[segj]; nbj2 = to[segj]; d1Xj = EUCLID(xv[nbj1], yv[nbj1], xpj, ypj); d2Xj = EUCLID(xv[nbj2], yv[nbj2], xpj, ypj); d11 = dXi1 + DPATH(nbi1,nbj1) + d1Xj; d12 = dXi1 + DPATH(nbi1,nbj2) + d2Xj; d21 = dXi2 + DPATH(nbi2,nbj1) + d1Xj; d22 = dXi2 + DPATH(nbi2,nbj2) + d2Xj; d = d11; if(d12 < d) d = d12; if(d21 < d) d = d21; if(d22 < d) d = d22; } /* OK, distance between i and j is d */ /* update nn distance for point i */ if(d < dmin) dmin = d; /* update nn distance for point j */ if(d < answer[j]) answer[j] = d; } /* commit nn distance for point i */ answer[i] = dmin; } } void linnnwhich(np, xp, yp, /* data points */ nv, xv, yv, /* network vertices */ ns, from, to, /* segments */ dpath, /* shortest path distances between vertices */ segmap, /* map from data points to segments */ huge, /* value taken as infinity */ /* OUTPUT */ nndist, /* nearest neighbour distance for each point */ nnwhich /* identifies nearest neighbour */ ) int *np, *nv, *ns; int *from, *to, *segmap; /* integer vectors (mappings) */ double *xp, *yp, *xv, *yv; /* vectors of coordinates */ double *huge; double *dpath; /* matrix */ double *nndist; /* vector of output values */ int *nnwhich; /* vector of output values */ { int Np, Nv, i, j, Np1; int segi, segj, nbi1, nbi2, nbj1, nbj2; double d, xpi, ypi, xpj, ypj, dXi1, dXi2, d1Xj, d2Xj, d11, d12, d21, d22; double dmin, hugevalue; int whichmin; Np = *np; Nv = *nv; Np1 = Np - 1; hugevalue = *huge; /* initialise nn distances and identifiers */ for(i = 0; i < Np; i++) { nndist[i] = hugevalue; nnwhich[i] = -1; } /* main loop */ for(i = 0; i < Np1; i++) { xpi = xp[i]; ypi = yp[i]; segi = segmap[i]; nbi1 = from[segi]; nbi2 = to[segi]; dXi1 = EUCLID(xpi, ypi, xv[nbi1], yv[nbi1]); dXi2 = EUCLID(xpi, ypi, xv[nbi2], yv[nbi2]); dmin = nndist[i]; whichmin = nnwhich[i]; for(j = i+1; j < Np; j++) { xpj = xp[j]; ypj = yp[j]; segj = segmap[j]; if(segi == segj) { /* points i and j lie on the same segment; use Euclidean distance */ d = sqrt(pow(xpi - xpj, 2) + pow(ypi - ypj, 2)); } else { /* Shortest path from i to j passes through ends of segments; Calculate shortest of 4 possible paths from i to j */ nbj1 = from[segj]; nbj2 = to[segj]; d1Xj = EUCLID(xv[nbj1], yv[nbj1], xpj, ypj); d2Xj = EUCLID(xv[nbj2], yv[nbj2], xpj, ypj); d11 = dXi1 + DPATH(nbi1,nbj1) + d1Xj; d12 = dXi1 + DPATH(nbi1,nbj2) + d2Xj; d21 = dXi2 + DPATH(nbi2,nbj1) + d1Xj; d22 = dXi2 + DPATH(nbi2,nbj2) + d2Xj; d = d11; if(d12 < d) d = d12; if(d21 < d) d = d21; if(d22 < d) d = d22; } /* OK, distance between i and j is d */ /* update nn for point i */ if(d < dmin) { dmin = d; whichmin = j; } /* update nn for point j */ if(d < nndist[j]) { nndist[j] = d; nnwhich[j] = i; } } /* commit nn for point i */ nndist[i] = dmin; nnwhich[i] = whichmin; } } spatstat/src/linpairdist.c0000755000176000001440000000430112333041761015423 0ustar ripleyusers#include #include #include "chunkloop.h" /* linpairdist.c Shortest-path distances between each pair of points in linear network $Revision: 1.5 $ $Date: 2012/10/12 10:21:46 $ linpairdist */ #define DPATH(I,J) dpath[(I) + Nv * (J)] #define ANSWER(I,J) answer[(I) + Np * (J)] #define EUCLID(X,Y,U,V) sqrt(pow((X)-(U),2)+pow((Y)-(V),2)) void linpairdist(np, xp, yp, /* data points */ nv, xv, yv, /* network vertices */ ns, from, to, /* segments */ dpath, /* shortest path distances between vertices */ segmap, /* map from data points to segments */ /* OUTPUT */ answer /* shortest path distances between points */ ) int *np, *nv, *ns; int *from, *to, *segmap; /* integer vectors (mappings) */ double *xp, *yp, *xv, *yv; /* vectors of coordinates */ double *dpath, *answer; /* matrices */ { int Np, Nv, i, j, Np1, maxchunk; int segi, segj, nbi1, nbi2, nbj1, nbj2; double d, xpi, ypi, xpj, ypj, dXi1, dXi2, d1Xj, d2Xj, d11, d12, d21, d22; Np = *np; Nv = *nv; Np1 = Np - 1; OUTERCHUNKLOOP(i, Np1, maxchunk, 1024) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Np1, maxchunk, 1024) { xpi = xp[i]; ypi = yp[i]; segi = segmap[i]; nbi1 = from[segi]; nbi2 = to[segi]; dXi1 = EUCLID(xpi, ypi, xv[nbi1], yv[nbi1]); dXi2 = EUCLID(xpi, ypi, xv[nbi2], yv[nbi2]); for(j = i+1; j < Np; j++) { xpj = xp[j]; ypj = yp[j]; segj = segmap[j]; if(segi == segj) { /* points i and j lie on the same segment; use Euclidean distance */ d = sqrt(pow(xpi - xpj, 2) + pow(ypi - ypj, 2)); } else { /* Shortest path from i to j passes through ends of segments; Calculate shortest of 4 possible paths from i to j */ nbj1 = from[segj]; nbj2 = to[segj]; d1Xj = EUCLID(xv[nbj1], yv[nbj1], xpj, ypj); d2Xj = EUCLID(xv[nbj2], yv[nbj2], xpj, ypj); d11 = dXi1 + DPATH(nbi1,nbj1) + d1Xj; d12 = dXi1 + DPATH(nbi1,nbj2) + d2Xj; d21 = dXi2 + DPATH(nbi2,nbj1) + d1Xj; d22 = dXi2 + DPATH(nbi2,nbj2) + d2Xj; d = d11; if(d12 < d) d = d12; if(d21 < d) d = d21; if(d22 < d) d = d22; } /* write */ ANSWER(i,j) = ANSWER(j,i) = d; } ANSWER(i,i) = 0; } } } spatstat/src/closepair.c0000755000176000001440000002322412333041761015067 0ustar ripleyusers/* closepair.c $Revision: 1.31 $ $Date: 2013/11/22 01:01:12 $ Assumes point pattern is sorted in increasing order of x coordinate paircount() count the total number of pairs (i, j) with distance < rmax Cclosepaircounts count for each i the number of j with distance < rmax crosscount() count number of close pairs in two patterns (note: Ccrosspaircounts is defined in Estrauss.c) duplicatedxy() find duplicated (x,y) pairs Fclosepairs() extract close pairs of coordinates .C interface - output vectors have Fixed length Fcrosspairs() extract close pairs in two patterns .C interface - output vectors have Fixed length Vclosepairs() extract close pairs of coordinates .Call interface - output vectors have Variable length Vcrosspairs() extract close pairs in two patterns .Call interface - output vectors have Variable length */ #include #include #include #define OK 0 #define ERR_OVERFLOW 1 #define ERR_ALLOC 2 #define FAILED(X) ((void *)(X) == (void *)NULL) #define intRealloc(PTR, OLDLENGTH, NEWLENGTH) \ (int *) S_realloc((char *) PTR, NEWLENGTH, OLDLENGTH, sizeof(int)) #define dblRealloc(PTR, OLDLENGTH, NEWLENGTH) \ (double *) S_realloc((char *) PTR, NEWLENGTH, OLDLENGTH, sizeof(double)) double sqrt(); /* count TOTAL number of close pairs */ void paircount(nxy, x, y, rmaxi, count) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *rmaxi; /* maximum distance */ /* output */ int *count; { int n, maxchunk, i, j, counted; double xi, yi, rmax, r2max, dx, dy, a; n = *nxy; rmax = *rmaxi; r2max = rmax * rmax; *count = counted = 0; if(n == 0) return; /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < n) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > n) maxchunk = n; for(; i < maxchunk; i++) { xi = x[i]; yi = y[i]; if(i > 0) { /* scan backwards from i */ for(j = i - 1; j >= 0; j--) { dx = x[j] - xi; a = r2max - dx * dx; if(a < 0) break; dy = y[j] - yi; a -= dy * dy; if(a >= 0) ++counted; } } if(i + 1 < n) { /* scan forwards from i */ for(j = i + 1; j < n; j++) { dx = x[j] - xi; a = r2max - dx * dx; if(a < 0) break; dy = y[j] - yi; a -= dy * dy; if(a >= 0) ++counted; } } /* end loop over i */ } } *count = counted; } /* count for each i the number of j closer than distance r */ void Cclosepaircounts(nxy, x, y, rmaxi, counts) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *rmaxi; /* maximum distance */ /* output VECTOR, assumed initialised to 0 */ int *counts; { int n, maxchunk, i, j; double xi, yi, rmax, r2max, dx, dy, a; n = *nxy; rmax = *rmaxi; r2max = rmax * rmax; if(n == 0) return; /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < n) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > n) maxchunk = n; for(; i < maxchunk; i++) { xi = x[i]; yi = y[i]; if(i > 0) { /* scan backwards from i */ for(j = i - 1; j >= 0; j--) { dx = x[j] - xi; a = r2max - dx * dx; if(a < 0) break; dy = y[j] - yi; a -= dy * dy; if(a >= 0) (counts[i])++; } } if(i + 1 < n) { /* scan forwards from i */ for(j = i + 1; j < n; j++) { dx = x[j] - xi; a = r2max - dx * dx; if(a < 0) break; dy = y[j] - yi; a -= dy * dy; if(a >= 0) (counts[i])++; } } /* end loop over i */ } } } /* analogue for two different point patterns */ void crosscount(nn1, x1, y1, nn2, x2, y2, rmaxi, count) /* inputs */ int *nn1, *nn2; double *x1, *y1, *x2, *y2, *rmaxi; /* output */ int *count; { int n1, n2, maxchunk, i, j, jleft, counted; double x1i, y1i, rmax, r2max, xleft, dx, dy, a; n1 = *nn1; n2 = *nn2; rmax = *rmaxi; r2max = rmax * rmax; *count = counted = 0; if(n1 == 0 || n2 == 0) return; jleft = 0; i = 0; maxchunk = 0; while(i < n1) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > n1) maxchunk = n1; for(; i < maxchunk; i++) { x1i = x1[i]; y1i = y1[i]; /* adjust starting index */ xleft = x1i - rmax; while((x2[jleft] < xleft) && (jleft+1 < n2)) ++jleft; /* process from j=jleft until dx > rmax */ for(j=jleft; j < n2; j++) { dx = x2[j] - x1i; a = r2max - dx * dx; if(a < 0) break; dy = y2[j] - y1i; a -= dy * dy; if(a > 0) ++counted; } } } *count = counted; } /* Find duplicated locations xx, yy are not sorted */ void duplicatedxy(n, x, y, out) /* inputs */ int *n; double *x, *y; /* output */ int *out; /* logical vector */ { int m, i, j; double xi, yi; m = *n; for(i = 1; i < m; i++) { R_CheckUserInterrupt(); xi = x[i]; yi = y[i]; for(j = 0; j < i; j++) if((x[j] == xi) && (y[j] == yi)) break; if(j == i) out[i] = 0; else out[i] = 1; } } /* ............... fixed output length .............. */ void Fclosepairs(nxy, x, y, r, noutmax, nout, iout, jout, xiout, yiout, xjout, yjout, dxout, dyout, dout, status) /* inputs */ int *nxy, *noutmax; double *x, *y, *r; /* outputs */ int *nout, *iout, *jout; double *xiout, *yiout, *xjout, *yjout, *dxout, *dyout, *dout; int *status; { int n, k, kmax, maxchunk, i, j; double xi, yi, rmax, r2max, dx, dy, dx2, d2; n = *nxy; rmax = *r; r2max = rmax * rmax; *status = OK; *nout = 0; k = 0; /* k is the next available storage location and also the current length of the list */ kmax = *noutmax; if(n == 0) return; /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < n) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > n) maxchunk = n; for(; i < maxchunk; i++) { xi = x[i]; yi = y[i]; if(i > 0) { /* scan backwards */ for(j = i - 1; j >= 0; j++) { dx = x[j] - xi; dx2 = dx * dx; if(dx2 > r2max) break; dy = y[j] - yi; d2 = dx2 + dy * dy; if(d2 <= r2max) { /* add this (i, j) pair to output */ if(k >= kmax) { *nout = k; *status = ERR_OVERFLOW; return; } jout[k] = j + 1; /* R indexing */ iout[k] = i + 1; xiout[k] = xi; yiout[k] = yi; xjout[k] = x[j]; yjout[k] = y[j]; dxout[k] = dx; dyout[k] = dy; dout[k] = sqrt(d2); ++k; } } } if(i + 1 < n) { /* scan forwards */ for(j = i + 1; j < n; j++) { dx = x[j] - xi; dx2 = dx * dx; if(dx2 > r2max) break; dy = y[j] - yi; d2 = dx2 + dy * dy; if(d2 <= r2max) { /* add this (i, j) pair to output */ if(k >= kmax) { *nout = k; *status = ERR_OVERFLOW; return; } jout[k] = j + 1; /* R indexing */ iout[k] = i + 1; xiout[k] = xi; yiout[k] = yi; xjout[k] = x[j]; yjout[k] = y[j]; dxout[k] = dx; dyout[k] = dy; dout[k] = sqrt(d2); ++k; } } } } } *nout = k; } void Fcrosspairs(nn1, x1, y1, nn2, x2, y2, rmaxi, noutmax, nout, iout, jout, xiout, yiout, xjout, yjout, dxout, dyout, dout, status) /* inputs */ int *nn1, *nn2, *noutmax; double *x1, *y1, *x2, *y2, *rmaxi; /* outputs */ int *nout, *iout, *jout; double *xiout, *yiout, *xjout, *yjout, *dxout, *dyout, *dout; int *status; { int n1, n2, maxchunk, k, kmax, i, j, jleft; double x1i, y1i, rmax, r2max, xleft, dx, dy, dx2, d2; n1 = *nn1; n2 = *nn2; rmax = *rmaxi; r2max = rmax * rmax; *status = OK; *nout = 0; k = 0; /* k is the next available storage location and also the current length of the list */ kmax = *noutmax; if(n1 == 0 || n2 == 0) return; jleft = 0; i = 0; maxchunk = 0; while(i < n1) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > n1) maxchunk = n1; for(; i < maxchunk; i++) { x1i = x1[i]; y1i = y1[i]; /* adjust starting position jleft */ xleft = x1i - rmax; while((x2[jleft] < xleft) && (jleft+1 < n2)) ++jleft; /* process from j=jleft until dx > rmax */ for(j=jleft; j < n2; j++) { dx = x2[j] - x1i; dx2 = dx * dx; if(dx2 > r2max) break; dy = y2[j] - y1i; d2 = dx2 + dy * dy; if(d2 <= r2max) { /* add this (i, j) pair to output */ if(k >= kmax) { *nout = k; *status = ERR_OVERFLOW; return; } jout[k] = j + 1; /* R indexing */ iout[k] = i + 1; xiout[k] = x1i; yiout[k] = y1i; xjout[k] = x2[j]; yjout[k] = y2[j]; dxout[k] = dx; dyout[k] = dy; dout[k] = sqrt(d2); ++k; } } } } *nout = k; } /* ........ versions that return variable-length vectors ......... */ /* return i, j only */ #define CLOSEFUN VcloseIJpairs #define CROSSFUN VcrossIJpairs #undef THRESH #undef COORDS #include "closefuns.h" #undef CLOSEFUN #undef CROSSFUN #undef THRESH #undef COORDS /* return i, j, xi, yi, xj, yj, dx, dy, d */ #define CLOSEFUN Vclosepairs #define CROSSFUN Vcrosspairs #undef THRESH #define COORDS #include "closefuns.h" #undef CLOSEFUN #undef CROSSFUN #undef THRESH #undef COORDS /* return i, j, t where t = 1{d < s} */ #define CLOSEFUN Vclosethresh #define CROSSFUN Vcrossthresh #define THRESH #undef COORDS #include "closefuns.h" #undef CLOSEFUN #undef CROSSFUN #undef THRESH #undef COORDS spatstat/src/mhloop.h0000755000176000001440000002342512333041761014414 0ustar ripleyusers /* mhloop.h This file contains the iteration loop for the Metropolis-Hastings algorithm methas.c It is #included several times in methas.c with different #defines for the following variables MH_MARKED whether the simulation is marked (= the variable 'marked' is TRUE) MH_SINGLE whether there is a single interaction (as opposed to a hybrid of several interactions) MH_TRACKING whether to save transition history MH_DEBUG whether to print debug information MH_SNOOP whether to run visual debugger $Revision: 1.18 $ $Date: 2013/05/27 02:09:10 $ */ #ifndef MH_DEBUG #define MH_DEBUG NO #endif OUTERCHUNKLOOP(irep, algo.nrep, maxchunk, 1024) { R_CheckUserInterrupt(); INNERCHUNKLOOP(irep, algo.nrep, maxchunk, 1024) { #if MH_DEBUG Rprintf("iteration %d\n", irep); #endif if(verb) { /* print progress message every nverb iterations */ iverb = irep + 1 + algo.nrep0; if((iverb % algo.nverb) == 0) Rprintf("iteration %d\n", iverb); } itype = REJECT; nfree = state.npts - algo.ncond; /* number of 'free' points */ /* ................ generate proposal ..................... */ /* Shift or birth/death: */ if(unif_rand() > algo.p) { #if MH_DEBUG Rprintf("propose birth or death\n"); #endif /* Birth/death: */ if(unif_rand() > algo.q) { /* Propose birth: */ birthprop.u = xpropose[irep]; birthprop.v = ypropose[irep]; #if MH_MARKED birthprop.mrk = mpropose[irep]; #endif #if MH_DEBUG #if MH_MARKED Rprintf("propose birth at (%lf, %lf) with mark %d\n", birthprop.u, birthprop.v, birthprop.mrk); #else Rprintf("propose birth at (%lf, %lf)\n", birthprop.u, birthprop.v); #endif #endif /* evaluate conditional intensity */ #if MH_MARKED betavalue = model.beta[birthprop.mrk]; #endif #if MH_SINGLE anumer = betavalue * (*(thecif.eval))(birthprop, state, thecdata); #else anumer = betavalue; for(k = 0; k < Ncif; k++) anumer *= (*(cif[k].eval))(birthprop, state, cdata[k]); #endif adenom = qnodds*(nfree+1); #if MH_DEBUG Rprintf("cif = %lf, Hastings ratio = %lf\n", anumer, anumer/adenom); #endif /* accept/reject */ if(unif_rand() * adenom < anumer) { #if MH_DEBUG Rprintf("accepted birth\n"); #endif itype = BIRTH; /* Birth proposal accepted. */ } #if MH_SNOOP /* visual debug */ mhsnoop(&snooper, irep, &algo, &state, &birthprop, anumer, adenom, &itype); #endif #if MH_TRACKING /* save transition history */ if(irep < history.nmax) { history.n++; history.proptype[irep] = BIRTH; history.accepted[irep] = (itype == REJECT) ? 0 : 1; #ifdef HISTORY_INCLUDES_RATIO history.numerator[irep] = anumer; history.denominator[irep] = adenom; #endif } #endif } else if(nfree > 0) { /* Propose death: */ ix = floor(nfree * unif_rand()); if(ix < 0) ix = 0; ix = algo.ncond + ix; if(ix >= state.npts) ix = state.npts - 1; deathprop.ix = ix; deathprop.u = state.x[ix]; deathprop.v = state.y[ix]; #if MH_MARKED deathprop.mrk = state.marks[ix]; #endif #if MH_DEBUG #if MH_MARKED Rprintf("propose death of point %d = (%lf, %lf) with mark %d\n", ix, deathprop.u, deathprop.v, deathprop.mrk); #else Rprintf("propose death of point %d = (%lf, %lf)\n", ix, deathprop.u, deathprop.v); #endif #endif /* evaluate conditional intensity */ #if MH_MARKED betavalue = model.beta[deathprop.mrk]; #endif #if MH_SINGLE adenom = betavalue * (*(thecif.eval))(deathprop, state, thecdata); #else adenom = betavalue; for(k = 0; k < Ncif; k++) adenom *= (*(cif[k].eval))(deathprop, state, cdata[k]); #endif anumer = qnodds * nfree; #if MH_DEBUG Rprintf("cif = %lf, Hastings ratio = %lf\n", adenom, anumer/adenom); #endif /* accept/reject */ if(unif_rand() * adenom < anumer) { #if MH_DEBUG Rprintf("accepted death\n"); #endif itype = DEATH; /* Death proposal accepted. */ } #if MH_SNOOP /* visual debug */ mhsnoop(&snooper, irep, &algo, &state, &deathprop, anumer, adenom, &itype); #endif #if MH_TRACKING /* save transition history */ if(irep < history.nmax) { history.n++; history.proptype[irep] = DEATH; history.accepted[irep] = (itype == REJECT) ? 0 : 1; #ifdef HISTORY_INCLUDES_RATIO history.numerator[irep] = anumer; history.denominator[irep] = adenom; #endif } #endif } } else if(nfree > 0) { /* Propose shift: */ /* point to be shifted */ ix = floor(nfree * unif_rand()); if(ix < 0) ix = 0; ix = algo.ncond + ix; if(ix >= state.npts) ix = state.npts - 1; deathprop.ix = ix; deathprop.u = state.x[ix]; deathprop.v = state.y[ix]; #if MH_MARKED deathprop.mrk = state.marks[ix]; #endif /* where to shift */ shiftprop.u = xpropose[irep]; shiftprop.v = ypropose[irep]; #if MH_MARKED shiftprop.mrk = (algo.fixall) ? deathprop.mrk : mpropose[irep]; #endif shiftprop.ix = ix; #if MH_DEBUG #if MH_MARKED Rprintf("propose shift of point %d = (%lf, %lf)[mark %d] to (%lf, %lf)[mark %d]\n", ix, deathprop.u, deathprop.v, deathprop.mrk, shiftprop.u, shiftprop.v, shiftprop.mrk); #else Rprintf("propose shift of point %d = (%lf, %lf) to (%lf, %lf)\n", ix, deathprop.u, deathprop.v, shiftprop.u, shiftprop.v); #endif #endif /* evaluate cif in two stages */ #if MH_SINGLE cvd = (*(thecif.eval))(deathprop, state, thecdata); cvn = (*(thecif.eval))(shiftprop, state, thecdata); #else cvd = cvn = 1.0; for(k = 0; k < Ncif; k++) { cvd *= (*(cif[k].eval))(deathprop, state, cdata[k]); cvn *= (*(cif[k].eval))(shiftprop, state, cdata[k]); } #endif #if MH_MARKED if(!algo.fixall) { cvn *= model.beta[shiftprop.mrk]; cvd *= model.beta[deathprop.mrk]; } #endif #if MH_DEBUG Rprintf("cif[old] = %lf, cif[new] = %lf, Hastings ratio = %lf\n", cvd, cvn, cvn/cvd); #endif /* accept/reject */ if(unif_rand() * cvd < cvn) { #if MH_DEBUG Rprintf("accepted shift\n"); #endif itype = SHIFT; /* Shift proposal accepted . */ } #if MH_SNOOP /* visual debug */ mhsnoop(&snooper, irep, &algo, &state, &shiftprop, cvn, cvd, &itype); #endif #if MH_TRACKING /* save transition history */ if(irep < history.nmax) { history.n++; history.proptype[irep] = SHIFT; history.accepted[irep] = (itype == REJECT) ? 0 : 1; #ifdef HISTORY_INCLUDES_RATIO history.numerator[irep] = cvn; history.denominator[irep] = cvd; #endif } #endif } if(itype != REJECT) { /* ....... implement the transition ............ */ if(itype == BIRTH) { /* Birth transition */ /* add point at (u,v) */ #if MH_DEBUG #if MH_MARKED Rprintf("implementing birth at (%lf, %lf) with mark %d\n", birthprop.u, birthprop.v, birthprop.mrk); #else Rprintf("implementing birth at (%lf, %lf)\n", birthprop.u, birthprop.v); #endif #endif if(state.npts + 1 > state.npmax) { #if MH_DEBUG Rprintf("!!!!!!!!!!! storage overflow !!!!!!!!!!!!!!!!!\n"); #endif /* storage overflow; allocate more storage */ Nmore = 2 * state.npmax; state.x = (double *) S_realloc((char *) state.x, Nmore, state.npmax, sizeof(double)); state.y = (double *) S_realloc((char *) state.y, Nmore, state.npmax, sizeof(double)); #if MH_MARKED state.marks = (int *) S_realloc((char *) state.marks, Nmore, state.npmax, sizeof(int)); #endif state.npmax = Nmore; /* call the initialiser again, to allocate additional space */ #if MH_SINGLE thecdata = (*(thecif.init))(state, model, algo); #else model.ipar = iparvector; for(k = 0; k < Ncif; k++) { if(k > 0) model.ipar += plength[k-1]; cdata[k] = (*(cif[k].init))(state, model, algo); } #endif #if MH_DEBUG Rprintf("........... storage extended .................\n"); #endif } if(mustupdate) { /* Update auxiliary variables first */ #if MH_SINGLE (*(thecif.update))(state, birthprop, thecdata); #else for(k = 0; k < Ncif; k++) { if(needupd[k]) (*(cif[k].update))(state, birthprop, cdata[k]); } #endif } /* Now add point */ state.x[state.npts] = birthprop.u; state.y[state.npts] = birthprop.v; #if MH_MARKED state.marks[state.npts] = birthprop.mrk; #endif state.npts = state.npts + 1; #if MH_DEBUG Rprintf("\tnpts=%d\n", state.npts); #endif } else if(itype==DEATH) { /* Death transition */ /* delete point x[ix], y[ix] */ if(mustupdate) { /* Update auxiliary variables first */ #if MH_SINGLE (*(thecif.update))(state, deathprop, thecdata); #else for(k = 0; k < Ncif; k++) { if(needupd[k]) (*(cif[k].update))(state, deathprop, cdata[k]); } #endif } ix = deathprop.ix; state.npts = state.npts - 1; #if MH_DEBUG Rprintf("implementing death of point %d\n", ix); Rprintf("\tnpts=%d\n", state.npts); #endif if(ix < state.npts) { for(j = ix; j < state.npts; j++) { state.x[j] = state.x[j+1]; state.y[j] = state.y[j+1]; #if MH_MARKED state.marks[j] = state.marks[j+1]; #endif } } } else { /* Shift transition */ /* Shift (x[ix], y[ix]) to (u,v) */ #if MH_DEBUG #if MH_MARKED Rprintf("implementing shift from %d = (%lf, %lf)[%d] to (%lf, %lf)[%d]\n", deathprop.ix, deathprop.u, deathprop.v, deathprop.mrk, shiftprop.u, shiftprop.v, shiftprop.mrk); #else Rprintf("implementing shift from %d = (%lf, %lf) to (%lf, %lf)\n", deathprop.ix, deathprop.u, deathprop.v, shiftprop.u, shiftprop.v); Rprintf("\tnpts=%d\n", state.npts); #endif #endif if(mustupdate) { /* Update auxiliary variables first */ #if MH_SINGLE (*(thecif.update))(state, shiftprop, thecdata); #else for(k = 0; k < Ncif; k++) { if(needupd[k]) (*(cif[k].update))(state, shiftprop, cdata[k]); } #endif } ix = shiftprop.ix; state.x[ix] = shiftprop.u; state.y[ix] = shiftprop.v; #if MH_MARKED state.marks[ix] = shiftprop.mrk; #endif } #if MH_DEBUG } else { Rprintf("rejected\n"); #endif } } } spatstat/src/dppll.f0000755000176000001440000000244112333041761014222 0ustar ripleyusersC Output from Public domain Ratfor, version 1.0 subroutine dppll(x,y,l1,l2,l3,l4,np,nl,eps,mint,rslt,xmin,jmin) implicit double precision(a-h,o-z) dimension x(np), y(np), rslt(np,nl), xmin(np), jmin(np) double precision l1(nl), l2(nl), l3(nl), l4(nl) one = 1.d0 zero = 0.d0 do23000 j = 1,nl dx = l3(j) - l1(j) dy = l4(j) - l2(j) alen = sqrt(dx**2 + dy**2) if(alen .gt. eps)then co = dx/alen si = dy/alen else co = 0.5 si = 0.5 endif do23004 i = 1, np xpx1 = x(i) - l1(j) ypy1 = y(i) - l2(j) xpx2 = x(i) - l3(j) ypy2 = y(i) - l4(j) d1 = xpx1**2 + ypy1**2 d2 = xpx2**2 + ypy2**2 dd = min(d1,d2) if(alen .gt. eps)then xpr = xpx1*co + ypy1*si if(xpr .lt. zero .or. xpr .gt. alen)then d3 = -one else ypr = - xpx1*si + ypy1*co d3 = ypr**2 endif else d3 = -one endif if(d3 .ge. zero)then dd = min(dd,d3) endif sd =sqrt(dd) rslt(i,j) = sd if(mint.gt.0)then if(sd .lt. xmin(i))then xmin(i) = sd if(mint.gt.1)then jmin(i) = j endif endif endif 23004 continue 23005 continue 23000 continue 23001 continue return end spatstat/src/distances.c0000755000176000001440000002327412333041761015070 0ustar ripleyusers/* distances.c Distances between pairs of points $Revision: 1.30 $ $Date: 2013/11/03 03:35:34 $ Cpairdist Pairwise distances Cpair2dist Pairwise distances squared CpairPdist Pairwise distances with periodic correction CpairP2dist Pairwise distances squared, with periodic correction Ccrossdist Pairwise distances for two sets of points Ccross2dist Pairwise distances squared, for two sets of points CcrossPdist Pairwise distances for two sets of points, periodic correction Cmatchxy Find matches between two sets of points */ #include #include #include "chunkloop.h" double sqrt(); void Cpairdist(n, x, y, squared, d) /* inputs */ int *n; double *x, *y; int *squared; /* output */ double *d; { void Cpair1dist(), Cpair2dist(); if(*squared == 0) { Cpair1dist(n, x, y, d); } else { Cpair2dist(n, x, y, d); } } void Cpair1dist(n, x, y, d) /* inputs */ int *n; double *x, *y; /* output */ double *d; { int i, j, npoints, maxchunk; double *dp; double xi, yi, dx, dy, dist; npoints = *n; /* set d[0,0] = 0 */ *d = 0.0; OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { xi = x[i]; yi = y[i]; /* point at the start of column i */ dp = d + i * npoints; /* set diagonal to zero */ dp[i] = 0.0; for (j=0; j < i; j++) { dx = x[j] - xi; dy = y[j] - yi; dist = sqrt( dx * dx + dy * dy ); /* upper triangle */ *dp = dist; ++dp; /* lower triangle */ d[ j * npoints + i] = dist; } } } } /* squared distances */ void Cpair2dist(n, x, y, d) /* inputs */ int *n; double *x, *y; /* output */ double *d; { int i, j, npoints, maxchunk; double *dp; double xi, yi, dx, dy, dist; npoints = *n; /* set d[0,0] = 0 */ *d = 0.0; OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { xi = x[i]; yi = y[i]; /* point at the start of column i */ dp = d + i * npoints; /* set diagonal to zero */ dp[i] = 0.0; for (j=0; j < i; j++) { dx = x[j] - xi; dy = y[j] - yi; dist = dx * dx + dy * dy; /* upper triangle */ *dp = dist; ++dp; /* lower triangle */ d[ j * npoints + i] = dist; } } } } void Ccrossdist(nfrom, xfrom, yfrom, nto, xto, yto, squared, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *xto, *yto; int *squared; /* output */ double *d; { void Ccross1dist(), Ccross2dist(); if(*squared == 0) { Ccross1dist(nfrom, xfrom, yfrom, nto, xto, yto, d); } else { Ccross2dist(nfrom, xfrom, yfrom, nto, xto, yto, d); } } void Ccross1dist(nfrom, xfrom, yfrom, nto, xto, yto, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *xto, *yto; /* output */ double *d; { int i, j, nf, nt, maxchunk; double *dptr; double xj, yj, dx, dy; nf = *nfrom; nt = *nto; dptr = d; OUTERCHUNKLOOP(j, nt, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nt, maxchunk, 16384) { xj = xto[j]; yj = yto[j]; for(i = 0; i < nf; i++, dptr++) { dx = xj - xfrom[i]; dy = yj - yfrom[i]; *dptr = sqrt( dx * dx + dy * dy ); } } } } /* squared distances */ void Ccross2dist(nfrom, xfrom, yfrom, nto, xto, yto, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *xto, *yto; /* output */ double *d; { int i, j, nf, nt, maxchunk; double *dptr; double xj, yj, dx, dy; nf = *nfrom; nt = *nto; dptr = d; OUTERCHUNKLOOP(j, nt, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nt, maxchunk, 16384) { xj = xto[j]; yj = yto[j]; for(i = 0; i < nf; i++, dptr++) { dx = xj - xfrom[i]; dy = yj - yfrom[i]; *dptr = dx * dx + dy * dy; } } } } /* distances with periodic correction */ void CpairPdist(n, x, y, xwidth, yheight, squared, d) /* inputs */ int *n; double *x, *y, *xwidth, *yheight; int *squared; /* output */ double *d; { void CpairP1dist(), CpairP2dist(); if(*squared == 0) { CpairP1dist(n, x, y, xwidth, yheight, d); } else { CpairP2dist(n, x, y, xwidth, yheight, d); } } void CpairP1dist(n, x, y, xwidth, yheight, d) /* inputs */ int *n; double *x, *y, *xwidth, *yheight; /* output */ double *d; { int i, j, npoints, maxchunk; double *dp; double xi, yi, dx, dy, dx2, dy2, dx2p, dy2p, dist, wide, high; npoints = *n; wide = *xwidth; high = *yheight; /* set d[0,0] = 0 */ *d = 0.0; OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { xi = x[i]; yi = y[i]; /* point at the start of column i */ dp = d + i * npoints; /* set diagonal to zero */ dp[i] = 0.0; for (j=0; j < i; j++) { dx = x[j] - xi; dy = y[j] - yi; dx2p = dx * dx; dy2p = dy * dy; dx2 = (dx - wide) * (dx - wide); dy2 = (dy - high) * (dy - high); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; dx2 = (dx + wide) * (dx + wide); dy2 = (dy + high) * (dy + high); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; dist = sqrt( dx2p + dy2p ); /* upper triangle */ *dp = dist; ++dp; /* lower triangle */ d[ j * npoints + i] = dist; } } } } /* same function without the sqrt */ void CpairP2dist(n, x, y, xwidth, yheight, d) /* inputs */ int *n; double *x, *y, *xwidth, *yheight; /* output */ double *d; { int i, j, npoints, maxchunk; double *dp; double xi, yi, dx, dy, dx2, dy2, dx2p, dy2p, dist, wide, high; npoints = *n; wide = *xwidth; high = *yheight; /* set d[0,0] = 0 */ *d = 0.0; OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { xi = x[i]; yi = y[i]; /* point at the start of column i */ dp = d + i * npoints; /* set diagonal to zero */ dp[i] = 0.0; for (j=0; j < i; j++) { dx = x[j] - xi; dy = y[j] - yi; dx2p = dx * dx; dy2p = dy * dy; dx2 = (dx - wide) * (dx - wide); dy2 = (dy - high) * (dy - high); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; dx2 = (dx + wide) * (dx + wide); dy2 = (dy + high) * (dy + high); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; dist = dx2p + dy2p; /* upper triangle */ *dp = dist; ++dp; /* lower triangle */ d[ j * npoints + i] = dist; } } } } void CcrossPdist(nfrom, xfrom, yfrom, nto, xto, yto, xwidth, yheight, squared, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *xto, *yto, *xwidth, *yheight; int *squared; /* output */ double *d; { void CcrossP1dist(), CcrossP2dist(); if(*squared == 0) { CcrossP1dist(nfrom, xfrom, yfrom, nto, xto, yto, xwidth, yheight, d); } else { CcrossP2dist(nfrom, xfrom, yfrom, nto, xto, yto, xwidth, yheight, d); } } void CcrossP1dist(nfrom, xfrom, yfrom, nto, xto, yto, xwidth, yheight, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *xto, *yto, *xwidth, *yheight; /* output */ double *d; { int i, j, nf, nt, maxchunk; double *dptr; double xj, yj, dx, dy, dx2, dy2, dx2p, dy2p, wide, high; nf = *nfrom; nt = *nto; wide = *xwidth; high = *yheight; dptr = d; OUTERCHUNKLOOP(j, nt, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nt, maxchunk, 16384) { xj = xto[j]; yj = yto[j]; for(i = 0; i < nf; i++, dptr++) { dx = xj - xfrom[i]; dy = yj - yfrom[i]; dx2p = dx * dx; dy2p = dy * dy; dx2 = (dx - wide) * (dx - wide); dy2 = (dy - high) * (dy - high); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; dx2 = (dx + wide) * (dx + wide); dy2 = (dy + high) * (dy + high); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; *dptr = sqrt( dx2p + dy2p ); } } } } void CcrossP2dist(nfrom, xfrom, yfrom, nto, xto, yto, xwidth, yheight, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *xto, *yto, *xwidth, *yheight; /* output */ double *d; { int i, j, nf, nt, maxchunk; double *dptr; double xj, yj, dx, dy, dx2, dy2, dx2p, dy2p, wide, high; nf = *nfrom; nt = *nto; wide = *xwidth; high = *yheight; dptr = d; OUTERCHUNKLOOP(j, nt, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nt, maxchunk, 16384) { xj = xto[j]; yj = yto[j]; for(i = 0; i < nf; i++, dptr++) { dx = xj - xfrom[i]; dy = yj - yfrom[i]; dx2p = dx * dx; dy2p = dy * dy; dx2 = (dx - wide) * (dx - wide); dy2 = (dy - high) * (dy - high); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; dx2 = (dx + wide) * (dx + wide); dy2 = (dy + high) * (dy + high); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; *dptr = dx2p + dy2p; } } } } /* matchxy Find matches between two lists of points */ void Cmatchxy(na, xa, ya, nb, xb, yb, match) /* inputs */ int *na, *nb; double *xa, *ya, *xb, *yb; /* output */ int *match; /* match[i] = j+1 if xb[j], yb[j] matches xa[i], ya[i] */ /* match[i] = 0 if no such point matches xa[i], ya[i] */ { int i, j, Na, Nb, maxchunk; double xai, yai; Na = *na; Nb = *nb; OUTERCHUNKLOOP(i, Na, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Na, maxchunk, 16384) { xai = xa[i]; yai = ya[i]; match[i] = 0; for (j=0; j < Nb; j++) { if(xai == xb[j] && yai == yb[j]) { match[i] = j+1; break; } } } } } spatstat/src/functable.h0000755000176000001440000000310212333041761015047 0ustar ripleyusers/* $Revision: 1.1 $ $Date: 2009/11/04 23:54:15 $ Definitions of C structures for spatial statistics function estimates. Usually the estimates are of the form f^(x) = a^(x)/b^(x); we store f^ and also a^ and b^ to cater for applications with replicated data. # ///////////////////////////////////////////// # AUTHOR: Adrian Baddeley, CWI, Amsterdam, 1991. # # This software is distributed free # under the conditions that # (1) it shall not be incorporated # in software that is subsequently sold # (2) the authorship of the software shall # be acknowledged in any publication that # uses results generated by the software # (3) this notice shall remain in place # in each file. # ////////////////////////////////////////////// */ typedef struct Ftable { /* double precision function table */ double t0; double t1; int n; /* number of entries */ double *f; double *num; /* f[i] = num[i]/denom[i] */ double *denom; } Ftable; typedef struct Itable { /* integer count table e.g for histograms */ double t0; double t1; int n; int *num; int *denom; /* usually p[i] = num[i]/denom[i] */ } Itable; typedef struct H4table { /* Four histograms, for censored data */ double t0; double t1; int n; int *obs; /* observed lifetimes: o_i = min(t_i, c_i) */ int *nco; /* uncensored lifetimes: o_i for which t_i <= c_i */ int *cen; /* censoring times: c_i */ int *ncc; /* censor times of uncensored data: c_i for which t_i <= c_i */ int upperobs; /* number of o_i that exceed t1 */ int uppercen; /* number of c_i that exceed t1 */ } H4table; spatstat/src/triplets.c0000644000176000001440000000615512333041761014755 0ustar ripleyusers#include #include #include "methas.h" #include "dist2.h" /* Conditional intensity computation for Triplets process */ /* Format for storage of parameters and precomputed/auxiliary data */ typedef struct Triplets { double gamma; double r; double loggamma; double r2; double *period; int hard; int per; int *neighbour; /* scratch list of neighbours of current point */ int Nmax; /* length of scratch space allocated */ } Triplets; /* initialiser function */ Cdata *tripletsinit(state, model, algo) State state; Model model; Algor algo; { /* create storage for model parameters */ Triplets *triplets; triplets = (Triplets *) R_alloc(1, sizeof(Triplets)); /* create scratch space */ triplets->Nmax = 1024; triplets->neighbour = (int *) R_alloc(1024, sizeof(int)); /* Interpret model parameters*/ triplets->gamma = model.ipar[0]; triplets->r = model.ipar[1]; /* No longer passed as r^2 */ triplets->r2 = triplets->r * triplets->r; triplets->period = model.period; #ifdef MHDEBUG Rprintf("Initialising Triplets gamma=%lf, r=%lf\n", triplets->gamma, triplets->r); #endif /* is the model numerically equivalent to hard core ? */ triplets->hard = (triplets->gamma < DOUBLE_EPS); triplets->loggamma = (triplets->hard) ? 0 : log(triplets->gamma); /* periodic boundary conditions? */ triplets->per = (model.period[0] > 0.0); return((Cdata *) triplets); } /* conditional intensity evaluator */ double tripletscif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, kount, ix, j, k, nj, nk, N, Nmax, Nmore, N1; int *neighbour; double *x, *y; double u, v; double r2, d2, cifval; Triplets *triplets; triplets = (Triplets *) cdata; r2 = triplets->r2; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; if(npts == 0) return((double) 1.0); neighbour = triplets->neighbour; Nmax = triplets->Nmax; N = 0; /* compile list of neighbours */ for(j=0; j < npts; j++) { if(j != ix) { d2 = dist2either(u,v,x[j],y[j],triplets->period); if(d2 < r2) { /* add j to list of neighbours of current point */ if(N >= Nmax) { /* storage space overflow: reallocate */ Nmore = 2 * Nmax; triplets->neighbour = neighbour = (int *) S_realloc((char *) triplets->neighbour, Nmore, Nmax, sizeof(int)); triplets->Nmax = Nmax = Nmore; } neighbour[N] = j; N++; } } } /* count r-close (ordered) pairs of neighbours */ kount = 0; if(N > 1) { N1 = N - 1; for(j = 0; j < N1; j++) { nj = neighbour[j]; for(k = j+1; k < N; k++) { nk = neighbour[k]; if(nj != nk) { d2 = dist2either(x[nj],y[nj],x[nk],y[nk],triplets->period); if(d2 < r2) kount++; } } } } if(triplets->hard) { if(kount > 0) cifval = 0.0; else cifval = 1.0; } else cifval = exp((triplets->loggamma) * kount); #ifdef MHDEBUG Rprintf("triplet count=%d cif=%lf\n", kount, cifval); #endif return cifval; } Cifns TripletsCifns = { &tripletsinit, &tripletscif, (updafunptr) NULL, NO}; spatstat/src/KrectV3.h0000644000176000001440000000025312333041761014366 0ustar ripleyusers/* KrectV4.h with or without border correction */ if((*doBord) == 1) { #define BORDER #include "KrectV4.h" } else { #undef BORDER #include "KrectV4.h" } spatstat/src/loccumx.h0000644000176000001440000000371012333041761014560 0ustar ripleyusers/* loccumx.h C template for loccum.c grid-to-data functions $Revision: 1.5 $ $Date: 2012/11/10 06:13:52 $ macros: FNAME function name NULVAL initial value (empty sum = 0, empty product = 1) INC(A,B) increment operation A += B or A *= B */ void FNAME(ntest, xtest, ytest, ndata, xdata, ydata, vdata, nr, rmax, ans) /* inputs */ int *ntest, *ndata, *nr; double *xtest, *ytest, *xdata, *ydata, *vdata; double *rmax; /* output */ double *ans; /* matrix of column vectors of functions for each point of first pattern */ { int Ntest, Ndata, Nr, Nans; double Rmax; int i, j, k, jleft, kmin, maxchunk, columnstart; double Rmax2, rstep, xtesti, ytesti, xleft; double dx, dy, dx2, d2, d, contrib; Ntest = *ntest; Ndata = *ndata; Nr = *nr; Rmax = *rmax; if(Ntest == 0) return; Nans = Nr * Ntest; /* initialise products to 1 */ OUTERCHUNKLOOP(k, Nans, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(k, Nans, maxchunk, 8196) { ans[k] = NULVAL; } } if(Ndata == 0) return; rstep = Rmax/(Nr-1); Rmax2 = Rmax * Rmax; jleft = 0; OUTERCHUNKLOOP(i, Ntest, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Ntest, maxchunk, 8196) { xtesti = xtest[i]; ytesti = ytest[i]; columnstart = Nr * i; /* start position for f_i(.) in 'ans' */ /* adjust starting point */ xleft = xtesti - Rmax; while((xdata[jleft] < xleft) && (jleft+1 < Ndata)) ++jleft; /* process from jleft until |dx| > Rmax */ for(j=jleft; j < Ndata; j++) { dx = xdata[j] - xtesti; dx2 = dx * dx; if(dx2 > Rmax2) break; dy = ydata[j] - ytesti; d2 = dx2 + dy * dy; if(d2 <= Rmax2) { d = sqrt(d2); kmin = (int) ceil(d/rstep); if(kmin < Nr) { contrib = vdata[j]; for(k = kmin; k < Nr; k++) INC(ans[columnstart + k] , contrib); } } } } } } spatstat/src/constants.h0000644000176000001440000000051512333041761015122 0ustar ripleyusers/* constants.h Ensure that required constants are defined (Insurance against flaky installations) $Revision: 1.1 $ $Date: 2013/08/09 08:14:15 $ */ #ifndef M_PI_2 #define M_PI_2 1.570796326794897 #endif #ifndef M_PI #define M_PI 3.141592653589793 #endif #ifndef M_2PI #define M_2PI 6.283185307179586 #endif spatstat/src/inxypOld.f0000755000176000001440000000273412333041761014722 0ustar ripleyusersC Output from Public domain Ratfor, version 1.0 subroutine inxyp(x,y,xp,yp,npts,nedges,score,onbndry) implicit double precision(a-h,o-z) dimension x(npts), y(npts), xp(nedges), yp(nedges), score(npts) logical first, onbndry(npts) zero = 0.0d0 half = 0.5d0 one = 1.0d0 do23000 i = 1,nedges x0 = xp(i) y0 = yp(i) if(i .eq. nedges)then x1 = xp(1) y1 = yp(1) else x1 = xp(i+1) y1 = yp(i+1) endif dx = x1 - x0 dy = y1 - y0 do23004 j = 1,npts xcrit = (x(j) - x0)*(x(j) - x1) if(xcrit .le. zero)then if(xcrit .eq. zero)then contrib = half else contrib = one endif ycrit = y(j)*dx - x(j)*dy + x0*dy - y0*dx if(dx .lt. 0)then if(ycrit .ge. zero)then score(j) = score(j) + contrib endif onbndry(j) = onbndry(j) .or. (ycrit .eq. zero) else if(dx .gt. zero)then if(ycrit .lt. zero)then score(j) = score(j) - contrib endif onbndry(j) = onbndry(j) .or. (ycrit .eq. zero) else if(x(j) .eq. x0)then ycrit = (y(j) - y0)*(y(j) - y1) endif onbndry(j) = onbndry(j) .or. (ycrit .le. zero) endif endif endif 23004 continue 23005 continue 23000 continue 23001 continue return end spatstat/src/Kborder.c0000755000176000001440000000155112333041761014475 0ustar ripleyusers#include #include #include /* Kborder.c Efficient computation of border-corrected estimates of K for large datasets KborderI() Estimates K function, returns integer numerator & denominator KborderD() Estimates K function, returns double precision numerator & denominator Kwborder() Estimates Kinhom. Functions require (x,y) data to be sorted in ascending order of x and expect r values to be equally spaced and starting at zero $Revision: 1.4 $ $Date: 2013/05/27 02:09:10 $ */ #undef WEIGHTED #define FNAME KborderI #define OUTTYPE int #include "Kborder.h" #undef FNAME #undef OUTTYPE #define FNAME KborderD #define OUTTYPE double #include "Kborder.h" #undef FNAME #undef OUTTYPE #define FNAME Kwborder #define WEIGHTED #define OUTTYPE double #include "Kborder.h" spatstat/src/knnXdist.h0000644000176000001440000001501312333041761014707 0ustar ripleyusers #if (1 == 0) /* knnXdist.h Code template for C functions supporting nncross for k-nearest neighbours (k > 1) THE FOLLOWING CODE ASSUMES THAT LISTS ARE SORTED IN ASCENDING ORDER OF y COORDINATE This code is #included multiple times in knndistance.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour EXCLUDE #defined if exclusion mechanism is used Either or both DIST and WHICH may be defined. When EXCLUDE is defined, code numbers id1, id2 are attached to the patterns X and Y respectively, such that x1[i], y1[i] and x2[j], y2[j] are the same point iff id1[i] = id2[j]. Copyright (C) Adrian Baddeley, Jens Oehlschlagel and Rolf Turner 2000-2013 Licence: GPL >= 2 $Revision: 1.10 $ $Date: 2013/12/10 03:29:55 $ */ #endif void FNAME(n1, x1, y1, id1, n2, x2, y2, id2, kmax, nnd, nnwhich, huge) /* inputs */ int *n1, *n2; double *x1, *y1, *x2, *y2, *huge; int *id1, *id2; int *kmax; /* outputs */ double *nnd; int *nnwhich; /* some inputs + outputs are not used in all functions */ { int npoints1, npoints2, nk, nk1; int maxchunk, i, jleft, jright, jwhich, lastjwhich, unsorted, k, k1; double d2, d2minK, x1i, y1i, dx, dy, dy2, hu, hu2, tmp; double *d2min; #ifdef WHICH int *which; int itmp; #endif #ifdef EXCLUDE int id1i; #endif #ifdef TRACER int kk; #endif npoints1 = *n1; npoints2 = *n2; nk = *kmax; nk1 = nk - 1; hu = *huge; hu2 = hu * hu; if(npoints1 == 0 || npoints2 == 0) return; lastjwhich = 0; /* create space to store the nearest neighbour distances and indices for the current point */ d2min = (double *) R_alloc((size_t) nk, sizeof(double)); #ifdef WHICH which = (int *) R_alloc((size_t) nk, sizeof(int)); #endif /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < npoints1) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > npoints1) maxchunk = npoints1; for(; i < maxchunk; i++) { /* initialise nn distances and indices */ d2minK = hu2; jwhich = -1; for(k = 0; k < nk; k++) { d2min[k] = hu2; #ifdef WHICH which[k] = -1; #endif } x1i = x1[i]; y1i = y1[i]; #ifdef EXCLUDE id1i = id1[i]; #endif #ifdef TRACER Rprintf("i=%d : (%lf, %lf) ..................... \n", i, x1i, y1i); #endif if(lastjwhich < npoints2) { #ifdef TRACER Rprintf("\tForward search from lastjwhich=%d:\n", lastjwhich); #endif /* search forward from previous nearest neighbour */ for(jright = lastjwhich; jright < npoints2; ++jright) { #ifdef TRACER Rprintf("\tjright=%d \t (%lf, %lf)\n", jright, x2[jright], y2[jright]); #endif dy = y2[jright] - y1i; dy2 = dy * dy; #ifdef TRACER Rprintf("\t\t dy2=%lf,\t d2minK=%lf\n", dy2, d2minK); #endif if(dy2 > d2minK) /* note that dy2 >= d2minK could break too early */ break; #ifdef EXCLUDE /* do not compare identical points */ if(id2[jright] != id1i) { #ifdef TRACER Rprintf("\t\t %d and %d are not identical\n", i, jright); #endif #endif dx = x2[jright] - x1i; d2 = dx * dx + dy2; #ifdef TRACER Rprintf("\t\t d2=%lf\n", d2); #endif if (d2 < d2minK) { /* overwrite last entry in list of neighbours */ #ifdef TRACER Rprintf("\t\t overwrite d2min[nk1]=%lf by d2=%lf\n", d2min[nk1], d2); #endif d2min[nk1] = d2; jwhich = jright; #ifdef WHICH which[nk1] = jright; #endif /* bubble sort */ unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } #ifdef TRACER Rprintf("\t\t sorted nn distances:\n"); for(kk = 0; kk < nk; kk++) Rprintf("\t\t d2min[%d] = %lf\n", kk, d2min[kk]); #endif /* adjust maximum distance */ d2minK = d2min[nk1]; #ifdef TRACER Rprintf("\t\t d2minK=%lf\n", d2minK); #endif } #ifdef EXCLUDE } #endif } /* end forward search */ #ifdef TRACER Rprintf("\tEnd forward search\n"); #endif } if(lastjwhich > 0) { #ifdef TRACER Rprintf("\tBackward search from lastjwhich=%d:\n", lastjwhich); #endif /* search backward from previous nearest neighbour */ for(jleft = lastjwhich - 1; jleft >= 0; --jleft) { #ifdef TRACER Rprintf("\tjleft=%d \t (%lf, %lf)\n", jleft, x2[jleft], y2[jleft]); #endif dy = y1i - y2[jleft]; dy2 = dy * dy; #ifdef TRACER Rprintf("\t\t dy2=%lf,\t d2minK=%lf\n", dy2, d2minK); #endif if(dy2 > d2minK) /* note that dy2 >= d2minK could break too early */ break; #ifdef EXCLUDE /* do not compare identical points */ if(id2[jleft] != id1i) { #ifdef TRACER Rprintf("\t\t %d and %d are not identical\n", i, jleft); #endif #endif dx = x2[jleft] - x1i; d2 = dx * dx + dy2; #ifdef TRACER Rprintf("\t\t d2=%lf\n", d2); #endif if (d2 < d2minK) { /* overwrite last entry in list of neighbours */ #ifdef TRACER Rprintf("\t\t overwrite d2min[nk1]=%lf by d2=%lf\n", d2min[nk1], d2); #endif d2min[nk1] = d2; jwhich = jleft; #ifdef WHICH which[nk1] = jleft; #endif /* bubble sort */ unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } #ifdef TRACER Rprintf("\t\t sorted nn distances:\n"); for(kk = 0; kk < nk; kk++) Rprintf("\t\t d2min[%d] = %lf\n", kk, d2min[kk]); #endif /* adjust maximum distance */ d2minK = d2min[nk1]; #ifdef TRACER Rprintf("\t\t d2minK=%lf\n", d2minK); #endif } #ifdef EXCLUDE } #endif } /* end backward search */ #ifdef TRACER Rprintf("\tEnd backward search\n"); #endif } /* copy nn distances for point i to output matrix in ROW MAJOR order */ for(k = 0; k < nk; k++) { #ifdef DIST nnd[nk * i + k] = sqrt(d2min[k]); #endif #ifdef WHICH nnwhich[nk * i + k] = which[k] + 1; /* R indexing */ #endif } /* save index of last neighbour encountered */ lastjwhich = jwhich; /* end of loop over points i */ } } } spatstat/src/nn3Ddist.h0000644000176000001440000000364412333041761014602 0ustar ripleyusers/* nn3Ddist.h Code template for nearest-neighbour algorithms for 3D point patterns Input is a single point pattern - supports 'nndist' and 'nnwhich' This code is #included multiple times in nn3Ddist.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour Either or both DIST and WHICH may be defined. THE FOLLOWING CODE ASSUMES THAT THE POINT PATTERN IS SORTED IN ASCENDING ORDER OF THE z COORDINATE $Revision: 1.5 $ $Date: 2013/06/28 10:38:46 $ */ void FNAME(n, x, y, z, nnd, nnwhich, huge) /* inputs */ int *n; double *x, *y, *z, *huge; /* outputs */ double *nnd; int *nnwhich; { int npoints, i, j, maxchunk; double d2, d2min, xi, yi, zi, dx, dy, dz, dz2, hu, hu2; #ifdef WHICH int which; #endif hu = *huge; hu2 = hu * hu; npoints = *n; OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { d2min = hu2; #ifdef WHICH which = -1; #endif xi = x[i]; yi = y[i]; zi = z[i]; /* search backward */ if(i > 0){ for(j = i - 1; j >= 0; --j) { dz = z[j] - zi; dz2 = dz * dz; if(dz2 > d2min) break; dx = x[j] - xi; dy = y[j] - yi; d2 = dx * dx + dy * dy + dz2; if (d2 < d2min) { d2min = d2; #ifdef WHICH which = j; #endif } } } /* search forward */ if(i < npoints - 1) { for(j = i + 1; j < npoints; ++j) { dz = z[j] - zi; dz2 = dz * dz; if(dz2 > d2min) break; dx = x[j] - xi; dy = y[j] - yi; d2 = dx * dx + dy * dy + dz2; if (d2 < d2min) { d2min = d2; #ifdef WHICH which = j; #endif } } } #ifdef DIST nnd[i] = sqrt(d2min); #endif #ifdef WHICH /* convert to R indexing */ nnwhich[i] = which + 1; #endif } } } spatstat/src/Kborder.h0000755000176000001440000001066312333041761014506 0ustar ripleyusers/* Kborder.h Code template for K function estimators in Kborder.c Variables: FNAME function name OUTTYPE storage type of the output vectors ('int' or 'double') WEIGHTED #defined for weighted (inhom) K function Copyright (C) Adrian Baddeley, Julian Gilbey and Rolf Turner 2000-2013 Licence: GPL >= 2 $Revision: 1.11 $ $Date: 2013/09/18 04:06:59 $ */ void FNAME( nxy, x, y, #ifdef WEIGHTED w, #endif b, nr, rmax, numer, denom) /* inputs */ int *nxy, *nr; double *x, *y, *b, *rmax; #ifdef WEIGHTED double *w; #endif /* outputs */ OUTTYPE *numer, *denom; { int i, j, l, n, nt, n1, nt1, lmin, lmax, maxchunk; double dt, tmax, xi, yi, bi, maxsearch, max2search; double bratio, dratio, dij, dij2, dx, dy, dx2; OUTTYPE *numerLowAccum, *numerHighAccum, *denomAccum; OUTTYPE naccum, daccum; #ifdef WEIGHTED double wi, wj, wij; #endif #ifdef WEIGHTED #define ZERO 0.0 #define WI wi #define WJ wj #define WIJ wij #else #define ZERO 0 #define WI 1 #define WJ 1 #define WIJ 1 #endif n = *nxy; nt = *nr; n1 = n - 1; nt1 = nt - 1; dt = (*rmax)/(nt-1); tmax = *rmax; /* initialise */ numerLowAccum = (OUTTYPE *) R_alloc(nt, sizeof(OUTTYPE)); numerHighAccum = (OUTTYPE *) R_alloc(nt, sizeof(OUTTYPE)); denomAccum = (OUTTYPE *) R_alloc(nt, sizeof(OUTTYPE)); for(l = 0; l < nt; l++) numer[l] = denom[l] = numerLowAccum[l] = numerHighAccum[l] = denomAccum[l] = ZERO; if(n == 0) return; /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < n) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > n) maxchunk = n; for(; i < maxchunk; i++) { /* -------- DENOMINATOR -------------*/ bi = b[i]; #ifdef WEIGHTED wi = w[i]; #endif /* increment denominator for all r < b[i] */ bratio = bi/dt; /* lmax is the largest integer STRICTLY less than bratio */ lmax = (int) ceil(bratio) - 1; lmax = (lmax <= nt1) ? lmax : nt1; /* effectively increment entries 0 to lmax */ if(lmax >= 0) denomAccum[lmax] += WI; /* ---------- NUMERATOR -----------*/ /* scan through points (x[j],y[j]) */ xi = x[i]; yi = y[i]; maxsearch = (bi < tmax) ? bi : tmax; max2search = maxsearch * maxsearch; /* scan backward from i-1 until |x[j]-x[i]| > maxsearch or until we run out */ if(i > 0) { for(j=i-1; j >= 0; j--) { /* squared interpoint distance */ dx = x[j] - xi; dx2 = dx * dx; if(dx2 >= max2search) break; dy = y[j] - yi; dij2 = dx2 + dy * dy; if(dij2 < max2search) { #ifdef WEIGHTED wj = w[j]; #endif /* increment numerator for all r such that dij <= r < bi */ dij = (double) sqrt(dij2); dratio = dij/dt; /* smallest integer greater than or equal to dratio */ lmin = (int) ceil(dratio); /* increment entries lmin to lmax inclusive */ if(lmax >= lmin) { #ifdef WEIGHTED wij = wi * wj; #endif numerLowAccum[lmin] += WIJ; numerHighAccum[lmax] += WIJ; } } } } /* scan forward from i+1 until x[j]-x[i] > maxsearch or until we run out */ if(i < n1) { for(j=i+1; j < n; j++) { /* squared interpoint distance */ dx = x[j] - xi; dx2 = dx * dx; if(dx2 >= max2search) break; dy = y[j] - yi; dij2 = dx2 + dy * dy; if(dij2 < max2search) { #ifdef WEIGHTED wj = w[j]; #endif /* increment numerator for all r such that dij <= r < bi */ dij = (double) sqrt(dij2); dratio = dij/dt; /* smallest integer greater than or equal to dratio */ lmin = (int) ceil(dratio); /* increment entries lmin to lmax inclusive */ if(lmax >= lmin) { #ifdef WEIGHTED wij = wi * wj; #endif numerLowAccum[lmin] += WIJ; numerHighAccum[lmax] += WIJ; } } } } } } /* Now use the accumulated values to compute the numerator and denominator. The value of denomAccum[l] should be added to denom[k] for all k <= l. numerHighAccum[l] should be added to numer[k] for all k <=l numerLowAccum[l] should then be subtracted from numer[k] for k <= l. */ for(l=nt1, naccum=daccum=ZERO; l>=0; l--) { daccum += denomAccum[l]; denom[l] = daccum; naccum += numerHighAccum[l]; numer[l] = naccum; naccum -= numerLowAccum[l]; } } #undef ZERO #undef WI #undef WJ #undef WIJ spatstat/src/Knone.h0000644000176000001440000000567212333041761014171 0ustar ripleyusers/* Knone.h Code template for K function estimators in Knone.c Variables: FNAME function name OUTTYPE storage type of the output 'numer' ('int' or 'double') WEIGHTED #defined for weighted (inhom) K function Copyright (C) Adrian Baddeley, Julian Gilbey and Rolf Turner 2000-2013 Licence: GPL >= 2 $Revision: 1.6 $ $Date: 2013/09/18 04:08:26 $ */ void FNAME( nxy, x, y, #ifdef WEIGHTED w, #endif nr, rmax, numer) /* inputs */ int *nxy, *nr; double *x, *y, *rmax; #ifdef WEIGHTED double *w; #endif /* output */ OUTTYPE *numer; { int i, j, l, n, nt, n1, lmin, lmax, maxchunk; double dt, tmax, tmax2, xi, yi; double dratio, dij, dij2, dx, dy, dx2; #ifdef WEIGHTED double wi, wj, wij; #endif #ifdef WEIGHTED #define ZERO 0.0 #define WI wi #define WJ wj #define WIJ wij #else #define ZERO 0 #define WI 1 #define WJ 1 #define WIJ 1 #endif n = *nxy; nt = *nr; n1 = n - 1; lmax = nt - 1; dt = (*rmax)/(nt-1); tmax = *rmax; tmax2 = tmax * tmax; /* initialise */ for(l = 0; l < nt; l++) numer[l] = ZERO; if(n == 0) return; /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < n) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > n) maxchunk = n; for(; i < maxchunk; i++) { #ifdef WEIGHTED wi = w[i]; #endif xi = x[i]; yi = y[i]; /* scan backward from i-1 until x[j] < x[i] -tmax or until we run out */ if(i > 0) { for(j=i-1; j >= 0; j--) { dx = x[j] - xi; dx2 = dx * dx; if(dx2 >= tmax2) break; dy = y[j] - yi; dij2 = dx2 + dy * dy; if(dij2 < tmax2) { #ifdef WEIGHTED wj = w[j]; #endif /* increment numerator for all r >= dij */ dij = (double) sqrt(dij2); dratio = dij/dt; /* smallest integer greater than or equal to dratio */ lmin = (int) ceil(dratio); /* effectively increment entries lmin to lmax inclusive */ if(lmin <= lmax) { #ifdef WEIGHTED wij = wi * wj; #endif numer[lmin] += WIJ; } } } } /* scan forward from i+1 until x[j] > x[i] + tmax or until we run out */ if(i < n1) { for(j=i+1; j < n; j++) { /* squared interpoint distance */ dx = x[j] - xi; dx2 = dx * dx; if(dx2 >= tmax2) break; dy = y[j] - yi; dij2 = dx2 + dy * dy; if(dij2 < tmax2) { #ifdef WEIGHTED wj = w[j]; #endif /* increment numerator for all r >= dij */ dij = (double) sqrt(dij2); dratio = dij/dt; /* smallest integer greater than or equal to dratio */ lmin = (int) ceil(dratio); /* increment entries lmin to lmax inclusive */ if(lmin <= lmax) { #ifdef WEIGHTED wij = wi * wj; #endif numer[lmin] += WIJ; } } } } } } /* Now accumulate the numerator. */ if(nt > 1) for(l=1; l < nt; l++) numer[l] += numer[l-1]; } #undef ZERO #undef WI #undef WJ #undef WIJ spatstat/src/KrectV1.h0000644000176000001440000000026312333041761014365 0ustar ripleyusers/* KrectV2.h with or without isotropic correction */ if((*doIso) == 1) { #define ISOTROPIC #include "KrectV2.h" } else { #undef ISOTROPIC #include "KrectV2.h" } spatstat/src/linalg.c0000755000176000001440000000716012333041761014355 0ustar ripleyusers/* linalg.c Home made linear algebra Yes, really $Revision: 1.9 $ $Date: 2013/09/25 06:07:24 $ Csumouter Cwsumouter Cquadform Csumsymouter Cwsumsymouter */ #include #include #include "chunkloop.h" /* ............... matrices ..............................*/ /* Csumouter computes the sum of outer products of columns of x y = sum[j] (x[,j] %o% x[,j]) */ void Csumouter(x, n, p, y) double *x; /* p by n matrix */ int *n, *p; double *y; /* output matrix p by p, initialised to zero */ { int N, P; register int i, j, k, maxchunk; register double xij, xkj; register double *xcolj; N = *n; P = *p; OUTERCHUNKLOOP(j, N, maxchunk, 2048) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, N, maxchunk, 2048) { xcolj = x + j * P; for(i = 0; i < P; i++) { xij = xcolj[i]; for(k = 0; k < P; k++) { xkj = xcolj[k]; y[k * P + i] += xij * xkj; } } } } } /* Cwsumouter computes the weighted sum of outer products of columns of x y = sum[j] (w[j] * x[,j] %o% x[,j]) */ void Cwsumouter(x, n, p, w, y) double *x; /* p by n matrix */ int *n, *p; double *w; /* weight vector, length n */ double *y; /* output matrix p by p, initialised to zero */ { int N, P; register int i, j, k, maxchunk; register double wj, xij, wjxij, xkj; register double *xcolj; N = *n; P = *p; OUTERCHUNKLOOP(j, N, maxchunk, 2048) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, N, maxchunk, 2048) { wj = w[j]; xcolj = x + j * P; for(i = 0; i < P; i++) { xij = xcolj[i]; wjxij = wj * xij; for(k = 0; k < P; k++) { xkj = xcolj[k]; y[k * P + i] += wjxij * xkj; } } } } } /* computes the quadratic form values y[j] = x[,j] %*% v %*% t(x[,j]) */ void Cquadform(x, n, p, v, y) double *x; /* p by n matrix */ int *n, *p; double *v; /* p by p matrix */ double *y; /* output vector, length n */ { int N, P; register int i, j, k, maxchunk; register double xij, xkj, vik, yj; register double *xcolj; N = *n; P = *p; OUTERCHUNKLOOP(j, N, maxchunk, 2048) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, N, maxchunk, 2048) { xcolj = x + j * P; yj = 0; for(i = 0; i < P; i++) { xij = xcolj[i]; for(k = 0; k < P; k++) { xkj = xcolj[k]; vik = v[k * P + i]; yj += xij * vik * xkj; } } y[j] = yj; } } } /* computes the bilinear form values z[j] = x[,j] %*% v %*% t(y[,j]) */ void Cbiform(x, y, n, p, v, z) double *x, *y; /* p by n matrices */ int *n, *p; double *v; /* p by p matrix */ double *z; /* output vector, length n */ { int N, P; register int i, j, k, maxchunk; register double xij, vik, ykj, zj; register double *xcolj, *ycolj; N = *n; P = *p; OUTERCHUNKLOOP(j, N, maxchunk, 2048) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, N, maxchunk, 2048) { xcolj = x + j * P; ycolj = y + j * P; zj = 0; for(i = 0; i < P; i++) { xij = xcolj[i]; for(k = 0; k < P; k++) { ykj = ycolj[k]; vik = v[k * P + i]; zj += xij * vik * ykj; } } z[j] = zj; } } } /* ............... 3D arrays ...................... */ #undef FNAME #undef WEIGHTED /* sumsymouter computes the sum of outer products x[,i,j] %o% x[,j,i] over all pairs i, j */ #define FNAME Csumsymouter #include "sumsymouter.h" #undef FNAME /* wsumsymouter computes the weighted sum of outer products w[i,j] * (x[,i,j] %o% x[,j,i]) over all pairs i, j */ #define FNAME Cwsumsymouter #define WEIGHTED #include "sumsymouter.h" #undef FNAME #undef WEIGHTED spatstat/src/nn3DdistX.h0000644000176000001440000000520412333041761014724 0ustar ripleyusers/* nn3DdistX.h Code template for nearest-neighbour algorithms for 3D point patterns Input is two point patterns - supports 'nncross' This code is #included multiple times in nn3Ddist.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour EXCLUDE #defined if the two patterns may include common points (which are not to be counted as neighbours) Either or both DIST and WHICH may be defined. THE FOLLOWING CODE ASSUMES THAT BOTH POINT PATTERNS ARE SORTED IN ASCENDING ORDER OF THE z COORDINATE If EXCLUDE is #defined, Code numbers id1, id2 are attached to the patterns X and Y respectively, such that x1[i], y1[i] and x2[j], y2[j] are the same point iff id1[i] = id2[j]. $Revision: 1.5 $ $Date: 2013/09/20 10:01:25 $ */ void FNAME(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, nnd, nnwhich, huge) /* inputs */ int *n1, *n2, *id1, *id2; double *x1, *y1, *z1, *x2, *y2, *z2, *huge; /* outputs */ double *nnd; int *nnwhich; { int npoints1, npoints2, i, j, jwhich, lastjwhich; double d2, d2min, x1i, y1i, z1i, dx, dy, dz, dz2, hu, hu2; #ifdef EXCLUDE int id1i; #endif hu = *huge; hu2 = hu * hu; npoints1 = *n1; npoints2 = *n2; if(npoints1 == 0 || npoints2 == 0) return; lastjwhich = 0; for(i = 0; i < npoints1; i++) { R_CheckUserInterrupt(); d2min = hu2; jwhich = -1; x1i = x1[i]; y1i = y1[i]; z1i = z1[i]; #ifdef EXCLUDE id1i = id1[i]; #endif /* search backward from previous nearest neighbour */ if(lastjwhich > 0) { for(j = lastjwhich - 1; j >= 0; --j) { dz = z2[j] - z1i; dz2 = dz * dz; if(dz2 > d2min) break; #ifdef EXCLUDE /* do not compare identical points */ if(id2[j] != id1i) { #endif dx = x2[j] - x1i; dy = y2[j] - y1i; d2 = dx * dx + dy * dy + dz2; if (d2 < d2min) { d2min = d2; jwhich = j; } #ifdef EXCLUDE } #endif } } /* search forward from previous nearest neighbour */ if(lastjwhich < npoints2) { for(j = lastjwhich; j < npoints2; ++j) { dz = z2[j] - z1i; dz2 = dz * dz; if(dz2 > d2min) break; #ifdef EXCLUDE /* do not compare identical points */ if(id2[j] != id1i) { #endif dx = x2[j] - x1i; dy = y2[j] - y1i; d2 = dx * dx + dy * dy + dz2; if (d2 < d2min) { d2min = d2; jwhich = j; } #ifdef EXCLUDE } #endif } } #ifdef DIST nnd[i] = sqrt(d2min); #endif #ifdef WHICH /* convert to R indexing */ nnwhich[i] = jwhich + 1; #endif lastjwhich = jwhich; } } spatstat/src/closefuns.h0000644000176000001440000003154112333041761015112 0ustar ripleyusers/* closefuns.h Function definitions to be #included in closepair.c several times with different values of macros. Macros used: CLOSEFUN name of function for 'closepairs' CROSSFUN name of function for 'crosspairs' COORDS if defined, also return xi, yi, xj, yj, dx, dy, d THRESH if defined, also return 1(d < s) $Revision: 1.3 $ $Date: 2013/05/22 10:21:28 $ */ SEXP CLOSEFUN(SEXP xx, SEXP yy, SEXP rr, #ifdef THRESH SEXP ss, #endif SEXP nguess) { double *x, *y; double xi, yi, rmax, r2max, dx, dy, d2; int n, k, kmax, kmaxold, maxchunk, i, j, m; /* local storage */ int *iout, *jout; /* R objects in return value */ SEXP Out, iOut, jOut; /* external storage pointers */ int *iOutP, *jOutP; #ifdef COORDS double *xiout, *yiout, *xjout, *yjout, *dxout, *dyout, *dout; SEXP xiOut, yiOut, xjOut, yjOut, dxOut, dyOut, dOut; double *xiOutP, *yiOutP, *xjOutP, *yjOutP, *dxOutP, *dyOutP, *dOutP; #endif #ifdef THRESH double s, s2; int *tout; SEXP tOut; int *tOutP; #endif /* protect R objects from garbage collector */ PROTECT(xx = AS_NUMERIC(xx)); PROTECT(yy = AS_NUMERIC(yy)); PROTECT(rr = AS_NUMERIC(rr)); PROTECT(nguess = AS_INTEGER(nguess)); #ifdef THRESH PROTECT(ss = AS_NUMERIC(ss)); #define NINPUTS 5 #else #define NINPUTS 4 #endif /* Translate arguments from R to C */ x = NUMERIC_POINTER(xx); y = NUMERIC_POINTER(yy); n = LENGTH(xx); rmax = *(NUMERIC_POINTER(rr)); kmax = *(INTEGER_POINTER(nguess)); r2max = rmax * rmax; #ifdef THRESH s = *(NUMERIC_POINTER(ss)); s2 = s * s; #endif k = 0; /* k is the next available storage location and also the current length of the list */ if(n > 0 && kmax > 0) { /* allocate space */ iout = (int *) R_alloc(kmax, sizeof(int)); jout = (int *) R_alloc(kmax, sizeof(int)); #ifdef COORDS xiout = (double *) R_alloc(kmax, sizeof(double)); yiout = (double *) R_alloc(kmax, sizeof(double)); xjout = (double *) R_alloc(kmax, sizeof(double)); yjout = (double *) R_alloc(kmax, sizeof(double)); dxout = (double *) R_alloc(kmax, sizeof(double)); dyout = (double *) R_alloc(kmax, sizeof(double)); dout = (double *) R_alloc(kmax, sizeof(double)); #endif #ifdef THRESH tout = (int *) R_alloc(kmax, sizeof(int)); #endif /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < n) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > n) maxchunk = n; for(; i < maxchunk; i++) { xi = x[i]; yi = y[i]; if(i > 0) { /* scan backward */ for(j = i - 1; j >= 0; j--) { dx = x[j] - xi; if(dx < -rmax) break; dy = y[j] - yi; d2 = dx * dx + dy * dy; if(d2 <= r2max) { /* add this (i, j) pair to output */ if(k >= kmax) { /* overflow; allocate more space */ kmaxold = kmax; kmax = 2 * kmax; iout = intRealloc(iout, kmaxold, kmax); jout = intRealloc(jout, kmaxold, kmax); #ifdef COORDS xiout = dblRealloc(xiout, kmaxold, kmax); yiout = dblRealloc(yiout, kmaxold, kmax); xjout = dblRealloc(xjout, kmaxold, kmax); yjout = dblRealloc(yjout, kmaxold, kmax); dxout = dblRealloc(dxout, kmaxold, kmax); dyout = dblRealloc(dyout, kmaxold, kmax); dout = dblRealloc(dout, kmaxold, kmax); #endif #ifdef THRESH tout = intRealloc(tout, kmaxold, kmax); #endif } jout[k] = j + 1; /* R indexing */ iout[k] = i + 1; #ifdef COORDS xiout[k] = xi; yiout[k] = yi; xjout[k] = x[j]; yjout[k] = y[j]; dxout[k] = dx; dyout[k] = dy; dout[k] = sqrt(d2); #endif #ifdef THRESH tout[k] = (d2 <= s2) ? 1 : 0; #endif ++k; } } } if(i + 1 < n) { /* scan forward */ for(j = i + 1; j < n; j++) { dx = x[j] - xi; if(dx > rmax) break; dy = y[j] - yi; d2 = dx * dx + dy * dy; if(d2 <= r2max) { /* add this (i, j) pair to output */ if(k >= kmax) { /* overflow; allocate more space */ kmaxold = kmax; kmax = 2 * kmax; iout = intRealloc(iout, kmaxold, kmax); jout = intRealloc(jout, kmaxold, kmax); #ifdef COORDS xiout = dblRealloc(xiout, kmaxold, kmax); yiout = dblRealloc(yiout, kmaxold, kmax); xjout = dblRealloc(xjout, kmaxold, kmax); yjout = dblRealloc(yjout, kmaxold, kmax); dxout = dblRealloc(dxout, kmaxold, kmax); dyout = dblRealloc(dyout, kmaxold, kmax); dout = dblRealloc(dout, kmaxold, kmax); #endif #ifdef THRESH tout = intRealloc(tout, kmaxold, kmax); #endif } jout[k] = j + 1; /* R indexing */ iout[k] = i + 1; #ifdef COORDS xiout[k] = xi; yiout[k] = yi; xjout[k] = x[j]; yjout[k] = y[j]; dxout[k] = dx; dyout[k] = dy; dout[k] = sqrt(d2); #endif #ifdef THRESH tout[k] = (d2 <= s2) ? 1 : 0; #endif ++k; } } } /* end of i loop */ } } } /* return a list of vectors */ PROTECT(iOut = NEW_INTEGER(k)); PROTECT(jOut = NEW_INTEGER(k)); #ifdef COORDS PROTECT(xiOut = NEW_NUMERIC(k)); PROTECT(yiOut = NEW_NUMERIC(k)); PROTECT(xjOut = NEW_NUMERIC(k)); PROTECT(yjOut = NEW_NUMERIC(k)); PROTECT(dxOut = NEW_NUMERIC(k)); PROTECT(dyOut = NEW_NUMERIC(k)); PROTECT(dOut = NEW_NUMERIC(k)); #endif #ifdef THRESH PROTECT(tOut = NEW_INTEGER(k)); #endif if(k > 0) { iOutP = INTEGER_POINTER(iOut); jOutP = INTEGER_POINTER(jOut); #ifdef COORDS xiOutP = NUMERIC_POINTER(xiOut); yiOutP = NUMERIC_POINTER(yiOut); xjOutP = NUMERIC_POINTER(xjOut); yjOutP = NUMERIC_POINTER(yjOut); dxOutP = NUMERIC_POINTER(dxOut); dyOutP = NUMERIC_POINTER(dyOut); dOutP = NUMERIC_POINTER(dOut); #endif #ifdef THRESH tOutP = INTEGER_POINTER(tOut); #endif for(m = 0; m < k; m++) { iOutP[m] = iout[m]; jOutP[m] = jout[m]; #ifdef COORDS xiOutP[m] = xiout[m]; yiOutP[m] = yiout[m]; xjOutP[m] = xjout[m]; yjOutP[m] = yjout[m]; dxOutP[m] = dxout[m]; dyOutP[m] = dyout[m]; dOutP[m] = dout[m]; #endif #ifdef THRESH tOutP[m] = tout[m]; #endif } } #define HEAD 2 #ifdef THRESH #define MIDDLE 1 #else #define MIDDLE 0 #endif #ifdef COORDS #define TAIL 7 #else #define TAIL 0 #endif PROTECT(Out = NEW_LIST(HEAD+MIDDLE+TAIL)); SET_VECTOR_ELT(Out, 0, iOut); SET_VECTOR_ELT(Out, 1, jOut); #ifdef THRESH SET_VECTOR_ELT(Out, HEAD, tOut); #endif #ifdef COORDS SET_VECTOR_ELT(Out, HEAD+MIDDLE, xiOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+1, yiOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+2, xjOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+3, yjOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+4, dxOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+5, dyOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+6, dOut); #endif UNPROTECT(NINPUTS+1+HEAD+MIDDLE+TAIL); /* 1 is for 'Out' itself */ return(Out); } #undef NINPUTS #undef HEAD #undef MIDDLE #undef TAIL SEXP CROSSFUN(SEXP xx1, SEXP yy1, SEXP xx2, SEXP yy2, SEXP rr, #ifdef THRESH SEXP ss, #endif SEXP nguess) { /* input vectors */ double *x1, *y1, *x2, *y2; /* lengths */ int n1, n2, nout, noutmax, noutmaxold, maxchunk; /* distance parameter */ double rmax, r2max; /* indices */ int i, j, jleft, m; /* temporary values */ double x1i, y1i, xleft, dx, dy, dx2, d2; /* local storage */ int *iout, *jout; /* R objects in return value */ SEXP Out, iOut, jOut; /* external storage pointers */ int *iOutP, *jOutP; #ifdef COORDS SEXP xiOut, yiOut, xjOut, yjOut, dxOut, dyOut, dOut; double *xiOutP, *yiOutP, *xjOutP, *yjOutP, *dxOutP, *dyOutP, *dOutP; double *xiout, *yiout, *xjout, *yjout, *dxout, *dyout, *dout; #endif #ifdef THRESH double s, s2; int *tout; SEXP tOut; int *tOutP; #endif /* protect R objects from garbage collector */ PROTECT(xx1 = AS_NUMERIC(xx1)); PROTECT(yy1 = AS_NUMERIC(yy1)); PROTECT(xx2 = AS_NUMERIC(xx2)); PROTECT(yy2 = AS_NUMERIC(yy2)); PROTECT(rr = AS_NUMERIC(rr)); PROTECT(nguess = AS_INTEGER(nguess)); #ifdef THRESH PROTECT(ss = AS_NUMERIC(ss)); #define NINPUTS 7 #else #define NINPUTS 6 #endif /* Translate arguments from R to C */ x1 = NUMERIC_POINTER(xx1); y1 = NUMERIC_POINTER(yy1); x2 = NUMERIC_POINTER(xx2); y2 = NUMERIC_POINTER(yy2); n1 = LENGTH(xx1); n2 = LENGTH(xx2); rmax = *(NUMERIC_POINTER(rr)); noutmax = *(INTEGER_POINTER(nguess)); r2max = rmax * rmax; #ifdef THRESH s = *(NUMERIC_POINTER(ss)); s2 = s * s; #endif nout = 0; /* nout is the next available storage location and also the current length of the list */ if(n1 > 0 && n2 > 0 && noutmax > 0) { /* allocate space */ iout = (int *) R_alloc(noutmax, sizeof(int)); jout = (int *) R_alloc(noutmax, sizeof(int)); #ifdef COORDS xiout = (double *) R_alloc(noutmax, sizeof(double)); yiout = (double *) R_alloc(noutmax, sizeof(double)); xjout = (double *) R_alloc(noutmax, sizeof(double)); yjout = (double *) R_alloc(noutmax, sizeof(double)); dxout = (double *) R_alloc(noutmax, sizeof(double)); dyout = (double *) R_alloc(noutmax, sizeof(double)); dout = (double *) R_alloc(noutmax, sizeof(double)); #endif #ifdef THRESH tout = (int *) R_alloc(noutmax, sizeof(int)); #endif jleft = 0; i = 0; maxchunk = 0; while(i < n1) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > n1) maxchunk = n1; for( ; i < maxchunk; i++) { x1i = x1[i]; y1i = y1[i]; /* adjust starting point jleft */ xleft = x1i - rmax; while((x2[jleft] < xleft) && (jleft+1 < n2)) ++jleft; /* process from j = jleft until dx > rmax */ for(j=jleft; j < n2; j++) { /* squared interpoint distance */ dx = x2[j] - x1i; if(dx > rmax) break; dx2 = dx * dx; dy = y2[j] - y1i; d2 = dx2 + dy * dy; if(d2 <= r2max) { /* add this (i, j) pair to output */ if(nout >= noutmax) { /* overflow; allocate more space */ noutmaxold = noutmax; noutmax = 2 * noutmax; iout = intRealloc(iout, noutmaxold, noutmax); jout = intRealloc(jout, noutmaxold, noutmax); #ifdef COORDS xiout = dblRealloc(xiout, noutmaxold, noutmax); yiout = dblRealloc(yiout, noutmaxold, noutmax); xjout = dblRealloc(xjout, noutmaxold, noutmax); yjout = dblRealloc(yjout, noutmaxold, noutmax); dxout = dblRealloc(dxout, noutmaxold, noutmax); dyout = dblRealloc(dyout, noutmaxold, noutmax); dout = dblRealloc(dout, noutmaxold, noutmax); #endif #ifdef THRESH tout = intRealloc(tout, noutmaxold, noutmax); #endif } iout[nout] = i + 1; /* R indexing */ jout[nout] = j + 1; #ifdef COORDS xiout[nout] = x1i; yiout[nout] = y1i; xjout[nout] = x2[j]; yjout[nout] = y2[j]; dxout[nout] = dx; dyout[nout] = dy; dout[nout] = sqrt(d2); #endif #ifdef THRESH tout[nout] = (d2 <= s2) ? 1 : 0; #endif ++nout; } } } } } /* return a list of vectors */ PROTECT(iOut = NEW_INTEGER(nout)); PROTECT(jOut = NEW_INTEGER(nout)); #ifdef COORDS PROTECT(xiOut = NEW_NUMERIC(nout)); PROTECT(yiOut = NEW_NUMERIC(nout)); PROTECT(xjOut = NEW_NUMERIC(nout)); PROTECT(yjOut = NEW_NUMERIC(nout)); PROTECT(dxOut = NEW_NUMERIC(nout)); PROTECT(dyOut = NEW_NUMERIC(nout)); PROTECT(dOut = NEW_NUMERIC(nout)); #endif #ifdef THRESH PROTECT(tOut = NEW_INTEGER(nout)); #endif if(nout > 0) { iOutP = INTEGER_POINTER(iOut); jOutP = INTEGER_POINTER(jOut); #ifdef COORDS xiOutP = NUMERIC_POINTER(xiOut); yiOutP = NUMERIC_POINTER(yiOut); xjOutP = NUMERIC_POINTER(xjOut); yjOutP = NUMERIC_POINTER(yjOut); dxOutP = NUMERIC_POINTER(dxOut); dyOutP = NUMERIC_POINTER(dyOut); dOutP = NUMERIC_POINTER(dOut); #endif #ifdef THRESH tOutP = INTEGER_POINTER(tOut); #endif for(m = 0; m < nout; m++) { iOutP[m] = iout[m]; jOutP[m] = jout[m]; #ifdef COORDS xiOutP[m] = xiout[m]; yiOutP[m] = yiout[m]; xjOutP[m] = xjout[m]; yjOutP[m] = yjout[m]; dxOutP[m] = dxout[m]; dyOutP[m] = dyout[m]; dOutP[m] = dout[m]; #endif #ifdef THRESH tOutP[m] = tout[m]; #endif } } #define HEAD 2 #ifdef THRESH #define MIDDLE 1 #else #define MIDDLE 0 #endif #ifdef COORDS #define TAIL 7 #else #define TAIL 0 #endif PROTECT(Out = NEW_LIST(HEAD+MIDDLE+TAIL)); SET_VECTOR_ELT(Out, 0, iOut); SET_VECTOR_ELT(Out, 1, jOut); #ifdef THRESH SET_VECTOR_ELT(Out, HEAD, tOut); #endif #ifdef COORDS SET_VECTOR_ELT(Out, HEAD+MIDDLE, xiOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+1, yiOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+2, xjOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+3, yjOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+4, dxOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+5, dyOut); SET_VECTOR_ELT(Out, HEAD+MIDDLE+6, dOut); #endif UNPROTECT(NINPUTS+1+HEAD+MIDDLE+TAIL); /* 1 is for 'Out' itself */ return(Out); } #undef NINPUTS #undef HEAD #undef MIDDLE #undef TAIL spatstat/src/dist2.c0000755000176000001440000000377712333041761014146 0ustar ripleyusers# include #include #include "yesno.h" /* dist2: squared distance in torus dist2thresh: faster code for testing whether dist2 < r2 dist2Mthresh: same as dist2thresh, but does not assume the points are within one period of each other. */ double dist2(u,v,x,y,period) double u, v, x, y; double *period; { double wide, high, dx, dy, dxp, dyp, a, b, d2; /* points are assumed to lie within one period of each other */ wide = period[0]; high = period[1]; dx = u - x; if(dx < 0.0) dx = -dx; dxp = wide - dx; a = (dx < dxp)? dx : dxp; dy = v - y; if(dy < 0.0) dy = -dy; dyp = high - dy; b = (dy < dyp)? dy : dyp; d2 = a * a + b * b; return d2; } double dist2either(u,v,x,y,period) double u, v, x, y; double *period; { if(period[0] < 0.0) return pow(u-x,2) + pow(v-y,2); return(dist2(u,v,x,y,period)); } int dist2thresh(u,v,x,y,period,r2) double u, v, x, y, r2; double *period; { double wide, high, dx, dy, dxp, dyp, a, b, residue; /* points are assumed to lie within one period of each other */ wide = period[0]; high = period[1]; dx = u - x; if(dx < 0.0) dx = -dx; dxp = wide - dx; a = (dx < dxp) ? dx : dxp; residue = r2 - a * a; if(residue <= 0.0) return NO; dy = v - y; if(dy < 0.0) dy = -dy; dyp = high - dy; b = (dy < dyp) ? dy : dyp; if (residue > b * b) return YES; return NO; } int dist2Mthresh(u,v,x,y,period,r2) double u, v, x, y, r2; double *period; { double wide, high, dx, dy, dxp, dyp, a, b, residue; /* points are NOT assumed to lie within one period of each other */ wide = period[0]; high = period[1]; dx = u - x; if(dx < 0.0) dx = -dx; while(dx > wide) dx -= wide; dxp = wide - dx; a = (dx < dxp) ? dx : dxp; residue = r2 - a * a; if(residue < 0.0) return NO; dy = v - y; if(dy < 0.0) dy = -dy; while(dy > high) dy -= high; dyp = high - dy; b = (dy < dyp) ? dy : dyp; if (residue >= b * b) return YES; return NO; } spatstat/src/utils.c0000755000176000001440000000073612333041761014251 0ustar ripleyusers/* utils.c $Revision: 1.2 $ $Date: 2006/10/19 10:22:21 $ Small utilities */ void drevcumsum(double *x, int *nx) { int i; double sumx; double *xp; i = *nx - 1; xp = x + i; sumx = *xp; while(i > 0) { --i; --xp; sumx += *xp; *xp = sumx; } } void irevcumsum(int *x, int *nx) { int i; int sumx; int *xp; i = *nx - 1; xp = x + i; sumx = *xp; while(i > 0) { --i; --xp; sumx += *xp; *xp = sumx; } } spatstat/src/nndistX.h0000644000176000001440000000606512333041761014543 0ustar ripleyusers #if (1 == 0) /* nndistX.h Code template for C functions supporting nncross THE FOLLOWING CODE ASSUMES THAT LISTS ARE SORTED IN ASCENDING ORDER OF y COORDINATE This code is #included multiple times in nndistance.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour EXCLUDE #defined if exclusion mechanism is used Either or both DIST and WHICH may be defined. When EXCLUDE is defined, code numbers id1, id2 are attached to the patterns X and Y respectively, such that x1[i], y1[i] and x2[j], y2[j] are the same point iff id1[i] = id2[j]. Copyright (C) Adrian Baddeley, Jens Oehlschlagel and Rolf Turner 2000-2012 Licence: GPL >= 2 $Revision: 1.5 $ $Date: 2013/09/18 04:49:18 $ */ #endif void FNAME(n1, x1, y1, id1, n2, x2, y2, id2, nnd, nnwhich, huge) /* inputs */ int *n1, *n2; double *x1, *y1, *x2, *y2, *huge; int *id1, *id2; /* outputs */ double *nnd; int *nnwhich; /* some inputs + outputs are not used in all functions */ { int npoints1, npoints2, maxchunk, i, jleft, jright, jwhich, lastjwhich; double d2, d2min, x1i, y1i, dx, dy, dy2, hu, hu2; #ifdef EXCLUDE int id1i; #endif hu = *huge; hu2 = hu * hu; npoints1 = *n1; npoints2 = *n2; if(npoints1 == 0 || npoints2 == 0) return; lastjwhich = 0; /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < npoints1) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > npoints1) maxchunk = npoints1; for(; i < maxchunk; i++) { d2min = hu2; jwhich = -1; x1i = x1[i]; y1i = y1[i]; #ifdef EXCLUDE id1i = id1[i]; #endif if(lastjwhich < npoints2) { /* search forward from previous nearest neighbour */ for(jright = lastjwhich; jright < npoints2; ++jright) { dy = y2[jright] - y1i; dy2 = dy * dy; if(dy2 > d2min) /* note that dy2 >= d2min could break too early */ break; #ifdef EXCLUDE /* do not compare identical points */ if(id2[jright] != id1i) { #endif dx = x2[jright] - x1i; d2 = dx * dx + dy2; if (d2 < d2min) { d2min = d2; jwhich = jright; } #ifdef EXCLUDE } #endif } /* end forward search */ } if(lastjwhich > 0) { /* search backward from previous nearest neighbour */ for(jleft = lastjwhich - 1; jleft >= 0; --jleft) { dy = y1i - y2[jleft]; dy2 = dy * dy; if(dy2 > d2min) /* note that dy2 >= d2min could break too early */ break; #ifdef EXCLUDE /* do not compare identical points */ if(id2[jleft] != id1i) { #endif dx = x2[jleft] - x1i; d2 = dx * dx + dy2; if (d2 < d2min) { d2min = d2; jwhich = jleft; } #ifdef EXCLUDE } #endif } /* end backward search */ } /* commit values */ #ifdef DIST nnd[i] = sqrt(d2min); #endif #ifdef WHICH nnwhich[i] = jwhich + 1; /* R indexing */ #endif lastjwhich = jwhich; } } } spatstat/src/exactdist.c0000755000176000001440000001460512333041761015101 0ustar ripleyusers/* exactdist.c Exact distance transform of a point pattern (used to estimate the empty space function F) $Revision: 1.12 $ $Date: 2011/09/20 07:36:17 $ Author: Adrian Baddeley Sketch of functionality: the 'data' are a finite list of points in R^2 (x,y coordinates) and the 'output' is a real valued image whose entries are distances, with the value for each pixel equalling the distance from that pixel to the nearest point of the data pattern. Routines: exact_dt_R() interface to R exact_dt() implementation of distance transform dist_to_bdry() compute distance to edge of image frame shape_raster() initialise a Raster structure The appropriate calling sequence for exact_dt_R() is exemplified in 'exactdt.R' */ #undef DEBUG #include #include "raster.h" #ifdef DEBUG #include #endif void shape_raster(ras,data,xmin,ymin,xmax,ymax,nrow,ncol,mrow,mcol) Raster *ras; /* the raster structure to be initialised */ void *data; int nrow, ncol; /* absolute dimensions of storage array */ int mrow, mcol; /* margins clipped off */ /* e.g. valid width is ncol - 2*mcol columns */ double xmin, ymin, /* image dimensions in R^2 after clipping */ xmax, ymax; { ras->data = data; ras->nrow = nrow; ras->ncol = ncol; ras->length = nrow * ncol; ras->rmin = mrow; ras->rmax = nrow - mrow - 1; ras->cmin = mcol; ras->cmax = ncol - mcol - 1; ras->x0 = ras->xmin = xmin; ras->x1 = ras->xmax = xmax; ras->y0 = ras->ymin = ymin; ras->y1 = ras->ymax = ymax; ras->xstep = (xmax-xmin)/(ncol - 2 * mcol - 1); ras->ystep = (ymax-ymin)/(nrow - 2 * mrow - 1); /* Rprintf("xstep,ystep = %lf,%lf\n", ras->xstep,ras->ystep); */ } void exact_dt(x, y, npt, dist, index) double *x, *y; /* data points */ int npt; Raster *dist; /* exact distance to nearest point */ Raster *index; /* which point x[i],y[i] is closest */ { int i,j,k,l,m; double d; int ii; double dd; /* double bdiag; */ /* initialise rasters */ #define UNDEFINED -1 #define Is_Defined(I) (I >= 0) #define Is_Undefined(I) (I < 0) Clear(*index,int,UNDEFINED) d = 2.0 * DistanceSquared(dist->xmin,dist->ymin,dist->xmax,dist->ymax); Clear(*dist,double,d) /* If the list of data points is empty, ... exit now */ if(npt == 0) return; for(i = 0; i < npt; i++) { /* Rprintf("%ld -> (%lf,%lf)\n", i, x[i], y[i]); */ j = RowIndex(*dist,y[i]); k = ColIndex(*dist,x[i]); /* if(!Inside(*dist,j,k)) Rprintf("(%ld,%ld) out of bounds\n",j,k); else if (!Inside(*dist,j+1,k+1)) Rprintf("(%ld+1,%ld+1) out of bounds\n",j,k); */ for(l = j; l <= j+1; l++) for(m = k; m <= k+1; m++) { d = DistanceToSquared(x[i],y[i],*index,l,m); if( Is_Undefined(Entry(*index,l,m,int)) || Entry(*dist,l,m,double) > d) { /* Rprintf("writing (%ld,%ld) -> %ld\t%lf\n", l,m,i,d); */ Entry(*index,l,m,int) = i; Entry(*dist,l,m,double) = d; /* Rprintf("checking: %ld, %lf\n", Entry(*index,l,m,int), Entry(*dist,l,m,double)); */ } } } /* for(j = 0; j <= index->nrow; j++) for(k = 0; k <= index->ncol; k++) Rprintf("[%ld,%ld] %ld\t%lf\n", j,k,Entry(*index,j,k,int),Entry(*dist,j,k,double)); */ /* how to update the distance values */ #define COMPARE(ROW,COL,RR,CC) \ d = Entry(*dist,ROW,COL,double); \ ii = Entry(*index,RR,CC,int); \ /* Rprintf(" %lf\t (%ld,%ld) |-> %ld\n", d, RR, CC, ii); */ \ if(Is_Defined(ii) /* && ii < npt */ \ && Entry(*dist,RR,CC,double) < d) { \ dd = DistanceSquared(x[ii],y[ii],Xpos(*index,COL),Ypos(*index,ROW)); \ if(dd < d) { \ /* Rprintf("(%ld,%ld) <- %ld\n", ROW, COL, ii); */ \ Entry(*index,ROW,COL,int) = ii; \ Entry(*dist,ROW,COL,double) = dd; \ /* Rprintf("checking: %ld, %lf\n", Entry(*index,ROW,COL,int), Entry(*dist,ROW,COL,double)); */\ } \ } /* bound on diagonal step distance */ /* bdiag = sqrt(index->xstep * index->xstep + index->ystep * index->ystep); */ /* forward pass */ for(j = index->rmin; j <= index->rmax; j++) for(k = index->cmin; k <= index->cmax; k++) { /* Rprintf("Neighbourhood of (%ld,%ld):\n", j,k); */ COMPARE(j,k, j-1,k-1) COMPARE(j,k, j-1, k) COMPARE(j,k, j-1,k+1) COMPARE(j,k, j, k-1) } /* backward pass */ for(j = index->rmax; j >= index->rmin; j--) for(k = index->cmax; k >= index->cmin; k--) { COMPARE(j,k, j+1,k+1) COMPARE(j,k, j+1, k) COMPARE(j,k, j+1,k-1) COMPARE(j,k, j, k+1) } /* take square roots of the distances^2 */ for(j = index->rmin; j <= index->rmax; j++) for(k = index->cmin; k <= index->cmax; k++) Entry(*dist,j,k,double) = sqrt(Entry(*dist,j,k,double)); } #define MIN(A,B) (((A) < (B)) ? (A) : (B)) void dist_to_bdry(d) /* compute distance to boundary from each raster point */ Raster *d; /* of course this is easy for a rectangular grid but we implement it in C for ease of future modification */ { int j, k; double x, y, xd, yd; for(j = d->rmin; j <= d->rmax;j++) { y = Ypos(*d,j); yd = MIN(y - d->ymin, d->ymax - y); for(k = d->cmin; k <= d->cmax;k++) { x = Xpos(*d,k); xd = MIN(x - d->xmin, d->xmax - x); Entry(*d,j,k,double) = MIN(xd,yd); } } } /* R interface */ void exact_dt_R(x, y, npt, xmin, ymin, xmax, ymax, nr, nc, mr, mc, distances, indices, boundary) double *x, *y; /* input data points */ int *npt; double *xmin, *ymin, *xmax, *ymax; /* guaranteed bounding box */ int *nr, *nc; /* desired raster dimensions EXCLUDING margins */ int *mr, *mc; /* margins */ /* output arrays */ double *distances; /* distance to nearest point */ int *indices; /* index to nearest point */ double *boundary; /* distance to boundary */ { Raster dist, index, bdist; int mrow, mcol, nrow, ncol; mrow = *mr; mcol = *mc; /* full dimensions */ nrow = *nr + 2 * mrow; ncol = *nc + 2 * mcol; shape_raster( &dist, (void *) distances,*xmin,*ymin,*xmax,*ymax, nrow, ncol, mrow, mcol); shape_raster( &index, (void *) indices, *xmin,*ymin,*xmax,*ymax, nrow, ncol, mrow, mcol); shape_raster( &bdist, (void *) boundary, *xmin,*ymin,*xmax,*ymax, nrow, ncol, mrow, mcol); exact_dt(x, y, (int) *npt, &dist, &index); dist_to_bdry(&bdist); } spatstat/src/corrections.c0000755000176000001440000002203612333041761015440 0ustar ripleyusers/* corrections.c Edge corrections $Revision: 1.12 $ $Date: 2013/05/27 02:09:10 $ */ #include #include #include #include #include "chunkloop.h" #include "yesno.h" #include "constants.h" #undef DEBUG /* This constant is defined in Rmath.h */ #define TWOPI M_2PI #define MIN(A,B) (((A) < (B)) ? (A) : (B)) #define BETWEEN(X,X0,X1) (((X) - (X0)) * ((X) - (X1)) <= 0) #define UNDER(X,Y,X0,Y0,X1,Y1) \ (((Y1) - (Y0)) * ((X) - (X0)) >= ((Y) - (Y0)) * ((X1)- (X0))) #define UNDERNEATH(X,Y,X0,Y0,X1,Y1) \ (((X0) < (X1)) ? UNDER(X,Y,X0,Y0,X1,Y1) : UNDER(X,Y,X1,Y1,X0,Y0)) #define TESTINSIDE(X,Y,X0,Y0,X1,Y1) \ (BETWEEN(X,X0,X1) && UNDERNEATH(X, Y, X0, Y0, X1, Y1)) void ripleybox(nx, x, y, rmat, nr, xmin, ymin, xmax, ymax, epsilon, out) /* inputs */ int *nx, *nr; /* dimensions */ double *x, *y; /* coordinate vectors of length nx */ double *rmat; /* matrix nx by nr */ double *xmin, *ymin, *xmax, *ymax; /* box dimensions */ double *epsilon; /* threshold for proximity to corner */ /* output */ double *out; /* output matrix nx by nr */ { int i, j, n, m, ijpos, ncor, maxchunk; double xx, yy, x0, y0, x1, y1, dL, dR, dU, dD, aL, aU, aD, aR, rij; double cL, cU, cD, cR, bLU, bLD, bRU, bRD, bUL, bUR, bDL, bDR; double corner, extang; double eps; n = *nx; m = *nr; x0 = *xmin; y0 = *ymin; x1 = *xmax; y1 = *ymax; eps = *epsilon; OUTERCHUNKLOOP(i, n, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, n, maxchunk, 16384) { xx = x[i]; yy = y[i]; /* perpendicular distance from point to each edge of rectangle L = left, R = right, D = down, U = up */ dL = xx - x0; dR = x1 - xx; dD = yy - y0; dU = y1 - yy; /* test for corner of the rectangle */ #define ABS(X) (((X) >= 0) ? (X) : (-X)) #define SMALL(X) ((ABS(X) < eps) ? 1 : 0) ncor = SMALL(dL) + SMALL(dR) + SMALL(dD) + SMALL(dU); corner = (ncor >= 2) ? YES : NO; /* angle between - perpendicular to edge of rectangle and - line from point to corner of rectangle */ bLU = atan2(dU, dL); bLD = atan2(dD, dL); bRU = atan2(dU, dR); bRD = atan2(dD, dR); bUL = atan2(dL, dU); bUR = atan2(dR, dU); bDL = atan2(dL, dD); bDR = atan2(dR, dD); for(j = 0; j < m; j++) { ijpos = j * n + i; rij = rmat[ijpos]; #ifdef DEBUG Rprintf("rij = %lf\n", rij); #endif /* half the angle subtended by the intersection between the circle of radius r[i,j] centred on point i and each edge of the rectangle (prolonged to an infinite line) */ aL = (dL < rij) ? acos(dL/rij) : 0.0; aR = (dR < rij) ? acos(dR/rij) : 0.0; aD = (dD < rij) ? acos(dD/rij) : 0.0; aU = (dU < rij) ? acos(dU/rij) : 0.0; #ifdef DEBUG Rprintf("aL = %lf\n", aL); Rprintf("aR = %lf\n", aR); Rprintf("aD = %lf\n", aD); Rprintf("aU = %lf\n", aU); #endif /* apply maxima */ cL = MIN(aL, bLU) + MIN(aL, bLD); cR = MIN(aR, bRU) + MIN(aR, bRD); cU = MIN(aU, bUL) + MIN(aU, bUR); cD = MIN(aD, bDL) + MIN(aD, bDR); #ifdef DEBUG Rprintf("cL = %lf\n", cL); Rprintf("cR = %lf\n", cR); Rprintf("cD = %lf\n", cD); Rprintf("cU = %lf\n", cU); #endif /* total exterior angle over 2 pi */ extang = (cL + cR + cU + cD)/TWOPI; /* add pi/2 for corners */ if(corner) extang += 1/4; #ifdef DEBUG Rprintf("extang = %lf\n", extang); #endif /* OK, now compute weight */ out[ijpos] = 1 / (1 - extang); } } } } void ripleypoly(nc, xc, yc, nr, rmat, nseg, x0, y0, x1, y1, out) /* inputs */ int *nc, *nr, *nseg; double *xc, *yc, *rmat; double *x0, *y0, *x1, *y1; /* output */ double *out; { int n, m, i, j, k, l, nradperpt, ncut, nchanges, maxchunk; double xcentre, ycentre, xx0, yy0, xx1, yy1, xx01, yy01; double x, y, radius, radius2, dx0, dx1, dy0; double a, b, c, t, det, sqrtdet, tmp; double theta[6], delta[7], tmid[7]; double xtest, ytest, contrib, total; n = *nc; nradperpt = *nr; m = *nseg; OUTERCHUNKLOOP(i, n, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, n, maxchunk, 16384) { xcentre = xc[i]; ycentre = yc[i]; #ifdef DEBUG Rprintf("centre = (%lf, %lf)\n", xcentre, ycentre); #endif for(j = 0; j < nradperpt; j++) { radius = rmat[ j * n + i]; radius2 = radius * radius; #ifdef DEBUG Rprintf("radius = %lf\n", radius); #endif total = 0.0; for(k=0; k < m; k++) { #ifdef DEBUG Rprintf("k = %d\n", k); #endif ncut = 0; xx0 = x0[k]; yy0 = y0[k]; xx1 = x1[k]; yy1 = y1[k]; #ifdef DEBUG Rprintf("(%lf,%lf) to (%lf,%lf)\n", xx0, yy0, xx1, yy1); #endif /* intersection with left edge */ dx0 = xx0 - xcentre; det = radius2 - dx0 * dx0; if(det > 0) { sqrtdet = sqrt(det); y = ycentre + sqrtdet; if(y < yy0) { theta[ncut] = atan2(y - ycentre, dx0); #ifdef DEBUG Rprintf("cut left at theta= %lf\n", theta[ncut]); #endif ncut++; } y = ycentre - sqrtdet; if(y < yy0) { theta[ncut] = atan2(y-ycentre, dx0); #ifdef DEBUG Rprintf("cut left at theta= %lf\n", theta[ncut]); #endif ncut++; } } else if(det == 0) { if(ycentre < yy0) { theta[ncut] = atan2(0.0, dx0); #ifdef DEBUG Rprintf("tangent left at theta= %lf\n", theta[ncut]); #endif ncut++; } } /* intersection with right edge */ dx1 = xx1 - xcentre; det = radius2 - dx1 * dx1; if(det > 0) { sqrtdet = sqrt(det); y = ycentre + sqrtdet; if(y < yy1) { theta[ncut] = atan2(y - ycentre, dx1); #ifdef DEBUG Rprintf("cut right at theta= %lf\n", theta[ncut]); #endif ncut++; } y = ycentre - sqrtdet; if(y < yy1) { theta[ncut] = atan2(y - ycentre, dx1); #ifdef DEBUG Rprintf("cut right at theta= %lf\n", theta[ncut]); #endif ncut++; } } else if(det == 0) { if(ycentre < yy1) { theta[ncut] = atan2(0.0, dx1); #ifdef DEBUG Rprintf("tangent right at theta= %lf\n", theta[ncut]); #endif ncut++; } } /* intersection with top segment */ xx01 = xx1 - xx0; yy01 = yy1 - yy0; dy0 = yy0 - ycentre; a = xx01 * xx01 + yy01 * yy01; b = 2 * (xx01 * dx0 + yy01 * dy0); c = dx0 * dx0 + dy0 * dy0 - radius2; det = b * b - 4 * a * c; if(det > 0) { sqrtdet = sqrt(det); t = (sqrtdet - b)/(2 * a); if(t >= 0 && t <= 1) { x = xx0 + t * xx01; y = yy0 + t * yy01; theta[ncut] = atan2(y - ycentre, x - xcentre); #ifdef DEBUG Rprintf("hits segment: t = %lf, theta = %lf\n", t, theta[ncut]); #endif ++ncut; } t = (-sqrtdet - b)/(2 * a); if(t >= 0 && t <= 1) { x = xx0 + t * xx01; y = yy0 + t * yy01; theta[ncut] = atan2(y - ycentre, x - xcentre); #ifdef DEBUG Rprintf("hits segment: t = %lf, theta = %lf\n", t, theta[ncut]); #endif ++ncut; } } else if(det == 0) { t = - b/(2 * a); if(t >= 0 && t <= 1) { x = xx0 + t * xx01; y = yy0 + t * yy01; theta[ncut] = atan2(y - ycentre, x - xcentre); #ifdef DEBUG Rprintf("tangent to segment: t = %lf, theta = %lf\n", t, theta[ncut]); #endif ++ncut; } } /* for safety, force all angles to be in range [0, 2 * pi] */ if(ncut > 0) for(l = 0; l < ncut; l++) if(theta[l] < 0) theta[l] += TWOPI; /* sort angles */ if(ncut > 1) { do { nchanges = 0; for(l = 0; l < ncut - 1; l++) { if(theta[l] > theta[l+1]) { /* swap */ ++nchanges; tmp = theta[l]; theta[l] = theta[l+1]; theta[l+1] = tmp; } } } while(nchanges > 0); } #ifdef DEBUG if(ncut > 0) { for(l = 0; l < ncut; l++) Rprintf("theta[%d] = %lf\n", l, theta[l]); } #endif /* compute length of circumference inside polygon */ if(ncut == 0) { /* entire circle is either in or out */ xtest = xcentre + radius; ytest = ycentre; if(TESTINSIDE(xtest, ytest, xx0, yy0, xx1, yy1)) contrib = TWOPI; else contrib = 0.0; } else { /* find midpoints and lengths of pieces (adding theta = ) */ delta[0] = theta[0]; tmid[0] = theta[0]/2; if(ncut > 1) { for(l = 1; l < ncut; l++) { delta[l] = theta[l] - theta[l-1]; tmid[l] = (theta[l] + theta[l-1])/2; } } delta[ncut] = TWOPI - theta[ncut - 1]; tmid[ncut] = (TWOPI + theta[ncut-1])/2; contrib = 0.0; for(l = 0; l <= ncut; l++) { #ifdef DEBUG Rprintf("delta[%d] = %lf\n", l, delta[l]); #endif xtest = xcentre + radius * cos(tmid[l]); ytest = ycentre + radius * sin(tmid[l]); if(TESTINSIDE(xtest, ytest, xx0, yy0, xx1, yy1)) { contrib += delta[l]; #ifdef DEBUG Rprintf("... inside\n"); } else { Rprintf("... outside\n"); #endif } } } /* multiply by sign of trapezium */ if(xx0 < xx1) contrib *= -1; #ifdef DEBUG Rprintf("contrib = %lf\n", contrib); #endif total += contrib; } out[ j * n + i] = total; #ifdef DEBUG Rprintf("total = %lf\n", total); #endif } } } } spatstat/src/PerfectDiggleGratton.h0000644000176000001440000001342112333041761017151 0ustar ripleyusers // ........................... Diggle-Gratton process .......................... // $Revision: 1.5 $ $Date: 2012/03/10 11:22:56 $ class DiggleGrattonProcess : public PointProcess { public: double beta, delta, rho, kappa, rhominusdelta, deltasquared, rhosquared; DiggleGrattonProcess(double xmin, double xmax, double ymin, double ymax, double b, double d, double r, double k); ~DiggleGrattonProcess(){} void NewEvent(double *x, double *y, char *InWindow); void GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP); double Interaction(double dsquared); }; DiggleGrattonProcess::DiggleGrattonProcess(double xmin, double xmax, double ymin, double ymax, double b, double d, double r, double k) : PointProcess(xmin, xmax, ymin, ymax){ beta = b; delta = d; rho = r; kappa = k; deltasquared = delta * delta; rhosquared = rho * rho; rhominusdelta = rho - delta; InteractionRange = rho; TotalBirthRate = beta*(xmax-xmin)*(ymax-ymin); } double DiggleGrattonProcess::Interaction(double dsquared) { double rtn, dist, t; rtn = 1; if(dsquared < rhosquared) { if(dsquared < deltasquared) { rtn = 0; } else { dist = sqrt(dsquared); t = (dist - delta)/rhominusdelta; rtn = pow(t, kappa); } } return(rtn); } void DiggleGrattonProcess::NewEvent(double *x, double *y, char *InWindow) { double Xdim, Ydim; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; *x = slumptal()*Xdim+Xmin; *y = slumptal()*Ydim+Ymin; *InWindow = 1; } void DiggleGrattonProcess::GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP) { int i; double xtemp, ytemp, L, Xdim, Ydim; struct Point *TempPoint; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; L = beta*Xdim*Ydim; *GeneratedPoints = poisson(L); *LivingPoints = *GeneratedPoints; for (i=1; i<=*GeneratedPoints ; i++){ //Rprintf("Generating DiggleGrattonProcess Poisson 3\n"); //scanf("%f",&f1); xtemp = slumptal()*Xdim+Xmin; ytemp = slumptal()*Ydim+Ymin; // //Rprintf("Generating DiggleGrattonProcess Poisson 3.2\n"); TempPoint = ALLOCATE(struct Point); // TempPoint->X = xtemp; TempPoint->Y = ytemp; TempPoint->No = i; TempPoint->R = slumptal(); //Rprintf("Generating DiggleGrattonProcess Poisson 3.6\n"); TempPoint->next = headPoint->next; headPoint->next = TempPoint; *NoP = *NoP + 1; } } // ........................... Interface to R .......................... extern "C" { SEXP PerfectDiggleGratton(SEXP beta, SEXP delta, SEXP rho, SEXP kappa, SEXP xrange, SEXP yrange) { // input parameters double Beta, Delta, Rho, Kappa, Xmin, Xmax, Ymin, Ymax; double *Xrange, *Yrange; // internal int xcells, ycells; long int StartTime, EndTime; // output int noutmax; SEXP xout, yout, nout, out; double *xx, *yy; int *nn; // protect arguments from garbage collector PROTECT(beta = AS_NUMERIC(beta)); PROTECT(delta = AS_NUMERIC(delta)); PROTECT(rho = AS_NUMERIC(rho)); PROTECT(kappa = AS_NUMERIC(kappa)); PROTECT(xrange = AS_NUMERIC(xrange)); PROTECT(yrange = AS_NUMERIC(yrange)); // that's 6 protected objects // extract arguments Beta = *(NUMERIC_POINTER(beta)); Delta = *(NUMERIC_POINTER(delta)); Rho = *(NUMERIC_POINTER(rho)); Kappa = *(NUMERIC_POINTER(kappa)); Xrange = NUMERIC_POINTER(xrange); Xmin = Xrange[0]; Xmax = Xrange[1]; Yrange = NUMERIC_POINTER(yrange); Ymin = Yrange[0]; Ymax = Yrange[1]; // compute cell array size xcells = (int) floor((Xmax-Xmin)/ Rho); if(xcells > 9) xcells = 9; if(xcells < 1) xcells = 1; ycells = (int) floor((Ymax-Ymin)/ Rho); Xrange = NUMERIC_POINTER(xrange); Xmin = Xrange[0]; Xmax = Xrange[1]; Yrange = NUMERIC_POINTER(yrange); Ymin = Yrange[0]; Ymax = Yrange[1]; // compute cell array size xcells = (int) floor((Xmax-Xmin)/ Rho); if(xcells > 9) xcells = 9; if(xcells < 1) xcells = 1; ycells = (int) floor((Ymax-Ymin)/ Rho); if(ycells > 9) ycells = 9; if(ycells < 1) ycells = 1; #ifdef DBGS Rprintf("xcells %d ycells %d\n",xcells,ycells); Rprintf("Initialising\n"); #endif // Initialise DiggleGratton point process DiggleGrattonProcess ExampleProcess(Xmin,Xmax,Ymin,Ymax,Beta,Delta,Rho,Kappa); // Initialise point pattern Point2Pattern ExamplePattern(Xmin,Xmax,Ymin,Ymax, xcells, ycells); // parameters: min x, max x, min y, max y, "cells" in x and y direction // used for speeding up neighbour counting, 9 is max here #ifdef DBGS Rprintf("Initialisation complete\n"); #endif // Synchronise random number generator GetRNGstate(); // Initialise perfect sampler Sampler PerfectSampler(&ExampleProcess); // Perform perfect sampling PerfectSampler.Sim(&ExamplePattern, &StartTime, &EndTime); // Synchronise random number generator PutRNGstate(); // Get upper estimate of number of points noutmax = ExamplePattern.UpperCount() + 1; // Allocate space for output PROTECT(xout = NEW_NUMERIC(noutmax)); PROTECT(yout = NEW_NUMERIC(noutmax)); PROTECT(nout = NEW_INTEGER(1)); xx = NUMERIC_POINTER(xout); yy = NUMERIC_POINTER(yout); nn = INTEGER_POINTER(nout); // copy data into output storage ExamplePattern.Return(xx, yy, nn, noutmax); // pack up into output list PROTECT(out = NEW_LIST(3)); SET_VECTOR_ELT(out, 0, xout); SET_VECTOR_ELT(out, 1, yout); SET_VECTOR_ELT(out, 2, nout); // return UNPROTECT(10); // 6 arguments plus xout, yout, nout, out return(out); } } spatstat/src/Ediggra.c0000755000176000001440000000354412333041761014453 0ustar ripleyusers#include #include #include "chunkloop.h" /* Ediggra.c $Revision: 1.4 $ $Date: 2012/03/28 05:55:50 $ C implementation of 'eval' for DiggleGratton interaction (exponentiated) Assumes point patterns are sorted in increasing order of x coordinate */ double sqrt(); void Ediggra(nnsource, xsource, ysource, idsource, nntarget, xtarget, ytarget, idtarget, ddelta, rrho, values) /* inputs */ int *nnsource, *nntarget; double *xsource, *ysource, *xtarget, *ytarget; int *idsource, *idtarget; double *ddelta, *rrho; /* output */ double *values; { int nsource, ntarget, maxchunk, j, i, ileft, idsourcej; double xsourcej, ysourcej, xleft, dx, dy, dx2, d2; double delta, rho, delta2, rho2, rhominusdelta; double product; nsource = *nnsource; ntarget = *nntarget; delta = *ddelta; rho = *rrho; rho2 = rho * rho; delta2 = delta * delta; rhominusdelta = rho - delta; if(nsource == 0 || ntarget == 0) return; ileft = 0; OUTERCHUNKLOOP(j, nsource, maxchunk, 65536) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nsource, maxchunk, 65536) { product = 1; xsourcej = xsource[j]; ysourcej = ysource[j]; idsourcej = idsource[j]; /* adjust starting point */ xleft = xsourcej - rho; while((xtarget[ileft] < xleft) && (ileft+1 < ntarget)) ++ileft; /* process until dx > rho (or until product is zero) */ for(i=ileft; i < ntarget; i++) { dx = xtarget[i] - xsourcej; dx2 = dx * dx; if(dx2 > rho2) break; if(idtarget[i] != idsourcej) { dy = ytarget[i] - ysourcej; d2 = dx2 + dy * dy; if(d2 <= rho2) { if(d2 <= delta2) { product = 0; break; } else product *= (sqrt(d2) - delta)/rhominusdelta; } } } values[j] = product; } } } spatstat/src/nndist.h0000644000176000001440000000405112333041761014404 0ustar ripleyusers/* nndist.h Code template for C functions supporting nndist and nnwhich (k=1) THE FOLLOWING CODE ASSUMES THAT y IS SORTED IN ASCENDING ORDER This code is #included multiple times in nndistance.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour Either or both DIST and WHICH may be defined. Copyright (C) Adrian Baddeley, Jens Oehlschlagel and Rolf Turner 2000-2012 Licence: GPL >= 2 $Revision: 1.2 $ $Date: 2012/03/14 02:37:27 $ */ void FNAME(n, x, y, #ifdef DIST nnd, #endif #ifdef WHICH nnwhich, #endif huge) /* inputs */ int *n; double *x, *y, *huge; /* outputs */ #ifdef DIST double *nnd; #endif #ifdef WHICH int *nnwhich; #endif { int npoints, i, maxchunk, left, right; double d2, d2min, xi, yi, dx, dy, dy2, hu, hu2; #ifdef WHICH int which; #endif hu = *huge; hu2 = hu * hu; npoints = *n; /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < npoints) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > npoints) maxchunk = npoints; for(; i < maxchunk; i++) { d2min = hu2; #ifdef WHICH which = -1; #endif xi = x[i]; yi = y[i]; if(i < npoints - 1) { /* search forward */ for(right = i + 1; right < npoints; ++right) { dy = y[right] - yi; dy2 = dy * dy; if(dy2 > d2min) break; dx = x[right] - xi; d2 = dx * dx + dy2; if (d2 < d2min) { d2min = d2; #ifdef WHICH which = right; #endif } } } if(i > 0){ /* search backward */ for(left = i - 1; left >= 0; --left) { dy = yi - y[left]; dy2 = dy * dy; if(dy2 > d2min) break; dx = x[left] - xi; d2 = dx * dx + dy2; if (d2 < d2min) { d2min = d2; #ifdef WHICH which = left; #endif } } } #ifdef DIST nnd[i] = sqrt(d2min); #endif #ifdef WHICH nnwhich[i] = which + 1; /* R indexing */ #endif } } } spatstat/src/localpcf.h0000755000176000001440000000453512333041761014702 0ustar ripleyusers/* localpcf.h Source template for versions of local pair correlation Requires variable: WEIGHTED Assumes point patterns are sorted in increasing order of x coordinate $Revision: 1.5 $ $Date: 2012/03/27 04:50:04 $ */ #ifdef WEIGHTED #define FNAME locWpcfx #else #define FNAME locpcfx #endif void FNAME(nn1, x1, y1, id1, nn2, x2, y2, id2, #ifdef WEIGHTED w2, #endif nnr, rmaxi, del, pcf) /* inputs */ int *nn1, *nn2, *nnr; double *x1, *y1, *x2, *y2; int *id1, *id2; double *rmaxi, *del; #ifdef WEIGHTED double *w2; #endif /* output */ double *pcf; /* matrix of column vectors of pcf's for each point of first pattern */ { int n1, n2, nr, i, j, k, jleft, kmin, kmax, id1i, maxchunk; double x1i, y1i, rmax, delta, xleft, dx, dy, dx2; double d2, d2max, dmax, d; double rstep, rvalue, frac, contrib, weight, coef; n1 = *nn1; n2 = *nn2; nr = *nnr; rmax = *rmaxi; delta = *del; dmax = rmax + delta; /* maximum relevant value of interpoint distance */ d2max = dmax * dmax; rstep = rmax/(nr-1); coef = 3.0 /(4.0 * delta); if(n1 == 0 || n2 == 0) return; jleft = 0; OUTERCHUNKLOOP(i, n1, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, n1, maxchunk, 8196) { x1i = x1[i]; y1i = y1[i]; id1i = id1[i]; /* adjust starting point */ xleft = x1i - dmax; while((x2[jleft] < xleft) && (jleft+1 < n2)) ++jleft; /* process from jleft until |dx| > dmax */ for(j=jleft; j < n2; j++) { dx = x2[j] - x1i; dx2 = dx * dx; if(dx2 > d2max) break; dy = y2[j] - y1i; d2 = dx2 + dy * dy; if(d2 <= d2max && id2[j] != id1i) { d = sqrt(d2); kmin = (int) floor((d-delta)/rstep); kmax = (int) ceil((d+delta)/rstep); if(kmin <= nr-1 && kmax >= 0) { /* nonempty intersection with range of r values */ /* compute intersection */ if(kmin < 0) kmin = 0; if(kmax >= nr) kmax = nr-1; /* */ weight = coef/d; #ifdef WEIGHTED weight = weight * w2[j]; #endif for(k = kmin; k <= kmax; k++) { rvalue = k * rstep; frac = (d - rvalue)/delta; /* Epanechnikov kernel with halfwidth delta */ contrib = (1 - frac * frac); if(contrib > 0) pcf[k + nr * i] += contrib * weight; } } } } } } } #undef FNAME spatstat/src/PerfectStraussHard.h0000644000176000001440000001272612333041761016671 0ustar ripleyusers // ..................... Strauss-Hardcore process .......................... // $Revision: 1.3 $ $Date: 2014/02/18 10:42:53 $ class StraussHardProcess : public PointProcess { public: double beta, gamma, H, R, Hsquared, Rsquared; StraussHardProcess(double xmin, double xmax, double ymin, double ymax, double b, double g, double Ri, double Hc); ~StraussHardProcess(){} void NewEvent(double *x, double *y, char *InWindow); void GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP); double Interaction(double dsquared); // void CalcBeta(long int xsidepomm, long int ysidepomm, // double *betapomm); // void CheckBeta(long int xsidepomm, long int ysidepomm, // double *betapomm); // double lnCondInt(struct Point2 *TempCell, Point2Pattern *p2p); // void Beta(struct Point2 *TempCell); // void CalcBeta(Point2Pattern *p2p); }; StraussHardProcess::StraussHardProcess(double xmin, double xmax, double ymin, double ymax, double b, double g, double Ri, double Hc) : PointProcess(xmin, xmax, ymin, ymax){ beta = b; gamma = g; R = Ri; H = Hc; Rsquared = R * R; Hsquared = H * H; InteractionRange = R; TotalBirthRate = beta*(xmax-xmin)*(ymax-ymin); } double StraussHardProcess::Interaction(double dsquared) { if(dsquared >= Rsquared) return(1.0); if(dsquared >= Hsquared) return(gamma); return(0.0); } void StraussHardProcess::NewEvent(double *x, double *y, char *InWindow) { double Xdim, Ydim; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; *x = slumptal()*Xdim+Xmin; *y = slumptal()*Ydim+Ymin; *InWindow = 1; } void StraussHardProcess::GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP) { int i; double xtemp, ytemp, L, Xdim, Ydim; struct Point *TempPoint; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; L = beta*Xdim*Ydim; *GeneratedPoints = poisson(L); *LivingPoints = *GeneratedPoints; for (i=1; i<=*GeneratedPoints ; i++){ //Rprintf("Generating StraussHardProcess Poisson 3\n"); //scanf("%f",&f1); xtemp = slumptal()*Xdim+Xmin; ytemp = slumptal()*Ydim+Ymin; // //Rprintf("Generating StraussHardProcess Poisson 3.2\n"); TempPoint = ALLOCATE(struct Point); // TempPoint->X = xtemp; TempPoint->Y = ytemp; TempPoint->No = i; TempPoint->R = slumptal(); //Rprintf("Generating StraussHardProcess Poisson 3.6\n"); TempPoint->next = headPoint->next; headPoint->next = TempPoint; *NoP = *NoP + 1; } } // ........................... Interface to R .......................... extern "C" { SEXP PerfectStraussHard(SEXP beta, SEXP gamma, SEXP r, SEXP hc, SEXP xrange, SEXP yrange) { // input parameters double Beta, Gamma, R, H, Xmin, Xmax, Ymin, Ymax; double *Xrange, *Yrange; // internal int xcells, ycells; long int StartTime, EndTime; // output int noutmax; SEXP xout, yout, nout, out; double *xx, *yy; int *nn; // protect arguments from garbage collector PROTECT(beta = AS_NUMERIC(beta)); PROTECT(gamma = AS_NUMERIC(gamma)); PROTECT(r = AS_NUMERIC(r)); PROTECT(hc = AS_NUMERIC(hc)); PROTECT(xrange = AS_NUMERIC(xrange)); PROTECT(yrange = AS_NUMERIC(yrange)); // that's 6 protected objects // extract arguments Beta = *(NUMERIC_POINTER(beta)); Gamma = *(NUMERIC_POINTER(gamma)); R = *(NUMERIC_POINTER(r)); H = *(NUMERIC_POINTER(hc)); Xrange = NUMERIC_POINTER(xrange); Xmin = Xrange[0]; Xmax = Xrange[1]; Yrange = NUMERIC_POINTER(yrange); Ymin = Yrange[0]; Ymax = Yrange[1]; // compute cell array size xcells = (int) floor((Xmax-Xmin)/ R); if(xcells > 9) xcells = 9; if(xcells < 1) xcells = 1; ycells = (int) floor((Ymax-Ymin)/ R); if(ycells > 9) ycells = 9; if(ycells < 1) ycells = 1; #ifdef DBGS Rprintf("xcells %d ycells %d\n",xcells,ycells); Rprintf("Initialising\n"); #endif // Initialise StraussHard point process StraussHardProcess ExampleProcess(Xmin,Xmax,Ymin,Ymax, Beta, Gamma, R, H); // Initialise point pattern Point2Pattern ExamplePattern(Xmin,Xmax,Ymin,Ymax, xcells, ycells); // parameters: min x, max x, min y, max y, "cells" in x and y direction // used for speeding up neighbour counting, 9 is max here #ifdef DBGS Rprintf("Initialisation complete\n"); #endif // Synchronise random number generator GetRNGstate(); // Initialise perfect sampler Sampler PerfectSampler(&ExampleProcess); // Perform perfect sampling PerfectSampler.Sim(&ExamplePattern, &StartTime, &EndTime); // Synchronise random number generator PutRNGstate(); // Get upper estimate of number of points noutmax = ExamplePattern.UpperCount() + 1; // Allocate space for output PROTECT(xout = NEW_NUMERIC(noutmax)); PROTECT(yout = NEW_NUMERIC(noutmax)); PROTECT(nout = NEW_INTEGER(1)); xx = NUMERIC_POINTER(xout); yy = NUMERIC_POINTER(yout); nn = INTEGER_POINTER(nout); // copy data into output storage ExamplePattern.Return(xx, yy, nn, noutmax); // pack up into output list PROTECT(out = NEW_LIST(3)); SET_VECTOR_ELT(out, 0, xout); SET_VECTOR_ELT(out, 1, yout); SET_VECTOR_ELT(out, 2, nout); // return UNPROTECT(10); // 6 arguments plus xout, yout, nout, out return(out); } } spatstat/src/massdisthack.c0000755000176000001440000000355612333041761015572 0ustar ripleyusers/* HACKED from R-2.0.1/src/appl/massdist.c by Adrian Baddeley Changes indicated by 'AB' */ /* * R : A Computer Language for Statistical Data Analysis * Copyright (C) 1996-2004 Robert Gentleman and Ross Ihaka and the * R Development Core Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef HAVE_CONFIG_H #include #endif #include #include void massdisthack(double *x, int *nx, double *xmass, /* AB: new variable */ double *xlow, double *xhigh, double *y, int *ny) { double fx, xdelta, xmi, xpos; /* AB */ int i, ix, ixmax, ixmin; ixmin = 0; ixmax = *ny - 2; /* AB: line deleted */ xdelta = (*xhigh - *xlow) / (*ny - 1); for(i=0; i < *ny ; i++) y[i] = 0; for(i=0; i < *nx ; i++) { if(R_FINITE(x[i])) { xpos = (x[i] - *xlow) / xdelta; ix = floor(xpos); fx = xpos - ix; xmi = xmass[i]; /* AB: new line */ if(ixmin <= ix && ix <= ixmax) { y[ix] += (1 - fx) * xmi; /* AB */ y[ix + 1] += fx * xmi; /* AB */ } else if(ix == -1) { y[0] += fx * xmi; /* AB */ } else if(ix == ixmax + 1) { y[ix] += (1 - fx) * xmi; /* AB */ } } } /* AB: lines deleted */ } spatstat/src/minnnd.c0000644000176000001440000000544412333041761014372 0ustar ripleyusers/* minnnd.c Minimum/Maximum Nearest Neighbour Distance $Revision: 1.2 $ $Date: 2014/03/25 02:18:31 $ */ #include #include #include /* THE FOLLOWING CODE ASSUMES THAT y IS SORTED IN ASCENDING ORDER */ void minnnd2(n, x, y, huge, result) /* inputs */ int *n; double *x, *y, *huge; /* outputs */ double *result; { int npoints, i, maxchunk, left, right; double d2, d2min, xi, yi, dx, dy, dy2, hu, hu2; hu = *huge; hu2 = hu * hu; npoints = *n; d2min = hu2; if(npoints == 0) return; /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < npoints) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > npoints) maxchunk = npoints; for(; i < maxchunk; i++) { xi = x[i]; yi = y[i]; if(i < npoints - 1) { /* search forward */ for(right = i + 1; right < npoints; ++right) { dy = y[right] - yi; dy2 = dy * dy; if(dy2 > d2min) break; dx = x[right] - xi; d2 = dx * dx + dy2; if (d2 < d2min) { d2min = d2; } } } if(i > 0){ /* search backward */ for(left = i - 1; left >= 0; --left) { dy = yi - y[left]; dy2 = dy * dy; if(dy2 > d2min) break; dx = x[left] - xi; d2 = dx * dx + dy2; if (d2 < d2min) { d2min = d2; } } } } } *result = d2min; } void maxnnd2(n, x, y, huge, result) /* inputs */ int *n; double *x, *y, *huge; /* outputs */ double *result; { int npoints, i, maxchunk, left, right; double d2, d2mini, d2max, xi, yi, dx, dy, dy2, hu, hu2; hu = *huge; hu2 = hu * hu; npoints = *n; /* maximum (over all i) nearest-neighbour distance, squared */ d2max = 0.0; if(npoints == 0) return; /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < npoints) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > npoints) maxchunk = npoints; for(; i < maxchunk; i++) { xi = x[i]; yi = y[i]; /* nearest-neighbour distance for point i, squared */ d2mini = hu2; if(i < npoints - 1) { /* search forward */ for(right = i + 1; right < npoints; ++right) { dy = y[right] - yi; dy2 = dy * dy; if(dy2 > d2mini) break; dx = x[right] - xi; d2 = dx * dx + dy2; if (d2 < d2mini) { d2mini = d2; if(d2mini <= d2max) break; } } } if(i > 0 && d2mini > d2max){ /* search backward */ for(left = i - 1; left >= 0; --left) { dy = yi - y[left]; dy2 = dy * dy; if(dy2 > d2mini) break; dx = x[left] - xi; d2 = dx * dx + dy2; if (d2 < d2mini) { d2mini = d2; if(d2mini <= d2max) break; } } } if(d2mini > d2max) d2max = d2mini; } } *result = d2max; } spatstat/src/mhsnoop.c0000644000176000001440000001064712333041761014573 0ustar ripleyusers#include #include #include #include "methas.h" #include "mhsnoopdef.h" /* mhsnoop.c $Revision: 1.8 $ $Date: 2013/05/27 02:09:10 $ support for visual debugger in RMH */ /* To switch on debugging code, insert the line: #define MH_DEBUG YES */ #ifndef MH_DEBUG #define MH_DEBUG NO #endif void initmhsnoop(Snoop *s, SEXP env) { s->active = isEnvironment(env); s->nextstop = 0; /* stop at iteration 0 */ s->nexttype = NO_TYPE; /* deactivated */ if(s->active) { s->env = env; s->expr = findVar(install("callbackexpr"), env); } else { s->env = s->expr = R_NilValue; } } void mhsnoop(Snoop *s, int irep, Algor *algo, State *state, Propo *prop, double numer, double denom, int *itype) { SEXP e; int npts, j; /* passed from C to R before debugger */ SEXP Sirep, Sx, Sy, Sm, Sproptype, Sproplocn, Spropmark, Spropindx; SEXP Snumer, Sdenom, Sitype; double *Px, *Py, *Pproplocn; int *Pm; /* passed from R to C after debugger */ SEXP Sinxt, Stnxt, SitypeUser; #if MH_DEBUG Rprintf("mhsnoop called at iteration %d\n", irep); #endif if(!(s->active)) return; #if MH_DEBUG Rprintf("mhsnoop is active\n"); #endif /* execute when the simulation reaches the next stopping time: a specified iteration number 'nextstop' or a specified proposal type 'nexttype' */ if(irep != s->nextstop && prop->itype != s->nexttype) return; #if MH_DEBUG Rprintf("debug triggered\n"); #endif /* environment for communication with R */ e = s->env; /* copy data to R */ /* copy iteration number */ PROTECT(Sirep = NEW_INTEGER(1)); *(INTEGER_POINTER(Sirep)) = irep; setVar(install("irep"), Sirep, e); UNPROTECT(1); /* copy (x,y) coordinates */ npts = state->npts; PROTECT(Sx = NEW_NUMERIC(npts)); PROTECT(Sy = NEW_NUMERIC(npts)); Px = NUMERIC_POINTER(Sx); Py = NUMERIC_POINTER(Sy); for(j = 0; j < npts; j++) { Px[j] = state->x[j]; Py[j] = state->y[j]; } setVar(install("xcoords"), Sx, e); setVar(install("ycoords"), Sy, e); UNPROTECT(2); /* copy marks */ if(state->ismarked) { PROTECT(Sm = NEW_INTEGER(npts)); Pm = INTEGER_POINTER(Sm); for(j = 0; j < npts; j++) { Pm[j] = state->marks[j]; } setVar(install("mcodes"), Sm, e); UNPROTECT(1); } /* proposal type */ PROTECT(Sproptype = NEW_INTEGER(1)); *(INTEGER_POINTER(Sproptype)) = prop->itype; setVar(install("proptype"), Sproptype, e); UNPROTECT(1); /* proposal coordinates */ PROTECT(Sproplocn = NEW_NUMERIC(2)); Pproplocn = NUMERIC_POINTER(Sproplocn); Pproplocn[0] = prop->u; Pproplocn[1] = prop->v; setVar(install("proplocn"), Sproplocn, e); UNPROTECT(1); /* proposal mark value */ if(state->ismarked) { PROTECT(Spropmark = NEW_INTEGER(1)); *(INTEGER_POINTER(Spropmark)) = prop->mrk; setVar(install("propmark"), Spropmark, e); UNPROTECT(1); } /* proposal point index */ PROTECT(Spropindx = NEW_INTEGER(1)); *(INTEGER_POINTER(Spropindx)) = prop->ix; setVar(install("propindx"), Spropindx, e); UNPROTECT(1); /* Metropolis-Hastings numerator and denominator */ PROTECT(Snumer = NEW_NUMERIC(1)); PROTECT(Sdenom = NEW_NUMERIC(1)); *(NUMERIC_POINTER(Snumer)) = numer; *(NUMERIC_POINTER(Sdenom)) = denom; setVar(install("numerator"), Snumer, e); setVar(install("denominator"), Sdenom, e); UNPROTECT(2); /* tentative outcome of proposal */ PROTECT(Sitype = NEW_INTEGER(1)); *(INTEGER_POINTER(Sitype)) = *itype; setVar(install("itype"), Sitype, e); UNPROTECT(1); /* ..... call visual debugger */ #if MH_DEBUG Rprintf("executing callback\n"); #endif eval(s->expr, s->env); /* update outcome of proposal */ SitypeUser = findVar(install("itype"), e); *itype = *(INTEGER_POINTER(SitypeUser)); #if MH_DEBUG Rprintf("Assigning itype = %d\n", *itype); #endif /* update stopping time */ Sinxt = findVar(install("inxt"), e); s->nextstop = *(INTEGER_POINTER(Sinxt)); Stnxt = findVar(install("tnxt"), e); s->nexttype = *(INTEGER_POINTER(Stnxt)); #if MH_DEBUG if(s->nextstop >= 0) Rprintf("Next stop: iteration %d\n", s->nextstop); if(s->nexttype >= 0) { if(s->nexttype == BIRTH) Rprintf("Next stop: first birth proposal\n"); if(s->nexttype == DEATH) Rprintf("Next stop: first death proposal\n"); if(s->nexttype == SHIFT) Rprintf("Next stop: first shift proposal\n"); } #endif return; } spatstat/src/xyseg.c0000755000176000001440000005263612333041761014256 0ustar ripleyusers/* xyseg.c Computation with line segments xysegint compute intersections between line segments $Revision: 1.19 $ $Date: 2013/09/18 04:59:17 $ */ #include #include #include #include #include #include "chunkloop.h" #define NIETS -1.0 #undef DEBUG #define INSIDE01(X,E) (X * (1.0 - X) >= -E) /* --------------- PAIRS OF PSP OBJECTS ---------------------- */ /* xysegint Determines intersections between each pair of line segments drawn from two lists of line segments. Line segments are given as x0, y0, dx, dy where (x0,y0) is the first endpoint and (dx, dy) is the vector from the first to the second endpoint. Points along a line segment are represented in parametric coordinates, (x,y) = (x0, y0) + t * (dx, dy). Output from xysegint() consists of five matrices xx, yy, ta, tb, ok. The (i,j)-th entries in these matrices give information about the intersection between the i-th segment in list 'a' and the j-th segment in list 'b'. The information is ok[i,j] = 1 if there is an intersection = 0 if not xx[i,j] = x coordinate of intersection yy[i,j] = y coordinate of intersection ta[i,j] = parameter of intersection point relative to i-th segment in list 'a' tb[i,j] = parameter of intersection point relative to j-th segment in list 'b' */ void xysegint(na, x0a, y0a, dxa, dya, nb, x0b, y0b, dxb, dyb, eps, xx, yy, ta, tb, ok) /* inputs (vectors of coordinates) */ int *na, *nb; double *x0a, *y0a, *dxa, *dya, *x0b, *y0b, *dxb, *dyb; /* input (tolerance for determinant) */ double *eps; /* outputs (matrices) */ double *xx, *yy, *ta, *tb; int *ok; { int i, j, ma, mb, ijpos, maxchunk; double determinant, absdet, diffx, diffy, tta, ttb, epsilon; ma = *na; mb = *nb; epsilon = *eps; OUTERCHUNKLOOP(j, mb, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, mb, maxchunk, 8196) { for(i = 0; i < ma; i++) { ijpos = j * ma + i; ok[ijpos] = 0; xx[ijpos] = yy[ijpos] = ta[ijpos] = tb[ijpos] = NIETS; determinant = dxb[j] * dya[i] - dyb[j] * dxa[i]; absdet = (determinant > 0) ? determinant : -determinant; #ifdef DEBUG Rprintf("i = %d, j = %d\n", i, j); Rprintf("segment A[i]: (%lf, %lf) to (%lf, %lf)\n", x0a[i], y0a[i], x0a[i] + dxa[i], y0a[i] + dya[i]); Rprintf("segment B[j]: (%lf, %lf) to (%lf, %lf)\n", x0b[j], y0b[j], x0b[j] + dxb[j], y0b[j] + dyb[j]); Rprintf("determinant=%lf\n", determinant); #endif if(absdet > epsilon) { diffx = (x0b[j] - x0a[i])/determinant; diffy = (y0b[j] - y0a[i])/determinant; ta[ijpos] = tta = - dyb[j] * diffx + dxb[j] * diffy; tb[ijpos] = ttb = - dya[i] * diffx + dxa[i] * diffy; #ifdef DEBUG Rprintf("ta = %lf, tb = %lf\n", tta, ttb); #endif if(INSIDE01(tta, epsilon) && INSIDE01(ttb, epsilon)) { /* intersection */ ok[ijpos] = 1; xx[ijpos] = x0a[i] + tta * dxa[i]; yy[ijpos] = y0a[i] + tta * dya[i]; #ifdef DEBUG Rprintf("segments intersect at (%lf, %lf)\n", xx[ijpos], yy[ijpos]); #endif } } } } } } /* Stripped-down version of xysegint that just returns logical matrix */ void xysi(na, x0a, y0a, dxa, dya, nb, x0b, y0b, dxb, dyb, eps, ok) /* inputs (vectors of coordinates) */ int *na, *nb; double *x0a, *y0a, *dxa, *dya, *x0b, *y0b, *dxb, *dyb; /* input (tolerance for determinant) */ double *eps; /* outputs (matrices) */ int *ok; { int i, j, ma, mb, ijpos, maxchunk; double determinant, absdet, diffx, diffy, tta, ttb, epsilon; ma = *na; mb = *nb; epsilon = *eps; OUTERCHUNKLOOP(j, mb, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, mb, maxchunk, 8196) { for(i = 0; i < ma; i++) { ijpos = j * ma + i; ok[ijpos] = 0; determinant = dxb[j] * dya[i] - dyb[j] * dxa[i]; absdet = (determinant > 0) ? determinant : -determinant; if(absdet > epsilon) { diffx = (x0b[j] - x0a[i])/determinant; diffy = (y0b[j] - y0a[i])/determinant; tta = - dyb[j] * diffx + dxb[j] * diffy; ttb = - dya[i] * diffx + dxa[i] * diffy; if(INSIDE01(tta, epsilon) && INSIDE01(ttb, epsilon)) { /* intersection */ ok[ijpos] = 1; } } } } } } /* Test whether there is at least one intersection */ void xysiANY(na, x0a, y0a, dxa, dya, nb, x0b, y0b, dxb, dyb, eps, ok) /* inputs (vectors of coordinates) */ int *na, *nb; double *x0a, *y0a, *dxa, *dya, *x0b, *y0b, *dxb, *dyb; /* input (tolerance for determinant) */ double *eps; /* output (single logical value) */ int *ok; { int i, j, ma, mb, maxchunk; double determinant, absdet, diffx, diffy, tta, ttb, epsilon; *ok = 0; ma = *na; mb = *nb; epsilon = *eps; OUTERCHUNKLOOP(j, mb, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, mb, maxchunk, 8196) { for(i = 0; i < ma; i++) { determinant = dxb[j] * dya[i] - dyb[j] * dxa[i]; absdet = (determinant > 0) ? determinant : -determinant; if(absdet > epsilon) { diffx = (x0b[j] - x0a[i])/determinant; diffy = (y0b[j] - y0a[i])/determinant; tta = - dyb[j] * diffx + dxb[j] * diffy; ttb = - dya[i] * diffx + dxa[i] * diffy; if(INSIDE01(tta, epsilon) && INSIDE01(ttb, epsilon)) { /* intersection */ *ok = 1; return; } } } } } } /* Analogue of xysegint when segments in list 'a' are infinite vertical lines */ void xysegVslice(na, xa, nb, x0b, y0b, dxb, dyb, eps, yy, ok) /* inputs (vectors of coordinates) */ int *na, *nb; double *xa, *x0b, *y0b, *dxb, *dyb; /* input (tolerance for determinant) */ double *eps; /* outputs (matrices) */ double *yy; int *ok; { int i, j, ma, mb, ijpos, maxchunk; double diffx0, diffx1, width, abswidth, epsilon; int notvertical; ma = *na; mb = *nb; epsilon = *eps; OUTERCHUNKLOOP(j, mb, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, mb, maxchunk, 8196) { /* determine whether segment j is nearly vertical */ width = dxb[j]; abswidth = (width > 0) ? width : -width; notvertical = (abswidth <= epsilon); for(i = 0; i < ma; i++) { ijpos = j * ma + i; ok[ijpos] = 0; yy[ijpos] = NIETS; /* test whether vertical line i separates endpoints of segment j */ diffx0 = xa[i] - x0b[j]; diffx1 = diffx0 - width; if(diffx0 * diffx1 <= 0) { /* intersection */ ok[ijpos] = 1; /* compute y-coordinate of intersection point */ if(notvertical) { yy[ijpos] = y0b[j] + diffx0 * dyb[j]/width; } else { /* vertical or nearly-vertical segment: pick midpoint */ yy[ijpos] = y0b[j] + dyb[j]/2.0; } } } } } } /* -------------- ONE PSP OBJECT ---------------------------- */ /* Similar to xysegint, but computes intersections between all pairs of segments in a single list, excluding the diagonal comparisons of course */ void xysegXint(n, x0, y0, dx, dy, eps, xx, yy, ti, tj, ok) /* inputs (vectors of coordinates) */ int *n; double *x0, *y0, *dx, *dy; /* input (tolerance for determinant) */ double *eps; /* outputs (matrices) */ double *xx, *yy, *ti, *tj; int *ok; { int i, j, m, mm1, ijpos, jipos, iipos, maxchunk; double determinant, absdet, diffx, diffy, tti, ttj, epsilon; m = *n; epsilon = *eps; mm1 = m - 1; OUTERCHUNKLOOP(j, mm1, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, mm1, maxchunk, 8196) { for(i = j+1; i < m; i++) { ijpos = j * m + i; jipos = i * m + j; ok[ijpos] = ok[jipos] = 0; xx[ijpos] = yy[ijpos] = ti[ijpos] = ti[jipos] = NIETS; xx[jipos] = yy[jipos] = tj[ijpos] = tj[jipos] = NIETS; determinant = dx[j] * dy[i] - dy[j] * dx[i]; absdet = (determinant > 0) ? determinant : -determinant; if(absdet > epsilon) { diffx = (x0[j] - x0[i])/determinant; diffy = (y0[j] - y0[i])/determinant; ti[ijpos] = tti = - dy[j] * diffx + dx[j] * diffy; tj[ijpos] = ttj = - dy[i] * diffx + dx[i] * diffy; tj[jipos] = ti[ijpos]; ti[jipos] = tj[ijpos]; if(INSIDE01(tti, epsilon) && INSIDE01(ttj, epsilon)) { ok[ijpos] = ok[jipos] = 1; xx[ijpos] = xx[jipos] = x0[i] + tti * dx[i]; yy[ijpos] = yy[jipos] = y0[i] + tti * dy[i]; } } } } } /* assign diagonal */ for(i = 0; i < m; i++) { iipos = i * m + i; ok[iipos] = 0; xx[iipos] = yy[iipos] = ti[iipos] = tj[iipos] = NIETS; } } /* Reduced version of xysegXint that returns logical matrix 'ok' only */ void xysxi(n, x0, y0, dx, dy, eps, ok) /* inputs (vectors of coordinates) */ int *n; double *x0, *y0, *dx, *dy; /* input (tolerance for determinant) */ double *eps; /* outputs (matrices) */ int *ok; { int i, j, m, mm1, ijpos, jipos, iipos, maxchunk; double determinant, absdet, diffx, diffy, tti, ttj, epsilon; m = *n; epsilon = *eps; mm1 = m - 1; OUTERCHUNKLOOP(j, mm1, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, mm1, maxchunk, 8196) { for(i = j+1; i < m; i++) { ijpos = j * m + i; jipos = i * m + j; ok[ijpos] = ok[jipos] = 0; determinant = dx[j] * dy[i] - dy[j] * dx[i]; absdet = (determinant > 0) ? determinant : -determinant; if(absdet > epsilon) { diffx = (x0[j] - x0[i])/determinant; diffy = (y0[j] - y0[i])/determinant; tti = - dy[j] * diffx + dx[j] * diffy; ttj = - dy[i] * diffx + dx[i] * diffy; if(INSIDE01(tti, epsilon) && INSIDE01(ttj, epsilon)) { ok[ijpos] = ok[jipos] = 1; } } } } } /* assign diagonal */ for(i = 0; i < m; i++) { iipos = i * m + i; ok[iipos] = 0; } } /* ---------------------- ONE CLOSED POLYGON ------------------------ */ /* Identify self-intersections in a closed polygon (Similar to xysegXint, but does not compare segments which are cyclically adjacent in the list) */ void Cxypolyselfint(n, x0, y0, dx, dy, eps, xx, yy, ti, tj, ok) /* inputs (vectors of coordinates) */ int *n; double *x0, *y0, *dx, *dy; /* input (tolerance for determinant) */ double *eps; /* outputs (matrices) */ double *xx, *yy, *ti, *tj; int *ok; { int i, j, k, m, m2, mm1, mm2, mstop, ijpos, jipos, maxchunk; double determinant, absdet, diffx, diffy, tti, ttj, epsilon; m = *n; epsilon = *eps; m2 = m * m; /* initialise matrices */ for(k = 0; k < m2; k++) { ok[k] = 0; xx[k] = yy[k] = ti[k] = tj[k] = NIETS; } if(m <= 2) return; /* Compare j with j+2, j+3, ...., m-1 Don't compare 0 with m-1 */ mm1 = m - 1; mm2 = m - 2; OUTERCHUNKLOOP(j, mm2, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, mm2, maxchunk, 8196) { mstop = (j > 0) ? m : mm1; for(i = j+2; i < mstop; i++) { ijpos = j * m + i; jipos = i * m + j; determinant = dx[j] * dy[i] - dy[j] * dx[i]; absdet = (determinant > 0) ? determinant : -determinant; if(absdet > epsilon) { diffx = (x0[j] - x0[i])/determinant; diffy = (y0[j] - y0[i])/determinant; ti[ijpos] = tti = - dy[j] * diffx + dx[j] * diffy; tj[ijpos] = ttj = - dy[i] * diffx + dx[i] * diffy; tj[jipos] = ti[ijpos]; ti[jipos] = tj[ijpos]; if(INSIDE01(tti, epsilon) && INSIDE01(ttj, epsilon)) { ok[ijpos] = ok[jipos] = 1; xx[ijpos] = xx[jipos] = x0[i] + tti * dx[i]; yy[ijpos] = yy[jipos] = y0[i] + tti * dy[i]; } } } } } } /* Just determines whether there is self-intersection (exits quicker & uses less space) */ void xypsi(n, x0, y0, dx, dy, xsep, ysep, eps, proper, answer) /* inputs (vectors of coordinates) */ int *n; double *x0, *y0, *dx, *dy; /* inputs (distances beyond which intersection is impossible) */ double *xsep, *ysep; /* input (tolerance for determinant) */ double *eps; /* input (flag) */ int *proper; /* output */ int *answer; { int i, j, m, mm1, mm2, mstop, prop, maxchunk; double determinant, absdet, diffx, diffy, tti, ttj, epsilon; double Xsep, Ysep; m = *n; prop = *proper; Xsep = *xsep; Ysep = *ysep; epsilon = *eps; *answer = 0; if(m <= 2) return; /* Compare j with j+2, j+3, ...., m-1 Don't compare 0 with m-1 */ mm1 = m - 1; mm2 = m - 2; OUTERCHUNKLOOP(j, mm2, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, mm2, maxchunk, 8196) { mstop = (j > 0) ? m : mm1; for(i = j+2; i < mstop; i++) { diffx = x0[j] - x0[i]; diffy = y0[j] - y0[i]; if(diffx < Xsep && diffx > -Xsep && diffy < Ysep && diffy > -Ysep) { determinant = dx[j] * dy[i] - dy[j] * dx[i]; absdet = (determinant > 0) ? determinant : -determinant; if(absdet > epsilon) { diffx = diffx/determinant; diffy = diffy/determinant; tti = - dy[j] * diffx + dx[j] * diffy; ttj = - dy[i] * diffx + dx[i] * diffy; if(INSIDE01(tti, epsilon) && INSIDE01(ttj, epsilon)) { /* intersection occurs */ if(prop == 0 || (tti != 0.0 && tti != 1.0) || (ttj != 0.0 && ttj != 1.0)) { /* proper intersection */ *answer = 1; return; } } } } } } } } /* ---------------- .Call INTERFACE --------------------------- Analogues of functions above, but using the .Call interface and dynamic storage allocation, to save space. */ SEXP Cxysegint(SEXP x0a, SEXP y0a, SEXP dxa, SEXP dya, SEXP x0b, SEXP y0b, SEXP dxb, SEXP dyb, SEXP eps) { int i, j, k, na, nb; double determinant, absdet, diffx, diffy, tta, ttb; int nout, noutmax, newmax, maxchunk; double epsilon; double *x0A, *y0A, *dxA, *dyA, *x0B, *y0B, *dxB, *dyB; double *ta, *tb, *x, *y; int *ia, *jb; SEXP out, iAout, jBout, tAout, tBout, xout, yout; double *tAoutP, *tBoutP, *xoutP, *youtP; int *iAoutP, *jBoutP; PROTECT(x0a = AS_NUMERIC(x0a)); PROTECT(y0a = AS_NUMERIC(y0a)); PROTECT(dxa = AS_NUMERIC(dxa)); PROTECT(dya = AS_NUMERIC(dya)); PROTECT(x0b = AS_NUMERIC(x0b)); PROTECT(y0b = AS_NUMERIC(y0b)); PROTECT(dxb = AS_NUMERIC(dxb)); PROTECT(dyb = AS_NUMERIC(dyb)); PROTECT(eps = AS_NUMERIC(eps)); /* that's 9 protected */ /* get pointers */ x0A = NUMERIC_POINTER(x0a); y0A = NUMERIC_POINTER(y0a); dxA = NUMERIC_POINTER(dxa); dyA = NUMERIC_POINTER(dya); x0B = NUMERIC_POINTER(x0b); y0B = NUMERIC_POINTER(y0b); dxB = NUMERIC_POINTER(dxb); dyB = NUMERIC_POINTER(dyb); /* determine length of vectors */ na = LENGTH(x0a); nb = LENGTH(x0b); epsilon = *(NUMERIC_POINTER(eps)); /* guess amount of storage required for output */ noutmax = (na > nb) ? na : nb; nout = 0; ia = (int *) R_alloc(noutmax, sizeof(int)); jb = (int *) R_alloc(noutmax, sizeof(int)); ta = (double *) R_alloc(noutmax, sizeof(double)); tb = (double *) R_alloc(noutmax, sizeof(double)); x = (double *) R_alloc(noutmax, sizeof(double)); y = (double *) R_alloc(noutmax, sizeof(double)); /* scan data and collect intersections */ OUTERCHUNKLOOP(j, nb, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nb, maxchunk, 8196) { for(i = 0; i < na; i++) { determinant = dxB[j] * dyA[i] - dyB[j] * dxA[i]; absdet = (determinant > 0) ? determinant : -determinant; #ifdef DEBUG Rprintf("i = %d, j = %d\n", i, j); Rprintf("segment A[i]: (%lf, %lf) to (%lf, %lf)\n", x0A[i], y0A[i], x0A[i] + dxA[i], y0A[i] + dyA[i]); Rprintf("segment B[j]: (%lf, %lf) to (%lf, %lf)\n", x0B[j], y0B[j], x0B[j] + dxB[j], y0B[j] + dyB[j]); Rprintf("determinant=%lf\n", determinant); #endif if(absdet > epsilon) { diffx = (x0B[j] - x0A[i])/determinant; diffy = (y0B[j] - y0A[i])/determinant; tta = - dyB[j] * diffx + dxB[j] * diffy; ttb = - dyA[i] * diffx + dxA[i] * diffy; #ifdef DEBUG Rprintf("ta = %lf, tb = %lf\n", tta, ttb); #endif if(INSIDE01(tta, epsilon) && INSIDE01(ttb, epsilon)) { /* intersection */ if(nout >= noutmax) { /* storage overflow - increase space */ newmax = 4 * noutmax; ia = (int *) S_realloc((char *) ia, newmax, noutmax, sizeof(int)); jb = (int *) S_realloc((char *) jb, newmax, noutmax, sizeof(int)); ta = (double *) S_realloc((char *) ta, newmax, noutmax, sizeof(double)); tb = (double *) S_realloc((char *) tb, newmax, noutmax, sizeof(double)); x = (double *) S_realloc((char *) x, newmax, noutmax, sizeof(double)); y = (double *) S_realloc((char *) y, newmax, noutmax, sizeof(double)); noutmax = newmax; } ta[nout] = tta; tb[nout] = ttb; ia[nout] = i; jb[nout] = j; x[nout] = x0A[i] + tta * dxA[i]; y[nout] = y0A[i] + tta * dyA[i]; #ifdef DEBUG Rprintf("segments intersect at (%lf, %lf)\n", x[nout], y[nout]); #endif ++nout; } } } } } /* pack up */ PROTECT(iAout = NEW_INTEGER(nout)); PROTECT(jBout = NEW_INTEGER(nout)); PROTECT(tAout = NEW_NUMERIC(nout)); PROTECT(tBout = NEW_NUMERIC(nout)); PROTECT(xout = NEW_NUMERIC(nout)); PROTECT(yout = NEW_NUMERIC(nout)); /* 9 + 6 = 15 protected */ iAoutP = INTEGER_POINTER(iAout); jBoutP = INTEGER_POINTER(jBout); tAoutP = NUMERIC_POINTER(tAout); tBoutP = NUMERIC_POINTER(tBout); xoutP = NUMERIC_POINTER(xout); youtP = NUMERIC_POINTER(yout); for(k = 0; k < nout; k++) { iAoutP[k] = ia[k]; jBoutP[k] = jb[k]; tAoutP[k] = ta[k]; tBoutP[k] = tb[k]; xoutP[k] = x[k]; youtP[k] = y[k]; } PROTECT(out = NEW_LIST(6)); /* 15 + 1 = 16 protected */ SET_VECTOR_ELT(out, 0, iAout); SET_VECTOR_ELT(out, 1, jBout); SET_VECTOR_ELT(out, 2, tAout); SET_VECTOR_ELT(out, 3, tBout); SET_VECTOR_ELT(out, 4, xout); SET_VECTOR_ELT(out, 5, yout); UNPROTECT(16); return(out); } /* Similar to Cxysegint, but computes intersections between all pairs of segments in a single list, excluding the diagonal comparisons of course */ SEXP CxysegXint(SEXP x0, SEXP y0, SEXP dx, SEXP dy, SEXP eps) { int i, j, k, n, n1; double determinant, absdet, diffx, diffy, tti, ttj; int nout, noutmax, newmax, maxchunk; double epsilon; double *X0, *Y0, *Dx, *Dy; double *ti, *tj, *x, *y; int *ii, *jj; SEXP out, iout, jout, tiout, tjout, xout, yout; double *tioutP, *tjoutP, *xoutP, *youtP; int *ioutP, *joutP; PROTECT(x0 = AS_NUMERIC(x0)); PROTECT(y0 = AS_NUMERIC(y0)); PROTECT(dx = AS_NUMERIC(dx)); PROTECT(dy = AS_NUMERIC(dy)); PROTECT(eps = AS_NUMERIC(eps)); /* that's 5 protected */ /* get pointers */ X0 = NUMERIC_POINTER(x0); Y0 = NUMERIC_POINTER(y0); Dx = NUMERIC_POINTER(dx); Dy = NUMERIC_POINTER(dy); /* determine length of vectors */ n = LENGTH(x0); epsilon = *(NUMERIC_POINTER(eps)); /* guess amount of storage required for output */ noutmax = n; nout = 0; ii = (int *) R_alloc(noutmax, sizeof(int)); jj = (int *) R_alloc(noutmax, sizeof(int)); ti = (double *) R_alloc(noutmax, sizeof(double)); tj = (double *) R_alloc(noutmax, sizeof(double)); x = (double *) R_alloc(noutmax, sizeof(double)); y = (double *) R_alloc(noutmax, sizeof(double)); /* scan data */ n1 = n - 1; OUTERCHUNKLOOP(j, n1, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, n1, maxchunk, 8196) { for(i = j+1; i < n; i++) { determinant = Dx[j] * Dy[i] - Dy[j] * Dx[i]; absdet = (determinant > 0) ? determinant : -determinant; if(absdet > epsilon) { diffx = (X0[j] - X0[i])/determinant; diffy = (Y0[j] - Y0[i])/determinant; tti = - Dy[j] * diffx + Dx[j] * diffy; ttj = - Dy[i] * diffx + Dx[i] * diffy; if(INSIDE01(tti,epsilon) && INSIDE01(ttj,epsilon)) { /* intersection */ if(nout >= noutmax) { /* storage overflow - increase space */ newmax = 4 * noutmax; ii = (int *) S_realloc((char *) ii, newmax, noutmax, sizeof(int)); jj = (int *) S_realloc((char *) jj, newmax, noutmax, sizeof(int)); ti = (double *) S_realloc((char *) ti, newmax, noutmax, sizeof(double)); tj = (double *) S_realloc((char *) tj, newmax, noutmax, sizeof(double)); x = (double *) S_realloc((char *) x, newmax, noutmax, sizeof(double)); y = (double *) S_realloc((char *) y, newmax, noutmax, sizeof(double)); noutmax = newmax; } ti[nout] = tti; tj[nout] = ttj; ii[nout] = i; jj[nout] = j; x[nout] = X0[i] + tti * Dx[i]; y[nout] = Y0[i] + tti * Dy[i]; ++nout; } } } } } /* pack up */ PROTECT(iout = NEW_INTEGER(nout)); PROTECT(jout = NEW_INTEGER(nout)); PROTECT(tiout = NEW_NUMERIC(nout)); PROTECT(tjout = NEW_NUMERIC(nout)); PROTECT(xout = NEW_NUMERIC(nout)); PROTECT(yout = NEW_NUMERIC(nout)); /* 5 + 6 = 11 protected */ ioutP = INTEGER_POINTER(iout); joutP = INTEGER_POINTER(jout); tioutP = NUMERIC_POINTER(tiout); tjoutP = NUMERIC_POINTER(tjout); xoutP = NUMERIC_POINTER(xout); youtP = NUMERIC_POINTER(yout); for(k = 0; k < nout; k++) { ioutP[k] = ii[k]; joutP[k] = jj[k]; tioutP[k] = ti[k]; tjoutP[k] = tj[k]; xoutP[k] = x[k]; youtP[k] = y[k]; } PROTECT(out = NEW_LIST(6)); /* 11 + 1 = 12 protected */ SET_VECTOR_ELT(out, 0, iout); SET_VECTOR_ELT(out, 1, jout); SET_VECTOR_ELT(out, 2, tiout); SET_VECTOR_ELT(out, 3, tjout); SET_VECTOR_ELT(out, 4, xout); SET_VECTOR_ELT(out, 5, yout); UNPROTECT(12); return(out); } spatstat/src/knndistance.c0000644000176000001440000001043312333041761015402 0ustar ripleyusers/* knndistance.c K-th Nearest Neighbour Distances between points Copyright (C) Adrian Baddeley, Jens Oehlschlaegel and Rolf Turner 2000-2013 Licence: GNU Public Licence >= 2 $Revision: 1.8 $ $Date: 2013/12/10 03:29:45 $ Function definitions are #included from knndist.h and knnXdist.h THE FOLLOWING FUNCTIONS ASSUME THAT y IS SORTED IN ASCENDING ORDER SINGLE LIST: knndsort k-th nearest neighbour distances knnwhich k-th nearest neighbours knnsort k-th nearest neighbours and their distances ONE LIST TO ANOTHER LIST: knnXdist Nearest neighbour distance from one list to another knnXwhich Nearest neighbour ID from one list to another knnX Nearest neighbour ID & distance from one list to another ONE LIST TO ANOTHER OVERLAPPING LIST: knnXEdist Nearest neighbour distance from one list to another, overlapping knnXEwhich Nearest neighbour ID from one list to another, overlapping knnXE Nearest neighbour ID & distance */ #undef SPATSTAT_DEBUG #include #include #include #include "yesno.h" double sqrt(); /* THE FOLLOWING CODE ASSUMES THAT y IS SORTED IN ASCENDING ORDER */ /* ------------------- one point pattern X --------------------- */ /* knndsort nearest neighbours 1:kmax returns distances only */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME knndsort #define DIST #include "knndist.h" /* knnwhich nearest neighbours 1:kmax returns identifiers only */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME knnwhich #define WHICH #include "knndist.h" /* knnsort nearest neighbours 1:kmax returns distances and indices */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME knnsort #define DIST #define WHICH #include "knndist.h" /* --------------- two distinct point patterns X and Y --------------- */ /* general interface */ void knnXinterface(n1, x1, y1, id1, n2, x2, y2, id2, kmax, exclude, wantdist, wantwhich, nnd, nnwhich, huge) /* inputs */ int *n1, *n2; double *x1, *y1, *x2, *y2, *huge; int *id1, *id2; int *kmax; /* options */ int *exclude, *wantdist, *wantwhich; /* outputs */ double *nnd; int *nnwhich; /* some inputs + outputs are not used in all functions */ { void knnX(), knnXdist(), knnXwhich(); void knnXE(), knnXEdist(), knnXEwhich(); int ex, di, wh; ex = (*exclude != 0); di = (*wantdist != 0); wh = (*wantwhich != 0); if(!ex) { if(di && wh) { knnX(n1, x1, y1, id1, n2, x2, y2, id2, kmax, nnd, nnwhich, huge); } else if(di) { knnXdist(n1, x1, y1, id1, n2, x2, y2, id2, kmax, nnd, nnwhich, huge); } else if(wh) { knnXwhich(n1, x1, y1, id1, n2, x2, y2, id2, kmax, nnd, nnwhich, huge); } } else { if(di && wh) { knnXE(n1, x1, y1, id1, n2, x2, y2, id2, kmax, nnd, nnwhich, huge); } else if(di) { knnXEdist(n1, x1, y1, id1, n2, x2, y2, id2, kmax, nnd, nnwhich, huge); } else if(wh) { knnXEwhich(n1, x1, y1, id1, n2, x2, y2, id2, kmax, nnd, nnwhich, huge); } } } /* Turn off the debugging tracer in knnXdist.h */ #undef TRACER /* knnXdist returns distances only */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME knnXdist #define DIST #include "knnXdist.h" /* knnXwhich returns identifiers only */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME knnXwhich #define WHICH #include "knnXdist.h" /* knnX returns distances and indices */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME knnX #define DIST #define WHICH #include "knnXdist.h" /* --------------- overlapping point patterns X and Y --------------- */ /* knnXEdist returns distances only */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME knnXEdist #define DIST #define EXCLUDE #include "knnXdist.h" /* knnXEwhich returns identifiers only */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME knnXEwhich #define WHICH #define EXCLUDE #include "knnXdist.h" /* knnXE returns distances and indices */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME knnXE #define DIST #define WHICH #define EXCLUDE #include "knnXdist.h" spatstat/src/geom3.h0000755000176000001440000000041012333041761014115 0ustar ripleyusers/* $Revision: 1.1 $ $Date: 2009/11/04 23:54:15 $ Definitions for 3D geometrical structures */ typedef struct Point { double x; double y; double z; } Point; typedef struct Box { double x0; double x1; double y0; double y1; double z0; double z1; } Box; spatstat/src/lineardisc.c0000755000176000001440000001732612333041761015231 0ustar ripleyusers#include #include #include "chunkloop.h" /* lineardisc.c Disc of radius r in linear network $Revision: 1.10 $ $Date: 2013/05/27 02:09:10 $ */ #define DPATH(I,J) dpath[(J) + Nv * (I)] #include "yesno.h" #undef DEBUG void lineardisc(f, seg, /* centre of disc (local coords) */ r, /* radius of disc */ nv, xv, yv, /* network vertices */ ns, from, to, /* segments */ dpath, /* shortest path distances between vertices */ lengths, /* segment lengths */ allinside, boundary, dxv, nendpoints) int *nv, *ns; int *from, *to; /* integer vectors (mappings) */ double *f, *r; int *seg; double *xv, *yv; /* vectors of coordinates of vertices */ double *dpath; /* matrix of shortest path distances between vertices */ double *lengths; /* vector of segment lengths */ /* OUTPUTS */ int *allinside, *boundary; /* vectors of status for each segment */ double *dxv; /* vector of distances for each vertex */ int *nendpoints; { int Nv, Ns; double f0, rad; int seg0; int i, A, B, fromi, toi, allin, bdry, reachable, nends, maxchunk; double length0, dxA, dxB, dxAvi, dxBvi, residue; double *resid; int *covered; Nv = *nv; Ns = *ns; f0 = *f; seg0 = *seg; rad = *r; /* endpoints of segment containing centre */ A = from[seg0]; B = to[seg0]; /* distances from x to A and B */ length0 = lengths[seg0]; dxA = f0 * length0; dxB = (1-f0) * length0; /* visit vertices */ covered = (int *) R_alloc((size_t) Nv, sizeof(int)); resid = (double *) R_alloc((size_t) Nv, sizeof(double)); OUTERCHUNKLOOP(i, Nv, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Nv, maxchunk, 16384) { /* distance going through A */ dxAvi = dxA + DPATH(A,i); /* distance going through B */ dxBvi = dxB + DPATH(B,i); /* shortest path distance to this vertex */ dxv[i] = (dxAvi < dxBvi) ? dxAvi : dxBvi; /* distance left to 'spend' from this vertex */ residue = rad - dxv[i]; resid[i] = (residue > 0)? residue : 0; /* determine whether vertex i is inside the disc of radius r */ covered[i] = (residue >= 0); } } /* Now visit line segments. */ nends = 0; OUTERCHUNKLOOP(i, Ns, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Ns, maxchunk, 16384) { /* Determine which line segments are completely inside the disc, and which cross the boundary. */ if(i == seg0) { /* initial segment: disc starts from centre (x, y) */ allin = covered[A] && covered[B]; bdry = !allin; if(bdry) { if(!covered[A]) nends++; if(!covered[B]) nends++; } } else { /* another segment: disc extends in from either endpoint */ fromi = from[i]; toi = to[i]; reachable = (covered[fromi] || covered[toi]); if(reachable) { allin = covered[fromi] && covered[toi] && (resid[fromi] + resid[toi] >= lengths[i]); bdry = !allin; } else allin = bdry = NO; if(bdry) { if(covered[fromi]) nends++; if(covered[toi]) nends++; } } allinside[i] = allin; boundary[i] = bdry; } } *nendpoints = nends; } /* ------------------------------------------------- */ /* count endpoints of several discs in a network */ /* ------------------------------------------------- */ void Ccountends(np, f, seg, /* centres of discs (local coords) */ r, /* radii of discs */ nv, xv, yv, /* network vertices */ ns, from, to, /* network segments */ dpath, /* shortest path distances between vertices */ lengths, /* segment lengths */ toler, /* tolerance */ nendpoints /* output counts of endpoints */ ) int *np, *nv, *ns; int *from, *to; /* integer vectors (mappings) */ double *f, *r; int *seg; double *xv, *yv; /* vectors of coordinates of vertices */ double *dpath; /* matrix of shortest path distances between vertices */ double *lengths; /* vector of segment lengths */ double *toler; /* tolerance for merging endpoints and vertices */ /* OUTPUT */ int *nendpoints; { int Np, Nv, Ns; double f0, rad; int seg0; int i, m, A, B, fromi, toi, reachable, nends, maxchunk, covfrom, covto, allin; double length0, dxA, dxB, dxAvi, dxBvi, dxvi, residue, resfrom, resto, tol; double *resid; int *covered, *terminal; Np = *np; Nv = *nv; Ns = *ns; tol = *toler; covered = (int *) R_alloc((size_t) Nv, sizeof(int)); terminal = (int *) R_alloc((size_t) Nv, sizeof(int)); resid = (double *) R_alloc((size_t) Nv, sizeof(double)); /* loop over centre points */ OUTERCHUNKLOOP(m, Np, maxchunk, 256) { R_CheckUserInterrupt(); INNERCHUNKLOOP(m, Np, maxchunk, 256) { f0 = f[m]; seg0 = seg[m]; rad = r[m]; #ifdef DEBUG Rprintf("\nCentre point %d lies in segment %d\n", m, seg0); #endif /* endpoints of segment containing centre */ A = from[seg0]; B = to[seg0]; /* distances from centre to A and B */ length0 = lengths[seg0]; dxA = f0 * length0; dxB = (1-f0) * length0; nends = 0; /* visit vertices */ for(i = 0; i < Nv; i++) { /* distance going through A */ dxAvi = dxA + DPATH(A,i); /* distance going through B */ dxBvi = dxB + DPATH(B,i); /* shortest path distance to this vertex */ dxvi = (dxAvi < dxBvi) ? dxAvi : dxBvi; /* distance left to 'spend' from this vertex */ residue = rad - dxvi; if(residue > tol) { resid[i] = residue; covered[i] = YES; terminal[i] = NO; } else if(residue < -tol) { resid[i] = 0; covered[i] = terminal[i] = NO; } else { /* vertex is within 'tol' of an endpoint - deem it to be one */ resid[i] = 0; covered[i] = terminal[i] = YES; /* vertex is an endpoint of disc */ ++nends; } } #ifdef DEBUG Rprintf("%d terminal endpoints\n", nends); #endif /* Now visit line segments to count any endpoints that are interior to the segments. */ for(i = 0; i < Ns; i++) { /* Determine which line segments are completely inside the disc, and which cross the boundary. */ if(i == seg0) { /* initial segment: disc starts from (x0, y0) */ if(!covered[A]) nends++; if(!covered[B]) nends++; #ifdef DEBUG if(!covered[A]) Rprintf("A not covered\n"); if(!covered[B]) Rprintf("B not covered\n"); #endif } else { /* another segment: disc extends in from either endpoint */ fromi = from[i]; toi = to[i]; covfrom = covered[fromi]; covto = covered[toi]; resfrom = resid[fromi]; resto = resid[toi]; reachable = covfrom || covto; #ifdef DEBUG residue = resfrom + resto - lengths[i]; Rprintf("%d: %s %s: %lf + %lf - %lf = %lf sign %s\n", i, (terminal[fromi]) ? "T" : ((covfrom) ? "Y" : "N"), (terminal[toi]) ? "T" : ((covto) ? "Y" : "N"), resfrom, resto, lengths[i], residue, (residue < 0) ? "-" : ((residue > 0) ? "+" : "0")); #endif if(reachable) { residue = resfrom + resto - lengths[i]; allin = covfrom && covto && (residue >= 0); #ifdef DEBUG if(allin) { Rprintf("Covered\n"); } else if((terminal[fromi] || terminal[toi]) && (residue >= - tol * lengths[i])) { Rprintf("Deemed to be covered\n"); } else Rprintf("Reachable\n"); #endif allin = allin || ((terminal[fromi] || terminal[toi]) && (residue >= - tol)); if(!allin) { /* segment is not entirely covered by disc - infer endpoint(s) in interior of segment */ if(covfrom && !terminal[fromi]) nends++; if(covto && !terminal[toi]) nends++; #ifdef DEBUG if(covfrom && !terminal[fromi]) Rprintf("fromi => end\n"); if(covto && !terminal[toi]) Rprintf("toi => end\n"); #endif } } } } nendpoints[m] = nends; } } } spatstat/src/nndistance.c0000755000176000001440000001054512333041761015236 0ustar ripleyusers/* nndistance.c Nearest Neighbour Distances between points Copyright (C) Adrian Baddeley, Jens Oehlschlaegel and Rolf Turner 2000-2012 Licence: GNU Public Licence >= 2 $Revision: 1.21 $ $Date: 2013/11/03 03:36:27 $ THE FOLLOWING FUNCTIONS ASSUME THAT y IS SORTED IN ASCENDING ORDER SINGLE LIST: nndistsort Nearest neighbour distances nnwhichsort Nearest neighbours nnsort Nearest neighbours & distances ONE LIST TO ANOTHER LIST: nnXdist Nearest neighbour distance from one list to another nnXwhich Nearest neighbour ID from one list to another nnX Nearest neighbour ID & distance from one list to another ONE LIST TO ANOTHER OVERLAPPING LIST: nnXEdist Nearest neighbour distance from one list to another, overlapping nnXEwhich Nearest neighbour ID from one list to another, overlapping nnXE Nearest neighbour ID & distance */ #undef SPATSTAT_DEBUG #include #include #include #include "yesno.h" double sqrt(); /* THE FOLLOWING CODE ASSUMES THAT y IS SORTED IN ASCENDING ORDER */ /* ------------------- one point pattern X --------------------- */ /* nndistsort: nearest neighbour distances */ #undef FNAME #undef DIST #undef WHICH #define FNAME nndistsort #define DIST #include "nndist.h" /* nnwhichsort: id of nearest neighbour */ #undef FNAME #undef DIST #undef WHICH #define FNAME nnwhichsort #define WHICH #include "nndist.h" /* nnsort: distance & id of nearest neighbour */ #undef FNAME #undef DIST #undef WHICH #define FNAME nnsort #define DIST #define WHICH #include "nndist.h" /* --------------- two distinct point patterns X and Y ----------------- */ /* general interface */ void nnXinterface(n1, x1, y1, id1, n2, x2, y2, id2, exclude, wantdist, wantwhich, nnd, nnwhich, huge) /* inputs */ int *n1, *n2; double *x1, *y1, *x2, *y2, *huge; int *id1, *id2; /* options */ int *exclude, *wantdist, *wantwhich; /* outputs */ double *nnd; int *nnwhich; { void nnX(), nnXdist(), nnXwhich(); void nnXE(), nnXEdist(), nnXEwhich(); int ex, di, wh; ex = (*exclude != 0); di = (*wantdist != 0); wh = (*wantwhich != 0); if(!ex) { if(di && wh) { nnX(n1, x1, y1, id1, n2, x2, y2, id2, nnd, nnwhich, huge); } else if(di) { nnXdist(n1, x1, y1, id1, n2, x2, y2, id2, nnd, nnwhich, huge); } else if(wh) { nnXwhich(n1, x1, y1, id1, n2, x2, y2, id2, nnd, nnwhich, huge); } } else { if(di && wh) { nnXE(n1, x1, y1, id1, n2, x2, y2, id2, nnd, nnwhich, huge); } else if(di) { nnXEdist(n1, x1, y1, id1, n2, x2, y2, id2, nnd, nnwhich, huge); } else if(wh) { nnXEwhich(n1, x1, y1, id1, n2, x2, y2, id2, nnd, nnwhich, huge); } } } /* nnXdist: nearest neighbour distance (from each point of X to the nearest point of Y) */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME nnXdist #define DIST #include "nndistX.h" /* nnXwhich: nearest neighbour id */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME nnXwhich #define WHICH #include "nndistX.h" /* nnX: nearest neighbour distance and id */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME nnX #define DIST #define WHICH #include "nndistX.h" /* --------------- two point patterns X and Y with common points --------- */ /* Code numbers id1, id2 are attached to the patterns X and Y respectively, such that x1[i], y1[i] and x2[j], y2[j] are the same point iff id1[i] = id2[j]. */ /* nnXEdist: similar to nnXdist but allows X and Y to include common points (which are not to be counted as neighbours) */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME nnXEdist #define DIST #define EXCLUDE #include "nndistX.h" /* nnXEwhich: similar to nnXwhich but allows X and Y to include common points (which are not to be counted as neighbours) */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME nnXEwhich #define WHICH #define EXCLUDE #include "nndistX.h" /* nnXE: similar to nnX but allows X and Y to include common points (which are not to be counted as neighbours) */ #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE #define FNAME nnXE #define DIST #define WHICH #define EXCLUDE #include "nndistX.h" spatstat/src/dinfty.c0000755000176000001440000000677612333041761014420 0ustar ripleyusers/* dinfty.c $Revision: 1.6 $ $Date: 2011/09/20 07:42:18 $ Code by Dominic Schuhmacher Modified by Adrian Baddeley */ #include #include #define COST(I,J) (d)[n * (J) + (I)] int arraymax(int *a, int n); void swap(int i, int j, int *a); int largestmobpos(int *mobile, int *current, int *collectvals, int n); /* ------------ The main function ----------------------------- */ void dinfty_R(int *d, int *num, int *assignment) { int i,j; /* indices */ int lmp, lmq; /* largest mobile position and its neighbor */ int newmax; int n, currmin; int *current, *travel, *mobile, *assig, *distrelev, *collectvals; n = *num; /* scratch space */ assig = (int *) R_alloc((long) n, sizeof(int)); travel = (int *) R_alloc((long) n, sizeof(int)); mobile = (int *) R_alloc((long) n, sizeof(int)); current = (int *) R_alloc((long) n, sizeof(int)); distrelev = (int *) R_alloc((long) n, sizeof(int)); collectvals = (int *) R_alloc((long) (n * n), sizeof(int)); /* */ /* We use the Johnson-Trotter Algorithm for listing permutations */ /* */ /* Initialize the algorithm */ for (i = 0; i < n; i++) { travel[i] = -1; /* all numbers traveling to the left */ mobile[i] = 1; /* all numbers mobile */ current[i] = i; /* current permutation is the identity */ assig[i] = i; /* best permutation up to now is the identity */ distrelev[i] = COST(i, i); /* pick relevant entries in the cost matrix */ } currmin = arraymax(distrelev, n); /* minimal max up to now */ /* The main loop */ while(arraymax(mobile, n) == 1) { lmp = largestmobpos(mobile, current, collectvals, n); lmq = lmp + travel[lmp]; swap(lmp, lmq, current); swap(lmp, lmq, travel); for (i = 0; i < n; i++) { if (current[i] > current[lmq]) travel[i] = -travel[i]; j = i + travel[i]; if (j < 0 || j > n-1 || current[i] < current[j]) mobile[i] = 0; else mobile[i] = 1; distrelev[i] = COST(i, current[i]); } /* Calculation of new maximal value */ newmax = arraymax(distrelev, n); if (newmax < currmin) { currmin = newmax; for (i = 0; i < n; i++) { assig[i] = current[i]; } } } /* For testing: print distance from within C program Rprintf("Prohorov distance is %d\n", currmin); */ /* "Return" the final assignment */ for (i = 0; i < n; i++) { assignment[i] = assig[i] + 1; } } /* ------------------------------------------------------------*/ /* Maximal element of an integer array */ int arraymax(int *a, int n) { int i, amax; if(n < 1) return(-1); amax = a[0]; if(n > 1) for(i = 0; i < n; i++) if(a[i] > amax) amax = a[i]; return(amax); } /* Swap elements i and j in array a */ void swap(int i, int j, int *a) { int v; v = a[i]; a[i] = a[j]; a[j] = v; } /* Return index of largest mobile number in current */ int largestmobpos(int *mobile, int *current, int *collectvals, int n) { int i,j, maxval; j = 0; for (i = 0; i < n; i++) { if (mobile[i] == 1) { collectvals[j] = current[i]; j++; } } maxval = arraymax(collectvals, j); for (i = 0; i < n; i++) { if (current[i] == maxval) { return(i); } } error("Internal error: largestmobpos failed"); return(0); } spatstat/src/PerfectHardcore.h0000644000176000001440000001137712333041761016156 0ustar ripleyusers // ........................... Hardcore process .......................... // $Revision: 1.4 $ $Date: 2012/03/10 11:23:09 $ class HardcoreProcess : public PointProcess { public: double beta, R, Rsquared; HardcoreProcess(double xmin, double xmax, double ymin, double ymax, double b, double Ri); ~HardcoreProcess(){} void NewEvent(double *x, double *y, char *InWindow); void GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP); double Interaction(double dsquared); }; HardcoreProcess::HardcoreProcess(double xmin, double xmax, double ymin, double ymax, double b, double Ri) : PointProcess(xmin, xmax, ymin, ymax){ beta = b; R = Ri; Rsquared = R * R; InteractionRange = R; TotalBirthRate = beta*(xmax-xmin)*(ymax-ymin); } double HardcoreProcess::Interaction(double dsquared) { double rtn; rtn = 1; if(dsquared < Rsquared) rtn = 0; return(rtn); } void HardcoreProcess::NewEvent(double *x, double *y, char *InWindow) { double Xdim, Ydim; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; *x = slumptal()*Xdim+Xmin; *y = slumptal()*Ydim+Ymin; *InWindow = 1; } void HardcoreProcess::GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP) { int i; double xtemp, ytemp, L, Xdim, Ydim; struct Point *TempPoint; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; L = beta*Xdim*Ydim; *GeneratedPoints = poisson(L); *LivingPoints = *GeneratedPoints; for (i=1; i<=*GeneratedPoints ; i++){ //Rprintf("Generating HardcoreProcess Poisson 3\n"); //scanf("%f",&f1); xtemp = slumptal()*Xdim+Xmin; ytemp = slumptal()*Ydim+Ymin; // //Rprintf("Generating HardcoreProcess Poisson 3.2\n"); TempPoint = ALLOCATE(struct Point); // TempPoint->X = xtemp; TempPoint->Y = ytemp; TempPoint->No = i; TempPoint->R = slumptal(); //Rprintf("Generating HardcoreProcess Poisson 3.6\n"); TempPoint->next = headPoint->next; headPoint->next = TempPoint; *NoP = *NoP + 1; } } // ........................... Interface to R .......................... extern "C" { SEXP PerfectHardcore(SEXP beta, SEXP r, SEXP xrange, SEXP yrange) { // input parameters double Beta, R, Xmin, Xmax, Ymin, Ymax; double *Xrange, *Yrange; // internal int xcells, ycells; long int StartTime, EndTime; // output int noutmax; SEXP xout, yout, nout, out; double *xx, *yy; int *nn; // protect arguments from garbage collector PROTECT(beta = AS_NUMERIC(beta)); PROTECT(r = AS_NUMERIC(r)); PROTECT(xrange = AS_NUMERIC(xrange)); PROTECT(yrange = AS_NUMERIC(yrange)); // that's 4 protected objects // extract arguments Beta = *(NUMERIC_POINTER(beta)); R = *(NUMERIC_POINTER(r)); Xrange = NUMERIC_POINTER(xrange); Xmin = Xrange[0]; Xmax = Xrange[1]; Yrange = NUMERIC_POINTER(yrange); Ymin = Yrange[0]; Ymax = Yrange[1]; // compute cell array size xcells = (int) floor((Xmax-Xmin)/ R); if(xcells > 9) xcells = 9; if(xcells < 1) xcells = 1; ycells = (int) floor((Ymax-Ymin)/ R); if(ycells > 9) ycells = 9; if(ycells < 1) ycells = 1; #ifdef DBGS Rprintf("xcells %d ycells %d\n",xcells,ycells); Rprintf("Initialising\n"); #endif // Initialise Hardcore point process HardcoreProcess ExampleProcess(Xmin,Xmax,Ymin,Ymax, Beta, R); // Initialise point pattern Point2Pattern ExamplePattern(Xmin,Xmax,Ymin,Ymax, xcells, ycells); // parameters: min x, max x, min y, max y, "cells" in x and y direction // used for speeding up neighbour counting, 9 is max here #ifdef DBGS Rprintf("Initialisation complete\n"); #endif // Synchronise random number generator GetRNGstate(); // Initialise perfect sampler Sampler PerfectSampler(&ExampleProcess); // Perform perfect sampling PerfectSampler.Sim(&ExamplePattern, &StartTime, &EndTime); // Synchronise random number generator PutRNGstate(); // Get upper estimate of number of points noutmax = ExamplePattern.UpperCount() + 1; // Allocate space for output PROTECT(xout = NEW_NUMERIC(noutmax)); PROTECT(yout = NEW_NUMERIC(noutmax)); PROTECT(nout = NEW_INTEGER(1)); xx = NUMERIC_POINTER(xout); yy = NUMERIC_POINTER(yout); nn = INTEGER_POINTER(nout); // copy data into output storage ExamplePattern.Return(xx, yy, nn, noutmax); // pack up into output list PROTECT(out = NEW_LIST(3)); SET_VECTOR_ELT(out, 0, xout); SET_VECTOR_ELT(out, 1, yout); SET_VECTOR_ELT(out, 2, nout); // return UNPROTECT(8); // 4 arguments plus xout, yout, nout, out return(out); } } spatstat/src/geyer.c0000755000176000001440000002363212333041761014224 0ustar ripleyusers#include #include #include #include "methas.h" #include "dist2.h" void fexitc(const char *msg); #undef MH_DEBUG /* Conditional intensity function for a Geyer saturation process. */ typedef struct Geyer { /* model parameters */ double gamma; double r; double s; /* transformations of the parameters */ double r2; double loggamma; int hard; /* periodic distance */ double *period; int per; /* auxiliary counts */ int *aux; #ifdef MH_DEBUG int *freshaux; int prevtype; #endif } Geyer; Cdata *geyerinit(state, model, algo) State state; Model model; Algor algo; { int i, j, n1; Geyer *geyer; double r2; double *period; DECLARE_CLOSE_VARS; geyer = (Geyer *) R_alloc(1, sizeof(Geyer)); /* Interpret model parameters*/ geyer->gamma = model.ipar[0]; geyer->r = model.ipar[1]; /* not squared any more */ geyer->s = model.ipar[2]; geyer->r2 = geyer->r * geyer->r; #ifdef MHDEBUG Rprintf("Initialising Geyer gamma=%lf, r=%lf, sat=%lf\n", geyer->gamma, geyer->r, geyer->s); #endif /* is the model numerically equivalent to hard core ? */ geyer->hard = (geyer->gamma < DOUBLE_EPS); geyer->loggamma = (geyer->hard) ? 0 : log(geyer->gamma); /* periodic boundary conditions? */ geyer->period = model.period; geyer->per = (model.period[0] > 0.0); /* allocate storage for auxiliary counts */ geyer->aux = (int *) R_alloc((size_t) state.npmax, sizeof(int)); #ifdef MH_DEBUG geyer->freshaux = (int *) R_alloc((size_t) state.npmax, sizeof(int)); geyer->prevtype = -42; #endif r2 = geyer->r2; /* Initialise auxiliary counts */ for(i = 0; i < state.npmax; i++) geyer->aux[i] = 0; if(geyer->per) { /* periodic */ period = geyer->period; if(state.npts > 1) { n1 = state.npts - 1; for(i = 0; i < n1; i++) { for(j = i+1; j < state.npts; j++) { if(CLOSE_PERIODIC(state.x[i], state.y[i], state.x[j], state.y[j], period, r2)) { geyer->aux[i] += 1; geyer->aux[j] += 1; } } } } } else { /* Euclidean distance */ if(state.npts > 1) { n1 = state.npts - 1; for(i = 0; i < n1; i++) { for(j = i+1; j < state.npts; j++) { if(CLOSE(state.x[i], state.y[i], state.x[j], state.y[j], r2)) { geyer->aux[i] += 1; geyer->aux[j] += 1; } } } } } return((Cdata *) geyer); } double geyercif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int ix, j, npts, tee; double u, v, r2, s; double w, a, b, f, cifval; double *x, *y; int *aux; double *period; Geyer *geyer; DECLARE_CLOSE_VARS; geyer = (Geyer *) cdata; npts = state.npts; if(npts==0) return ((double) 1.0); x = state.x; y = state.y; u = prop.u; v = prop.v; ix = prop.ix; r2 = geyer->r2; s = geyer->s; period = geyer->period; aux = geyer->aux; /* tee = neighbour count at the point in question; w = sum of changes in (saturated) neighbour counts at other points */ tee = w = 0.0; if(prop.itype == BIRTH) { if(geyer->per) { /* periodic distance */ for(j=0; j 1) /* j is not saturated after addition of (u,v) */ w = w + 1; /* addition of (u,v) increases count by 1 */ else if(f > 0) /* j becomes saturated by addition of (u,v) */ w = w + f; } } } else { /* Euclidean distance */ for(j=0; j 1) /* j is not saturated after addition of (u,v) */ w = w + 1; /* addition of (u,v) increases count by 1 */ else if(f > 0) /* j becomes saturated by addition of (u,v) */ w = w + f; } } } } else if(prop.itype == DEATH) { tee = aux[ix]; if(geyer->per) { /* Periodic distance */ for(j=0; j 0) /* j is not saturated */ w = w + 1; /* deletion of 'ix' decreases count by 1 */ else { f = f+1; if(f > 0) { /* j is not saturated after deletion of 'ix' (s must be fractional) */ w = w + f; } } } } } else { /* Euclidean distance */ for(j=0; j 0) /* j was not saturated */ w = w + 1; /* deletion of 'ix' decreases count by 1 */ else { f = f+1; if(f > 0) { /* j is not saturated after deletion of 'ix' (s must be fractional) */ w = w + f; } } } } } } else if(prop.itype == SHIFT) { /* Compute the cif at the new point, not the ratio of new/old */ if(geyer->per) { /* Periodic distance */ for(j=0; j= b) w = w + 1; } } } else { /* Euclidean distance */ for(j=0; j= b) w = w + 1; } } } } w = w + ((tee < s) ? tee : s); if(geyer->hard) { if(tee > 0) cifval = 0.0; else cifval = 1.0; } else cifval = exp(geyer->loggamma*w); return cifval; } void geyerupd(state, prop, cdata) State state; Propo prop; Cdata *cdata; { /* Declare other variables */ int ix, npts, j; int oldclose, newclose; double u, v, xix, yix, r2; double *x, *y; int *aux; double *period; Geyer *geyer; #ifdef MH_DEBUG int *freshaux; int i; int oc, nc; #endif DECLARE_CLOSE_VARS; geyer = (Geyer *) cdata; period = geyer->period; aux = geyer->aux; r2 = geyer->r2; x = state.x; y = state.y; npts = state.npts; #ifdef MH_DEBUG /* ........................ debugging cross-check ................ */ /* recompute 'aux' values afresh */ freshaux = geyer->freshaux; for(i = 0; i < state.npts; i++) freshaux[i] = 0; if(geyer->per) { /* periodic */ for(i = 0; i < state.npts; i++) { for(j = 0; j < state.npts; j++) { if(i == j) continue; if(CLOSE_PERIODIC(state.x[i], state.y[i], state.x[j], state.y[j], period, r2)) freshaux[i] += 1; } } } else { /* Euclidean distance */ for(i = 0; i < state.npts; i++) { for(j = 0; j < state.npts; j++) { if(i == j) continue; if(CLOSE(state.x[i], state.y[i], state.x[j], state.y[j], r2)) freshaux[i] += 1; } } } /* Check agreement with 'aux' */ for(j = 0; j < state.npts; j++) { if(aux[j] != freshaux[j]) { Rprintf("\n\taux[%d] = %d, freshaux[%d] = %d\n", j, aux[j], j, freshaux[j]); Rprintf("\tnpts = %d\n", state.npts); Rprintf("\tperiod = (%lf, %lf)\n", period[0], period[1]); if(geyer->prevtype == BIRTH) error("updaux failed after BIRTH"); if(geyer->prevtype == DEATH) error("updaux failed after DEATH"); if(geyer->prevtype == SHIFT) error("updaux failed after SHIFT"); error("updaux failed at start"); } } /* OK. Record type of this transition */ geyer->prevtype = prop.itype; /* ................ end debug cross-check ................ */ #endif if(prop.itype == BIRTH) { /* Birth */ u = prop.u; v = prop.v; /* initialise auxiliary counter for new point */ aux[npts] = 0; /* update all auxiliary counters */ if(geyer->per) { /* periodic distance */ for(j=0; j < npts; j++) { if(CLOSE_PERIODIC(u,v,x[j],y[j],period,r2)) { aux[j] += 1; aux[npts] += 1; } } } else { /* Euclidean distance */ for(j=0; j < npts; j++) { if(CLOSE(u,v,x[j],y[j],r2)) { aux[j] += 1; aux[npts] += 1; } } } } else if(prop.itype == DEATH) { /* Death */ ix = prop.ix; u = x[ix]; v = y[ix]; /* decrement auxiliary counter for each point */ if(geyer->per) { /* periodic distance */ for(j=0; j= ix) aux[j-1] = aux[j]; } } else { /* Euclidean distance */ for(j=0; j= ix) aux[j-1] = aux[j]; } } } else if(prop.itype == SHIFT) { /* Shift */ u = prop.u; v = prop.v; ix = prop.ix; xix = x[ix]; yix = y[ix]; /* recompute auxiliary counter for point 'ix' */ aux[ix] = 0; /* update auxiliary counters for other points */ if(geyer->per) { for(j=0; j #include #include #include "chunkloop.h" /* localpcf.c $Revision: 1.3 $ $Date: 2013/05/27 02:09:10 $ Assumes point patterns are sorted in increasing order of x coordinate */ #undef WEIGHTED #include "localpcf.h" #define WEIGHTED 1 #include "localpcf.h" spatstat/src/seg2pix.c0000755000176000001440000002223712333041761014472 0ustar ripleyusers#include #include #include #include #include "chunkloop.h" #undef DEBUG /* seg2pix.c Discretise line segment on pixel grid seg2pixI pixel value is indicator = 1 if any line crosses pixel seg2pixL pixel value is total (weighted) length of lines inside pixel (rescale R data so that pixels are integer) pixels numbered 0, ..., nx-1 and 0, ..., ny-1 with boundaries at x=0, x=nx, y=0, y=ny. */ #define V(I,J) out[(I) + (J) * (Ny)] int clamp(k, n0, n1) int k, n0, n1; { int m; m = k; if(m < n0) m = n0; if(m > n1) m = n1; return(m); } void seg2pixI(ns,x0,y0,x1,y1,nx,ny,out) int *ns; /* number of segments */ double *x0,*y0,*x1,*y1; /* coordinates of segment endpoints */ int *nx, *ny; /* dimensions of pixel array (columns, rows) */ int *out; { int Ns, Nx, Ny, i, j, k, m, m0, m1, mmin, mmax, maxchunk; double x0i, x1i, y0i, y1i, dx, dy; double leni; double xleft, yleft, xright, yright, slope; double xstart, ystart, xfinish, yfinish; int mleft, mright, kstart, kfinish, kmin, kmax; Ns = *ns; Nx = *nx; Ny = *ny; for(k = 0; k < Ny - 1; k++) for(j = 0; j < Nx - 1; j++) V(k, j) = 0; OUTERCHUNKLOOP(i, Ns, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Ns, maxchunk, 8196) { x0i = x0[i]; y0i = y0[i]; x1i = x1[i]; y1i = y1[i]; dx = x1i - x0i; dy = y1i - y0i; leni = hypot(dx, dy); #ifdef DEBUG Rprintf("(%lf, %lf) to (%lf, %lf)\n", x0i, y0i, x1i, y1i); #endif if(leni < 0.001) { /* tiny segment */ #ifdef DEBUG Rprintf("tiny\n"); #endif k = clamp((int) floor(x0i), 0, Nx-1); j = clamp((int) floor(y0i), 0, Ny-1); V(j,k) = 1; } else if(floor(x1i) == floor(x0i) && floor(y1i) == floor(y0i)) { /* contained in one cell */ #ifdef DEBUG Rprintf("contained in one cell\n"); #endif k = clamp((int) floor(x0i), 0, Nx-1); j = clamp((int) floor(y0i), 0, Ny-1); V(j,k) = 1; } else if(floor(y1i) == floor(y0i)) { /* horizontal */ #ifdef DEBUG Rprintf("horizontal\n"); #endif j = clamp((int) floor(y1i), 0, Ny-1); m0 = clamp((int) floor(x0i), 0, Nx-1); m1 = clamp((int) floor(x1i), 0, Nx-1); mmin = (m0 < m1) ? m0: m1; mmax = (m0 < m1) ? m1: m0; #ifdef DEBUG Rprintf("row %d: columns [%d, %d]\n", j, mmin, mmax); #endif for(k = mmin; k <= mmax; k++) V(j,k) = 1; } else if(floor(x1i) == floor(x0i)) { /* vertical */ #ifdef DEBUG Rprintf("vertical\n"); #endif k = clamp((int) floor(x1i), 0, Nx-1); m0 = clamp((int) floor(y0i), 0, Ny-1); m1 = clamp((int) floor(y1i), 0, Ny-1); mmin = (m0 < m1) ? m0: m1; mmax = (m0 < m1) ? m1: m0; #ifdef DEBUG Rprintf("column %d: rows [%d, %d]\n", k, mmin, mmax); #endif for(j = mmin; j <= mmax; j++) V(j,k) = 1; } else { /* general case */ #ifdef DEBUG Rprintf("general\n"); #endif if(x1i > x0i) { xleft = x0i; yleft = y0i; xright = x1i; yright = y1i; } else { xleft = x1i; yleft = y1i; xright = x0i; yright = y0i; } slope = (yright - yleft)/(xright - xleft); mleft = clamp((int) floor(xleft), 0, Nx-1); mright = clamp((int) floor(xright), 0, Nx-1); #ifdef DEBUG Rprintf("column range [%d, %d]\n", mleft, mright); #endif /* treat each vertical slice */ for(m = mleft; m <= mright; m++) { if(m == mleft) { xstart = xleft; ystart = yleft; } else { xstart = m; ystart = yleft + slope * (xstart - xleft); } if(m == mright) { xfinish = xright; yfinish = yright; } else { xfinish = m+1; yfinish = yleft + slope * (xfinish - xleft); } kstart = clamp((int) floor(ystart), 0, Ny-1); kfinish = clamp((int) floor(yfinish), 0, Ny-1); kmin = (kstart < kfinish) ? kstart : kfinish; kmax = (kstart < kfinish) ? kfinish : kstart; #ifdef DEBUG Rprintf("column %d: rows [%d, %d]\n", m, kmin, kmax); #endif for(k = kmin; k <= kmax; k++) V(k, m) = 1; } } /* end of if-else */ } } #ifdef DEBUG Rprintf("done\n"); #endif } void seg2pixL(ns,x0,y0,x1,y1,weights,pixwidth,pixheight,nx,ny,out) int *ns; double *x0,*y0,*x1,*y1,*weights; /* segment coordinates and weights */ double *pixwidth, *pixheight; /* original pixel dimensions */ int *nx, *ny; double *out; /* output matrix */ { int Ns, Nx, Ny, i, j, k, m, mmin, mmax, maxchunk; double x0i, x1i, y0i, y1i; double leni; double xleft, yleft, xright, yright, slope, scalesecant; double xlow, xhigh, ylow, yhigh, invslope, scalecosecant; double xstart, ystart, xfinish, yfinish; double xxx0, xxx1, yyy0, yyy1; int mleft, mright, kstart, kfinish, kmin, kmax; double pwidth, pheight, pwidth2, pheight2; double wti; Ns = *ns; Nx = *nx; Ny = *ny; /* one scaled x unit = 'pwidth' original x units one scaled y unit = 'pheight' original y units */ pwidth = *pixwidth; pheight = *pixheight; pwidth2 = pwidth * pwidth; pheight2 = pheight * pheight; /* zero the matrix */ for(k = 0; k < Ny - 1; k++) for(j = 0; j < Nx - 1; j++) V(k, j) = 0; OUTERCHUNKLOOP(i, Ns, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Ns, maxchunk, 8196) { x0i = x0[i]; y0i = y0[i]; x1i = x1[i]; y1i = y1[i]; wti = weights[i]; leni = sqrt(pwidth2 * pow(x1i - x0i, 2) + pheight2 * pow(y1i-y0i, 2)); #ifdef DEBUG Rprintf("(%lf, %lf) to (%lf, %lf), length %lf\n", x0i, y0i, x1i, y1i, leni); #endif if(leni < 0.001) { /* tiny segment */ #ifdef DEBUG Rprintf("tiny\n"); #endif k = clamp((int) floor(x0i), 0, Nx-1); j = clamp((int) floor(y0i), 0, Ny-1); V(j,k) += wti * leni; } else if(floor(x1i) == floor(x0i) && floor(y1i) == floor(y0i)) { /* contained in one cell */ #ifdef DEBUG Rprintf("contained in one cell\n"); #endif k = clamp((int) floor(x0i), 0, Nx-1); j = clamp((int) floor(y0i), 0, Ny-1); V(j,k) += wti * leni; } else if(floor(y1i) == floor(y0i)) { /* horizontal */ #ifdef DEBUG Rprintf("horizontal\n"); #endif j = clamp((int) floor(y1i), 0, Ny-1); if(x1i > x0i) { xleft = x0i; yleft = y0i; xright = x1i; yright = y1i; } else { xleft = x1i; yleft = y1i; xright = x0i; yright = y0i; } mmin = clamp((int) floor(xleft), 0, Nx-1); mmax = clamp((int) floor(xright), 0, Nx-1); slope = (yright - yleft)/(xright - xleft); scalesecant = wti * sqrt(pwidth2 + slope * slope * pheight2); /* For this slope, one scaled x unit means 'pwidth' original x units and slope * pheight original y units i.e. line length sqrt(pwidth^2 + slope^2 * pheight^2) */ for(k = mmin; k <= mmax; k++) { xstart = (k == mmin) ? xleft : k; xfinish = (k == mmax) ? xright : (k+1); V(j,k) += (xfinish - xstart) * scalesecant; } } else if(floor(x1i) == floor(x0i)) { /* vertical */ #ifdef DEBUG Rprintf("vertical\n"); #endif k = clamp((int) floor(x1i), 0, Nx-1); if(y1i > y0i) { xlow = x0i; ylow = y0i; xhigh = x1i; yhigh = y1i; } else { xlow = x1i; ylow = y1i; xhigh = x0i; yhigh = y0i; } mmin = clamp((int) floor(ylow), 0, Ny-1); mmax = clamp((int) floor(yhigh), 0, Ny-1); invslope = (xhigh - xlow)/(yhigh - ylow); scalecosecant = wti * sqrt(pheight2 + invslope * invslope * pwidth2); #ifdef DEBUG Rprintf("i = %d\n", i); Rprintf("inverse slope = %lf\n", invslope); Rprintf("scaled cosecant = %lf\n", scalecosecant); #endif /* For this slope, one scaled y unit means 'pheight' original y units and invslope * pwidth original x units i.e. line length sqrt(pheight^2 + invslope^2 * pwidth^2) */ for(j = mmin; j <= mmax; j++) { ystart = (j == mmin)? ylow : j; yfinish = (j == mmax)? yhigh : (j+1); V(j,k) += (yfinish - ystart) * scalecosecant; } } else { /* general case */ #ifdef DEBUG Rprintf("general\n"); #endif if(x1i > x0i) { xleft = x0i; yleft = y0i; xright = x1i; yright = y1i; } else { xleft = x1i; yleft = y1i; xright = x0i; yright = y0i; } slope = (yright - yleft)/(xright - xleft); mleft = clamp((int) floor(xleft), 0, Nx-1); mright = clamp((int) floor(xright), 0, Nx-1); #ifdef DEBUG Rprintf("column range [%d, %d]\n", mleft, mright); #endif /* treat each vertical slice */ for(m = mleft; m <= mright; m++) { if(m == mleft) { xstart = xleft; ystart = yleft; } else { xstart = m; ystart = yleft + slope * (xstart - xleft); } if(m == mright) { xfinish = xright; yfinish = yright; } else { xfinish = m+1; yfinish = yleft + slope * (xfinish - xleft); } kstart = clamp((int) floor(ystart), 0, Ny-1); kfinish = clamp((int) floor(yfinish), 0, Ny-1); if(ystart < yfinish) { kmin = kstart; kmax = kfinish; ylow = ystart; yhigh = yfinish; } else { kmin = kfinish; kmax = kstart; ylow = yfinish; yhigh = ystart; } #ifdef DEBUG Rprintf("column %d: rows [%d, %d]\n", m, kmin, kmax); #endif for(k = kmin; k <= kmax; k++) { yyy0 = (k == kmin) ? ylow : k; yyy1 = (k == kmax) ? yhigh : (k+1); xxx0 = xstart + (yyy0 - ystart)/slope; xxx1 = xstart + (yyy1 - ystart)/slope; V(k, m) += wti * sqrt(pow(yyy1 - yyy0, 2) * pheight2 + pow(xxx1 - xxx0, 2) * pwidth2); } } } } } #ifdef DEBUG Rprintf("done.\n"); #endif } spatstat/src/lincrossdist.c0000644000176000001440000000456612333041761015633 0ustar ripleyusers#include #include #include "chunkloop.h" /* lincrossdist.c Shortest-path distances between pairs of points in linear network $Revision: 1.3 $ $Date: 2012/10/13 03:45:41 $ lincrossdist */ #define DPATH(I,J) dpath[(I) + Nv * (J)] #define ANSWER(I,J) answer[(I) + Np * (J)] #define EUCLID(X,Y,U,V) sqrt(pow((X)-(U),2)+pow((Y)-(V),2)) void lincrossdist(np, xp, yp, /* data points from which distances are measured */ nq, xq, yq, /* data points to which distances are measured */ nv, xv, yv, /* network vertices */ ns, from, to, /* segments */ dpath, /* shortest path distances between vertices */ psegmap, /* map from data points to segments */ qsegmap, /* map from data points to segments */ /* OUTPUT */ answer /* shortest path distances between points */ ) int *np, *nq, *nv, *ns; int *from, *to, *psegmap, *qsegmap; /* integer vectors (mappings) */ double *xp, *yp, *xq, *yq, *xv, *yv; /* vectors of coordinates */ double *dpath, *answer; /* matrices */ { int Np, Nq, Nv, i, j, maxchunk; int Psegi, Qsegj, nbi1, nbi2, nbj1, nbj2; double xpi, ypi, xqj, yqj; double d, dPiV1, dPiV2, dV1Qj, dV2Qj, d11, d12, d21, d22; Np = *np; Nq = *nq; Nv = *nv; OUTERCHUNKLOOP(i, Np, maxchunk, 1024) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Np, maxchunk, 1024) { xpi = xp[i]; ypi = yp[i]; Psegi = psegmap[i]; nbi1 = from[Psegi]; nbi2 = to[Psegi]; dPiV1 = EUCLID(xpi, ypi, xv[nbi1], yv[nbi1]); dPiV2 = EUCLID(xpi, ypi, xv[nbi2], yv[nbi2]); for(j = 0; j < Nq; j++) { xqj = xq[j]; yqj = yq[j]; Qsegj = qsegmap[j]; if(Psegi == Qsegj) { /* points i and j lie on the same segment; use Euclidean distance */ d = sqrt(pow(xpi - xqj, 2) + pow(ypi - yqj, 2)); } else { /* Shortest path from i to j passes through ends of segments; Calculate shortest of 4 possible paths from i to j */ nbj1 = from[Qsegj]; nbj2 = to[Qsegj]; dV1Qj = EUCLID(xv[nbj1], yv[nbj1], xqj, yqj); dV2Qj = EUCLID(xv[nbj2], yv[nbj2], xqj, yqj); d11 = dPiV1 + DPATH(nbi1,nbj1) + dV1Qj; d12 = dPiV1 + DPATH(nbi1,nbj2) + dV2Qj; d21 = dPiV2 + DPATH(nbi2,nbj1) + dV1Qj; d22 = dPiV2 + DPATH(nbi2,nbj2) + dV2Qj; d = d11; if(d12 < d) d = d12; if(d21 < d) d = d21; if(d22 < d) d = d22; } /* write */ ANSWER(i,j) = d; } } } } spatstat/src/Estrauss.c0000755000176000001440000000306412333041761014717 0ustar ripleyusers#include #include #include "chunkloop.h" /* Estrauss.c $Revision: 1.3 $ $Date: 2012/03/28 05:56:24 $ C implementation of 'eval' for Strauss interaction Calculates number of data points within distance r of each quadrature point (when 'source' = quadrature points, 'target' = data points) Assumes point patterns are sorted in increasing order of x coordinate */ double sqrt(); void Ccrosspaircounts(nnsource, xsource, ysource, nntarget, xtarget, ytarget, rrmax, counts) /* inputs */ int *nnsource, *nntarget; double *xsource, *ysource, *xtarget, *ytarget, *rrmax; /* output */ int *counts; { int nsource, ntarget, maxchunk, j, i, ileft, counted; double xsourcej, ysourcej, rmax, r2max, xleft, dx, dy, dx2, d2; nsource = *nnsource; ntarget = *nntarget; rmax = *rrmax; r2max = rmax * rmax; if(nsource == 0 || ntarget == 0) return; ileft = 0; OUTERCHUNKLOOP(j, nsource, maxchunk, 65536) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nsource, maxchunk, 65536) { counted = 0; xsourcej = xsource[j]; ysourcej = ysource[j]; /* adjust starting point */ xleft = xsourcej - rmax; while((xtarget[ileft] < xleft) && (ileft+1 < ntarget)) ++ileft; /* process from ileft to iright */ for(i=ileft; i < ntarget; i++) { dx = xtarget[i] - xsourcej; dx2 = dx * dx; if(dx2 > r2max) break; dy = ytarget[i] - ysourcej; d2 = dx2 + dy * dy; if(d2 <= r2max) ++counted; } counts[j] = counted; } } } spatstat/src/methas.c0000755000176000001440000002642712333041761014377 0ustar ripleyusers#include #include #include #include "methas.h" #include "chunkloop.h" #include "mhsnoop.h" void fexitc(const char *msg); /* To switch on debugging code, insert the line: #define MH_DEBUG YES */ #ifndef MH_DEBUG #define MH_DEBUG NO #endif /* This is the value of 'ix' when we are proposing a birth. It must be equal to -1 so that NONE+1 = 0. */ #define NONE -1 extern Cifns getcif(char *); SEXP xmethas( SEXP ncif, SEXP cifname, SEXP beta, SEXP ipar, SEXP iparlen, SEXP period, SEXP xprop, SEXP yprop, SEXP mprop, SEXP ntypes, SEXP nrep, SEXP p, SEXP q, SEXP nverb, SEXP nrep0, SEXP x, SEXP y, SEXP marks, SEXP ncond, SEXP fixall, SEXP track, SEXP snoopenv) { char *cifstring; double cvd, cvn, qnodds, anumer, adenom, betavalue; double *iparvector; int verb, marked, mustupdate, itype; int nfree; int irep, ix, j, maxchunk, iverb; int Ncif; int *plength; long Nmore; double *xx, *yy, *xpropose, *ypropose; int *mm, *mpropose, *pp, *aa; SEXP out, xout, yout, mout, pout, aout; int tracking; #ifdef HISTORY_INCLUDES_RATIO SEXP numout, denout; double *nn, *dd; #endif State state; Model model; Algor algo; Propo birthprop, deathprop, shiftprop; History history; Snoop snooper; /* The following variables are used only for a non-hybrid interaction */ Cifns thecif; /* cif structure */ Cdata *thecdata; /* pointer to initialised cif data block */ /* The following variables are used only for a hybrid interaction */ Cifns *cif; /* vector of cif structures */ Cdata **cdata; /* vector of pointers to initialised cif data blocks */ int *needupd; /* vector of logical values */ int k; /* loop index for cif's */ /* =================== Protect R objects from garbage collector ======= */ PROTECT(ncif = AS_INTEGER(ncif)); PROTECT(cifname = AS_CHARACTER(cifname)); PROTECT(beta = AS_NUMERIC(beta)); PROTECT(ipar = AS_NUMERIC(ipar)); PROTECT(iparlen = AS_INTEGER(iparlen)); PROTECT(period = AS_NUMERIC(period)); PROTECT(xprop = AS_NUMERIC(xprop)); PROTECT(yprop = AS_NUMERIC(yprop)); PROTECT(mprop = AS_INTEGER(mprop)); PROTECT(ntypes = AS_INTEGER(ntypes)); PROTECT(nrep = AS_INTEGER(nrep)); PROTECT( p = AS_NUMERIC(p)); PROTECT( q = AS_NUMERIC(q)); PROTECT(nverb = AS_INTEGER(nverb)); PROTECT(nrep0 = AS_INTEGER(nrep0)); PROTECT( x = AS_NUMERIC(x)); PROTECT( y = AS_NUMERIC(y)); PROTECT( marks = AS_INTEGER(marks)); PROTECT(fixall = AS_INTEGER(fixall)); PROTECT(ncond = AS_INTEGER(ncond)); PROTECT(track = AS_INTEGER(track)); /* that's 21 protected objects */ /* =================== Translate arguments from R to C ================ */ /* Ncif is the number of cif's plength[i] is the number of interaction parameters in the i-th cif */ Ncif = *(INTEGER_POINTER(ncif)); plength = INTEGER_POINTER(iparlen); /* copy RMH algorithm parameters */ algo.nrep = *(INTEGER_POINTER(nrep)); algo.nverb = *(INTEGER_POINTER(nverb)); algo.nrep0 = *(INTEGER_POINTER(nrep0)); algo.p = *(NUMERIC_POINTER(p)); algo.q = *(NUMERIC_POINTER(q)); algo.fixall = ((*(INTEGER_POINTER(fixall))) == 1); algo.ncond = *(INTEGER_POINTER(ncond)); /* copy model parameters without interpreting them */ model.beta = NUMERIC_POINTER(beta); model.ipar = iparvector = NUMERIC_POINTER(ipar); model.period = NUMERIC_POINTER(period); model.ntypes = *(INTEGER_POINTER(ntypes)); state.ismarked = marked = (model.ntypes > 1); /* copy initial state */ state.npts = LENGTH(x); state.npmax = 4 * ((state.npts > 256) ? state.npts : 256); state.x = (double *) R_alloc(state.npmax, sizeof(double)); state.y = (double *) R_alloc(state.npmax, sizeof(double)); xx = NUMERIC_POINTER(x); yy = NUMERIC_POINTER(y); if(marked) { state.marks =(int *) R_alloc(state.npmax, sizeof(int)); mm = INTEGER_POINTER(marks); } if(!marked) { for(j = 0; j < state.npts; j++) { state.x[j] = xx[j]; state.y[j] = yy[j]; } } else { for(j = 0; j < state.npts; j++) { state.x[j] = xx[j]; state.y[j] = yy[j]; state.marks[j] = mm[j]; } } #if MH_DEBUG Rprintf("\tnpts=%d\n", state.npts); #endif /* access proposal data */ xpropose = NUMERIC_POINTER(xprop); ypropose = NUMERIC_POINTER(yprop); mpropose = INTEGER_POINTER(mprop); /* we need to initialise 'mpropose' to keep compilers happy. mpropose is only used for marked patterns. Note 'mprop' is always a valid pointer */ /* ================= Allocate space for cifs etc ========== */ if(Ncif > 1) { cif = (Cifns *) R_alloc(Ncif, sizeof(Cifns)); cdata = (Cdata **) R_alloc(Ncif, sizeof(Cdata *)); needupd = (int *) R_alloc(Ncif, sizeof(int)); } else { /* Keep the compiler happy */ cif = (Cifns *) R_alloc(1, sizeof(Cifns)); cdata = (Cdata **) R_alloc(1, sizeof(Cdata *)); needupd = (int *) R_alloc(1, sizeof(int)); } /* ================= Determine process to be simulated ========== */ /* Get the cif's */ if(Ncif == 1) { cifstring = (char *) STRING_VALUE(cifname); thecif = getcif(cifstring); mustupdate = NEED_UPDATE(thecif); if(thecif.marked && !marked) fexitc("cif is for a marked point process, but proposal data are not marked points; bailing out."); /* Keep compiler happy*/ cif[0] = thecif; needupd[0] = mustupdate; } else { mustupdate = NO; for(k = 0; k < Ncif; k++) { cifstring = (char *) CHAR(STRING_ELT(cifname, k)); cif[k] = getcif(cifstring); needupd[k] = NEED_UPDATE(cif[k]); if(needupd[k]) mustupdate = YES; if(cif[k].marked && !marked) fexitc("component cif is for a marked point process, but proposal data are not marked points; bailing out."); } } /* ============= Initialise transition history ========== */ tracking = (*(INTEGER_POINTER(track)) != 0); /* Initialise even if not needed, to placate the compiler */ if(tracking) { history.nmax = algo.nrep; } else { history.nmax = 1; } history.n = 0; history.proptype = (int *) R_alloc(history.nmax, sizeof(int)); history.accepted = (int *) R_alloc(history.nmax, sizeof(int)); #ifdef HISTORY_INCLUDES_RATIO history.numerator = (double *) R_alloc(history.nmax, sizeof(double)); history.denominator = (double *) R_alloc(history.nmax, sizeof(double)); #endif /* ============= Visual debugging ========== */ /* Active if 'snoopenv' is an environment */ #if MH_DEBUG Rprintf("Initialising mhsnoop\n"); #endif initmhsnoop(&snooper, snoopenv); #if MH_DEBUG Rprintf("Initialised\n"); if(snooper.active) Rprintf("Debugger is active.\n"); #endif /* ================= Initialise algorithm ==================== */ /* Interpret the model parameters and initialise auxiliary data */ if(Ncif == 1) { thecdata = (*(thecif.init))(state, model, algo); /* keep compiler happy */ cdata[0] = thecdata; } else { for(k = 0; k < Ncif; k++) { if(k > 0) model.ipar += plength[k-1]; cdata[k] = (*(cif[k].init))(state, model, algo); } } /* Set the fixed elements of the proposal objects */ birthprop.itype = BIRTH; deathprop.itype = DEATH; shiftprop.itype = SHIFT; birthprop.ix = NONE; if(!marked) birthprop.mrk = deathprop.mrk = shiftprop.mrk = NONE; /* Set up some constants */ verb = (algo.nverb !=0); qnodds = (1.0 - algo.q)/algo.q; /* Set value of beta for unmarked process */ /* (Overwritten for marked process, but keeps compiler happy) */ betavalue = model.beta[0]; /* ============= Run Metropolis-Hastings ================== */ /* Initialise random number generator */ GetRNGstate(); /* Here comes the code for the M-H loop. The basic code (in mhloop.h) is #included many times using different options The C preprocessor descends through a chain of files mhv1.h, mhv2.h, ... to enumerate all possible combinations of flags. */ #include "mhv1.h" /* relinquish random number generator */ PutRNGstate(); /* ============= Done ================== */ /* Create space for output, and copy final state */ /* Point coordinates */ PROTECT(xout = NEW_NUMERIC(state.npts)); PROTECT(yout = NEW_NUMERIC(state.npts)); xx = NUMERIC_POINTER(xout); yy = NUMERIC_POINTER(yout); for(j = 0; j < state.npts; j++) { xx[j] = state.x[j]; yy[j] = state.y[j]; } /* Marks */ if(marked) { PROTECT(mout = NEW_INTEGER(state.npts)); mm = INTEGER_POINTER(mout); for(j = 0; j < state.npts; j++) mm[j] = state.marks[j]; } else { /* Keep the compiler happy */ PROTECT(mout = NEW_INTEGER(1)); mm = INTEGER_POINTER(mout); mm[0] = 0; } /* Transition history */ if(tracking) { PROTECT(pout = NEW_INTEGER(algo.nrep)); PROTECT(aout = NEW_INTEGER(algo.nrep)); pp = INTEGER_POINTER(pout); aa = INTEGER_POINTER(aout); for(j = 0; j < algo.nrep; j++) { pp[j] = history.proptype[j]; aa[j] = history.accepted[j]; } #ifdef HISTORY_INCLUDES_RATIO PROTECT(numout = NEW_NUMERIC(algo.nrep)); PROTECT(denout = NEW_NUMERIC(algo.nrep)); nn = NUMERIC_POINTER(numout); dd = NUMERIC_POINTER(denout); for(j = 0; j < algo.nrep; j++) { nn[j] = history.numerator[j]; dd[j] = history.denominator[j]; } #endif } else { /* Keep the compiler happy */ PROTECT(pout = NEW_INTEGER(1)); PROTECT(aout = NEW_INTEGER(1)); pp = INTEGER_POINTER(pout); aa = INTEGER_POINTER(aout); pp[0] = aa[0] = 0; #ifdef HISTORY_INCLUDES_RATIO PROTECT(numout = NEW_NUMERIC(1)); PROTECT(denout = NEW_NUMERIC(1)); nn = NUMERIC_POINTER(numout); dd = NUMERIC_POINTER(denout); nn[0] = dd[0] = 0; #endif } /* Pack up into list object for return */ if(!tracking) { /* no transition history */ if(!marked) { PROTECT(out = NEW_LIST(2)); SET_VECTOR_ELT(out, 0, xout); SET_VECTOR_ELT(out, 1, yout); } else { PROTECT(out = NEW_LIST(3)); SET_VECTOR_ELT(out, 0, xout); SET_VECTOR_ELT(out, 1, yout); SET_VECTOR_ELT(out, 2, mout); } } else { /* transition history */ if(!marked) { #ifdef HISTORY_INCLUDES_RATIO PROTECT(out = NEW_LIST(6)); #else PROTECT(out = NEW_LIST(4)); #endif SET_VECTOR_ELT(out, 0, xout); SET_VECTOR_ELT(out, 1, yout); SET_VECTOR_ELT(out, 2, pout); SET_VECTOR_ELT(out, 3, aout); #ifdef HISTORY_INCLUDES_RATIO SET_VECTOR_ELT(out, 4, numout); SET_VECTOR_ELT(out, 5, denout); #endif } else { #ifdef HISTORY_INCLUDES_RATIO PROTECT(out = NEW_LIST(7)); #else PROTECT(out = NEW_LIST(5)); #endif SET_VECTOR_ELT(out, 0, xout); SET_VECTOR_ELT(out, 1, yout); SET_VECTOR_ELT(out, 2, mout); SET_VECTOR_ELT(out, 3, pout); SET_VECTOR_ELT(out, 4, aout); #ifdef HISTORY_INCLUDES_RATIO SET_VECTOR_ELT(out, 5, numout); SET_VECTOR_ELT(out, 6, denout); #endif } } #ifdef HISTORY_INCLUDES_RATIO UNPROTECT(29); /* 21 arguments plus xout, yout, mout, pout, aout, out, numout, denout */ #else UNPROTECT(27); /* 21 arguments plus xout, yout, mout, pout, aout, out */ #endif return(out); } spatstat/src/dwpure.c0000755000176000001440000002320212333041761014410 0ustar ripleyusers/* dwpure.c $Revision: 1.5 $ $Date: 2011/09/20 07:54:53 $ Code by Dominic Schuhmacher */ #include #include #include typedef struct State { int n1, n2; /* vectors of length n1 (rows) and n2 (cols) */ int *rowmass, *colmass; /* mass to be moved from row / to col */ int *rowlab, *collab; /* row and col labels (specify previous node (row for collab, col for rowlab)) */ int *rowflow, *colflow; /* second component of labels (specify flow through current node) */ int *rowsurplus, *colsurplus; /* the surplus in each row/col under the current flow */ int *dualu, *dualv; /* vectors of dual variables (u for rows, v for cols) */ int *rowhelper, *colhelper; /* helping vector to store intermediate results */ /* could be local in initcost at the moment */ /* n by n matrices */ int *d; /* matrix of costs */ int *flowmatrix; /* matrix of flows */ int *arcmatrix; /* matrix of arcs for restriced primal problem (1 if arc, 0 if no arc) should be unsigned char to save memory however need to workout problem with R_alloc first (see below) */ /* n*n vector */ int *collectvals; } State; #define COST(I,J,STATE,NVALUE) ((STATE)->d)[(NVALUE) * (J) + (I)] #define FLOW(I,J,STATE,NVALUE) ((STATE)->flowmatrix)[(NVALUE) * (J) + (I)] #define ARC(I,J,STATE,NVALUE) ((STATE)->arcmatrix)[(NVALUE) * (J) + (I)] #define MIN(A,B) ((A)<(B) ? (A) : (B)) int arraysum(int *a, int n); int arraymin(int *a, int n); void initvalues(State *state); void maxflow(State *state); void updateduals(State *state); void augmentflow(int startcol, State *state); /* ------------ The main function ----------------------------- */ void dwpure(int *d, int *rmass, int *cmass, int *numr, int *numc, int *flowmatrix) { int i,j; /* indices */ int n1,n2; unsigned char feasible = 0; /* boolean for main loop */ State state; /* inputs */ state.n1 = n1 = *numr; state.n2 = n2 = *numc; state.d = d; state.rowmass = rmass; state.colmass = cmass; /* scratch space */ state.rowlab = (int *) R_alloc((long) n1, sizeof(int)); state.collab = (int *) R_alloc((long) n2, sizeof(int)); state.rowflow = (int *) R_alloc((long) n1, sizeof(int)); state.colflow = (int *) R_alloc((long) n2, sizeof(int)); state.rowsurplus = (int *) R_alloc((long) n1, sizeof(int)); state.colsurplus = (int *) R_alloc((long) n2, sizeof(int)); state.dualu = (int *) R_alloc((long) n1, sizeof(int)); state.dualv = (int *) R_alloc((long) n2, sizeof(int)); state.rowhelper = (int *) R_alloc((long) n1, sizeof(int)); state.colhelper = (int *) R_alloc((long) n2, sizeof(int)); state.flowmatrix = (int *) R_alloc((long) (n1 * n2), sizeof(int)); state.arcmatrix = (int *) R_alloc((long) (n1 * n2), sizeof(int)); state.collectvals = (int *) R_alloc((long) (n1 * n2), sizeof(int)); for (i = 0; i < n1; ++i) { for (j = 0; j < n2; ++j) { state.flowmatrix[(n1)*(j) + i] = 0; state.arcmatrix[(n1)*(j) + i] = 0; state.collectvals[(n1)*(j) + i] = 0; } } for (i = 0; i < n1; ++i) { state.rowlab[i] = 0; state.rowflow[i] = 0; state.rowsurplus[i] = 0; state.dualu[i] = 0; state.rowhelper[i] = 0; } for (j = 0; j < n2; ++j) { state.collab[j] = 0; state.colflow[j] = 0; state.colsurplus[j] = 0; state.dualv[j] = 0; state.colhelper[j] = 0; } /* Initialize dual variables, arcmatrix, and surpluses */ initvalues(&state); /* For testing: print out cost matrix for (i = 0; i < n1; ++i) { for (j = 0; j < n2; ++j) { Rprintf("%d ", COST(i, j, &state, n1)); } Rprintf("\n"); } */ /* The main loop */ while(feasible == 0) { maxflow(&state); if (arraysum(state.rowsurplus, n1) > 0) { updateduals(&state); /* also updates arcmatrix */ } else { feasible = 1; } } /* "Return" the final flowmatrix */ for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { flowmatrix[n1*j+i] = state.flowmatrix[n1*j+i]; } } } /* ------------ Functions called by dwpure_R ------------------------- */ /* Sum of integer array */ int arraysum(int *a, int n) { int i; int asum = 0; for (i = 0; i < n; i++) asum += a[i]; return(asum); } /* Minimal element of an integer array */ int arraymin(int *a, int n) { int i, amin; if (n < 1) return(-1); amin = a[0]; if (n > 1) for (i = 0; i < n; i++) if (a[i] < amin) amin = a[i]; return(amin); } /* Initialize cost matrix: subtract in each row its minimal entry (from all the entries in the row), then subtract in each column its minimal entry (from all the entries in the column) */ void initvalues(State *state) { int i,j,n1,n2; n1 = state->n1; n2 = state->n2; /* Initial surpluses; can I do this shorter? later on surpluses are updated in flow augmentation step */ for (i = 0; i < n1; i++) state->rowsurplus[i] = state->rowmass[i]; for (j = 0; j < n2; j++) state->colsurplus[j] = state->colmass[j]; for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) state->colhelper[j] = COST(i, j, state, n1); state->dualu[i] = arraymin(state->colhelper, n2); } for (j = 0; j < n2; j++) { for (i = 0; i < n1; i++) state->rowhelper[i] = COST(i, j, state, n1) - state->dualu[i]; state->dualv[j] = arraymin(state->rowhelper, n1); } for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { if (COST(i, j, state, n1) == state->dualu[i] + state->dualv[j]) ARC(i, j, state, n1) = 1; else ARC(i, j, state, n1) = 0; } } } /* Maximize the flow on the (zeros of the) current cost matrix */ void maxflow(State *state) { int breakthrough; /* col. no. in which breakthrough occurs */ unsigned char labelfound = 1; /* 0 if no more labels can be found */ int i,j,n1,n2; n1 = state->n1; n2 = state->n2; while (labelfound == 1) { breakthrough = -1; /* initialize labels */ for (i = 0; i < n1; i++) { if (state->rowsurplus[i] > 0) { state->rowlab[i] = -5; state->rowflow[i] = state->rowsurplus[i]; } else { state->rowlab[i] = -1; /* setting rowflow to zero isn't necessary! */ } } for (j = 0; j < n2; j++) state->collab[j] = -1; /* setting colflow to zero isn't necessary! */ /* -1 means "no index", -5 means "source label" (rows only) */ while (labelfound == 1 && breakthrough == -1) { labelfound = 0; /* label unlabeled column j that permits flow from some labeled row i */ /* ("permits flow" means arcmatrix[i][j] = 1). Do so for every j */ for (i = 0; i < n1; i++) { if (state->rowlab[i] != -1) { for (j = 0; j < n2; j++) { if (ARC(i, j, state, n1) == 1 && state->collab[j] == -1) { state->collab[j] = i; state->colflow[j] = state->rowflow[i]; labelfound = 1; if (state->colsurplus[j] > 0 && breakthrough == -1) breakthrough = j; } } } } /* label unlabeled row i that already sends flow to some labeled col j */ /* ("already sends" means flowmatrix[i][j] > 0). Do so for every i */ for (j = 0; j < n2; j++) { if (state->collab[j] != -1) { for (i = 0; i < n1; i++) { if (FLOW(i, j, state, n1) > 0 && state->rowlab[i] == -1) { state->rowlab[i] = j; state->rowflow[i] = MIN(state->colflow[j],FLOW(i, j, state, n1)); labelfound = 1; } } } } } if (breakthrough != -1) augmentflow(breakthrough, state); } } /* Update the dual variables (called if solution of restricted primal is not feasible for the original problem): determine the minimum over the submatrix given by all labeled rows and unlabeled columns, and subtract it from all labeled rows and add it to all labeled columns. */ void updateduals(State *state) { int i,j,n1,n2,mini; int count = 0; n1 = state->n1; n2 = state->n2; for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { if (state->rowlab[i] != -1 && state->collab[j] == -1) { state->collectvals[count] = COST(i, j, state, n1) - state->dualu[i] - state->dualv[j]; count++; } } } mini = arraymin(state->collectvals, count); for (i = 0; i < n1; i++) { if (state->rowlab[i] != -1) state->dualu[i] += mini; } for (j = 0; j < n2; j++){ if (state->collab[j] != -1) state->dualv[j] -= mini; } for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { if (COST(i, j, state, n1) == state->dualu[i] + state->dualv[j]) ARC(i, j, state, n1) = 1; else ARC(i, j, state, n1) = 0; } } } /* Augment the flow on the graph given by arcmatrix (by aug) according to the row and column labels starting in column startcol */ /* Adjust the surpluses while we're at it (first row and last col have -aug) */ void augmentflow(int startcol, State *state) { int k,l,aug,n1; /* int i,j,k,l,aug,n1,n2; */ n1 = state->n1; l = startcol; aug = MIN(state->colflow[l], state->colsurplus[l]); state->colsurplus[l] -= aug; k = state->collab[l]; FLOW(k, l, state, n1) += aug; l = state->rowlab[k]; while (l != -5) { FLOW(k, l, state, n1) -= aug; k = state->collab[l]; FLOW(k, l, state, n1) += aug; l = state->rowlab[k]; } state->rowsurplus[k] -= aug; } spatstat/src/distmapbin.c0000755000176000001440000000644412333041761015245 0ustar ripleyusers/* distmapbin.c Distance transform of a discrete binary image (8-connected path metric) $Revision: 1.6 $ $Date: 2011/11/20 03:34:16 $ */ #include #include "raster.h" #include void dist_to_bdry(); void shape_raster(); void distmap_bin(in, dist) Raster *in; /* input: binary image */ Raster *dist; /* output: distance to nearest point */ /* rasters must have been dimensioned by shape_raster() and must all have identical dimensions and margins */ { int j,k; double d, dnew; double xstep, ystep, diagstep, huge; int rmin, rmax, cmin, cmax; /* distances between neighbouring pixels */ xstep = in->xstep; ystep = in->ystep; diagstep = sqrt(xstep * xstep + ystep * ystep); if(xstep < 0) xstep = -xstep; if(ystep < 0) ystep = -ystep; /* effectively infinite distance */ huge = 2.0 * Distance(dist->xmin,dist->ymin,dist->xmax,dist->ymax); /* image boundaries */ rmin = in->rmin; rmax = in->rmax; cmin = in->cmin; cmax = in->cmax; #define DISTANCE(ROW, COL) Entry(*dist, ROW, COL, double) #define MASKTRUE(ROW, COL) (Entry(*in, ROW, COL, int) != 0) #define MASKFALSE(ROW, COL) (Entry(*in, ROW, COL, int) == 0) #define UPDATE(D, ROW, COL, STEP) \ dnew = STEP + DISTANCE(ROW, COL); \ if(D > dnew) D = dnew /* initialise edges to boundary condition */ for(j = rmin-1; j <= rmax+1; j++) { DISTANCE(j, cmin-1) = (MASKTRUE(j, cmin-1)) ? 0.0 : huge; DISTANCE(j, cmax+1) = (MASKTRUE(j, cmax+1)) ? 0.0 : huge; } for(k = cmin-1; k <= cmax+1; k++) { DISTANCE(rmin-1, k) = (MASKTRUE(rmin-1, k)) ? 0.0 : huge; DISTANCE(rmax+1, k) = (MASKTRUE(rmax+1, k)) ? 0.0 : huge; } /* forward pass */ for(j = rmin; j <= rmax; j++) { R_CheckUserInterrupt(); for(k = cmin; k <= cmax; k++) { if(MASKTRUE(j, k)) d = DISTANCE(j, k) = 0.0; else { d = huge; UPDATE(d, j-1, k-1, diagstep); UPDATE(d, j-1, k, ystep); UPDATE(d, j-1, k+1, diagstep); UPDATE(d, j, k-1, xstep); DISTANCE(j,k) = d; } } } /* backward pass */ for(j = rmax; j >= rmin; j--) { R_CheckUserInterrupt(); for(k = cmax; k >= cmin; k--) { if(MASKFALSE(j,k)) { d = DISTANCE(j,k); UPDATE(d, j+1, k+1, diagstep); UPDATE(d, j+1, k, ystep); UPDATE(d, j+1, k-1, diagstep); UPDATE(d, j, k+1, xstep); DISTANCE(j,k) = d; } } } } /* R interface */ void distmapbin(xmin, ymin, xmax, ymax, nr, nc, in, distances, boundary) double *xmin, *ymin, *xmax, *ymax; /* x, y dimensions */ int *nr, *nc; /* raster dimensions EXCLUDING margin of 1 on each side */ int *in; /* input: binary image */ double *distances; /* output: distance to nearest point */ double *boundary; /* output: distance to boundary of rectangle */ /* all images must have identical dimensions including a margin of 1 on each side */ { Raster data, dist, bdist; shape_raster( &data, (void *) in, *xmin,*ymin,*xmax,*ymax, *nr+2, *nc+2, 1, 1); shape_raster( &dist, (void *) distances,*xmin,*ymin,*xmax,*ymax, *nr+2,*nc+2,1,1); shape_raster( &bdist, (void *) boundary, *xmin,*ymin,*xmax,*ymax, *nr+2,*nc+2,1,1); distmap_bin(&data, &dist); dist_to_bdry(&bdist); } spatstat/src/dist2.h0000755000176000001440000000434212333041761014140 0ustar ripleyusers/* dist2.h External declarations for the functions defined in dist2.c and In-line cpp macros for similar purposes $Revision: 1.19 $ $Date: 2014/05/08 02:13:22 $ */ double dist2(double u, double v, double x, double y, double *period); double dist2either(double u, double v, double x, double y, double *period); int dist2thresh(double u, double v, double x, double y, double *period, double r2); int dist2Mthresh(double u, double v, double x, double y, double *period, double r2); /* Efficient macros to test closeness of points */ /* These variables must be declared (note: some files e.g. straush.c use 'RESIDUE' explicitly) */ #define DECLARE_CLOSE_VARS \ register double DX, DY, DXP, DYP, RESIDUE #define DECLARE_CLOSE_D2_VARS \ register double DX, DY, DXP, DYP, DX2 #define CLOSE(U,V,X,Y,R2) \ ((DX = X - U), \ (RESIDUE = R2 - DX * DX), \ ((RESIDUE > 0.0) && \ ((DY = Y - V), \ (RESIDUE = RESIDUE - DY * DY), \ (RESIDUE > 0.0)))) #define CLOSE_D2(U,V,X,Y,R2,D2) \ ((DX = X - U), \ (DX2 = DX * DX), \ (DX2 < R2) && (((DY = Y - V), \ (D2 = DX2 + DY * DY), \ (D2 < R2)))) /* The following calculates X mod P, but it works only if X \in [-P, P] so that X is the difference between two values that lie in an interval of length P */ #define CLOSE_PERIODIC(U,V,X,Y,PERIOD,R2) \ ((DX = X - U), \ (DX = (DX < 0.0) ? -DX : DX), \ (DXP = (PERIOD)[0] - DX), \ (DX = (DX < DXP) ? DX : DXP), \ (RESIDUE = R2 - DX * DX), \ ((RESIDUE > 0.0) && ((DY = Y - V), \ (DY = (DY < 0.0) ? -DY : DY), \ (DYP = (PERIOD)[1] - DY), \ (DY = (DY < DYP) ? DY : DYP), \ (RESIDUE = RESIDUE - DY * DY), \ (RESIDUE > 0.0) ))) #define CLOSE_PERIODIC_D2(U,V,X,Y,PERIOD,R2,D2) \ ((DX = X - U), \ (DX = (DX < 0.0) ? -DX : DX), \ (DXP = (PERIOD)[0] - DX), \ (DX = (DX < DXP) ? DX : DXP), \ (D2 = DX * DX), \ ((D2 < R2) && ((DY = Y - V), \ (DY = (DY < 0.0) ? -DY : DY), \ (DYP = (PERIOD)[1] - DY), \ (DY = (DY < DYP) ? DY : DYP), \ (D2 += DY * DY), \ (D2 < R2) ))) spatstat/src/dgs.c0000755000176000001440000000505612333041761013666 0ustar ripleyusers#include #include #include #include "methas.h" #include "dist2.h" #include "constants.h" /* Conditional intensity computation for Diggle-Gates-Stibbard process */ /* Conditional intensity function for a pairwise interaction point process with interaction function as given by e(t) = sin^2(pi*t/2*rho) for t < rho = 1 for t >= rho (See page 767 of Diggle, Gates, and Stibbard, Biometrika vol. 74, 1987, pages 763 -- 770.) */ #define PION2 M_PI_2 /* pi/2 defined in Rmath.h */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct Dgs { double rho; double rho2; double pion2rho; double *period; int per; } Dgs; /* initialiser function */ Cdata *dgsinit(state, model, algo) State state; Model model; Algor algo; { Dgs *dgs; /* allocate storage */ dgs = (Dgs *) R_alloc(1, sizeof(Dgs)); /* Interpret model parameters*/ dgs->rho = model.ipar[0]; dgs->period = model.period; /* constants */ dgs->rho2 = pow(dgs->rho, 2); dgs->pion2rho = PION2/dgs->rho; /* periodic boundary conditions? */ dgs->per = (model.period[0] > 0.0); return((Cdata *) dgs); } /* conditional intensity evaluator */ double dgscif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ix, ixp1, j; double *x, *y; double u, v; double d2, r2, pairprod, cifval; Dgs *dgs; DECLARE_CLOSE_D2_VARS; dgs = (Dgs *) cdata; r2 = dgs->rho2; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; cifval = pairprod = 1.0; if(npts == 0) return(cifval); ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(dgs->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_PERIODIC_D2(u,v,x[j],y[j],dgs->period,r2,d2)) pairprod *= sin(dgs->pion2rho * sqrt(d2)); } } if(ixp1 < npts) { for(j=ixp1; jperiod,r2,d2)) pairprod *= sin(dgs->pion2rho * sqrt(d2)); } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_D2(u, v, x[j], y[j], r2, d2)) pairprod *= sin(dgs->pion2rho * sqrt(d2)); } } if(ixp1 < npts) { for(j=ixp1; jpion2rho * sqrt(d2)); } } } /* sin to sin^2 */ cifval = pairprod * pairprod; return cifval; } Cifns DgsCifns = { &dgsinit, &dgscif, (updafunptr) NULL, NO}; spatstat/src/distan3.c0000755000176000001440000002436312333041761014460 0ustar ripleyusers/* distan3.c Distances between pairs of 3D points $Revision: 1.3 $ $Date: 2013/11/03 03:34:15 $ D3pairdist Pairwise distances D3pair2dist Pairwise distances squared D3pairPdist Pairwise distances with periodic correction D3pairP2dist Pairwise distances squared, with periodic correction D3crossdist Pairwise distances for two sets of points D3cross2dist Pairwise distances squared, for two sets of points D3crossPdist Pairwise distances for two sets of points, periodic correction matchxyz Find matches between two sets of points */ #include /* #include */ double sqrt(); void D3pairdist(n, x, y, z, squared, d) /* inputs */ int *n; double *x, *y, *z; int *squared; /* output */ double *d; { void D3pair1dist(), D3pair2dist(); if(*squared == 0) { D3pair1dist(n, x, y, z, d); } else { D3pair2dist(n, x, y, z, d); } } void D3pair1dist(n, x, y, z, d) /* inputs */ int *n; double *x, *y, *z; /* output */ double *d; { int i, j, npoints; double *dp; double xi, yi, zi, dx, dy, dz, dist; npoints = *n; /* set d[0,0] = 0 */ *d = 0.0; for (i=1; i < npoints; i++) { xi = x[i]; yi = y[i]; zi = z[i]; /* point at the start of column i */ dp = d + i * npoints; /* set diagonal to zero */ dp[i] = 0.0; for (j=0; j < i; j++) { dx = x[j] - xi; dy = y[j] - yi; dz = z[j] - zi; dist = sqrt( dx * dx + dy * dy + dz * dz ); /* upper triangle */ *dp = dist; ++dp; /* lower triangle */ d[ j * npoints + i] = dist; } } } /* squared distances */ void D3pair2dist(n, x, y, z, d) /* inputs */ int *n; double *x, *y, *z; /* output */ double *d; { int i, j, npoints; double *dp; double xi, yi, zi, dx, dy, dz, dist; npoints = *n; /* set d[0,0] = 0 */ *d = 0.0; for (i=1; i < npoints; i++) { xi = x[i]; yi = y[i]; zi = z[i]; /* point at the start of column i */ dp = d + i * npoints; /* set diagonal to zero */ dp[i] = 0.0; for (j=0; j < i; j++) { dx = x[j] - xi; dy = y[j] - yi; dz = z[j] - zi; dist = dx * dx + dy * dy + dz * dz; /* upper triangle */ *dp = dist; ++dp; /* lower triangle */ d[ j * npoints + i] = dist; } } } void D3crossdist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, squared, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *zfrom, *xto, *yto, *zto; int *squared; /* output */ double *d; { void D3cross1dist(), D3cross2dist(); if(*squared == 0) { D3cross1dist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, d); } else { D3cross2dist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, d); } } void D3cross1dist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *zfrom, *xto, *yto, *zto; /* output */ double *d; { int i, j, nf, nt; double *dptr; double xj, yj, zj, dx, dy, dz; nf = *nfrom; nt = *nto; dptr = d; for (j=0; j < nt; j++) { xj = xto[j]; yj = yto[j]; zj = zto[j]; for(i = 0; i < nf; i++, dptr++) { dx = xj - xfrom[i]; dy = yj - yfrom[i]; dz = zj - zfrom[i]; *dptr = sqrt( dx * dx + dy * dy + dz * dz ); } } } /* squared distances */ void D3cross2dist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *zfrom, *xto, *yto, *zto; /* output */ double *d; { int i, j, nf, nt; double *dptr; double xj, yj, zj, dx, dy, dz; nf = *nfrom; nt = *nto; dptr = d; for (j=0; j < nt; j++) { xj = xto[j]; yj = yto[j]; zj = zto[j]; for(i = 0; i < nf; i++, dptr++) { dx = xj - xfrom[i]; dy = yj - yfrom[i]; dz = zj - zfrom[i]; *dptr = dx * dx + dy * dy + dz * dz; } } } /* distances with periodic correction */ void D3pairPdist(n, x, y, z, xwidth, yheight, zdepth, squared, d) /* inputs */ int *n; double *x, *y, *z, *xwidth, *yheight, *zdepth; int *squared; /* output */ double *d; { void D3pairP1dist(), D3pairP2dist(); if(*squared == 0) { D3pairP1dist(n, x, y, z, xwidth, yheight, zdepth, d); } else { D3pairP2dist(n, x, y, z, xwidth, yheight, zdepth, d); } } void D3pairP1dist(n, x, y, z, xwidth, yheight, zdepth, d) /* inputs */ int *n; double *x, *y, *z, *xwidth, *yheight, *zdepth; /* output */ double *d; { int i, j, npoints; double *dp; double xi, yi, zi, dx, dy, dz, dx2, dy2, dz2, dx2p, dy2p, dz2p, dist, wide, high, deep; npoints = *n; wide = *xwidth; high = *yheight; deep = *zdepth; /* set d[0,0] = 0 */ *d = 0.0; for (i=1; i < npoints; i++) { xi = x[i]; yi = y[i]; zi = z[i]; /* point at the start of column i */ dp = d + i * npoints; /* set diagonal to zero */ dp[i] = 0.0; for (j=0; j < i; j++) { dx = x[j] - xi; dy = y[j] - yi; dz = z[j] - zi; dx2p = dx * dx; dy2p = dy * dy; dz2p = dz * dz; dx2 = (dx - wide) * (dx - wide); dy2 = (dy - high) * (dy - high); dz2 = (dz - deep) * (dz - deep); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; if(dz2 < dz2p) dz2p = dz2; dx2 = (dx + wide) * (dx + wide); dy2 = (dy + high) * (dy + high); dz2 = (dz + deep) * (dz + deep); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; if(dz2 < dz2p) dz2p = dz2; dist = sqrt( dx2p + dy2p + dz2p ); /* upper triangle */ *dp = dist; ++dp; /* lower triangle */ d[ j * npoints + i] = dist; } } } /* same function without the sqrt */ void D3pairP2dist(n, x, y, z, xwidth, yheight, zdepth, d) /* inputs */ int *n; double *x, *y, *z, *xwidth, *yheight, *zdepth; /* output */ double *d; { int i, j, npoints; double *dp; double xi, yi, zi, dx, dy, dz, dx2, dy2, dz2, dx2p, dy2p, dz2p, dist, wide, high, deep; npoints = *n; wide = *xwidth; high = *yheight; deep = *zdepth; /* set d[0,0] = 0 */ *d = 0.0; for (i=1; i < npoints; i++) { xi = x[i]; yi = y[i]; zi = z[i]; /* point at the start of column i */ dp = d + i * npoints; /* set diagonal to zero */ dp[i] = 0.0; for (j=0; j < i; j++) { dx = x[j] - xi; dy = y[j] - yi; dz = z[j] - zi; dx2p = dx * dx; dy2p = dy * dy; dz2p = dz * dz; dx2 = (dx - wide) * (dx - wide); dy2 = (dy - high) * (dy - high); dz2 = (dz - deep) * (dz - deep); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; if(dz2 < dz2p) dz2p = dz2; dx2 = (dx + wide) * (dx + wide); dy2 = (dy + high) * (dy + high); dz2 = (dz + deep) * (dz + deep); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; if(dz2 < dz2p) dz2p = dz2; dist = dx2p + dy2p + dz2p; /* upper triangle */ *dp = dist; ++dp; /* lower triangle */ d[ j * npoints + i] = dist; } } } void D3crossPdist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, xwidth, yheight, zdepth, squared, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *zfrom, *xto, *yto, *zto, *xwidth, *yheight, *zdepth; int *squared; /* output */ double *d; { void D3crossP1dist(), D3crossP2dist(); if(*squared == 0) { D3crossP1dist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, xwidth, yheight, zdepth, d); } else { D3crossP2dist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, xwidth, yheight, zdepth, d); } } void D3crossP1dist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, xwidth, yheight, zdepth, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *zfrom, *xto, *yto, *zto, *xwidth, *yheight, *zdepth; /* output */ double *d; { int i, j, nf, nt; double *dptr; double xj, yj, zj, dx, dy, dz, dx2, dy2, dz2, dx2p, dy2p, dz2p, wide, high, deep; nf = *nfrom; nt = *nto; wide = *xwidth; high = *yheight; deep = *zdepth; dptr = d; for (j=0; j < nt; j++) { xj = xto[j]; yj = yto[j]; zj = zto[j]; for(i = 0; i < nf; i++, dptr++) { dx = xj - xfrom[i]; dy = yj - yfrom[i]; dz = zj - zfrom[i]; dx2p = dx * dx; dy2p = dy * dy; dz2p = dz * dz; dx2 = (dx - wide) * (dx - wide); dy2 = (dy - high) * (dy - high); dz2 = (dz - deep) * (dz - deep); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; if(dz2 < dz2p) dz2p = dz2; dx2 = (dx + wide) * (dx + wide); dy2 = (dy + high) * (dy + high); dz2 = (dy + deep) * (dz + deep); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; if(dz2 < dz2p) dz2p = dz2; *dptr = sqrt( dx2p + dy2p + dz2p ); } } } void D3crossP2dist(nfrom, xfrom, yfrom, zfrom, nto, xto, yto, zto, xwidth, yheight, zdepth, d) /* inputs */ int *nto, *nfrom; double *xfrom, *yfrom, *zfrom, *xto, *yto, *zto, *xwidth, *yheight, *zdepth; /* output */ double *d; { int i, j, nf, nt; double *dptr; double xj, yj, zj, dx, dy, dz, dx2, dy2, dz2, dx2p, dy2p, dz2p, wide, high, deep; nf = *nfrom; nt = *nto; wide = *xwidth; high = *yheight; deep = *zdepth; dptr = d; for (j=0; j < nt; j++) { xj = xto[j]; yj = yto[j]; zj = zto[j]; for(i = 0; i < nf; i++, dptr++) { dx = xj - xfrom[i]; dy = yj - yfrom[i]; dz = zj - zfrom[i]; dx2p = dx * dx; dy2p = dy * dy; dz2p = dz * dz; dx2 = (dx - wide) * (dx - wide); dy2 = (dy - high) * (dy - high); dz2 = (dz - deep) * (dz - deep); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; if(dz2 < dz2p) dz2p = dz2; dx2 = (dx + wide) * (dx + wide); dy2 = (dy + high) * (dy + high); dz2 = (dy + deep) * (dz + deep); if(dx2 < dx2p) dx2p = dx2; if(dy2 < dy2p) dy2p = dy2; if(dz2 < dz2p) dz2p = dz2; *dptr = dx2p + dy2p + dz2p; } } } /* matchxyz Find matches between two lists of points */ void matchxyz(na, xa, ya, za, nb, xb, yb, zb, match) /* inputs */ int *na, *nb; double *xa, *ya, *za, *xb, *yb, *zb; /* output */ int *match; { int i, j, Na, Nb; double xai, yai, zai; Na = *na; Nb = *nb; for (i=1; i < Na; i++) { xai = xa[i]; yai = ya[i]; zai = za[i]; match[i] = 0; for (j=0; j < Nb; j++) if(xai == xb[j] && yai == yb[j] && zai == zb[i]) { match[i] = j; break; } } } spatstat/src/Knone.c0000644000176000001440000000154712333041761014161 0ustar ripleyusers#include #include #include /* Knone.c Efficient computation of uncorrected estimates of K for large datasets KnoneI() Estimates K function, returns integer numerator KnoneD() Estimates K function, returns double precision numerator Kwnone() Estimates Kinhom, returns double precision numerator Functions require (x,y) data to be sorted in ascending order of x and expect r values to be equally spaced and starting at zero $Revision: 1.2 $ $Date: 2013/05/27 02:09:10 $ */ #undef WEIGHTED #define FNAME KnoneI #define OUTTYPE int #include "Knone.h" #undef FNAME #undef OUTTYPE #define FNAME KnoneD #define OUTTYPE double #include "Knone.h" #undef FNAME #undef OUTTYPE #define FNAME Kwnone #define WEIGHTED #define OUTTYPE double #include "Knone.h" spatstat/src/PerfectDGS.h0000644000176000001440000001231512333041761015035 0ustar ripleyusers // ........................... Diggle-Gates-Stibbard process ................ // $Revision: 1.3 $ $Date: 2012/03/10 11:22:50 $ #ifndef PI #define PI 3.14159265358979 #endif class DgsProcess : public PointProcess { public: double beta, rho, rhosquared; DgsProcess(double xmin, double xmax, double ymin, double ymax, double b, double r); ~DgsProcess(){} void NewEvent(double *x, double *y, char *InWindow); void GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP); double Interaction(double dsquared); }; DgsProcess::DgsProcess(double xmin, double xmax, double ymin, double ymax, double b, double r) : PointProcess(xmin, xmax, ymin, ymax){ beta = b; rho = r; rhosquared = rho * rho; InteractionRange = rho; TotalBirthRate = beta*(xmax-xmin)*(ymax-ymin); } double DgsProcess::Interaction(double dsquared) { double rtn, dist, t; rtn = 1; if(dsquared < rhosquared) { dist = sqrt(dsquared); t = sin((PI/2) * dist/rho); rtn = t * t; } return(rtn); } void DgsProcess::NewEvent(double *x, double *y, char *InWindow) { double Xdim, Ydim; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; *x = slumptal()*Xdim+Xmin; *y = slumptal()*Ydim+Ymin; *InWindow = 1; } void DgsProcess::GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP) { int i; double xtemp, ytemp, L, Xdim, Ydim; struct Point *TempPoint; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; L = beta*Xdim*Ydim; *GeneratedPoints = poisson(L); *LivingPoints = *GeneratedPoints; for (i=1; i<=*GeneratedPoints ; i++){ //Rprintf("Generating DgsProcess Poisson 3\n"); //scanf("%f",&f1); xtemp = slumptal()*Xdim+Xmin; ytemp = slumptal()*Ydim+Ymin; // //Rprintf("Generating DgsProcess Poisson 3.2\n"); TempPoint = ALLOCATE(struct Point); // TempPoint->X = xtemp; TempPoint->Y = ytemp; TempPoint->No = i; TempPoint->R = slumptal(); //Rprintf("Generating DgsProcess Poisson 3.6\n"); TempPoint->next = headPoint->next; headPoint->next = TempPoint; *NoP = *NoP + 1; } } // ........................... Interface to R .......................... extern "C" { SEXP PerfectDGS(SEXP beta, SEXP rho, SEXP xrange, SEXP yrange) { // input parameters double Beta, Rho, Xmin, Xmax, Ymin, Ymax; double *Xrange, *Yrange; // internal int xcells, ycells; long int StartTime, EndTime; // output int noutmax; SEXP xout, yout, nout, out; double *xx, *yy; int *nn; // protect arguments from garbage collector PROTECT(beta = AS_NUMERIC(beta)); PROTECT(rho = AS_NUMERIC(rho)); PROTECT(xrange = AS_NUMERIC(xrange)); PROTECT(yrange = AS_NUMERIC(yrange)); // that's 4 protected objects // extract arguments Beta = *(NUMERIC_POINTER(beta)); Rho = *(NUMERIC_POINTER(rho)); Xrange = NUMERIC_POINTER(xrange); Xmin = Xrange[0]; Xmax = Xrange[1]; Yrange = NUMERIC_POINTER(yrange); Ymin = Yrange[0]; Ymax = Yrange[1]; // compute cell array size xcells = (int) floor((Xmax-Xmin)/ Rho); if(xcells > 9) xcells = 9; if(xcells < 1) xcells = 1; ycells = (int) floor((Ymax-Ymin)/ Rho); Xrange = NUMERIC_POINTER(xrange); Xmin = Xrange[0]; Xmax = Xrange[1]; Yrange = NUMERIC_POINTER(yrange); Ymin = Yrange[0]; Ymax = Yrange[1]; // compute cell array size xcells = (int) floor((Xmax-Xmin)/ Rho); if(xcells > 9) xcells = 9; if(xcells < 1) xcells = 1; ycells = (int) floor((Ymax-Ymin)/ Rho); if(ycells > 9) ycells = 9; if(ycells < 1) ycells = 1; #ifdef DBGS Rprintf("xcells %d ycells %d\n",xcells,ycells); Rprintf("Initialising\n"); #endif // Initialise Diggle-Gates-Stibbard point process DgsProcess ExampleProcess(Xmin,Xmax,Ymin,Ymax,Beta,Rho); // Initialise point pattern Point2Pattern ExamplePattern(Xmin,Xmax,Ymin,Ymax, xcells, ycells); // parameters: min x, max x, min y, max y, "cells" in x and y direction // used for speeding up neighbour counting, 9 is max here #ifdef DBGS Rprintf("Initialisation complete\n"); #endif // Synchronise random number generator GetRNGstate(); // Initialise perfect sampler Sampler PerfectSampler(&ExampleProcess); // Perform perfect sampling PerfectSampler.Sim(&ExamplePattern, &StartTime, &EndTime); // Synchronise random number generator PutRNGstate(); // Get upper estimate of number of points noutmax = ExamplePattern.UpperCount() + 1; // Allocate space for output PROTECT(xout = NEW_NUMERIC(noutmax)); PROTECT(yout = NEW_NUMERIC(noutmax)); PROTECT(nout = NEW_INTEGER(1)); xx = NUMERIC_POINTER(xout); yy = NUMERIC_POINTER(yout); nn = INTEGER_POINTER(nout); // copy data into output storage ExamplePattern.Return(xx, yy, nn, noutmax); // pack up into output list PROTECT(out = NEW_LIST(3)); SET_VECTOR_ELT(out, 0, xout); SET_VECTOR_ELT(out, 1, yout); SET_VECTOR_ELT(out, 2, nout); // return UNPROTECT(8); // 4 arguments plus xout, yout, nout, out return(out); } } spatstat/src/sphefrac.c0000755000176000001440000000622612333041761014704 0ustar ripleyusers#include #include #include "geom3.h" /* $Revision: 1.1 $ $Date: 2009/11/04 23:54:15 $ Routine for calculating surface area of sphere intersected with box # ///////////////////////////////////////////// # AUTHOR: Adrian Baddeley, CWI, Amsterdam, 1991. # # MODIFIED BY: Adrian Baddeley, Perth 2009, 2013 # # This software is distributed free # under the conditions that # (1) it shall not be incorporated # in software that is subsequently sold # (2) the authorship of the software shall # be acknowledged in any publication that # uses results generated by the software # (3) this notice shall remain in place # in each file. # ////////////////////////////////////////////// */ #ifdef DEBUG #define DBG(X,Y) Rprintf("%s: %f\n", (X), (Y)); #else #define DBG(X,Y) #endif static double pi = 3.141592653589793; /* Factor of 4 * pi * r * r IS ALREADY TAKEN OUT */ double sphesfrac(point, box, r) Point *point; Box *box; double r; { double sum, p[4], q[4]; double a1(), a2(), a3(); int i, j; p[1] = point->x - box->x0; p[2] = point->y - box->y0; p[3] = point->z - box->z0; q[1] = box->x1 - point->x; q[2] = box->y1 - point->y; q[3] = box->z1 - point->z; sum = 0; for(i = 1; i <= 3; i++) { sum += a1(p[i],r) + a1(q[i],r); #ifdef DEBUG Rprintf("i = %d, a1 = %f, a1 = %f\n", i, a1(p[i],r), a1(q[i],r)); #endif } DBG("Past a1", sum) for(i = 1; i < 3; i++) for(j = i+1; j <= 3; j++) { sum -= a2(p[i], p[j], r) + a2(p[i], q[j], r) + a2(q[i], p[j], r) + a2(q[i], q[j], r); #ifdef DEBUG Rprintf("i = %d, j = %d, sum = %f\n", i, j, sum); #endif } DBG("Past a2", sum) sum += a3(p[1], p[2], p[3], r) + a3(p[1], p[2], q[3], r); DBG("sum", sum) sum += a3(p[1], q[2], p[3], r) + a3(p[1], q[2], q[3], r); DBG("sum", sum) sum += a3(q[1], p[2], p[3], r) + a3(q[1], p[2], q[3], r); DBG("sum", sum) sum += a3(q[1], q[2], p[3], r) + a3(q[1], q[2], q[3], r); DBG("Past a3", sum) return(1 - sum); } double a1(t, r) double t, r; { /* This is the function A1 divided by 4 pi r^2 */ if(t >= r) return(0.0); return((1 - t/r) * 0.5); } double a2(t1, t2, r) double t1, t2, r; { double c2(); /* This is A2 divided by 4 pi r^2 because c2 is C divided by pi */ return(c2( t1 / r, t2 / r) / 2.0); } double a3(t1, t2, t3, r) double t1, t2, t3, r; { double c3(); /* This is A3 divided by 4 pi r^2 because c3 is C divided by pi */ return(c3(t1 / r, t2 / r, t3 / r) / 4.0); } double c2(a, b) double a, b; { double z, z2; double c2(); /* This is the function C(a, b, 0) divided by pi - assumes a, b > 0 */ if( ( z2 = 1.0 - a * a - b * b) < 0.0 ) return(0.0); z = sqrt(z2); return((atan2(z, a * b) - a * atan2(z, b) - b * atan2(z, a)) / pi); } double c3(a, b, c) double a, b, c; { double za, zb, zc, sum; /* This is C(a,b,c) divided by pi. Arguments assumed > 0 */ if(a * a + b * b + c * c >= 1.0) return(0.0); za = sqrt(1 - b * b - c * c); zb = sqrt(1 - a * a - c * c); zc = sqrt(1 - a * a - b * b); sum = atan2(zb, a * c) + atan2(za, b * c) + atan2(zc, a * b) - a * atan2(zb, c) + a * atan2(b, zc) - b * atan2(za, c) + b * atan2(a, zc) - c * atan2(zb, a) + c * atan2(b, za); return(sum / pi - 1); } spatstat/src/connect.c0000755000176000001440000000627112333041761014542 0ustar ripleyusers/* connect.c Connected component transforms cocoImage: connected component transform of a discrete binary image (8-connected topology) cocoGraph: connected component labels for a discrete graph specified by a list of edges $Revision: 1.8 $ $Date: 2013/05/27 02:09:10 $ */ #include #include #include #include #include "raster.h" void shape_raster(); #include "yesno.h" /* workhorse function for cocoImage */ void comcommer(im) Raster *im; /* raster must have been dimensioned by shape_raster() */ /* Pixel values assumed to be 0 in background, and distinct nonzero integers in foreground */ { int j,k; int rmin, rmax, cmin, cmax; int label, curlabel, minlabel; int nchanged; /* image boundaries */ rmin = im->rmin; rmax = im->rmax; cmin = im->cmin; cmax = im->cmax; #define ENTRY(ROW, COL) Entry(*im, ROW, COL, int) #define UPDATE(ROW,COL,BEST,NEW) \ NEW = ENTRY(ROW, COL); \ if(NEW != 0 && NEW < BEST) \ BEST = NEW nchanged = 1; while(nchanged >0) { nchanged = 0; R_CheckUserInterrupt(); for(j = rmin; j <= rmax; j++) { for(k = cmin; k <= cmax; k++) { curlabel = ENTRY(j, k); if(curlabel != 0) { minlabel = curlabel; UPDATE(j-1, k-1, minlabel, label); UPDATE(j-1, k, minlabel, label); UPDATE(j-1, k+1, minlabel, label); UPDATE(j, k-1, minlabel, label); UPDATE(j, k, minlabel, label); UPDATE(j, k+1, minlabel, label); UPDATE(j+1, k-1, minlabel, label); UPDATE(j+1, k, minlabel, label); UPDATE(j+1, k+1, minlabel, label); if(minlabel < curlabel) { ENTRY(j, k) = minlabel; nchanged++; } } } } } } void cocoImage(mat, nr, nc) int *mat; /* input: binary image */ int *nr, *nc; /* raster dimensions EXCLUDING margin of 1 on each side */ { Raster im; shape_raster( &im, (void *) mat, (double) 1, (double) 1, (double) *nc, (double) *nr, *nr+2, *nc+2, 1, 1); comcommer(&im); } void cocoGraph(nv, ne, ie, je, label, status) /* inputs */ int *nv; /* number of graph vertices */ int *ne; /* number of edges */ int *ie, *je; /* vectors of indices of ends of each edge */ /* output */ int *label; /* vector of component labels for each vertex */ /* Component label is lowest serial number of any vertex in the connected component */ int *status; /* 0 if OK, 1 if overflow */ { int Nv, Ne, i, j, k, niter, labi, labj, changed; Nv = *nv; Ne = *ne; /* initialise labels */ for(k = 0; k < Nv; k++) label[k] = k; for(niter = 0; niter < Nv; niter++) { R_CheckUserInterrupt(); changed = NO; for(k = 0; k < Ne; k++) { i = ie[k]; j = je[k]; labi = label[i]; labj = label[j]; if(labi < labj) { label[j] = labi; changed = YES; } else if(labj < labi) { label[i] = labj; changed = YES; } } if(!changed) { /* algorithm has converged */ *status = 0; return; } } /* error exit */ *status = 1; return; } spatstat/src/mhv1.h0000644000176000001440000000040112333041761013753 0ustar ripleyusers/* mhv1.h marked or unmarked simulation */ #undef MH_MARKED if(marked) { /* marked process */ #define MH_MARKED YES #include "mhv2.h" #undef MH_MARKED } else { /* unmarked process */ #define MH_MARKED NO #include "mhv2.h" #undef MH_MARKED } spatstat/src/knndist.h0000644000176000001440000000744312333041761014567 0ustar ripleyusers/* knndist.h Code template for C functions supporting knndist and knnwhich THE FOLLOWING CODE ASSUMES THAT y IS SORTED IN ASCENDING ORDER This code is #included multiple times in knndistance.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour Either or both DIST and WHICH may be defined. Copyright (C) Adrian Baddeley, Jens Oehlschlagel and Rolf Turner 2000-2012 Licence: GPL >= 2 $Revision: 1.3 $ $Date: 2013/05/27 02:09:10 $ */ void FNAME(n, kmax, x, y, #ifdef DIST nnd, #endif #ifdef WHICH nnwhich, #endif huge) /* inputs */ int *n, *kmax; double *x, *y, *huge; /* output matrices (npoints * kmax) in ROW MAJOR order */ #ifdef DIST double *nnd; #endif #ifdef WHICH int *nnwhich; #endif { int npoints, maxchunk, nk, nk1, i, k, k1, left, right, unsorted; double d2, d2minK, xi, yi, dx, dy, dy2, hu, hu2, tmp; double *d2min; #ifdef WHICH int *which; int itmp; #endif hu = *huge; hu2 = hu * hu; npoints = *n; nk = *kmax; nk1 = nk - 1; /* create space to store the nearest neighbour distances and indices for the current point */ d2min = (double *) R_alloc((size_t) nk, sizeof(double)); #ifdef WHICH which = (int *) R_alloc((size_t) nk, sizeof(int)); #endif /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < npoints) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > npoints) maxchunk = npoints; for(; i < maxchunk; i++) { #ifdef SPATSTAT_DEBUG Rprintf("\ni=%d\n", i); #endif /* initialise nn distances and indices */ d2minK = hu2; for(k = 0; k < nk; k++) { d2min[k] = hu2; #ifdef WHICH which[k] = -1; #endif } xi = x[i]; yi = y[i]; /* search backward */ for(left = i - 1; left >= 0; --left) { #ifdef SPATSTAT_DEBUG Rprintf("L"); #endif dy = yi - y[left]; dy2 = dy * dy; if(dy2 > d2minK) break; dx = x[left] - xi; d2 = dx * dx + dy2; if (d2 < d2minK) { /* overwrite last entry */ d2min[nk1] = d2; #ifdef WHICH which[nk1] = left; #endif /* bubble sort */ unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } /* adjust maximum distance */ d2minK = d2min[nk1]; } } /* search forward */ for(right = i + 1; right < npoints; ++right) { #ifdef SPATSTAT_DEBUG Rprintf("R"); #endif dy = y[right] - yi; dy2 = dy * dy; if(dy2 > d2minK) break; dx = x[right] - xi; d2 = dx * dx + dy2; if (d2 < d2minK) { /* overwrite last entry */ d2min[nk1] = d2; #ifdef WHICH which[nk1] = right; #endif /* bubble sort */ unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } /* adjust maximum distance */ d2minK = d2min[nk1]; } } /* search finished for point i */ #ifdef SPATSTAT_DEBUG Rprintf("\n"); #endif /* copy nn distances for point i to output matrix in ROW MAJOR order */ for(k = 0; k < nk; k++) { #ifdef DIST nnd[nk * i + k] = sqrt(d2min[k]); #endif #ifdef WHICH nnwhich[nk * i + k] = which[k] + 1; /* R indexing */ #endif } /* end of i loop */ } } } spatstat/src/mhsnoopdef.h0000644000176000001440000000104112333041761015243 0ustar ripleyusers/* mhsnoopdef.h Define structure 'Snoop' containing visual debugger parameters and state $Revision: 1.2 $ $Date: 2013/05/27 02:09:10 $ */ #ifndef R_INTERNALS_H_ #include #endif typedef struct Snoop { int active; /* true or false */ int nextstop; /* jump to iteration number 'nextstop' */ int nexttype; /* jump to the next proposal of type 'nexttype' */ SEXP env; /* environment for exchanging data with R */ SEXP expr; /* callback expression for visual debugger */ } Snoop; #define NO_TYPE -1 spatstat/src/inxyp.c0000755000176000001440000000301412333041761014250 0ustar ripleyusers/* inxyp.c Point-in-polygon test NB: relative to other versions, 'score' is multiplied by 2 (and is an integer) $Revision: 1.7 $ $Date: 2013/09/18 04:20:13 $ */ #include #include "chunkloop.h" void inxyp(x,y,xp,yp,npts,nedges,score,onbndry) /* inputs */ double *x, *y; /* points to be tested */ int *npts; double *xp, *yp; /* polygon vertices */ int *nedges; /* outputs */ int *score; int *onbndry; { int i, j, Npts, Nedges, Ne1, contrib, maxchunk; double x0, y0, x1, y1, dx, dy, xj, yj, xcrit, ycrit; Npts = *npts; Nedges = *nedges; Ne1 = Nedges - 1; x0 = xp[Ne1]; y0 = yp[Ne1]; OUTERCHUNKLOOP(i, Nedges, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Nedges, maxchunk, 16384) { /* visit edge (x0,y0) -> (x1,y1) */ x1 = xp[i]; y1 = yp[i]; dx = x1 - x0; dy = y1 - y0; for(j = 0; j < Npts; j++) { xj = x[j]; yj = y[j]; xcrit = (xj - x0) * (xj - x1); if(xcrit <= 0) { if(xcrit == 0) { contrib = 1; } else { contrib = 2; } ycrit = yj * dx - xj * dy + x0 * dy - y0 * dx; if(dx < 0) { if(ycrit >= 0) score[j] += contrib; onbndry[j] = onbndry[j] | (ycrit == 0); } else if(dx > 0) { if(ycrit < 0) score[j] -= contrib; onbndry[j] = onbndry[j] | (ycrit == 0); } else { if(xj == x0) ycrit = (yj - y0) * (yj - y1); onbndry[j] = onbndry[j] | (ycrit <= 0); } } } /* next edge */ x0 = x1; y0 = y1; } } } spatstat/src/Ediggatsti.c0000755000176000001440000000325212333041761015171 0ustar ripleyusers#include #include #include #include "chunkloop.h" #include "constants.h" /* Ediggatsti.c $Revision: 1.2 $ $Date: 2012/03/28 05:55:38 $ C implementation of 'eval' for DiggleGatesStibbard interaction Assumes point patterns are sorted in increasing order of x coordinate */ void Ediggatsti(nnsource, xsource, ysource, idsource, nntarget, xtarget, ytarget, idtarget, rrho, values) /* inputs */ int *nnsource, *nntarget; double *xsource, *ysource, *xtarget, *ytarget; int *idsource, *idtarget; double *rrho; /* output */ double *values; { int nsource, ntarget, maxchunk, j, i, ileft, idsourcej; double xsourcej, ysourcej, xleft, dx, dy, dx2, d2; double rho, rho2, coef, product; nsource = *nnsource; ntarget = *nntarget; rho = *rrho; rho2 = rho * rho; coef = M_PI_2/rho; if(nsource == 0 || ntarget == 0) return; ileft = 0; OUTERCHUNKLOOP(j, nsource, maxchunk, 65536) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nsource, maxchunk, 65536) { product = 1; xsourcej = xsource[j]; ysourcej = ysource[j]; idsourcej = idsource[j]; /* adjust starting position */ xleft = xsourcej - rho; while((xtarget[ileft] < xleft) && (ileft+1 < ntarget)) ++ileft; /* process from ileft until dx > rho */ for(i=ileft; i < ntarget; i++) { dx = xtarget[i] - xsourcej; dx2 = dx * dx; if(dx2 > rho2) break; if(idtarget[i] != idsourcej) { dy = ytarget[i] - ysourcej; d2 = dx2 + dy * dy; if(d2 <= rho2) product *= sin(sqrt(d2) * coef); } } values[j] = log(product * product); } } } spatstat/src/lookup.c0000755000176000001440000001170612333041761014421 0ustar ripleyusers#include #include #include #include "methas.h" #include "dist2.h" /* Conditional intensity function for a general pairwise interaction process with the pairwise interaction function given by a ``lookup table'', passed through the par argument. */ /* For debugging code, insert the line: #define DEBUG 1 */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct Lookup { int nlook; int equisp; double delta; double rmax; double r2max; double *h; /* values of pair interaction */ double *r; /* r values if not equally spaced */ double *r2; /* r^2 values if not equally spaced */ double *period; int per; } Lookup; /* initialiser function */ Cdata *lookupinit(state, model, algo) State state; Model model; Algor algo; { int i, nlook; double ri; Lookup *lookup; lookup = (Lookup *) R_alloc(1, sizeof(Lookup)); /* Interpret model parameters*/ lookup->nlook = nlook = model.ipar[0]; lookup->equisp = (model.ipar[1] > 0); lookup->delta = model.ipar[2]; lookup->rmax = model.ipar[3]; lookup->r2max = pow(lookup->rmax, 2); /* periodic boundary conditions? */ lookup->period = model.period; lookup->per = (model.period[0] > 0.0); /* If the r-values are equispaced only the h vector is included in ``par'' after ``rmax''; the entries of h then consist of h[0] = par[5], h[1] = par[6], ..., h[k-1] = par[4+k], ..., h[nlook-1] = par[4+nlook]. If the r-values are NOT equispaced then the individual r values are needed and these are included as r[0] = par[5+nlook], r[1] = par[6+nlook], ..., r[k-1] = par[4+nlook+k], ..., r[nlook-1] = par[4+2*nlook]. */ lookup->h = (double *) R_alloc((size_t) nlook, sizeof(double)); for(i = 0; i < nlook; i++) lookup->h[i] = model.ipar[4+i]; if(!(lookup->equisp)) { lookup->r = (double *) R_alloc((size_t) nlook, sizeof(double)); lookup->r2 = (double *) R_alloc((size_t) nlook, sizeof(double)); for(i = 0; i < nlook; i++) { ri = lookup->r[i] = model.ipar[4+nlook+i]; lookup->r2[i] = ri * ri; } } #ifdef DEBUG Rprintf("Exiting lookupinit: nlook=%d, equisp=%d\n", nlook, lookup->equisp); #endif return((Cdata *) lookup); } /* conditional intensity evaluator */ double lookupcif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, nlook, k, kk, ix, ixp1, j; double *x, *y; double u, v; double r2max, d2, d, delta, cifval, ux, vy; Lookup *lookup; lookup = (Lookup *) cdata; r2max = lookup->r2max; delta = lookup->delta; nlook = lookup->nlook; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; cifval = 1.0; if(npts == 0) return(cifval); ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(lookup->equisp) { /* equispaced r values */ if(lookup->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { d = sqrt(dist2(u,v,x[j],y[j],lookup->period)); k = floor(d/delta); if(k < nlook) { if(k < 0) k = 0; cifval *= lookup->h[k]; } } } if(ixp1 < npts) { for(j=ixp1; jperiod)); k = floor(d/delta); if(k < nlook) { if(k < 0) k = 0; cifval *= lookup->h[k]; } } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { d = hypot(u - x[j], v-y[j]); k = floor(d/delta); if(k < nlook) { if(k < 0) k = 0; cifval *= lookup->h[k]; } } } if(ixp1 < npts) { for(j=ixp1; jh[k]; } } } } } else { /* non-equispaced r values */ if(lookup->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { d2 = dist2(u,v,x[j],y[j],lookup->period); if(d2 < r2max) { for(kk = 0; kk < nlook && lookup->r2[kk] <= d2; kk++) ; k = (kk == 0) ? 0 : kk-1; cifval *= lookup->h[k]; } } } if(ixp1 < npts) { for(j=ixp1; jperiod); if(d2 < r2max) { for(kk = 0; kk < nlook && lookup->r2[kk] <= d2; kk++) ; k = (kk == 0) ? 0 : kk-1; cifval *= lookup->h[k]; } } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { ux = u - x[j]; vy = v - y[j]; d2 = ux * ux + vy * vy; if(d2 < r2max) { for(kk = 0; kk < nlook && lookup->r2[kk] <= d2; kk++) ; k = (kk == 0) ? 0 : kk-1; cifval *= lookup->h[k]; } } } if(ixp1 < npts) { for(j=ixp1; jr2[kk] <= d2; kk++) ; k = (kk == 0) ? 0 : kk-1; cifval *= lookup->h[k]; } } } } } return cifval; } Cifns LookupCifns = { &lookupinit, &lookupcif, (updafunptr) NULL, NO}; spatstat/src/straushm.c0000755000176000001440000001550112333041761014753 0ustar ripleyusers#include #include #include "methas.h" #include "dist2.h" /* for debugging code, include #define DEBUG 1 */ /* Conditional intensity computation for Multitype Strauss hardcore process */ /* NOTE: types (marks) are numbered from 0 to ntypes-1 */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct MultiStraussHard { int ntypes; double *gamma; /* gamma[i,j] = gamma[i+ntypes*j] for i,j = 0... ntypes-1 */ double *rad; /* rad[i,j] = rad[j+ntypes*i] for i,j = 0... ntypes-1 */ double *hc; /* hc[i,j] = hc[j+ntypes*i] for i,j = 0... ntypes-1 */ double *rad2; /* squared radii */ double *hc2; /* squared radii */ double *rad2hc2; /* r^2 - h^2 */ double range2; /* square of interaction range */ double *loggamma; /* logs of gamma[i,j] */ double *period; int *hard; /* hard[i,j] = 1 if gamma[i,j] ~~ 0 */ int *kount; /* space for kounting pairs of each type */ int per; } MultiStraussHard; /* initialiser function */ Cdata *straushminit(state, model, algo) State state; Model model; Algor algo; { int i, j, ntypes, n2, hard; double g, r, h, r2, h2, logg, range2; MultiStraussHard *multistrausshard; multistrausshard = (MultiStraussHard *) R_alloc(1, sizeof(MultiStraussHard)); multistrausshard->ntypes = ntypes = model.ntypes; n2 = ntypes * ntypes; #ifdef DEBUG Rprintf("initialising space for %d types\n", ntypes); #endif /* Allocate space for parameters */ multistrausshard->gamma = (double *) R_alloc((size_t) n2, sizeof(double)); multistrausshard->rad = (double *) R_alloc((size_t) n2, sizeof(double)); multistrausshard->hc = (double *) R_alloc((size_t) n2, sizeof(double)); /* Allocate space for transformed parameters */ multistrausshard->rad2 = (double *) R_alloc((size_t) n2, sizeof(double)); multistrausshard->hc2 = (double *) R_alloc((size_t) n2, sizeof(double)); multistrausshard->rad2hc2 = (double *) R_alloc((size_t) n2, sizeof(double)); multistrausshard->loggamma = (double *) R_alloc((size_t) n2, sizeof(double)); multistrausshard->hard = (int *) R_alloc((size_t) n2, sizeof(int)); /* Allocate scratch space for counts of each pair of types */ multistrausshard->kount = (int *) R_alloc((size_t) n2, sizeof(int)); /* Copy and process model parameters*/ /* ipar will contain n^2 values of gamma, then n^2 values of r, then n^2 values of h */ range2 = 0.0; for(i = 0; i < ntypes; i++) { for(j = 0; j < ntypes; j++) { g = model.ipar[ i + j*ntypes]; r = model.ipar[ n2 + i + j*ntypes]; h = model.ipar[2*n2 + i + j*ntypes]; r2 = r * r; h2 = h * h; hard = (g < DOUBLE_EPS); logg = (hard) ? 0 : log(g); MAT(multistrausshard->gamma, i, j, ntypes) = g; MAT(multistrausshard->rad, i, j, ntypes) = r; MAT(multistrausshard->hc, i, j, ntypes) = h; MAT(multistrausshard->rad2, i, j, ntypes) = r2; MAT(multistrausshard->hc2, i, j, ntypes) = h2; MAT(multistrausshard->rad2hc2, i, j, ntypes) = r2-h2; MAT(multistrausshard->hard, i, j, ntypes) = hard; MAT(multistrausshard->loggamma, i, j, ntypes) = logg; if(r2 > range2) range2 = r2; } } multistrausshard->range2 = range2; /* periodic boundary conditions? */ multistrausshard->period = model.period; multistrausshard->per = (model.period[0] > 0.0); #ifdef DEBUG Rprintf("end initialiser\n"); #endif return((Cdata *) multistrausshard); } /* conditional intensity evaluator */ double straushmcif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ntypes, kount, ix, ixp1, j, mrk, mrkj, m1, m2; int *marks; double *x, *y; double u, v, lg; double d2, cifval; double range2; double *period; MultiStraussHard *multistrausshard; DECLARE_CLOSE_D2_VARS; multistrausshard = (MultiStraussHard *) cdata; range2 = multistrausshard->range2; period = multistrausshard->period; u = prop.u; v = prop.v; mrk = prop.mrk; ix = prop.ix; x = state.x; y = state.y; marks = state.marks; npts = state.npts; #ifdef DEBUG Rprintf("computing cif: u=%lf, v=%lf, mrk=%d\n", u, v, mrk); #endif cifval = 1.0; if(npts == 0) return(cifval); ntypes = multistrausshard->ntypes; #ifdef DEBUG Rprintf("initialising pair counts\n"); #endif /* initialise pair counts */ for(m1 = 0; m1 < ntypes; m1++) for(m2 = 0; m2 < ntypes; m2++) MAT(multistrausshard->kount, m1, m2, ntypes) = 0; /* compile pair counts */ #ifdef DEBUG Rprintf("compiling pair counts\n"); #endif ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(multistrausshard->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_PERIODIC_D2(u,v,x[j],y[j],period,range2,d2)) { mrkj = marks[j]; if(d2 < MAT(multistrausshard->rad2, mrk, mrkj, ntypes)) { if(d2 < MAT(multistrausshard->hc2, mrk, mrkj, ntypes)) { cifval = 0.0; return(cifval); } MAT(multistrausshard->kount, mrk, mrkj, ntypes)++; } } } } if(ixp1 < npts) { for(j=ixp1; jrad2, mrk, mrkj, ntypes)) { if(d2 < MAT(multistrausshard->hc2, mrk, mrkj, ntypes)) { cifval = 0.0; return(cifval); } MAT(multistrausshard->kount, mrk, mrkj, ntypes)++; } } } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_D2(u, v, x[j], y[j], range2, d2)) { mrkj = marks[j]; if(d2 < MAT(multistrausshard->rad2, mrk, mrkj, ntypes)) { if(d2 < MAT(multistrausshard->hc2, mrk, mrkj, ntypes)) { cifval = 0.0; return(cifval); } MAT(multistrausshard->kount, mrk, mrkj, ntypes)++; } } } } if(ixp1 < npts) { for(j=ixp1; jrad2, mrk, mrkj, ntypes)) { if(d2 < MAT(multistrausshard->hc2, mrk, mrkj, ntypes)) { cifval = 0.0; return(cifval); } MAT(multistrausshard->kount, mrk, mrkj, ntypes)++; } } } } } #ifdef DEBUG Rprintf("multiplying cif factors\n"); #endif /* multiply cif value by pair potential */ for(m1 = 0; m1 < ntypes; m1++) { for(m2 = 0; m2 < ntypes; m2++) { kount = MAT(multistrausshard->kount, m1, m2, ntypes); if(MAT(multistrausshard->hard, m1, m2, ntypes)) { if(kount > 0) { cifval = 0.0; return(cifval); } } else { lg = MAT(multistrausshard->loggamma, m1, m2, ntypes); cifval *= exp(lg * kount); } } } #ifdef DEBUG Rprintf("returning positive cif\n"); #endif return cifval; } Cifns MultiStraussHardCifns = { &straushminit, &straushmcif, (updafunptr) NULL, YES}; spatstat/src/idw.c0000755000176000001440000000703412333041761013672 0ustar ripleyusers/* idw.c Inverse-distance weighted smoothing $Revision: 1.8 $ $Date: 2013/05/27 02:09:10 $ */ #include #include #include "chunkloop.h" #define MAT(X,I,J,NROW) (X)[(J) + (NROW) * (I)] /* inverse-distance smoothing from data points onto pixel grid */ void Cidw(x, y, v, n, xstart, xstep, nx, ystart, ystep, ny, power, num, den, rat) double *x, *y, *v; /* data points and values */ int *n; double *xstart, *xstep, *ystart, *ystep; /* pixel grid */ int *nx, *ny; double *power; /* exponent for IDW */ double *num, *den, *rat; /* output arrays - assumed initialised 0 */ { int N, i, Nx, Ny, ix, iy; double xg, yg, x0, dx, y0, dy, pon2, d2, w; N = *n; Nx = *nx; Ny = *ny; x0 = *xstart; y0 = *ystart; dx = *xstep; dy = *ystep; pon2 = (*power)/2.0; if(pon2 == 1.0) { /* slightly faster code when power=2 */ for(ix = 0, xg=x0; ix < Nx; ix++, xg+=dx) { if(ix % 256 == 0) R_CheckUserInterrupt(); for(iy = 0, yg=y0; iy < Ny; iy++, yg+=dy) { /* loop over data points, accumulating numerator and denominator */ for(i = 0; i < N; i++) { d2 = (xg - x[i]) * (xg - x[i]) + (yg - y[i]) * (yg - y[i]); w = 1.0/d2; MAT(num, ix, iy, Ny) += w * v[i]; MAT(den, ix, iy, Ny) += w; } /* compute ratio */ MAT(rat, ix, iy, Ny) = MAT(num, ix, iy, Ny)/MAT(den, ix, iy, Ny); } } } else { /* general case */ for(ix = 0, xg=x0; ix < Nx; ix++, xg+=dx) { if(ix % 256 == 0) R_CheckUserInterrupt(); for(iy = 0, yg=y0; iy < Ny; iy++, yg+=dy) { /* loop over data points, accumulating numerator and denominator */ for(i = 0; i < N; i++) { d2 = (xg - x[i]) * (xg - x[i]) + (yg - y[i]) * (yg - y[i]); w = 1.0/pow(d2, pon2); MAT(num, ix, iy, Ny) += w * v[i]; MAT(den, ix, iy, Ny) += w; } /* compute ratio */ MAT(rat, ix, iy, Ny) = MAT(num, ix, iy, Ny)/MAT(den, ix, iy, Ny); } } } } /* Leave-one-out IDW at data points only */ void idwloo(x, y, v, n, power, num, den, rat) double *x, *y, *v; /* data points and values */ int *n; double *power; /* exponent for IDW */ double *num, *den, *rat; /* output vectors - assumed initialised 0 */ { int N, i, j, maxchunk; double xi, yi, d2, w, pon2; N = *n; pon2 = (*power)/2.0; if(pon2 == 1.0) { /* slightly faster code when power=2 */ OUTERCHUNKLOOP(i, N, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, N, maxchunk, 16384) { xi = x[i]; yi = y[i]; if(i > 0) { for(j = 0; j < i; j++) { d2 = (xi - x[j]) * (xi - x[j]) + (yi - y[j]) * (yi - y[j]); w = 1.0/d2; num[i] += w * v[j]; den[i] += w; } } if(i < N-1) { for(j = i+1; j < N; j++) { d2 = (xi - x[j]) * (xi - x[j]) + (yi - y[j]) * (yi - y[j]); w = 1.0/d2; num[i] += w * v[j]; den[i] += w; } } /* compute ratio */ rat[i] = num[i]/den[i]; } } } else { /* general case */ OUTERCHUNKLOOP(i, N, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, N, maxchunk, 16384) { xi = x[i]; yi = y[i]; if(i > 0) { for(j = 0; j < i; j++) { d2 = (xi - x[j]) * (xi - x[j]) + (yi - y[j]) * (yi - y[j]); w = 1.0/pow(d2, pon2); num[i] += w * v[j]; den[i] += w; } } if(i < N-1) { for(j = i+1; j < N; j++) { d2 = (xi - x[j]) * (xi - x[j]) + (yi - y[j]) * (yi - y[j]); w = 1.0/pow(d2, pon2); num[i] += w * v[j]; den[i] += w; } } /* compute ratio */ rat[i] = num[i]/den[i]; } } } } spatstat/src/knngrid.h0000644000176000001440000001272412333041761014547 0ustar ripleyusers #if (1 == 0) /* knngrid.h Code template for C functions k-nearest neighbours (k > 1) of each grid point THE FOLLOWING CODE ASSUMES THAT POINT PATTERN (xp, yp) IS SORTED IN ASCENDING ORDER OF x COORDINATE This code is #included multiple times in knngrid.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour Either or both DIST and WHICH may be defined. Copyright (C) Adrian Baddeley, Jens Oehlschlagel and Rolf Turner 2000-2013 Licence: GPL >= 2 $Revision: 1.5 $ $Date: 2013/10/22 01:33:12 $ */ #endif #undef PRINTALOT void FNAME(nx, x0, xstep, ny, y0, ystep, /* pixel grid dimensions */ np, xp, yp, /* data points */ kmax, nnd, nnwhich, huge) /* inputs */ int *nx, *ny, *np; double *x0, *xstep, *y0, *ystep, *huge; double *xp, *yp; int *kmax; /* outputs */ double *nnd; int *nnwhich; /* some inputs + outputs are not used in all functions */ { int Nxcol, Nyrow; int i, j, ijpos; int Npoints, Nk, Nk1; int mleft, mright, mwhich, lastmwhich, unsorted, k, k1; double X0, Y0, Xstep, Ystep; double d2, d2minK, xj, yi, dx, dy, dx2, hu, hu2, tmp; double *d2min; #ifdef WHICH int *which; int itmp; #endif Nxcol = *nx; Nyrow = *ny; Npoints = *np; Nk = *kmax; hu = *huge; X0 = *x0; Y0 = *y0; Xstep = *xstep; Ystep = *ystep; Nk1 = Nk - 1; hu2 = hu * hu; if(Npoints == 0) return; lastmwhich = 0; /* create space to store the nearest neighbour distances and indices for the current grid point */ d2min = (double *) R_alloc((size_t) Nk, sizeof(double)); #ifdef WHICH which = (int *) R_alloc((size_t) Nk, sizeof(int)); #endif /* loop over pixels */ for(j = 0, xj = X0; j < Nxcol; j++, xj += Xstep) { R_CheckUserInterrupt(); #ifdef PRINTALOT Rprintf("j=%d, xj=%lf\n", j, xj); #endif for(i = 0, yi = Y0; i < Nyrow; i++, yi += Ystep) { #ifdef PRINTALOT Rprintf("\ti=%d, yi = %lf\n", i, yi); #endif /* initialise nn distances and indices */ d2minK = hu2; for(k = 0; k < Nk; k++) { d2min[k] = hu2; #ifdef WHICH which[k] = -1; #endif } if(lastmwhich < Npoints) { /* search forward from previous nearest neighbour */ for(mright = lastmwhich; mright < Npoints; ++mright) { dx = xp[mright] - xj; dx2 = dx * dx; #ifdef PRINTALOT Rprintf("\t\t%d\n", mright); #endif if(dx2 > d2minK) /* note that dx2 >= d2minK could break too early */ break; dy = yp[mright] - yi; d2 = dy * dy + dx2; if (d2 < d2minK) { #ifdef PRINTALOT Rprintf("\t\t\tNeighbour: d2=%lf\n", d2); #endif /* overwrite last entry in list of neighbours */ d2min[Nk1] = d2; mwhich = mright; #ifdef WHICH which[Nk1] = mright; #endif /* bubble sort */ unsorted = YES; for(k = Nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } /* adjust maximum distance */ d2minK = d2min[Nk1]; #ifdef PRINTALOT Rprintf("\t\t\tUpdated d2minK=%lf\n", d2minK); for(k = 0; k < Nk; k++) Rprintf("\t\t\t\td2min[%d]=%lf\n", k, d2min[k]); #ifdef WHICH for(k = 0; k < Nk; k++) Rprintf("\t\t\t\twhich[%d]=%d\n", k, which[k]); #endif #endif } } /* end forward search */ } if(lastmwhich > 0) { /* search backward from previous nearest neighbour */ for(mleft = lastmwhich - 1; mleft >= 0; --mleft) { dx = xj - xp[mleft]; dx2 = dx * dx; #ifdef PRINTALOT Rprintf("\t\t%d\n", mleft); #endif if(dx2 > d2minK) /* note that dx2 >= d2minK could break too early */ break; dy = yp[mleft] - yi; d2 = dy * dy + dx2; if (d2 < d2minK) { #ifdef PRINTALOT Rprintf("\t\t\tNeighbour: d2=%lf\n", d2); #endif /* overwrite last entry in list of neighbours */ mwhich = mleft; d2min[Nk1] = d2; #ifdef WHICH which[Nk1] = mleft; #endif /* bubble sort */ unsorted = YES; for(k = Nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } /* adjust maximum distance */ d2minK = d2min[Nk1]; #ifdef PRINTALOT Rprintf("\t\t\tUpdated d2minK=%lf\n", d2minK); for(k = 0; k < Nk; k++) Rprintf("\t\t\t\td2min[%d]=%lf\n", k, d2min[k]); #ifdef WHICH for(k = 0; k < Nk; k++) Rprintf("\t\t\t\twhich[%d]=%d\n", k, which[k]); #endif #endif } } /* end backward search */ } /* remember index of most recently-encountered neighbour */ lastmwhich = mwhich; #ifdef PRINTALOT Rprintf("\t\tlastmwhich=%d\n", lastmwhich); #endif /* copy nn distances for grid point (i, j) to output array nnd[ , i, j] */ ijpos = Nk * (i + j * Nyrow); for(k = 0; k < Nk; k++) { #ifdef DIST nnd[ijpos + k] = sqrt(d2min[k]); #endif #ifdef WHICH nnwhich[ijpos + k] = which[k] + 1; /* R indexing */ #endif } /* end of loop over points i */ } } } spatstat/src/strauss.c0000755000176000001440000000474312333041761014617 0ustar ripleyusers#include #include #include "methas.h" #include "dist2.h" /* Conditional intensity computation for Strauss process */ /* Format for storage of parameters and precomputed/auxiliary data */ typedef struct Strauss { double gamma; double r; double loggamma; double r2; double *period; int hard; int per; } Strauss; /* initialiser function */ Cdata *straussinit(state, model, algo) State state; Model model; Algor algo; { /* create storage for model parameters */ Strauss *strauss; strauss = (Strauss *) R_alloc(1, sizeof(Strauss)); /* Interpret model parameters*/ strauss->gamma = model.ipar[0]; strauss->r = model.ipar[1]; /* No longer passed as r^2 */ strauss->r2 = strauss->r * strauss->r; strauss->period = model.period; #ifdef MHDEBUG Rprintf("Initialising Strauss gamma=%lf, r=%lf\n", strauss->gamma, strauss->r); #endif /* is the model numerically equivalent to hard core ? */ strauss->hard = (strauss->gamma < DOUBLE_EPS); strauss->loggamma = (strauss->hard) ? 0 : log(strauss->gamma); /* periodic boundary conditions? */ strauss->per = (model.period[0] > 0.0); return((Cdata *) strauss); } /* conditional intensity evaluator */ double strausscif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, kount, ix, ixp1, j; double *x, *y; double u, v; double r2, cifval; Strauss *strauss; DECLARE_CLOSE_VARS; strauss = (Strauss *) cdata; r2 = strauss->r2; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; if(npts == 0) return((double) 1.0); kount = 0; ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(strauss->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_PERIODIC(u,v,x[j],y[j],strauss->period, r2)) ++kount; } } if(ixp1 < npts) { for(j=ixp1; jperiod, r2)) ++kount; } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE(u,v,x[j],y[j], r2)) ++kount; } } if(ixp1 < npts) { for(j=ixp1; jhard) { if(kount > 0) cifval = 0.0; else cifval = 1.0; } else cifval = exp((strauss->loggamma) * kount); return cifval; } Cifns StraussCifns = { &straussinit, &strausscif, (updafunptr) NULL, NO}; spatstat/src/call3d.c0000755000176000001440000002474712333041761014263 0ustar ripleyusers/* $Revision: 1.5 $ $Date: 2010/10/24 10:57:02 $ R interface Pass data between R and internally-defined data structures # ///////////////////////////////////////////// # AUTHOR: Adrian Baddeley, CWI, Amsterdam, 1991. # # MODIFIED BY: Adrian Baddeley, Perth 2009 # # This software is distributed free # under the conditions that # (1) it shall not be incorporated # in software that is subsequently sold # (2) the authorship of the software shall # be acknowledged in any publication that # uses results generated by the software # (3) this notice shall remain in place # in each file. # ////////////////////////////////////////////// */ #include #include "geom3.h" #include "functable.h" #undef DEBUG #ifdef DEBUG #define DEBUGMESSAGE(S) Rprintf(S); #else #define DEBUGMESSAGE(S) #endif void g3one(Point *p, int n, Box *b, Ftable *g); void g3three(Point *p, int n, Box *b, Ftable *g); void g3cen(Point *p, int n, Box *b, H4table *count); void k3trans(Point *p, int n, Box *b, Ftable *k); void k3isot(Point *p, int n, Box *b, Ftable *k); void pcf3trans(Point *p, int n, Box *b, Ftable *pcf, double delta); void pcf3isot(Point *p, int n, Box *b, Ftable *pcf, double delta); void phatminus(Point *p, int n, Box *b, double vside, Itable *count); void phatnaive(Point *p, int n, Box *b, double vside, Itable *count); void p3hat4(Point *p, int n, Box *b, double vside, H4table *count); /* ALLOCATION OF SPACE FOR STRUCTURES/ARRAYS We have defined an alloc() and free() function for each type. However, the free() functions currently do nothing, because we use R_alloc to allocate transient space, which is freed automatically by R. */ Ftable * allocFtable(n) /* allocate function table of size n */ int n; { Ftable *x; x = (Ftable *) R_alloc(1, sizeof(Ftable)); x->n = n; x->f = (double *) R_alloc(n, sizeof(double)); x->num = (double *) R_alloc(n, sizeof(double)); x->denom = (double *) R_alloc(n, sizeof(double)); return(x); } void freeFtable(x) Ftable *x; { } Itable * allocItable(n) int n; { Itable *x; x = (Itable *) R_alloc(1, sizeof(Itable)); x->n = n; x->num = (int *) R_alloc(n, sizeof(int)); x->denom = (int *) R_alloc(n, sizeof(int)); return(x); } void freeItable(x) Itable *x; { } H4table * allocH4table(n) int n; { H4table *x; x = (H4table *) R_alloc(1, sizeof(H4table)); x->n = n; x->obs = (int *) R_alloc(n, sizeof(int)); x->nco = (int *) R_alloc(n, sizeof(int)); x->cen = (int *) R_alloc(n, sizeof(int)); x->ncc = (int *) R_alloc(n, sizeof(int)); return(x); } void freeH4table(x) H4table *x; { } Box * allocBox() /* I know this is ridiculous but it's consistent. */ { Box *b; b = (Box *) R_alloc(1, sizeof(Box)); return(b); } void freeBox(x) Box *x; { } Point * allocParray(n) /* allocate array of n Points */ int n; { Point *p; p = (Point *) R_alloc(n, sizeof(Point)); return(p); } void freeParray(x) Point *x; { } /* CREATE AND INITIALISE DATA STORAGE */ Ftable * MakeFtable(t0, t1, n) double *t0, *t1; int *n; { Ftable *tab; int i, nn; nn = *n; tab = allocFtable(nn); tab->t0 = *t0; tab->t1 = *t1; for(i = 0; i < nn; i++) { tab->f[i] = 0.0; tab->num[i] = 0; tab->denom[i] = 0; } return(tab); } Itable * MakeItable(t0, t1, n) double *t0, *t1; int *n; { Itable *tab; int i, nn; nn = *n; tab = allocItable(nn); tab->t0 = *t0; tab->t1 = *t1; for(i = 0; i < nn; i++) { tab->num[i] = 0; tab->denom[i] = 0; } return(tab); } H4table * MakeH4table(t0, t1, n) double *t0, *t1; int *n; { H4table *tab; int i, nn; nn = *n; tab = allocH4table(nn); tab->t0 = *t0; tab->t1 = *t1; for(i = 0; i < nn; i++) { tab->obs[i] = 0; tab->nco[i] = 0; tab->cen[i] = 0; tab->ncc[i] = 0; } tab->upperobs = 0; tab->uppercen = 0; return(tab); } /* CONVERSION OF DATA TYPES R -> internal including allocation of internal data types as needed */ Point * RtoPointarray(x,y,z,n) double *x, *y, *z; int *n; { int i, nn; Point *p; nn = *n; p = allocParray(nn); for(i = 0; i < nn; i++) { p[i].x = x[i]; p[i].y = y[i]; p[i].z = z[i]; } return(p); } Box * RtoBox(x0, x1, y0, y1, z0, z1) double *x0, *x1, *y0, *y1, *z0, *z1; { Box *b; b = allocBox(); b->x0 = *x0; b->x1 = *x1; b->y0 = *y0; b->y1 = *y1; b->z0 = *z0; b->z1 = *z1; return(b); } /* CONVERSION OF DATA TYPES internal -> R Note: it can generally be assumed that the R arguments are already allocated vectors of correct length, so we do not allocate them. */ void FtabletoR(tab, t0, t1, n, f, num, denom) /* internal */ Ftable *tab; /* R representation */ double *t0, *t1; int *n; double *f, *num, *denom; { int i; *t0 = tab->t0; *t1 = tab->t1; *n = tab->n; for(i = 0; i < tab->n; i++) { f[i] = tab->f[i]; num[i] = tab->num[i]; denom[i] = tab->denom[i]; } freeFtable(tab); } void ItabletoR(tab, t0, t1, m, num, denom) /* internal */ Itable *tab; /* R representation */ double *t0, *t1; int *m; int *num, *denom; { int i; *t0 = tab->t0; *t1 = tab->t1; *m = tab->n; for(i = 0; i < tab->n; i++) { num[i] = tab->num[i]; denom[i] = tab->denom[i]; } freeItable(tab); } void H4tabletoR(tab, t0, t1, m, obs, nco, cen, ncc, upperobs, uppercen) /* internal */ H4table *tab; /* R representation */ double *t0, *t1; int *m; int *obs, *nco, *cen, *ncc; int *upperobs, *uppercen; { int i; *t0 = tab->t0; *t1 = tab->t1; *m = tab->n; *upperobs = tab->upperobs; *uppercen = tab->uppercen; for(i = 0; i < tab->n; i++) { obs[i] = tab->obs[i]; nco[i] = tab->nco[i]; cen[i] = tab->cen[i]; ncc[i] = tab->ncc[i]; } freeH4table(tab); } /* R CALLING INTERFACE These routines are called from R by > .C("routine-name", ....) */ void RcallK3(x,y,z, n, x0, x1, y0, y1, z0, z1, t0, t1, m, f, num, denom, method) double *x, *y, *z; /* points */ int *n; double *x0, *x1, /* box */ *y0, *y1, *z0, *z1; double *t0, *t1; /* Ftable */ int *m; double *f, *num, *denom; int *method; { Point *p; Box *b; Ftable *tab; p = RtoPointarray(x, y, z, n); b = RtoBox(x0, x1, y0, y1, z0, z1); tab = MakeFtable(t0, t1, m); switch((int) *method) { case 0: k3trans(p, (int) *n, b, tab); break; case 1: k3isot(p, (int) *n, b, tab); break; default: Rprintf("Method %d not implemented: defaults to 0\n", *method); k3trans(p, (int) *n, b, tab); break; } FtabletoR(tab, t0, t1, m, f, num, denom); } void RcallG3(x,y,z, n, x0, x1, y0, y1, z0, z1, t0, t1, m, f, num, denom, method) double *x, *y, *z; /* points */ int *n; double *x0, *x1, /* box */ *y0, *y1, *z0, *z1; double *t0, *t1; /* Ftable */ int *m; double *f, *num, *denom; int *method; { Point *p; Box *b; Ftable *tab; p = RtoPointarray(x, y, z, n); b = RtoBox(x0, x1, y0, y1, z0, z1); tab = MakeFtable(t0, t1, m); switch(*method) { case 1: g3one(p, (int) *n, b, tab); break; case 3: g3three(p, (int) *n, b, tab); break; default: Rprintf("Method %d not implemented: defaults to 3\n", *method); g3three(p, (int) *n, b, tab); } FtabletoR(tab, t0, t1, m, f, num, denom); } void RcallG3cen(x,y,z, n, x0, x1, y0, y1, z0, z1, t0, t1, m, obs, nco, cen, ncc, upperobs, uppercen) double *x, *y, *z; /* points */ int *n; double *x0, *x1, /* box */ *y0, *y1, *z0, *z1; double *t0, *t1; int *m; /* H4table */ int *obs, *nco, *cen, *ncc; int *upperobs, *uppercen; { Point *p; Box *b; H4table *count; DEBUGMESSAGE("Inside RcallG3cen\n") p = RtoPointarray(x, y, z, n); b = RtoBox(x0, x1, y0, y1, z0, z1); count = MakeH4table(t0, t1, m); g3cen(p, (int) *n, b, count); H4tabletoR(count, t0, t1, m, obs, nco, cen, ncc, upperobs, uppercen); DEBUGMESSAGE("Leaving RcallG3cen\n") } void RcallF3(x,y,z, n, x0, x1, y0, y1, z0, z1, vside, t0, t1, m, num, denom, method) double *x, *y, *z; /* points */ int *n; double *x0, *x1, /* box */ *y0, *y1, *z0, *z1; double *vside; double *t0, *t1; int *m; /* Itable */ int *num, *denom; int *method; { Point *p; Box *b; Itable *count; DEBUGMESSAGE("Inside Rcall_f3\n") p = RtoPointarray(x, y, z, n); b = RtoBox(x0, x1, y0, y1, z0, z1); count = MakeItable(t0, t1, m); switch((int) *method) { case 0: phatnaive(p, (int) *n, b, *vside, count); break; case 1: phatminus(p, (int) *n, b, *vside, count); break; default: Rprintf("Method %d not recognised: defaults to 1\n", *method); phatminus(p, (int) *n, b, *vside, count); } ItabletoR(count, t0, t1, m, num, denom); DEBUGMESSAGE("Leaving Rcall_f3\n") } void RcallF3cen(x,y,z, n, x0, x1, y0, y1, z0, z1, vside, t0, t1, m, obs, nco, cen, ncc, upperobs, uppercen) double *x, *y, *z; /* points */ int *n; double *x0, *x1, /* box */ *y0, *y1, *z0, *z1; double *vside; double *t0, *t1; int *m; /* H4table */ int *obs, *nco, *cen, *ncc; int *upperobs, *uppercen; { Point *p; Box *b; H4table *count; DEBUGMESSAGE("Inside Rcallf3cen\n") p = RtoPointarray(x, y, z, n); b = RtoBox(x0, x1, y0, y1, z0, z1); count = MakeH4table(t0, t1, m); p3hat4(p, (int) *n, b, *vside, count); H4tabletoR(count, t0, t1, m, obs, nco, cen, ncc, upperobs, uppercen); DEBUGMESSAGE("Leaving Rcallf3cen\n") } void Rcallpcf3(x,y,z, n, x0, x1, y0, y1, z0, z1, t0, t1, m, f, num, denom, method, delta) double *x, *y, *z; /* points */ int *n; double *x0, *x1, /* box */ *y0, *y1, *z0, *z1; double *t0, *t1; /* Ftable */ int *m; double *f, *num, *denom; int *method; double *delta; /* Epanechnikov kernel halfwidth */ { Point *p; Box *b; Ftable *tab; p = RtoPointarray(x, y, z, n); b = RtoBox(x0, x1, y0, y1, z0, z1); tab = MakeFtable(t0, t1, m); switch((int) *method) { case 0: pcf3trans(p, (int) *n, b, tab, (double) *delta); break; case 1: pcf3isot(p, (int) *n, b, tab, (double) *delta); break; default: Rprintf("Method %d not implemented: defaults to 0\n", *method); pcf3trans(p, (int) *n, b, tab, (double) *delta); break; } FtabletoR(tab, t0, t1, m, f, num, denom); } spatstat/src/veegraf.c0000644000176000001440000000677112333041761014532 0ustar ripleyusers/* veegraf.c $Revision: 1.2 $ $Date: 2013/05/21 08:11:27 $ Given the edges of a graph, determine all "Vees" i.e. triples (i, j, k) where i ~ j and i ~ k. */ #include #include #include #include "chunkloop.h" #undef DEBUGVEE SEXP graphVees(SEXP nv, /* number of vertices */ SEXP iedge, /* vectors of indices of ends of each edge */ SEXP jedge) /* all arguments are integer */ /* Edges should NOT be repeated symmetrically. Indices need not be sorted. */ { int Nv, Ne; int *ie, *je; /* edges */ int *it, *jt, *kt; /* vectors of indices of triples */ int Nt, Ntmax; /* number of triples */ int Nj; int *jj; /* scratch storage */ int i, j, k, m, mj, mk, Nmore, maxchunk; /* output */ SEXP iTout, jTout, kTout, out; int *ito, *jto, *kto; /* =================== Protect R objects from garbage collector ======= */ PROTECT(nv = AS_INTEGER(nv)); PROTECT(iedge = AS_INTEGER(iedge)); PROTECT(jedge = AS_INTEGER(jedge)); /* That's 3 protected objects */ /* numbers of vertices and edges */ Nv = *(INTEGER_POINTER(nv)); Ne = LENGTH(iedge); /* input arrays */ ie = INTEGER_POINTER(iedge); je = INTEGER_POINTER(jedge); /* initialise storage (with a guess at max size) */ Ntmax = 3 * Ne; it = (int *) R_alloc(Ntmax, sizeof(int)); jt = (int *) R_alloc(Ntmax, sizeof(int)); kt = (int *) R_alloc(Ntmax, sizeof(int)); Nt = 0; /* initialise scratch storage */ jj = (int *) R_alloc(Ne, sizeof(int)); XOUTERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { R_CheckUserInterrupt(); XINNERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { #ifdef DEBUGVEE Rprintf("i=%d ---------- \n", i); #endif /* Find Vee triples with apex 'i' */ /* First, find all vertices j connected to i */ Nj = 0; for(m = 0; m < Ne; m++) { if(ie[m] == i) { jj[Nj] = je[m]; Nj++; } else if(je[m] == i) { jj[Nj] = ie[m]; Nj++; } } /* save triples (i,j,k) */ #ifdef DEBUGVEE Rprintf("Nj = %d\n", Nj); #endif if(Nj > 1) { #ifdef DEBUGVEE Rprintf("i=%d\njj=\n", i); for(mj = 0; mj < Nj; mj++) Rprintf("%d ", jj[mj]); Rprintf("\n\n"); #endif for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; /* add (i, j, k) to list of triangles */ if(Nt >= Ntmax) { /* overflow - allocate more space */ Nmore = 2 * Ntmax; #ifdef DEBUGVEE Rprintf("Doubling space from %d to %d\n", Ntmax, Nmore); #endif it = (int *) S_realloc((char *) it, Nmore, Ntmax, sizeof(int)); jt = (int *) S_realloc((char *) jt, Nmore, Ntmax, sizeof(int)); kt = (int *) S_realloc((char *) kt, Nmore, Ntmax, sizeof(int)); Ntmax = Nmore; } it[Nt] = i; jt[Nt] = j; kt[Nt] = k; Nt++; } } } } } /* allocate space for output */ PROTECT(iTout = NEW_INTEGER(Nt)); PROTECT(jTout = NEW_INTEGER(Nt)); PROTECT(kTout = NEW_INTEGER(Nt)); PROTECT(out = NEW_LIST(3)); /* that's 3+4=7 protected objects */ ito = INTEGER_POINTER(iTout); jto = INTEGER_POINTER(jTout); kto = INTEGER_POINTER(kTout); /* copy triplet indices to output vectors */ for(m = 0; m < Nt; m++) { ito[m] = it[m]; jto[m] = jt[m]; kto[m] = kt[m]; } /* insert output vectors in output list */ SET_VECTOR_ELT(out, 0, iTout); SET_VECTOR_ELT(out, 1, jTout); SET_VECTOR_ELT(out, 2, kTout); UNPROTECT(7); return(out); } spatstat/src/raster.h0000755000176000001440000000474712333041761014424 0ustar ripleyusers/* raster.h Definition of raster structures & operations requires (for floor()) $Revision: 1.3 $ $Date: 2004/11/15 19:25:11 $ */ typedef struct Raster{ /* array of data */ char *data; /* coerced to appropriate type */ int nrow; /* dimensions of entire array */ int ncol; int length; int rmin; /* position of valid subrectangle */ int rmax; int cmin; int cmax; /* definition of mapping into continuous space */ double x0; /* position of entry (rmin,cmin) */ double y0; double x1; /* position of entry (rmax,cmax) */ double y1; double xstep; /* x increment for each column step */ double ystep; /* y increment for each row step */ /* xstep = (x1 - x0)/(cmax - cmin) = (x1 - x0)/(number of valid columns - 1) CAN BE POSITIVE OR NEGATIVE */ /* image of valid subrectangle */ double xmin; /* = min{x0,x1} */ double xmax; double ymin; double ymax; } Raster; /* how to clear the data */ #define Clear(ARRAY,TYPE,VALUE) \ { unsigned int i; TYPE *p; \ for(i = 0, p = (TYPE *) (ARRAY).data; i < (ARRAY).length; i++, p++) \ *p = VALUE; } /* how to index a rectangular array stored sequentially in row-major order */ #define Entry(ARRAY,ROW,COL,TYPE) \ ((TYPE *)((ARRAY).data))[COL + (ROW) * ((ARRAY).ncol)] /* test for indices inside subrectangle */ #define Inside(ARRAY,ROW,COL) \ ( (ROW >= (ARRAY).rmin) && (ROW <= (ARRAY).rmax) && \ (COL >= (ARRAY).cmin) && (COL <= (ARRAY).cmax)) /* how to compute the position in R^2 corresponding to a raster entry */ #define Xpos(ARRAY,COL) \ ((ARRAY).x0 + (ARRAY).xstep * (COL - (ARRAY).cmin)) #define Ypos(ARRAY,ROW) \ ((ARRAY).y0 + (ARRAY).ystep * (ROW - (ARRAY).rmin)) #define Distance(X,Y,XX,YY) sqrt((X - XX)* (X - XX) + (Y - YY) * (Y - YY)) #define DistanceTo(X,Y,ARRAY,ROW,COL)\ Distance(X,Y,Xpos(ARRAY,COL),Ypos(ARRAY,ROW)) #define DistanceSquared(X,Y,XX,YY) ((X - XX)* (X - XX) + (Y - YY) * (Y - YY)) #define DistanceToSquared(X,Y,ARRAY,ROW,COL)\ DistanceSquared(X,Y,Xpos(ARRAY,COL),Ypos(ARRAY,ROW)) /* how to map a point (x,y) in R^2 to a raster entry */ /* (x,y) is guaranteed to lie in the rectangle bounded by the images of the entries (r,c), (r+1,c), (r,c+1), (r+1,c+1) where r = RowIndex(..) and c = ColIndex(..). */ #define RowIndex(ARRAY,Y) \ ((ARRAY).rmin + (int) floor(((Y) - (ARRAY).y0)/(ARRAY).ystep)) #define ColIndex(ARRAY,X) \ ((ARRAY).cmin + (int) floor(((X) - (ARRAY).x0)/(ARRAY).xstep)) spatstat/src/hardcore.c0000755000176000001440000000410712333041761014674 0ustar ripleyusers#include #include #include "methas.h" #include "dist2.h" /* Conditional intensity computation for Hard core process */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct Hardcore { double h; /* hard core distance */ double h2; double *period; int per; } Hardcore; /* initialiser function */ Cdata *hardcoreinit(state, model, algo) State state; Model model; Algor algo; { Hardcore *hardcore; double h; hardcore = (Hardcore *) R_alloc(1, sizeof(Hardcore)); /* Interpret model parameters*/ hardcore->h = h = model.ipar[0]; hardcore->h2 = h * h; hardcore->period = model.period; /* periodic boundary conditions? */ hardcore->per = (model.period[0] > 0.0); return((Cdata *) hardcore); } /* conditional intensity evaluator */ double hardcorecif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ix, ixp1, j; double *x, *y; double u, v; double h2, a; Hardcore *hardcore; hardcore = (Hardcore *) cdata; h2 = hardcore->h2; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; if(npts == 0) return((double) 1.0); ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(hardcore->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(dist2thresh(u,v,x[j],y[j],hardcore->period, h2)) return((double) 0.0); } } if(ixp1 < npts) { for(j=ixp1; jperiod, h2)) return((double) 0.0); } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { a = h2 - pow(u - x[j], 2); if(a > 0) { a -= pow(v - y[j], 2); if(a > 0) return((double) 0.0); } } } if(ixp1 < npts) { for(j=ixp1; j 0) { a -= pow(v - y[j], 2); if(a > 0) return((double) 0.0); } } } } return ((double) 1.0); } Cifns HardcoreCifns = { &hardcoreinit, &hardcorecif, (updafunptr) NULL, NO}; spatstat/src/denspt.c0000755000176000001440000002044412333041761014404 0ustar ripleyusers#include #include #include "chunkloop.h" #include "pairloop.h" #include "constants.h" /* denspt.c Calculation of density estimate at data points $Revision: 1.13 $ $Date: 2014/04/02 07:30:05 $ Assumes point pattern is sorted in increasing order of x coordinate *denspt* Density estimate at points *smoopt* Smoothed mark values at points */ #define TWOPI M_2PI double sqrt(), exp(); #define STD_DECLARATIONS \ int n, i, j, maxchunk; \ double xi, yi, rmax, r2max, dx, dy, dx2, d2 #define STD_INITIALISE \ n = *nxy; \ rmax = *rmaxi; \ r2max = rmax * rmax /* ----------------- density estimation -------------------- */ void denspt(nxy, x, y, rmaxi, sig, result) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *rmaxi; /* maximum distance at which points contribute */ double *sig; /* Gaussian sd */ /* output */ double *result; /* vector of computed density values */ { STD_DECLARATIONS; double resulti, coef; double sigma, twosig2; STD_INITIALISE; sigma = *sig; twosig2 = 2.0 * sigma * sigma; coef = 1.0/(TWOPI * sigma * sigma); if(n == 0) return; PAIRLOOP( { resulti = 0.0; }, { resulti += exp(-d2/twosig2); } , { result[i] = coef * resulti; }) } void wtdenspt(nxy, x, y, rmaxi, sig, weight, result) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *rmaxi; /* maximum distance */ double *sig; /* Gaussian sd */ double *weight; /* vector of weights */ /* output */ double *result; /* vector of weighted density values */ { STD_DECLARATIONS; double resulti, coef; double sigma, twosig2; STD_INITIALISE; sigma = *sig; twosig2 = 2.0 * sigma * sigma; coef = 1.0/(TWOPI * sigma * sigma); if(n == 0) return; PAIRLOOP( { resulti = 0.0; }, { resulti += weight[j] * exp(-d2/twosig2); }, { result[i] = coef * resulti; } ) } /* ------------- anisotropic versions -------------------- */ void adenspt(nxy, x, y, rmaxi, detsigma, sinv, result) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *rmaxi; /* maximum distance at which points contribute */ double *detsigma; /* determinant of variance matrix */ double *sinv; /* inverse variance matrix (2x2, flattened) */ /* output */ double *result; /* vector of density values */ { STD_DECLARATIONS; double resulti, coef; double detsig, s11, s12, s21, s22; STD_INITIALISE; detsig = *detsigma; coef = 1.0/(TWOPI * sqrt(detsig)); s11 = sinv[0]; s12 = sinv[1]; s21 = sinv[2]; s22 = sinv[3]; PAIRLOOP( { resulti = 0.0; }, { resulti += exp(-(dx * (dx * s11 + dy * s12) \ + dy * (dx * s21 + dy * s22))/2.0); }, { result[i] = coef * resulti; }) } void awtdenspt(nxy, x, y, rmaxi, detsigma, sinv, weight, result) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *rmaxi; /* maximum distance at which points contribute */ double *detsigma; /* determinant of variance matrix */ double *sinv; /* inverse variance matrix (2x2, flattened) */ double *weight; /* vector of weights */ /* output */ double *result; /* vector of weighted density values */ { STD_DECLARATIONS; double resulti, coef; double detsig, s11, s12, s21, s22; STD_INITIALISE; detsig = *detsigma; coef = 1.0/(TWOPI * sqrt(detsig)); s11 = sinv[0]; s12 = sinv[1]; s21 = sinv[2]; s22 = sinv[3]; if(n == 0) return; PAIRLOOP( { resulti = 0.0; }, { resulti += weight[j] * \ exp(-(dx * (dx * s11 + dy * s12) \ + dy * (dx * s21 + dy * s22))/2.0); }, { result[i] = coef * resulti; }) } /* --------------- smoothing --------------------------- */ void smoopt(nxy, x, y, v, self, rmaxi, sig, result) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *v; /* vector of mark values to be smoothed */ int *self; /* 0 if leave-one-out */ double *rmaxi; /* maximum distance at which points contribute */ double *sig; /* Gaussian sd */ /* output */ double *result; /* vector of computed smoothed values */ { STD_DECLARATIONS; int countself; double sigma, twosig2; double numer, denom, wij; STD_INITIALISE; sigma = *sig; countself = *self; twosig2 = 2.0 * sigma * sigma; if(n == 0) return; PAIRLOOP({ numer = denom = 0.0; }, { \ wij = exp(-d2/twosig2); \ denom += wij; \ numer += wij * v[j]; \ }, { \ if(countself != 0) { \ numer += 1; \ denom += v[i]; \ } \ result[i] = numer/denom; \ }) } void wtsmoopt(nxy, x, y, v, self, rmaxi, sig, weight, result) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *v; /* vector of mark values to be smoothed */ int *self; /* 0 if leave-one-out */ double *rmaxi; /* maximum distance */ double *sig; /* Gaussian sd */ double *weight; /* vector of weights */ /* output */ double *result; /* vector of computed smoothed values */ { STD_DECLARATIONS; int countself; double sigma, twosig2; double numer, denom, wij; STD_INITIALISE; sigma = *sig; countself = *self; twosig2 = 2.0 * sigma * sigma; if(n == 0) return; PAIRLOOP({ numer = denom = 0.0; }, { \ wij = weight[j] * exp(-d2/twosig2); \ denom += wij; \ numer += wij * v[j]; \ }, { \ if(countself != 0) { \ numer += weight[i]; \ denom += weight[i] * v[i]; \ } \ result[i] = numer/denom; \ }) } /* ------------- anisotropic versions -------------------- */ void asmoopt(nxy, x, y, v, self, rmaxi, sinv, result) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *v; /* vector of mark values to be smoothed */ int *self; /* 0 if leave-one-out */ double *rmaxi; /* maximum distance at which points contribute */ double *sinv; /* inverse variance matrix (2x2, flattened) */ /* output */ double *result; /* vector of smoothed values */ { STD_DECLARATIONS; int countself; double s11, s12, s21, s22; double numer, denom, wij; STD_INITIALISE; countself = *self; s11 = sinv[0]; s12 = sinv[1]; s21 = sinv[2]; s22 = sinv[3]; if(n == 0) return; PAIRLOOP({ numer = denom = 0.0; }, { \ wij = exp(-(dx * (dx * s11 + dy * s12) \ + dy * (dx * s21 + dy * s22))/2.0); \ denom += wij; \ numer += wij * v[j]; \ }, { \ if(countself != 0) { \ numer += 1; \ denom += v[i]; \ } \ result[i] = numer/denom; \ }) } void awtsmoopt(nxy, x, y, v, self, rmaxi, sinv, weight, result) /* inputs */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ double *v; /* vector of mark values to be smoothed */ int *self; /* 0 if leave-one-out */ double *rmaxi; /* maximum distance at which points contribute */ double *sinv; /* inverse variance matrix (2x2, flattened) */ double *weight; /* vector of weights */ /* output */ double *result; /* vector of smoothed values */ { STD_DECLARATIONS; int countself; double s11, s12, s21, s22; double numer, denom, wij; STD_INITIALISE; countself = *self; s11 = sinv[0]; s12 = sinv[1]; s21 = sinv[2]; s22 = sinv[3]; if(n == 0) return; PAIRLOOP({ numer = denom = 0.0; }, { \ wij = weight[j] * exp(-(dx * (dx * s11 + dy * s12) \ + dy * (dx * s21 + dy * s22))/2.0); \ denom += wij; \ numer += wij * v[j]; \ }, { \ if(countself != 0) { \ numer += weight[i]; \ denom += weight[i] * v[i]; \ } \ result[i] = numer/denom; \ }) } spatstat/src/exactPdist.c0000755000176000001440000001007612333041761015217 0ustar ripleyusers/* exactPdist.c `Pseudoexact' distance transform of a discrete binary image (the closest counterpart to `exactdist.c') $Revision: 1.12 $ $Date: 2011/05/17 12:27:20 $ */ #include #include "raster.h" void dist_to_bdry(); void shape_raster(); void ps_exact_dt(in, dist, row, col) Raster *in; /* input: binary image */ Raster *dist; /* output: exact distance to nearest point */ Raster *row; /* output: row index of closest point */ Raster *col; /* output: column index of closest point */ /* rasters must have been dimensioned by shape_raster() and must all have identical dimensions and margins */ { int j,k; double d, x, y; int r, c; double dnew; double huge; /* double bdiag; */ /* initialise */ #define UNDEFINED -1 #define Is_Defined(I) (I >= 0) #define Is_Undefined(I) (I < 0) Clear(*row,int,UNDEFINED) Clear(*col,int,UNDEFINED) huge = 2.0 * DistanceSquared(dist->xmin,dist->ymin,dist->xmax,dist->ymax); Clear(*dist,double,huge) /* if input pixel is TRUE, set distance to 0 and make pixel point to itself */ for(j = in->rmin; j <= in->rmax; j++) for(k = in->cmin; k <= in->cmax; k++) if(Entry(*in, j, k, int) != 0) { Entry(*dist, j, k, double) = 0.0; Entry(*row, j, k, int) = j; Entry(*col, j, k, int) = k; } /* how to update the distance values */ #define GETVALUES(ROW,COL) \ x = Xpos(*in, COL); \ y = Ypos(*in, ROW); \ d = Entry(*dist,ROW,COL,double); #define COMPARE(ROW,COL,RR,CC) \ r = Entry(*row,RR,CC,int); \ c = Entry(*col,RR,CC,int); \ if(Is_Defined(r) && Is_Defined(c) \ && Entry(*dist,RR,CC,double) < d) { \ dnew = DistanceSquared(x, y, Xpos(*in,c), Ypos(*in,r)); \ if(dnew < d) { \ Entry(*row,ROW,COL,int) = r; \ Entry(*col,ROW,COL,int) = c; \ Entry(*dist,ROW,COL,double) = dnew; \ d = dnew; \ } \ } /* bound on diagonal step distance squared */ /* bdiag = (in->xstep * in->xstep + in->ystep * in->ystep); */ /* forward pass */ for(j = in->rmin; j <= in->rmax; j++) for(k = in->cmin; k <= in->cmax; k++) { GETVALUES(j, k) COMPARE(j,k, j-1,k-1) COMPARE(j,k, j-1, k) COMPARE(j,k, j-1,k+1) COMPARE(j,k, j, k-1) } /* backward pass */ for(j = in->rmax; j >= in->rmin; j--) for(k = in->cmax; k >= in->cmin; k--) { GETVALUES(j, k) COMPARE(j,k, j+1,k+1) COMPARE(j,k, j+1, k) COMPARE(j,k, j+1,k-1) COMPARE(j,k, j, k+1) } /* take square roots of distances^2 */ for(j = in->rmax; j >= in->rmin; j--) for(k = in->cmax; k >= in->cmin; k--) Entry(*dist,j,k,double) = sqrt(Entry(*dist,j,k,double)); } /* R interface */ void ps_exact_dt_R(xmin, ymin, xmax, ymax, nr, nc, mr, mc, inp, distances, rows, cols, boundary) double *xmin, *ymin, *xmax, *ymax; /* x, y dimensions */ int *nr, *nc; /* raster dimensions EXCLUDING margins */ int *mr, *mc; /* margins */ int *inp; /* input: binary image */ double *distances; /* output: distance to nearest point */ int *rows; /* output: row of nearest point (start= 0) */ int *cols; /* output: column of nearest point (start = 0) */ double *boundary; /* output: distance to boundary of rectangle */ /* all images must have identical dimensions including a margin of 1 on each side */ { Raster data, dist, row, col, bdist; int mrow, mcol, nrow, ncol; mrow = *mr; mcol = *mc; /* full dimensions */ nrow = *nr + 2 * mrow; ncol = *nc + 2 * mcol; shape_raster( &data, (void *) inp, *xmin,*ymin,*xmax,*ymax, nrow, ncol, mrow, mcol); shape_raster( &dist, (void *) distances, *xmin,*ymin,*xmax,*ymax, nrow, ncol, mrow, mcol); shape_raster( &row, (void *) rows, *xmin,*ymin,*xmax,*ymax, nrow, ncol, mrow, mcol); shape_raster( &col, (void *) cols, *xmin,*ymin,*xmax,*ymax, nrow, ncol, mrow, mcol); shape_raster( &bdist, (void *) boundary, *xmin,*ymin,*xmax,*ymax, nrow, ncol, mrow, mcol); ps_exact_dt(&data, &dist, &row, &col); dist_to_bdry(&bdist); } spatstat/src/areaint.c0000755000176000001440000001624412333041761014535 0ustar ripleyusers#include #include #include #include "methas.h" #include "dist2.h" /* Conditional intensity function for an area-interaction process: cif = eta^(1-B) where B = (uncovered area)/(pi r^2) */ #define NGRID 16 /* To explore serious bug, #define BADBUG */ #undef BADBUG /* Format for storage of parameters and precomputed/auxiliary data */ typedef struct AreaInt { /* model parameters */ double eta; double r; /* transformations of the parameters */ double r2; double range2; double logeta; int hard; /* periodic distance */ double *period; int per; /* grid counting */ double dx; double xgrid0; int *my; int kdisc; /* scratch space for saving list of neighbours */ int *neighbour; } AreaInt; /* initialiser function */ Cdata *areaintInit(state, model, algo) State state; Model model; Algor algo; { double r, dx, dy, x0; int i, my, kdisc; AreaInt *areaint; /* create storage */ areaint = (AreaInt *) R_alloc(1, sizeof(AreaInt)); /* Interpret model parameters*/ areaint->eta = model.ipar[0]; areaint->r = r = model.ipar[1]; #ifdef BADBUG Rprintf("r = %lf\n", r); #endif areaint->r2 = r * r; areaint->range2 = 4 * r * r; /* square of interaction distance */ /* is the model numerically equivalent to hard core ? */ areaint->hard = (areaint->eta == 0.0); areaint->logeta = (areaint->hard) ? log(DOUBLE_XMIN) : log(areaint->eta); #ifdef BADBUG if(areaint->hard) Rprintf("Hard core recognised\n"); #endif /* periodic boundary conditions? */ areaint->period = model.period; areaint->per = (model.period[0] > 0.0); #ifdef BADBUG if(areaint->per) { Rprintf("*** periodic boundary conditions ***\n"); Rprintf("period = %lf, %lf\n", model.period[0], model.period[1]); } #endif /* grid counting */ dx = dy = areaint->dx = (2 * r)/NGRID; #ifdef BADBUG Rprintf("areaint->dx = %lf\n", areaint->dx); #endif areaint->xgrid0 = -r + dx/2; areaint->my = (int *) R_alloc((long) NGRID, sizeof(int)); kdisc = 0; for(i = 0; i < NGRID; i++) { x0 = areaint->xgrid0 + i * dx; my = floor(sqrt(r * r - x0 * x0)/dy); my = (my < 0) ? 0 : my; areaint->my[i] = my; #ifdef BADBUG Rprintf("\tmy[%ld] = %ld\n", i, my); #endif kdisc += 2 * my + 1; } areaint->kdisc = kdisc; #ifdef BADBUG Rprintf("areaint->kdisc = %ld\n", areaint->kdisc); #endif /* allocate space for neighbour indices */ areaint->neighbour = (int *) R_alloc((long) state.npmax, sizeof(int)); return((Cdata *) areaint); } #ifdef BADBUG void fexitc(); #endif /* conditional intensity evaluator */ double areaintCif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ix, ixp1, j; double *period, *x, *y; double u, v; double r2, dx, dy, a, range2; double xgrid, ygrid, xgrid0, covfrac, cifval; int kount, kdisc, kx, my, ky; int *neighbour; int nn, k; AreaInt *areaint; areaint = (AreaInt *) cdata; r2 = areaint->r2; range2 = areaint->range2; /* square of interaction distance */ dy = dx = areaint->dx; kdisc = areaint->kdisc; /* pointers */ period = areaint->period; neighbour = areaint->neighbour; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; if(npts == 0) return ((double) 1.0); if(!areaint->per) { /* .......... Euclidean distance .................... First identify which data points are neighbours of (u,v) */ nn = 0; ixp1 = ix + 1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(ix > 0) { for(j=0; j < ix; j++) { a = range2 - pow(u - x[j], 2); if(a > 0.) { a -= pow(v - y[j], 2); if(a > 0.) { /* point j is a neighbour of (u,v) */ neighbour[nn] = j; ++nn; } } } } if(ixp1 < npts) { for(j=ixp1; j < npts; j++) { a = range2 - pow(u - x[j], 2); if(a > 0.) { a -= pow(v - y[j], 2); if(a > 0.) { /* point j is a neighbour of (u,v) */ neighbour[nn] = j; ++nn; } } } } if(nn == 0) { /* no neighbours; no interaction */ cifval = 1.0; return cifval; } else if(areaint->hard) { /* neighbours forbidden if it's a hard core process */ cifval = 0.0; return cifval; } else { /* scan a grid of points centred at (u,v) */ kount = 0; xgrid0 = u + areaint->xgrid0; for(kx=0; kxmy[kx]; for(ky=(-my); ky<=my; ky++) { ygrid = v + ky * dy; /* Grid point (xgrid,ygrid) is inside disc of radius r centred at (u,v) Loop through all neighbouring data points to determine whether the grid point is covered by another disc */ if(nn > 0) { for(k=0; k < nn; k++) { j = neighbour[k]; a = r2 - pow(xgrid - x[j], 2); if(a > 0) { a -= pow(ygrid - y[j], 2); if(a > 0) { /* point j covers grid point */ ++kount; break; } } } } /* finished consideration of grid point (xgrid, ygrid) */ } } } } else { /* ............. periodic distance ...................... First identify which data points are neighbours of (u,v) */ nn = 0; ixp1 = ix + 1; if(ix > 0) { for(j=0; j < ix; j++) { if(dist2thresh(u,v,x[j],y[j],period,range2)) { /* point j is a neighbour of (u,v) */ neighbour[nn] = j; ++nn; } } } if(ixp1 < npts) { for(j=ixp1; jhard) { /* neighbours forbidden if it's a hard core process */ cifval = 0.0; return cifval; } else { /* scan a grid of points centred at (u,v) */ kount = 0; xgrid0 = u + areaint->xgrid0; for(kx=0; kxmy[kx]; for(ky=(-my); ky<=my; ky++) { ygrid = v + ky * dy; /* Grid point (xgrid,ygrid) is inside disc of radius r centred at (u,v) Loop through all neighbouring data points to determine whether the grid point is covered by another disc */ for(k=0; k < nn; k++) { j = neighbour[k]; if(dist2Mthresh(xgrid,ygrid,x[j],y[j],period,r2)) { /* point j covers grid point */ ++kount; break; } } /* finished considering grid point (xgrid,ygrid) */ } } } } /* `kdisc' is the number of grid points in the disc `kount' is the number of COVERED grid points in the disc */ /* Hard core case has been handled. */ /* Usual calculation: covered area fraction */ covfrac = ((double) kount)/((double) kdisc); cifval = exp(areaint->logeta * covfrac); #ifdef BADBUG if(!R_FINITE(cifval)) { Rprintf("Non-finite CIF value\n"); Rprintf("kount=%ld, kdisc=%ld, covfrac=%lf, areaint->logeta=%lf\n", kount, kdisc, covfrac, areaint->logeta); Rprintf("u=%lf, v=%lf\n", u, v); fexitc("Non-finite CIF"); } #endif return cifval; } Cifns AreaIntCifns = { &areaintInit, &areaintCif, (updafunptr) NULL, NO}; spatstat/src/Perfect.cc0000755000176000001440000005742112333041761014647 0ustar ripleyusers// Debug switch // #define DBGS #include #include #include #include #include #include #include #include // #include // FILE *out; // File i/o is deprecated in R implementation #ifdef DBGS #define CHECK(PTR,MESSAGE) if(((void *) PTR) == ((void *) NULL)) error(MESSAGE) #define CLAMP(X, LOW, HIGH, XNAME) \ if((X) > (HIGH)) { \ Rprintf("Value of %s exceeds upper limit %d\n", XNAME, HIGH); \ X = HIGH; \ } else if((X) < (LOW)) { \ Rprintf("Value of %s is below %d\n", XNAME, LOW); \ X = LOW; \ } #else #define CHECK(PTR,MESSAGE) #define CLAMP(X, LOW, HIGH, XNAME) \ if((X) > (HIGH)) X = HIGH; else if((X) < (LOW)) X = LOW; #endif // ......................................... // memory allocation // using R_alloc #define ALLOCATE(TYPE) (TYPE *) R_alloc(1, sizeof(TYPE)) #define FREE(PTR) // Alternative using Calloc and Free // #define ALLOCATE(TYPE) (TYPE *) Calloc(1, sizeof(TYPE)) // #define FREE(PTR) Free(PTR) void R_CheckUserInterrupt(void); struct Point{ long int No; float X; float Y; float R; struct Point *next; }; struct Point2{ long int No; float X; float Y; char InLower[2]; double Beta; double TempBeta; struct Point2 *next; }; struct Point3{ char Case; char XCell; char YCell; struct Point3 *next; }; // const float Pi=3.141593; double slumptal(void){ return(runif((double) 0.0, (double) 1.0)); } long int poisson(double lambda){ return((long int)rpois(lambda)); } // ........................... Point patterns .......................... class Point2Pattern { public: long int UpperLiving[2]; long int MaxXCell, MaxYCell, NoP; double XCellDim, YCellDim, Xmin, Xmax, Ymin, Ymax; struct Point2 *headCell[10][10],*dummyCell; char DirX[10], DirY[10]; Point2Pattern(double xmin, double xmax, double ymin, double ymax, long int mxc, long int myc){ long int i,j; UpperLiving[0] = 0; UpperLiving[1] = 0; Xmin = xmin; Xmax = xmax; Ymin = ymin; Ymax = ymax; DirX[1] = 1; DirY[1] = 0; DirX[2] = 1; DirY[2] = -1; DirX[3] = 0; DirY[3] = -1; DirX[4] = -1; DirY[4] = -1; DirX[5] = -1; DirY[5] = 0; DirX[6] = -1; DirY[6] = 1; DirX[7] = 0; DirY[7] = 1; DirX[8] = 1; DirY[8] = 1; NoP = 0; // dummyCell = ALLOCATE(struct Point2); // dummyCell->next = dummyCell; dummyCell->No = 0; MaxXCell = mxc; MaxYCell = myc; if(MaxXCell>9) MaxXCell = 9; if(MaxYCell>9) MaxYCell = 9; for(i=0;i<=MaxXCell;i++){ for(j=0;j<=MaxYCell;j++){ // headCell[i][j] = ALLOCATE(struct Point2); // headCell[i][j]->next=dummyCell; } } XCellDim = (Xmax-Xmin)/((double)(MaxXCell+1)); YCellDim = (Ymax-Ymin)/((double)(MaxYCell+1)); }; ~Point2Pattern(){} void Print(); void Return(double *X, double *Y, int *num, int maxnum); long int Count(); long int UpperCount(); void Empty(); void Clean(); // void DumpToFile(char FileName[100]); // void ReadFromFile(char FileName[100]); }; void Point2Pattern::Print(){ long int i,j,k; k = 0; struct Point2 *TempCell; for(i=0;i<=MaxXCell;i++){ for(j=0;j<=MaxYCell;j++){ //Rprintf("%d %d:\n",i,j); TempCell = headCell[i][j]->next; CHECK(TempCell, "internal error: TempCell is null in Print()"); while(TempCell->next != TempCell){ k++; Rprintf("%f %f %ld %ld %ld=%d %ld=%d UL0 %d UL1 %d %f\n", TempCell->X,TempCell->Y,k, TempCell->No, i,int(TempCell->X/XCellDim), j,int(TempCell->Y/YCellDim), TempCell->InLower[0],TempCell->InLower[1], TempCell->Beta); TempCell = TempCell->next; CHECK(TempCell, "internal error: TempCell is null in Print() loop"); } } } Rprintf("Printed %ld points.\n",k); } void Point2Pattern::Return(double *X, double *Y, int *num, int maxnum){ long int i,j,k; k =0; *num = 0; #ifdef DBGS Rprintf("executing Return()\n"); #endif if(UpperLiving[0]<=maxnum){ struct Point2 *TempCell; for(i=0;i<=MaxXCell;i++){ for(j=0;j<=MaxYCell;j++){ #ifdef DBGS // Rprintf("%d %d:\n",i,j); #endif TempCell = headCell[i][j]->next; CHECK(TempCell, "internal error: TempCell is null in Return()"); while(TempCell->next != TempCell){ X[k] = TempCell->X; Y[k] = TempCell->Y; k++; TempCell = TempCell->next; CHECK(TempCell, "internal error: TempCell is null in Return() loop"); } } } *num = k; } else { *num = -1; } } long int Point2Pattern::Count(){ long int i,j,k; k = 0; struct Point2 *TempCell; for(i=0;i<=MaxXCell;i++){ for(j=0;j<=MaxYCell;j++){ // Rprintf("%d %d:\n",i,j); TempCell = headCell[i][j]->next; CHECK(TempCell, "internal error: TempCell is null in Count()"); while(TempCell->next != TempCell){ k++; TempCell = TempCell->next; CHECK(TempCell, "internal error: TempCell is null in Count() loop"); } } } //Rprintf("Printed %d points.\n",k); return(k); } // a quick (over)estimate of the number of points in the pattern, // for storage allocation long int Point2Pattern::UpperCount(){ return(UpperLiving[0]); } void Point2Pattern::Empty(){ struct Point2 *TempCell, *TempCell2; long int i,j; #ifdef DBGS long int k; k=0; Rprintf("executing Empty()\n"); #endif for(i=0; i<=this->MaxXCell; i++){ for(j=0; j<=this->MaxYCell; j++){ TempCell = headCell[i][j]->next; CHECK(TempCell, "internal error: TempCell is null in Empty()"); while(TempCell!=TempCell->next){ #ifdef DBGS // k++; Rprintf("%d %d %d\n",i,j,k); #endif TempCell2 = TempCell->next; FREE(TempCell); TempCell = TempCell2; CHECK(TempCell, "internal error: TempCell is null in Empty() loop"); } headCell[i][j]->next = dummyCell; } } } void Point2Pattern::Clean(){ struct Point2 *TempCell, *TempCell2; long int i,j; #ifdef DBGS Rprintf("executing Clean()\n"); #endif for(i=0; i<=MaxXCell; i++){ for(j=0; j<=MaxYCell; j++){ TempCell = headCell[i][j]; CHECK(TempCell, "internal error: TempCell is null in Clean()"); TempCell2 = headCell[i][j]->next; CHECK(TempCell2, "internal error: TempCell2 is null in Clean()"); while(TempCell2!=TempCell2->next){ TempCell2->No = 0; if(TempCell2->InLower[0]==0){ TempCell->next = TempCell2->next; FREE(TempCell2); TempCell2 = TempCell->next; CHECK(TempCell2, "internal error: TempCell2 is null in Clean() loop A"); } else{ TempCell2 = TempCell2->next; TempCell = TempCell->next; CHECK(TempCell, "internal error: TempCell is null in Clean() loop B"); CHECK(TempCell2, "internal error: TempCell2 is null in Clean() loop B"); } } } } } //void Point2Pattern::DumpToFile(char FileName[100]){ // FILE *out; // long int i,j; // out = fopen(FileName,"w"); // struct Point2 *TempCell; // for(i=0;i<=MaxXCell;i++){ // for(j=0;j<=MaxYCell;j++){ // //Rprintf("%d %d:\n",i,j); // TempCell = headCell[i][j]->next; // while(TempCell->next != TempCell){ // fprintf(out,"%f\t%f\t%ld\n", // TempCell->X,TempCell->Y,TempCell->No); // TempCell = TempCell->next; // } // } //} //fclose(out); //} //void Point2Pattern::ReadFromFile(char FileName[100]){ // FILE *out; //long int k,XCell,YCell; //float f1,xs,ys; //out = fopen(FileName,"r"); //struct Point2 *TempCell; //k=0; //while(feof(out)==0){ // k++; // fscanf(out,"%f%f\n",&xs,&ys); // //Rprintf("%f %f\n",xs,ys); // // // TempCell = ALLOCATE(struct Point2); // // // TempCell->No = k; // TempCell->X = xs; // TempCell->Y = ys; // TempCell->InLower[0] = 1; // TempCell->InLower[1] = 1; // // f1 = (xs-Xmin)/XCellDim; XCell = int(f1); // if(XCell>MaxXCell) XCell = MaxXCell; // f1 = (ys-Ymin)/YCellDim; YCell = int(f1); // if(YCell>MaxYCell) YCell = MaxYCell; // // TempCell->next = headCell[XCell][YCell]->next; // headCell[XCell][YCell]->next = TempCell; // //} //fclose(out); //Rprintf("%ld points loaded.\n",k); // //} // ........................... Point processes .......................... // ...................... (stationary, pairwise interaction) ............ class PointProcess { public: double Xmin, Xmax, Ymin, Ymax, TotalBirthRate, InteractionRange; PointProcess(double xmin, double xmax, double ymin, double ymax){ Xmin = xmin; Xmax = xmax; Ymin = ymin; Ymax = ymax; } ~PointProcess(){} virtual void NewEvent(double *x, double *y, char *InWindow)=0; virtual void GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP)=0; virtual double Interaction(double dsquared)=0; // virtual void CalcBeta(long int xsidepomm, long int ysidepomm, // double *betapomm){ // Rprintf("Define CalcBeta...\n"); // } // virtual void CheckBeta(long int xsidepomm, long int ysidepomm, // double *betapomm){ //Rprintf("Define CheckBeta...\n"); //} // virtual double lnCondInt(struct Point2 *TempCell, Point2Pattern *p2p) //{ return(0.0);}; // virtual double lnDens(Point2Pattern *p2p); // virtual void Beta(struct Point2 *TempCell){ // TempCell->Beta = 0; // Rprintf("Define Beta...\n");}; }; //double PointProcess::lnDens(Point2Pattern *p2p){ //// double f1; //long int xco,yco,xc,yc,fx,tx,fy,ty,ry,rx; //double dy,dx, lnDens,dst2; //struct Point2 *TempCell, *TempCell2; // //dx = (Xmax-Xmin)/(double(p2p->MaxXCell+1)); //dy = (Ymax-Ymin)/(double(p2p->MaxYCell+1)); //rx = int(InteractionRange/dx+1.0); //ry = int(InteractionRange/dy+1.0); // // //Rprintf("1:%f 2:%f 3:%d 4:%d 5:%f 6:%f\n",dx,dy,rx,ry, // // this->InteractionRange,InteractionRange); // //Rprintf("mx:%d my:%d\n",p2p->MaxXCell,p2p->MaxYCell); // // lnDens = 0; // // //Rprintf("lnDens: %f (0)\n",lnDens); // // for(xc = 0; xc <= p2p->MaxXCell; xc++){ // for(yc = 0; yc <= p2p->MaxYCell; yc++){ // //if(xc==1) Rprintf("%d %d\n",xc,yc); // CHECK(p2p->headCell[xc][yc], // "internal error: p2p->headCell[xc][yc] is null in lnDens()"); // TempCell = p2p->headCell[xc][yc]->next; // CHECK(TempCell, "internal error: TempCell is null in lnDens()"); // while(TempCell != TempCell->next){ // lnDens += log(TempCell->Beta); // //Rprintf("lnDens: %f (1) %d %d %d %d Beta %f\n",lnDens,xc,yc, // // p2p->MaxXCell,p2p->MaxYCell,TempCell->Beta); // //if(lnDens<(-100000)){Rprintf("%f",lnDens); scanf("%f",&f1);} // if(InteractionRange>0){ // if((xc+rx)<=p2p->MaxXCell) tx=xc+rx; else tx = p2p->MaxXCell; // if((yc+ry)<=p2p->MaxYCell) ty=yc+ry; else ty = p2p->MaxYCell; // if((xc-rx)>=0) fx=xc-rx; else fx = 0; // if((yc-ry)>=0) fy=yc-ry; else fy = 0; // for(xco = fx; xco <= tx; xco++){ // for(yco = fy; yco <= ty; yco++){ // //if(xc==1) Rprintf("%d %d %d %d %d %d\n",xco,yco,fx,tx,fy,ty); // CHECK(p2p->headCell[xco][yco], // "internal error: p2p->headCell[xco][yco] is null in lnDens() loop"); // TempCell2 = p2p->headCell[xco][yco]->next; // CHECK(TempCell2, // "internal error: TempCell2 is null in lnDens() loop A"); // while(TempCell2!=TempCell2->next){ // if(TempCell2 != TempCell){ // dst2 = pow(TempCell->X-TempCell2->X,2)+ // pow(TempCell->Y-TempCell2->Y,2); // lnDens += log(Interaction(dst2)); // } // TempCell2 = TempCell2->next; // CHECK(TempCell2, // "internal error: TempCell2 is null in lnDens() loop B"); // } // } // } // //Rprintf("lnDens: %f\n",lnDens); // } // TempCell = TempCell->next; // CHECK(TempCell, // "internal error: TempCell is null in lnDens() at end"); // } // } // } // return(lnDens); // //} // ........................... Sampler .......................... class Sampler{ public: PointProcess *PP; Point2Pattern *P2P; long int GeneratedPoints, LivingPoints, NoP; //long int UpperLiving[2]; Sampler(PointProcess *p){ PP = p;} ~Sampler(){} void Sim(Point2Pattern *p2p, long int *ST, long int *ET); long int BirthDeath(long int TimeStep, struct Point *headLiving, struct Point *headDeleted, struct Point3 *headTransition); // WAS: Sampler::Forward void Forward(long int TS, long int TT, char TX, char TY, struct Point *Proposal, long int *DDD); }; void Sampler::Forward(long int TS, long int TT, char TX, char TY, struct Point *Proposal, long int *DDD){ long int XCell, YCell, DirectionN; double dtmp2,dtmpx,dtmpy, tmpR, TempGamma[2], TempI; struct Point2 *TempCell, *TempCell2; float f1; /* Birth */ if(TT==1){ f1 = (Proposal->X-P2P->Xmin)/P2P->XCellDim; XCell = int(f1); CLAMP(XCell, 0, P2P->MaxXCell, "XCell"); f1 = (Proposal->Y-P2P->Ymin)/P2P->YCellDim; YCell = int(f1); CLAMP(YCell, 0, P2P->MaxYCell, "YCell"); // TempCell = ALLOCATE(struct Point2); // TempCell->No = Proposal->No; TempCell->X = Proposal->X; TempCell->Y = Proposal->Y; tmpR = Proposal->R; TempCell->next = P2P->headCell[XCell][YCell]->next; P2P->headCell[XCell][YCell]->next = TempCell; TempCell->InLower[0]=0; TempCell->InLower[1]=0; TempGamma[0] = 1.0; TempGamma[1] = 1.0; /*same cell*/ TempCell2 = TempCell->next; CHECK(TempCell2, "internal error: TempCell2 is null in Forward() birth case"); while(TempCell2 != TempCell2->next){ dtmpx = TempCell->X - TempCell2->X; dtmpy = TempCell->Y - TempCell2->Y; dtmp2 = dtmpx*dtmpx+dtmpy*dtmpy; TempI = PP->Interaction(dtmp2); if(TempCell2->InLower[0]==1) TempGamma[0] = TempGamma[0]*TempI; if(TempCell2->InLower[1]==1) TempGamma[1] = TempGamma[1]*TempI; TempCell2=TempCell2->next; CHECK(TempCell2, "internal error: TempCell2 is null in Forward() birth case loop"); } /*eight other cells*/ for(DirectionN=1;DirectionN<=8;DirectionN++){ if(((XCell+P2P->DirX[DirectionN])>=0) && ((XCell+P2P->DirX[DirectionN])<=P2P->MaxXCell) && ((YCell+P2P->DirY[DirectionN])>=0) && ((YCell+P2P->DirY[DirectionN])<=P2P->MaxYCell)){ CHECK(P2P->headCell[XCell+P2P->DirX[DirectionN]][YCell+P2P->DirY[DirectionN]], "internal error: HUGE P2P EXPRESSION is null in Forward() birth case loop A"); TempCell2 = P2P->headCell[XCell+P2P->DirX[DirectionN]] [YCell+P2P->DirY[DirectionN]]->next; CHECK(TempCell2, "internal error: TempCell2 is null in Forward() birth case loop B"); while(TempCell2!=TempCell2->next){ dtmpx = TempCell->X - TempCell2->X; dtmpy = TempCell->Y - TempCell2->Y; dtmp2 = dtmpx*dtmpx+dtmpy*dtmpy; TempI = PP->Interaction(dtmp2); if(TempCell2->InLower[0]==1) TempGamma[0] = TempGamma[0]*TempI; if(TempCell2->InLower[1]==1) TempGamma[1] = TempGamma[1]*TempI; TempCell2=TempCell2->next; CHECK(TempCell2, "internal error: TempCell2 is null in Forward() birth case loop C"); } } } if(tmpR <= TempGamma[1] ){ TempCell->InLower[0]=1; P2P->UpperLiving[0] = P2P->UpperLiving[0] +1; } if(tmpR <= TempGamma[0] ){ TempCell->InLower[1]=1; P2P->UpperLiving[1] = P2P->UpperLiving[1] +1; } } /* Death */ if(TT==0){ TempCell=P2P->headCell[(int)TX][(int)TY]; CHECK(TempCell, "internal error: TempCell is null in Forward() death case"); while(TempCell->next->No != *DDD){ TempCell = TempCell->next; CHECK(TempCell, "internal error: TempCell is null in Forward() death case loop"); if(TempCell->next == TempCell) { Rprintf("internal error: unexpected self-reference. Dumping...\n"); P2P->Print(); error("internal error: unexpected self-reference"); break; } }; CHECK(TempCell->next, "internal error: TempCell->next is null in Forward() death case"); if(*DDD!=TempCell->next->No) Rprintf("diagnostic message: multi cell: !!DDD:%ld TempUpper->No:%ld ", *DDD,TempCell->No); if(TempCell->next->InLower[0]==1) P2P->UpperLiving[0] = P2P->UpperLiving[0] -1; if(TempCell->next->InLower[1]==1) P2P->UpperLiving[1] = P2P->UpperLiving[1] -1; TempCell2 = TempCell->next; CHECK(TempCell2, "internal error: TempCell2 is null in Forward() death case B"); TempCell->next = TempCell2->next; FREE(TempCell2); /* Common stuff */ //KillCounter ++; *DDD = *DDD - 1; } } long int Sampler::BirthDeath(long int TimeStep, struct Point *headLiving, struct Point *headDeleted, struct Point3 *headTransition){ long int i,n; float f1,f2,f3,f4; double xtemp,ytemp; char InWindow, Success; struct Point *TempPoint, *TempPoint2; struct Point3 *TempTransition; R_CheckUserInterrupt(); f1 = LivingPoints; f2 = PP->TotalBirthRate; f3 = f2/(f1+f2); f4 = slumptal(); n = 0; Success = 0; //Rprintf("LivingPoints: %d TotalBirthRate %f GeneratedPoints %d\n", // LivingPoints,PP->TotalBirthRate,GeneratedPoints); /* Birth */ while(Success==0){ if(f4NewEvent(&xtemp, &ytemp, &InWindow); //Rprintf("Ping 2 (BD)\n"); if(InWindow==1){ Success = 1; // TempTransition = ALLOCATE(struct Point3); // //Rprintf("Ping 3 (BD)\n"); TempTransition->Case = 0; LivingPoints ++; GeneratedPoints ++; // TempPoint = ALLOCATE(struct Point); // TempPoint->X = xtemp; TempPoint->Y = ytemp; TempPoint->No = GeneratedPoints; TempPoint->R = slumptal(); TempPoint->next = headLiving->next; headLiving->next = TempPoint; NoP ++; f1 = (TempPoint->X-P2P->Xmin)/P2P->XCellDim; TempTransition->XCell = int(f1); f1 = (TempPoint->Y-P2P->Ymin)/P2P->YCellDim; TempTransition->YCell = int(f1); //Rprintf("X %f XCell %d\n",TempPoint->X,TempTransition->XCell); // CLAMP(TempTransition->XCell, 0, P2P->MaxXCell, "TempTransition->XCell"); CLAMP(TempTransition->YCell, 0, P2P->MaxYCell, "TempTransition->YCell"); TempTransition->next = headTransition->next; headTransition->next = TempTransition; } } /* Death */ else{ Success = 1; // TempTransition = ALLOCATE(struct Point3); // TempTransition->Case = 1; f1 = LivingPoints; f2 = f1*slumptal()+1.0; n = int(f2); if(n < 1) n = 1; if(n>LivingPoints){ // Rprintf("diagnostic message: random integer n=%ld > %ld = number of living points\n", n,LivingPoints); n=LivingPoints; } TempPoint2 = TempPoint = headLiving; for(i=1; i<=n; i++){ TempPoint2 = TempPoint; TempPoint = TempPoint->next; } TempPoint2->next = TempPoint->next; TempPoint->next = headDeleted->next; headDeleted->next = TempPoint; LivingPoints --; NoP --; TempTransition->next = headTransition->next; headTransition->next = TempTransition; } } return(n); } void Sampler::Sim(Point2Pattern *p2p, long int *ST, long int *ET) { P2P = p2p; long int StartTime, EndTime, TimeStep, D0Time, D0Living; long int XCell, YCell, DDD, i; float f1; /* Initialising linked listed for backward simulation */ struct Point *headDeleted, *headLiving, *dummyDeleted, *dummyLiving; struct Point *TempPoint; // headLiving = ALLOCATE(struct Point); dummyLiving = ALLOCATE(struct Point); // headLiving->next = dummyLiving; dummyLiving->next = dummyLiving; // headDeleted = ALLOCATE(struct Point); dummyDeleted = ALLOCATE(struct Point); // headDeleted->next = dummyDeleted; dummyDeleted->next = dummyDeleted; struct Point2 *TempCell2; struct Point3 *headTransition, *dummyTransition; // headTransition = ALLOCATE(struct Point3); dummyTransition = ALLOCATE(struct Point3); // headTransition->next = dummyTransition; dummyTransition->next = dummyTransition; PP->GeneratePoisson(headLiving, &GeneratedPoints, &LivingPoints, &NoP); StartTime=1; EndTime=1; TimeStep = 0; D0Time = 0; D0Living = GeneratedPoints; long int tmp, D0; do{ tmp=BirthDeath(TimeStep, headLiving, headDeleted, headTransition); if(tmp>0){ if(tmp>(LivingPoints+1-D0Living)){ D0Living --; } } D0Time++; }while(D0Living>0); tmp=BirthDeath(TimeStep, headLiving, headDeleted, headTransition); StartTime=1; EndTime=D0Time+1; D0 = 0; do{ if(D0==1){ for(TimeStep=StartTime;TimeStep<=EndTime;TimeStep ++){ tmp=BirthDeath(TimeStep, headLiving, headDeleted, headTransition); } } D0 = 1; P2P->Empty(); /* headUpper->next = dummyUpper; dummyUpper->next = dummyUpper; for(XCell=0;XCell<=P2P->MaxXCell;XCell++){ for(YCell=0;YCell<=P2P->MaxYCell;YCell++){ headUpperCell[XCell][YCell]->next=dummyUpper; } } */ P2P->UpperLiving[0] = LivingPoints; P2P->UpperLiving[1] = 0; P2P->NoP = 0; i=0; TempPoint = headLiving->next; CHECK(TempPoint, "internal error: TempPoint is null in Sim()"); while(TempPoint!=TempPoint->next){ i++; // TempCell2 = ALLOCATE(struct Point2); // TempCell2->No = TempPoint->No; TempCell2->X = TempPoint->X; TempCell2->Y = TempPoint->Y; TempCell2->InLower[0] = 1; TempCell2->InLower[1] = 0; f1 = (TempPoint->X-P2P->Xmin)/P2P->XCellDim; XCell = int(floor(f1)); CLAMP(XCell, 0, P2P->MaxXCell, "XCell"); f1 = (TempPoint->Y-P2P->Ymin)/P2P->YCellDim; YCell = int(floor(f1)); CLAMP(YCell, 0, P2P->MaxYCell, "YCell"); TempCell2->next = P2P->headCell[XCell][YCell]->next; P2P->headCell[XCell][YCell]->next = TempCell2; TempPoint = TempPoint->next; CHECK(TempPoint, "internal error: TempPoint is null in Sim() loop"); } //P2P->DumpToFile("temp0.dat"); struct Point3 *TempTransition; struct Point *Proposal; TempTransition = headTransition->next; CHECK(TempTransition, "internal error: TempTransition is null in Sim()"); Proposal = headDeleted->next; DDD = GeneratedPoints; for(TimeStep=EndTime;TimeStep>=1;TimeStep--){ R_CheckUserInterrupt(); Forward(TimeStep,TempTransition->Case, TempTransition->XCell,TempTransition->YCell, Proposal,&DDD); if(TempTransition->Case == 1) Proposal = Proposal ->next; TempTransition = TempTransition->next; CHECK(TempTransition, "internal error: TempTransition is null in Sim() loop"); } /* Doubling strategy used!*/ StartTime = EndTime+1; EndTime=EndTime*2; //P2P->DumpToFile("temp.dat"); }while(P2P->UpperLiving[0]!=P2P->UpperLiving[1]); P2P->Clean(); i=0; struct Point *TempPoint2; TempPoint = headLiving; TempPoint2 = headLiving->next; CHECK(TempPoint2, "internal error: TempPoint2 is null in Sim() position B"); while(TempPoint!=TempPoint->next){ i++; FREE(TempPoint); TempPoint = TempPoint2; TempPoint2 = TempPoint2->next; CHECK(TempPoint2, "internal error: TempPoint2 is null in Sim() loop C"); } FREE(TempPoint); i = 0; TempPoint = headDeleted; TempPoint2 = headDeleted->next; CHECK(TempPoint2, "internal error: TempPoint2 is null in Sim() position D"); while(TempPoint!=TempPoint->next){ i++; FREE(TempPoint); TempPoint = TempPoint2; TempPoint2 = TempPoint2->next; CHECK(TempPoint2, "internal error: TempPoint2 is null in Sim() loop D"); } FREE(TempPoint); //Rprintf("%d ",i); struct Point3 *TempTransition,*TempTransition2; i = 0; TempTransition = headTransition; TempTransition2 = headTransition->next; CHECK(TempTransition2, "internal error: TempTransition2 is null in Sim() position E"); while(TempTransition!=TempTransition->next){ i++; FREE(TempTransition); TempTransition = TempTransition2; TempTransition2 = TempTransition2->next; CHECK(TempTransition2, "internal error: TempTransition2 is null in Sim() loop F"); } FREE(TempTransition); //Rprintf("%d ST: %d ET: %d\n",i,StartTime,EndTime); //scanf("%f",&f1); *ST = StartTime; *ET = EndTime; } #include "PerfectStrauss.h" #include "PerfectStraussHard.h" #include "PerfectHardcore.h" #include "PerfectDiggleGratton.h" #include "PerfectDGS.h" spatstat/src/KrectFunDec.h0000644000176000001440000000563012333041761015246 0ustar ripleyusers/* KrectFunDec.h $Revision: 1.3 $ $Date: 2014/02/09 02:51:15 $ Function declarations for Krect Macros: FNAME function name WEIGHTED #defined for weighted version (Kinhom etc) +++ Copyright (C) Adrian Baddeley 2014 ++++ */ void FNAME(width, height, nxy, x, y, #ifdef WEIGHTED w, #endif nr, rmax, trimedge, doIso, doTrans, doBord, doUnco, iso, trans, bnumer, bdenom, unco) /* input data */ double *width, *height; /* window is (0, width) x (0, height) */ int *nxy; /* number of (x,y) points */ double *x, *y; /* (x,y) coordinates */ #ifdef WEIGHTED double *w; /* weights (e.g. reciprocal intensities) */ #endif /* algorithm parameters */ int *nr; /* number of r values */ double *rmax; /* maximum r value */ double *trimedge; /* maximum edge correction weight */ int *doIso; /* logical: whether to do isotropic correction */ int *doTrans; /* logical: whether to do translation correction */ int *doBord; /* logical: whether to do border correction */ int *doUnco; /* logical: whether to do uncorrected estimator */ /* outputs */ /* These are vectors of length nr if required, otherwise ignored */ double *iso; /* isotropic-corrected estimator */ double *trans; /* translation-corrected estimator */ COUNTTYPE *bnumer; /* numerator of border-corrected estimator */ COUNTTYPE *bdenom; /* denominator of border-corrected estimator */ COUNTTYPE *unco; /* uncorrected estimator */ { int i, j, l, ldist, lbord, M, maxchunk, N, Nr, N1, Nr1; double rstep, Rmax, R2max, wide, high, trim; double xi, yi, bdisti, bx, by, bratio; double dx, dy, dx2, dij, dij2, dratio, edgetrans, edgeiso; double dL, dR, dD, dU, bLU, bLD, bRU, bRD, bUL, bUR, bDL, bDR; double aL, aR, aD, aU, cL, cR, cU, cD, extang; int ncor, corner; COUNTTYPE *numerLowAccum, *numerHighAccum, *denomAccum; COUNTTYPE naccum, daccum; double accum; #ifdef WEIGHTED double wi, wj, wij; #endif #ifdef WEIGHTED #define ZERO 0.0 #define WIJ wij #else #define ZERO 0 #define WIJ 1 #endif N = *nxy; if(N == 0) return; Nr = *nr; Rmax = *rmax; trim = *trimedge; N1 = N - 1; Nr1 = Nr - 1; R2max = Rmax * Rmax; rstep = Rmax/Nr1; wide = *width; high = *height; /* Allocate and initialise scratch space - for border correction, but do it in all cases to keep the compiler happy */ M = (*doBord == 1) ? Nr : 1; numerLowAccum = (COUNTTYPE *) R_alloc(M, sizeof(COUNTTYPE)); numerHighAccum = (COUNTTYPE *) R_alloc(M, sizeof(COUNTTYPE)); denomAccum = (COUNTTYPE *) R_alloc(M, sizeof(COUNTTYPE)); for(l = 0; l < M; l++) numerLowAccum[l] = numerHighAccum[l] = denomAccum[l] = ZERO; #include "KrectV1.h" } #undef ZERO #undef WIJ spatstat/src/Krect.c0000644000176000001440000000373712333041761014162 0ustar ripleyusers/* Krect.c $Revision: 1.3 $ $Date: 2014/02/09 03:02:42 $ +++ Copyright (C) Adrian Baddeley, Julian Gilbey and Rolf Turner 2014 ++++ Fast code for K function in rectangular case. **Assumes point pattern is sorted in increasing order of x coordinate** **Assumes window is (0,wide) x (0, high) ** **Assumes output vectors were initialised to zero** Krect.c defines three interface functions, for weighted, unweighted double, and unweighted integer cases KrectFunDec.h (#included thrice) Function declaration, arguments, storage allocation KrectV1.h split according to whether Isotropic Correction is wanted Macro ISOTROPIC is #defined KrectV2.h split according to whether Translation Correction is wanted Macro TRANSLATION is #defined KrectV3.h split according to whether Border Correction is wanted Macro BORDER is #defined KrectV4.h split according to whether Uncorrected estimate is wanted Macro UNCORRECTED is #defined KrectBody.h Function body, including loops over i and j KrectIncrem.h (#included twice) Code performed when a close pair of points has been found: calculate edge corrections, increment results. */ #include #include #include /* This constant is defined in Rmath.h */ #define TWOPI M_2PI #define ABS(X) (((X) >= 0) ? (X) : (-X)) #define SMALL(X) ((ABS(X) < 1.0e-12) ? 1 : 0) #define MIN(X,Y) (((X) < (Y)) ? (X) : (Y)) #undef FNAME #undef WEIGHTED #undef COUNTTYPE #define FNAME KrectInt #define COUNTTYPE int #include "KrectFunDec.h" #undef FNAME #undef WEIGHTED #undef COUNTTYPE #define FNAME KrectDbl #define COUNTTYPE double #include "KrectFunDec.h" #undef FNAME #undef WEIGHTED #undef COUNTTYPE #define FNAME KrectWtd #define COUNTTYPE double #define WEIGHTED #include "KrectFunDec.h" spatstat/src/KrectIncrem.h0000644000176000001440000000462612333041761015323 0ustar ripleyusers/* KrectIncrem.h Code to increment numerators of K-function $Revision: 1.5 $ $Date: 2014/02/09 03:00:51 $ +++ Copyright (C) Adrian Baddeley, Julian Gilbey and Rolf Turner 2014 ++++ */ #ifdef WEIGHTED wj = w[j]; wij = wi * wj; #endif /* determine index of entry to be incremented */ dij = (double) sqrt(dij2); dratio = dij/rstep; /* smallest integer greater than or equal to dratio */ ldist = (int) ceil(dratio); #ifdef UNCORRECTED /* ............ uncorrected estimate ................. */ #ifdef WEIGHTED unco[ldist] += wij; #else (unco[ldist])++; #endif #endif #ifdef BORDER /* ............ border correction ................. */ /* increment numerator for all r such that dij <= r < bi */ /* increment entries ldist to lbord inclusive */ #ifdef WEIGHTED if(lbord >= ldist) { numerLowAccum[ldist] += wij; numerHighAccum[lbord] += wij; } #else if(lbord >= ldist) { (numerLowAccum[ldist])++; (numerHighAccum[lbord])++; } #endif #endif #ifdef TRANSLATION /* ............ translation correction ................. */ edgetrans = 1.0/((1.0 - ABS(dx)/wide) * (1.0 - ABS(dy)/high)); edgetrans = MIN(edgetrans, trim); #ifdef WEIGHTED trans[ldist] += wij * edgetrans; #else trans[ldist] += edgetrans; #endif #endif #ifdef ISOTROPIC /* ............ isotropic correction ................. */ /* half the angle subtended by the intersection between the circle of radius d[i,j] centred on point i and each edge of the rectangle (prolonged to an infinite line) */ aL = (dL < dij) ? acos(dL/dij) : 0.0; aR = (dR < dij) ? acos(dR/dij) : 0.0; aD = (dD < dij) ? acos(dD/dij) : 0.0; aU = (dU < dij) ? acos(dU/dij) : 0.0; /* apply maxima */ cL = MIN(aL, bLU) + MIN(aL, bLD); cR = MIN(aR, bRU) + MIN(aR, bRD); cU = MIN(aU, bUL) + MIN(aU, bUR); cD = MIN(aD, bDL) + MIN(aD, bDR); /* total exterior angle over 2 pi */ extang = (cL + cR + cU + cD)/TWOPI; /* add pi/2 for corners */ if(corner) extang += 1/4; /* edge correction factor */ edgeiso = 1 / (1 - extang); edgeiso = MIN(edgeiso, trim); #ifdef WEIGHTED iso[ldist] += wij * edgeiso; #else iso[ldist] += edgeiso; #endif #endif spatstat/src/areapair.c0000644000176000001440000000360312333041761014666 0ustar ripleyusers/* areapair.c $Revision: 1.6 $ $Date: 2013/09/18 04:11:42 $ Specialised code for the second order conditional intensity of the area-interaction process */ #include #include #include "yesno.h" /* computes area of b(A, r) \int b(B, r) \setminus \bigcup_i b(X[i], r) */ void delta2area(xa, ya, xb, yb, nother, xother, yother, radius, epsilon, pixcount) double *xa, *ya, *xb, *yb; int *nother; double *xother, *yother; double *radius, *epsilon; int *pixcount; { int Ni, Nj, Nk, i, j, k, count, covered; double xA, yA, xB, yB, r, eps, r2; double xmin, xmax, ymin, ymax, xi, yj; double dxA, dyA; double dxB, dyB; double dx, dy; Nk = *nother; xA = *xa; yA = *ya; xB = *xb; yB = *yb; r = *radius; eps = *epsilon; r2 = r * r; /* find intersection of squares centred on A and B */ if(xA < xB) { xmin = xB - r; xmax = xA + r; } else { xmin = xA - r; xmax = xB + r; } if(xmin > xmax) return; if(yA < yB) { ymin = yB - r; ymax = yA + r; } else { ymin = yA - r; ymax = yB + r; } if(ymin > ymax) return; /* set up grid */ Ni = (int) ceil((xmax - xmin)/eps) + 1; Nj = (int) ceil((ymax - ymin)/eps) + 1; count = 0; for(i = 0, xi = xmin; i < Ni; i++, xi += eps) { dxA = xi - xA; for(j = 0, yj = ymin; j < Nj; j++, yj += eps) { dyA = yj - yA; if(dxA * dxA + dyA * dyA <= r2) { /* grid point belongs to b(A, r) */ dxB = xi - xB; dyB = yj - yB; if(dxB * dxB + dyB * dyB <= r2) { /* grid point belongs to b(A,r) \cap b(B,r) */ covered = NO; /* test whether it is covered by another b(X[k], r) */ for(k = 0; k < Nk; k++) { dx = xi - xother[k]; dy = yj - yother[k]; if(dx * dx + dy * dy <= r2) { covered = YES; break; } } if(!covered) { ++count; } } } } } *pixcount = count; } spatstat/src/yesno.h0000644000176000001440000000011612333041761014240 0ustar ripleyusers/* yesno.h */ #ifndef YES #define YES (0 == 0) #define NO (!YES) #endif spatstat/src/dist2dpath.c0000755000176000001440000000052712333041761015155 0ustar ripleyusers#include #include /* given matrix of edge lengths compute matrix of shortest-path distances Uses dist2dpath.h */ #define FNAME Ddist2dpath #define DTYPE double #define FLOATY #include "dist2dpath.h" #undef FNAME #undef DTYPE #undef FLOATY #define FNAME Idist2dpath #define DTYPE int #include "dist2dpath.h" spatstat/src/distseg.c0000755000176000001440000001166212333041761014553 0ustar ripleyusers/* distseg.c Distances from point pattern to line segment pattern Distance transform of a line segment pattern nndist2segs: minimum distance from point to any line segment prdist2segs: pairwise distances from each point to each line segment $Revision: 1.9 $ $Date: 2012/03/27 05:38:51 $ Author: Adrian Baddeley */ #include #include #include #include #include "chunkloop.h" void nndist2segs(xp, yp, npoints, x0, y0, x1, y1, nsegments, epsilon, dist2, index) /* input */ double *xp, *yp; /* point/pixel coordinates */ int *npoints; double *x0, *y0, *x1, *y1; /* line segment endpoints */ int *nsegments; double *epsilon; /* tolerance for short segments */ /* output */ double *dist2; /* squared distance from pixel to nearest line segment INITIALISED TO LARGE VALUE */ int *index; /* which line segment is closest */ { int i,j, np, nseg, maxchunk; double dx,dy,leng,co,si; /* parameters of segment */ double xdif0,ydif0,xdif1,ydif1,xpr,ypr; /* vectors */ double dsq0,dsq1,dsq,dsqperp; /* squared distances */ double eps; np = *npoints; nseg = *nsegments; eps = *epsilon; OUTERCHUNKLOOP(j, nseg, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nseg, maxchunk, 16384) { dx = x1[j] - x0[j]; dy = y1[j] - y0[j]; leng = hypot(dx, dy); if(leng > eps) { /* normal case */ co = dx/leng; si = dy/leng; for(i = 0; i < np; i++) { /* vectors from pixel to segment endpoints */ xdif0 = xp[i] - x0[j]; ydif0 = yp[i] - y0[j]; xdif1 = xp[i] - x1[j]; ydif1 = yp[i] - y1[j]; /* squared distances to segment endpoints */ dsq0 = xdif0 * xdif0 + ydif0 * ydif0; dsq1 = xdif1 * xdif1 + ydif1 * ydif1; dsq = (dsq0 < dsq1) ? dsq0 : dsq1; /* rotate pixel around 1st endpoint of segment so that line segment lies in x axis */ xpr = xdif0 * co + ydif0 * si; ypr = -xdif0 * si + ydif0 * co; /* perpendicular distance applies only in perpendicular region */ if(xpr >= 0.0 && xpr <= leng) { dsqperp = ypr * ypr; if(dsqperp < dsq) dsq = dsqperp; } if(dist2[i] > dsq) { dist2[i] = dsq; index[i] = j; } } } else { /* short segment - use endpoints only */ for(i = 0; i < np; i++) { /* vectors from pixel to segment endpoints */ xdif0 = xp[i] - x0[j]; ydif0 = yp[i] - y0[j]; xdif1 = xp[i] - x1[j]; ydif1 = yp[i] - y1[j]; /* squared distances to segment endpoints */ dsq0 = xdif0 * xdif0 + ydif0 * ydif0; dsq1 = xdif1 * xdif1 + ydif1 * ydif1; dsq = (dsq0 < dsq1) ? dsq0 : dsq1; if(dist2[i] > dsq) { dist2[i] = dsq; index[i] = j; } } } } } } void prdist2segs(xp, yp, npoints, x0, y0, x1, y1, nsegments, epsilon, dist2) /* input */ double *xp, *yp; /* point/pixel coordinates */ int *npoints; double *x0, *y0, *x1, *y1; /* line segment endpoints */ int *nsegments; double *epsilon; /* tolerance for short segments */ /* output */ double *dist2; /* squared distances from each pixel to each line segment */ { int i,j, np, nseg, maxchunk; double dx,dy,leng,co,si; /* parameters of segment */ double xdif0,ydif0,xdif1,ydif1,xpr,ypr; /* vectors */ double dsq0,dsq1,dsq,dsqperp; /* squared distances */ double eps; np = *npoints; nseg = *nsegments; eps = *epsilon; OUTERCHUNKLOOP(j, nseg, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nseg, maxchunk, 16384) { dx = x1[j] - x0[j]; dy = y1[j] - y0[j]; leng = hypot(dx, dy); if(leng > eps) { /* normal case */ co = dx/leng; si = dy/leng; for(i = 0; i < np; i++) { /* vectors from pixel to segment endpoints */ xdif0 = xp[i] - x0[j]; ydif0 = yp[i] - y0[j]; xdif1 = xp[i] - x1[j]; ydif1 = yp[i] - y1[j]; /* squared distances to segment endpoints */ dsq0 = xdif0 * xdif0 + ydif0 * ydif0; dsq1 = xdif1 * xdif1 + ydif1 * ydif1; dsq = (dsq0 < dsq1) ? dsq0 : dsq1; /* rotate pixel around 1st endpoint of segment so that line segment lies in x axis */ xpr = xdif0 * co + ydif0 * si; ypr = -xdif0 * si + ydif0 * co; /* perpendicular distance applies only in perpendicular region */ if(xpr >= 0.0 && xpr <= leng) { dsqperp = ypr * ypr; if(dsqperp < dsq) dsq = dsqperp; } dist2[i + j * np] = dsq; } } else { /* short segment */ for(i = 0; i < np; i++) { /* vectors from pixel to segment endpoints */ xdif0 = xp[i] - x0[j]; ydif0 = yp[i] - y0[j]; xdif1 = xp[i] - x1[j]; ydif1 = yp[i] - y1[j]; /* squared distances to segment endpoints */ dsq0 = xdif0 * xdif0 + ydif0 * ydif0; dsq1 = xdif1 * xdif1 + ydif1 * ydif1; dsq = (dsq0 < dsq1) ? dsq0 : dsq1; dist2[i + j * np] = dsq; } } } } } spatstat/src/diggra.c0000755000176000001440000000637012333041761014346 0ustar ripleyusers#include #include #include #include "methas.h" #include "dist2.h" /* Conditional intensity computation for Diggle-Gratton process */ /* Conditional intensity function for a pairwise interaction point process with interaction function as given by e(t) = 0 for t < delta = (t-delta)/(rho-delta)^kappa for delta <= t < rho = 1 for t >= rho (See page 767 of Diggle, Gates, and Stibbard, Biometrika vol. 74, 1987, pages 763 -- 770.) */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct Diggra { double kappa; double delta; double rho; double delta2; /* delta^2 */ double rho2; /* rho^2 */ double fac; /* 1/(rho-delta) */ double *period; int per; } Diggra; /* initialiser function */ Cdata *diggrainit(state, model, algo) State state; Model model; Algor algo; { Diggra *diggra; diggra = (Diggra *) R_alloc(1, sizeof(Diggra)); /* Interpret model parameters*/ diggra->kappa = model.ipar[0]; diggra->delta = model.ipar[1]; diggra->rho = model.ipar[2]; diggra->period = model.period; /* constants */ diggra->delta2 = pow(diggra->delta, 2); diggra->rho2 = pow(diggra->rho, 2); diggra->fac = 1/(diggra->rho - diggra->delta); /* periodic boundary conditions? */ diggra->per = (model.period[0] > 0.0); return((Cdata *) diggra); } /* conditional intensity evaluator */ double diggracif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ix, ixp1, j; double *x, *y; double u, v; double d2, pairprod, cifval; double rho2, delta, delta2, fac; double *period; DECLARE_CLOSE_D2_VARS; Diggra *diggra; diggra = (Diggra *) cdata; period = diggra->period; rho2 = diggra->rho2; delta = diggra->delta; delta2 = diggra->delta2; fac = diggra->fac; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; cifval = pairprod = 1.0; if(npts == 0) return(cifval); ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(diggra->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_PERIODIC_D2(u,v,x[j],y[j],period,rho2,d2)) { if(d2 < delta2) { cifval = 0.0; return(cifval); } else { pairprod *= fac * (sqrt(d2)-delta); } } } } if(ixp1 < npts) { for(j=ixp1; j 0) { for(j=0; j < ix; j++) { if(CLOSE_D2(u, v, x[j], y[j], rho2, d2)) { if(d2 <= delta2) { cifval = 0.0; return(cifval); } else { pairprod *= fac * (sqrt(d2)-delta); } } } } if(ixp1 < npts) { for(j=ixp1; jkappa); return cifval; } Cifns DiggraCifns = { &diggrainit, &diggracif, (updafunptr) NULL, NO}; spatstat/src/mhv3.h0000644000176000001440000000042712333041761013765 0ustar ripleyusers/* mhv3.h tracking or not */ #undef MH_TRACKING if(tracking) { /* saving transition history */ #define MH_TRACKING YES #include "mhv4.h" #undef MH_TRACKING } else { /* not saving transition history */ #define MH_TRACKING NO #include "mhv4.h" #undef MH_TRACKING } spatstat/src/nngrid.c0000644000176000001440000000356212333041761014367 0ustar ripleyusers/* nngrid.c Nearest Neighbour Distances from a pixel grid to a point pattern Copyright (C) Adrian Baddeley, Jens Oehlschlaegel and Rolf Turner 2000-2013 Licence: GNU Public Licence >= 2 $Revision: 1.4 $ $Date: 2013/11/03 03:41:23 $ Function body definition is #included from nngrid.h THE FOLLOWING FUNCTIONS ASSUME THAT x IS SORTED IN ASCENDING ORDER */ #undef SPATSTAT_DEBUG #include #include #include #include "yesno.h" double sqrt(); /* THE FOLLOWING CODE ASSUMES THAT x IS SORTED IN ASCENDING ORDER */ /* general interface */ void nnGinterface(nx, x0, xstep, ny, y0, ystep, /* pixel grid dimensions */ np, xp, yp, /* data points */ wantdist, wantwhich, /* options */ nnd, nnwhich, huge) /* inputs */ int *nx, *ny, *np; double *x0, *xstep, *y0, *ystep, *huge; double *xp, *yp; /* options */ int *wantdist, *wantwhich; /* outputs */ double *nnd; int *nnwhich; /* some inputs + outputs are not used in all functions */ { void nnGdw(), nnGd(), nnGw(); int di, wh; di = (*wantdist != 0); wh = (*wantwhich != 0); if(di && wh) { nnGdw(nx, x0, xstep, ny, y0, ystep, np, xp, yp, nnd, nnwhich, huge); } else if(di) { nnGd(nx, x0, xstep, ny, y0, ystep, np, xp, yp, nnd, nnwhich, huge); } else if(wh) { nnGw(nx, x0, xstep, ny, y0, ystep, np, xp, yp, nnd, nnwhich, huge); } } #undef FNAME #undef DIST #undef WHICH /* nnGdw returns distances and indices */ #define FNAME nnGdw #define DIST #define WHICH #include "nngrid.h" #undef FNAME #undef DIST #undef WHICH /* nnGd returns distances only */ #define FNAME nnGd #define DIST #include "nngrid.h" #undef FNAME #undef DIST #undef WHICH /* nnGw returns indices only */ #define FNAME nnGw #define WHICH #include "nngrid.h" #undef FNAME #undef DIST #undef WHICH spatstat/src/discarea.c0000755000176000001440000001502412333041761014660 0ustar ripleyusers/* disc.c Area of intersection between disc and polygonal window $Revision: 1.6 $ $Date: 2011/12/03 00:15:52 $ */ #undef DEBUG #include #include #define MIN(A,B) (((A) < (B)) ? (A) : (B)) #define MAX(A,B) (((A) > (B)) ? (A) : (B)) #ifndef PI #define PI 3.1415926535898 #endif void discareapoly(nc, xc, yc, nr, rmat, nseg, x0, y0, x1, y1, eps, out) /* inputs */ int *nc, *nr, *nseg; double *xc, *yc, *rmat; double *x0, *y0, *x1, *y1; double *eps; /* output */ double *out; { int n, m, i, j, k, nradperpt; double radius, radius2, total, contrib; double xx0, xx1, yy0, yy1, xleft, xright, yleft, yright, xcentre, ycentre; double epsilon; double DiscContrib(); n = *nc; nradperpt = *nr; m = *nseg; epsilon = *eps; for(i = 0; i < n; i++) { xcentre = xc[i]; ycentre = yc[i]; #ifdef DEBUG Rprintf("\ni = %d:\n centre = (%lf, %lf)\n", i, xcentre, ycentre); #endif for(j = 0; j < nradperpt; j++) { radius = rmat[ j * n + i]; radius2 = radius * radius; #ifdef DEBUG Rprintf("radius = %lf\n", radius); #endif total = 0.0; for(k=0; k < m; k++) { #ifdef DEBUG Rprintf("k = %d\n", k); #endif xx0 = x0[k]; yy0 = y0[k]; xx1 = x1[k]; yy1 = y1[k]; #ifdef DEBUG Rprintf("(%lf,%lf) to (%lf,%lf)\n", xx0, yy0, xx1, yy1); #endif /* refer to unit disc at origin */ /* arrange so that xleft < xright */ if(radius <= epsilon) contrib = 0.0; else if(xx0 < xx1) { xleft = (xx0 - xcentre)/radius; xright = (xx1 - xcentre)/radius; yleft = (yy0 - ycentre)/radius; yright = (yy1 - ycentre)/radius; contrib = - radius2 * DiscContrib(xleft,yleft,xright,yright,epsilon); } else { xleft = (xx1 - xcentre)/radius; xright = (xx0 - xcentre)/radius; yleft = (yy1 - ycentre)/radius; yright = (yy0 - ycentre)/radius; contrib = radius2 * DiscContrib(xleft,yleft,xright,yright,epsilon); } #ifdef DEBUG Rprintf("contrib = %lf\n contrib/(pi * r^2)=%lf\n", contrib, contrib/(PI * radius2)); #endif total += contrib; } out[ j * n + i] = total; #ifdef DEBUG Rprintf("total = %lf\ntotal/(pi * r^2) = %lf\n", total, total/(PI * radius2)); #endif } } } /* area of intersection of unit disc with halfplane x <= v */ #ifdef DEBUG #define TRIGBIT(V) trigbit(V) double trigbit(v) double v; { double zero, result; zero = 0.0; if(v < -1.0) return(zero); if(v > 1.0) return(PI); result = PI/2 + asin(v) + v * sqrt(1 - v * v); Rprintf("trigbit: v = %lf, asin(v)=%lf, result=%lf\n", v, asin(v), result); return(result); } #else #define TRIGBIT(V) (((V) <= -1.0) ? 0.0 : (((V) >= 1.0) ? PI : \ (PI/2 + asin(V) + (V) * sqrt(1 - (V) * (V))))) #endif /* Find the area of intersection between a disc centre = (0,0), radius = 1 and the trapezium with upper segment (xleft, yleft) to (xright, yright) ASSUMES xleft < xright */ double DiscContrib(xleft, yleft, xright, yright, eps) double xleft, yleft, xright, yright, eps; /* NOTE: unit disc centred at origin */ { double xlo, xhi, zero, slope, intercept, A, B, C, det; double xcut1, xcut2, ycut1, ycut2, xunder1, xunder2, dx, dx2, result; #ifdef DEBUG double increm; Rprintf( "DiscContrib: xleft=%lf, yleft=%lf, xright=%lf, yright=%lf\n", xleft, yleft, xright, yright); #endif zero = 0.0; /* determine relevant range of x coordinates */ xlo = MAX(xleft, (-1.0)); xhi = MIN(xright, 1.0); if(xlo >= xhi - eps) { /* intersection is empty or negligible */ #ifdef DEBUG Rprintf("intersection is empty or negligible\n"); #endif return(zero); } /* find intersection points between the circle and the line containing upper segment */ slope = (yright - yleft)/(xright - xleft); intercept = yleft - slope * xleft; A = 1 + slope * slope; B = 2 * slope * intercept; C = intercept * intercept - 1.0; det = B * B - 4 * A * C; #ifdef DEBUG Rprintf("slope=%lf, intercept=%lf\nA = %lf, B=%lf, C=%lf, det=%lf\n", slope, intercept, A, B, C, det); #endif if(det <= 0.0) { /* no crossing between disc and infinite line */ if(intercept < 0.0) /* segment is below disc; intersection is empty */ return(zero); /* segment is above disc */ result = TRIGBIT(xhi) - TRIGBIT(xlo); return(result); } xcut1 = (- B - sqrt(det))/(2 * A); xcut2 = (- B + sqrt(det))/(2 * A); /* partition [xlo, xhi] into pieces delimited by {xcut1, xcut2} */ if(xcut1 >= xhi || xcut2 <= xlo) { /* segment is outside disc */ if(yleft < 0.0) { #ifdef DEBUG Rprintf("segment is beneath disc\n"); #endif result = zero; } else { #ifdef DEBUG Rprintf("segment is above disc\n"); #endif result = TRIGBIT(xhi) - TRIGBIT(xlo); } return(result); } /* possibly three parts */ #ifdef DEBUG Rprintf("up to three pieces\n"); #endif result = zero; ycut1 = intercept + slope * xcut1; ycut2 = intercept + slope * xcut2; if(xcut1 > xlo) { /* part to left of cut */ #ifdef DEBUG Rprintf("left of cut: [%lf, %lf]\n", xlo, xcut1); if(ycut1 < 0.0) Rprintf("below disc - no intersection\n"); else { increm = TRIGBIT(xcut1) - TRIGBIT(xlo); Rprintf("increment = %lf\n", increm); result += increm; } #else if(ycut1 >= 0.0) result += TRIGBIT(xcut1) - TRIGBIT(xlo); #endif } if(xcut2 < xhi) { /* part to right of cut */ #ifdef DEBUG Rprintf("right of cut: [%lf, %lf]\n", xcut2, xhi); if(ycut2 < 0.0) Rprintf("below disc - no intersection\n"); else { increm = TRIGBIT(xhi) - TRIGBIT(xcut2); Rprintf("increment = %lf\n", increm); result += increm; } #else if(ycut2 >= 0.0) result += TRIGBIT(xhi) - TRIGBIT(xcut2); #endif } /* part underneath cut */ xunder1 = MAX(xlo, xcut1); xunder2 = MIN(xhi, xcut2); dx = xunder2 - xunder1; dx2 = xunder2 * xunder2 - xunder1 * xunder1; #ifdef DEBUG Rprintf("underneath cut: [%lf, %lf]\n", xunder1, xunder2); increm = intercept * dx + slope * dx2/2 + (TRIGBIT(xunder2) - TRIGBIT(xunder1))/2; Rprintf("increment = %lf\n", increm); result += increm; #else result += intercept * dx + slope * dx2/2 + (TRIGBIT(xunder2) - TRIGBIT(xunder1))/2; #endif return(result); } #ifdef DEBUG /* interface to low level function, for debugging only */ void RDCtest(xleft, yleft, xright, yright, eps, value) double *xleft, *yleft, *xright, *yright, *eps, *value; { double DiscContrib(); *value = DiscContrib(*xleft, *yleft, *xright, *yright, *eps); } #endif spatstat/src/chunkloop.h0000644000176000001440000000144412333041761015112 0ustar ripleyusers/* chunkloop.h Divide a loop into chunks Convenient for divide-and-recombine, and reducing calls to R_CheckUserInterrupt, etc. $Revision: 1.2 $ $Date: 2013/05/27 02:09:10 $ */ #define OUTERCHUNKLOOP(IVAR, LOOPLENGTH, ICHUNK, CHUNKSIZE) \ IVAR = 0; \ ICHUNK = 0; \ while(IVAR < LOOPLENGTH) #define INNERCHUNKLOOP(IVAR, LOOPLENGTH, ICHUNK, CHUNKSIZE) \ ICHUNK += CHUNKSIZE; \ if(ICHUNK > LOOPLENGTH) ICHUNK = LOOPLENGTH; \ for(; IVAR < ICHUNK; IVAR++) #define XOUTERCHUNKLOOP(IVAR, ISTART, IEND, ICHUNK, CHUNKSIZE) \ IVAR = ISTART; \ ICHUNK = 0; \ while(IVAR <= IEND) #define XINNERCHUNKLOOP(IVAR, ISTART, IEND, ICHUNK, CHUNKSIZE) \ ICHUNK += CHUNKSIZE; \ if(ICHUNK > IEND) ICHUNK = IEND; \ for(; IVAR <= IEND; IVAR++) #define CHUNKLOOP_H spatstat/src/scan.c0000644000176000001440000000365412333041761014034 0ustar ripleyusers/* scan.c Scan transform $Revision: 1.2 $ $Date: 2012/04/16 12:00:07 $ */ #include #include #include "raster.h" void shape_raster(); void Cscantrans(x, y, npt, R, out) double *x, *y; /* data points */ int npt; double R; /* radius */ Raster *out; /* scan image */ { int i,j,k,l,m; double d2, R2; int rmin, rmax, cmin, cmax, Rrow, Rcol, lmin, lmax, mmin, mmax; /* initialise raster */ Clear(*out,int,0); /* If the list of data points is empty, ... exit now */ if(npt == 0) return; R2 = R * R; cmin = out->cmin; cmax = out->cmax; rmin = out->rmin; rmax = out->rmax; /* disc size in rows/columns */ Rrow = (int) ceil(R/(out->ystep)); Rcol = (int) ceil(R/(out->xstep)); if(Rrow < 1) Rrow = 1; if(Rcol < 1) Rcol = 1; /* run through points */ for(i = 0; i < npt; i++) { j = RowIndex(*out,y[i]); k = ColIndex(*out,x[i]); lmin = j - Rrow; if(lmin < rmin) lmin = rmin; lmax = j + Rrow; if(lmax > rmax) lmax = rmax; mmin = k - Rcol; if(mmin < cmin) mmin = cmin; mmax = k + Rcol; if(mmax > cmax) mmax = cmax; for(l = lmin; l <= lmax; l++) { for(m = mmin; m <= mmax; m++) { d2 = DistanceToSquared(x[i],y[i],*out,l,m); if(d2 <= R2) Entry(*out,l,m,int) += 1; } } } } /* R interface */ void scantrans(x, y, n, xmin, ymin, xmax, ymax, nr, nc, R, counts) double *x, *y; /* input data points */ int *n; double *xmin, *ymin, *xmax, *ymax; /* guaranteed bounding box */ int *nr, *nc; /* desired raster dimensions */ double *R; /* radius */ /* output array */ int *counts; /* number of R-close points */ { Raster out; int nrow, ncol, npoints; double r; nrow = *nr; ncol = *nc; npoints = *n; r = *R; shape_raster( &out, (void *) counts, *xmin,*ymin,*xmax,*ymax, nrow, ncol, 0, 0); Cscantrans(x, y, npoints, r, &out); } spatstat/src/PerfectStrauss.h0000644000176000001440000002146012333041761016065 0ustar ripleyusers // ........................... Strauss process .......................... // $Revision: 1.4 $ $Date: 2014/02/18 10:43:00 $ class StraussProcess : public PointProcess { public: double beta, gamma, R, Rsquared; StraussProcess(double xmin, double xmax, double ymin, double ymax, double b, double g, double Ri); ~StraussProcess(){} void NewEvent(double *x, double *y, char *InWindow); void GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP); double Interaction(double dsquared); // void CalcBeta(long int xsidepomm, long int ysidepomm, // double *betapomm); // void CheckBeta(long int xsidepomm, long int ysidepomm, // double *betapomm); // double lnCondInt(struct Point2 *TempCell, Point2Pattern *p2p); // void Beta(struct Point2 *TempCell); // void CalcBeta(Point2Pattern *p2p); }; StraussProcess::StraussProcess(double xmin, double xmax, double ymin, double ymax, double b, double g, double Ri) : PointProcess(xmin, xmax, ymin, ymax){ beta = b; gamma = g; R = Ri; Rsquared = R * R; InteractionRange = R; TotalBirthRate = beta*(xmax-xmin)*(ymax-ymin); } double StraussProcess::Interaction(double dsquared) { double rtn; rtn = 1; if(dsquared < Rsquared) rtn = gamma; return(rtn); } void StraussProcess::NewEvent(double *x, double *y, char *InWindow) { double Xdim, Ydim; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; *x = slumptal()*Xdim+Xmin; *y = slumptal()*Ydim+Ymin; *InWindow = 1; } void StraussProcess::GeneratePoisson(Point *headPoint, long int *GeneratedPoints, long int *LivingPoints, long int *NoP) { int i; double xtemp, ytemp, L, Xdim, Ydim; struct Point *TempPoint; Xdim = Xmax-Xmin; Ydim = Ymax-Ymin; L = beta*Xdim*Ydim; *GeneratedPoints = poisson(L); *LivingPoints = *GeneratedPoints; for (i=1; i<=*GeneratedPoints ; i++){ //Rprintf("Generating StraussProcess Poisson 3\n"); //scanf("%f",&f1); xtemp = slumptal()*Xdim+Xmin; ytemp = slumptal()*Ydim+Ymin; // //Rprintf("Generating StraussProcess Poisson 3.2\n"); TempPoint = ALLOCATE(struct Point); // TempPoint->X = xtemp; TempPoint->Y = ytemp; TempPoint->No = i; TempPoint->R = slumptal(); //Rprintf("Generating StraussProcess Poisson 3.6\n"); TempPoint->next = headPoint->next; headPoint->next = TempPoint; *NoP = *NoP + 1; } } //void StraussProcess::CalcBeta(long int xsidepomm, long int ysidepomm, // double *betapomm){ // long int i,j,k; // k=0; // // Rprintf("\ndiagnostic message: Strauss CalcBeta... %ld %ld\n",xsidepomm,ysidepomm); // for(i=0; ibeta; // k++; // } // } //} //void StraussProcess::CheckBeta(long int xsidepomm, long int ysidepomm, // double *betapomm){ // long int i,j,k; // // double d1; // k=0; // // Rprintf("\ndiagnostic message: Strauss CalcBeta... %ld %ld\n",xsidepomm,ysidepomm); // for(i=0; i0.001) && (k==0)){ // Rprintf("%f %f %f %ld %ld\n",fabs(*(betapomm + i*ysidepomm + j)- beta), // *(betapomm + i*ysidepomm + j),beta,i,j); // k++; // // scanf("%lf",&d1); // } // } // } //} //double StraussProcess::lnCondInt(struct Point2 *TempCell, // Point2Pattern *p2p){ // double f1; // long int xco,yco,xc,yc,fx,tx,fy,ty,ry,rx,k; // double dy,dx, lnCI,dst2; // struct Point2 *TempCell2; // // f1 = (TempCell->X-p2p->Xmin)/p2p->XCellDim; xc = int(f1); // CLAMP(xc, 0, p2p->MaxXCell, "xc"); // f1 = (TempCell->Y-p2p->Ymin)/p2p->YCellDim; yc = int(f1); // CLAMP(yc, 0, p2p->MaxYCell, "yc"); // // dx = (Xmax-Xmin)/(double(p2p->MaxXCell+1)); // dy = (Ymax-Ymin)/(double(p2p->MaxYCell+1)); // rx = int(this->InteractionRange/dx+1.0); // ry = int(this->InteractionRange/dy+1.0); // // lnCI = log(TempCell->Beta); // // k = 0; // // if((xc+rx)<=p2p->MaxXCell) tx=xc+rx; else tx = p2p->MaxXCell; // if((yc+ry)<=p2p->MaxYCell) ty=yc+ry; else ty = p2p->MaxYCell; // if((xc-rx)>=0) fx=xc-rx; else fx = 0; // if((yc-ry)>=0) fy=yc-ry; else fy = 0; // // //Rprintf("MCI! %d %d %d %d\n",fx,tx,fy,ty); // // for(xco = fx; xco <= tx; xco++){ // for(yco = fy; yco <= ty; yco++){ // CHECK(p2p->headCell[xco][yco], // "internal error: p2p->headCell[xco][yco] is null in lnCondInt()"); // TempCell2 = p2p->headCell[xco][yco]->next; // CHECK(TempCell2, "internal error: TempCell2 is null in lnCondInt()"); // while(TempCell2!=TempCell2->next){ // if(TempCell2 != TempCell){ // k++; // dst2 = pow(TempCell->X-TempCell2->X,2)+ // pow(TempCell->Y-TempCell2->Y,2); // lnCI += log(Interaction(dst2)); // } // TempCell2 = TempCell2->next; // CHECK(TempCell2, // "internal error: TempCell2 is null in lnCondInt() loop"); // } // } // } // return(lnCI); //} //void StraussProcess::Beta(struct Point2 *TempCell){ // TempCell->Beta = beta; //} //void StraussProcess::CalcBeta(Point2Pattern *p2p){ // long int xco,yco; // // double dy,dx; // struct Point2 *TempMother; // // for(xco = 0; xco <= p2p->MaxXCell; xco++){ // for(yco = 0; yco <= p2p->MaxYCell; yco++){ // CHECK(p2p->headCell[xco][yco], // "internal error: p2p->headCell[xco][yco] is null in CalcBeta()"); // TempMother = p2p->headCell[xco][yco]->next; // CHECK(TempMother, "internal error: TempMother is null in CalcBeta()"); // while(TempMother!=TempMother->next){ // TempMother->Beta = this->beta; // TempMother = TempMother->next; // CHECK(TempMother, // "internal error: TempMother is null in CalcBeta() loop"); // } // } // } //} // ........................... Interface to R .......................... extern "C" { SEXP PerfectStrauss(SEXP beta, SEXP gamma, SEXP r, SEXP xrange, SEXP yrange) { // input parameters double Beta, Gamma, R, Xmin, Xmax, Ymin, Ymax; double *Xrange, *Yrange; // internal int xcells, ycells; long int EndTime, StartTime; // output int noutmax; SEXP xout, yout, nout, out; double *xx, *yy; int *nn; SEXP stout, etout; int *ss, *ee; // protect arguments from garbage collector PROTECT(beta = AS_NUMERIC(beta)); PROTECT(gamma = AS_NUMERIC(gamma)); PROTECT(r = AS_NUMERIC(r)); PROTECT(xrange = AS_NUMERIC(xrange)); PROTECT(yrange = AS_NUMERIC(yrange)); // that's 5 protected objects // extract arguments Beta = *(NUMERIC_POINTER(beta)); Gamma = *(NUMERIC_POINTER(gamma)); R = *(NUMERIC_POINTER(r)); Xrange = NUMERIC_POINTER(xrange); Xmin = Xrange[0]; Xmax = Xrange[1]; Yrange = NUMERIC_POINTER(yrange); Ymin = Yrange[0]; Ymax = Yrange[1]; // compute cell array size xcells = (int) floor((Xmax-Xmin)/ R); if(xcells > 9) xcells = 9; if(xcells < 1) xcells = 1; ycells = (int) floor((Ymax-Ymin)/ R); if(ycells > 9) ycells = 9; if(ycells < 1) ycells = 1; #ifdef DBGS Rprintf("xcells %d ycells %d\n",xcells,ycells); Rprintf("Initialising\n"); #endif // Initialise Strauss point process StraussProcess ExampleProcess(Xmin,Xmax,Ymin,Ymax, Beta, Gamma, R); // Initialise point pattern Point2Pattern ExamplePattern(Xmin,Xmax,Ymin,Ymax, xcells, ycells); // parameters: min x, max x, min y, max y, "cells" in x and y direction // used for speeding up neighbour counting, 9 is max here #ifdef DBGS Rprintf("Initialisation complete\n"); #endif // Synchronise random number generator GetRNGstate(); // Initialise perfect sampler Sampler PerfectSampler(&ExampleProcess); // Perform perfect sampling PerfectSampler.Sim(&ExamplePattern, &StartTime, &EndTime); // Synchronise random number generator PutRNGstate(); // Get upper estimate of number of points noutmax = ExamplePattern.UpperCount() + 1; // Allocate space for output PROTECT(xout = NEW_NUMERIC(noutmax)); PROTECT(yout = NEW_NUMERIC(noutmax)); PROTECT(nout = NEW_INTEGER(1)); PROTECT(stout = NEW_INTEGER(1)); PROTECT(etout = NEW_INTEGER(1)); xx = NUMERIC_POINTER(xout); yy = NUMERIC_POINTER(yout); nn = INTEGER_POINTER(nout); ss = INTEGER_POINTER(stout); ee = INTEGER_POINTER(etout); // copy data into output storage ExamplePattern.Return(xx, yy, nn, noutmax); *ss = StartTime; *ee = EndTime; // pack up into output list PROTECT(out = NEW_LIST(5)); SET_VECTOR_ELT(out, 0, xout); SET_VECTOR_ELT(out, 1, yout); SET_VECTOR_ELT(out, 2, nout); SET_VECTOR_ELT(out, 3, stout); SET_VECTOR_ELT(out, 4, etout); // return UNPROTECT(11); // 5 arguments plus xout, yout, nout, stout, etout, out return(out); } } spatstat/src/pcf3.c0000755000176000001440000001201112333041761013731 0ustar ripleyusers#include #include #include #include #include "geom3.h" #include "functable.h" #include "chunkloop.h" #include "constants.h" /* $Revision: 1.7 $ $Date: 2012/03/27 05:01:41 $ pair correlation function of 3D point pattern (Epanechnikov kernel) pcf3trans translation correction pcf3isot isotropic correction */ #define FOURPI (2.0 * M_2PI) void pcf3trans(p, n, b, pcf, delta) Point *p; int n; Box *b; Ftable *pcf; double delta; { register int i, j, l, lmin, lmax, maxchunk; register double dx, dy, dz, dist; register double vx, vy, vz, tval; Point *ip, *jp; double dt, vol, lambda, denom; double coef, twocoef, frac, invweight, kernel; double sphesfrac(), sphevol(); /* compute denominator & initialise numerator*/ vol = (b->x1 - b->x0) * (b->y1 - b->y0) * (b->z1 - b->z0); lambda = ((double) n )/ vol; denom = lambda * lambda; for(l = 0; l < pcf->n; l++) { (pcf->denom)[l] = denom; (pcf->num)[l] = 0.0; } /* spacing of argument in result vector */ dt = (pcf->t1 - pcf->t0)/(pcf->n - 1); /* compute numerator */ OUTERCHUNKLOOP(i, n, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, n, maxchunk, 8196) { ip = p + i; for(j = i + 1; j < n; j++) { /* compute pairwise distance */ jp = p + j; dx = jp->x - ip->x; dy = jp->y - ip->y; dz = jp->z - ip->z; dist = sqrt(dx * dx + dy * dy + dz * dz); lmin = ceil( ((dist - delta) - pcf->t0) / dt ); lmax = floor( ((dist + delta) - pcf->t0) / dt ); if(lmax >= 0 && lmin < pcf->n) { /* kernel centred at 'dist' has nonempty intersection with specified range of t values */ /* compute intersection */ if(lmin < 0) lmin = 0; if(lmax >= pcf->n) lmax = pcf->n - 1; /* compute (inverse) edge correction weight */ vx = b->x1 - b->x0 - (dx > 0 ? dx : -dx); vy = b->y1 - b->y0 - (dy > 0 ? dy : -dy); vz = b->z1 - b->z0 - (dz > 0 ? dz : -dz); invweight = vx * vy * vz * FOURPI * dist * dist; if(invweight > 0.0) { for(l = lmin; l < pcf->n; l++) { tval = pcf->t0 + l * dt; /* unnormalised Epanechnikov kernel with halfwidth delta */ frac = (dist - tval)/delta; kernel = (1 - frac * frac); if(kernel > 0) (pcf->num)[l] += kernel / invweight; } } } } } } /* constant factor in kernel */ coef = 3.0/(4.0 * delta); /* multiplied by 2 because we only visited i < j pairs */ twocoef = 2.0 * coef; /* normalise kernel and compute ratio estimate */ for(l = 0; l < pcf->n; l++) { (pcf->num)[l] *= twocoef; (pcf->f)[l] = ((pcf->denom)[l] > 0.0) ? (pcf->num)[l] / (pcf->denom)[l] : 0.0; } } void pcf3isot(p, n, b, pcf, delta) Point *p; int n; Box *b; Ftable *pcf; double delta; { register int i, j, l, lmin, lmax, maxchunk; register double dx, dy, dz, dist; Point *ip, *jp; double dt, vol, denom, mass, tval; double coef, frac, kernel; double sphesfrac(), sphevol(); Point vertex; Box half; /* compute denominator & initialise numerator*/ vol = (b->x1 - b->x0) * (b->y1 - b->y0) * (b->z1 - b->z0); denom = ((double) (n * n))/vol; for(l = 0; l < pcf->n; l++) { (pcf->denom)[l] = denom; (pcf->num)[l] = 0.0; } /* spacing of argument in result vector */ dt = (pcf->t1 - pcf->t0)/(pcf->n - 1); /* set up for volume correction */ vertex.x = b->x0; vertex.y = b->y0; vertex.z = b->z0; half.x1 = b->x1; half.y1 = b->y1; half.z1 = b->z1; half.x0 = (b->x0 + b->x1)/2.0; half.y0 = (b->y0 + b->y1)/2.0; half.z0 = (b->z0 + b->z1)/2.0; /* compute numerator */ OUTERCHUNKLOOP(i, n, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, n, maxchunk, 8196) { ip = p + i; for(j = i + 1; j < n; j++) { jp = p + j; dx = jp->x - ip->x; dy = jp->y - ip->y; dz = jp->z - ip->z; dist = sqrt(dx * dx + dy * dy + dz * dz); lmin = ceil( ((dist - delta) - pcf->t0) / dt ); lmax = floor( ((dist + delta) - pcf->t0) / dt ); if(lmax >= 0 && lmin < pcf->n) { /* kernel centred at 'dist' has nonempty intersection with specified range of t values */ /* compute intersection */ if(lmin < 0) lmin = 0; if(lmax >= pcf->n) lmax = pcf->n - 1; /* compute edge correction weight */ mass = (1.0 / sphesfrac(ip, b, dist)) + (1.0 / sphesfrac(jp, b, dist)); mass *= 1.0 - 8.0 * sphevol(&vertex, &half, dist) / vol; if(mass > 0.0) { mass /= FOURPI * dist * dist; for(l = lmin; l < pcf->n; l++) { tval = pcf->t0 + l * dt; /* unnormalised Epanechnikov kernel with halfwidth delta */ frac = (dist - tval)/delta; kernel = (1 - frac * frac); if(kernel > 0) (pcf->num)[l] += kernel * mass; } } } } } } /* constant factor in kernel */ coef = 3.0/(4.0 * delta); /* normalise kernel and compute ratio estimate */ for(l = 0; l < pcf->n; l++) { (pcf->num)[l] *= coef; (pcf->f)[l] = ((pcf->denom)[l] > 0.0)? (pcf->num)[l] / (pcf->denom)[l] : 0.0; } } spatstat/src/straush.c0000755000176000001440000000573512333041761014606 0ustar ripleyusers#include #include #include "methas.h" #include "dist2.h" /* Conditional intensity computation for Hard core Strauss process */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct StraussHard { double gamma; double r; /* interaction distance */ double h; /* hard core distance */ double loggamma; double r2; double h2; double r2h2; /* r^2 - h^2 */ double *period; int hard; int per; } StraussHard; /* initialiser function */ Cdata *straushinit(state, model, algo) State state; Model model; Algor algo; { StraussHard *strausshard; strausshard = (StraussHard *) R_alloc(1, sizeof(StraussHard)); /* Interpret model parameters*/ strausshard->gamma = model.ipar[0]; strausshard->r = model.ipar[1]; /* No longer passed as r^2 */ strausshard->h = model.ipar[2]; /* No longer passed as h^2 */ strausshard->r2 = pow(strausshard->r, 2); strausshard->h2 = pow(strausshard->h, 2); strausshard->r2h2 = strausshard->r2 - strausshard->h2; strausshard->period = model.period; /* is the interaction numerically equivalent to hard core ? */ strausshard->hard = (strausshard->gamma < DOUBLE_EPS); strausshard->loggamma = (strausshard->hard) ? 0 : log(strausshard->gamma); /* periodic boundary conditions? */ strausshard->per = (model.period[0] > 0.0); return((Cdata *) strausshard); } /* conditional intensity evaluator */ double straushcif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, kount, ix, ixp1, j; double *x, *y; double u, v; double r2, r2h2, cifval; StraussHard *strausshard; double *period; DECLARE_CLOSE_VARS; strausshard = (StraussHard *) cdata; r2 = strausshard->r2; r2h2 = strausshard->r2h2; period = strausshard->period; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; if(npts == 0) return((double) 1.0); kount = 0; ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(strausshard->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_PERIODIC(u,v,x[j],y[j],period,r2)) { /* RESIDUE = r2 - distance^2 */ if(RESIDUE > r2h2) return(0.0); ++kount; } } } if(ixp1 < npts) { for(j=ixp1; j r2h2) return(0.0); ++kount; } } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE(u,v,x[j],y[j],r2)) { if(RESIDUE > r2h2) return(0.0); ++kount; } } } if(ixp1 < npts) { for(j=ixp1; j r2h2) return(0.0); ++kount; } } } } if(strausshard->hard) { if(kount > 0) cifval = 0.0; else cifval = 1.0; } else cifval = exp(strausshard->loggamma*kount); return cifval; } Cifns StraussHardCifns = { &straushinit, &straushcif, (updafunptr) NULL, NO}; spatstat/src/crossloop.h0000644000176000001440000000341112333041761015127 0ustar ripleyusers/* crossloop.h Generic code template for loop for cross-close-pairs operations collecting contributions to point x_i from all points y_j such that ||x_i - y_j|| <= r cpp variables used: INITIAL_I code executed at start of 'i' loop CONTRIBUTE_IJ code executed to compute contribution from j to i COMMIT_I code executed to save total contribution to i C variables used: int i, j, n1, n2, maxchunk, jleft; double x1i, y1i, xleft, dx, dy, d2, rmax, r2max; double *x1, *y1, *x2, *y2; $Revision: 1.2 $ $Date: 2014/04/02 07:59:10 $ */ #ifndef CHUNKLOOP_H #include "chunkloop.h" #endif #define CROSSLOOP(INITIAL_I, CONTRIBUTE_IJ, COMMIT_I) \ OUTERCHUNKLOOP(i, n1, maxchunk, 65536) { \ R_CheckUserInterrupt(); \ INNERCHUNKLOOP(i, n1, maxchunk, 65536) { \ \ x1i = x1[i]; \ y1i = y1[i]; \ \ INITIAL_I; \ \ jleft = 0; \ \ /* \ adjust starting point jleft \ */ \ xleft = x1i - rmax; \ while((x2[jleft] < xleft) && (jleft+1 < n2)) \ ++jleft; \ \ /* \ process from j = jleft until dx > rmax \ */ \ for(j=jleft; j < n2; j++) { \ dx = x2[j] - x1i; \ if(dx > rmax) \ break; \ dy = y2[j] - y1i; \ d2 = dx * dx + dy * dy; \ if(d2 <= r2max) { \ /* add this (i, j) pair to output */ \ CONTRIBUTE_IJ; \ } \ } \ COMMIT_I; \ } \ } spatstat/src/badgey.c0000755000176000001440000003136512333041761014346 0ustar ripleyusers#include #include #include #include "methas.h" #include "dist2.h" /* To get debug output, insert the line: #define DEBUG 1 */ void fexitc(const char *msg); /* Conditional intensity function for a multiscale saturation process. parameter vector: ipar[0] = ndisc ipar[1] = gamma[0] ipar[2] = r[0] ipar[3] = s[0] ... */ typedef struct BadGey { /* model parameters */ int ndisc; double *gamma; double *r; double *s; /* transformations of the parameters */ double *r2; double *loggamma; int *hard; /* periodic distance */ double *period; int per; /* auxiliary counts */ int *aux; /* matrix[ndisc, npmax]: neighbour counts in current state */ int *tee; /* vector[ndisc] : neighbour count at point in question */ double *w; /* vector[ndisc] : sum of changes in counts at other points */ } BadGey; Cdata *badgeyinit(state, model, algo) State state; Model model; Algor algo; { int i, j, k, i0, ndisc, nmatrix; double r, g, d2; BadGey *badgey; /* create storage */ badgey = (BadGey *) R_alloc(1, sizeof(BadGey)); badgey->ndisc = ndisc = model.ipar[0]; /* Allocate space for parameter vectors */ badgey->gamma = (double *) R_alloc((size_t) ndisc, sizeof(double)); badgey->r = (double *) R_alloc((size_t) ndisc, sizeof(double)); badgey->s = (double *) R_alloc((size_t) ndisc, sizeof(double)); /* Derived values */ badgey->r2 = (double *) R_alloc((size_t) ndisc, sizeof(double)); badgey->loggamma = (double *) R_alloc((size_t) ndisc, sizeof(double)); badgey->hard = (int *) R_alloc((size_t) ndisc, sizeof(int)); /* copy and transform parameters */ for(i=0; i < ndisc; i++) { i0 = 3*i + 1; g = badgey->gamma[i] = model.ipar[i0]; r = badgey->r[i] = model.ipar[i0 + 1]; badgey->s[i] = model.ipar[i0 + 2]; badgey->r2[i] = r * r; badgey->hard[i] = (g < DOUBLE_EPS); badgey->loggamma[i] = (g < DOUBLE_EPS) ? 0 : log(g); } /* periodic boundary conditions? */ badgey->period = model.period; badgey->per = (model.period[0] > 0.0); /* Allocate scratch space */ badgey->tee = (int *) R_alloc((size_t) ndisc, sizeof(int)); badgey->w = (double *) R_alloc((size_t) ndisc, sizeof(double)); /* Allocate space for auxiliary counts */ nmatrix = ndisc * state.npmax; badgey->aux = (int *) R_alloc((size_t) nmatrix, sizeof(int)); /* Initialise auxiliary counts */ for(i = 0; i < nmatrix; i++) badgey->aux[i] = 0; for(i = 0; i < state.npts; i++) { for(j = 0; j < state.npts; j++) { if(j == i) continue; d2 = dist2either(state.x[i], state.y[i], state.x[j], state.y[j], badgey->period); for(k = 0; k < ndisc; k++) { if(d2 < badgey->r2[k]) MAT(badgey->aux, k, i, ndisc) += 1; } } } #ifdef DEBUG Rprintf("Finished initialiser; ndisc=%d\n", ndisc); #endif return((Cdata *) badgey); } #define AUX(I,J) MAT(aux, I, J, ndisc) double badgeycif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int ix, j, k, npts, ndisc, tk; double u, v, d2; double a, dd2, b, f, r2, s, cifval; double *x, *y; int *tee, *aux; double *w; BadGey *badgey; badgey = (BadGey *) cdata; #ifdef DEBUG Rprintf("Entering badgeycif\n"); #endif npts = state.npts; cifval = 1.0; if(npts==0) return cifval; x = state.x; y = state.y; u = prop.u; v = prop.v; ix = prop.ix; ndisc = badgey->ndisc; tee = badgey->tee; aux = badgey->aux; w = badgey->w; /* For disc k, tee[k] = neighbour count at the point in question; w[k] = sum of changes in (saturated) neighbour counts at other points */ if(prop.itype == BIRTH) { /* compute tee[k] and w[k] from scratch */ for(k = 0; k < ndisc; k++) { tee[k] = 0; w[k] = 0.0; } if(badgey->per) { /* periodic distance */ for(j=0; jperiod); for(k = 0; k < ndisc; k++) { if(d2 < badgey->r2[k]) { tee[k]++; f = badgey->s[k] - AUX(k,j); if(f > 1) /* j is not saturated after addition of (u,v) */ w[k] += 1; /* addition of (u,v) increases count by 1 */ else if(f > 0) /* j becomes saturated by addition of (u,v) */ w[k] += f; } } } } else { /* Euclidean distance */ for(j=0; jr2[k]) { tee[k]++; f = badgey->s[k] - AUX(k,j); if(f > 1) /* j is not saturated after addition of (u,v) */ w[k] += 1; /* addition of (u,v) increases count by 1 */ else if(f > 0) /* j becomes saturated by addition of (u,v) */ w[k] += f; } } } } } else if(prop.itype == DEATH) { /* extract current auxiliary counts for point ix */ /* compute w[k] from scratch */ for(k = 0; k < ndisc; k++) { tee[k] = AUX(k,ix); w[k] = 0.0; } /* compute change in counts for other points */ if(badgey->per) { /* Periodic distance */ for(j=0; jperiod); for(k = 0; k < ndisc; k++) { if(d2 < badgey->r2[k]) { f = badgey->s[k] - AUX(k,j); if(f > 0) /* j is not saturated */ w[k] += 1; /* deletion of 'ix' decreases count by 1 */ else { f += 1; if(f > 0) { /* j is not saturated after deletion of 'ix' (s must be fractional) */ w[k] += f; } } } } } } else { /* Euclidean distance */ for(j=0; jr2[k]) { f = badgey->s[k] - AUX(k,j); if(f > 0) /* j is not saturated */ w[k] += 1; /* deletion of 'ix' decreases count by 1 */ else { f += 1; if(f > 0) { /* j is not saturated after deletion of 'ix' (s must be fractional) */ w[k] += f; } } } } } } } else if(prop.itype == SHIFT) { /* compute auxiliary counts from scratch */ for(k = 0; k < ndisc; k++) { tee[k] = 0; w[k] = 0.0; } /* Compute the cif at the new point, not the ratio of new/old */ if(badgey->per) { /* periodic distance */ for(j=0; jperiod); for(k = 0; k < ndisc; k++) { r2 = badgey->r2[k]; if(d2 < r2) { /* shifted point is a neighbour of point j */ tee[k]++; a = AUX(k,j); s = badgey->s[k]; /* Adjust */ dd2 = dist2(x[ix],y[ix], x[j],y[j],badgey->period); if(dd2 < r2) a -= 1; b = a + 1; /* b is the number of neighbours of point j in new state */ if(a < s && s < b) { w[k] += s - a; /* s is fractional and j is saturated */ } else if(s >= b) w[k] += 1; } } } } else { /* Euclidean distance */ for(j=0; jr2[k]; if(d2 < r2) { /* shifted point is a neighbour of point j */ tee[k]++; a = AUX(k,j); s = badgey->s[k]; /* Adjust */ dd2 = pow(x[ix] - x[j], 2) + pow(y[ix] - y[j], 2); if(dd2 < r2) a -= 1; b = a + 1; /* b is the number of neighbours of point j in new state */ if(a < s && s < b) { w[k] += s - a; /* s is fractional and j is saturated */ } else if(s >= b) w[k] += 1; } } } } } #ifdef DEBUG Rprintf("ndisc=%d\n", ndisc); #endif /* compute total change in saturated count */ for(k = 0; k < ndisc; k++) { s = badgey->s[k]; tk = tee[k]; w[k] += ((tk < s) ? tk : s); #ifdef DEBUG Rprintf("s[%d]=%lf, t[%d]=%d, w[%d]=%lf\n", k, s, k, tk, k, w[k]); #endif } /* evaluate cif */ for(k = 0; k < ndisc; k++) { if(badgey->hard[k]) { if(tee[k] > 0) return(0.0); /* else cifval multiplied by 0^0 = 1 */ } else cifval *= exp(badgey->loggamma[k] * w[k]); } return cifval; } void badgeyupd(state, prop, cdata) State state; Propo prop; Cdata *cdata; { /* Declare other variables */ int ix, npts, ndisc, j, k; double u, v, xix, yix, r2, d2, d2old, d2new; double *x, *y; int *aux; BadGey *badgey; badgey = (BadGey *) cdata; aux = badgey->aux; /* 'state' is current state before transition */ x = state.x; y = state.y; npts = state.npts; ndisc = badgey->ndisc; #ifdef DEBUG Rprintf("start update ---- \n"); for(j=0; j < npts; j++) { for(k=0; k < ndisc; k++) Rprintf("aux[%d,%d]=%d\t", k, j, AUX(k,j)); Rprintf("\n"); } #endif if(prop.itype == BIRTH) { #ifdef DEBUG Rprintf("Update for birth ---- \n"); #endif /* Birth */ u = prop.u; v = prop.v; /* initialise auxiliary counters for new point x[npts], y[npts] */ for(k = 0; k < ndisc; k++) AUX(k, npts) = 0; /* update all auxiliary counters */ if(badgey->per) { /* periodic distance */ for(j=0; j < npts; j++) { d2 = dist2(u,v,x[j],y[j],badgey->period); for(k = 0; k < ndisc; k++) { if(d2 < badgey->r2[k]) { AUX(k, j) += 1; AUX(k, npts) += 1; } } } } else { /* Euclidean distance */ for(j=0; j < npts; j++) { d2 = pow(u - x[j], 2) + pow(v - y[j], 2); for(k = 0; k < ndisc; k++) { if(d2 < badgey->r2[k]) { AUX( k, j) += 1; AUX( k, npts) += 1; } } } } #ifdef DEBUG Rprintf("end update ---- \n"); for(j=0; j <= npts; j++) { for(k=0; k < ndisc; k++) Rprintf("aux[%d,%d]=%d\t", k, j, AUX(k,j)); Rprintf("\n"); } #endif return; } if(prop.itype == DEATH) { /* Death */ ix = prop.ix; u = x[ix]; v = y[ix]; #ifdef DEBUG Rprintf("--- Update for death of point %d = (%lf,%lf) ---- \n", ix, u, v); #endif /* Decrement auxiliary counter for each neighbour of deleted point, and remove entry corresponding to deleted point */ if(badgey->per) { /* periodic distance */ for(j=0; jperiod); for(k = 0; k < ndisc; k++) { if(d2 < badgey->r2[k]) { if(j < ix) AUX(k,j) -= 1; else AUX(k,j-1) = AUX(k,j) - 1; } else if(j >= ix) AUX(k,j-1) = AUX(k,j); } } } else { /* Euclidean distance */ for(j=0; jr2[k]) { #ifdef DEBUG Rprintf("hit for point %d with radius r[%d]\n", j, k); #endif if(j < ix) AUX(k,j) -= 1; else AUX(k,j-1) = AUX(k,j) - 1; } else if(j >= ix) AUX(k,j-1) = AUX(k,j); } } } #ifdef DEBUG Rprintf("end update ---- \n"); for(j=0; j < npts-1; j++) { for(k=0; k < ndisc; k++) Rprintf("aux[%d,%d]=%d\t", k, j, AUX(k,j)); Rprintf("\n"); } #endif return; } if(prop.itype == SHIFT) { #ifdef DEBUG Rprintf("Update for shift ---- \n"); #endif /* Shift */ u = prop.u; v = prop.v; ix = prop.ix; xix = x[ix]; yix = y[ix]; /* recompute all auxiliary counters for point ix */ for(k = 0; k < ndisc; k++) AUX(k,ix) = 0; if(badgey->per) { for(j=0; jperiod); d2old = dist2(xix,yix,x[j],y[j],badgey->period); for(k = 0; k < ndisc; k++) { r2 = badgey->r2[k]; if(d2old >= r2 && d2new >= r2) continue; if(d2new < r2) { /* increment neighbour count for new point */ AUX(k,ix) += 1; if(d2old >= r2) AUX(k,j) += 1; /* point j gains a new neighbour */ } else if(d2old < r2) AUX(k,j) -= 1; /* point j loses a neighbour */ } } } else { /* Euclidean distance */ for(j=0; jr2[k]; if(d2old >= r2 && d2new >= r2) continue; if(d2new < r2) { #ifdef DEBUG Rprintf("shifted point is close to j=%d\n", j); #endif /* increment neighbour count for new point */ AUX(k,ix) += 1; if(d2old >= r2) { #ifdef DEBUG Rprintf("\t(previous position was not)\n"); #endif AUX(k,j) += 1; /* point j gains a new neighbour */ } } else if(d2old < r2) { #ifdef DEBUG Rprintf("previous position was close to j=%d, shifted point is not\n", j); #endif AUX(k,j) -= 1; /* point j loses a neighbour */ } } } } #ifdef DEBUG Rprintf("end update ---- \n"); for(j=0; j < npts; j++) { for(k=0; k < ndisc; k++) Rprintf("aux[%d,%d]=%d\t", k, j, AUX(k,j)); Rprintf("\n"); } #endif return; } fexitc("Unrecognised transition type; bailing out.\n"); } Cifns BadGeyCifns = { &badgeyinit, &badgeycif, &badgeyupd, NO}; spatstat/src/mhsnoop.h0000644000176000001440000000050012333041761014563 0ustar ripleyusers/* Function declarations from mhsnoop.c $Revision: 1.4 $ $Date: 2013/05/27 02:09:10 $ */ #include "mhsnoopdef.h" void initmhsnoop(Snoop *s, SEXP env); void mhsnoop(Snoop *s, int irep, Algor *algo, State *state, Propo *prop, double numer, double denom, int *itype); spatstat/src/sumsymouter.h0000644000176000001440000000343412333041761015525 0ustar ripleyusers/* sumsymouter.h Code template for some functions in linalg.c $Revision: 1.3 $ $Date: 2013/04/18 11:55:24 $ Macros used: FNAME = function name, WEIGHTED = #defined for weighted version */ void FNAME( x, #ifdef WEIGHTED w, #endif p, n, y ) double *x; /* p by n by n array */ #ifdef WEIGHTED double *w; /* n by n matrix (symmetric) */ #endif int *p, *n; double *y; /* output matrix p by p, initialised to zero */ { int N, P; register int i, j, k, m, ijpos, jipos, maxchunk; register double *xij, *xji; #ifdef WEIGHTED register double wij; #endif N = *n; P = *p; OUTERCHUNKLOOP(i, N, maxchunk, 256) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, N, maxchunk, 256) { /* loop over j != i */ if(i > 0) { for(j = 0; j < i; j++) { /* pointers to [i,j] and [j,i] in N*N matrices */ ijpos = i + N * j; jipos = j + N * i; /* pointers to x[, i, j] and x[ , j, i] */ xij = x + ijpos * P; xji = x + jipos * P; /* outer product */ #ifdef WEIGHTED wij = w[ijpos]; #endif for(k = 0; k < P; k++) { for(m = 0; m < P; m++) { #ifdef WEIGHTED y[m + k * P] += wij * xij[m] * xji[k]; #else y[m + k * P] += xij[m] * xji[k]; #endif } } } } if(i + 1 < N) { for(j = i+1; j < N; j++) { /* pointers to [i,j] and [j,i] in N*N matrices */ ijpos = i + N * j; jipos = j + N * i; /* pointers to x[, i, j] and x[ , j, i] */ xij = x + ijpos * P; xji = x + jipos * P; /* outer product */ #ifdef WEIGHTED wij = w[ijpos]; #endif for(k = 0; k < P; k++) { for(m = 0; m < P; m++) { #ifdef WEIGHTED y[m + k * P] += wij * xij[m] * xji[k]; #else y[m + k * P] += xij[m] * xji[k]; #endif } } } } /* end of loop over j */ } } } spatstat/src/sphevol.c0000755000176000001440000000746412333041761014576 0ustar ripleyusers#include #include #include "geom3.h" /* $Revision: 1.2 $ $Date: 2013/05/27 02:09:10 $ Routine for calculating ABSOLUTE volume of intersection between sphere and box Arbitrary positions: point is allowed to be inside or outside box. # ///////////////////////////////////////////// # AUTHOR: Adrian Baddeley, CWI, Amsterdam, 1991. # # MODIFIED BY: Adrian Baddeley, Perth 2009 # # This software is distributed free # under the conditions that # (1) it shall not be incorporated # in software that is subsequently sold # (2) the authorship of the software shall # be acknowledged in any publication that # uses results generated by the software # (3) this notice shall remain in place # in each file. # ////////////////////////////////////////////// */ #ifdef DEBUG #define DBG(X,Y) Rprintf("%s: %f\n", (X), (Y)); #else #define DBG(X,Y) #endif #include "yesno.h" #define ABS(X) ((X >= 0.0) ? (X) : -(X)) static double rcubed, spherevol; double sphevol(point, box, r) Point *point; Box *box; double r; { double sum, p[4], q[4]; double v1(), v2(), v3(); int i, j; rcubed = r * r * r; spherevol = (4.0/3.0) * PI * rcubed; p[1] = box->x0 - point->x; p[2] = box->y0 - point->y; p[3] = box->z0 - point->z; q[1] = box->x1 - point->x; q[2] = box->y1 - point->y; q[3] = box->z1 - point->z; sum = 0; for(i = 1; i <= 3; i++) { sum += v1(p[i], -1, r) + v1(q[i], 1, r); #ifdef DEBUG Rprintf("i = %d, v1 = %f, v1 = %f\n", i, v1(p[i], -1, r), v1(q[i], 1, r)); #endif } DBG("Past v1", sum) for(i = 1; i < 3; i++) for(j = i+1; j <= 3; j++) { sum -= v2(p[i], -1, p[j], -1, r) + v2(p[i], -1, q[j], 1, r) + v2(q[i], 1, p[j], -1, r) + v2(q[i], 1, q[j], 1, r); #ifdef DEBUG Rprintf("i = %d, j = %d, sum = %f\n", i, j, sum); #endif } DBG("Past v2", sum) sum += v3(p[1], -1, p[2], -1, p[3], -1, r) + v3(p[1], -1, p[2], -1, q[3], 1, r); DBG("sum", sum) sum += v3(p[1], -1, q[2], 1, p[3], -1, r) + v3(p[1], -1, q[2], 1, q[3], 1, r); DBG("sum", sum) sum += v3(q[1], 1, p[2], -1, p[3], -1, r) + v3(q[1], 1, p[2], -1, q[3], 1, r); DBG("sum", sum) sum += v3(q[1], 1, q[2], 1, p[3], -1, r) + v3(q[1], 1, q[2], 1, q[3], 1, r); DBG("Past v3", sum) DBG("sphere volume", spherevol) return(spherevol - sum); } double v1(a,s,r) double a, r; int s; { double value; double u(); short sign; value = 4.0 * rcubed * u(ABS(a)/r, 0.0, 0.0); sign = (a >= 0.0) ? 1 : -1; if(sign == s) return(value); else return(spherevol - value); } double v2(a, sa, b, sb, r) double a, b, r; int sa, sb; { short sign; double u(); sign = (b >= 0.0) ? 1 : -1; if(sign != sb ) return(v1(a, sa, r) - v2(a, sa, ABS(b), 1, r)); b = ABS(b); sb = 1; sign = (a >= 0.0) ? 1 : -1; if(sign != sa) return(v1(b, sb, r) - v2(ABS(a), 1, b, sb, r)); a = ABS(a); return(2.0 * rcubed * u(a/r, b/r, 0.0)); } double v3(a, sa, b, sb, c, sc, r) double a, b, c, r; int sa, sb, sc; { short sign; double u(); sign = (c >= 0.0) ? 1 : -1; if(sign != sc) return(v2(a,sa,b,sb,r) - v3(a,sa,b,sb, ABS(c), 1, r)); c = ABS(c); sc = 1; sign = (b >= 0.0) ? 1 : -1; if(sign != sb) return(v2(a,sa,c,sc,r) - v3(a,sa,ABS(b),1,c,sc,r)); b = ABS(b); sb = 1; sign = (a >= 0.0) ? 1 : -1; if(sign != sa) return(v2(b,sb, c, sc, r) - v3(ABS(a),1, b, sb, c, sc, r)); a = ABS(a); return(rcubed * u(a/r, b/r, c/r)); } double u(a, b, c) double a, b, c; { double w(); if(a * a + b * b + c * c >= 1.0) return(0.0); return( (PI/12.0) * (2.0 - 3.0 * (a + b + c) + (a * a * a + b * b * b + c * c * c)) + w(a,b) + w(b,c) + w(a,c) - a * b * c ); } double w(x,y) double x,y; /* Arguments assumed >= 0 */ { double z; z = sqrt(1 - x * x - y * y); return( (x / 2.0 - x * x * x / 6.0) * atan2(y, z) + (y / 2.0 - y * y * y / 6.0) * atan2(x, z) - ( atan2(x * y , z) - x * y * z )/3.0 ); } spatstat/src/densptcross.c0000644000176000001440000002226312333041761015454 0ustar ripleyusers#include #include #include "chunkloop.h" #include "crossloop.h" #include "constants.h" /* densptcross.c $Revision: 1.2 $ $Date: 2014/04/02 10:27:43 $ Assumes point patterns are sorted in increasing order of x coordinate *crdenspt Density estimate at points *crsmoopt Smoothed mark values at points */ #define TWOPI M_2PI double sqrt(), exp(); #define STD_DECLARATIONS \ int i, j, n1, n2, maxchunk, jleft; \ double x1i, y1i, xleft, dx, dy, d2, rmax, r2max; \ double *x1, *y1, *x2, *y2; #define STD_INITIALISE \ n1 = *nquery; \ x1 = xq; y1 = yq; \ n2 = *ndata; \ x2 = xd; y2 = yd; \ rmax = *rmaxi; \ r2max = rmax * rmax /* ----------------- density estimation -------------------- */ void crdenspt(nquery, xq, yq, ndata, xd, yd, rmaxi, sig, result) /* inputs */ int *nquery; /* number of locations to be interrogated */ double *xq, *yq; /* (x,y) coordinates to be interrogated */ int *ndata; /* number of data points */ double *xd, *yd; /* (x,y) coordinates of data */ double *rmaxi; /* maximum distance at which points contribute */ double *sig; /* Gaussian sd */ /* output */ double *result; /* vector of computed density values */ { STD_DECLARATIONS; double resulti, coef; double sigma, twosig2; STD_INITIALISE; sigma = *sig; twosig2 = 2.0 * sigma * sigma; coef = 1.0/(TWOPI * sigma * sigma); if(n1 == 0 || n2 == 0) return; CROSSLOOP( { resulti = 0.0; }, { resulti += exp(-d2/twosig2); } , { result[i] = coef * resulti; }) } void wtcrdenspt(nquery, xq, yq, ndata, xd, yd, wd, rmaxi, sig, result) /* inputs */ int *nquery; /* number of locations to be interrogated */ double *xq, *yq; /* (x,y) coordinates to be interrogated */ int *ndata; /* number of data points */ double *xd, *yd; /* (x,y) coordinates of data */ double *wd; /* weights of data points */ double *rmaxi; /* maximum distance at which points contribute */ double *sig; /* Gaussian sd */ /* output */ double *result; /* vector of computed density values */ { STD_DECLARATIONS; double resulti, coef; double sigma, twosig2; STD_INITIALISE; sigma = *sig; twosig2 = 2.0 * sigma * sigma; coef = 1.0/(TWOPI * sigma * sigma); if(n1 == 0 || n2 == 0) return; CROSSLOOP( { resulti = 0.0; }, { resulti += wd[j] * exp(-d2/twosig2); }, { result[i] = coef * resulti; } ) } /* ------------- anisotropic versions -------------------- */ void acrdenspt(nquery, xq, yq, ndata, xd, yd, rmaxi, detsigma, sinv, result) /* inputs */ int *nquery; /* number of locations to be interrogated */ double *xq, *yq; /* (x,y) coordinates to be interrogated */ int *ndata; /* number of data points */ double *xd, *yd; /* (x,y) coordinates of data */ double *rmaxi; /* maximum distance at which points contribute */ double *detsigma; /* determinant of variance matrix */ double *sinv; /* inverse variance matrix (2x2, flattened) */ /* output */ double *result; /* vector of computed density values */ { STD_DECLARATIONS; double resulti, coef; double detsig, s11, s12, s21, s22; STD_INITIALISE; detsig = *detsigma; coef = 1.0/(TWOPI * sqrt(detsig)); s11 = sinv[0]; s12 = sinv[1]; s21 = sinv[2]; s22 = sinv[3]; if(n1 == 0 || n2 == 0) return; CROSSLOOP( { resulti = 0.0; }, { resulti += exp(-(dx * (dx * s11 + dy * s12) \ + dy * (dx * s21 + dy * s22))/2.0); }, { result[i] = coef * resulti; }) } void awtcrdenspt(nquery, xq, yq, ndata, xd, yd, wd, rmaxi, detsigma, sinv, result) /* inputs */ int *nquery; /* number of locations to be interrogated */ double *xq, *yq; /* (x,y) coordinates to be interrogated */ int *ndata; /* number of data points */ double *xd, *yd; /* (x,y) coordinates of data */ double *wd; /* weights of data points */ double *rmaxi; /* maximum distance at which points contribute */ double *detsigma; /* determinant of variance matrix */ double *sinv; /* inverse variance matrix (2x2, flattened) */ /* output */ double *result; /* vector of weighted density values */ { STD_DECLARATIONS; double resulti, coef; double detsig, s11, s12, s21, s22; STD_INITIALISE; detsig = *detsigma; coef = 1.0/(TWOPI * sqrt(detsig)); s11 = sinv[0]; s12 = sinv[1]; s21 = sinv[2]; s22 = sinv[3]; if(n1 == 0 || n2 == 0) return; CROSSLOOP( { resulti = 0.0; }, { resulti += wd[j] * \ exp(-(dx * (dx * s11 + dy * s12) \ + dy * (dx * s21 + dy * s22))/2.0); }, { result[i] = coef * resulti; }) } /* --------------- smoothing --------------------------- */ void crsmoopt(nquery, xq, yq, ndata, xd, yd, vd, rmaxi, sig, result) /* inputs */ int *nquery; /* number of locations to be interrogated */ double *xq, *yq; /* (x,y) coordinates to be interrogated */ int *ndata; /* number of data points */ double *xd, *yd; /* (x,y) coordinates of data */ double *vd; /* mark values at data points */ double *rmaxi; /* maximum distance at which points contribute */ double *sig; /* Gaussian sd */ /* output */ double *result; /* vector of computed smoothed values */ { STD_DECLARATIONS; double sigma, twosig2; double numer, denom, wij; STD_INITIALISE; sigma = *sig; twosig2 = 2.0 * sigma * sigma; if(n1 == 0 || n2 == 0) return; CROSSLOOP({ numer = denom = 0.0; }, { \ wij = exp(-d2/twosig2); \ denom += wij; \ numer += wij * vd[j]; \ }, { \ result[i] = numer/denom; \ }) } void wtcrsmoopt(nquery, xq, yq, ndata, xd, yd, vd, wd, rmaxi, sig, result) /* inputs */ int *nquery; /* number of locations to be interrogated */ double *xq, *yq; /* (x,y) coordinates to be interrogated */ int *ndata; /* number of data points */ double *xd, *yd; /* (x,y) coordinates of data */ double *vd; /* mark values at data points */ double *wd; /* weights of data points */ double *rmaxi; /* maximum distance */ double *sig; /* Gaussian sd */ /* output */ double *result; /* vector of computed smoothed values */ { STD_DECLARATIONS; double sigma, twosig2; double numer, denom, wij; STD_INITIALISE; sigma = *sig; twosig2 = 2.0 * sigma * sigma; if(n1 == 0 || n2 == 0) return; CROSSLOOP({ numer = denom = 0.0; }, { \ wij = wd[j] * exp(-d2/twosig2); \ denom += wij; \ numer += wij * vd[j]; \ }, { \ result[i] = numer/denom; \ }) } /* ------------- anisotropic versions -------------------- */ void acrsmoopt(nquery, xq, yq, ndata, xd, yd, vd, rmaxi, sinv, result) /* inputs */ int *nquery; /* number of locations to be interrogated */ double *xq, *yq; /* (x,y) coordinates to be interrogated */ int *ndata; /* number of data points */ double *xd, *yd; /* (x,y) coordinates of data */ double *vd; /* mark values at data points */ double *rmaxi; /* maximum distance at which points contribute */ double *sinv; /* inverse variance matrix (2x2, flattened) */ /* output */ double *result; /* vector of smoothed values */ { STD_DECLARATIONS; double s11, s12, s21, s22; double numer, denom, wij; STD_INITIALISE; s11 = sinv[0]; s12 = sinv[1]; s21 = sinv[2]; s22 = sinv[3]; if(n1 == 0 || n2 == 0) return; CROSSLOOP({ numer = denom = 0.0; }, { \ wij = exp(-(dx * (dx * s11 + dy * s12) \ + dy * (dx * s21 + dy * s22))/2.0); \ denom += wij; \ numer += wij * vd[j]; \ }, { \ result[i] = numer/denom; \ }) } void awtcrsmoopt(nquery, xq, yq, ndata, xd, yd, vd, wd, rmaxi, sinv, result) /* inputs */ int *nquery; /* number of locations to be interrogated */ double *xq, *yq; /* (x,y) coordinates to be interrogated */ int *ndata; /* number of data points */ double *xd, *yd; /* (x,y) coordinates of data */ double *vd; /* mark values at data points */ double *wd; /* weights of data points */ double *rmaxi; /* maximum distance at which points contribute */ double *sinv; /* inverse variance matrix (2x2, flattened) */ /* output */ double *result; /* vector of smoothed values */ { STD_DECLARATIONS; double s11, s12, s21, s22; double numer, denom, wij; STD_INITIALISE; s11 = sinv[0]; s12 = sinv[1]; s21 = sinv[2]; s22 = sinv[3]; if(n1 == 0 || n2 == 0) return; CROSSLOOP({ numer = denom = 0.0; }, { \ wij = wd[j] * exp(-(dx * (dx * s11 + dy * s12) \ + dy * (dx * s21 + dy * s22))/2.0); \ denom += wij; \ numer += wij * vd[j]; \ }, { \ result[i] = numer/denom; \ }) } spatstat/src/loccums.h0000644000176000001440000000400112333041761014545 0ustar ripleyusers/* loccums.h C template for loccum.c data-to-data functions $Revision: 1.5 $ $Date: 2013/09/18 04:28:45 $ macros: FNAME function name NULVAL initial value (empty sum = 0, empty product = 1) INC(A,B) increment operation A += B or A *= B */ void FNAME(n, x, y, v, nr, rmax, ans) /* inputs */ int *n, *nr; double *x, *y, *v; double *rmax; /* output */ double *ans; /* matrix of column vectors of functions for each point */ { int N, Nr, Nans; double Rmax; int i, j, k, kmin, maxchunk, columnstart; double Rmax2, rstep, xi, yi; double dx, dy, dx2, d2, d, contrib; N = *n; Nr = *nr; Rmax = *rmax; if(N == 0) return; rstep = Rmax/(Nr-1); Rmax2 = Rmax * Rmax; Nans = Nr * N; /* initialise products to 1 */ OUTERCHUNKLOOP(k, Nans, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(k, Nans, maxchunk, 8196) { ans[k] = NULVAL; } } OUTERCHUNKLOOP(i, N, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, N, maxchunk, 8196) { xi = x[i]; yi = y[i]; columnstart = Nr * i; /* start position for f_i(.) in 'ans' */ /* process backward until |dx| > Rmax */ if(i > 0) { for(j=i-1; j >= 0; j--) { dx = x[j] - xi; dx2 = dx * dx; if(dx2 > Rmax2) break; dy = y[j] - yi; d2 = dx2 + dy * dy; if(d2 <= Rmax2) { d = sqrt(d2); kmin = (int) ceil(d/rstep); if(kmin < Nr) { contrib = v[j]; for(k = kmin; k < Nr; k++) INC(ans[columnstart + k] , contrib); } } } } /* process forward until |dx| > Rmax */ if(i < N - 1) { for(j=i+1; j < N; j++) { dx = x[j] - xi; dx2 = dx * dx; if(dx2 > Rmax2) break; dy = y[j] - yi; d2 = dx2 + dy * dy; if(d2 <= Rmax2) { d = sqrt(d2); kmin = (int) ceil(d/rstep); if(kmin < Nr) { contrib = v[j]; for(k = kmin; k < Nr; k++) INC(ans[columnstart + k] , contrib); } } } } } } } spatstat/src/methas.h0000755000176000001440000000673012333041761014377 0ustar ripleyusers/* Definitions of types and data structures for Metropolis-Hastings State Current state of point pattern Model Model parameters passed from R Cdata (pointer to) model parameters and precomputed data in C Algor Algorithm parameters (p, q, nrep etc) Propo Proposal in Metropolis-Hastings algorithm History Transition history of MH algorithm Cifns Set of functions for computing the conditional intensity for a point process model. This consists of three functions init(State, Model, Algor) .... initialises auxiliary data eval(State, Propo) ........... evaluates cif update(State,Propo) .......... updates auxiliary data */ /* Current state of point pattern */ typedef struct State { double *x; /* vectors of Cartesian coordinates */ double *y; int *marks; /* vector of mark values */ int npts; /* current number of points */ int npmax; /* storage limit */ int ismarked; /* whether the pattern is marked */ } State; /* Parameters of model passed from R */ typedef struct Model { double *beta; /* vector of activity parameters */ double *ipar; /* vector of interaction parameters */ double *period; /* width & height of rectangle, if torus */ int ntypes; /* number of possible marks */ } Model; /* A pointer to Cdata is a pointer to C storage for parameters of model */ typedef void Cdata; /* RMH Algorithm parameters */ typedef struct Algor { double p; /* probability of proposing shift */ double q; /* conditional probability of proposing death */ int fixall; /* if TRUE, only shifts of location are feasible */ int ncond; /* For conditional simulation, the first 'ncond' points are fixed */ int nrep; /* number of iterations */ int nverb; /* print report every 'nverb' iterations */ int nrep0; /* number of iterations already performed in previous blocks - for reporting purposes */ } Algor; /* Metropolis-Hastings proposal */ typedef struct Propo { double u; /* location of point of interest */ double v; int mrk; /* mark of point of interest */ int ix; /* index of point of interest, if already in pattern */ int itype; /* transition type */ } Propo; /* transition codes 'itype' */ #define REJECT 0 #define BIRTH 1 #define DEATH 2 #define SHIFT 3 #define HISTORY_INCLUDES_RATIO /* Record of transition history */ typedef struct History { int nmax; /* length of vectors */ int n; /* number of events recorded */ int *proptype; /* vector: proposal type */ int *accepted; /* vector: 0 for reject, 1 for accept */ #ifdef HISTORY_INCLUDES_RATIO double *numerator; /* vectors: Hastings ratio numerator & denominator */ double *denominator; #endif } History; /* conditional intensity functions */ typedef Cdata * (*initfunptr)(State state, Model model, Algor algo); typedef double (*evalfunptr)(Propo prop, State state, Cdata *cdata); typedef void (*updafunptr)(State state, Propo prop, Cdata *cdata); typedef struct Cifns { initfunptr init; evalfunptr eval; updafunptr update; int marked; } Cifns; #define NEED_UPDATE(X) ((X).update != (updafunptr) NULL) #define NULL_CIFNS { (initfunptr) NULL, (evalfunptr) NULL, (updafunptr) NULL, NO} /* miscellaneous macros */ #include "yesno.h" # define MAT(X,I,J,M) (X[(I)+(J)*(M)]) spatstat/src/KrectBody.h0000644000176000001440000001042512333041761014775 0ustar ripleyusers /* KrectBody.h +++ Copyright (C) Adrian Baddeley, Julian Gilbey and Rolf Turner 2014 ++++ Main function body for 'Krect' Included multiple times with different values of the macros: (#define or #undef) WEIGHTED ISOTROPIC TRANSLATION BORDER UNCORRECTED **Assumes point pattern is sorted in increasing order of x coordinate** **Assumes window is (0,wide) x (0, high) ** **Assumes output vectors were initialised to zero** Variables are declared in 'KrectFunDec.c' This algorithm is optimal (amongst the choices in spatstat) when the window is a rectangle *and* at least one of the ISOTROPIC, TRANSLATION corrections is needed. There are faster algorithms for the border correction on its own. $Revision: 1.3 $ $Date: 2014/02/09 03:01:27 $ */ /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < N) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > N) maxchunk = N; /* ............. LOOP OVER i ................. */ for(; i < maxchunk; i++) { xi = x[i]; yi = y[i]; #ifdef WEIGHTED wi = w[i]; #endif #ifdef BORDER /* For border correction */ /* compute distance to border */ bx = MIN(xi, (wide - xi)); by = MIN(yi, (high - yi)); bdisti = MIN(bx, by); /* denominator will ultimately be incremented for all r < b[i] */ bratio = bdisti/rstep; /* lbord is the largest integer STRICTLY less than bratio */ lbord = (int) ceil(bratio) - 1; lbord = (lbord <= Nr1) ? lbord : Nr1; /* increment entry corresponding to r = b[i] */ #ifdef WEIGHTED if(lbord >= 0) denomAccum[lbord] += wi; #else if(lbord >= 0) (denomAccum[lbord])++; #endif #endif #ifdef ISOTROPIC /* For isotropic correction */ /* perpendicular distance from point i to each edge of rectangle L = left, R = right, D = down, U = up */ dL = xi; dR = wide - xi; dD = yi; dU = high - yi; /* test for corner of the rectangle */ ncor = SMALL(dL) + SMALL(dR) + SMALL(dD) + SMALL(dU); corner = (ncor >= 2); /* angle between - perpendicular to edge of rectangle and - line from point to corner of rectangle */ bLU = atan2(dU, dL); bLD = atan2(dD, dL); bRU = atan2(dU, dR); bRD = atan2(dD, dR); bUL = atan2(dL, dU); bUR = atan2(dR, dU); bDL = atan2(dL, dD); bDR = atan2(dR, dD); #endif /* ............. LOOP OVER j ................. */ /* scan through points (x[j],y[j]) */ /* scan backward from i-1 until |x[j]-x[i]| > Rmax */ if(i > 0) { for(j=i-1; j >= 0; j--) { /* squared interpoint distance */ dx = xi - x[j]; dx2 = dx * dx; if(dx2 >= R2max) break; dy = y[j] - yi; dij2 = dx2 + dy * dy; if(dij2 < R2max) { #include "KrectIncrem.h" } } } /* scan forward from i+1 until x[j]-x[i] > Rmax */ if(i < N1) { for(j=i+1; j < N; j++) { /* squared interpoint distance */ dx = x[j] - xi; dx2 = dx * dx; if(dx2 >= R2max) break; dy = y[j] - yi; dij2 = dx2 + dy * dy; if(dij2 < R2max) { #include "KrectIncrem.h" } } } } } /* .................. END OF LOOPS ................................ */ /* ............. compute cumulative functions ..................... */ #ifdef UNCORRECTED naccum = ZERO; for(l = 0; l < Nr; l++) { unco[l] += naccum; naccum = unco[l]; } #endif #ifdef ISOTROPIC accum = 0.0; for(l = 0; l < Nr; l++) { iso[l] += accum; accum = iso[l]; } #endif #ifdef TRANSLATION accum = 0.0; for(l = 0; l < Nr; l++) { trans[l] += accum; accum = trans[l]; } #endif #ifdef BORDER /* Now use the accumulated values to compute the numerator and denominator. The value of denomAccum[l] should be added to denom[k] for all k <= l. numerHighAccum[l] should be added to numer[k] for all k <=l numerLowAccum[l] should then be subtracted from numer[k] for k <= l. */ for(l=Nr1, naccum=daccum=ZERO; l>=0; l--) { daccum += denomAccum[l]; bdenom[l] = daccum; naccum += numerHighAccum[l]; bnumer[l] = naccum; naccum -= numerLowAccum[l]; } #endif spatstat/src/dist2dpath.h0000644000176000001440000000765512333041761015170 0ustar ripleyusers/* Function body for dist2dpath.c Macros used: FNAME function name DTYPE declaration for distance values ('double' or 'int') FLOATY (DTYPE == 'double') $Revision: 1.3 $ $Date: 2013/05/27 02:09:10 $ */ #undef DEBUG #define MATRIX(X,I,J) (X)[(J) + n * (I)] #define D(I,J) MATRIX(d, I, J) #define DPATH(I,J) MATRIX(dpath, I, J) #define ADJ(I,J) (MATRIX(adj, I, J) != 0) #define INFIN -1 #define FINITE(X) ((X) >= 0) void FNAME(nv, d, adj, dpath, tol, niter, status) int *nv; /* number of vertices */ DTYPE *d; /* matrix of edge lengths */ int *adj; /* 0/1 edge matrix of graph */ DTYPE *tol; /* tolerance threshold (ignored in integer case) */ DTYPE *dpath; /* output - shortest path distance matrix */ int *niter, *status; /* status = 0 for convergence */ { int i, j, k, n, iter, maxiter, changed; DTYPE dij, dik, dkj, dikj; #ifdef FLOATY DTYPE eps, diff, maxdiff; #endif int totaledges, starti, nneighi, increm, pos; int *start, *nneigh, *indx; n = *nv; #ifdef FLOATY eps = *tol; #endif /* initialise and count edges */ *status = -1; totaledges = 0; for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { DPATH(i, j) = (i == j) ? 0 : ((ADJ(i,j)) ? D(i, j) : INFIN); if((i != j) && ADJ(i,j)) ++totaledges; } } maxiter = 2 + ((totaledges > n) ? totaledges : n); /* store indices j for each edge (i,j) */ indx = (int *) R_alloc(totaledges, sizeof(int)); nneigh = (int *) R_alloc(n, sizeof(int)); start = (int *) R_alloc(n, sizeof(int)); pos = 0; for(i = 0; i < n; i++) { nneigh[i] = 0; start[i] = pos; #ifdef DEBUG Rprintf("Neighbours of %d:\n", i); #endif for(j = 0; j < n; j++) { if((i != j) && ADJ(i,j) && FINITE(D(i,j))) { #ifdef DEBUG Rprintf("\t%d\n", j); #endif ++(nneigh[i]); if(pos > totaledges) error("internal error: pos exceeded storage"); indx[pos] = j; ++pos; } } } /* run */ for(iter = 0; iter < maxiter; iter++) { changed = 0; #ifdef FLOATY maxdiff = 0; #endif #ifdef DEBUG Rprintf("--------- iteration %d ---------------\n", iter); #endif for(i = 0; i < n; i++) { R_CheckUserInterrupt(); nneighi = nneigh[i]; if(nneighi > 0) { /* run through neighbours k of i */ starti = start[i]; for(increm = 0, pos=starti; increm < nneighi; ++increm, ++pos) { k = indx[pos]; dik = DPATH(i,k); #ifdef DEBUG #ifdef FLOATY Rprintf("i=%d k=%d dik=%lf\n", i, k, dik); #else Rprintf("i=%d k=%d dik=%d\n", i, k, dik); #endif #endif /* now run through all other vertices j */ for(j = 0; j < n; j++) { if(j != i && j != k) { dij = DPATH(i,j); dkj = DPATH(k,j); if(FINITE(dkj)) { dikj = dik + dkj; #ifdef DEBUG #ifdef FLOATY Rprintf("considering %d -> (%d) -> %d,\t dij=%lf, dikj=%lf\n", i, k, j, dij, dikj); #else Rprintf("considering %d -> (%d) -> %d,\t dij=%d, dikj=%d\n", i, k, j, dij, dikj); #endif #endif if(!FINITE(dij) || dikj < dij) { #ifdef DEBUG #ifdef FLOATY Rprintf("updating i=%d j=%d via k=%d from %lf to %lf\n", i, j, k, dij, dikj); #else Rprintf("updating i=%d j=%d via k=%d from %d to %d\n", i, j, k, dij, dikj); #endif #endif DPATH(i,j) = DPATH(j,i) = dikj; changed = 1; #ifdef FLOATY diff = (FINITE(dij)) ? dij - dikj : dikj; if(diff > maxdiff) maxdiff = diff; #endif } } } } } } } if(changed == 0) { /* algorithm converged */ #ifdef DEBUG Rprintf("Algorithm converged\n"); #endif *status = 0; break; #ifdef FLOATY } else if(FINITE(maxdiff) && maxdiff < eps) { /* tolerance reached */ #ifdef DEBUG Rprintf("Algorithm terminated with maxdiff=%lf\n", maxdiff); #endif *status = 1; break; #endif } } #ifdef DEBUG Rprintf("Returning after %d iterations on %d vertices\n", iter, n); #endif *niter = iter; } #undef DEBUG #undef MATRIX #undef D #undef DPATH #undef ADJ #undef INFIN #undef FINITE spatstat/src/pairloop.h0000644000176000001440000000327512333041761014741 0ustar ripleyusers/* pairloop.h Generic code template for loop collecting contributions to point x_i from all points x_j such that ||x_i - x_j|| <= r cpp variables used: INITIAL_I code executed at start of 'i' loop CONTRIBUTE_IJ code executed to compute contribution from j to i COMMIT_I code executed to save total contribution to i C variables used: int i, j, n, maxchunk; double xi, yi, dx, dy, dx2, d2, r2max; double *x, *y; $Revision: 1.3 $ $Date: 2013/05/27 02:09:10 $ */ #ifndef CHUNKLOOP_H #include "chunkloop.h" #endif #define PAIRLOOP(INITIAL_I, CONTRIBUTE_IJ, COMMIT_I) \ OUTERCHUNKLOOP(i, n, maxchunk, 65536) { \ R_CheckUserInterrupt(); \ INNERCHUNKLOOP(i, n, maxchunk, 65536) { \ \ xi = x[i]; \ yi = y[i]; \ \ INITIAL_I; \ \ if(i > 0) { \ for(j=i-1; j > 0; j--) { \ dx = x[j] - xi; \ dx2 = dx * dx; \ if(dx2 > r2max) \ break; \ dy = y[j] - yi; \ d2 = dx2 + dy * dy; \ if(d2 <= r2max) { \ CONTRIBUTE_IJ; \ } \ } \ } \ \ if(i+1 < n) { \ for(j=i+1; j < n; j++) { \ dx = x[j] - xi; \ dx2 = dx * dx; \ if(dx2 > r2max) \ break; \ dy = y[j] - yi; \ d2 = dx2 + dy * dy; \ if(d2 <= r2max) { \ CONTRIBUTE_IJ; \ } \ } \ } \ COMMIT_I; \ } \ } spatstat/src/quasirandom.c0000644000176000001440000000105612333041761015425 0ustar ripleyusers/* quasirandom.c Quasi-random sequence generators Copyright (C) Adrian Baddeley 2014 GNU Public Licence version 2 | 3 $Revision: 1.1 $ $Date: 2014/03/17 03:31:59 $ */ #include void Corput(base, n, result) int *base, *n; double *result; { int b, N, i, j; register double f, f0, z; N = *n; b = *base; f0 = 1.0/((double) b); for(i = 0; i < N; i++) { j = i+1; z = 0; f = f0; while(j > 0) { z = z + f * (j % b); j = j/b; f = f / ((double) b); } result[i] = z; } } spatstat/src/nnMDdist.c0000755000176000001440000004360112333041761014627 0ustar ripleyusers/* nnMDdist.c Nearest Neighbour Distances in m dimensions $Revision: 1.8 $ $Date: 2013/05/27 02:09:10 $ Argument x is an m * n matrix with columns corresponding to points and rows corresponding to coordinates. Spatial dimension m must be > 1 THE FOLLOWING FUNCTIONS ASSUME THAT THE ROWS OF x ARE SORTED IN ASCENDING ORDER OF THE FIRST COLUMN nndMD Nearest neighbour distances nnwMD Nearest neighbours and their distances nnXwMD Nearest neighbour from one list to another nnXxMD Nearest neighbour from one list to another, with overlaps knndMD k-th nearest neighbour distances knnwMD k-th nearest neighbours and their distances */ #undef SPATSTAT_DEBUG #include #include #include #include "chunkloop.h" #include "yesno.h" double sqrt(); void nndMD(n, m, x, nnd, huge) /* inputs */ int *n, *m; double *x, *huge; /* output */ double *nnd; { int npoints, mdimen, i, j, left, right, leftpos, rightpos, maxchunk; double d2, d2min, hu, hu2, xi0, dx0, dxj; double *xi; npoints = *n; mdimen = *m; xi = (double *) R_alloc((size_t) mdimen, sizeof(double)); /* dx = (double *) R_alloc((size_t) mdimen, sizeof(double)); */ hu = *huge; hu2 = hu * hu; OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { #ifdef SPATSTAT_DEBUG Rprintf("\ni=%d\n", i); #endif d2min = hu2; for(j = 0; j < mdimen; j++) xi[j] = x[i * mdimen + j]; xi0 = xi[0]; #ifdef SPATSTAT_DEBUG Rprintf("\n ("); for(j = 0; j < mdimen; j++) Rprintf("%lf, ", x[i * mdimen + j]); Rprintf(")\n"); #endif /* search backward */ if(i > 0) { for(left = i - 1; left >= 0; --left) { #ifdef SPATSTAT_DEBUG Rprintf("L=%d, d2min=%lf\n", left, d2min); #endif dx0 = xi0 - x[left * mdimen]; d2 = dx0 * dx0; if(d2 > d2min) break; leftpos = left * mdimen; for(j = 1; j < mdimen && d2 < d2min; j++) { dxj = xi[j] - x[leftpos + j]; d2 += dxj * dxj; } if (d2 < d2min) { d2min = d2; #ifdef SPATSTAT_DEBUG Rprintf("\tupdating d2min=%lf\n", d2min); #endif } } } /* search forward */ if(i < npoints - 1) { for(right = i + 1; right < npoints; ++right) { #ifdef SPATSTAT_DEBUG Rprintf("R=%d, d2min=%lf\n", right, d2min); #endif dx0 = x[right * mdimen] - xi0; d2 = dx0 * dx0; if(d2 > d2min) break; rightpos = right * mdimen; for(j = 1; j < mdimen && d2 < d2min; j++) { dxj = xi[j] - x[rightpos + j]; d2 += dxj * dxj; } if (d2 < d2min) { d2min = d2; #ifdef SPATSTAT_DEBUG Rprintf("\tupdating d2min=%lf\n", d2min); #endif } } } #ifdef SPATSTAT_DEBUG Rprintf("\n"); #endif nnd[i] = sqrt(d2min); } } } /* nnwMD: same as nndMD, but also returns id of nearest neighbour */ void nnwMD(n, m, x, nnd, nnwhich, huge) /* inputs */ int *n, *m; double *x, *huge; /* output */ double *nnd; int *nnwhich; { int npoints, mdimen, i, j, left, right, leftpos, rightpos, which, maxchunk; double d2, d2min, hu, hu2, xi0, dx0, dxj; double *xi; npoints = *n; mdimen = *m; xi = (double *) R_alloc((size_t) mdimen, sizeof(double)); /* dx = (double *) R_alloc((size_t) mdimen, sizeof(double)); */ hu = *huge; hu2 = hu * hu; OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { #ifdef SPATSTAT_DEBUG Rprintf("\ni=%d\n", i); #endif d2min = hu2; which = -1; for(j = 0; j < mdimen; j++) xi[j] = x[i * mdimen + j]; xi0 = xi[0]; /* search backward */ if(i > 0) { for(left = i - 1; left >= 0; --left) { #ifdef SPATSTAT_DEBUG Rprintf("L"); #endif dx0 = xi0 - x[left * mdimen]; d2 = dx0 * dx0; if(d2 > d2min) break; leftpos = left * mdimen; for(j = 1; j < mdimen && d2 < d2min; j++) { dxj = xi[j] - x[leftpos + j]; d2 += dxj * dxj; } if (d2 < d2min) { d2min = d2; which = left; } } } /* search forward */ if(i < npoints - 1) { for(right = i + 1; right < npoints; ++right) { #ifdef SPATSTAT_DEBUG Rprintf("R"); #endif dx0 = x[right * mdimen] - xi0; d2 = dx0 * dx0; if(d2 > d2min) break; rightpos = right * mdimen; for(j = 1; j < mdimen && d2 < d2min; j++) { dxj = xi[j] - x[rightpos + j]; d2 += dxj * dxj; } if (d2 < d2min) { d2min = d2; which = right; } } } #ifdef SPATSTAT_DEBUG Rprintf("\n"); #endif nnd[i] = sqrt(d2min); /* convert index to R convention */ nnwhich[i] = which + 1; } } } /* nnXwMD: for TWO point patterns X and Y, find the nearest neighbour (from each point of X to the nearest point of Y) returning both the distance and the identifier Requires both patterns to be sorted in order of increasing z coord */ void nnXwMD(m, n1, x1, n2, x2, nnd, nnwhich, huge) /* inputs */ int *m, *n1, *n2; double *x1, *x2, *huge; /* outputs */ double *nnd; int *nnwhich; { int mdimen, npoints1, npoints2, i, ell, jleft, jright, jwhich, lastjwhich; double d2, d2min, x1i0, dx0, dxell, hu, hu2; double *x1i; int maxchunk; hu = *huge; hu2 = hu * hu; npoints1 = *n1; npoints2 = *n2; mdimen = *m; if(npoints1 == 0 || npoints2 == 0) return; x1i = (double *) R_alloc((size_t) mdimen, sizeof(double)); /* dx = (double *) R_alloc((size_t) mdimen, sizeof(double)); */ lastjwhich = 0; OUTERCHUNKLOOP(i, npoints1, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints1, maxchunk, 16384) { d2min = hu2; jwhich = -1; for(ell = 0; ell < mdimen; ell++) x1i[ell] = x1[i * mdimen + ell]; x1i0 = x1i[0]; /* search backward from previous nearest neighbour */ if(lastjwhich > 0) { for(jleft = lastjwhich - 1; jleft >= 0; --jleft) { dx0 = x1i0 - x2[jleft * mdimen]; d2 = dx0 * dx0; if(d2 > d2min) break; for(ell = 1; ell < mdimen && d2 < d2min; ell++) { dxell = x1i[ell] - x2[jleft * mdimen + ell]; d2 += dxell * dxell; } if (d2 < d2min) { d2min = d2; jwhich = jleft; } } } /* search forward from previous nearest neighbour */ if(lastjwhich < npoints2) { for(jright = lastjwhich; jright < npoints2; ++jright) { dx0 = x2[jright * mdimen] - x1i0; d2 = dx0 * dx0; if(d2 > d2min) break; for(ell = 1; ell < mdimen && d2 < d2min; ell++) { dxell = x1i[ell] - x2[jright * mdimen + ell]; d2 += dxell * dxell; } if (d2 < d2min) { d2min = d2; jwhich = jright; } } } nnd[i] = sqrt(d2min); nnwhich[i] = jwhich; lastjwhich = jwhich; } } } /* nnXxMD: similar to nnXwMD but allows X and Y to include common points (which are not to be counted as neighbours) Code numbers id1, id2 are attached to the patterns X and Y respectively, such that x1[i], y1[i] and x2[j], y2[j] are the same point iff id1[i] = id2[j]. Requires both patterns to be sorted in order of increasing y coord */ void nnXxMD(m, n1, x1, id1, n2, x2, id2, nnd, nnwhich, huge) /* inputs */ int *m, *n1, *n2; double *x1, *x2, *huge; int *id1, *id2; /* outputs */ double *nnd; int *nnwhich; { int mdimen, npoints1, npoints2, i, ell, jleft, jright, jwhich, lastjwhich, id1i; double d2, d2min, x1i0, dx0, dxell, hu, hu2; double *x1i; int maxchunk; hu = *huge; hu2 = hu * hu; npoints1 = *n1; npoints2 = *n2; mdimen = *m; if(npoints1 == 0 || npoints2 == 0) return; x1i = (double *) R_alloc((size_t) mdimen, sizeof(double)); /* dx = (double *) R_alloc((size_t) mdimen, sizeof(double)); */ lastjwhich = 0; OUTERCHUNKLOOP(i, npoints1, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints1, maxchunk, 16384) { d2min = hu2; jwhich = -1; id1i = id1[i]; for(ell = 0; ell < mdimen; ell++) x1i[ell] = x1[i * mdimen + ell]; x1i0 = x1i[0]; /* search backward from previous nearest neighbour */ if(lastjwhich > 0) { for(jleft = lastjwhich - 1; jleft >= 0; --jleft) { dx0 = x1i0 - x2[jleft * mdimen]; d2 = dx0 * dx0; if(d2 > d2min) break; /* do not compare identical points */ if(id2[jleft] != id1i) { for(ell = 1; ell < mdimen && d2 < d2min; ell++) { dxell = x1i[ell] - x2[jleft * mdimen + ell]; d2 += dxell * dxell; } if (d2 < d2min) { d2min = d2; jwhich = jleft; } } } } /* search forward from previous nearest neighbour */ if(lastjwhich < npoints2) { for(jright = lastjwhich; jright < npoints2; ++jright) { dx0 = x2[jright * mdimen] - x1i0; d2 = dx0 * dx0; if(d2 > d2min) break; /* do not compare identical points */ if(id2[jright] != id1i) { for(ell = 1; ell < mdimen && d2 < d2min; ell++) { dxell = x1i[ell] - x2[jright * mdimen + ell]; d2 += dxell * dxell; } if (d2 < d2min) { d2min = d2; jwhich = jright; } } } } nnd[i] = sqrt(d2min); nnwhich[i] = jwhich; lastjwhich = jwhich; } } } /* knndMD nearest neighbours 1:kmax */ void knndMD(n, m, kmax, x, nnd, huge) /* inputs */ int *n, *m, *kmax; double *x, *huge; /* output matrix (kmax * npoints) */ double *nnd; { int npoints, mdimen, nk, nk1, i, j, k, k1, left, right, unsorted, maxchunk; double d2, d2minK, xi0, dx0, dxj, hu, hu2, tmp; double *d2min, *xi; hu = *huge; hu2 = hu * hu; npoints = *n; mdimen = *m; nk = *kmax; nk1 = nk - 1; /* create space to store the squared k-th nearest neighbour distances for the current point */ d2min = (double *) R_alloc((size_t) nk, sizeof(double)); /* scratch space */ xi = (double *) R_alloc((size_t) mdimen, sizeof(double)); /* loop over points */ OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { #ifdef SPATSTAT_DEBUG Rprintf("\ni=%d\n", i); #endif /* initialise nn distances */ d2minK = hu2; for(k = 0; k < nk; k++) d2min[k] = hu2; for(j = 0; j < mdimen; j++) xi[j] = x[i* mdimen + j]; xi0 = xi[0]; #ifdef SPATSTAT_DEBUG Rprintf("\n ("); for(j = 0; j < mdimen; j++) Rprintf("%lf, ", xi[j]); Rprintf(")\n"); #endif /* search backward */ for(left = i - 1; left >= 0; --left) { dx0 = xi0 - x[left * mdimen]; d2 = dx0 * dx0; if(d2 > d2minK) break; #ifdef SPATSTAT_DEBUG Rprintf("L=%d\n", left); Rprintf("\t 0 "); #endif for(j = 1; j < mdimen && d2 < d2minK; j++) { #ifdef SPATSTAT_DEBUG Rprintf("%d ", j); #endif dxj = xi[j] - x[left * mdimen + j]; d2 += dxj * dxj; } #ifdef SPATSTAT_DEBUG Rprintf("\n\t d2=%lf\n", d2); #endif if (d2 < d2minK) { /* overwrite last entry */ #ifdef SPATSTAT_DEBUG Rprintf("\td2=%lf overwrites d2min[%d] = %lf\n", d2, nk1, d2min[nk1]); #endif d2min[nk1] = d2; /* bubble sort */ #ifdef SPATSTAT_DEBUG Rprintf("\td2min[] before bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%lf, ", d2min[k]); Rprintf("\n"); #endif unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; } else { unsorted = NO; } } #ifdef SPATSTAT_DEBUG Rprintf("\td2min[] after bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%lf, ", d2min[k]); Rprintf("\n"); #endif /* adjust maximum distance */ d2minK = d2min[nk1]; } } /* search forward */ for(right = i + 1; right < npoints; ++right) { #ifdef SPATSTAT_DEBUG Rprintf("R=%d\n", right); Rprintf("\t 0 "); #endif dx0 = x[right * mdimen] - xi0; d2 = dx0 * dx0; if(d2 > d2minK) break; for(j = 1; j < mdimen && d2 < d2minK; j++) { #ifdef SPATSTAT_DEBUG Rprintf("%d ", j); #endif dxj = xi[j] - x[right * mdimen + j]; d2 += dxj * dxj; } #ifdef SPATSTAT_DEBUG Rprintf("\n\t d2=%lf\n", d2); #endif if (d2 < d2minK) { #ifdef SPATSTAT_DEBUG Rprintf("\td2=%lf overwrites d2min[%d] = %lf\n", d2, nk1, d2min[nk1]); #endif /* overwrite last entry */ d2min[nk1] = d2; /* bubble sort */ #ifdef SPATSTAT_DEBUG Rprintf("\td2min[] before bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%lf, ", d2min[k]); Rprintf("\n"); #endif unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; } else { unsorted = NO; } } #ifdef SPATSTAT_DEBUG Rprintf("\td2min[] after bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%lf, ", d2min[k]); Rprintf("\n"); #endif /* adjust maximum distance */ d2minK = d2min[nk1]; } } #ifdef SPATSTAT_DEBUG Rprintf("\n"); #endif /* copy nn distances for point i to output matrix in ROW MAJOR order */ for(k = 0; k < nk; k++) { nnd[nk * i + k] = sqrt(d2min[k]); } } } } /* knnwMD nearest neighbours 1:kmax returns distances and indices */ void knnwMD(n, m, kmax, x, nnd, nnwhich, huge) /* inputs */ int *n, *m, *kmax; double *x, *huge; /* output matrix (kmax * npoints) */ double *nnd; int *nnwhich; { int npoints, mdimen, nk, nk1, i, j, k, k1, left, right, unsorted, itmp; double d2, d2minK, xi0, dx0, dxj, hu, hu2, tmp; double *d2min, *xi; int *which; int maxchunk; hu = *huge; hu2 = hu * hu; npoints = *n; mdimen = *m; nk = *kmax; nk1 = nk - 1; /* create space to store the nearest neighbour distances and indices for the current point */ d2min = (double *) R_alloc((size_t) nk, sizeof(double)); which = (int *) R_alloc((size_t) nk, sizeof(int)); /* scratch space */ xi = (double *) R_alloc((size_t) mdimen, sizeof(double)); /* loop over points */ OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { #ifdef SPATSTAT_DEBUG Rprintf("\ni=%d\n", i); #endif /* initialise nn distances */ d2minK = hu2; for(k = 0; k < nk; k++) { d2min[k] = hu2; which[k] = -1; } for(j = 0; j < mdimen; j++) xi[j] = x[i* mdimen + j]; xi0 = xi[0]; #ifdef SPATSTAT_DEBUG Rprintf("\n ("); for(j = 0; j < mdimen; j++) Rprintf("%lf, ", x[i * mdimen + j]); Rprintf(")\n"); #endif /* search backward */ for(left = i - 1; left >= 0; --left) { #ifdef SPATSTAT_DEBUG Rprintf("L=%d, d2minK=%lf\n", left, d2minK); Rprintf("\t 0 "); #endif dx0 = xi0 - x[left * mdimen]; d2 = dx0 * dx0; if(d2 > d2minK) break; for(j = 1; j < mdimen && d2 < d2minK; j++) { #ifdef SPATSTAT_DEBUG Rprintf("%d ", j); #endif dxj = xi[j] - x[left * mdimen + j]; d2 += dxj * dxj; } if (d2 < d2minK) { #ifdef SPATSTAT_DEBUG Rprintf("\td2=%lf overwrites d2min[%d] = %lf\n", d2, nk1, d2min[nk1]); #endif /* overwrite last entry */ d2min[nk1] = d2; which[nk1] = left; /* bubble sort */ #ifdef SPATSTAT_DEBUG Rprintf("\td2min[] before bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%lf, ", d2min[k]); Rprintf("\n"); Rprintf("\twhich[] before bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%d, ", which[k]); Rprintf("\n"); #endif unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; } else { unsorted = NO; } } #ifdef SPATSTAT_DEBUG Rprintf("\td2min[] after bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%lf, ", d2min[k]); Rprintf("\n"); Rprintf("\twhich[] after bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%d, ", which[k]); Rprintf("\n"); #endif /* adjust maximum distance */ d2minK = d2min[nk1]; } } /* search forward */ for(right = i + 1; right < npoints; ++right) { #ifdef SPATSTAT_DEBUG Rprintf("R=%d, d2minK=%lf\n", right, d2minK); Rprintf("\t 0 "); #endif dx0 = x[right * mdimen] - xi0; d2 = dx0 * dx0; if(d2 > d2minK) break; for(j = 1; j < mdimen && d2 < d2minK; j++) { #ifdef SPATSTAT_DEBUG Rprintf("%d ", j); #endif dxj = xi[j] - x[right * mdimen + j]; d2 += dxj * dxj; } if (d2 < d2minK) { #ifdef SPATSTAT_DEBUG Rprintf("\td2=%lf overwrites d2min[%d] = %lf\n", d2, nk1, d2min[nk1]); #endif /* overwrite last entry */ d2min[nk1] = d2; which[nk1] = right; /* bubble sort */ #ifdef SPATSTAT_DEBUG Rprintf("\td2min[] before bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%lf, ", d2min[k]); Rprintf("\n"); Rprintf("\twhich[] before bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%d, ", which[k]); Rprintf("\n"); #endif unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; } else { unsorted = NO; } } #ifdef SPATSTAT_DEBUG Rprintf("\td2min[] after bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%lf, ", d2min[k]); Rprintf("\n"); Rprintf("\twhich[] after bubble sort:"); for(k = 0; k < nk; k++) Rprintf("%d, ", which[k]); Rprintf("\n"); #endif /* adjust maximum distance */ d2minK = d2min[nk1]; } } #ifdef SPATSTAT_DEBUG Rprintf("\n"); #endif /* copy nn distances for point i to output matrix in ROW MAJOR order */ for(k = 0; k < nk; k++) { nnd[nk * i + k] = sqrt(d2min[k]); /* convert index back to R convention */ nnwhich[nk * i + k] = which[k] + 1; } } } } spatstat/src/knn3Ddist.h0000644000176000001440000000730112333041761014747 0ustar ripleyusers/* knn3Ddist.h Code template for k-nearest-neighbour algorithms for 3D point patterns Input is a single point pattern - supports 'nndist' and 'nnwhich' This code is #included multiple times in nn3Ddist.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour Either or both DIST and WHICH may be defined. THE FOLLOWING CODE ASSUMES THAT THE POINT PATTERN IS SORTED IN ASCENDING ORDER OF THE z COORDINATE $Revision: 1.3 $ $Date: 2013/06/29 02:38:19 $ */ void FNAME(n, kmax, x, y, z, nnd, nnwhich, huge) /* inputs */ int *n, *kmax; double *x, *y, *z, *huge; /* output matrices (npoints * kmax) in ROW MAJOR order */ double *nnd; int *nnwhich; { int npoints, nk, nk1, i, j, k, k1, unsorted, maxchunk; double d2, d2minK, xi, yi, zi, dx, dy, dz, dz2, hu, hu2, tmp; double *d2min; #ifdef WHICH int *which; int itmp; #endif hu = *huge; hu2 = hu * hu; npoints = *n; nk = *kmax; nk1 = nk - 1; /* create space to store the nearest neighbour distances and indices for the current point */ d2min = (double *) R_alloc((size_t) nk, sizeof(double)); #ifdef WHICH which = (int *) R_alloc((size_t) nk, sizeof(int)); #endif /* loop over points */ OUTERCHUNKLOOP(i, npoints, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, npoints, maxchunk, 16384) { #ifdef SPATSTAT_DEBUG Rprintf("\ni=%d\n", i); #endif /* initialise nn distances and indices */ d2minK = hu2; for(k = 0; k < nk; k++) { d2min[k] = hu2; #ifdef WHICH which[k] = -1; #endif } xi = x[i]; yi = y[i]; zi = z[i]; /* search backward */ if(i > 0) { for(j = i - 1; j >= 0; --j) { #ifdef SPATSTAT_DEBUG Rprintf("L"); #endif dz = z[j] - zi; dz2 = dz * dz; if(dz2 > d2minK) break; dx = x[j] - xi; dy = y[j] - yi; d2 = dx * dx + dy * dy + dz2; if (d2 < d2minK) { /* overwrite last entry */ d2min[nk1] = d2; #ifdef WHICH which[nk1] = j; #endif /* bubble sort */ unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } /* adjust maximum distance */ d2minK = d2min[nk1]; } } } /* search forward */ if(i + 1 < npoints) { for(j = i + 1; j < npoints; ++j) { #ifdef SPATSTAT_DEBUG Rprintf("R"); #endif dz = z[j] - zi; dz2 = dz * dz; if(dz2 > d2minK) break; dx = x[j] - xi; dy = y[j] - yi; d2 = dx * dx + dy * dy + dz2; if (d2 < d2minK) { /* overwrite last entry */ d2min[nk1] = d2; #ifdef WHICH which[nk1] = j; #endif /* bubble sort */ unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } /* adjust maximum distance */ d2minK = d2min[nk1]; } } } #ifdef SPATSTAT_DEBUG Rprintf("\n"); #endif /* calculate nn distances for point i and copy to output matrix in ROW MAJOR order */ for(k = 0; k < nk; k++) { #ifdef DIST nnd[nk * i + k] = sqrt(d2min[k]); #endif #ifdef WHICH /* convert from C to R indexing */ nnwhich[nk * i + k] = which[k] + 1; #endif } } } } spatstat/src/fexitc.c0000755000176000001440000000045512333041761014371 0ustar ripleyusers# include # include # include void fexitc(const char *msg) { size_t nc = strlen(msg); char buf[256]; if(nc > 255) { warning("invalid character length in fexitc"); nc = 255; } strncpy(buf, msg, nc); buf[nc] = '\0'; error(buf); } spatstat/src/nngrid.h0000644000176000001440000000572612333041761014400 0ustar ripleyusers #if (1 == 0) /* nngrid.h Code template for C functions nearest neighbour of each grid point THE FOLLOWING CODE ASSUMES THAT POINT PATTERN (xp, yp) IS SORTED IN ASCENDING ORDER OF x COORDINATE This code is #included multiple times in nngrid.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour Either or both DIST and WHICH may be defined. Copyright (C) Adrian Baddeley, Jens Oehlschlagel and Rolf Turner 2000-2013 Licence: GPL >= 2 $Revision: 1.4 $ $Date: 2014/02/18 08:43:29 $ */ #endif void FNAME(nx, x0, xstep, ny, y0, ystep, /* pixel grid dimensions */ np, xp, yp, /* data points */ nnd, nnwhich, huge) /* inputs */ int *nx, *ny, *np; double *x0, *xstep, *y0, *ystep, *huge; double *xp, *yp; /* outputs */ double *nnd; int *nnwhich; /* some inputs + outputs are not used in all functions */ { int Nxcol, Nyrow, Npoints; int i, j, ijpos; int mleft, mright, mwhich, lastmwhich; double X0, Y0, Xstep, Ystep; double d2, d2min, xj, yi, dx, dy, dx2, hu, hu2; Nxcol = *nx; Nyrow = *ny; Npoints = *np; hu = *huge; X0 = *x0; Y0 = *y0; Xstep = *xstep; Ystep = *ystep; hu2 = hu * hu; if(Npoints == 0) return; lastmwhich = 0; /* loop over pixels */ for(j = 0, xj = X0; j < Nxcol; j++, xj += Xstep) { R_CheckUserInterrupt(); for(i = 0, yi = Y0; i < Nyrow; i++, yi += Ystep) { /* reset nn distance and index */ d2min = hu2; mwhich = -1; if(lastmwhich < Npoints) { /* search forward from previous nearest neighbour */ for(mright = lastmwhich; mright < Npoints; ++mright) { dx = xp[mright] - xj; dx2 = dx * dx; if(dx2 > d2min) /* note that dx2 >= d2min could break too early */ break; dy = yp[mright] - yi; d2 = dy * dy + dx2; if (d2 < d2min) { /* save as nearest neighbour */ d2min = d2; mwhich = mright; } } /* end forward search */ } if(lastmwhich > 0) { /* search backward from previous nearest neighbour */ for(mleft = lastmwhich - 1; mleft >= 0; --mleft) { dx = xj - xp[mleft]; dx2 = dx * dx; if(dx2 > d2min) /* note that dx2 >= d2min could break too early */ break; dy = yp[mleft] - yi; d2 = dy * dy + dx2; if (d2 < d2min) { /* save as nearest neighbour */ d2min = d2; mwhich = mleft; } } /* end backward search */ } /* remember index of most recently-encountered neighbour */ lastmwhich = mwhich; /* copy nn distance for grid point (i, j) to output array nnd[i, j] */ ijpos = i + j * Nyrow; #ifdef DIST nnd[ijpos] = sqrt(d2min); #endif #ifdef WHICH nnwhich[ijpos] = mwhich + 1; /* R indexing */ #endif /* end of loop over grid points (i, j) */ } } } spatstat/src/KrectV4.h0000644000176000001440000000027512333041761014373 0ustar ripleyusers/* KrectV5.h with or without uncorrected estimator */ if((*doUnco) == 1) { #define UNCORRECTED #include "KrectBody.h" } else { #undef UNCORRECTED #include "KrectBody.h" } spatstat/src/KrectV2.h0000644000176000001440000000027312333041761014367 0ustar ripleyusers/* KrectV3.h with or without translation correction */ if((*doTrans) == 1) { #define TRANSLATION #include "KrectV3.h" } else { #undef TRANSLATION #include "KrectV3.h" } spatstat/src/Efiksel.c0000755000176000001440000000305112333041761014464 0ustar ripleyusers#include #include #include "chunkloop.h" /* Efiksel.c $Revision: 1.3 $ $Date: 2012/03/28 05:55:29 $ C implementation of 'eval' for Fiksel interaction (non-hardcore part) Assumes point patterns are sorted in increasing order of x coordinate */ double sqrt(), exp(); void Efiksel(nnsource, xsource, ysource, nntarget, xtarget, ytarget, rrmax, kkappa, values) /* inputs */ int *nnsource, *nntarget; double *xsource, *ysource, *xtarget, *ytarget, *rrmax, *kkappa; /* output */ double *values; { int nsource, ntarget, maxchunk, j, i, ileft; double xsourcej, ysourcej, xleft, dx, dy, dx2, d2; double rmax, r2max, kappa, total; nsource = *nnsource; ntarget = *nntarget; rmax = *rrmax; kappa = *kkappa; r2max = rmax * rmax; if(nsource == 0 || ntarget == 0) return; ileft = 0; OUTERCHUNKLOOP(j, nsource, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nsource, maxchunk, 16384) { total = 0; xsourcej = xsource[j]; ysourcej = ysource[j]; /* adjust starting point */ xleft = xsourcej - rmax; while((xtarget[ileft] < xleft) && (ileft+1 < ntarget)) ++ileft; /* process from ileft until dx > rmax */ for(i=ileft; i < ntarget; i++) { /* squared interpoint distance */ dx = xtarget[i] - xsourcej; dx2 = dx * dx; if(dx2 > r2max) break; dy = ytarget[i] - ysourcej; d2 = dx2 + dy * dy; if(d2 <= r2max) total += exp(- kappa * sqrt(d2)); } values[j] = total; } } } spatstat/src/loccum.c0000644000176000001440000000252512333041761014366 0ustar ripleyusers#include #include #include #include "chunkloop.h" /* loccum.c $Revision: 1.1 $ $Date: 2013/05/27 02:09:10 $ Compute local cumulative sums or products of weights locsum: f_i(t) = \sum_{j: j \neq i, ||x_j - x_i|| \le t} v(x_j) for a data point pattern {x_i} locxsum: f_u(t) = \sum_{||x_i - u|| \le t} v(x_i) for a grid of points {u} and a data point pattern {x_i} locprod: f_i(t) = \prod_{j: j \neq i, ||x_j - x_i|| \le t} v(x_j) for a data point pattern {x_i} locxprod: f_u(t) = \prod_{||x_i - u|| \le t} v(x_i) for a grid of points {u} and a data point pattern {x_i} Assumes point patterns are sorted in increasing order of x coordinate Uses C code template files : loccums.h, loccumx.h */ /* data-to-data */ #undef FNAME #undef NULVAL #undef INC #define FNAME locsum #define NULVAL 0.0 #define INC(A,B) A += B #include "loccums.h" #undef FNAME #undef NULVAL #undef INC #define FNAME locprod #define NULVAL 1.0 #define INC(A,B) A *= B #include "loccums.h" /* test-grid-to-data */ #undef FNAME #undef NULVAL #undef INC #define FNAME locxsum #define NULVAL 0.0 #define INC(A,B) A += B #include "loccumx.h" #undef FNAME #undef NULVAL #undef INC #define FNAME locxprod #define NULVAL 1.0 #define INC(A,B) A *= B #include "loccumx.h" spatstat/src/k3.c0000755000176000001440000000716312333041761013427 0ustar ripleyusers#include #include #include "geom3.h" #include "functable.h" /* $Revision: 1.1 $ $Date: 2009/11/04 23:54:15 $ K function of 3D point pattern k3trans translation correction k3isot isotropic correction # ///////////////////////////////////////////// # AUTHOR: Adrian Baddeley, CWI, Amsterdam, 1991. # # MODIFIED BY: Adrian Baddeley, Perth 2009. # # This software is distributed free # under the conditions that # (1) it shall not be incorporated # in software that is subsequently sold # (2) the authorship of the software shall # be acknowledged in any publication that # uses results generated by the software # (3) this notice shall remain in place # in each file. # ////////////////////////////////////////////// */ void k3trans(p, n, b, k) Point *p; int n; Box *b; Ftable *k; { register int i, j, l, lmin; register double dx, dy, dz, dist; register double vx, vy, vz; Point *ip, *jp; double dt, vol, lambda, denom, term; double sphesfrac(), sphevol(); /* compute denominator & initialise numerator*/ vol = (b->x1 - b->x0) * (b->y1 - b->y0) * (b->z1 - b->z0); lambda = ((double) n )/ vol; denom = lambda * lambda; for(l = 0; l < k->n; l++) { (k->denom)[l] = denom; (k->num)[l] = 0.0; } /* spacing of argument in result vector k */ dt = (k->t1 - k->t0)/(k->n - 1); /* compute numerator */ for( i = 0; i < n; i++) { ip = p + i; for(j = i + 1; j < n; j++) { jp = p + j; dx = jp->x - ip->x; dy = jp->y - ip->y; dz = jp->z - ip->z; dist = sqrt(dx * dx + dy * dy + dz * dz); lmin = ceil( (dist - k->t0) / dt ); if(lmin < 0) lmin = 0; vx = b->x1 - b->x0 - (dx > 0 ? dx : -dx); vy = b->y1 - b->y0 - (dy > 0 ? dy : -dy); vz = b->z1 - b->z0 - (dz > 0 ? dz : -dz); if(vx >= 0.0 && vy >= 0.0 && vz >= 0.0) { term = 2.0 /(vx * vy * vz); /* 2 because they're ordered pairs */ for(l = lmin; l < k->n; l++) (k->num)[l] += term; } } } /* compute ratio */ for(l = 0; l < k->n; l++) (k->f)[l] = ((k->denom)[l] > 0.0)? (k->num)[l] / (k->denom)[l] : 0.0; } void k3isot(p, n, b, k) Point *p; int n; Box *b; Ftable *k; { register int i, j, l, lmin; register double dx, dy, dz, dist; Point *ip, *jp; double dt, vol, denom, term; double sphesfrac(), sphevol(); Point vertex; Box half; /* compute denominator & initialise numerator*/ vol = (b->x1 - b->x0) * (b->y1 - b->y0) * (b->z1 - b->z0); denom = ((double) (n * n))/vol; for(l = 0; l < k->n; l++) { (k->denom)[l] = denom; (k->num)[l] = 0.0; } /* spacing of argument in result vector k */ dt = (k->t1 - k->t0)/(k->n - 1); /* set up for volume correction */ vertex.x = b->x0; vertex.y = b->y0; vertex.z = b->z0; half.x1 = b->x1; half.y1 = b->y1; half.z1 = b->z1; half.x0 = (b->x0 + b->x1)/2.0; half.y0 = (b->y0 + b->y1)/2.0; half.z0 = (b->z0 + b->z1)/2.0; /* compute numerator */ for( i = 0; i < n; i++) { ip = p + i; for(j = i + 1; j < n; j++) { jp = p + j; dx = jp->x - ip->x; dy = jp->y - ip->y; dz = jp->z - ip->z; dist = sqrt(dx * dx + dy * dy + dz * dz); lmin = ceil( (dist - k->t0) / dt ); if(lmin < 0) lmin = 0; term = (1.0 / sphesfrac(ip, b, dist)) + (1.0 / sphesfrac(jp, b, dist)); term *= 1.0 - 8.0 * sphevol(&vertex, &half, dist) / vol; for(l = lmin; l < k->n; l++) (k->num)[l] += term; } } /* compute ratio */ for(l = 0; l < k->n; l++) (k->f)[l] = ((k->denom)[l] > 0.0)? (k->num)[l] / (k->denom)[l] : 0.0; } spatstat/src/g3.c0000755000176000001440000001266612333041761013427 0ustar ripleyusers#include #include #include "geom3.h" #include "functable.h" /* $Revision: 1.3 $ $Date: 2012/05/22 07:17:31 $ G function (nearest neighbour distribution) of 3D point pattern Let b = distance from point p[i] to boundary of box d = distance from p[i] to nearest p[j] method = 1 naive ratio estimator (Ripley 1981) numerator(r) = count(i: b >= r, d <= r) denominator(r) = count(i: b >= r) method = 2 minus sampling estimator numerator(r) = count(i: b >= r, d <= r) denominator(r) = lambda * volume(x: b >= r) where lambda = (no of points)/volume(box) method = 3 Hanisch's G3 numerator(r) = count(i: b >= d, d <= r) denominator(r) = count(i: b >= d) method = 4 Hanisch's G4 numerator(r) = count(i: b >= d, d <= r) denominator(r) = fudge * volume(x: b >= r) fudge = numerator(R)/denominator(R) R = sup{r : denominator(r) > 0 } # ///////////////////////////////////////////// # AUTHOR: Adrian Baddeley, CWI, Amsterdam, 1991. # # MODIFIED BY: Adrian Baddeley, Perth 2009, 2012. # # This software is distributed free # under the conditions that # (1) it shall not be incorporated # in software that is subsequently sold # (2) the authorship of the software shall # be acknowledged in any publication that # uses results generated by the software # (3) this notice shall remain in place # in each file. # ////////////////////////////////////////////// */ #define MIN(X,Y) (((X) > (Y)) ? (Y) : (X)) double * nndist3(p, n, b) /* compute nearest neighbour distance for each p[i] */ Point *p; int n; Box *b; { register int i, j; register double dx, dy, dz, dist2, nearest2, huge2; Point *ip, *jp; double *nnd; nnd = (double *) R_alloc(n, sizeof(double)); dx = b->x1 - b->x0; dy = b->y1 - b->y0; dz = b->z1 - b->z0; huge2 = 2.0 * (dx * dx + dy * dy + dz * dz); /* scan each point and find closest */ for( i = 0; i < n; i++) { ip = p + i; nearest2 = huge2; for(j = 0; j < n; j++) if(j != i) { jp = p + j; dx = jp->x - ip->x; dy = jp->y - ip->y; dz = jp->z - ip->z; dist2 = dx * dx + dy * dy + dz * dz; if(dist2 < nearest2) nearest2 = dist2; } nnd[i] = sqrt(nearest2); } return(nnd); } double * border3(p, n, b) /* compute distances to border */ Point *p; int n; Box *b; { register int i; register double bord; register Point *ip; double *bored; bored = (double *) R_alloc(n, sizeof(double)); for( i = 0; i < n; i++) { ip = p + i; bord = MIN(ip->x - b->x0, b->x1 - ip->x); bord = MIN(bord, ip->y - b->y0); bord = MIN(bord, b->y1 - ip->y); bord = MIN(bord, ip->z - b->z0); bord = MIN(bord, b->z1 - ip->z); bored[i] = bord; } return(bored); } void g3one(p, n, b, g) Point *p; int n; Box *b; Ftable *g; { register int i, l, lbord, lnnd; double dt; double *bord, *nnd; bord = border3(p, n, b); nnd = nndist3(p, n, b); /* initialise */ for(l = 0; l < g->n; l++) (g->num)[l] = (g->denom)[l] = 0.0; /* spacing of argument in result vector g */ dt = (g->t1 - g->t0)/(g->n - 1); for(i = 0; i < n; i++) { lbord = floor( (bord[i] - g->t0) / dt ); if(lbord >= g->n) lbord = g->n - 1; for(l = 0; l <= lbord; l++) (g->denom)[l] += 1.0; lnnd = ceil( (nnd[i] - g->t0) / dt ); if(lnnd < 0) lnnd = 0; for(l = lnnd; l <= lbord; l++) (g->num)[l] += 1.0; } /* compute ratio */ for(l = 0; l < g->n; l++) (g->f)[l] = ((g->denom)[l] > 0)? (g->num)[l] / (g->denom)[l] : 1.0; } void g3three(p, n, b, g) Point *p; int n; Box *b; Ftable *g; { register int i, l, lmin; double dt; int denom; double *bord, *nnd; bord = border3(p, n, b); nnd = nndist3(p, n, b); /* initialise */ denom = 0; for(l = 0; l < g->n; l++) (g->num)[l] = 0.0; /* spacing of argument in result vector g */ dt = (g->t1 - g->t0)/(g->n - 1); for(i = 0; i < n; i++) { if(nnd[i] <= bord[i]) { ++denom; lmin = ceil( (nnd[i] - g->t0) / dt ); if(lmin < 0) lmin = 0; for(l = lmin; l < g->n; l++) (g->num)[l] += 1.0; } } /* compute ratio */ for(l = 0; l < g->n; l++) { (g->denom)[l] = denom; (g->f)[l] = (denom > 0)? (g->num)[l] / (double) denom : 1.0; } } void g3cen(p, n, b, count) Point *p; int n; Box *b; H4table *count; { register int i, lcen, lobs; register double dt, cens, obsv; double *bord, *nnd; bord = border3(p, n, b); nnd = nndist3(p, n, b); /* spacing of histogram cells */ dt = (count->t1 - count->t0)/(count->n - 1); /* 'count' is assumed to have been initialised */ for(i = 0; i < n; i++) { obsv = nnd[i]; cens = bord[i]; lobs = ceil( (obsv - count->t0) / dt ); lcen = floor( (cens - count->t0) / dt ); if(obsv <= cens) { /* observation is uncensored; increment all four histograms */ if(lobs >= count->n) ++(count->upperobs); else if(lobs >= 0) { (count->obs)[lobs]++; (count->nco)[lobs]++; } if(lcen >= count->n) ++(count->uppercen); else if(lcen >= 0) { (count->cen)[lcen]++; (count->ncc)[lcen]++; } } else { /* observation is censored; increment only two histograms */ lobs = MIN(lobs, lcen); if(lobs >= count->n) ++(count->upperobs); else if(lobs >= 0) (count->obs)[lobs]++; if(lcen >= count->n) ++(count->uppercen); else if(lcen >= 0) (count->cen)[lcen]++; } } } spatstat/src/trigraf.c0000755000176000001440000005575612333041761014563 0ustar ripleyusers/* trigraf.c Form list of all triangles in a planar graph, given list of edges $Revision: 1.13 $ $Date: 2012/04/06 09:26:50 $ Form list of all triangles in a planar graph, given list of edges Note: vertex indices ie, je are indices in R. They are handled without converting to C convention, because we only need to test equality and ordering. (*except in 'trioxgraph'*) Called by .C: ------------- trigraf() Generic C implementation with fixed storage limit usable with Delaunay triangulation trigrafS() Faster version when input data are sorted (again with predetermined storage limit) suited for handling Delaunay triangulation Called by .Call: --------------- trigraph() Version with dynamic storage allocation triograph() Faster version assuming 'iedge' is sorted in increasing order trioxgraph() Even faster version for use with quadrature schemes Diameters: ----------- triDgraph() Also computes diameters of triangles */ #include #include #include #include "chunkloop.h" #undef DEBUGTRI void trigraf(nv, ne, ie, je, ntmax, nt, it, jt, kt, status) /* inputs */ int *nv; /* number of graph vertices */ int *ne; /* number of edges */ int *ie, *je; /* vectors of indices of ends of each edge */ int *ntmax; /* length of storage space for triangles */ /* output */ int *nt; /* number of triangles (<= *ntmax) */ int *it, *jt, *kt; /* vectors of indices of vertices of triangles */ int *status; /* 0 if OK, 1 if overflow */ { int Nv, Ne, Ntmax; int Nt, Nj, m, i, j, k, mj, mk, maxchunk; int *jj; Nv = *nv; Ne = *ne; Ntmax = *ntmax; /* initialise scratch storage */ jj = (int *) R_alloc(Ne, sizeof(int)); Nt = 0; /* vertex index i ranges from 1 to Nv */ XOUTERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { R_CheckUserInterrupt(); XINNERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { /* Find triangles involving vertex 'i' in which 'i' is the lowest-numbered vertex */ /* First, find vertices j > i connected to i */ Nj = 0; for(m = 0; m < Ne; m++) { if(ie[m] == i) { j = je[m]; if(j > i) { jj[Nj] = j; Nj++; } } else if(je[m] == i) { j = ie[m]; if(j > i) { jj[Nj] = j; Nj++; } } } /* Determine which pairs of vertices j, k are joined by an edge; save triangles (i,j,k) */ if(Nj > 1) { /* Sort jj in ascending order */ for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; if(k < j) { /* swap */ jj[mk] = j; jj[mj] = k; j = k; } } } for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; if(j != k) { /* Run through edges to determine whether j, k are neighbours */ for(m = 0; m < Ne; m++) { if((ie[m] == j && je[m] == k) || (ie[m] == k && je[m] == j)) { /* add (i, j, k) to list of triangles */ if(Nt >= Ntmax) { /* overflow - exit */ *status = 1; return; } it[Nt] = i; jt[Nt] = j; kt[Nt] = k; Nt++; } } } } } } } } *nt = Nt; *status = 0; } /* faster version of trigraf() assuming that ie[m] < je[m] ie[] is in ascending order je[] is in ascending order within ie[], that is, je[ie[]=i] is in ascending order for each fixed i */ void trigrafS(nv, ne, ie, je, ntmax, nt, it, jt, kt, status) /* inputs */ int *nv; /* number of graph vertices */ int *ne; /* number of edges */ int *ie, *je; /* vectors of indices of ends of each edge */ int *ntmax; /* length of storage space for triangles */ /* output */ int *nt; /* number of triangles */ int *it, *jt, *kt; /* vectors of indices of vertices of triangles */ int *status; /* 0 if OK, 1 if overflow */ { int Ne, Nt, Ntmax; int m, i, j, k, mj, mk; int firstedge, lastedge; Ne = *ne; Ntmax = *ntmax; /* nv is not used, but retained for harmony with trigraf */ /* Avoid compiler warnings */ Nt = *nv; /* initialise output */ Nt = 0; lastedge = -1; while(lastedge + 1 < Ne) { if(lastedge % 256 == 0) R_CheckUserInterrupt(); /* Consider next vertex i. The edges (i,j) with i < j appear contiguously in the edge list. */ firstedge = lastedge + 1; i = ie[firstedge]; for(m= firstedge+1; m < Ne && ie[m] == i; m++) ; lastedge = m-1; /* Consider each pair j, k of neighbours of i, where i < j < k. Scan entire edge list to determine whether j, k are joined by an edge. If so, save triangle (i,j,k) */ if(lastedge > firstedge) { for(mj = firstedge; mj < lastedge; mj++) { j = je[mj]; for(mk = firstedge+1; mk <= lastedge; mk++) { k = je[mk]; /* Run through edges to determine whether j, k are neighbours */ for(m = 0; m < Ne && ie[m] < j; m++) ; while(m < Ne && ie[m] == j) { if(je[m] == k) { /* add (i, j, k) to list of triangles */ if(Nt >= Ntmax) { /* overflow - exit */ *status = 1; return; } it[Nt] = i; jt[Nt] = j; kt[Nt] = k; Nt++; } m++; } } } } } *nt = Nt; *status = 0; } /* ------------------- callable by .Call ------------------------- */ SEXP trigraph(SEXP nv, /* number of vertices */ SEXP iedge, /* vectors of indices of ends of each edge */ SEXP jedge) /* all arguments are integer */ { int Nv, Ne; int *ie, *je; /* edges */ int *it, *jt, *kt; /* vectors of indices of vertices of triangles */ int Nt, Ntmax; /* number of triangles */ int Nj; int *jj; /* scratch storage */ int i, j, k, m, mj, mk, Nmore, maxchunk; /* output */ SEXP iTout, jTout, kTout, out; int *ito, *jto, *kto; /* =================== Protect R objects from garbage collector ======= */ PROTECT(nv = AS_INTEGER(nv)); PROTECT(iedge = AS_INTEGER(iedge)); PROTECT(jedge = AS_INTEGER(jedge)); /* That's 3 protected objects */ /* numbers of vertices and edges */ Nv = *(INTEGER_POINTER(nv)); Ne = LENGTH(iedge); /* input arrays */ ie = INTEGER_POINTER(iedge); je = INTEGER_POINTER(jedge); /* initialise storage (with a guess at max size) */ Ntmax = 3 * Ne; it = (int *) R_alloc(Ntmax, sizeof(int)); jt = (int *) R_alloc(Ntmax, sizeof(int)); kt = (int *) R_alloc(Ntmax, sizeof(int)); Nt = 0; /* initialise scratch storage */ jj = (int *) R_alloc(Ne, sizeof(int)); XOUTERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { R_CheckUserInterrupt(); XINNERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { #ifdef DEBUGTRI Rprintf("i=%d ---------- \n", i); #endif /* Find triangles involving vertex 'i' in which 'i' is the lowest-numbered vertex */ /* First, find vertices j > i connected to i */ Nj = 0; for(m = 0; m < Ne; m++) { if(ie[m] == i) { j = je[m]; if(j > i) { jj[Nj] = j; Nj++; } } else if(je[m] == i) { j = ie[m]; if(j > i) { jj[Nj] = j; Nj++; } } } /* Determine which pairs of vertices j, k are joined by an edge; save triangles (i,j,k) */ #ifdef DEBUGTRI Rprintf("Nj = %d\n", Nj); #endif if(Nj > 1) { #ifdef DEBUGTRI Rprintf("i=%d\njj=\n", i); for(mj = 0; mj < Nj; mj++) Rprintf("%d ", jj[mj]); Rprintf("\n\n"); #endif /* Sort jj in ascending order */ for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; if(k < j) { /* swap */ jj[mk] = j; jj[mj] = k; j = k; } } } #ifdef DEBUGTRI Rprintf("sorted=\n", i); for(mj = 0; mj < Nj; mj++) Rprintf("%d ", jj[mj]); Rprintf("\n\n"); #endif for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; if(j != k) { /* Run through edges to determine whether j, k are neighbours */ for(m = 0; m < Ne; m++) { if((ie[m] == j && je[m] == k) || (ie[m] == k && je[m] == j)) { /* add (i, j, k) to list of triangles */ if(Nt >= Ntmax) { /* overflow - allocate more space */ Nmore = 2 * Ntmax; #ifdef DEBUGTRI Rprintf("Doubling space from %d to %d\n", Ntmax, Nmore); #endif it = (int *) S_realloc((char *) it, Nmore, Ntmax, sizeof(int)); jt = (int *) S_realloc((char *) jt, Nmore, Ntmax, sizeof(int)); kt = (int *) S_realloc((char *) kt, Nmore, Ntmax, sizeof(int)); Ntmax = Nmore; } /* output indices in R convention */ it[Nt] = i; jt[Nt] = j; kt[Nt] = k; Nt++; } } } } } } } } /* allocate space for output */ PROTECT(iTout = NEW_INTEGER(Nt)); PROTECT(jTout = NEW_INTEGER(Nt)); PROTECT(kTout = NEW_INTEGER(Nt)); PROTECT(out = NEW_LIST(3)); /* that's 3+4=7 protected objects */ ito = INTEGER_POINTER(iTout); jto = INTEGER_POINTER(jTout); kto = INTEGER_POINTER(kTout); /* copy triangle indices to output vectors */ for(m = 0; m < Nt; m++) { ito[m] = it[m]; jto[m] = jt[m]; kto[m] = kt[m]; } /* insert output vectors in output list */ SET_VECTOR_ELT(out, 0, iTout); SET_VECTOR_ELT(out, 1, jTout); SET_VECTOR_ELT(out, 2, kTout); UNPROTECT(7); return(out); } /* faster version assuming iedge is in increasing order */ SEXP triograph(SEXP nv, /* number of vertices */ SEXP iedge, /* vectors of indices of ends of each edge */ SEXP jedge) /* all arguments are integer */ { int Nv, Ne; int *ie, *je; /* edges */ int *it, *jt, *kt; /* vectors of indices of vertices of triangles */ int Nt, Ntmax; /* number of triangles */ int Nj; int *jj; /* scratch storage */ int i, j, k, m, mj, mk, maxjk, Nmore, maxchunk; /* output */ SEXP iTout, jTout, kTout, out; int *ito, *jto, *kto; /* =================== Protect R objects from garbage collector ======= */ PROTECT(nv = AS_INTEGER(nv)); PROTECT(iedge = AS_INTEGER(iedge)); PROTECT(jedge = AS_INTEGER(jedge)); /* That's 3 protected objects */ /* numbers of vertices and edges */ Nv = *(INTEGER_POINTER(nv)); Ne = LENGTH(iedge); /* input arrays */ ie = INTEGER_POINTER(iedge); je = INTEGER_POINTER(jedge); /* initialise storage (with a guess at max size) */ Ntmax = 3 * Ne; it = (int *) R_alloc(Ntmax, sizeof(int)); jt = (int *) R_alloc(Ntmax, sizeof(int)); kt = (int *) R_alloc(Ntmax, sizeof(int)); Nt = 0; /* initialise scratch storage */ jj = (int *) R_alloc(Ne, sizeof(int)); XOUTERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { R_CheckUserInterrupt(); XINNERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { #ifdef DEBUGTRI Rprintf("i=%d ---------- \n", i); #endif /* Find triangles involving vertex 'i' in which 'i' is the lowest-numbered vertex */ /* First, find vertices j > i connected to i */ Nj = 0; for(m = 0; m < Ne; m++) { if(ie[m] == i) { j = je[m]; if(j > i) { jj[Nj] = j; Nj++; } } else if(je[m] == i) { j = ie[m]; if(j > i) { jj[Nj] = j; Nj++; } } } /* Determine which pairs of vertices j, k are joined by an edge; save triangles (i,j,k) */ #ifdef DEBUGTRI Rprintf("Nj = %d\n", Nj); #endif if(Nj > 1) { #ifdef DEBUGTRI Rprintf("i=%d\njj=\n", i); for(mj = 0; mj < Nj; mj++) Rprintf("%d ", jj[mj]); Rprintf("\n\n"); #endif /* Sort jj in ascending order */ for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; if(k < j) { /* swap */ jj[mk] = j; jj[mj] = k; j = k; } } } #ifdef DEBUGTRI Rprintf("sorted=\n", i); for(mj = 0; mj < Nj; mj++) Rprintf("%d ", jj[mj]); Rprintf("\n\n"); #endif for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; if(j != k) { /* Run through edges to determine whether j, k are neighbours */ maxjk = (j > k) ? j : k; for(m = 0; m < Ne; m++) { if(ie[m] > maxjk) break; /* since iedge is in increasing order, the test below will always be FALSE when ie[m] > max(j,k) */ if((ie[m] == j && je[m] == k) || (ie[m] == k && je[m] == j)) { /* add (i, j, k) to list of triangles */ if(Nt >= Ntmax) { /* overflow - allocate more space */ Nmore = 2 * Ntmax; #ifdef DEBUGTRI Rprintf("Doubling space from %d to %d\n", Ntmax, Nmore); #endif it = (int *) S_realloc((char *) it, Nmore, Ntmax, sizeof(int)); jt = (int *) S_realloc((char *) jt, Nmore, Ntmax, sizeof(int)); kt = (int *) S_realloc((char *) kt, Nmore, Ntmax, sizeof(int)); Ntmax = Nmore; } it[Nt] = i; jt[Nt] = j; kt[Nt] = k; Nt++; } } } } } } } } /* allocate space for output */ PROTECT(iTout = NEW_INTEGER(Nt)); PROTECT(jTout = NEW_INTEGER(Nt)); PROTECT(kTout = NEW_INTEGER(Nt)); PROTECT(out = NEW_LIST(3)); /* that's 3+4=7 protected objects */ ito = INTEGER_POINTER(iTout); jto = INTEGER_POINTER(jTout); kto = INTEGER_POINTER(kTout); /* copy triangle indices to output vectors */ for(m = 0; m < Nt; m++) { ito[m] = it[m]; jto[m] = jt[m]; kto[m] = kt[m]; } /* insert output vectors in output list */ SET_VECTOR_ELT(out, 0, iTout); SET_VECTOR_ELT(out, 1, jTout); SET_VECTOR_ELT(out, 2, kTout); UNPROTECT(7); return(out); } /* Even faster version using information about dummy vertices. Dummy-to-dummy edges are forbidden. For generic purposes use 'friendly' for 'isdata' Edge between j and k is possible iff friendly[j] || friendly[k]. Edges with friendly = FALSE cannot be connected to one another. */ SEXP trioxgraph(SEXP nv, /* number of vertices */ SEXP iedge, /* vectors of indices of ends of each edge */ SEXP jedge, SEXP friendly) /* indicator vector, length nv */ { /* input */ int Nv, Ne; int *ie, *je; /* edges */ int *friend; /* indicator */ /* output */ int *it, *jt, *kt; /* vectors of indices of vertices of triangles */ int Nt, Ntmax; /* number of triangles */ /* scratch storage */ int Nj; int *jj; int i, j, k, m, mj, mk, maxjk, Nmore, maxchunk; /* output to R */ SEXP iTout, jTout, kTout, out; int *ito, *jto, *kto; /* =================== Protect R objects from garbage collector ======= */ PROTECT(nv = AS_INTEGER(nv)); PROTECT(iedge = AS_INTEGER(iedge)); PROTECT(jedge = AS_INTEGER(jedge)); PROTECT(friendly = AS_INTEGER(friendly)); /* That's 4 protected objects */ /* numbers of vertices and edges */ Nv = *(INTEGER_POINTER(nv)); Ne = LENGTH(iedge); /* input arrays */ ie = INTEGER_POINTER(iedge); je = INTEGER_POINTER(jedge); friend = INTEGER_POINTER(friendly); /* initialise storage (with a guess at max size) */ Ntmax = 3 * Ne; it = (int *) R_alloc(Ntmax, sizeof(int)); jt = (int *) R_alloc(Ntmax, sizeof(int)); kt = (int *) R_alloc(Ntmax, sizeof(int)); Nt = 0; /* initialise scratch storage */ jj = (int *) R_alloc(Ne, sizeof(int)); /* convert to C indexing convention */ for(m = 0; m < Ne; m++) { ie[m] -= 1; je[m] -= 1; } OUTERCHUNKLOOP(i, Nv, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(i, Nv, maxchunk, 8196) { #ifdef DEBUGTRI Rprintf("i=%d ---------- \n", i); #endif /* Find triangles involving vertex 'i' in which 'i' is the lowest-numbered vertex */ /* First, find vertices j > i connected to i */ Nj = 0; for(m = 0; m < Ne; m++) { if(ie[m] == i) { j = je[m]; if(j > i) { jj[Nj] = j; Nj++; } } else if(je[m] == i) { j = ie[m]; if(j > i) { jj[Nj] = j; Nj++; } } } /* Determine which pairs of vertices j, k are joined by an edge; save triangles (i,j,k) */ #ifdef DEBUGTRI Rprintf("Nj = %d\n", Nj); #endif if(Nj > 1) { #ifdef DEBUGTRI Rprintf("i=%d\njj=\n", i); for(mj = 0; mj < Nj; mj++) Rprintf("%d ", jj[mj]); Rprintf("\n\n"); #endif /* Sort jj in ascending order */ for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; if(k < j) { /* swap */ jj[mk] = j; jj[mj] = k; j = k; } } } #ifdef DEBUGTRI Rprintf("sorted=\n", i); for(mj = 0; mj < Nj; mj++) Rprintf("%d ", jj[mj]); Rprintf("\n\n"); #endif for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; if(j != k && (friend[j] || friend[k])) { /* Run through edges to determine whether j, k are neighbours */ maxjk = (j > k) ? j : k; for(m = 0; m < Ne; m++) { if(ie[m] > maxjk) break; /* since iedge is in increasing order, the test below will always be FALSE when ie[m] > max(j,k) */ if((ie[m] == j && je[m] == k) || (ie[m] == k && je[m] == j)) { /* add (i, j, k) to list of triangles */ if(Nt >= Ntmax) { /* overflow - allocate more space */ Nmore = 2 * Ntmax; #ifdef DEBUGTRI Rprintf("Doubling space from %d to %d\n", Ntmax, Nmore); #endif it = (int *) S_realloc((char *) it, Nmore, Ntmax, sizeof(int)); jt = (int *) S_realloc((char *) jt, Nmore, Ntmax, sizeof(int)); kt = (int *) S_realloc((char *) kt, Nmore, Ntmax, sizeof(int)); Ntmax = Nmore; } /* convert back to R indexing */ it[Nt] = i + 1; jt[Nt] = j + 1; kt[Nt] = k + 1; Nt++; } } } } } } } } /* allocate space for output */ PROTECT(iTout = NEW_INTEGER(Nt)); PROTECT(jTout = NEW_INTEGER(Nt)); PROTECT(kTout = NEW_INTEGER(Nt)); PROTECT(out = NEW_LIST(3)); /* that's 4+4=8 protected objects */ ito = INTEGER_POINTER(iTout); jto = INTEGER_POINTER(jTout); kto = INTEGER_POINTER(kTout); /* copy triangle indices to output vectors */ for(m = 0; m < Nt; m++) { ito[m] = it[m]; jto[m] = jt[m]; kto[m] = kt[m]; } /* insert output vectors in output list */ SET_VECTOR_ELT(out, 0, iTout); SET_VECTOR_ELT(out, 1, jTout); SET_VECTOR_ELT(out, 2, kTout); UNPROTECT(8); return(out); } /* also calculates diameter (max edge length) of triangle */ SEXP triDgraph(SEXP nv, /* number of vertices */ SEXP iedge, /* vectors of indices of ends of each edge */ SEXP jedge, SEXP edgelength) /* edge lengths */ { int Nv, Ne; int *ie, *je; /* edges */ double *edgelen; int *it, *jt, *kt; /* vectors of indices of vertices of triangles */ double *dt; /* diameters (max edge lengths) of triangles */ int Nt, Ntmax; /* number of triangles */ /* scratch storage */ int Nj; int *jj; double *dd; int i, j, k, m, mj, mk, Nmore, maxchunk; double dij, dik, djk, diam; /* output */ SEXP iTout, jTout, kTout, dTout, out; int *ito, *jto, *kto; double *dto; /* =================== Protect R objects from garbage collector ======= */ PROTECT(nv = AS_INTEGER(nv)); PROTECT(iedge = AS_INTEGER(iedge)); PROTECT(jedge = AS_INTEGER(jedge)); PROTECT(edgelength = AS_NUMERIC(edgelength)); /* That's 4 protected objects */ /* numbers of vertices and edges */ Nv = *(INTEGER_POINTER(nv)); Ne = LENGTH(iedge); /* input arrays */ ie = INTEGER_POINTER(iedge); je = INTEGER_POINTER(jedge); edgelen = NUMERIC_POINTER(edgelength); /* initialise storage (with a guess at max size) */ Ntmax = 3 * Ne; it = (int *) R_alloc(Ntmax, sizeof(int)); jt = (int *) R_alloc(Ntmax, sizeof(int)); kt = (int *) R_alloc(Ntmax, sizeof(int)); dt = (double *) R_alloc(Ntmax, sizeof(double)); Nt = 0; /* initialise scratch storage */ jj = (int *) R_alloc(Ne, sizeof(int)); dd = (double *) R_alloc(Ne, sizeof(double)); XOUTERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { R_CheckUserInterrupt(); XINNERCHUNKLOOP(i, 1, Nv, maxchunk, 8196) { #ifdef DEBUGTRI Rprintf("i=%d ---------- \n", i); #endif /* Find triangles involving vertex 'i' in which 'i' is the lowest-numbered vertex */ /* First, find vertices j > i connected to i */ Nj = 0; for(m = 0; m < Ne; m++) { if(ie[m] == i) { j = je[m]; if(j > i) { jj[Nj] = j; dd[Nj] = edgelen[m]; Nj++; } } else if(je[m] == i) { j = ie[m]; if(j > i) { jj[Nj] = j; dd[Nj] = edgelen[m]; Nj++; } } } /* Determine which pairs of vertices j, k are joined by an edge; save triangles (i,j,k) */ #ifdef DEBUGTRI Rprintf("Nj = %d\n", Nj); #endif if(Nj > 1) { #ifdef DEBUGTRI Rprintf("i=%d\njj=\n", i); for(mj = 0; mj < Nj; mj++) Rprintf("%d ", jj[mj]); Rprintf("\n\n"); #endif /* Sort jj in ascending order */ for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; if(k < j) { /* swap */ jj[mk] = j; jj[mj] = k; dik = dd[mj]; dd[mj] = dd[mk]; dd[mk] = dik; j = k; } } } #ifdef DEBUGTRI Rprintf("sorted=\n", i); for(mj = 0; mj < Nj; mj++) Rprintf("%d ", jj[mj]); Rprintf("\n\n"); #endif for(mj = 0; mj < Nj-1; mj++) { j = jj[mj]; dij = dd[mj]; for(mk = mj+1; mk < Nj; mk++) { k = jj[mk]; dik = dd[mk]; if(j != k) { /* Run through edges to determine whether j, k are neighbours */ for(m = 0; m < Ne; m++) { if((ie[m] == j && je[m] == k) || (ie[m] == k && je[m] == j)) { /* triangle (i, j, k) */ /* determine triangle diameter */ diam = (dij > dik) ? dij : dik; djk = edgelen[m]; if(djk > diam) diam = djk; /* add (i, j, k) to list of triangles */ if(Nt >= Ntmax) { /* overflow - allocate more space */ Nmore = 2 * Ntmax; #ifdef DEBUGTRI Rprintf("Doubling space from %d to %d\n", Ntmax, Nmore); #endif it = (int *) S_realloc((char *) it, Nmore, Ntmax, sizeof(int)); jt = (int *) S_realloc((char *) jt, Nmore, Ntmax, sizeof(int)); kt = (int *) S_realloc((char *) kt, Nmore, Ntmax, sizeof(int)); dt = (double *) S_realloc((char *) dt, Nmore, Ntmax, sizeof(double)); Ntmax = Nmore; } it[Nt] = i; jt[Nt] = j; kt[Nt] = k; dt[Nt] = diam; Nt++; } } } } } } } } /* allocate space for output */ PROTECT(iTout = NEW_INTEGER(Nt)); PROTECT(jTout = NEW_INTEGER(Nt)); PROTECT(kTout = NEW_INTEGER(Nt)); PROTECT(dTout = NEW_NUMERIC(Nt)); PROTECT(out = NEW_LIST(4)); /* that's 4+5=9 protected objects */ ito = INTEGER_POINTER(iTout); jto = INTEGER_POINTER(jTout); kto = INTEGER_POINTER(kTout); dto = NUMERIC_POINTER(dTout); /* copy triangle indices to output vectors */ for(m = 0; m < Nt; m++) { ito[m] = it[m]; jto[m] = jt[m]; kto[m] = kt[m]; dto[m] = dt[m]; } /* insert output vectors in output list */ SET_VECTOR_ELT(out, 0, iTout); SET_VECTOR_ELT(out, 1, jTout); SET_VECTOR_ELT(out, 2, kTout); SET_VECTOR_ELT(out, 3, dTout); UNPROTECT(9); return(out); } spatstat/src/poly2im.c0000755000176000001440000002025312333041761014500 0ustar ripleyusers/* poly2im.c Conversion from (x,y) polygon to pixel image poly2imI pixel value = 1{pixel centre is inside polygon} poly2imA pixel value = area of intersection between pixel and polygon $Revision: 1.8 $ $Date: 2013/09/18 04:50:36 $ */ #undef DEBUG #include #include #include #include "chunkloop.h" #define OUT(I,J) out[I + (J) * Ny] void poly2imI(xp, yp, np, nx, ny, out) double *xp, *yp; /* polygon vertices, anticlockwise, CLOSED */ int *np; int *nx, *ny; /* INTEGER raster points from (0,0) to (nx-1, ny-1) */ int *out; /* output matrix [ny, nx], byrow=FALSE, initialised to 0 */ { int Np, Nx, Ny, Np1, maxchunk, mstart, mend; int j, k, m; double x0, y0, x1, y1, xleft, xright, yleft, yright; double dx, dy, y, slope, intercept; int jleft, jright, imax; int sign; Np = *np; Nx = *nx; Ny = *ny; /* Nxy = Nx * Ny; */ Np1 = Np - 1; /* run through polygon edges */ OUTERCHUNKLOOP(k, Np1, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(k, Np1, maxchunk, 8196) { x0 = xp[k]; y0 = yp[k]; x1 = xp[k+1]; y1 = yp[k+1]; if(x0 < x1) { xleft = x0; xright = x1; yleft = y0; yright = y1; sign = -1; } else { xleft = x1; xright = x0; yleft = y1; yright = y0; sign = +1; } /* determine relevant columns of pixels */ jleft = (int) ceil(xleft); jright = (int) floor(xright); if(jleft < Nx && jright >= 0 && jleft <= jright) { if(jleft < 0) { jleft = 0; } if(jright >= Nx) {jright = Nx - 1; } /* equation of edge */ dx = xright - xleft; dy = yright - yleft; slope = dy/dx; intercept = yleft - slope * xleft; /* visit relevant columns */ for(j = jleft; j <= jright; j++) { y = slope * ((double) j) + intercept; imax = (int) floor(y); if(imax >= Ny) imax = Ny-1; if(imax >= 0) { /* increment entries below edge in this column: out[i + j * Ny] += sign for 0 <= i <= imax */ mstart = j * Ny; mend = mstart + imax; for(m = mstart; m <= mend; m++) { out[m] += sign; } } } } } } } #define BELOW -1 #define INSIDE 0 #define ABOVE 1 void poly2imA(ncol, nrow, xpoly, ypoly, npoly, out, status) int *ncol, *nrow; /* pixels are unit squares from (0,0) to (ncol,nrow) */ double *xpoly, *ypoly; /* vectors of coordinates of polygon vertices */ int *npoly; double *out; /* double array [nrow, ncol] of pixel areas, byrow=TRUE, initialised to 0 */ int *status; { double *xp, *yp; int nx, ny, np, np1, maxchunk; int i, j, k; double xcur, ycur, xnext, ynext, xleft, yleft, xright, yright; int sgn, jmin, jmax, imin, imax; double x0, y0, x1, y1, slope, yhi, ylo, area, xcut, xcutA, xcutB; int klo, khi; nx = *ncol; ny = *nrow; xp = xpoly; yp = ypoly; np = *npoly; *status = 0; /* initialise output array */ for(i = 0; i < ny; i++) for(j = 0; j < nx; j++) out[j + ny * i] = 0; /* ............ loop over polygon edges ...................*/ np1 = np - 1; OUTERCHUNKLOOP(k, np1, maxchunk, 8196) { R_CheckUserInterrupt(); INNERCHUNKLOOP(k, np1, maxchunk, 8196) { xcur = xp[k]; ycur = yp[k]; xnext = xp[k+1]; ynext = yp[k+1]; #ifdef DEBUG Rprintf("\nEdge %d from (%lf, %lf) to (%lf, %lf) .........\n", k, xcur, ycur, xnext, ynext); #endif if(xcur != xnext) { /* vertical edges are ignored */ if(xcur < xnext) { #ifdef DEBUG Rprintf("negative sign\n"); #endif sgn = -1; xleft = xcur; yleft = ycur; xright = xnext; yright = ynext; } else { #ifdef DEBUG Rprintf("positive sign\n"); #endif sgn = 1; xleft = xnext; yleft = ynext; xright = xcur; yright = ycur; } /* we have now ensured xleft < xright */ slope = (yright - yleft)/(xright - xleft); /* Find relevant columns of pixels */ jmin = floor(xleft); jmin = (jmin < 0) ? 0 : jmin; jmax = ceil(xright); jmax = (jmax > nx - 1) ? nx - 1 : jmax; /* Find relevant rows of pixels */ imin = floor((yleft < yright) ? yleft : yright); imin = (imin < 0) ? 0 : imin; imax = ceil((yleft < yright) ? yright : yleft); imax = (imax > ny - 1) ? ny - 1 : imax; #ifdef DEBUG Rprintf( "imin=%d, imax=%d, jmin=%d, jmax=%d\n", imin, imax, jmin, jmax); #endif /* ........... loop over columns of pixels ..............*/ for(j = jmin; j <= jmax; j++) { #ifdef DEBUG Rprintf( "\t j=%d:\n", j); #endif /* Intersect trapezium with column of pixels */ if(xleft <= j+1 && xright >= j) { if(xleft >= j) { /* retain left corner */ #ifdef DEBUG Rprintf( "\tretain left corner\n"); #endif x0 = xleft; y0 = yleft; } else { /* trim left corner */ #ifdef DEBUG Rprintf( "\ttrim left corner\n"); #endif x0 = (double) j; y0 = yleft + slope * (x0 - xleft); } if(xright <= j+1) { /* retain right corner */ #ifdef DEBUG Rprintf( "\tretain right corner\n"); #endif x1 = xright; y1 = yright; } else { /* trim right corner */ #ifdef DEBUG Rprintf( "\ttrim right corner\n"); #endif x1 = (double) (j+1); y1 = yright + slope * (x1 - xright); } /* save min and max y */ if(y0 < y1) { #ifdef DEBUG Rprintf( "slope %lf > 0\n", slope); #endif ylo = y0; yhi = y1; } else { #ifdef DEBUG Rprintf( "slope %lf <= 0\n", slope); #endif ylo = y1; yhi = y0; } /* ............ loop over pixels within column ......... */ /* first part */ if(imin > 0) { for(i = 0; i < imin; i++) { #ifdef DEBUG Rprintf( "\ti=%d:\n", i); #endif /* The trimmed pixel [x0, x1] * [i, i+1] lies below the polygon edge. */ area = (x1 - x0); #ifdef DEBUG Rprintf( "\tIncrementing area by %lf\n", sgn * area); #endif out[j + ny * i] += sgn * area; } } /* second part */ for(i = imin; i <= imax; i++) { #ifdef DEBUG Rprintf( "\ti=%d:\n", i); #endif /* Compute area of intersection between trapezium and trimmed pixel [x0, x1] x [i, i+1] */ klo = (ylo <= i) ? BELOW : (ylo >= (i+1))? ABOVE: INSIDE; khi = (yhi <= i) ? BELOW : (yhi >= (i+1))? ABOVE: INSIDE; if(klo == ABOVE) { /* trapezium covers pixel */ #ifdef DEBUG Rprintf( "\t\ttrapezium covers pixel\n"); #endif area = (x1-x0); } else if(khi == BELOW) { #ifdef DEBUG Rprintf( "\t\tpixel avoids trapezium\n"); #endif /* pixel avoids trapezium */ area = 0.0; } else if(klo == INSIDE && khi == INSIDE) { /* polygon edge is inside pixel */ #ifdef DEBUG Rprintf( "\t\t polygon edge is inside pixel\n"); #endif area = (x1-x0) * ((ylo + yhi)/2.0 - i); } else if(klo == INSIDE && khi == ABOVE) { /* polygon edge crosses upper edge of pixel */ #ifdef DEBUG Rprintf( "\t\t polygon edge crosses upper edge of pixel\n"); #endif xcut = x0 + ((i+1) - y0)/slope; if(slope > 0) area = (xcut - x0) * ((y0 + (i+1))/2 - i) + (x1 - xcut); else area = (x1 - xcut) * ((y1 + (i+1))/2 - i) + (xcut - x0); } else if(klo == BELOW && khi == INSIDE) { /* polygon edge crosses lower edge of pixel */ #ifdef DEBUG Rprintf( "\t\t polygon edge crosses lower edge of pixel\n"); #endif xcut = x0 + (i - y0)/slope; if(slope > 0) area = (x1 - xcut) * ((y1 + i)/2 - i); else area = (xcut - x0) * ((y0 + i)/2 - i); } else if(klo == BELOW && khi == ABOVE) { /* polygon edge crosses upper and lower edges of pixel */ #ifdef DEBUG Rprintf( "\t\t polygon edge crosses upper and lower edges of pixel\n"); #endif xcutA = x0 + (i - y0)/slope; xcutB = x0 + ((i+1) - y0)/slope; if(slope > 0) area = (xcutB - xcutA)/2 + (x1 - xcutB); else area = (xcutB - x0) + (xcutA - xcutB)/2; } else { /* control should not pass to here */ *status = 1; return; } /* add contribution to area of pixel */ #ifdef DEBUG Rprintf( "\tIncrementing area by %lf\n", sgn * area); #endif out[j + ny * i] += sgn * area; } /* ............ end of loop over pixels within column ......... */ } } /* ........ end of loop over columns of pixels ...............*/ } } } /* ......... end of loop over polygon edges ...................*/ } spatstat/src/fiksel.c0000755000176000001440000000574412333041761014372 0ustar ripleyusers#include #include #include #include "methas.h" #include "dist2.h" /* Conditional intensity computation for Fiksel process */ /* Conditional intensity function for a pairwise interaction point process with interaction function e(t) = 0 for t < h = exp(a * exp(- kappa * t)) for h <= t < r = 1 for t >= r */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct Fiksel { double r; double h; double kappa; double a; double h2; /* h^2 */ double r2; /* r^2 */ double *period; int per; } Fiksel; /* initialiser function */ Cdata *fikselinit(state, model, algo) State state; Model model; Algor algo; { Fiksel *fiksel; fiksel = (Fiksel *) R_alloc(1, sizeof(Fiksel)); /* Interpret model parameters*/ fiksel->r = model.ipar[0]; fiksel->h = model.ipar[1]; fiksel->kappa = model.ipar[2]; fiksel->a = model.ipar[3]; fiksel->period = model.period; /* constants */ fiksel->h2 = pow(fiksel->h, 2); fiksel->r2 = pow(fiksel->r, 2); /* periodic boundary conditions? */ fiksel->per = (model.period[0] > 0.0); return((Cdata *) fiksel); } /* conditional intensity evaluator */ double fikselcif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ix, ixp1, j; double *x, *y; double u, v; double d2, pairpotsum, cifval; double kappa, r2, h2; double *period; Fiksel *fiksel; DECLARE_CLOSE_D2_VARS; fiksel = (Fiksel *) cdata; period = fiksel->period; kappa = fiksel->kappa; r2 = fiksel->r2; h2 = fiksel->h2; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; cifval = 1.0; if(npts == 0) return(cifval); pairpotsum = 0; ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(fiksel->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_PERIODIC_D2(u,v,x[j],y[j],period,r2,d2)) { if(d2 < h2) { cifval = 0.0; return(cifval); } else { pairpotsum += exp(-kappa * sqrt(d2)); } } } } if(ixp1 < npts) { for(j=ixp1; j 0) { for(j=0; j < ix; j++) { if(CLOSE_D2(u,v,x[j],y[j],r2,d2)) { if(d2 < h2) { cifval = 0.0; return(cifval); } else { pairpotsum += exp(-kappa * sqrt(d2)); } } } } if(ixp1 < npts) { for(j=ixp1; ja * pairpotsum); return cifval; } Cifns FikselCifns = { &fikselinit, &fikselcif, (updafunptr) NULL, NO}; spatstat/src/mhv4.h0000644000176000001440000000040512333041761013762 0ustar ripleyusers/* mhv4.h visual debugger or not */ #undef MH_SNOOP if(snooper.active) { /* visual debugger */ #define MH_SNOOP YES #include "mhloop.h" #undef MH_SNOOP } else { /* no visual debugger */ #define MH_SNOOP NO #include "mhloop.h" #undef MH_SNOOP } spatstat/src/knn3DdistX.h0000644000176000001440000001226412333041761015103 0ustar ripleyusers #if (1 == 0) /* knn3DdistX.h Code template for C functions supporting nncross for k-nearest neighbours (k > 1) for 3D point patterns THE FOLLOWING CODE ASSUMES THAT LISTS ARE SORTED IN ASCENDING ORDER OF z COORDINATE This code is #included multiple times in nn3Ddist.c Variables used: FNAME function name DIST #defined if function returns distance to nearest neighbour WHICH #defined if function returns id of nearest neighbour EXCLUDE #defined if exclusion mechanism is used Either or both DIST and WHICH may be defined. When EXCLUDE is defined, code numbers id1, id2 are attached to the patterns X and Y respectively, such that X[i] and Y[j] are the same point iff id1[i] = id2[j]. Copyright (C) Adrian Baddeley, Jens Oehlschlagel and Rolf Turner 2000-2013 Licence: GPL >= 2 $Revision: 1.1 $ $Date: 2013/06/29 03:04:47 $ */ #endif void FNAME(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, kmax, nnd, nnwhich, huge) /* inputs */ int *n1, *n2; double *x1, *y1, *z1, *x2, *y2, *z2, *huge; int *id1, *id2; int *kmax; /* output matrices (npoints * kmax) in ROW MAJOR order */ double *nnd; int *nnwhich; /* some inputs + outputs are not used in all functions */ { int npoints1, npoints2, nk, nk1; int maxchunk, i, jleft, jright, jwhich, lastjwhich, unsorted, k, k1; double d2, d2minK, x1i, y1i, z1i, dx, dy, dz, dz2, hu, hu2, tmp; double *d2min; #ifdef WHICH int *which; int itmp; #endif #ifdef EXCLUDE int id1i; #endif npoints1 = *n1; npoints2 = *n2; nk = *kmax; nk1 = nk - 1; hu = *huge; hu2 = hu * hu; if(npoints1 == 0 || npoints2 == 0) return; lastjwhich = 0; /* create space to store the nearest neighbour distances and indices for the current point */ d2min = (double *) R_alloc((size_t) nk, sizeof(double)); #ifdef WHICH which = (int *) R_alloc((size_t) nk, sizeof(int)); #endif /* loop in chunks of 2^16 */ i = 0; maxchunk = 0; while(i < npoints1) { R_CheckUserInterrupt(); maxchunk += 65536; if(maxchunk > npoints1) maxchunk = npoints1; for(; i < maxchunk; i++) { /* initialise nn distances and indices */ d2minK = hu2; jwhich = -1; for(k = 0; k < nk; k++) { d2min[k] = hu2; #ifdef WHICH which[k] = -1; #endif } x1i = x1[i]; y1i = y1[i]; z1i = z1[i]; #ifdef EXCLUDE id1i = id1[i]; #endif if(lastjwhich < npoints2) { /* search forward from previous nearest neighbour */ for(jright = lastjwhich; jright < npoints2; ++jright) { dz = z2[jright] - z1i; dz2 = dz * dz; if(dz2 > d2minK) /* note that dz2 >= d2minK could break too early */ break; #ifdef EXCLUDE /* do not compare identical points */ if(id2[jright] != id1i) { #endif dy = y2[jright] - y1i; d2 = dy * dy + dz2; if(d2 < d2minK) { dx = x2[jright] - x1i; d2 = dx * dx + d2; if (d2 < d2minK) { /* overwrite last entry in list of neighbours */ d2min[nk1] = d2; jwhich = jright; #ifdef WHICH which[nk1] = jright; #endif /* bubble sort */ unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } /* adjust maximum distance */ d2minK = d2min[nk1]; } } #ifdef EXCLUDE } #endif } /* end forward search */ } if(lastjwhich > 0) { /* search backward from previous nearest neighbour */ for(jleft = lastjwhich - 1; jleft >= 0; --jleft) { dz = z1i - z2[jleft]; dz2 = dz * dz; if(dz2 > d2minK) /* note that dz2 >= d2minK could break too early */ break; #ifdef EXCLUDE /* do not compare identical points */ if(id2[jleft] != id1i) { #endif dy = y2[jleft] - y1i; d2 = dy * dy + dz2; if(d2 < d2minK) { dx = x2[jleft] - x1i; d2 = dx * dx + d2; if (d2 < d2minK) { /* overwrite last entry in list of neighbours */ d2min[nk1] = d2; jwhich = jleft; #ifdef WHICH which[nk1] = jleft; #endif /* bubble sort */ unsorted = YES; for(k = nk1; unsorted && k > 0; k--) { k1 = k - 1; if(d2min[k] < d2min[k1]) { /* swap entries */ tmp = d2min[k1]; d2min[k1] = d2min[k]; d2min[k] = tmp; #ifdef WHICH itmp = which[k1]; which[k1] = which[k]; which[k] = itmp; #endif } else { unsorted = NO; } } /* adjust maximum distance */ d2minK = d2min[nk1]; } } #ifdef EXCLUDE } #endif } /* end backward search */ } /* copy nn distances for point i to output matrix in ROW MAJOR order */ for(k = 0; k < nk; k++) { #ifdef DIST nnd[nk * i + k] = sqrt(d2min[k]); #endif #ifdef WHICH nnwhich[nk * i + k] = which[k] + 1; /* R indexing */ #endif } /* save index of last neighbour encountered */ lastjwhich = jwhich; /* end of loop over points i */ } } } spatstat/src/knngrid.c0000644000176000001440000000400612333041761014534 0ustar ripleyusers/* knngrid.c K-th Nearest Neighbour Distances from a pixel grid to a point pattern Copyright (C) Adrian Baddeley, Jens Oehlschlaegel and Rolf Turner 2000-2013 Licence: GNU Public Licence >= 2 $Revision: 1.6 $ $Date: 2013/11/03 05:06:28 $ Function body definition is #included from knngrid.h THE FOLLOWING FUNCTIONS ASSUME THAT x IS SORTED IN ASCENDING ORDER */ #undef SPATSTAT_DEBUG #include #include #include #include "yesno.h" double sqrt(); /* THE FOLLOWING CODE ASSUMES THAT x IS SORTED IN ASCENDING ORDER */ /* general interface */ void knnGinterface(nx, x0, xstep, ny, y0, ystep, /* pixel grid dimensions */ np, xp, yp, /* data points */ kmax, wantdist, wantwhich, nnd, nnwhich, huge) /* inputs */ int *nx, *ny, *np; double *x0, *xstep, *y0, *ystep, *huge; double *xp, *yp; int *kmax; /* options */ int *wantdist, *wantwhich; /* outputs */ double *nnd; int *nnwhich; /* some inputs + outputs are not used in all functions */ { void knnGdw(), knnGd(), knnGw(); int di, wh; di = (*wantdist != 0); wh = (*wantwhich != 0); if(di && wh) { knnGdw(nx, x0, xstep, ny, y0, ystep, np, xp, yp, kmax, nnd, nnwhich, huge); } else if(di) { knnGd(nx, x0, xstep, ny, y0, ystep, np, xp, yp, kmax, nnd, nnwhich, huge); } else if(wh) { knnGw(nx, x0, xstep, ny, y0, ystep, np, xp, yp, kmax, nnd, nnwhich, huge); } } #undef FNAME #undef DIST #undef WHICH /* knnGdw nearest neighbours 1:kmax returns distances and indices */ #define FNAME knnGdw #define DIST #define WHICH #include "knngrid.h" #undef FNAME #undef DIST #undef WHICH /* knnGd nearest neighbours 1:kmax returns distances only */ #define FNAME knnGd #define DIST #include "knngrid.h" #undef FNAME #undef DIST #undef WHICH /* knnGw nearest neighbours 1:kmax returns indices only */ #define FNAME knnGw #define WHICH #include "knngrid.h" #undef FNAME #undef DIST #undef WHICH spatstat/src/linnncross.c0000644000176000001440000000121212333041761015264 0ustar ripleyusers#include /* linnncross.c Shortest-path distances between nearest neighbours in linear network One pattern to another pattern $Revision: 1.1 $ $Date: 2013/10/21 02:01:29 $ linndcross linndxcross */ #define DPATH(I,J) dpath[(I) + Nv * (J)] #define ANSWER(I,J) answer[(I) + Np * (J)] #define EUCLID(X,Y,U,V) sqrt(pow((X)-(U),2)+pow((Y)-(V),2)) /* definition of linndcross */ #define FNAME linndcross #undef EXCLU #define WHICH #include "linnncross.h" #undef FNAME #undef EXCLU #undef WHICH /* definition of linndxcross */ #define FNAME linndxcross #define EXCLU #define WHICH #include "linnncross.h" spatstat/src/mhv2.h0000644000176000001440000000041212333041761013756 0ustar ripleyusers/* mhv2.h single interaction or hybrid */ #undef MH_SINGLE if(Ncif == 1) { /* single interaction */ #define MH_SINGLE YES #include "mhv3.h" #undef MH_SINGLE } else { /* hybrid interaction */ #define MH_SINGLE NO #include "mhv3.h" #undef MH_SINGLE } spatstat/src/sftcr.c0000755000176000001440000000436612333041761014235 0ustar ripleyusers#include #include #include #include "methas.h" #include "dist2.h" /* Conditional intensity computation for Soft Core process */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct Softcore { double sigma; double kappa; double nook; /* -1/kappa */ double stok; /* sigma^(2/kappa) */ double *period; int per; } Softcore; /* initialiser function */ Cdata *sftcrinit(state, model, algo) State state; Model model; Algor algo; { Softcore *softcore; softcore = (Softcore *) R_alloc(1, sizeof(Softcore)); /* Interpret model parameters*/ softcore->sigma = model.ipar[0]; softcore->kappa = model.ipar[1]; softcore->period = model.period; /* constants */ softcore->nook = -1/softcore->kappa; softcore->stok = pow(softcore->sigma, 2/softcore->kappa); /* periodic boundary conditions? */ softcore->per = (model.period[0] > 0.0); return((Cdata *) softcore); } /* conditional intensity evaluator */ double sftcrcif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ix, ixp1, j; double *x, *y; double u, v; double d2, pairsum, cifval, nook, stok; Softcore *softcore; softcore = (Softcore *) cdata; nook = softcore->nook; stok = softcore->stok; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; cifval = 1.0; if(npts == 0) return(cifval); pairsum = 0; ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(softcore->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { d2 = dist2(u,v,x[j],y[j],softcore->period); pairsum += pow(d2, nook); } } if(ixp1 < npts) { for(j=ixp1; jperiod); pairsum += pow(d2, nook); } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { d2 = pow(u - x[j],2) + pow(v-y[j],2); pairsum += pow(d2, nook); } } if(ixp1 < npts) { for(j=ixp1; j #include #include #include "geom3.h" #include "functable.h" #ifdef DEBUG #define DEBUGMESSAGE(S) Rprintf(S); #else #define DEBUGMESSAGE(S) #endif /* $Revision: 1.3 $ $Date: 2011/11/20 04:19:10 $ 3D distance transform # ///////////////////////////////////////////// # AUTHOR: Adrian Baddeley, CWI, Amsterdam, 1991. # # MODIFIED BY: Adrian Baddeley, Perth 2009 # # This software is distributed free # under the conditions that # (1) it shall not be incorporated # in software that is subsequently sold # (2) the authorship of the software shall # be acknowledged in any publication that # uses results generated by the software # (3) this notice shall remain in place # in each file. # ////////////////////////////////////////////// */ /* step lengths in distance transform */ #define STEP1 41 #define STEP2 58 #define STEP3 71 /* (41,58,71)/41 is a good rational approximation to (1, sqrt(2), sqrt(3)) */ #define MIN(X,Y) (((X) < (Y)) ? (X) : (Y)) #define MAX(X,Y) (((X) > (Y)) ? (X) : (Y)) typedef struct IntImage { int *data; int Mx, My, Mz; /* dimensions */ int length; } IntImage; typedef struct BinaryImage { unsigned char *data; int Mx, My, Mz; /* dimensions */ int length; } BinaryImage; #define VALUE(I,X,Y,Z) \ ((I).data)[ (Z) * ((I).Mx) * ((I).My) + (Y) * ((I).Mx) + (X) ] void allocBinImage(b, ok) BinaryImage *b; int *ok; { b->length = b->Mx * b->My * b->Mz; b->data = (unsigned char *) R_alloc(b->length, sizeof(unsigned char)); if(b->data == 0) { Rprintf("Can't allocate memory for %d binary voxels\n", b->length); *ok = 0; } *ok = 1; } void allocIntImage(v, ok) IntImage *v; int *ok; { v->length = v->Mx * v->My * v->Mz; v->data = (int *) R_alloc(v->length, sizeof(int)); if(v->data == 0) { Rprintf("Can't allocate memory for %d integer voxels\n", v->length); *ok = 0; } *ok = 1; } void freeBinImage(b) BinaryImage *b; { } void freeIntImage(v) IntImage *v; { } void cts2bin(p, n, box, vside, b, ok) /* convert a list of points inside a box into a 3D binary image */ Point *p; int n; Box *box; double vside; /* side of a (cubic) voxel */ BinaryImage *b; int *ok; { int i, lx, ly, lz; unsigned char *cp; b->Mx = (int) ceil((box->x1 - box->x0)/vside) + 1; b->My = (int) ceil((box->y1 - box->y0)/vside) + 1; b->Mz = (int) ceil((box->z1 - box->z0)/vside) + 1; allocBinImage(b, ok); if(! (*ok)) return; for(i = b->length, cp = b->data; i ; i--, cp++) *cp = 1; for(i=0;ix0)/vside)-1; ly = (int) ceil((p[i].y - box->y0)/vside)-1; lz = (int) ceil((p[i].z - box->z0)/vside)-1; if( lx >= 0 && lx < b->Mx && ly >= 0 && ly < b->My && lz >= 0 && lz < b->Mz ) VALUE((*b),lx,ly,lz) = 0; } } void distrans3(b, v, ok) /* Distance transform in 3D */ BinaryImage *b; /* input */ IntImage *v; /* output */ int *ok; { register int x, y, z; int infinity, q; /* allocate v same size as b */ v->Mx = b->Mx; v->My = b->My; v->Mz = b->Mz; allocIntImage(v, ok); if(! (*ok)) return; /* compute largest possible distance */ infinity = (int) ceil( ((double) STEP3) * sqrt( ((double) b->Mx) * b->Mx + ((double) b->My) * b->My + ((double) b->Mz) * b->Mz)); /* Forward pass: Top to Bottom; Back to Front; Left to Right. */ for(z=0;zMz;z++) { R_CheckUserInterrupt(); for(y=0;yMy;y++) { for(x=0;xMx;x++) { if(VALUE((*b),x,y,z) == 0) VALUE((*v),x,y,z) = 0; else { q = infinity; #define INTERVAL(W, DW, MW) \ ((DW == 0) || (DW == -1 && W > 0) || (DW == 1 && W < MW - 1)) #define BOX(X,Y,Z,DX,DY,DZ) \ (INTERVAL(X,DX,v->Mx) && INTERVAL(Y,DY,v->My) && INTERVAL(Z,DZ,v->Mz)) #define TEST(DX,DY,DZ,DV) \ if(BOX(x,y,z,DX,DY,DZ) && q > VALUE((*v),x+DX,y+DY,z+DZ) + DV) \ q = VALUE((*v),x+DX,y+DY,z+DZ) + DV /* same row */ TEST(-1, 0, 0, STEP1); /* same plane */ TEST(-1,-1, 0, STEP2); TEST( 0,-1, 0, STEP1); TEST( 1,-1, 0, STEP2); /* previous plane */ TEST( 1, 1,-1, STEP3); TEST( 0, 1,-1, STEP2); TEST(-1, 1,-1, STEP3); TEST( 1, 0,-1, STEP2); TEST( 0, 0,-1, STEP1); TEST(-1, 0,-1, STEP2); TEST( 1,-1,-1, STEP3); TEST( 0,-1,-1, STEP2); TEST(-1,-1,-1, STEP3); VALUE((*v),x,y,z) = q; } } } } /* Backward pass: Bottom to Top; Front to Back; Right to Left. */ for(z = b->Mz - 1; z >= 0; z--) { R_CheckUserInterrupt(); for(y = b->My - 1; y >= 0; y--) { for(x = b->Mx - 1; x >= 0; x--) { if((q = VALUE((*v),x,y,z)) != 0) { /* same row */ TEST(1, 0, 0, STEP1); /* same plane */ TEST(-1, 1, 0, STEP2); TEST( 0, 1, 0, STEP1); TEST( 1, 1, 0, STEP2); /* plane below */ TEST( 1, 1, 1, STEP3); TEST( 0, 1, 1, STEP2); TEST(-1, 1, 1, STEP3); TEST( 1, 0, 1, STEP2); TEST( 0, 0, 1, STEP1); TEST(-1, 0, 1, STEP2); TEST( 1,-1, 1, STEP3); TEST( 0,-1, 1, STEP2); TEST(-1,-1, 1, STEP3); VALUE((*v),x,y,z) = q; } } } } } void hist3d(v, vside, count) /* compute histogram of all values in *v using count->n histogram cells ranging from count->t0 to count->t1 and put results in count->num */ IntImage *v; double vside; Itable *count; { register int i, j, k; register int *ip; register double scale, width; /* relationship between distance transform units and physical units */ scale = vside/STEP1; width = (count->t1 - count->t0)/(count->n - 1); for(i = 0; i < count->n ; i++) { (count->num)[i] = 0; (count->denom)[i] = v->length; } for(i = v->length, ip = v->data; i; i--, ip++) { k = (int) ceil((*ip * scale - count->t0)/width); k = MAX(k, 0); for(j = k; j < count->n; j++) (count->num)[j]++; } } void hist3dminus(v, vside, count) /* minus sampling */ IntImage *v; double vside; Itable *count; { register int x, y, z, val, border, bx, by, bz, byz, j, kbord, kval; register double scale, width; DEBUGMESSAGE("inside hist3dminus\n") scale = vside/STEP1; width = (count->t1 - count->t0)/(count->n - 1); /* table is assumed to have been initialised in MakeItable */ for(z = 0; z < v->Mz; z++) { bz = MIN(z + 1, v->Mz - z); for(y = 0; y < v->My; y++) { by = MIN(y + 1, v->My - y); byz = MIN(by, bz); for(x = 0; x < v->Mx; x++) { bx = MIN(x + 1, v->My - x); border = MIN(bx, byz); kbord = (int) floor((vside * border - count->t0)/width); kbord = MIN(kbord, count->n - 1); /* denominator counts all voxels with distance to boundary >= r */ if(kbord >= 0) for(j = 0; j <= kbord; j++) (count->denom)[j]++; val = VALUE((*v), x, y, z); kval = (int) ceil((val * scale - count->t0)/width); kval = MAX(kval, 0); #ifdef DEBUG /* Rprintf("border=%lf\tkbord=%d\tval=%lf\tkval=%d\n", vside * border, kbord, scale * val, kval); */ #endif /* numerator counts all voxels with distance to boundary >= r and distance to nearest point <= r */ if(kval <= kbord) for(j = kval; j <= kbord; j++) (count->num)[j]++; } } } DEBUGMESSAGE("leaving hist3dminus\n") } void hist3dCen(v, vside, count) /* four censoring-related histograms */ IntImage *v; double vside; H4table *count; { register int x, y, z, val, border, bx, by, bz, byz, kbord, kval; register double scale, width, realborder, realval; DEBUGMESSAGE("inside hist3dCen\n") scale = vside/STEP1; width = (count->t1 - count->t0)/(count->n - 1); /* table is assumed to have been initialised in MakeH4table */ for(z = 0; z < v->Mz; z++) { bz = MIN(z + 1, v->Mz - z); for(y = 0; y < v->My; y++) { by = MIN(y + 1, v->My - y); byz = MIN(by, bz); for(x = 0; x < v->Mx; x++) { bx = MIN(x + 1, v->My - x); border = MIN(bx, byz); realborder = vside * border; kbord = (int) floor((realborder - count->t0)/width); val = VALUE((*v), x, y, z); realval = scale * val; kval = (int) ceil((realval - count->t0)/width); kval = MIN(kval, count->n - 1); #ifdef DEBUG Rprintf("border=%lf\tkbord=%d\tval=%lf\tkval=%d\n", realborder, kbord, realval, kval); #endif if(realval <= realborder) { /* observation is uncensored; increment all four histograms */ if(kval >= count->n) ++(count->upperobs); else if(kval >= 0) { (count->obs)[kval]++; (count->nco)[kval]++; } if(kbord >= count->n) ++(count->uppercen); else if(kbord >= 0) { (count->cen)[kbord]++; (count->ncc)[kbord]++; } } else { /* observation is censored; increment only two histograms */ kval = MIN(kval, kbord); if(kval >= count->n) ++(count->upperobs); else if(kval >= 0) (count->obs)[kval]++; if(kbord >= count->n) ++(count->uppercen); else if(kbord >= 0) (count->cen)[kbord]++; } } } } DEBUGMESSAGE("leaving hist3dCen\n") } /* CALLING ROUTINES */ void phatminus(p, n, box, vside, count) Point *p; int n; Box *box; double vside; Itable *count; { BinaryImage b; IntImage v; int ok; DEBUGMESSAGE("in phatminus\ncalling cts2bin...") cts2bin(p, n, box, vside, &b, &ok); DEBUGMESSAGE("out of cts2bin\ninto distrans3...") if(ok) distrans3(&b, &v, &ok); if(ok) { freeBinImage(&b); DEBUGMESSAGE("out of distrans3\ninto hist3dminus...") hist3dminus(&v, vside, count); DEBUGMESSAGE("out of hist3dminus\n") freeIntImage(&v); } } void phatnaive(p, n, box, vside, count) Point *p; int n; Box *box; double vside; Itable *count; { BinaryImage b; IntImage v; int ok; DEBUGMESSAGE("in phatnaive\ncalling cts2bin...") cts2bin(p, n, box, vside, &b, &ok); DEBUGMESSAGE("out of cts2bin\n into distrans3...") if(ok) distrans3(&b, &v, &ok); if(ok) { freeBinImage(&b); DEBUGMESSAGE("out of distrans3\ninto hist3d..."); hist3d(&v, vside, count); DEBUGMESSAGE("out of hist3d\n") freeIntImage(&v); } } void p3hat4(p, n, box, vside, count) Point *p; int n; Box *box; double vside; H4table *count; { BinaryImage b; IntImage v; int ok; DEBUGMESSAGE("in phatminus\ncalling cts2bin...") cts2bin(p, n, box, vside, &b, &ok); DEBUGMESSAGE("out of cts2bin\ninto distrans3...") if(ok) distrans3(&b, &v, &ok); if(ok) { freeBinImage(&b); DEBUGMESSAGE("out of distrans3\ninto hist3dminus...") hist3dCen(&v, vside, count); DEBUGMESSAGE("out of hist3dminus\n") freeIntImage(&v); } } spatstat/src/digber.c0000644000176000001440000000222312333041761014333 0ustar ripleyusers/* digber.c Diggle-Berman function J used in bandwidth selection J(r) = \int_0^(2r) phi(t, r) dK(t) where K is the K-function and phi(t, r) = 2 r^2 * (acos(y) - y sqrt(1 - y^2)) where y = t/(2r). $Revision: 1.7 $ $Date: 2013/08/24 11:13:43 $ */ #include double sqrt(), acos(); /* r is the vector of distance values, starting from 0, with length nr, equally spaced. dK = diff(K) is the vector of increments of the K-function, with length ndK = nr-1. values of J are computed only up to max(r)/2 nrmax = floor(nr/2). */ void digberJ(r, dK, nr, nrmax, ndK, J) /* inputs */ int *nr, *nrmax, *ndK; double *r, *dK; /* output */ double *J; { int i, j, Ni, NdK; double ri, twori, tj, y, phiy, integral; Ni = *nrmax; NdK = *ndK; J[0] = 0.0; for(i = 1; i < Ni; i++) { ri = r[i]; twori = 2 * ri; integral = 0.0; for(j = 0; j < NdK; j++) { tj = r[j]; y = tj/twori; if(y >= 1.0) break; phiy = acos(y) - y * sqrt(1 - y * y); integral += phiy * dK[j]; } J[i] = 2 * ri * ri * integral; } } spatstat/src/lennard.c0000755000176000001440000000712112333041761014527 0ustar ripleyusers#include #include #include #include #include "methas.h" #include "dist2.h" /* Conditional intensity computation for Lennard-Jones process */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct Lennard { double sigma; double epsilon; double sigma2; /* sigma^2 */ double foureps; /* 4 * epsilon */ double d2min; /* minimum value of d^2 which yields nonzero intensity */ double d2max; /* maximum value of d^2 which has nontrivial contribution */ double *period; int per; } Lennard; /* MAXEXP is intended to be the largest x such that exp(-x) != 0 although the exact value is not needed */ #define MAXEXP (-log(DOUBLE_XMIN)) #define MINEXP (log(1.001)) /* initialiser function */ Cdata *lennardinit(state, model, algo) State state; Model model; Algor algo; { Lennard *lennard; double sigma2, foureps, minfrac, maxfrac; lennard = (Lennard *) R_alloc(1, sizeof(Lennard)); /* Interpret model parameters*/ lennard->sigma = model.ipar[0]; lennard->epsilon = model.ipar[1]; lennard->period = model.period; /* constants */ lennard->sigma2 = sigma2 = pow(lennard->sigma, 2); lennard->foureps = foureps = 4 * lennard->epsilon; /* thresholds where the interaction becomes trivial */ minfrac = pow(foureps/MAXEXP, (double) 1.0/6.0); if(minfrac > 0.5) minfrac = 0.5; maxfrac = pow(foureps/MINEXP, (double) 1.0/3.0); if(maxfrac < 2.0) maxfrac = 2.0; lennard->d2min = sigma2 * minfrac; lennard->d2max = sigma2 * maxfrac; /* periodic boundary conditions? */ lennard->per = (model.period[0] > 0.0); return((Cdata *) lennard); } /* conditional intensity evaluator */ double lennardcif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ix, ixp1, j; double *x, *y; double u, v; double d2, ratio6, pairsum, cifval; double sigma2, d2max, d2min; double *period; Lennard *lennard; DECLARE_CLOSE_D2_VARS; lennard = (Lennard *) cdata; sigma2 = lennard->sigma2; d2max = lennard->d2max; d2min = lennard->d2min; period = lennard->period; u = prop.u; v = prop.v; ix = prop.ix; x = state.x; y = state.y; npts = state.npts; cifval = 1.0; if(npts == 0) return(cifval); pairsum = 0; ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(lennard->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_PERIODIC_D2(u,v,x[j],y[j],period,d2max,d2)) { if(d2 < d2min) { cifval = 0.0; return cifval; } ratio6 = pow(sigma2/d2, 3); pairsum += ratio6 * (1.0 - ratio6); } } } if(ixp1 < npts) { for(j=ixp1; j 0) { for(j=0; j < ix; j++) { if(CLOSE_D2(u, v, x[j], y[j], d2max, d2)) { if(d2 < lennard->d2min) { cifval = 0.0; return cifval; } ratio6 = pow(sigma2/d2, 3); pairsum += ratio6 * (1.0 - ratio6); } } } if(ixp1 < npts) { for(j=ixp1; jd2min) { cifval = 0.0; return cifval; } ratio6 = pow(sigma2/d2, 3); pairsum += ratio6 * (1.0 - ratio6); } } } } cifval *= exp(lennard->foureps * pairsum); return cifval; } Cifns LennardCifns = { &lennardinit, &lennardcif, (updafunptr) NULL, NO}; spatstat/src/Egeyer.c0000755000176000001440000000434512333041761014331 0ustar ripleyusers#include #include #include "chunkloop.h" /* Egeyer.c $Revision: 1.5 $ $Date: 2013/04/18 06:10:06 $ Part of C implementation of 'eval' for Geyer interaction Calculates change in saturated count (xquad, yquad): quadscheme (xdata, ydata): data tdata: unsaturated pair counts for data pattern quadtodata[j] = i if quad[j] == data[i] (indices start from ZERO) Assumes point patterns are sorted in increasing order of x coordinate */ double sqrt(); void Egeyer(nnquad, xquad, yquad, quadtodata, nndata, xdata, ydata, tdata, rrmax, ssat, result) /* inputs */ int *nnquad, *nndata, *quadtodata, *tdata; double *xquad, *yquad, *xdata, *ydata, *rrmax, *ssat; /* output */ double *result; { int nquad, ndata, maxchunk, j, i, ileft, dataindex, isdata; double xquadj, yquadj, rmax, sat, r2max, xleft, dx, dy, dx2, d2; double tbefore, tafter, satbefore, satafter, delta, totalchange; nquad = *nnquad; ndata = *nndata; rmax = *rrmax; sat = *ssat; r2max = rmax * rmax; if(nquad == 0 || ndata == 0) return; ileft = 0; OUTERCHUNKLOOP(j, nquad, maxchunk, 65536) { R_CheckUserInterrupt(); INNERCHUNKLOOP(j, nquad, maxchunk, 65536) { totalchange = 0.0; xquadj = xquad[j]; yquadj = yquad[j]; dataindex = quadtodata[j]; isdata = (dataindex >= 0); /* adjust starting point */ xleft = xquadj - rmax; while((xdata[ileft] < xleft) && (ileft+1 < ndata)) ++ileft; /* process until dx > rmax */ for(i=ileft; i < ndata; i++) { dx = xdata[i] - xquadj; dx2 = dx * dx; if(dx2 > r2max) break; if(i != dataindex) { dy = ydata[i] - yquadj; d2 = dx2 + dy * dy; if(d2 <= r2max) { /* effect of adding dummy point j or negative effect of removing data point */ tbefore = tdata[i]; tafter = tbefore + ((isdata) ? -1 : 1); /* effect on saturated values */ satbefore = (double) ((tbefore < sat)? tbefore : sat); satafter = (double) ((tafter < sat)? tafter : sat); /* sum changes over all i */ delta = satafter - satbefore; totalchange += ((isdata) ? -delta : delta); } } } result[j] = totalchange; } } } spatstat/src/multihard.c0000755000176000001440000000735712333041761015110 0ustar ripleyusers#include #include #include "methas.h" #include "dist2.h" /* for debugging code, include #define DEBUG 1 */ /* Conditional intensity computation for Multitype Hardcore process */ /* NOTE: types (marks) are numbered from 0 to ntypes-1 */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct MultiHard { int ntypes; double *hc; /* hc[i,j] = hc[j+ntypes*i] for i,j = 0... ntypes-1 */ double *hc2; /* squared radii */ double range2; /* square of interaction range */ double *period; int per; } MultiHard; /* initialiser function */ Cdata *multihardinit(state, model, algo) State state; Model model; Algor algo; { int i, j, ntypes, n2; double h, h2, range2; MultiHard *multihard; multihard = (MultiHard *) R_alloc(1, sizeof(MultiHard)); multihard->ntypes = ntypes = model.ntypes; n2 = ntypes * ntypes; #ifdef DEBUG Rprintf("initialising space for %d types\n", ntypes); #endif /* Allocate space for parameters */ multihard->hc = (double *) R_alloc((size_t) n2, sizeof(double)); /* Allocate space for transformed parameters */ multihard->hc2 = (double *) R_alloc((size_t) n2, sizeof(double)); /* Copy and process model parameters*/ range2 = 0.0; for(i = 0; i < ntypes; i++) { for(j = 0; j < ntypes; j++) { h = model.ipar[i + j*ntypes]; h2 = h * h; MAT(multihard->hc, i, j, ntypes) = h; MAT(multihard->hc2, i, j, ntypes) = h2; if(range2 > h2) range2 = h2; } } multihard->range2 = range2; /* periodic boundary conditions? */ multihard->period = model.period; multihard->per = (model.period[0] > 0.0); #ifdef DEBUG Rprintf("end initialiser\n"); #endif return((Cdata *) multihard); } /* conditional intensity evaluator */ double multihardcif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ntypes, ix, ixp1, j, mrk, mrkj; int *marks; double *x, *y; double u, v; double d2, range2, cifval; double *period; MultiHard *multihard; DECLARE_CLOSE_D2_VARS; multihard = (MultiHard *) cdata; range2 = multihard->range2; period = multihard->period; u = prop.u; v = prop.v; mrk = prop.mrk; ix = prop.ix; x = state.x; y = state.y; marks = state.marks; npts = state.npts; #ifdef DEBUG Rprintf("computing cif: u=%lf, v=%lf, mrk=%d\n", u, v, mrk); #endif cifval = 1.0; if(npts == 0) return(cifval); ntypes = multihard->ntypes; #ifdef DEBUG Rprintf("scanning data\n"); #endif ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(multihard->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_PERIODIC_D2(u,v,x[j],y[j],period,range2,d2)) { mrkj = marks[j]; if(d2 < MAT(multihard->hc2, mrk, mrkj, ntypes)) { cifval = 0.0; return(cifval); } } } } if(ixp1 < npts) { for(j=ixp1; jhc2, mrk, mrkj, ntypes)) { cifval = 0.0; return(cifval); } } } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_D2(u, v, x[j], y[j], range2, d2)) { mrkj = marks[j]; if(d2 < MAT(multihard->hc2, mrk, mrkj, ntypes)) { cifval = 0.0; return(cifval); } } } } if(ixp1 < npts) { for(j=ixp1; jhc2, mrk, mrkj, ntypes)) { cifval = 0.0; return(cifval); } } } } } #ifdef DEBUG Rprintf("returning positive cif\n"); #endif return cifval; } Cifns MultiHardCifns = { &multihardinit, &multihardcif, (updafunptr) NULL, YES}; spatstat/src/nn3Ddist.c0000755000176000001440000001733312333041761014600 0ustar ripleyusers/* nn3Ddist.c Nearest Neighbour Distances in 3D $Revision: 1.11 $ $Date: 2013/11/03 03:42:48 $ THE FOLLOWING FUNCTIONS ASSUME THAT z IS SORTED IN ASCENDING ORDER nnd3D Nearest neighbour distances nnw3D Nearest neighbours (id) nndw3D Nearest neighbours (id) and distances nnXdw3D Nearest neighbour from one list to another nnXEdw3D Nearest neighbour from one list to another, with overlaps knnd3D k-th nearest neighbour distances knnw3D k-th nearest neighbours (id) knndw3D k-th nearest neighbours (id) and distances */ #undef SPATSTAT_DEBUG #include #include #include #include "chunkloop.h" #include "yesno.h" double sqrt(); /* .......... Single point pattern ...............................*/ #undef FNAME #undef DIST #undef WHICH /* nnd3D: returns nn distance */ #define FNAME nnd3D #define DIST #include "nn3Ddist.h" #undef FNAME #undef DIST #undef WHICH /* nnw3D: returns id of nearest neighbour */ #define FNAME nnw3D #define WHICH #include "nn3Ddist.h" #undef FNAME #undef DIST #undef WHICH /* nndw3D: returns nn distance .and. id of nearest neighbour */ #define FNAME nndw3D #define DIST #define WHICH #include "nn3Ddist.h" #undef FNAME #undef DIST #undef WHICH /* .......... Two point patterns ...............................*/ /* common interface */ void nnX3Dinterface(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, exclude, wantdist, wantwhich, nnd, nnwhich, huge) /* inputs */ int *n1, *n2, *id1, *id2; double *x1, *y1, *z1, *x2, *y2, *z2, *huge; /* options */ int *exclude, *wantdist, *wantwhich; /* outputs */ double *nnd; int *nnwhich; { void nnXdw3D(), nnXd3D(), nnXw3D(); void nnXEdw3D(), nnXEd3D(), nnXEw3D(); int ex, di, wh; ex = (*exclude != 0); di = (*wantdist != 0); wh = (*wantwhich != 0); if(!ex) { if(di && wh) { nnXdw3D(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, nnd, nnwhich, huge); } else if(di) { nnXd3D(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, nnd, nnwhich, huge); } else if(wh) { nnXw3D(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, nnd, nnwhich, huge); } } else { if(di && wh) { nnXEdw3D(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, nnd, nnwhich, huge); } else if(di) { nnXEd3D(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, nnd, nnwhich, huge); } else if(wh) { nnXEw3D(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, nnd, nnwhich, huge); } } } /* nnXdw3D: for TWO point patterns X and Y, find the nearest neighbour (from each point of X to the nearest point of Y) returning both the distance and the identifier Requires both patterns to be sorted in order of increasing z coord */ #define FNAME nnXdw3D #define DIST #define WHICH #undef EXCLUDE #include "nn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* nnXd3D: returns distance only */ #define FNAME nnXd3D #define DIST #undef EXCLUDE #include "nn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* nnXw3D: returns identifier only */ #define FNAME nnXw3D #define WHICH #undef EXCLUDE #include "nn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* .......... Two point patterns with exclusion ........................*/ /* nnXEdw3D: similar to nnXdw3D but allows X and Y to include common points (which are not to be counted as neighbours) Code numbers id1, id2 are attached to the patterns X and Y respectively, such that x1[i], y1[i] and x2[j], y2[j] are the same point iff id1[i] = id2[j]. Requires both patterns to be sorted in order of increasing z coord */ #define FNAME nnXEdw3D #define DIST #define WHICH #define EXCLUDE #include "nn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* nnXEd3D: returns distances only */ #define FNAME nnXEd3D #define DIST #define EXCLUDE #include "nn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* nnXEw3D: returns identifiers only */ #define FNAME nnXEw3D #define WHICH #define EXCLUDE #include "nn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* .......... Single point pattern ...............................*/ /* .......... k-th nearest neighbours ...............................*/ /* knnd3D nearest neighbour distances 1:kmax */ #define FNAME knnd3D #define DIST #include "knn3Ddist.h" #undef FNAME #undef DIST #undef WHICH /* knnw3D nearest neighbour indices 1:kmax */ #define FNAME knnw3D #define WHICH #include "knn3Ddist.h" #undef FNAME #undef DIST #undef WHICH /* knndw3D nearest neighbours 1:kmax returns distances and indices */ #define FNAME knndw3D #define DIST #define WHICH #include "knn3Ddist.h" #undef FNAME #undef DIST #undef WHICH /* .......... Two point patterns ...............................*/ /* .......... k-th nearest neighbours ...............................*/ /* general interface */ void knnX3Dinterface(n1, x1, y1, z1, id1, n2, x2, y2, z2, id2, kmax, exclude, wantdist, wantwhich, nnd, nnwhich, huge) /* inputs */ int *n1, *n2; double *x1, *y1, *z1, *x2, *y2, *z2, *huge; int *id1, *id2; int *kmax; /* options */ int *exclude, *wantdist, *wantwhich; /* output matrices (npoints * kmax) in ROW MAJOR order */ double *nnd; int *nnwhich; /* some inputs + outputs are not used in all functions */ { void knnXdw3D(), knnXd3D(), knnXw3D(); void knnXEdw3D(), knnXEd3D(), knnXEw3D(); int ex, di, wh; ex = (*exclude != 0); di = (*wantdist != 0); wh = (*wantwhich != 0); if(!ex) { if(di && wh) { knnXdw3D(n1,x1,y1,z1,id1,n2,x2,y2,z2,id2,kmax,nnd,nnwhich,huge); } else if(di) { knnXd3D(n1,x1,y1,z1,id1,n2,x2,y2,z2,id2,kmax,nnd,nnwhich,huge); } else if(wh) { knnXw3D(n1,x1,y1,z1,id1,n2,x2,y2,z2,id2,kmax,nnd,nnwhich,huge); } } else { if(di && wh) { knnXEdw3D(n1,x1,y1,z1,id1,n2,x2,y2,z2,id2,kmax,nnd,nnwhich,huge); } else if(di) { knnXEd3D(n1,x1,y1,z1,id1,n2,x2,y2,z2,id2,kmax,nnd,nnwhich,huge); } else if(wh) { knnXEw3D(n1,x1,y1,z1,id1,n2,x2,y2,z2,id2,kmax,nnd,nnwhich,huge); } } } #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* knnXdw3D nearest neighbours 1:kmax between two point patterns returns distances and indices */ #define FNAME knnXdw3D #define DIST #define WHICH #include "knn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* knnXd3D nearest neighbours 1:kmax between two point patterns returns distances */ #define FNAME knnXd3D #define DIST #include "knn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* knnXw3D nearest neighbours 1:kmax between two point patterns returns indices */ #define FNAME knnXw3D #define WHICH #include "knn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* .......... Two point patterns with exclusion ..........................*/ /* .......... k-th nearest neighbours ...............................*/ /* knnXEdw3D nearest neighbours 1:kmax between two point patterns with exclusion returns distances and indices */ #define FNAME knnXEdw3D #define DIST #define WHICH #define EXCLUDE #include "knn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* knnXEd3D nearest neighbours 1:kmax between two point patterns with exclusion returns distances */ #define FNAME knnXEd3D #define DIST #define EXCLUDE #include "knn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE /* knnXEw3D nearest neighbours 1:kmax between two point patterns with exclusion returns indices */ #define FNAME knnXEw3D #define WHICH #define EXCLUDE #include "knn3DdistX.h" #undef FNAME #undef DIST #undef WHICH #undef EXCLUDE spatstat/src/areadiff.c0000755000176000001440000001533312333041761014651 0ustar ripleyusers/* areadiff.c Area difference function $Revision: 1.14 $ $Date: 2013/09/18 04:09:24 $ A(x,r) = area of disc b(0,r) not covered by discs b(x_i,r) for x_i in x Area estimated by point-counting on a fine grid For use in area-interaction model and related calculations */ #undef DEBUG #include #include #include #include "chunkloop.h" #include "constants.h" /* Original version areadiff() 1 point u No trimming of discs */ void areadiff(rad,x,y,nn,ngrid,answer) /* inputs */ double *rad; /* radius */ double *x, *y; /* coordinate vectors for point pattern */ int *nn; /* length of vectors x and y */ int *ngrid; /* dimensions of point-counting grid */ /* output */ double *answer; /* computed area */ { double dx, dy, xg, yg, r, r2, a2, b2, xdif, ydif; int i, j, k, m, n, count, covered; r = *rad; r2 = r * r; n = *nn; m = *ngrid; dx = dy = 2 * r / (m-1); count = 0; /* run through grid points */ for(i = 0, xg = -r; i < m; i++, xg += dx) { a2 = r2 - xg *xg; for(j = 0, yg = -r; j < m; j++, yg += dy) { /* test for inside disc */ if(yg * yg < a2) { #ifdef DEBUG Rprintf("\n\n (xg,yg) = (%lf, %lf)\n", xg, yg); #endif /* run through data points seeking one close to (xy, yg) */ covered = 0; if(n > 0) { for(k = 0; k < n; k++) { #ifdef DEBUG Rprintf("(x[%d],y[%d]) = (%lf,%lf)\n", k, k, x[k], y[k]); #endif xdif = x[k] - xg; b2 = r2 - xdif * xdif; if(b2 > 0) { ydif = y[k] - yg; if(b2 - ydif * ydif > 0) { #ifdef DEBUG Rprintf("(x[%d], y[%d]) = (%lf, %lf) covers!\n", k, k, x[k], y[k]); #endif covered = 1; break; } } } } if(covered == 0) { ++count; #ifdef DEBUG Rprintf("Not covered; incrementing count\n"); #endif } } } } #ifdef DEBUG Rprintf("Count = %d\n", count); #endif /* calculate area */ *answer = ((double) count) * dx * dy; } /* similar function, handles multiple values of 'r' */ void areadifs(rad,nrads,x,y,nxy,ngrid,answer) /* inputs */ double *rad; /* vector of radii */ int *nrads; /* length of 'rads' */ double *x, *y; /* coordinate vectors for point pattern */ int *nxy; /* length of vectors x and y */ int *ngrid; /* dimensions of point-counting grid */ /* output */ double *answer; /* computed areas (vector of length 'nrads') */ { double dx, dy, xg, yg, r, r2, a2, b2, xdif, ydif; int i, j, k, l, m, n, nr, m0, count, covered, maxchunk; n = *nxy; nr = *nrads; m = *ngrid; /* run through radii in chunks of 2^14 */ OUTERCHUNKLOOP(l, nr, maxchunk, 16384) { R_CheckUserInterrupt(); INNERCHUNKLOOP(l, nr, maxchunk, 16384) { r = rad[l]; if(r == 0.0) { answer[l] = 0.0; } else if(n == 0) { answer[l] = M_PI * r * r; } else { r2 = r * r; dx = dy = 2 * r / (m-1); count = 0; /* run through grid points in disc of radius r */ for(i = 0, xg = -r; i < m; i++, xg += dx) { a2 = r2 - xg * xg; m0 = (a2 > 0.0) ? floor(sqrt(a2)/dy) : 0; for(j = -m0, yg = -m0 * dy; j <= m0; j++, yg += dy) { #ifdef DEBUG Rprintf("\n\n (xg,yg) = (%lf, %lf)\n", xg, yg); #endif /* run through data points seeking one close to (xy, yg) */ covered = 0; for(k = 0; k < n; k++) { #ifdef DEBUG Rprintf("(x[%d],y[%d]) = (%lf,%lf)\n", k, k, x[k], y[k]); #endif xdif = x[k] - xg; b2 = r2 - xdif * xdif; if(b2 > 0) { ydif = y[k] - yg; if(b2 - ydif * ydif > 0) { #ifdef DEBUG Rprintf("(x[%d], y[%d]) = (%lf, %lf) covers!\n", k, k, x[k], y[k]); #endif covered = 1; break; } } } /* end of loop through data points */ if(covered == 0) { ++count; #ifdef DEBUG Rprintf("Not covered; incrementing count\n"); #endif } } } /* end of loop over grid points */ #ifdef DEBUG Rprintf("Count = %d\n", count); #endif /* calculate area for this value of r*/ answer[l] = ((double) count) * dx * dy; } /* end of if(r==0).. else {...} */ } } } /* Modified version multiple test points u discs constrained inside a rectangle */ void areaBdif(rad,nrads,x,y,nxy,ngrid,x0,y0,x1,y1,answer) /* inputs */ double *rad; /* vector of radii */ int *nrads; /* length of 'rads' */ double *x, *y; /* coordinate vectors for point pattern */ int *nxy; /* length of vectors x and y */ int *ngrid; /* dimensions of point-counting grid */ double *x0,*y0,*x1,*y1; /* constraint rectangle */ /* output */ double *answer; /* computed areas (vector of length 'nrads') */ { double dx, dy, xg, yg, r, r2, a, a2, b2, xdif, ydif; double xleft, xright, ylow, yhigh; double xmin, ymin, xmax, ymax; int i, j, k, l, m, n, nr, ileft, iright, mlow, mhigh, count, covered; n = *nxy; nr = *nrads; m = *ngrid; xmin = *x0; ymin = *y0; xmax = *x1; ymax = *y1; /* run through radii */ for(l = 0; l < nr; l++) { r = rad[l]; if(r == 0.0) { answer[l] = 0.0; } else if (n == 0) { answer[l]= M_PI * r * r; } else { r2 = r * r; dx = dy = 2 * r / (m-1); count = 0; /* run through grid points in disc intersected with box */ xleft = (xmin > -r) ? xmin : -r; xright = (xmax < r) ? xmax : r; ileft = ceil(xleft/dx); iright = floor(xright/dx); if(ileft <= iright) { for(i = ileft, xg = ileft * dx; i <= iright; i++, xg += dx) { a2 = r2 - xg * xg; a = (a2 > 0) ? sqrt(a2): 0.0; yhigh = (ymax < a) ? ymax: a; ylow = (ymin > -a) ? ymin: -a; mhigh = floor(yhigh/dy); mlow = ceil(ylow/dy); if(mlow <= mhigh) { for(j = mlow, yg = mlow * dy; j <= mhigh; j++, yg += dy) { #ifdef DEBUG Rprintf("\n\n (xg,yg) = (%lf, %lf)\n", xg, yg); #endif /* run through data points seeking one close to (xy, yg) */ covered = 0; for(k = 0; k < n; k++) { #ifdef DEBUG Rprintf("(x[%d],y[%d]) = (%lf,%lf)\n", k, k, x[k], y[k]); #endif xdif = x[k] - xg; b2 = r2 - xdif * xdif; if(b2 > 0) { ydif = y[k] - yg; if(b2 - ydif * ydif > 0) { #ifdef DEBUG Rprintf("(x[%d], y[%d]) = (%lf, %lf) covers!\n", k, k, x[k], y[k]); #endif covered = 1; break; } } } /* end of loop over data points */ if(covered == 0) { ++count; #ifdef DEBUG Rprintf("Not covered; incrementing count\n"); #endif } } } } } /* end of loop over grid points */ #ifdef DEBUG Rprintf("Count = %d\n", count); #endif /* calculate area for this value of r*/ answer[l] = ((double) count) * dx * dy; } /* end of if(r==0).. else {...} */ } /* end of loop over r values */ } spatstat/src/getcif.c0000755000176000001440000000323012333041761014342 0ustar ripleyusers#include #include "methas.h" void fexitc(const char *msg); extern Cifns AreaIntCifns, BadGeyCifns, DgsCifns, DiggraCifns, FikselCifns, GeyerCifns, HardcoreCifns, LennardCifns, LookupCifns, SoftcoreCifns, StraussCifns, StraussHardCifns, MultiStraussCifns, MultiStraussHardCifns, MultiHardCifns, TripletsCifns; Cifns NullCifns = NULL_CIFNS; typedef struct CifPair { char *name; Cifns *p; } CifPair; CifPair CifTable[] = { {"areaint", &AreaIntCifns}, {"badgey", &BadGeyCifns}, {"dgs", &DgsCifns}, {"diggra", &DiggraCifns}, {"geyer", &GeyerCifns}, {"fiksel", &FikselCifns}, {"hardcore", &HardcoreCifns}, {"lookup", &LookupCifns}, {"lennard", &LennardCifns}, {"multihard", &MultiHardCifns}, {"sftcr", &SoftcoreCifns}, {"strauss", &StraussCifns}, {"straush", &StraussHardCifns}, {"straussm", &MultiStraussCifns}, {"straushm", &MultiStraussHardCifns}, {"triplets", &TripletsCifns}, {(char *) NULL, (Cifns *) NULL} }; Cifns getcif(cifname) char *cifname; { int i; CifPair cp; for(i = 0; CifTable[i].name; i++) { cp = CifTable[i]; if(strcmp(cifname, cp.name) == 0) return(*(cp.p)); } fexitc("Unrecognised cif name; bailing out.\n"); /* control never passes to here, but compilers don't know that */ return(NullCifns); } /* R interface function, to check directly whether cif is recognised */ void knownCif(cifname, answer) char** cifname; int* answer; { int i; CifPair cp; for(i = 0; CifTable[i].name; i++) { cp = CifTable[i]; if(strcmp(*cifname, cp.name) == 0) { *answer = 1; return; } } *answer = 0; return; } spatstat/src/straussm.c0000755000176000001440000001300312333041761014761 0ustar ripleyusers#include #include #include "methas.h" #include "dist2.h" /* for debugging code, include #define DEBUG 1 */ /* Conditional intensity computation for Multitype Strauss process */ /* NOTE: types (marks) are numbered from 0 to ntypes-1 */ /* Storage of parameters and precomputed/auxiliary data */ typedef struct MultiStrauss { int ntypes; double *gamma; /* gamma[i,j] = gamma[i+ntypes*j] for i,j = 0... ntypes-1 */ double *rad; /* rad[i,j] = rad[j+ntypes*i] for i,j = 0... ntypes-1 */ double *rad2; /* squared radii */ double range2; /* square of interaction range */ double *loggamma; /* logs of gamma[i,j] */ double *period; int *hard; /* hard[i,j] = 1 if gamma[i,j] ~~ 0 */ int *kount; /* space for kounting pairs of each type */ int per; } MultiStrauss; /* initialiser function */ Cdata *straussminit(state, model, algo) State state; Model model; Algor algo; { int i, j, ntypes, n2, hard; double g, r, r2, logg, range2; MultiStrauss *multistrauss; multistrauss = (MultiStrauss *) R_alloc(1, sizeof(MultiStrauss)); multistrauss->ntypes = ntypes = model.ntypes; n2 = ntypes * ntypes; #ifdef DEBUG Rprintf("initialising space for %d types\n", ntypes); #endif /* Allocate space for parameters */ multistrauss->gamma = (double *) R_alloc((size_t) n2, sizeof(double)); multistrauss->rad = (double *) R_alloc((size_t) n2, sizeof(double)); /* Allocate space for transformed parameters */ multistrauss->rad2 = (double *) R_alloc((size_t) n2, sizeof(double)); multistrauss->loggamma = (double *) R_alloc((size_t) n2, sizeof(double)); multistrauss->hard = (int *) R_alloc((size_t) n2, sizeof(int)); /* Allocate scratch space for counts of each pair of types */ multistrauss->kount = (int *) R_alloc((size_t) n2, sizeof(int)); /* Copy and process model parameters*/ /* ipar will contain n^2 gamma values followed by n^2 values of r */ range2 = 0.0; for(i = 0; i < ntypes; i++) { for(j = 0; j < ntypes; j++) { g = model.ipar[i + j*ntypes]; r = model.ipar[n2 + i + j*ntypes]; r2 = r * r; hard = (g < DOUBLE_EPS); logg = (hard) ? 0 : log(g); MAT(multistrauss->gamma, i, j, ntypes) = g; MAT(multistrauss->rad, i, j, ntypes) = r; MAT(multistrauss->hard, i, j, ntypes) = hard; MAT(multistrauss->loggamma, i, j, ntypes) = logg; MAT(multistrauss->rad2, i, j, ntypes) = r2; if(r2 > range2) range2 = r2; } } multistrauss->range2 = range2; /* periodic boundary conditions? */ multistrauss->period = model.period; multistrauss->per = (model.period[0] > 0.0); #ifdef DEBUG Rprintf("end initialiser\n"); #endif return((Cdata *) multistrauss); } /* conditional intensity evaluator */ double straussmcif(prop, state, cdata) Propo prop; State state; Cdata *cdata; { int npts, ntypes, kount, ix, ixp1, j, mrk, mrkj, m1, m2; int *marks; double *x, *y; double u, v, lg; double d2, cifval; double range2; double *period; MultiStrauss *multistrauss; DECLARE_CLOSE_D2_VARS; multistrauss = (MultiStrauss *) cdata; range2 = multistrauss->range2; period = multistrauss->period; u = prop.u; v = prop.v; mrk = prop.mrk; ix = prop.ix; x = state.x; y = state.y; marks = state.marks; npts = state.npts; #ifdef DEBUG Rprintf("computing cif: u=%lf, v=%lf, mrk=%d\n", u, v, mrk); #endif cifval = 1.0; if(npts == 0) return(cifval); ntypes = multistrauss->ntypes; #ifdef DEBUG Rprintf("initialising pair counts\n"); #endif /* initialise pair counts */ for(m1 = 0; m1 < ntypes; m1++) for(m2 = 0; m2 < ntypes; m2++) MAT(multistrauss->kount, m1, m2, ntypes) = 0; /* compile pair counts */ #ifdef DEBUG Rprintf("compiling pair counts\n"); #endif ixp1 = ix+1; /* If ix = NONE = -1, then ixp1 = 0 is correct */ if(multistrauss->per) { /* periodic distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_PERIODIC_D2(u,v,x[j],y[j],period,range2,d2)) { mrkj = marks[j]; if(d2 < MAT(multistrauss->rad2, mrk, mrkj, ntypes)) MAT(multistrauss->kount, mrk, mrkj, ntypes)++; } } } if(ixp1 < npts) { for(j=ixp1; jrad2, mrk, mrkj, ntypes)) MAT(multistrauss->kount, mrk, mrkj, ntypes)++; } } } } else { /* Euclidean distance */ if(ix > 0) { for(j=0; j < ix; j++) { if(CLOSE_D2(u, v, x[j], y[j], range2, d2)) { mrkj = marks[j]; if(d2 < MAT(multistrauss->rad2, mrk, mrkj, ntypes)) MAT(multistrauss->kount, mrk, mrkj, ntypes)++; } } } if(ixp1 < npts) { for(j=ixp1; jrad2, mrk, mrkj, ntypes)) MAT(multistrauss->kount, mrk, mrkj, ntypes)++; } } } } #ifdef DEBUG Rprintf("multiplying cif factors\n"); #endif /* multiply cif value by pair potential */ for(m1 = 0; m1 < ntypes; m1++) { for(m2 = 0; m2 < ntypes; m2++) { kount = MAT(multistrauss->kount, m1, m2, ntypes); if(MAT(multistrauss->hard, m1, m2, ntypes)) { if(kount > 0) { cifval = 0.0; return(cifval); } } else { lg = MAT(multistrauss->loggamma, m1, m2, ntypes); cifval *= exp(lg * kount); } } } #ifdef DEBUG Rprintf("returning positive cif\n"); #endif return cifval; } Cifns MultiStraussCifns = { &straussminit, &straussmcif, (updafunptr) NULL, YES}; spatstat/NAMESPACE0000644000176000001440000020257212333041502013365 0ustar ripleyusers# spatstat NAMESPACE file import(stats,graphics,grDevices,utils) import(polyclip) importFrom(deldir,deldir,duplicatedxy,tile.list) importFrom(abind,abind) importFrom(tensor,tensor) importFrom(mgcv,gam,gam.control,anova.gam,formula.gam,predict.gam,print.gam,summary.gam,vcov.gam,s) # Do not edit the following. # It is generated automatically. # .................................................. # Automatically-generated list of entry points # .................................................. useDynLib(spatstat, "acrdenspt", "acrsmoopt", "adenspt", "areaBdif", "areadifs", "asmoopt", "awtcrdenspt", "awtcrsmoopt", "awtdenspt", "awtsmoopt", "Cbiform", "Cclosepaircounts", "Ccountends", "Ccrossdist", "Ccrosspaircounts", "CcrossPdist", "Cidw", "Cmatchxy", "cocoGraph", "cocoImage", "Corput", "Cpairdist", "CpairPdist", "Cquadform", "crdenspt", "crosscount", "crsmoopt", "Csumouter", "Csumsymouter", "Cwsumouter", "Cwsumsymouter", "Cxypolyselfint", "Cxysegint", "CxysegXint", "D3crossdist", "D3crossPdist", "D3pairdist", "D3pairPdist", "Ddist2dpath", "delta2area", "denspt", "digberJ", "dinfty_R", "discareapoly", "distmapbin", "dppll", "drevcumsum", "dwpure", "Ediggatsti", "Ediggra", "Efiksel", "Egeyer", "exact_dt_R", "Fclosepairs", "Fcrosspairs", "graphVees", "Idist2dpath", "idwloo", "inxyp", "irevcumsum", "KborderD", "KborderI", "knnd3D", "knndMD", "knndsort", "knnGinterface", "knnsort", "knnw3D", "knnwMD", "knnX3Dinterface", "knnXinterface", "KnoneD", "KnoneI", "knownCif", "KrectDbl", "KrectInt", "KrectWtd", "Kwborder", "Kwnone", "lincrossdist", "linndcross", "linndxcross", "linnndist", "linnnwhich", "linpairdist", "locpcfx", "locprod", "locWpcfx", "locxprod", "maxnnd2", "minnnd2", "nnd3D", "nndist2segs", "nndistsort", "nndMD", "nnGinterface", "nnw3D", "nnwhichsort", "nnwMD", "nnX3Dinterface", "nnXinterface", "paircount", "PerfectDGS", "PerfectDiggleGratton", "PerfectHardcore", "PerfectStrauss", "PerfectStraussHard", "poly2imA", "poly2imI", "prdist2segs", "ps_exact_dt_R", "RcallF3", "RcallF3cen", "RcallG3", "RcallG3cen", "RcallK3", "Rcallpcf3", "ripleybox", "ripleypoly", "scantrans", "seg2pixI", "seg2pixL", "smoopt", "triDgraph", "trigraf", "trigrafS", "triograph", "trioxgraph", "VcloseIJpairs", "Vclosepairs", "Vclosethresh", "VcrossIJpairs", "Vcrosspairs", "wtcrdenspt", "wtcrsmoopt", "wtdenspt", "wtsmoopt", "xmethas", "xypsi", "xysegint", "xysegXint", "xysi", "xysiANY", "xysxi") # .................................................. # Automatically-generated list of documented objects # .................................................. export("acedist.noshow") export("acedist.show") export("active.interactions") export("adaptive.density") export("add.texture") export("addvar") export("adjustthinrange") export("affine") export("affine.im") export("affine.layered") export("affine.linnet") export("affine.lpp") export("affine.owin") export("affine.ppp") export("affine.psp") export("affine.tess") export("affinexy") export("affinexypolygon") export("allstats") export("alltypes") export("angles.psp") export("anova.lppm") export("anova.mppm") export("anova.ppm") export("anova.slrm") export("anycrossing.psp") export("append.psp") export("apply23sum") export("applynbd") export("applytolayers") export("areadelta2") export("areaGain") export("areaGain.diri") export("areaGain.grid") export("AreaInter") export("areaLoss") export("areaLoss.diri") export("areaLoss.grid") export("area.owin") export("area.xypolygon") export("as2vector") export("as.array.im") export("as.box3") export("as.breakpts") export("as.character.units") export("as.data.frame.bw.optim") export("as.data.frame.fv") export("as.data.frame.hyperframe") export("as.data.frame.im") export("as.data.frame.ppp") export("as.data.frame.ppx") export("as.data.frame.psp") export("as.function.fv") export("as.function.linfun") export("as.function.rhohat") export("as.fv") export("as.fv.bw.optim") export("as.fv.data.frame") export("as.fv.fasp") export("as.fv.fv") export("as.fv.kppm") export("as.fv.matrix") export("as.fv.minconfit") export("as.hyperframe") export("as.hyperframe.data.frame") export("as.hyperframe.default") export("as.hyperframe.hyperframe") export("as.hyperframe.listof") export("as.hyperframe.ppx") export("as.im") export("as.im.default") export("as.im.distfun") export("as.im.function") export("as.im.im") export("as.im.leverage.ppm") export("as.im.linim") export("as.im.matrix") export("as.im.nnfun") export("as.im.owin") export("as.im.ppp") export("as.im.scan.test") export("as.im.Smoothfun") export("as.im.tess") export("as.interact") export("as.interact.fii") export("as.interact.interact") export("as.interact.ppm") export("as.linim") export("as.linim.default") export("as.linim.linfun") export("as.linim.linim") export("as.linnet") export("as.linnet.linfun") export("as.linnet.linnet") export("as.linnet.lpp") export("as.linnet.lppm") export("as.list.hyperframe") export("as.listof") export("as.lpp") export("as.mask") export("as.mask.psp") export("as.matrix.im") export("as.matrix.owin") export("as.matrix.ppx") export("as.owin") export("as.owin.boxx") export("as.owin.data.frame") export("as.owin.default") export("as.owin.distfun") export("as.owin.funxy") export("as.owin.im") export("as.owin.influence.ppm") export("as.owin.kppm") export("as.owin.layered") export("as.owin.leverage.ppm") export("as.owin.linfun") export("as.owin.linnet") export("as.owin.lpp") export("as.owin.lppm") export("as.owin.msr") export("as.owin.nnfun") export("as.owin.owin") export("as.owin.ppm") export("as.owin.ppp") export("as.owin.psp") export("as.owin.quad") export("as.owin.quadratcount") export("as.owin.quadrattest") export("as.owin.rmhmodel") export("as.owin.tess") export("as.polygonal") export("as.ppm") export("as.ppm.kppm") export("as.ppm.ppm") export("as.ppm.profilepl") export("as.ppp") export("as.ppp.data.frame") export("as.ppp.default") export("as.ppp.influence.ppm") export("as.ppp.lpp") export("as.ppp.matrix") export("as.ppp.ppp") export("as.ppp.psp") export("as.ppp.quad") export("as.psp") export("as.psp.data.frame") export("as.psp.default") export("as.psp.linnet") export("as.psp.lpp") export("as.psp.matrix") export("as.psp.owin") export("as.psp.psp") export("as.rectangle") export("assemble.plot.objects") export("as.tess") export("as.tess.im") export("as.tess.list") export("as.tess.owin") export("as.tess.quadratcount") export("as.tess.quadrattest") export("as.tess.tess") export("as.units") export("AsymmDistance.psp") export("augment.msr") export("BadGey") export("badprobability") export("bbEngine") export("bdist.pixels") export("bdist.points") export("bdist.tiles") export("bdrylength.xypolygon") export("bdry.mask") export("beachcolourmap") export("beachcolours") export("beginner") export("bermantest") export("bermantestEngine") export("bermantest.lpp") export("bermantest.lppm") export("bermantest.ppm") export("bermantest.ppp") export("bilinearform") export("bind.fv") export("bind.ratfv") export("blankcoefnames") export("blockdiagarray") export("blockdiagmatrix") export("blur") export("border") export("bounding.box") export("boundingbox") export("bounding.box3") export("boundingbox.default") export("boundingbox.im") export("boundingbox.owin") export("boundingbox.ppp") export("bounding.box.xy") export("box3") export("boxx") export("break.holes") export("breakpts") export("breakpts.from.r") export("bt.frame") export("bw.diggle") export("bw.frac") export("bw.optim") export("bw.ppl") export("bw.relrisk") export("bw.scott") export("bw.smoothppp") export("bw.stoyan") export("by.im") export("by.ppp") export("cannot.update") export("cartesian") export("cat.factor") export("cauchy.estK") export("cauchy.estpcf") export("cbind.fv") export("cbind.hyperframe") export("cellmiddles") export("censtimeCDFest") export("centroid.owin") export("change.default.expand") export("check.1.integer") export("check.1.real") export("checkfields") export("check.finite") export("check.hist.lengths") export("check.named.list") export("check.named.thing") export("check.named.vector") export("check.nmatrix") export("check.nvector") export("check.range") export("check.testfun") export("chop.tess") export("circumradius") export("clarkevans") export("clarkevansCalc") export("clarkevans.test") export("clear.simplepanel") export("clf.test") export("clickbox") export("clickjoin") export("clickpoly") export("clickppp") export("clip.infline") export("clippoly.psp") export("clip.psp") export("cliprect.psp") export("closepaircounts") export("closepairs") export("closethresh") export("closing") export("closing.owin") export("closing.ppp") export("closing.psp") export("clusterset") export("cobble.xy") export("codetime") export("coef.fii") export("coef.kppm") export("coef.lppm") export("coef.mppm") export("coef.ppm") export("coef.slrm") export("coef.summary.fii") export("coef.summary.ppm") export("coerce.marks.numeric") export("col2hex") export("collapse.fv") export("colourmap") export("commasep") export("commonGrid") export("compareFit") export("compatible") export("compatible.fasp") export("compatible.fv") export("compatible.im") export("compatible.rat") export("compatible.units") export("compileCDF") export("compileK") export("compilepcf") export("complaining") export("complementarycolour") export("complement.owin") export("concatxy") export("Concom") export("conform.imagelist") export("conform.ratfv") export("connected") export("connected.im") export("connected.owin") export("connected.ppp") export("conspire") export("contour.funxy") export("contour.im") export("contour.listof") export("contour.objsurf") export("convexhull") export("convexhull.xy") export("convolve.im") export("coords<-") export("coords") export("coords<-.ppp") export("coords.ppp") export("coords<-.ppx") export("coords.ppx") export("corners") export("countends") export("countingweights") export("crossdist") export("crossdist.default") export("crossdist.lpp") export("crossdist.pp3") export("crossdist.ppp") export("crossdist.ppx") export("crossdist.psp") export("crossing.psp") export("crosspaircounts") export("crosspairquad") export("crosspairs") export("cut.im") export("cut.ppp") export("damaged.ppm") export("datagen.rpoisppOnLines") export("datagen.runifpointOnLines") export("datagen.runifpoisppOnLines") export("data.mppm") export("data.ppm") export("dclf.progress") export("dclf.test") export("default.clipwindow") export("default.dummy") export("default.expand") export("default.ntile") export("default.n.tiling") export("default.rmhcontrol") export("delaunay") export("delaunay.distance") export("deltametric") export("deltasuffstat") export("densitycrossEngine") export("densitypointsEngine") export("density.ppp") export("density.psp") export("density.splitppp") export("deriv.fv") export("dfbetas.ppm") export("dflt.redraw") export("diagnose.ppm") export("diagnose.ppm.engine") export("diameter") export("diameter.box3") export("diameter.boxx") export("diameter.linnet") export("diameter.owin") export("DiggleGatesStibbard") export("DiggleGratton") export("digital.volume") export("dilated.areas") export("dilate.owin") export("dilation") export("dilation.owin") export("dilation.ppp") export("dilation.psp") export("dim.fasp") export("dim.hyperframe") export("dim.im") export("dim.msr") export("dimnames<-.fasp") export("dimnames.fasp") export("dimnames.msr") export("dirichlet") export("dirichlet.weights") export("disc") export("discpartarea") export("discretise") export("dist2dpath") export("distcdf") export("distfun") export("distfun.lpp") export("distfun.owin") export("distfun.ppp") export("distfun.psp") export("distmap") export("distmap.owin") export("distmap.ppp") export("distmap.psp") export("distpl") export("distppl") export("distppll") export("distppllmin") export("distributecbind") export("divisors") export("dknn") export("dmixpois") export("do.as.im") export("do.call.matched") export("do.call.plotfun") export("do.istat") export("doMultiStraussHard") export("dotexpr.to.call") export("dropifsingle") export("dummify") export("dummy.ppm") export("duplicated.ppp") export("duplicated.ppx") export("edge.Ripley") export("edges") export("edges2triangles") export("edges2vees") export("edge.Trans") export("eem") export("effectfun") export("ellipse") export("Emark") export("empty.space") export("emptywindow") export("endpoints.psp") export("ensure2vector") export("ensure3Darray") export("envelope") export("envelopeEngine") export("envelope.envelope") export("envelope.kppm") export("envelope.lpp") export("envelope.lppm") export("envelope.matrix") export("envelope.pp3") export("envelope.ppm") export("envelope.ppp") export("envelopeProgressData") export("envelopeTest") export("equalpairs") export("equalpairs.quad") export("equalsfun.quad") export("equals.quad") export("eratosthenes") export("eroded.areas") export("eroded.volumes") export("eroded.volumes.box3") export("eroded.volumes.boxx") export("erodemask") export("erode.owin") export("erosion") export("erosion.owin") export("erosion.ppp") export("erosion.psp") export("evalCovar") export("evalCovariate") export("evalCovar.lppm") export("evalCovar.ppm") export("eval.fasp") export("eval.fv") export("eval.hyper") export("eval.im") export("evalInteraction") export("evalInterEngine") export("eval.linim") export("evalPairPotential") export("even.breaks.owin") export("evenly.spaced") export("ewcdf") export("exactdt") export("exactMPLEstrauss") export("exactPdt") export("expand.owin") export("expand.polynom") export("expandwinPerfect") export("explain.ifnot") export("extractAIC.lppm") export("extractAIC.ppm") export("extractAIC.slrm") export("extractAtomicQtests") export("f3Cengine") export("f3engine") export("F3est") export("fakecallstring") export("fakemaintitle") export("[.fasp") export("fasp") export("fave.order") export("Fest") export("fii") export("Fiksel") export("fillNA") export("findbestlegendpos") export("findcbind") export("findCovariate") export("Finhom") export("firstfactor") export("fitin") export("fitin.ppm") export("fitted.kppm") export("fitted.mppm") export("fitted.ppm") export("fitted.slrm") export("flatfname") export("flipxy") export("flipxy.im") export("flipxy.layered") export("flipxy.owin") export("flipxypolygon") export("flipxy.ppp") export("flipxy.psp") export("forbid.logi") export("forbidNA") export("FormatFaspFormulae") export("formula<-") export("formula<-.fv") export("formula.fv") export("formula.kppm") export("formula.lppm") export("formula.ppm") export("formula.slrm") export("fryplot") export("frypoints") export("funxy") export("[.fv") export("fv") export("fvlabelmap") export("fvlabels<-") export("fvlabels") export("fvlegend") export("fvnames<-") export("fvnames") export("g3Cengine") export("g3engine") export("G3est") export("gauss.hermite") export("Gcom") export("Gcross") export("Gdot") export("Gest") export("getdataname") export("getdataobjects") export("getfields") export("getglmdata") export("getglmfit") export("getglmsubset") export("getlambda.lpp") export("getlastshift") export("getppmdatasubset") export("getppmOriginalCovariates") export("getSpatstatVariable") export("getSumFun") export("Geyer") export("geyercounts") export("geyerdelta2") export("Gfox") export("Ginhom") export("GLMpredict") export("Gmulti") export("good.correction.K") export("good.names") export("greatest.common.divisor") export("Gres") export("grid1index") export("gridcenters") export("gridcentres") export("gridindex") export("gridweights") export("grow.mask") export("grow.rectangle") export("grow.simplepanel") export("gsubdot") export("Halton") export("Hammersley") export("handle.r.b.args") export("handle.rshift.args") export("Hardcore") export("harmonic") export("harmonise.im") export("harmonize.im") export("has.offset") export("has.offset.term") export("HermiteCoefs") export("Hest") export("hexgrid") export("hextess") export("hist.im") export("ho.engine") export("hsvim") export("hsvNA") export("Hybrid") export("hybrid.family") export("[<-.hyperframe") export("[.hyperframe") export("$<-.hyperframe") export("$.hyperframe") export("hyperframe") export("identical.formulae") export("IdenticalRows") export("identify.ppp") export("identify.psp") export("idorempty") export("idw") export("Iest") export("ifelse0NA") export("ifelse1NA") export("ifelseAB") export("ifelseAX") export("ifelseNegPos") export("ifelseXB") export("ifelseXY") export("illegal.iformula") export("[<-.im") export("[.im") export("im") export("image.im") export("image.listof") export("image.objsurf") export("im.apply") export("imcov") export("implemented.for.K") export("impliedcoefficients") export("impliedpresence") export("incircle") export("infline") export("[.influence.ppm") export("influence.ppm") export("inforder.family") export("inpoint") export("inside.owin") export("inside.range") export("inside.triangle") export("inside.xypolygon") export("instantiate.interact") export("integral.im") export("integral.msr") export("intensity") export("intensity.lpp") export("intensity.ppm") export("intensity.ppp") export("intensity.quadratcount") export("intensity.splitppp") export("interp.colourmap") export("interp.im") export("intersect.owin") export("intersect.ranges") export("intersect.tess") export("intX.owin") export("intX.xypolygon") export("intY.owin") export("intY.xypolygon") export("invoke.symbolmap") export("iplot") export("iplot.default") export("iplot.layered") export("iplot.ppp") export("ippm") export("is.atomicQtest") export("is.cadlag") export("is.convex") export("is.data") export("is.empty") export("is.empty.default") export("is.empty.owin") export("is.empty.ppp") export("is.empty.psp") export("is.expandable") export("is.expandable.ppm") export("is.expandable.rmhmodel") export("is.fv") export("is.hole.xypolygon") export("is.hybrid") export("is.hybrid.interact") export("is.hybrid.ppm") export("is.hyperframe") export("is.im") export("is.infline") export("is.interact") export("is.kppm") export("is.lpp") export("is.lppm") export("is.marked") export("is.marked.default") export("is.marked.lppm") export("is.marked.ppm") export("is.marked.ppp") export("is.marked.psp") export("is.marked.quad") export("is.mask") export("is.mppm") export("is.multitype") export("is.multitype.default") export("is.multitype.lppm") export("is.multitype.ppm") export("is.multitype.ppp") export("is.multitype.quad") export("is.owin") export("is.parseable") export("is.poisson") export("is.poisson.interact") export("is.poisson.kppm") export("is.poisson.lppm") export("is.poisson.mppm") export("is.poisson.ppm") export("is.poisson.rmhmodel") export("is.poisson.slrm") export("is.polygonal") export("is.pp3") export("is.ppm") export("is.ppp") export("is.ppx") export("is.prime") export("is.psp") export("is.rectangle") export("is.slrm") export("is.stationary") export("is.stationary.kppm") export("is.stationary.lppm") export("is.stationary.ppm") export("is.stationary.rmhmodel") export("is.stationary.slrm") export("is.subset.owin") export("istat") export("is.tess") export("Jcross") export("Jdot") export("Jest") export("Jfox") export("Jinhom") export("Jmulti") export("k3engine") export("K3est") export("kaplan.meier") export("Kborder.engine") export("Kcom") export("Kcross") export("Kcross.inhom") export("Kdot") export("Kdot.inhom") export("Kest") export("Kest.fft") export("killinteraction") export("Kinhom") export("Kmeasure") export("Kmodel") export("Kmodel.kppm") export("Kmodel.ppm") export("km.rs") export("km.rs.opt") export("Kmulti") export("Kmulti.inhom") export("Knone.engine") export("Kount") export("Kpcf.kppm") export("kppm") export("kppmComLik") export("kppm.formula") export("kppmMinCon") export("kppm.ppp") export("kppm.quad") export("Krect.engine") export("Kres") export("Kscaled") export("ksmooth.ppp") export("kstest") export("kstest.lpp") export("kstest.lppm") export("kstest.mppm") export("ks.test.ppm") export("kstest.ppm") export("kstest.ppp") export("kstest.slrm") export("Kwtsum") export("labels.kppm") export("labels.ppm") export("labels.slrm") export("LambertW") export("latest.news") export("[.layered") export("layered") export("layerplotargs<-") export("layerplotargs") export("layout.boxes") export("Lcross") export("Lcross.inhom") export("Ldot") export("Ldot.inhom") export("least.common.multiple") export("lengths.psp") export("LennardJones") export("Lest") export("levelset") export("levels<-.im") export("levels.im") export("leverage") export("[.leverage.ppm") export("leverage.ppm") export("lgcp.estK") export("lgcp.estpcf") export("lhs.of.formula") export("lineardisc") export("linearK") export("linearKcross") export("linearKcross.inhom") export("linearKdot") export("linearKdot.inhom") export("linearKengine") export("linearKinhom") export("linearKmulti") export("linearKmultiEngine") export("linearKmulti.inhom") export("linearmarkconnect") export("linearmarkequal") export("linearpcf") export("linearpcfcross") export("linearpcfcross.inhom") export("linearpcfdot") export("linearpcfdot.inhom") export("linearpcfengine") export("linearpcfinhom") export("linearpcfmulti") export("linearPCFmultiEngine") export("linearpcfmulti.inhom") export("linequad") export("linfun") export("Linhom") export("linim") export("[.linnet") export("linnet") export("[<-.listof") export("listof") export("local2lpp") export("localK") export("localKengine") export("localKinhom") export("localL") export("localLinhom") export("localpcf") export("localpcfengine") export("localpcfinhom") export("[.localpcfmatrix") export("localpcfmatrix") export("logi.dummy") export("logi.engine") export("logLik.lppm") export("logLik.mppm") export("logLik.ppm") export("logLik.slrm") export("lohboot") export("lookup.im") export("[.lpp") export("lpp") export("lppm") export("lppm.formula") export("lppm.lpp") export("Lscaled") export("lty2char") export("lurking") export("lut") export("mad.progress") export("mad.test") export("majorminorversion") export("make.even.breaks") export("makefvlabel") export("make.parseable") export("makeunits") export("markappend") export("markappendop") export("markcbind") export("markconnect") export("markcorr") export("markcorrint") export("markformat") export("markformat.default") export("markformat.ppp") export("markformat.ppx") export("markformat.psp") export("markmean") export("markreplicateop") export("marks<-") export("marks") export("mark.scale.default") export("marks.default") export("marks<-.lpp") export("markspace.integral") export("marks<-.ppp") export("marks.ppp") export("marks<-.ppx") export("marks.ppx") export("marks<-.psp") export("marks.psp") export("marks.quad") export("markstat") export("marksubset") export("marksubsetop") export("marktable") export("markvar") export("markvario") export("mask2df") export("matchingdist") export("matclust.estK") export("matclust.estpcf") export("matcolall") export("matcolany") export("matcolsum") export("matrixsample") export("matrowall") export("matrowany") export("matrowsum") export("maxflow") export("max.im") export("maxnndist") export("mctest.progress") export("mean.im") export("meanlistfv") export("meanX.owin") export("meanY.owin") export("median.im") export("midpoints.psp") export("mincontrast") export("min.im") export("minnndist") export("miplot") export("model.covariates") export("model.depends") export("model.frame.kppm") export("model.frame.lppm") export("model.frame.ppm") export("model.images") export("model.images.kppm") export("model.images.lppm") export("model.images.ppm") export("model.images.slrm") export("model.is.additive") export("model.matrix.kppm") export("model.matrix.lppm") export("model.matrix.ppm") export("model.matrix.slrm") export("model.se.image") export("mpl") export("mpl.engine") export("mpl.get.covariates") export("mpl.prepare") export("mppm") export("[.msr") export("msr") export("MultiHard") export("MultiPair.checkmatrix") export("multiplicity") export("multiplicity.data.frame") export("multiplicity.default") export("multiplicityNumeric") export("multiplicity.ppp") export("multiplicity.ppx") export("multiply.only.finite.entries") export("MultiStrauss") export("MultiStraussHard") export("na.handle.im") export("names<-.hyperframe") export("names.hyperframe") export("nearest.neighbour") export("nearest.pixel") export("nearest.raster.point") export("nearestsegment") export("nearest.valid.pixel") export("newstyle.coeff.handling") export("niceround") export("nnclean") export("nncleanEngine") export("nnclean.pp3") export("nnclean.ppp") export("nncorr") export("nncross") export("nncross.default") export("nncross.lpp") export("nncross.pp3") export("nncross.ppp") export("nndcumfun") export("nndensity") export("nndensity.ppp") export("nndist") export("nndist.default") export("nndist.lpp") export("nndist.pp3") export("nndist.ppp") export("nndist.ppx") export("nndist.psp") export("nnfun") export("nnfun.lpp") export("nnfun.ppp") export("nnfun.psp") export("nnmap") export("nnmark") export("nnmean") export("nnvario") export("nnwhich") export("nnwhich.default") export("nnwhich.lpp") export("nnwhich.pp3") export("nnwhich.ppp") export("nnwhich.ppx") export("nobjects") export("nobjects.ppp") export("nobjects.ppx") export("nobjects.psp") export("nobs.lppm") export("nobs.ppm") export("no.trend.ppm") export("npfun") export("npoints") export("npoints.pp3") export("npoints.ppp") export("npoints.ppx") export("n.quad") export("nsegments") export("nsegments.psp") export("numalign") export("numeric.columns") export("nzpaste") export("objsurf") export("objsurfEngine") export("objsurf.kppm") export("objsurf.minconfit") export("offsetsinformula") export("onecolumn") export("opening") export("opening.owin") export("opening.ppp") export("opening.psp") export("optimStatus") export("Ord") export("ord.family") export("ordinal") export("OrdThresh") export("outdated.interact") export("overlap.owin") export("overlap.trapezium") export("overlap.xypolygon") export("oversize.quad") export("[.owin") export("owin") export("owinpoly2mask") export("owinpolycheck") export("pairdist") export("pairdist.default") export("pairdist.lpp") export("pairdist.pp3") export("pairdist.ppp") export("pairdist.ppx") export("pairdist.psp") export("PairPiece") export("pairsat.family") export("pairs.im") export("pairs.listof") export("Pairwise") export("pairwise.family") export("paletteindex") export("paletteindex") export("param.quad") export("parbreak") export("paren") export("parres") export("partialModelMatrix") export("passthrough") export("paste.expr") export("pcf") export("pcf3engine") export("pcf3est") export("pcfcross") export("pcfcross.inhom") export("pcfdot") export("pcfdot.inhom") export("pcf.fasp") export("pcf.fv") export("pcfinhom") export("pcfmodel") export("pcfmodel.kppm") export("pcfmodel.ppm") export("pcfmulti") export("pcfmulti.inhom") export("pcf.ppp") export("perimeter") export("periodify") export("periodify.owin") export("periodify.ppp") export("periodify.psp") export("persp.funxy") export("persp.im") export("persp.objsurf") export("pickoption") export("pixelcentres") export("pixellate") export("pixellate.owin") export("pixellate.ppp") export("pixellate.psp") export("pixelquad") export("pknn") export("plan.legend.layout") export("plot.addvar") export("plot.barplotdata") export("plot.bermantest") export("plot.bw.frac") export("plot.bw.optim") export("plot.colourmap") export("plot.diagppm") export("plot.envelope") export("ploterodeimage") export("ploterodewin") export("plot.fasp") export("plot.fii") export("plot.funxy") export("plot.fv") export("plot.hyperframe") export("plot.im") export("plot.infline") export("plot.influence.ppm") export("plot.kppm") export("plot.kstest") export("plot.layered") export("plot.leverage.ppm") export("plot.linfun") export("plot.linim") export("plot.linnet") export("plot.listof") export("plot.localpcfmatrix") export("plot.lpp") export("plot.lppm") export("plot.minconfit") export("plot.mppm") export("plot.msr") export("plot.objsurf") export("plot.owin") export("plot.parres") export("plot.plotpairsim") export("plot.plotppm") export("plot.pp3") export("plot.ppm") export("plot.ppp") export("plot.pppmatching") export("plot.ppx") export("plot.profilepl") export("plot.psp") export("plot.qqppm") export("plot.quad") export("plot.quadratcount") export("plot.quadrattest") export("plot.rho2hat") export("plot.rhohat") export("plot.scan.test") export("plot.slrm") export("plot.splitppp") export("plot.symbolmap") export("plot.tess") export("plot.texturemap") export("pmixpois") export("pointgrid") export("pointsOnLines") export("Poisson") export("polynom") export("pool") export("pool.envelope") export("pool.fasp") export("pool.quadrattest") export("pool.rat") export("[.pp3") export("pp3") export("ppllengine") export("ppm") export("ppmCovariates") export("ppm.default") export("ppmDerivatives") export("ppm.formula") export("ppmInfluence") export("ppm.ppp") export("ppm.quad") export("[<-.ppp") export("[.ppp") export("ppp") export("pppdist") export("pppdist.mat") export("pppdist.prohorov") export("pppmatching") export("ppsubset") export("[.ppx") export("ppx") export("prange") export("predict.kppm") export("predict.lppm") export("predict.mppm") export("predict.ppm") export("predict.rhohat") export("predict.slrm") export("prefixfv") export("prettydiscrete") export("prettyinside") export("primefactors") export("primesbelow") export("print.addvar") export("print.autoexec") export("print.box3") export("print.boxx") export("print.bt.frame") export("print.bw.frac") export("print.bw.optim") export("print.colourmap") export("print.diagppm") export("print.distfun") export("print.envelope") export("print.ewcdf") export("print.fasp") export("print.fii") export("print.funxy") export("print.fv") export("print.fvfun") export("print.hyperframe") export("print.im") export("print.infline") export("print.influence.ppm") export("print.interact") export("print.isf") export("print.kppm") export("print.layered") export("print.leverage.ppm") export("print.linfun") export("print.linim") export("print.linnet") export("print.localpcfmatrix") export("print.lpp") export("print.lppm") export("print.lut") export("print.minconfit") export("print.mppm") export("print.msr") export("print.nnfun") export("print.objsurf") export("print.owin") export("print.parres") export("print.plotpairsim") export("print.plotppm") export("print.pp3") export("print.ppm") export("print.ppp") export("print.pppmatching") export("print.ppx") export("print.profilepl") export("print.psp") export("print.qqppm") export("print.quad") export("print.quadrattest") export("print.rat") export("print.rho2hat") export("print.rhohat") export("print.rmhcontrol") export("print.rmhexpand") export("print.rmhInfoList") export("print.rmhmodel") export("print.rmhstart") export("print.simplepanel") export("print.slrm") export("print.Smoothfun") export("print.splitppp") export("print.splitppx") export("printStatus") export("print.summary.fii") export("print.summary.hyperframe") export("print.summary.im") export("print.summary.listof") export("print.summary.logiquad") export("print.summary.lpp") export("print.summary.lut") export("print.summary.mppm") export("print.summary.owin") export("print.summary.pp3") export("print.summary.ppm") export("print.summary.ppp") export("print.summary.psp") export("print.summary.quad") export("print.summary.rmhexpand") export("print.summary.splitppp") export("print.summary.splitppx") export("print.summary.units") export("print.symbolmap") export("print.tess") export("print.texturemap") export("print.timed") export("print.units") export("profilepl") export("progressreport") export("project2segment") export("project.ppm") export("prolongseq") export("[.psp") export("psp") export("psst") export("psstA") export("psstG") export("putlastshift") export("putSpatstatVariable") export("qknn") export("qmixpois") export("qqplot.ppm") export("[.quad") export("quad") export("quadform") export("quad.mppm") export("quad.ppm") export("quadratcount") export("quadratcount.ppp") export("quadratcount.splitppp") export("quadratresample") export("quadrats") export("quadrat.test") export("quadrat.testEngine") export("quadrat.test.mppm") export("quadrat.test.ppm") export("quadrat.test.ppp") export("quadrat.test.quadratcount") export("quadrat.test.splitppp") export("quadscheme") export("quadscheme.logi") export("quadscheme.replicated") export("quadscheme.spatial") export("quantile.ewcdf") export("quantile.im") export("RandomFieldsSafe") export("range.im") export("rastersample") export("raster.x") export("rasterx.im") export("raster.xy") export("rasterxy.im") export("raster.y") export("rastery.im") export("rat") export("ratfv") export("rbind.hyperframe") export("rCauchy") export("rcell") export("rcellnumber") export("rDGS") export("rDiggleGratton") export("reach") export("reach.fii") export("reach.interact") export("reach.ppm") export("reach.rmhmodel") export("rebadge.as.crossfun") export("rebadge.as.dotfun") export("rebadge.fv") export("rebound") export("rebound.im") export("rebound.owin") export("rebound.ppp") export("rebound.psp") export("recognise.spatstat.type") export("reconcile.fv") export("rectquadrat.breaks") export("rectquadrat.countEngine") export("redraw.simplepanel") export("reduced.sample") export("reduceformula") export("reflect") export("reflect.default") export("reflect.im") export("reflect.layered") export("reflect.tess") export("reincarnate.interact") export("reload.or.compute") export("relrisk") export("repair.image.xycoords") export("repair.old.factor.image") export("rescale") export("rescale.im") export("rescale.layered") export("rescale.linnet") export("rescale.lpp") export("rescale.owin") export("rescale.ppp") export("rescale.psp") export("rescale.units") export("rescue.rectangle") export("reset.spatstat.options") export("resid1panel") export("resid1plot") export("resid4plot") export("residuals.mppm") export("residuals.ppm") export("resolve.1.default") export("resolve.2D.kernel") export("resolve.defaults") export("resolveEinfo") export("resolve.vargamma.shape") export("restrict.mask") export("revcumsum") export("reverse.xypolygon") export("rGaussPoisson") export("rgb2hex") export("rgbim") export("rgbNA") export("rHardcore") export("rho2hat") export("rhohat") export("rhohatCalc") export("rhohatEngine") export("rhohat.lpp") export("rhohat.lppm") export("rhohat.ppm") export("rhohat.ppp") export("rhohat.quad") export("rhs.of.formula") export("ripras") export("rjitter") export("rknn") export("rlabel") export("rLGCP") export("rlinegrid") export("rMatClust") export("rMaternI") export("rMaternII") export("rmax.rule") export("rmh") export("rmhcontrol") export("rmhcontrol.default") export("rmhcontrol.list") export("rmhcontrol.rmhcontrol") export("rmh.default") export("rmhEngine") export("rmhexpand") export("RmhExpandRule") export("rmhmodel") export("rmhmodel.default") export("rmhmodel.list") export("rmhmodel.ppm") export("rmhmodel.rmhmodel") export("rmh.ppm") export("rmhResolveControl") export("rmhResolveExpansion") export("rmhResolveTypes") export("rmhsnoop") export("rmhSnoopEnv") export("rmhstart") export("rmhstart.default") export("rmhstart.list") export("rmhstart.rmhstart") export("rmixpois") export("rMosaicField") export("rMosaicSet") export("rmpoint") export("rmpoint.I.allim") export("rmpoispp") export("rNeymanScott") export("rotate") export("rotate.im") export("rotate.layered") export("rotate.linnet") export("rotate.lpp") export("rotate.owin") export("rotate.ppp") export("rotate.psp") export("rotate.tess") export("rotxy") export("rotxypolygon") export("rounding") export("rounding.default") export("rounding.pp3") export("rounding.ppp") export("rounding.ppx") export("round.pp3") export("round.ppp") export("round.ppx") export("row.names<-.hyperframe") export("row.names.hyperframe") export("rpoint") export("rpoint.multi") export("rpoisline") export("rpoislinetess") export("rpoislpp") export("rpoispp") export("rpoispp3") export("rpoisppOnLines") export("rpoisppx") export("rPoissonCluster") export("rQuasi") export("rshift") export("rshift.ppp") export("rshift.psp") export("rshift.splitppp") export("rSSI") export("rstrat") export("rStrauss") export("rStraussHard") export("rsyst") export("rthin") export("rThomas") export("rtoro") export("runifdisc") export("runiflpp") export("runifpoint") export("runifpoint3") export("runifpointOnLines") export("runifpointx") export("runifpoispp") export("runifpoisppOnLines") export("runifrect") export("run.simplepanel") export("rVarGamma") export("safelookup") export("samecolour") export("samefunction") export("SatPiece") export("Saturated") export("scalardilate") export("scalardilate.default") export("scalardilate.im") export("scalardilate.layered") export("scalardilate.linnet") export("scalardilate.lpp") export("scalardilate.owin") export("scalardilate.ppp") export("scalardilate.psp") export("scalardilate.tess") export("scaletointerval") export("scaletointerval.default") export("scaletointerval.im") export("scanBinomLRTS") export("scanLRTS") export("scanmeasure") export("scanmeasure.im") export("scanmeasure.ppp") export("scanPoisLRTS") export("scanpp") export("scan.test") export("second.moment.calc") export("second.moment.engine") export("selfcrossing.psp") export("sensiblevarname") export("sessionLibs") export("setcov") export("setmarks") export("setminus.owin") export("sewpcf") export("sewsmod") export("sharpen") export("sharpen.ppp") export("shift") export("shift.im") export("shift.influence.ppm") export("shift.layered") export("shift.leverage.ppm") export("shift.linnet") export("shift.lpp") export("shift.msr") export("shift.owin") export("shift.ppp") export("shift.psp") export("shift.quadratcount") export("shift.quadrattest") export("shift.tess") export("shiftxy") export("shiftxypolygon") export("short.deparse") export("shortside") export("shortside.box3") export("shortside.boxx") export("shortside.owin") export("sidelengths") export("sidelengths.box3") export("sidelengths.boxx") export("sidelengths.owin") export("signalStatus") export("simplepanel") export("simplify.owin") export("simplify.xypolygon") export("simulate.kppm") export("simulate.ppm") export("simulate.slrm") export("simulrecipe") export("singlestring") export("slrAssemblePixelData") export("slrm") export("slr.prepare") export("Smooth") export("smoothcrossEngine") export("Smoothfun") export("Smoothfun.ppp") export("smooth.fv") export("Smooth.fv") export("Smooth.im") export("smooth.msr") export("Smooth.msr") export("smoothpointsEngine") export("smooth.ppp") export("Smooth.ppp") export("Softcore") export("solutionset") export("sort.im") export("spatialCDFframe") export("spatialCDFtest") export("spatstatClusterModelInfo") export("spatstat.options") export("spatstat.rawdata.location") export("spatstatRmhInfo") export("sp.foundclass") export("sp.foundclasses") export("sphere.volume") export("splat") export("splitHybridInteraction") export("split<-.hyperframe") export("split.hyperframe") export("split.im") export("[<-.splitppp") export("[.splitppp") export("split<-.ppp") export("split.ppp") export("[<-.splitppx") export("[.splitppx") export("split.ppx") export("spokes") export("square") export("stieltjes") export("store.versionstring.spatstat") export("stratrand") export("Strauss") export("strausscounts") export("StraussHard") export("str.hyperframe") export("strsplitretain") export("subfits") export("subfits.new") export("subfits.old") export("substringcount") export("suffloc") export("suffstat") export("suffstat.generic") export("suffstat.poisson") export("sum.im") export("summarise.trend") export("summary.envelope") export("summary.fii") export("summary.hyperframe") export("summary.im") export("summary.linnet") export("summary.listof") export("summary.logiquad") export("summary.lpp") export("summary.lut") export("summary.mppm") export("summary.owin") export("summary.pp3") export("summary.ppm") export("summary.ppp") export("summary.pppmatching") export("summary.ppx") export("summary.profilepl") export("summary.psp") export("summary.quad") export("summary.rmhexpand") export("summary.splitppp") export("summary.splitppx") export("summary.units") export("sumouter") export("sumsymouter") export("superimpose") export("superimpose.default") export("superimposeMarks") export("superimpose.ppp") export("superimpose.psp") export("superimposePSP") export("symbolmap") export("symbolmaptype") export("sympoly") export("termsinformula") export("terms.kppm") export("terms.lppm") export("terms.ppm") export("terms.slrm") export("[<-.tess") export("[.tess") export("tess") export("test.crossing.psp") export("test.selfcrossing.psp") export("texturemap") export("textureplot") export("thomas.estK") export("thomas.estpcf") export("tile.areas") export("tilecentroids") export("tileindex") export("tilenames<-") export("tilenames") export("tiles") export("timed") export("to.grey") export("transect.im") export("trap.extra.arguments") export("trianglediameters") export("trim.mask") export("trim.rectangle") export("triplet.family") export("Triplets") export("truncline") export("Tstat") export("tweak.colourmap") export("tweak.fv.entry") export("union.owin") export("union.quad") export("unique.ppp") export("unique.ppx") export("unitname<-") export("unitname") export("unitname<-.box3") export("unitname.box3") export("unitname<-.boxx") export("unitname.boxx") export("unitname<-.default") export("unitname.default") export("unitname<-.im") export("unitname.im") export("unitname<-.kppm") export("unitname.kppm") export("unitname<-.linnet") export("unitname.linnet") export("unitname<-.lpp") export("unitname.lpp") export("unitname<-.minconfit") export("unitname.minconfit") export("unitname<-.owin") export("unitname.owin") export("unitname<-.pp3") export("unitname.pp3") export("unitname<-.ppm") export("unitname.ppm") export("unitname<-.ppp") export("unitname.ppp") export("unitname<-.ppx") export("unitname.ppx") export("unitname<-.psp") export("unitname.psp") export("unitname<-.quad") export("unitname.quad") export("unitname<-.slrm") export("unitname.slrm") export("unit.square") export("unmark") export("unmark.lpp") export("unmark.ppp") export("unmark.ppx") export("unmark.psp") export("unmark.splitppp") export("unnormdensity") export("unparen") export("update.interact") export("update.kppm") export("update.lppm") export("update.ppm") export("update.rmhcontrol") export("update.rmhstart") export("update.slrm") export("update.symbolmap") export("uptrimat") export("validate.mask") export("validate.quad") export("validposint") export("valid.ppm") export("validradius") export("vanilla.fv") export("varblock") export("vargamma.estK") export("vargamma.estpcf") export("variablesinformula") export("vcov.kppm") export("vcov.lppm") export("vcov.mppm") export("vcov.ppm") export("vcov.slrm") export("vdCorput") export("verbalogic") export("verifyclass") export("verify.xypolygon") export("versionstring.interact") export("versionstring.ppm") export("versionstring.spatstat") export("vertices") export("Vmark") export("volume") export("volume.box3") export("volume.boxx") export("volume.owin") export("warn.ignored.args") export("warn.once") export("waxlyrical") export("weighted.var") export("which.max.im") export("whist") export("will.expand") export("windows.mppm") export("with.fv") export("with.hyperframe") export("with.msr") export("w.quad") export("X2testEngine") export("x.quad") export("xtfrm.im") export("xy.grid") export("xypolygon2psp") export("xypolyselfint") export("y.quad") export("zapsmall.im") # ....... Special cases ........... export("%mapp%") export("%mark%") export("%mrep%") export("%msub%") export("%orifnull%") # ....... End of special cases ... # ......................................... # Automatically generated list of S3 methods # ......................................... S3method("affine", "im") S3method("affine", "layered") S3method("affine", "linnet") S3method("affine", "lpp") S3method("affine", "owin") S3method("affine", "ppp") S3method("affine", "psp") S3method("affine", "tess") S3method("anova", "lppm") S3method("anova", "mppm") S3method("anova", "ppm") S3method("anova", "slrm") S3method("as.array", "im") S3method("as.character", "units") S3method("as.data.frame", "bw.optim") S3method("as.data.frame", "fv") S3method("as.data.frame", "hyperframe") S3method("as.data.frame", "im") S3method("as.data.frame", "ppp") S3method("as.data.frame", "ppx") S3method("as.data.frame", "psp") S3method("as.function", "fv") S3method("as.function", "linfun") S3method("as.function", "rhohat") S3method("as.fv", "bw.optim") S3method("as.fv", "data.frame") S3method("as.fv", "fasp") S3method("as.fv", "fv") S3method("as.fv", "kppm") S3method("as.fv", "matrix") S3method("as.fv", "minconfit") S3method("as.hyperframe", "data.frame") S3method("as.hyperframe", "default") S3method("as.hyperframe", "hyperframe") S3method("as.hyperframe", "listof") S3method("as.hyperframe", "ppx") S3method("as.im", "default") S3method("as.im", "distfun") S3method("as.im", "function") S3method("as.im", "im") S3method("as.im", "leverage.ppm") S3method("as.im", "linim") S3method("as.im", "matrix") S3method("as.im", "nnfun") S3method("as.im", "owin") S3method("as.im", "ppp") S3method("as.im", "scan.test") S3method("as.im", "Smoothfun") S3method("as.im", "tess") S3method("as.interact", "fii") S3method("as.interact", "interact") S3method("as.interact", "ppm") S3method("as.linim", "default") S3method("as.linim", "linfun") S3method("as.linim", "linim") S3method("as.linnet", "linfun") S3method("as.linnet", "linnet") S3method("as.linnet", "lpp") S3method("as.linnet", "lppm") S3method("as.list", "hyperframe") S3method("as.matrix", "im") S3method("as.matrix", "owin") S3method("as.matrix", "ppx") S3method("as.owin", "boxx") S3method("as.owin", "data.frame") S3method("as.owin", "default") S3method("as.owin", "distfun") S3method("as.owin", "funxy") S3method("as.owin", "im") S3method("as.owin", "influence.ppm") S3method("as.owin", "kppm") S3method("as.owin", "layered") S3method("as.owin", "leverage.ppm") S3method("as.owin", "linfun") S3method("as.owin", "linnet") S3method("as.owin", "lpp") S3method("as.owin", "lppm") S3method("as.owin", "msr") S3method("as.owin", "nnfun") S3method("as.owin", "owin") S3method("as.owin", "ppm") S3method("as.owin", "ppp") S3method("as.owin", "psp") S3method("as.owin", "quad") S3method("as.owin", "quadratcount") S3method("as.owin", "quadrattest") S3method("as.owin", "rmhmodel") S3method("as.owin", "tess") S3method("as.ppm", "kppm") S3method("as.ppm", "ppm") S3method("as.ppm", "profilepl") S3method("as.ppp", "data.frame") S3method("as.ppp", "default") S3method("as.ppp", "influence.ppm") S3method("as.ppp", "lpp") S3method("as.ppp", "matrix") S3method("as.ppp", "ppp") S3method("as.ppp", "psp") S3method("as.ppp", "quad") S3method("as.psp", "data.frame") S3method("as.psp", "default") S3method("as.psp", "linnet") S3method("as.psp", "lpp") S3method("as.psp", "matrix") S3method("as.psp", "owin") S3method("as.psp", "psp") S3method("as.tess", "im") S3method("as.tess", "list") S3method("as.tess", "owin") S3method("as.tess", "quadratcount") S3method("as.tess", "quadrattest") S3method("as.tess", "tess") S3method("bermantest", "lpp") S3method("bermantest", "lppm") S3method("bermantest", "ppm") S3method("bermantest", "ppp") S3method("boundingbox", "default") S3method("boundingbox", "im") S3method("boundingbox", "owin") S3method("boundingbox", "ppp") S3method("by", "im") S3method("by", "ppp") S3method("cbind", "fv") S3method("cbind", "hyperframe") S3method("closing", "owin") S3method("closing", "ppp") S3method("closing", "psp") S3method("coef", "fii") S3method("coef", "kppm") S3method("coef", "lppm") S3method("coef", "mppm") S3method("coef", "ppm") S3method("coef", "slrm") S3method("coef", "summary.fii") S3method("coef", "summary.ppm") S3method("compatible", "fasp") S3method("compatible", "fv") S3method("compatible", "im") S3method("compatible", "units") S3method("connected", "im") S3method("connected", "owin") S3method("connected", "ppp") S3method("contour", "funxy") S3method("contour", "im") S3method("contour", "listof") S3method("contour", "objsurf") S3method("coords", "ppp") S3method("coords", "ppx") S3method("crossdist", "default") S3method("crossdist", "lpp") S3method("crossdist", "pp3") S3method("crossdist", "ppp") S3method("crossdist", "ppx") S3method("crossdist", "psp") S3method("cut", "im") S3method("cut", "ppp") S3method("density", "ppp") S3method("density", "psp") S3method("density", "splitppp") S3method("deriv", "fv") S3method("dfbetas", "ppm") S3method("diameter", "box3") S3method("diameter", "boxx") S3method("diameter", "linnet") S3method("diameter", "owin") S3method("dilation", "owin") S3method("dilation", "ppp") S3method("dilation", "psp") S3method("dim", "fasp") S3method("dim", "hyperframe") S3method("dim", "im") S3method("dim", "msr") S3method("dimnames", "fasp") S3method("dimnames", "msr") S3method("distfun", "lpp") S3method("distfun", "owin") S3method("distfun", "ppp") S3method("distfun", "psp") S3method("distmap", "owin") S3method("distmap", "ppp") S3method("distmap", "psp") S3method("duplicated", "ppp") S3method("duplicated", "ppx") S3method("envelope", "envelope") S3method("envelope", "kppm") S3method("envelope", "lpp") S3method("envelope", "lppm") S3method("envelope", "matrix") S3method("envelope", "pp3") S3method("envelope", "ppm") S3method("envelope", "ppp") S3method("eroded.volumes", "box3") S3method("eroded.volumes", "boxx") S3method("erosion", "owin") S3method("erosion", "ppp") S3method("erosion", "psp") S3method("evalCovar", "lppm") S3method("evalCovar", "ppm") S3method("extractAIC", "lppm") S3method("extractAIC", "ppm") S3method("extractAIC", "slrm") S3method("[", "fasp") S3method("fitin", "ppm") S3method("fitted", "kppm") S3method("fitted", "mppm") S3method("fitted", "ppm") S3method("fitted", "slrm") S3method("flipxy", "im") S3method("flipxy", "layered") S3method("flipxy", "owin") S3method("flipxy", "ppp") S3method("flipxy", "psp") S3method("formula", "fv") S3method("formula", "kppm") S3method("formula", "lppm") S3method("formula", "ppm") S3method("formula", "slrm") S3method("[", "fv") S3method("hist", "im") S3method("[", "hyperframe") S3method("$", "hyperframe") S3method("identify", "ppp") S3method("identify", "psp") S3method("[", "im") S3method("image", "listof") S3method("image", "objsurf") S3method("[", "influence.ppm") S3method("influence", "ppm") S3method("intensity", "lpp") S3method("intensity", "ppm") S3method("intensity", "ppp") S3method("intensity", "quadratcount") S3method("intensity", "splitppp") S3method("iplot", "default") S3method("iplot", "layered") S3method("iplot", "ppp") S3method("is.empty", "default") S3method("is.empty", "owin") S3method("is.empty", "ppp") S3method("is.empty", "psp") S3method("is.hybrid", "interact") S3method("is.hybrid", "ppm") S3method("is.marked", "default") S3method("is.marked", "ppm") S3method("is.marked", "ppp") S3method("is.marked", "psp") S3method("is.marked", "quad") S3method("is.multitype", "default") S3method("is.multitype", "ppm") S3method("is.multitype", "ppp") S3method("is.multitype", "quad") S3method("is.poisson", "interact") S3method("is.poisson", "kppm") S3method("is.poisson", "lppm") S3method("is.poisson", "mppm") S3method("is.poisson", "ppm") S3method("is.poisson", "rmhmodel") S3method("is.poisson", "slrm") S3method("is.stationary", "kppm") S3method("is.stationary", "lppm") S3method("is.stationary", "ppm") S3method("is.stationary", "rmhmodel") S3method("is.stationary", "slrm") S3method("Kmodel", "kppm") S3method("Kmodel", "ppm") S3method("kppm", "formula") S3method("kppm", "ppp") S3method("kppm", "quad") S3method("kstest", "lpp") S3method("kstest", "lppm") S3method("kstest", "mppm") S3method("kstest", "ppm") S3method("kstest", "ppp") S3method("kstest", "slrm") S3method("labels", "kppm") S3method("labels", "ppm") S3method("labels", "slrm") S3method("[", "layered") S3method("levels", "im") S3method("[", "leverage.ppm") S3method("leverage", "ppm") S3method("[", "linnet") S3method("[", "localpcfmatrix") S3method("logLik", "lppm") S3method("logLik", "mppm") S3method("logLik", "ppm") S3method("logLik", "slrm") S3method("[", "lpp") S3method("lppm", "formula") S3method("lppm", "lpp") S3method("marks", "default") S3method("marks", "ppp") S3method("marks", "ppx") S3method("marks", "psp") S3method("marks", "quad") S3method("max", "im") S3method("mean", "im") S3method("median", "im") S3method("min", "im") S3method("model.frame", "kppm") S3method("model.frame", "lppm") S3method("model.frame", "ppm") S3method("model.images", "kppm") S3method("model.images", "lppm") S3method("model.images", "ppm") S3method("model.images", "slrm") S3method("model.matrix", "kppm") S3method("model.matrix", "lppm") S3method("model.matrix", "ppm") S3method("model.matrix", "slrm") S3method("[", "msr") S3method("multiplicity", "data.frame") S3method("multiplicity", "default") S3method("multiplicity", "ppp") S3method("multiplicity", "ppx") S3method("names", "hyperframe") S3method("nnclean", "pp3") S3method("nnclean", "ppp") S3method("nncross", "default") S3method("nncross", "lpp") S3method("nncross", "pp3") S3method("nncross", "ppp") S3method("nndensity", "ppp") S3method("nndist", "default") S3method("nndist", "lpp") S3method("nndist", "pp3") S3method("nndist", "ppp") S3method("nndist", "ppx") S3method("nndist", "psp") S3method("nnfun", "lpp") S3method("nnfun", "ppp") S3method("nnfun", "psp") S3method("nnwhich", "default") S3method("nnwhich", "lpp") S3method("nnwhich", "pp3") S3method("nnwhich", "ppp") S3method("nnwhich", "ppx") S3method("nobs", "lppm") S3method("nobs", "ppm") S3method("npoints", "pp3") S3method("npoints", "ppp") S3method("npoints", "ppx") S3method("nsegments", "psp") S3method("objsurf", "kppm") S3method("objsurf", "minconfit") S3method("opening", "owin") S3method("opening", "ppp") S3method("opening", "psp") S3method("[", "owin") S3method("pairdist", "default") S3method("pairdist", "lpp") S3method("pairdist", "pp3") S3method("pairdist", "ppp") S3method("pairdist", "ppx") S3method("pairdist", "psp") S3method("pairs", "im") S3method("pairs", "listof") S3method("pcf", "fasp") S3method("pcf", "fv") S3method("pcfmodel", "kppm") S3method("pcfmodel", "ppm") S3method("pcf", "ppp") S3method("periodify", "owin") S3method("periodify", "ppp") S3method("periodify", "psp") S3method("persp", "funxy") S3method("persp", "im") S3method("persp", "objsurf") S3method("pixellate", "owin") S3method("pixellate", "ppp") S3method("pixellate", "psp") S3method("plot", "addvar") S3method("plot", "barplotdata") S3method("plot", "bermantest") S3method("plot", "bw.frac") S3method("plot", "bw.optim") S3method("plot", "colourmap") S3method("plot", "diagppm") S3method("plot", "envelope") S3method("plot", "fasp") S3method("plot", "fii") S3method("plot", "funxy") S3method("plot", "fv") S3method("plot", "hyperframe") S3method("plot", "im") S3method("plot", "infline") S3method("plot", "influence.ppm") S3method("plot", "kppm") S3method("plot", "kstest") S3method("plot", "layered") S3method("plot", "leverage.ppm") S3method("plot", "linfun") S3method("plot", "linim") S3method("plot", "linnet") S3method("plot", "listof") S3method("plot", "localpcfmatrix") S3method("plot", "lpp") S3method("plot", "lppm") S3method("plot", "minconfit") S3method("plot", "mppm") S3method("plot", "msr") S3method("plot", "objsurf") S3method("plot", "owin") S3method("plot", "parres") S3method("plot", "plotpairsim") S3method("plot", "plotppm") S3method("plot", "pp3") S3method("plot", "ppm") S3method("plot", "ppp") S3method("plot", "pppmatching") S3method("plot", "ppx") S3method("plot", "profilepl") S3method("plot", "psp") S3method("plot", "qqppm") S3method("plot", "quad") S3method("plot", "quadratcount") S3method("plot", "quadrattest") S3method("plot", "rho2hat") S3method("plot", "rhohat") S3method("plot", "scan.test") S3method("plot", "slrm") S3method("plot", "splitppp") S3method("plot", "symbolmap") S3method("plot", "tess") S3method("plot", "texturemap") S3method("pool", "envelope") S3method("pool", "fasp") S3method("pool", "quadrattest") S3method("pool", "rat") S3method("[", "pp3") S3method("ppm", "default") S3method("ppm", "formula") S3method("ppm", "ppp") S3method("ppm", "quad") S3method("[", "ppp") S3method("[", "ppx") S3method("predict", "kppm") S3method("predict", "lppm") S3method("predict", "mppm") S3method("predict", "ppm") S3method("predict", "rhohat") S3method("predict", "slrm") S3method("print", "addvar") S3method("print", "autoexec") S3method("print", "box3") S3method("print", "boxx") S3method("print", "bt.frame") S3method("print", "bw.frac") S3method("print", "bw.optim") S3method("print", "colourmap") S3method("print", "diagppm") S3method("print", "distfun") S3method("print", "envelope") S3method("print", "ewcdf") S3method("print", "fasp") S3method("print", "fii") S3method("print", "funxy") S3method("print", "fv") S3method("print", "fvfun") S3method("print", "hyperframe") S3method("print", "im") S3method("print", "infline") S3method("print", "influence.ppm") S3method("print", "interact") S3method("print", "isf") S3method("print", "kppm") S3method("print", "layered") S3method("print", "leverage.ppm") S3method("print", "linfun") S3method("print", "linim") S3method("print", "linnet") S3method("print", "localpcfmatrix") S3method("print", "lpp") S3method("print", "lppm") S3method("print", "lut") S3method("print", "minconfit") S3method("print", "mppm") S3method("print", "msr") S3method("print", "nnfun") S3method("print", "objsurf") S3method("print", "owin") S3method("print", "parres") S3method("print", "plotpairsim") S3method("print", "plotppm") S3method("print", "pp3") S3method("print", "ppm") S3method("print", "ppp") S3method("print", "pppmatching") S3method("print", "ppx") S3method("print", "profilepl") S3method("print", "psp") S3method("print", "qqppm") S3method("print", "quad") S3method("print", "quadrattest") S3method("print", "rat") S3method("print", "rho2hat") S3method("print", "rhohat") S3method("print", "rmhcontrol") S3method("print", "rmhexpand") S3method("print", "rmhInfoList") S3method("print", "rmhmodel") S3method("print", "rmhstart") S3method("print", "simplepanel") S3method("print", "slrm") S3method("print", "Smoothfun") S3method("print", "splitppp") S3method("print", "splitppx") S3method("print", "summary.fii") S3method("print", "summary.hyperframe") S3method("print", "summary.im") S3method("print", "summary.listof") S3method("print", "summary.logiquad") S3method("print", "summary.lpp") S3method("print", "summary.lut") S3method("print", "summary.mppm") S3method("print", "summary.owin") S3method("print", "summary.pp3") S3method("print", "summary.ppm") S3method("print", "summary.ppp") S3method("print", "summary.psp") S3method("print", "summary.quad") S3method("print", "summary.rmhexpand") S3method("print", "summary.splitppp") S3method("print", "summary.splitppx") S3method("print", "summary.units") S3method("print", "symbolmap") S3method("print", "tess") S3method("print", "texturemap") S3method("print", "timed") S3method("print", "units") S3method("[", "psp") S3method("[", "quad") S3method("quadratcount", "ppp") S3method("quadratcount", "splitppp") S3method("quadrat.test", "mppm") S3method("quadrat.test", "ppm") S3method("quadrat.test", "ppp") S3method("quadrat.test", "quadratcount") S3method("quadrat.test", "splitppp") S3method("quantile", "ewcdf") S3method("quantile", "im") S3method("range", "im") S3method("rbind", "hyperframe") S3method("reach", "fii") S3method("reach", "interact") S3method("reach", "ppm") S3method("reach", "rmhmodel") S3method("reflect", "default") S3method("reflect", "im") S3method("reflect", "layered") S3method("reflect", "tess") S3method("rescale", "im") S3method("rescale", "layered") S3method("rescale", "linnet") S3method("rescale", "lpp") S3method("rescale", "owin") S3method("rescale", "ppp") S3method("rescale", "psp") S3method("rescale", "units") S3method("residuals", "mppm") S3method("residuals", "ppm") S3method("rhohat", "lpp") S3method("rhohat", "lppm") S3method("rhohat", "ppm") S3method("rhohat", "ppp") S3method("rhohat", "quad") S3method("rmhcontrol", "default") S3method("rmh", "default") S3method("rmhmodel", "default") S3method("rmhmodel", "list") S3method("rmhmodel", "ppm") S3method("rmh", "ppm") S3method("rmhstart", "default") S3method("rotate", "im") S3method("rotate", "layered") S3method("rotate", "linnet") S3method("rotate", "lpp") S3method("rotate", "owin") S3method("rotate", "ppp") S3method("rotate", "psp") S3method("rotate", "tess") S3method("rounding", "default") S3method("rounding", "pp3") S3method("rounding", "ppp") S3method("rounding", "ppx") S3method("round", "pp3") S3method("round", "ppp") S3method("round", "ppx") S3method("row.names", "hyperframe") S3method("rshift", "ppp") S3method("rshift", "psp") S3method("rshift", "splitppp") S3method("scalardilate", "default") S3method("scalardilate", "im") S3method("scalardilate", "layered") S3method("scalardilate", "linnet") S3method("scalardilate", "lpp") S3method("scalardilate", "owin") S3method("scalardilate", "ppp") S3method("scalardilate", "psp") S3method("scalardilate", "tess") S3method("scaletointerval", "default") S3method("scaletointerval", "im") S3method("sharpen", "ppp") S3method("shift", "im") S3method("shift", "influence.ppm") S3method("shift", "layered") S3method("shift", "leverage.ppm") S3method("shift", "linnet") S3method("shift", "lpp") S3method("shift", "msr") S3method("shift", "owin") S3method("shift", "ppp") S3method("shift", "psp") S3method("shift", "quadratcount") S3method("shift", "quadrattest") S3method("shift", "tess") S3method("shortside", "box3") S3method("shortside", "boxx") S3method("shortside", "owin") S3method("sidelengths", "box3") S3method("sidelengths", "boxx") S3method("sidelengths", "owin") S3method("simulate", "kppm") S3method("simulate", "ppm") S3method("simulate", "slrm") S3method("Smoothfun", "ppp") S3method("Smooth", "fv") S3method("Smooth", "im") S3method("Smooth", "msr") S3method("Smooth", "ppp") S3method("sort", "im") S3method("split", "hyperframe") S3method("split", "im") S3method("[", "splitppp") S3method("split", "ppp") S3method("split", "ppx") S3method("[", "splitppx") S3method("str", "hyperframe") S3method("sum", "im") S3method("summary", "envelope") S3method("summary", "fii") S3method("summary", "hyperframe") S3method("summary", "im") S3method("summary", "linnet") S3method("summary", "listof") S3method("summary", "logiquad") S3method("summary", "lpp") S3method("summary", "lut") S3method("summary", "mppm") S3method("summary", "owin") S3method("summary", "pp3") S3method("summary", "ppm") S3method("summary", "ppp") S3method("summary", "pppmatching") S3method("summary", "ppx") S3method("summary", "profilepl") S3method("summary", "psp") S3method("summary", "quad") S3method("summary", "rmhexpand") S3method("summary", "splitppp") S3method("summary", "splitppx") S3method("summary", "units") S3method("superimpose", "default") S3method("superimpose", "ppp") S3method("superimpose", "psp") S3method("terms", "kppm") S3method("terms", "lppm") S3method("terms", "ppm") S3method("terms", "slrm") S3method("[", "tess") S3method("unique", "ppp") S3method("unique", "ppx") S3method("unitname", "box3") S3method("unitname", "boxx") S3method("unitname", "im") S3method("unitname", "kppm") S3method("unitname", "linnet") S3method("unitname", "lpp") S3method("unitname", "minconfit") S3method("unitname", "owin") S3method("unitname", "pp3") S3method("unitname", "ppm") S3method("unitname", "ppp") S3method("unitname", "ppx") S3method("unitname", "psp") S3method("unitname", "quad") S3method("unitname", "slrm") S3method("unmark", "lpp") S3method("unmark", "ppp") S3method("unmark", "ppx") S3method("unmark", "psp") S3method("unmark", "splitppp") S3method("update", "interact") S3method("update", "kppm") S3method("update", "lppm") S3method("update", "ppm") S3method("update", "rmhcontrol") S3method("update", "rmhstart") S3method("update", "slrm") S3method("update", "symbolmap") S3method("vcov", "kppm") S3method("vcov", "lppm") S3method("vcov", "mppm") S3method("vcov", "ppm") S3method("vcov", "slrm") S3method("volume", "box3") S3method("volume", "boxx") S3method("volume", "owin") S3method("with", "fv") S3method("with", "hyperframe") S3method("with", "msr") S3method("xtfrm", "im") # ......................................... # Assignment methods # ......................................... S3method("coords<-", "ppp") S3method("coords<-", "ppx") S3method("dimnames<-", "fasp") S3method("formula<-", "fv") S3method("[<-", "hyperframe") S3method("$<-", "hyperframe") S3method("[<-", "im") S3method("levels<-", "im") S3method("[<-", "listof") S3method("marks<-", "lpp") S3method("marks<-", "ppp") S3method("marks<-", "ppx") S3method("marks<-", "psp") S3method("names<-", "hyperframe") S3method("[<-", "ppp") S3method("row.names<-", "hyperframe") S3method("split<-", "hyperframe") S3method("[<-", "splitppp") S3method("split<-", "ppp") S3method("[<-", "splitppx") S3method("[<-", "tess") S3method("unitname<-", "box3") S3method("unitname<-", "boxx") S3method("unitname<-", "im") S3method("unitname<-", "kppm") S3method("unitname<-", "linnet") S3method("unitname<-", "lpp") S3method("unitname<-", "minconfit") S3method("unitname<-", "owin") S3method("unitname<-", "pp3") S3method("unitname<-", "ppm") S3method("unitname<-", "ppp") S3method("unitname<-", "ppx") S3method("unitname<-", "psp") S3method("unitname<-", "quad") S3method("unitname<-", "slrm") # ......................................... # End of methods # ......................................... spatstat/demo/0000755000176000001440000000000012324667727013111 5ustar ripleyusersspatstat/demo/sumfun.R0000644000176000001440000000672412324667727014562 0ustar ripleyusers## demonstration of all summary functions opa <- par(mfrow=c(1,1)) ## Ripley's K-function plot(swedishpines) plot(Kest(swedishpines)) ## Besag's transformation plot(Lest(swedishpines)) ## pair correlation function plot(pcf(swedishpines)) par(mfrow=c(2,3)) ## Showing the utility of the K-function plot(cells) plot(nztrees) plot(redwood) plot(Kest(cells)) plot(Kest(nztrees)) plot(Kest(redwood)) ## Showing the utility of the pair correlation function plot(cells) plot(nztrees) plot(redwood) plot(pcf(cells)) plot(pcf(nztrees)) plot(pcf(redwood)) ## par(mfrow=c(1,1)) ## Analogues for inhomogeneous patterns ## Reweighted K-function plot(japanesepines) fit <- ppm(japanesepines, ~polynom(x,y,2)) plot(predict(fit)) plot(Kinhom(japanesepines, fit)) plot(pcfinhom(japanesepines, fit)) plot(Linhom(japanesepines)) ## Rescaled K-function plot(unmark(bronzefilter)) plot(Kscaled(bronzefilter)) fit <- ppm(unmark(bronzefilter), ~x) plot(predict(fit)) plot(unmark(bronzefilter), add=TRUE) plot(Kscaled(bronzefilter, fit)) plot(Lscaled(bronzefilter, fit)) ## Local indicators of spatial association plot(localL(swedishpines)) plot(localK(swedishpines)) ## par(mfrow=c(2,3)) ## Empty space function F plot(cells) plot(nztrees) plot(redwood) plot(Fest(cells)) plot(Fest(nztrees)) plot(Fest(redwood)) ## Nearest neighbour distance function G plot(cells) plot(nztrees) plot(redwood) plot(Gest(cells)) plot(Gest(nztrees)) plot(Gest(redwood)) ## J-function plot(cells) plot(nztrees) plot(redwood) plot(Jest(cells)) plot(Jest(nztrees)) plot(Jest(redwood)) par(mfrow=c(1,1)) ## versions for inhomogeneous patterns plot(Finhom(japanesepines)) plot(Ginhom(japanesepines)) plot(Jinhom(japanesepines)) ## Display F,G,J,K plot(allstats(swedishpines)) ## Multitype patterns plot(amacrine) plot(Kcross(amacrine)) plot(Kdot(amacrine)) I <- (marks(amacrine) == "on") J <- (marks(amacrine) == "off") plot(Kmulti(amacrine, I, J)) plot(alltypes(amacrine, "K")) plot(Lcross(amacrine)) plot(Ldot(amacrine)) plot(pcfcross(amacrine)) plot(pcfdot(amacrine)) plot(pcfmulti(amacrine, I, J)) plot(Gcross(amacrine)) plot(Gdot(amacrine)) plot(Gmulti(amacrine, I, J)) plot(alltypes(amacrine, "G")) plot(Jcross(amacrine)) plot(Jdot(amacrine)) plot(Jmulti(amacrine,I,J)) plot(alltypes(amacrine, "J")) plot(alltypes(amacrine, "F")) plot(Iest(amacrine)) plot(markconnect(amacrine)) ## Multitype, inhomogeneous plot(Kcross.inhom(amacrine)) plot(Kdot.inhom(amacrine)) plot(Kmulti.inhom(amacrine, I, J)) plot(Lcross.inhom(amacrine)) plot(Ldot.inhom(amacrine)) plot(pcfcross.inhom(amacrine)) plot(pcfdot.inhom(amacrine)) plot(pcfmulti.inhom(amacrine, I, J)) ## Numerical marks plot(markcorr(longleaf)) plot(markvario(longleaf)) plot(Emark(longleaf)) plot(Vmark(longleaf)) ## Linear networks plot(chicago) plot(linearK(chicago)) plot(linearKcross(chicago)) plot(linearKdot(chicago)) plot(linearpcf(chicago)) plot(linearpcfcross(chicago)) plot(linearpcfdot(chicago)) lam <- rep(intensity(unmark(chicago)), npoints(chicago)) A <- split(chicago)$assault B <- split(chicago)$burglary lamA <- rep(intensity(A), npoints(A)) lamB <- rep(intensity(B), npoints(B)) plot(linearKinhom(chicago, lam)) plot(linearKcross.inhom(chicago, "assault", "burglary", lamA, lamB)) plot(linearKdot.inhom(chicago, "assault", lamA, lam)) plot(linearpcfinhom(chicago, lam)) plot(linearpcfcross.inhom(chicago, "assault", "burglary", lamA, lamB)) plot(linearpcfdot.inhom(chicago, "assault", lamA, lam)) plot(linearmarkconnect(chicago)) plot(linearmarkequal(chicago)) rm(I,J,fit) par(opa) spatstat/demo/diagnose.R0000755000176000001440000001230012333041502014775 0ustar ripleyusersif(dev.cur() <= 1) { dd <- getOption("device") if(is.character(dd)) dd <- get(dd) dd() } oldpar <- par(ask = interactive() && (.Device %in% c("X11", "GTK", "windows", "Macintosh"))) par(mfrow=c(1,1)) oldoptions <- options(warn = -1) # ####################################################### # X <- rpoispp(function(x,y) { 1000 * exp(- 4 * x)}, 1000) plot(X, main="Inhomogeneous Poisson pattern") fit.hom <- ppm(X ~1, Poisson()) fit.inhom <- ppm(X ~x, Poisson()) diagnose.ppm(fit.inhom, which="marks", type="Pearson", main=c("Mark plot", "Circles for positive residual mass", "Colour for negative residual density")) par(mfrow=c(1,2)) diagnose.ppm(fit.hom, which="marks", main=c("Wrong model", "(homogeneous Poisson)", "raw residuals")) diagnose.ppm(fit.inhom, which="marks", main=c("Right model", "(inhomogeneous Poisson)", "raw residuals")) par(mfrow=c(1,1)) diagnose.ppm(fit.inhom, which="smooth", main="Smoothed residual field") par(mfrow=c(1,2)) diagnose.ppm(fit.hom, which="smooth", main=c("Wrong model", "(homogeneous Poisson)", "Smoothed residual field")) diagnose.ppm(fit.inhom, which="smooth", main=c("Right model", "(inhomogeneous Poisson)", "Smoothed residual field")) par(mfrow=c(1,1)) diagnose.ppm(fit.inhom, which="x") par(mfrow=c(1,2)) diagnose.ppm(fit.hom, which="x", main=c("Wrong model", "(homogeneous Poisson)", "lurking variable plot for x")) diagnose.ppm(fit.inhom, which="x", main=c("Right model", "(inhomogeneous Poisson)", "lurking variable plot for x")) par(mfrow=c(1,1)) diagnose.ppm(fit.hom, type="Pearson",main="standard diagnostic plots") par(mfrow=c(1,2)) diagnose.ppm(fit.hom, main=c("Wrong model", "(homogeneous Poisson)")) diagnose.ppm(fit.inhom, main=c("Right model", "(inhomogeneous Poisson)")) par(mfrow=c(1,1)) # ####################################################### # LEVERAGE/INFLUENCE plot(leverage(fit.inhom)) plot(influence(fit.inhom)) plot(dfbetas(fit.inhom)) # ####################################################### # COMPENSATORS ## Takes a long time... CF <- compareFit(listof(hom=fit.hom, inhom=fit.inhom), Kcom, same="iso", different="icom") plot(CF, main="model compensators", legend=FALSE) legend("topleft", legend=c("empirical K function", "compensator of CSR", "compensator of inhomogeneous Poisson"), lty=1:3, col=1:3) # ####################################################### # Q - Q PLOTS # qqplot.ppm(fit.hom, 40) #conclusion: homogeneous Poisson model is not correct title(main="Q-Q plot of smoothed residuals") qqplot.ppm(fit.inhom, 40) # TAKES A WHILE... title(main=c("Right model", "(inhomogeneous Poisson)", "Q-Q plot of smoothed residuals")) # conclusion: fitted inhomogeneous Poisson model looks OK # ####################################################### # plot(cells) fitPoisson <- ppm(cells ~1, Poisson()) diagnose.ppm(fitPoisson, main=c("CSR fitted to cells data", "Raw residuals", "No suggestion of departure from CSR")) diagnose.ppm(fitPoisson, type="pearson", main=c("CSR fitted to cells data", "Pearson residuals", "No suggestion of departure from CSR")) # These diagnostic plots do NOT show evidence of departure from uniform Poisson plot(Kcom(fitPoisson), cbind(iso, icom) ~ r) plot(Gcom(fitPoisson), cbind(han, hcom) ~ r) # K compensator DOES show strong evidence of departure from uniform Poisson qqplot.ppm(fitPoisson, 40) title(main=c("CSR fitted to cells data", "Q-Q plot of smoothed raw residuals", "Strong suggestion of departure from CSR")) # Q-Q plot DOES show strong evidence of departure from uniform Poisson. # fitStrauss <- ppm(cells ~1, Strauss(r=0.1)) diagnose.ppm(fitStrauss, main=c("Strauss model fitted to cells data", "Raw residuals")) diagnose.ppm(fitStrauss, type="pearson", main=c("Strauss model fitted to cells data", "Pearson residuals")) plot(Kcom(fitStrauss), cbind(iso, icom) ~ r) plot(Gcom(fitStrauss), cbind(han, hcom) ~ r) # next line takes a LOOONG time ... qqplot.ppm(fitStrauss, 40, type="pearson") title(main=c("Strauss model fitted to cells data", "Q-Q plot of smoothed Pearson residuals", "Suggests adequate fit")) # Conclusion: Strauss model seems OK # ####################################################### # plot(nztrees) fit <- ppm(nztrees ~1, Poisson()) diagnose.ppm(fit, type="pearson") title(main=c("CSR fitted to NZ trees", "Pearson residuals")) diagnose.ppm(fit, type="pearson", cumulative=FALSE) title(main=c("CSR fitted to NZ trees", "Pearson residuals (non-cumulative)")) lurking(fit, expression(x), type="pearson", cumulative=FALSE, splineargs=list(spar=0.3)) # Sharp peak at right is suspicious qqplot.ppm(fit, 40, type="pearson") title(main=c("CSR fitted to NZ trees", "Q-Q plot of smoothed Pearson residuals")) # Slight suggestion of departure from Poisson at top right of pattern. par(oldpar) options(oldoptions) spatstat/demo/data.R0000755000176000001440000000570212326604361014137 0ustar ripleyusersif(dev.cur() <= 1) { dd <- getOption("device") if(is.character(dd)) dd <- get(dd) dd() } oldpar <- par(ask = interactive() && dev.interactive(orNone=TRUE)) oldoptions <- options(warn=-1) plot(amacrine) plot(anemones, markscale=1) ants.extra$plotit() plot(bei.extra$elev, main="Beilschmiedia") plot(bei, add=TRUE, pch=16, cex=0.3) plot(betacells) plot(bramblecanes, cols=1:3) plot(split(bramblecanes)) plot(bronzefilter,markscale=2) plot(cells) plot(chicago, main="Chicago Street Crimes", col="grey", cols=c("red", "blue", "black", "blue", "red", "blue", "blue"), chars=c(16,2,22,17,24,15,6), leg.side="left", show.window=FALSE) chorley.extra$plotit() plot(clmfires, which.marks="cause", cols=2:5, cex=0.25, main="Castilla-La Mancha forest fires") plot(clmfires.extra$clmcov200, main="Covariates for forest fires") plot(copper$Points, main="Copper") plot(copper$Lines, add=TRUE) plot(demohyper, quote({ plot(Image, main=""); plot(Points, add=TRUE) }), parargs=list(mar=rep(1,4))) plot(demopat) plot(finpines, main="Finnish pines") wildM1 <- with(flu, virustype == "wt" & stain == "M2-M1") plot(flu[wildM1, 1, drop=TRUE], main=c("flu data", "wild type virus, M2-M1 stain"), chars=c(16,3), cex=0.4, cols=2:3) plot(gordon, main="People in Gordon Square", pch=16) plot(gorillas, which.marks=1, chars=c(1,3), cols=2:3, main="Gorilla nest sites") plot(hamster, cols=c(2,4)) plot(heather) plot(humberside) plot(hyytiala, add=TRUE, cols=2:5) plot(japanesepines) plot(lansing) plot(split(lansing)) plot(longleaf) plot(mucosa, chars=c(1,3), cols=c("red", "green")) plot(mucosa.subwin, add=TRUE, lty=3) plot(murchison, main="Murchison data") plot(murchison$greenstone, main="Murchison data", col="lightgreen") plot(murchison$gold, add=TRUE, pch=3, col="blue") plot(murchison$faults, add=TRUE, col="red") plot(nbfires, use.marks=FALSE, pch=".") plot(split(nbfires), use.marks=FALSE, chars=".") plot(split(nbfires)$"2000", which.marks="fire.type", main=c("New Brunswick fires 2000", "by fire type"), cols=c("blue", "green", "red", "cyan"), leg.side="left") plot(nztrees) plot(trim.rectangle(as.owin(nztrees), c(0,5), 0), add=TRUE, lty=3) enable3d <- ("scatterplot3d" %in% row.names(installed.packages())) if(enable3d) { plot(osteo[1:10,], tick.marks=FALSE, xlab="", ylab="", zlab="") } plot(paracou, cols=2:3, chars=c(16,3)) ponderosa.extra$plotit() pyr <- pyramidal pyr$grp <- abbreviate(pyramidal$group, minlength=7) plot(pyr, quote(plot(Neurons, pch=16, main=grp)), main="Pyramidal Neurons") rm(pyr) plot(redwood) redwoodfull.extra$plotit() plot(residualspaper$Fig1) plot(residualspaper$Fig4a) plot(residualspaper$Fig4b) plot(residualspaper$Fig4c) shapley.extra$plotit(main="Shapley") plot(simdat) plot(spruces, maxsize=min(nndist(spruces))) plot(swedishpines) plot(urkiola, cex=0.5, cols=2:3) plot(waka, markscale=0.04, main=c("Waka national park", "tree diameters")) plot(waterstriders) par(oldpar) options(oldoptions) spatstat/demo/00Index0000755000176000001440000000032412324667727014245 0ustar ripleyusersspatstat Demonstration of spatstat library diagnose Demonstration of diagnostic capabilities for models in spatstat data Datasets in spatstat sumfun Demonstration of nonparametric summary functions in spatstat spatstat/demo/spatstat.R0000755000176000001440000004767112330634221015075 0ustar ripleyusersif(dev.cur() <= 1) { dd <- getOption("device") if(is.character(dd)) dd <- get(dd) dd() } oldpar <- par(ask = interactive() && dev.interactive(orNone=TRUE)) oldoptions <- options(warn=-1) fanfare <- function(stuff) { plot(c(0,1),c(0,1),type="n",axes=FALSE, xlab="", ylab="") text(0.5,0.5, stuff, cex=2.5) } par(mar=c(1,1,2,1)+0.1) fanfare("Spatstat demonstration") fanfare("I. Types of data") plot(swedishpines, main="Point pattern") plot(demopat, cols=c("green", "blue"), main="Multitype point pattern") plot(longleaf, fg="blue", main="Marked point pattern") plot(finpines, main="Point pattern with multivariate marks") a <- psp(runif(20),runif(20),runif(20),runif(20), window=owin()) plot(a, main="Line segment pattern") marks(a) <- sample(letters[1:4], 20, replace=TRUE) plot(a, main="Multitype line segment pattern") marks(a) <- runif(20) plot(a, main="Marked line segment pattern") plot(owin(), main="Rectangular window") plot(letterR, main="Polygonal window") plot(as.mask(letterR), main="Binary mask window") Z <- as.im(function(x,y){ sqrt((x - 1)^2 + (y-1)^2)}, square(2)) plot(Z, main="Pixel image") X <- runifpoint(42) plot(dirichlet(X), main="Tessellation") enable3d <- ("scatterplot3d" %in% row.names(installed.packages())) if(enable3d) plot(rpoispp3(100), main="Three-dimensional point pattern") plot(simplenet, main="Linear network (linnet)") X <- rpoislpp(20, simplenet) plot(X, main="Point pattern on linear network (lpp)") fanfare("II. Graphics") plot(letterR, col="green", border="red", lwd=2, main="Polygonal window with colour fill") plot(letterR, hatch=TRUE, spacing=0.15, angle=30, main="Polygonal window with line shading") plot(letterR, hatch=TRUE, hatchargs=list(texture=8, spacing=0.12), main="Polygonal window with texture fill") plot(amacrine, chars=c(1,16), main="plot(X, chars = c(1,16))") plot(amacrine, cols=c("red","blue"), chars=16, main="plot(X, cols=c(\"red\", \"blue\"))") opa <- par(mfrow=c(1,2)) plot(longleaf, markscale=0.03, main="markscale=0.03") plot(longleaf, markscale=0.09, main="markscale=0.09") par(opa) plot(longleaf, pch=21, cex=1, bg=colourmap(terrain.colors(128), range=c(0,80)), main="colourmap for numeric mark values") Z <- as.im(function(x,y) { r <- sqrt(x^2+y^2); r * exp(-r) }, owin(c(-5,5),c(-5,5))) plot(Z, main="pixel image: image plot") plot(Z, main="pixel image: image plot (heat colours)", col=heat.colors(256)) plot(Z, main="pixel image: logarithmic colour map", log=TRUE, col=rainbow(128, end=5/6)) contour(Z, main="pixel image: contour plot", axes=FALSE) plot(Z, main="pixel image: image + contour plot") contour(Z, add=TRUE) persp(Z, colmap=terrain.colors(128), shade=0.3, phi=30,theta=100, main="pixel image: perspective plot") ct <- colourmap(rainbow(20), breaks=seq(-1,1,length=21)) plot(ct, main="Colour map for real numbers") ca <- colourmap(rainbow(8), inputs=letters[1:8]) plot(ca, main="Colour map for discrete values") Z <- as.im(nnfun(runifpoint(8))) plot(Z, main="colour image for discrete values") textureplot(Z, main="texture plot for discrete values") W <- owin(c(1,5),c(0,4.5)) Lout <- scaletointerval(distmap(rebound.owin(letterR, W))) Lin <- scaletointerval(distmap(complement.owin(letterR, W))) L <- scaletointerval(eval.im(Lin-Lout)) D <- scaletointerval(density(runifpoint(30, W), adjust=0.3)) X <- scaletointerval(as.im(function(x,y){ x }, W=W)) plot(listof(L=L, D=D, X=X), main="Multiple images") pairs(L, D, X, main="Multiple images: pairs plot") plot(rgbim(D,X,L,maxColorValue=1), valuesAreColours=TRUE, main="Three images: RGB display") plot(hsvim(D,L,X), valuesAreColours=TRUE, main="Three images: HSV display") fanfare("III. Conversion between types") W <- as.owin(chorley) plot(W, "window W") plot(as.mask(W)) plot(as.mask(W, dimyx=1000)) plot(as.im(W, value=3)) plot(as.im(W, value=3, na.replace=0), ribbon=TRUE) plot(as.im(function(x,y) {x^2 + y}, W=square(1)), main="as.im(function(x,y){x^2+y})") V <- delaunay(runifpoint(12)) plot(V, main="Tessellation V") plot(as.im(V, dimyx=256), main="as.im(V)") plot(as.owin(V)) X <- swedishpines plot(X, "point pattern X") plot(as.im(X), col=c("white","red"), ribbon=FALSE, xlab="", ylab="") plot(as.owin(X), add=TRUE) fanfare("IV. Subsetting and splitting data") plot(X, "point pattern X") subset <- 1:20 plot(X[subset], main="subset operation: X[subset]") subwindow <- owin(poly=list(x=c(0,96,96,40,40),y=c(0,0,100,100,50))) plot(X[subwindow], main="subset operation: X[subwindow]") plot(lansing, "Lansing Woods data") plot(split(lansing), main="split operation: split(X)") plot(longleaf, main="Longleaf Pines data") plot(cut(longleaf, breaks=3), main=c("cut operation", "cut(longleaf, breaks=3)")) Z <- dirichlet(runifpoint(16)) X <- runifpoint(100) plot(cut(X,Z), main="points cut by tessellation", leg.side="left") plot(Z, add=TRUE) plot(split(X, Z), main="points split by tessellation") W <- square(1) X <- as.im(function(x,y){sqrt(x^2+y^2)}, W) Y <- dirichlet(runifpoint(12, W)) plot(split(X,Y), main="image split by tessellation") fanfare("V. Exploratory data analysis") par(mar=c(3,3,3,2)+0.1) plot(swedishpines, main="Quadrat counts", pch="+") tab <- quadratcount(swedishpines, 4) plot(tab, add=TRUE, lty=2, cex=2, col="blue") par(mar=c(5,3,3,2)+0.1) plot(swedishpines, main="", pch="+") title(main=expression(chi^2 * " test"), cex.main=2) tes <- quadrat.test(swedishpines, 3) tes plot(tes, add=TRUE, col="red", cex=1.5, lty=2, lwd=3) title(sub=paste("p-value =", signif(tes$p.value,3)), cex.sub=1.4) par(mar=c(4,4,3,2)+0.1) tesk <- kstest(nztrees, "x") tesk plot(tesk) mur <- lapply(murchison, rescale, s=1000) mur <- lapply(mur, "unitname<-", value="km") X <- mur$gold D <- distfun(mur$faults) plot(X, main="Murchison gold deposits", cols="blue") plot(mur$faults, add=TRUE, col="red") rh <- rhohat(X,D) plot(rh, main="Smoothed rate estimate", xlab="Distance to nearest fault (km)", legend=FALSE) plot(predict(rh), main="predict(rhohat(X,D))") Z <- density(cells, 0.07) plot(Z, main="Kernel smoothed intensity of point pattern") plot(cells, add=TRUE) plot(redwood, main="Redwood data") te <- scan.test(redwood, 0.1, method="poisson") plot(te, main=c("Scan Statistic for redwood data", paste("p-value =", signif(te$p.value,3)))) plot(redwood, add=TRUE) te X <- unique(unmark(shapley)) plot(X, "Shapley galaxy concentration", pch=".") pa <- function(i, ...) { if(i == 1) list(chars=c(".", "+"), cols=1:2) else list(size=0.5, pch=21, bg=colourmap(topo.colors(128), range=c(0,1))) } plot(nnclean(X, k=17), panel.args=pa, main="Byers-Raftery nearest neighbour cleaning") Y <- sharpen(X, sigma=0.5, edgecorrect=TRUE) plot(Y, main="Choi-Hall data sharpening", pch=".") owpa <- par(mfrow=c(1,2)) W <- grow.rectangle(as.rectangle(letterR), 1) X <- superimpose(runifpoint(300, letterR), runifpoint(50, W), W=W) plot(W, main="clusterset(X, 'm')") plot(clusterset(X, 'marks', fast=TRUE), add=TRUE, chars=c("o", "+"), cols=1:2) plot(letterR, add=TRUE) plot(W, main="clusterset(X, 'd')") plot(clusterset(X, 'domain', exact=FALSE), add=TRUE) plot(letterR, add=TRUE) par(owpa) D <- density(a, sigma=0.05) plot(D, main="Kernel smoothed intensity of line segment pattern") plot(a, add=TRUE) X <- runifpoint(42) plot(dirichlet(X)) plot(X, add=TRUE) plot(delaunay(X)) plot(X, add=TRUE) parsave <- par(mfrow=c(2,2)) plot(longleaf, main="Longleaf Pines data") plot(nnmark(longleaf), main="Nearest mark") plot(Smooth(longleaf, 10), main="Kernel smoothing of marks") plot(idw(longleaf), main=c("Inverse distance weighted","smoothing of marks")) par(parsave) fryplot(cells, main=c("Fry plot","cells data"), pch="+") miplot(longleaf, main="Morishita Index plot", pch=16, col="blue") plot(swedishpines, main="Swedish Pines data") K <- Kest(swedishpines) plot(K, main="K function for Swedish Pines", legendmath=TRUE) en <- envelope(swedishpines, fun=Kest, nsim=10, correction="translate") plot(en, main="Envelopes of K function based on CSR", shade=c("hi", "lo")) pc <- pcf(swedishpines) plot(pc, main="Pair correlation function") plot(swedishpines, main="nearest neighbours") m <- nnwhich(swedishpines) b <- swedishpines[m] arrows(swedishpines$x, swedishpines$y, b$x, b$y, angle=12, length=0.1, col="red") plot(swedishpines %mark% nndist(swedishpines), markscale=1, main="Stienen diagram", legend=FALSE, fg="blue") plot(Gest(swedishpines), main=c("Nearest neighbour distance function G", "Gest(swedishpines)"), legendmath=TRUE) Z <- distmap(swedishpines, dimyx=512) plot(swedishpines$window, main="Distance map") plot(Z, add=TRUE) points(swedishpines) plot(Fest(swedishpines), main=c("Empty space function F", "Fest(swedishpines)"), legendmath=TRUE) W <- rebound.owin(letterR, square(5)) plot(distmap(W), main="Distance map") plot(W, add=TRUE) a <- psp(runif(20),runif(20),runif(20),runif(20), window=owin()) contour(distmap(a), main="Distance map") plot(a, add=TRUE,col="red") plot(Jest(swedishpines), main=c("J-function", "J(r)=(1-G(r))/(1-F(r))")) X <- swedishpines X <- X[sample(1:npoints(X))] Z <- nnfun(X) plot(as.owin(X), main="Nearest neighbour map") plot(Z, add=TRUE) points(X) plot(allstats(swedishpines)) Fig4b <- residualspaper$Fig4b plot(Fig4b, main="Inhomogeneous point pattern") plot(Kinhom(Fig4b), main="Inhomogeneous K-function") plot(pcfinhom(Fig4b, stoyan=0.1), main="Inhomogeneous pair correlation") plot(Ginhom(Fig4b, sigma=0.06), main="Inhomogeneous G-function") plot(Jinhom(Fig4b, sigma=0.06), main="Inhomogeneous J-function") X <- unmark(bronzefilter) plot(X, "Bronze filter data") lam <- predict(ppm(X ~x)) plot(Kscaled(X, lam), xlim=c(0, 1.5), main="Locally-scaled K function") plot(urkiola) plot(split(urkiola)) plot(density(split(urkiola))) contour(density(split(urkiola)), panel.begin=as.owin(urkiola)) plot(relrisk(urkiola), main="Relative risk (cross-validated)") plot(bramblecanes) br <- rescale(bramblecanes) plot(alltypes(br, "K"), mar.panel=c(4,5,2,2)+0.1) ama <- rescale(amacrine) plot(alltypes(ama, Lcross, envelope=TRUE, nsim=9), . - r ~ r, ylim=c(-25, 5)) ponderosa.extra$plotit(main="Ponderosa Pines") L <- localL(ponderosa) pL <- plot(L, lty=1, col=1, legend=FALSE, main="neighbourhood density functions for Ponderosa Pines") parsave <- par(mfrow=c(1,2)) ponderosa.extra$plotit() par(pty="s") plot(L, iso007 ~ r, main="point B") ponderosa.extra$plotit() L12 <- localL(ponderosa, rvalue=12) P12 <- ponderosa %mark% L12 Z12 <- Smooth(P12, sigma=5, dimyx=128) plot(Z12, col=topo.colors(128), main="smoothed neighbourhood density") contour(Z12, add=TRUE) points(ponderosa, pch=16, cex=0.5) plot(amacrine, main="Amacrine cells data") par(pty="s") mkc <- markcorr(amacrine, correction="translate", method="density", kernel="epanechnikov") plot(mkc, main="Mark correlation function", legend=FALSE) par(parsave) plot(alltypes(amacrine, markconnect), title="Mark connection functions for amacrine cells") parsave <- par(mfrow=c(1,2)) plot(spruces, cex.main=0.75) par(pty="s") plot(markcorr(spruces), main="Mark correlation", legendpos="bottomright") plot(spruces, cex.main=0.75) plot(markvario(spruces), main="Mark variogram", legendpos="topright") par(parsave) plot(as.listof(list("Emark(spruces)"=Emark(spruces), "Vmark(spruces)"=Vmark(spruces))), main="Independence diagnostics", ylim.covers=0, legendpos="bottom") if(enable3d) { par3 <- par(mfrow=c(1,2)) X <- rpoispp3(100) plot(X, main="3D point pattern X") plot(K3est(X), main="K-function in 3D") plot(X, main="3D point pattern X") plot(G3est(X), main="G-function in 3D", legendpos="bottomright") par(par3) } par2 <- par(mfrow=c(1,3)) X <- unmark(chicago) plot(as.linnet(X), main="Chicago Street Crimes",col="green") plot(as.ppp(X), add=TRUE, col="red") plot(linearK(X, correction="none"), main="Network K-function") plot(linearK(X, correction="Ang"), main="Corrected K-function") par(par2) fanfare("VI. Model-fitting") plot(japanesepines) fit <- ppm(japanesepines ~1) print(fit) fit <- ppm(japanesepines ~polynom(x,y,2)) print(fit) plot(fit, how="image", se=FALSE, main=c("Inhomogeneous Poisson model", "fit by maximum likelihood", "Fitted intensity")) plot(fit, how="image", trend=FALSE, main="Standard error of fitted intensity") plot(leverage(fit)) plot(influence(fit)) plot(mur$gold, main="Murchison gold deposits", cols="blue") plot(mur$faults, add=TRUE, col="red") fit <- ppm(mur$gold ~D, covariates=list(D=distfun(mur$faults))) plot(parres(fit, "D"), main="Partial residuals from loglinear Poisson model", xlab="Distance to nearest fault (km)", ylab="log intensity of gold", legend=FALSE) legend("bottomleft", legend=c("partial residual", "loglinear fit"), col=c(1,4), lty=c(1,4)) parsave <- par(mfrow=c(1,2)) plot(redwood) fitT <- kppm(redwood ~1, clusters="Thomas") plot(simulate(fitT)[[1]], main="simulation from fitted Thomas model") oop <- par(pty="s") plot(fitT, main=c("Thomas model","minimum contrast fit")) os <- objsurf(fitT) plot(os, main="Minimum contrast objective function", col=terrain.colors(128)) contour(os, add=TRUE) par(oop) plot(swedishpines) fit <- ppm(swedishpines ~1, Strauss(r=7)) print(fit) plot(fit, how="image", main=c("Strauss model", "fit by maximum pseudolikelihood", "Conditional intensity plot")) # fitted interaction plot(swedishpines) fit <- ppm(swedishpines ~1, PairPiece(c(3,5,7,9,11,13))) plot(fitin(fit), legend=FALSE, main=c("Pairwise interaction model", "fit by maximum pseudolikelihood")) # simulation plot(swedishpines) Xsim <- rmh(model=fit, start=list(n.start=80), control=list(nrep=100)) plot(Xsim, main="Simulation from fitted Strauss model") # model compensator plot(swedishpines) fit <- ppm(swedishpines ~1, Strauss(r=7)) plot(Kcom(fit), cbind(iso, icom, pois) ~ r, legend=FALSE, main="model compensators") legend("topleft", legend=c("empirical K function", "Strauss model compensator of K", "Poisson theoretical K"), lty=1:3, col=1:3, inset=0.05) par(parsave) # Multitype data dpat <- rescale(demopat, 8) unitname(dpat) <- c("mile", "miles") dpat plot(dpat, cols=c("red", "blue")) fit <- ppm(dpat ~marks + polynom(x,y,2), Poisson()) plot(fit, trend=TRUE, se=TRUE) fanfare("VII. Simulation") plot(letterR, main="Poisson random points") lambda <- 10/area.owin(letterR) points(rpoispp(lambda, win=letterR)) points(rpoispp(9 * lambda, win=letterR)) points(rpoispp(90 * lambda, win=letterR)) plot(rpoispp(100)) plot(rpoispp(function(x,y){1000 * exp(-3*x)}, 1000)) plot(rMaternII(200, 0.05)) plot(rSSI(0.05, 200)) plot(rThomas(10, 0.2, 5)) plot(rMatClust(10, 0.05, 4)) plot(rCauchy(30, 0.01, 5)) plot(rVarGamma(30, 2, 0.02, 5)) plot(rGaussPoisson(30, 0.05, 0.5)) if(require(RandomFields) && RandomFieldsSafe()) { param <- c(0, variance=0.2, nugget=0, scale=.1) mu <- 4 plot(rLGCP("exp", mu, param)) X <- rLGCP("exp", mu, param) plot(attr(X, "Lambda"), main="log-Gaussian Cox process") plot(X, add=TRUE, pch=16) } plot(rStrauss(200, 0.3, 0.07)) plot(rDiggleGratton(200,0.03,0.08)) plot(rDGS(300, 0.05)) plot(redwood, main="random thinning - rthin()") points(rthin(redwood, 0.5), col="green", cex=1.4) plot(rcell(nx=15)) plot(rsyst(nx=5)) abline(h=(1:4)/5, lty=2) abline(v=(1:4)/5, lty=2) plot(rstrat(nx=5)) abline(h=(1:4)/5, lty=2) abline(v=(1:4)/5, lty=2) X <- rsyst(nx=10) plot(rjitter(X, 0.02)) Xg <- rmh(list(cif="geyer", par=list(beta=1.25, gamma=1.6, r=0.2, sat=4.5), w=c(0,10,0,10)), control=list(nrep=1e4), start=list(n.start=200)) plot(Xg, main=paste("Geyer saturation process\n", "rmh() with cif=\"geyer\"")) L <- as.psp(matrix(runif(20), 5, 4), window=square(1)) plot(L, main="runifpointOnLines(30, L)") plot(runifpointOnLines(30, L), add=TRUE, pch="+") plot(L, main="rpoisppOnLines(3, L)") plot(rpoisppOnLines(3, L), add=TRUE, pch="+") plot(runiflpp(20, simplenet)) plot(rpoislpp(5, simplenet)) plot(rpoisline(10)) plot(rlinegrid(30, 0.1)) spatstat.options(npixel=256) X <- dirichlet(runifpoint(30)) plot(rMosaicSet(X, 0.4), col="green", border=NA) plot(X, add=TRUE) plot(rMosaicField(X, runif)) plot(rMosaicSet(rpoislinetess(3), 0.5), col="green", border=NA, main="Switzer's random set") spatstat.options(npixel=100) plot(Halton(512, c(2,3)), main="quasirandom pattern") plot(Halton(16384, c(2,3)), main="quasirandom pattern", pch=".") fanfare("VIII. Geometry") A <- letterR B <- shift(letterR, c(0.2,0.1)) plot(bounding.box(A,B), main="shift", type="n") plot(A, add=TRUE) plot(B, add=TRUE, border="red") B <- rotate(letterR, 0.2) plot(bounding.box(A,B), main="rotate", type="n") plot(A, add=TRUE) plot(B, add=TRUE, border="red") mat <- matrix(c(1.1, 0, 0.3, 1), 2, 2) B <- affine(letterR, mat=mat, vec=c(0.2,-0.1)) plot(bounding.box(A,B), main="affine", type="n") plot(A, add=TRUE) plot(B, add=TRUE, border="red") par1x2 <- par(mfrow=c(1,2)) L <- rpoisline(10, owin(c(1.5,4.5),c(0.2,3.6))) plot(L, main="Line segment pattern") plot(L$window, main="L[window]", type="n") plot(L[letterR], add=TRUE) plot(letterR, add=TRUE, border="red") par(par1x2) a <- psp(runif(20),runif(20),runif(20),runif(20), window=owin()) plot(a, main="Self-crossing points") plot(selfcrossing.psp(a), add=TRUE, col="red") a <- as.psp(matrix(runif(20), 5, 4), window=square(1)) b <- rstrat(square(1), 5) plot(a, lwd=3, col="green", main="project points to segments") plot(b, add=TRUE, col="red", pch=16) v <- project2segment(b, a) Xproj <- v$Xproj plot(Xproj, add=TRUE, pch=16) arrows(b$x, b$y, Xproj$x, Xproj$y, angle=10, length=0.15, col="red") plot(a, main="pointsOnLines(L)") plot(pointsOnLines(a, np=100), add=TRUE, pch="+") parry <- par(mfrow=c(1,3)) X <- tess(xgrid=seq(2, 4, length=10), ygrid=seq(0, 3.5, length=8)) plot(X) plot(letterR) plot(intersect.tess(X, letterR)) X <- dirichlet(runifpoint(10)) plot(X) L <- infline(0.3,0.5) plot(owin(), main="L") plot(L, col="red", lwd=2) plot(chop.tess(X,L)) par(parry) W <- chorley$window plot(W, main="simplify.owin") WS <- simplify.owin(W, 2) plot(WS, add=TRUE, border="green") nopa <- par(mfrow=c(2,2)) Rbox <- grow.rectangle(as.rectangle(letterR), 0.3) v <- erode.owin(letterR, 0.25) plot(Rbox, type="n", main="erode.owin", cex.main=0.75) plot(letterR, add=TRUE, col="red", cex.main=0.75) plot(v, add=TRUE, col="blue") v <- dilate.owin(letterR, 0.25) plot(Rbox, type="n", main="dilate.owin", cex.main=0.75) plot(v, add=TRUE, col="blue") plot(letterR, add=TRUE, col="red") v <- closing.owin(letterR, 0.3) plot(Rbox, type="n", main="closing.owin", cex.main=0.75) plot(v, add=TRUE, col="blue") plot(letterR, add=TRUE, col="red") v <- opening.owin(letterR, 0.3) plot(Rbox, type="n", main="opening.owin", cex.main=0.75) plot(letterR, add=TRUE, col="red") plot(v, add=TRUE, col="blue") par(nopa) fanfare("IX. Operations on pixel images") Z <- distmap(swedishpines, dimyx=512) plot(Z, main="An image Z") plot(levelset(Z, 4)) plot(cut(Z, 5)) plot(eval.im(sqrt(Z) - 3)) plot(solutionset(abs(Z - 6) <= 1)) nopa <- par(mfrow=c(1,2)) plot(Z) segments(0,0,96,100,lwd=2) plot(transect.im(Z)) par(nopa) d <- distmap(cells, dimyx=256) W <- levelset(d, 0.06) nopa <- par(mfrow=c(1,2)) plot(W) plot(connected(W)) par(nopa) Z <- as.im(function(x,y) { 4 * x^2 + 3 * y }, letterR) plot(Z) plot(letterR, add=TRUE) plot(blur(Z, 0.3, bleed=TRUE)) plot(letterR, add=TRUE) plot(blur(Z, 0.3, bleed=FALSE)) plot(letterR, add=TRUE) plot(blur(Z, 0.3, bleed=FALSE)) plot(letterR, add=TRUE) fanfare("X. Programming tools") showoffK <- function(Y, current, ..., fullpicture,rad) { plot(fullpicture, main=c("Animation using `applynbd'", "explaining the K function")) points(Y, cex=2) u <- current points(u[1],u[2],pch="+",cex=3) theta <- seq(0,2*pi,length=100) polygon(u[1]+ rad * cos(theta),u[2]+rad*sin(theta)) text(u[1]+rad/3,u[2]+rad/2,Y$n,cex=3) if(runif(1) < 0.2) Sys.sleep(runif(1, max=0.4)) return(Y$n) } par(ask=FALSE) applynbd(redwood, R=0.2, showoffK, fullpicture=redwood, rad=0.2, exclude=TRUE) par(oldpar) options(oldoptions) spatstat/NEWS0000644000176000001440000045265012332613006012654 0ustar ripleyusers CHANGES IN spatstat VERSION 1.37-0 OVERVIEW o Ege Rubak is now a joint author of spatstat. o We thank Peter Forbes, Tom Lawrence and Mikko Vihtakari for contributions. o Spatstat now exceeds 100,000 lines of code. o New syntax for point process models (ppm, kppm, lppm) equivalent to syntax of lm, glm, ... o Covariates in ppm and kppm can now be tessellations. o Confidence intervals and prediction intervals for fitted models. o Quasirandom point patterns and sequences. o Plots using texture fill. o Support for mappings from data to graphical symbols and textures. o Automatic re-fitting of model in Ginhom, Kinhom, Finhom, Jinhom. o Support for Mixed Poisson distribution. o Interpretation of mark scale parameters has changed in plot.ppp o Syntax of multitype interactions (eg MultiStrauss) has changed. o Bug fix in Metropolis-Hastings simulation of 'StraussHard' models o Changed default behaviour of perfect simulation algorithms. o Improvements to layout of text output. o Version nickname: 'Model Prisoner' NEW CLASSES o symbolmap An object of class 'symbolmap' represents a mapping from data to graphical symbols o texturemap An object of class 'texturemap' represents a mapping from data to graphical textures. NEW FUNCTIONS o split.hyperframe, split<-.hyperframe methods for split and split<- for hyperframes. o dmixpois, pmixpois, qmixpois, rmixpois (log-)normal mixture of Poisson distributions. o vdCorput, Halton, Hammersley, rQuasi quasirandom sequences and quasirandom point patterns. o Smoothfun create a function(x,y) equivalent to the result of Smooth.ppp o minnndist, maxnndist Faster ways to compute min(nndist(X)), max(nndist(X)) o add.texture Draw a simple texture inside a specified region. o textureplot Display a factor-valued pixel image using texture fill. o texturemap Create a texture map o plot.texturemap Plot a texture map in the style of a legend o symbolmap Create a symbol map o update.symbolmap Modify a symbol map o invoke.symbolmap Apply symbol map to data values, and plot them o plot.symbolmap Plot the symbol map in the style of a legend o as.owin.boxx Converts a 'boxx' to an 'owin' if possible. o ellipse Create an elliptical window. o clickbox Interactively specify a rectangle, by point-and-click on a graphics device. o complementarycolour Compute the complementary colour value of a given colour value, or the complementary colour map of a given colour map. o gauss.hermite Gauss-Hermite quadrature approximation to the expectation of any function of a normally-distributed random variable. o boundingbox Generic function, replaces bounding.box o edges Extract boundary edges of a window. Replaces and extends 'as.psp.owin' o pixelcentres Extract centres of pixels as a point pattern. SIGNIFICANT USER-VISIBLE CHANGES o ppm, kppm, lppm NEW SYNTAX FOR POINT PROCESS MODELS The model-fitting functions 'ppm', 'kppm' and 'lppm' now accept a syntax similar to 'lm' or 'glm', for example ppm(X ~ Z), but still accept the older syntax ppm(X, ~Z). To support both kinds of syntax, the functions 'ppm' and 'kppm' are now generic, with methods for the classes 'formula', 'ppp' and 'quad'. The 'formula' method handles a syntax like ppm(X ~ Z) while the 'ppp' method handles the old syntax ppm(X, ~Z). Similarly 'lppm' is generic with methods for 'formula' and 'lpp'. o ppm, kppm, lppm Covariates appearing in the model formula can be objects which exist in the R session, instead of always having to be elements of the list `covariates'. o ppm.formula, kppm.formula, lppm.formula Formulae involving polynom() are now expanded, symbolically, so that polynom(x, 3) becomes x + I(x^2) + I(x^3) and polynom(x,y,2) becomes x + y + I(x^2) + I(x*y) + I(y^2). This neatens the model output, and also makes it possible for anova() and step() to add or delete single terms in the polynomial. o predict.ppm New argument 'interval' allows confidence intervals or prediction intervals to be calculated. o predict.ppm New argument 'total' allows for prediction of the total number of points in a specified region. o plot.ppp, plot.lpp For marked point patterns, a legend is automatically added to the plot, by default. Arguments have changed: new arguments include parameters of the legend, and an optional symbol map. Result has changed: it is now an object of class 'symbolmap'. o plot.ppp, plot.lpp Interpretation of the parameters 'markscale' and 'maxsize' has changed. The size of a circle in the plot is now defined as the circle's diameter instead of its radius. (Size of a square is measured, as before, by its side length). o parres Now handles the case where the fitted model is not separable but its restriction to the given 'subregion' is separable. o envelope Now issues a warning if the usage of envelope() appears to be `invalid' in the sense that the simulated patterns and the data pattern have not been treated equally. o Kinhom, Finhom, Ginhom, Jinhom New argument 'update'. If 'lambda' is a fitted model (class ppm or kppm) and update=TRUE, the model is re-fitted to the data pattern, before the intensities are computed. o rDiggleGratton, rDGS, rHardcore, rStrauss, rStraussHard By default the point pattern is now generated on a larger window, and trimmed to the original window. New argument expand=TRUE. o MultiStrauss, MultiHard, MultiStraussHard The syntax of these functions has changed. The new code should still accept the old syntax. o rhohat rhohat.ppp and rhohat.quad have new argument 'baseline' o ippm Algorithm improved. Argument syntax changed. o default.dummy, quadscheme Dummy points can now be generated by a quasirandom sequence. o plot.owin The window can now be filled with one of 8 different textures. Arguments changed. o ppm, kppm Covariates in the model can now be tessellations. o [.im New argument 'tight' allows the resulting image to be trimmed to the smallest possible rectangle. o [.psp, rlinegrid, rpoisline These functions now handle binary mask windows. o rotate The user can specify the centre of rotation. o rescale rescale() and all its methods now have argument 'unitname' which can be used to change the name of the unit of length. o anova.ppm Output format has been improved. Number of columns of result has changed. o print.ppp, print.summary.ppp, print.owin, print.summary.owin, print.im, print.summary.im, print.fv, print.msr, print.profilepl These functions now avoid over-running the text margin (i.e. they respect options('width') where possible). o layerplotargs<- Now handles any spatial object, converting it to a 'layered' object. o effectfun Improved display in case se.fit=TRUE. o scaletointerval New argument 'xrange' o contour.im New argument 'show.all'. Default value of 'axes' changed to FALSE. o identify.ppp Now handles multivariate marks. o plot.listof Improved layout. New arguments 'hsep', 'vsep'. Argument 'mar.panel' may have length 1, 2 or 4. o plot.splitppp This function is no longer identical to plot.listof. Instead it is a much simpler function which just calls plot.listof with equal.scales=TRUE. o anova.ppm Output is neater. o plot.layered New argument 'do.plot' o plot.psp New argument 'do.plot' o as.psp.owin New argument 'window' o plot.im, contour.im, textureplot New argument 'clipwin' o plot.ppp New argument 'clipwin' o plot.msr New argument 'how' allows density to be plotted as image and/or contour o diagnose.ppm, plot.diagppm More options for 'plot.neg' o plot.leverage.ppm, plot.influence.ppm, plot.msr Argument 'clipwin' can now be used to restrict the display to a subset of the full data. o [.hyperframe, [<-.hyperframe, $.hyperframe, $<-.hyperframe These functions are now documented. o leverage.ppm, influence.ppm, dfbetas.ppm Resulting objects are now smaller (in memory size). o print.ppm Now indicates whether the irregular parameters 'covfunargs' were optimised (by profilepl or ippm) or whether they were simply provided by the user. o plot.ppp A point pattern with numerical marks can now be plotted as filled dots with colours determined by the marks, by setting pch=21 and bg= o colourmap Now handles dates and date-time values (of class 'Date' or 'POSIXt'). o plot.ppp, print.ppp, summary.ppp Improved handling of dates and date-time values (of class 'Date' or 'POSIXt') in the marks of a point pattern. o cut.im Now refuses to handle images whose pixel values are factor, logical or character. o centroid.owin New argument 'as.ppp' o superimpose Improved default names for columns of marks. o Softcore() Improved printout. o kppm, lgcp.estpcf, lgcp.estK Adjusted to new structure of RandomFields package. No change in syntax. o data(murchison) This dataset now belongs to class 'listof' so that it can be plotted directly. o data(clmfires) The format of the covariate data has changed. The objects 'clmcov100' and 'clmcov200' are now elements of a list 'clmfires.extra'. o bounding.box This function is now Deprecated; it has been replaced by the generic boundingbox(). o as.psp.owin This function is now Deprecated; it has been replaced and extended by the function edges(). o plot.kstest Changed defaults so that the two curves are distinguishable. o with.fv Improved mathematical labels. BUG FIXES o intensity.quadratcount Values were incorrect for a rectangular tessellation (the matrix of intensities was transposed). Fixed. o rmh, simulate.ppm Simulation of the Strauss-hard core model (StraussHard) was incorrect (intensity of the simulated process was about 15% too low). Bug introduced in spatstat 1.31-0 (January 2013). because of a o intensity.quadratcount Crashed for a rectangular tessellation with only a single row or column. Fixed. o model.images.ppm Crashed sometimes if the argument W was given. Fixed. o eval.im Crashed when applied to images with only a single row or column. Fixed. o ppp, marks<-.ppp If the marks were a vector of dates, they were erroneously converted to numbers. Fixed. o ippm Crashed if the model formula included an offset term that was not a function. Fixed. o leverage.ppm Crashed sometimes when the model had irregular parameters ('covfunargs'). Fixed. o residuals.ppm Crashed sometimes when type='score'. Fixed. o scaletointerval Did not handle dates and date-time values correctly. Fixed. o rbind.hyperframe, as.list.hyperframe Gave incorrect results for hyperframes with 1 row. Fixed. o Kinhom Did not renormalise the result (even when renormalise=TRUE), in some cases. Spotted by Peter Forbes. Fixed. o disc If mask=TRUE the disc was erroneously clipped to the square [-1,1] x [-1,1]. Fixed. o plot.fv Sometimes shaded the wrong half of the graph when the 'shade' coordinates were infinite. Fixed. o print.ppm Gave an error message if the coefficient vector had length zero. Fixed. o vcov.ppm Gave an error message if the coefficient vector had length zero. Fixed. o plot.msr Ignored certain additional arguments such as 'pch'. Fixed. o cut.im Crashed if the image had 1 row or 1 column of pixels. Fixed. o iplot.ppp Crashed with message about missing object 'vals'. Fixed. o effectfun Demanded a value for every covariate supplied in the original call to ppm, even for covariates which were not used in the model. Fixed. o plot.listof, plot.hyperframe When plotting 3D point patterns (class pp3), these functions issued warnings about 'add' being an unrecognised graphics argument. Fixed. CHANGES IN spatstat VERSION 1.36-0 OVERVIEW o We thank Sebastian Meyer, Kevin Ummer, Jean-Francois Coeurjolly, Ege Rubak, Rasmus Waagepetersen, Oscar Garcia and Sourav Das for contributions. o Important change to package dependencies. o Geometrical inconsistencies in polygons are now repaired automatically. o Improved quadrature schemes and reduced bias in ppm. o New vignette 'Summary of Recent Changes to Spatstat'. o Approximation to K function and pcf for Gibbs models. o Counterpart of 'apply' for lists of images. o Hexagonal grids and tessellations. o Extensions to scan test and Allard-Fraley cluster set estimator. o Change the parameters of a fitted model before simulating it. o Accelerated Kest, Kinhom for rectangular windows. o Extensions and improvements to plotting functions. o Improvements to labelling of 'fv' objects. o New demo of summary functions. o More methods for 'intensity'. o Version nickname: 'Intense Scrutiny' NEW FUNCTIONS o Kmodel.ppm, pcfmodel.ppm Compute approximation to K-function or pair correlation function of a Gibbs point process model. o im.apply Apply a function to corresponding pixel values in several images. o hexgrid, hextess Create a hexagonal grid of points, or a tessellation of hexagonal tiles o shift.tess, rotate.tess, reflect.tess, scalardilate.tess, affine.tess Apply a geometrical transformation to a tessellation. o quantile.ewcdf Extract quantiles from a weighted cumulative distribution function. o scanLRTS Evaluate the spatially-varying test statistic for the scan test. o pcfmulti General multitype pair correlation function o intensity.splitppp Estimate intensity in each component of a split point pattern. o intensity.quadratcount Use quadrat counts to estimate intensity in each quadrat. o as.owin.quadratcount, as.owin.quadrattest Extract the spatial window in which quadrat counts were performed. o reload.or.compute Utility function for R scripts: either reload results from file, or compute them. o to.grey Convert colour to greyscale. o Smooth.im Method for Smooth() for pixel images. Currently identical to blur(). o demo(sumfun) Demonstration of nonparametric summary functions in spatstat. SIGNIFICANT USER-VISIBLE CHANGES o Package Dependencies spatstat now "Imports" (rather than "Depends" on) the libraries mgcv, deldir, abind, tensor, polyclip. This means that these libraries are not accessible to the user unless the user explicitly loads them by typing 'library(mgcv)' and so on. o owin, as.owin Polygon data are no longer subjected to strict checks on geometrical validity (self-crossing points, overlaps etc.) Instead, polygon geometry is automatically repaired. o ppm The default quadrature scheme for a point pattern has been improved (in the case of a non-rectangular window) to remove a possible source of bias. o Performance various parts of spatstat now run slightly faster. o scan.test Now handles multiple values of circle radius 'r'. o plot.scan.test, as.im.scan.test These functions can now give the optimal value of circle radius 'r'. o pcfcross, pcfdot Algorithms have been reimplemented using a single-pass kernel smoother and now run much faster. Bandwidth selection rule improved. o plot.listof, plot.splitppp Default behaviour has changed: panels are now plotted on different scales. o plot.listof, plot.splitppp When 'equal.scales=TRUE' the panels are plotted on exactly equal scales and are exactly aligned (under certain conditions). o ppp, marks.ppp, marks<-.ppp New argument 'drop' determines whether a data frame with a single column will be converted to a vector. o simulate.ppm, rmh.ppm, rmhmodel.ppm New argument 'new.coef' allows the user to change the parameters of a fitted model, before it is simulated. o logLik.ppm New argument 'new.coef' allows the user to evaluate the loglikelihood for a different value of the parameter. o clusterset The argument 'result' has been renamed 'what'. It is now possible to give multiple values to 'what' so that both types of result can be computed together. o residuals.ppm Argument 'coefs' has been renamed 'new.coef' for consistency with fitted.ppm etc. o residuals.ppm If drop=TRUE the window associated with the residuals is now taken to be the domain of integration of the composite likelihood. o intensity.ppp Now has argument 'weights' o density.ppp, Smooth.ppp, markmean, markvar, intensity.ppp Argument 'weights' can now be an 'expression'. o pcf New argument 'domain' causes the computation to be restricted to a subset of the window. o nnclean The result now has attributes which give the fitted parameter values, information about the fitting procedure, and the histogram bar heights. o nnclean Extra arguments are now passed to hist.default. o plot.tess For a tessellation represented by a pixel image, plot.tess no longer treats the pixel labels as palette colours. o relrisk New argument 'case' allows the user to specify which mark value corresponds to the cases in a case-control dataset. o Kinhom Now accepts correction="good" o spatstat.options New option ('monochrome') controls whether plots generated by spatstat will be displayed in colour or in greyscale. This will eventually be applied to all plot commands in spatstat. o plot.im, persp.im, contour.im, plot.owin, plot.psp, plot.fv, plot.fasp These functions now obey spatstat.options('monochrome') o plot.ppp, plot.owin, plot.im, plot.psp, plot.tess, plot.layered New universal argument 'show.all' determines what happens when a plot is added to an existing plot. If show.all = TRUE then everything is plotted, including the main title and colour ribbon. o plot.ppp New argument 'show.window' o plot.im New arguments 'add' and 'do.plot'. More arguments recognised by 'ribargs' o plot.layered New arguments 'add', 'main' Better argument handling. o plot.fv Improved handling of argument 'shade' o layered, layerplotargs, plot.layered The plotting argument can now be a list of length 1, which will be replicated to the correct length. o varblock Ugly legends have been repaired. o quad.ppm New argument 'clip' o edge.Trans New arguments 'dx', 'dy' o disc Argument 'centre' can be in various formats. o affine, shift Argument 'vec' can be in various formats. o Geyer, BadGey A warning is no longer issued when the parameter 'sat' is fractional. o adaptive.density Now has argument 'verbose' o Smooth.ppp 'sigma' is now a formal argument of Smooth.ppp o plot.quadratcount, plot.quadrattest These functions have now been documented. o Summary functions and envelopes Improved mathematical labels in plots. o Kest Accelerated, in the case of a rectangular window. o Kscaled Argument 'lambda' can now be a fitted model (class ppm) o print.fv Improved layout. o plot.bermantest Improved graphics. o which.max.im This function is now deprecated. which.max.im(x) is superseded by im.apply(x, which.max) o smooth.ppp, smooth.fv, smooth.msr These functions are now deprecated, in favour of 'Smooth' with a capital 'S' BUG FIXES o bw.ppl Crashed if the point pattern had multiple points at the same location. Fixed. o quantile Crashed when applied to the result of 'ewcdf'. Fixed. o marks<-.ppp Crashed with a message about 'unrecognised format' if the current or replacement values of marks were date/time values (belonging to class 'Date' or 'POSIXt'). Fixed. o plot.im Crashed in case log=TRUE if the window was not a rectangle. Fixed. o vcov.ppm Crashed sometimes for models with a hard core term (Hardcore, StraussHard, MultiHard or MultiStrauss interactions). Spotted by Rasmus Waagepetersen. Fixed. o multiplicity.data.frame Results were incorrect and included NA's (spotted by Sebastian Meyer). Fixed. o markvar Values were incorrect. Fixed. o Smooth.ppp Ignored argument 'diggle'. Fixed. o rotate.im, affine.im Factor-valued images were not handled correctly. Fixed. o shift.layered If argument 'origin' was used, different layers were shifted by different amounts. Fixed. o tile.areas Sometimes returned a list instead of a numeric vector. Fixed. o print.ppp If the marks were date/time values (belonging to class 'Date' or 'POSIXt'), print.ppp reported that they were double precision numbers. Fixed. o plot.layered Graphics were mangled if the argument 'add=FALSE' was given explicitly. Fixed. o Smooth.ppp The argument 'sigma' was only recognised if it was explicitly named. For example in 'Smooth(X, 5)' the '5' was ignored. Fixed. o clusterset The bounding frame of the result was smaller than the original bounding frame of the point pattern dataset, when result="domain" and exact=TRUE. Fixed. o plot.im Ignored argument 'col' if it was a 'function(n)'. Fixed. o Kinhom Ignored argument 'correction' if there were more than 1000 points. Fixed. o [.fv Mangled the plot label for the y axis. Fixed. o cbind.fv Mangled the plot label for the y axis. Fixed. o plot.envelope Main title was always 'x'. Fixed. o print.ppp Ran over the right margin. Fixed. o union.owin, intersect.owin, setminus.owin Sometimes deleted the name of the unit of length. Fixed. CHANGES IN spatstat VERSION 1.35-0 OVERVIEW o We thank Melanie Bell, Leanne Bischof, Ida-Maria Sintorn, Ege Rubak, Martin Hazelton, Oscar Garcia, Rasmus Waagepetersen, Abdollah Jalilian and Jens Oehlschlaegel for contributions. o Support for analysing replicated spatial point patterns. o New vignette on analysing replicated spatial point patterns. o Objective function surface plots. o Estimator of point process intensity using nearest neighbour distances. o Improved estimator of pair correlation function. o Four new datasets. o Simple point-and-click interface functions for general use. o More support for fv objects. o More support for ppx objects. o Extensions to nearest neighbour functions. o Morphological operations accelerated. o Bug fix to pair correlation functions. o Bug fix to k-th nearest neighbour distances o Version nickname: 'Multiple Personality' NEW CLASSES o mppm An object of class 'mppm' represents a Gibbs point process model fitted to several point pattern datasets. The point patterns may be treated as independent replicates of the same point process, or as the responses in an experimental design, so that the model may depend on covariates associated with the design. Methods for this class include print, plot, predict, anova and so on. o objsurf An object of class 'objsurf' contains values of the likelihood or objective function in a neighbourhood of the maximum. o simplepanel An object of class 'simplepanel' represents a spatial arrangement of buttons that respond to mouse clicks, supporting a simple, robust graphical interface. NEW FUNCTIONS o mppm Fit a Gibbs model to several point patterns. The point pattern data may be organised as a designed experiment and the model may depend on covariates associated with the design. o anova.mppm Analysis of Deviance for models of class mppm o coef.mppm Extract fitted coefficients from a model of class mppm o fitted.mppm Fitted intensity or conditional intensity for a model of class mppm o kstest.mppm Kolmogorov-Smirnov test of goodness-of-fit for a model of class mppm o logLik.mppm log likelihood or log pseudolikelihood for a model of class mppm o plot.mppm Plot the fitted intensity or conditional intensity of a model of class mppm o predict.mppm Compute the fitted intensity or conditional intensity of a model of class mppm o quadrat.test Quadrat counting test of goodness-of-fit for a model of class mppm o residuals.mppm Point process residuals for a model of class mppm o subfits Extract point process models for each individual point pattern dataset, from a model of class mppm o vcov.mppm Variance-covariance matrix for a model of class mppm o integral.msr Integral of a measure. o objsurf For a model fitted by optimising an objective function, this command computes the objective function in a neighbourhood of the optimal value. o contour.objsurf, image.objsurf, persp.objsurf, plot.objsurf Plot an 'objsurf' object. o fvnames Define groups of columns in a function value table, for use in plot.fv, etc o multiplicity New generic function for which multiplicity.ppp is a method. o unique.ppx, duplicated.ppx, multiplicity.ppx Methods for unique(), duplicated() and multiplicity() for 'ppx' objects. These also work for 'pp3' and 'lpp' objects. o closepairs, crosspairs, closepaircounts, crosspaircounts Low-level functions for finding all close pairs of points o nndensity Estimate point process intensity using k-th nearest neighbour distances o simplepanel, run.simplepanel Support for a simple point-and-click interface for general use. NEW DATASETS o pyramidal Diggle-Lange-Benes data on pyramidal neurons in cingulate cortex. 31 point patterns divided into 3 groups. o waterstriders Nummelin-Penttinen waterstriders data. Three independent replicates of a point pattern formed by insects. o simba Simulated data example for mppm. Two groups of point patterns with different interpoint interactions. o demohyper Simulated data example for mppm. Point patterns and pixel image covariates, in two groups with different regression coefficients. SIGNIFICANT USER-VISIBLE CHANGES o plot.hyperframe The argument 'e' now has a different format. Instead of plot(h, plot(XYZ)) one must now type plot(h, quote(plot(XYZ))) This is necessary in order to avoid problems with 'S4 method dispatch'. o pcf.ppp, pcfinhom New argument 'divisor' enables better performance of the estimator of pair correlation function for distances close to zero. o applynbd The arguments N, R and criterion may now be specified together. o markstat The arguments N and R may now be specified together. o ppx New argument 'simplify' allows the result to be converted to an object of class 'ppp' or 'pp3' if appropriate. o as.function.fv Now allows multiple columns to be interpolated o multiplicity.ppp This function is now a method for the generic 'multiplicity'. It has also been accelerated. o nnfun.ppp, distfun.ppp New argument 'k' allows these functions to compute k-th nearest neighbours. o rVarGamma, kppm, vargamma.estK, vargamma.estpcf New argument 'nu.pcf' provides an alternative way to specify the kernel shape in the VarGamma model, instead of the existing argument 'nu.ker'. Function calls that use the ambiguous argument name 'nu' will no longer be accepted. o nnmap Image is now clipped to the original window. o dilation, erosion, opening, closing Polygonal computations greatly accelerated. o plot.colourmap Improved appearance and increased options, for discrete colourmaps. o plot.msr Improved appearance o plot.ppp, plot.owin An `empty' plot can now be generated by setting type="n" o nndist.ppp, nnwhich.ppp, nncross.ppp Column names of the result are now more informative. BUG FIXES o nncross.ppp Results were completely incorrect when k > 1. Spotted by Jens Oehschlaegel. Bug was introduced in spatstat 1.34-1. Fixed. o rVarGamma Simulations were incorrect; they were generated using the wrong value of the parameter 'nu.ker'. Spotted by Rasmus Waagepetersen and Abdollah Jalilian. Bug was always present. Fixed. o pair correlation functions (pcf.ppp, pcfdot, pcfcross, pcfinhom, ...) The result had a negative bias at the maximum 'r' value, because contributions to the pcf estimate from interpoint distances greater than max(r) were mistakenly omitted. Spotted by Rasmus Waagepetersen and Abdollah Jalilian. Bug was always present. Fixed. o demo(spatstat) This demonstration script had some unwanted side-effects, such as rescaling the coordinates of standard datasets 'bramblecanes', 'amacrine' and 'demopat', which caused the demonstration to crash when it was repeated several times, and caused errors in demo(data). Fixed. o rmh Visual debugger crashed sometimes with message 'XI not found'. Fixed. o predict.ppm Crashed if the model was fitted using 'covfunargs'. Fixed. o bounding.box Crashed if one of the arguments was NULL. Fixed. o multiplicity.ppp Did not handle data frames of marks. Fixed. CHANGES IN spatstat VERSION 1.34-1 OVERVIEW o We thank Kurt Hornik, Ted Rosenbaum, Ege Rubak and Achim Zeileis for contributions. o Important bug fix. SIGNIFICANT USER-VISIBLE CHANGES o as.box3 Now accepts objects of class 'ppx' or 'boxx'. o crossdist.ppp, crossdist.pp3, crossdist.default New argument 'squared' allows the squared distances to be computed (saving computation time in some applications) BUG FIXES o union.owin, is.subset.owin, dilation.owin Results were sometimes completely wrong for polygons with holes. Spotted by Ted Rosenbaum. Fixed. o psstA, areaLoss Crashed in some cases, with error message 'Number of items to replace is not a multiple of replacement length'. Spotted by Achim Zeileis. Fixed. CHANGES IN spatstat VERSION 1.34-0 OVERVIEW o We thank Andrew Bevan, Ege Rubak, Aruna Jammalamadaka, Greg McSwiggan, Jeff Marcus, Jose M Blanco Moreno, and Brian Ripley for contributions. o spatstat and all its dependencies are now Free Open Source. o spatstat does not require the package 'gpclib' any more. o spatstat now depends on the packages 'tensor', 'abind' and 'polyclip' o polygon clipping is now enabled always. o Substantially more support for point patterns on linear networks. o Faster computations for pairwise interaction models. o Bug fixes in nearest neighbour calculations. o Bug fix in leverage and influence diagnostics. o Version nickname: "Window Cleaner" o spatstat now requires R version 3.0.2 or later NEW FUNCTIONS o as.lpp Convert data to a point pattern on a linear network. o distfun.lpp Distance function for point pattern on a linear network. o eval.linim Evaluate expression involving pixel images on a linear network. o linearKcross, linearKdot, linearKcross.inhom, linearKdot.inhom Multitype K functions for point patterns on a linear network o linearmarkconnect, linearmarkequal Mark connection function and mark equality function for multitype point patterns on a linear network o linearpcfcross, linearpcfdot, linearpcfcross.inhom, linearpcfdot.inhom Multitype pair correlation functions for point patterns on a linear network o linfun New class of functions defined on a linear network o nndist.lpp, nnwhich.lpp, nncross.lpp Methods for nndist, nnwhich, nncross for point patterns on a linear network o nnfun.lpp Method for nnfun for point patterns on a linear network o vcov.lppm Variance-covariance matrix for parameter estimates of a fitted point process model on a linear network. o bilinearform Computes a bilinear form o tilenames, tilenames<- Extract or change the names of tiles in a tessellation. SIGNIFICANT USER-VISIBLE CHANGES o package dependencies Previous versions of spatstat used the package 'gpclib' to perform geometrical calculations on polygons. Spatstat now uses the package 'polyclip' for polygon calculations instead. o free open-source licence The restrictive licence conditions of 'gpclib' no longer apply to users of spatstat. Spatstat and all its dependencies are now covered by a free open-source licence. o polygon clipping In previous versions of spatstat, geometrical calculations on polygons could be performed 'exactly' using gpclib or 'approximately' using pixel discretisation. Polygon calculations are now always performed 'exactly'. o intersect.owin, union.owin, setminus.owin If A and B are polygons, the result is a polygon. o erosion, dilation, opening, closing If the original set is a polygon, the result is a polygon. o intersect.tess, dirichlet The tiles of the resulting tessellation are polygons if the input was polygonal. o plot.owin Polygons with holes can now be plotted with filled colours on any device. o lppm New arguments 'eps' and 'nd' control the quadrature scheme. o pairwise interaction Gibbs models Many calculations for these models have been accelerated. BUG FIXES o nncross.pp3 Values were completely incorrect in some cases. Usually accompanied by a warning about NA values. (Spotted by Andrew Bevan.) Fixed. o nnmap, nnmark A small proportion of pixels had incorrect values. [These were the pixels lying on the boundary of a Dirichlet cell.] Fixed. o leverage.ppm, influence.ppm, dfbetas.ppm Results were incorrect for non-Poisson processes. Fixed. o distcdf Results were incorrect in some cases when W was a window and V was a point pattern. Fixed. o Kcross, Kdot, pcfcross, pcfdot Results were incorrect in some rare cases. Fixed. o as.fv.kppm Erroneously returned a NULL value. Fixed. o vcov.ppm For point process models fitted with method = 'logi', sometimes crashed with error "object 'fit' not found". (Spotted by Ege Rubak). Fixed. o vcov.ppm For multitype point process models, sometimes crashed with error "argument 'par' is missing". Fixed. o plot.im Crashed if some of the pixel values were infinite. Fixed. o owin owin(poly=..) crashed if there were NA's in the polygon coordinates. Spotted by Jeff Marcus. Fixed. o plot.fv Crashed, giving an incomprehensible error, if the plot formula contained a number with a decimal point. Fixed. o alltypes Crashed if envelopes=TRUE and global=TRUE, with error message 'csr.theo not found'. Spotted by Jose M Blanco Moreno. Fixed. o chop.tess, rMosaicField Format of result was garbled in some cases. Fixed. o vcov.ppm Sometimes gave an irrelevant warning "parallel option not available". Fixed. CHANGES IN spatstat VERSION 1.33-0 OVERVIEW o We thank Kurt Hornik and Brian Ripley for advice. o The package namespace has been modified. o Numerous internal changes. o Likelihood cross-validation for smoothing bandwidth. o More flexible models of intensity in cluster/Cox processes. o New generic function for smoothing. o Version nickname: 'Titanic Deckchair' NEW FUNCTIONS o bw.ppl Likelihood cross-validation technique for bandwidth selection in kernel smoothing. o is.lppm, is.kppm, is.slrm Tests whether an object is of class 'lppm', 'kppm' or 'slrm' o Smooth New generic function for spatial smoothing. o Smooth.ppp, Smooth.fv, Smooth.msr Methods for Smooth (identical to smooth.ppp, smooth.fv, smooth.msr respectively) o fitted.kppm Method for 'fitted' for cluster/Cox models SIGNIFICANT USER-VISIBLE CHANGES o namespace The namespace of the spatstat package has been changed. o internal functions Some undocumented internal functions are no longer visible, as they are no longer exported in the namespace. These functions can still be accessed using the form spatstat:::functionname. Functions that are not visible are not guaranteed to exist or to remain the same in future. o methods For some generic functions defined in the spatstat package, it is possible that R may fail to find one of the methods for the generic. This is a temporary problem due to a restriction on the size of the namespace in R 3.0.1. It will be fixed in future versions of R and spatstat. It only applies to methods for a generic which is a spatstat function (such as nndist) and does not apply to methods for generics defined elsewhere (such as density). In the meantime, if this problem should occur, it can be avoided by calling the method explicitly, in the form spatstat:::genericname.classname. o speed The package should run slightly faster overall, due to the improvement of the namespace, and changes to internal code. o envelope New argument 'envir.simul' determines the environment in which to evaluate the expression 'simulate'. o kppm More flexible models of the intensity, and greater control over the intensity fitting procedure, are now possible using the arguments 'covfunargs', 'use.gam', 'nd', 'eps' passed to ppm. Also the argument 'X' may now be a quadrature scheme. o distcdf Arguments W and V can now be point patterns. o Kest New option: correction = "good" selects the best edge correction that can be computed in reasonable time. o bw.diggle Accelerated. o predict.ppm Calculation of standard error has been accelerated. o smooth.ppp, smooth.fv, smooth.msr These functions will soon be 'Deprecated' in favour of the methods Smooth.ppp, Smooth.fv, Smooth.msr respectively. o stratrand, overlap.owin, update.slrm, edge.Trans, edge.Ripley These already-existing functions are now documented. BUG FIXES o kppm, matclust.estpcf, pcfmodel The pair correlation function of the Matern Cluster Process was evaluated incorrectly at distances close to 0. This could have affected the fitted parameters in matclust.estpcf() or kppm(clusters="MatClust"). Fixed. o anova.ppm Would cause an error in future versions of R when 'anova.glm' is removed from the namespace. Fixed. CHANGES IN spatstat VERSION 1.32-0 OVERVIEW o We thank Ege Rubak for major contributions. o Thanks also to Patrick Donnelly, Andrew Hardegen, Tom Lawrence, Robin Milne, Gopalan Nair and Sean O'Riordan. o New 'logistic likelihood' method for fitting Gibbs models. o Substantial acceleration of several functions including profile maximum pseudolikelihood and variance calculations for Gibbs models. o Nearest neighbours for point patterns in 3D o Nearest-neighbour interpolation in 2D o New 'progress plots' o Hard core thresholds can be estimated automatically. o More support for colour maps o More support for 'fv' objects o Spatstat now has version nicknames. The current version is "Logistical Nightmare". o Minor improvements and bug fixes. NEW FUNCTIONS o nncross.pp3 Method for 'nncross' for point patterns in 3D o nnmark Mark of nearest neighbour - can be used for interpolation o dclf.progress, mad.progress Progress plots (envelope representations) for the DCLF and MAD tests. o deriv.fv Numerical differentiation for 'fv' objects. o interp.colourmap Smooth interpolation of colour map objects - makes it easy to build colour maps with gradual changes in colour o tweak.colourmap Change individual colour values in a colour map object o beachcolourmap Colour scheme appropriate for `altitudes' (signed numerical values) o as.fv Convert various kinds of data to an 'fv' object o quadscheme.logi Generates quadrature schemes for the logistic method of ppm. o beginner Introduction for beginners. SIGNIFICANT USER-VISIBLE CHANGES o ppm New option: method = "logi" Fits a Gibbs model by the newly developed 'logistic likelihood' method which is often faster and more accurate than maximum pseudolikelihood. Code contributed by Ege Rubak. o profilepl Greatly accelerated, especially for area-interaction models. o vcov.ppm Greatly accelerated for higher-order interaction models. o smooth.ppp Now handles bandwidths equal to zero (by invoking 'nnmark') o Hardcore, StraussHard The hard core distance 'hc' can now be omitted; it will be estimated from data. o plot.ppp Now behaves differently if there are multiple columns of marks. Each column of marks is plotted, in a series of separate plots arranged side-by-side. o plot.im Argument 'col' can now be a function o lohboot Now computes confidence intervals for L-functions as well (fun="Lest" or fun="Linhom") o dclf.test, mad.test The argument X can now be an object produced by a previous call to dclf.test or mad. o plot.fv Labelling of plots has been improved in some cases. o smooth.fv Further options added. o density.ppp The argument 'weights' can now be a matrix. o smooth.ppp Accelerated, when there are several columns of marks. o density.ppp Accelerated slightly. o simulate.ppm, simulate.kppm The total computation time is also returned. o simulate.kppm Now catches errors (such as 'insufficient memory'). o latest.news, licence.polygons Can now be executed by typing the name of the function without parentheses. o latest.news The text is now displayed one page at a time. BUG FIXES o Hest, Gfox, Jfox The 'raw' estimate was not computed correctly (or at least it was not the raw estimate described in the help files). Spotted by Tom Lawrence. Fixed. o edges2vees Format of result was incorrect if there were fewer than 3 edges. Fixed. o Jfox The theoretical value (corresponding to independence between X and Y) was erroneously given as 0 instead of 1. Spotted by Patrick Donnelly. Fixed. o ppm, quadscheme, default.dummy If the grid spacing parameter 'eps' was specified, the quadrature scheme was sometimes slightly incorrect (missing a few dummy points near the window boundary). Fixed. o print.timed Matrices were printed incorrectly. Fixed. CHANGES IN spatstat VERSION 1.31-3 OVERVIEW o spatstat now 'Suggests' the package 'tensor' o Code slightly accelerated. o More support for pooling of envelopes. o Bug fixes. NEW FUNCTIONS o nnmap Given a point pattern, finds the k-th nearest point in the pattern from each pixel in a raster. o coef.fii, coef.summary.fii Extract the interaction coefficients of a fitted interpoint interaction o edges2vees Low-level function for finding triples in a graph. SIGNIFICANT USER-VISIBLE CHANGES o predict.ppm New argument 'correction' allows choice of edge correction when calculating the conditional intensity. o pool.envelope New arguments 'savefuns' and 'savepatterns'. o pool.envelope Envelopes generated with VARIANCE=TRUE can now be pooled. o pool.envelope The plot settings of the input data are now respected. o Numerous functions have been slightly accelerated. BUG FIXES o predict.ppm Calculation of the conditional intensity omitted the edge correction if correction='translate' or correction='periodic'. Fixed. o shift.lpp, rotate.lpp, scalardilate.lpp, affine.lpp, shift.linnet, rotate.linnet, scalardilate.linnet, affine.linnet The enclosing window was not correctly transformed. Fixed. o rHardcore, rStraussHard, rDiggleGratton, rDGS The return value was invisible. Fixed. o ppm In rare cases the results obtained with forcefit=FALSE and forcefit=TRUE were different, due to numerical rounding effects. Fixed. CHANGES IN spatstat VERSION 1.31-2 OVERVIEW o We thank Robin Corria Anslie, Julian Gilbey, Kiran Marchikanti, Ege Rubak and Thordis Linda Thorarinsdottir for contributions. o spatstat now depends on R 3.0.0 o More support for linear networks o More functionality for nearest neighbours o Bug fix in fitting Geyer model o Performance improvements and bug fixes NEW FUNCTIONS o affine.lpp, shift.lpp, rotate.lpp, rescale.lpp, scalardilate.lpp Geometrical transformations for point patterns on a linear network o affine.linnet, shift.linnet, rotate.linnet, rescale.linnet, scalardilate.linnet Geometrical transformations for linear networks o [.linnet Subset operator for linear networks o timed Records the computation time taken SIGNIFICANT USER-VISIBLE CHANGES o nncross nncross.ppp can now find the k-th nearest neighbours, for any k. o nndist, nnwhich New argument 'by' makes it possible to find nearest neighbours belonging to specified subsets in a point pattern, for example, the nearest neighbour of each type in a multitype point pattern. o [.fv Now handles the argument 'drop'. o with.fv Argument 'drop' replaced by new argument 'fun' (with different interpretation). o [.lpp Subset index may now be a window (class 'owin') o Kest Options correction='border' and correction='none' now run about 4 times faster, thanks to Julian Gilbey. o density.ppp Numerical underflow no longer occurs when sigma is very small and 'at="points"'. A warning is no longer issued. Thanks to Robin Corria Anslie. o crossing.psp New argument 'fatal' allows the user to handle empty intersections o union.owin It is now guaranteed that if A is a subset of B, then union.owin(A,B)=B. o plot.colourmap Now passes arguments to axis() to control the plot. Appearance of plot improved. o image.listof Now passes arguments to plot.colourmap() if equal.ribbon=TRUE. o kppm Accelerated (especially for large datasets). o plot.envelope plot.envelope is now equivalent to plot.fv and is essentially redundant. o rThomas, rMatClust, rNeymanScott Improved explanations in help files. o All functions Many functions have been slightly accelerated. BUG FIXES o ppm Results were incorrect for the Geyer saturation model with a non-integer value of the saturation parameter 'sat'. Spotted by Thordis Linda Thorarinsdottir. Bug introduced in spatstat 1.20-0, July 2010. Fixed. o ppm Fitting a stationary Poisson process using a nonzero value of 'rbord', as in "ppm(X, rbord=R)" with R > 0, gave incorrect results. Fixed. o predict.slrm Crashed with message 'longer object length is not a multiple of shorter object length' if the original data window was not a rectangle. Fixed. o iplot Main title was sometimes incorrect. Fixed. o plot.layered Ignored argument 'main' in some cases. Fixed. o plot.listof, image.listof Crashed sometimes with a message 'figure margins too large' when equal.ribbon=TRUE. Fixed. o print.ppx Crashed if the object contained local coordinates. Fixed. o transect.im Crashed if the transect lay partially outside the image domain. Fixed. o rthin Crashed if X was empty. Fixed. o max.im, min.im, range.im Ignored additional arguments after the first argument. Fixed. o update.lppm Updated object did not remember the name of the original dataset. Fixed. o envelope Grey shading disappeared from plots of envelope objects when the envelopes were transformed using eval.fv or eval.fasp. Fixed. CHANGES IN spatstat VERSION 1.31-1 OVERVIEW o We thank Marcelino de la Cruz, Daniel Esser, Jason Goldstick, Abdollah Jalilian, Ege Rubak and Fabrice Vinatier for contributions. o Nonparametric estimation and tests for point patterns in a linear network. o More support for 'layered' objects. o Find clumps in a point pattern. o Connected component interaction model. o Improvements to interactive plots. o Visual debugger for Metropolis-Hastings algorithm. o Bug fix in Metropolis-Hastings simulation of Geyer process. o Faster Metropolis-Hastings simulation. o Faster computation of 'envelope', 'fv' and 'fasp' objects. o Improvements and bug fixes. NEW FUNCTIONS o connected.ppp Find clumps in a point pattern. o kstest.lpp, kstest.lppm The spatial Kolmogorov-Smirnov test can now be applied to point patterns on a linear network (class 'lpp') and point processes on a linear network (class 'lppm'). o bermantest.lpp, bermantest.lppm Berman's Z1 and Z2 tests can now be applied to point patterns on a linear network (class 'lpp') and point processes on a linear network (class 'lppm'). o rhohat.lpp, rhohat.lppm Nonparametric estimation of the dependence of a point pattern on a spatial covariate: 'rhohat' now applies to objects of class 'lpp' and 'lppm'. o intensity.lpp Empirical intensity of a point pattern on a linear network. o as.function.rhohat Converts a 'rhohat' object to a function, with extrapolation beyond the endpoints. o [.layered Subset operator for layered objects. o shift, rotate, affine, rescale, reflect, flipxy, scalardilate These geometrical transformations now work for 'layered' objects. o iplot.layered Interactive plotting for 'layered' objects. o as.owin.layered Method for as.owin for layered objects. o [.owin Subset operator for windows, equivalent to intersect.owin. o rcellnumber Generates random integers for the Baddeley-Silverman counterexample. o is.lpp Tests whether an object is a point pattern on a linear network. o is.stationary.lppm, is.poisson.lppm New methods for is.stationary and is.poisson for class 'lppm' o sessionLibs Print library names and version numbers (for use in Sweave scripts) SIGNIFICANT USER-VISIBLE CHANGES o iplot iplot is now generic, with methods for 'ppp', 'layered' and 'default'. iplot methods now support zoom and pan navigation. o rmh.default New argument 'snoop' allows the user to activate a visual debugger for the Metropolis-Hastings algorithm. o connected connected() is now generic, with methods for 'im', 'owin' and 'ppp'. o alltypes Now works for lpp objects o rlabel Now works for lpp, pp3, ppx objects o plot.kstest Can now perform P-P and Q-Q plots as well. o plot.fasp New argument 'samey' controls whether all panels have the same y limits. o plot.fasp Changed default value of 'samex'. o Objects of class 'envelope', 'fv' and 'fasp' Reduced computation time and storage required for these objects. o pcfmodel.kppm Improved calculation. o plot.fv Improved collision-avoidance algorithm (for avoiding overlaps between curves and legend) o ppm Improved error handling o envelope All methods for 'envelope' now handle fun=NULL o setminus.owin Better handling of the case where both arguments are rectangles. o rmh Simulation has been further accelerated. o lppm Accelerated. o vcov.ppm Accelerated. o marktable Accelerated. o Triplets() interaction Accelerated. o alltypes Accelerated when envelope=TRUE. BUG FIXES o rmh Simulation of the Geyer saturation process was incorrect. [Bug introduced in previous version, spatstat 1.31-0.] Fixed. o rmh Simulation of the Geyer saturation process was incorrectly initialised, so that the results of a short run (i.e. small value of 'nrep') were incorrect, while long runs were correct. [Bug introduced in spatstat 1.17-0, october 2009.] Fixed. o ppm Objects fitted with use.gam=TRUE caused fatal errors in various functions including print, summary, vcov and model.frame. Spotted by Jason Goldstick. Fixed. o lpp, runiflpp, rpoislpp Empty point patterns caused an error. Fixed. o rmh.default Crashed for hybrid models, with message 'Attempt to apply non-function'. Spotted by Ege Rubak. Fixed. o relrisk Crashed when 'at="points"' for a multitype pattern with more than 2 types. Spotted by Marcelino de la Cruz. Fixed. o erosion.owin, dilation.psp, border Ignored the arguments "..." in some cases (namely when the window was polygonal and 'gpclib' was disabled). Fixed. o rsyst, rcell Did not correctly handle the argument 'dx'. Spotted by Fabrice Vinatier. Fixed. o correction="trans" Various functions such as Kest no longer recognised 'correction = "trans"'. Fixed. o istat Crashed with an error message about envelopes. Fixed. o summary.ppm, print.ppm p-values which were exactly equal to zero were reported as NA. Fixed. o [.im Crashed if the intersection consisted of a single row or column of pixels. Fixed. o plot.im Sometimes incorrectly displayed an image consisting of a single row or column of pixels. Fixed. o plot.layered The plot region was determined by the first layer, so that objects in subsequent layers could sometimes fall outside the plot region. Fixed. o transect.im If the arguments 'from' and 'to' were numeric vectors of length 2, the result was garbled. Fixed. o Inhomogeneous K functions and pair correlation functions [Kinhom, pcfinhom, Kcross.inhom, Kdot.inhom, pcfcross.inhom, etc.] These functions reported an error 'lambda is not a vector' if the intensity argument lambda was computed using density(, at="points"). Fixed. o rlabel Did not accept a point pattern with a hyperframe of marks. Fixed. o alltypes Crashed when envelope=TRUE if the summary function 'fun' did not have default values for the marks i and j. Fixed. o Kres, Gres, psst, psstA Ignored the unit of length. Fixed. CHANGES IN spatstat VERSION 1.31-0 OVERVIEW o We thank Frederic Lavancier and Ege Rubak for contributions. o Major bug fix in simulation of area-interaction process. o Metropolis-Hastings simulations accelerated. o Rounding of spatial coordinates o clmfires dataset corrected. o Bug fixes and minor improvements. NEW FUNCTIONS o round.ppp Round the spatial coordinates of a point pattern to a specified number of decimal places. o rounding Determine whether a dataset has been rounded. SIGNIFICANT USER-VISIBLE CHANGES o rmh Simulation of the following models has been accelerated: areaint, dgs, diggra, fiksel, geyer, hardcore, lennard, multihard, strauss, straush, straussm, strausshm. o rmh The transition history of the simulation (which is saved if 'track=TRUE') now also contains the value of the Hastings ratio for each proposal. o clmfires The clmfires dataset has been modified to remove errors and inconsistencies. o plot.linim Appearance of the plot has been improved, when style='width'. o summary.ppm Now reports whether the spatial coordinates have been rounded. o dclf.test, mad.test The range of distance values ('rinterval') used in the test is now printed in the test output, and is saved as an attribute. BUG FIXES o rmh Simulation of the Area-Interaction model was completely incorrect. Spotted by Frederic Lavancier. The bug was introduced in spatstat version 1.23-6 or later. Fixed. o dclf.test The test statistic was incorrectly scaled (by a few percent). This did not affect the p-value of the test. Fixed. o ppx If argument 'coord.type' was missing, various errors occurred: a crash may have occurred, or the results may have depended on the storage type of the data. Spotted by Ege Rubak. Fixed. o plot.ppx Crashed for 1-dimensional point patterns. Spotted by Ege Rubak. Fixed. CHANGES IN spatstat VERSION 1.30-0 OVERVIEW o We thank Jorge Mateu, Andrew Bevan, Olivier Flores, Marie-Colette van Lieshout, Nicolas Picard and Ege Rubak for contributions. o The spatstat manual now exceeds 1000 pages. o Hybrids of point process models. o Five new datasets o Second order composite likelihood method for kppm. o Inhomogeneous F, G and J functions. o Delaunay graph distance o Fixed serious bug in 'lppm' for marked patterns. o bug fix in some calculations for Geyer model o Improvements to linear networks code o Pixel images can now be displayed with a logarithmic colour map. o spatstat now formally 'Depends' on the R core package 'grDevices' o miscellaneous improvements and bug fixes NEW DATASETS o clmfires Forest fires in Castilla-La Mancha o gordon People sitting on the grass in Gordon Square, London o hyytiala Mixed forest in Hyytiala, Finland (marked by species) o paracou Kimboto trees in Paracou, French Guiana (marked as adult/juvenile) o waka Trees in Waka national park (marked with diameters) NEW FUNCTIONS o Hybrid The hybrid of several point process interactions [Joint research with Jorge Mateu and Andrew Bevan] o is.hybrid Recognise a hybrid interaction or hybrid point process model. o Finhom, Ginhom, Jinhom Inhomogeneous versions of the F, G and J functions [Thanks to Marie-Colette van Lieshout] o delaunay.distance Graph distance in the Delaunay triangulation. o distcdf Cumulative distribution function of the distance between two independent random points in a given window. o bw.frac Bandwidth selection based on window geometry o shortside.owin, sidelengths.owin Side lengths of (enclosing rectangle of) a window SIGNIFICANT USER-VISIBLE CHANGES o ppm Can now fit models with 'hybrid' interactions [Joint research with Jorge Mateu and Andrew Bevan] o kppm Now has the option of fitting models using Guan's (2006) second order composite likelihood. o envelope.lpp Now handles multitype point patterns. o envelope.envelope New argument 'transform' allows the user to apply a transformation to previously-computed summary functions. o runifpointOnLines, rpoisppOnLines, runiflpp, rpoislpp Can now generate multitype point patterns. o rmhmodel, rmh, simulate.ppm Now handle point process models with 'hybrid' interactions. o kppm Accelerated, and more reliable, due to better choice of starting values in the optimisation procedure. o kppm The internal format of kppm objects has changed. o minimum contrast estimation Error messages from the optimising function 'optim' are now trapped and handled. o rhohat This command is now generic, with methods for ppp, quad, and ppm. o raster.x, raster.y, raster.xy These functions have a new argument 'drop' o summary.ppm Improved behaviour when the model covariates are a data frame. o progressreport Output improved. o second order summary functions (Kest, Lest, Kinhom, pcf.ppp, Kdot, Kcross, Ldot etc etc) These functions now accept correction="translation" as an alternative to correction = "translate", for consistency. o plot.im New argument 'log' allows colour map to be equally spaced on a log scale. o as.owin.ppm, as.owin.kppm New argument 'from' allows the user to extract the spatial window of the point data (from="points") or the covariate images (from="covariates") o dclf.test, mad.test The rule for handling tied values of the test statistic has been changed. The tied values are now randomly ordered to obtain a randomised integer rank. o with.fv New argument 'enclos' allows evaluation in other environments BUG FIXES o lppm For multitype patterns, the fitted model was completely incorrect due to an error in constructing the quadrature scheme. Fixed. o Geyer For point process models with the 'Geyer' interaction, vcov.ppm() and suffstat() sometimes gave incorrect answers. [Spotted by Ege Rubak.] Fixed. o as.im.im Did not correctly handle factor-valued images if one of the arguments 'dimyx', 'eps', 'xy' was given. Fixed. o envelope.lppm Crashed if the model was multitype. Fixed. o lpp Did not handle empty patterns. Fixed. o density.ppp If 'sigma' was a bandwidth selection function such as bw.scott() which returned a numeric vector of length 2, a warning message was issued, and the smoothing bandwidth was erroneously taken to be the first element of the vector. Fixed. o Fest, Jcross, Jdot, Jmulti If these functions were computed using correction = 'rs', plotting them would sometimes give an error, with the message "no finite x/y limits". Fixed. o pcfmodel.kppm For models with clusters="VarGamma" the value of the pcf at distance r=0 was given as NaN. Fixed. o vcov.ppm Result was incorrect in rare cases, due to numerical rounding effects. Fixed. o rLGCP, simulate.kppm For models fitted to point patterns in an irregular window, simulation sometimes failed, with a message that the image 'mu' did not cover the simulation window. (Spotted by George Limitsios.) Fixed. o rLGCP, simulate.kppm Crashed sometimes with an error about unequal x and y steps (from 'GaussRF'). Fixed. CHANGES IN spatstat VERSION 1.29-0 OVERVIEW o We thank Colin Beale, Li Haitao, Frederic Lavancier, Erika Mudrak and Ege Rubak for contributions. o random sequential packing o Allard-Fraley estimator o method for pooling several quadrat tests o better control over dummy points in ppm o more support for data on a linear network o nearest neighbour map o changes to subsetting of images o improvements and bug fixes NEW FUNCTIONS o clusterset Allard-Fraley estimator of high-density features in a point pattern o pool.quadrattest Pool several quadrat tests o nnfun Nearest-neighbour map of a point pattern or a line segment pattern o as.ppm Converts various kinds of objects to ppm o crossdist.lpp Shortest-path distances between pairs of points in a linear network o nobs.lppm Method for 'nobs' for lppm objects. o as.linim Converts various kinds of objects to 'linim' o model.images.slrm Method for model.images for slrm objects o rotate.im Rotate a pixel image SIGNIFICANT USER-VISIBLE CHANGES o "[.im" and "[<-.im" New argument 'j' allows any type of matrix indexing to be used. o "[.im" Default behaviour changed in the case of a rectangular subset. New argument 'rescue' can be set to TRUE to reinstate previous behaviour. o rSSI Performs 'Random Sequential Packing' if n=Inf. o ppm New argument 'eps' determines the spacing between dummy points. (also works for related functions quadscheme, default.dummy, ...) o fitted.ppm, predict.ppm Argument 'new.coef' specifies a vector of parameter values to replace the fitted coefficients of the model. o lppm Stepwise model selection using step() now works for lppm objects. o vcov.slrm Can now calculate correlation matrix or Fisher information matrix as well as variance-covariance matrix. o eval.fv Improved behaviour when plotted. o "[.fv" Improved behaviour when plotted. o lohboot When the result is plotted, the confidence limits are now shaded. o lohboot New argument 'global' allows global (simultaneous) confidence bands instead of pointwise confidence intervals. o vcov.ppm Accelerated by 30% in some cases. o quadrat.test.splitppp The result is now a single object of class 'quadrattest' o progressreport Improved output (also affects many functions which print progress reports) o Full redwood data (redwoodfull) Plot function redwoodfull.extra$plotit has been slightly improved. o nncross This function is now generic, with methods for 'ppp' and 'default'. o distfun The internal format of objects of class 'distfun' has been changed. o duplicated.ppp, unique.ppp New argument 'rule' allows behaviour to be consistent with package 'deldir' BUG FIXES o bdist.tiles Values were incorrect in some cases due to numerical error. (Spotted by Erika Mudrak.) Fixed. o vcov.ppm, suffstat These functions sometimes gave incorrect values for marked point process models. Fixed. o simulate.ppm, predict.ppm Did not correctly handle the 'window' argument. (Spotted by Li Haitao). Fixed. o smooth.ppp, markmean If sigma was very small, strange values were produced, due to numerical underflow. (Spotted by Colin Beale). Fixed. o MultiHard, MultiStrauss, MultiStraussHard Crashed if the data point pattern was empty. (Spotted by Ege Rubak). Fixed. o vcov.ppm Crashed sporadically, with multitype interactions. (Spotted by Ege Rubak). Fixed. o rStrauss, rHardcore, rStraussHard, rDiggleGratton, rDGS If the simulated pattern was empty, these functions would either crash, or return a pattern containing 1 point. (Spotted by Frederic Lavancier). Fixed. o model.matrix.slrm Crashed if the model was fitted using split pixels. Fixed. o residuals.ppm, diagnose.ppm Did not always correctly handle models that included offset terms. Fixed. o project.ppm When a model was projected by project.ppm or by ppm(project=TRUE), the edge corrections used the projected models were sometimes different from the edge corrections in the original model, so that the projected and unprojected models were not comparable. Fixed. o plot.listof, plot.splitppp Crashed sometimes due to a scoping problem. Fixed. o dclf.test, mad.test Crashed if any of the function values were infinite or NaN. Fixed. o psstA Default plot did not show the horizontal line at y=0 corresponding to a perfect fit. Fixed. o vcov.ppm names attribute was spelt incorrectly in some cases. Fixed. CHANGES IN spatstat VERSION 1.28-2 OVERVIEW o We thank Thomas Bendtsen, Ya-Mei Chang, Daniel Esser, Robert John-Chandran, Ege Rubak and Yong Song for contributions. o New code for Partial Residual Plots and Added Variable Plots. o maximum profile pseudolikelihood computations vastly accelerated. o New dataset: cells in gastric mucosa o now possible to capture every k-th state of Metropolis-Hastings algorithm. o size of 'ppm' objects reduced. o scope of 'intensity.ppm' extended. o quadrat.test can now perform Monte Carlo tests and one/two-sided tests o improvements to 'plot.fv' o improvement to 'rescale' o some datasets reorganised. o numerous bug fixes NEW DATASET o mucosa Cells in gastric mucosa Kindly contributed by Dr Thomas Bendtsen NEW FUNCTIONS o parres Partial residual plots for spatial point process models. A diagnostic for the form of a covariate effect. o addvar Added variable plots for spatial point process models. A diagnostic for the existence of a covariate effect. SIGNIFICANT USER-VISIBLE CHANGES o profilepl Accelerated (typically by a factor of 5). o rmh, rmhcontrol It is now possible to save every k-th iteration of the Metropolis-Hastings algorithm. The arguments 'nsave' and 'nburn' may be given to rmh or to rmhcontrol. They specify that the point pattern will be saved every 'nsave' iterations, after an initial burn-in of 'nburn' iterations. o simulate.ppm New argument 'singlerun' determines whether the simulated patterns are generated using independent runs of the Metropolis-Hastings algorithm or are obtained by performing one long run of the algorithm and saving every k-th iteration. o exactMPLEstrauss New argument 'project' determines whether the parameter gamma is constrained to lie in [0,1]. o intensity.ppm Now works for stationary point process models with the interactions DiggleGratton, DiggleGatesStibbard, Fiksel, PairPiece and Softcore. o plot.fv Improved algorithm for avoiding collisions between graphics and legend. o plot.fv New argument 'log' allows plotting on logarithmic axes. o envelope Can now calculate an estimate of the true significance level of the "wrong" test (which declares the observed summary function to be significant if it lies outside the pointwise critical boundary anywhere). Controlled by new argument 'do.pwrong'. o quadrat.test New argument 'alternative' allows choice of alternative hypothesis and returns one-sided or two-sided p-values as appropriate. o quadrat.test Can now perform Monte Carlo test as well (for use in small samples where the chi^2 approximation is inaccurate) o Softcore Improved numerical stability. New argument 'sigma0' for manual control over rescaling. o rescale If scale argument 's' is missing, then the data are rescaled to native units. For example if the current unit is 0.1 metres, coordinates will be re-expressed in metres. o psst Extra argument 'verbose=TRUE' o is.subset.owin Accelerated for polygonal windows o rmh.default 'track' is no longer a formal argument of rmh.default; it is now a parameter of rmhcontrol. However there is no change in usage: the argument 'track' can still be given to rmh.default. o clf.test Has been renamed 'dclf.test' to give proper attribution to Peter Diggle. o betacells This dataset has been restructured. The vector of cell profile areas, formerly given by betacells.extra$area, has now been included as a column of marks in the point pattern 'betacells'. o ants The function ants.extra$plot() has been renamed plotit() for conformity with other datasets. o redwoodfull The function redwoodfull.extra$plot() has been renamed plotit() for conformity with other datasets. o nbfires For conformity with other datasets, there is now an object nbfires.extra BUG FIXES o ripras Expansion factor was incorrect in the rectangular case. Fixed. o Triplets Crashed sometimes with error "dim(X) must have positive length". Fixed. o affine.im Crashed in the case of a diagonal transformation matrix! Spotted by Ege Rubak. Fixed. o envelope.envelope Ignored the argument 'global'. Fixed. o MultiStraussHard The printed output showed the hardcore radii as NULL. Spotted by Ege Rubak. Fixed. o "[.psp" Crashed if the data were generated by rpoisline(). Spotted by Marcelino de la Cruz. Fixed. o plot.linim If style="colour", the main title was always "x". Fixed. o plot.ppx Setting add=TRUE did not prevent the domain being plotted. Fixed. o rmh Crashed if x.start was an empty point pattern. Spotted by Ege Rubak. Fixed. o as.ppp.data.frame Crashed if any points lay outside the window. Spotted by Ege Rubak. Fixed. o Ripley isotropic edge correction Divide-by-zero error in rare cases. Spotted by Daniel Esser. Fixed. o summary functions For many of the summary functions (e.g. Kest, pcf), the result of saving the object to disc was an enormous file. Spotted by Robert John-Chandran. Fixed. o pcf.fv Default plot was wrongly coloured. Fixed. CHANGES IN spatstat VERSION 1.28-1 OVERVIEW o We thank Ege Rubak, Gopal Nair, Jens Oehlschlaegel and Mike Zamboni for contributions. o New approximation to the intensity of a fitted Gibbs model. o Minor improvements and bug fixes o spatstat now 'Suggests' the package 'gsl' NEW FUNCTIONS o intensity, intensity.ppp, intensity.ppm Calculate the intensity of a dataset or fitted model. Includes new approximation to the intensity of a fitted Gibbs model o LambertW Lambert's W-function SIGNIFICANT USER-VISIBLE CHANGES o envelope Improved plot labels for envelopes that were generated using the 'transform' argument. o plot.fv Improved algorithm for collision detection. o plot.im Now returns the colour map used. o plot.listof, plot.splitppp Slight change to handling of plot.begin and plot.end o square Now accepts vectors of length 2 o plot.fii Increased resolution of the plot obtained from plot(fitin(ppm(...))) o image.listof If equal.ribbon=TRUE, the colour ribbon will no longer be displayed repeatedly for each panel, but will now be plotted only once, at the right hand side of the plot array. BUG FIXES o vcov.ppm Results were sometimes incorrect for a Gibbs model with non-trivial trend. Spotted by Ege Rubak. Fixed. o nncross In rare cases the results could be slightly incorrect. Spotted by Jens Oehlschlaegel. Fixed. o plot.fv When add=TRUE, the x limits were sometimes truncated. Spotted by Mike Zamboni. Fixed. o plot.im Labels for the tick marks on the colour ribbon were sometimes ridiculous, e.g. "2.00000001". Fixed. CHANGES IN spatstat VERSION 1.28-0 OVERVIEW o We thank Farzaneh Safavimanesh, Andrew Hardegen and Tom Lawrence for contributions. o Improvements to 3D summary functions. o A multidimensional point pattern (ppx) can now have 'local' coordinates as well as spatial and temporal coordinates and marks. o Changed format for point patterns on a linear network (lpp). Changes are backward compatible. Many computations run faster. o More support for fitted cluster models (kppm). o split method for multidimensional point patterns (ppx) and point patterns on a linear network (lpp). o Fixed bug causing errors in plot.im o Miscellaneous improvements and bug fixes NEW FUNCTIONS o exactMPLEstrauss Fits the stationary Strauss point process model using an exact maximum pseudolikelihood technique. This is mainly intended for technical investigation of algorithms. o split.ppx Method for 'split' for multidimensional point patterns (class 'ppx'). This also works for point patterns on a linear network (class 'lpp'). o model.images This function is now generic, with methods for classes ppm, kppm, lppm o model.frame, model.matrix These generic functions now have methods for classes kppm, lppm o as.owin.kppm, as.owin.lppm New methods for 'as.owin' for objects of class kppm, lppm o as.linnet.lppm Extracts the linear network in which a point process model was fitted. SIGNIFICANT USER-VISIBLE CHANGES o class 'ppx' An object of class 'ppx' may now include 'local' coordinates as well as 'spatial' and 'temporal' coordinates, and marks. o ppx Arguments have changed. o class 'lpp' The internal format of lpp objects has been extended (but is backward-compatible). Many computations run faster. To convert an object to the new format: X <- lpp(as.ppp(X), as.linnet(X)). o F3est Calculation of theoretical Poisson curve ('theo') has changed, and is now controlled by the argument 'sphere'. o rmh, rmhstart The initial state ('start') can now be missing or null. o im, as.im The pixel coordinates in an image object are now generated more accurately. This avoids a numerical error in plot.im. o eval.fv, eval.fasp Evaluation is now applied only to columns that contain values of the function itself (rather than values of the derivative, hazard rate, etc). This is controlled by the new argument 'dotonly'. o spatstat.options New option 'nvoxel' o quad.ppm Now accepts kppm objects. o str This generic function (for inspecting the internal structure of an object) now produces sensible output for objects of class 'hyperframe', 'ppx', 'lpp' o ppx, coords.ppx, coords<-.ppx The arguments to these functions have changed. o lgcp.estK, Kmodel Computation can be greatly accelerated by setting spatstat.options(fastK.lgcp=TRUE). o G3est Computation accelerated. o envelope Computation slightly accelerated. o spatstat.options New option 'fastK.lgcp' BUG FIXES o nndist.psp Caused an error if length(k) > 1. Fixed. o plot.im Sometimes reported an error "useRaster=TRUE can only be used with a regular grid." This was due to numerical rounding effects on the coordinates of a pixel image. Fixed. o plot.fv If a formula was used to specify the plot, the names of variables in the formula were sometimes incorrectly matched to *functions*. Spotted by Farzaneh Safavimanesh. Fixed. o F3est Took a very long time if the containing box was very flat, due to the default value of 'vside'. Fixed. o rmh, rmhmodel An erroneous warning about 'outdated format of rmhmodel object' sometimes occurred. Fixed. o marks<-.ppx Names of result were incorrect. Fixed. o hyperframe class Various minor bug fixes. CHANGES IN spatstat VERSION 1.27-0 OVERVIEW o Variance estimates are now available for all Gibbs point process models. o Cressie-Loosmore-Ford test implemented o plot.fv now avoids collisions between the legend and the graphics. o Extension to predict.ppm o Improvements to envelopes and multitype summary functions. o Line transects of a pixel image. o Changes to defaults in Metropolis-Hastings simulations. o More geometrical operations o Bug fixes. o We thank Aruna Jammalamadaka for contributions. NEW FUNCTIONS o clf.test Perform the Cressie (1991)/ Loosmore and Ford (2006) test of CSR (or another model) o mad.test Perform the Maximum Absolute Deviation test of CSR (or another model). o convolve.im Compute convolution of pixel images. o Kmulti.inhom Counterpart of 'Kmulti' for spatially-varying intensity. o rmhexpand Specify a simulation window, or a rule for expanding the simulation window, in Metropolis-Hastings simulation (rmh) o transect.im Extract pixel values along a line transect. o affine.im Apply an affine transformation to a pixel image. o scalardilate Perform scalar dilation of a geometrical object relative to a specified origin. o reflect Reflect a geometrical object through the origin. o "[.lpp", "[.ppx" Subset operators for the classes "lpp" (point pattern on linear network) and "ppx" (multidimensional space-time point pattern). o is.rectangle, is.polygonal, is.mask Determine whether a window w is a rectangle, a domain with polygonal boundaries, or a binary pixel mask. o has.offset Determines whether a fitted model object (of any kind) has an offset. SIGNIFICANT USER-VISIBLE CHANGES o predict.ppm This function can now calculate the conditional intensity of a model relative to any point pattern X (not just the original data pattern). o vcov.ppm This function now handles all Gibbs point process models. o plot.fv Collisions between the legend box and the graphics are now detected and avoided. o rmh.ppm, rmh.default, simulate.ppm, qqplot.ppm, envelope.ppm These functions now have slightly different default behaviour because of changes to the handling of arguments to 'rmhcontrol'. o rmhcontrol The default value of the parameters 'periodic' and 'expand' has changed. o rmhcontrol The parameter 'expand' can now be in any format acceptable to rmhexpand(). o rmh.ppm, rmh.default, simulate.ppm Any 'rmhcontrol' parameter can now be given directly as an argument to rmh.ppm, rmh.default or simulate.ppm. o Kmulti, Gmulti, Jmulti The arguments I, J can now be any kind of subset index or can be functions that yield a subset index. o envelope.envelope In envelope(E, fun=NULL) if E does not contain simulated summary functions, but does contain simulated point patterns, then 'fun' now defaults to Kest, instead of flagging an error. o print.ppp, summary.ppp If the point pattern x was generated by Metropolis-Hastings simulation using 'rmh', then print(x) and summary(x) show information about the simulation parameters. o print.ppm Standard errors for the parameter estimates, and confidence intervals for the parameters, can now be printed for all Gibbs models (but are printed only for Poisson models by default). o eval.im Images with incompatible dimensions are now resampled to make them compatible (if harmonize=TRUE). o spatstat.options New option 'print.ppm.SE' controls whether standard errors and confidence intervals are printed for all Gibbs models, for Poisson models only, or are never printed. o inside.owin Now accepts the form list(x,y) for the first argument. o image.listof New argument 'equal.ribbon' allows several images to be plotted with the same colour map. o is.subset.owin Improved accuracy in marginal cases. o expand.owin Functionality extended to handle all types of expansion rule. o default.rmhcontrol, default.expand These functions now work with models of class 'rmhmodel' as well as 'ppm' o print.rmhcontrol Output improved. BUG FIXES o linearK, linearKinhom If any data points were located exactly at a vertex of the linear network, the weights for Ang's correction were incorrect, due to numerical error. This sometimes produced infinite or NA values of the linear K function. Fixed. o predict.ppm In some cases, predict.ppm(type="cif") generated a spurious warning that "number of rows of result is not a multiple of vector length." Fixed. o crossing.psp Results were sometimes incorrect due to numerical rounding error associated with GCC bug #323. Fixed. o MultiHard, MultiStrauss, MultiStraussHard If the mark values contained non-alphanumeric characters, the names of the interaction coefficients in coef(ppm(...)) were sometimes garbled. Fixed. o profilepl For edge corrections other than the border correction, an error message about 'rbord' would sometimes occur. Fixed. o is.marked, is.multitype These functions gave the wrong answer for 'lpp' objects. Fixed. o marks<-.lpp, marks<-.ppx Format of result was garbled if new columns of marks were added. Fixed. o reach.rmhmodel Gave the wrong answer for Geyer and BadGey models. Fixed. o envelope.envelope Ignored the argument 'savefuns'. Fixed. o BadGey Sometimes wrongly asserted that the parameter 'sat' was invalid. Occurred only in ppm(project=TRUE). Fixed. CHANGES IN spatstat VERSION 1.26-1 OVERVIEW o Variance-covariance matrix for Gibbs point process models. o Bootstrap confidence bands for pair correlation function and K function. o Bug fix in scan test. o Area-interaction model accelerated. o we thank Jean-Francois Coeurjolly and Ege Rubak for contributions. NEW FUNCTIONS o lohboot Computes bootstrap confidence bands for pair correlation function and K function using Loh's (2008) mark bootstrap. SIGNIFICANT USER-VISIBLE CHANGES o vcov.ppm Now works for all Gibbs point process models, thanks to new code (and theory) from Jean-Francois Coeurjolly and Ege Rubak o AreaInter Computations related to the area-interaction point process (ppm, predict.ppm, residuals.ppm, diagnose.ppm, qqplot.ppm) have been accelerated. BUG FIXES o scan.test Results were sometimes incorrect due to numerical instability (a 'Gibbs phenomenon'). Fixed. CHANGES IN spatstat VERSION 1.26-0 OVERVIEW o We thank Jens Oehlschlaegel for contributions. o Further substantial acceleration of spatstat functions. o Workaround for bug in RandomFields package. o Numerous modifications to internal code. NEW FUNCTIONS o RandomFieldsSafe There is a bug in the package 'RandomFields' (version <= 2.0.54) which causes a crash to occur, in the development version of R but not in R 2.15.0. To avoid crashing spatstat, we have written the temporary, undocumented function RandomFieldsSafe() which returns TRUE if it is safe to use the RandomFields package. Examples in the spatstat help files for kppm, lgcp.estK, lgcp.estpcf and rLGCP are only executed if RandomFieldsSafe() returns TRUE. SIGNIFICANT USER-VISIBLE CHANGES o Many functions Many spatstat functions now run faster, and will handle larger datasets, thanks to improvements in the internal code, following suggestions from Jens Oehlschlaegel. o Many functions The response to an 'Interrupt' signal is slightly slower. CHANGES IN spatstat VERSION 1.25-5 OVERVIEW o We thank Ya-Mei Chang, Jens Oehlschlaegel and Yong Song for contributions. o Extended functionality of 'rhohat' to local likelihood smoothing and bivariate smoothing. o Nearest neighbour distance computations accelerated. o spatstat now 'Suggests:' the package 'locfit' NEW FUNCTIONS o rho2hat Bivariate extension of 'rhohat' for estimating spatial residual risk, or intensity as a function of two covariates. SIGNIFICANT USER-VISIBLE CHANGES o rhohat Estimation can now be performed using local likelihood fitting with the 'locfit' package, or using kernel smoothing. o nncross Substantially accelerated. New arguments added to control the return value and the sorting of data. BUG FIXES o plot.msr Crashed if the argument 'box' was given. Fixed. CHANGES IN spatstat VERSION 1.25-4 OVERVIEW o We thank Jonathan Lee and Sergiy Protsiv for contributions. o Improvements and bug fixes to K function for very large datasets NEW FUNCTIONS o rStraussHard Perfect simulation for Strauss-hardcore process (with gamma <= 1) SIGNIFICANT USER-VISIBLE CHANGES o plot.im The colour ribbon can now be placed left, right, top or bottom using new argument 'ribside' o profilepl Does not generate warnings when some of the candidate models have zero likelihood - for example when fitting model with a hard core. o Kest Now includes fast algorithm for 'correction="none"' which will handle patterns containing millions of points. BUG FIXES o Kest, Lest Gave incorrect values in very large datasets, due to numerical overflow. `Very large' typically means about 1 million points in a random pattern, or 100,000 points in a tightly clustered pattern. [Overflow cannot occur unless there are at least 46,341 points.] [Spotted by Sergiy Protsiv.] Fixed. o Kest, Lest Ignored 'ratio=TRUE' if the argument 'domain' was given. [Spotted by Jonathan Lee.] Fixed. o rjitter Output was sometimes incorrect. [Spotted by Sergiy Protsiv.] Fixed. CHANGES IN spatstat VERSION 1.25-3 OVERVIEW o We thank Daniel Esser for contributions. o Improved support for fitted point process models. o Bug fixes. NEW FUNCTIONS o simulate.slrm Method for 'simulate' for spatial logistic regression models. o labels.ppm, labels.kppm, labels.slrm Methods for 'labels' for fitted point process models. o commonGrid Determine a common spatial domain and pixel resolution for several pixel images and/or binary masks SIGNIFICANT USER-VISIBLE CHANGES o effectfun Now has argument 'se.fit' allowing calculation of standard errors and confidence intervals. o [.msr Now handles character-valued indices. o print.summary.ppm Output gives a more precise description of the fitting method. o ppm, kppm, slrm Confidence intervals for the fitted trend parameters can now be obtained using 'confint' o predict.slrm New argument 'window' o union.owin Now handles a single argument: union.owin(A) returns A. BUG FIXES o selfcrossing.psp y coordinate values were incorrect. [Spotted by Daniel Esser.] Fixed. o as.im.owin Did not handle a binary mask with a 1 x 1 pixel array. Fixed. o predict.slrm Results of predict(object, newdata) were incorrect if the spatial domain of 'newdata' was larger than the original domain. Fixed. o ppm If the model was the uniform Poisson process, the argument 'rbord' was ignored. Fixed. o image subset assignment "[<-.im" Generated an error if the indexing argument 'i' was a point pattern containing zero points. Fixed. o hyperframe subset assignment "[<-.hyperframe" Did not correctly handle the case where a single column of the hyperframe was to be changed. Fixed. o help(bw.relrisk), help(rmh.ppm), help(plot.plotppm) These help files had the side-effect of changing some options in spatstat.options. Fixed. CHANGES IN spatstat VERSION 1.25-2 OVERVIEW o We thank Abdollah Jalilian and Thierry Onkelinx for contributions. o Very Important Bug fixes. o Improved mechanism for handling 'invalid' point processes NEW FUNCTIONS o as.matrix.owin Converts a window to a logical matrix. SIGNIFICANT USER-VISIBLE CHANGES o project.ppm Improved algorithm. Now handles terms in the trend formula as well as the interaction. The projected point process is now obtained by re-fitting the model, and is guaranteed to be the maximum pseudolikelihood fit. o plot.im Now handles many arguments recognised by plot.default such as 'cex.main'. Also handles argument 'box'. New argument 'ribargs' contains parameters controlling the ribbon plot only. o spatstat.options New option 'project.fast' allows a faster shortcut for project.ppm o spatstat.options New options 'rmh.p', 'rmh.q', 'rmh.nrep' determine the default values of the parameters p, q and nrep of the Metropolis-Hastings algorithm. See rmhcontrol o ppm Slightly accelerated. BUG FIXES o nncross, distfun, AreaInter Results of nncross were possibly incorrect when X and Y did not have the same window. This bug affected values of 'distfun' and may also have affected ppm objects with interaction 'AreaInter'. [Spotted by Thierry Onkelinx] Bug introduced in spatstat 1.9-4 (June 2006). Fixed. o rCauchy Simulations were incorrect in the sense that the value of 'omega' was inadvertently doubled (i.e. omega was incorrectly replaced by 2 * omega). Bug introduced in spatstat 1.25-0. Fixed. o plot.im White lines were present in the image display, on some graphics devices, due to changes in R 2.14. Fixed. o update.ppm The result of 'update(object, formula)' sometimes contained errors in the internal format. Bug introduced in spatstat 1.25-0. Fixed. o example(AreaInter), example(bw.smoothppp), example(Kest.fft), example(plot.owin), example(predict.ppm), example(simulate.ppm) Executing these examples had the side-effect of changing some of the parameters in spatstat.options. Fixed. CHANGES IN spatstat VERSION 1.25-1 OVERVIEW o We thank Neba Funwi-Gabga and Jorge Mateu for contributions. o New dataset of gorilla nest sites o New functions for perfect simulation o Bug fix for rare crashes in rStrauss o Code for ensuring a fitted point process model is a valid point process NEW DATASET o gorillas Gorilla nest sites in a National Park in Cameroon. Generously contributed by Neba Funwi-Gabga NEW FUNCTIONS o rDiggleGratton, rDGS, rHardcore Perfect simulation for the Diggle-Gratton process, Diggle-Gates-Stibbard process, and Hardcore process. o bw.scott Scott's rule of thumb for bandwidth selection in multidimensional smoothing o valid.ppm Checks whether a fitted point process model is a valid point process o project.ppm Forces a fitted point process model to be a valid point process SIGNIFICANT USER-VISIBLE CHANGES o ppm New argument 'project' determines whether the fitted model is forced to be a valid point process o linnet Substantially accelerated. o rStrauss Slightly accelerated. o summary.lpp Now prints the units of length. BUG FIXES o rStrauss Crashed rarely (once every 10 000 realisations) with a memory segmentation fault. Fixed. CHANGES IN spatstat VERSION 1.25-0 OVERVIEW o Leverage and influence for point process models o New cluster models (support for model-fitting and simulation). o Fit irregular parameters in trend of point process model o Third order summary statistic. o Improvements to speed and robustness of code. o spatstat now depends on R 2.14 o We thank Abdollah Jalilian and Rasmus Waagepetersen for contributions. NEW FUNCTIONS o leverage.ppm, influence.ppm, dfbetas.ppm Leverage and influence for point process models o ippm Experimental extension to 'ppm' which fits irregular parameters in trend by Fisher scoring algorithm. o Tstat Third order summary statistic for point patterns based on counting triangles. o rCauchy, rVarGamma simulation of a Neyman-Scott process with Cauchy clusters or Variance Gamma (Bessel) clusters. Contributed by Abdollah Jalilian. o rPoissonCluster simulation of a general Poisson cluster process o model.covariates Identify the covariates involved in a model (lm, glm, ppm etc) o as.im.distfun Converts a 'distfun' to a pixel image. o cauchy.estK, cauchy.estpcf, vargamma.estK, vargamma.estpcf Low-level model-fitting functions for the Neyman-Scott process with Cauchy or Variance-Gamma cluster kernel. Contributed by Abdollah Jalilian. SIGNIFICANT USER-VISIBLE CHANGES o kppm Now accepts clusters="Cauchy" or clusters="VarGamma" for the Neyman-Scott process with Cauchy or Variance-Gamma cluster kernel. Code contributed by Abdollah Jalilian. o rNeymanScott Argument 'rcluster' may now take a different format. o psst Argument 'funcorrection' changed to 'funargs' allowing greater flexibility. o plot.fv, plot.envelope New argument 'limitsonly' allows calculation of a common x,y scale for several plots. o overall speed spatstat is now byte-compiled and runs slightly faster. o user interrupt Long calculations in spatstat now respond to the Interrupt/Stop signal. o update.ppm Now runs faster and uses much less memory, when the update only affects the model formula (trend formula). o rNeymanScott, rThomas, rMatClust Accelerated thanks to Rasmus Waagepetersen. o multitype data and models Second order multitype statistics (such as Kcross, pcfcross) and multitype interaction models (such as MultiStrauss) now run faster, by a further 5%. BUG FIXES o distfun Some manipulations involving 'distfun' objects failed if the original data X in distfun(X) did not have a rectangular window. Fixed. CHANGES IN spatstat VERSION 1.24-2 OVERVIEW o Geyer's triplet interaction o more functionality for replicated point patterns o changed default for simulation window in point process simulation o changed default for edge correction in Kcom, Gcom o data in spatstat is now lazy-loaded o bug fixes NEW FUNCTIONS o Triplets Geyer's triplet interaction, for point process models o coef.summary.ppm New method coef.summary.ppm You can now type 'coef(summary(fit))' to extract a table of the fitted coefficients of the point process model 'fit' SIGNIFICANT USER-VISIBLE CHANGES o data in spatstat are now lazy-loaded so you don't have to type data(amacrine), etc. o rmh.default, rmh.ppm, simulate.ppm These now handle the 'triplets' interaction o fryplot Now has arguments 'to' and 'from', allowing selection of a subset of points. o fryplot, frypoints These functions now handle marked point patterns properly. o Kcross, Kdot, Kmulti New argument 'ratio' determines whether the numerator and denominator of the estimate of the multitype K-function will be stored. This enables analysis of replicated point patterns, using 'pool.rat()' to pool the K function estimates. o rmh.ppm, simulate.ppm, default.expand For point process models which have a trend depending only on x and y, the simulation window is now taken to be the same as the original window containing the data (by default). That is, `expansion' does not take place, by default. (In previous versions of spatstat the simulation window was larger than the original data window.) o rmh.ppm, simulate.ppm The argument sequence for these functions has changed. New argument 'expand' allows more explicit control over simulation domain. o Kcom, Gcom New argument 'conditional' gives more explicit control over choice of edge correction in compensator. Simplified defaults for edge correction. o Kinhom Improved plot labels. o profilepl Printed output improved. BUG FIXES o Lest The variance approximations (Lotwick-Silverman and Ripley) obtained with var.approx=TRUE, were incorrect for Lest (although they were correct for Kest) due to a coding error. Fixed. o simulate.ppm Ignored the argument 'control' in some cases. Fixed. o pcf and its relatives (pcfinhom, pcfcross.inhom, pcfdot.inhom) Sometimes gave a warning about 'extra arguments ignored'. Fixed. CHANGES IN spatstat VERSION 1.24-1 OVERVIEW o Spatial Scan Test o Functionality for replicated point patterns o Bug fixes NEW FUNCTIONS o scan.test Spatial scan test of clustering o rat New class of 'ratio objects' o pool.rat New method for 'pool'. Combines K function estimates for replicated point patterns (etc) by computing ratio-of-sums o unnormdensity Weighted kernel density with weights that do not sum to 1 and may be negative. o compatible New generic function with methods for 'fv', 'im', 'fasp' and 'units' SIGNIFICANT USER-VISIBLE CHANGES o Kest New argument 'ratio' determines whether the numerator and denominator of the estimate of the K-function will be stored. This enables analysis of replicated point patterns, using 'pool.rat()' to pool the K function estimates. o Lest Now handles theoretical variance estimates (using delta method) if var.approx=TRUE o as.mask Argument 'eps' can now be a 2-vector, specifying x and y resolutions. o default.expand Behaviour changed slightly. o plot.listof, plot.splitppp, contour.listof, image.listof The arguments 'panel.begin' and 'panel.end' can now be objects such as windows. BUG FIXES o rgbim, hsvim Did not work on images with non-rectangular domains. Fixed. o scaletointerval Did not handle NA's. Fixed. CHANGES IN spatstat VERSION 1.24-0 OVERVIEW o This version was not released publicly. CHANGES IN spatstat VERSION 1.23-6 OVERVIEW o Spatial covariance functions of windows and pixel images. o Area-interaction models can now be fitted in non-rectangular windows o Bug fix for envelope of inhomogeneous Poisson process o Bug fix for raster conversion o New vignette on 'Getting Started with Spatstat' o Code accelerated. NEW FUNCTIONS o imcov Spatial covariance function of pixel image or spatial cross-covariance function of two pixel images o harmonise.im Make several pixel images compatible by converting them to the same pixel grid o contour.listof, image.listof Methods for contour() and image() for lists of objects o dummify Convert data to numeric values by constructing dummy variables. SIGNIFICANT USER-VISIBLE CHANGES o setcov Can now compute the `cross-covariance' between two regions o AreaInter Point process models with the AreaInter() interaction can now be fitted to point pattern data X in any window. o areaGain, areaLoss These now handle arbitrary windows W. They are now more accurate when r is very small. o Kcom Computation vastly accelerated, for non-rectangular windows. o vignettes New vignette 'Getting Started with the Spatstat Package' o nncorr, nnmean, nnvario These functions now handle data frames of marks. BUG FIXES o envelope.ppm If the model was an inhomogeneous Poisson process, the resulting envelope object was incorrect (the simulations were correct, but the envelopes were calculated assuming the model was CSR). Bug was introduced in spatstat 1.23-5. Fixed. o envelope.ppm If the model was an inhomogeneous Poisson process with intensity a function of x and y only, overflow errors sometimes occurred ('insufficient storage' or 'attempting to generate a large number of random points'). Fixed. o as.im.im The result of as.im(X, W) was incorrect if 'W' did not cover 'X'. Fixed. o as.mask The result of as.mask(w, xy) was incorrect if 'xy' did not cover 'w'. Fixed. o plot.fv Legend was incorrectly labelled if 'shade' variables were not included in the plot formula. Fixed. o areaGain, areaLoss Crashed if the radius r was close to zero. Fixed. CHANGES IN spatstat VERSION 1.23-5 OVERVIEW o Bug fix to bandwidth selection. o Functions to pool data from several objects of the same class. o Improvements and bug fixes. o We thank Michael Sumner for contributions. NEW FUNCTIONS o pool Pool data from several objects of the same class o pool.envelope Pool simulated data from several envelope objects and create a new envelope o pool.fasp Pool simulated data from several function arrays and create a new array o envelope.envelope Recalculate an envelope from simulated data using different parameters SIGNIFICANT USER-VISIBLE CHANGES o bw.diggle, bw.relrisk, bw.smoothppp, bw.optim Plot method modified. o model.depends Now also recognises 'offset' terms. BUG FIXES o bw.diggle Bandwidth was too large by a factor of 2. Fixed. o plot.psp Crashed if any marks were NA. Fixed. o pointsOnLines Crashed if any segments had zero length. Ignored argument 'np' in some cases. Fixed. o stieltjes Crashed if M had only a single column of function values. Fixed. CHANGES IN spatstat VERSION 1.23-4 OVERVIEW o Bandwidth selection for density.ppp and smooth.ppp o Layered plots. o Model-handling facilities. o Improvements and bug fixes. NEW FUNCTIONS o bw.diggle Bandwidth selection for density.ppp by mean square error cross-validation. o bw.smoothppp Bandwidth selection for smooth.ppp by least-squares cross-validation. o layered, plot.layered A simple mechanism for controlling plots that consist of several successive layers of data. o model.depends Given a fitted model (of any kind), identify which of the covariates is involved in each term of the model. o model.is.additive Determine whether a fitted model (of any kind) is additive, in the sense that each term in the model involves at most one covariate. SIGNIFICANT USER-VISIBLE CHANGES o smooth.ppp Bandwidth 'sigma' is now selected by least-squares cross-validation o bw.relrisk Computation in large datasets accelerated. New arguments 'hmin', 'hmax' control the range of trial values of bandwidth. o Hest, Gfox, Jfox Improved algebraic labels for plot o spatstat.options New parameter 'n.bandwidth' o density.ppp, smooth.ppp Slightly accelerated. o point-in-polygon test Accelerated. BUG FIXES o with.fv Mathematical labels were incorrect in some cases. Fixed. o bw.relrisk Implementation of method="weightedleastsquares" was incorrect and was equivalent to method="leastsquares". Fixed. o smooth.ppp NaN values occurred if the bandwidth was very small. Fixed. CHANGES IN spatstat VERSION 1.23-3 OVERVIEW o Urgent bug fix. BUG FIXES o crossing.psp Crashed occasionally with a message about NA or NaN values. Fixed. o affine.ppp Crashed if the point pattern was empty. Fixed. CHANGES IN spatstat VERSION 1.23-2 OVERVIEW o Bug fixes. o Several functions have been accelerated. o We thank Marcelino de la Cruz and Ben Madin for contributions. NEW FUNCTIONS o sumouter, quadform Evaluate certain quadratic forms. o flipxy Exchange x and y coordinates. SIGNIFICANT USER-VISIBLE CHANGES o vcov.ppm Accelerated. o owin, as.owin Checking the validity of polygons has been accelerated. o crossing.psp, selfcrossing.psp Accelerated. BUG FIXES o split.ppp If drop=TRUE then some of the point patterns had the wrong windows. Spotted by Marcelino de la Cruz. Fixed. o split.ppp Crashed if the tessellation did not cover the point pattern. Fixed. o predict.ppm Crashed when type="se" if NA's were present. Spotted by Ben Madin. Fixed. o plot.ppp Incorrectly handled the case where both 'col' and 'cols' were present. Fixed. o polygon geometry The point-in-polygon test gave the wrong answer in some boundary cases. Fixed. CHANGES IN spatstat VERSION 1.23-1 OVERVIEW o Important bug fix to 'localpcf'. o Inverse-distance weighted smoothing. o Inhomogeneous versions of neighbourhood density functions. o Internal repairs and bug fixes. o We thank Mike Kuhn and Ben Madin for contributions. NEW FUNCTIONS o idw Inverse-distance weighted smoothing. o localKinhom, localLinhom, localpcfinhom Inhomogeneous versions of localK, localL, localpcf BUG FIXES o localpcf The columns of the result were in the wrong order. [i.e. pair correlation functions were associated with the wrong points.] Fixed. o delaunay If the union of several Delaunay triangles formed a triangle, this was erroneously included in the result of delaunay(). Fixed. o predict.ppm, plot.ppm Sometimes crashed with a warning about 'subscript out of bounds'. Fixed. o point-in-polygon test Vertices of a polygon were sometimes incorrectly classified as lying outside the polygon. Fixed. o Internal code Numerous tweaks and repairs to satisfy the package checker for the future R version 2.14. CHANGES IN spatstat VERSION 1.23-0 OVERVIEW o point patterns on a linear network: new tools including geometrically-corrected linear K function, pair correlation function, point process models, envelopes o changes to renormalisation of estimates in Kinhom and pcfinhom o new dataset: Chicago street crime o spatstat now 'Suggests:' the package RandomFields o spatstat now has a Namespace o we thank Mike Kuhn, Monia Mahling, Brian Ripley for contributions. NEW DATASET o chicago Street crimes in the University district of Chicago. A point pattern on a linear network. NEW FUNCTIONS o envelope.lpp Simulation envelopes for point patterns on a linear network o lineardisc Compute the 'disc' of radius r in a linear network o linearpcf Pair correlation for point pattern on a linear network o linearKinhom, linearpcfinhom Inhomogeneous versions of the K function and pair correlation function for point patterns on a linear network o lppm Fit point process models on a linear network. o anova.lppm Analysis of deviance for point process models on a linear network. o predict.lppm Prediction for point process models on a linear network. o envelope.lppm Simulation envelopes for point process models on a linear network. o linim Pixel image on a linear network o plot.linim Plot a pixel image on a linear network SIGNIFICANT USER-VISIBLE CHANGES o linearK New argument 'correction'. Geometrically-corrected estimation is performed by default (based on forthcoming paper by Ang, Baddeley and Nair) o Kinhom New argument 'normpower' allows different types of renormalisation. o pcfinhom Now performs renormalisation of estimate. Default behaviour changed - estimates are now renormalised by default. BUG FIXES o density.ppp Crashed if argument 'varcov' was given. Fixed. CHANGES IN spatstat VERSION 1.22-4 OVERVIEW o new diagnostics based on score residuals o new dataset o improvements to plotting summary functions o We thank Ege Rubak, Jesper Moller, George Leser, Robert Lamb and Ulf Mehlig for contributions. NEW FUNCTIONS o Gcom, Gres, Kcom, Kres New diagnostics for fitted Gibbs or Poisson point process models based on score residuals. Gcom is the compensator of the G function Gres is the residual of the G function Kcom is the compensator of the K function Kres is the residual of the K function o psst, psstA, psstG New diagnostics for fitted Gibbs or Poisson point process models based on pseudoscore residuals. psst is the pseudoscore diagnostic for a general alternative psstA is the pseudoscore diagnostic for an Area-interaction alternative psstG is the pseudoscore diagnostic for a Geyer saturation alternative o compareFit Computes and compares several point process models fitted to the same dataset, using a chosen diagnostic. o as.interact Extracts the interpoint interaction structure (without parameters) from a fitted point process model or similar object. NEW DATASET o flu Spatial point patterns giving the locations of influenza virus proteins on cell membranes. Kindly released by Dr George Leser and Dr Robert Lamb. SIGNIFICANT USER-VISIBLE CHANGES o pixel images and grids The default size of a pixel grid, given by spatstat.options("npixel"), has been changed from 100 to 128. A power of 2 gives faster and more accurate results in many cases. o residuals.ppm New arguments 'coefs' and 'quad' for advanced use (make it possible to compute residuals from a modified version of the fitted model.) o relrisk New argument 'casecontrol' determines whether a bivariate point pattern should be treated as case-control data. o plot.fv Further improvements in mathematical labels. o plot.fv The formula can now include the symbols .x and .y as abbreviation for the function argument and the recommended function value, respectively. o plot.fv New argument 'add' BUG FIXES o multitype summary functions (Kcross, Kdot, Gcross, Gdot, .....) Plotting these functions generated an error if the name of one of the types of points contained spaces, e.g. "Escherichia coli". Fixed. CHANGES IN spatstat VERSION 1.22-3 OVERVIEW o Important bug fix to simulation code o Miscellaneous improvements o spatstat now depends on R 2.13.0 or later o We thank Ege Rubak, Kaspar Stucki, Vadim Shcherbakov, Jesper Moller and Ben Taylor for contributions. NEW FUNCTIONS o is.stationary, is.poisson New generic functions for testing whether a point process model is stationary and/or Poisson. Methods for ppm, kppm, slrm etc o raster.xy raster coordinates of a pixel mask o zapsmall.im 'zapsmall' for pixel images SIGNIFICANT USER-VISIBLE CHANGES o density.ppp New argument 'diggle' allows choice of edge correction o rotate.owin, affine.owin These functions now handle binary pixel masks. New argument 'rescue' determines whether rectangles will be preserved BUG FIXES o rmh, simulate.ppm Serious bug - simulation was completely incorrect in the case of a multitype point process with an interaction that does not depend on the marks, such as ppm(betacells, ~marks, Strauss(60)) The calling parameters were garbled. Fixed. o effectfun Crashed if the covariate was a function(x,y). Fixed. o lurking Gave erroneous error messages about 'damaged' models. Fixed. o envelope.ppm Did not recognise when the fitted model was equivalent to CSR. Fixed. o plot.ppx Crashed in some cases. Fixed. CHANGES IN spatstat VERSION 1.22-2 OVERVIEW o Fitting and simulation of log-Gaussian Cox processes with any covariance function o More support for 'kppm' and 'rhohat' objects o K-function for point patterns on a linear network o Metropolis-Hastings algorithm now saves its transition history o Easier control of dummy points in ppm o Convert an 'fv' object to an R function o spatstat now depends on the package 'RandomFields' o We thank Abdollah Jalilian, Shen Guochun, Rasmus Waagepetersen, Ege Rubak and Ang Qi Wei for contributions. NEW FUNCTIONS o linearK Computes the Okabe-Yamada network K-function for a point pattern on a linear network. o pairdist.lpp Shortest-path distances between each pair of points on a linear network. o vcov.kppm Asymptotic variance-covariance matrix for regression parameters in kppm object. [Contributed by Abdollah Jalilian and Rasmus Waagepetersen] o rLGCP Simulation of log-Gaussian Cox processes [Contributed by Abdollah Jalilian and Rasmus Waagepetersen] o predict.rhohat Method for 'predict' for objects of class 'rhohat' Computes a pixel image of the predicted intensity. o Kmodel, pcfmodel Generic functions that compute the K-function or pair correlation function of a point process *model*. So far the only methods are for the class 'kppm'. o as.function.fv Converts a function value table (class 'fv') to a function in R o coef.kppm Method for 'coef' for objects of class 'kppm' o unitname, unitname<- These generic functions now have methods for fitted model objects (classes ppm, slrm, kppm, minconfit) and quadrature schemes (quad). o nobs.ppm Method for 'nobs' for class 'ppm'. Returns the number of points in the original data. SIGNIFICANT USER-VISIBLE CHANGES o kppm Can now fit a log-Gaussian Cox process o simulate.kppm Can now simulate a fitted log-Gaussian Cox process o lgcp.estK, lgcp.estpcf These functions previously fitted a log-Gaussian Cox process with exponential covariance. They can now fit a log-Gaussian Cox process with any covariance function implemented by the RandomFields package. o rmh If track=TRUE, the history of transitions of the Metropolis-Hastings algorithm is saved and returned. o ppm New argument 'nd' controls the number of dummy points. o as.fv Now handles objects of class kppm or minconfit. o rhohat If covariate = "x" or "y", the resulting object has the same 'unitname' as the original point pattern data. o rhohat Now has arguments 'eps, 'dimyx' to control pixel resolution. o MultiStrauss, MultiHard, MultiStraussHard Default value of 'types' has been changed to NULL. o data(ants) The auxiliary data 'ants.extra' now includes a function called 'side' determining whether a given location is in the scrub or field region. Can be used as a covariate in ppm, kppm, slrm. o print.ppm Now has argument 'what' to allow only selected information to be printed. BUG FIXES o profilepl Crashed in some cases involving multitype interactions. Fixed. o plot.splitppp Behaved incorrectly if 'main' was an expression. Fixed. o effectfun Crashed in trivial cases. Fixed. o kppm, thomas.estpcf, matclust.estpcf, lgcp.estpcf Gave a spurious warning message. Fixed. o step When applied to ppm objects this gave a spurious warning. Fixed. CHANGES IN spatstat VERSION 1.22-1 OVERVIEW o marked line segment patterns can now be plotted o multitype point process models are now 'self-starting' o new functions to manipulate colour images NEW FUNCTIONS o rgbim, hsvim Specify three colour channels. These functions convert three pixel images with numeric values into a single image whose pixel values are strings representing colours. o scaletointerval Generic utility function to rescale data (including spatial data) to a specified interval SIGNIFICANT USER-VISIBLE CHANGES o plot.im Can now plot images whose pixel values are strings representing colours. New argument 'valuesAreColours' o plot.psp Now handles marked line segment patterns and plots the marks as colours. o MultiHard, MultiStrauss, MultiStraussHard The argument 'types' can now be omitted; it will be inferred from the point pattern data. o rhohat Improved mathematical labels (when the result of rhohat is plotted) o plot.fv Minor improvements in graphics BUG FIXES o several minor bug fixes and improvements to satisfy R-devel CHANGES IN spatstat VERSION 1.22-0 OVERVIEW o support for point patterns on a linear network o 'superimpose' is now generic o improved mathematical labels when plotting functions NEW CLASSES o linnet An object of class 'linnet' represents a linear network, i.e. a connected network of line segments, such as a road network. Methods for this class include plot, print, summary etc. o lpp An object of class 'lpp' represents a point pattern on a linear network, such as a record of the locations of road accidents on a road network. Methods for this class include plot, print, summary etc. NEW FUNCTIONS o runiflpp Uniformly distributed random points on a linear network o rpoislpp Poisson point process on a linear network o clickjoin Interactive graphics to create a linear network o superimpose The function 'superimpose' is now generic, with methods for ppp, psp and a default method. o as.ppp.psp New method for as.ppp extracts the endpoints and marks from a line segment pattern NEW DATASETS o simplenet Simple example of a linear network SIGNIFICANT USER-VISIBLE CHANGES o superimposePSP This function is now deprecated in favour of 'superimpose' o superimpose Now handles data frames of marks. o plot.fv Argument 'legendmath' now defaults to TRUE. New argument 'legendargs' gives more control over appearance of legend. Increased default spacing between lines in legend. o eval.fv, with.fv Functions computed using eval.fv or with.fv now have better labels when plotted. o summary functions (Kest, Kest.fft, Kcross, Kdot, Kmulti, Kinhom, Kcross.inhom, Kdot.inhom, Kmulti.inhom, Lest, Lcross, Ldot, pcf, pcfcross, pcfdot, pcfinhom, pcfcross.inhom, pcfdot.inhom, Fest, Gest, Gcross, Gdot, Gmulti, Jest, Jcross, Jdot, Jmulti, Iest, localL, localK, markcorr, markvario, markconnect, Emark, Vmark, allstats, alltypes) Improved plot labels. BUG FIXES o superimpose If the marks components of patterns consisted of character vectors (rather than factors or non-factor numeric vectors) an error was triggered. Fixed. o plot.fv The y axis limits did not always cover the range of values if the argument 'shade' was used. Fixed. o plot.rhohat The y axis label was sometimes incorrect. Fixed. o plot.rhohat If argument 'xlim' was used, a warning was generated from 'rug'. Fixed. CHANGES IN spatstat VERSION 1.21-6 OVERVIEW o A line segment pattern can now have a data frame of marks. o Various minor extensions and alterations in behaviour NEW FUNCTIONS o nsegments Number of segments in a line segment pattern SIGNIFICANT USER-VISIBLE CHANGES o psp class A line segment pattern (object of class 'psp') can now have a data frame of marks. o density.ppp New argument 'adjust' makes it easy to adjust the smoothing bandwidth o plot.envelope If the upper envelope is NA but the lower envelope is finite, the upper limit is now treated as +Infinity o msr Argument 'continuous' renamed 'density' BUG FIXES o [.psp In X[W] if X is a line segment pattern and W is a polygonal window, marks were sometimes discarded, leading to an error. Fixed. o [.psp In X[W] if X is a line segment pattern and W is a rectangular window, if the marks of X were factor values, they were converted to integers. Fixed. o superimposePSP If the marks were a factor, they were mistakenly converted to integers. Fixed. o is.marked.ppp Did not generate a fatal error when na.action="fatal" as described in the help file. Fixed. CHANGES IN spatstat VERSION 1.21-5 OVERVIEW o Increased numerical stability. o New 'self-starting' feature of interpoint interactions. SIGNIFICANT USER-VISIBLE CHANGES o ppm Interaction objects may now be 'self-starting' i.e. initial parameter estimates can be computed from the point pattern dataset. So far, only the LennardJones() interaction has a self-starting feature. o LennardJones Increased numerical stability. New (optional) scaling argument 'sigma0'. Interpoint distances are automatically rescaled using 'self-starting' feature. o vcov.ppm New argument 'matrix.action' controls what happens when the matrix is ill-conditioned. Changed name of argument 'gamaction' to 'gam.action' o rmhmodel.ppm Default resolution of trend image has been increased. o is.poisson.ppm Accelerated. o ppm, kppm, qqplot.ppm Improved robustness to numerical error CHANGES IN spatstat VERSION 1.21-4 OVERVIEW o Urgent bug fix BUG FIXES o print.summary.ppm exited with an error message, if the model had external covariates. Fixed. CHANGES IN spatstat VERSION 1.21-3 OVERVIEW o Point process model covariates may now depend on additional parameters. o New class of signed measures, for residual analysis. o Miscellaneous improvements and bug fixes. NEW FUNCTIONS o clarkevans.test Classical Clark-Evans test of randomness o msr New class 'msr' of signed measures and vector-valued measures supporting residual analysis. o quadrat.test.quadratcount Method for 'quadrat.test' for objects of class 'quadratcount' (allows a chi-squared test to be performed on quadrat counts rather than recomputing from the original data) o tile.areas Computes areas of tiles in a tessellation (efficiently) SIGNIFICANT USER-VISIBLE CHANGES o ppm The spatial trend can now depend on additional parameters. This is done by allowing spatial covariate functions to have additional parameters: function(x, y, ...) where ... is controlled by the new argument 'covfunargs' to ppm o profilepl Can now maximise over trend parameters as well as interaction parameters o residuals.ppm The value returned by residuals.ppm is now an object of class 'msr'. It can be plotted directly. o eval.im When the argument 'envir' is used, eval.im() now recognises functions as well as variables in 'envir' o colourmap The argument 'col' can now be any kind of colour data o persp.im The 'colmap' argument can now be a 'colourmap' object o ppm The print and summary methods for 'ppm' objects now show standard errors for parameter estimates if the model is Poisson. o quadrat.test The print method for 'quadrattest' objects now displays information about the quadrats o lurking Improved format of x axis label o distmap.ppp Internal code is more robust. BUG FIXES o im Did not correctly handle 1 x 1 arrays. Fixed. o as.mask, pixellate.ppp Weird things happened if the argument 'eps' was set to a value greater than the size of the window. Fixed. CHANGES IN spatstat VERSION 1.21-2 OVERVIEW o New multitype hardcore interaction. o Nonparametric estimation of covariate effects on point patterns. o Output of 'Kmeasure' has been rescaled. o Numerous improvements and bug fixes. NEW FUNCTIONS o MultiHard multitype hard core interaction for use in ppm() o coords<- Assign new coordinates to the points in a point pattern o rhohat Kernel estimate for the effect of a spatial covariate on point process intensity SIGNIFICANT USER-VISIBLE CHANGES o as.ppp.matrix, as.ppp.data.frame These methods for 'as.ppp' now accept a matrix or data frame with any number of columns (>= 2) and interpret the additional columns as marks. o Kmeasure The interpretation of the output has changed: the pixel values are now density estimates. o rmh.ppm, rmhmodel.ppm These functions now accept a point process model fitted with the 'MultiHard' interaction o rmh.default, rmhmodel.default These functions now accept the option: cif='multihard' defining a multitype hard core interaction. o markcorr Now handles a data frame of marks o varblock Improved estimate in the case of the K function o colourmap, lut New argument 'range' makes it easier to specify a colour map or lookup table o [<-.hyperframe Now handles multiple columns o plot.fv Improved y axis labels o spatstat.options New option 'par.fv' controls default parameters for line plotting o rmhmodel More safety checks on parameter values. o quadratresample New argument 'verbose' o smooth.fv Default value of 'which' has been changed. BUG FIXES o Kest If the argument 'domain' was used, the resulting estimate was not correctly normalised. Fixed. o Kest The Lotwick-Silverman variance approximation was incorrectly calculated. (Spotted by Ian Dryden and Igor Chernayavsky). Fixed. o plot.owin, plot.ppp Display of binary masks was garbled if the window was empty or if it was equivalent to a rectangle. Fixed. o plot.bermantest One of the vertical lines for the Z1 test was in the wrong place. Fixed. o marks<-.ppx Crashed in some cases. Fixed. o is.convex An irrelevant warning was issued (for non-convex polygons). Fixed. CHANGES IN spatstat VERSION 1.21-1 OVERVIEW o Confidence intervals for K-function and other statistics o Bug fixes for smoothing and relative risk estimation NEW FUNCTIONS o varblock Variance estimation (and confidence intervals) for summary statistics such as Kest, using subdivision technique o bw.stoyan Bandwidth selection by Stoyan's rule of thumb. o which.max.im Applied to a list of images, this determines which image has the largest value at each pixel. o as.array.im Convert image to array SIGNIFICANT USER-VISIBLE CHANGES o smooth.ppp, markmean, sharpen.ppp, relrisk, bw.relrisk Further acceleration achieved. o Kest Argument 'correction' now explicitly overrides automatic defaults o plot.fv More robust handling of 'shade' BUG FIXES o relrisk Format of relrisk(at="points") was incorrect. Fixed. o bw.relrisk Result was incorrect in the default case method="likelihood" because of previous bug. Fixed. o Jdot, Jcross, Jmulti Return value did not include the hazard function, when correction="km" Fixed. o Jdot, Jcross, Jmulti Format of output was incompatible with format of Jest. Fixed. CHANGES IN spatstat VERSION 1.21-0 OVERVIEW o Implemented Spatial Logistic Regression o Implemented nonparametric estimation of relative risk with bandwidth selection by cross-validation. o Smoothing functions can handle a data frame of marks. o New options in Kinhom; default behaviour has changed. NEW FUNCTIONS o slrm Fit a spatial logistic regression model o anova.slrm, coef.slrm, fitted.slrm, logLik.slrm, plot.slrm, predict.slrm Methods for spatial logistic regression models o relrisk Nonparametric estimation of relative risk o bw.relrisk Automatic bandwidth selection by cross-validation o default.rmhcontrol Sets default values of Metropolis-Hastings parameters SIGNIFICANT USER-VISIBLE CHANGES o smooth.ppp, markmean These functions now accept a data frame of marks. o Kinhom Default behaviour has changed. New argument 'renormalise=TRUE' determines scaling of estimator and affects bias and variance in small samples. o residuals.ppm Now also computes the score residuals. o plot.im New argument 'ribscale' o plot.listof, plot.splitppp New arguments panel.begin, panel.end and panel.args o ppp Now checks for NA/NaN/Inf values in the coordinates o envelope.ppm Changed default value of 'control' New argument 'nrep' o qqplot.ppm Changed default value of 'control' BUG FIXES o marks<-.ppp, setmarks, %mark% A matrix of marks was accepted by ppp() but not by these assignment functions. Fixed. o density.ppp, smooth.ppp, sharpen.ppp, markmean Crashed if the bandwidth was extremely small. Fixed. CHANGES IN spatstat VERSION 1.20-5 OVERVIEW o Accelerated computations of kernel smoothing. o Implemented Choi-Hall data sharpening. NEW FUNCTIONS o sharpen.ppp Performs Choi-Hall data sharpening of a point pattern SIGNIFICANT USER-VISIBLE CHANGES o density.ppp, smooth.ppp Computation has been vastly accelerated for density(X, at="points") and smooth.ppp(X, at="points") o Kinhom Accelerated in case where lambda=NULL o Vignette 'shapefiles' updated CHANGES IN spatstat VERSION 1.20-4 OVERVIEW o New functions for inhomogeneous point patterns and local analysis. o Pair correlation function for 3D point patterns o Minor improvements and bug fixes to simulation code and image functions NEW FUNCTIONS o pcf3est Pair correlation function for 3D point patterns. o Kscaled, Lscaled Estimator of the template K function (and L-function) for a locally-scaled point process. o localpcf Local version of pair correlation function o identify.psp Method for 'identify' for line segment patterns. o as.im.matrix Converts a matrix to a pixel image SIGNIFICANT USER-VISIBLE CHANGES o rMaternI, rMaternII New argument 'stationary=TRUE' controls whether the simulated process is stationary (inside the simulation window). Default simulation behaviour has changed. o im New arguments 'xrange', 'yrange' o envelope Improvements to robustness of code. BUG FIXES o quadratcount If V was a tessellation created using a factor-valued image, quadratcount(X, tess=V) crashed with the error "Tessellation does not contain all the points of X". Fixed. o [.im If Z was a factor valued image and X was a point pattern then Z[X] was not a factor. Fixed. CHANGES IN spatstat VERSION 1.20-3 OVERVIEW o minor improvements (mostly internal). NEW FUNCTIONS o unmark.ppx Method for 'unmark' for general space-time point patterns SIGNIFICANT USER-VISIBLE CHANGES o plot.ppx Now handles marked patterns, in two-dimensional case o as.psp.psp Default value of argument 'check' set to FALSE CHANGES IN spatstat VERSION 1.20-2 OVERVIEW o Extensions to minimum contrast estimation. o Bug fix in simulation of Lennard-Jones model. o More support for distance functions. o Changes to point process simulations. NEW FUNCTIONS o thomas.estpcf Fit Thomas process model by minimum contrast using the pair correlation function (instead of the K-function). o matclust.estpcf Fit Matern Cluster model by minimum contrast using the pair correlation function (instead of the K-function). o lgcp.estpcf Fit log-Gaussian Cox process model by minimum contrast using the pair correlation function (instead of the K-function). o contour.distfun, persp.distfun Methods for 'contour' and 'persp' for distance functions o default.expand Computes default window for simulation of a fitted point process model. SIGNIFICANT USER-VISIBLE CHANGES o kppm Models can now be fitted using either the K-function or the pair correlation function. o ppm The list of covariates can now include windows (objects of class 'owin'). A window will be treated as a logical covariate that equals TRUE inside the window and FALSE outside it. o plot.distfun Pixel resolution can now be controlled. o envelope.ppm, qqplot.ppm The default value of 'control' has changed; simulation results may be slightly different. o rmh Slightly accelerated. BUG FIXES o rmh Simulation of the Lennard-Jones model (cif = 'lennard') was incorrect due to an obscure bug, introduced in spatstat 1.20-1. Fixed. o thomas.estK, matclust.estK, lgcp.estK The value of 'lambda' (if given) was ignored if X was a point pattern. Fixed. CHANGES IN spatstat VERSION 1.20-1 OVERVIEW o Further increases in speed and efficiency of ppm and rmh o New pairwise interaction model NEW FUNCTIONS o DiggleGatesStibbard Diggle-Gates-Stibbard pairwise interaction for use in ppm() SIGNIFICANT USER-VISIBLE CHANGES o ppm has been accelerated by a factor of 10 for the BadGey interaction. o rmh simulation of the Lennard-Jones model (cif='lennard') has been greatly accelerated. o rmh, rmhmodel.ppm Point process models fitted by ppm() using the DiggleGatesStibbard interaction can be simulated automatically using rmh. BUG FIXES o fitin The plot of a fitted Hardcore interaction was incorrect. Fixed. CHANGES IN spatstat VERSION 1.20-0 OVERVIEW o spatstat now contains over 1000 functions. o Substantial increase in speed and efficiency of model-fitting code. o Changes to factor-valued images. SIGNIFICANT USER-VISIBLE CHANGES o ppm has been accelerated by a factor of 10, and can handle datasets with 20,000 points, for the following interactions: DiggleGratton, Fiksel, Geyer, Hardcore, Strauss, StraussHard o predict.ppm accelerated by a factor of 3 (when type = "cif") with vastly reduced memory requirements for the following interactions: DiggleGratton, Fiksel, Geyer, Hardcore, Strauss, StraussHard o pixel images (class "im") The internal representation of factor-valued images has changed. Existing objects in the old format should still work. o im The syntax for creating a factor-valued image has changed. Argument 'lev' has been deleted. o ppm Some warnings have been reworded for greater clarity. BUG FIXES o [.im Mishandled some factor-valued images. Fixed. o hist.im Produced slightly erroneous output for some factor-valued images. Fixed. o plot.owin Filled polygons appeared to contain criss-cross lines on some graphics drivers. Fixed. o deltametric Did not handle windows with different enclosing frames (error message: 'dA and dB are incompatible') Fixed. o quadratcount Crashed if the pattern was empty and the window was a rectangle. (Noticed by Sandro Azaele) Fixed. o rNeymanScott Crashed if the parent process realisation was empty. (Noticed by Sandro Azaele) Fixed. CHANGES IN spatstat VERSION 1.19-3 ACKNOWLEDGEMENTS o We thank David Dereudre for contributions. OVERVIEW o Urgent bug fix to Metropolis-Hastings for Lennard-Jones model. o Miscellaneous additions to plotting and colour management. NEW FUNCTIONS o col2hex, rgb2hex, paletteindex, samecolour Functions for converting and comparing colours. o plot.envelope New method for plotting envelopes. By default the area between the upper and lower envelopes is shaded in grey. SIGNIFICANT USER-VISIBLE CHANGES o plot.fasp If the entries in the array are envelopes, they are plotted using plot.envelope (hence the envelope region is shaded grey). o plot.fv Now displays mathematical notation for each curve, if legendmath=TRUE. o print.fv Now prints the available range of 'r' values as well as the recommended range of 'r' values. BUG FIXES o rmh Simulation of Lennard-Jones model was incorrect; the simulations were effectively Poisson patterns. (Spotted by David Dereudre.) Fixed. o plot.fv Did not correctly handle formulas that included I( ) Fixed. CHANGES IN spatstat VERSION 1.19-2 ACKNOWLEDGEMENTS o We thank Jorge Mateu, Michael Sumner and Sebastian Luque for contributions. OVERVIEW o More support for fitted point process models and pixel images. o Improved plotting of pixel images and envelopes. o Simulation algorithm for Lennard-Jones process. o Improvements and bug fixes to envelopes. o Bug fixes to Metropolis-Hastings simulation. NEW FUNCTIONS o pairs.im Creates a scatterplot matrix for several pixel images. o model.frame.ppm Method for 'model.frame' for point process models. o sort.im Method for 'sort' for pixel images. SIGNIFICANT USER-VISIBLE CHANGES o plot.fv, plot.fasp New argument 'shade' enables confidence intervals or significance bands to be displayed as filled grey shading. o LennardJones The parametrisation of this interaction function has been changed. o rmh, rmhmodel These functions will now simulate a point process model that was fitted using the LennardJones() interaction. o rmh.default, rmhmodel.default These functions will now simulate a point process model with the Lennard-Jones interaction (cif='lennard'). o ecdf This function now works for pixel images. o dim, row, col These functions now work for pixel images. o order This function now works for pixel images. o [.im and [<-.im The subset index can now be any valid subset index for a matrix. o density.ppp, smooth.ppp The return value now has attributes 'sigma' and 'varcov' reporting the smoothing bandwidth. o plot.im The argument 'col' can now be a 'colourmap' object. This makes it possible to specify a fixed mapping between numbers and colours (e.g. so that it is consistent between plots of several different images). o rmh, spatstat.options spatstat.options now recognises the parameter 'expand' which determines the default window expansion factor in rmh. o rmh Improved handling of ppm objects with covariates. o kstest The 'covariate' can now be one of the characters "x" or "y" indicating the Cartesian coordinates. BUG FIXES o model.matrix.ppm For a fitted model that used a large number of quadrature points, model.matrix.ppm sometimes reported an internal error about mismatch between the model matrix and the quadrature scheme. Fixed. o plot.ppx Minor bugs fixed. o rmh In rare cases, the simulated point pattern included multiple points at the origin (0,0). (Bug introduced in spatstat 1.17-0.) Fixed. o rmh, rmhmodel.ppm Crashed when applied to a fitted multitype point process model if the model involved more than one covariate image. (Spotted by Jorge Mateu) Fixed. o density.psp If any segment had zero length, the result contained NaN values. (Spotted by Michael Sumner and Sebastian Luque.) Fixed. o envelope Crashed with fun=Lest or fun=Linhom if the number of points in a simulated pattern exceeded 3000. Fixed. o plot.kstest Main title was corrupted if the covariate was a function. Fixed. CHANGES IN spatstat VERSION 1.19-1 OVERVIEW o New dataset: replicated 3D point patterns. o Improvements to Metropolis-Hastings simulation code. o More support for hyperframes. o Bug fixes. NEW DATASETS o osteo: Osteocyte Lacunae data: replicated 3D point patterns NEW FUNCTIONS o rbind.hyperframe: Method for rbind for hyperframes. o as.data.frame.hyperframe: Converts a hyperframe to a data frame. SIGNIFICANT USER-VISIBLE CHANGES o Fiksel: Fitted point process models (class ppm) with the Fiksel() double exponential interaction can now be simulated by rmh. o rmh.default: Point processes with the Fiksel interaction can now be simulated by specifying parameters in rmh.default. o logLik.ppm: New argument 'warn' controls warnings. o profilepl: No longer issues spurious warnings. BUG FIXES o Hardcore, rmh: Simulation of the 'Hardcore' process was incorrect. The hard core radius was erroneously set to zero so that the simulated patterns were Poisson. Fixed. o fitin: A plot of the pairwise interaction function of a fitted model, generated by plot(fitin(model)) where model <- ppm(...), was sometimes incorrect when the model included a hard core. Fixed. CHANGES IN spatstat VERSION 1.19-0 OVERVIEW o Numerous bugs fixed in the implementation of the Huang-Ogata approximate maximum likelihood method. o New interpoint interaction model. NEW FUNCTIONS o Fiksel: new interpoint interaction: Fiksel's double exponential model. SIGNIFICANT USER-VISIBLE CHANGES o runifpoint, rpoispp, envelope These functions now issue a warning if the number of random points to be generated is very large. This traps a common error in simulation experiments. BUG FIXES o predict.ppm, fitted.ppm: Predictions and fitted values were incorrect for objects fitted using ppm(..., method="ho"). Fixed. o logLik, AIC: Values of logLik() and AIC() were incorrect for objects fitted using ppm(..., method="ho"). Fixed. o profilepl: Results were incorrect if the argument 'method="ho"' was used. Fixed. o fitin The result of fitin() was incorrect for objects fitted using ppm(..., method="ho"). Fixed. o rmhcontrol: rmhcontrol(NULL) generated an error. Fixed. CHANGES IN spatstat VERSION 1.18-4 ACKNOWLEDGEMENTS o We thank Michael Sumner for contributions. BUG FIXES o pixellate.psp: segments shorter than one pixel width were measured incorrectly if the 'weights' argument was present. Fixed. NEW FUNCTIONS o pairdist.ppx, crossdist.ppx, nndist.ppx, nnwhich.ppx: Methods for pairdist, crossdist, nndist, nnwhich for multidimensional point patterns (class 'ppx') o runifpointx, rpoisppx: Random point patterns in any number of dimensions o boxx: Multidimensional box in any number of dimensions o diameter.boxx, volume.boxx, shortside.boxx, eroded.volumes.boxx: Geometrical computations for multidimensional boxes o sum.im, max.im, min.im: Methods for sum(), min(), max() for pixel images. o as.matrix.ppx: Convert a multidimensional point pattern to a matrix SIGNIFICANT USER-VISIBLE CHANGES o plot.ppp: New argument 'zap' o diameter: This function is now generic, with methods for "owin", "box3" and "boxx" o eroded.volumes: This function is now generic, with methods for "box3" and "boxx" CHANGES IN spatstat VERSION 1.18-3 ACKNOWLEDGEMENTS o We thank Michael Sumner for contributions. BUG FIXES o pixellate.psp: segments shorter than one pixel width were measured incorrectly. Fixed. o fv: 'alim' not handled correctly. Fixed. NEW FUNCTIONS o smooth.fv: Applies spline smoothing to the columns of an fv object. CHANGES IN spatstat VERSION 1.18-2 ACKNOWLEDGEMENTS o We thank Michael Sumner for contributions. NEW FUNCTIONS o Gfox, Jfox: Foxall's G and J functions o as.owin.distfun: New method for as.owin extracts the domain of a distfun object. SIGNIFICANT USER-VISIBLE CHANGES o distfun: objects of class 'distfun', when called as functions, will now accept either two vectors (x,y) or a point pattern x. o Hest: this function can now compute the Hanisch estimator. It now has arguments 'r', 'breaks' and 'correction', like other summary functions. o Hest: new argument 'conditional'. BUG FIXES o pixellate.psp: Values were sometimes incorrect due to coding error. (Spotted by Michael Sumner) Fixed. o kstest: Crashed if the covariate contained NA's. Fixed. o kstest: Crashed if X was a multitype point pattern in which some mark values were unrepresented. Fixed. o lurking: Minor bug in handling of NA values. Fixed. o Hest: labels of columns were incorrect. Fixed. CHANGES IN spatstat VERSION 1.18-1 ACKNOWLEDGEMENTS o we thank Andrew Bevan and Ege Rubak for suggestions. NEW FUNCTIONS o Hardcore: Hard core interaction (for use in ppm) o envelope.pp3: simulation envelopes for 3D point patterns o npoints: number of points in a point pattern of any kind SIGNIFICANT USER-VISIBLE CHANGES o rmh.ppm, rmhmodel.ppm: It is now possible to simulate Gibbs point process models that are fitted to multitype point patterns using a non-multitype interaction, e.g. data(amacrine) fit <- ppm(amacrine, ~marks, Strauss(0.1)) rmh(fit, ...) o rmh.ppm, rmhmodel.ppm, rmh.default, rmhmodel.default: Hard core models can be simulated. o rmh.default, rmhmodel.default: The argument 'par' is now required to be a list, in all cases (previously it was sometimes a list and sometimes a vector). o Fest: Calculation has been accelerated in some cases. o summary.pp3 now returns an object of class 'summary.pp3' containing useful summary information. It is plotted by 'plot.summary.pp3'. o F3est, G3est, K3est: these functions now accept 'correction="best"' o union.owin, intersect.owin: these functions now handle any number of windows. o envelope.ppp, envelope.ppm, envelope.kppm: argument lists have changed slightly BUG FIXES o Fest: The result of Fest(X, correction="rs") had a slightly corrupted format, so that envelope(X, Fest, correction="rs") in fact computed the envelopes based on the "km" correction. (Spotted by Ege Rubak). Fixed. o rmh (rmh.ppm, rmhmodel.ppm): rmh sometimes failed for non-stationary point process models, with a message about "missing value where TRUE/FALSE needed". (Spotted by Andrew Bevan). Fixed. o diagnose.ppm, lurking: Calculations were not always correct if the model had conditional intensity equal to zero at some locations. Fixed. o ppm, profilepl: If data points are illegal under the model (i.e. if any data points have conditional intensity equal to zero) the log pseudolikelihood should be -Inf but was sometimes returned as a finite value. Thus profilepl did not always work correctly for models with a hard core. Fixed. o F3est, G3est: Debug messages were printed unnecessarily. Fixed. CHANGES IN spatstat VERSION 1.18-0 ACKNOWLEDGEMENTS o we thank Ege Rubak and Tyler Dean Rudolph for suggestions. HEADLINES o A point pattern is now allowed to have a data frame of marks (previously the marks had to be a vector). o Extended capabilities for 'envelope' and 'kstest'. NEW FUNCTIONS o pixellate.psp, as.mask.psp Convert a line segment pattern to a pixel image or binary mask o as.data.frame.im Convert a pixel image to a data frame SIGNIFICANT USER-VISIBLE CHANGES o A point pattern is now allowed to have a data frame of marks (previously the marks had to be a vector). o Many functions in spatstat now handle point patterns with a data frame of marks. These include print.ppp, summary.ppp, plot.ppp, split.ppp. o finpines, nbfires, shapley: The format of these datasets has changed. They are now point patterns with a data frame of marks. o envelope() is now generic, with methods for "ppp", "ppm" and "kppm". o kstest() now handles multitype point patterns and multitype point process models. o nnclean() now returns a point pattern with a data frame of marks. o plot.ppp() has new argument 'which.marks' to select one column from a data frame of marks to be plotted. o plot.ppp() now handles marks that are POSIX times. o complement.owin now handles any object acceptable to as.owin. BUG FIXES o erosion(w) and opening(w) crashed if w was not a window. Fixed. o diameter() and eroded.areas() refused to work if w was not a window. Fixed. CHANGES IN spatstat VERSION 1.17-6 ACKNOWLEDGEMENTS o We thank Simon Byers and Adrian Raftery for generous contributions. OVERVIEW o Nearest neighbour clutter removal algorithm o New documentation for the 'fv' class. o Minor improvements and bug fixes. NEW FUNCTIONS o nnclean: Nearest neighbour clutter removal for recognising features in spatial point patterns. Technique of Byers and Raftery (1998) [From original code by Simon Byers and Adrian Raftery, adapted for spatstat.] o marks.ppx, marks<-.ppx: Methods for extracting and changing marks in a multidimensional point pattern o latest.news: print news about the current version of the package SIGNIFICANT USER-VISIBLE CHANGES o news: spatstat now has a NEWS file which can be printed by typing news(package="spatstat"). o areaGain, areaLoss: New algorithms in case exact=TRUE. Syntax slightly modified. o with.hyperframe: - The result now inherits 'names' from the row names of the hyperframe. - New argument 'enclos' controls the environment in which the expression is evaluated. - The algorithm is now smarter at simplifying the result when simplify=TRUE. o update.ppm: Tweaked to improve the ability of ppm objects to be re-fitted in different contexts. ADVANCED USERS ONLY o Documentation for the class 'fv' of function value tables - fv: Creates an object of class 'fv' - cbind.fv, collapse.fv: Combine objects of class 'fv' - bind.fv: Add additional columns of data to an 'fv' object BUG FIXES o "$<-.hyperframe" destroyed the row names of the hyperframe. Fixed. o model.matrix.ppm had minor inconsistencies. Fixed. o ppm: The fitted coefficient vector had incorrect format in the default case of a uniform Poisson process. Fixed. o plot.ppx: Crashed if the argument 'main' was given. Fixed. o envelope.ppp: Crashed if the object returned by 'fun' did not include a column called "theo". Fixed. spatstat/data/0000755000176000001440000000000012333041762013057 5ustar ripleyusersspatstat/data/flu.rda0000644000176000001440000023660412333041766014354 0ustar ripleyusers7zXZi"6!X])TW"nRʟ6(;S:1!)si|_݊ sD\,yb}sᰰ-;1^bO} 2"_VGXɟABZ틥ԥF$PmK~ex{ʕD?(̘}e0wO6jR?(}kpF܉=/&-J +6SP'>3A!7&+Oj S?H|wd=-j4PF$$A9'o:@p\mˌp ) ۛt#v 9Un n^tN7);yjN6Z* X~C Qa=.a6ebƚ!j<`/,h !+}h'F.Q8{0얇*-M z*n7|7}tL#o@ǺpS嶮Wxa̰p6%q=[,o2J++'}x6}7"E;Kji +-8ݾ4ܒIJ9^7$ʮ]'xI|t9=$ =ЌIYqN[Fytc˽̸,RrR59#'t3G/bFv yE ;zu&вB#[`(~#ԃ`]j #l?59]akqL}c"V/b>|9MDJ; w&~9#μfM~nsuCb}:HBaԶ@Zۍo85u:SfOӃW Ѵ'Q F`s%zY^3 AHE 1nL5ZP 0 3bq40 K/2Ҽd窕Dcb_%]yu0Ž'olv 4t%[%n L9P+XJBȁVzt9q@~gmZ@39R|E%~P6>Ԣ $i]\Q0!X`sS RB-.H1ҷ9>boQ+=u 3jCi!P3L{D;W&~x4-rл_| w}y<,ġ^`J?C iJ>J`c\Hh}pjczw]})PGhG.&Mؽ>=<)+{|z;$U9 {4#i!-ײK?4\W2nUVeZ+=8 ̶οX~TٕpMrնoUlc⠋5Ei5+"|G jCEml"=AkOwlIؾa짹Ÿ/)?d{AǿzؚM҉O F Gz2dazD2 P˩&"KH$J; лJam&:ۈ[El-6NF$d*(/Xg]Je}⣻P*9"ۣq@#y 0-!񔠐ik0t|y#?ձ P %pՌh㕶6.y#i>gǗ\ePyى#lSf]hKcQ:(N+A*^{ fBx/IN}̤^֮NЍ:Ujo=mIVRG5>u˒,=.;\d#xuR~k%1*kcm)6baTw!ē)/~>tr?^,,4ښB %{PQaFhٕΈŽyue"77YmG/IU4mnO@01_m^l,vF*!j(؜Sخm?5~ol-6z uhg`h`UN X9;peA1XԑݘO]K@B8{5||Ԗn~v񃐃IYhyg<]V *"YVkmFTf Hdc[@KYL4'\9,~ &Cu k r8}& bb蟧{8/Yg6Ic+)Pz)Z#O̓egqhNVo3QTBʊqFÚ涰v8&'u:ry x|@W)mey)>8:WbHCl2ij;"a=31s"Zm" cˬ4`$+OM# ;18k +2w*&C7p'ǀwrFqaU>!mUK s^W'܃#G>g{6⩗u Ov+lK1QQhһ0ْvhڌ1Mtjz CFS~09IX`|6WB|'IúX HumOD^-Ȇj.)ՈY!>sxFJ[g}=M8ҭ*҅:-! B=T5{׌ڈg]{yv%RoaX{biQV= oE| s`eu Ζҡb-zם,AӚf PO0OǏڹjLdK,M AqҦԖ:[_zuW0`;1Ak&^:+} {3\myN|`IiM.ЈQӽ'qzt*k4/J:(qdĥPuF +Lm~=ɑmQqz/yӺXbiv]!j^}'./HӜB?:% kh:tÎ=MqaLѴsz}1#yd A2Cnn\<ʚ%d/ yBOjعO zUKV(GylD (e3*Nm$AL7KR!A}l?5;R."ƶ*RoZi0Hc7F.p' B2lm)|NP%jQ;o]IIH@u-!;Se;8U~6DSH] =5UO|2wH*Iu-.h;w:La9OlY'Lm>=Fvjn"WFK#574>ia܌͞f a jUjH{ubqSf+4Lc/)B 0Bz2x/QVeKsQY^qfB$CnlG5s4!穓9mMؿ> ϖ>͹zՒ; 1'yax\tcZMbކ}#,+08HSHfJK kIܺ%"Vɝ8!C-Nn)t `7P2o Yt,Omh~g22* j7.tv "(;G $rΗHG)@V)4a5WctrIˢ\YOeQ\Dp{A=mVy@[Uov%m6$,n: x7gmcX!z<4,glѸ7e7ǩ-t(u([DaL"g?Fȷڡ `)3Eغwi!Cr}-g!q xC$A( [ xi[n U85\`ww\#ZJ࿶"{ݲ㙼zniuxyXVߟufˠR+F#mlMYu(vG ;W^֐Ʋ{K>{.<͂o%9=) q@ H"UY)~h kZ*a(PjrI6i]LtUnxDM9-b !wtuXfG۩VE|7"R9wW`HJ9 ʭc~'n'z҆Lt#/DN5V4\$%.9~"XٔqPJE0&gp) s̢w0TVӑ=eQ%}eYjFA:Fl*uwl(-ꄎBy~sJ4U&Vx"XNnn')FS*ivlwLl'jZf3D  azD t> Uշ<;`k:]FnE܋!'gqfD<6U'(cnϙ2ӼAX'જ 5>b} ^knm2fשns;.pti2VKP$dr@ eUoܰm H3ſ[m 5k\.fd5 զbd懬El%Jڃ` Єcvuc!-FHaX>2ynLd !10hE|>tSq]ҳ).l۴Vȅa$hh629Gz_6Ңd+َgrG} HJ8O^Uy@ʻU4}_07ynOGulJ6x8NJ ol{?5P֌Tۍ-hpE_)^g;W˦%( mW_Sg0y'w֛mbmA#1sDZ ~ȶ{n1)) !t0٩y﮽kX!އo1da^U>[ O8SLҶ-~ ,)t<[lE j1G$ziizʳכH}U(a#}QBUt(;hqG3Hn1pISn`3"b15y NC͏;N="c PRhɅEKbFϞNGN RxF #s4R-EDʠtza82!Jc_}|2Z9ڣvwDX4*,nj[DO>l^;r2&!tKz|'guLd"TB hPP3JC;Ga!]3,SjB|.>QXKU^nYGp1Mg!쫺W3nx'l\+7Ŕag\=p5~9<9'X. ;`7M!v]@\UGa Hz U/Ill%u޹&`6j gMҺbPla"L/6{A7ܵ)>j,+20 x+o|'Y.XbZA,$IRӞ R8P\A$@-OPD"HvI6*'>|ogck@؃V7 (3NrA6~n,L|8F*|nwm . jƶk.VkƧ4awqX R\E 0%rs8Qm MD_19+_vr`l5vױݵ 5Od<{m@j&Mp&(/{#0 M^S9|ร='~z#7D8i(7/GJuƒy|ޫ~,^Kփ+ Pr6&'4M)O=TK^mmջOVC%AcQe䤻 yġWRū>ճJ&[`b=Re 'Npa^+;d\JњDRhafVG}04C*L@ u=x)sL J:Q iw34Df/?5@>eh=$;rF -nLglPGŏa(Swk4j:bBC{D R-E93z ϙ/Gj #0eݠlt{B*ї- LRt#(LC:8b:xY& ?ch[iL~k75,*ٓ71G}$ O[ u<>~mahX1O3r,;<%Wc;!W PYH=iBh\sxHQi;g3٨iXA{-~$yAHᖴؽޭGMq5֛5{cRK#Hex),O Xsx<aD9b8M3oX ;;j4+hX_Z(Sdr6wd~Zw=VJ_6/eAYlF ibziP-IX x.c¶hcriß/}Y|OqsZ[Ł9@(RC]j0C% %ȇ͹fD d"x|iz /=1SHɒ gfJ?JȮsz  (YamdN]!)QҴBBPpg :l0Ym}-tx 6vػUW̰:` [¥гxKfvکң7a\彮Ɩ7E<l%ȟ/zxߤs rN ekC/[U]y .̢y=OMP|Tr_S[n$5r$=j zxCVRNM'q\b^c]?Ռ뛐p\b6P6_e};-M`r'E1 aC^mܬ'ڿ<\Ԁi+@MuTjɟFNlSZh 8^\ⱕ`OXs(OZĩ,L7駵֙"gMh3Bs&`uȧ@+RJՖP?S?lD2@nA[Br=MOׇN wMB:~ vC5ѩKtZAJ(E_m娰~Hn1G2y}+}U3'Y&I\* =WW$ヰm,{$N".Q xUҴfb,Ms|矻a5l r(fCN\< V}i զƕ,PYaz:$U)߉uFh%`,/7ءAG{ \{sj^c~˜JQ:VA=AЊ# r~cbBa\Yi"敱cbֽ@j#`c7{Nosۉ|Z0jZo) T O-y  )@g ;܈ RpX%jYN*Iq]6BϞ!i- sCqj8 V|s f@/-mГ;{9]z>TgiJh2*F{oǒIπ69) C_D &@`B¿kC|,8oLQj٤+!q#n@t185buy𾦙n֗9lg3!ઁCxxOЮhmIh[/+ީEо;ӲM mW_STYMoYДؤ׆n^ڸ(jZյdI =E 7O2jD/Ij2W5=2Yv1" h"uNݶY&qOhǢ |ߖn1/ { N9#ɂ'S'sG,Q%S,cK^ 26qzꈉh@<?ڦ=hկM(I!سݡ$/x$߫HP%M"#S wf\CE^K{L)M[Y(FxANT9H03sp G{fP>O01&̫@TR ɒ>QlTe4+>8 ۅ*#]8(Hdx(-+N d)5 tFF'ꓑԧx8h(@nfofJƶ-F8ۯyҚzi+{6#@O(L.0F7BW5qDwƃظHɹxE]<;p,{e+2p,G_)6ŁJ;\%WCʦvwfΈ)2[[ֆ jJ?79A$  '5=`g62IKbe bye/ߚ,WCtaS~2zoYmSX8>q8W/v= p[b#Ii)CwZPq$;lC0&fD#,տJkMv$͌_d`baYn #帮6#btN0}t4{E+i'r;k INBOoƟyLC4-[:jHCwԑ![ș:Ov}|_dPL=|ŻVBK$T€"tlDortz\ߛcr%f_y8VAٹ "*"I?Z5h(y^H=㌟p 6#I(9gX dPg:7m2Dmwr.<9}KU'(U&"yVfw(ZnB_[um{IB]8 .o+}a|ni7*uG5"0ZyǭЪbt́.|꾍iF}J|/]U0;*͜`;!8Qv}i:{ -6D]WG5}fSTu!UwV#^T\0Et:X~%;֖Pp`LjmG']J4$dS^ .18^ VH*f&+/3-$iMIn⅍v|O&Y;ڬ*s xG ܙmu;>qFs4trΣwg`pE_\C,-Ci]2@e\]/5)ژ`VVQȓ`ҴO 0|e>F{_\BW]w O٧ 9ivO9R}ȓ1wzk}QOm%ⶦ3;@;O6L:Br}j1uU73{'sQ*$IVDײ1YLcG\m5I`,<C듫4V{:44XhqWF5 `FDUtnf4z'l"ƥ;-3(*DObN8k]2}W"LѓzuI?#KlR+a-H:?JJ8>͞jM8SM O^c,%ǤVY__z|f𹿚7{eCr_=Usg|s5p1+h8S9dϒ`b6*+ɟ c7Hqp.WEJkfbP aRXXl+&Kc" V@SpOb"jϋt,_ ʄSpW$<BkAO R,'Y拱d6fG2 Z{E8}PgӽGh.gWYݵyBѕ͔R2)wܱr%[kzoZay{/F5Fot!G6ż1M&d 7s<3 ^A j-.0'[ybJz Gg2(Ƈ]ֻLyGmZ.Nh*E܃UGįOҲ`};ҵG;TW*e]1I$wyi]$< X\SXHDbέOT'㟣 ^+uQ"~1w5P̒R cLK#PdZ9 LKvDFt/S<+yaq9 M9MP9rWȮ1ۋK;ԣ UY"*ipia&OMƄD KWἈ咛z2iBZU\`b!;L1Qj4GĪ^`ffAOvD]r(jɶc$!/C*l`rIL!"uHg7ƙ@')̹|2b8Ly)_fqjl+oV71=8 >gjJNC%-OoO`'%.V"|&<7B6D]*Ʉ?qq.{_S`[(|hE,$+uZҞFE;_,b Ѷr3iE=V jz3`'r6i|6M_w9 G1}KN xDQ)'v%`exe$iRhq^}U(Tߛ)vgTwi%)Cnl;RLe!f?@2>Gx¿m0 yH wxn KϾF*S0 -؛,WNmA +V7ͨ_>HMJdQˮP.ό{]xznq#r;N[f'+ȋ{׫>pPf[` ;%F] {,W 'Mһ['H8?o\L0(r:{'tt! mK[}{ͱyH'2s\D2l'haE̝ kH'Vkq^Ilj>HPrt-N_LggjdNjʗcĞ5pXqXYpWQT2uJL JN.z+](Rœ# Cdkf%D顣EΕJLGP}3GP2g h|5P5hPY֍?m8x$rqCSѦl Bբdi@S"1o?=YmȨe !*_%5P{j0a #pܧ`9ʾ"\}&q_HuarH(<3, <)׫YtoRIq;hM;p) NޗbYqRVnQ|?\d@ gfгja1}/wBƜwRwxiܧwmt1cz.{e4.MN QU ({_HDuR@sȧ9RTegW 3![oNH"_uRN^**}š_WHh-l]J皽(F L`ts0K_1\bK$[/I]C}vZ͘ʣe \`U&|f44V0=C;W¡ϕrzY\,-4ߥ&h\rsf LRO,Q'5qIgĸg%2 q4Y|)t\KGsfMGTvؔ_ϕˡ_fz*eŨcSlR|(ʻ/z^x,Q~lqoܢ[RO-2gT~_JEYJQ;: "iziX+OY֚wsM콺\j,zV$FJeVf~zM;|'!b :pfBU:ZUPD(Zw9_0)K6Z 0Gw (kZjRaJ pᦄ\H& PMF>oe y|d? W؇@c u% (*GiG_~xY$x%ӆYBFLl?™:PKSjKK x麳(DFXnpi(vBa]n=g/7möX]ѵ'i&IrNĭe,/ΐ`V7^N|oc  [m&'ez#5[üǡĞ?A;6k,wB*mޅ57֕"c j2I'}->9窚o-F"nJ]{g DqwBszh +*#\օH+h7CF2DFa-$zKv}CZ~!_2Fo uQ*i%\&ί"t:pY#8PG'6?//{mA($oY&B,D۶q,wق0N8y/fnZ߆fotzdvKՅLĨ>cؠښ䓗( QmZimw1V), e3X/o,I{G9k}_ŚZ>TgbR2|>ň2e@0A{n_X\XH/؅pBՋӯ#˂SBM(QxҤ:b/h PdP0CƋUt}cH[JZёu;@$e_22^ۛr24 .&*/Ԁ0דԢpvTHW6w+H~W3bTaUfYP?#>TM+Ne/FDM|9<6_sһMwe /A>R41/ Ӹu цx[1a)7LbK u{pi >#VF2Бa #71&rhs qj^hQ!KIo#G2 @~]W!cu$#uF !=d(v E1 Ӡf˵h&_;qqozD +dYhMs, [gͧb=wv#:kK*9[TB} qOt ؔ]N$ftپF뤽#uҺSD,f]\6AQL|y$jǼ1dq쁰Ck@^fkKѳXib֘)OrN&l@n|g_as]E Cb,6SNy% *0>e\2'$'5 thyC5څL)m gHYz? nDE-fNGQC%2sl)& CHC,(xRJl/#j| < 'jpS%oOPv+\whn_KfAq~)ZyY<ꔇeOM"Aʽt=ztcH(A# $I%|E?c`&AS%rKI;#NXTH/_kH sC5Y("쪹o#!vo4p~ɶ30F?XC^ApS|Dy\EmmT(/>U]g|1벷Ὁ;efk3:lkո>[Ho̰FǺhԀ]c߷h =0I/Z4wftHEAm>_HWpFcOh-{70烨+?/ՎDb."ygotAqS:5O"dy%AX9"GU/Ϧl*l"Jn OO`jFlnΊSL舚Lထ 띫|ps>, [_bP_ V+8MLӤӆFl WڞLYagy` f>ʇ1|C\7Uy[P^Й?H@=W"8@gLFNs34܈~KD".#0kg^E@4n_x=q}}?be'2[ZԢ1~Sdt4SA۞ P<ދݨ}pj75|Zi=Pv:'MQA_Y<"W{g&ٲrM92R?:'e6hB.;n9. 0yKτ PBsT{Ǧ )$`<ua)_1Zdb&,<0tTm9Rmvm(R=Y^HD4zl"u5x 2H3Ivԙء'VĢl9{ڧ**pۻQ:!VqI & xhO~&1.$kwܷe@XcÜ&GCS1Er M_ Sӝ+%T -$-Vp5u e/UM W\gXa@"7l3L[ m/Iv/X9j@b;A% 6hd%0>3⃟x*;aE !'*=,?qt1WB~ ڠǦ[YF>_bO7NB %S)b`o$! p;MH _@f`wh a^a/_oqQ1L3)9,.XKDq-jДyUX n^5TAwgmnq6 ~`~`'Goe4V@ԳIk=jCw{ q|8Nx C`uiP{o}Q!C,$a zF#U.͔"POKڬ`jOF窙.@JTM0/z(R D_v0a&*rρZ6eW͠hSoΨjΐ>ghcxNkcxaCT,$ogfg]cwBY kM|s҆+Z5P<;(ٷ-PpX4m(fSƂ˄vn0A(FC_HbE`*y{Id <@di3u{ӌW)NYE8Xɩ@snQ4x;h6?:Sِ{h/3`xI :k4˫gFPgP7KҼr:QU{nĿV>6t1?]6 uDZLli8J@mX{!dV0P,ڡ~Nr&nrɲ sE%v)G)W|KxuYxAk7lQnį%.5҃U}ay+gRc:} vϟk,dxF^HtO0Y6҉xCTZXK),Jb _\KVyFnh#a9ȯ a/ѭ ބ2A%&1* 8 B) aT^r^^Н e\VٽF5:~NL j5xx46ϴND#O*צ읟pnbLTX=`¹ટP0E}cʏBF3=chYN sKޢ^ƺ;(o=i"F-{_n5;s>%%w9i},%CfKQp Qc}WIij;<] D1XVək\~9)I1M}F'ٟEJ*Ht[BfAZ(>k=_R% yD Q|яF(*h WyRh5-޲2oѽ[P)K%#֬~mD4)*KhE}JóB(v(Ȝ -|C zfZqP+c^$,'t 8QFhPX?n6[tIқ_p\ N;nO~}?av;-g6x`{ cTJ7+;MtDRC hՈ]>ɸ+Y*jNMBItl(~|9I 'Y| rh!KBmgf̩ѵiao ed&WP5Ixr!dEr~]ayG(-9-"ɦ}zC }+Ty?Շ/Lp!k _WDNI^hR1[?׾VX|)dCcgyRPw"$)7HZM-GapzHrѬŒ(WN\_Xt* _8S]F/l4hw&}i߂V Lz?`Zo 4M&,nX:5>d>>nL9 v~^Y@C$i/Px1@ C oԅ9X\etOi01WIƒٞ3$Y9N6"NO+]aX9vϠa1c=̥{!=b_(R1dWk V\0/Eڟ4e 80ұƢ]Q S}sJ R&XFh×C9PtA _CQ"\ǮCJ $v!r:p=k<̶qRFQ+u_X/a~9=zU?}BK]#r%„ ̅q:{ȡ_ eF XX3Og,HuwKw˼4`23W/n?ml3:`*U- lsFWKgZ /܏{q%D#yʴ{EE&U&bSe|A (6`wxVo>idQjy`i`,K9:}xv}RJQ Ka5?ozWjQZmA&?ЀW< j("XߟɦFmݳI\H\kJְ2N̡-RߎP߻־^nd?>.(#b_nrh1]" !s Oy|x{ ǝ>ZKGPӶK#NH;Gˆ)a 7^0kn61B-TQ\ #cN\f#3 =`te}Pm>a^ҎdBltq"n :ܥUde |&aZ]9 8hnkaTr[D>g7xh N)% >kutv@w\T$5tC۠LV }藊%K4ȶbQ:^CPj0s~/TrY̋~_nQ{%/IB,xO`erbr2Dp% T񃹆ZadF!a9ha2IjMe@tS~&Ē]fMl|t`0bs*3SSֆSF%"rz1]!*(J6_S;~Tԇ..?VdvhK2ŷO8@r&txa]¥ Sa\e wSdɵ~0c!/FqzL1ֺ5s^%0-  *ΦJHt0t&cO!(T{ծ ,r!4xq񾸊QӁ2a!5~"0``}fzFbϑa? ks9bv'bz7DDXY& 6?2E[s$v"U /o`AeĒ#͑o>8nH?~63X/':(D<:†n!5487e)N_#d]2< J?4zbMHFgȩkLgxhSf\ Ҹ d &ѻ;@vY'ðN*IrC*g6-cVnѵSC+B!bv)8iDM3߼,O;'Pvoxa8ݳi𲖘%Rsp$k"r6Wgt(o-Ubr!6W)gl4[nl4u+W^3|kMEe4EzNJWhcGj4EGJ:ݯXV~ը `0'\+z$sϸ/GѳY4?H}8?:Z8gwu[97?=:7u!]r]3T͑ROU|E*:'ፓ5WF6k'I˃Gu}[$VMmW?`w Gb=w*N%kNulg<ύ}?MTG|~OpvPS+v2at#O7y {&~ð*컂]4@o .8IV{)4W,v5ti?«Dǚlg.θ5&6fgVcEAqBڀLIYr=)Q% U(M;i^ZC]BcFi jT$mS*!Cy':cߝ+_M\JPz`JKp J齝C|.k8FjZV^9bv_=. ;@ IeP&ѠZB2ڨ6ϋ`ͧQ*11|ctxiD ?s :z|zŃsRl 5' :Fת@2 1G:`?ӶUl8>=S.Em^49:{\k]P ! f=%!aS vG |s?‚up)9/UQ]ʽ4Jy=~lK݂ v|:=%CR.!9Ä!nАXiP({#vOX*U7CKNF9$h;m.JP_aتSL#t_ZeXIsľ3]ofHt)(ɡ炼ݡOQ&_R5#ބ 3?ּJ'AxnPU`E^|Ok7/Ѳg-Yѥ5ʝ,V#Nu訌Gb/>jMlF%]lJx"~j[1wSIGdRgu$Z6{g;XvP(vfaEElR8еQ76^?q#3}7'̎#+n4jT_637,2yޒ{ 'NˤM5ÂJj-''H}ȏ"p^ƦJP+bj=nhWqCuo,((@xLJv6֩0p>ԓY XeF)P!1gy-_L- P\q7gQ Gv)}̐ ;,u*ܸRH/ fv n)ChFOu_9y zw,vٝ&a:̋X!4qmg!'tO5,fTT zw Ux&* Z@8; Slc#g>y4;Ǔʮ @tsDŸ!|cae :e-yD퀂}_S *jʿ)*EaGJ>$g]'sIR;G6h߯A?sLBa_Q)GW|iP>.+Zd᝽O QkE؆%fP DpTԩOe6m;JE*e2+jipA;TZ }*=#%UᐺE}c 3*"1xsZ&f G]yPD-j< Tz341ѕJc\Z ,3UhnWҺY.LvYK̏biٔ0c[VP⹴0_XTF'DKDsK5*1Kw^6AJUHͯ_Y4ELPGz^ko;ˇ63a]Adh 8#ĿQ_P{B#W̠j_늳x,%YW-ϭ[GʞG'Ȥ.- Yȩ]-yO6W0.*vDa"eOde{sRyh=O{w:t:"d;8ۋN4凈?uHvb$W@ Sfch{+X3dKZ9 $i_|-Ⱦ Bzc-ێJEA4!Ze^:`+z,LdzD6SMÉLr BPޙRgD |0:ҽn͏Ң6+;Fǜ,~9Xn7tmіM0+ժÜ)kAOİK뼅1k"i OiJBmq昫~܀Ť xNNk;Jv! /GZQ@`7E芣vCKv[c"9u@[C?b`'VlpyE1|rTJ=2h("{PhH7:;l/A3Ah"RV\ 쬼X΁b煽0V"ͅL\J*S 1'ɖ3mG$vq?Uޙ8\H;#OFʒtgûre(j@gow\hq?,/Aq[IHl—sD=`6׊%^H2e.zӸN' 2xZ4/ vlΨr},2{kU/nL#}K?\GmfA?k[Pbp^;u`'c|+:F sxyؿ5e{ɪxp)V|꣋u ~ Hc+m@@ txgk[l(F'<-낰tNi\_'dSn0YĀh^xP(oz.߁d1NG8%ҕ4)AK!.*܄=ۼmh'.s=[=BeD{a^j^gK2^?F`yTڅߩ0W8칕Ñ^-kg6B'_ªwEuλpwW("G%'-f2 QOH\xa͚٨?Ly@)"\;CZ εQ|Ț?\H7&%Lɓ khPWWp5L:O?e|k`{KijdZG"XJ(u'(Ho)IΖ}&-P{yjBPJ9^%LĥrKzW ԾSyTO8dWךfc0W$=qBl(IVG!&HD:?qaIɩU 1+wFYĊ_cˏ+HY|$%" .Z~+Q̚N}LY ۺqgcoS׏Cd?hp0 $q~h&ȣ&oڥ@d5 lu&W3sh24L?I5Y2f:)UJ86R=${:uT0Ddoϒd?%[r  j0ㅹ$3t-vRZVgVFEa|=Jd*ęE4ks&9ANCʆD TL^/Y }]KJnGgE)E[ɀtlg*wo3]߈p.koXǢlT!'KVߥ㍵puwco.L'KlXj̑ѳ4#юnI<:(r> Yb{BYeȽ6 ɫQcp1< 72\m1i8:^V}O SH @rSW9Lww_Qo2*ޱZꬳhbVU,GF`JU^7ȓ _x^רc 6o`#$?XAߧE$V1=%6"vEV≸~]$s}Ҕ?nTL]oa!i Xٍ P^6hczزU_ <'Vd?Be\'yL½P|5)7h}1UF)/8k/&Sr,Xٲ;~F{*7M>+N~` 0eQ} C6*̃.C⿿]L z)CTɥM3_m7,1KkkЈXmY}t+7D6 tm$vL&|@jEv{ޞ(Gٌ^*N!r8,*tr+*0q`i5͛C"0Z>҄3uK@O,CYeF\]SxtvüB7!8gom}3^HѶ+B+Zk_ML<Ѕ;JFB#Sz_'3J3L7т?8bc |]llBo@<<׳q8W%r>q'Pо'?^]KcpLjE8]S *9zaRɅm[l 00;|uT㸡.ktD s #o/¦WWPrA#*چ¬pxqamzo5ΡoC_TSǀjygn:x6D9eb1p[h.Y1HˡRBղo=< ]E9Z]y?=`뉥7vdBӋ#7XdI~&t_,+7ާo βoA\]1  !+Tt)SpC o ]S}Ux7#{0ZmA){ P=0Xg|q(-S=~-j@_]R퀞iE\2$7]icm^$0zbݘ˳eV5i.]B?' 7ޮ&FY$1g W6PWUict8\(!x1[b_1bcn5Jώ Fw]%b%4 ,{zT.5A%ģP΂)긖x6oABLe& f⒣Wm[dyۑ1qVFyuP{T-4S$ ~ W%qR^l $B:iFW~;D!elxU3RW=8׿`ՖfAic|>Q*ܢ+)ÍefT:s/9yۜ#+}D~%s{ޗκmx|Wu*k0g7Z.{^]$֌7uY?0Y:b%1<2L@kaVJNH SPhA a@=z_4xpm35f\{#>-˟Ͻ7c0׀ !}aɴRv) i&*  $c]:n $#(2-zܫYTKȩNVL $+^F6P#qW coFkQK]!c՘X"kCIdrn>Pyڶ,$ $k==Fz u[L!H OVU]͚̔%:p!$ O S|Xm|kB:MFvb'nGbxU/\Jܷ?\ Z@TgxR"a Rm`iJH_zUEL_-܁XtL]1SsvNT]h"` uMKeeU|TsKyOѡav79 ~S\$6փȿh~i%3}6u"aΧ"0߅f9g&*yb=Fc1ia-:Ag8ٔYsx5|KfxX];${g/8UT:z2}Yq=s?s=L?H7tr.pQ*(Ԓ'n 1!Yn)V+SP窡f1r"<_D)tKEXq7_q2󯿟غޛP44d ~^r5Ȉ=魛!m JBA p5T11BbR"]Z"7k;bzC9z(ؑl! 2k9ju 8{qyF5XW Ά/|bmZ(B想[#^`D%~J7~DԷoB&bgsRpVAJJt%7TWRR}oмZ0O'eWOTV.%A0s$X׽ݴ4:s}G1\Fz9z|'#,#FRpsb8<ĘAi"Z&`0{Z4:L ۵d+q{Ԡ~+vQ)00N 3fˣ~;@]IsUQ)kޫ*+ZOU}ԮL?A,`:E+⼻^C ]# "N{ұzp?jK gdt<5v+$uB&#60ׅl1Y+>=4xL@t_`[ " 'lq̌,ȝ59=w rY3]YХ/#hp834q`Z >Q!/2 e0f¤y%Y`z1\qs2qMa(|p*%|_rF$?(j2dH5[3##Xc'>Db*ٵ\nV'WpP'\Hb~' =:0A߹" z,AT~z˚ ͷ[+vgpF kpMC  |185+jWT0c<ۙ!?pS2"SX^MِIciR Z > >j+Un.U݇^y߰.hB@g%$* 2;}Ew!}3.b?IǕ{ltf bOpI7"(:`qnT)`mU2y:惢9·M<띻%ѿ7yX=!i">-Ւ}&0?]iz z:Lj,wGGC[:ݡ-aq'(CܪTKd +x)Ľ8A0c$ȴHGƝeӍJLuG\ 9Msc8z@T(EdЩ._cd5,aX^5ы/Nu",׻!jJ;y2/ ,o17=;<\AJdpoo"!޻`!˼fSHu@o+bGd"^^dõ1I+c? XzDP<-0'8Fg{ *V T٣3%HG4Pb3`E4+$K=qU ²Fl=)US0S!H4K+@r4s]wbUrd6z:PUH'-K)^答asrw'fmx ./[$6hڪ`2(u)h<[xҲɮ2R3EU\He3yEf>JD9(b^Jttk/ۑt:B3]jsl]zv0 c ]$5d_<;%CQEEh.5fz>}HU*j7b@k ~ضisPF$1]j: VQNXWg`gG]uFrKn%E+v3\[.=m\M<[W7kvŀRx(ǔw( 'MSܨPͽ}[8}[Bx'm%4.8 (8 1Ѳ06X3 Á/UT?@ |L[nHw1~gx+vVc1)ߺe=c-Q4jD<\ncT7L.\V][yǐ9P45uҩevS4[E8@ ] ēQj9]v%lZj/b C\J@f "85+T^뙠"6,hji Bێ?g{/WQ<6&}6 hpmBzgv4aZ+=>H{ d9Jv|{ѼW_,s܆'8)v=+uzDDzY;3l^QBg축ރ;u7{G ̮oܛlo+.EqQF$$7e)yOteLa Z4|g,w^ht_cTVv}oWe=' !|.,} ㌴Gc0dozߝB|O 4aK{oG|r_yf1O1Gv[E,IJ!C%MhS`zJF!{@i%R'+qMbAM&JK]MEP'.so޽@l! Y)'7ϖEk++g4ak$EޱERHlϦ&V:8igrKhl|&@Q_`MD<41@G1U![r˕~T%7-,*I@=&g]#Q, p-qI9rb(z2ya#$qQH[&(Û/NS+:aȳ#Yng8I e1OZ"fv$H~0?4i[-> jF̡FPCnxo`ʓ3TgM˪NwzeW8-{ 5 ]\.Ҷʙl)#Cg2d30x+@XJ9ΎmLKr 3?t=ɰsIP|Xws.MR#}bJb0dzm_m>!`e7|=[` +#Ũ7Wgc5]bWΎ۬KD1a;ui%5SOA)AB2ZGF$2~KRV4Gu:%zaҨ4ac;XF a;Eŗ<$ǖ_8GpfRfQ' ؖA*3TtTJ2v6x:w)CkM*s繞NKR"1 z5ҵ:2'N KZo<Kw'މ q2U*(mar3 oo)u>*h@j7,k<@CBE%)dItÏYt02Aa0G??v*D C^O8b&ٿW"Vu`WV43/׌}Eٷ)CA@-_FŀjJfd>[&%[?p:?YiQ N}V]yC99 4|zH<\?G__ϵ5lWovAcd$ Ej6mQ<K(pY:=5BX-4>a}e$[. &Q_O{}ByLpTlMz9 T2[D@9XL-WvWf$bYy3(cF1qPAa=gW"{r yY1FahZm^;ZON3J#y7-.%t.`%f EL#w|鼲 UQz='6饈;SAъf܇}!wzD'_3 }ѸPSu|9BR5|F]B^Qs_W)+Lu;A9eq4gN0m##P%- %&J*NTKtX~sLHs!HSyx5Z 3sƯQRt|>&vVfKTvs`Pӯ E]ٶ 3;徱"$p4Q+WNSw(ETDSXdֈz|:ޟ׿NB<̊onk$6Ȩ&CSҁZ{Ր4$ %%*{< ;2%a בM7jp3I_A wQ#俄rө)׼NhuƳEZZ]q@?uzv4ZQ% #$xE[bq;t#(f-.\}FաbR %NXv!}}D4@9}gh<ڛgkj3⛤b"Uu֟ʭm-P9Z㭜y51rn:%E鸹0̩+<H*d%| \ Dg (O^J{AIG+/Ck;`si×-}ўrx(XeQHKI~< c_ejNJIEw'x;0a:*[ubiYQFrJi3uWR܄Ɏ>A0דMk&[/: ЦM"ڀDj9AxϖKzi"ǏѫMO"ENW2K@Q&2W 4q@3K77wyV [9ֻ1.2er8;abR݋j>kVQKJ'^ $d zHŴ))YGsyCPU.RE^0{?۸ w3WOsL}TG>/A? Al$`(ku:vA­/iSH_emo:nH^2|EH3[fCktKlհ9HRLTNćFot;Idi܂[?{yֿfS1#qIc)zrz-m{dxoC͒6n#YSy7B:h23TY)_FE*w?fQYvEU@RY| AcT+?2 d<|r%nGύ[:0\>_cZiL9+" CX'SFR<д=Am_"& oATfK|4-f|''#?Ijʖw5<ȖTK>]Jln%2qH3ꌓ-mgWTo=7rdd7c`#8}*"ZP ,8fBO). HnlGPEULC\ٟOV@.H꺷2ѬRԻCPI[5Bm>7\& Qp3G]`*KX5.~Bz!'\b3 ee;4tm3W!&F 52|j;..+m Aq鬝n$T0DlW*jxk@.uƞ?LqGzj1-U$6Uty4ؓ 0 T^I~~vC/<\q=6`6Pxiey!nյL3b<#f;+3hC7Ql\渮cf+X-S G0Ա׎&A!9Uk$,_QF|+qr=dKL $K5c{FL{+Tdf<1KDUŲByC;!OvRjP= ^)f@i mrAODN:?" VYEh&7a4f+ H'-`pp4"f&Ba9朐_t"'\|nW}:g }aB\si!;7<6@EMRpd%t0FPf*mifj|\aIQ]JM=M&NNs[8+N^ռm-6%Q(:f|Upn[ѱȴLk5 "g71[T~ Ky)S1ac>9Cc@'7r4qPtpA$`pMIQ{.9%''sϲ^e\I,!oBnMB򣲑NMcP~M YrG}gmՇ+IHٮ/V%[p/qSP Bp-'(a[5/̦gL@j޽{S'o\|٫gzvuIB@Ew_ ߤ_+ kB^!XM8`^=!0 Z% %v/Emppӝg*PF .(q\xhYw`|LY-S|*FOCkr=dQ52moڲ 8fDUٟubU;bm?Qа 2/}G$._ƷNO wґjon K]h4ڻ~cdq{n^b%Ad"&®ŋ'Fm*U{!AmI$F+N,zBL;GJTV~mhI%8Zi˴b Ae!X20TݟMh -@X/$!$t<QqLe~ن}bA&;k`>@ = 3ZNmFV]l7 q HBZ;!߀A355_ t.6]`GzΓ:AF߬'KMO<_5\J6YO4dh['λLyM&+rVJj8}64:s"/gȨs~ 1CWitZ. m2R\% XAEKcks3?эlޘq6^v`-]S M.=\n&o9bš.8qXCՒfaGw$B )OՏO"Ñqcl#@_?vq)%nj7M}s7]U,V66SžޥiN:#-dImg+'1hR3 o.?$jIvsBA裣?DԀ h[IWϩ~!mk9"$!lK2u1$5W$`W99szEKX%6((c#~ASUȀLYbfCRY(q ;:HH0seh.hG (dzͺa _A~ǒޤjf%5PX0l\X7iT2AnJk!q7"w]!! ?1͂ib6gdt btNm5WNl@ ڛB]TsS5Qih7]|&<hS |Cr(tǶ3{SZme#2$4U-*k)D_kdVU?cPp6_2@3]/{%q'=E\|H* .2}G'3YuM)¯"Wg7?nTU}Ϡ0L$.gNryx!j$BWbmfhF.$mBqPWH)}i[dNtx:[/Lژ {tմOΎK?YKᶫtU)P 8JxlGD2r|@q2 Ku 2zfZ ^h2JE _#4Ǯz.F=j堢˒ly$q_98cdLE./N$t,y'mm1ͽyB:}l~_4L>8:]wGk\,xi;0zɧ 4FX# %\4Wo;mxx%G4}>uJE1ltM2on8+Hn$Ü[L¬{/cCG@,6U(/us Sv9'3̸f Rv$!N@ )}qwYސHh9 , .Q7ց]{$@zT-|fYfcߨ2։;0ƽLn+HlVy!!MWX)nՓa6gG#SX{>қrt*6G%LWA?>RHWs[l[FNY¸ V0y$Ekb!(V12L੫GzNpJ*z]S3O7ßb|[I.SLݜpw\::_XH%u"{5[R xŭ(= ǯhw"loEmpJ#D`Z ŏb6iAPR&0 82J,w]=w:uQ[*)ՌUm U>H( EJ6j2pq[\,ֲ`0,"*S4b?LI'8y '<Om[Sy7>qHyi w߬CL R,"84@C)"^gcD^2oһrcW@88sLܙx`؃<%2w*TT([ 4(]8r|+ՠȚIvE?΂;g!UWQ |-P% 6Ӱ-۬}HK#C}Trst ۊމC*Q%|+K\rCgpB ˸X4p=Kl i_z1&Ӭ%1˽2 | K)>@k\y@ }q *em+s/c,㵟KNT ?[T9PY08j _Hu638Q!Ft#8(`jX' M0"^pvyU)}M4mv]E7]  `׿1{BsmjY=Lg$}+?wCek b(!f;Ф 79 q43<:W̲Wxmrv3 \)xLώuŽLxĨjpj6x X@0ƈӀF\yZ&eMOۺ9?2ĕ|\l6?BүY$d8')loZ񿖨9dׅgC;Z7*3R*q=RD!VA9x m@tRW$4ȫ;"~WUH;At<&GO*r+-Ԡ+de8ɿ(_ALJ F r#22UU-!O Qy˜(gvuȰEI򗞥LN2O ?*3: h5_SC/FZǵW?{PH=ΓvRw9͚ q9\rj\ 3f@E!Hl``(myO9mrӠ]~c؄IN u1r%vz;[-&Lw0NCoaM5dwk|q0RKA)hkKEԌʢ:eE:DESu(ݭ,f=yPQ1 H^u`!?v>VA*&O?Z {+CJHٸ4y;Ezam(?G o d׉£tՎUh}R[ey>ܺgd[dJS顩Q9H+8h\Z췽.!}ѫ ( ].Q{-x]U=%>_o&nG,ʕאEUpU2 W&r[$]npzE0|络ygmA 3aauEr#ir"uNaYGtP-^cMuˋ^WSwqg3k%DA.InP vN0 [O<~0je1DN΢ eԄ>&ل~{\g0@gnJ@TWհKwCӑƺ$(2x᠚wR8C͏xς5yC5iV72Nm`ۿpRT[͙/F.( -jF y@c1j$x#9q0{f elDZY013>v~\-7#ۏq!i\X"5$xҹkvĨWb`Q ^ ^L (ԋXָ:f,d&>z~qZ+u؉z]ta"Q*c[Wp↍՝C3#I|z#…S$ݻ~^ܳUc!50hv^:-nCgU+@xT\;Lu WbId4"g AoUŮ;^9|}YLc0ȊA`HLm^R/p4`(H~-2&G֦#vx 3)riͳ.(rt6躚9/FˬsyZŽIYn90um9ꝅRm*FŜ ݐq&-$uT}J\C~{=2`LZ#f2V!ʨVjfD ^K!HWu$#a+| !hhOfK(dbk*IIڟƦܩh"@X ;`T;(@[mo8?|Q&vӺ^:lz֯ljT@Wc$ H0K +"7*rSm( ^ۊ48;>)v)Eqb2*xfiW&'*-|R-^ 3syϠLI9#"O5;dYeޣ2lfC^,PgC`%0)MH1yEu7hݖ p:X 2V?1]@@/z id=3䦨pRj &T>'$?*n|#s tW?6XS1^ eQ&tưɦ9edJPO;ֹ~ p2)jk^Xqs@EG@< l kţ%񦍭#Q@]OO`S}֖5 Q`w~Hii<,]qKXʷ2l?"D5Um|\YRf\泗[t2 l(OHqd?Mъӏ>PKkF+ m^oQjel8uM\UU SՏ4m[Q=g%`-0ixp(ot79?PS[ȦuPc Akxg20}t0`PQrm!T$Z<n#87'򯬯 gvn(.8_ޢїzU#@<.KwQv85:nJ5wks'"6 7~ Unm !TTڢu8i5 im(19[x#yܪ{ks3SD K,GGKDϲc̈́kt*c?7iU|C*"x.4 4Ƅ͹25cO,F-ݻ8QX:}+)8}52˻Y'? Zqbq`MoۼN׿z'Z 2kK[:ޗ {dgDuVdR#<1~I.õ|L>gl`hm!93cն&-1w,ʿ;wzPpFF+G}WmB s 0u1G;TnzT&_.p^Xyg0dNgi/K4 G>v^T &| INp&{f[6k (FEBqejºwz%{^ǡ6.Y&nJsR+u&A=Ϡi\OA ցoNvjd ,gg*цesolNjHbω;LsLM擆 o4'4 NGud<ܙL[_ ӴW Ek#jLmk5b뉃7AMjIcX-Ăc.WCe,q,9û#6$c k+2E"57[ξ%M1rDcD|O gۈץl"Ҳ}|ރ#"[dE&}06s'vߕ`PD;AN 'Βw޽CQIDg ^'_7CɅ3zKO)Pw }gF+=hhÀ\Mg%}O};,ŀUzJŦ}4T %?ԡ <kWASbk4kƉ qpZDzMNwO>rBb[2b+RjnCOQMj.25IqU?Laj[،սsml~г0BM(:Nj\"$Je'4SQH->j-0wn '4`jjom0;gnН8g`Ԃ%(dY,$ޔĆ>ZS<R ^6;b%~%_Ǵ>( Qͧ?HUragcyU [z6Jh©Qald}\*9h[0-S,WlT"X"#}> }"У)rmyıB=˧g~Ǝ jFzz E5CeFt?0K6M;VfXL5Yalp~e@n(OIK 1 gi2Px:'@IUf s&FLjRM $d_W&υ ru$D?wwG6lCWJ4'g, d\)"R֩+ъ7ŝNՔekY>#9VE:@j~Ul[T#Z'^-wǺgxVЉ<9fU}SdnxHh}&?`Ǘм3-Uc$zR"2#\y @RKuTp6Uċ\`Wet 7䑰y'6i TÝ'!SvҋٵlO`?˘܇xB^oj׫qQGs|8o6/C>;gG2<<")Ʋ,(d{Zos#p%~0bD-:W ]%nc<} Gݬu8 eO'+A2!=2^Th]IFJ Ėwٍ򺫜I",_E6و/qVe0"4}\C K@$k*Zr0ǵ:@r ›߼]ykn%ύo3g A(ބLgEl?f_l 5'C&u, 8{NNr@-{ҽ޺i$Yl "RW؟ڠўӖl׿5._)ⓈSOWi"Q jpEql&!)mcȒld:m@;Y2EUo1f#GzJF9+ G,g\(x싥4t3_A}'rIm{A3]]!uh#Uo5xy6g$8!PjSqaKזŐ@D_4PN?&8( ڤP) g0KNvڹ#4jS`Vy.Ah r|p)=w_0IFL\O< m{xBK0_]y7/x =McүFE &2r r0Vw>̐7FPwjXKΜjH* /jZx>F툠f揍loz2Ÿ|cΟ|ԗXPh2Mxq=Hg1Qcu Ghi{E.dp b tkJJ]fbމ/}ʎΒRl!&Ү"G,Vv3zhEF5yWӺ,.jBkv{Hŷ''uB z}B *C=~2Q`]f,EwF22 uڥ9U7˙F^Gjk.Q6ǯ.qaoIU~ِ'YW )J1CH2[A'R]jG $Ψ$Ͼo:&=/$Un(7euy"y ~`LT>vkgkkվՆ {^ *yGi1$S2P3$YG@(a Ui4(EYB-u%z1P?9MoD>G^Vk8#_}aDb:6')9U&`̭'kG̟O"0/V vsNeCێD@c}>FL麓 nIr!nyB'"u>1'13-za^RQV0dK7X9e@)F+9HX)p h9KZJ䡞M>B7ˉ|l>au $-5 8GC@j\x"y+7Pz ^frOiY (_*יk/&i5j 77xB1/=MMnl#Ov1)(7i7xt7!;ȍ\C[PwfG>Oگj/$v(/_Vsw-E-prFyAxY}P65xN@L.隣ϫVk #zA-rXf6Pap|sTxD %C޴S.2^Y?lYh3_ 8 ue .C7h$mkQQZK8*}Ď#".y+Ũ%+Wp@ ;X29āW+ F)Zh@E*|C u[ DIhPnC!v+PieꁃhP69fi챸hH b&y]. A[Ur6߻-%@V/YR3l4;<_T.)D6 3wLɎs/'CjKH /M^F1}`/q AὤI`VƦXީ ~!8l[/\zzdJ%EgYBL*aoZp^|#`HtVi~|- Kz&!{!tbecz[[و5S5gƦHͅ.-k#ajFY:rd*GqH:^[[$N&e6 +FgQx=˗6[(2.C-+]UKlPח5G!.A?0 )+~بTΎnɪd fslo@i9 d57 Kkƞh[AVcA `ɢzLw1D)4ɷz)ƒNC7J]W1gnڗb ,`_yp}CBd S4c\oY&J(p`jA@Mi_L|>Dna-χf߹kĕ3hd0a(C=7/V c=iC4tXXZr]|]uHgz\f8-6;rBFb?qC8K} 7zڌ[U.cPt/&:qq`o3C:AK -SDžn9G%a# * ۧڪvb I7̍TKP_F,0wX}x&Q7]]X 0o;S*}i 5GD齴]I6A=U zʲ8-R8 3USDz׾tebU m><±Jքg\ ]df`%$X3f8+Y=A>A_W$(hjڛd\mze` qs_ЬWD`&T]jKO/?φZEڋH@ 7SG{(v-\UReI,>_ykb66.L$ʰK\+>EQHAzjZxIb䚦U R[e~z0fٌ~U):u_%?z@\֥qJBb{aM/n]Nʇ4d?Ĺ41&k7#'YGp@E!V> D~~o*"$;#$K߇ޫt4Qa>krռe//!M2F?VlIDUU=Cn1jKQBVx*)wǮE4z=,,\3kVB*?6އc">J.:cڼtūiBC ɂo.X2&vΪo=i]e!Vxe-$ger[S odwQn^~QĦ2Rq;NL^oz*Gݠs5UqF%ɚSAfEA涭v A;!1邎5K}b1/[lhՁIAfxvp1{@ @@}, [ojV.zki q]W}jX]!rӭ;iA{S7RVwuA]Mdؖ5/nİa77 9lŽ*25:_]G";^WI @gVh-E ,#O3OMɩ}#A0jq{< gQi2-NVrܕF$20n %$ ߫CTZ~L"h/d;PJKv=_)eɏP4w[[=Ia<ɺ(m >LfFKvi+׿>W4*<6Dn!:7PD74ppձJ'JzDRyRW)Cfa߭iVW[j5S6@). h29Sd`%(u>Ѓ)'ruA9&5߰7m|t m;~ ?nSUF82nB&[aw6ԖBaWna97^ JSJ]ML&؇&"onږ¤zz0_zxD׍4cfp`KSj6b7QˏOqXg?ì,u髽A\6VώwV쩊Gk IMscZ@zdGۊ3UKnbzcr}"١ &u,NTS~E+0ɽƒ*.lB\DGSDm͖$NH= >4lw1`vMcUゎӳabl a/#X<8͵-LZmB3]\PK*qە'}#UԘv[0lb Cۛ?DŽ Wh4=7Q+}q}ex<_,/ysqS]HFw 08 N@"^ )/$2^+v>줜)5isn߱sQvş0߉7:S߻n^c]C P3ΧIJDŽ: 39 a9-$l@53*?fgٸ5|r8! q!HLlȀ<\2?fٴ5Y3M'c U&NK!c|rv.+_ C^r7ǖtF2kxx%Zg).{_3=.̷x +eu>ˆvzҳ8ܡ@Sb 򴼞6 Q[[~V}㓲р*1.1wݘ-MhHR GcyIA<=g("Rq^dxnٖEޖ^CVm]WiU.f8"p)Ku&@x1 2csn]ݾO\f\R; ) 1][KF[VO\n^ŀ׆)f@7 &0>)tYxFze\ii+L0N[TaIlFc:܍zHFNO4O]o'EZB@>9d,3pBFc*a??ޕQZVm,|Z!1xlV kwC7RwI7l=: /-+Ÿ`%q>*g%&˙w梻gtj6'lV4b ̒Feqe7o.SSKH'V (BYl*`o*nd/ه&H[I<.pH}sNofSx5vVjJ,68T^SzCn?ɛ3śm@S::` 3_-gדּz1%C!C> C=sƒE5cpRqU;FaT!_ڱ-T aGFbw$;32AO' )y GTY#H#Q QHJqb@KN3ŗn%s8Tp&_2r0MѴ1G7^|@B4\r8U$TM9ǥuR^HqֿurԉnsQ"U\j %+}ui Ou`P@ 1\u0jGqElo JJUd?u]\Hϣ:j>&E\Xp4=^^ZM-tɦբXy9KmUtC3DVf2KB ovk!&S'Kl(;ݠoÄ?–NG/|l}7+uCkς9Ig-ֳ"5&e$'pa tFw`X*A3QNJu3P5%D,̀_;=@)j9tݨ#K;V$mok`M̥aTK܋S!rE[q_o0$ Qu/C,a:MIxE MtT!n@.~Ʈ֡3^qc3!mr۰tcC 5A_1 $C9Vk2Lp,F-6a->gH@RCh\jlHT.4ģl%6: $*o!GZibX%hl #SR<ļ!:: hƤ϶ki`p@6!!d5w^3B6,* ^4t]}NvRR6%(_҆֨ 7W;oAw?GD#߄eUj9ԁZ 6|0mpڈYr/ن*T DR:@i"[eQcRK{ziPEL>eUgT`$pU.d qD_ch)2qѩSΗ^#2OUc/X"0839m?k ;vh^ORŚ5u {tn?y \~2Nws sYKF#P*'cQȴUh {`}ro#y(*hc2gVnƎ )cqFw.I5>tY#ϡH$Ifߔ|HliX| (|MM7=c3@G;ʆs4oo6OFyi,pyZ)vLu1 Oۇ.u΍\PB(~ŮI^̬"]Ӵ wKٺ#5ˤJԒ w첒>4GKtJmnLrno,I +۟ Rԗ_42*J#68o]iܣ?DcbgnM˷b;naYJ;OWTmTf],[a!"Y~uf]s(2%11z[5„ "Jܥ"AƚMT%Rj,P,ΎGiӽ.-I^.08x15FWA5Lxr\ *F{mڀr[|\b-%cT1r+Xqh^_b:9 N2O"`bYȘ}CIrEbO&9nJpXq%6`Ș㜡o<FG]PzZ_9i"ְכX@wd ⨶8jkUgOT45OFS2"g?]\U 8uDǫ<Ocy8(a"H8e>- 5&~7c|1r&ww|[bIL'ٵbYr~LO0~ y܁Ao7нوVapsި +5;>igi ^br+01Co9Ԑ<7ErĔԇ?ЭZ>.{@G`)Li?wx# XsyM}t}RD5C;(ͨ"pAEGˢPbԒƕ!d?#",lU|&*FZ\i(l1DqY,]O9prsZB|JO=T(huFBɠ]X<#t@(٣Xܵ'sp߾U)NK,C>rW?WӇd=S\B64zLɑLKU)F(D9=0 Mr|wg^3EhUkj!)|M dӅLVS/k>*G.|x}N%߹_6]RY#mj< s %wP2 Kt^H/H/ Ccr<ξu C(9̠xm+wmd (mV3* ;h4rT-0z0PR; -iC@jXK$AV|c,ṃ>èV0o=@t$Xӧ9zɸ"$ǩ A {Ͻ~ޢ5}&mFM$$=7þIz$iK=]5D<ß/=z`=#.mF]=M 2CmHYݤf4$7^+oYuҲI8?ǣpap͢3-Jx)|:Ͳŧ\KыQ/*Q !r1UZAS"]2-JV`Ir y=+`O }9+< P]8* )<#gkP͡˒ބ‹5#i6zaPC)%W+UE;-?FOͪX[E$;~Y:2S2֥GO 6IFVuI q<mjVT&Ko(ΣV8ܶd eAgH&@E#o'umv5r*u۔9&HvLu|70/oe2ۇ5؉HHFv$~& dF- m80iȬީ(ք،n.~\ٮ{mQ*n3*;3f; `~LZ-`wU~rD($"L !79f>}F~/a;i7Z"jLb00X&sjZ[uoT :Bg|=q(_ U̜`I_'4dRDN%`l9_g):LȚxeA̽T1-G%e:EP!Z #,DOcm1F!&-vxh˵ԼA~쵔[>8 hfªB, ]w;^FC wHǶ3wnf77J8#*^2ߝK]Ld15MT;/0soCA׉a+ϛޢ}* Cě=-+PLi3:;(@~FcC*%fnw<v| g%zzLtu]EҊ_[e%*ofd韴kQD8$vv_&v%\ҁ1d?l!#m,{"Kp|Gr'V/|4xe`+>CNuSߣx/_r'Jlh ŢAw0Q:xpD(#[N2,l7A $!kur 7ٱ` +No /ѦUX%s)  dP/ef P2[)*bO<#imU̅2LQc3I82:)YKS,2Ǫa6FCvׂU&6squU Aj֯/.h$ 9\dt}@ 7uTPNȶ^g A$DuLK#h.3:',/Ag]Mif!Yv=b( <_P(*WYC63v#^L`[zccҵR1zFRLB4}oHIjt#DCEb*#mO 7U凇_+SO!_uz7ZVB>3 tFAHlmm#OκkPjχ5bi >Z\dO;  nH]:{, uͶhHs2a5uHB45%qfYIl!8Ok͏# +9Elm[TE֏ !i`CjsN)'$J,)U yc%$GZG5 ӛ}/jJި4Hуi$=G"v@x,xZxӵk:=^l3Q4\`8lST{ߏKt3= RoqHk2\U_cSM+*}A !uAd_ˢ1p3[E(Ii5 P\>n |`E!ևuF@/c F/cgNO!NIvKaGŏ pX+dDXƏ^)T'Ϟj&v^[3d1CF`;XHvVz\$53[ʤZ϶s]&%}d5~&ѐK9):Dj;mܞF rta:QuvFKˊ;o͚9'+{6Î`|aInmh0[rv:*za=Dm4N73= y3&E{!7lMnm k!]d __{n#`DLBUmbx^1ll˦f{WXq)oc:hjW so0Wp)}${},?] a(N &4cW*z/*ꥭx%F]k;,W4,*t9E9¿;p5.%SƐMw-[^D6P<}#1z3{FKuƻcfo^='kZ8jL;ҍX;LZxalQ\~Mۚ0{B4 a(0$gC|/ 0YLMcG\J&9x=h@G$?yX"Q2Z?-?GڃhۋKaZ:Y1vŽe:3X/ sJbS:#{@|eoim9r aƚ4R-(ݕH۲!~5vp@?)!ش$x}zX8sZK+->/B4bN޴!hc 76&]U3eHĈ )vM"-d Io:`gڭd5{rzꂁGQϐS=y R3k \c l9#޼àEoԉ"2@,麧KHm^d<_&Sի9..ډⵢf$}%glۙ3w4a{h. [{{ŽM);< L:pZ lm7mw-"Ne{? _li^Yؿ_x<?H]L?1jD 7ZeՃ_3UJYlG 2Ir×SK8tc;(3`"p*ހ.L1@߀4W4Q>%g5uQY1Ex w!#'ߍ.> Pu/W^ /R)-waiwY&_Ґ’Sn]=mUE7) ֚%Zx"ϳkZ71~p&&줌wo9Y;^SvjYM]Χt6FF5'{Su5{G6N2Ӫy=T*3}|b [Ⱦ ołU!vV h7ξe} %_B6y214@/M,8M"|l78AIvDKcbJ kNLp-~%r\)̦6.v텑>qFZ؟"St~7a_ @Ҁ<w~wXdAwduvv܎T.Kc5VaU} dɓ%k})kd l/Kl4UGa]=޺:(#%gŠńPYĶG m3<75-##RzԢ% z0s:K,JiZ9ю/ٲa<rwE^! ժjiE-BGkW1d-LD?:f pqo`oq_l7 8-([ݔ\e_JliWceX"Y'1S3{e>靺 #`0F0=*y%~oS/ʒw)M-dyZ(v?%lncW1QYـ/%I+={k T6zG>䞒'yK"\02I ֨5ak45Is'.e2ŕH] !_M>!Y"F3 }KnlcLy%8l&95%Иx@<) :#h>@ǧu'T6[(m\R=z0xjRXϾTztĀ3tBřd~q|RN_Zk-C(ҫqc“%a8@ëHN2ZL-5(f9Kx=uRPT./WvYkV_s[f،'ySD]ݔ4+#&B勫&kyؗU.Dٙ-xTbw3hS:8;zb~:-]jNtVN{3Yo}-`TaXbX) ; sLvPpPz#cABE)ЛP$$qz$jOѦ1}xP͔Uea.@2b6ovXpq|٩bM`E5`Rd W_xZBZfڛ kT M˲e -npEoIpP kQфii\- LKy2tV<7|!x QAI.A}VGOM4Pi4tӻF1c79iLhAuԋbubj<\1}H)W]D,41g F>>dJ+77m=)a6=\H$]XL6(۩P#6)1|;!rpq58.ߒ6!?A8YP7I hmD?ӿ2'b1M/[mJUDe;x )|%`PdDsjvii"+C%We9JZG#L[jss荭mho7͌+"A͝{O+!靰t$s:_&hQK~@SRB'U m’Ve? *i y<Iג:Fi9* he73# 5lytDw&7 ^d"Ƒp()&deV#Wkkv?铚X~za1(A.Abt\xd09Ft+cH˗r[CrM3JZ""1hose餫&!hiH>}()m.ى93S*6oeQ. D/ o6l4bbV:=[3QW" D}zP~hk`Tq:R Dz|!aB-~8^ܳ=$lo63tMSdSO]:R OgS׻ϴ`(?LLFe>q3Z6En0d\)EElϯC 0u*&`syusfB] >J^T'HUE%M,%ʑ+aNL:Y'COTNZJ;?!kSa3203۝ 䥽KIh>IeV%ΐ="Q+ >M (sPsx>x75"i|Shz U# =w5))*q1RPz:P2K4M9Hh4=ì4HK3"e"1`ԓM֔K dM6n-~M,x9)[z8'gG2y-L9|Zku,oa50) )q30ߪr؈U-ע%k`K!_ѐElNr>hi U✐B/H)oyY+ѰDP%#} C ,3?1H/<)hO@78sUR~f8P ={'=TVWz'949rA)5~vjbZQ` )~Y`C8 z[ vl<Pc.C_nMG  7eMP^,0}57Oy#W7!?9n & _QyH+r. d,Rd6e͏A @)dAlL]1R0&Jŝtd[&yQ, (n2ᚃ\Ȓ6) 8PĀLZs895^Url{V_ѫt}׏l|BM"M$& 1)=*Xt%.)XxK!S(|{~|_@r;݊@}Qp?f26``0MzgǫbiI6"in&LWHFbI^ƿ11V+\YZ8n%)f~y=טAJ^,СS0Gx v-2p }_Q.[2 j{ -o Z%o!6"HF_n<,y1Nrdžk?yR~Lж 8=x_f1A9Lٸbꘁ!P4vSwys`}<{t?mp85/MB"*MWJșLvp:!Z晍Xw ;ޔu8wMf)1{Qv\مM (E$D,0Ƶ^{VST?bvs kkᨉvwLKJP^Ȧ|06hxi--z箦rd@F]a0o6D^? 6@77ȭn" hcW~E{UVI @09|hƃQp&k/-F5˜H4؅:Y 5bsg]EdkIJ)Ek)C$9*N;TrBݯQ1oKE[|!ms>rSEMFtQF/q >O'w8;ɖ?)`E#x&f:lQeD^7 ཇSW}/clL!i<~g̕]I$űё틾2u(.nL%VָV**jz.DTY$.(`VPy'Gt ݲB[-2%C]\;N%ͼdzZg[@yb^y؂7e kE֪&)"lm6h(Ġ.5Ѡ^,lG0gbnƚT^ LԖ=ρ=xX *2, !<>]T`+5ǚRG 3d*zZ;vkq#$8cJ!HHƥdDSs/jv6\JV18)^fqjEl \ 9=OS/̻ʁ9'd4鱌 2\c3,qJBgI "1P :`F|48ѡq+`WcWC,gqDiѨyR"`nqB.Zdj3UN}zQv./6b8|s?syyr¢Kq?E:;*]!~2B_fQ2UhV~<8Wrtdעٵ i5Xu?Q_7Wm/\ac? k`ojB\p.6X3,Sqyzk軒n@6 a߂r`*P"p"+Xꂰ2BX ]N;?Ip:qN~Y>6^T8yå6K"pք!4yA7%#ד=䏒|%M780yʀ|LU$ug_7Z_pCxZbB=;3-9)tl .YT̿Dˏz]B^" 0ܞ3D m(˴T"Kh݋^KdMo4|497EGaJ ;10(Z"H#&YA LQGy蘸:`[ՉK$(ѻіE1䉜-ˆ@'5N)] JҝELSh)%t{.sC᪔g'' mu(d[|܅ua (#} zpS$OYq(rC^tG3n3 )@W|j/zh6k&3+Dm:ժ{Tejd;PV11VH$ޝ*KZbtפIG7J|(B5髭~Ԑ/)8ßݹV>)]'rCW]w3H} aP/")\v#A]pm18H#ur~3(VU2 6 egyZw굧f3aQW.50D,AH]8DzVMda[FQsa Xb ״(AkU-0b6[i[+hB{׌]uQzS3OEB R +61A,E;ϽvE&ISب_ &F< q>k8`8cѡrOilP[* &L!KyouDT9XJ]j3o>=)C/K3{w|2<Õu,\j ޒdb~^ICUދ3]SJ1hJO3!j4cVO7ZrEdU٨Ȧ ):DoLB،Q.P`2LJ2΂Dkы*ڜ@<aYqҰzda/Ca bG c=c Thm0hXYohwbhKy.k ݨj"]6--ڬZz]UWdh}h=*a*Z?}> :ji.G5&&3>ٙkDCssXͲzjy9s;Λl&^h;,?OaEttȋ4A sfԀ >:[~߽ޮ?BzzhavhWtT^Bj.<Qd}=\]5 ŠP`=yBII4l V^R-\]nfd%,sX=ɾW=NQ`m q9ٍbm_aq5}h5).,(UeҰV82Ѐ&l3G2UdGTjK`ay0VB\cc(WPU0n9P(èwG7,lKDŃXɘBm;l[ږ3έM@A;:g@F;) 1U :u?piӓ$S 6uk' eݑ ],&2vMsq]laI)kFtdl0Gpsc)|^ #D[(xsVNˉ3-U^c >\IXq:frN"WnpS;-E) ?Mb.NbrS2>"b;DVLrN >OQr\#%{>>Nu[ڒ{Mrl'(J ]9.wqEK1yk2FYp4]|ƥ}̃Ih`]>T 2T(6POm\UЋDp}|5>,xE_ y'a$ >/ )+9M(,N}z؍R\5Y=ܼ'Q'欨+(<38eKsXufv;rzhg&(,bgS~ds h-ߢF%C&5|;Cdm EiٓpY--> L%TfF͌oNdOEqQ/*ރ~"e!~BD,ujZqaC{뭥8](^y$QrtZ5x+ػ }LDVjw76LzSdkM<6PzUmSJ) a0@l:z4 %/pSLśdtKu:hMfiv3i6ȏma_*\>Q ܺ~6K<;,=EՒ@3ymVBx7hͤat0i ڽd !x֒չ'JS9(hNGJRyN&QE=CGژ2f5bv8\c'żr;D>vq]P,I5g>si. 4jT @E:Ɍq.u,LTT08KU t[&ܾ].$}^/7%j#iFTˬ.N(gF3lA:Q*BdFdL3l;]u+u|n|쑌^Vć@۹VɣlpsdsSYE{? Q6zOtݴo`B%GC㒌~UBT7eTrᘟ$}dɉ~,ڲ Ww\O̯8ÐZ*Z4?x?@Nߊ,b}<p/^TƒJ‘GD8>Zޟ Ԗ jT~b + [@s vi^-{~oJM m+Y3iE$2}VT u8u+q\Aa5Qty Vq |:8!-Cbdw| ;4EYu{B䨡yV(x1Y@+0ɐ ˅i4|\[egAolOBd f`iA"h‹ ?߶.zӱYXyuPb+on/{TߔwX,藁`WH^axG .Og?J?.v^-K CZcӐũ3j;6jCbaHt0uo-FӲ sƚA\Dl{}UɛWSh9uY\ZW.#E,EGFɈGZ"qXgyK汊`eU)/2w~ ©ӟSI%kHm??,p5OICCfwHB(J~PbXe1v."O=N2 2i盦kWS 6~bpoN1.=La֟Cq [8!9Ù7 4tA$ꢬPbe*ۻV5q@R@$ >08aڈk9 ڰI&2f6y^ָWd=l9):ϱ*5gV{ g\a^ g0 YZspatstat/data/japanesepines.rda0000644000176000001440000000115512333041774016401 0ustar ripleyusersuT=LQ~wg R[l/#RQ\{{ښFk)!11w rr"6Xo}߆<&37fحR~;-WAj@^E~ÏVʹ%HWN"%ÊG3$1:(#qN,n}:IԠ+5ʋr%~.ˇʜҘk:O6A~lߞݖ~EUʮ o#XGlHQm ϸ-|<8G#|uMz מ7لx.g|! 2i|>yB.mdW }?vN7GIEk^NX鶸4Y棜 ?i)9)efa*G-mc.a*JIŷi]ָڼ7yC>O/y&;guY;6FxD#kW9FA9m'ڟRRQl~WGW ρ~4 ʙ={Av݂C!`qtGZ*ݴ.VCމБпltW6jQvJˡ=GتSvg\(_8T =_q_ }8Dj :Vm)l{}\p ?H#ڃH&DRǃdoDʇb]1#HyQ=1HU`kHz`γc~´&5v!9s9U.HeO{ %k}d!i*3ґA3#%~Ӛ#̼o7Э#HazQi>;eޖĘMH&S8}پ%H,;~ oV @*lݞepE lPf)%iMC*a[_CNLY=];̺:&2~"MvAp~֬^e)2HVnǐU/"-v:.ݑDQ/ =([qEw|mԛ+s1n!ӍjÒV+3gk~mgg3@_oUzz0cjۅ1Wھ,vd6!|Ѿ-=ע͔ջyi=s#;mX^gd?)q3]f$RUcRzZcΉbjJ/'9/w,lӂ3JȔ)_ӷ0[D=zv4}& g͙ÌȀ?8H`m)͆?bkkxCg:wոjꯅeЪ`exɻڷ!)CȐ>)P8˲P7o@iW? Vy]+f!|Ͷk4?{ql^Afz_ ʱKC B}^W<Y=Ku|mTKǐ"JlSby\7/$n)R#~9uO :q&H&K{֩#-Z,ؼ\=Mk?]NjB!=CvFHT/*d˱, grxaHyׄmDŽ3}^zz "EIM؝M)wXe5c,ӑy;g=DC13ǜo՛ 7]rbW9k'ȼ¶df7/ː9[טyΌiJyA~/vLO\Qӑ IJ4`eל2ba0f%. <c=>eDmW3 8fKЮ}h`֏qO~C &!)N)O-Ͼ\%g/PpSeG]# /kv2޻PsS]lb>Xcl ldrCԽl=ƿ1=vzv3`Hy& dQݥL_-TeO6b9edp_y2}앩2+߶lt2gQZɿ+2dʔ_r&6L;b>rdL}:`7ne$&M[l;ga}2l,ھoۮۮ_Ǘ;mnGc5c۲v&HyF11Oc}/q]8e#Y'!<׭a%D?$'{޵ö;\?=i|=Uwcۯgʞ'[I;uzKV }q~`.`ul?$_}]v-$Ia#_];v;dOgJ؉ՃvrgΞe-'֓Koտz!vnn%Aq* ?-J荍Or?G ~!!Ux&DDߗ[qcϓ|6';؏IŸzc},OGMA[} o'tv=$I|!~BM5aŕ78 zqyğvٸ-7w8 G/8?iRBnId[/W2r|D?{JKD^!&+kgq=&ᗎv# lj?ޓ N↵8ߑp%@O'1 HOʐ'H'v; "u [)mqZwm~x%v7b{Y}[vI\o!A&{/K@>gb?'Yy|AD"v%~EBOơg"$u'Ov3 =}o`q|z$vPBd$zp؋ĝqc u fίYa;;I~"uID}auXd|yr=i'~Ol7WJ؋)у}$K[}}]Ď$ϳ5'DLDsXyb=  /qN?eOA#(/r+߉O[Og-vI""~J /ҮDB\ny"ϋG1sCppW$]$WHE.KW$.Hx!q@K_'主>~|/"7(/_$'wA"~a!g"OWD.p~_ydܳ-#Y}u⯤~$$c%;7S2&$~"g⿖[?־dV I|RAG)9OD'!v&!KhYqdoa%rY^$ipM_bD?d^B߉Jd!!8'EK{`}=X;yϳq,џ>|Ãճx\,?[g:'YnH %!v'\ $B / 7bqC#v%v'~/OO /л{=qq$!~Igك&#qLLο7#z%% qIlwI;ܗ?D?Hmaϳx&$ _M$Oo#Ŀ wI8Np.Okua7q1B%MC!t =%v! d9!3"~Hp? lHqp%@''v "q2X$|)sroegvK菴OORR[/y%D}2NGl>ķ%v&" ~G%~&%(K؟֏bW%AMGBO%;%ljfIN};;GK8G Ue#zguo/d7.z=O&yqJ'u ?)D!' "?w~>y?1ْ)HI%!roK?Kma#K;U =^GCxJ8~~:'Ml&o77uI؃?'/*?r=GXb'r+7 O$'Iz;{ͣ#c l%}a}=K 7ӛ;cǯ.q݆[O٭>{lɺ$'焓b22>Ogd؇̻H$;yĸ^ t$O$9OHO~K#q^OG$#ovK_xv;~8 Od}vsMɸ; %׃$C8 5o]/=@-orGݖbg2Iwqľ/%Γ}$yBOI'~(+ HO0eu6/?- 'yD}!؅RM3?7~;:Y#~G%zG7b2$zV`OyGvMo%'΃c$?H/{_#v"qE^G,a2a&~ɾG#D/$KF$G6~*zay^w8OH"%&$~H=A9wyeدW,!đ+mN;ǯaƒ/k{9||A@>`Id.$W'? şDOb XG,#ep28b XW,+ep2b\ XW,+e2xb< XO,'e2b| X_,/e2b X@,C !e2b XP,C(!e2bB XP,C(!e2Db" XH,C$!eXeXeXeXeXeXeXeXeXeX#GЏK?G>(~FPi#T*m6JAFPi#4ơ8TJPi*Cq4ơҸTJRi\*Kq4.ƥҸTJQi<*G4ƣxTJQi<*O4>ƧTJSi|*O4&TJPi*M@ 4&҄TJRiB*MH 4!&҄TJQi"*MD4&DTJQi"*͒J,4K*͒J,4K*͒J,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%e CY¡,Pp(K8%.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Rp)K%\.e KY¥,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<e GY£,Q(Kx%<>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,S)K%|>e OY§,P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%eD@Y",P(K%!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",R)K%B!eDHY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"eDDY",Q(KD%"KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK%t[ePm6?)ϑIĉXQe[;]žgL%l{[}w]UǸO#WGȏ3/e4){T:KvҲ!\Vh-.o񏫑{"%۞Ðb_&?,q=kqؗ#?zH~oDɏخl/[/=M^bd/{R{}V?˗$D//^Ǟ'rqe#~e92y)O^~wg_Y|MD/얼ڕ| V6 6f${{W[{WwO4xovyYq6;l^Cj:?>=rw{ Isk vCωgՙ{ά J><$~ )]@U$e-8'7`` ֍WfGtc _Skȍan=y#v|ϧ#&W ܀ m o4g<pf ޢ#@ܪCSCCll5aS >C-7ӭ9'Q ;&L֦Ɲ +ؤbX /jS(1[&J> XyJ>(|6wG_i?p)8/>v؟.*U;t!uz ) vL۟4!Å6pBNEuwCVu}wG\Oh+}-;x+|VXM_;YBSȻPtqy;A/һ%CQ}«*TI5]:ӎN8NH\ x+\fvz %6~n8J=mmQ΅3OWv{|D{1U+P9߸VWWtF}=p9 e:ƃEjBimVN#&^OR_^QqCۀgw3A-ɐM#!Mi۪ 2 #g56BŔ nW1`HsMt2ݟ|~ <#BRw>g ~,]3O{"R@y7-Mso9Pa?iȞ=w+,urqf S]Ү*($fABaS!m\P.ّkPg)Pѷvt0{HșDn]~nzYwi Ng{ Ж+[Z peA"b5;3 B'ߋrsT,~%dW^__k~LrG@^-ȞWFrEZ(}do(={0;rUg?]$hxIIӐukFw@^nxJIÇGEP~]54~}(*H#*lΜYg_ro*; Yj!UWW+?1roW;c' 3c@.S7w'?{PˁKgwLfj_KP!R~ <ڲ~$42kw_%U{Uqv2zvAWŞyxnur9c=URA!+>JӞ2,לVX9QQ P}Wm-<7gXq{ɍU\tfگ.Qې$ Q;|4o(6)[q2**#b)~/WRlAc2b[3NRrP{(Fn;~Ւ~"TX'OVeX=/+I)c3UnWW3T]IAOU{{wȝLC ]b.JY|K\Pװ S>+wp_ߓ 9OgoEsmro LWi~wcW]2U1g';B =DIVQqP1iGڐ| .wTm; />C<>2/,<65 *Jg2ʾf;džCKl#Ogp6\ 78Pw<*Eeqj"ΐX?v?^߹ƋbPfٙ+EK) kt+SJCA.We ?}3\$o/c=^pfܻ~ ϚTKrvKl{b;eu 䎂w.6tuBєu !q̌Q\+H裏זTcBKވ ٣[A..7p]4B~&:1'.ԛ ]We^vl 2 ˷L̚d[Y%|pCupw$NRAΌܲC^x e(l /e39lU!c'oafcJv&+-MqX=3sVYw-QQLqsu)ey|~|<>x6, u0;2qX8ՓgW F79](@[{Y9PR^Ԍ6x&7Wxʚ|RRqe_VUcSe]Wݘ].y Gn:{RF8n\nV_3H9DxFA`UgԴ8&:bU_5'b{=O!I9NJ~q-\&. 9MQQ_ Boվa.0vMwNb% [ eqXٲzYuN_[`[ eꐘOeWaySpѷ@ 51 3mqfxP:csݛQTq4SR]qm{)?,B8z;DU|MO+^mosRNۈP.qF)hY0|_l%[8\74z("܊b.5#G/JJZTq<.ݯCq=V?,MaFL0_q^,ܸgn$6SfβN??S:n0zq4?kO!~ T#yc\ ތylӌCX~ٯ{uQ`>Nl9UUĜ.9mg_zX^[xh*aݪMȎXÊV\c5.NY4i>tۖAnM;2GVpf:$? &y?w(牝698H?Hm %:P0=E?w]E1.w*k;?7ݭu?uK؍j8Wm#PȻlۼVx3yFhﴍ Cir#fݚ&WGP.vVqa(m[;tDؐJ6QEƻ\6i.NWWA2nOO:5KsYVJeJTJXC[pqPgUٕwpf4!6v;j7nj;aNծ|#@U}%H #PEZdfvU%|*z9(yݶd 4WcMi6k-| nI8(3n(.Df'zHnmU'x s6t489iH>_r+[ -AN1riHW\h{^f4~SC/ޭߴ"*r_oUӎuQu_^(]3$zyjK_SXnhD<Lq <_ڵ#, A:؏czXᇟd9go9DB9Wl!i[v~.U6ГڨPvE2֧C;=uҞ+ x\]w:^?nxc5^k9=>1ʅ1 0c@Rǵ6\xeCQP>^'Sϰ~`m~e7N9E x}bAx#c@`ޮf3ϫ~Tx2͝ϋ~{|r_Eu)Ҹ_[c>x#qBv~R̳ܳˎywsa.>s1KNU59+c_p+N*G:q%8M%6l*Kp<`&켸?Fo+^(3~Z!3/2d8^7y諎חy[>^W. wbr[lתjogu˵hn0o3^o*BGe+quռ15Y3 5Ep\&|4϶] zx:f>~ގ@HlRZc\-yc%kbEyX =+oi3xe  ah8] an6|_ߝ=\b>?vkb4euXv\LpBUW*D 1ST}\ZSUKr/:d6cݟ#{n?Jm܎׫\W<׉*w*y+sa _7yg{~spWW1k8i!Y&^?L~t$Y*cTџp(ysٗLphp~{TTJ)!t$]ںn<_% f_*礁T.TEiXp;_ ~.lG־}p&l,/W׹ʖrϭޔ[yV/47.ȺU91s‰`径o'pNs_/Z%sWpTԁ?/2MQ-؞e?x3:cjɶX_%ރլN+)~i]t?/)y"kF8o}0J&-iaӗu;[*\1.9<?GJ_w;SJ*oye'UqѶxݵ>zyOk^aLշ {Gx`.wenMaT^*3~_A$c99Zꂵ]|cCގIw`Pr1S2{\Vi9b?;OvdNTv3AK{{gHm8?(P QlK {8rkOsvp> - !)}b}Y2 Eo1/ѯĆ8IW%;ɖ8~tb~!`;'y6*–᩸+"F׷?/_tu2w Li}]>g!iwߎSxlܯc33Al-9%b=ȖTʇy#/j!l-qWe3` !W,}*^@Ʉ&Wep.7.χz$K?|Z?yg\o 3[]GךY\@ȿ> ~.4l:?"8nc0Ie}Ks+=xe}6[g U'`U Ys!9p .lYT5Rws_ǣ<>_}}K7p27{?*c};C'3y$e+Oa k7> ϻBL7۹;TI>ib+?~5˱S pL9\ӈs޴kpvv^7ٵ7S~8y;mOC")GY' <s _$Q/Q;rdյ82ud\Oq(**~LO9 6`gFd YW0?>+늨/n7LmaWW4בy_*٪Nawsn8?hw1f΃aZFrx^Heꛊp3~]4fƬY[SeqJ:˿)ʄ瓩&_خ8PƅZZՎEKF\]C^_qz&K:{l9Z_yYJ?󰃝0JnbUy Gu1d7O^OHm? k.R+;e?XFQ|_18? =8Ńq|J+Ɯ ]*l+Ἕg~+~\ #|_Eeu\(o{?OOO^LE?Yx[w^2<瓼܂\zhl))ߦ6 2ˌ#[Ojp}\?/s+e3v7h0a˻Z WSĥ QQi~ؠ$l<#|˅]h7ךU:ӵFy|]*o>2:rc 7k|(|=p7R j7 U^?rg~_8k~?g}/ӟz1;o3yY*.cmYzq*yIS0u-{;/c&j3oxdϊGm%6x]ٚq+׷IsocΦ !+x(S^48><҈V ߬Uʵ{~Oy_9&~՛g`(>èGEq|z m*r#1l!AGn+[ݥ?yy?g&Or8kj|!AO9l= :ދn*6um'óoFG\?6eeIOR C?/+_b]גAXnnF?u3uX}`>f7Ga(y5t b'{7Jf!8G q=_}K.yB|O%g~h q>,\2J8^0yx'ۻxUW.a,@yV2A7ΣL= ^<˘/0d?R3mh}4R_xq|_H3_@ݼ'B:3z03mw־Ҳ:dtAnoMd|SPoFؚzfVdZt6^xdeidsz2x\?%pҿF;*;>gh2Kұ jC!~ip|oH}DF*}Nb s$a7HvMb$=vw?k۴oՍP3ӥ4.s~+9j/nH1{1 ΅%ƜTM]{!WFS)ּPhf.T:_;fǾ ⪷7dALAy?:9tfq[a7c7o_ V fWLXp`CegK1;L]gv }*q/C!Y L!1w|@*~4ŗniErn@:%kg\G#!M(}2tO&  K3B:>8qu3 u>s t_Bz*GzSݼj;NtF.GV1J⫉+W! O$Kb͠sKO&:Hp^?S}PS@`m޸mzPZ9l1I2i-I2f&lݡ`紶1Pd?dz;)4lkz9ko# u:}:\BTfᢂgxgdKۡM9P+۫bEJG_3LAOZ>6_e:EHjKv^%&M?tv+CO~Xv|u4X`h5|}** ɚOIt9"F.nAҏX$-_Iovrt,XYlhY4j'Jv:3ִ;kmI%Ôc rz#4g)Ҍqk|RncÊHq_$2*Z)Ji!O =xQ]?x{+'ˠ¯^cHh~Rlh)~Ǘ ERB~&ӖP,mN}VP Yfy5mG'dl$ryMHAAHA;OKn!o2#MCЋe GW j+_X@ȯ GkoU嶡'Tƚ7iSZf!9]g"ˆ6C޲:jdLgl6"2uR"-Rw=: ?ɆƮԄDd`CƊC{qG挄'aړa2{HY۩~vH Iw@ٵ5+sgv%AHeq!eQĕ* 8VEw"K_1>^^Im _a 74yAs5cB] z|q;jQ((|:`$pxri8跨J>͸3AC/㬝!ue9rGQuw&O =So ]ϏFތd\]ҎTޫp5;in]SlB4ft4 MQd0boȈpg^aPm/Jrr}x瓥!u_|d:Qm0n6 } 8yF)d"N35vNVaH3xOawluԆgHm'RJrf~P:Rxm{8$w؝$0P!z@#?h*slڳꮻ6<A孎\P /Ge/iN'$,6ujݼGķw!KE:E}MN 쒔&܈;9? >^h }6z/Ryr$4u<қ+Qˋ^l߲g{̓ءJC֍9#ǎ˯+V fqQVJ<_ ֍mOaqC~nkP%-Z@PyAc*`(Y{:S[fd)Gq|繍: i^cGC3}P忮ϟlΏzf{kpʟ6ALI*~^ȳ;٬lC)=s~+739H=;%sHG7D:wEz2]#"C_+nGF;ʬ|zfOFǑ޹>|܈tVlkCʾN#;kT"{מ!i/ۋa=<²>߮" I%vLFd O1q|=Hjj!'2GQ)=|6E#yob U&LOȑ}sm!%P4k`FQ;G1[wBZ\3XLo@RV|Aג߁ ԭC>dM@29ARanWͳ"(hhnTo-1 ]vO9 ! -8 骵oW^mEp/ɤמ)p-}0*R\V^&RF2[Ypw|jW?kdͿ@s@m)b3vlP;k'b=$YIZ" 15=Ԕ!*dH,([m{7/QP=ڻ 8P6` =N(R 8# ^jy.r83JS L}{oo0^WnT[f"C둖=g"3\;|PivHqԏuASil{^zEw54۩_IB2M7AiH}U@ԭ^o7<#CL4\F{a6{%^|tǛB-Ֆu*BGUBS]&|zl_h<,޾%OdT5~;&4,q2RNb=i{_Wm AG;_D:\ESzs֬KBV3_#9Jb`K;U=KH1AHV#ٳO- C(UΣvS uflh!Sau JkUm\yc tEo/)NԃjPtz].(?krL Z 3-[BqH̷"!nrik@agW#z.@Rma7@Yx(EQW~ª~ԢލPl82uc-qw@}$?P=,}O1P|]gO;ׅρV5C_BhEPY9~:hEM.i%qƯ-)hH935)4,vsfJCbEؚ [6F}A|h٧[Vtއf︈u ;r}!-HHiv̼1Hň#Ƞ2]?f|oGu/RLCzZNqG ݾiѷx!1QHO}c5-rYcTi>pmMexR5=dxikX։/y0dceohsx7r-pq΍j ͫ`'z" z[ ~^G2Ǥ6eH#E HuHޢO"^omʃU=m@ G؄B\)'Ϩ2yCVoou{sIhh;Ϥtzt"4*@os@M̶ظj\R%>F rn{_6Ԫ:* m??gv D^𳖏|Z-i~k%H]QwuOES.?>t&r:H3rVH-gP7C {v;\d~;X:'/h eOy79{e}6|-(/.0߾t1)!ޏ_VPg51bkWݐJlcQH!!V^3I?(val+}drJMzB'X{2)zxm.3Q*#G6FJ#kfNG3 i>q؞)wZlx rsMAzl̨=qH^5hVQH&wW6}n^h#h>5ov]P?hz{-k:}lPoE[HKV䟰_y¯VO]wWnj s~}=wYA\a[tiQP0Z0L[w2|QIۧTý Ej5HIUOiѻѯ zyO"'GT5DFtp"t#OrV7P##k:d7iSx`Gw7o{?F53xsfwiGڍtEZyPE1gkz# wj"y=)H["e3# /B֝O"{}%=I9rNN+fC7PWOyҤl8 m!}Sv/VY 3ڛm@O3+]39slI]?f+[ rnJeL/H,S1X(>qE684u6;/4nUnĘgk}! o>"#(0( ڢZڟBCgٮpI1aWv~cV )^_hmsfMHyAq'ނ;&iC#c/.G CvN+Fӷ?QKV*[͖ Ӂ/W[l<+'l@xVZhL-O51@\d GtCjͳjEub;D:ּmm>T G a 힙gD"3qv OFqOn=E:~y?"3xir|:$l%k}fص4C^ۙTFO8}u_1ůa.m#j UCe(\wIZ'^-WM-3} 6OJy[}AH8+]^2OVK .Ggq>2ygKIy)$=jhoS½H,srHRs_ܶQK|rhK/PuջH0fpw.e8)c?B/^ѽ}TSK#cd3c֣HuZDŽ#.G>C2{W׼4y _S eY:OsWj_:ʯſoAH:df;iҫnzs ֬}K\GK~s]mٮgG=́E+C|e'|mp-v.!<:*'nvԮ "[4A c^,o,<43Ʉw5=>m?Ww6:Ϸ{~ C{":";^*ofctuB-镞rc8ށeH*2QҴ+3[ٱ z)os>xA&3nݘ~OCh1x)hvyX!/(:t-VΞ1`p(<|W<<:^^&oz ]jBa_sŌ=kV :F1p'3k?aU)j T[C*[T2Fl u˵~upxу$ # j]4$S(cb4C!;WcG76>Ct,uWG .8.i8! EE3Kj¾~Γy]g*RP$P〈᳐ƶ=y:62ˬt-N\(Bk/ͽ\ē.P;,tI(ݦ>ƭs6w`y6V>covv| , >< oZ V.(^ڛn4ԥk]OC)e_!K4-"`?gG*GvA.R^:M#it-~j!}Cz"ǒD\daWIkBZܛz=EF s7 ҠA~U HYgOF\,wL`>iUۂ4g9q4Rl*6mHIKx$3Rɾ{/{tm1} ZOwc\ 5'4n6YtfCJGm!^pule] V#zfhǃPjwK. w Qh{jF:y [-5ǻ'\sD˘;AaץA3JCWƢܘL~MXn-R"0S[wM+^g n!JPe>MkJ)< U3~f[<>bj9do4J4~{uB?.Yy]7 Q' xW4'$9Gֳ,@ח'"WŇll|*w!{Ar(vviᏅw`ؠOGAvo7A@sטnL^1mp$9jNHpHMcWqHE`ySHHoԩVm77A*[17V#i,1\2 t15GZO$ mˆ##mi&!&Ge}7lE:qnRS됎i' RQE߈m |tty=_|%I5j?8un|jxܖ?ezP>۳bM!Sm^B}o Ad4f7({uj[6w92d7xfjHM? T4;ɸn )~>~b'R]<3ҼUҰԤǢrûK­Y擦#VkBˁ Qh hZa IJ3Z!GwސRж}HGX h2l]ZǥdoYb/ÛJ|Wvn!R ]gw=#ꑔ'H+ ڎwZ1ew-;*wn k} :WnCVO='_r}_Bc-TR6߇-\,x$2e%Hfu~"Y&~KUo^Pg!PMoZg.^s}7ϹCNh_ڛ K- aZQ4Շb >"M5.f>ػfs7X>HhRxu;i1)vMhE KUeu꛾8XRgJ ; w훀t^p/݈2w14F8DVl<_'M87^.1u-\]Bɨ ʛ8.G?hLGAL>d+PݬLo9t`x3M,䏰Amm3HdD$.ycNu A|])2A*Uqf"7_DI!Q 욟!o1Dnos!߃ZW ۠4Iݫ'"ś >BJ|&ܾ[YnzPiZ.{ i5|J^%; ߕ5 DzUϽ '?snd懞:m=? ZUһnd [ei't+l +HGeb"լdę4,<i6gڮkC* x}@|;RT3>mb$3|@R.,}b )Af6b~Ij枡P-dl:v(|;P ۢR }eC~OoL%)q(ԄY aa͝BsV?(ͅAR@[NӴdړ!zBm0swHX=>MaDnV;w,3[qr]?96_[NkꓻAMuƙ~ \%,ޜϏ"?>{\e]7(ޜF'&9 r ۠r܉eOu03HjcP._#ɯ? I5/p>HL?Eӥr}!_C i9wF۲ i}D}Hgݐ rˑθDufTs6{Ӭa oKg|?^d Ο0) 2_6@^Ԣ*ӪK#r |D,C=h갨+a.A&Ouƍ :NS ϿoC ~\vЩRt´IUڞh{ HሄHqkتŕHueXxH3`˨6\p>qSRw=Ӑ"uFAIBߪkBiוyBG/C|)ы0лs!4ܾ輟t$YʝmV?>)U^Tsb'h")k#Xŷ#ܓ8T#p^_/- FM {(3 ' 2wDӗH= CGh֌1>{ 4!s=>:#?4g^QäG?*<3;.tcf0L+v?D}I; >T}ANӜ{BFCz=[>Kqrh|h%$}ߠ:¯HIfߊQHvQ嬙}tí{'.gWh7eKF^ i gOsS)H[cpn1Ѱw2h1߸fi!ԏ-U ţ-JN[ 1/\gn|ŷ/>_?ɧo?]`[כxyd7*:7+Ejj7+=G#F8㲑κ)G7Y#Ԙ7@zCj ENNDZÎ^څ4^;Jڳ [Rmu9l!CvX/fs8qKi[Ɵ bvbѿqɆҠ (4x^$}v/|1ܻKcmCf!r[G".3|8FU)^<-){ pAӕߞ4N}$Һ|{ s(8 ]rwdʞÐQBG}Mk daybmQ@í҈/Bgul> Ikb{,j#Oh98dͦ)sˌO`. e cD-=d6ʆa x|ˀ{QP4~ Eo{5t!޽spFoxYtpGr4sԯPꃻ{nexdbcXCf^<(TGj/f;v"SL;hWBgB lx]ѳ'kNT}v2 uD Լ }HoӭKz~'@/7ɷ,ij<06J$u$$?rક+\[xHjEcy-CY7P`mО5qp2eԢU7xDĞ3 A;p{ R|aiwR(("4&č,ѳfwu5@VcV6 Gzl|t cTJ녴You i\m/SfH_rVu\=!Dg:,CZq|~y>k{Bڇ~66?8m\E2w]#OL[F.Yvߐ3˓:vHsڕ[=3:BqQa$b^Вu-oSP-tҖjߵŒrC+7oԴyl?ԯ"ÌMh )xN4'l1RhS7u$~"t`{Ɵ-h^M~Y Ӈ,OR-yQkkHz~y'm}rNu(3okϗ_N-=MJr݂%{ ҁ;+ c/# )VWh7 }L=Ȅ&faкgJؒHS4fHtGCz_|$&!;s[TuqK=&C屶SAv-/0xd[ AG|Du( +r6.-U*>m dM6AApyׯ SyD謪Phx3<-:T*F66p)*zhRxWHKbAHgG "3AneOߤ?}i PE[|胺JG8rIT=r-Szch^j)Yf&'=!~{'"(lYJhfױ jQB)-5M wh]HNl7[/~Fu9#EofMZ#_@k\hѯtIFeHȄ3n!/#uFQgC-R.f)Rx8}]By|u$qoHvjW7&|B7UG_l4SjhP0i}opb(Ybl6d,>`Q 1Uﲅǽ4Sum2j6pP.c ZEǑ0>f*Og 66^ydKWtTHZV/¿]rrC>FNy!p"2F)]s1&[cyH=J2Hklg㵍AМa'_8Tc7&͝3EU"{$y#珔ȘR0n'r ꚽr![{㤩aIR-, J~8;K| 2Rjl'Z -砪7H3:!g ݆A۵Sq C(׃á tuƘ\%/ foBJk P{ȫS &32Ej:-阁4f\|2oy׈:xR~ESDVC^(Y2I(iVKgEj҅uɮ^<:V9!wZ%VgK=_q}|bf_=ލ}= @V)W x ~.RFܑg5"~]2/͡QCa[=v"СǑDcFH'\|QopR´]zR۩;lwU70-<6{ drXzUfCHt}=!|ZJfO΢+жQ"}$]pH>āH_CEL+iS"lG~>4m\9*=wV: 'Pk?TW%ǟK!ȝV1u}]|y5ԚJ}Wx sEd@VGAҞ=BaQPС=+KHHa [<87ĕ5uCq|pGY+,hB۲W#q] =z~%&I;|¤k鍯ePw/8d7ꭩz~ΝURf>["wEh1gh)vܯ jL?ilȳF~*7߭_[ R~r wBc_M+n;7$g*Yq)}yR;ܞY]Z(q 9;^җNnEn9Ҿ\iƽ4x:spRKY~96<;rO$c*:{:'__2ráxkLvMPxW4_HAYĩ huP W}weoSR~`:{M:vD*4MwBRA !yyH.Mt>RYt?Y)H?$7ъI=_ +{ޚ? km𪉁JvW~H+ DzkH!Y{Db/cQꗠ%Y+H_nBwj'UQںjGUq\7)e;Q3E O EK"ݫOv03=3l($}ǕS3h}h3C>ԩy>s8;%?ۿ\I>Q7͜'Rab6O'$Y=^{&;RrϙnTvJwshMTopV 9#N$ g׻LAk7BWQAh7pty:$h񝫐o8uUF|MwC ? rvhO#=k+~!_@F,Bt8鎾g$[ +>{y6K=&`?ҍtkHRvB\!:ujEiHc廐zt7,CEQ}ϪAJK5=xc0Sw69=m3M.4B囼 ye= _~pH>vZ"FrOHx)(wߤZ[Ht[ Hm_y^.ubOp=/*r (U.hogVi:IPx,)P2~uaH1VuHghtK[;(63b  tYY@^P)}_z 'b?Zwd߅cYáB2{m^;蜐dlmd^R3RQ4nmH{GT<@ sno"}s2kG"9k*ʐvoT o4')gx6ϭ%;ҍH2yf`08Jn*x? Gu"-ecDHm}Oy %'E|<2:DݛV ݟ4^xɐwKIѳKTçI E} VB!krnAQ1<)?˪Z&{n 6gu!CA{HHVgїH` W7>fյH>wDR)ux)+xd,OL^nƩ̆:ɐ}Xc 7V >i=rA[KIBMY#Ck9[ G['ES!9FÔf"-NVw^G2ޝr.Ze닠L/ !ۜyų HԯC\]N0uI_Ix˃ZE|BU򛬜P(x4 ZB+wzK_wX+;(jtz0k D?x\}xtn)W?~4Fܾ4h0*R^*2)UcԿ˦;!U-}O?.#ꊙrY6UȉreFd:}l27yC ?y4Uoy:$EyH(*JB~$%QIf"I*&BB2ϙyv3^$J4u Q'$XT7gmz2"9`حh[d9lwз!H22$dp3K.6xRaT*R\0ge04k&",jL@ 09$ U0#)okE)uwu '1 GQkP3Hx >m3Uk箦Ts+=;vH^CDסGc( ?_f_LG?!J*W{HvTo AtMeZ5g%9CD^j+ƻ07AxwP3(|tWIV96*rސXCyV,qmf(pI֧Wȯź4L̩|yOI:ەYf; !gULjy+S3AV[ilp@I 2Jn a$;$ 䜬5@{XR WّLoGig҃b@ev\P"9=y} XW#7}Lb IDxk8^@&Z\ΩLzz+>/愼,o.7D~3GpSc@< Jq*p-yg/狾EjF?.~Ux#[ҙ:اdއDoX"EO=l]yL|7Eb@#HToBN77>_w%͘ˤB)WaCEoq`V 6=bv{9UA=៝=tIhKXx??ft%'rA'_.Aq+DLxUլ Xs#IB/ G"IqB٢Q;2mKǀ~k*ȱ$2ku "]?J|r^ϭkAOKlWt z4hߵjf4z]3j})T Cs9Hz͡6%94$IwrG:%{O3˰X| _2Tر3.@m3U-0R2Æ@;kS@ׯFLT¤!, i=_ߊ?!桸5CE7Юk\ZAC'=as˂, ͟k kUdbgfAd;20'[I6)ȸVwXBEroq0ˡ0ٕ#7ğA={!)o-Y :NH0ZSS , V5a&0ᣡ ڝj:хD$X/’&Gdk"*Ҧq!IY}Y3$kF=3%p 4P!>w6³RV&"OGS m9R+.۱ 4_C{duA<ɱ X`}5;X9=!i3]5Hp`侐9*3Sf@-hn4h0mV Ü4vJFnQG:Emw?Z 6@.Ad1oѐHо뗽N©v'eW8Z3/|~qEa}W=v,+KېzKX'+; =]ٛ/3 tjHhh70xtr~ ~# AȺ7mxF2,3 ݁OO>InFƯ Izk4DnN!OKo?3ueqtA lO|1sBZ.<@^7G?݊#MLۑȵ[jezEcIy") D;~@>gBJ?*q)Swew>C|v!Ox9 v\wBHyb(0A:nΚ\rTXHxSTط7Z«SȲ}5ɌFp$Q`e_-}O,:q}hU Kf6̧n}(j ab~1, }~%K2K KpZj" r)PɅ/3n GM@ y{ ݍ~ dS7?QD? |;E'tm)Pؾm{`ͯ[O +7{˼dY[ ]??sȘ½[| e/ }U\/f$?Vvq<ߤl -syt}݄<;x ]3z9d6x WxLWE9{#)*~9 Jɥtg鷉$,E Ot jBG1ޭNi%w-IP I۹=F~%hU/Xj2)jҶ"&V~fp#z_@\+_#PY8`RDcve6icaZ9a4B%o5FMG`a:ɽ(>Rtu_;Yd|g!"<&JOD oR Q`4 .xD Bo4C! ЅI5oaU91&X ڙR[L["*o 2_-[ Y_킵03p~WA3a" yuu}igI39 "E\[rZ܇\onkI#rM򔄭aAk;c%7=Y=m/-BRgd*,/.i9/lS&Y`P|g&a(C/mmd :'z탷O -%@Ηb0Xlrԋ7?7;| I{\ VHbsR,%= ~kp6l VtfivpIM t=F=&ϭpɾOwB@ʜ6M9S!1GոЄl/ Hʂ1ޭ0zơMZpkUed~K e˷!y?ѭ$b| 5xf&:XFFlPݻ2* c©˲@Ɲw֊fVz`S/ }QUZg! `M) 7Cձc+Ԡ¢X*2SyO?HCƃ]8ɲ0|/1Ѫt^"w&d㗡V ΋)Kar}uX8ˁ[hL7W(͚gfPl'S abn#[)X>KŠEqe51& m ,S4X?.s2#ӎQ-vPj r,D fY'_ti \MQ" ivĜfGd@d1R4Ej){_HM[g5B^LpȻwouѣJn|3Iv" ` ߝmz cNWYIU/9 Tà}J0{govvp[IQ2 72?mHdYH5ρ[yBUc> *R@M/&SKI0;Zg>\kv 6LHtX,2LZQ'/Ul5Un0z}S=;7GxBѼqc^&Z $ܮ^@PVL x#}}vFR|,>B3jKx<a/Nr+GlfȮQK[.I!*l"JSn[ybp;6ZD6 6<}rNۖiFps0y[V0\fB>QaOm>}r֯5J{&  0G!<-t1>H($AG<}f F-C՟=9sk?Crl*-£!9kUJ9!ω+1CHib@DUÅOR!U(4xN?u€optVȜelr1Pw~~aX9O56v#2ͮUod͒̂_lj#}^RCD)p{g"g: Mgj:׭03 1o8&)+I)]]fu*bܠ#%3pws̷:xN(CfYvTͰ>x"qj~o4xGߗQ$rYOKe6N"\NL%@ 2-7\얽߶M:"V0J-29_ ފAϿ6b#끉a&O ҅flj~RTxD'M`% aP9[pOxgrIB4͆=g83o?u"/vOv}GЊY}3zȄBD"*z2 #}ex.PҳYSA$tʅp*́Gy^5vcbnQTQa5t&j-aq < Dye{_J }E "go9FxEX7;YŋA&3I4=25aA=Ot8BG4=]LA::[Q*rQ }^y}Įpht_{ e#r0rh 7ReZ,N~A=~ȴ-С2Lpx"]46m9I >iS`jlv+cF4_֔CeUB %뇥 )6ǏAIQ$(b8 3+ab"٪~M;:KnLaΗ12}|2kvOA骇l~0~I>Xy|JmX9t&IP7dv*ڸÄL/+E#W'{ W7aξY/كgT'NנQ(Ms 7ɲ}>?"9p们;ZU|R*ȣ`EV@η_-K<<*4 AֆBgC7qsdSR 槎D;`]*:~s)׎\wǃ H}>:ʏ@w /mhDbg5fnD6Ԏ!O ў*S@+ԃ4N tv94 ɝ!Cu!|OJSfӭ?{,L[)?ϟ9Z&L&ќz t|> sg{TƇ”Š=лw ]fH`8 /jy_$)@n j;h7"wl{fVW\0Sp>N+Հ^^oXyga'iVAM+!"\̽Pd43W k+'7or@=MIfӔUi4e;^Oi14;Z~.x N!m)wȥ݀9!Opz·j|5U :Qm|koD_ >En?! ;% EvŞ7d;tG _OCA9E:35<|)cifW'LaN_{X'Yͤ6dG]_}z0^SF~ UBc9?ȶ~)PwI<9(-11O,B Xbbs.#@+r7S=adgs~~ &mH93e&#BвO\KF."yl8"eW%<|'K܏A8Z}#"`M}@[>jRGGܡ<4ae 1YU-~F"Ov%"yEg`uv0g;.2 S-S;`2;1h5 JFD~%l[jm09.< %_ewB=swJw;i9R ҟLiyup4r\ܐ5_ѝsֳ9ea|9 %Xn$.w]Er[]'{pt {2b ɜM/ ;kRlou'0W8.1h |x Bt=O0~"a) o< } /MuC,$t"aAH3Zuo$1ӐQl,S h΅-oҎB&>}ﴳ- yy!yz-OSUbڤ}juE%5Hϫpc ec/M¡Y8s'DECӸ! ): `O4W;sɵbt9lbx7ЫCo$?.K2H7)FzI W b)^3d*K:X 'M#հxh(˶omY6YPTLg#<֦ľ\!|e`O*$ۦ0c0Βm zD27?gA=ۧ|(~KTL(}-X9)VUT`]L~.쫍 -7n?od@w]DܚhW%Vto~Ts<ڻѓ'L_t5ЪY,`~XF8aZ+ n1_Ym_/TO\žc7A&}e2LVo'3KkMb>l;/f2]NG% ZRC.:e/C2ea((v[7 lL=c7֓)gs(yM"%ȓZu>|NrT\lk:>דIǺ2%j4#TVUGұY.Dv!Xd1:P~ul~ۣq4_NlK*_?~~,Ti|+i]7<`K['lc2^BC/՝Iw8 BN3 ]EbЧ2M i&z?EikP$Tl [S`~ W* >maDY=1Ȫ՚Ň?!5'2T."uSgzIxԠT6W\OsFg׸Rjckhk ˚Vdm

i䵘2?f!=%*<}!IܭRU\LEQ[ԑ$3.r3M2'y̬})0|A{ 1gQ'h0Z5y@Xaw k¹G-_3R(pWh!kWƑaۈT22dO |cˑ,A/sg6g F'ӯ%1C,A-/R'HygO(sF :DrBh@8,nZ}f/1׍늗ahJS*L??5_o3zһ@yXޑиΐ7?@H.wq(ad{> [gaX*!f!jt* nʦvU"s|#~Xl-O|f`2 l D_ڝf/qS|ld$ S⻄O_~|b״abv<:!8RLt_uClrK=27w^K'dxVU$t/YOA,榛cs>Tp1y f|! B26ŲJ@Y1ֱFGDNn=H\aMaԛdhOpıw_/|s%z_$NE7"Vs .'g9{5O"K!q9N=CNO/ E\!i]'u/p!Vd/<'خ>X(c sU:*P5xL8W(QpzK|*-*[fB9Q:z ^K3X_lSFRS_y"7)!F? d=WTu&_Fv`cZ4YbBC,UaU゙zBC19~Czā]0LyרaVeyHgacx@ ;wB#&TXx">LXUE(Cva0tO~rZf-4GRaw%\'hL۱\҄f0_d4T,@#) {'c#ȦL v8*RnW<(R$< .42_Ou%Uyb,lxҕ K"{"zE>.G;_9hN=.V[ۑv )ZҐەP{ƸL tg9YuY=<7*t!d Qst>h'Xf5Fg5\^id +Xk~rު;ڛ7&7yKwzy{'^.".y:>G Gه}XHlBOR'fL;/(* ,i9PY[Z/ 9 ϼB:."ɫrV5)B~Ɲp!f= _OW :%rC5r+eh끥ww|wII*a>ۺ(c@Y.cOXU0'I;eeVC[wۢ.-HmCc>)vO,gT8\x{+2"V'# Ȭ7m?Id4RKx DQUX{jk%^ K8B`6,,YhfFOfap9j[!5fl%i"'ï h<*$z{OPܕA>~#[P@S; bb3nC%ج\Yn|3W?"LJ䡆=NBJmKpo1r2|Mw5&TtG{Zz T}Z1 뗚p!ɲE7z?5~PrE@jLޯ@hV*m|NʽLoIpzb~O@oF.tEo!9v1̺fGmׅW׌\rG*E]]~q0:6/.qrl$9y&gKa7(X?rT0Olt+Jgr ,Pzv/:Ы 0q }6y :^g;8CYPM >@gZ"HtNI0b|i~ }>DGaYD5Z?ŏdLȴvt_xkËd w{`r^O)(2 n׶m6r)W)AA+/]ܺצ#r,d_z_m{_խdBى 127~;^&PZ7{|_ό<dwE.ViҶRG#q-&!y ͼ=G_GOĎyd "ez~@⹑۴\1?m3Џmr =5!޵ R(v"dIֻ. Jb0S|IHzsoWFTWtbL6Ly&-OH1TeD3=T}% _JDҮ¼Ƞ ľL+@\ԝ<)QWsewЊYvҐ5}<=c g"0:\?* }AYaOpesH J"ڀ h'bɡZHǔ(xӌ ~!طV'?cZMY)-9 ѷaگh(0[s _X2cX5 ݮ- \2 s\ДˋӞB~v}q * ݾ}c DrıBoNKQW8L)8ߘ.eEudگl7?ĆAWG{3dG;' Rq+a8mߩG\>~{:2P-GMs6tBIOB+K^ 1 @iO}F~F~e^4eTWb2ۚo,cz vIew"<0INK' oz}y+.aHPQem#zL[d{Eg\r[mrfn᭢:/+N9f3Fv(V. rF:/Ճ9&EC0'aIg=3W8CТl)ط|}9NCJxAT\0M?FkzqSTIAPsD +\{|>K k ?0NAʙ~!7Cq:&Y<;Yu NI~_5D֫3XׂG^6yJ?&fn;F4COXԬԳTHOR!:& >]/Js^Ӡn5VO fKW5$|2f~K4(Ѽ~!lhyXpn[~}ލRN9v=W,G-X!,n*x1t2n|Nysm5,>9K0%:vd 7FKBG{>@Ã+KwS jŠY!{{ϟZ&!4?a? >p߃#wXz @|I.EduYy"|v`~9X_?4U}gFK~}{hsT:g!є_J›"ְ.QC$S؝ev:SS?G<7UmEݓ\o۵4ȓҍg;iua-'^繐`/JBfT&d]dKxjϊQ2|AwWuh揓PKxŽW‘ڼ.c)ڨHm4M+R`z\1 <^ * -B!ЯиU'XG=B l/)10"kh0b7[ݘ3j$sTE s\m'CdO;ȽB;vy~^>x6r'!+yN[_LvڱAHlmJqJ 4OTo%goIjhjh ї7|V`aI9KR ]q <`!jQCZVRCyY 㩒h+?AחHÈ4qnC>'U}Fx]تK =!e/7^Pf=CϋC%$$d܂;AvP=o= U#po)Tһ䐠gSpU Vv /H#pD+"u@^t4$T*ɾ̃?YYKxi {?ˁ"Ƥf0z0faldjK9+Ԙ#kק4fV9A}{NP`C5LžBTۿQJVI8 eʒ We6&#VT #eܪ GnΞu}x>{1{zfH>yU/vD|$rdai۰Yۙ,&h?qp3eE{>12X[q%bn߅ 9@MZ vq/>$92} .eȮt|d k w`)P$v(uxpfj@h{r!|Ms14!ѭ#,3c' S"F]d-HplOC$ܶ+b e {B^bmֽM_//4Ip0>UwI~0tȏ:BfE3sWfazƲVMY  '@Y;8u0.l/GY }==}cRIܑ t}E3w1l*&-5#6d"/1-Z 5FdeqZai=`fL`}6',> nbCkK5D6ZС]v"VdۘgxPSDCL/]>"e ΍C0_TsN MU]$ajȻ \az_A/d9D(O f\>KZKuJ u-ߛ,?! cjrt[Z`'U#S0?4 (rUHS<]Cҿ,4]xɑIm#"{Zן7QC \ ~6Йì g% Ý^7LUd2qD7r7#K[3bx^6y kA +t0Gr7y=D / J;{ ⲞA_Ul[7~IDl=ۯ?Wh%_mVk7 ut.Ͽ3A͈Da78P\BRe*uDNo!ŵ5uj2F-6 dʛY$Z3y!9؀O3\vEo7bKn䡤YӜ x)QICe7|ZEoG;1ꀦ%~b,> ;M߹(0lP)3*nA./RPz dw7 ޿Ŝ|E|9;D̳ᰮWfCP7hH/c, gCG4R`pt(Sv't_>)#F 2`vzk1,HK. D޿[͢9Px'P̶62=VXD>) &_e$/ǎ?vYEtt'Z[]zTw[qswaU+Fgm햺י /۲*X]ePD?~]j=‰P0:x?!@v>](oYsObYb]0t.Pg ]Ku??BUmD5:2<#?DIU5W'LU*|,9EoSNvZ )ܚ_~\F}0;N 9{yN B> 8ߦ@5ݿPmC!?_%7/Ȫ ofbHold@BdEk>l'zz"׫m?W"ϹKMgyV/ayҔi!?Hs B[А1+L)'2n}nEaf0&.$[U{N>$AԂ LLD[i~ K}ֱ:XW/~oպͰZB;fI);Wu-}k hVȈ8iqn7mr_0ۼ?juwѠn&.;6.j+ P 3",q !yn$oOOS`gVҪz܆p6M08|w0̽{oV/l s3Z`ͱ'>42p&q*!=YGVYz=sy?^Am'P ?Cqy=>~O/9V+Cҟ"żkl r_/A>ZNd;w\/RcC&FZ)RL ҫ6ƎťX!LӖ;aZ'8COF7BMlbHMnwȷ%*=S|1GR iZV0 X,ȏb}jtm{-8@GN=L5n6P{'h.tm.F[`%Wi ޵A>$Aþ`᫞9x9V&ad*hmĠ~tnK]OMi44;TR8M;<wyP!fro2Aﭮ6m.0U䰓axC>>m&4Xx>}oQH~cvI*gDaQ@DX{( U*iz9:YϐҮS';arS_ìo?@S+Ȟܳ\s 0N~&^.yyUY#_f)#ebX>>p2rѳ'$S ]2T˴y yɋP " [Y$ZdTCD'#k|-Db$KZO$Bg"߱~&KGb~i30"ϡoVϔѶ7Șy,}MdYhjmB ZHy2qRy'#/3Q}kK[ȖoB&^ GWG%,ݹr[hasu\́JϓYsM0rW3 |W r|<;P$Cn ~7* 'cobR:2{AV{Nko ?~zcX [S`V8]V, 1hY #Y!;Wv%htۥh❷z5T3sHM~j?XG=hoOFuI۔:);[Whrg%q w;w4s * +2ZE;|Cxny+˺OihDBÞ}Szdm& 5oAîMvPwP'4xH]}/ ݺTMՁ7~Ym99Z-}۝Ƕ}Uy.O?*|?Igcp%8=VE]hj! y\`97}&[,I0<8* 1o8BVXn :ՃBT5>=.ynӷt(cwHs4FǸVO~q֯D0C>ZJᾸ eq(W]hgKAI8ۄOu"'4ӅJ;AyMno] I Ԁb[Pj4T /&I)|0{=X~msH7':{swK n'/U"pT2jn~mŲ?X;&I)giL,PZԖk)Т3CNh,`԰pW֣>S<##|pJ+dNs\ RΟ"Z|"{琧HR~h}ɭCRa go!_ǒĠdŠ2P719Bm{!wږh0$L< D`Nsj ]>M>naV3ߞ{ Lו cC顱 ?xC)o؈9lv@VI͖0W*3EGcn|n)*~in ?$;4`=.yXa z({،=kF_DQ܍Oks< z/x,Yc5gOVw}v04iW.{ nC 9NFY 2O(#{vW#wtPO>avGmA [U8bΤ|*F3i>~sD {^v$X}',ؔRanD8)'* CО|Iv^ P4 LpҾCw'oz(6Jvj _YXͬq)bBl^{ŝ-U109ϡIt㗕brUq`|nLc0^S%$0*P{ Mc(IR > u1Ql^YƗrCnw-C}՛#2e<+߇y`ѥb<-Z&\_HBNAʨj;rN?HbRʿ̠mmDH\YP{:ك ҆ *^b\'auq, ImqcBZs$)S#k)Hҟ0x`%Pe3ȅhb#2? M+t.>[1ӿ xې4dk>u.9;S'd73$mBu^Z}Dsn E?yarЖzuds7G  IM ,f ]w_ĖipMg+{ڒ_|{e~1+6c5Bwt%nWAr.cz"NC^, DNboX9\?,Iyt^V~1'mE7qk {i{i"l]%COڐk$hFqtOK04>ļ  H/jPPqvz”?`mte-!z =t}k >rGd k!b O \f̠ lzc ysSC`B;avflER2dWp2=ػ:,{z%#r%dӔQ SOw?B+a9QLp xս u,y,F^Lh_g\b.bFxB҉;uBXIuL aūWjF骛]!96D)-K G#[ ˆ:)wyiL|E>EQ {]hfHA"SqW7"Hf,wT /”`4]8PLS\Ci'OgH]PdV\ J(;'䧐t"7ɵFo)v{P~ 1Ni]\rhA9 D.@./J`OǮOa.~T}w۳a%݅zA~4݈NȾv(:ʟOAwuYV=#*NOk.UhJO@%׆zΛ;aǞk|3Hb1<2E%4g-rY*}L 9D:raHI!CP÷$M{/M0 Ah*ܒ+ҡݡ𐗶喿]y.h䰰OtCnh[H>g$!PG(MHmB^]ȯkWŻ'114N\l}ǐY!Tv\ |~Gi1,Ǟa0.('o:;F]<0~ϽTXCEV7{6>Se-r?rl[!ŷgr>mUBސn{ʑ쎜 ㏃mwb<29v4/"}QCgXWLSԂnױNTdocdFpa'ĶoQ#Ao{hvwdFI %]dk>1n@pa.C74LVI$ 5wJ/jtk3J+05EZ`;.@NG} a? LR?3 }VIP]q%Tz|Enf0H{@xhc{Mn΂zW{nCՃ_$aKܖE?Hu;`㎘tG$};Icn'a~|Hf>6G{N |>tߑph>\ok!hph^\Y' HBe~kq!_V [O[X_y b G$^Ո"ϣϑDgtX*k!L 07> ƫRah$Tzh3`1ea|w'WOoX>#:E;]c!7d{IYv*!\jvs"=n 6Hph޿W7Q`Ex[R{fE}QVpپڻ(#{Tpd2rJ VH~r((Eo+aad%L,?Mqik{%`v hgbҦJu"3s`yg: ھxw: l]aսȽ?Mp;Va#fΩ0\} 8/ݒeMѠ,30KȗdoK| W͇Oڦu LqY K{a[_T밸"(3je/$¨mН鸴<ճ]pfPjh۟Q6ɲP͂{1T|Ww{i~Z3,-&oGCazY<2ʼGYFVS!Ɵ'NjEC중>o*]zDN9eX;O~jil{u!o,D2:/iw&Diư^B1T_1B~c,"`ܛ%)U#oGؙ7'GLKVte"FB Å3t()q/og"iD˵?{`m67Ae{n !Iv^C82MpS6C?($ ǿ1m:.$~9H>-6ҙ3L5~׻zla3U܈Phz#Tx 4Wyݷ~cI5Y3rO1G֢G$t3B >GA]Ȫkh+ߎ> _ctِ@ېGڋzK5'z֩ȱu1؛1SmQH_Kz۱VOixiZ5G#!^| (!AO!'G5.4'~ {:t{ϫHT<$IGfףvnЇa,Ƶ4(W7-Ԭr*hrrP=i@*kB u&}燿Hh="MMOReR*ݶsœS``!kUzp;%O[¼;#^>#jO͝i%0mu\l᳇b^S I }QSnx?ɭ.IyΛAk t3|z+V5 V>kNЭO;zcAf:gȠ)Ͻke!ŰpnK*/.ï`Qj}a2/h?Hg@&V^}Oݟ2߃g/uߟA`o^d5TclcEά #>oD⼂|'|E>nK^+E;(xU!{l@wfeZUU9w8R`kYe$L=m,]swNȰ,0S'V\#a3)5M}$'!Wݦ\Kd<&xbUG$ߦ)HvAUS>0Up|9߸~@ŷ㰰Ku_&_.A-sBCgYd/O*}$ ƧIPh]* fۡI;P#Bq[C T㓺%ˎcT3d#U6R?+/"Un*lڔsE/"nd5KWFn3A+glF7dn"5z٢Dg ex܍_rg=ru.$7&|w.]T#І"-6aqB$7cLARdۺV7-U3H) yTkιDڄJD(hIAc[$LPߊ+ klFz'/ouG&Jsd)JxݳGE7:v~(A~Ha$R 9L4vT#$nyd$lODS`׾03!/I]ە;$ſc-tĘ;79#ÁEgHd}_J\ 'ϥD#,TMhÂr]`y k"RXh-3(s,! mt  tu%j-?<귋ccKB)!$+uNT~HB$R$I(IȖJ"Kc}k<9}aq' +Û~ÊPc KJtˆC_39]n4mgSw-]U9߿aL0WCC|K+L>L̝C$ =&Xzۘ;?m8 M䮽*P G>LFx"NJ2+B;lV㸥5bpSշ/:J€jSdN92HH:-Q*9C}ӏU`'t$xu,̧>+Sy zJ`~D^P6"K3F->?NBVK.4+.t["CR^=7lҺ ^+c{UatWU Њ?z?!z+9~ᡥIpI3mADsc}wG9;  ^9unz?d5z2̖riIe SבML9o@D~!cH-+{d]fz( o#L~j_ 8(0s҅zOn4BȎ0w:H!bгi 2n;*?XI#m%l =dA I;:!w=vFz?_B_˪\5d'^T;zh0S4 a'ICQD_5 W(RK/Jۡj⮡KȰyDǔr0"N焍 Dm=Bk5E<!/}og?i$f ~XL Vt ֛/"70#Dnl451mo~Z;Byf iPۿC9ʽs2Aࠑ尺Sn=idl 1I!{:'L- ;F6"[ˀ \D{aS;#7di{a\8NT. IZH ~87wnx<_77*!y/ =8q'L)Sۯ["%Ȭr T^mڅut"6uLw??4n3R=-8{f~zRZ0x>gI\4{xGғDzpζM\?'WCk,{&Xz`.l}SQ)@OQZ6 QﴳĦ v_jNòйC07K#|2l&s1#nV+Cvʴ|~留2A3rR/XY6T[t"ubQ 2)H´Ɉkx+'|4l<^wƧ0n NАiH~RlshIș#OEjrzcWIWG=R `%# 909:E 5Ț8p|;˲kdFw3 FeY]ED~O2Θ0265j%seóߞP[ EsRr$ٺA,|4tt{ߠC.Ƴ͂Iُ=ٻi6ڰXnT6zMNF3͕Mg1;[CBh3}X 7jav~Q7VRarꭢ9~>)! xT ~C5Rpl3%C'Ͻ&+-~@èᑭnZA Z 5pto.69$$$?.o4ҳmn[˷PPe3Rɼz3M&["ǐ"0V-/=?`=d$rố;ۏhhvb(Fv7T1Y<9$޿$#eV1?ޅ&WO=nT]K[ki@8Rc78!˲<2]ou@`刺HXU ߟl8#)$\"V3F}-SG{UUc+-;Cߤ)X5mm* CarՅAI}jtuQuHn|`*$oa 5t1xp4g^Ca/CQ%d| ̍켥ύbnqMwnyY G!_U;_Q GbkpOٮԍ43i\p"%XEk,g=<;`~5k=|7o9AZ̎Koh Uצ`] =TV"2|qd;IOZ'‚a\-jSE [4TBi6j\|2vs%/\>fBl`֭w߷gʛkr=;#dKFҠm1Yҵuh?jZZ}4IߞIC'vG󡳔3zKm,qe |ѭlHȌ^Y!϶#ӁT䭛;޾)C_<VӑRh+Ⱦ%tIhv#2K-@RfX /+1wfd(}F]M9[xVV Wz-Kr#}*6Ú-7d:mnY}(s9x9B1S_"oW}!-CuhCZ n`U뽱VaJړQ9;~X(EY^}Gfݠ 2jF2g@^9  Q >I^Ґ(Shdc5yԲa32煰ȍw`v{`SZcRSd$*LWZ3ya%q`*%dI CvGLxV}:ri $fSzLJ,u)&)GZj-o=1$,HM/aj 2VԾUӁZ `f 3 ?O=`n3 @ܘ'vPƏ! mz4 AṄ'eF\q62)7(~ Ev CW5;rL-0zB ӑHdE)G6N ClsËB#${!IeqSd?$_ Ff0Mɗq_:$v+A_!6&i~%y_ZX _ ,\WUazw~cr=̻4~ }v4}X3jsF nYhlA;(-}=`V̟˄ه\6Ϝ1(^1jOp[,v^ƪ $(0Ckk:>?Mhe(1j*:T.v_??Ol]6tX[|H XOb:l1'"eH)j-\'J)ϑ0?ufzA@ZXJ?6:%>(V0jR604MW8d+oW|BFK'H6z1}~ uߕDn^['Rrqh=kFK`y$l rX(d3>tw"./9w[+rי\aQ:1)sI$Ls" EUkd9rU7O˄ 8#YIo򓦏j0n$w5~ȇީaKBP:|R2n|D_O>Z5B*}9h6(6MQ ;1R8Ղ`5\40zBMMYҷCm91|~ygh#'L:!,m F6Kxy}"W/|mɰ.&}Q[;CWP.8-o}/XɢdŦaoȐ|@$34M-@e'?¢̳L o7 AКh_?=W,mSoŚĠ1~Fm?D`Xqs4toq[ 3hP6xURJ =/ԁ0>)iU 7.'?@#hcRjNgNvoݽ gBl*\'!ϕkMHML&*q>zYvQa8kpRL 7)it|Dfɪ|?^(s YI>30l)Anq}+W%9qOhﭙЙ9E0( K~TYeK!'/IZXl<|B+9:{f|O*K#Ui=K9m 'dPZd,:qrjﲃ5 'v޳‰|Ho(jգH0p-$%j0zDwCz9F:܌,Vܐ?ݎ"l2M=ȃ99;%01-ݫjQF >Qw?jIl.0z> u={Pi[Vi@/QI#hGų>d8Nͷz/a1)!%,{~+7;Ǿ/#/:=aΊ(Lݧ q[`ވaC>I^,m״Q*Mx#|W [X [ImW x%OH~`go3d-.ȇZ_ ЧV's˜u񂹆Ww`eB" 1W2Y s(o`yd=ilSK Hxg.$<%C/Xh*n~9 v}7yI??s qhk 3F_[qD+_ۑUY GNO NF \gBc%.f yO]TO fӟS)f9lԭ|ZIS},g-$Eb=Y-<Ʈ0(ԟk fcח˃PZeLC.T}Ia 4okjR;f0+}$o=V }Z3#knm";"zfz0MJB|?vb''sUkwgoA1NoGZvu sqX\ W+_ s$!'n^GvП ѐU$y꿥lS}`WZT3ۇNNf~=0[ ~?_QmBp0#ע\:lnׅUf$Nd]?>]$Ȯb(1dj#/$j%g>AylÐeɀt9 rOd>P z੐bP_/=_Ż:`ठM=L?קאDȒʯaEsrirEl3A7dhJ#v$MY|EtU"`Ҋ$,<^js`<LG,ߏ!^[+]ߓqA)GG'2LZI!2>% 7kb^SۖL62^h>}K.sG2%TQrϺ"MpD,T'F3AUYR~C0Imj7vᮍk魵dY$ňsf7Je?슁\ÒȽZ0- QO?%p95;x H! +֭{l7A戗 Nz˱v5=ȭ amGPi}i$OhTJ9aOH#̼D.:ʩ)?#r_ Y?"p[Gj&TESLkd`ݙwJ›{~C$:?i 3B;s| ؖBl$h ԃty~«4-N#/—9fCy^TmүwBRIʏzAE`'\k Smr8d^ds%D^C*ïD"?/VdY/9G8%dQ᥎`与w\.O5EDW--r cCb:D! hS\9C ި0s;Yf@HA#gÛ/6,+:g`$ȊӇD^0[>iӀl)2@I۵-;rY[7?\< k[LEv'#* $wD97hKV ZН~S3Uayӡ)=h~>.EspyB0f-َBFIW_>92ޙJS!sPvtH7^Qjj~Nb0=PSOU} ; CѾR\\׿+.\ 0~L5*J%: +ayԠ@k}N\Cs0_6KrX/b6[0'qFMޟ0Sk]3##7pC{l֔ca|Cul ?LzJ>p蹫X .|S/!)}I7abbaև^E&_o2' M\0[^C=ۇIkm2_2eJ"ctKI>X=cf,n@/_0<eL~ (ըj(ڳ@ׇЛl0j'($I= #3,ɨX3M:WȱH7Yͬ"6yARd)X۳/d7GdɩoXdarS1u}TX鸼6UdLhصYabvBV1vmM?d_U>IAR*20?Iq#ȿeKvDPO2r-x" &.-CuGk0>2%yQ 9hT74sYdj4adGч0/u赎̌+ke ''m@n`a-"oj+nHf#!")ȭk_2{3_|Zt$5 敖e!.4I4ԲKNYBY.'Z¨UՍh3OZ*>BȘY=nҶyB !X]v[vM gf+oCf|}L2Len1:k tw1o4*-NUùm򡻳]p 3|p_GlE1IʛĤ'h;&mq0nO(&Y/&q9Mtyt$!GȷɻVohRmós!&;M?Z.G)vȴ9KDTx|\-uV .dVMNJ5 =Yb~16/ĤzNg'2(o<,ReL"m:j'!TQ6 55T@?vxY*+i4xR>$ k+GO8E񡗏Z`zV4;P a>N#| K) I H*ۚ‹/4""Y7^Mht@aLkhM`9{F V }êͼ>.+(B4 ,܂w#cߡ$tN0{r~ {V/?t>gffBsqC>䚕H%&rcFOh+6uqzB=sKi3rdי4eW0OpҿۼaIWkg97'̧ԋޫ gu#ᯃ40w Y~]}bVh_.XeODɇ|'jW`dx3=C'J) 3ׅRad0oM/C/ #tdxQȨOIꇇ0Sn 7/ߌ c o<&rX;b4dT #4n[F$;4_AHR+~G(_k?/F򷕰#yӁO#_}VtP#JwzB&_eO'Evq SIˑ0|t8n.eftͬ^j 2VA nc 4I(=wCr#x]qK]4MO?ma<)׈_>"nZ9]BE3ț;۴5\Tm2׾& ;nE *Tp'|Jjg0~J\w Р E-~4}s>LG_PeugȐ)*@e>l-"~!HEvJ9RJHrk";SOG7H"+=ieG ٯ*bXo{:ng[BEס%$(_j(AlN”W{};"sfdVu:.q͕Vw7YB'#Sێ홰xtӖLQ?Pz  A!HؙN(zL)͢,-z8#_Dz0ax ټCvFG&f"b2`[%L^2(#ÔOAѷD\0eg`KAmӜ!CŌQYsE,zVkcXb5 3g I0ڤ]})OKzݘ 4u &zP+\ Rvo烀_NMm ݵ. 2G,^n(A {_9["M f-S޾(U_6G_G]/ Ǔ}!d72CXqbr:5a3qUzДê!bB/ u(ܳeGG9Xw ӐtOP%yҎʱyۆV0M ~=G4wsM)uN3/5mV6V:5|KCFr߈w[`b s'ƝWW^6HjlGYoOoy#&OEy"{WញýȪH+~ [z>v|X8&苳eBУi 7!A޹ ʞP3@z%; ˻E쎥#ގy7i R)!m.һ~f2<팃% m 0hw8tuMՃA-I! L^*X(s[oY^ w7xB1cKoc3dr6 >zrE#' I>$z=zPDL,"d=,[UhT.ݥC1{K!|Iڢ a7Eև5 P; ^V6-Ó3T+ͨw4P{v_G+nK|hLtEFd|1Y ̧S VK AIȼ w\E ȱ޶=&f HPl#_ϐ{?gNfOܵ Ns:27i<ߍL ?swgd_f..UEݽR4&P,&Cq^6pIZ*ݻ[1A$y}dמt&AM8 B3˳.,3, V{TfV#~Doyv]!mώ`H-5 e#t\7 7@jbЕřrܑL\Xk TH$efDZnBK!w +0-Lr ]r×I@;Z|Dd;^x% 2λ>Vev0^uAp9Oc),8 3js8atF2a;1;7.{#^~e~M$~|yS&Y.o٭uR`j贁c+iX@w+ 5Ar5D/L7j[3\np^.VS>vb+2o AϙrK:r6[? ~R6D,]GF*tMy~ѮaBHyv~_{3׵ax{X/L^{b {,!$7 ZXr$amUA3;{vG$悋Ԃ̻;N u*r54GU傷1T;LBAKG6#Ynje,Go+Fxœѫ*\>0#-Euw4ek#a1S]dphIt|ٟ"sؙYd0-1yaa91n0a(9MuV ڟ_>/ߔnx󭑠zC|]kgJ^&ïjU${N?'dk~f0Jxyۄ}DY? GŽKWvf@ ,( G* ڡ;,aߝE(vX-L+MBiU,9$<^x+￧ȳ7#[ NcOpQ6 ^*)H#550B۫JF͉We 7 T ]D`,`-SICh'^ƗzBrqF+? #o>Vq* Vb.?DQa =dKB61F#{lr%H4rVYT]e` H$s-$VZ#!-CݗB>t44$]~i56#;O}]|:yB@c]kBȌS7݃ݩhiOorgvre=$]Yd՝/ ہbNޡMS0"-}9^_p9go=@612Ⱥcus鯓 b\2ѷ䍛TB:}Eu;Dw_t#Zns${?oE>}DCpEG(u&>Zoe놧  #e3\$<6%d<(N462_syO<62- zkq?ƔZokCab*|&:ECݯIJyLK>tO.|zX0^mq/ae&Yh-| |9xBM3}L{_p#?f r0/Uu/1&D@oٌmA Žjaʺk=u'LGF]ҽ :m`II\q"=h.2\?=܋/3F{ښ;P -v['l_~#,Guî"éޠd/XJ5U[Sٽ״܏8_ M}]b$ B 6J503zWW0oAFGi≟S]Zȇ-u4z"5oI~jګ\jh0*{~\Hf^]4{fBH=ߑ` ūE ys|l%n~Ic+Y"e|5K#}ӀE/j/ 9 婛A^"SG矦"̤L55K,Q)xuDʎs' _eK#6WM+}cܕП-[ ]ZqDmHX{Vݲێ+H9?yS7@'KBqkp5hC50:A# ucoY- NCdj^77V?*di-GAVјɇ O*~0 31jMhi*wi0^+{a#>Q5DLґ1ǯ{ӹp$_9ypBtkA8ej8 [1GLM) ! gw}X6w4y!J0ޕ!Q2_[<"\㚮K8H7<Ŀ-X0b|-%Lp;rCT5 M=釤:~e}N.0Z}zRURzרM W$x%OG?6ß'x IGCiowqE2b([2ౘA_AGn1*R c:RaǢY#,KgoC;viQ*dMsEml+&'r|e Dx,ugK*غ~w2x0  Ѽ&2ɟZrYޑh;4;44}yԇ`S'gMzYDJ2!̉3H6etȃ\b&ʣqٶV䌜It]noCjL[2wzm]PL(rdh,rZLJVJt'{2 mrQG_Z.9# v;— IP^G^ 9O{C+[󄙽67 "+%iXA$=ÿG%˜ cݘ E7adsM={oj|Ã^/4@Szt}zPc~=/f+Pb }/s`,7͉c Ή8H؉+3GVL4xwG(?Zxg ka`sD7<+G3񃹯T0S5⟙^ g``]|W8L+7:bߓHk\L[8x$Z iwz/0l/bg`'Rm^ TBu#[]n&~RD!)ⰼ$ 3CqA MSP{]u*捏*" \(lӯݾPC`?ﱘ020ɽ GR߆|D'gsm[qqA${{l#Shpf&ٯ f38x2*ڔeKQڎ$x&dRaAWᆢI/*%ӟc+{#O"ҍ9.K5}J"Iy1 mLX6Eғdq;qdXnaJEs\c Rosgj>lY;L:8R ̾Rm]H9=\ |^Dڄ_nvH`bbDݑmwu`52+ǚH4M"m&HU]UI"!W5g3RN["織(j$ 1*" ԻBp5N3:T1# C_&wfO#1-߿'A=`<g~Ǭ9,V쨿AۡY!{}w !GIHXl:l[X";k2N_G_@jG]P]T]hC.iR rm͇f^7~qݞcuI0wU|XBUrH.a ƒ9G<[ĖU6B-nKm(apQ`IŴH {^pzws wg|y"46=%A#ݏ`$s&i+[h m='{=~܇0W.!+}7Txe6sdk zy _Ɔȕ!1kRcY#Ⱥ} Yn]( dWQdJxpE3?av9CM➧n0uv!r:q5}2vVsLd w)i4P\ge[@7z͐uMN+,Y%!hCDuPE]u`N 6(.7Qf쒝1Iytyuߍ/7AB^*NkHzB]AZ'#t?X+#Kaәaf=ͫ K:Z9o $Br##_wY3' 'R.Óm//tj+qe4b=1K&:=x(ta:C_xV3P؛[XA+MJK^@aѡm5;#Ͼy0̟,a,9;aÖlV,-.zBWձ0"`DxzU&,;oW/2Dw^#sꙓOJ^FHstI٠ݱÊV.F~U% U0FFn/ E}ϻd1'V\ւYe0Ow9 >=aT7ϫf:yӸ.Te\v}Yߏy*#CHQ-:YB&PCF[lF(0J?J6􏲖[=e7w F|Y;{S|̥:%ar,r"M}? JwTչ\0|0IK>?>yU%ˇ/GM;?gLB#˭xzvQ7 $@nٷ#|}g % l`V{[Vo WBd|29p6g#cțzcGԂ}{o,ϜOpCߚ/)"+NE͐J '^X.mI>;7C_!F5y|;=wôqOXy3^Ҩ)+gޞ֩GĽ*wRtXОHXXxWvs쀡TrF/'t2CEU迱޽P5~ YqlGE9#wI8 ɗ|*j)~έ0}UeM}^~HQɁb^$ Aa( ǪF(^'͜Rw R#wANIH%TBނ Ha(ENݖwu>~xS[mak6:o JӧIUOޮϏRPuEnfr$lprrrCߤrr.eB;>,\|OY4jz+튚~2+Q|퇬zw"OUc\$, _?$AE[Usx>&oil=_4ʩyo'HL$Y Y{%i`7BVzHP<2_5_aM10KϦfDdq$#z¢%LňT[M\jqꋿ֖u52pMF_A-&] @j8/P3@j. dxg@aEc`OJ>!scTKO1%g|SWW`LI'Ʌ-oIBSS)Gb ť)a4O0%}}6 Sot9‚_+Y#m t2"˕kg uS ;%IO\{̜I84"rosJD m eu$=J̡GЊƑEkֈ_*.) 6" P% {9/,ݏ;*ڒ,$25ZiD^ 3skZrٗ/oRZ ݑr[agXwyCf@3 Hyhò0]Mi5aL0i??/ApN[Os캕%1hk/>/FĖ[\B0~qoXiE Yc$E$Y/ }EF? 3Ȝib82ؚ{[A;`GLl? WyР,ǹIoE^۞/awz': [6Rw<[_a*Z 3o9ٌH.+Itu c9a eێܭg_ ~M~Q?a`1 Kh Mivz@-3. Z_4an>ΎJ6\ ?U4 9x!K`{ yOn5DLl<Ñٕ$, ~EV5s3AȤeְy>1oЦJa+YXѓ=AX7}aeXȬyIWVQzX]Aʹcܑ5 d\- 9m$e 7l`fA4u*4C\E*ԀzyO[{Fn42s$e<ʄL=nꓑ}싥z&ؘ Rsua\>[og44޾Jˇ;b$%-Il'i?!\ _FSОQ7eOico>vZ1 V}yXL{.~9Xȷ*"9࡚95_ٌ07v7"#_NЇ'zQOY6 :vʮ?^oae_ :L5 #tu=W7GZb])˃m/AwJ)?U7#t2;I_ mRF6}yvoCFB[ݶ7WO6fsC[+;jB?9m]Ѷ?j`zJ?TfeB O)Sd"—ov5{Ba䓝@g5 0j/]9\x }exн\9OC֗Cn|2<<.6|tSVF"qWjKnmE0wD25F((q9֙<@A ,h=S\u.ERdvrmMX Yn]D6=3]mHmH9;:8bo柚]+▾ԎA*W%3n!|bK&2L7%z닪%d]Kϛo) =*] PD3Rp ӵ%~3KcU:E:=VI@)aZHY3uΞ GzI ,:=c|XmN0FnIf'4'o$Ln,"_ #Fޕ|(gM|#;KWo%S۝j Zҩ`BAߧۚ!]J7,q +eЩS@2K vR8fODŬoTؾʤs[`>8qc"ЯN]S Cu|g~2gj }:`tf`Ff7;jH{fdRܕ*dR ujt9%+"덈-,O 9qmwY(2)&#-(˰o#ěk쟋CU˯lyb7-UsvWi3ߟT[ t[@mmX KRF:i+q 0d}ExpaHם5~Ż.U +mU _,4,v#O Bt ~.H`%}R(=N~t>] 1gm.-hW* zU%NFiaP5 n֥Ea^~aAXw"`r>oy##;'@5 _f|#ӿ[`-Od8+ɇ.WMC/+qwVK|y:4!?-D,IǾ rnO*rܔ.E|2chC*''bN6hǚ~eɆ}1h'4Ыz0rM}oZ9"7ώ,EִH6ҶL_4#srlXi2 J W`TBOꮽQcj5 ^Χ~~31.`@K-T)==Hn0SA0Qc00}! ^%:'[>t|[{ aOod|f՗.bzt~Xi5*tx|e"8 aG}̈́I>&b#=dL NCt]_/>roǧ5#uD o]՗z/!߰wWH}z%9xL>""ôJm$8=> I4k:WI{~b &s3=>%.mcdܨ)k)"¦Iwj7Tj}at}R~ 4=KCe%X6 V "5U0WJ[~qan̵H&Ƿ괸O(,~+ [H1i K3ꦈ}(Rn MAOah4K"*\V] c[<; $/$rInEM+Zn k>FˊI5!،eBwd0drHme 2Ѓ#\fsL>g>+/"ݴMLSHzR^..2ܪ)YȻ /;^sžr%q#5/夰c>rռ*GvDl\+㎌%..f1q~qt_97hG-҂!'sUŒ_D#tViy쩫^#7l_%U9hȒd~t0!=[Ket0m)s>ɭv迃T$aB]P1b3wA|0lY"5@*|Ng1%v2(Xk;̂~+vy29\2Cm,/7R_/6,Q99ȏ݋$S5Wz"K*%|Lշ(nv/:#6gm)WØ7е5 ~*9K9 ϳ7r5'Lk'`ܛ;¨vM IN,<ۆ;?OwkAv U,NBCAgW|9+ f?X46S胬[rErvʿd{i C DO,xr+mQs1;v'Lst>xxQBF}nHx[U9jC>HyOx OjDِ7%/d&iIl"ZkgaL;2c9{YBkT:&5 OC1+O[B.h*ً0VՐԐtTo<;L V$mܑ*N*yݎQ,nPz]ESb*Θ!ivvXؗp3e*Z {Aĵ<t>";Nm˸ _F/D*Ea;:^o_?MaQuaVǥomֲ]WFFlnjL !l&V?WMDJͦ;HYBްnb26®)5᏿rg7i)kzN`q(C@ 6^LO&21.|<\ jGRDysSN@2kȷS.H=Ԭ(r IzT (^0m / /ȸ!eRXVUIӓfz0-Z" K3ŦO K+޶0q@!ϴKɨ}B3߀v-:VC7&e6`Yr>{  )X3$LŜ7Blͦm\W )Ry}r<( ;R;\IӓC2(ʵGW7&Wȩd"pjlx')ҿ> |7BK`卹!k]0Fν`۽{ ܬFx便K7H~pAYI4.'a;e#< ͻ/ {qwѝi+@Sds~;̰{?@AfЖxElyn o9W‚qN)ym633SP?q7j,.zK;LPR (j\…Fպ6= nS/GCH* ilFsaОST| KfFɪ#fbЖ6tʨ {e>1JSXm'H[l;bgφwg"IRDѿI<uf`*k):L\]}M<9ޡT(ܗx˕%.jabJՊmJV W(g@M.r_^"z.׸ t_U> " WHs:S2J  7Hay E|Y3ߥ$>땿F\~F҄羗+<Dḥ+i)J\h@d\o9p$h߶v@q5!t}^W]^>&SMP3f$U}D70"[.$*>Cd 6ms$0pVb0{Nj0)k\ |#}҆~RXy>M]c?-r]_#=.;"~4"]uw4,n;a)c.0&!!< O5-jq0ҔGW*UWsCw&il)y(fdU?G!/2`h[`eI7[K{9o`1dب!6rl:YUuzݼխj9*lo b)#շ-b?*1GH):|/q|?nY@f߾"M_h$@閄֓wd|,H.y<^}%u| Oz5YA>σRI4h9CQ'&T>9?V=L+7y=.WWR$H02*m\rMv^<X̻|hQ׸h0o8- uz˟C%̗mB3$ }󷒓9$ssi0y8bt@=\줪[CgŊ:0i#?k(ZIjR ?k %-tx/Cޱ:vm Oy#iN`Ѱ7ssu!>`sd&S(R3Ym WC| 㕯G(ナV[M$~Bݮ [u>'9d8D/2Хլ}[̗Ga<( ; Ց^FRI1=QN߿ g*$R!_з`#)(_OY͆@И 0lU<"U0dG%{ĠTG)軓:w?xBWrx`!g*2W+EҿvY Aw1M޲_LfAO.,l_>·2?+C:mH0{2*6W8,nC؅@ KSsP`Pq̇MGBaRjry,NZI!pdlفrމ#'Ww麞ʛy[e6q!o=T:S[,RA1Eodq {5I#CGW , v12yZqkt\[1WY 9f P`'P 펊:0xǠe|L\:YE]?l+kÌ|w[2ruyurfb t"߼R!Ǩ6]F~d`sBd`{R>eAN)yEB*†A\ECH fydn`){O L¢r{_<;Cx(KL /o7Dc.:(.I.Gn220C&:Ωp 9YHHTbn|8z Cn샮srxg]qk6ȌGJ9z`ɷKz Ô?藜 2UOΓBf B?in#L/mo2xÌm)Utg4!aȃc} H㨘ҷ]ށ ?SjR*{:7;p^nu xc]Z?ZP?'wkU@ʺ=r[*E ]{}dOpr$s)pz=NlJoiA;֫$"ޏaVT۸ I5<߫FE""dʹ4Y+<_D?s !ӃvE\4X;ioK\mІJ3+F«ؚZʶð]{7-f6C:NUT-_Ӏ ?  k ~Z+0pa!XμZ#KxFg62)̣}d1ᾳ1Urto=(5sX1}{ ̜j^9-^+OCOy Wg> ?nGfBOuqj6fn aaٝVx&9-x^e?t\w޺Θ7ҥoEFx^K2YL g[C@޾8j+~X}5VsD~eYRI?*>Dhr?ߘߒ 1`=EH)2}nmtcBSs#l&7o ~/:}Ty&X*5"$\˯`H oOu%!$K,-aX{jxg/z仧FtX83❀7ƂpϹH8$.jJϟ&#?7PVrBHbߘN~3o𘅱$$DϷTH!!((![I$$[e_ɾ2=_S2.0mmyٞZSy ~L.XW[}y6vViů+WaykLazb9~>k2PYG>*}8~w 0ufKZA#!8/i&A1q_&PDK'QΕqj~F,H37v+5@hMӓXX`54dS9E?"1γ_֨ nADjPJ "؛cP8Q,xn}x :hg]H8!$x O$]aRAՖ=܀F/JAY (: A}G8y[dS!xXѺ}1+0>) )7 XU_sD&g' ^uĎ*?vK݁ozJuElǼ2 Q5>[+0N&- `]|\R3{QT=w8F3`=U^li/܆~6[we.Agx ;}1SĻߒ(7/C`)9[v7jСKG~E뫳f=o(onG ,u NgAI^K!atۯj^{XRM+%yVb`϶AD|vP=H ~94/m^r>Y}g>$@yG~6MttΘ󈥳Gys bhD^r1GnBO%Ex_F8}'dpn;_뛷F`SvOBFhy^ЙB2t̀)_xTMxy\D1 eSm0?^i",_[6X{(ߺ?l9U@x013AM("R@{ 鹋e ָ4rUaX}=FșID!Ubաw^I3ux3U'o x=aXrgfQNm0y`_ˌ"f>WwǠfgL/!._QJ;WrOPwفC["=/#.5E28":N׏F`C^Ri$toYNAR0 :鿣50Ij0f;8pwx#>!u~?>LLNX|uFQ@U)?}pK Hc9Yk\^fΛnle+ūa냡]P#| wR4؊2޾B\6'91*0.( +t-fgzƞQmiyV5F l )_K®67XY k4|+)"ngzP1KG3ڈ猠*f2 ވ RDϰ8JU<{qBhRmp I3ӀMЋfXjRq3ی?@! pq}\a<H,jD`3Qm !Rڻ_4!K6sg Nt)_PY8b bH~XfCWf<^ b9@gՇ~FS~Z 6s>轹Onsp~\^cDy~!x߳o5X.ސ1"|s`B6M05aǩ. /gYEnIq\V eYgX费3v%vq(ƪ~.UCf/ pkcw mQC-nyyFlhr~Pf'47n S\)g4`_q~3؊wFDr_w׹:"j|$N#S_U&bNdXyn,MakL _!3$ 7\REwv ߹\zi0KCUsFB& bF6NxD D,Wwt ?tjVw0C3\0W-c57YG4Uʊ@lj_t+GXԞ/~= uz{0K\ ۳=JI)WcO}9#GKbZ@+RXwKn3S`]&\r<\F`1)ſ |<70>j%*0X.P,"Û*kplxDD"&A;'"7|@jB qܭ% ~GY ޴̈NY hѺ/!77O [d(z:3[ _+ma*y:fwj) z!vܓ!+r/'D"X_wOS $`Gܾr%[]`k>9 >3\qanWw%= C<=ޖbz8qbՈb`=3oT' 7Tn"U~.\)U62׍;Lg {Yu>h IS?5`m[kIxŸyF>JnwQ_?fx)SߚZ2_q*L !VD:Bż3 ,{}W>0\ hьI_KZ?͡tlxzKDpvjQD,w-n}jhON?wћM`p}};Q @2N_T+s?ЅcU @;|iXy^( TTU0϶0}J [Wz]a鼿`5Lٲ ?dZd{sS%$ﯰ!(<Ϯ#0Y%`qUOa!l[I['۶l .w-u]ľ;xIbSwYW W,`<,&dbIS>hvOӆ_VDxn<˵JX;-MCL_X\@bzyqEinq$YH2e<.߄H BOab}i˴GVqV\HI'h` d#1qX:^D'P!)ҕ^}"`s})mX8 bEܕ_$zM())YiyDG1Q-UEmC'%b:" )Q}6\ҷb`S~'֏O'0C5߫i_6Gt-)𰁎ETۭ'^XW1 6kٱ77AvኰpAמL[Ka<+,L*Zߔʧ{ 3gӳ)z%4w/ ߢۄOzSk@sMlCy2/{Se(עEO0ūQ_1^;K'p%DP8r.6w*sNU;vt=b1={%yS=t╼ 쥳N!fSa9(;c!bqR3v*Gvl ݜGkKn( ?5ݞ`~ULpURu~>k M}%=dPCq'dMq< 0w@dQ*,_BŻ"|a &حoI|+4X+"JšP#غ/%c;g1!LΊ xGnRw4v6%;y`]1%ǩc}5Gߛc|xb9 >9<+} f}C+Ð:P7h}m) j0➤K`Tڿ>r냁yMXNF~췤q};;IQyNW}d0pN~]r>{_bYXc>#wCg= zx6?ryº ׈oޖRsկqq1aAT?J+D 5rrM%~S Co@K^*6ȕ(|VLfï|TT:5~fk<*a{TgKN-r@\5;[* >X^96Xmrk?"b̹gc/gn@K=%F{nge;#/Oz? _qz?\F66<)I2Pi}aIJ"~0N'E,-7Btǰ+qxĹYCUDqu.n@&SJi1J"6b\..>TE7Q~7Wb 4#^&Ì073h5z!FG9?)D|NQہw lV7AVk(u!o +0נ xh#!Py#g3tȲ h3?w|`Y:u. o~݄ "/F,)%Ctٖ7U{,`[Ņ c^@)?(+-7uOORhx5|\Α PxihC: ѣ{74t=Mۓ?nq A\ @=~i( cWsWcr;~8ٗ^7T.^k؜~Å|ǁdħ|qkoP q\ҩۆȟ∸鈘4:;)4:ЛJE2s)Zx(soU oO y/x` zx 2kClhPAQ;O6ijÜQ_i:pw rBjK=_{U&`Om L$^B|^gòpFd0{q#(op#* D [QW3~ӽF{TE0G%bz\!X$4y-] ,|\_#q;!M՟4hM\CύM0mM^^]p<7!ôSYkaIP~:Լ"HA6 LV*#%u62x 󻣕xQ୊cy2da#"7VJ"B~e~v6-.zaV3|c}ێc߃zZ&E )4xTH;} aJYݐΦUOűu `tH奴~B/ %#?Wh0?RrFq4,|钭~&'߻_T>':P~hҗJ wo<)= LV re_,C!VOY_m82cG֡9^Hۭ4?Ab2)t%q?A%+;{Ea,Bć!vg3|{%͊x/uB/L. (QpMQh<8?cxt6b:&XsHI);ar1 SX~ݯz Y֠`no;-/GŘ_.]!@_}x6OdB6*_ʤ*t#,(5ɞ#)iЯy(t0?b1tUgUe`l+GQ*fI_|`YjSIrJ=dX~n0Ln*m~ 9?@>㲧¿Q9D`.4h}` tӵ,;aƱ<1Fcq%y5E;eɎ4&AU9_"?g.RUf%m7N|h-DQeWB7k%eg/)49C͚?ς`ċT'q(1j#=n|O{ b~ӑE8鍖w eT׭m:Tq#XpԤW f=u<F +CET#h'}$ z:ڍsaپ+q*n0>q+VL>R`с͑cc1/ЊazyUY_PHAG îkX:hAi8-o[2|D`kg,'V F:nX)roPD6 {l_Q雗#֞!5шTl1}Ͼ{ i(6Ёw`%f-wCq 0j4c!!J6ñ,c=%!H(@WG<7=^Cۣ{[8E㞒oTާ}\zs…'FʯQ+aΒs&Flֆڄ`*e7I79xaDV~qtʦ"*^ G,#;N#FqէQr]>\&#N;R[n!>D|АJtϨ,9t2 -F!PE]fU-W~ҩPgؔ qc=Oa(U6QVn .iE72"ĕ(a|[ +9׏|k6ږ)lY:Rճo/j}wz{hZߏn E} ;| /3^>$sqA3[ꃑF{k˯GƤ sa#ԾnӯiToD\Xmxȸn ΩϥX__;mT!ƹg ^ѭ=+ߙE_B/e JB;b8;߂X\ 3o y-)ޣj0S:ȈEpW ͆WhCڎ:yQW`QJXmɼy˖>Ĕ̤ zi )*"\5f@̫eh%.8!&K}LxhXr4qJnZ=Jj4PCT"=Mĺ? .gl|eξˀ?k1nnd+ v0$kXoɺG6zc|~̺rf;vz "Pq6*? -0+rI_hi%Ae=S,6G}Ue;G%`c{DUd.5\A~?Fl[QqǴ2@zOO"/Nn4e/yMg I xZ#÷o?/.G3n_Fk= ۄElνK&d)X:p;Uxz`72X͙W$e'mcVrM}||TDUL,{w 0&Tn–;L+XsM6,4ndkn4? e|ONʛڐr tšdQ`󂃕:ݠ0 N$C7:^c)B^Wi˗ .M5s12J~V|Dp\e6XP7=ݡ2dom.?;a/h8K򡏞:-#I8R"dZ֎IG% Ur"dO}܆;Bу0,UfQX$1ضfb ": ;(C/U!X5`d͝]]EvD݈Z3T$My[\!v ӎ54XMsKNA?s-0q*W ьDxyc7b|S;gfwF igr6]szx3 W@\ӛ눭[bK&_Y{l}:{w04[͵6P7$Qi5y;0^nouƖKa_Xo!sF#"})X6"'m!mWf{x~6iԧq1ą}uS֔"b<_ވ VΒA͸fY֕ Md^2ٗLF8h2:Yu>|u o S2µsf ⍩?(n0owdm:xW0&OvЂ\o;Qa si, <(Ss| 5oqb iG2):<곦 Y'0~QKVEkIh?8Ю+q\U`ˉqW|R]:duiKx-udE$V0Wel }4704[̬gx230@j+kS7 R? zY]LSvKi, QǼiixhӵd,QWaX~)EЇy`)}G<,ڍX9X􄟈)3寈7bf&&Q[$쑾 vD[g]lo)׌D|=Jar(->#>ģLA2jӀ['#|xTc:̰S3{&5j0ۛI".N-,[ZR1nDܦ򰤫1/S jonAkV?s=6}X f$aq.ۏ?Mn,l|{`juV]J1 A_@M 1:2͔0('_{ÿLWa겂XЗS.G5ޙ"B"mbX LZ!vܖfb28{y<$+Ax]aџ6>pb^n|dR)AuI,b-L tA,z:xpD8v3nf2~UOAb"vCHyEX n^ꩨ#,''~hǧ'-jذth:+%ϳn@{=6`z奷d&e<$UyG'q IB >Hck(ؔaC=A،b135'Re!x"u2:uumb"U@De쳗)}'bv֮(q?M˦al0`mQ_14ҋ&Cg_&ŐӰ8'TdG0iyc:)0br*joj_|2U VQZ0>`q{9;Oa}4IWVlkm;C`BLЅyrr ;f /)waMԥr1 O#RdiHĦ`7EKϋCa~35<~Pxޯ; ^FAS&wǎ)]kUC=bH}ox SuL#i, N{ KIm0mRL\^Nf#ڂ`@~l9 ̱/9 `CzlS'%??%iӔaReT˚Tfzucof?EY }oqR >hh59!+0Uj=qtɽ>Rʼ$.dOpJ jWXYj` 1F<; 7joh) uE /G6jYN#ƫTYĴ~{.Xycd s=G,IzX~˺j A*O q02GGj5*R58«0S|Ghg]?*,bea:*O\yXr,T{Ps=ekWxD 2[./A-asFyyL~8u Q>U;?wVep?J3!bJ=s q-4(Cd6#ހ :Q-5 #N^k!%sjr;~ rUԧ,s k+a4 &D'iCGHmWq4,O|ۧ}qU \&fŪsHm"LaۗSÑYՕm'M qVe^]{.(?B\ixĈ c3;]}ӈO{![|歟4\.>5K l?19Auʤ@1b1uerD䖮*YsD̢*Dd!ѓoҶ%^Z> NFOOgt huðX+b#nh#<.ebo`Ce{05mZ::2ڙ<,*@3gifTygK}m?AH1s8O{;XKhkcx;9g,gQj]7Pff+A.<ZDt6F74W}Z`gRn ge3 O\@['۵=:T]bS,'ׇ҂`-Fճ.7/.SPz'><_u#dXzAR+Ӛݛ$mX!XQʱ~L6(54XLx+gIF1\LQFAKPWms`6X~O"[6>$w: #\UFp?gG0bN௤InahV; N3"߉@(#q9B(sx !XW6r&;E#5 "UE8Ϧ"_N_ #Jw~/YA9*#m}[XY͇#wݿ0.\nŸw,za |3opПğ+ 3 Ӄ`ZGWxHD:Cq TFnayHH5L_ yAg9ms{x%Zrn{CVG_/gE8| vO# '(XJ [MM6|bU Cp^؄2}5ZtGlIŇg 0À[e?0βxEE=C?.U ,ao4|.nw`Ikƅ~lzmj-KPBg1ц(ç!]sVC|`LBLROvHg>u VNM3̙Z(>K*\ogӖdL@mCUS Ϥ"ZZi01i{TT e3F`ޤoM/Eg)MB@ S 3\bzYDxȶ;U' [ۋì'SlX=#D޽(K^L bfA4 m1l޴&*!B`3GSbȷa<5/Eo#S20hR2|1wQoSvda@<s"T`H~1DuvpF#"6l+so#|# *?>LsoCמ. H,">z! ukCSĶW,Y#k]hw[8#Lq u ۹捸O֙>T杸zS†~D+bMYNXϯM\tmĊ*.=Dʗxӽ;mRa#{3iAt`]U8bYPA$Ԇ؃%E'!¶7[;aörIeߍ]yl%n32O<0b|ل[t(bŸ'޼|õ7b<糤%, XחZϚtg9Q Co.5ɧD7u:c^U]Fӑ1i?qq &ԇ٬(EVia"{ _#R]QRbiibܑF[W~!͹DUK:/kc䣄3j`x~{Ml{hQ@[î5>:fo]46 XO]Mpĩ1kTr\ &㉑@+غ 4bW`]hyk{ϡh6\?-*p3@N'.i k|0zݪsӦn"8Z>;l [ (.5F{6>d/\>X"~n tI( k6ӆX. t=\GĶ I}DvFoD>>"׏ | e]xsm{sUuY0a\=X_{T V՚@w:Y3WS"G̠υ{ 1!uyX{ghϬ[R`~l]m.VTߞBX1}( tޝFٞ0\ k4aC~κ?~{ a_oT;7=5 UŦ#EpUj<{shO!L)8} SыNm0;$ E~fy[ԳF,γ(e>X8WI-sf!&uw޼5ydR%Uֿ@2/C O/u p8\XJt K+4X; wE\=̃! ZH>e2>N|W4L^^XLװ9"hn:iڷ` lWulr70R?WLӭVrl*URIV2T=[ 3a.{{)4sb:n̚N+_`EbW;zMm(&rVߟdXm1$ ~Ė `^bX{ kbëYial9ra UĞrF" uLh,5?UUd&x75(KRjGe%Ĵ˄1sQBbS?3z qq@q؅k6v*r& jz$P9~ w]̛. lԺ 3Zl!$υlnFmGPҡ!ӓ_Cb?Dy9^8ck AE߯ɈyQ~[ߏT椕$7[.Zم<_x0=iE<fwO`*hd{`>~DCd#9Cod["?DhtP9 lWk⁰7~=Q5D]K;A#4>Jv0fTsG (@Ͻ"30쀥OճO܆UY5+  BoZLnvwo/xVeEl/!ܾ=&r ":|D̰=4+^,DԎ" g7?5&`}lfO5mfw'^2t?Q*}OKd/"- X}Ѱ[|=1uUf Fe[=?Ahc ګ1C*a;&įy?Yٿ,`戇7Wc /9.AH+MְV"(c&_IXi%^n2 *އqD90Bv|]W҃)-6YXij2n,c+# &eM7XI'0uw?_I2ףp_S+{맺:un0YIT n#TćT̚PXr6y Zlz:,b5}q)VŇx2ǟ# ]Zs+׮(A1pFqKw"֌ŧO fNDDh"fGx5YĴjtԣTasr3a>qqy%]( L򘵵9`g@tj d֝7p3*Fo+wAћIa*j:ǥ^ӆyz+`Kt(8 ֗v-`O۟10Mn,aիҎ`ܶ tq D21`眷3XxfV/! k gntb4_s:ؔ5z>2s"|%8G@{=5.f0Gm 8=tV-K4">b4"K0q@,؎A]ls>x5D/'/ *ٓ,ʇb~/_%A}䤆?*X`]mzX<GQ}XP vv"R1]+U4!9Gf1ȂRsw+iA&=EfD Tch.R Ԋ{f"qU1Doi'0T+aơ0v%KB! p`8c\7nzy}C k@V14}]w^Q?.EiD\:!dOqb4zv'$zDz񚛈-$j!<e]~&%r bK|/X緉#g5#&'{6Z)촀aM6?4` |,:Ɩz`noRADb|N3a932x 3d=r]>cm~=F0rw:_ngwz΋޼ S"osf+Rh;Glii{ {8AĒ~/Q]/6pi{{ ; ~FDMAGT1A382⛚j44x Xzyq|\KD8D p1`F!>ΉS-01jOqX?y,,޽?clJ ypP-' aԏXbBO_-(!?#}͊G<>>dQ>73bT2LӃ#*_}pA5H6U{jkk}vjttDE>ܽAẂŹxhjuȕqcZTpЖhEF v#̅ HS<Ձ 3&ttX|d\+E2gjK C֑׭0aI3~=mEmj=ƀf"! `5DB,ԩrWqmĮd*▔VB<GHjщx*"?7h~2*߅Qd/CR]/5OT}k8&kF:@Hi"joԟz4kv|]F1實 ,ªG$1yu4zy;c;-!" x"h -`j|r=""Yf aD, 2}p me;b~kJ9_4EP'>Etu 4N9݃"P|J w0'E2 sc⍋d\n ">FaԪ}CLLJf%M|]^b0B*J%wcE5|C)6O}%,I"eؼ0YVJ6:&Nԁ Ff#n#{Osci7M6 D)c=8ks_QGl{Q:__uDW6l<T ?v>}}xf'<{h{x7L.,`E4&=9GX̎eƙzUDbNW3c EI?D֒>Ŗ^y+P>|+<>BMaVT; ~mS=j!&7IfeH=:]5V; 6 6 }36 #l(hcޅC6'`T]13{8;4־MEwg؋XIJuGc92i~nh_; \ix23?VC) ïG#걭ozٱ~Eį5@3'u!-n?ؐ-MXT}P L\к oL<\eOpuŨI?=9;'`pKA^+yyY1ƨоtݴ'rn@k]ydK"~Ú㪈l9KC}؀i&#bEFS؜^"KBEͷ'PU Sm!4<ݳk L H ~Y"~C8v|"2끕nL)oJh\gvWlJ$ a<,1Zy^}I۬L'ӛ}ERRzs`"ljfJ#jC? 1)ȌElZi,h8A@|\ׅ} m?_"NrImDˆ%6Ʒr|y`ʀ1OڕJ޷ LA0->yX U5OoçTĴH[;nr{`!_´k iNM1?TEߑ#3\aqwcזgN_~UnVZuOLu`DdPDW%f+wt N"boTgy-V\v KKO$4€ޘId?DJԐ ˤ 9쁰|yIm:7LY -3Mq5p^ )GZ҈bjlW#QosXo!Rvdhl³4"gxv qô6t|TT} o6 3`s@—q71ڈ.)2 g368QCWsLblŝTD,N~QJr7v2ץ`UúnAEè#Q 0] Mh=Ulv;R⠶ɤ?ٖXaQr+s|ш$WUID@?>?⡥@e&#gy#Pi,e1"{?Z݆ }hOniv5i20u]J%X+3HlȄ"iޓEFw!mbzW8L(:6B->퉰es۶78_"wH]<ɘA#=yt"u'rHW:baE ^:OF>Y|;pAr3/qɅ4 D tMU1=:(Wo6\W 3 lsro8L+z^g(v0i@ڻd7`Ŵ˒+`׆m߯kx} Ϟ;kF]ܬl+ {T5dw0;Bzo19.$C.g/nÂj*]9E鷧T<lB}m۔EKe;2kY;Qy:+bmyx83fgx0, u_QU4<9 6Q|5ՔUУwNK|C0)yhv^0kVcw~m'k, W7øvPeX^K8hS/XC}^)b$Fm;qi_r*4eƇmnv&le[v}ȓN#< cEQ犐0EVMX趹'7!aV@M~o悒mN>|O}E'02: aT8'ojs<x 0MMW@?2PfQI_':]ΚAˎ`Cw≳:g=x 7gڗϛScn ӾC`>̜\W J BSo{'m~7D# NX?5qШe2)& SzүSq9>Q2:6 KzMmͧ8|<,,YNq݆PȪHSl(0}1- Gg9u9aп~fM B{/'c}(p  `Xn?ؚSM9:g?(oADH;^=m3rCnͬh3˭7X1^ZR~-r?4>H:c҅p7_F' Dg|q(L_B>F*Y}uVVUB3^u}025)tkIgXg\,z]oD,|O ؀O7lnh9M#`ԋ泴cЧ)YAMq>]o0z`qk{\I/nTLJ м^B& .g~WPqAl{I :׮Gv@W5_۫.M"=??E8d!<xI"t9pw>FL51a#|k)X[އwl7  e%]=ܐ"BvEH½!"nXO$ N^ޮ_I{; fDnAq[cPTGK/Ow_ȋX-sa,~3_ 2D`f~ E1|7;/K]Psx@$Щ&l} CQZaLO3v,A[ҁBY) 0?kto7LUws!&j&)DJ'V ]7gqկ AGo:"_!$=VԿiL%ywC**B顪a>hY-wOY} Òg`~p;(*[tvs?ei8a-g4 Y4,[#'M@>H}-ay )6i|x# rRtJh0h~1߄qUnIo PoWVP-G@u<[,Rn0Dt{)cI~w.UreQV݋Sd 6OZsD,gx_\w:h&]Ȼ6~[M5&g҇ayO@ -ϟS><)bLRAhx!;!4!h0ܚ6jAjqGU:6y quQ8'x3OE߻x3yل7B{Tl4bb"*0#\7a$6weR2`D4Zwk"E) ipg: #\$:o ܋(A o9YZc=ҵq*D}G2d`Yqf@ۛ쬂՞qP!7M=OL#ʾ@Ix,V¼FV߱z}1 q2B?9Tv#bsTlY K1alƟ+M9oaCG>LRyڃ`:UlZ Z 㑕XD4B`zjT=[ԩ^VV~Z{- ߀_ai]N|a)m+<WN!&>s=D|;b)yE;L Kpb9N#bDpVݶ ZP2ƽK-ާ@K-~5R`㮝T ,^:DsΔmeݮՠm0yܚbפ=à0V]3Hr*h C_<Wm aFtۚ7,m6&%sU0! LcN#`z}2$pcb-k=m# yP3aŽE$OX?-u|(9@O ;} .9Ī L(Yi+buY q)ex) !ܳ'Ұv0\j̑.o 镐~IQ7*txZA+n냿svZ;EK]V F}m@5+taqCꦗIa:4lǕllIRsU+>+˕øwG C;uâW?~Wjk7Tta4L̶ i~hA < y8Ȣ8V &h h9F!4Xrz-7R=I~|/D e] +d0w%bbqo\ʓA8K[c8DJɺ|qW paE6y`@Ӽ~-;D^Xk<. ^QԖjXiij t#z|IClͻˡ'2_S9q-x`?86*A9+(I7n5RpE[gd) 2DLkc]ND` #D*EGTSw[0s-j?'T8t'jy.YI\*Bc6Q%_b.`k˜LxM@q*c#hbDžb =pC?G SO9[~lɗjεE WH#bi@MZK)1c^0e(Z30pU=G¬ϥawV8LJ8Eb9z>0-F r*?@xg;: co 0ciK><ɧmG&xx8bwU!V#tlx1:'IWSUő~0BWӬG9A;S@?yo)/4>wG)3[c/c~SmA{7in5c_ /㑶r3T>[1mvð>r ~AS캩TqÐOlt { #;]ʪMKWäGEX`B05E]a#?;l <%fˤ|_wm Qh\[d꼉X^N@0c}~_*Їv﵄HצoP¯ַ%bCDxN[1GSXKz799 GB(©h4x gD[`XFl~ϊiS5lb-Ky0yѿg0C8P*1_/)EƳԵcA_=v/$="~3Xԯm,_GKѪ >_XͧY/Fi!Cb^Ix8V#nͯU{Yʀx8"OT;=)dӾ(.Ǖ 2|"1{i*̠urhK1/78)xU0/QqVFè7{\ny*%Db}\˻s f F~3LI;Ny1'%&Xx?@.UBgRa8y:6kÖX/iȗѾX)xz&]|/U1‰ Gw#¡N:YMckRQYx=3"Gp "ĩeLxMsJ5̀=| aMظΕd?~uVި}}MGП`6kvo3GySq2" ! =%(DIHR$R$22Nv*;{콳\ڿ'/{9{[2HSEhB{'+늀780P~tc R0|)f^D(A>$~̹sRuNzIdqXOv}3־)ݾrÝÏ#i 3Qg?D̟ *h< ڎ^gKzWkȉuI]zjp15KT4eCGn] N+2ozE05S 4tذQRkȸͪ,,N\80Jڈ}\ueNa=<0ŒYab]7>.| C0b.:" zu8Va3OVr50h7=*)+Tkױ\N|HW`ru8&[7и}V_C{wM/ŗsԟ-2e=`{;, 2^(|\l?taϞt6:l{$^8 k=/ ǧ3\%!oٝ=:dc-4h&"pSaB\: kSm&m`hy~s߽hyHw}TT?PKoIrAgf_uR&].Yҁ"3p-':uߙ]ޔV>׻Nm&'ټTD|p&1gfKgๅψZؗ/._/zQDJ1Tc9+;QOڿR*`C?%^~S=MY×Z "=n ׼jcDD?^<}ՓfQݝ}+J]BnGf4u}\ S goWspޑhhxc*JX%8XՀp<Kgpl 2GL935BY F8}Z^[,`N>1dooX:W@|y soϴs*!JvD0H{@2 ݃cBGh8Q}%hcTn3?CS^F ͷ 142"X*H1/5` ~t_7;ݲ=BAo"dxo7&#`%4]솿{B4`|YtEo|wr?V|_jq!0ΨZH빣6Q8F1L jPm- Sŵ!PEJN$Y|;SwacjZټFBl?"OJ^90 >sj=sL2PpבUQj9E*(#ٶӧG/Yㇽ r] bAk'h K!~۴e<9t?!,m{#kBol[}#!yVtGEL8Olt"C=%mK/NZi̋Q°p8FNMY~6 F*AuX(}\^Q:hCv:_7u1IuOz$xJ,]i32j3<+k6V{ZQQ؊㋄ԅ>ITh`dx;G0̽Q UN3[js~*R=Qs^Gm`u  H&GVC;mnĠv  WEڨ=")>oi5!sN 1, HE4ꮙ-ėJ۰/̱S Fhk?!^usb_88WU&L/䮾<1Cu#¿ ~ {9?r`Q+wuڹ9C1_Z ݰ.Hp/#~l$(Cw-"v1fFwD?}͘1#S'u>d:o57oJEj7qМ&4`:URM(GaQsL*Q 2auxX--x1D_gto" >Cl+cԁ$hjK=!1x3YYZQ7J|wWq`uwTn8s%xvO|=vk'_Ls&p ѝaELVD~}|E|Vb5'u&غiL @c ax4g6ח[KALA"},}tYhG^&ec\@<6ן|r3ܚU$aXHmc%GdkLnbpG?12I!y)'UQmj9'h/BgX9s#w'[\ ;Ct7`+I%f;`" k)Rʲa7n»3Bw˩6LSƈ+cb^fB{*̀&o:]6a}'a7Si J$5+ʵ灴ְAOv_G>5owFwaܑ20+ܹVW *1'!66K@ dFP7,?EM&oiVZTj9R;LvXpbug"I L%@:kfKY TB? >-?(Q1ԫn-#>w< oxVy5c=plx#uSDݢf?m":{b+Ճ bؑ|vAHiK0Fs0ſtŘBwIk[Yv6xw~ ]v3N>AwEK?naŝ↫ lKzzyD1Du GS.m1[ w!B`kO…sJuP;^+ 1j9(C4}=tb: _:*OYy|p 鄃TQ ߆ bqXKk`"T <+H!*?-`>6a]5|M͊.A-Tcp!M\E}4?=> R>Dq5ظzy@Z'^?vO}(74NI3Mư֚*MgiKS^+5~T<(m}ݙO|66,l^.FXةA?ߵ E8'e@Sd:*l&(`X0LDfc>;űw[6Xh`ddA6K9>>pj0DxCK0:g45[j"SEO`q}6bUӾ陃jevM`l֙%[KCb:}/ wc Hy׬ fa՗,++uuG87Uc .4B1 Bj(B'Ty}ӮBdzDiMRvR$GvJ`-Dȋ?rp04D8s2]娡K#&H:S9Գq9D#gԩM' {E#._dM =d+qVhh D]X`lŰ Hɬ0K1疇`+l)J`Ws*l9. }ca%K!  ɛÆig: _<'kbWv "mΒ qxW ?i-}< pdȁ#$6)x{-:M԰:TeK`fw]0N}o)a(^>l<4r`@/>ŽJlX[yPGbY1vkj/Y\`ӉGmYؽhw*( Kaf̑60uuXc9?| [ -`$WD- jda.bS8 IXL…'H  7*T2s<QZv#jO:߃7/3e=fD~0678̥" /ߝ7aGXPN#o}vtu l.U4k;g.,9 SjpL!wiAr'?[*G]W`>C!ؽVTtdu۵I/,e Qz/UAנ! wt$MAX[j& C0uݯe3r-6>nU¡CΝG :gt> wlb☰(ۭ0Lphφ |kHs ʹ*!S4bz/1A_ "[)Mb hV'9avSiW_π(,M~'rث]0Dc}< p0hiÄ(w( wfbcER@xMS7#ªKlm&l0%^-qnW\gӞc|n:&_W0AM}ީػcpo8#?B'S_Оݔo y ((T"J޾gA~ӞQa T)j(3LoP7}u&]'ؾo#pI 3jy)'5`aV,!Ǥ CƗ_ Y;if$GjZ鈮'Jb;e紂̛mG>b<0n&}wH8k`8z̨E?}r=jcQ Z@18 CiX_j>QE%0M9GLS~ZNE!Se& &@A }{~x x#3dDBD-(Vc`[wEVK`s15hMe#p_ ?N0~_748WZ@,٠)98`Vg4`wPmJxT6lh"]cR׾'C 8X+ytOVNlm^5cϭB a;@ڰrP̅s[+ȟfboCqV(,oGSU Vn`HAyѠ3*CID~HAK~x+>Yt SXc% Xz| O"bL~TiGӭL"i$.0*J(i/Q8c?y_y*˗i:fō̟NSwICr XZ{ZNRW<4Jdg pilJiS@ד1yRCr1mO,Ug`RH(c¸Vljr |AB^L{,훝샡~.|UB=NZ"=Dk݇҇_Btv=ǰF2]CwF`͛ntűB#u݈L%Їװmh3 Iͮ3[0jp|-,_)~+ٛ뢣{`?9% X'eİdapa~HQb(R`B篪o #/y"Rp!w)b} zwkaˈJdi\%ؚ=ga>!̞,$Fk-!'=e5];’?E黟7B{xjT}x u`UuqV ^5*@TS eeX8I|, `Џ$jA wVT5gįt>n61n)l6:.l=z0rdR L9燂0R̽dgqQǪ/Q]P?B N幯FavHYs3Aj.(,$țSͥ&12,^.G01x[͉3n!~pDh}ѺZO|_!CAcJh|%Xijrq}[7,h$ _%l_p^"GUi lgL1?mZ zQQBgt+Ā>䮏wN$#6UcWegLxK1h;O fm=ie2GbaT]ngˆ+Ik 3Eoiq0Zg 1\: َ>0E8pJ͞sxox=϶3a'EkaMKNk9}njVl!WJۥ_m0iFc7 *RCDTXT]Ýd#K}`l~<?(U־_]ƈ /Y';h]o4H@ dC0E?3խPɺya/3X(3];MmZHXcudp:)r`LѼ K zU63w~|WEP?fCs ȶ6GMkH\ܠ34"#N2ځeOʷace\w̧lЇjnv9;LL+$?;ZMznӬA#EA|u| ZgBFkXC$ً80^v[PZc϶ƩBz$ւXu'+ءb``h|)njȟ%\sOhg^`|}8,}(Ci`g4%v~; >#WnX/×!Ж]e6P"(^xޓ'Csw4@s/#>I"+i4[{W؆iJ,x[G_&E5|DKΈRP<,sy5s; #ֱ)^7ط AX_px*U­Tv~C Q^=uLv$;V׺#╂7~՛Zml:= ˟9Ͱ"jmhfDgV.6(| `2nlVm3XzF #}y]#uVC`pa^;}u}L5֧Axc}9nL ܘ.ٻfqkr=_su:xD_,'FK#݌7ٛU0kbsܷ2~n] &^/{41Q qiO3qNibAs*uYZm^1-=3?w&X43.6+!?a9Le(]N%FSS놹FaV.YXb2AĘW:0=dj=׫ZB)X" 蕆)B(l<;g(VT g唈v"mb k,ѾSԮI`$hliYޟGQZ:}LDIw Oۿ ;;XrHqGbJsOqœܳ~yG'=!tF㉊뱴N?!&6;ҮF PrM<" K5 ܒyq+CxF) xyibѾf#Dj䣪!X x5' WN``5~ ¼-gpc;ߖ] <R9d;l=mP G1oO=C/3\*Ʈ "l2t?rC)7v]uO5/0o$@[@gJA-ĊяY0k@XVO)\86R@6GݤMFt}D6%!wbl&G"Q9̔MDr$j{Vjzma|dH-,0H$2oY3Vs{<,-j봸:Ħj^(>䪨x$Xf6%~n bQ&QP pk2B/ ck`E-J"]'(yyd z?t&u{j -ɩPa~iBFn4d|j ~9e5;FviUEk}:`uѳk9-lM(5I"kR}1LV5EG$DkwKVQݛXH eOVtPx&?uw5ޖ7;~E{Kz6N0 r]z7Ucy8|75+t>Cq &ˠ΍.Q7k1_T{ +șw3l->8^j0lVq۷|`g!aA#.g#"}m13C|` I8L4eFB齎͗j ?QtN(Am`/ZUX1qH4rtemD,JPy.:ʰ"V%ufw b=7|l?V6m9&!DkZz)ǣ/X%ۅ|syASanUPX4c {H"_0?}wH<:`r><s@{pdAH(+t!p:Ƨę44mRd\zZ00p̎=-̮[1f5b ?Sk$GyIAA\0 +EȢ"@5FWeQbq}ƾy7qD_?G(UO'-=V갚6} ʨLzC'9,WZ:E:U[0M[f>{u"~0?xS@B$O.jH;[(W"DSxgbz܏Xɩj~C"d8p!rDG}evf oY`Ǫ^" VYܳt/E 1"dm8&XmKz?ݫ-[3~\`)MjwMD-͝P(Z9rvMsn$_kٶ6 s>Q0~@oht`OqQ 1**awpXm0zU}@Cc]gNt\YX \iX>*!pg 36i(] 0ߺV6r¡8 U'$TE3ڄaW݅bR3ԙMqȓ|H} 0][r֫/> m}%XZ+ءӕ:(ă dĐ{jjKryDMp,!ΌU-/ĺ/;vAtquq IPxPl*tb|^ۊ)ڱtW?n(-{V:">)@\_*F(֯{Ŭ,"N>` J&auuy)ڌnܣ@p1y!i ,s*Qvv_wݠ6cDGq0rN^A)9LNBBv0 h傌*!%[Ыr8z{r%{uFq8(j2X  ۓyBeYn j\4^ma9}\#PLWxhΖ7!qoG`voІs0(P\M|T0.,Ds<}o'yq#2np1ӈ& +D{`roX~T0&d0|痀X̏` ^枣#rfde=D|0#^-@0'8+K{i @>B+t8qyX$|*LoR]AsM.^M]AK~s8Hf)UՊ-0գXTr" 2}}'&nk8VZX/^ՁAfш1i*i Et*MΞ"PV_3yT8>_ U̓?`f@cmt$S@EG:CS%߀+s 0Ԣr-_ S2/=4ZW8kPk/թva_K2Uy;{7@ H?bB*R)(#%kz2O;B{o28[A#MO7M,]RZCχ4L#@]GtKޯt"ˌ֋ A^[}Ig^İ1P*_ 1~ٙf; ?)TXZ⼕#iP+y@<zq _U*91Ja0} /kZ` '@>VB aI32t;*H!(9W GI a:.U yײ{aݴV&2l'_кpo/+q/`5aXlw̺jVO$ ^ruJ;!Rl`3YR6 E%.(@]o0IKVds;)|-8xG?iIb}J[_t%Pr/w݂xs㧃> `/Dy^F 7ES_E!yiDyiگ1s[]At 14X^*2z `0^~V^Iև=9%P+A"4f 7&`vXImEI,DyWgؒX]%'0x&9;X갼w8YMVq1CjagK%Ӱ|k8LmM ˁAg'\N @ֲ*=pL3`G;vsi_j x]`|@˛|m-`L>l _?Q(씾 0f%X?t"{>S2E(Ry)Wf~X;ũvwK텟<>7*ٳuZ Dlg&~q 6UֈUvߙ_sUyQMa2QM(hߙ ^_K`g?Mn,[xF!B|v^Ow& #Y1objnX/4-U2!W[#{VA12#?1D/ldQ,I#Jp;0o *٭+kVUK`|V9^47Y03`F0e V'&0 tɪn?nҟ8*J`ddvDyF a>RQ8?Q=smxkg=rHw&NmAּpo֍:bMRSgq0˦_]w'd`'q=fp'!ܦ]Me߷hK +Aq4b<+q ߊa}a d($d` E.n!q%^xO-7zDc~(7J* )[ ޿gp֫oSTa ^z̟8x 3^C]n,mX<&! juհC}==pFoy(ՌN)+8JJ6CIb|v&5=gf~ P LH ")>rwnQ- #>b`gD wnEj1Oʱ;Hfy?ꝅm@99=#nAu#lK\"ʱ>tM qӂf?7tĬ/Ac!t9lI v&UiJPIU g`=[<, wq'; s~\L3};ojŠkƕg0q C5{ND}$W Y DJ>ugJj舃JtH6FGcbH ޓI<\]Tr`7뉎jyDpys;e\bLIՍXɼoo"Bn/b5wf/"!5-Dn;<:4 kokf`^͏si5. ]&H,g!uRH?lށ5MVETKT>8{|Q^zj%!=*.{k_5:ahmF˽L@ZL^6ɋoa}GX*-$; on| zNS0wƌ ZCe1}TZO*YN _ᅨ!QyLl9u#J-E6SnNo@HCo9#G.-Z`ClRf*EQt?4pꦬN0t'^Sqy hmݗyy8Q 5?g;߰i" *oJDmzN_џG @ێ{Z7)ty+Xn;(&BxnGr A?`50u9A9% @QGyO9!v5&TK{=v/eɣTjr,}mI{!wI WiHaY.u \sDy\*v]5ώuCGq8Gh́b>Js+Oa:x;}{6Sgu[Ǘ }^X kbL :EB4ݜ{*fV6c0z_a$*aK.wlah9 KꮟL`Zn9H 1,،'ϻ:.MsnCQԔh' ㆄx/"P7@X%~~BlQQ|Q/m!RM1}*:pVo"\ C] +mpybVеGSYpu40Ucwznò%1k>zEw{!?{hy/ObkŖԢGƜfQ 3=p)anQV:~m`1o8 @ͧLy+5F)\ӁC5l`RQxQH]jg:~N;XFo63ɖbhuh0k/6N-G4߸adgC`9ZJVT.IEF~0GhfSV8vG%0I&_|ze `kѩ5/Y=FTe^fϥw#oD4"epWi~?~!Qޚhͱ(X,,η/ç*#;.c6Pndg;hHsT@^xuxyi# \ꇑ`0g Egi`}ݵ5 ov|aK~VOޯrVIPx`H9S _H/HLcYh:(8=lݬ7p8h_¸YSL>]͆Eņa@raa KV–C}:U gD7_X_saXSZ f~D:uOo'$1}h;*leͤ-߯mM#)sW䪇-) Gn: kO{nyF@8 sB |`4/oNx!~K ̫ ~SqE& &_<}Xu\;2k*K7JtׁyҌK!ˏ)P3H09\'K&??`uZ2rK վBUٽvԢr`H&:"'˄99cI\IcHOwNd4LjaPb!Ҥ&\`pZlKl-ؼp]XAGJ3a/^3vcs -C|I{~QӚQT[~}0}5^Db* ~Z >Vx&}3|X; #3nx| 8VG8#Xqt #m}wRޑB[4߮@ {;Dc}l!,΅=txղk`ៀX%2X*C0>qVo-`;ۙAQS%"Jm=~<:pIȘlX/>ؿ2E6t h~9DWɰ{g3fغZjMJk1=X<16ib{+ilRf*t_ v~S ϯ" HbV#^ h:NDLk!vuTmW0Mvo`T0=KwbS~?G@U,='ޟdnυ<.X@f_vX q_ifĻz cTp[ز3/^l=>;Ƕef5]osTiL?s0@gnǰmt1]%Caq[:K TUAd'`}qC3 J=˰rQQ0 _b};@LVC>DG#]ߋ͐.RX#Ol!(t5#!@:y4`қ)ZycwH*0Lj8k[`>'`/# ftO>SON\~(K q(Q#.ˏ˒;a=È-Eulo ^ 쿊p1vWOs%JX?~R/`Wph;wG)R>a׳I|Ga ,Zz˃8܎:ϛ(>e' k{UIVzru\ub+C W;Ӽ_ `chDALmlN8 ]zsD &$2%]E[SQ01c ]շGל _= K#Z|?aj|E8̕Uj55 m~R1yXGc|S#6ˣw!c7Cc «o:pBBEamb! fnJhA|q%F%qlV+;SzK?]`O6 {t{y "c*Ο :)aYX5JՁ?ﻳ#׽V{_# _ǰ_w /[۞)GiJLp7ũ`8WIIXt]1ekTxp/hI0j)?l70f(IQ&<v|Q*q_1 -'t)`>WmkyoCv_ecV)FzP4ZBGR8P|0?ؘ]@do;[a\]yq0U͟c"{NccMʔX?bb9(#˳ܭG&G-{#o?}jC -`o԰h :`NwEItY kq&G6w8$x1vgg_CT/OνRE41G*v9Ęk|" 4 js!-RW[4vm )խF#@LuZ~:v NADO'K* uG̘V v{)Ϟ͆ *bQi~XaYZn 6) [BG 0^3|`NLOm HUߪ؋`ÁOL&KC}Ukz\ P)bXo~x 17%2 ȶk;mQc>ށ(ޕoS.f1Oj# VXu,55ssC ˮZ> 6͍+5'V(UXT"wu|Dcmٟȓ D{𜤽2bFvF-&('X\|_G]ȟźu~Y[a1g Y`Οh˗jg -i4P&s<V/E`.»] ?mGxcF>Di0{-dp5C??5b^Z" Q|F8TQάݛDTV#Om=5r# ج KIQ0q{ ܪނr5 >NO>j+Ua6"-x 8vhQ1xKRֿD M5s! X~={{bQl4q܄7a=t ^LkE1jAoS\FIaE05Na;5NŖ senc9+#sK8h1RCPc+z FϪ+¢|nX?,-LL><yjFMx?}ssw뙭q>siSqMvLDDqvCBd*sX;:ij' "jEO(MJkjO+oQq)-։ht.,l"zۦ Az:btvTzZ;WτvgZt0_`<_W4}s@_t8} a8AgSWPXV:`TK j~z0E8FXV޻2{8U;!sc\,c;w?-%Fêl"+,]> fǯ\)nrnڣ ~5Bb6D( 1 O23zUmMT|C1/fdH<6'Rv!u3#\FP>D9,yvQO >OWkDr f_Z՗;0}<b C%ړ߽8hGB06~e1wz;z%E? ??ΐʄ1t0xh#k.júG-X97YOr(iZqlCJ^Mo;C6$v@dLLI%a5e]E3Hk0+|_^ j0-Zh?}tJ6hAƁrw,gHYcW bQ]3X (u.qx"&GJ׻aќ8vXɁqY1v̗~ 1lE4l G6Ey,l y]n0H2_9`+r1lp) {`?8}l`(~f_k4Ep'{*I7VrÎR ~0fVh벴csA#΢saE23' uĕ'7p-?P '0~!x hˁ|6~%GdVG"Ƿ{z|o:wQ fk8,mf%`m %Ajkrt̵Žc^C@xU=s'q4}(8@J1U>==R_'v~ȰpD9ݸu;QX?t6j&,J5X@Y}5/!5sr`B}:l0<{V T.YO]mMLbGg1="ѐ +e86\xi(ϳ{hn|k\@ g/2#kRM-uߥE8Z /xlOCyIyz>^/+ua0=LfC8׳ 3!Zk<;U blʶX#^PEZ ec{2K/D˗<y0VfR(wZS,,kg1R´8S~Ų^9 Wk.`iΰrk )B*h1tЎhEh) X^܇Q@Fb8.V7ҏ_Rz/cuyP۟7X3;-IޝJK~˞ڪ%CLzE"b+zK|A(oXCX{DGvѠk Jp]]~>Sl+OYM T Qh6g+1J*1^C:`a34OC腎@gƉ6s0Z$ ދ_уZ^d;6W7NY0.}7Ԟ˳8\GC +`i o26:;r(+fQ^j:8pQ .!ڭk{r"f1'D8(G@m痉H")Gd`O?=lD_L<B= ˺ho{>p`Ļc0J+V|B(<t_Ug49@Ч!,% ۥNWt}DoL+X!jBHYFx8 } 3lT,3{hLp W7_5ᝠ|^DE M,XY>ӅǛ aH'M,Q! #*QͰ=r7BH5z4`mm\OZnTtda-;mCa闤ewI7ԂvMC5c-ԈSuW$a֌:i Ub_v0_]8hGv|D^,`l>N< i31"?RaҥCFIJyd5ly 6`} oJFTNn?4b'u ֜ZrEע3>kd,煩?X91Jx,(lNpE5ֈ"<SX ~D̋?FQ{/ѥʪX(wQ Z %Ea3DUr*IM!$ lk5nD0R 0*/fU'":/X}] ȲhOX|CU_}:P'``XcK6kDi+O;4uBtI*"a шFHEeD:sgv,w,a! ωq fCŻ[zYS|\_B*iڌzOpWѲLMsQߜ4_g&;{Ν3{+9ki,}wU(CajXL]M(~ھɁ̽՞8rS f]С㝰yJ5_krv â,Vcp Tj=8m,K҇`n~SM=#}Z4+ tr3U9c|V&-Un"eHkJXGLwî,s t+S,A՞`J?}VE_=QFU?L[ުڏ.z*! WkP>7pZñr1U`;:\16'9ߗ&8f+_36J~!T,(<ׁ'_?P+2 b( Z<"֊`p^ Lݽzrov<>j0 .8\ {NDQPZ.P#R=:[1"/RσhD;)"cږ?߽Ao(}[~ f23/ Sٞe/;:Pmѡcu1^z2 H $QI5Q=ΜC4NX\sY˗fyD?Q1]--sG7tCٴhVLw~ظQOø%w[9@:߉sau})R F Xp}t?At(r&;2a-2ҪR*덪gܼȺ~~῰Etk[^ FT.{| ;\LmIUHZ]h< !;g"9|T _$2:Wi7+ ڼEs0["" mN,}hmrf|u`M%c~g^B8Ÿ^JFJ9[, Ȑ+~(y/ie p0N){|l<9g; IJ\C;V4+ dXXcWuy9c=u엤cImcXgDWOj}2Y=2ctS'bf@dDo$»=bS|H@q,+Xz+V*av͸.]s?0ޅD9M@ ]> 3ޣpx*S?D(n"3Jױ:'=|.$ӕ"ˍ9%k61r=mWB4l˞rQЫ39ݰްM<܅..K" ZFMj`RKr n\ܸE 2RaUi. mKFτHIaۊQr갬yBAlצ(!jhŵU%}Ek~Xiġ3X\yVP V##`_LIpY +% ס|ᇂU]D*l]zla(1|z#њxjcy[IW{- J,^SJ셑 Ss n9]=#N>b>@AVGTmU+wXd܉ن9<&yQ0@qzo\#Ihl~j. m0(?7|{j29@^I ʀ`{gHfKjҞO@i6qmFe#hOkw#K`Cr3taǡRiLO%K ܓDB:|.Ā+X5b%cHƯ{y^SgMAݙGHix#Ƿa_ݱu-M#UqC5ӥ('.Ɠ[ձi'̠Wxo~֣F#wL{ìWW`٘ k8vr.k?NSnwrm0Xqϋ fNL\8{2FK-MC TȖ)ij<y)XcW|4jw,f}CQWT` /W6f**NM[٣FMN"|0$6sk/5"&˻難fD8v&b?::x"j{i<2 6ŏQeWQ~7`"b j @CǁDLt2eaiх͜R*~h6w @I*!@Ӽލ^(V߮zYGI1.`8N Ak?}{,T`f4a&6}:lCz }ly,,`F.LXz^s#v}x/fD,3y8s} 'o!K* b}մxP"L9Sn_D4zsg Gyv&$ c_vV'ae0>7d]oB0t~˨)߲Lo8* _-q)w-`}i4B~h(Z>VE(:p(.cK(kT%RRTJ%!T-$h%d'21}޿hzp&:EO˅Lo`Q!pH,(]2\u~qoc<2y8aK*7ݺg4BH{ctY |Οw7xH!g^Z)^N)d :×+W`GsͅW&~uHJPuGrψRj9ϙ!w_ߨ}Hu=`1Vf(ȷS)k''"%'oJ"6wOj,)X"Lsh5Z:'YI4YzFpN>*RUULy<#5垰ԭuYLDm.nFv䁰rȥop^tPRAM& k?y,#DZqޘ^7d+PG]'rZxP_T,ڞnA;2$hڹ< 5w}zaZ-zzK:):bp߹kWx7?7s & ҩEæ43d|eOdY:~9e/ȋԔ {ƮqYHs5R%|A6% k_Nȝ-EΕuKA,_彷.0!T+,I SxX³!oD,:j+訮FlO浟d\Y5 IΙh+Lo; #q Q~R$xijhO"C0Zs$Հ2JhAC51:4)K$h]9(3M:P7vHsTye};G AրyѲ=u "nHtf>75(vPec0c)x4OW~ ]zߦ@Q+>*;Ŵ<znxD:sN/ȥ/!ޞ~oM$[seO)mB>W3£9RN2>i5LG0|Dag^UT- O*ɮ2:nXT7Wnajpo0?$.WnaCȼ&$VG;!g eeQi#6Wn)1m@FsFKȡn%u_d,UJܧ]7--{Qg+ 0iS*7,v^#|Ϻsɡ@ų?JN}#m9 aYI^<,\푲1^Iv^RVBhZVQ#w͑9[zP$, -sQ趶ʅyxW>'~XMz~6r{\DڅaȒB-<{h- ~.@O^ p=1s%1=-horRv+A;`pM}'< ^&4{>חm BRp{`?2 Kf29;`؅]ef[1mR9dL.MTìKaKDX7UL6A2=400N~rh8[x4ZD(x#ǽ]/W!g-n}/we1|x׶r}uCazg{sHzvԲ+, ?6<4~ROZKBEJLE?K޿/jSVoa斣N@X ȖrX&rnWՌD{#_hU8 y˴ODG'A$/ n@&TdE ,U\ӿC aDUv.h֟;y6N> := c&0ܔ8ZN /b_i%re?e?+A;}{|m[WKmi{>¸c}䈴wR9&&G!}[Wrvɑu+_"u=ݭP#sfUO<▂$0yH8a5: e$R+ՎlZVې#aQ}PNx,)-/!fd043KaZ o5hDB콓ߔh4׮ayxY`  '`j0s[t=ܙkBjjB+)9.>.ב0.TZ*߽8hW aQJsS|P+"-$NDB :Sגl \0' C6}k6&_{$$"+OҠv*oi;Lɘ,{+7⵵`:i_S2T4 Cr>C7UOy ?gBAy^ezcOoty5f` m.ncXYx}*A8B<^ Nd+{ZFyKjxxyʴ ߅Ԋz!Y~/;δ=C:rj' qPKHAkK#׃Q{ޟBx^Ԅ0jiyW2t5X7 ^BΡ3i/XSmʖ@Q"%[싧J+orw%Do{zK潬c_QFݠM ow*O+d]p]yz=#jq0A ۛ}ga1Ml(ԎE^g }Y*3֎"%;`ikz}B=0Q8N5q]0.a<㇔!G)}~defƆ,b_yXclta 5iIF+DD&}AQ*PPygnmϱF3y<Gݩxyfѯ6c`X:\dl[W$"r&~0Tw962e^AObU!ȼTAzt#$R 󆞺lg$D+륛!l^M߾t9$Ր/d,:,eO`%O05veƦл3*C 7^x&:ͿY3b:̔u2Vw~s!ShhAE;s@h|[t{&ڝ̊z2d"8l# 6%1,^8 ZU?tw~} υTA+)b.]΅kX=a62:m0nהK"r-~cڡTzx K! RghG1nvD8*(#[ڐwS?o^/:y &]&!3۟R1cdcez9Vs^؃< ڍq9B-?=獶u$ dU~`0g!ARZph#<{Dlݾ"" ]ZO.$ܱQ MM=!h\J~ooM榇,[-/ sH2h9 Y/2"]υ^RsYóʞY YwD8duq#c6%X j0qs`^(nX}%T"{3tVVYl=~ 6kg[LPZ+x 0"Sr62lqݭ ͅkנ ]tyuoawbt.HpܕV0 fmC&+ar@5Mznv*C!.|H Qæ| :7q5X99ʟŒ,7Q7##ȱ/9g3$Dbiƃv>jg"?`Ce9dӏ2adu5{4Rc!dNj\(MxTe6:𓼜PWl޾ݚ#0.zLןd![+,7TĘâ{MD ̾ez&{?ȼc&}!oY,Csu$(v,#uj-ϙA}OB/˓]Q_]KM=dSj EjHnV9"TM6 |ѣ"k˹YJ WRc#whm{_ydn$~F~_8;%&9m6"ջ7k)X~|GG\JaK/2PTkkC#w[ Y|hY 8ID2GU?EX~ `୙qEUP\v)BrC[hQS %|Xn/r u$T+̟&òC;mݖ5}?[w7Rs͏D~Ha)9cQ,ͻaXM5L-ZɭϠCyb[y75 h<\^1|v/D &L3Wb7?7\Ӌv[Tv5k'~sVZ~@5 ^R-XIУu4$  JlB.aY tBq3ᅰaZެ8+ Hgx9,7 OL$Aa.Ov/a* Qn^e,|"RԈui-# 7ishBhbj8(CUlɼX1ՄLwFs{?q9LnMW"! u]ߢ_!naZ(ZkRV#8nS{" >@x=grtY$;-2 9oTnϞk?N-k] es'CIňBCnA!^>yvc!ѣl_`X1M7[#%GA nl ؁\9ǟ 'k^?bd-.$*#Ӑ"ٰrfXЪ _µN$Rq NӐr}d3ܕw*Rܫ? #׵J"=U*pJ%=u d_Zg3ݒ/_qe%51CBAW1Iyv tq`!A5pg #ļ~OTHh2=_ҵ:.Gn%5ٶu@y/w W΅2m)Hhf LHJ 7I[]lYǁ.@?]e!FrTr4kŒf,W9um[9EVS來ȱk̥;^ "pM"#V,aFΟ y_NgeE  B?qK5Jco@"%0X1pE&IWO-~Xy=K-3-~-HüBߦ0z?l^`o`o:oɿ)i})N}[ѱcnIݠe(zz@o#sM#D6i({]˯4V),ٹ~ko~MW |[.R%DvBj [Õ#ބ 7.M%sEZynh&NpB_n9sܠN$]4Dx+5O`>IXӦFnSV9n#$l; ;]9KOHcQ{|K!8?g$:40x2OKUO| 1\6p ›u\ &hybnwv1_.Є5|G)tv$O'7APx. l3+ٜ'.9}r>!JnN93<`qay*|8 Vw},!;KtG.#z"]}sjO+gQve#\^ οL߰!)F-w$pCʷ/jWksdʧA[_vi=xFGY`m?#iSd1i y_|9a_d! xݏ0ullaJM IjDak40z\`x} -_;j:Ak\6uyQw%ul&dIWrDSr;1MGk7@_Tqx)%*٫ӼfHCsmyɐwJf(u9ġ9{Sf89@MQ(Gz4skf=)mcI]v1:Q E4q/ԈIP6`( ,apXa02&d9ɿs> rNCf'CȖRxuSn߃1,{Z̹am9II:LJhMCԳW2HCsI\H>@OMb͟=-~@{y>G5*L'!L_WW+tj/z{9A{o/~"q ݩ;c_zzՄfo0m S`NXӲ'$QE!kȚϻ#mI*mˎE$gЯFj0ȿ:t+"Wgy0Ro|@֩ Y"ϣXK:oEvœ9 ) yOK8jn)kp7i(z~ o6Gntr}zF#,gr~BrH$Vo|ʾwe_GtB'gO&?kh̾* cfa}Mm%ןWۋЪ=RϝOG̲_!?;{T{}w szLG⯠_<[gﱆ:Ӄ^GBVvrLZ[7AӇfTd)Ch༶~O}= sˊOaqz3_bNDvh-hG*׋_2Y|KyOУ ֖%6#R"/C2uLZ~pjTi*L&5i#4vW MAϞ=T4e*2_[X$yŇߢj#o6ӁH?^ E=tV])'ew,#7YH%r,J)GV U |x `&o(I#O=›{(f$E酯"\g0]w(6, XTP)tR:/1n N_WBUWfu?$_[58V>WQF5{VW==En^ /W!όX,rm{Ӹ Ewpe#R{R{@XYz, kz%1w: kԅ+SoC]e&#*9 y}٤O'|U<:lws]᜼GcMZCM{gɝr#U.]XikhG0 S>kaөœb','bwH2T9)$Ok>uʳt1\U3[K+{uzUTQ&5j.q  EY/'(-|b׃AѠmݡc0<̭aC~2;Sߘ@֗7О#1iחG4q/fu=]YP&dvυy̰ ^e`l&ܜ m!Qq=N؅TY;ܠPFn /+w[˺F@?c|k6l~cl;,i #20}}@(>54~8=%zΡwPs|=BZbgqDm M [ = R 6 IT;xJp4yCikIW I*φoATM2c`i>7EM,Э~*5-5ꀩ[?ä|9:B}ׄ:X}Lfwש0&3+__7VWtVƯQ3ojd ;.? F;< 7* >߆MӴ#| ,~2s/ ʠA$%h'"{ٙ\>Ʀ|[]F~6vһP*h xG*|IC)5(r8#mY"i>$}r_&?Ve 8tTFH߇Da\d_> EwM'(ޓV4WE0L4G)lm4'Xkz;Rܓ:s-˝sREiZȱNG~b%U4^JÐH'׈=u`S$ztګË` W3)igB?H6fXงӕEwoi3|A\Yi) A;qxDx/,U+'mtsu'HgA޺Ӯ0u:.Q=7w^ E҃\F~bc $+ `H=qf"YWϿw\5m4>QC\8|{8E}놱צV@coRܢ,:x܀ף$7#o W|?tvɷ^9k:7Tj*2ܜFxU"|JĨ7D0C.Z`q8g)3[)g:޵UPhT=W˅($n>o =֌7`oÎ0.ʛnYT&"sۂ|fZK6D"Em >Mx#۵.)\ i^0(f$4;d9ɛWsH@Yۜ /Z>UbHpt $}X]zo=c4kshҵKӵi20E;[ƶQ'd?RAv}q=x4 WfOd>\$/uB&E! ~%s] Rs"H꼁K>_υD!7w^jUq1r]JyIyYϸe!G1˖/wk{ dzYPS5`D@vܩ֮ ='\8Bs k2RaF06Kf~oiy w+.nԁA(xy^4/6]A۹s$Ϙ>sV%z6P0y[$Ⱦ&n5QB0ff h'#W \+0+CTIC#-ɹA6!Y`[ iI0xOIPjKP nY+"0b2`h? c* ,9w8ŀEۨ0˝2n.f/ CZ4h2|k;ԪR{eɭ]$Yf]u2?uȽ fgV5ܓ*˩Gk癳 9v4>it_wEEDR\m59!Ͽ\'?D8]5lf;$AJ&ys?tRޜщd_x^ް0vOR]m* !侠6σHxr6u]&Ш9#jFT!lnPt}˃j J Z caƧ~@ΉG=봬f&>.S kFa&o0Ꮧg]"ϡ9К bud޲{Z&uyvh^Y)gυTM<|L~f d!iqudq#nGi[.ȳ3$f3R?Ȇ@~Mv?}]anu43VJ} kB⬥jN,?=& 5 !A̟{+B%˻ʶdeE3TeuV) 9a0CnhLfܴyVuY-anp6s*./gU! ɥ3|$$ǚaӋoa3_YW=*!MDOIݯ ;N)JvdV<lq+ ޣw",P?6)L5lC)Guq$M_=A-v4Y5e#+Ev Xgw O}R8v^#ÉeG!]z5|2`:4wY$F,-vM_A7+.n7jZbB q) puk 0uθKFve_K3{wo*ʎ> v\٪ ^bHOTFOX|c?ĤCaCE!ݒkֽÏgE!🥩"LI:4?ju VLV(J5B $u%0#fOWbai$^|Xޜ cJk bA!`E?ds__drdkK){],p֞0![j_ߛ쎄wKE@b |'8̻WfG_hL0 B7e"|'r[N==5\Z tEo(2V We›So"v{[EwB/YIYf) o,$%MsU]4rӶUFZ?zMG"'=,5##esNER|vٌ"KIQj.}y TOI[KQc@(D{mZ]6gH0ir2awoJ~t_nB)yh :4v̊з 66`H?0g`짐Gj! _BwW)TS?!@[S}t/5 ?m?/w[ KToRL +nntnۼ:?\s> 9^4!J66"Khܳ{0z18gԚ= 5FIa_K6GR4)Wq#ԫ`MSvrxE-6~jY@ASSl+w`l)alD->BEPRJ$ ^5]p +u2X==|"t );l~.{'uM%k/R6 =wTk*C3#a2fMUDγw>DˆCG~/BQWM+ƈvDug4j6Ϥ!>%--AP*x=t R5,XEћ_u#Bﳡ@dq56dpx;ªDycۓ`Ÿ /o(yL|0{:d܇\VuTm`0ɇ\0%ay숫,b{G["\=Iڐjrcf)WgH)찀5Ey_/v &YyU95ԡi? "jܠjZ _ЀqQ8aឦ?nK"K"d&^Xkw|f֖2!qUuԾa숦:,t2nAϻM$"W{7:r($&U."oyL룰j&,-!wg",W`tv2N@Rhz%l>C'wWg<=G.xDQ>noמE0^w)ƅ?0R(o? >+MzKBan&X<y'1)^נAIo,aLkE5ZUYSszL>@;wF&ġ㓛mHtrZ&9 [~|O7\ &wkۍ/Gs4ZY^Wyg0KfѸȺ>qq.ӷ_ilUGU~6]^ǶIDs5TY|$ Tj&9v/U8fx\a2#u0<ƋXĸ)u?9e!Jy`ּ(F?k|SKEG:Pĥ"wc.4*|ݬK\lKnc MsR[vUQtb[S L:8RvP`~ӣ Ȥl si;$H8A6̇uWINTEQ䢿<=3^ _g:Q= ls-G~ު.#qT5(|@ǒ`d!L_e&rc2 ٿo$ʈ@OS(<7<ާmZ>'O l~ xж#Vr1Y}mMe[H}:ME|zIзr }@~VoT# uz9<@y}Ay>gOmff4>"j+83K*勿^e$yu|bz wWQ7 _R滀OKEg$~m3Yȇ]Dۉ|=bRhۈlKC&w8iuXNx$N4{8AFׅHIۏ``AǬ):qGf| IWgL ,8}FJ~"[ӂOW UASnV娭gtv5ܴE9r&! 3o8kGV&'##0a^%&k$A)+* {TK85`NrZ,*^;0 u9{[C_vp ˼Qצamb686FÔMYH^6pHEncWlOB b/+dv@??ܠQ*=|0T=c툧[ Wǯ?R`PկadޗlķF΋Oʐ}#vRy+5DC^WQ8Ԭސ .pd&q9 `9&.fQ_(HX :( #$dBڱ?7i -$zv4k;Vt/BDWNuI6o[< f^aX:'v|lu(fir] lwfB־rmz/6JtmN\ (=Q3v%0ZEx}։dj7hdMgЧ!C W^ ~Co䠦iYZX;S7cz^'A ry"tnF2|1,<_D&y@\wF1mR[^GAc6'Yq\_0={_6CǩG"+8ǑeuȲTh>Z9|g7r=y y."+zHq -YhqۏÚW_`> L*ZJFsW:yť6Rch9q@^FFhXN,^et؋{N@O~8nnշkʤnŚ4I%&Ѡ{=*`fec?}AɄ|;R@ޤZ]$Էf'㌺;˳0fa9t&\ Kl B<}Wr3+RimO{.qhu0tcNOc<œcp: .6G"_CKu!mr;v)JUĐ͆̾0$K=#r3wPָ$1$e`=k ̴?&5ݡ\F"݅Sn9|RB%TlQIx~”79aܛ7*l'K10tm=LohV2Bv> iա@EyQt.3s4?]./F8 i wAvTq/l7UX, ¼. Hjs y˄[6i@ sK3ѽBrO}[!}5ëon ?YO< \̄+W*hHɱY4^9=妾[>”qtn(Ը1 i<V4gHQ}9|& 5'6Gw$4Ob*$ѣr9w;K)$;%tI fm+w<1wAZt3*C%| zםQคIR:ꢋ9 ]ܑ4KDFa^ +/۞TFr!$^8m F#<)=}m f|zV5.۠@A( Ճu(]yAO@*^ VUv)OrQnBG چ-Gy{,it~z}C'( x* 6Y {4-T8)m'T)K2ЕʒӅ`apn2m7'2"?cAn {[()y9ߚBֺ ^ȴr1gy ~fy?JiҠ)Ѣeӹъ f]|VňN]Ycn5/Oa&)l]U6ox3`rr:w >;A[< o:3aغխhq ,8o <%*"ew9ҀBS%ǻT ٿrݳ\{Gc`\{=/$q Ɂj3^V~$(Ifh4<6S6RDn=0e1Z +bQ-%VS%dX 9RmODqrwCE[w=H`(lEeb)m+SrapTrt1uޮ+fУaGBvM0zw9vj4oz2M3ƃaC{,t6ހR4mn$ft_OGJ,~OzDUZ?pdz-4,>3-Cn0B+zS` wBߖp:/;g$͉tv?Lнv{\X~:2U,1X/c? 0\tXZ ?Fx~Cq,;}d _${ċG#aYԃ[t$x#+ks_sS.[zLE^%dotg`CV>7'vLPɬat$u p‚A"ʞwjӚq^矰GYnߖL +_,ʆAc`|f^f,Ms@ fJ}CwiSa$jĚfzs", { u1qiCi)\Ao4Tk+XTTsQ.!̜fo4]գmvAWPeJ3(uW;g?uzӉk&3#x3hK6y6L*a%<Ϳ4Yjh]x47v ki$*J"Kܐƹ#V۴.9:,9@~#?s_Ȳpj_HjJRnMQ ݬ` k0G툺o^mڑ}V._>?[7H_uh%$b $AGA%b C[=ޣpf\/Y랎7Z}qMO\!h+g2O^WVge((Ue.Ԇj~ԟX氪n:?s!O)e?atgKg&M8)jjEL ";mPYQlH{-f 9oUgf}lyc}IN ?֠mWo>c|'u0Qi:ĆC䪣-Os·nx}aC SU6sd la)|ni7XܖO#ipC{cӁ@ ˘-i[>OAI]nIo U:9K;L~s vZkAU+ sTysK,;oq) Iyߑk;;*%Wtl8gu.(xa9~ [âAu{iHuF~֍[vh"#ȊA|pb ~vIo%0ЧAӱ'o{}d'$19|VeܤO5)'c@{B98Eh04o^JF gGVˋ\ۗNG+6jeF!rzTl;ڵR 'O/,|9q(F/BkP^@3a_d7I2MUSoN W"``5 j_mg@>[@uyh y۹Nʾl %ur^@ ls< }6+A e g}N DlEN:$qP- *wH, jO;5Ï봁=ki,Ԥ7C詝exg&C~z]ͨ1."`SN? oYi@vͪw{ ȗli*T O;zv 1&_ڈ 9R{\I^5&`!YI0}oQc}"ǥ|LfBEqCp7WjNz -`ltкjxSe.Ey@70?jtqjD4%^:=%`/dgs2ZT-*Ô0X.͚:ޟ h%pƻ Kk :]΃0S;`/MҧMb;C2wH3f2k5o2Lk}Qݱrաhaϟ|$b04=IF"IdwG _ocQpm6ȷ[LOE_#6d N\?d1Y%{C#TzPJ<8y F^6G^QWJ"_uqdQ>, ߹ɰLzee~Xں 8_@&/9^soer~Ń*ϲ` ?b5"H9ixw?42z `O.w:Mc0U̚8W8;z$ X:rҙm4(V.&Vz :{?$kUc Oc\ZI,h-{'GS<_rVgsq ƹbCuR#a1T8,?2`яB~V1-'`K@- Guy^%cHӶ3ҡOMMIz](KUWa)11v$%q&!wy vɟFGgp8pGr x|8(#EvH>b (;惂Z3pL:QoD 2 b)[ymGy~gr ڋw*(wL\ߞƏvd@)Ob`ӎ,T|J,c߆iρսmX!ٔVӗ6j WEmamӭavUJ %,ԇ2ٸ*hȵi[ ;$a D:u~?xb;ٜt@i$?K5^0_tC*ICW|_DV[-ƌc6 ,dy賌L&ұ0e&ۤl ~BUJg*Х NذiDWdnn;za§!07$vڠ 782zEۑ>*"uu7!uu>0Qo F#'^>":ʪ7 ZT/&@qB|`Q9f*au&BY??/vdN' dZ QU,/{#kܦ X݅uariRPyv%7(8HäsŃe7~ʪyCm0Ò/ٺOUF˻`}΅ǯ`F{i]cqҎ'A|O.ZG}%F>(tksX]kN#fS/Ԑ;b|keζ"K)G9z>BpɃ8"ەc3ߑM=s ȄL=0Ke=6PޡKH )J<3g@Nu5?Un2w\}LЗMA JШQo> -cOa(G{>mI͐_Tm T-0p׆ljuc فvfktW^;Epf&_NОCBiVu9>Ь9sx l{v[Ɠ8rL;]܇0( D=wBBF>3/ uRM0p x{d+מ8}?4=_zQV#,$e ѻy)ʷ kWLiLoW`$.`ȓ ;z~׎sAabr/*t/Zŷip SY@e~#:@Y#>;wNZJܗ9 &%TCIQ6+QI/zWC)^G)Tm(-:)B=}~gm= zxY.y;C"ӿ8Th֥t+n6Bix<YRLX`k!b tCLP6,^ʾG]on̓NPf*ͫ9KH:i$2ZZ=U~}5+KĕFVv $)_pBva!ȹ`Իq^둌@7)ni[DRFޠSu+uaf% (wS z~7gebT"dfs*r+u]4@KW/>CP&5`,=)0>%xUjC GBi+0}Pֽ 0X\3}O&]ħQC7q,@fW[J'=d?4FAGj4-kϝGҐtwOfgE!;{gCX(_?@+~~9^M)>iV”wfXf{Py'"I^kUfTz6!aNPu7h{kaYfrE0F;4?vC^E|SSUW=2U!,|LHD^Sp:]bʫ`dݳQΗ!cٽ`$g\<) ?\됻30U6B2NR]3GHV͟)&l%B<,9MI*Fy 9IU0^rI|sM2 ,E.e$DQU0sҹS !K?0g_qCޗY٠-F3I{?GܭO[d+kMo DuʤNb.*B?eކ=}G]y%7l՛ӑvj˶*Xh$<=% =A YhOKȬ ?:~Ez@9e~ڜIpϭK0sBP mY\{Iܐ@өweH=w_ކYX݃V}>&Uݪ$`#<&> gD`)N-" YzoJ* 6_gySwҠ8Kz2tql?{Fmǽע, {kEnC?zO\F+E1͍<]<7\@yٍ_=<-w}zBٷ֣0~` cw~v%།dw,q֏"82"]o;{ɾ^>>7~kMB^-q3{cJw&kѱW`ѿڃ4dy\I5>BOkfغE,xA[.KFq Ȯ'2sK~R!p> !fHG/_У$BF:/6^ r?!d} IU]۪fvq!#L}#:fyh2loa= ڹv{#[4OIX>^J[) #D-L~!/ƯNCnmn(y}%l9t>Pz QVݠg" r>vA/N*IxcR#!˄aDVXʋmtqCK=pwۆ$fIFx =d3jL,`xxĨ!L?(/W,ݱzbE2+o?喎$);`ΨzVd3%]BᘆAU@0 ..,SӰsP> G~$!retG4lB*OZ֝khjT sVG!wo;n￁ȡunx/r.YGL Hl.TG2~ԥ oPݭ| b@/8L$8L~L@>JT6Ff+^yQB@7\f:f~'`f/ƄwgwZyi_e;n߰uY_ֶnsLpT G4f9p( Q)iIV3h~+`Hcݡ#EfN02ݙ5S̊Q'7!忻f|"I'7Gs=kf[K΢o|',(%"z2r9v@d4T^dOTr٥Lz3?;6X9wؕ؇#N@ɺ?\i>fɩSk"l؄~C'HHKo<OkwN&Ba&>g!̧?/_q,*y};4$ tgi /Y"#,v: I;mfq͇RaaYفtsqv[֐@pV`G+w }x?2Չ,mH +Ak#0=\?h+<Շ@dwq2(H?;ʎ&vBjsnbfw( dveo.}0}Mu̚?/ )}\~Н@qMdx+݋jOYҜJ]KG~ѕȷ ?~ 9@ʻN o$O<7LdyWaI>?:LUg# zƃ=ά/|\|c%4LM0J0 ۶Cju"n?|Jo4$kBGt- L ?e8TYF&7zidu]bUUhȤ7z/i- ʕ&bE> -&AW6N7[oMYAad XyUed(գ^G֏ȡPck}"F7mtLx1"S\/[@vR@.oN̩ ֧?:Zr8h7lv5]@=T~ 4C]o>Z"#eșyVf9>p޼.rx=y92W3B[c-z{u ~d=dv7?/\CZ_#cv}wW=qh. ,Z ,&Plq漿YԚTީӅ0qw+*TIaLl.EfIPk>z-oҁ)I&g 3sy1)W~h+W}?0yAl,T`i?Ο5]3:`ڜ3'V=c%|F.~b|]vR@o<|x8(bvD!;PZHhްo{5LEuwEQWLSћLpgФ?ZWR44m6w.w,m!%An~,zaQIb&D7$ì뛰<,mhI^YB69V>74ì\o&at4:$MgZV+; J_4,<}0Ͳ!&k^Paɫ4KD]鵻'.#Y[2˕_79V"3ǑAbPfÐpEfHҮy MPq3vWPxJMZJ s񮏌B"$(+ͦgճJ 5Э0ѯKY Ο%"u;$X'a*'WD)ܓ  y{HfnFiaW"U5r0ǷYT[ _h٭Cxǖ#J('{MEd RZqk369+rj~x!=׆eȢJVWUG~~ɽmc|>Zh w| ]gjTz}n47s,3]I`⺦VvAgk*`8x3j.t/8{C;m) $5\sAr傉9g$sصj \X´70Z_| ~'BMS(OjOgП2Lwa{,'dʑfQoQk YmuBÑҧl ,\ϜB≠ xk"8Y:0I%n-3[~B659X4{YRy+x y/u|3r[QtPmؗJRJ}B,EDTPTC'HvBv7=_`9Ϲ>sfdHGVnD#Z燂FѭJD^QM$[\ENT@FjdJ:MEr6Aτ`dv #5ȸp>zC`cC}NX>(-X="=$޸(C CmѺ :e\brG]4=>O~lQ'^l|Dc*0^rl|V`v7 e%A6wg}%q_zS\8lyW`ԛ!VUX{J aKwc\ utC,߯/[ͺ+Vk.!I{~ߜ>9s @I5c(bOB~RŵȿlM+EžԀk1>Tfz/nST ˃$/i!X`|6Gwf84s"E9 ϥLِWk_vW9c {S%:HφȺΰiYj{ z/zØ{Pb扜o‹& zR+:ǏwE Z70YErH!w[T&b: VȸWY4wE WmDeYԒV$g9Hj/y]%zb 3/I$E*6 d'dQN/CvÜ7{݄iVRj ҅@p,[n޻_;COq𯎀sY$Qw{oӖ Aڰess%3p?} N!"^zq|3z {kjr5=DܸBE_fyOMWSx ɛ_v0Lf"n|Mȩr8r5OBԠZC[z2)|Nw?)$]]+w@ھ`0wiĥ$, e]!?ļgs+=q JN[pw4v&"F/<(񣝗@˿dq踲7y5|=ZDikbh?Y02*PsO[.Y!{4t}5 #C[cO]yHˎ,_w"0dpq?sy󑥺];"2yi(GY.#{4B#M?>}Cvml4+ۚ 1܎UzLq EYB5A fK-@Qkf@KԶhiF0{}KCpLV҇!3o-{ 5O,YYL_+{(qTaC]^G~w~4$eZ}}/mٍf~"C[y"v/>߮Q$ÊmПǦgaGX?cw~=ϏodB9ġy3a ټ0uj6sS;85z|zƎV?G!ҥ]a%e18!( #.λ[s{ƿ_*ِ7p#Ǝgn%CH&nG+)PS+aFs]cDFf17~:S,Ƕ>^\7Fn ߮7ϝ^"k|(a? 910pͦ=)xaB>@J!˛Țotq2o9e &F\MAqj&ozT1&޽ʰ:j^)][? [,|l$ŏ>%;BYq*^M 7N!t,ީ{5d<caXIﵪ-?@OY~iќXcLK'uBs}{ƝϨ'Kx&95 $#fFHA Vf#Xi ]B1mtϡ! KbqBR. BFQ{kYI3>`q?qScsd(?gձYڦg9"s% ِr:u sRƑذMUCNt"M]yу&Qʰ.#VX)b^\ŻR8)BC/lbL^J'OH*g&fխ6S_"n[B{;{Hܦz9-^ Fr.RauOD/gTFRюlodtоFY{ ;#{Ky%6dE ϙ[; 0|K 7m5E{5Z&aW$M Nx?liUy&dyJ+f7!{j%kt{9*i?7r6KR\~9 ?ÂOj#9wk;Bgl;D>8yHlS|obnE=~{}ɸ/0gaqO;ʍG6R֮Luaqʮ{CYc44mc?Acs0y5ޙpU[OxAHyT~jJa#IvoQ(NXew|R *CQeKxJ_z m/w`~bJ ʨ(%T#>xȨk`,6S@OŁML$~?ugl ,0:Ba!!"*c(p;yMdO2s[Sx|orxA'_Ig~eîΩ+ُ3귶y31F}Ƅ*CN%Z8fc#^PpǴW#6. MrxƼ{tbVVR˵%dfn/v!VKn(hqZa=z(0{%=R f8&yȒ1g:e;od42@թקUB(xwm o/R(cAχ=[4WI *r]hhAֈeN~$_^+ 0Nzf sEoK<*s6-缒?2| ~yCGMfp= [[pwjgXǵ~VS0 )MxI;2.tF$XlTө{k@[{f]hxwDz iuB2 eT(iW^&3.V'¤!C1fd ݷd,tXZXp 93LKDpŏȫl_|; }nOD{25VfQO)93s6 j^Q@ifw)(5QϘ̏"Aփ~h31J~bNXQbFv\[`,DZ|{cU -01_n[`D-(h>{ GQҚQI)]ZD҇޸:X]$xཉXdͷErC©ӄ1Md0%Dnf{CU9w,^_-P(ܕgFrS`>OΩ  f"`;ϩ{a1е],0~wհaErt8z]C ؛B,a<"NWҦ6z͝.tn|=VT\\[et~:B>)ٽtkn`5J+S_?/[}̓[1>&AR<95 (FfYSTdB'&b}" KKMo`>Jr/7&1I/jZjcY]asV>!eUGz]S0慺x:c&8"C\Uʒ>ɮ ;/4䳦V- aKowyAX܉d^g;oliDEQ0d܌\JlTd$?; y#76Dȑ26IX%?l\|3Y|uC^XƎ,\r)wʑ^&Ǻ4,x! TK֭;hw5Z{:Z{`c_q$aw=,zt fOlqhXوHD!ADp_TK.4v{wgP N:4wH44٘~ 1OkQj7 WR~LEdZw\uDFG,qoGl,9עi2o__#4]ki=ar~Hmj2!{62~j:^ 8(r.5gam%@6J{: ­7HZ߷fXxRTz{Pa'K"I= ~tk&a4tr,, tWo9诒b&La `Ip5X&"73wEm_ 칦ݰA If琄7`If2]6spA6#<^ٓ]lWǓb+bfj$+oEi~0Z8Iu⫢;9O7]x# 2\Zy?AX|agL=$u;CYk>Zvu>=UdhhSJGu1$[ hKQPVm 0v *".} }d#.mx`qE4&C&XdL N2Kj ‰RTϒ_DB9h_uzYu~nW;]Wm e TC6ђtObəKDr Gȳ9rlڔBdq"d89SÖgj D^\/Oۭ0ܭUkGONS޿;O2ĂI&.P7)IgѰ-/3f'`롄"iJR P!\c 枈rQ`4YG2+>hB§_R`hK-Us[rOg_Qhv3S" z >m:d3Zuj52-Fš9=]o=N@IN+dg1@W>+R04aћ#V&Q-ywܚFeX))6Ly.AF±Ț$ueolk9Hn1xD f>L{Tdh/h` yشm0A "||yZv _[ a#Wg01oBN}׹ebћA7.0+kcan2/BfHW .\΃q_CTx"ft9AYx013aE`b\L<<̜2Շ ę;B+TPdB0 tHԎuk0Mo31 }I] P E.qGj@1ke)0oeVfchSn%sMa#4jI[t^>܅_r?3".ʷ3b}ҿ);J`ezW4,2 [JL?{Dny% }KAɥNa!z.[.IM:/]z6`G~63`a K,gn]l"%8Aͷ%~Ѝ.¯esN5ۆt\ʹnls+,u8 kޟڿm}Q|ga]`twuQ!v~{ԢO<)+nҲ^dq}X 9l !֓nu!lS(DWj*B.|1%|uRk~|x>ts!]UA$dny$i? g&q=m5, [=nK \3(a)#o0Ebwب`._@)4-Ȥk Hgg{n{~;Ԯ2]o\F ݌2|_hJ uzݺ~Prw .\|tֱf.娳²xyWL#Vr dZнz%r^G Kz|OȄ ?v*DWv#(tQl, W>kyP"s SxBV>eQP~ڱ1Oߚ/L\tGق29C2svD*۷}ל1L6FUn-#\k0ptCWL5%D;ci /oUWͭ"HK=t!7kԔZa8X`'[2\-`}o,NSeW{Pwkh(6chJىhht6 JvQ}ܰ{`C+ҽxq? KgE`Fe)<5}%tWzAF]Wyz `z@;bÝ)g[ȠXȪ cn]7Y" !ˆ #|*Ѫ`>mqFː_@@Ȋw1/}29 la>6 2{@V]mw seH1Qn _1ʭ"YZ6$GUCg!/Ou:q1o$_HtCN,֒˒=Hzˡo_`50Sf)ilfk8u~kT?r x#Nݢi ?O+9*=8U' Hd`w6*rBRoJAMZ-B6y}JK-5P%'d)*p,[.0Khfp8Ai\3WkX()Iqm"C5_d?^]_Fi CH:^GgXZ#[ &<jW3[sl>ivr3d1 |9z@?zAqw 3+LCZPTL&jNo_Ч`s-ne̹^Z; go \SKL?^I{^ ݊E0O0j^" `% #Y?6t +c0*"C?/2$B @) MXb-5i Af[Y/?DS}~=[;:yn7ᡉQbPI m53Ԃ́׫Srk߼z}dEyhA?#7!gX2N[_ "sGofx-"/xˆ<0݌Ӗ1(QhNUk%/{yD ?<4 dvL"D.'@z)LQ,8Q9z鉕x@@,w + ~ ~HE_N##?[ d>lg73>p ߌF^) _3ͥOMԫAkP>>)$3WCdњ(rZ_ajKdGP_ۆY kͱ">pdk~p($2 \W? I'n_Y\ 7z6T&r60d+el^& #<چv X|7ߟY؄NWgYcJr\٣aH>,$=ĉPmxX}`x\W.`TbNdrg'/\C6f2LDP"CsMKSk}tIAaL)2Mfz4|6tfڹ359Py; _EC_́ 8C&:Yl7Dx)&TV(ma muQo `~Y< h &OoT#| d2ʷmhD͐˂aӽjd -n ՞[| n*oUܽEM0Pot9zw/bSf+q| .+<51;19غ@Cg<2եRUo崞r:lQCff'#r?8l=u*!6-r`]6T_} 9ojw-T]j+MB6$h9nj #?$5mV}88V:۽NK!ѾOK`tæT'^N7*]}$7biLU//%&g}%Fڷu1zguX->z!2;qUJ%A^Cրhc d)$mRyuKK$9ׅ[&"☽/YͰ^(FZ$}YD-巽=n[BrGR{?3DC k{O0&%ȝ3,q㊓SH?US":~`Uxph6`{i}T~I^/SjaEO0bf??He{_V\}d M6O" XPxê\z&ghIчpZǽwJ xS.%BV( X2Q|m-vE.3NFC޵6 &xљ}Yr-V+i{XJ#e]=+d:DjZsiq7N1T8hAY0xoh&&Ro>2kHhCK/o{AwBIP}eT*ztwuz,E;_7͑k0͜-ON4z7wGIo9gxG0y ֫# 'oyvƷ;@xҹWV:snޟ2w$I1}x?Y̜aX^78g#D4AEn$fA(`omЅeKL(|B& ^,z"?/_E3-2UQכ=T(Y@ޖ,qM٥Da!dr,o9I}?Ȓb0|RE~ L2+C/[j"hr]Xoо ߷i 'f0Ep{] uQRJɹ0,O?˄ }bEd ]Fم_6#{#=%p_*OD d_!,;hКP[g?C|ۼI5`;BOj{jo+,E0 LD&k{&x?òΤsB0kRЪVدb9>_nƾZ{soݭt2*hRԫE  `pșje_x#61zL:v\:DFF~>`3˙=M#.4_摩R CPᷳJ2,D(:">cy|" ũ aE G"Ԑ %ˊ59 RjgzLOx/rRJAvMFf2[{{P#}NDX2tل\z?C պĮ74F!Qya|fj"B.ewÑ\}64>|E՞0ggl(AJU0 ߜנVǻ"`m:w2NsQVXPnvU's9n&]d>UKh\g+R ڊD]Xf?WkAK0-9/זw rv8|LQ585~FΰS$k/2(|,jJv! Z OjIQ P97۱;NysʓU%)Y= +9vHV{ľnd<ĿbkŹe3s g^OveK#oYz0~?S| gZ"_tT`^ s48 ɽǟ!zbyO CL?z"cX(Pd´ %)P}̳;aNXxsXQvyǰXc`r5;n@~SuFJwV9"/3tl`j>"0ZJ.g]!APC^i^-01Zaw fIݏ:0[32:ˤFC*H+Fl.]aˋL9f?Acvx$͇_fZN;s9sY!·Kc[ho`LY.}2 ʨC;Hogvdr$(^mI%0r|4,\햖q9=a怺`)ʨ; f4-Yxu+A䰡pٳG䢡?{0Rl;f8Vg߽`i2|5𐺺 I!}H22~$*Vx<^wZ}r|Uo71iI*O(O*f>A")c'dX_KDv;&q[̵'zt>@>x?ļe mZA_eVKPDN)?{r71mAѨKuq (3PȾēڅc҄!wލ[~~z{/~#Tc =dHewn%0%F 1J} Ժǔu! lZK v kh={k ê U~um9ֈc׿‚|}.K?)t_"X#x^u:9?|9v?qڑrIc3,z. Tv[MMmj %Aܰo}z+聶 U$ٹ=+Oa&l6f` ͫ]yOO!AφUڷq"֣:2IŒ)bX9Ꮊp-oqo ?Qւlrݕq$Ê%lŗ"B+:L3? `Ԫ"5)rJ¯8_@x;w6c0?)-F*ݣB`pʋTS\sv߸ qVJ}׫dG{g2ǭ=EyuM*ް Hi0r]WWBE`u2^=G[e/b,5 i>(|K[>r;m=SL(}oe OuFvq.rwhm-@yioS|}?WSr Q=;ˎ!a"h{ԉ ̖k'r^Y0]Aυ$ ctA(ʄ!@Zɂq aFg1w"s[H/7%VHtey59[ܬ uKꛢHP>1`3Zj/mLʦi59XZ>Gxԯ!0Y:#=> JzI^=$9CQikLΑRзVt0̲]Cu+uH5 }MD)v2.~rF,鰐TP9F n WxBŞg<|/ 3Tq:u]rVȑxuܦOVZ+[㣤'%Zm !d%#@9dvz(vB%I'wPa)4Un9fN7G !o0nP!V&Hw&-םH0=ZԾ)F#)_/+#2j\ђtAsڰ"FG }XàSkd{EGFC+ɦq9oځ svE6jǡ߯8oVs`T y07_l &r+7]6$Eo(<~Â^8\ed ];t#޾GnJ=yan7kd\Dg'W`uѿdgහ+ڴpP7 ( ?u气thr|#b9Cn65\\v#zkEdVGƷt&/jmr6 7wA#yk 4;dÔ/mȕvl >ב1s$;IoX4?]R_2a+9Quљ h-Ϭ'{8pœ;ã[`7Ilχ~6 >|5 y@Oc6 =t],tc3rM#=tJPN!A>F%<02)k ЂEB*3ʿOX.]|4(1@ڪDsĵٽҰLjϾt%/!ԐQ72 N ͦ"C_]Hw|:(7U\ӳ@=$h /MIB'7}wPl~E4ڏK+zA&N oIYAYV72!#g`.ΥfX `4'e8~>G6lod|~ ;n.ΙnORHC2= 嗱b?g'h) SuE?`_f΄K?DgN)!aڍ,qH?[># kFo=ySϷl"0zpeyh#*YY`V7 6V6ƣrX߽N >?} f>p|a"MοHٜ|!Sj컈iSaЏȢ-,'uJx9̘GƯ @/SK*~%a$ACd\+=fpUnn9q+ Kv!ﶟo[_E2ۇ3--~^d ]N\x@˩)CLvh[܅ŨS1dKe fuOa&&u ܜIuf=#1lg!/{h:VCCk+7٘T>EWü.56h=zF0\yj֗ -մ')p}7 Б>'Zak3+w `C i竷d2d0@=+U$7~X Xt!0x N(R@3y3~<=2AX)C(77L[t`Ƴ0`w0'[c6xGG}R*51G zKG$ʚ#,TE@{sgDd?viL+n>Z3+aOfy=O4bCU !dFAjY"wYO)1oG&Q'߃ ϓqafAί4 ץh:ܵiaw 9r؝J"#ݎH*&ղI !pÔ"=2-G2WX>Xv L?<^0 H_ȏ`fmh랳w&7۷i c3a(lC~nKG/IA+1p~.ed}&z),;r>PL،dy@aݥS;P@ٟGx:/&P6EgPlkV.7}oV hwZ'x}A1 >a $W imj3r' mW7^cqZ< O0Ջ['aN*GW*x6B?16B-y `t1_Gsap$ $Jݵ$k/~k $s2C8` [2܁zn9,-J>=YsIId֠qE ljtLqmwɇU{J`mA}4S^k$oAcL 9h sJ&|[aoiXJhfxU S OgO>=YPqSK O3=S ڮ>?+J?oc CO^\qT|u\(n z/JJgC޴e<_<]N"idrVH13AҧDWX~A;;zE[ B=O'hL,.m~XszP.dՁX2+QQr>5P"@OI7Iv|V[Z#kElfDvGk=f v7yOҬ 6t6)&s*FpEyTx/6M3w-eTz$DYG{ ӯm7䑾hsM ֊;|5 ݄djF=I;(\uHN-;|tab+ XZ_=\^Kf>tUV]bqg.e :Nxͩ2q 9q̲Bְ0a䔢^y"ϜEν'*7d }C_=.Xi s*VWa4 )(?me 'vaܢX,ѫ%4"iAE%hd.^%#)F1W>BBR??I*Sۇ3lqQHN_SyT(Wdf8sdOķԻ/Hp/%0^ K cuaBϰj^Ǯ'z 喊3FP9& l GƸ9,&>[9|jIkMKI)xk:һӥX[M$ I7k<'"o 2"LJ{%[(VsXM]+c ^u靍:t5H߹KCwkP/t&|kejv7_- zӖP5)7 CLzӅn3j=y s['G,_t246yXKA1e?Ϝ자v8+ ݓBEWY+`*,>㼤Ex?ܯ.C*yHǼ9ٰk/GE4-vAfW[)"]B XέTsˡS0'nʂb={z guLy-+S*m/|1MO3R4{^]xc[yŽbB~WL2厂fY3(`eEq^vH.VHvA. &Id 5@ݿfF˫z$<,̹u&M3׍m`i紈>Nweoo8SvW$9=iBp~?A»<̮>zڏL( '^6Fށ0Sع#g`T}:'0u/]ug 38CR+`jJѷljK2 {Y¾L!G񠬇S^ x?i?f˪("#S]Ee̟&g?q-sE2(jX9 qF7Wrs3\}d:Lu+#'u7\~ajȞ:0pi N%"#Ps[%έ¢be)N7$U󇶞GTzPK-->8`AAb_>M-X _ۮ۫9tH.Îm]1oF1F dP?xֶ*oό;7κ|9}xBFF0u] k}*aٶ} VK7V7 u6 <) 9&O ^#AsZ}PHz%h-ewL+_a=F2PDV/6QPIݳD>Ὅ__#ӏڛ򺈤${XfVy&|*)^FӬ}4 3V(X24ɶ@@&&3⛢.\i\}f8uyʿw[s ?O|4at~Qa5BS02Othdsۈ9,;l SW`ajKdNaEY9q+;[og ?,?7݆0m{SL.W==Ϣ7|.?qڅF`y<70%cd5gLg^lf\5R \e83<J½'AU{zE4դ{ 06"WMꉏ?޿ʐ宑d:>l׎{_]cfX"mY\099YkJҏ"} *R,(=cH0$h=TzQVdy73aX1l]kuab`<;V*,42^̱R=:]yyLsrǕRyV7< KS񶝰(9HxC-2;>X#K_jۄ}Ȝu=m/tu^XmQgIEYgwK뿃6q̫pse/i 73>(M Q"{ZpK(F!酲TmG$W=;π\%cXo _vȤtfaW<yV,!ځN$T'9NHڕ* Ia9W Æ'̯0}SvNރWbu} 0:s?5CٳNBi߱2972\gl-G!Adxs@qysUwaPWȺ0勽 '^0 C%o9fUg5{njusE>Rz<(n,Ά/#]<5Z;2>.TCi(G 4h} 90q^& kzhSpv5v_Ҋ\V݂/"ϋieY~Kd$Ďt,Hwx&74n:l$_upyPs0Q~kP<E#Es {~P 'N|q'z |f OQ͠!íz-,dy2ʈ2O{n!뛂 8q/O[ԉɂ)ZØ fK]JbM+`q>`4Ώ Eo.a}f}ӌBлڰ+ g+*0_DdP4N/sIȽꭔ2j@ hۓ;t@Wmebm1,t*7S=+鴑Y} 7 dϋTO Ӳu xf|ǟo#ϽN"ꥯ֦qU+_qo3S G$r]^uC>f[:fasMU0iOX3%5@k򱂲V-Js0ϸ_df$Wm_s}$N)W<nog9, S6L}T4}ǩދljL`* 1H7gc!r/&]Jbr߅LavpӍDX;*3B^MAcd)=q?u e:˕=ð ?[u_isKP_5W[{Ax^N hYlp)GiY:y$ Zܦz-+EQ*xi =6o}'JߗNR!YdX 7N]n o60!x(&lmW^2‚Wiw8,ۘMrj4S҉c*1>ETt682ωɳq#U_" ?5{/;VQIa-TVQ_>n4_R5*E3[z/ g^o|E~i-lQK/r9rNEbocZ+ԥN /s! ^z*Y&~Eܢ8Ohsje 0PS$>f#B{J&5=8#4f)H J?9ZZHe/"<mүiW.`~EivKzas0c&4R= ~c&b.0ZZOZ? kjwL /z0zQ^;(K`Vr6C^ḱl Zy:u<ڎwل5[BP|-+7Bo}سP(ѷ,E7{&6Hvs;+-ٝ}=a^W Inގ]m*ބ7ix'*D̳[߷ls>t)6}gXaHyl++0&L'w:6yTg͂0{纾]1w*u ($8dw ]eYc̷݌ sCMzYɯa[Jg{U{E#ifR5';cB~a, 'q N~ |YUJ q/ 3f"cRŸ_m%ɜx5omSJ$9gm +th:!Ro~ F O@fmnHY1|rwO?wMY_[*gv H _8FFCC* k"WGݓ%'XXqogr]!Tx|I tIǤT 㾫bJHzҦ D|'|aF> Y\oqF2c<#MaY !'&2e>MUBt[#L`B-EiAjStoZ|wtvéy=XX賋JI3b>juəCٻ0;/kWtILm)0c9eXdRɖG͞pe. Y̯k;!팴x+r;92El~?Cՙ K<̑2dS}/|Ȅ&a2qɫt?m]`ۻ0.T|#I'EɛrctQI|gY'vApqS8ߖ,l)1ٗ6?;>?N99^j_CA#ߒ̼\D6"G F5ѝ--tWL$n 6$Ĺ%:WVm0t|0T& Z>}N=UA[=P.Pc&t0,>&Q:< Q^HAd.<"#MRa:U'PXx? pJӋ-0PQ:hdO j5&w&TȋlL\#] cG+lPƚԣ`#T-L^"~]fcdx~_nxEy56m90٥NYҤ3҆AWqǩm%"NsQ26{Su}`z.( J'^]NvbAZu0Y8ʼY a>+__BC2loϽ U!+qJ}M90,Kh{=v'w%CzYz#dU;$̌O"bMlc3|[̎rҮq%0֌8~zhZ(ûK2iշg_/ eAXzydy+9S8#g,EoQ 4>R?ƌ_=Pq s*fdj9<.{0>E]Zvz(-Ќ$϶M3?-_?؄Cq EH.B ,i]ZzL&E†ϔP_dP@G?;zJٰ+%fbne9z70,zE6{q"PcoA^"d0[f״%XpԶ"S?w_dPSx=8lA-olqn}*ڣE69߸ilgwVEO· Iھ_ÞȧsrJ6P@NSoȺCC2N0y7T`ѓsGc4L>QbhNr^h4d!I0k𥙼6>3;6\ ~0x?̽<^K^Ap dw0@f,kRxa$2?AD2gUՕ X\2@3yO8XsJ`Dz;_A8.j82|ZQu&[}{?0s9? 9qX~+ԯG.@]|_/ByM06kPY4=.`օ-^0*WAvLV!)1f82]CMmf1 9GM!s`bHWfk K'Md?z ˟hp`Jja0*ץg {o-Uq%oR`npYK9^0 /(XŎ#9#Y|?x ~l ?v{Ǯ@sQ8F3V蝢J iF]Aip鐇GubTat~,!9ǻkY3tOK!yV_HB"'Wߑ> fOy{8r'"jXea$A_"̕F]n\CD8ғ!+TAXw˾9BOxԼ,avU +0Oys <^G6#떀饱W9f4+^SB^h䊊ed|l}؝lMnLHeL3 ~ T7>/&3Uc ݭ<($hȓ| E9? +gUmR2B~W? \HZhCrB L.jl6}@}sf;B=LJUT(֓𐟹ѣ(J*$ZB`񜐧Z&P{|be疔: ԙCqEgNS5&58t+BEY~h#CH<'soiзokL'M h|6D:4@E6h{\  5KAmw\,?ς;'he%;(0;W2k!+=ls+D. >Vܞ =U8rБb{BzknU_~iz=z# -a߼>@8 mI{4+d;Qm:a&חL*vW{S,|Nx[ö#珡PnKdHy"ci1Hj*+OY`1_ǾaV*)g.E!yz;IX'3`ƾ}R$!$k(iSi!!$)IRT$$$)dKk}}ޏ=?羯k^EXy|Ϻ f<4?;=\g6I;d['}6%YeN:l0m:}CG o: Skm maP<26^;kTߕf:M~Ȥm9).ȱ3%QFjHH쯸 P3-)]˼r)JKG-DYQLr5WWEߓݍ|#c5oB)%)rE>ߤl&}iPX߶|fak/hw ĝڽǢ֐yXT80 뚨` ju)Nyt131yr{6ѻ_G9gّ$"-YeN![dc$#^TlakTH7LPᚑͯPC>oM > %OSڰPP_e;0FyƺR)-Jj HoKh F|{W%`h#\7q"U?-BGU'qߤ+~Ua]) ;^6QhΔcYfFTrJ%,=}9G%co[v+R,R_FެD^9}EB 2MYȿ_0yr_^s-fB&-;~k.iP`x9y=HTTI?gtLЇ3&¢s2(]%w/a:>#q{u|\ ~I 5GV:+ܲzM` <%}_aTvC' d!xU(UlarX8u7|a ;'@{[E.܅PiTm`+ћ& Im%/4 1W4q:-2YVud_}76>=BJ{R]p¸j(z/ m9CחW9jU!?+&rn8&H[N#t9wC35 _~>bLEIPp2: /+c [ˠ{~aF㧾_1wAŽȼS`>T,M"{JssTC=5qKa/|F#m:'aY!Tk-L 8;ݯOko^$xF8f}`y96XOW"Uid81f-r͔'z(d+r/k2_g7lWShG+M(t38Zo6R݋%-"=ɲrH2Ed{MS]Xbc.q\c= 2]+0F)9+tz4`掀YC]1x#Sw5Xni.$)wƢ0{[}#2Vm f$8akД*Wr Xn#t6z(IV¸`y7ȒGRxO{*8 #c/}Dz=3)[@DZjQ(nWQdY ʝӴ+nP0-im?˞6F3GIv9+[i범'#s`djQחA 2X6zV|k,` Vx+HD ?Wo”l9rl,RBf]yk2cAǠǏ蟄nˀ]X3"ghRFR,"+B)|陯cwIf+a@U\ -do'x 4 "WLh4)c6?[MgsvXX" 7/6}gS'J>#~ƕS!5c}:J8XRL/9+ U"cΆonF>=9VH=\կ"dwh.mX '·A{}^.aIޮ'_..InJ];q].Yk~xA࠭ļ=,X$dq!]H~kcB4yv֊ȓُ;`ZCxU 6dqf!um [b=aLb*/,`EV@Lڗ*!OĻsi{(>G?f^rlNas4Zbylj S +PPwtUf <&۠?džK:t˴ "#Q\%y,ӍAgaE2|25s'8w;9:+̐gwtiR-gǣB*]~9`@Na,DJw#d@kRmNIR%mO28Rgnu=?w /? Y3$$ucG#F|(C~?u&7`GJ)N~ cx>_w#Ye!ߎ:zyB,rITzI-VPE5'Ym+;,m= ҥf01u\ Ysrnwf ggUB=wIP)t@lthܙS$񛈱;裱MAuCV Uō^׮GϋAP@/rK &F&SԀo<-^r߫.%1q8 &熙*g5mSH; ;"E5>ITϏ|W?l3_rFתNБ%J\L7'LYyM_=EFO![OzʕB3Dnr6d egNd5k/<\Ct磯"u=PF6]D6EƻrPTY߼dlj@`o("h9ڱ -+.Gncf醬dVdvhOf+/W(gT%ߏa5$!)M6S#oX^WQaS LP|fZac+ 8н7#6zaYr㘡,Nfӧ(u솱3%?=v[DfAl008Ulkav97ء,?BOl5nD/7?ydkGH1dX9mΉGgnItt;,NZ/K%oUQ(EKu3kUo)2+_IϜ%a2l0ِ|_T6)Wo s~ j[h0 ufmz\la9:id/I& `( Lm1^iՀ̻NYiCg4h~C g?f4l7R/ ߡ.7ߍ<:|DNZVER{z #H/ u;>8AAU{.JJBWo`k'$,%7hK`K!4rKtsܨ\YvV 3Kla,DggCj!,bxx?{sra'y$3yh"t?'N]ֶ~wNp{/Wb%EQ ׊ 3Wj, xwܸ€g~~3{~*}|d s }|D‡fâ?0>tD_D6r!knƍƿ0zOr=Z!#@" U0"wDO 5堅4)a5/ɺ utS?)\l:z] Y9yHө&ɝ4=deq=N k4g.Eªii0Wnx#Lg(Ӄ>kvd#Őz9"> ںXZPdd?v 5=6 j'A]鞭d\ maJo!̨ ֶ=x@>M.VBл')P2ם} bcr }N&r /GJh0^k0UԀ-`A\ZXU[xV*2/g&0折U>uvoцz r\~;iRK2t܆/or"̥{VNPR-EGXK9i>ut5h:>{&#d .7A&* zX8ףe05!E "1ّ߱mLb"P3$~b#*2]Ө*9Ofd4T rIT!Q; JNi&wijVwa% 6 gJKȏ-K9W(L["kl?iA6\HT# +:'S^ŠƟfҏTr0G9DAaXe:]aK?>8ï[oE/z>|z9rj)6Za %Xyn,F>j߲ :e }{Whв%]n_\<f>ڱ7 V^g h1vdۻTrM=(E>wc?CTT>?pEߤ(5)( ))CѝE&(,SqN]L[,>}Vi5)~ ~RE'g5<`Hta LCKP nOK#խ`8цWa&heV*z!C]-ӀϪ^ y8ᇜ^rj.v9;k﮴)3w$ҺuK|+2 =MC/}% $3:"5I0WdF٦ՋQgl_FcJ_Aݎhm=0Y*ڵk,o],^R!sw._vWf@{d#~y:Z\H BD x7LL \}Cҿ|PA8g&\ZfR>ʕ"5#}_&>JFfz[,sLD}>N>O8CL)DO}O1~KE<敆Qe%3=TdX 뺿Dc EH&R5I^_MP0uUV?ɿ'x@ 6Gկ𛏕 g0iplwwW<,>Ӳ@o<Tdy(}K孑KBr;\P2Ӎqx/!?Y{G :NѠ^K/Dc}jςRa} '$+I27s#YFAJ ;9b}M4ȿa}M0B |vQpoVn5\O&):{^d~mY,+ C|}t "Ph0ކ4h.̸.-Fgi\I7K Z/"C-UY =ݞ{6޷((GeqBUH-D@ԗ5ȩTLyfɁlO?>k&:3td%iDmdZGdaV8s"=uz趦ݸ[?^ J^Y4om#+RP|v=m ڮ&?S z\%纤d]Y&xZ :K{2(YSs$(,{ :6ҙat{;tXW㌅{(s&}* 9Y i9 vDXnO%PڥP y躊 DލCo. 2Yn?ڳLD"4;X0(yۡ#aq[!7{s'an/`Ȁݤ LCՑө~P ~%C푀:+fۼM$Hp#XDXnGX)84'"^^Q!H}J̽Ȧt6'69d!(&myܽmy2Ӝsƈ}\ $$67mU/N{W1 ؊(u܂H꣠>i!dXY>0|o2][} nnϡ#[ X'Pe(Bt8ƆGTCA[) l{GU `,7 L"SU7.$&"I/sI>>,. L>LzCW`;ԋοHC"Nc) YvttOtU VeFfϻa[„)Bm.1fuG(Y&ϾwW1 +͗ _>Z_8S= E؄TpBnP,MP"X. }f#ѷ䋡(ҭQ͋U xR6Ly:cmAs)=HuK{>c:]'H3J)aLRlP5n rYVCvs6Kzпa)Pnx ~le Q01iv\,d3[L?WADȾk<YEbɱdg o}O9Ez4bLNx.=}lfr}u2xOvoa{}dHk"| c$;c~H3KyfHJG/Lf: Lg!iI-!d[>.,η\ĭ`sf0e;[Wrs hG\I_/u\6My'x,.<2 6G |i?>Nb߾ FT*O_ғoVxdBfcV:4UY8h$q9mr[0So,q)tƨ%z}Go ^@vӂ עUYWm{`cr0s2p0r+,Gn#UTUgR"X^C6;# 3fu,K;+S'oP/xiw1(K{);x8{j77دMp'[;J:Y0/H>iDd* [oM#I|yR ]6jHZ_o`O>ltUؾ2w'Md3 , eQнJ_n#Mxi~W'`\k[л|0c\(t3R*apеAFY TJ*&Kƹ"?c//hBکV.8| m_OrMΨ;AWDY[a˸Ph,8KBېKq$yh*fOx_0PU(~8LKq\y9X|E @ /᧦yًH6سy WdWfն[97x4Ɇ򃩵IarD^n7l$e?)!*5Y% O:AC9G@zw>4sÃM$-=Ǽ؛bWȧ+wyBi2N*Hm8}Ӿ.c[Q&/y- M!߲%okg5K A 7d·LMiDi#)G}K{?\hC°g΀띤ratbtz;ָy(ua&CG(V*myw$dqш>$WC6'$Ự?-&'<}6'Р|aG:T{@o;sj LQчC9!cCpR;CN]C]{+]YDGQd[rS(׮VsXGs>iAcߘOPG8 y*^7G̅=n숏]dS*t<$w96CdK2h‹'[IWw9Qr4]]!)J(v;Jvխr/`Mr U$Sy̠zPкT}[a n%)y)$0$)EG{gd?l])du1] nFB+Xرw0nYꓫ^&/r*f Rc`V+!ߜωk_WK.[隫|F@vRaSj*wz%C&ՠHxF{PC ? R`RPv X\tB6$9>HC/5uՆ[ȽFB;U5uQ\-ى 4`拒*K}(g8i ߑAՏ YhCK Q*ܐjYč46'ۄl >>l6E.ovd-\ 8bU7{AuЩmvD~yЪ+f6比sJg+QR{Kv9Ɔ;cv1#VlO=HXg Y*OpM/"uSJkȭǪ%׌ͷbtidL Cw!!=dw+>a2oi |%!Z]Nn;m1HиraSѾY'cwܕW '#2Bh ?o(h 旷?XƺX_^_* J`eF'y5tZ4q;OCߍ?$/lĜoƮAgGR=t,*ҟ+@;y)B92Xq(b7gaԍ3) 9QzBBihV9 YnthߙA@ҺwR9W5-bC ?E^Qs6l_ (7kAe*pS/BD@Ms'2w2LJ>VX{òaIv-g{̧A }|!+9vLh~ĹﺰlT KB'!&PqĹʗ!OszEnb7gd'ߤ$WQBH &̍Uv(lfRldcmQAۖ*c4QFur*oϓ^Ḁ`q10a S鄞E&/.A6&@6O{r`0} n90 ?e8wy2$, {on,iy0 )q,`p8go`K5E9oC_ f֢t:s%W4I<3i+zbTR1bАՓOR9+x{Rb^q o^hNڗ K;M>w)ueOiji14kle+Aux`4qcJ̬ ۏ`⢄E OBHGP}Sחy :?3Yu!=A;/8MfeYwC1 0in#*иeV*l 5Az- LkM&088bƒW5´Vok=+l:hDe>ڹHPy̎.H>FYS2g]C(gnʝx)-B'WFyR9s"ov1^XR@8Au #ǵNQ+c~eS+/8١::HFej |_"ەkH>3r]6$AȾ ȟK.)b SE?CQLm&1F5!(fŪԈIFɗȣzdrjls gGʎԕF]XoeTsal) iy0DIJ(QSUƓl3brx=DJs6(/ K 8<ڮS[{<Xv#a8a$ |g^΀l|T=_iFCr $WV_N"9Y-Œ ztA*=HZׄ$;mTl:#t&COko~'~jn(S-Gi&[O9F9znd^5@ё4NrI"Vj3"sV:oX; 3mNʿN-tu}$W~-՛/R#oOkm17H[V]$u*40A`48ěm0]IXLHpF#K+qo6w*ϕ#QsZUFf08!Mُ %B:̟]F$߶0w)䷄Lst:r). })۶B|ILl>7EF 鑠yсוktH,; eZ.@ʭPz8z"F }*jtWe$(78@'kz<Ч̀~ϧaˎL7y=H~+;J;UQ+tm2s&llDEsIfJ$r1?WG.0 Η+ȷ?H ͤ"+K|"r/ո)LF#=m̙k #gL&*U}0X?4_ LE\HnX;ZAaSOoҐP~t,2E6&'( 6XMb(}~X/ Mo'8^b<OtX3F;^ICdajFAɮ =Xf}ug@, ݝ@X 3,bSFG<0/<)5\fL@Oܟ}0#ܬ4CcRbk d'}aѰ?J*z A/׆1]uԺf`›wH ?<s85::ӱ$o|3o!`.H<{- dչP\ma^o\mۅ_ۨ?# )K ^|2Od>KGWơHfd~B?q0ڸ\ev1*zm̶iP픫IT<}WUg,NPa|% > ȥ׾ŊFʱ?:Tdy;w[uͶD#HB_|U>J \PaZ#Z|Էl BV鲿~6\_W_<,Y) f2"kK2i5C[֭ DMdߺq^Ц5]Jg/UnuRDAr_z9⾩~sMf0.H!;Fh2mڈ$O2'y:50oA?RZ*&x-UHޝoka XݒOU")TE9Z8jgg@xsU" OM'd9(+jo$`a@D ߊ8E ct&kO8AHPrZ6]>F%;ޙ˗rI}c/yHvwlfs (YH (:8Nb(hlU7ekdSF Oߝ; ͣ"KlلfK)[Սg^ɺo9;p UTEUZ*ܐuEکl蒛Ѝ }{cFE;KUf#oRt ex??)ayl]+"癳Y/_d.sQmu6XJV4(ɲaðsaLo&8+DH, q;&oۅ\*col'bt:@]?AeJ<9j cJtGp 岣/\̧T4~=ju#|uLO b+an`C؎kfbPr- I% ;FћbMm03>R[;&}j'N\4J]+NN@[S<%Ap<9 )`TL[  A/o liW>qȺ"Hx*I;3Y2{l*D@dd,7KD:KEWn4#AwHi^GoTm4rX'2&2rz&>vfO+ˁ1hyZ#to]񂙝;$aDO KЖrGa)h~+{v 塚н˶0YVAU움?uȒKnzٲw]pEX8$x K.!nC`}c]"g Ln,05itxAQimxgyc ̤DU9J9d{/FU/VQ};Z{}( /;RsP:c~E|MQú(xXN煤kv&#rjmmCVY_7Zd&=hOcɆޘky+NPVXLp}ՅhU $4\X~rY%5O v[W;??t ,bV?1Ы~qjCub%6ڳ@bDXm\rzmBʓM)-gʺ d1f597/PIv4xHysnx+i*n>t[׏ϲlsgnGC7A[7ÇF=4ِz{?vYO|P,Wyi*iZJ*kZO@}iY#%] rެ4|(O)aӚ|K:E9Lu%jqkUIצbת|B(u/ Z(/4qd61sc As; ] 7HW6Uo] /t_#Q? ?lM7*"L~:z`&~Y )5@jȻZ\o@ "9ſ Y5VuI-PG(̿ s[7 O)4qhaJԌAr3&Яj \?ye+ dy$U$+ߜyCMWYWT_ )v~@֠D?GQ5;vP}X(v} 2'!WڳpwlZ "b)[ L7? }UkU4-9F`b.CKLno+%7MG`BOdI1ʮDxn$oAb"}HVdpn xW _;c5zΕ{NӠ}W`$ܳ)ozC#dcVGZ#BVi~N+(DW p@N(TT_0۵N 躾4{jL;ZCxrS<29ⴷ;~z#mRXk $mW< ]vNuWPs ^/=a#'-=,blFCr4ܻu&חm-:BkAsh߼ ֫2q= |e^0uI[ FKTI0w}DIM"9)21hذ.#;Zs3Sx7+t8$֡Ist+3~uZAc%C 0ݔo_뜠 GP=maUJAݷdr\UYS3*`:׬rpc6$kС!Ǡ'5DƂgӆÁ!0\P"D=/L?} ;=_?ŔFŸ_]_΋Ӡx:Gt$_s!stG3֫ Vkma|%ӯzޘ[G*yA 5|bB$O4LluSAgguo&LGӺ'~۞%8VkϜ3qM։8!j_/Rk r)  rʞNAںtD .(/GxnY{ o&oe+?w7Bsvh1T[Yh7Đ)/<ߠ&OJ,X#_+"umr-ys˺H%Iu㪋%d} CwdjbvmF6B@ x)HYVP꺢/x#sO]A{ہЬgyZԀ,~˝(huh Hy!#Y:Bo|&RF!_ιȥ-],Ѐ47x&X=f[6)s?azd*`{o|0t>> w0yނ/ So^C҆0.ze`?c"ȒaU>l7r d7GDyUbOMt}>!W怂PXhX$ź?;0r+_32/ ptS?,yfv\A܊q` f"H}e`x)wō[ܽ(*b&7s6Htр Q3=ۅw=1n_GA0rpZ9|"?FP3%$= a|]]G'(:~g6=z!q-4%m$H/R$4n)zWvUJ:)CL$\e<'rao  hYx]iibF;mTC7v y1m[Γ91Yn +nA0-ZC,&8EAKW/vs0sJe"2 T! -{1&FQͻt'bΚnmSrᩐVB8ub҇P[݈Ý\a6ֳs$׉2R7>YigO_!3/BV0;Ae'{WB *7Q}BpvɏCLU5h03tq tӕbW;.RZp59 o+:w#OweRS3 XkY 6UyWʣ6q.#!Y'z>@.fe٬ϋ3߯ᗄT*,$)>Yݞ:}N5 C, ,jmd$>@^rUL7@nLYL'oY{&?Oz0s u*Ӆ<:ߵ?BF|%ʷ}Hr:1 0^f8’LmyM~y& ם/2Bt~ԅV3_i@{Zkm-q.C~=-Юywa5cWC<> xLRv'X x={ t61ւ{<[l"eA~dK5/n|.{iPe="zuQe>̬2:/yI(N{;덜;[XxDJ %Uo eàS#J oYlR̻o!b\!AmO?Aٺe01A٧NVAa О{kT_Q{t  z[VjL`tk _IXXKa~b?g͑a6gEJX'z|$2}XY?,aFd Ik+y͟^Z.e_f|ykp/#P10,JY*[k][[r/ҢՐ_n 6y݋ &xpP , YV@(E1&-#'=.lAVP%2>{Lo`=G&z-0s~d Ps9~RS@8$z;a"5nwY`Ov 5- ks|T]B0']%%ci߇ ~qyYdLxVthϼg+¼a!b_5"ДbCu#5!03O qF]i6jOBN^{8^ۅ0Cy;d }qr^fvI* AC[ز6LsS@Dm-?- BpF dtw417$jՒe/ S/zҡBxݿ/7H9^QР,*1* Xp7煐D9WɣIa,gTjkxQ( '<4*#M%NQew¢v9"GYwS|d?j%^E|jAa܀*}'BͮGuW?\:4+ldyG4fs0G2 '~6Rnx#ϳ (Xif3B̶߳#3ygsįTXIxb =uסz_YLh#G SAߑ^7.ӉQ0_%vt--\^8e)!s6vYY\Ըe~<@~S(pF}? EXQBsa 5~Vdy'br=Ph0lr) )1\.>~ʉ(A߻/QU rrO 4_0 o!rO{44 說D.iER]k. υ\v"u2M%7nԟIi  4Ñ V$M0=/1Z<$29dTHɛizB-} 5u$  F޳ґ*?`Ԧ2O4dP@j(zdSG~t r?Zljj]XQ!/.GĦ8S}?<4MC}?d8tXfagzYTẽ1? >(0J#mZ+whaO9T|!03~Jȧw]Ұ2r>Ie&BD|h-@ӻ/mP~Q Vd!H26W|z_ r< pTEx5zz}i[_W_?c\>Yx5@ S'5BbQdV~^ ׄmH2>tiAh>G*/b:Y5Sdژeϋ!ԴsHegCk[ڈlաNXl!;^ 3Fg0b=X7jMeZQ19ƒ]oJÄ\_;{9>c(ϝWBDdߴ I\ֶ>;9R񚪓نБaOX`/_?da#(.NW'~L1P*u!k2}RW UTX}N*<ER͆k~i]  GlgDu`P4k93i0@;13R/7d_S$v*~T:PI'8o>uŃ|yz Rޱ\ARshCq#(jvB-OYA9)rJxNje0+"c:?=~ XA CamZZt'/}`Μ( k'8Ġ \|I ʝRH{tGFgHp}y[nKeH1z!dૌ d :l\d&︨B3w6(!PZ]r =^H$P }F`Y{)&mpc-:".A1xɡq:LYvEs۹ȴBO- J"s3rYg"Y6Xc>Ȋ{'ltE7͓OPMh&R83}MὕZd۲C`0,I{,OLd g1yRY+mv^` P\k3f$& XitM1$|j؟wAtJ4s~l݅G9닓3χj!K +z2 p!ɉLk`潘4Lj E@kcd&%Cw el+nx[7ze|!dʹ4%\+wsôo+Ks8t`np=Ϲ#bwM:?x< Ewtrh. vwY \wK~< 66.+aewd]t.C*$34p:KN0Tη>Z{Aubt\cWUc, N[aBy*Ln 3n0 i~WXA{sfCYX_TR պ%Tyrd[iHn2T\E ^3hNyהEA.`k-hy׻ #zGr/[F{-;w22!3YfZdfؾa{KF{ӥ b^-#Hgk,V?L,b!k_U!ez3zW@yJ*  K)(ZR|%ު gtt) 6ؕJmDvZ7u݊~U:r{a dSrEYDWʃ>S0E ct,ܠBɥcP&ecQxͰ;ԳtXzђPdZ:c"#%`4W\"[aŷa|vpbivYמ LC%N}5id].S6ꮉ{EfiƄ _x}7Eya­CtcawISP>* ^uê7&3wިEIzt_e:[ wAHPF= : ;vHarXCU#,j(xt:N1;GȞ^|>Ϗ"MEo!39yMq{n6bz+u)#GLKs[ahDsn 4-~b1iQg;#LC`*#QM z Zl.]{Rq) iBOSJ^!w9HZIB!3xP EQֻ P~ đ ,/QÅPtA_X1L5ї\a0[dT/ځPYȗANÄǸ<1kVKT9'd mٖW ,=7KoxUJP`-`D5t6ޓcn<Ǎ/eC^4U V +6o{̀kcC0ml(r=n .[j:S@4ns>|ɣ6NxV%f}'!صu!!<~mg]&:wn%k^^H1Z Ȫ "%`(& auE9^"* $bh9G1[6G~ R&~މ<{X}uey+vr> =3@}vk 5R[h)$h;CI_^R/ZJ(K÷~h7^^ߞgb0][Dxӟa830[lʀw[|j$hdpG>k3~&xzVr,e NK0dIrQ#?!sW$O@d}|2'-KX"RC^5VH9 ߌH;F-??Pp]lÖ4$o}/!k U4=,t<Y%oe0 s{աJojw{QB昻e76+ׄϙo^a~~t,>B6B~_GnLH5oaģ@3͙kQXa`ʏ HvSw< Ʀt"m%GӉA䘾rp]NR6Ǽ/LA09c)M[~ l7;R޲ǠxǑ2@8MBc|ŒIbbX=˳H~#/9J!ȨN_1\óُ^`ٌ3{8Q I\[k {3R +Ҕ*n;<u|M;0v}1Nc6 S->J9re_3<ԀԣG{ L.J!+ k3w}E?MYGmۊk}J@~gۨ?9s|+Yê.?BےMWRX ~Ѧ4y\TdkM603㮄,MQp9TY36i oC|UˋLvf/ X{'7PHз;ݮX5m- tOL*U`QX5v1)&l,4!X\.)$}(i׆醴*j] uPyF7'5BFaWa̡%$ qh{k!K*r|ToJC؃podI<HHZHER-őңÔ0@X.x,YhN.CñbyBj󣢃G+S!s>UrȪWplI?Yvcg&YBͺ@kR6lU*3A"`l]r>q E2B:J`s ra;p۹3I>a4壬 7-o;iļ29űBaU`A`zO$+E ~$"P8%.oБGH4:l6$\x`ZexXɊ*MHQV0~i^8Tg +T&}2נ!z#"o-CO埃Hs0kAܗH01+_H rԯS(\B %=.Tjw?|BU?PXZF՛cGaѼJ(*~YZ+?!/Lux'bdFțdT[aVLf3N2 SWVc[$A< ²ީ+PXG;@l%yٶO @I_q o!x]d̕ZoD%}a2*57 R-jeakkm wRCjJrY2k ꕯd!8 w2u:?jtg]'8F+˜j .- +OPwɢ=5p}Kݜw Koe 5^G ^^WTT !kIݦj`׿+-kHj6z&MR I: u^ J1g@ O'!l0U O )Je3ۇ[M`R3_.$923,lj=PUzW Wɂ#3T`V}:o7jzNcͿ?"0EvfX>U".V})Td8ssf,qwez?}ܻVr>9"UgFg]GBK0ZQ8'کRO^ESƷٝc\T{DIY>&Yo"`s ajmcy~I1JuTdc0fM~>yiE}wcrujv#r%:^(E IPIȒK% \aWVEQWQ$>w׆(==xy#.3^ ǷuHi1"!En|, :6W'g2W)oӉ@9)ș=|1Txvorc]џZae1kMf"9+Bȳ7Ƚ^Dx츜Km;!_m62ԯomʻ ߊ"%;6fcIJ!AW#^eܺ' {d;tˎ+xn>w"O(M5 '-P4F(jJHi5 i@Agȿw"{0"‰kNFH̫GdL/ }JHX ~q3z ~#zuvLx+^Ȣ,<mr4yQ6RE\Ny!} ְ~ZgBߞwH&P6OK6&Սtg#7{?9<2Mvh4'MtÏ'\h?%OI*Y Ʒ g4E= o-\?ĭ2͕+xLY".=u;äl +S^EeP@f̴ eŠ%WbCS.fXQCÛ#o~ZfV2-pgt,짥k+GC}y12M2QۭPurSBUߛ$hnGeܧJ!?"ʥH=ѷ]Sxƽ8բ;3'^V!u?<ѺiGL8[Acj:sKC]GyKP ӽaUtG!#c+ SzY S{T IXQ)A H07{ ]k2b1AW?Šgif}-FG5@'OF>p1'龰$3,]IdKԃ cH'aoQ ,Rym3LOlm[P[buT؊/8t@|>wVro4WK}wMY.3̼;w=3,YxQ+_N\ݗdEcFoWD^(hɛ?o;=[w^ J}y֋N4m7_֚7dF#}x([t\xU3)63 n5p׼(w8KoAqF?;B!Ϟ^DeZRډO^FꪒKP&t(!;đou](R8-TR/frC[o3c@ WR(eSS:aHxz,Rl_y4ig67imV| v|OaoA4?ml# S ;gq lkſ|j|v2Io,Yz9UwbȦ2#69B^Ygi^C,]5HTճQe %F2Ls),Ӂ"snH\ĺ Zq8U T.{WÆEzUL9Y=]B8&iH*8T kug[kGˇez߬[8#tW-e?2,~ **QAw֔_32LS]@ k I/omoC@c#iРb/Yvr|93bB6YN~ʩ~t5g x| S9 ˗JAXt>*yfw^n^0\zRV:XIl̆*Ȥ+Dce]HMq^e՞DJS:)j˳*,@+z& 7=(C Vqv9&[͗IЧnՙ2(؏|z s>PpfxPhV`SEܴO78 Lq>i냾ژٙˌLJ,r:u)T9gj~p|A9`lx5sv||^  ,–w~S=(htd,nQ :=3ÈW'c`nOl}D{bήsT ).UBYy~|Vxb~V@i~83|e Qϥ(X:"l̎@^uߓ??rs}CD'w%Blmj#0镨1+4[hD ‡?5ж{lt/;XyBeCMAslJF9u_eIk0sg9f,*0W&%2u\$UI/w)D=wHSOYg ";#${ -EX 1$|JHFBv닇aCas2AkOB]@A2GAF=Q{#ˤ.mu'"}{1xgO;; R6={>G>,\;vhۆ \?4e\ ٻH'+죞:-=\!A (h55z8ƾu vߣlt +gGbUםX\s!Ȕc(,qaol.\x/r9!55J=|ϭc_jGRjsAeM:rK!oـd~g|$v:~Pswf&u&8 2;rM!=oT 42}q \sb③u[gd#hE2TGs @~P`JG([鐩5miZބ%ӧӠ̲g ˟.#̡_`6Ti$aIԙR:r?ԹOB4&*1 _Ds0-Us|? zQDs74|N V̋ۑ$Qj2[`EŬFHtVOyGlOtJK**إ [>Rֶ A8a6x  wn;if10۷}1 lo.$GAb^Px՟PKiL^Z!qcI!{'=\ sV>M@ ~qN2ST(}#UhE t0NAr#G,_ޅc&<(7I{-S)ʓҿf킁قy)0;jʛtXfgn 3w^UNPh+H)[(^P4φ90ܚ*bD;B+TN `i#_mRb/d-NUdZ2y ٢&s ^#6j#}٭A)d .FFLךHlO0_\՛a[/% cH <bAC({Bխ/'ud`XWuMkmFBnX}e}}$\2v=}*)U,BKfbєhEWÑ gzׯlt z9 **ی?hGLd."DR/ @.5#cBڛH|,Ra?Э]+&I%-+ \U(嫉Zg#[wmskurd< dEHݵ{gwd3JK){&>!]kQ6\tYl};tS: Ϋc`rbs-3&H Y6~:t&IAS c'yzܾu9 ` `,K [`NRsXߋl (DC ec$;1DܚƐk~(ن{ vDo?DM4-Z"TNDwa#8XlX펃D#G0>nEmNOW}nYg2]:i\7:!{!a(MԖzNu\+w!1tBv NU l ڡ8~xD-=p׮|QPip r>Z ,IFjv$Q8 3CqH'"&֧Ra ' M~4cލcJcn2rREJ'o:5Gͣ{ޣDYey-9ITqeXށC?;.FCב8S葬-lt܀yo2Gv0;(JI{`RS`GVU+|ȸdaO@8ZV߱ 27;_؊<\4Q}w;`+(Pd.Vs<,6<@>7*KhZ2rj,s-=B1IH#E y|P9{~:A+YftiAN'zwAzܹȳo&dnܤRڕ۰q5i?C8^"㼤AWdXd\콆s:ϻHPp Bfg+n}~fEۃq|]#0VV/( sʝY(0h+DXVj~J6؅շ?x=fF$I~$,ԫ'?sSgW~o5CougbQ&<z"(6=Q ŕ1[b;ғe]a.r*Ί3,'_y10D H#QaX,u8k#L_FyTfj8*4aMM]*O>}-t |>_ߔEB! J: Mʻ4whFB_3+B$Ga/BוYV .z kȳ%QH2tM)|Dݐm_עU<w'#;J޷ȤZ/[IΏ]X^T# ")X˴np΍9m# û\cC͙tPuOV|, ]U(X-/Kgbx#[ CBno+VwBf Va@?HW~DF4E6gdNvAJŵHey64>[2γ_>y"d.1$y_ּ? 矩=`A3S,'#uU2r !N.P藌[=8=*VH<-^z#q YhE C !CTme./E>ٻ9V lCg;cߊn7]2-,\qcEE}߇`Z]O3.ϰn?:Wu;U4:_g`4\$#îHfjw571ްvu}_NAfE* ۩Q-HlufV:;8Kir0QZܶy5A yo&OBϭGyPCT8/[E@Z|aL> ^3a2cje6%^_; 9~U$<8F iMbM{4i$j6r8O@ڄ$$5 w,4o뮰Fnu' Mwk1$xFS-gaI"c0զ!щj.}X9v< (%7B;g@Q^( W8iLbr0[%hc+)KEB:aV 0r4'}m!ᣫk2%[ҡ OU/;FȣsPŇvHŒl@Xa՘@uG7ۑad24L쾁L;" w6"S}^{#BšF"8#J=5AH}=Sr/ro=uPHiӑ۳xMq`\yqs$Qc4 9|`GbYo[5mKeFp.21!;tyqX58/`|骁C!;:]L;_׌\:,?H3[,w(m%;dS˸dv aP8˲uZcfa^-VP"} x札a'0&Xi3H2IZ qQLKjAwW$|!A޼Th}98 V?h@=0w\+ 2YwFCCkB0;hXiw+KRqߌD+Hl7c%Lu+_{SzWߋ/m]G&K~ Ts]X%~ȴ;g@w^4T|OBf͝aO5Fo3#@; C78 fZ1-9PulhUe Tm~ԁ'g 8--6|$!?Vd,-Yl7=[tp"Vw<5b!G̊2w+]"PXJVJSiL`X(06e'hz0~3J볼w\T:)Z={ŐZ}Gf;"CY|J^kbGQhbPk;I^:'?&1Q 9/_"WPӤȦhx]|tkZ3^C;:%#UJԕlZ{"~a Hd|2IN?Țl9t+Bh+\+Zҍ'@4R. #=ɰxq[77 =2#t3ޡb'bk2 WhtauXJ*sa6})}WҴ2}`5Y~]nzDf) kbLhG»Əip[9LadE-B6 ^VgEu WzF`by$"KvC–~v*+5{LaA!ex'^rz]\sENk%q4X$7y)/,Nq.FG~d y}ԇ9B03"- nIABNwVd6?<%W=8К"A;;w&\_K|dV]X_ - 9,@hg/jW=IU}~.91pX+³q>Y%5)"R zᱳ1ll-O6}ZT<-#yA$'}R :Ky{J?l _v_Ӆ|guam4Jv|l= Ҹ"WG<=KNzyG^.^B!Am6(>|Vƅ ;ĺ5eH QsK$c%g10k_ٽ6فET(*PhM a|׋7EaaW#HoX {!kra#䨿޺q\= v  !\]+'RT/WkG]PX,*/Vȅ P/YVjjɿ2;aȀ)d =Ȑbn?<#mY@N|® ڷn| Xv>׾VNjO%K饣yoI_{=vg)2]YUSzF]kG}g,[סK{͔Â]d`l{YgBXX0umۊ,%ΞqdC;~ܢsyWVl:: i_LD8Aм17z熍˞)5YɎ1X}%:S그 >CKԿ2Gv]&E:EcB<_@+g]ɪyh՜^ܰ{+&F&Ǜ+y}} 2s[/GxP62MG&T1/ g=a¾X4ɁI]끩F?M;̢_o #%9g䮨IrL@>ođU*1BXGˉ)@BF^qqQλvgٖ#:)MX ^99غY~F "ȒASoyǍ#:C3 oSQ'W<^WFKCb\83)>V ,0wW9 m~eSy,g;4CaX!(0D?eGQ} JN lM;~5$כ>NJ %&_)X!% dܙg>|IBzduC vHٌ/5^҃e=%^`ʵQn-dЅ #0qdjVuu )_w*29Q_Aߏԣ HngvE^9#"N?za([.;[0rwHD;r&&wRj:"G~mgXw;Hxۙn2PQ.`i?CZPjQ'v3) ("3Kkle(.˹EYE9nӇJ?B9s;Rǀ%{~DjB8C8#=gmmgk"d|9I z?˨P)Nuߴ]17_s: >9Y SYdX`6=}zAۻj)퓈*a+%KfX`Kȳ-+ M~?@Lx=>d ]:^32.oA^lhqhLle2 OʤM]Ԑ(,q!ju֛5340{YhdxO< ~fnyRe \s"3K0!y5Λoڑmz٦`3m>ף79&=h>xL}` N&B=cV[N;r.7ݩUX(o ś>Bagd/=ad?׶'9?h1FqAN<.DMAؾdʳfX]2K cwG 8(A9SG& Ƚiuk;/TtЧOV`, t9>_pnɆj؟føI';,kq  ϋ P>p"-=s%s>UL}#MaC9,`KToAIiHJ d˺, L*׸bmf] *^wϗ|DF=='>.8PXy33 _f2E4OA֗HLNE?!ۥG!+͑Eę/v:o9؎UnEz=V;*"[tͫH-.n> w9(g”sҘ1r8:UEN)Ȳ$*#[3SM#1-`p]mU(+)Q=S &xHtJ~BcAjf}c%$߬5&ˆJ]L4o}DT!YXWla?O7@~=}6Z(C{Pp{f7syd:.۵_B%!^l¢d@l |l <^1ѷw1/yٶPiPw9q>tDž{ gJG#} B4H YW9U#ۂ r.E#õKz6s8n%e%L~ <_ 'u@Bsd(Y:AߒЮ) c^%@3 omT@ksy"J06ܗK {a=[w^Hlkmd]EʭgRULDU zd˰ꂜ_ + RȣW/v n)shĿc'Wį69aoB07Kurb+# :f0M9)MP2Y6f<{LNQHy Gsi0sW%^aXd2/. "aB Zc_ =[ܙ3u`+UXIrDO}|'V0jTlj¾Г7p:>u$5??[>9W)*6޸s?,#9M;ʺD$t#?6y2{|CwF+ȡW.ȾۮFk 99~&#H;6]7Mg{hz[F2FzHU 7-#2OdlAa:,t0\$hOUa({AG)UeI?Y{pQWkY8JVv Gr]%ȭdŪoB5*[k>q Dlk/y|W3"wZrFr0^,q LtP9y7+\ #j(Gv4 xMP9VmMHE/~p=C2ptS*xV޶eX?Y曈$!R~2J6'r }?x"5<-̦!rVkJ JGnih$]umҞaβ\ 56 eaʒs/84P w^t?2Kl}x#V [^ (Dj%-pp~kh;)؛S+&9^2v24!Ed/*GFζ"HVՕIrO'F!%rf I!J]Z(L\ϫZpW3G@36~$_NAY#dd=n.=\Gv:lOe30~6;>b0^3<hҩL| ՙB*Ds2ʆ#n4Xd4[7-n(r!Dm?OθY ^`v=5ͫĶuAΟBh@3 ItN]H`ع7 C߿GB=gBBߤW=RTy nu} z5St`dC;]|?ǃ[mIv "&59剈#T䰥~IaϽ=GPdBH=C/y%07A[Ok)e)HXrDm8e?"4b{JDRԾZ!ˍ]v姯CagHeWG`w=$"lOG"ffDM*a3 ZK+ų]¹X8zui{9PhT)>. vf3]v0DT~vI]3I&͘:0Զ7k+/+=to#ҳ2ddXEH ~C { Io ϫ!k'hvvJ.l@2n!Or0j|kt}& .\N5_B 7BK}Ud:DžT;j]) 5)7e?UlX3]|i0hus voqu?sWˑLr|FS{:ނ516"꘽, \P{lo{ײPe8zBKaPɥl,sh䘻pq0j[Fߑ+[&VBeYwuZĪRV{M!=];MaABk7u swh~p6t$?#;XRd6O1BŬtϘq]u+Aދ.ELsi~Zu/X`f,>3קY;2\:~&a_4b{/',ZR̓8Q]!yŌZ OIT_a1KfD,vH]fG_{o~C+WW.;G2̪O)#&'$ j%;gκ|f|t~:c &o3H[RIřM[}1$]8h%ɇB=7 ?4a^yy1P,qFk1p+I*?~'Xl[j(<~Do_y ؐ`XL $@]ФAY2EL[/!zǿD~} ߦ(\oImrXu;BEn;quo7ǐy$${?W0wP3 V>b cqH>Lq=`μLεai+(m,ӗ u0<2p9YL|} -^CX깏/MTm 59`!>sXmV1FҦCݢXP\Yܼr 9vOV]9QB燐B&gqY 黫aqjϤf>~wuTH'P=2*##(=_ yzDyU'5TRH6UB3r2聵P>tg!O܅ӍH|u>VVnj4`SE̦41=ŵ)1r2O"Gٞ"^[dx{8#{+q%X*[fd]억jrDa7ރҰp?#'=9}h2zZk;gˡWȺ3:W2O=:Ysu}h szhy*X~y}Do ]s 2s4lQgJ_^ĸckzr\(3-޸gz7o1Wa̤j񞼼kՍLxctrGʱKȜ7 B;5k6rk:dXo>Dwj LI34>ֲyDO2 uS ds`l㴠_bpg8[ާfXc-ty7Io0Ғ>jk C'}!6jMD;=‘c;jdHīrF0H@BCۑ£V=`d~9g:e uWx{OK*'}Hn2 :'̠~)$F@WWЧS|#Ǩ{nj? -۾1Z8$ ~˽Xڛ_?)5b)zRrOb]Bn}f1}ry/>8o\]E#)6^8͎|ݯK0OQ f}G .25tO|4ІkP9 ?$nBkO'J!gȃ%r*{aXU%o@]ֽn7"aǗbTV[X Ѷv~MIQH=ƍa*j:Km%SyCH RjQȢce9{*r مjz<3~G>29xCԔ, =\?l cwVa.Q'({:5S .^u1f*(Ê{|KV$~-p7SDoQ5?lTWV"l0oQ!ٗP<=TEQx7j^3|a>оhcR9 ǞS?ȯ0D0l k7khQ*qVP(I ;^ ,T#9ǔ7PKoV3߱yrҶe6T[!'QsqOd9ʺ]V[a}+lc?pmw)eU:UV[!P Re^uC yoV; O=}^ <>oeϿ ywTCKygn'S}=Z^:ܐ=`Y}іMYK$3B>R/IB'#KW;sIE>uƭat~tChF(\`/믁fc\6; cKoK_D$oWGzjע^w1ǜAyX2S ߎMmaqoESdZzl&eS&HUdCPPZcd چPp,؃EB"f? r_ENm2z2zH!Q*y,UhM G O\OA ,'۽C 2 H ;&t)~:,\L>rJX?Ń Yۛ^?| Z ٟ;x Yߙ}`Ze_^;;8@~.(x{G@ϱ{C A+$s4MZ=/(K=̆:!rt|wwkJ 3;ԇ.s8[O_}_|M"h}%zk(^2[[.1~R\> 4I `²:Y _? ,-"|Q8D) W'n~G-ȢhxT9;M߹DGy fM8|U_Xq RO|YI٪ZKԑIU3C$ÊnbLenz ]#lӶ#Q[_~$ngC &W`Tf型p 2h$_RyZ!oߎs) ~ԏ|wBiCANs\^d̰f뜈Dɯ+=`1GZ L4UVP&0ذD- =[`!묷G}[$RÐ7G&e[l V< m3sG"Pՙ3Hz}\Bҝ)w~ 6s,J8kEVO#`!s-YJ rQ:h4xY|xcnA+>cue2 (IH}D馄iU;lQەO!ӛw۟yRwGk4i !)2CBPP6rC ޔ71 gHSc#ŊOme`j%9]ϤFO#]K~i^d2]XEbc܇|Xeݾ%|&jjܜB-RMˆ"7A~cU'W:/]}Nl 5 ڋy}׳Hn(x!!,OhZh 1 j*E>Pο%zq5=(*y_ .oG•KWW|ק&7Pdbx 2j^5ށ-yNZfd% >YR嫋0kwX `_^ w{"3ۚ)Gh CjNVE<=yl ~U1ך'ue /K!}w.e),2O9l6E712nN\Cs|6˽gl&M{jN(߱xgwPp&=1/)u=@rc.]/J5'\JPET+2}H/7{؄vi׳з0dp ԫFHب92yE߳3x? f _*$*(R:W=l!c   ScWf aF$tm5+_& J@OjLt@?vovd ?~ȹ;a,l>f:_!>pvq2 l{QPYyW@][8>M <+my 4*ܚ+ qȽ韅۝;aA^& NO%c' Z@/P{6ErרÇS݅at?РyQ}5Cuf #a-Ӆ0̰c1Eosz9t]Z蚢 qFF^9ٰP(dܸ3 ?×u[yZdmPkKe=8K"]?#\SUz\CeG$2ڏYrX kw G!qAq12*|pYv K T6/dH}7*KeQ"utLǐ%w#ȭ6qvw[>yn;c] ">e$%eFP`e3~,L nWF{nK zGu`FFp(z֋]7gLO8#D6=%{klG{K_[4n~|ođg?r=e1fE¹ug|Z6D⍩c]io.1gZNGi/= aH"J$OXظk{Xb,:Gq!OsW{)VT#+)ȝBj(ܡWA#}"l"2ߋ䵨wo!QD`5Kz%}^, o*Zcͩ\Hܘ/3k"i 4k[gqh@n{cO5 4[O!'+ț3"wD@?$ #q kwIs3f^ v IpAZ[Neu];Ke2&Hz?ey@Wt-( OFS4Ǎ#wl$@OWhb"LQw|Qb6`u$zsϦ}?E :x'8ey |d Y'j,R[U|P^#exi>E{`hy$!D#B`P2ϭmОuP!$ZEh!ocofB0nEUmf_gT Kv6'IúE9K=c$ %4T q'lJ8zW#_M⊜lO0^E~3r?]:򤽶nv\/ 108FaFC^x]ẃVdwE 6BUwߍFNn6֩m9-ǟf4*ݫX-1;L/GMk_O_Xޣ鶵f; 7֏y7gR E ¿ݶ N߹3:?^nO_>=NE@S9.ihk\%7s]{0~߰aM_9r]uv=EY^V#LT!%s= gnE6&=4+$K>g/"/ODl/6}PII 3Oϱ}u^8tÕuF6>gNyav}$b?+ fgz('x,^*C[_&#ղ1y_PC~1e>(;%ƵYoZf.l =įޫ{{`>&>CA-^8^$N.SElѭa)H/WőaEOFde5kP)GF/&p(qX0WT\6SRMqа0Зn3m ??]#PO݋-)`m(gw5g!ƅ5 РxFv)/nǗrK5$Ϥ6##ZA![dYj2W*k@E et{o7~G2qiS0M;v9R[SZL+[Q~m]љ yaCJGn~0}+rd9u3*K{lwEa!HO4 FFVe`q9nZoI? ݛUt F԰hrk&Fdyϼ5nS(p$~fX~%ȳ%òSj"t("NI~?73Z0cK 4=PC,M:0l WX4{k ?8ґ+pT)20;|l@ 4dzsMd^>$5VhXp)qK S*x \ܔ4! 'q{c-Lg\cYdWyo["KGq!bm5Qkv9'\j|A`dpNh5r޸zbv}rHQra}LOBaBT7rٞ0@jоw#5ֲ<3^mGfޮ^r``ڙ_au2!I5ï0jz~v;nq%i!"Vf5BҵWQ6Vyt<\y?IYFKTڡ ϋ%W|^-%pRe^V<,nCoa9}1 w= щv& KE{0s8c7"ڑQkN$߷8LfF|Ǫ껗1qVzK;!)s^L.BN®Vd=~E)7|GB*gq_޻h;aHd*$ G!8%,N2D@ }kv8䕈;*$Rבw+dՆ,$.&9N*,U"YO$~wT,ӦoDeoL>^>lhxc/ծ(ug75a=}-*\~L hL ==t^Y\V2LeWߚ+!泜@@왢=0i?x/=Z[_ k*]rۯG@B+(j'Etܡv<*֪w*, iWqIڊ'ҙo[`_c5rlBav )،Qӷ`:;VTcXTF@ǥ/Tyh* I Waz茋z/e+i&L~dyVj#}*}_ C*ǿ->!זMvq렉,s^ ͡OFHbGE^@{6a`7&`Z\wNf0+#>J]O:r m5ìk2 IC*&B<،,k':ӑci_.}c0X<…7:on fU]mC[Vwy<0 WBCDz*"SٖZ#)&" .mW`-.sxİ &eoQ@ &w HW  xH]5'{.k˹c" sXvkp:T7bH' @V`8Ckr ޒc¤Ű?aC1NЧ7;1[=CGƱesVWWɆ9KapLMkN>Pfu嶇tqÛP ֩/Cr()0u8 ˽iA-擛X:cݠ/4bt#a&LB*NDrdUsG_E`- ]|/z~/d}-GM#H8뚊d~i#zHYL~DAl瑽ދlHU_FꨮE&̷2j!Nc֦:a9Pr-kvUד;T(QbSG~(ßw,|=)[8Ƽ#G N??CvFׯ ܚni7w6@a9A~|]/}ׁ{ְqͻt$8 wnwY-[ۮN َOxoFHm+9bE= 9mA]zpXWD ?Gf-f$& a)mg{jT_m`Md˒ՍF M6Mƒx(Jhx i]ѧEKzpǒpNVT,jt>]os?}mwɆ&[uǢ0%93bS'z=&6e$&DɰdzzIIMezt1N Amޠ0 ZԳ_@]>26x7='eu( zXk;v~E`Ly~)[ięg]o_8vm?C[u`|; F6)6ykB&P(b% 7c0]+0,w!{2^v֬ Y.*~iCs'tfD.v|BНL/C}wRIWpVHH; C- 5ȐGCYrڷφwtvVᙄ - CAw '#J椑q?0> щ wsBl*b,fN} gBV9'~[iĸ-9jڤ{^̐*MM]A}`wA1;E3 UC{8aC۔L/G~+$;BcrE&/W%CȶPr)9r&lj;;}D:2jtNjcZ%2[sK8Lͅ2)=[(k*%-_E/_02Dr]fq#badm#>d̥f'd\AȜT7ٹ.B6w_e39l\E7LwL6tz7Vo@l&#P4'nL*mq,MB2O*G0P"ߺ I!]CbݼQʰ->К+,Np`"OZ IK\̫'P dSaߢIF%|զC]#kix.إ`cֲ7UMPLt' ~_!)*T"{v'`dR13GhQ]$1ӢGYaw20gi.k[8ᷕq_w%pfYW\zkNl`470%Ϳyjܿ%Z Wgah0XzJenrlRMechj+B;\J@CwiuK 1!!o>ˮu󘣬gb]1W!E>LBu#}%q<&kWBSo6jYA|kV/1=}Cs#t-|{}|y.f7'yL> P^`' =nSł rVƯׅBWto8x7,/rv ?EyOdRY'G*! S<>kw:-ܑEl2*:oAbq231s->0vLF뮌> kݩg c5ܱ 0=eW*~q-lZ6_ unbgNXskB'`Η?* Rt-̿6~щ CH=^3љ}sP@ӓ5 bDYKy- 7n2t}lTK @Jszc[0]o9 -UF<˩^M$N.$2\kdg D~&Y S|ZG8OS%J Q{Ql֪21h..F"@EҨvh'qM /_ލ!@Ѐ[=N( fX6."0?J߉ Yu^TAV{d{bnr:B:H6>@^k_א/b(q .G 1@ThQʥTøLt9w G\iPc#tá?<+j"\W1t\9*c\_vlՁ߹_4w7_iWwp[H#<Usgogy%ܟMύui0s7y24>:-| rփNl30w&ƨ\Bai6fSU{.^_bR)X z@$,w)PݻW0kz;TySphBRIuU TDQJa$3#DEG&{cwyx8yz>#aE*)gtp);h=cɎ$s_6EMInfqv"=}(yAv2s؏)/`ۥi`vl$_H@Iԍ2Q22!%< &F /AZv}+dޤyJ{(G A>swsQ%L#wv'8b 0!uRn<7-0Cb;T}bifpX:o>| w>GVK\,Y~{ٹ<(\ɻ/ܘC;Sgl2)k|}R*z R7tID!k2]~>[Mˍ"zgP[#dTM0$xsKfK=vdeO^슊]ś[p2Rk$}7{t yZ6G{J^ DfٛȹMdd%7s_BrrFXdqsZ ac(ЦARGtk|'`skľvθ),KR ]Ƞ(q:tEmaE;AY2z:uTjN@QR57w<@Aʎc[6".d0n> +eaK>Fai?5V(HS}7l!Xb"~hm?5][գ0P| 6G}Iՙsn;N!x`F+U*t;1ozdg# ۪ ;[;>Fomx^ 56-.sa҄(TcEM poc}sGk"<_5e= rORFp5!}bؙ [K 26ޠ;@QZhOYƏBM`X,3X lSiszOfj`da =zco/< |!)y6żiW(YY$}<M)ztrdY+:fu9yTnDKZHU#e// l[9R\6Ig^P>z.xi M4^X!䗌mdԩ9kw"78#dՓ4 ."t.eaŭ=w0ٵ; ٛ)q--?,M/ݝ֭7:Mr)v#i-t$~3Yj&wlOGJ{l!OmK}U'lsyzx?%\QP_d"ɪK@qhcth(*z9U &$wJjwg}.q5Vf]rAgU"iOنca)W}} R^k#p4R$+B/(_jfkLX|0Ťy [|cvf8ՓG.0 }DÛƵ\$(䌸$h(V~^ J',U,Pv9 o. O|\+3ܬX O,CR;`Q/yM[M-d J uGLxGDW"#)X-%AXƦ]0Iwfς0,ٮ7`䪑KhjfNܾ]Ҝ˿!Ó"مLe@o&׭!`, ǯ)#_VK SKA'fIrmnRS7~њ Bk7 ks?`} w q$G=>P{N]hZ\x~nTgГD J񷬪FY:Lsۯ-ƼqC~5c§NeF>r@)/m0:|7r3!}.\]RgᲞ$h̡b9s_!{q]hDJr$2b?\\~vD#_+k#[=yȓrZ?YG-'Ȳ?99Ͽ6]!x ^oCg9qGz: H>_Q jy޿sr0[f FhӀ}$3Gԛ}%^HT 9׸!X޳fdp9ngsA5t[4_ s-m@ƯyO֑,q)?_OH j8a~η I ַ:-!iŶD.%pM}ZH@|Il}JKte,aeq&0]kyz:tw*lHhPE*XX^Moތϥ'|҈ %<%3ų~[S y/~0?19ŽGA^QiA\=Б la%@/eM^cZes1sdR{D73"k'GiuH3rBz1+ӝtEM8M$\hvw0Lnݦ,24t7(mB.;[]h"L} t\@<_4^!al@%Ʌԭ>H$ÏۦK+aYD^^֨,& բa|Mw{א7rk~czqoDL U`I[ 俶5l%UxkZLXfkSsS20m0@S֜5X~2u8,>_z _a[g9,&Nȅywׄ}ʵZ}%~:5B]'#mW]H(f{+,{p41Q`(Qu۾n(oyVQP,zNDqb?ܷe5h'`SsY2*J.p{}0;mU̮rlH x-8Wo![or7i\ܻ+yZ^Aۻ}RKxD]_ B<>~:ޛW" ЫK?rb/| jon%xŭ+# ʢ$,̥㹷axgvr"ԯw3+@WMIA7;S]r da0kI Lת àlyt Ogc.MvKh_k rM/5 [A}NΉ Tie4/hrT t)A$hyg*p M=skˏ\s&޻M`*4tY ==cjB3)l~W|>*GvO!$E}MaŽ*k|Qi6Zb\/wcI}۵1G[C=$ M`ARMl+\.-ԍ+6~̾"Q٪;9z#)KdoSfdߵey4U,E)P@ ulBn+Db/!64og].\6o%f5!bR i a_}y| ^c] 6cyHyQ-$9 G=igj\Aoaҫ >tq0FC3{WDdZ)Lτ HXKlA񩨅\Xinf.ġ>(#E)v"'D>N/q5X>d{TPQ㑏DL44I hek50_I3 '4C퍢ݷ-$aƾSךk FFmH:*D)#eI*#;;J\ZHlE䐩gd;7^2 KiFwaJzSJt\2f!!95&0(LmR k_[y+BΆ}! 0lyYtDqǛI_V^›v̼s #CoådȌXgcx8 {.#uLÎ'%`iϕss1GV#PgFԋmXKg)0r" fϰϞ9 wa`@cL@߻Bt]I_g/ CfE)XyVw.&/ Ⱦ2٥S~*565fHmϙVmOV$ ~=w-'t Ifq:b(c?'7{Pqu YG\kZtSIF&si WO>EՍۯ`1~sm߆k-ܙPR'Qp'!S$d^B7մXl]{ k} 2ܚ3 CĖ|NAQq4h Ӹ4vtqFX+ 6),qr+WtUF?:HS;/՟ &3Dx3nRy%ԋ6ioCR!iduu vGf[})֚$$Zt HVRf$KGg\V@?)rc zR%_D>q')ImOҷ5Af#={*0]a0Ac, j IHfPg lgdseeY I"iFn߽޶+$+h'AFUzL‰0,,]M@[6JstRr;Fz_QNF΢@W"_6uS)_ѷҍtm> AOv{4竪L \;;#6$h F.:uP*k.X6/c ر}a&8tl RJ&wT %G#zޒBC '5HRBԪn 3⃢#[ eSOeX'p$Յ3|Z+F! @򦴟<w;Me QdO"iMd eegOdraXyAN5=V;^-0L 9 e r-o(е)qr.29p^|?k\)]|\hZaI eA9gϬ DT)<߆nkλ ȝbvo-彪sk ( RLޝx̭9Mң96P5sHp$K|K!Ԟ7 /S9aUE m׺ӌohAzZ6#vUj% $GLnP\u)çj7` %-Ǘr`&-D9mi~ʫn#^[RaK@m 1`935>^@ 5n=13}V MLz]>>#{uʬ`9&_ I< ):쾊 07BcF1EjAp&pKȧ$?eab7E{IG!iք&>Brb^H=*5XE|N81rUUj"% EE++{y>,L[?_K%÷OBN[]0.d4_UnaNuf6H~vHjYro΋ U`d)ٽ,2Z~ea~ IVs!aWKN =Ԓ b<{1I"6]L/Sp(tY(_u}Jah:=r?;:ayedhc9֛?hH'05 /o~c = PWb%|_;, Dݝ'CCHRd%FP cο9tG_,Ya4Y9\j0rf=E]邹8Z_0LBdNkVh(̝Ž\Wvf3gG ՝-ra,Nw]Y1-XKSïCB]DlEuN&GW`5 W-X2.,^A> R3J2~;S\uN=*ST}cs[tnU"9g*#(٧2#3"wH3x!')עZY~Uy#e{ ̾I'i~$}^ |&nRP|'NoX$`܏9=ڨ! 2)V#@V!q}e&zpS&a[(`P*=Hp?C _A;)ߖ!3] >1bLMB.M' '-}k1C/_FfJMPbKI(  3'5w⎗DnxÎ'O1F#ˉCl_"T.i$ݯ쀵?_2j7@iqL]yݬV=תa3Nt,2ripI2dpT+ ~51qbh~ mnݠHaDw]y{[*]i5:OáWIc"${Eha;ǵʶy?a?~쐅bb7o:,' Ui鐯":}cl nڦ_+G[<8 Z㓯*ß`o/:^fuZYa &M}6O_:Ukcߍ j|epN#<37TyZc/<wFdZd$ GCEaQ)Q/<|U W'2Dir?Ǹuayd8TPBΗCA"-_kMm_)=g3sKPh{b:Uzy5þ c̑9f) BMH+ةVIi5wꬂA`ߗGt[)NHJPbLV8=}P ^rWRB(QrAL`K %KS=Yyk/:Rִ*!zrted`Ef+="oSUf0S%$ s> ñ4##0%v0!Q)NyFI`Jr$x,vrf}TnvgUP7O \\?q{(ޅBot~sSPgXuS#O:7}, zpeS*Rb&-$I MXJ94F6-&`4S$yaxQ$eL m}ty癐y~)%vl%!z+y.2( DݠQӦJ? !!/O@>?Rsg]Oե_KQ':t(U"_Tzel: &f6yn +sIg hKYaQY~ȝ vHiq7ZV$"cqI@ƛ~ M?t=d ߏ-h+MVWX ^/Cҁ_ddö}- sP湭2t h˄BcmaBAa[,G67Y*Z84ݗܓz Rϙd!dh.BOy@Kd4inWi=uKK?(B\XumdSìeih IgYȱC,?gsQHYv^Gה-V|[93aƘvZ z_s}(Q_f$Jz ̧7*Š@Ob6&7|ȉ"'X=X'PjOFڕ0q~ XQc׭z]܅Lc]5+~rZq`D*뫨\&٩Evw|y:ͮX|M﯃@p-Lyp+B0OWW 7~F Z4q~Y{Sm&K>!$ aݡc7)$u蹬 thʻeG)IЕqkS_}e ~ $i!W)ө*&29cDm{^"'9~{K@d\xp'u=&.69 7‚hXXNZ2˯}0>[kO3OX4i (sO˔!%'{tDZ\Iy͸CDGքZ9 wd¿H.ost?,Ɔjt~j}%IB e9J"'qk!8i⾮Q./,VEJ\/vh7hf '{av%d]Vu_rdDmw?9[d,dbL1 Vcv?4& Y){X Jk@_1R?nP$෾bJW ^rz-ؒ"tuԑ\d.d\dh\D.9>ekF~H% ;Vu  hwF̽ o屟T}dc"#~g9H{}$OϞu9< ;4 '|>^Bo{X+PEl/dfܢ!#?"rϩ`&|Rя\MȖtXFYZ%d]9 G,zm7"+n9WqYͮ28~᝸u890s!M҈ K}YH*DkW-3 s6+BN ۓ WwTl'22ȶ3/Ԇ{:0԰0V(;\ 뻞ϧ"#gǰZ( 90u v0[x:fA=#$=F$K0$'eCv,[a澍sv$,ݓnM{CAʁcJȒy_EidOn\Rea>8g~sn RWl[L"˞RU- R,1n ҩs6폂g9OAnDޑ\hMH_2Sd{ɥf8 h:KXm+3u0nm]mFxA[:i{Sxs^y%+$(aof*% ”ތL=?ms[-`$ϳ`a(\B<H  }+*4Lo,}{2LUʎt0?M a@?{0 ՟@jJtt`EhhmXQx9[~fSo+P.t#:ܟɃᰲs!g17jq/|\ޡȾԪ=|yb&Lr!U1[WF /I'{W(K7iч}g `nU0CP}H1%ygtG0Xmw/r\jxA/\ހcYq(*y\1 ͯ<@,;ڼOR*:Rwn?RV&˅ב1X-P9z/= +q;$mVTrDf:Lk>cb|xeN ]_>7O#惩qUY0 %LHn5«K2aT7چRh8PRGpAQ_Kk?>kC$p-#97&d~t=Rė7J mە؞f$Y^+C@O)eT sÃ{aAKRh\C $&ߛF/IߘWaa [@S(1]끩mi.+Vݚm _øˑ 00Jgt81#'oPW3.BňӹP[ٞJQT4K_wJ) kmLEUhQT'*wywHfo5 P0Uyq z nł'Cٮn0);` k3\jVYvt@cg#u rk }ۉ͇̎\Qh_X(ݷ[a4SW,~dV )}*ܠAUf*5gD3I!xu;ehɓu;7V뎹AF.<ܗ ;ȱRAGdxdA?@윍oW$>k tcBMԮdFUݽ"O=pfwxu`tu՞%Ϋ 7h+D.dpFMȠx)K8V6:'sm0)eE7b|eG qz04mlZZCԐu^̌9߹\`Kf{'2o<5fڍTߡ9>XZ|ҁܛ}~ 7? ÜW`,*t^6glGޖjr^|RT"O` 5or]_|hP+z>$l&ADo Blͭ0rS/J?тl4q?%~GVxÆMo,>~DbdL죛 Y%|9v h>#I0Y6)sJ0|Qv_?Tl73IQok-m\6e'"x/u~NZ9 lm+[|(+_6:| Q0໒:8C}Jx/u'\1EXq[J]G[QCW`RWL),(hyv+r]̤~?, Jㅥ7Z?Nj!sd/*RlhH jEv=; SQ?ncr4dxz]F2WaN$QXi ,C&@w.U &>y-MbZm5Pg>G4Yi9raI\S.ߗ<"S͢T(aa䨞Us,eڄkE /H%@o\닍kWN O%`ś!eXm!8IІMRD4zɿE+y v9IcH3S`.wYc00`wiT|:io”Oa"4$?蝃:DηkhL>vA# ^aj 4W CH꡼wlol[ [SsՠYQYi)r$p"Ԙ]H o\oANUqBXMRws9? ʽM3!6$芖L>XUjJq&0U#% V CF=Ȑ8im1C͍]=canfd ?H@miϿ5[k3(YnMow!/ȼU`CgTx>U7V!?ka d~ʜm(5?B['' yյY"BJH&rH,G#Gu,Cnga%vI!^.rQzQ8'߽F ap/Ą6a( +ݻ򤝞"b/tXIR^ )77geyáJ<VFՂkťcCͯ!B|P"uDad[3o}fk0N|\7{{ +eFc QDEꮄ*F 8k~"8pʘ8 Eo^'/`8ry-|eL1BU)Hƞ%A;6M_za!7傚0S}r굒Ͱtvx/#eY'zjρ@g3Q*i 4n$薻$pW SB~-};zucj0W}s=^w{#7S^8]e}?nfU/wW1n70EG86 uiG"$Wqґq':F9. cφ26I{Q{:v/ċnl[)À 6;MfX# ق$Rw5r ʤ lGZ_|E 6)+DW./_oD.L/_Tws7!ժ|di4Y\D rZAXޠ5_~BWַ`WqE^dHUM_DlۢO]p^~{F'E8F\3Ѝw8ń:.-̕٥|y!2f7@Oմf Uu.P]? 4>ߓ+wG\K]fV]ߌΛ6((6Ӈ"'{nIaZ^@dnlGM3ɖ3{/ټ`Gp}uSuH)¢! =ǚaz"I7 8/?G9%%ufkv}T1#fXv)QBcF3N¢ݺ0Kh&A˼Y (>*bC7 O9maɂu.^yZZZBiia =+5qlwo{LKR=Dw賐rIyU9`j*,7PPj·7&@Jݻ{1 *I^IG:o7X|8Ts ]q?i0w >;/Ou;z>-IZ\a1u<l>'7wL#*,>gO:T$4le lXir~ެ,}A>Z%YL(!)Ӯs$JnEOcG` =094 UX!zU9b4t3L$!!X"t!Yzрzw +:l^#.0BN2&^a.(یۭT͖$`, ',y,IxkdzHӈD =9 ?K]Z*B=@~܆B?/Άw/ʑa~g*uryW:.e oOQ$b:Lx-N* W=Awʫr03ץӖ@O{Dݓ0/2dcTM-_LE Z=MZpB0)Z$qi? e,U2e0d.^՞Ip%fGHy'ڹ,@v.<4-mECn޴+OkMu 3S$XוHN~U_9>"$IahʏɂvIuG[BgAwr ؛ MtcL`wJM$>K C vg䳓*',M'15T|VHҮs|{ecݠCR |De&#xX8+c`'= ~sr Z G-1, b%`{̲m w¨ק1y+H3dMdsꂞE.Б!VabEe~y0*tw[{-h+DS`|#GȐ 9hvG쁮C>$2&Ll@&*gΰqcxO#$`9RDUG qUY7"فŃ8<_ jמV'`p^}a]O_t˅/0inE3q^ c.KVT_@fH2e{4Fz0k0Baxa\{*(1J')OMmu%`*oS`Il,i%&=<y%I[g5ۆF:{g`!XS;*. 9Aۿw'ӡxHwl. MSwTd0aon0Pql_:pP.wv[%|DX}8/:J\ޔUt )F7Gj0"zu򃋡ȭ o,:_݉w:IӰv?̋5 ÛTBė;eVSh[۳vNt)@̵U8j},msˡ'$28 ϻA dy^1 {IH0O?;YF/q"'ǯ]!d8n᯿~ z^ ㇪P j5d prE!ggd~Q=avpv͉=Icx:hƓYU!V%'Xd*/{'Bi2ԗ9+'o;o_6/eȚz6=D>/"U6e!#r<*@ZNhg"C V2zz@ys`ڦb}5 Νg/9"Eih|;R@/B6Ŵ¾Zs|/TTfgmdG)5F]Hb=`QZhFshD)鋧*_Wmb S,4lBa0#L#Wޅ ^X6FR֞>Eh4} l~Y䈅Fbsw^(N :u 7}51n#{`"3^)#o<%U'2יrYGV+ θ0:oSh2CXzH5~SGs6Cghw˂T%-jRS.`\п?.LZbBVNW2C20 ȲX26a?nUJ.{a[&w D!i}2E|t ծN wkdSvy4l CʀH[tW7t<{s-4 ݳ I#˦`ݔ)I &Gﺯyt{G4MҥAGU&0zh< :DXȰnv!NtODQgWPd3׳_IlsOES7mPU\1 Do<'0 ~Z5!A@Mza :`"qQKَ v*2RzX1'1 Dfa/6 Ǯ&KDquR-ZRﷲuh3"o՟$xDEsE")$Yw9댜ڋCJU2|ܬUPcfg($#Vqw(pRQbps>gǐz? <`KKAVv$o|vVjΜ~~]yk#Q<< [KL ?IkŻѴ?`91a`{|:tԷI盷&P}Tgm-O=0' ӧ@*%E+PrVve#cmwfr#^;MwEMȳvmR6{?GP{ avnlTv[ǡVLr*U1#w^-[8dw`&{!Gt 7(R\\υ)789ex9h*L8RX-aҒA5Lp3-̟ZIߪlv}`6 ;X[B3Ow+g]C4:)nI"|)#fRX2~%/)ljaґ@r-!E{XX:_r;e5;B_=3uS.jY4hV6 2C݌'S wG>+]?BPN<^{6mءx+@ןh p0 WKN\ 0Jyۢ:^ ֳ/`q3RR_ё-vl^A^CGahNF7I2-H9xX;Tl <Bp*t_ؔ@kd%M VzŽ*2~|9vo><_#я&P v.VO+ qD!_ zH}BC> 9H+@`bmo:hHu.HkUe>OܠGb.ӾL/2cB@DWN$ ]]&nke _ )DAzOδMDO9!2|mzׯ~?G,9#Ir?Sn\1BǻTaX*[ N(6t/ `\xDܰw(ZzRM{d( 'uD7GS,*L$ g[y+IcnͻiL9^ &ʵm>f 6?ajqyth|Ru}R&7S[ƼTXSj;S_iSPp mεYy -6Wե8,g$ ~tT* ˜cl_Ejd:8%&xٚk$zh/ds6 lˡ&$>8" _n҃Q]PsMK)4zl _UdP;mKyNW7BKj^gP=J61MR&Qq Xb0+C{1s 2'6Ю#{Scm)+2?ڮLwgn>dR;~5 Wn[5U[}_~?m )r!xbfzHald&,5+C\dhgގL78o !RN8;)NDSM6-^ .8 [o~{m sS`Aerg>VA?Q(Bg: xDZ3||";!zQm*wɊo#0ݓeKMQH?0hPr;L3YIֻcR[Ξ/<sw"?h:?mT}ŻL:2031A{w( Z+y:nAez~ȫןO"OŝAM>d\{;X#NoG6AHљh 0{B&КxZ#LHaG3X (7BJ$Wוob3GʏQǓUXޞk5:#4;h{j1.uwŏq\nڛ.Ѵ/I] %SW(Y;)@ɸcT0KT|XUsCŎ螉z C^Β^O/!ΗMd.x%YD?!,^';ahmP+,:)St@FR[ơ1is0cO8˰~&p>+Rw D;jgZ x+Q\VD!{joHQW kzaOM R' }%4]=lp__'c= =GC;$S}=e[X8||{J͟4Ag02S@ACN۳ O: {ٛgkr 6,cf3"KZsH~#_ky[ra>s="_gUΊPyt24Lr ['Lx&0OϷƽ> 4mNK/IX]lCU a~. %8OՅ ϻ1 Hq '<7W0%fcn'ʙ=_X)$/fKE&w9>{VL~X=Fw[ssg; WzËa5t, Q>&z{:vQ4G.=ztCua:5.BZ'}_dY&#Mi0sJ;~]۱]|%,P{P7C!crֻ\XP|FX Iݍ@JCZ~Oyd778-Z/ yeڤ_ta[ΓI;`̺~ zX&}1bW>Sm E絃H@l }(1./o>V!⾹=,r5y^Y#􃧑iHW=fo#_z|&%` ~ _2k{ g6 . ^Ǭ.,l<8& k "{}YnȼK&VRf>n)FvvҢB&^Ͻ_ }"!$S" <-$`|hX,'Sd켸+˧[b"{EB䮓zgc7|L g z}PbmZjÎ|7XW[< o^G .Uu} }: l߯ #:oh)<0cx~ƭ/*N&n ޑʚ0c ,lk!5n{G02_tmff2w&+zzh`a{Mcq3T燿`)h&dQYBf\խvAeCR[֑w[^7ôԼ,RYEep&1k`v@6ĺ.dUД\2;o2HЊ.S;~@YF+n ?u V`շ-Xo "W"لBd3Fc=A3(p-wMʹ@'SНKXO,#w)r]=Y5S܎H~QvVtUp7W^觋%ԅ_]BSz˭g0%~k,Pvw#c~d-/TRY|W*U4ofrPWX|& F't *"5}O7"τd?zXu?Ek2@g]2KW0۽BcVZI،d[vޔȺgߓ7_:u"#Szȡ!3,}cq$|KXu舸(=ν#Ͽ9/z/:fChÄXQ,L펋"ro='̟r\0{cXS yՂ;0D|S_y wٺ4(WΗӅVYs/- :(S 3S Y<H"ㆤ_΢Z#~[ꁾRMšӴLD:KN= O?IӫB`%WvmW?I7콮I]FbLuA)^dsf,vĥo~kv6?< #ǥHdz//Bա}0ú|" 7lno &0bx[KsxoÄu'lC$<>TfGӏ;הhIO&~+YxgS>+* sBI9/W/|`^!p3LM.|:vikkIPq4w.-C  s&yIH7.oCf/de~<L߭ ηa 5 RrEAAWԝ y2OfJfaI&;G" [7z#޲w_ p4Fk'+lyO[X#(%a<vwds :2(!Im֧7;6&Gl^$4=DoY Em`?3jХ̼0{O4k/ yk D\CO$_5R-gp< VK rM\: ݉uݬke(baHqLW5laB8r,0_r>qdv}O%5gк saq.dxrl}#{`w5[H&Ҟ7Bov_[TBjuRor}v 9y,=F}$nd{CGduNA =?~ϺB@j߈҂A<+00WuTg'm~.X}km<{ o@ʥ#GWȹH*9ox }/ŒOl 0$y#вjJqu3?&V1O'h0uDX5.,[{;gyȮ"/>א[&e t'ܡ烡i æ0ĕ| pHf^+UW_|Cid*r9&v_x;ӛ#69I䣛׍hj +aVL!AQvAH j:k`|~QN dġqvW#< 'aU ҝj4VZa|ɒl@Q-&',#q>4{zvYeiⳗae+nV ['ؐ0(8M Rway]{ 0fWw\ޘ?%ⷷC%rasؿ9,3k]}VNeFMlH Z͙'AgQtPa ƾ/R$$zRE$R*$YJRd)ɞ-I2|kw̜IsӲE꿲^$ 2fww'1?r<ݘa۔w!L|~d Mg). 'g}`!N [ #Zpt) @66)xz* f[ )HhKϗخXMnЄ'Tx&Evw@@+$Jdj̀ %[ K - aJ[?_=7"F"0KdCmW bV\3B=: ]geW8_=KkVEȘ.$ iOK")aY> uތܫ5&}]%ʢ0vq pqzIQXjz$04<ܦ G yy4/@]v]ݸySw䣕YJ="[I?ڥQ[77n-ꈜߴ%'H B6A +GkqɅm9-縻7p㶹+ PYR; Gٶ=0ǘse?u2&kr@e4Bνn.@zĥaESw0`&=Qr]}8К]7u 4F}b%QijlA׫Ǿ ص'=;G>rW\FNO븑bNNsĥBC!!S5)8vDFvՌ}H.5zxky8Bo*DԵ%pub+2Pn;j3^84ODq"]l 8Yy[LJQv>kui~G@)[p* jJ8 Ò/r¬V+Zm.ʫjRw&L{/' zŏ~KI+u榛7\n⡯ ]J}* fJO}V}qh^|X?> i[̴BL&^*%lne׵{aߨ`f;uq'wYpG>G >Z~C;$v/Y}5KrG>>BߏMy$d}LtWZgܑ~ck$9|Xmw"oVa rw-Wm`_ 8&F^Ó|-M=QcJfdG^[j*{^-tyτ1D.i;+,\BE,HZ)U^gZ[RmiaYK0.uN'WXZ&mkH ?үAJ!2<㸽<Oȉ\ާJLL!X̃) 2y3ʙ`yr,zOEȏn 삆P&0Z2Qc˳h az"fL9oݗ aAm+&/Y<=ƍԤ S=+q6Zm!7#AWʈ}?LHZJвFz20_2A]o/K[M 0[OR8얥sm؇18`gX ae"S%b`f\bbLO {sچcDR&pޘ? =r!WB dY}׃99qYXҫ+a`%Y+L<:ぬ&0x(x6+ɄuT!t`)w;!kݻӗ99dW7jAS'Ð Ӱt+ LfH4rQP5x2\&5e/%ēRO8˦YU h=]r.Y/zB DuJ'g :"VI0o.XdK ^W.ȍWCi&2q}}!uWs'zt-y+ɬFpOj0̷ ?8HL I?Yv<˄D|XV~rfhUpdjUlk8B {YZۢ(k'i]`n"Uat6i7RfKW~qTwmGx q٪ Kmr"iC'٭yYb[X#BOv+~P,2V.owGS͝a6ȵSfj# ߴ޿SVȋdނTrtz<̻vضGR nY( q>/4ޅ LZȐ]3P̀tB:%bLMRM7Ϥ\o~{ COXl׫t9:`HHQh: n] es=hCp؏W H/ų: ~%Ug޾S'rdiDv__ʻ Yjܾl R>@Ja,7]{M y_1:_!F_zXܵ0^w]-`oJ}X@}\ye>ܾ v߆Vߧ{ߝE&o]OX rGBY* =/2+5:=cFVuM-нw0Y)UScQ: i⸧s 'Zʾ'8;њ$w=yd3"nѫ mrHs'iX櫋_&=Nw )*aD<1Jɤa7J4Gj{K {0F-@ VYEb?@-4J5=) uO@Q5D91Բ B}~إ_"{ -3+jvǵ츙v|'2r7#U#m3 Xx0/Fzϐd8 $zd>~cA*,V[]MѕS0bݞI32!m|$O86b.wo\r{sImWG,iK'l}'I&q^I]""'-:^'N]?wkcڙCN#jCj22@֧G綯#'!o:Ȣ/r4_^M06%x.Nx2k71ܢZM, Rk4daAgFݎQ@sEub,ıQsM* Q0yú@ ɐReToB#;ۓVI4%dZM',$>xi*(?V.UPjy7`\=\=⬟{ {7&0fPG<^X;"J 2)8 ^guF7@ww:<`Cpa*&St(DrsKT*51,(0"I%_(iܹOFʡ蛢zC9wZ >Fߋ!w{xJß ~EhQE^?QfII^5WI6@+O俍A_E$ 'B ɯΔ"[EJ X :;!!? eI pڄKJ ?hÔAyyT ;+\~ i7邎uQh9U?˯6z&aٚ-"C% PuMz ƞ>n2s=o"i;)$g^q!rrϝȾI*95& {t)d;9~6+Esf!=JiYXdLt}\<kҕ+pa4&/k0'}2*:p4so$<ɿS߀erZc??7қ_Ȏiy<3G`uWsuSYO+l@FԈ O}LsV__ c'(U }3t h aqcE59/[ҁ?^9pX&j mUԁS?a>&`4Lt g]9@m6Lk|{dXy ,]̯_ Ӕ{HO'}$Ȩk؟ ?\-'Bg׷ў0\M>'O̭CFöHy낝*ln 7;[dc%{(EW}Gh(&/uQEx[K>k$@ٕxN^gC(0Ч%hwF5[妦K/qH \@oU fsθ0r>u1:EEwj.'83jf6!mWLdtï"t]GSkd ./M u^3ϑU=W=9N%uW⼃E AF_r uE~aP}hm;6z_0+Z0?uلez !ݚpc(< K5Z4]`:v t˭6p e,Ң7^$AN U!8 aWW sz:VlrAZګ?+V223xoD#ߊuHVqIbO,<ԱZחZ?ÜRAt+ Fޘt%$푐U}&P1?ΛfD4|Lks LC}wf;Rr,C6eCBa rgY=핚8`+Xz9-rAFFyY3|iwQ1ૉgadh:$x%ȻM)ߍo"ӛa_n?7ڀ\ů{tSnmd{2fzu%'U /=#:|'ժ`YҟpN8H3bRI0t>:q!Uqu >_"8aVg'N^&Lo X=Kpz3Yo&].n9ƒX}<g O܊z6#y tX9g_ۏ4GOA%$1zN~ÜIC]#7yh(<=M !*D|-hCZ-4rid#"+Uȩ?g]Dkې*F6zMZao"`:sP1 [cGJTz ^E~!C.uM tܽ5Zaz\.R(MQf]6æQ^WA \f7> _Nݐ&l _ ~<^r_mUBҮ!H^6><yf# o|$ϸ0G L# lkBiG30Sł枋fN,T0_J0zhs'TS#\u"rF.0ĝzIw=LAA&b~+/HkWxeCG/{` ɰ'3? }s#NX8. bL?v1L=unBx}ʎ!Kz~b0>?q󮗭:J`O޶=qkzd f+#|W>מ᥂ aQyBi5e.䯳M7߇Jx[ 2 =vy6ޟA_R$,>Wb 9>[G^>M(:lg:lj* w$`fndN7nA&'iªȶNr h@z^Z~d9 _nj~Ef}i$i;WN9#eKʄx#\7PK͉f(NJ]w39leӁZ4ɒJfH;2,,gn}GiKIȒud|sEOil}TɄCK3[atU3h Ɗ/U1{G5ٍlkÔ֨Mx~~vo!8ۧf0RIy&+-HIѿlߏ?sq'=+M5I Cx@ZeS.а) Ÿ徝us'gywv"H˃$)L>*j-H<.&54-Ix~+_O/GMCQ؅PmV:C55QCA'aVxj, tzںvEh]&r;; s`Ԏa|!P"fzVS.B~&2D >wۼ o)vR j:^ UϟT>)aߋлPC k^tU ewLw" JCԋgđEﵴI:rL%II;S2^$OBڗ^X {bG0MfiWre!j8m'g'dWt ۜ];2q>K0˳aq yv,ܷ_z>{b=nDgÌܫ[aeu6T#$-^Fӿs~uuѺi_2Χ:3}0Fן /d0H7# Ú\9a&1=9I+^*sq"G:;o pIhY|)5Ag_kYz 8 +;ۂzŒlހD^6 J+fCM1Y:nHp2X+io^ w/!NdOut r}|<Ì[RrxhPby6ܝTye lS~#Wz&;do+׃ܺ#.Y&Y[Xx-Ϲ#mH9ByH0nc)r*G8)z |ΆwO#A݅{v fd8Eef7bϝňB0ܩ|ǰ)0zlaBK+ޤMBg!]Q Hy/dHRM@֮QO1h2o9))a63xzeuH _&GoAݞH3qi$ǫR:M08`k|L? /;0v\~>w2]8RAeޱvj7zOBCđP-Ѻ]N nlhHj}vpT4 ea>>Mdg@UJE["ԝuRoL*8 G겡/i駩0u%j!Z'iz򾛭C @g&.]=S ^^LU"x08Lk3,Lݑ\Yl|rIU=q|jma,ۧ;|iA叵}!3ɀ맩&^0r5rn{Q,R/ C]f(9|s2,/ԥw3]$1߼*CIe+G\+{=`bSX))WZ:O|BݾsLn?4q77l&ޟ*GnF?_w#Oǃ9FWO闃#ZJq ,Ut&OoOwAM ˶_5-sWKac_)yW$d_yYm3+m_d+<xY3u(ت&~ك oBQSz=dZK\߉l筏Fؿ'O$¼/0"YBKFH P7?M Ӂ&YcH3vx 2+DtEȥ9[!?`܅,kJ #AW %F`vkz0Iy5߿ZAt eZJ0x#@eL%qz.1 7E+k԰&If>Ƙ5 0|[~W'N }M[=BISۂCǵ.@QCupۿ:"L`MuF}+_14G GM> >!Mک-no=N 0CmN4Lpd.{f \ZZ->0]lU(˞'$wya3qb"4d|1 eCa9BCMQ#MnS \}]\`Vе%`v{?q r.1kDxu,Mbo/<ˋ4?&2Ag'L5>焐w2F]giĘx\֪Wa1r|5zD/,C!{y : EkhC1ORL,g*]${uRMaE7(':ƟDS,=5d1 L$YÊba/vQwZ"G MldX=2}d0Tc]Lжdo(\Ӕs%A۽v{D]}! k0Z]~J vKd!Mݖ1HN9H)qWz/y/' .j~v*="/ELC}F s1KjTRyM09yffOŠ殣5H%~Ub}zNu;2UaُA*]wnsȂU?0Sx_r5Vаw3Ok+%RзQ JZhm0dg<ܯDxZWc&;iXȊXh(>R4zlFųeۂUdxٿog'itR72~e=< *2 .WqJ9޺o/ҥ_"))YXo ,] Ņ0{$hLg/b~*<DbH O"I93]1,? yOہ0$UA ;j~Gq~,&5s̼Z25b$̤,],G ƒS_qU|J'Ԗy*A?2Z?rvzσ@-pYڲ͊* y> P}7Yk=(S^"ז<sP /=d;~fOlc<32K S'aɸcoYS$uԩGzm#QQ0Kރ\Szai?S鋺<ҹtj2J>lSEڻڰruqu9)"x_~{Dm+p5 >Hw:AWG)v~dydƒ9ӽ>ASφx#0z_49RBiwq" Y$tяP,_N)ܸ T'IŇUUM!b6s e"Wac&\9F:K.3lgǏCG"K)Sdn"Y~"A>d_d/Gf~J]޻B?#3CPd=@ܑK*tH%_-+ !S&A ;2;9b3 WV6GZ<0%-f'7* Q<%/BhODo,ó{I]0ѲI6H~Iʆ$?kodO\)v0֌ߺ ͧZ} ? g2㢓zi)Hxm%л٤Sf;qsn)L(h\t1/ *rU!d8Mi͓YaՀiHےRTmԪA3 d'-mц^#k0u7#Sv I/, zvG79rB_hÿ]0\W\t{OC\уThND>Z9KkAϩz0%f֒puR! 60(b<0b\R]NQqK&ÒKZ]HM3‡ɋg{7rHؑ5M%2NVlA:2eX\s~u fdz^NoރE`CUjM6QTh ę,1%pF7%Ӓa3tdܩw(:OVM5`@E 3`jw-RCYq3?q id||/J}7C_ U]EFY#4ӽ|{9*| O-2k FҖðvuDXU N+HTvЊH"Tت,˫`8=d~׻8;|x7(>ЃWEv0a3̿~ e | H㥡S x|~])cn@׳}q{{{Gy2˂Nփjr5"}"7?GVב9F d2:ҷU?J^nkHWݙ7MG3&t>qt g~߇گ=30!d Kn#Ciu 51[0a~=?R D:}|W2a:Y.MLy_b?qlw|$xv[?{X~3;H$l{L`AN,[|g /WtAC;'(S>+ N]8QGųqN0}Z﫺Qtz.[6@c9LH.vl:X(uf|s.f &&A9E6}Q2.hqqw =x`0v) q_A'3\O7٣tYs|%)9>QSACȺ/Ut[}$5BnAcpR &9\/ƯS7M`ͪJH;hPJZ?}d^zY 9}|UE˯W&W-({B yuw+G+W? #'CUidUd_?4KB.vD_2fCïF;UпTPW#1[v:K!ܚ5O!rZ%u-YW # vcU7I^mSIWKRU$ '}LM#L%.MP}[B1$Z L7 R]a&oi^ߐi 4OD!J[Ѝsȶ5O :Dl"M'ao}|ga<N=Wa-r|~eF߳R029Y9/ sBHЯ{蓜 f6eQZ<'df@xҧOx'>,}M 3(dDr^7|{h5 &Ki\} 9GMct`}4?oj"%#Bc 2~8tz-%B{s; @[wX|޹uҘ[e@eI)[ %~ΆqT\yPm[hl^XBoʆ03Ѭl;}BԿ1a֕5b_;zZf;bko so[w S >=(4=G/1/ΜKGҨ!LmmSه;7u@B!1d] 8尊D5>+c+ 3RXY>g@)c} }~x{2N06SjlyWkO_ӇQdK*̅%x҂@(B!Nvlls^QyҹY >/~iɥۏIb{$,aI[Ra [j8a]=?L)c4?E#!Dvԉ/XGƢq]fIÒ?PRr2lZ ]/D GU),_)0Nf m){7/%ou|SGd.ɨW!I.ɷm$z#χN"EZb68 +'~Ҵ?,MOBmYpO ŖQ<tb@_X54UEFU]d`}2 IB>ad 7~#sH10:-;I\%IUa(I : O^GA~g`P&^8„<;1DX:!r:xRfķWT!ͦ ΜXa30|N#&*4y3 ~ >NkѭQ0Z3yy4d!uZj_ 43ƿTa*iVY F,ȚyjmV\ <7A~aO.ŸR&_3HI9Wƚܮv 6?WWឣwB0KO],s7mM܎O,|}Vyr9"ږ(-G=r~mhN@ʳ%jv3 S_jf/~tK[LB|M?~% Ӗ{GWQ>]uBKBNeVdI- i?|`i 3V ׹ըSm{84GkZU=b.}N 7ڎbHwx~g?3~}du Q"G@2Q0X#+[ϗ|lP)}t@RoI0,|\s."j+#ѳ Ŋ0񐶵!)Hc|>ч/?uf~#Wl迁L*itr"H/Vq9i:RYɐ%Lp.'COuD'LbC7$@ߋOP`5Nղ֡WqoBn-*$ů,3A|sF:2y3 |AƈIh+O/eò`ŤPϾ:tg^ *ћz]56/mw+`ٽ w!LI HtC L/F}QEYܱ &P~nx|tq> VN9{iXZu/n)uu:Tn:{-ꯓ`\`j0j[z"9vUDvZeȔ#ٯvC6U-wtL \Z{Oq\0{Y([7sI7 ׹KPD[b%EqT^l=C&C0{Zai>3ڣjG" :!% ͟;X2 fBfR=`y"O$\_)hC.`=3Ϟ}X&P>m/^RoW2 ȷBe'oޚҰ܉LXꭒxbဤG Ӡ FFߕ^du-|L[v"-级HQf$ِ䆛O`0Hj t-b `wP!h/=͔ uݯ)pw l\cux JI@:ݑO5yN{C eOEMIlUP@N'gץ"g=A,Ǽ{Dm 캀OuXNBJ9Ϩ^a~^0GMh6pRLbw @3 󠆶OkKm#-t;`&ͮ۝$RM9}i?K 4TXnmm}BMC}c)L v`NU;9z>jR6+̌>" CWVB6o젡2upxo~2i4 ^KY{"I3x$U]'zEWy=nVחbW\ytE15&- <؋7>x򖀷P$b9 Ι|a V\4.i|'.:ڹikF kͼb 5cBγl BϾ6Pj`B}(T`p3xйLj0{n K@GN]G\D`kAZPo`Sbv:R:d؁ =a>WGMXcjBnCq˼:]tgF8!0Y{vc%a;Y9 s|spi}l;c|yj9udi##Cǐ%k:)<\^Н}Ӫ?E? ǩ'L#ioݍ!qձDn7%x"q~ ՈrIgo0w1ѹ0pѾDZ0}p#mϜ d|k_r`Y^>GIu2H4`qy5)"uvHY~ed^cٱퟧ /.-`M_^W>5/8Ƀxk8`$h$+H(3!xvzyR;}1f D/ezH~>B*$"aZm>P 9K _-Qxo-9Z@]} ˫4Q]uҍ0bxЕqU$$]E{Ne ;SdwKxWӛ]ڗ.IwK0ogv8f"bUgid]o$y HGr'JnƟy')z֛l{I^Ò [LZHyAo⥱fyv%">j`F&0ڶOaLTGMP`r~Nman$3Q( e_J)kz/ 6> Zk< (^lV3 !֪Z{u8~ U>Gjzf-" =/d L{ϛ讔%t~Md[c1ټlҍ6HK6{*l -wxj_ CK':)K{[9HPv3Ffs W{f ;`FPhI2+T5m6PJMs[~f^4E'bL$<2u ]t.aMNRiZ|LJ&ϥǨN?D<-ZEU0ͻFiB?gaDo&(ohArxǐr^Bws*t ̕!~Fd-y )˫W*\kE RdLl%oMQI#ϟ83l!^c`}K9F"E g^edMm 1~Y F#a-Q)|Ǥ܅6P˂(ϙȻ|>{UȯvsrΘ]3!hHof(NEF[saƭ~W4̆dTE!ޯ4:% N#|OMtX~^HryrTdH~,7$ӜCNΞREm)f_~[GqOȧtއ=s{^2BΗ2Ej&}7~h*χRaFI~0R&~ B^6eg!t7'e VǶӷy?ҾUg@F%;yJt~'R^45'BHoFF: n垉L/ζ!+|\?Nl'v! oXS4`  ڙMKm]P3Cs's[ŽH>wj- oXx#ssȺJœ%1ҍQ gƇ[`N_B!h}g_) v\ͻԚe@uG 4\Q'`@ßߙ)рZMk @ΰG|._g3XL<>YmO9F\xf0:cE<91i ^QX]d/2ս9RJwu>CzqgFu˓\JF[BrG`Cw݌gPfke r?Z ϓa&V>BVn|6 UQ\I rft^I¯F{߭@c Q5@aDʿ}B'Gk%Hʽo\uC߭͢ du埔 SEY]<>rn6zG^Lgx*Db;+FXv%B׷b.CnNj&=`asHoX3 y-45w"ݣr6(4fT V|cY3.t f~>٦k*?1zB2xom V.k]HEٵH'`IG^(yψIs#ztq5, E/kJf)vm m\.yp+@Uz\> ty@+ ihߒRVE\SgyG ~}0j ] _* 冭:_)&\8+{7pۘ@_~s" ;gC6O\ka֭t Ӝ^tq`S濼$(8" Ll`"r*EBO#r,&h& _ }~1Oog(Ӡ=U oF jdmv\ g:;n/;a)&7.W=A9ѰTud\|Y'5#絏myȝPt˪D$sn.S)oC2$& 0wګ6fLS7ϣ*wbSpkcH뉂px?P-F)J VI~z~1/ُ24/"bx'iհ9Skj#ky }m./5-HuS~n0m2d:4*k ]c, Was<3v[#k#C'pd]?|C=+~X1bCA,HsYv䴟<K-aƶ&a9yKk(W7,O|泡GQ0& efH|kd2;}KcDWm$Edbcw3aݴSN ;l a;rz|PP>\b0XR@w7+2c2Q|d ~!m<-'$nRfv_7 A{ϜG 6䎏&`s^=X鸿8Kկ)!´75,UG} x`/C%:w39f J`pⷀP̥o{62Gm NnU̧o}Չ2;2!'7!C цL6`'p!Qf )Q05<UNI,-fia|ŕZ(dCLˁlh`p c7U )0Xݺ?f6%--QMHlnr1IO)zU0hJ TNtJ!gwfis5 h8ݳ'zl1^KwL&'\+nn4h<Fh&,B+ci>JGkiW0=n< 2oy>$"u [9[+n N;|7&SIԵh9Ykf˺+jfve=c5rsV{>kxމ@3^q N) #[29IUҨHdZUظ*Ou M QaܲUP6/7L$#:>"nrw)'d`IL̹Ž :-Xmkl{RS`CbȻKd͟l;ōb'tۯr #pYY/oku[]u:X[faY;1i~sT )KD_P}EvBzMαH3cVBARY#fc;'] z*!Ǿi,3,)?z &80+@#+Y3* aX?A"mgdAb6ߖ@H֤bL`v҆]!6FotԘPgME OW7<5fKUo/)Le5.ŭ< TwlݞPcC< 9!LRR smit~:@U*AkO+ccN`G Fgk>-C~zH+ԧZ#kJ#WdUeȄn:\qub?0U[цGnЏd(iHjPjE!qk|C 3_.h2Y|~S"̠&^Ϟ.?o AO.7a Jq?a5ofqۧa oNډԓC.C6sP>o &P>xY YPBT?Q,.s*'uI \dԚ}G#"ö~B=1V8},{ Bu Hkώas$_%)X߯uAW0gwtXoW`\׵Nk uOT.#һ;ڟ"/)zCǘI&Ci>d!z]'nX{?1˃|N_aqQu? k5aڷѰ ?٭WC۴zаK3F_ ~Bs/<V89F̝^.Zrrߡ0sg?wdbnn&B}_fYd+PM߱[l6{C#\\xCvAn?/}Eڽ.0]৽H%;EYKKLX/SCwVAFZa*}wǜn}{fd"5lLW[cc?%LԪ93t75],3<2\eѯ]02mQyghAӺ&񦫇 _Qji΀d\;X-x=rLi(u6.Wzt r6 ?^Dw#R~1$(IdQQXzFη5Ԡs 4Rax.YA !iXxҧJ^S̷K#ĩ#59XoQ?6VC%Yȗm01@<YZgUڏfMH1R2^,SA2BsX?̍ sn/=v8BorvB}w PvX k654\aR ޿Amd+JyE?5B2͚[F ҥ(HԑB=2| 8. yޏbY&Ӆ τi_u< KA҅tu0ao 4:J@GDS* jW hJ/dtemԬvrMUyG8!AQj;# ^v+3ڻKxٹ(EuL%0ěoLFߖ҆B/ܝ ;}9O( _kݮgrj<< D%8޿!:}x&0aR B#o^Poo`%Y4wIBϑNS[ E~!_Cu½y#P#2ŵ 3}F:] fX'G$+y>uU:bB jA=EygR7Ln5j մPEt>v o<r ]ITSl: 9Hv74eS-0zMX3rS BtcLe!XOΆ~Nl>7s)U叺*ku+W-f:֫UKdqd32z1Y$oq;$J$}+?L_JHҏ$Sߗ+<׆1q ; G:.R4 c *6`^:nP`S" M(9,tfqцHgkq֧½x\6#8ʭc%EiCw>8StW`Ђ[Ft,;#K幃l‘[D([ ߉zkdNER uRB+r?srqO?,kB!d /3|4bC_laU!SZfvVgP6F}o E#ԣHwtW &MJw\s+9X=!pLɉDa.$]6I\ߥG٦I7Nf^*(0<0waX(zL/A>Y  !LQ]~|eaݐG@LHVt˩˰Xc4̓ꏼXwC|s@]lLFu.J^V-P}Y^F" 6.$pnԬzN'9Ja`Z/z?>Kj$K7Owޫe?{y\"h LMc#`^:Hy5A+Gl(n|5%_7l$ WT*xa7Ba[^w> (zu6YZ-_Ι Uv_urhByPb [n>i w!SUIC_? \ &_3Ҫ`g킱;"0S$Űˊ 5dYh1~ad9KBݑW42;r3A1_1j 8:`mwB&oǐ|uǫq䅽UanU9jFʼn~\T+Ln q K#R.HvWdJC`|O;ҎY*8&XIHz5_~#Xn9#UT豷b6#CiJi}),o)9 T\O8hLwV5b& 0n=w޶@z6ip1qif joψ}0,R$^+WB$@|ˮ06y˿Q0̕٥޼x/ eF Ge,(o[k 4G!s*("A> QeTDwa?U0xu,ElH{ZΈS:P܊!&d_Y%,9 ngsHK\Ѥ"IL/X|,Ԣ7 gcl4$'>uJė+0f_;Xre里Qf5at`,,\1# P]{% q=Ů{:cٱ=Pz>CO5_5=lG-l16ߺ `.#ʚsW&G,)i=Wa9&]X6sp5>ze݈h=h@֓W;Zzڴ$.%Yɦ\UzH7`} SZ3#%b&bmdݳEjyl\_~"'^]ʝNA#R6?nBfOa-H:'fjR/H˅^%qJ(l ԆGKqYZsպK]oIo[d(HњD!Y7O4:;Hg:y: _|:m''7W$G9uUdCZFƄTs}-޿Z$uUK*]c}FoC-TR2>;_3w̨߫|_B\_',zѕK 6Rﰗn6];д, y 8KŒM6Xx%@+ ^gĊKH8GLh3"A6+&0"gLm anA ,{vDGo r =XbB37EGx"rˈǫed۞jlà~^ T>v3W-}({DtP9SEIgb~{*q{ #7}aw/Gd~{xo? 0*.sGFSK=P$PO}`C*EDo?d=t`uY5D?er%z_eY;M;IG!#Y{\!1LpƧ܃w v@_ 6^f)< \˼Q,d;مXHt{$)cG<cD}0i?Ay*ʆ2¢J-R*jF˓ՅU3R߮ErDߺLjBg)k 9cgM[AYtHaaPue6kW̝_5OVZK3VBOfӆy<잰NR ,AT]iRm!Պ% yCm5$u[M%'laꤾ,p5Niw(EbV|Cqp~* <=/] ű,Ev~o 0m2w*~թ5!WOgC2wiԽz.О\ f?xUn 1Ty{Z _t<'JQalƵIE!$sO"T5o@:X+ֺF4MCkϲw'HN:ۄXl~`i?wF1_ }oBe yPp F[X3Ogɵ0/G_r `dU^ݷƠIpQeqqc|Е˭'2k/~TuC? d k`%I0ޟ6=Aܻ:qŮ, aZfĐg㒭i-呑Aԅ"dJw^WBfR[=de KGoDs &|7wfa\BH%luf}i$=c3Zf3b-a{HA;/ r>( f4`FΩKs=Pnk^<#颳-^}q _*~X+:3j"`~PF )n6x1Bw=Қݹ`sf&.FZ N^0sVyq!}un1[(gs#xKPrǗr Q^/d56ᨌ,O\UFU}I?L&~&D>>WT]sl7]Tlh,ӶCoҏ?/V&{]J!δbX;ן%@Rl'xrb "_9@uf48/2'D.|_gIO4u20pFڨqwǙa5qX, cMv30(s?oȢm,.rBe/cx;3`FHo GlD<{|7ΆmemgGD^X&7"cwWYmC%ӳȋguVR|X*~kdw4Ry)%|"FAb)bi0g܃Gʥ8tܓl{s+!xНk`* ’~Rft>a`Ntlv>L#0X[CPybzzE6bxg]0d=E +ܿ]|j̅?F1v/~D ϺuOR ș,r"QI:l+.>vЦP GM `蛔@ l6>#ӗD#]ot:jh#L*XEF "W]AB0bXp|ψhbi6%gǗ52m){,,S#H wr?έE,7q_ r VHr2&#㇨T *nšZī\ @)R ~MZ09[838+72@:`⚽;u Zca%0۞_C/N=9;dY"gL_R`v7 ra=xlǭ]%ݵdO8VLG\ 5~!\↨EcN& zF: dJ,HQ kS"$ъH<`~.$g97>g "rJ:24,1tdt5}lf3؎u sF7TY%%K()Z: ,-oKp+H%HrT#(Sh<<5oscpG0#3CڣvWu߷/>N$zˑ ވWN<΋d?]~"|LD 6_[BDͶ) "NRQ {ڞΩN_7sqQAپom%~mI0Lޢݱ~q$lqx AO#kՙB3@x~Q^)Q99yq|Lx KF2JTigt la|}SG agdRjR_r-kS.vʄ{Ao{qO>:nq]̳BWZj"sJ֯jTF/E.&0GK[%#j'> G+~j`gBۈ?,~Z Z!P_}EB]Q`cl"X}ΊEm}Ûqj@3>L!El4D#)=[dJʫ(Ģ\/cHgĜyK`R "W$YC$\`_ӵdh /;0[ }}2xJNgW֚[>a"sUD?K{5>߆(]7ֱY8( j kG`B={1%!1&E fXY罢{iaܽj ͻ!jm"U0 ̄ u v/3 su֢4Փ{nOV,ڈk][dd@$.|ȕ D-1gs!{Kی.bgdS+XU0bh3- 15# {l~ ,h{J&ֺXg('/CdőP#|qʬ6Yŏo?sg4y9䨩;x˸!_$5/+Ytd!DV2O| Bf;$hC%0J1)ưD0OwjO S;&ug_ìcJɈfϙl~6HbIQ|vM/As%$}o}s0%e&\6FP+c1G}`mB̪b/.@gdjMapcДr? c~`g/:v7p.0q@{S:OVEC!|ꃎ b..Kϋ6o`d,ᴺ.,]k&X"|vZLH^[|^} |_  41m6WV`0Ic'ܡwBZY<"HiXyo !ie*D1ܧbdGdx◈ZvѬ=k{19[!&,ʠD\{M G/WI ][DCPQ0Q}ŽHl8TÞD, 3X{vN8L{ {ֈU};P~S"{p)a;5侵үD%ImɍIz/1aBlO #?3N"6{߁+Q gvP W7t9%b9Uf'.fax5ya7&X ;7\-b2I`$.T۱ 1<ѪAxӱ|f@8悍w煂ha*"xzu)&Ү}C+V2RD){ ߸l7a-6cL'+A"HkdrM%j״\qkMOCы1/8&QP8Of2sa+9F%tOUv B(* ?}6=/L ]녴Z{ [˥aX2&!! VקO~iHV1(_Jt ~ y9%'8j/7H´oϨK1o;C-Ot[RhX *t2ky ޳`r Z Je y2%ޛxk39fѽ܅x"w?`bM?Ry^y$׸JZ۫.Q@Y 8Ud/ȄO^r^CWĎZ jSJ;Ik;C>͉p托RG%b^16C쯞FF䁗|aE~aS Q,rs ^cXvɨ[o×J=+y²7훇ops$ '}b &nnGn"g*ǬbQabכ^ ˢ&ALtl#XbE.yzd "/A$Ά(VAXLB)']ݽ,؃PCYI(}?@ 6)#*828x׽; lcZaBe"[z Rvk}緈 3cXr@&,ioJY>.[L~6ɏ3yZU՜&r~=v)}pLUl|ƎO![w|/"2hޡ pp9H]98XI?AQ^0)KXd:S厹!@C+z5գHjJs d1ν#z*wU'E0K8ӫw@~EkA؎:ؗ .J4F {tbQGVұ)FѤXFE lW^"r].T&9DQbp/"ů <64Xa&(E*sR#QSB`j*Xol|vm7U@.wk;we1{`M?Em(GtJݎ IszƮ=>#8E]s`f5O 6]C?fyÙ*qoG8Yk [ԙ{+"z m sBvx-#bz)u{nCˆ鎻4Ǽ? ɨ76(r&iGKQafsmIX.\5"zi."5q_1/D>~ n)84Ų3"j~̈6>윉!L<7XKz7fuoHprJ$bSMkB =.x^CbLх%qT#3nz8y'DJ0B-.;?&Fl9"pM~O0x1 IU?@6غÜnvVBAj #xD,w? o~(\OjWLa`r2Rg^ ˭}]{"`#3+ `ȧ 7 ]EQm[ N2 #|V7>)k -_5D` ?m25Q^>0N#x^b ;AoG wX[0&4_R^/Œ#R d`eiV8hEP+C - G-o*ypʇ{7J z{>,_n/Sz>+5W.ђUl,eF[R [٠ ]K %cApF$)xuzZ˅IɎ\X 6-R,A,լs|+tC-Q[Pl j J4~aɧI 6w~n^Cr>DFri%Qz^~hO4>CYK.tOٗӺF|_BcqE_h4I!;JdD|Ȗee] :NFCzO}fё k?N)-cDV߹LIƁ4JX 7­\jE,yu>El)}' {~Z];jafbfmɬ]壇MMݟa;zDb񓓅q5VuʟGzi`H?&p($;2|&;[T-PL@Ep845:EM d%MFK2%hgkDzF3_͞oŽc:MkAUuX,ҭת[{K42rգɐmVQ8"_|# ;M J?cDwVzyE1&7e,:!r?m;MZُ7a3wpWjo=` [9O?_&+7+ѻ0sU>|[_.{c8mD8A㮧e[1X~fYL${D[!hPMHusa -0|_]9o.A6-a ݣ[$X<-ެ[O#Lס5{"whhX#J$LqX`E?o-sDwJF4JBK60q+Pt^?ga̛FTӆE@#Gw_˿6|1է$ #סT%aZ}<< ֞(t؁aR U?;:z K !?qTԥvu5/*XU庑{k@$ʇDn{d]J/#:Pt,GLVʈI+Ĕ̪}t1i_M2(I5|FdEqX"?+֥^oiK 內=D_4T .k}@8y vF# \T_ !Y1D)a1+8SEl(!N?PFlnD̕@I(IDtg|HeҍjŅIM3IKu'aye(L{O^]?,% Coa>}M۝pwY"cn! [ǎ!ji@֓{<+_TvG=`2R(Hݡʁ!{nUa./%hl.Þݹ~MxaێT:IaSVY6]Zz1 [Je8GS .A0,WRmD^mAwx!UR1_^f^5Ӌ1%Pf'm1~&~*1:DUx拏EQ]6G;fyl=^ϗ@əv*=oxĉ~McpLp ?,|p5h59`eg0- ?w RvA0"kV(Z#^l20n|TJ bƛvBʶI'$Dޕm|i !J9&mzŮm=5-KZ=+yvi u nxX=OҩV^s|SIQah]=7K}Y KLoDlK}B7u=֊O|~bhpў.$xztC")gc8ӎ|%v>=;%(1oTQjaf%b qhiDQw{32ak/# l4'*ds~muCX ۈJXS,<QiDɪS۾%V>3#9=º 3C=PqDǑ=L=,Јj">ꟑ(|<`b~ 5܄ݔ"uz<ujѡ(vPsLQ摺0Sy} FzVTa9ݡ#4bxn óD7Ξ:_Bw̎G,R뻗#a]ۡѰ`G4#0'z;i3&K9}łQߨ`n]Gt*2^ {1>bb~0hcETސ ͆zclr9FIf[R5ƹ7!0FX%j6t!? "R;a_rLP fG.A_:'I_Tv0`a~rSmo$ZA- /;X2ˏCWKLfX8AثӁQzvZ{ Yۉy|u["̳*z5iz FD{+2 ׈1H ۩]\=$wi 柞U/$gǣRPg~t8ˋع¬ w~cR=6_JhO˯Qyt #1T s*XLڿG` zxc  ѯEleQ l2L+1(:l7S?\8D?t Q|Qn=g?-_SB{*~VƈY0HIJL:mق^1VEnYrxi4SIèf [κ<A4VĀƥlzak-'#RQ6kR:h\^.D83ﲈ^*bS୓^El/!樑7g8y9Xm]Ǒӈ|vYn/"|,# lxtUz2j_`lO8h- NdZCd$71q kÆ@DI8iJYDd.,E2 ÈZUT>:#8i}uT}u(n2@ЯGQ hs]<1ŋrg UIٓ:3⬁[G`X@ .f"qݹp}%K8Z|[_!wj;uaz.,hьh>`/_3"[`k9Yhpf yI60Ss:c*OQr5.p=#vur̽v?6`p ueH*@d /W"D ΝaiyDƑb9-SZw.7mL1܁칅pmDl"٦Bk93 *9/DQ+H`H^<; wk #->Ӆ{b^Ȫ{/ZQRPو$B+& 2IxCvKs`ccM<I[~ ˙! SU="3i5|ٌ(r "*怅[BS?쥳'- uc;WQ|`uۀ3Om>Fdi5J&ʗЕSZmPQV./vlI@KSc'ܡscXx#z-$d11.r Vv4HyO~Ǽw9j립`b?XS=&ǖ`\4lcY`7j<0g#!~s>l7xa":|)(htG4_~$\A'.E钾xu7.{x DՔ@Kr: , v+NϖN01*AI lՔ9Ža&&F{9J{ wrȒ&nZÚ=TP4轮yܩJ%CBx84ciKTr2)̭LA'FÜG͍h~ Aʁ4U&(BP@WǷE"򯧞E"s.jgj\$aHaޣzsrнAC/%{6W Lc.ÚigKR0r1Ow9V|B^Y5r/u*.+,:6ZVwAtWuAv4n^/@ 07]:0a34CPXN;QCg edctc*GIbL"'yVY=z9OtmXըܮ fux|*iZ^u%+QFTpqhaev*nMoWB%a2qS L8+̰Vn/mR~YѱcaC8'9)yF7Sb<ׂh?G3 H!f_ք,ep&8!ڧZw!;)RryEqXk߃櫏 9oѧA+FŻMhȽZb -M=凧R`MH=s#c@+#󯼿!JWÖځ:?6~ =͉܁?/3jN*zp n z뻰#-ѻn0[%2QW`XSsˈ7DdCLA8s[ZAgS(Tɔ㰄Iʈ i?%a<,r )\ʌ0=,[rNЍ|g;lDn8|ZP8G67`xcR荎|#=Xnt>o DNƎ`)^9C*%0tL% [aY5&xGg !ʈw^h:n&y#{|ci^{ 嚟Wf?8!4w~ޯW~*^g3x1z~BR &cҠXoO3&-WKr&2>Nt=gAQoӠaW,frb{aRWvaeVɳ1p|d{2Ud*5li\\k@5" E7SQX ط$B'KasOGjB|Іz[SP{cx8RJjWnzc͗ M.fG!ȝ1 P⋖Lo亾e7Xpϫ "i^%n9htHm T7R)Ty&$+{_Bg`g?>9$z] &W'D$;_υ}oÔ{M?[7S KV=5Ys߿/`(+zeb 4_t'wd`$ l)mÎP\Kq?, L K)s@`mC=@ӶlGb.]O| &ò? y:89EߋH;(xF 7pQfӍ҈<7߈ k.Y']$HحFXD'-I4(%z$iߧI'bȻY+ ja!Yƚwܚ |RWK0N='戹|U& pS}=_`$[lgNF"NjXyH/ZD96BۊMiYD2wN wX-+84!dx|G:`[u`^SLUz<:]DˣO&yv"]> 'SbI0k,S ) xT[Gg&Vr#N.XwhOC5/Cwwm>t3dյM갈(iğ|PMot _h> qʗIOr ">;j(U'ұi68D9/u4 QEtG C_%pn#zW{~!U ֜mDhZdɔ# l"R{>y?Fy3R0_j,Ӷ@(j[բ@Vܦv[PIcwaj5E f{Io]̷qIA1Hnځyq2/:"_|T}ur¦.ô@[ oמHIB*D6~۞{Q5+alΜ?j ZBWa_zu/L| )4BPRq1Mq%^דs8]#) g',d4_Rk#!sy( F+ݵ<ްJ{FhE HMosð p # OŧЇ#tc䏆 aư{@+erּNՇD]7c' צ+ڈwE bL$bA,ZbU Au]lļiQp&*fxoDJJBCĹf9֞Z^ō8@QVMt]йS(BNDtG \d‘d;q}FGM/ 컇fY^gĘnnh'qgAf."1fzXӋr@&d}ێPpes[/AXqo7~J%M>=s󭖖7"iJ((*GJSҖ눜np_a,_~M?|0_6mw%ȶJ]T8;%Ʒ~xs"gd[Vfe jC/vMޛ`0yqq+ B+ʠ\h(xrqeV:D~͐bQm%V0]!}j[Upx"|W& 2AN Gc}ql4ㄇO5I+0Vl?Tf!rzc#VۂZMC혔DP^ kʵc`7Aӄ}30%-:ECśI!^4 wfi)C`dQX^_TnCcsv#1re`Ǎҿ+d&=BOe[NE)q`RxK]OO 82 1"B!E\4п+~s !R\bMDcQ{EDկ$GD4؅!UfSj-H>CW 5;4b~4X{o2"AK2J]Xb^_hpal~#v([/XDd3(^*EWy`Y(EBq%q?:hbלOa!nh>YjmF#a%X|i-4Eo`F`|8T4ޫܱJDUȓ(S]W(^"TjpHP )l ޞ \/C[@Q[sTĜCJ o`[a!"H=@;,SKF3$aׁXW7؂uI3OyӾqr "{G<3D1bLE3XD=fqEcލpEȽ Dt.5B48ZiD1W4.28\SAf}X8xAy E '薁p+uiɹ^x: XvaDKݭ%jxX9_t\~;GkC/Ihɶ)=4Əv ~m 0aP,=8sNʥ?@N<'G'Uyak7kH4}Ա ΅R"<"sgfEM#2#5="I84=R,[BIj5#fPb9x r8 3o<5nNؒp.QFS րg49Lyrpb@mc `/[7N.J5mb>܀ROk'KRnH(ۢ*Nf.H(A'[Ca?afx*6ds`_e%"{}zt.po!'ZֈiYuHb6\DlJUJ6VbRVB ' ؓMEV~\q/qBާ ]yFQXUN Xaz{'lJ^7E3Y."D%99ud9)Ei H]2!h%]*:9}UĚq\&s1KBƣKr35-Łu0#*zEM8'q N dI@!s\JrqF;[9z˜2wiXumK&xA{Ko FI8OXK-F0E_LÐNLbO01ӵzw~iJ7mX_~],Ȁ#r\j4\-6Yŏf-iP a5(ߦfi |{삁gv0w՛D/NrNkMB P23vԫȖVϜ;P:^a:7SpI0k!⅃%d8{:!Rɛ5s:Ddv :>UAG\.*}\ 3Ո)ŃmbH(@Lt&8LHgpůO3=%ύz[1MhdJ PľqP5~16Nw <56H'F*ƁH:*e)__|z2QhwPAKjo=Ng9hCvʠÍ$cq>DllQ33rB0m!?o goN~k{N%A VV" Wc|,J(|eUAX ܎ZsFLtam /bnd2}x-%љ ] \gWh.ԉaQ,j=@RKIYԒ&]_3:{{ !xv&)n2Z4vBK~nauQۿ;HKނͷ\3>ݫY1eM0l`De.Dep~ 50hb 2ݿ¶껲",cсX!{^?a#zDXL2݇=Ё*c: u4=} GvSWiIMb_/T${s˜#E3–f|\8VHzİ <2:7y8RsFYf90-A3Ae[eʼ%&_ ]BQȏ'"[ʼ!ƈR--ޠi r9NR94NQLV<$0a'W#5rm a$k+\Yꂨ"߮P"Yu֏bnY`[nxVD"FBЧP!A=ߎhy$^ȿEZPFuܞMڙ*PgFydhH|BLo}ki#2x9C\) X7@!jy$yf/#H:KDyG 4$ VaD!)OН՛I [`V~(a+`IZ,{bԔ0%$2yP:' [FC)Gߛ-J⅞Z6=)S#y\ 49_OMӠu|gRR`UP,"~z+>{ZCa6?0R#NB|zu-FN5>E{ ֤6Hҥ⟰0}P ^|x 9^âm-+;XU]b x=3nE0L<Wlsq*oT ׬"d s~a\8whH-/ }a*-jVX8`WЪ7%g:1ꉨS0'8wA"r?w0 SMl gz^C3* }B%@}ۮBkzn8+B4yI6yqd;1Ɇ2eR:&@,m<s +­|sLgX"kΖwYi}ddK/Qc( `˿BN!=Ta˜fm /.XoAW6 f^tg`v.Oդ@Ъgu0٤o؎%DMřgCw9 &iΑiX>bW& d^>-ODsd; ^7/4ÔDW߱;DZ σ5PE,L׵@3űӛZlG$YxL=}By*o"'G*x@'WJ9Fg~,̖e%Be6g ۞lW5"̕HuwHvE*DTsfr⨂eD%f)Scы{ꒋhZf2!*y४SPȨCuFA؝>^52-Xv{fb 3~lìO,&d~?<k1J:V0:U@F`ч+<ҿ_ǓW!^jA!N/$Oz[+c -yҨXzG @jw'( zE c4V6$xxE'"͉5>ݰfH&٢] u6~ʴWٟ^'W^|O^2I0ų,;ː&h1  v+ݬ0!|DӹxXKlW[8̩^v܁w:}\d(삶Q|d 0o)}ɏia;FZ'CLZ+ Sj!' aĚo-Cdy-VĞVH@4Mc<_bНsp)@e'ao8Ĝ|FUFlKj#O[ 5mI;&q~! .?ͫA=elKE8°郎$_gaP&5g :^w&t% A̝}qcZ޹rE9X\G9)ENtl1"bZ4CV>g(rz,گ7e$M#4|bբޅR!m qa? 2sX0&&tTҕ@yhI,~_mwӽmWo&wQps;a NA$V `uHOo&Ar;[nD駿W`ߗ0'sWg);%1wd|&TJ_CK R#`x,&ChSE+7&֚{`RdU ږ:ˆ#L}↺ܪ2vqWkS)RTʻ^'E/V,t*{qϯ$!8ckwD [ 4}/y3g`KtHqNtmTՇ%0dʘC;IUM+oDqӝyT^Ue%qЎ9f"?SWA'/./ǪXf{3KUk4yҝ ӓvl^'Xc`{2Vk& a{ASw´Oֽw"MDߣG")*ўacb8 ^Kp׎ Ifd,}ƈ1Pmة}@n8q i:Vr†FޡirŽ ؂g\l!@Od/[VZY?Dr"גMr5E4I"s/=b:ߚpCzg!VFwpĢuoU@ 1+1@L<"zOwU C=S{Uq{=/y*e7s\˫ܢ'q{q- Ǵ{aF{TjDaQ1z#ukEgc} 6[0Mvy^Ԅ>/͒0!@+8V5ú20+SD-|{nҋ߫=1Q尾 iqmhH?fѬ!lliDҬhBG^ֲH1L44veiyB">:Wti%0 }|ȿ.DmG7#b0P;/MT:&//bV&x\ynU+I).`IXݣ(%Dk1ȇyrz~M+Ѯ:9b3^Μ‘X QDw7ͷR Q_[C߳k[K0YbSTKP+uLX=3?`KHe5D.Hk\! I еH T7f#vϫQv>wfG1#-юNЙdD.ӕlzvAUC%pUCǩK=1w!0kND#c]W=aصzt.x^ZVTE-[/H8_szv6mRWy+SOCvo˽uڿJJc@H:.qpx'$Y:0h>]+;جтT. 1־| -r v(m|^}%)yb?a܌E?Z#.}ťۈ\sK1k6縟a{9śihlcCqS[efLm+ ^tI]3Ib0A1^8*2f]W#HDŽFP0D$R("_g!eYCqaN~")9øE;Gh \Bmfdu[i = /'Y6eX&ݵ{S/5*`<8 <*T~\gWRT.')#@|9&%ݫk'CIo[a|lJ[Mf'3m@L:˕Y V!IFC-YS40"Z9zez dd:-Aݲc!"H@ c̐]&b9m;+F(K"Ѣ͒-o¾għ0 Ovga⣋N̯{iP` )@xAK:J Tl``6TE_h =~0q\ ܁y cF:R#'N(m?-zg O9=׭}]aN0ճGJ zSfE`g,"cNP9.ma^q`4Ŵ `rcpUvK[J*ܳG d\:_~ 9)nxͶA2@D6sc`A1/=n/>ϺA$v{.vd D~wD)QMJޚ>DX1e@t7+mQML(Bm7-X*DRXomӈT«GA ['_U N%=s;_maO;FeB`oC1ܦ{6X'?a2wT0:X4ti2=P|όm<ރp?j#wW֏bKMڰQ1(v<#a\ƣ~N_/ D>мbG@l)D? vb6^&T!%T'_Ī~a&\m7"%n5X9Fb4 ~9(@(!^hv&eʅ`c !5Od܃},ڰ.~<̢XpP ^_cyn7UP- Y? ,ޓ]nA1^:5(kgqQ L\ n4a ='$EB_sHj>Ct'W<e3XĔL?\A@l(YX.B!3_2>a~) ]raSC2! jYGrB/3y`lt"S_2t$44KW?AHR%`e<|x҇t6n #ZywC!"UzY4씳\`5arTKND}0ǰxKFUӶlKJ2ӣ6yNЭw \${T'whݖ.ni :aIa 3M'>↤0_WK waInky<тt &)7'|`ٍIvl- Aم{~ީ4'\ Lks@`5z4I%w*2S'pP_}]egEϋJ L~]ꖺʙ10)d ,Nf;UA5aNs;t\"+^oJu+o(+%> ृJXJb5Ti ;UVGf%0Ц@kj! 9'ܒͳ|9Rp0(wSi>ɲDwֲ˂-m DW~}u Փ0 "D$U'ǭfiJ1ep&"OIƈzt.5"j:5xK;Sf;y[ YT9͌օh:sEx ahsyɨbx$>dz7WGǂ[F2C߸jD fMrz~m^C 97E\GS|A/}/`c\95__ԆO@.?$uU%E/K40Y,iWa}k$G*LT2\.ɻiÛ0K?[O丘F#axm c*KD^oD2!,֓X6^]V˄?1f2P$ ֦{,T& GO驮{<iͰsω#ɗ! [˿y_Y(TmO )wC/Pzbq!%&>-agڈ|a0U>DMk>~mnm@$-[YDny6R !1_l',#%|ux[7FgG+Va:D7wThtte#1//AysB /2`q/!op{ ݭaZAt4 ۾s|ӊ@U z2 )*<>-IڻC)_{spezIvsF^=&yAorY3}K}WAAhgcJW nɏ1y^i31/u"cI0A$@9X0]BW?#7nCf s[e:K?0|zuDTaH:s -hHdy] Dpk8+-Ko00}L fYT;瘩ٻ.ۇ}˹7{J]vI)o-h3CFknG<.fЈM")nC#S H{jF?4jI`_wX$E f_W{1AEh~- 3T'eVa3顒5T^z/wJ~׉8,C1O7BqZ3MG&̧31Rk_JהI l}x&.bNI47\{믅.ayZ,&>[t4deA.3ЅыKWƩ vwKՔ\,Q";MMm] >&W]*Bk`+P.ԫ^'KkJySQ &?pBTuCJ|L +[yȰFI_[o\D9g.a㋣ϣyoZ%Dm:rQ}{-Ca bڈh^=vmt!G[ ?i5r`mtz1~h aY/}[?+)xBgJbvv{$cq#ÿL d3v`!L)I|nAEۏ,To=IQ7|I0U* q!Py5//k]ⅥdW׍a YۃH 9<* yƧʛoaKi!)NCW~.̻|ot|ٰxEF `hvXX#p(wd uBBWTrxYyOϢ Aj/ gRVfh +ˏq累z`Y@a [&݊p8:]w(_%z=ͽ,ֈ~ eƇ>@. t+jEm\A7u!e^?*Ĭ1(t^@ ~e ֈ&OD cGT"̿7pE*z("2=QDa2"(rGQ|EbZ9,?(X/4LGV CNV-bfpUV@4WjSN!Տsؤt y4e*d€ߝ+`c2Xq' 7&R&AO҃?JPF$,o{E*?y) XCB%Wt_{FdY,':n[omM}}G F.V^J߈BYTK]m\8b=~:˘Q1T^-R\T_ӓkV[~O&]Ho<5M [^&_$`EGRr<nSeO᱗5@٢cVy;CohHrduᜓnxT2 S?nRrTf+bU!BG`^HqRl%^t–',Dm4c R'g?ƫ@䈆%¸ϼPr^R;Lv 6<񁵖ZvQe KI%cjͶ`|-,>XeGC`l˺j֬|փ`5DLA77]܄]<8@4zcMȥ\nKDQRWDa!b̴;{1DuQVnhJ@3!zZkDRKʻ5УWW u᥶0ۛ16. D܋ø 5}rg}1 o5< AL'!J$Y߱7 1i4D\D8@Y}n2=Ri=oJ27_Š=Z:~>!>%D^V.iXLKKA^yOLjî0,J2!Fj8c6::">!J|ʥ vD=%j;fHtwtD&#1URi"Eh;K;bZDҝ=ꩦkۜ?"J!GW9ip Q79syX?y Ml)Gu߹N jɭ]tQ\N'qҦ7}V<8j;z:M ^4gLxk1r0ԭ4h.kd 81йw"z+xhAṰ!KG~&Aԛ3DC7a Wnb`K)RϹe"G-xWaφ11Xg|"vlXHhz 9هZ+`ɆΝ6W}hF#67 ԣ'*< #9G4򞄤i/C%0()#"i4fastƐ2L>%R)JsaJГGa7U0W+vc Dpb=.eޮf޾hQ1pN a )|?:{Ve %!h@~MJrBM1^g$z{Jh7SjJ`^Mv&H'H说| ,rZ3X? Kp44<&i^xt+r ayF"yyc¬FӃްw^n?Q/۳gexY5ϐ|Ckk0ƾZ Zq>}]; '$@RT ^(S#b0,1dE3OT`6w@>+sa=#+Wry2 Br?U}I< k8 7Hjq>rB./'vW@`fŁ߈]OY}{'Nq ̋.]3mpBϬ*@8.eHjgy n/ CsW:1|Xd?uBVpf|8;T"=d[9v$2W]z~~aeL`_;Xc8~"fnQlKݽՄO=ڃ㛊CnaF_"l؜{eaNwf L'>h66ٛQ`1y Xy\~0 T|sKd7no6/ ![O9ct;WZ&!dex,Qyؕ?4W/ q__ps`GN ﻘO׫$,Nʪz팙L Ob'Ra64 ,N?~Ph7~-Pw޻Y_ j"?~s%1l[g?ԡaFȭq-Aw% >̂Sֻ/FGOo޹`huwh.Ɋ(OO{yTęf5;Zΐ?O=|ü[Hs䢳!e`qM5ߟ~h &](PLVd y%_{ݮ8y&eQ,HX8j_B1M ]$X<~FĆ9COBŦ y7npS~;0hT04篙0%AJx\j+TI4fQ Rßk$̘ -3M/s3UDY*+"8srFՐߖdW+g8sPϧ_AaůQXF·^*~6 5zI~H'GWN _5czD}n"E=筻Ⱥaoo6d xәIVF^HBWmrGJIn5~v| z(`5x-"/ZuC#˻QM) ~= l C>˟]- CtfP69',?V]ʏ#ɵtiP,h+ؗKÛ5ӲГ޳+,pyw#]*DҞ:f*r+6!J |qSn\~w^=2ɴ)x՞%*9LP7^z{'m4Ou6ӕ ?鐛h4iRT憅} y?n#؁,>nD]^5Vj%1dH;)\:a%d?-w^@'K6[j*4d{M^iFr-xD^Y+5vuO '49 aYݚg[d1-9sZ*sYNōlCk}k#(3{H=mzǑ-t> )W]G6\Ԑ1bw ?Gl}/@H1 `@aKdˋo`m9.Y)t4@R?.@}eN)0}ŝ0Wf߹TޅCS.u6/QtY}\Rsw0~q zX~39R{Q/~Í "G Im>uetemxv"gP& _?)wIU#ljG-sGv+wr W>y5y&|8|JoTj5y҃S/ӆ!V9l~ݳI4G> ZP`u^3?~5u4m;]QͽG/r4:Z ^ AU'Ǻ]0qdk? U;tg+6s6乩9[B^ߊ??]p'H×$(xQKWd&0)#FhzO!!yoT.V*ogBvN]̥N^ԇ_眐dz ,<$AS.LA3Y=L۸k.*=N&߇H02@G\Id\ iaevԫ0[G*CK7z,}Dpd[WԖ)eP|ѭP# n?~Y Vs]J 9:%:U\ٱ⛻xa\:v8'nʠ:#jĆb7ʃH]dl";و`߳jS(ls ϟg~,uoבo0̯KsgM|1xrp&Hߺl,m!szo˗W~!S7OEiɃ术_ڦF= H %ۆy5(X@ E6S5mQD Bg~~AK;9?[9Z^,e@Z3,J]ʷq)?~QM"ӦI;_-,0Mt0r)(DP\w?#־)[ܡ_&MpHZc׷ZuDYhȭИ L0k\+Sz1 A*7 K6}>:DE^/~FՆWFWIP_a^ihkU(n/z^0(8{,ɹ ﶈP(̘ݽ őfGale˩9gqI.K rKMU9AlÆ(1ȊLІO3{6@7<B12a0Xz|=z&CfC렛;Dz|2xДk[ֆciq O i֙e S3gsO*A_P>*7,> **Qsm "W{NG@CTtKDT7@`?sl9 9iۄÈ=> K~#ΣOKih}>Hh$tI=1n{m`rM= rK19k;k~j!SЄvVȮ:'f1O/)fB5]>R7\Tavԝ=Ґ+Dϖ-zSxL{|#/XäK{m@nI,H[TUf4NjcUalRtW!>XP5 _˄&R[NB/wG"G=znj99x 8U] Brz .x?.0EI6w迶EY)N$9@ݭP'q@Q%/ =$)Q&D7Z$#+ ԑ(/䔃xdMqU܇/ܱ̓F_אU&F c-Խ3eXrHtUІ%U(}m9nj)Z: }jߵ7fuw;ѠtǻDN@Q֙;+<`XQ<7楼,ŭ`nǭV\ TTEd*I~Yj^SJY%R:T D skǑ{4to;-u .u{8G/(yW ǵwHB_G؊ziƕ$=u %KQ0783Vz W%ߵo>>WUM fE !s.I/ 't(K 43l}P7q#t\ ^b7/*(zZ|);9IPf @.?c4*i Pi&Y P_E/4 EׇǙ90t-9ՐGuamwD ˃.>_ŀt/Gv_] ݁Y-Rܲv[(# < ̖>oV=ɖto*\;6fCٳU`wʄK fTszS[hM2m:0N}?wBCîc!l峝>szCY}nP@/XuSw.2Umz.ny[ĝMc/Br ($lQmAz mh.nGuVYQ ^V俼TuiFFδ7 \- BΤ$h<2Kc^].OK&u'sNW 锅~Ҟ~sKۧ" ǜ#2Jְ0Yn+ݛ#cJ?bJ̾P=Ȁ0΋V%FfpQ κ<(&z#3'mrpegdۥ̘9izr\q'ro/M옸$RT^oɆ\-KyZȮc䡠ܻ ,u))^Nbګqn|-7׫_]wr`midV{$Sʄ< r-!5^:2d_r9"k\r>8\p=,Ed>PL;6%7kQLF:Osȿߍ? };O@^h݀ P(Ԛ 74B ea? yo!`7!I?VCVqO6,zlYGBFdަ'-P:cg'E6IUeCƘ;bqn> V=_ nj2]`vG>S &dvk\_19C!w(Q.?vrdrf5a0ښ_HYoҍ,ҽJ$|=Rtdh#_u&[KN#{K ^eii!\DU|33fDj[~xpF> 9i?Ezݑ]LPY!x(?X4j l>̍gFea1%/4h=0D2k$AŹ|4LJv2-/< ^/;d<rbtgCr"4g~ ש_HP:I{VGY>{|?L^zv% D)ȌC+%Wd!B[!e59=b'zСw>>p>f>=XKUsOa7v{&ؙ ȳNcTUhqF v0}aay2ϖ]"NxaX]w}Wc̱tۿ24ً24^{ߛN)ȷ[=g dc۞l: N}#IyAr}  ˚@_RPea€%O\ToULFdߤ[T@3Ύȫpb=#(ʗBt|_ _@3]A'GX޵k5la f7m9Pj{< >KÜ!IKkX.l-7+vOca==頫L /Yq:hfl; p/$hBI}XAhl]]8d9RBstϝy PyY4:cvkN~t‚!L} p^cZKK;v!OQѳZ!s/X?oF#YN+Vߙ0' '@-ʿIm{d#Qٴ&Ur3+heRњ3qH}{Y֜V~nߨXL[a|m0Uo1@w!TI&^ .xצ=&ԟ!o)>H~PxVv#_ mǂ\/DBG"S3[@B2݅ݧ[^$o#F@I;BD#1Udz> y[Sx6m'do>$"ku`r\ItwU/F"ox=>"m۔? 8jR#GD=ng4o2 x\4,\Ԙ0-UX1J{Qv)DkBn@nȝW $T+Jpi=Gny?8/e| 3l$VcI#2]K~́r' 07߾9!`{d$Vcyg:(ݕ%PxlR,M~ÀQqۄ?e= z,t+"ׯW.AGq'`"`smE撸QfX֥̒P9,f5+^#iF?H~I$쏷` 1%,ظ-CsI}bq T/@OAw~0C!Fx*!0ӝ{j )췀 kPU}'wYN s{`b>Xyvn.hBGu;\ͽBpQ+c¿.]Dx_y E2<;@'Bj}#Zm |=⬡zzíۥ^`=rCO=Qp525K#uK%gBIBuT9_a55!|np,MBr,7_Vx VZD31!z7Ydwf9mifgtD=R-׏#rud*]Cf6a\6-T^5[w-# Foc} wN]XJϼ*)Los7m !/.#7ɪ(R**_Il3V-a!37~Bg!ed3o3,fC&!1yxbn?)#q`̓|/e< x?;tk= Pvo~)Bɝ\&i;o>Zeu/ӼCe<"Gv T{'_%\[bSeRP1웖Ӄ mj‘M/.$ߙSv]+,Ҳhh73z/E*J*;ܿ9Tq'‚%b1ű> n>ձ!Z.xw{fMZ4hKz6oA~wÈFLt?0$f̪&ª̾Hο{& Kؾ k#i=do"0,G'6!~j<yF^{+OA%X䳳SJ$n` D-kd9WrԾ I5@<,])>srk$arܚ qPm$;?i4pF駛oKba濶p9'}-9 ɓgߦoqVET665&A˝wr$#a NWT:$'`W KR=xa, Ii||tP>#r!Ug5Fk7W`qJtl `"Ժ+ۗ OBOl &(Gu/_jbLOX (CeM3 7Q"zdJ{C!aV;h?tmo"񴓅`x/V4KV<`IYYfy ̌aYdoD> 0UFM+}=,h. r+D)6oDتZ_[Ke .}S(n/. ܈Nl}gֻyo5r0Do_+(rF9N eti~E9 M2H4Bv!u`S=wem$of6Uf' }|5Jo_oMMz&5m;ԣq }=:'YXt"SAxV"us̻Wa{uQVvNmOMy kJaۏ0j%` y"*wWTAC$ l$7އY]n*`Ѱ_G̪) c)K48dQJφ-^q&оmag:"ķmqsD80ݥ$ Dz( hdqyb8dpg݇EPT˭4faӯ-d(&,8 3⯙aPby?|tl([a}AY0ӵ 1#ie'b93:G0,ʑix 's(զ\l>R"GU=Gődٽk `4ё(32 Ê%C;g6x*;\t R=2> HlUf?@3 =&CV'/0L``ls5 ơh=ʧDfJyzLr& wf\!S]2>6?d'a{`UWͭRt#7r ;N_"o,%¯FA.Iw(jq-u^s$Wn(єxmnP;a|v1$u];lKG.2?"HY‹_kķhXQ'Ln 'j8mG:K9XU犚)D|,ly Wvȓ :E(^o̦A&reϟI# f]]Lv L S0{Q :ϙk $Rd=&NΦ[I;G̗-[㎱!ؕd+H}0TQM y[V:rAnRB[.mFKӐ\y[g<V`DosTiBgix mmKB]NHowp"JFN襶4LL7V#aa_w^0s\ibʁ +I;cfnv2EPA]a>yzc(-8PP" 6➩yCؿG^=Pc5-1FU٧A&)1EO1ӲsK0 zlza S-MN" XߒÔWV3=^? e =\((%&hwbFYW"]HQRqb | i7þǏZʓB)c'h%FJ] _5UagQuO~ 9ДU+Xw Gff s -㑵Tk rؖl/BnF{37RY;AۃQ$w:SXQl琟2"w|m~`gM rܶ@rl^WGn?~ذ9w=B΢L0RXª.#ǑK1;qykGʐz* oVzB*2<6_ȇxQ(s#2M8< *^Zk #L[y;$ {?hvK:m4e Uslĉ[u̝;rz4MI\X|ytm~~9sJR~Р棝0˷q0 {6Nqٱlas|D M\'j@ݏmoB6&x/9ܡL@*4Vq|]W,Uvrkp[ ے&aR`][JWo5aK!w`Yn9bk..@-ï6^d:uM"9ʥOɪ{#aQ_=dzc:gu(Tػ 6md$h͢PK&3"Ty*yHV|G[l|ߣP=<>:]|ooˎk=",A[OB**)-qxMYIKE 3uHļW\NRb.|r2}(TpDi_swJ`l\6L/z+4YC:{a1EMSP36WѷRwI)^3} ' \j[Jw },cb{?2 H#mR\֧sl@VW H|yXz]ABh;f% 04<]\(sq$Ldwud _ˌِ{o/"`t/7/yͮÐʩ< B@.&$v 8e'#pN8g12_߾-Imm—UaۖK;?F|RLye3,a#i\hi#MtdxS&ժ N'r>VB˿L.I0u`c" O0=3-J6AF L~{ٓ|hS洄B#[aH)yَoƽv1;Ⱎ?A+v( 6C: ^}]X)}"Kv-@8^z^_p1:`*ԧx ^O^]7R K u 2NH,'Imgs2ՆjgY+-ͫP8hpa?V& AMYxntd7nq U]c <#sv% UmEٯԂ77 |}پOܻ] s$'syEr_;*(R,mﰣ4WQ袄̓(`K_#cO"ˮ#oInꔊ"u=FH9!lKȹ'/z91$zfr(!ˮ-Ƚ@KC͔w/Rl>q' ] :ρ¯Hў7Q(f(Iix ֽӿs5<[Cj؊cl- w#pw$YCӚ$ `g`\ϰP,~Iz/co2/z^ ^5-!}>wKf 9In&?6]7=Wt{؅g/tL /C~UסؼbyKx7i \lA|Ugm:KJ #GUfN`Z}0[ #g;l g OBo'Vߔq! SaȒ^PGR-ʮ:X{}(-{ěoFa~n(XtZՇ1忍Nzl4 7e>"K tF*ׅ7xCLlp1G5fG -!џ4Ġ7tկ-D s-F09R-aAr[%A.P1h97,xǗ*j_^ILee_Ցg7đ ^oV`_v~v.f D?= Og!7#a#3oM i"9ww!Ad6'ƽQ/9MͤAo'sWÑB!rkwD}׶xA@ ۊ? !_fy4%5!WRZ2`G_^4k"o#Y¤@T5lzѕcxwb ml8wE .p^žt~~Ǒ1&P3`5l߲qtzyHe(\b|LXrd"3S d?w:{&+rH7 [ϵgLl_ ̎[ @V9;MZ=~eqo׈J޺_ tzt`z_l kd&՝-wM泼 $|$A3Y_ Au-S.M30{\iN]G}&0e5S4MPJpM c+ˁ<ᛜi0?ز.)?V fld+|4ٴ<7/^Ylļ["=%S9}LI 6yHlN UԎȔiV`ɜ.) f?XgEV"X#Pc n]tw e*@HEo uywENoWH/ˮ!" %#R'ȵ=K/$9#eLIHW%Ly E0 mᛠ0+ I;燂 {:(xWgf:ߴ!bJbggrCH}6L{, yQY,*:X;bh_RjYC ~['`^}<.K4q7.@iUh휔y? rggO!g:!;7"6Cÿ}04MQ<,,0s(]fIɑ?nO퇕otn Iō ېJd=2iاSsk|B•ytW8]X2j fl^}^ |& 24Ҽt.1Uu9uD&&4Ɵ4暐w3gs=NykER*ɯAk&YPL}ȅ])4?\y|p1Oli'*q2)oN%Y/"pCU˪ ARjn׸o7~0 >4;sJrT{:&Y_+ݹK-[O(S^A| -KG~'h)7P4]OJkA])G|Rw$YX;l$;qd82;^+Fv"M%Ϣ[reF օȱ/*Y>;un4O):IJ"&~CбuS0aXX%DN9 5}ub9^焼Sm]M9 ϥ>P3|dq,^o„LfzN[5tq3,'[k[x.;0#Y9P~ L}acMa3l<1Bu j;}{g^]K?+adHUUk~v3?|O9 ^>C~ aR<)58JBGP'X{d{Į*$AqT{ ~y{y9fA*_Hиw!ǂ0'潝9(zXw¤eoaQ187l Rپy!kpѪ,r4e_=\懑(Sp tЫ;`I Tk+4w۰&uJL7iȱqX,̎~o?7" (=8̵`een-0m;l0]z|$&sB75' g BI?vmcS;0Y ̔^ ٟǂ0/^z?]\Pxyrৣ&\_=Sc팫5©7q+ap<)]<7سTѩy/=>E2P6Pȟ$,F@ζs+z+Vv,ĿܽUfy.7?kۂ:YqY67hCZig"L8(yU# ߅[ <|" ^a2Gje~0%:\PP7*Wq$|#Cu9B??* }Y0u Vly9?[iȶ% r';DE^GD~_ }16(4-_ W4d߉ɱTyOK2cGn3Ͷ~6x-x֍~JF6-Nxu.OB rKSFu+T("oWIpE2!Uø3 _,z((|uUS, ;(M5 r @o@֦x?=TyUh@|c^ y(Xax!,*_oUZt7V&:/w9Tz6_M6uhA| C( `c0洂~0 QG ho-.o~.+=DHܻ3JB/lNtk8)'Ga|airf"E~_xuW,)R˫{a ۊ[ G/n܌LџVӤ쐅5;q>]l GBf~ZB>t1~.pCP_13O˯oA\ڥ;Op1LWwo7ʃV-QTEֽ;u}M-뷣 QNq\ݼ-aA+*,=~wfc?p#X, ,"4g}:^FXAdJƩ$x{k#*T1ȁTS?ә2, @)rˣ$ zd'7ܐ4qIJ,|lB&{.]Qdgn"'ec0ϥLQɕ=M"(E$q1G\ N_aE׹U$)x3dDf8XlAo~W#Qt%MOsy}d)gj$!!0=+ɚ"[u _ 3vhG?vƑBe9=y  WTmz0r$V?N;Ԁw*DVߎC^G"fc$ 7`΄b-i/ 6$et^Fwߐ򇞐# oR8vR* RK>, /CʁSGa u↥?|@Orr4U-HRL&: ǿVOog2:KG a2ѽSH} h+ BjL+q)+_ NS}QWˆ?z%٘Cٴ)+u|K드?3;z<nxBoCy NYLuI:Xlwe ԧG"ߧo={v w^~_PD}FYȿ#־+Tg嚣"_*r&F*=z).Yè׆Yu;^:^peΫ́ϋdBh4NÇ.9P` vndZ'K>3' =Ȁ8,o;ݪaI"2Cjݡvt(Zw$9Yf5Q ey K 2uzNKldlAړZ":~VX~#oP!7h>›;,#4g+Mw|Mll~ ecP{^[0ӊ'v10dq.0'bx`ΒUf2,DӖafbf0L?w򅹖WNJ Xmb<GHSF#r~;={0X~k"iZYV$h}.([GBcd)) E~h)b|ɗ0='xrķռR0F}Oe]`u"(;T ?Ut( Z.^ yM#Գwоs)٬'nٱ;xr{l,,6#䧢`䬈p |b;pJqcl|2c}HQ繊{wĠ`4M{IVo1( ql9Mɿ#P5kxAQf9Xǹi?-aב=叧:(V7G &+aك֝Hߕ6ȍ5X6}}'n^(=d͍G@=d6F~]9\דa* pNXN(hԇ:w B/sR u:$7^NS$ C GACUH-*]6NŊoI囿og1F0Wpxvm ,`y/X6kݫsEҔ$uνtv-ae2u{/hYKAszZadޡwhY\:zFØ\U2E^/@MJ W܌_sA$âr9I$QK ţ?TcǙApY#m2d5~m$&X+~;>/B>zYaKo]=.bd@xˢBkwUˁuE4h8eIxP2n9ٯj@GawUQ. Qr `kJ ,߰YzWִ}~q( 7ݴqw&@I^ޕKy8qMŷDaig-bvL#?X.H`.ũ-"S'`pzdR<ؗ)sYM_#'9[wYl}Yt3 9O=UDMېdyQ*̛VfׄH_*4ΣBL`4wT#Àmzzrr6*@6S![r 7)I`?du.v{^L 0}}"a9xC`ܑ}h+i]m̹g``cх@TY* <ɗ P{A\|t0j`h䝙Q7LJ/i |F+ru^S|EOY棄 2fғ ζ[VLnGSr;5`2)H ?F%$诡!_6 ~}صn׈X$%L wr$8K;+;A oSD)Uv~=/9cXz7jml-{݀JJ7u?\hT#K i1ύy>kO@!MaUH{:X{[SUBa6rXٰ J{>s z-"69*4eɠaUImVwgthb%8;g` ,e9Н֌f0S #G&06VbZRQMwіM('O/bRƽCKvo'G¯MĞfiۢc9̾0I h ܦ\`V FzNG01{C!>|0?ٚ SbCªZ2 e$N@eBG z S_t"*2{=0T/L !~v%YT ӥo6Q`BQ' n $ٰ\A[7Pv$yLlzu-_Xz}d,LʟER~b~&6kJB}RsRϬ]JsA+<(|Ty( Jl4T[SA'6VI :t=ny?ZRV~d~Ns'վFRe5_U_م'^}SgO H{9'^›:=C:*RC? U=Es7QHu؎P([ԇ>Hڢ-?ùo*)"vpH5qR^(3l}3^Q$8I(\^5tm$)9}ȴ{CX>dZ3x VSU,`V这70bY}%00of d _ =5xly W ^f}ql=ѥ. .a5/_OʫС7pJ 2 t'aPK&b=y_+aTOX{Xu[ > @&5| 9:"KɦLMfSwpdt߬V>'UjF r=#>;T!\lM:K$ ڧD)XJ(dd-X~Tvg^[oA!>3^]Zy`@`{#+qV c 5Me\T/g Dn/*n\C˦]d9ӄ'C;4[N\ Tfn%zk|m*̄{0տ(P6k#&LKB >-]"s,g Ne͍gƀեjy%.,ՊH2Jp"+d++#cܼZürqH@ֻ1^yHPJ<S:Siu׎*?y.Tj#~v,a~ _?hIȲw}>9R6x"WJmo)ryɗ}DDqɟ )Hvk ŞM3 \|ٞmQKcg3@4(r}&^viCKPq'苵zZnN978, KY.Z8צOEք[ʎ"Hu-9mfNX)O$ĎZ *  )sDsSdqcYC4PM髃PZ`dkW |=\Ta"o#hZX́9ŷL[m7Co[;UQ*gb%zd9^))ځ<^j.N^B4Kj3E:_619ٴ&֟Dd3U3Hͷ#b`l JO=//4=4) tS n#T޸ ;_-vL97I<ľtC3H0{CrKHfB&=لkхr( e&QvlyP"'£!.q:\w3G?kI.wBH=e׻[ [_02bQ Vًܲ}e}!۱ Wzf&;WFc%c|b}z |_ٰNcvk=%_zǧPxvC$T}ey t(P56؝Q|"O=Uy냖[GκpRO\;ձ\Q?7L 6H{df4i=尊M/ '6H"׊m2~3td*y,SErN v,ѣV_0@_6[aE9?2^NM}q0vˌ2wd\_ý.P3מ8HoTom)̎ :[dd>%@WzB7Y|MWfǔ@Tߪ, J=U}ۋ!{s/HBOzA-"GR'1܌>Zކ0|g kY+Y"jzImb3ТsW/+uqz\+` ,mc>:sR0JKD <1woBbqľΊܘ4G($S{"T 9]_O"k{Ρ;WLW#a\~ 7{YƓIbOQ {lDKC,HV#{E/ gkξnIH ۯo3Ӟ_"ӳGR$9)]e\i-zRvQpo='i0xS㡳١.Xl-Exwf_T~>B+璒Sa(nU}1L5avg¾X0hVܻV;5WtN"~Bg~* R*>p"[ߗ ߾\2Ȕaj:59ԳR="gfHЧQ=>ވ*> @+ L!^sMިEw(<cYA"`i%d*6Cqxw8= |7 ~lJ~nn!(f0'iEX:!̵X ҐLqʮ[EÿeO#?MA"oS{')FkGߴCօq$d5C5=.H"gUa&Y,Lje/P}`7a<z|$$G֓RkF`^` /OcgУynZAzR U-Gxy;?MVR:drc;hqz-aEHZ2^#xÿ7gn|"rP ׋F @<\>azDwn䕊:|ܑCJa`eקτUAB}tk=Kq<w< [ٰudX^~zG݉{<͊$GY' Ckax8!龻Sz7џ A`Oa$ qsЭtyRrYWe@j6)wu@MLДv] QV&΃EǺeX(Y DudgFn*ERūۣ|H%_oj8BX?!xf} RoϙlxpsE rbm;L"toTcrkYԽ*=%U Pv fu=tVBD| $=0%@;̔<iS 7; nwmX,`gD{ٿde5 Dޑ ^!˦.a8'6zEv ):L5Kwk]V[5$u|'*A0a u=nVIBJ26ږ;*1LgaOct12M͗m:I[UaNC0“%q6I*C#QtVu "<6gecJkB6THm N5gHBM^~?[=D˻Cp6@ۮ"H+ KC+F9wӶ%tGyڂG9TX}p4I캾FE7Zώ„)ЙVR/'xh6t( A0tmn-J Oc҄ok`լ$0&9 amLY"V&cD$"vj 4!gMm8{re~V/m`T&p0_&j3y$vin^!x`vw)ְw9kYw}vD #GrWf d/ĜPd9r_2,Y}BE3w4tau̽+ь"Ôm/D^t&>+-G&Cc짺mK<(A'&w5R%e 䴰0+)u΄nW~k.o-CH;_X,[E[\mD"BG\QƸˑ.05:`j sLyBh~ͨcOekEח#nC<gTͦڑk~VVxÀQS}9$mȊs<44 $7 mׂ4qqԇH]cS8uOBIqk4ԆPM>}@V&U7A0#Q" k6 G`ks7 \C\MBO“^t-nSwx@aÝ#WL H 俊x ] M 1־c҅^ *zMNrԕtgVa⤠*h.$(jvXC,s' SƼъ0rͭݕzSSrd6 ԗNGASFV#0/v^XPiw<0:~$0 KB_6oΚ>R:f(+VyAkkf9Eժ^)=ɍEUPr=uL(i?f#$`eQvl&L'\ pGvGgO:? F~_ +(tniz^ze> ZSNDw7; :mH9_%v}4d. IxG kу>z*r?&'G.z"$I6;xx~ y1j_>t%8|kI(Z8uS_]#qoi΁)Nyְ |]X$*_kr @$?I0ɡ ?l:#E4Ms齪ðowO0W0"L:=ȩ{+0&_;FRfd~qS)bN<|C8"]ϐtHNIX81 {{˲́f &0_snxvEG|]'" yRx-#ֲ /݌, aV'S3k#=}6fޑ6ݖ;u //} |L0|iR7t|v'+ ]罫`Doq/NLo ܇a}{!Sg@V*Aǜ]N#[n޷URPXnGRjq6XxnګYnul84 ^+A}خPwA( Ŀ+"FB/=$x< u 1+-W[b(ȓΞ+ oL`=^Ƣ0=ԳA{߲#=5ur;??-btÑw.Ⱦϣ٨%r/R#>սC !Z&ctW"rqس]EuM>2ۼ>ɱޣ0'-cSa>t6 L]pe+QbS~'(k~wh.#z(6xO<=s=)a.{00K? NNyjiAGOl'zڤ#tO dg~ ]ad\e/Bp}qgrHqHHUҽf,aQr ̈ȫo)#e4Q&fR3mCZ%=k3&'^7Wּ\A-vVHe8JˉW`RU[`9T! ;~YS/@Oo`G (+czF9W`v睆oOaph"O|t\MQvs*^_2ipUW&P*ě,+v+c&0xՐfy:b(o,-awӳ6nX.V8^y_>n 6]Yݑ촇3   =﬚Bȗxӡ'sWdpqz^lQ9"de9XLĶvMᅧ9G<#Oj_eї; o'*e?g~2 HWReㅑO(d5) >%\FϮoFGw4^Mca_zCYN aW c=:N| bߖ.|tѷtuIĜOr!uZ0!5q-pzCoR%ӼmI,QM: {$,-Y#lc=T庎|;x!wMȹGn :FxC&w>s[6BM5lk@3w2$澥A9 E@aJ:/n@2FF+GTím4"0`&oU<Iu8 'hJW|o E/ց&e ,@{iywtӆy+)mIg Dok*9v$ JrJ IB""dキcoq>_]]Wt8;']Pm0bw[l@WX,<&sbq(@,7F AWcEo|;3b<9fR'I@-?ׂK Ԟ˻McJ2Hz5oޜn*r 0zrSk^ /]fxOsC aԵ w0v+ ;`}Ov,w Ph -co:Zs<4?bW__O{`A{&[V ʇlm'_T[m fj\=R股;⇛$T M.FF8޳Pkdۻ)X=.a߸:>H r)o/`En=yvY [aY*1[ѓEW~0~E6.TZf+2o8OZb3 -̜z3Si\SaJezߤd,9!iBt7T(:=7[._0~'%+p;/ U}٫##SKAuTl"/lZ8覆n s/ bwuHy֔f&%j/Ⱅ."+TϺ}&Е/(xq3k&?7`ĵfP$ɒh 1߾SPG@fN9XĽT 6=^ǥ?a86H]Hmk8hl(2f/t1~}X%AH3Øg3. w>Z3&PQdPm<2~`zGVP߯߮{CZi\7 U>O,)Xv~ߡG{\߉BS>tY)&a@>lkė1t1ќ>E%orT<-t,}WL6;0_8ϧkMWUݿ7AbV# Qfwfb:1GbwB9Iށ~v,=4"gg+c!r|A(Ȃ3/M!&DIDhh^x7mQ~NE? Þe1b[*OY`o΃h;/ONjqf!&fdoxVE O#(z2͆nҺKs`zyNVe";k&uMDݦ-kUh[Gd_>D ʊ9U/km{.)&/` *X٩v5B_}!|ӡ{\oc^1bO)'i'!YF$ UGgjQ1m`b"& b0'TD#!r ,QUбEwZ)/AܺC$XӂǵzS Di""#ziT"bT"fe{}$,Dr?N* /ۨ7lG05$%$ 3rD*=;9=L]ue֛V'0U Ӹ4 =9Wk"X*,㙎]nŸûgX=YG?1n< Cg9!z6W-_0CiL9k^P 5MA3<9Ҳgɰ!خqB *ZT#_=@6 Ĭ4,l!yd{-scQRU. "z#uCM1b:3/>b~S4 m)!B7tNvtdWM>vg4rw?A+>#X^5ՂrOYPf&XU}L`Ty.%'ֹº,gT7"JYW׈bO+&Uצ/`7 0O{+]t(mI\tkfŴ˓@:Hs`<a\x|F.& ϊb7`3g3aDKbʊhZyDY-wA#@|1=X&AoY%-y#;;XCr_磿r% upTVc$IG+Yfg{?LDխWzyQՎ#\R-39]ilSaeɀvޝj10%\**B4ӮvW#0jr{b@t?9.y% g(EzYwq́ZȨrDd?J*E̓,#&D_hASʝ<҇(\by8 R\fM@>cK H,ӥ"10y2;ۯ0{Ch*vnsߧ1z:Eb0 Xv99 Kae~eRү=> >)1ᚏp@{~#6kѢfe=<~S^4\psRu/g7fTal؉?5$;7CR+`s'MT6'!;sVku;ǘOp8Uq[;^ r(N>t+G8@VʂexF,Jo5CqڰO9;ad . J뗀#A}8l &ce<|k\\dOZȦK$<,%."<6x=ek0B= H?9AG7֝EwC l?-Ӈu#MwrS\v[9L<x auC]:>uA]r܈^'B7up,I%ޔ&V5 oac^ x`y1>Ύf}@)ľؓ w^]tq~m^pmC읆' " oQ=YM \=bpP1 fٺf5qS'bn>˫d\DIʞ=t>SK,;q A6uaDI?p?Jsʖ¾C5Ivћ] +6<m|?E}G5@'esXz!YC-ڎ7xvU wXg?BKb1^hpAo\R˸a(Tz8AtDY&>r|e7?{ea&ąȅ{w; "P;(.B&_JZWdu|SP͸`[MGt!E,lߤ7>J_8},.RO4OކSI=DHs?̿+7w`|-N!*̈́yt] ׌~/Q̣:_k3ѽ,wվ505TCas S+ǍTi ʣ1&Pkzb|d.q &,+%<6#PV6B?D8&~#ʅeMK>'֦bD$e" S"' )Alo%IE0`A O()Ms$ ĎY?wHl=2F2]OD1r8b Zy d:[SuoW[DǮ`QY;?99ayIj' FniLLū,=XMm7b:2wҭ"?v?Q-Bs]{k0+dϰgx Z2ayj:,Qֹ9Ü^20vL.sTQH@ }!YPrJt)ҲQU0vl d~\]Mcɦ6¿vh>qS? yÀÁ S?07Gƿ$/s->FE]wtI0A-GUoNq@Ҥ{g"% !G%Q" Nb9j5 t<³: `Q}i[SX|$Rdk?/rwe<+,nKK4X)03񫙺9vLov+Bqwf Dk3(8j; VdVqڹ8j+~_ FN"P($r_ <\폘p-uĠYDqD7^_`T@31nNB,flbr4dy1t8W~1,5F ~n ^j-Ft1WeD!tr|O n {4FKaǚT.1\yw.%& K$lxT3dq[BK E'o9Wlo?}EAݷQHUፊP5w5 S("KzXi^OSȄ1?(Xt[ <%ŹIDxF _=zռ,D0x OWY(+x%c1nٝ/pAׅǏ0_f'cϧR(<%_|fn:va 4^+;LeȀq`wHIfإ}[P7wjZ ^:gi&AOLW_ˣ1 h0{>K;0'`SU-Xy_~s‹ϜzymGXZ4Fl!yG`1y8|- ??-uXt9K?COx`r2${r8Z!FesAl-GC Q)TuD땼3oB+O3c\/Os;8 W,9oT>`90:͊M =9DH=1yŪIfWq!祲M1ͯnUl3ɵGbk/^|Txذ*fWu.,^nR~!\Ha ֫V|L5"9л/{.aZIӈ)E}~>u],Ǡ 3lC 96`2ޫoB[х`f!K9XeE{~  ":M}CL#7~ LۋvĜUP}@_Q45hpw=YtU^qnXb\t`cEWu"m *cVaȨi(&[qް$zly+\aeNyW ѴN`6_5=tA]B"ˍ3r0]4㧂qLx1y 76 ' ׹yӧgxkpCo]J(N״&!q8ص쾂u° mX<mB&Plc$Nxd-7dC3:J~1K9"_Ks ,{CJ;`pDFNc+Iڗ,4VcJ`j8 _:Z޳5)QX | xK`t}4 0xD@I>[ME}sX^B S1IF+4sL޾ǃ9M;[-,RXK5D5i1z<0)KX9B;xHGSġ-}x"r_\y~D Y :'Ior~[%"HBaR>N8䎝'uP]Xհ:OvĺK_ }DS?31+@,s.È#̬7Z,8v^>عgNA9S2Eچ^\OAtBy#z@ψQzZXybnn4Xl F̮JYo|@3Nb. ƳֈѴ_F=b7\i? oCEDQ#"K{M80)V*ߕ)5Uao`z\z` ^t ͖bޅ.*М [fZ2@2j56]6*t0̎RX"T,D<.S[CZTF@LoGڨ5 y=5~<$wM&]3g 1JuarџUf}x䬓S GtZ ~s'俙Zn h5M@㫕;A eŐ˷k$^ h;Kftfg@۵RM^SY|D$",n*aXYȗ|C]uwFRz-7 QFnt;]ع{Jg`H3e&kho0W1Tc5?"Q=mC,P@L+"a)C޷c:1u3m8Ck^e]#p*0*lHv CgX^žL ID[liDFԭBLC .a:ܚ+xK6S+dl9 k%/>0-㞬S&Jw͹CYH.E[|=rx.󇕿`F\w$0AH];-蠔u+(Og):Z}?=.|yzި œBvtE8qv4q_rAoB=Yw S4i'bͱ-Et n`b]#(ix.V"*a?oĂ5e9Q CĴ[l4oDL7գ܌PB(P褨>Iއ(#+';!|#'`Iܴ%XYE@0Ž1] mnRE[훩$,grNRvXXEaWFLWe;]E74 jq-#&|e;$D_;K1 gK !&+"ς'Y+3eWI"8=Ӧ]cK-NX(M_ lVO Tqvt,L받@PǤ=%6e$J -} VP6BLQ! g'(Tlao~g밦gRs~)Pz'vƩ~E(Q*~SG2o`JAk9 #X4`/1L-ڗ<ӂ? .d,hcoh=By,3J'%oAs{ʋSDɵ kufٯ vr&|bE-WBq#ϜFaQcvMߢtV45a;h>%|~OunHro >AG;*.zCk3806ROCxêel!b[QB)<)\UE 37Ի8aG,q= m Mm~*-"h\ew|j_mg 3s1eUSGzoyk,޹lqV/ AIPO =`PR_ͻEӅRuqq+L^vM+YQJq !({& ZZ ̛ vOy_2D7p3Yꂰ]V_e=6GyL`S!< +ZPrg*ڊǼ,Έq @vnidoGw?N M0yW0 EyJimjN8(a<՟쨟{6&?h$VVV[KC4aq}#O& _1a{}i%ܽHߣ&X&;[N4zΈ*={~l}+v?vV0E&S}%@ B1 Pc>x^nPw/Or A_'2`6*MZS/JmU_X0 /{cq tl0@c"h}NB(kuZɹ7soyVqs1_yy!g(ߖ M':,JnU}oDe:*{C9}ÿ 06y͉˗޻=zCFPk'.MFpƒť}#v-i _ H!bzvnbBx)dj4*g;X<8/agAq!_fIcwKȵ#gaT^ >-c5Ӿ!BKBޥeq#O 6''^^GJԈZ弥 gr[SG SKw>ѫk& &ּ["ZO*Aޟ/G ׵}|G,)xO_ يC]9uw^MI bR,Qf],=7䆻"pia~ VyY}a*͎xI|8gz./[]|>t],BVo \ₜ-h= /h_<]U!fa/ZsQikL zw"cm` _|ZӪϹLBg\xc~_|0,|/-+t/AJtIRB7R b`9w̺g\VrHP ,y3?҇(ڛ5M3q}'Mc*Qz j]0靱/,|{ko~ΛDKwSuDsٻUD8OXX=H)L3~(LGGMEOxY.hǑ`4rEPJF6}db9@#rrc1mMF4vC kӮ>5"<*X)gEIrULY EɁӑ0,*uey]py7A!/-+`\³EE L}U4}Kg?!Q򙆠|NߗF JBH+n y3q$p^!褍da3f߰ `IV:=R)F-er.Suyc.qk5#jƟ?+,t]6-]lo"%ս%47Lhv j撠ac03:Q oRnחD0c[3+9`G~ V8E-OTw`޲_1Bjg* 2f̭5{9(ЭA&`H KY35"xuDFdGqPQf]@̾E}L֕=)wQd? \L/aS0ud/PI);!yFCsxpܗQ e~f}qvIX"u\8DLSywS#Q iFY2X$C rT24 nF4֞"%Y}GL CW9u}r#,X4bO^c#F]?vw~[ei;92MS])b(ktANX5z)i~-]Flf-"6^t@:=Ju9|`hFe ̩@g:l ?NL=63?.KviX91]jr? b9c\Wb{އX1qFɽ)tUۥlv;dĶ8߶ؿIFq ֹ%`gPRsUArXn'ޯh'sII6s w{l#b/<`cPqKgr٦,G{sa#u.3HG~'1{->' ¢|)1åZ~%@cƚnf󆅄_L`5P/7G{Pp{SӹO}Ȼ"WUe p0uQ0#Wi,Z!*JmMD)6T:yyMvד(pvW9Mgxr!COC:iB_z.Ks]Q#pObLYzh_pw1:?kw N~xX.^sZ/v|6!j`L(_A[^f^ !F͛<:SaIW/p6"uUI?`dͮ.X|U%vIȏq:X|cǡsy>Z0tKhҸ}ļ9[_ac%<_' #dd @-" 41/EL%jSϕ#ɫSݦgƟ+?́=K? 3.d|=U޴lKH܆v Qqnh.zӧmZE0tl',=̹@? >JxLE)鿰D}Do4M8l M0L †/K|]&"iXNF8^r >[RcFglAO;Ӿn'OxYQ]3\- %!X}.}L0&(}#= &$ e ::R'%#W-]֚LAL7E ۈ]y a=~lb%$8!΃{2VgBqr 8t Z#ڻ`|\B'b:7Bkص#gK"r5'WoQ? )>vDs]DuBq;Ua{&.]9& OĐmt3Q @RV=6CY0|BwtE`4C`G[<u]qE^oba[>{̂! wB,cU'UhZߍX]f#g];KQGѐbQ"9 3|1v8WIG>Θx像c:OLQG@aΝ!x}lѸqlRGB`=ŅQ bN"|mUceKdHh; y"``IZ' j>.qڭ"]ϭSԇEs>^X׈ί$"rд:Mio f>78ywMsTK=YPO&YՌn(( !ʽ0mv/Dio<1|]!\8QO1[B\K{9b\G2 ?pJ{j/q l0]V,ߨOR))gac&չ֪;&Zޑ\<*"v_3b:bvQk .$Yʫ0^ٯߓg0Ba"X3% p3q^W*gc{c݅e3=0o~cˈ]{ֳ H$M'w"}#c͒WW`;I*Xw˞"V52a2g*r ڥ/YΚ,&YT>"j>YB8SMViDbI_^s<ڰǒj69f|medn0UF㯅UsC){ T{ _'AMKh~Kiz%`6+Mtt&o{bNc0k7Lv ́2; P~oLXrul_χ͓:W'saś;0tmky<~:ނ!LDSCi_f_'ZPE\rܣZND9FݴQ=4p5%`[.. 1s^ Ku)b֧t+}nCP"B"~+ta_Ov_WeʂŧNfy=1S"~Γ5M{DȏwFP3v;&BYZ0}m,.)-ݕZ}bZ?7>A=={UP'x`u6a@py[[ @U4?=8%l([NxDĄu+ϲIXciFIe$2-E Oo]Β=}Dct+ǎ(rI0W2!a#>+L кYK9X&#]^l 0A6Eo)åaI",`f[<F&-k@s_콡"()k| Kw ٽFRa;/K*-0Й6gV2:zx?49z-z>`6?:ЫFq~ <Q׳sԕ/'̏hr ~ ]z- &}$Xc e{G[R#l+mm1s7yG{#/"'$v `'1Xh}Eh{~}ќ$I@+IyEێFGrG6nf.[H/0Z4+ں42bXbfcc&\rga7mX0f⠁uH@I?0Z}ɋVP OLE$HS7ޜۇe{'i(5T]66<8jd{X4qWSț 0|̱~F>7l҂#M^"9̃鍃q3Y{p+ lo7G'z54`ԠEm42O &M|٬quᱹcvPUz< @g+0.NCȴ:ʬ`Js:>8}0rS|=-u-<ی)NeR7l0;igN^k>_RnG9_=/w֦n1J3-]@qFI H}Mq"ˡaMvEWχm.J%f?,߳3e[AE_,jeGl.K(Iڹk(OA;?1ׂ-a>qXZ΀ ԩ 쀞ad)w(/ Mt5~sl=cDBN ]}c2Cm>f騝7?aY{:#«T8ƭS0^-.ԔT)A 1!sn&@຀ _ D,uaCݟ$ɝD<7]|8yHAbkN2 nrOC`{#LdR~mw1 7Yö C2 ==&#`얊$/:XZl߲^1!%P:LOzBg.}r6zF Hu|8Q|nyua삓,CL(T0Ȇ*;8}uKi -gɸ4{u[&VB[IKW`uq!{?4۽g$ I3> ׂBYT~=y7Ĭb=!9":) ;~OŽDuWD% Q槾LAl"jۊ}"%yb`Kz'5>yB3l! kV7̅4G> m\#غ4y h9_V]ō{adMAVvg!rU7 Qo<9_J~',h+|T9TMmrZ`d0.=gVj +ۛN8BLkB{_l$Bm}7ɛO)莀tJx ȏugXMQDٮKa Y%LGc;ܜ?`fmcXeRzyf2WMIE6TK*׼+'d"5m5gDsA&+ݜ͝-jJ~x|_%:0+I4\VE5xF8,|Z[{i{Xl{`|$ˮ~{`L +(>]or9p3hToSg!\X81 ")!]qF2Ҷue /x1>G34XSoEvʹaOoaXc4]J̑w8RmoZt.HC/6r$Xvi &#ncټu^nG{摓#@zڊ@apǃ|VF`p*+DZwf?p_2|݄ \:me_R&uD}!lNh 3W`1&:2`}+=ud8N }ׅxp#z6$=`X(Yt='W|w0_SkT CrEe[f:kQuyazytm)ζlf'*<פ8} R']A7L`{v_VYžҼ G@!,̄j]1$Kܔ6F.U0a$~&*ODWQ +xh6"ǜld59c#{6q;~KB UMaV32_|ŸEQ0tw9[{q6βd#ð⧲|R8c0?UFJ,.-18+lĦ\P9NA| EլCRJT#!peT.!{Z~+܇[B59~mc˙:;fxaw}TOѯiݟ9huj"Ren+b vd?a-ԪF#QIejÞ)C͓޼ F.1y_Ƙ$ِ) a3w(`+>Wht[DC#b+hp 㫔~!f65*!XBݴW/Gx +ĦevENq+=Ciauay)qrtϞF5>O Ys0641 5sX>Xٱ1r.,t53A"|&P,2-s)VW\2=3`GZ7!1Q)HO0U9C"L0eb6:(}ͽt!/M" & "¼S܊DƻE=۩"5Xl ˙xƃ10"ZJݩ4Y?Eb~|i*ޤm8?H`mػ|X>.Ga=FX)6oŮ!܍DCaQ\KWJ;J;Y{/nayrzíASDe\?``ul<(rTY5b:څ3mvZp!HUG+hjRBNr=#K\tMQ>~5tgoҖDYe,wwn1Oi0ɐ6S{D JWTF@ob+ڏ\oͥMt0K^1-vIP^&Q2"0qwJ D='y]!9և]aw{7Jr7+`|0]NGbA0ayXGTO'yBi_A;%k7y -–hW6}S蒉S Cks?ye`J|Z'V3%`^4Dg<| @sY@JŇ0ث!{&xhݯ]v*s\{\5z;o7⏘C-DH4[^¼ghag Ф,kZ`i@O֚;OOg6lHށE[>Q})\b.\Y9_"l0=)\,1.2ŷFñ`],Mr?IԱN:Nk4dzc5-J?TׂqZ8~SkJxf>loTu/`0g6Afc? úW=_/!7|z/vB:6sMωvnq9[UUzlXNPǠ70hftuZ4z@Wm%A7UU.ްK lO2!Ђ_bKԂm&m4has?o~W Q"axȵXm;!"ez"ƿ")3w5*.F1\,,PdJCL5:xa!Mm8lP<=OT?.r; ׹-v!v2",}O ?ؾ F, C|m `8Ć(:J"ܤѰP#qRZ Xbzh/1AQty5;+b#jgs#ژoK1:YO[0<Q+@߁p 2/ÖvgO bESz&hX>v=/WR`lP,nX`-CV"r_MCg+k?gީ3xDONy|x}SO! Cj%gG[x1ɁEl)k8G6 5 燒"tsO;U]&LNmEa%oZsZ5 0)/~ eLtK LkAkuINZ 6 ֝hRq,Toc~:<&Qӻ(_ۑjp 6+^DlLf9B%B%걭| v܊`-g&94*/@yA&@dq!!|1†d">$#6252E{$W`#;g:l YLIy#x4?D{5!o,f۞cێ9$,tQ-9X/$^+D? B%uO&A{A$:dPgytRêQQDq֒sv]S޾+;t4fx>6REjmqY-X^}b~"Oo;Bw-99t tecd|8 Gؾsr0$96ǯ=lU[.]f'\~c{L`OEv(I:%8a+,r ,I3}^悡<ۓ)2r& J'5Lcgn_ԇO0a{NքN/"i[O*CP;[2gGa|v1PRIjGz+`?2 \_R>cg}ڄOSvYB (a#J=#6cCZ ; dgaj߿DذUE K7}{5a<5 T-T JKҟZ0hMp@cu?rS367Egc|X6p@9 Kr6eۯ`+w¯lU1Sb=AxDa=۟^D}'Dw\U1ԍ]69k_xUmb][,kNSW]nPWuQҿC ` '|wV?q)L1?+E,أ]M )A2ۼaF܋&X)ؓ˂w; adXzKi>%kh|g|X +.]ͲS.v^?R65\aFeL6AɅG1ТEKE#`Tٲl>{W Y8qJD`rP!0^:c{F.QIRigpP~SL!Ѣ? z2|Ϝ:9g mؒ|zr3 ٥U!_,- }vGg; `OsF^<5Q{&a!Z[DTww{_ %l@Ϻ*d̛̹x>*\UUUDMQX /x>D3 Iؐ@?}'f;ODqwcKl1q X c4hhR?_\9 cAsi6z1sEtY`s . oIt_7!K/ݏ7T*7&;BcvO( y‚BY2#*o$U]5莊9lP>-= [%Sa08VHBPfXU W!v^}p y{@vRm_榷a8iVHu{b^6cFIiKVBKF"sUOUsѷ^Z,'Evn0|͐ <-e]B d5`TѣUtH'lYJ|{G`OF>X 3>/O@1T.h8S㝡q _޴׀]a+v~]Di1$pia5AΫ b]X w9Mw" \ o-nyïBS k"&|yXԚq۸q ߮SOH*a^lw=qsL~aٞZܼ'nɱ"05Nw0>.Y0#Vjj''S}q a[y4,͈,pȑ:wNxޗ o03ʸ:&_y`%4?8tc%+IX9ӣ kL Q~ sU cؼ4 T&J8HIWO;9sUyScZPw%"FA6oi%;Z+f֙wHL"~Jj4 to/p򛙹Ca1 ֈˤa@?E #N9*P~孻R oɇ 8k0PRYo7p'RfLl>o-V~ڧ~#ousBRC`۟Z6mF>o#X_P3_ؗSEr7|s#6-D0yj1G4 G?g r \y[83\Wۚ`I/]x4<έ"^kT493zS *E|.N.bzg HtFMκM>dz,b^INF7|׳U0}kvϞkFD{3n vμ72Blu߃gv;ET&[(b-)x~B>5}ٲQ|wLaBɶ= v\0̇nBEis֮7Weǭ^ X(qgڞvt |36f҉<)'{ڮ'`#T15F^cӁm3*m ?|r ]ڧ$HS_"R1_ ,ْa?"6Y֜Q2ՁEkWXzx] Z=0F~G@3;Aw݃pC͂X5 Bct.Mjpmbe3Íؽ߼oCTgN,n^` dY(ֶ,#Ӟ{i%.J) z'0>Xas嫯D?*_`r8؋cƷc>Nz寿e˜{0@.Z7Rz|.gF17}CubmeXO;ԁqneOo{( ]ghi fcw݂$(y>%X8 N y*)e)Mla[7#類u'_,1ւj**?1vh'o5ZLWTaC Qa|?pP`s7!Ѭ Ƚ̈́j@Zf]5lqPG5*!a1Ѹ,q,ڛi:aO3m\DQH䆖Ejpp*AEɖad>۠ T^J錀74`=}M )@xz?{ˉ_hMc,|-cN;Ӕa(a1mzbtM]6˼a`f <1\=`7 'U!oU k`Y xc;zD.!V;,|N`$s\! 3Q{h;Gx |tN5`&AWi@ 0k!$Vs:>ƸD9vvyiRaC3HHeD0]y/(b9םXv^2#Io`й 2l4e@'¥=aé"X&DCIL'Km{&Ro,yTwIwv؋wy({L[ ڱ'dbɱX#6:KFY G>x ^W)3Ǣ EFiχ`= 긏ö̓gȥvՒLzgɉ}1!X]vDLr ^"T& Z|f8GA=5d $ iiɚ 1:; h[r"q7T$Noy&XwzlݦˇnBn_1Jְ eSh5m}MX5ssv?*BTzvL`E$q8lQ#NzURe/i!qIT "\Xɖ}%"&dReN>Ձ9Kl0^9cb0$.:^;oN{`p$ qW1M RO͓=(cw%PȿR%[W{;9/ ߤC]B>nj aC:c]I9D5N h;aƋBˈL1ۍgX.TKNA[Zb/<3GK6O/w`CӰ>K >?x7--DT1?]"ʆ$Dzi\$b=زEh>Bm^cm?Ҭǯ`xV؟fhEXjTb9m MY1ѼK! ;bAM#$ȮY J#:0Q_u>4~t6F]aI9U ֪Fz-`kp=f dWi? Me/ɿ'.4Á',1*ن-KjcEIT%$J%!I2S$R,d'N9g'{z=}oH{)}欰jbhOnzah@Rޜ 풋zѐz' 1 8ٓ1a}ּdPЫ/zR<;9aJƝtyWʌvYI0;kwi]ƷR+-.r<ӧCaJC*P|P~om751>(};%`};Bxmd?cANtSonS_%iBn-jwߖ_b"Gngїa^ҨpJ檟6a}wQFlZĨ3E!l FYҲ@o%"Pj\T¢7[Bx#6*BC^00-Bgj$zmhM@.s{ӯ|t^rB_-u^@붽F*;Pnn7v[Px^tYjy huOzhj5QK`BR }Wkagqo q( ܼ(L#l͞ rUeDU9dP ߰mN(㺴&|q*I{"A2 5}.gg^%ݫ.zM^*O1P/ŒKifUW!x孂 j9aB]Z(㗧_#h'&`0)?(I}-$a1-{λ =5n>uѭcGO*;qDkX1㧀=krԉep(|-[vC^wxκtC'J.bMM};@ָyw Fy'?< w{?aF[jrC =j=IB4\b?#gjś%Z:18n4+ڣp&4}oEƩ!JZLw%ow6EdR X;,2G.VU5i#^ kĶ_./[Ķ[/X~9TF@4m8ӄ>vOD| {(wn?5F0G@YqJ EP~ KQMwR?ib7h#:e$Vc3>g/sH#:mH1.@,^S)C.HA{B=no#n0ĽuhIzvYֽF|׿V ~fd$ v/YOK*m*HO"VAËbCh+w7>$H[ ܼٜ0d(20GP-{jo9l{Nϯ|smai(,|K={J&V,Bj%(~~dd~,.%aJ!QLW 3%ӷUa&yt _W~&vh$6?OGI/JA⌞,oÇ$(QuɀaջU[u۰^CaZ_қ}mЯ 9.L `}]=v>6):T/Km7/})kG 0Mrcq:0h6k> ~{W%1?3#Jo]cM5jiCգ\ƷJ]Q?)Dut XR֐RpA  $\rdx1ؗA<*u Nn`kDEl?Tp>%ܸ߯V/ڎyϯ7`jGl=3ך.Ce6Ҋ J? ,ŋcmo+[2@X!+aJ2U5:匬/FCj.>M8jorf"OUjr9+ΘQV#~` _pYq{^N#CڧRaW6xġ &~=[.JKw[4Rj_I@O4۩\8Wb70)9^ o5?/We4Y5V6]'6aqa5k]y_5Or!a\>ڴ 4[~8]/ym1n21Mr̓zb\KFF.*w:w$`YN&! K?M´6Z7ĉn°uN i7с[Q[GWԴO7j<"`ɒJ%ϊ}ys-Q_"qyjJOcq+J"hnvxU|_rn ΐ7xUOafo$FX/1l+?/uf0} CVg3ۼSuxٹ݈>zoˁSynx.'[<^#Tw돸鈑0qDr=& JvF`" A(wr'P_ ֚Jظfn/oӻ或֡b6_X3!6iG$bV|`^A[$i` RTg-ohNXgag!~3=?fy0S$UB{!@= =0/3:B_tSÖC-V,gm~Jq@2?V*!~b}p$M*:fIQWoB4tdw nylEjX{5KpOFM] nC#|=O(ĴGɅ9T[(M>2ɇ5ID1&fCׅr ,Q?qLƂ"h)4JB;%6rTOrh Lqk#ƯjTo'4]Ї%gqLXq,9 O?oݥ?"jca|y~2PQFW0Bi)E~}`?w*փŸ`q7NtwH.b 鈘1FjPdZzCZaZ%(, k c_s{,@*|,R^8&) ԍu\'k&rZer71T}ޓ m.: *~g"?1DcYw.̮<욯vG0,:к++ @{X5?\4Z+2 -R/MYgbfɓYݗe`׏ϓ`pr$û>ޅ=<7{8AR324FL3Ž!c]{~=M|smJX2{7V `a8뷣h n{6 X.D~ &*/ؽrjob[\we5 ?U[ ~h26%Qi>觖(a郶Ō/C!b߲n4-_`ww)#,HV{U?-)X̋n;k6"^\s d% 1c#`@q$ryo;I?z/ak&K5es0`:6L\!LYu/6:*,"Վ'"ɗ٥ =/%U5kđ051{`~k͙eD`̖ďvLg]ELNf%;<_Mf7@ V;F^lX^g+oxOKyq{,umXnqn.g9Db(ljXqg pWI%-b=c9imX==pouXA M-"B֩2>VXp]9 W%3XO.AU(:EykVNDžD&R: WU:D`R*ON,GEaypeE0qҝKB\ whҔ/ޖҋx]!޼l]1& .A<#g7|G1[*{"f9 dcaYlr[{7#Ob/LzIT&#) d a$#/l]! WzW{8Ds.I0c?Ggv$R[0򂕏7/~ w`x\la*$w>t5@Re9k[k8}̏/ xhK^ L|ʮѐ3_ߑta(gIjt qHj9O:X.:I EV%ϣaq#1J/A씃I0ɯό>f"|vCW;T ^ɶuN5cw>$#fqVD캏 %6rN"%GTy?6%eӨ_Xr8dc>5J+SW>l)t] kŞivK!9~Hǵ蛤`(gp$A4)ٹOtFs4W8qyD_95AVH6,Θ-P^jzuZ/8uTcD_0ގG|s4MPY;h>[m|9b1(8WW_͂"F`y}6w.T)h@飆Ք;utFKU*H1)$6[OW?ATNe Xfv#1Y9%!DsqѰ9qJlYB vu떰ĉ/@͕]Oitv@nmje: J~E̯ 'p{wy}Ă-4AIWȹ~ ΐV0zew8J7abxQqḉ [9^V-lmm, ?_PoٝShwr%30df^Ǔհe7ȇq7A0Ya+.)*SW ~[/oS˒. َ}wmua)1ᮣ:O}`|Z$k,&;E lܑ^$i&<,VXsP# aۨw]D%y]DJփ:8T 3C?*f~yzlfmTq4$ >nҁK79r*нK}CV}hLb?C[xIvX]TL9)Nh-C(׬_Ӹs 6t=ᴆ_D!8'mX^;[?/!+u%qPRR =қE20Gz3W9-gÜƼN (%Qy -qs4$1zuN]f$B.>ؔ4zl_7qp虘| Xt﷒İX/c *ze`l.r ,]UyNY9r.Zx"?Pk#Xt.!v- gN9~CbfCu[BG+Oؽ`gXU|,OIw1#Y2.DDg߷%`Qy^a1c<¥uC"qjcz ڤl8d1XrD\1/>ʻ QCsAʱ/n ʃ\aYe<~;J9Po8mYb|Dm={1j|x£bN2 ,"k&d63̦5{66@z*EfԷ7`~x5 2/yNIVf'xF[rays1 6iVn"b ƕOnƝUX¸AF,aIWS"˚ L.ox3zsq_xq}q6k;x~IB֑]#DUR~PG_i!mW?dz#,ixŕOCgmi\k:HE.{v`MYNͨ=W786 `e.dkk 0Rn;{TaX~lм}` d,t`ig[ O]tIGfmy2UOR&Ȥr%\ +F kXmDut2@*3vzƴS- u?8tW5w'ﰯ($>NvQQf0F<ǟ닆Wn?%goI8bȆhi^!}㻇oamT? іQnki VϦ[y௙H;Ƌ/f!޹8 $$av}e>}G%be07YqaC#Ę1`'^Kvcry3ŰrR}|S.9\P.ežŅ401s[! |D?!:{Z_WZ 6PUd,( ˺/mU``q̉d؎k8p-EE}::*!?em +$"i-)؏)ڈ<:0'U$VCuG ’d'է=E>~g^Bmb57"|7ֆyW981>ʖ(1]V?# -fO@v=8e ޜNΑWu s0D;4ˊ EvC1Nyʮ=Sl#,|zcd|Tو*RϮ}8/x-hNsݾ!^ Om(!~~&=BV=(Zj¬q]LL>;U!`={+>$PbS0C?at!R 8h( #XL<%^3f*`*C" Us|,~ wsK!XoiYys{eTvퟫ>hd@&29gh=ָ%F̄y->W +o}tG[ CM6/1X+رļx~#P9tN(ayQ|w3폗yrb9tv::-Q0vh8 !B48+]<Fk6t`u{=BS{ق#`ZV}V"Uʥ c&XceK}X-)ia83NƩ'"9\NHIX;9 vFu.;-oz,@Y<UeʜC5ѽI 1|B5%ayVQUjh~*Ua )Y0a!t:p&iZjA I\=MG,U#ODHbC̺e[O"'dsgE fDS3x ֽ5et6F;;X6y uz:!ɇVL\+|O"`DYAzj#$ YΏAWaɋ154 ?\Jmdݢ&G3M?[ W;l3~J#4ZcpJ]є~,aG,M4w:G0&@|H][ d: ޽{ˤ =V'=v{2;0c!%G͏X˕e c%MVe xkLB NQ(;#-1;?7x; ̥) kK8X48aF?@ #ٛ׽;!qJ%&xa̩AN N 1O=L}Mw/y0HĨAqM05Aھ͉o{NHx16j$3U#X`wI brdA"ƕbqIvDczR *vqzܖ;B0- g<%!siFt3^:?{<&B.{b~56gwx͙.{x1pމ+aׯICFն!`Bm͛B=‰ Jc̓;vF"q"shAY`deKs5Wc}|pU,[*|o'`4ul񕉈́wSNa _*葫>L07$>:xEZDS n`$âwq0=:F(;nq 'bG'M^n͓0KRw*+)ɋ8 E$5;Y{X!?LSwqsf.XwCSg? cmG8ԹA_m781_=dCfI0#L{#`9礞0l]NzkG%pfsm+9OAtI.KF$`+k($>vAgQP5rf|30'ݬ>̛_4ۅW/zr>9ѱ|~n.^9 F~$9I(=O%BigA<rVd@'YpOխ1,ݰuqͭ2ʔ6,.ٓ{Kpw äa3/-4|rƧ;ރQR-=Lm}:8X>{ؤ Z: [dXm)% $FaXjջ<=ø9M=!,:: $K#(` A՗I0$X)HS8rJ|t.sy &!՟oz13ę'1[$CL7W4t=[` UGp_"m0"qSiȿzq}8,$@"}*N)`VOEl *ʰ[rX!YɺzNy\A[&=^u5\YthzhƲ ^vǼt:Kf=akHk@qHOU$ eEϫoD{R."k+Гu0;L){(.y![,Q)y *a݌IM6,fY܁kЮ$2:jou`m=$󗼾 K+ ekލYvw3x`@< dt25MUbE2VcI Ef=q'Dհ}Њeەyk{*|vX^NG="psY:PY,l?+}Ty_0=)Q:_2 e]}M&#V J/bLY,Khظx Q]L9=.bɷ7u2b}1\i3K#گ}VsWz TI2z$C=+ԙ-A#⧸h%u"L.MѤ&hey>>ֱ|q ,Rnrwԯs'H _6n:{aQtXkx)QOzeh7~# ׽t_謅\o٣Ѿ 8{_JUn2i[zְ.Ŝ ;,yKB0>)l4nrBk;2wVƷd9cV򭙘Stk(+o.~uJn|a$ >.pqР$`*(}q06]fckz۪lj!4bJo)7|u׆TkpZ pBgrl<_7Y^+uF:̱=Jmf,taTpx(īO`c&vRXE uЈqIX~> ꂍ'F:9cI4ges,i X} `Z/=g< C;'h,|8~dEu˟CGS-l=N[k ndccUwdֵ )$ؑJGTo"ZV:{wPK / %C ª#8r_D?.x.w<@t_i5}UoUAd\ WO#C'@ot~~ʽ@+-뜁Iw`}kY/ˮ b1yq2b;ÎXDOQU}|V˰A-,܋baA*A F5jasaTD;`cD w?0ޱ?y=51i߀^'Q3h*~/YY̰lfQ0faRp94L5'j-]~u3?nnn[BaĆ ]??VkO [/#_]Sb(6Q, @l^yY#Πxkp5ĵ@-C`x HVӤ˙C|~?e|40ijA"ՀK:D(mvqo\>纞K|"ly* ҫDe1v5 OU=c*/O%B.v9taN؝'yq0{;¾9叜ǻZ6aX~UzROG85Ń;1B"'Lʪp\#Bkl.<8t 4ԇt]0M5mj:wOx({,Vq;:@1o'ە ,&YDtvtJ3= =~ʹ= $,YjZ3v`]܍NKU Σ8k@Xb+:|Gt9^#/l,W"*j԰3ŪmllkGJoc^M= Ὲ@{$U~):YҾoě_/n-W"ἃ`|.lncb%jzVX=~}"6ur!kcU+ S^D36 Ү#a*Jv3JE5w5$8 0ŧW]AE?}MX/I$-khI-wPQ1L9 \+&|j(#ܟdCa 'X5.ؤ[_K_x>=#c-΂[vPWL6;cwEa{qU~GI*^pYc}{l <) +D9agA:a! ]5*?řÀˁd _S,IhSK:+} 1$c=mG+&3kћȯe{:U¾y_@Mqn/x1Ʀ@Vʋ>3 ibN#*Q^fDQ~VQ.؝LNct=Zx1⑪%V6FC.Aä$T+f@P{SMsu=SEa\7k^Uh&z Ss5yf.Lro]0`S <`#/_lL]{[vx}k#̭ ʮ1-SF Zrv90{l]19sanOS5,k rTDSP3r_1L7,A<6~*tGf ,ph 1[|>͆U7D8tK&Pf$h ¤މ`uhR<ק0'q¤a?Z(PFaZ썋_D4˗`CDye*^ ᪾@&=FT'Ĩ,`- o̍A#sf0tm dpBvŒ|%3bZ9:9~E4c #fa #HI0dUd3t#o1k/ș OJ$]znLMWqRHf?F$ coRBevqu%b,b}nq. }5W c0CROC|r9Q_cPowϖtnE}Da$1?%h%Lhzc>)L ;ߩE )`Ԫ~(]VloFcVl# SRa&Sv8 K1j`<'jLջ+ױ^~(SS%{/u,OX^F9dٴeQSm<~z29w'(U Dԁy0PI`#FsB=Fh%@a. Ёň蕱z\ LwB䵅+H]-!a4RU2 d6gʈF~iİ4f[$![=PȖ#'v`|Iz>+sO䟮E` NCG-Nq6hefBSE.$n"꯼$ۚG~v~ &5Z`}C0_h v7]̡a\Q *0)D@c;)x?~kvs|g#j-iH1º/l`T Çp%-4bCo7큤pNSz{ Z*zϼt1EF짌,ɰl>xBaU܅˲gx$ig<\?~W/ uuE=L1 5@]ܟhhuQ uOcgXN.df ;Wc9DsPM[ĠnbX\Ww"|CeBbZ 5=Ւ/zXv~ܭc )rlۻwhm"Ʋf{L]i;TWۿDS|EWcĖ>gUb^1ICto}s%?jXӛKn[ٝ=!z_7 wVqVyOܜ]3 캠bnGC˹/ go5l\v aOU3ybFNqݘƼ@9s\)t)(?\L}gRYġ9J&Y`T ՈzF1ެ1X~ ΂1"k&, UE  ޸8 /@u& ߼Vs 0& !"{'"G^(h~: v9* ƄK`$@%ěԒchʯWhC׃WϦB<?rx/Dak_0wfХ ,?泇UɌ k)K 7>`\B"i`Atu HDB{Q mI> _@ڞ9{]O-U<&~r`P3P?='kXۡ  ݍl&{dqplj1'_1 eX'$iuM>GJWJv`z93 pPO(9(V;SF[1K 9Jԧ 0#$XSdu/E"e+b-/$* YI%6Dezַ#gv@\x:N͍JX/ йf ?`&ic )Y ?piB!өgi6IЖH3Yk9+Ʌ D]Ёie. ^"5+dfzRa|*Hv=n_/̞sz`Ce_q7@TM}~7P7#&!ߞFtO *JKxtᖊxdaa{-;fSņ񝷞z~}$WY2y%}|bg[f; Z@*DZ~uQVܼo, k 'Pq%ƪ=|-xIDAKǏf0bjf爐~_zאODu)r'A'&a聩h]Xc?-'O*wNz)8yӤ|,f~Ț'Le`(c{,dʫX~՜$~Q5o5*yX_4d9|82h{d,n_KFXh5w?|sb A$UxA<4DW~ֽ&A͘aV1 Cݔ V/>B|W%!܇& GbN}]SD^+hh6GrC'9C P~37Rִ>` ,eJCU_vaxvduDXZq1<S8g)f_O"Pz9:mzR0ǎ{ \nBD<:Dۦz7=[7B۲ W/cJh>\tşEE19r55L(MnSnv}ꄪj Av zLa EZ9O 1LǾX[%L_mښc-wX45T~ bp,A11(ՕC{ Vb0vw:+u >MC_^bd(bH/,{'#ᆏ`:Ձn.(S Ồ'́%Ea R=i_qX&vK`6WY >x MPB*]GM2v<3b$FcB[1?r({돯¸?datI RMxqyDb l\ S\oVê`rE s%zWfͅzDgTy;Q"͕`v_D[޷|+-uC-l\ِ@rl^ N=Tb8sVf1ݳAk;J7K0lS.!k]衘; LIm[ 2@9bI&HPd& Gdf`P_0w`=VL,c1kd0'1ߐGvw1]uXy~l,,SmI@W}B3Ծx: ")}S_Vȩ7wh>>9:Yj o譈zl]ܙ-X|ea:䚪~r *޹s baEzEfi圖9 ̕ 8tWL;vNG*q[، 3ԫ#b Sle"vǰާ߃{̄(QcSI "#p5F:ܩ0 >v~d(1ơ:JX\#aqĬ;M5߽_ P}b^ach']ռ|Y\;c6sҡAv1Ejn뜏I#"x-pF5`a\Qga@w#oDuB>,lvԠGȳ{hx-F _+˫0i x&NՍx8M W%8#PӞ $p^ʗM$(रfv g8 GBig1ko$"qhڧ+Q>'ЮI"B1MBw4aO_^VoX<3 ;-kR |x["ID`$!_xXgn[h (*yk[|/Fˮ 793큜+O>O=NICؤs $®MK*%-sDCE SB'kv8gf=uvuB$_>&S{0Wt[;yzj&re,f";lއ639?r-޹w;j@ߪe~gwӶ`Μۻ>|j~I,S~՛FC1cSHĮ+ZM}:e5Q"/buK?a bG Om!zW OC\k᧶}ecg9w@! U`>8u@|q\ 8+[ۙ[`ѳ xarh_5&_svOq"˷i55aj)șEiĆ+cVe흣1#yxz[|#qgۈL!z)Rg6RhG#]p睦Jيr0Ǘ*Cd:xb- yX78Z#؊[|y|p@GKv#oXŽ\b&Pl8<ac=mE|T%S'y0y1/ګ=6ؿW㠾hh(o 1^Ϻ0V6wPi - ҕ`=d/*l7\8(=|{I$he'-;q&C&yoy#-wGF>|6*6&ɽ*@n84V\G"XPqA<LJٰb21Ţ-x$NtABRQ<5T4yxWFذHO#"* 7iĔ؊Cl)f3eD*/hW 1VW_ZAcB؁ W7w¢|GιwQ0|24:O.Wf UŒá}{c2y pwF ٿD,5Tj#Wͼ+%IFQֲ ~.0&U| zt* 1qsynKjTaf4>{qQ..a,hDoYwP^<Ց ˧Qz,p2Gz>2Ys".Д/2: 6ke/{7ITqk :wl=bĠoD@KJ) ]ިlt7Asp1}Fԟ=G {2Ēyq B\>Bo5 !}Ô;rlf]{,' *^=zӂ{ {1i m}nbѾ$:A*q$w7Ӌn}ُŇ`"D(iQF4VLpe4?Kb<Յps#2Rx D]N;{a[LSCo+9h }z9h‡viR5wX]lli߶ 풰(u(S؃Ā`~$T$L]7nEu0]ܒ5 cR3鯘BBTKas[@ݱK4I&m̓=/l>,"L3 ֋ջ9>Ң" }Ol;O`]^V1U#_ -Yc-bʴ),WElWto EyO_ 6Go%]j13;5q/&Q)|ww Fk/ѵN!|HBMeox)2ﳽT{ pZ|kB BGLmˡ\Q?rdx^_8w6Q|(hjuxY0m? '&,0rM`,ǹ9i \>Bw q1燸T6AY7i3/}jO4A$hyuuۛ}ߥ} N#>=i!"ap9$r 틹b(XDxNji\[zM$-h*ac' Yӏlv1l3j06@I^ݣAn61dn7N|δ`)!;E`/'c='H&d1CKˬcQ(o[`X!BH4QsѬ0o( Sqy znY37{;gyH 鋥I0cȧMOZ)f_֔Yo e,멆cz`h{U{xn_s6JTaDD@dϥ gsX!Ƭ#&!)eZcDu?F d=:EMjl c!*)+95ac`@lxQ}Iut`pDtgC5!|m1M [dDsr(+ bXnK=v%P7uhXo=CO`YU!SwNAS:3/z3N5:L A[Gީ:{\$X7IĠ@#l!Og Z`,~OUq?h0]c dncE(tmeBby(|hV$['33kʭ{/=G}1Z1k`n,.[?IR3>Mxq)hɻ*yFv*ڮ{x j;^SDBIG41{Y6C,?zk~E. d?̊ư>^^#10D?ԩ }(ExPz3Xy(t>`E? +U&E~ R;~_: &a5еe ;im*<0I~HV8W`Evv sja]߽Gpۖ`օE``DQ~Vџ_@k]/Go)О{CgeȓI-UB<(=M7((GB2r anysZ#$\qdZ`vS{ܣDzcGQGPHv}- \}]` Of;*D/ ؘ y|iU<[0:/$ koDFaZۛsxhP)Ql5kz鼎M+ d&ud ?j5T'`1` );j5r0J|W< 8R JC_铍3GUxM }>8ꦹ-Ă] hXվ3DP{$,WDI_,pʽ-OMdX}l KG a':1"| '~~3&T S2̩:@bxi: C3DY9Eucak}lծ>$lC>>{=}οDjsXc^H#3No |p̑fw/w:7a#~P_&Tmr<6qrFVakKRS}Oar, fٔ'Ah8 |sߚ*ՖD x`G4zMx$bٽ`N@7u-39GyVz"0#&'U=8j=p0CBQIm¢ˠ1KsoP7o*EϙO0N1MDȟN }U؛D 9}uL{_u|eK SHˀ<` tre`Em;W;`.E?9.ը$/D5xOHЕhgr})$1w >ZϦpr +Q*?zO 605xulkSע>rBiᡛHFD5ԇsaSir=ieEh.x0=B.}8j4AURtI=QV˟I̡6?-7/_VE[g0 h! d咴*hH7 @U{ad~0d* ?F-n(_d`h@rw(Viy]`'jXSDPWkf{V⼅aNl't荆^k8;s@[|rdT:wUG$49^H#;uK>J(/o'Wf HQdB{q!Qf,IU%ŎWs~|s6ɹ5NTLAҞE݆-1!>|-,M<}0: tBB=|8 =-FM_L8nu8&}`}l}*ib`ȷ6C>Ĺڅb?'$,rC4a=Y0_+X ه`b,l=ni{d +2Zc`Op&f{:mhE0#tj78l nI#kDz57"?'a6׿m0+v8Ů'jxYcw f8[`6,ZKi+[ï9O} `LS3N vϤt!=BÝO zch?ꍨUxyX+K,8 zE"zDƞ]ͽ`xDAg?~ť璍1vj8_Qx V?>O62Ee;k *KҧfMFtDSA3PǛI1u澉X\/r) Ġ&9)DJބU=SM;w &bS;â[]>A?: JZuM\aM)̒is/ׇb^yV T4Bʩ5`͞r%[j"n'{X64Bl2}|j ڳ=,D!zOx=±Sst-GaNJCO$tjUebz)&qO}De)6GZh.Ͽz0ߋlWжu1nH7,xzh: t3ZtA~џDv7^5&aZ(YdWY`eኩ3;o̻-ޫ_GmL ޶<1K'F DBe;E_Tyw(5h߁m0Q[Kzdlj4t`c10m?9 VQG"ýq"[m9ֹ7dEv; xؘ!j ||֧E!% ]i~ (=rҕꀇR/'q0JP͢46$( Nen0G@EXp ߪg{㖢P2NzD(@(u#4 g=]&*V/vq:Yi Ik3 opLT`yT_"H.b>D&zvҘ[,.>N##)ꪈ:U'bqBN׊aq?6,Xt/?B D?5fA1Zz0+O{/]^CӴhib7d)S2]g W͸D'>] 1A%BMRENñNG!d'I%Idή$RBMVrqs9&|PBC{GYȆA }X[F20~U+^].S ߥ}qH8h8nHti![N>QWlLKB&̭I}wkiƱl%6O`ĵ^8C[4iϏmc!%*LӀXDg&/碂򹩔hiL*% ufapVn_S@DOaIG 1T̅SXRb ?ީJrEv mgzOq%ϒ#n |tX?@Ff7 Q97HZ W8`Nz$ڤ]w_, aYir YDį \G ҆Hnػ>um9g`!yG+2 N0n4? n*R.>Ai&ŵj,gYI-[Xv̯8L;bfz O+W]?-L7| x&a_D|s*A#nW摢aX[-a}Nlxo V>ZF08lX|Ǚn.^wɏ+M`y 8ض#Q2 /^x,nyiJc=>^*iOɍX@wZ#_ ԰nqW0%VE;X&!-cYDo3v+k& Z0Su$8+&ɋB( oHLqP{!P ~GH1շx{FQ ZEoHrn+C8G9 DE#"{{Tp@Q|8pQUkh^OEtst%:;0zJR/u[%-5$oBr0Qt.FM)$ŒOc.&ͽ6k]h](4:ΜAmm" bJ@$L] ~ ۚ .Țݮ1_W9GX SaK7n! O]i`E;EE:X1fK~ ۷le QU?_Dg#MDuD!:!\Txl Ϗke ^YUPq]&LUI10WM6q1 Ԫ,gπTŭӍnucoCXU&44'p0۾m=tY@,ŵU#Ƅ^Rɰx#ʶzlO< {Υ8VoPߐF+)RCUv\ LDiWjݏq")'V9D [gZ+1o|m=|+w Pz;03wC+.>pS*2_69\.hB6ðaj>bX1'f0ZZ51ץpl2`ޒjS`Gn|nC2zdə|كPuWG9g ,}ԛV#a![!vt>5-pS0:fa58!#=VO @dpN"'b%Es ,.+ Fiݶ7 8غG>0Eo[/U:n3 (jF@hQpշ˄)- z]= -ܺ^QFY#jʈRqmDKy%~4n{:Aj3lg!ʛ(9nd݉N@ASetma!~>tm&.n, ߸"&2Q>6mҰ\3k+unqZK4 h&X<~-v=-4ݟo)y8X×tM x%]?RL ^'K![Fowx-^d靧X N!6vu&qay7u-/qǁCOǸLv5"C(x"ICU_i#1zS" #mG48E p/2  ~}MKC.p}[䘣]1: ֍ko}^s7"axوALitN鈁P%!A~0B%$" =&QnxRlH`>qT z4eN'n:M <*l^J*˧ *{8cveʿAkҗ0ǯ.ԏ͑@y%#5LEMhg[n!$:U02br(AVYEPosa+fj[ޡxxΈ5TNT. =kcO#>. r۫Kbjb\aU=}XdsU=DmrcѿɯU^)[z/iH`0y^k r[,'[_95\< у O#ҶcE|#rc7v;a9Z V}dPeDx1\Z?d'/A 01Bǝg 08V.{lMp"hKO&~k>,)#``p8w:`˅y̾Y; 朽"Ck7A$R~D.>Y 5짓^ݏ;ro$ts/o(%@v&7ynP:0kW;]y'ܹ=X12lܸE1O;>cey*D!|kD#JRG : &6Djr@Q:}&+p5f[ϓ@(R~G@Ft9Jկ05צKʜv+_jA+/ha䌇5nL+hObXUq4?k2J?ِs;A BRUa:롸m>mS~*kBw}N6rQYc+'ga-m]#b6P"^ٵMD<]M{3K5X<bi:"sW;YNCV4,#.[Ew U+I 񎥌:إ"W~KPZF-f\;s[ `\Y3KgY@oӓG]UkЧu%1Q8Г:e%q)Q̳z`Są8N1Lþ.LTDqSޠXy&tYy &r >%Ӭn=7OlM,ޑ.׹s1S#tu׸w.)MMʑp1?3y9u`=!t|q?;yiY_d`^DB)V\/NB $Gcaez:lea.{'lW]7FDl1 ) YXS+2YJ hxPB\aEqcև=d-s9)}6gOH%8ר`eРFZ&W\}o%dpּv r1oy81*`Ko/%)_aؼ%ǒQf "usICdO\ު; V2*Ӻ~iT躯|kyK괴Pӈ%KruD\k^_?`(i)oUB0b¸+vf\8\~7+@lOhQDa^).|5քp׿*"%',܊9P?]'O.fgUOic aI{ydC>DhhetN㌷%5.0yHv)6&ðڹnjb* n#kCU AC[q)bu[^eָA@iź3+$CCWֆ!zone0L*u)d|aey}zD9Lʴa[ DC] (khVhUָ#DZ˪ "@b38w/egcYz9bO_/Xt5wunCƱUP|N PlÏ"ֆ1qݻj.Hh_LO`_I6lBcFaMXY16Zǿ/dO*κU LA)G< S4a^_2MPK h+-i]M  _k 70_woOwsuڄ)%geX)hQ5>GwH N=g6 ·+ݔfjll t9P~ Jy0^WVݞ6Nff[JsGw mqwOmO{#< |PKwx#jn9tY~wk ퟵaoR'H Iys_$<9eaq}N >·|\Ĉ x$7|Z'D"r{%(%I@)r1왱@̮_ϼAŽ"ѡuPVދ?l?-+gx].=MsK x5Z}iz EK4 F P&{'z`QݝXklcpЃ}N.4#>!_"p.g/kfE3TX>NwE>f>w=?Cڃ .)vf582?i+1l)g`; E`_[D ^717.NvwD$U4ڱ\Ei J۫aht) j[8W+ҰvrMm_M݀V < ,ްj09YFLS߁Z>K(Fg]]6<{:c*9.]#7=Ըo|/I?ɈR[[ky\'6$9e~;|I0lx*}ƺTAO_:8.sfG]gtuELT3 il}wHq{؏긱TbtIJI?fʞD ro}Eԙ #J#2u58d];&SQvI8_ &li?Ж %%=_ObL!~ , ˺`e4gWQ6ۈWD#?H}"n5 ^S7|FAPz eԯ gPkcUK_{85B;{>,ot_ 'Ӥ`_kriu'mvtw "7O+uDϞp!DJC7 a4?\*0LS-7?G)Tt_tH흓G`H()cf%f A! _avRjNFD2HKZʅlMfL@9$Cvm ,tbǃHU#,1?ENꯅ=@i1f웈BD߄DQ%&|1Ch;lY+"b%=0G$iM~JxoZ2 -Rk&HHdhqMX!w_f nbAaa]}]( *Iê̩&?"c8ohz*"4hpq|Ɔ`qjn6, gWJCZ}Pj }mMIOqXNaKPȹ 0f{܇Mppp{ҽγ`,*" c͢ݽ*8|[h ̤OC;J#4Qxe5+Ĩ|XZ<;. :>t^\E:0q)XEEVrഛ0]"[NftdeGP >pL)뛤 /[ֽ¼lV|J-hҌrO78pb|Zs ӒA0d>jD8)+V晝s0| ~ v2&x;ʤ6# ,?j>3iÞKOxz=!-c}<J5K4 .%7`W۬I.ED濖{97vgUU+"ɓl0XENa })l-;yd ^G~ ms2g0PeCU 0/g^z%(rB?"2W[W+@%r#\KN'u#6ƎS͔ȳMSݳYHGTnu>&o2}zk0kc8HT~~X*/ۄ+l #d: R3 ˜!?QI;NÆ8c  _^5G7bz !'r_m1>ٙ.$ *a8<f=2[:^V'%PW3! ]o-K~e]\&5`|EV,1KY؄Վf;/7zg`>be"ޝP/Fe ̸s(,T}8ao܏;prP K(Ȳl V/EqDNI^Q'b[\\΢5 ¤-LLC*oKLl^3(M;`ZHxȡFXL$Er9`(Ert*s +֏/'Fn}\8 Ci/  .:1\/epL] ?5`@T+TeNiHr`m[q U{n۲PGv<՞SƸ+* lY z);W J?)jln5ް.U| ͻTY1Kc=ޠx&4V㭇a9[0\dL:UBL,T*&/|pD[HDv%}sDtT)'Q}+忼e>w{sqJgν(ƭKv0>b8s![LOCl9V>#Mt)%0oe~fV'뽶agc R0# 6S ߝÖbZA6P'W".&{o>3ff'oB[^0z},gnm:`f9ǃoweEb !XPito7{];$´N,W= ǝƆU.cAO`=foKiAs0@.nII+`zaٌ$X7,^ypG nO#r߷r%rhN:{'3!;{S=}ۏ@#M\Fdʢî{7ёD*˼5G剝jaIɽa$u!Z |9\҃ΪւPSpE&ϴyz,oaOg-wzG"R҈!Q#D򛧓$0*QzL̼_'ώ#A-+IPNUXz,|Wqg=`31{ؘBq/*`#Cc|,x7ƧU`Oj1?X2`҃kN q !g`,= +wԚ"ܯLHr74Di KOCԇa,ep R?[3os`y633%mv&BM߫ñ~=Ǚ3&ڞhflNxbb[k` U9e H" 6ߒFp#{,'i 5M?>nk2!'a%48qVj\+@It6/41[ةʠƟ#ی(tӶ!Zc(:~A$2-FZeD,|d9/ '|jQlf9nh>%K"ƞ"e$`wh/,W\8(,-?VI#g lbsE]SZiЩP[^) U#25 ) aʥ@, r\dȱ6/u&v>9TI]N g/ {TU^il$}M)V"-Z11駎[[A2فOFڟO^{|,?4/+pTEB܈ޓʉT'`QN_Y~E]R /d%b 62V,`:G +Lҽxxslu.8n$1`O 3DbwkʰY"SX떮 ܷ#wrc oK\aÕ֯O=<|wDD6ߙQk/ K²cĀG7p@ˠPiXk'&cX_y˷ݩ_amR<ɫ/ǧ|ۜ<_#`!uk}QR`G{{7+欠9u&*BWR̓D˂8`#Jt5l:yX9>XW ;ͧ,Y#NBf"JRE$ȈWu۬~(qQ܂eʩgzN󐏴/`Ey98`ͪ\m !Y} >?UWS99ﵲ0pXZ[(Ok ccџa6eM TlⅡ]3>h\۹ 3Yz.)4$Vs#216"T`"&S"+gy{qV\ ;b=ة86ߣnHDG((!Qo.k%9 nO~@;AH`|~v,-EOYP(C7 .~p0aO, Հ4Z7)|C^kֹlϿ/;{QM}. $8\GmKU2󷿧,qn cce62AGm];}~L),'@U˜ ,-t†nS-{ȕ1?8%yx7i۟*KΞ7Byp퓴0c€[ga,ObPi'啁Р6DحO1~a(x˝l#ڟZ2"O6_7ʉUp oE`p1Ɵ[O.C yپÐX6Ӓٖ[/,W&|(j`m3οY'a;+E`b;~~ .yR#+)p:ۮ?BC_6}>I (ur/VNɻHqOl,-zbt-"&w$޷4è%JJ8yCy\a:ptl)jSxn,l!$_௄75G-!AL D,|CV!ձW*y.uFٻE4 "?혋A~⬶OY}0< ս>>^eК_z0Ls9~lNhIA:ll>Cainӑ811/aQa ǣ\klvŪxpsf\Pvd# KNl΄33ҕ &=.ipNMcR`=%zE?QWDy[c2=_E T!6Z/SXo&|_ʴ%^Wd%8~Cz}Kuw·Ɣ%Uz:I4Be̲ ;|I%D[`~?־QH)!26q}D-܇iy[[ (t#Z(, 8<]·sMwb=S5?|!듾Np`{it,L-~@Z c%:_{'C~6޸wn*a_5[bc_`%6lmn3.{ZG"@õVmȼ1DEcz0CtczaZ+6N})^st1kx2aڡOLR+dIG0Zv7KL5p>8(KŸ3'Ƽa}yD+PeɃ*aݣo/{pE~(Z!:Q1?V=R}CV`)mgR6{? MӸŴX-y'4BWltX|VXcsvwo(~N4A~4iNg򾗀yG}AծO A'鲬5OA\"g} "v`A ˳hQX4ɾqV^B~o;`M<|9P.Nbq~za/=}>".((~_tyȅh&.dm@ y<]IfYs03~SbQ]x 78rNr;Z浹= f@8 8O^4ت؁Fhߤ9C<@8f[6%wX"ы3;O0$P2{ T=QCXMV%Maw`{ "9{NZ]<1;YnDv#X1P F.w&) |DUJ`L…?'& ێzȂIǞA݌6a(Q1ﱈ8XS$͌sG!%9[ȇO [`ޕ$QxR*UQX3 c  IoꌃoG`JfGfVUMxXY :`T`aEK؉vN("7t#%+0Vw167LȒ0׷v9SF6bI4Ƀ[ a՘ %|ؓ٨V@ۊ^S#a,hM9Y "gY Kb@kN/lI}{8I7%hADvdgxԲ5&kH^\?DyFg0{$_Ĵ7}~ӟr3p\qo&^~Lֹ G_~Xxrzh -EzT>^KCBV)6^16Vx;]FAXۙ4?!r%`1 +ܷ[akC/\ V/Ut&nz ȥ8F+Y{>:ZU0rNAϪ^ٵF4Tucll2&vQ'G?D$&4`G]rI)<$~PJY5QXSX%CM7x[k7"[Ydutg&̍?:?loD DZ4HE:Rʈtq6XO?b0;խ ͯ3VmMa1Z9mdڏ 8=ؙ_`+7 W `b9ЬUPľ ](W&qc3s˚8X$>-l2mATet5" Ifjd0j㧍?9HtmOش8~ WG!܎G9r?h,DQy @4{BI"ӡ<n:]C8"Y%a%,O0 C7-4`r2ZUXn)\z3ċpdX̦#ڋ_j`c.WC.m{}Ž8%c*J׉f,Q&Del>RY8>lx\&k߄mgsAo1 f{840!K_;yߝePDr۪e:Q@duP fyh(A޳=6L?L`ܿ]I ymVzReQ 0Vʠ&ꪩж`фE5ӧ%8,nxTA.3ؑa|{/[~^@sZ0|遊}m̴S5YVR+Ln/tspj7X #sH贔M`/Wb U{u~d,Rj:^Vf#h\2P]ts6evy3VJ?QL:laϗy I}<|ފs$QTJ]r4u9mi+DsoGOۈiѪϔ 1/P+}1kJn~h.4jߥ'2-n-v oEcXTyy&ښl0swP$:?o8Æj9>ō6#Aj1U!D7M+(Ù=FToD.dw&vaw68_c.GCzfT. |_ l?yC GЍcT7.7$`kQF!uG'TaDt)Qѱ8X< !KyQw Z>l_{_r `<[ͣFZ!r)fA>/?Ϥ¼Ț8Gb ꑰmмWa*n<:h85Zme ]iyՃ;;,'.xqC<;x<3Ns DsX"g\SDA%MD^_M߷Gv&ey<"c:]O[lW7ߋ4aK#  ZE:?:Lӓ_Rd~sy;Cvv=@l?)S;O ~)Ck,[% Vmj?,,WqP]erH^r։ӝ˅0<{:^ml7 s,ygRs 0*ox,[ZMTbN,,AѴHK"S7遙H3۰~Z$(#WGgXkq-T?cƋaEgڠ_=G+X_QEpykS!VV Y͇E= T$'TĔ_wֿ Lm\o![]_~"Ɖ%a&L Ǚ#:6Ha3TENԑ9y4t|{s&lHArNt?J9_2`-tq' ~3SYEߙ~ gT,M-Ax5N|k/4Q4Ҵkȍbr-aE AP BhG;Oӊ?vr3WӍ>.xt@e߼ª-g?}Λ Ra%i M_28,)³G!k!ǦO k&("1dT`ʀSD7X]?sT9UPoV.,`B?w%$gɤq 'lͷ є Ddhjx$`m!w,%=ɻki9 a݉-`eBp,uoKErfM ߛ6zn \Lǽ*-Xʅ;3%PPer6-,K0nC)L{v-}D)yC[jO'r<=o0^*@GAE J;2nx=)̏>\<K&O,aaѿI_99Թ/Lq}p ػ3 Jp̔ Qf,)H3|<qU Y)br(ך}IrG)G``%W>g–6+ w*"lйP&T{7`^O=$i 8hIÉQbκ#tP0u;Gy3~| {3d]HFK,jzwaz~h{{.0 ~}2:"gX{cT۱3ڹ´&~A~<X7ty6epD-MrHԞ܈tҔk68Wkt_aN7 L#wgCG&̭: +u3pvЌ4K*0)+|3 d$Ե˵uDc-=.t|hF ' w(ժhMտ" 1kG>A4+`W%/.7Rf898 M%302S -MC3SO^,1h.e@d5ÉpNn68]^ⅅӇ@Y^T>9xM &ftc Uw]`ԇr, e}DV)8+ aJ^MX>{3/;,qeoZ$ _B3|a?p#Qs]aiUi|+h'1\`ۍy~_/7? OM> ]DU;njIV[ ῕^(QuM*SpxE8xƁ_WD/"=e|9hW,e?e:|M0sEڊ*}r12 ZNiaI8x(aHmJNbJ7[Y^,گИ!{zIyUQ?zk۱,❰eV|sq3;֜ۆ~]k̗CV؜61Z4nS >(q0g`/vz~V](U.cRkΔuh{P_jJ>aQ 0>,Z{ޑ֧)o"X9A|!hM?gnw`.bv<- X_7i(umG6Z3f.ҭ+h3|]پR|JJ^3霥1؊Rr:p'INIW}qrm&C3N;CJaToO*f ^oXqRo݁yaL/3D0XCzs}, կ-^KMc=[1u:GJ&SN2zߌUhK$60oi E;ǎ~0XU6Ĝ3E#˰yJ5:'$Φ"**L29D+QR?HF],zچTs`=T_^?$=o"ZoCy>*/Cx?n:XNqjy@)~' Iܙ6ְ\2ff2hO3PԇYtIŽiZ)qWAL]YTpO PZokRtö3꣝˕׃DGl(v5_BB l@VDH`&S =vQӎD4h-r )\.,-a[. Qgaصy̢,QO4sCv" H|(ƭ,7#xài8lh0U|k;nr|+ >zIȝ"4YA7=Nx)/(8BUpG4fnq.x\zðRdpQ(޻aSSօ=N/( {㙶9rۂr3sEx7Ǎ(3RsDI8_ʅqתԧe-8`}׻9a2WM +'+aR}{(?,[~(f`>"zBv;F?,t<7q85U|d"} 2SJ>qDTVe^9:FIKY=G.aPQ P2Ee&YWaRh2u`\jݙ41OroHIZ8trI dVMfYDa 9?DZWBdn VCl*h=Kw׿@b~8Zc>(OÊMSjaV{Xv/ב6A}(;[ vX׆/|`qhqlKdJ}{IA7})mp]D6ZM7O? )[7sHFe[ջ@@2W]=ش&s'M]lH"x3߅,*}^ʘL:b)AK{/>8OQ* E\5KW5ٷ\Cۈ21_T:8Yخh#!RgWs[X!$:.oo&Yu5x惇Pz5L9L5vm}LC$;na[E\ MUO JCX+qJ1rPqlQ?˗0_[z0< 9SOi ͈dBD`Wq1]qyk5YpCyWrV-. F>ߌx|(e-]{Wt3Eݬn.z,"KȳOiC.@qV0 j֘S^fe]@/=/\ D3s "хnRD(<j|Kl_w={$j'Du,CJF|!+=05~p/BLC$nnu澰f$uڮRQO{"[X) sP8x'ȣ,N 6 ÒLJH|,n`]fO9^D3A‹ 3~Ц$`Fy媆g 4/_|ofK yCv ,.De*Hz)qЬ6wF̙ah]xٟ _}K8ތ7\Fxc¿.!r{BXw \)23@4w6C&]C{~}Y$Q?Ҩy "=.vt:iٺ\aO!&foxq0b 3]u!0eh#`SfɤgI64ԆRUh-% .T8}nK| C'4R c } -Ї ~kMA5GJo>,) ڮp|?G3޷$J:.$K`Kz6aQwJɪa~X9uE3B =ˏc2bpȻ6_L< \+-NyJy?e +eOx%šJPaӘrJG?r@ձ=J~ ;D92x%~r &H!CFo@ h6|[~dc3wJawD͖=`؉n0/>S]ewakנw񈄤֜=DN7vQs{vE\0%ʦy3n2ŧs|uM>DdVH,o51Û~Zʎj-N0 HEO4 έv0D~I0WDv1E|?mX L?zM"z''1_Ue݈{v>E3ƮHd A6zyKF$5hJ)="a:Y͛&X[& "קYQ5)OVϓbe\އ" +ϱǺΰL'Vk~^C蝤#n7pXa&]T-ҿxX'/zkZCakOư8IAy)rB ˁ1SIT22 ;>p=;|Ҹp˵!5~F}^Mul+אs<' ^Roڎ~AۜQ?v88hD7ş*Ca',,k+}^)6wc̱1* 61'k2EW#_(+F0Va{ F 'A UE!tDD,+^9t y}vklObY6X68(K^kCz갚g=0N #`wpX.̈/-@g1C:vؔ8%unL# 3yOhI`/=PoV'9‚е 0v0ߥ8< gC"{}3`W9J?Xq-Ϫ1N`=2a*V$:e$~^;[]ȩXY`iysWOWXD2rſc+ى`  -.՟{=wkFaOQϸnQP؎@TcW{MZwzYVX].nB`Qakzz<֖~Xsr= ;?0fe1ac&"nH!*׫X`R qBE'"GH7l+}e­l/5_M{a4g׽AI#DVѴֳau}eݴq)cqz~oX>@9?*J}~1;?i D.w"ap;$f :Ci =t86-!Z bNv|TK/` y;86|jC&nC8siW~ޭ!V0CO{fEo 2Ak8-;;^LE%V.!Ar g#$tj)ƻ8O3@8w; q0ub",h֬r^BMEiԈ]N8Ns|Ro$0&waEܓtKfΛ>y⛝ρs+ vwN \-~i kRiJP_&0$[}4.ׇߝVsCQm"i%LoĿCB}p(%i\94ӭ:if o`&V üEW5?" {/Mr]l :p=U*4`NUUWt65_wVxB.}QHvrQ?xE ÆN 9?XRɖ䮄iWN_JK59cU8ݩD3V3kR6kjAG`'+d0eBMn)_ϭ+\+|NvB~{9HU #<*'z&㛴ڈ:8Dqz`t)~i4ע ak0W'L+* )ARױhf~RfWv(M ]X#"qS%F+ͮ\"wAJ *9;b|_aHtb{<?fa7̸ CQ?olF4H_P>!\. :R3`ugZ\XoM7^(V/ Åac1@f"$'a!]5X4v)1zJLZ ҀrlwQ5&?zcIŞ;ڡ4WS՞CTO>;aU yiHl"$oh\ʈCL0^pH\=gw&Jy%..,0Q`UG0Ƶ7zXòn-T03u0 Nz!vV J&_&a~"0mMZ aO?ּopGb0Hꋘf^:m:ȶ !`c"WXڕCSEXJ +O`kԾe(An_dmyUɖ+s;%-z6fl RA'񍒰Q2,S=b܋j3ɗżX)e%f@ۈrh=:tх\:勘 T=(@TO$ӏRrt>iqRӥ[Eܙs/gn򣈿\(/ |@B}މHXS]&+lUH2̩eJq0z[k[J[buus=`-t<}ұz;oZ4M`d{9iq& S|vֱV lP,'tV3ܘߝM;UαK$9`˟".({Mh7G6#a 0ş{nUO-D~&@Y*"d}Xj+=haSWHXA:T32/  1M?~^,[F3-pڳg^!@㸠2e` 9XޓvD$ꭷITi;*xcf0fO.Jq-S@#7az4e*nMH}_2v1Sl!BIE5,2K.?M.ror\ECz0%`eʥ(1ֽY|ҸZXxs"eo"fG}ўlG[s'Ko!^ g&.]5G2 zC+lW5/!YKͯ2?:;g$} [!ז{yuqNHU;~0ⰥYR_Ja&}IDR- GPƧhroy#jK狄D~S`\:"8W[ma]st3f#5jIQAx*nË`vvH=>~M() op!R"KzDvFI "[#H WaKדan hp:?ptJ vTc@Ⱥ/n: *9nA;4j+5 r,_sϔAꥹVL'nGD{s0K߿ ]:~vs[Aq0!pʂq~E [&|"_5~H_*)# a {Gͅj /눖2T. (z"楹{"eUy,p#<*]rT3@0y.s&k7h¾Bn3#?#JF O?4l<ߩ6Qէv^VzC5=H].Jds uW8֫<6%l55]ᬬ`l#-=, Ӗ`[]E#lX EmfuDGs3Dqt""ˑL5t 2u–E$-X;dKKtGOJMXXdv9<D D::ܩֆ(}nbtsyW#@fXfK#+_rd.Cu$=1v(1'K$n\C9܏3 !ɍtHH 6|Eg`ԕG0޳z2k`u+WA;ՅDJR<~~ٳu j>x~9pEyb2{U 2HkO0qDI\' F#9;ZmJ~K:_|ƣyx3ytiTrBY!~,g0"(%ۅHx~GfO2HXs槂JҦlhZ5 ~*Kc|F``HN;`J9oc&h܌:\ itvX>y( &&abR6EޣT/gEWr2aW}69([I@ ɯ¤wǣQS-;%jmj4$lՌLO's2&+k֊`[g-C:QEADCޣjŽjkZZmjmU{ouaUTrs@psqyͽ/#IjiV\ݩFƭE(&|pNrj;(s==L@e},/lg$ ל: oF@v}Jom;{@Ufv`p>UۯҮk:> N1?  !+B /ZIcUVҙl̚:!rf~lPw2{tw#ǀE.oo 6ry8N*8Vx,:XOkZ%(,6os;vﳞٟܟ1[5%Xoa2^t|ۏ&w .yk塸+*mU`sN=ڵ*g3C?f-B?uA+I=!t i]d1zx/\MUg7wäs$ݿK.tPp%?(bl `m0v%^!9Uw~yGJ^/QOj7^פ}Aʏµ3,V {Ͼ B@pͳw'~?v7`?>= Vn?ܢyz {B3m z.%UFMd{‰ɣnzN1g?ԓ2}?)ɥsm=֬Yvz Q;6-f9_YgsrZmZNr5jѷMf\ w_L4ƙje:,,7?p=0էrZ;]Eo,\3]sYwkV,ĊvbEŁ AWge=t}W}~,VC:ܗ:xNmGh=e*rцW9#rw#[2:.9DnN>o߰3ѩ 0r^ћӓk|rXjɜ`7`$5q!+׊ ^$K;CܮXî_j9tEΐzy㺑K]ݨAn幫=ݎ{ٗio1ctUuo)˭Xm4 lgQ؁}ۍ?6U nQo_A]x(f}* %g>jZȭW&jC#6DkC ,3C8>xv^lA?Kur><6Pvױz:kmQp[VoFP 6N̟+zo)X[  J?%s6W\%ceZ'{ݚಥ;Hh Lwނbo +|yWbĔ-;;s~ާ d ɍJũ"=4C//xҞZjtf}'%-r(g"yd4W#[?٪9K 0=,v 0Wi= rc7T͞UrP&[ z篱LJsុf(jP"UK1 z _P']vC]刷#q;qZ"|p p`8>Zfǣ~ #/YP}ԿM8xGOČ#a\%&ᒭ(U)廫1[S=/*hcq:ڷQ]Hvn&n8@888ƻ!'_q黷!{+*8U?k$?q8܎!H/2q|78<q<:8k6GaG`#p7z<űB}GP #4"I#hq]8m!`/?e VGG#SG@R*8BRG'GȷGȑ`)yq"3Gث#ty}q9#0#, q-Ba;o"+qF^و##@ YG~z.yqlq8ZE-F"P'{(ѪB*>hqqZq=hug 8H8ȒZ@1:~F 2O ?o#Dyp/#7"*6A|.G"|F!ΈMO"b"(䯈!^ n:ώNH`yUՖN~uVUsAv'O6tX,B}76yN_@+p]1wR]+h~͌/EwDs#xۍ==xjx9#S74kD-.5Zͬ1L30zA~=KŬYt~gu/_Υ?q10u1u>i^z?(/gŮgr9(_SAB^ac׻VMC{)$2_]ZZ{<j/tH߃T98XD}TJ"T@FкqO@(l7h hS͝N HlG?DFRv?76ȻQXZvDDMQ{R|m'L:voཛB݇=pKD>v Fu}jSTs9vpn1u|V8|%5\[ZT:ɶb\tӤ9vߔNAbt~t ]ڜ3@|=/@C l><b{OiB4m؃/iW`rfNjpj襰y'=i8^וg[Ԃ8j4/&C\cKMC qc7 q߸@~:uJ}5_?pfݖVKE[y6{]`C H"dh*L R?T+菵*it+HifѴ5*AK9[F$3zT2VJ-M25L!a"#½Ҍ.vf\[Ң&I 4nJZEXQT(Hlh 5AĊK%VR^b%k_zոRm$Hu++OynFJ%i$4ݥX<.) h:B*P(=͏ > !pTQ&ki1$?i1='Nb*QߗM-3v@һTCoI}MoMB: RyEB2Ox+&1U20+ W,1;)lBsGJ=ݱ G#4Y2Y<'m2Ml/Q뒘#wn$:uHeh>S?V6I )B^ xD*MrneCG܇lx9ߘ{<1S#Pl[4KC1S3**d>Xǥ %9k4M-EHv?9hCŨƱOYnV(cc4܀(2> Tƽا4t)$R7MAiRѺe(MКaVlixj'-K6+=p1eKoCu,߇2/зQs\xR5(hq֨DZ֛˔ co ,C*/¨(Cx٪e*HஎYxiU*O=mIiղ xD1bČbf04%~IRF46YJHoh9Bv",Z& EQ-O?ߥsӼB2YGIULC.ZY!򅴕\:Ui nɟؔ<ᬉ|9H3T4B3H܉5CE,vs]բ!Ei>MV+aZUuo%8V,(w;L6 P"_`&?^7ih,K P:::m/g1&F;ZGCd bgHIINg:;t!fϦb&gJ1ٹmCcO_V6l0Xi|zzMwmF&O`їڙ,?c)2rQ8IZZtDx*AWY# J*XǓ '10}'09ZJdݙd'PKRbZ_,ZNL6s} )51n$"zY?3[w\ IjM&R ]WeLauBN~6~zXwj.K'azU˥a5(Ka1o;_E_XEWq`_(S p=Qe//}.ߗvcM])╽0O,PfŌ_^uչKX/-r2xVBs6x||kK`5WRbzR\J~[=ZpZ%6/,,)i_UQj9;FMfU^)ƗT_< RhK_^dz9<9XW,x[52^3 T!B CVrٸy_HaqjN&V.{٣-\l@&5\·|Ӹ<]Z4Snc9;9p?8Z[zӱZeٿi w"a/gŜX_jGLY+P~~`-&пP0+0|7R__I06=60Xe82ľхS;Yw%^ eU·|c7ipsï2/ː.GXʯh%\"yvZRMRX] _OVto<.S۰!k|9V-' ݙ\l g9h4C%2lfEb1e/wiҸr<|ݠRzRbSߥ]qk Y^&,]q5g3Ѣ)tũ`(/QNsw!_L;ρ=7ǾwUn 2{[gf,J ]<*eO{uw)UQ[ZV2c%R\c<@yӧ kI*5S6䬞67Jl&/rjqm?rrqtnxlBVI2?徚7fehJ-^ӞˤH spatstat/data/anemones.rda0000644000176000001440000000206412333041762015356 0ustar ripleyusersBZh91AY&SY.MDn|#9} UOO&Sjb`A4L4&&FSe=G64zifO$=GOʙ 1 h hѡGѣ@ @P4z@ 4LFFdhdh!L@ &d2")&i<ڦh@@~ϓ~=oI拰 0W](v(,5-.y [JB+LAD?|V  _hQ ƁXXȐbWԌ6u]]d >0/ҥ鲿ʕ*(5m9p+rIUK雑#%d6d˵ʌC.*6jjc8m<{%<3\sr ',r8]\z 80nP(H(ִb6]4a SA^}SmNfg/EGycTsj 0Z3PSQi9_hf3Q[-Fiv3U, /qDO*xˬH.{41Oo+,1ւOX XTnUY3Ih!A*&50?+6oy4,J<ՇE u5]=1uYPjN?%go834SH>ҰN"y)V>O'lT$F4.ǯ/$OxmN{:,@Si^ZK d6[<ՄPzwr+;ڜ#LͼըR(Z3|1eO!zzvdY"TusUgf*޹3lk,>z?bۇVєWQn&emm智e~t{/0ƑH=Ҳq]S O8 =l|dP3pѳcu"4rzBƒ䧑(tן:t<0!=yv-ggy{:`W3M[5xsSc& G(I7&Y >S;YEk5 spVq '/\l:UlsǍK;7؎$KϛTψ(ߒk) 4_3#vyUŷp#"bE-MnUЌ3"郋k,W `ǪR_ht{]Gf F;Dνk<醦a-qӠ*D['HTi_OkqN} #Ok½ѳCT";$sh?_p͚ɟg?y`Pd1$EҸqO"Upd%Loٵ#vAKw#2yVuxQf~HbIMǏN#xyb{0bi就zUOP%33<~V`j)BYWRCEPELRfNxS #˙ Ub9]QG Wmzտ-͜#Av^z'O50ls X=3N8e/\QF Gm 'uuM$ mTvxR~ :^<ۊ{ KT/=5 .O6AGOt4["jM_m&tb{,ֻ*VԃeaW߁(2Dfu@P^0'I$RCaδcBEvtl,|-&3?pP^pl5q0Fcr_{N% :p~AGS<ԎsƠrP,xgtUIr0&F1m ao8kC"wGt3 <:>n~c2A6YUATZpa)+ʳm0U/[_.~3Gxtf~z?i%&VbPS 7I6M lÈ;45Kv kVem T?b.00G򾠏|8]Eg^D)xLV d^LS&eG;}a[UݲgnL,-EpoH5k>ҕxc+%ƯE0GANȚ`l@ 5yĵ )Y.vXͺ9: C)w[_\Rqh} ^g G{j C+쩒V4&w'#VsE3v!Y`=ME+p9C[s2au!K.$;>4{%X]9#<@$jؚ 0'/ʩđpd.E␽1.K"uOe%Rڶ}4DiԢyQR1+MHImxS`KEtJ[>:Ƌn3: 8w(/MZɀdr:90mK0׸[7NQO=^[!zjg%A㘇J&W6;I72"`SNCB=ϬK7ϛDA iHPssh~tvJ2b hkLd+JChwK,z5-( hZ]8_^ƌ j1"^xOC?M[k%m ҀEfay+L6M4tyta~QGhYOwP@`^I9 Ą]"sXt!,f-rer!iiLrgdAK/ZٹAIzS Tm|G??"*-0OMgHUv G:W8 M֣׼f'H=g1x&õp=휲Hjxflt310tO® :ԜT;_Ra<}(m#㌙ףH'glP,`MMPPJvS Ie$ш!RJåT"ߴ>b'[N ު([9Z#a~wGrJO/L]RHΙRzO$p}$dw?F/zAZH؛ADFvBvZ<lGc 7[0avβH G3iCxoqhwD{]f$8ѳ0K^YExQH}xR#>yYex#T兖q )7vkT\Q3yDYiYӗZ%ȫPUGE{$iv5y= jz|+5,עe}mU]Ha̮8g0!Yy/MU4粮 GՏ\yb&( c5p qh~ >|PΙDMh,LuSMQ(<tk#tZf]DVAݥ K_ gY;cҨ?<Ё}P )YӭFc{O4nKj/(g2mrewrIUJ\9``4 @T4@]t ԋPcMT!<,qk5 oiM?`9}|0 u _M,-XqJ#q-4"SiESMۦLH]uBUPTlH*GUgG5ct>_*ލ8| <5v>A6oë}n _'ݾ"-2tC-З)쐠ChCc\t&NP9m\d ,O| $bۙ B?^qq ԭXVX"'?תHj:զM0;`x&nIj 5 XTSWG3ܯm2I,db5n2+)= ܘrY$I3u/ࡊh!AJ08}iyϞn^p\2WC) 6n!v 0vK]K#v 5[RR830ۭgB%~$x}z:Tw5Ƶǚ"1KUS?*W`zY܊=6x(. gmmeaŷhS*i&hS^0]r,X:L8 :CV),Cjb"X$kt<ŭa tG- ..=ƿܸ# }x'ebC!}^3x1ox8UuRdh5@'HaѰOОtdҷ.j*0%&EZr|Ebl}pF7CL8l?$OdfK;:ie~p/KI!h)i/N91^yTPU<' Ȏ4}2~Ədk'x✚s1 ExLԮ|g춑+fj&4br w~H&R{ܞ E=25RN|ČOzxV,^^MlYT+dܟ>V%JSʸ= lÒ 8;ܿAI̤U*D Q 1N :q.ӝab\Yab;{gbv{ X7Nq8LZd& CAE zl1^x5lWNvNUǴgtaޖiٴ^Cmt<.@ҍ^*O'[bq>aM=G¾([x1ea`b U3+?|/ zgV(kOS&k(5QSCs5"ɧS<U5Z]hP _:HE ?BٽM6ٛx|(s{L5.z@R?^}}'7=9:MnS7\SmնB3viH$d FǔM$pƸJ:9X`mID*0ވǘpJڕsKo}X|%/y{}*ս*Np)9egtnh ;~lGO25LYݺ03x ͙IXJ-jO1Q]eHSv'H4S3[,7QKuP r ׻⪊c /Q2< GR4+m̡ A/n+t sȫ~RYA*g*;/lN.ϨDI ;Q|ˀ9Ycd!Ry{Hj"gY[Yc}('EN E*1:? 4W jC$pMX<98ˬ))Pii9.#%! CBJ-2?4ځ (&4J;6I ?@hۤ0=H؏=LR,A̰}}Ӈ`dh1F7j&2²~n!JMXNSDq/B:wSX2$GWWɌ&jI3A7_iCِ$@CNʱxG5 TbM߯Z_fTDA!ykL4 :NJp"̊%rl a O'54_;g#:Hik!-N架a:Ȱύ^kAA\: t?Cf OD랻\VyX8b#G? f>"5ۻ-Ijts[>,*M U֡,=u |k > IWLvx~ TzD*]M#"x># $&^|sRKiAP; -TYh> ixBvyܸa P~'DbG@}_V]~JIdSO=3i㙫/0\A$,LSzf(81GL X}w[iozaX FھN+hޅ~Ax\BA*a|dp}cn==H;NlV l27Krmn3T), ӊ^S[:B/ޚcVCjމq%/rC\giؔߌnBT>JskI= .c@:CޛF.հ{4B!P" H!&w#`Op鏷ofrag恆kYs|r"Vk"bp̮F$3ffIצs7T9muD00lU4f B69i( _(}Y&/(P}Aдvy0ghOp=n$V\"{t!2=/:lcaܛBSfq_N E%eQī1> GwȖ]N >l62)ROfTl3|nY uy·-Ql)ewaU^SzOXv&@At8ǟۀ/ O=#Q|j$2#J#C&9wWv4hE:LA/3O_z5~J6x<Cz(kKZ8z$+Q/YsиE_Kyd X㜬~mL(I͙ `F#CHQ`lR'a(PN| !r <F L2 m=+w0%2]Iy]RvziVu)c a F6^+&-ؙo8vg/Zd,FJr^գG l Α8uw5\Du~Fy;ɍU 7ǽ)d3BȠ@ 4S77ض͒`IbޡR2Kιn9Je M-mg&~?<ߖlc%xli-0mG3l)YQ%t \QlY u5]Pkˣ"h֫ *u.ŘTUIlBgjO}JA w[VX[.?0 ȹ?'|;)=u3.mBI9?q.B+#N@<|PpAY)7ȠQyQ EA~rH[R{ѠTD]M7"ٸ;m)&b0-I  PKnF[0c7na)Me>k 58 &jQrZξcpW`I0xQ|74G<=Ir[sr@ m{O'lFO'fs3?*Y |>(Cl1![SM43HAՅzN.{uciƨwnFkVBMbF;xf܋Akdq |`x}ȣ]ڪJsu&s?k ځ6?kDXs".*}^}2Q"+*ge- \QI9RsqƔQ˶,nb*Rr5u?@lm;sIF噡ԋ^*3:=LU0h$v8YTx3^NΧB"Z,Z.  vZ*_?uB6]i2w' ;٫ W0Nq6`X˫+ dl1zu*7gWwIWc\>$gGց r ԡH$9%ODOX%|)~{mvlSK4J+ Q3Ig,e#6z72d.N.;_sΚ08.bRsRxgdBX\ b/∽Oyu&R7z߂ F ٻ^ɀjO˄sA n޼cdkn [$UNRJ$E]>-HSy(4A*q*U ѵ7* 'F;Ԟ鏛Hy9,p ,7:W4@fQ Mẗ[FP(ɜKo0MT`5 , a$ta=Y!"n ndxL范bf$'ܱIdWXwݻrRLcP ù׍6Bof^|Ž9ƒ NiL.I4frl B*eD d%m0tW5.f"-G{^Ӛ77h^7|k೑Hi fiLvLLΕmO["Zٳm)';#V쮄 ~ G&[NcԦ r|;a!2m%82o뾵Yc88x C&,r'l= JJl dh2IT-LX^xm&S 5؁Zu^=/ b)Y|l*q`$Nq̄VY/xT>QtfVR*Vn<~>=@Q/v"CbBewa?ki%#>o=љu8<c"3>jZcOH+/*i=/T SSL8AQ^#rlVAg)Gy@4N9dKwu K|GWB/*ܮPamb ,ǧ?Pz{ߢɢ$t^VC3]ߟһ;0oM ,#B<~ٿ=є*{.HeՊۀӂP{ O˩:pWI:~-(B=I ȃ矓'ڄiYJg8OSxZsy}P$8T/ޜ~҅i^ɯ;t$#jR=b#Cj#OWhatF*ZUD4hU3!~7QOt3be 2*7NrEK`.5&!abTg p$Ő:Wn.:ΒU[׷˒)C<0bJWߎ jڂÇC1[XLLV));VA_@6b0`&@N:B1%Tԏu>^*pR{`fw$˚m}dT_hjX$}ݺ:n|E.h!לmq&&$!#ey8"/>jWgāCIư*\4Eh[ujgq;05 }6vZ.H^C@e6_C1(c2TO)" zbw5g}ַKUD80qK^˒Eڣy9b`/WrCTdu.]ޏWE 1b̦x(=ڦ ٝml{>RB6+"H7Dbc -5#zQvԗ/"{ !*(y&;yL(8X-vBv{c-xz臣+02 y) oE>k/dd:`oT~>?gz)/yjـPk>{/Ì6›_h17w$rAǪ#%d:PIO&W~IRoc%ӭ:E#chGzk"pxrH I v3& [u60@-x|B5#<nGzzuByw|\U guA]f$, n"Gwk?"u9*#7~#p)ޠ@iVén)z_3]L&~7PFOS pч8Y#A0JMgi=GvXk4%-,԰6@>C)ue7/^I0w/KQ*j(LjT#[dGp9i#~avEj.ښ6Ԑ?p ([`-#jn`vwICHg؇r3Z P dʈ(Qܦ!ygΙLXjhzkee ph1M!Hȱ?eAvp] `Q"j3^ԠeaXSc I(ee?+n=mgUNy~+DMx79W!p$ͿAƢLwٔB4|ٍ  5{ s`R)+TSMPSujU?2LЗs#+uQhdLr 3xܒ,u R cVSy`^BM JQ myUFA yެ\m\i~.aZB/(%r'5=u:jU{o&#ݎR#X@&B=/Xul`.H4{2ub2t#"iƒ{ky"Pl)J WF`$ I_ZbA75Els6ix]SdqvuI鹅+gê;撵TETKLo=*U_/\ye!5>w{9nNr>,;(&J>H !!PuIJ}gOTx RIjv[wD'<#789Z1 ˭B]sqź ZY=&NZ^n\Efc>MVHmܟE8/g& &gUi/ Ѭ70>h'6JV8za]M,Cv;c9MdZw|CȔ:?# =sqz/ 5T )VC"76M{MiGn`Tg.VTA*UǎꟚi!ox \Iӈ_a$d5ݚ`F䙧\"-,\\_ꛉOlC)rt d[ +o%2t^[4h,]آkw̃= I vkTT9Z/_b[W4pσ;A:Co~@fwt ĶuaF9ޕW{;4Ф%ȄE,.!4_p(7ʊ'Ph\ RWf* |Hf(<+E\.II{4^EP@#tPos8؛1Uo }C,q9+ w M~hSL_`PS >a@VL!#F9CCgx E"D!Ȥo[.A:QɇI:M]op29z*"i(_vHuBSV >R($9G.+)LZg;g_l>zcp4n=]^ⷙtQvLBoҲXW-b^Gzv PQ@Mԩ/oA2Ar)Ns=IJk ^b4x,e pS f ^Ӷ {\.%=5sP[PlI9S*m?ң$u'#$hk "jFP`kh0V4R'wVӒeigl;>:f|ϒv/[B]hKj %$*w!R`))N#mڬOEy)~"vX H'8%-ux #1 5P9uU4AYf/A,{TZ .ypԚ24ؽu|>KamT5b^l`@.#zͲ u1ZbyTfFxO1@$sRia8߼\Y6MXa VMTCΜ aEVo\i v if.ˇH8'iae,1R'I;t4Uf*b%YX2|왯Kuk,jTS `M Jk#0/!vq:C}C\bKMw4&ڻ1"h8X@Cpp/`@kȄ{9H8y9oZy@+S} 7L>ζpE=^W*>uQD1o)S|>u۳O{﵌i,We0TX1o$ uh{t>4Tqj-Bדˁ0鑫ykڼ^]w;b;,I{V: &p$ j"jkE +!# /$L`a~a &c愛?|:]RA45&G*CbvZp$ҫdZ̪߮nɸ>>ۃt *ܴH%A!ԍ]+GUC? 'e6kEXZ_6p}}ԯālsWz8MN%My_GM>ҷB\|}HCLȇo@1pd}[#v[#ѣa̋'*s=d|H'Wh^1גT29Ƨ 0|u-W~AzE` XǸ V=%9 ҽ~N:ös 7uk%_*ws3M `Өֺ|g`N.#֙ ۠OC=4Q_ǟ/LDbG_?ؔhKa~R/l\6d.:DfyxWz*Y02Fc9\ ȑDsWbP2V+NF^zJ/SrIɰi M+CXlBHu>y#c&G+N4>ҖO\#̎_$Vvf쓠OI 7J Ն=cnb~@awM/>s΂t뷄qBIycLT+d)n9 /YdE_@.Z0q%mpnW\mW͏^?~|eFs n4t)/oYigi/]9vF=rqN0D]$0`k0y**SEv]?8C:t ۼl61z`W6Hmcyb 4 BoMTVU}?bYݠ^}mO B@tZ=Cuuw)s}U*;Qi.؛ֆPy3g ְ5OA~v1p;Z۩˟I5n"GFcE 1H t+ث-e&OXR7ATm5Y٤Ê1TDJ?iHiPMYt6S7*D+We4xjs25z=X[&Pup vȍ`)-7UPeYد2 2LS 1p9?eh&"7I &P%3N^=S5vI 'teGpp*,?ٛC]ΐKYRc2VӞگ]d~$ejOi%SNMH[ g(,#ic\Y$\=gvTg lV˧= XG +dГK[a^įbCQfkyAIN LӔ۷a74[j`ET:yB˒Nn`PaN&m˵b7S+dJ bS # ;"D\3-Z<*Dqo.Z]˗ g\,N 2K?&\e~ƹ]^sZ"dz#ټspbd6X]}֬d6|~ƗB\j-)=/&0:[I$`hO uz]S1 3Wa0q,*>3\YYV,] 0XR? wo1__ԿrʓY<12h6˯ I.*˴ؘٶ[Lt<ֽׯSWe~ 3܇=J=s@*,AS>9ղ!a~)$YW!X-"3v) N.Kxavfm\&CXxCO5xv,DaZ ]G7@9C N.~X}V9ZS}f3]2+A f=Wlyc>\FTƱM1Ýs )^I@v!}/Ԯ֯iX&0+ s 'r^cAyaRMZQQ6fɦ.E.I%PS>8+,gx!zQ3vcY;\8#H,1pWG1ͧ-B%nLLg1H)f@?Z0H)Ӭ"Y!$ZG,R EfBRI?se_QS(tڞ'kuHuІkLn3Y|Yk{&Qp:huBdq5OtC)[6ʛՁ F=Mx߾kN)֦U„=nÒp{!yH)g:89.SGV-&(oICja* 7;(J~|wI(xc_ϐ,ɀy /$ | |ܮڥҴWa\HIFlh@ػ}Bɶ}Yŕ~NCR-Q㣞?7"NNJ`<2A+0ߪz=Rej#upc.@ù Vr9wsk(aw]B/PY"S]vEpi6&&N+3+;.7̼xhk8re\8Ŀ 1M8/a]N#N9$HA, \#߱6-В*,ԗ,؈zi8w*'9ýuQ=Ai$~(Lo!/ Y*ު✨7?/`SZq}c/Q 5.L\AN]bwz)=(̀Sd"גd`:Y  c@輐aI>\2MBD%Q :.X-49ͧ1H+"|hNOɺͥ gLfbRܧ lEHb6lDrsFDW0Im΋Hyt 9&?[ P+~( s9ɼ_6[M6%&Q 9B+ ҎiF)0 _s)8: f"v`ڲh5ap#PbݴAE Y}soTEo8n1@WP (~JX^*9hUb#~ݽbo}###ov;~]χK揆|&~_Z`;>\MxH2 nX| kuE_v~PN&W_2ZFo00)ju@'׷8u \i୵L;t$8^PKqyNiF&`zHc12)^kqh$:Nsd#]f"Uz]o]T5"Rxܛۛ~c()32p]/fKf:?.SƁHRe]ndt,\2h˜4ڳɦ vNg2mu,6MJ鉾'J+Xŝ1%EXCěՁoXoZvp;Mۣzb\EbK/;dr$boX;D<p}KoPW] B&@'~=Tc]J*U^H;:+Sˍ.laTE;~L< /E Guq┖9h:hH$je=P QsiV[PO1Y>\<Ж(G]ՇmGzƋ0y~ov00rhQѼ `C"1MA  68),{M&ˁΨDe\L uNO%4M׀J 5?dbɰ_~tmW/io(hç5PΩbWe,C[H'EaFд mSc4nRys |%)ѭO\NdWg j2q 8qUX+D>𞷉p{V,,<"xKk rWTm r2:-08pcwТF^C HyfYk,їqL3g* n-pKmOjժ~O>U%kl#".pYdhR>C:(T^DGao0/[~dGm٠D7E"Æ:b΢e %4\6vm?K'<-f;wb,?R[6e!~ kgZU$֥cǖseytv&T)bИا!q/ _Qm 7:@'6s<۝Ufɝɏd2\_gn؜fĴ aꢲhqNYK.qv/$ajO*Tx0]c@Ӥ̽{wL|ì%UW_2Y!'LUms uQ\Dt9znFI?Sώ&*_탶(Z9!2Aɚuג <0aM'}K{\oܢ+l4֙n(/ÃߍkOA<дԐ{ HfK^+l}^tqT)G@zV)X^qKQhMLp ߂TK$j(+1Ze/zXY|©s9 p&Hnu$s8^ӵbiyNԸv*\"j`ov"՘[AojF'9& EԢԳ6 Y$Nͤ1l^4ܤ]-ܹ P;!}7TTYl O@B$CXtiݝKSƻl3SYr+b wAT) ("Q w ԹC0-,e$1dYKvgKǍG9:1>R`\ɂd]m8?R“L] @IG;'zE?ߌ-s+8(tR@;Ѕ 5:;wB;u7JJң`>5fJ4,AUg:vF)R;xtw3 dL97Rgj~LoNˈ^ "";;z'S-2S|y + ~cMv3Ch܊&\c-Tk(? 2_i͉yƂ˕*Qu(|ݯ\Ήo=TEf(9q)ʹ>$86dI٠NS{-%+Hc9_O:9P_StOjƛAs;{7JM`!{ [}v!\^z_gnUfd22!Yj57y̲{0.zR EYF9<='[g٘pmߧ@ 6$0-rMKFNd )Esz?x8* ٢K%h~ DW@&2/;!\\wf9x4!5˚,gf0uw,t PŲy;.E*e8j7փ}ar*C @]"!I?,Uvű(d(˪N7P"1 ՗O2eT 41G>RE&DhN[¸@oVz44kd9h ̡ x]Ds,|>Cu()󻠐V1 | ,堙MQbm9PT(hEtTsM7\L kGE9mz&FT:)^zVֈߠk PϋIv3aS (ڙiEe.H*ucJ~Qp}"vy`Iùeھg`|ϕ7^`/ n)f\yhVZQ"Q&0KZfቕ%-^w*CkXVT-yᱱXMe"ȉYP&%)c)cT~S=)<v%G9d_b8ZݜUf'$|9 bcMBn)PsjzHq\vtwexv j#E^e-tCKt۴ru6 o.tbcD+h0/ >=F~oHSI_c6qpN ›ӵO(_Z?S JwketyR$ѵZ`.("[g .nʤPa߸-t\|-mRCJW6ɎL;YSҕi)-ޭʵGJASYmhuHf611LL fW~V6YP7`KƩmC9` 76q/o(ި>E-1#j_l>Րp;&T;YswfOEx\!D)6]G)]M3Tjhd+yqO!^e <*7}J~7!Q˂jM-M[Is^#.A* ',SXh-3!Y-!0"4 0Z d'; *.ބ#-#c}&5\7d:QF<(Ø9=+"^-#eK^Z- ; @aF+dS( ;[ +n{Pj{*T-][kxz%U^w"UԵx8)dyՒH=4q5gk̈xYkX͍T;|H\E˸y!q1#`#^gID1ۑt}mYAMMI "8K9 #2h5>QwE@N!EΛ9_\V JqMBx8*_ ۬<Sx} ^DN=I+C Jnra=-XʅX!#Qc[şkID5U# 647/EH"L@kqm> ]#Ά2< v9.dRQ^d#a?^jOo$ѶTѰ@HBR4mҍ?>ccKǟcn q)sɯP^[G C}g,*1ڡ2hh{; LYXMܖݘu1g5 0vF`{qgȤ7g? r0BvmL;R&O1=fWԧSv˸~82rϤeU'Ij]_RQaYnb$} Hxس_aQbz*:"OFqqc7e-7TKXJVHdH9Z6DKcp ևH_B{e7q˰|.FX7W3H5)T9b+w;d9F$}qV)0ѿf'D5`g0:栁'I>c`l/'Z\:s c]kύgUez5%G+Vnd¤0TE{Y,m0)(|M5 D^1e䤒^IhIQD|CVLѫ3pnI@1EvG*R͟ Ҝ1;_\,:"t ye)7&1wsEPAՄ{?y94>_g{NԜL*0NR맕3d骸p][Pq}V49q\6LW;x,T79gb~>kL>./Xuw ügQh OxQ2/& fjfw1yOU$1K]_шrW+}SU/g2͔FDFpvD3Kd"%SV <((|QjsBGЖju>Qˎ-:>̜\dvd1e.! 4;#ZGIA "[۱uj=X\o253`a=83/`j^Q3qAArd4arpS JE"j䖑 x+mH(Ҩ` 6;YO9 +N9(&,Sc4cAyσ_˔ȼԈ$^bFld㑃+8ltaiN]ʠruQ0I!lgF% |4ktPS/*.>?yF ֳiɅ:".Xul#U< ޫ%|PDR fX3Ru1A32OACI<v:DFFlM(LEz"[ 8lu]p-QҊ2.[9,$DQXHpv6"A^ͩMmHE/14iMk d ;)_˨&[T" q> '0_֡s ;2Y<\زoeY P9ԺE(gۅrIne@KG /ܰY)kKPۅ(1hn)6e(rrlNlgld!ͥHƱcb+VdN|U+\ʳ. pV X'*7oo^?4Gnją-W=t9먎WF3U6ϊjOh, (:&8s0W tqfOuROg[GcW@=̈́G:+(Z'݁yE53>ZioABQr{{ Bcf)y1;gKM$ xlykD&5j%b`"ek_A=jqV @r5YyRlOd޴UV㎻ 5 ޡI߸FoVfA$ ;%voO_caf[.?GhhKyџʦ?Q%L!b\iT-]kp kpj-KPÅ($w/7fJhpRШ9xo֬ފj-mV.N]@RbQ"kax5M| Aor6!e8#P16xE'Aǰb%Uus;{M""C9&D ?a|. cMLWǴmu?Fzb_Pf_yT6b.iP-о'g'Uߨarr} ʻs_? ?[]=OVN6s/83:fjPnI1K bUk@__  #%p/;vT@V)rH`Jτ"3ޠa zеJGܢs1_X7\dJG0Lsyl&ꫫUn]۸mDBgP~R)ffqYMrp'n9&rR[C`K: pma 9Z&KũBہVmB8!P}";WM+(0{l-["T%P'љ AT z\.N"j]oms]\:dex&l's4.G$A]/ʺw3HXS.qㆼޝl U&>`k%yM_ufj-mblڤ >e >aЕvDCX,L?.B+ #3Rz^_MIG"6aY >dU~.HSFL2?|!wJܨ7 ۂ]ęw< yw:T>[(8ٜbV߫EcyP]NJz* ޠ r9&Q:- ,?Ҥݜ^Ky>sQdž"M%L@S'ɂ!ǘ 3qh!.@5oǀXhrPcm΢g'S9rvŊ@Zzm)BBk?."iЇ @Wޫ`2rz4= ˜<+ cIR|w*x/ʼYidwMhAսy:=( f&/1*SP}ψ X/`SM?>%X[s A"0wAdi䱄Y`oE%Nٿ,(Q lHԹ7m֚'h 億8 [?=;v"~Jc ? ׈O5xÕяO< !7̀,E47#Fە5kr|-j͟c@r);XSƾ$6TYl= ྌC +og(zY7<^hݴΘN4g-: j'^]ETQt܇խm~ %Ky:0Ut"/KQ/|bMƆ1 a df'3jmư7ƑC]+^1Hshy$ IZHp8QRⶪ~_c*sMz!ӌH P洏/ߩ P&M%e/̋[ n /(d|>!km ͬ7*Jܞ#ka/;.jԳGovrݚW=dG:8&w7Ɇ"ɧ)Xa=Qs'GeL ss =)ֺmN-EULe57c*C&jEprUlKF)yƖi lETNR{ n2Hcp֖ \?OË[Wo 䒥 cwk_1H0y*h=k\3bնn~:eRQw#qvp01ٹvU dNjޘ.C'B5&j{:_:(ds05G2-yӷ{@ńXuZ\Z6 :/?xH?i-ݱϼ !2!t8W5`EO)nyĈRFzY\QmߴB(i" ,@.^`#*6(L2cTNy"Gܼ*iq'pDb%|R--KWrlWTUT5 %n^~M=v" `ʗ8w_Aq(e?_r:$ٹvLLSfFI*$HIST̳#YQ_ΡDqiűvMST!H\ABmVQ({6QB2bN'lK/E+∥' MI8(a0!_`R~ͨ\ .ANCGxPޙX^hFj gh[G\zmTjj0\g4fo$sl"6a];w}?Nc<e'-Z0?X+.&Si0ۯ7ж~@ǂ(/[B(bSGrA mm[b1 w1;(6UlW#݀G؉n<2E(y_Y!S < "!аűɂ[=?|d$hKUά}xLr3䖚` ۍt/Ї |;}K1q؝iQ:4Oћ퉍EVSu?ך}tEWxBYFgW*:mvu :Yu+X$)#2x2ˋU/čH1KV<TeJE#8ۿ,=Mn4<ݥr\޵iŗ8Myopn'V9GګIJz:94ԙO~$~3"@7_!}љ졔@Y\߉Ѥowb­ @Ec(HHGH" &~ղOޝ܉RNa?9If[f=?KwQEVh%}aLw`6YBP}?­fNͤVfS5+3%v\ec]^3đr3ΧcY.]t7N#Q)n4l-V'%uH*)";ty|J]T@iL+3tyN@SAw('\B nk%,\G\bZdCt#Y)Xnuhi~Ōʟ3|Eo8y0u9`G81hl=S {10cR8!u}X[QW2UDBehKYG9W*<@e.y.[_?}M3*wxn5عHf"ˑ0Dx##'S]t+!VVRo:մ& oGa6*OfЍr? 3}fM?3]8! $M BGNhQIO)9v-+mM{LHfgf!r"vU?\&aN݆4/6&| ܷ=ݔB`=JȷHZEXւӒTz۝yKpZsFPae`V=Ԝo HM jakSشƮ>;1vK]%,l/;hQCZ9٧AWGs$/bq*ƅ =]IiŹ)NCj gYW팔rkɆY+(w,_k,֮z5/k|qCȍ\ʣ`Dh[Zפ @=TMbBu wFOpyʑYJU9(7g58ؖF>84-ڵ)Tǖ75ay뇫L2gN_OK_Y֔Ұ٣{<3&JgpNq 1TcvGKZҊ`7Wlڇ]P ĵ>LszZ@*6-e=)mftE,Ae` 2[˥<}3ԅp*#kE^\w50"o3GC ҵI/1'Evܞ;+|rE`Cz7G ff?+% ԗ_z8 ;V.d*N%G1z>%~TX+8MhJiF .uroGtuL 8B ;CMipCSEtދfֽVئ}j:ymHG*dJNg 36DxYe/hki)7e mO{ޛm")'&{5FrJfsI}bkItiDhuïF|hw^ƸF7C{25[C FDh|=r{h*6\k7,粠ݓ8ZѐKÙ 贱??TP_Hzӯ _n[~F#f0pvuU6}-, <e$Jߥ e; 4l:F(q|rCAt\57g}n]К̚"Q2\jyctޏ𑄌卙OC* ;-钨 +ᔤ604Ʀ%jEltT?GM݊==L sN<cS3F7&qYi -oz~:[rH5UC*-&rfL1Έ}wO'̉% 3twx;j) ٯmW\'(b 5EKbH`UrUBO,Q[I[Z'A!O2UBmwYq7I PO ؞g.b;b(/ՙ]/Uf`p$[EC@Z{h-If,]oHK`h'}q7 239)1NJ^m\۾&G$SmZOxHw,ڙx9*C~-/ {!Q XCμp\5z"l(X1?L>; GDfHYCU!Ԃ',evZE 6 5eXf Ʊԯar/y(X'UMi# MMb+o-Hg>-A#b2ǰ6ʥaX |gp9ŖR]`?u ,XUЍR 7DdI+%DGn=~e~OXdKyOeJj}ODX .H?Y=6GMR!ճGg9{0Z2M6 KI` uɠr1R%l oAW8Ё(Eg_Jhx1Ag6k1 uόǸ:vB@sxꩄ6{GdS˚CmLin'<ͮW(7iwXYv8UaB4b.5/rѨz}v8gళ+OWL7hŖs˒{Vܦ@S^磗^-^o"--+M0"8`v͆Xr3g cW+*pE{f=AY @< $nC7%9ӵq& iCbhvsl.ox}WjK5T+:A6=]nS^ZWG ?k-B7곛cx)d䖄7T%NBiJ'|&-FKO7n@Hgd}r E 7SRׂ8CO-hZBsV#hxH< _:r dBF",=w?2Aj^ QY*~ e2vsl[Ԩ"*kHl` -LsQ3z, L@, S5d5ٶ_QfRrl;^ DL_B;p%v?AynV/Sim͟1[^t.e,SN؝\4Tuٔ,'Rrj ?ë'z(Rs$6?fq\uTN1=^3ShLD2`zr]T=")(JN|?3/ W Rl$#%d]ҭ\y'*fUA<6zX!HŚ8|ar_"mMyD&[@ ٫- Me8tU'-f UJbfW8unJ5 )LE:s">m 8d3rwdA/x(R$Kfe2 yO\L%'0gNJG78)hXWf+PDuI<CtjR{.}$*4>!f=R_AgHR/!d*S2^#j`)~,@n0 #À[ڗ-shv< gτ߷>!X$~8=g]`5^X]m9: L %LNM",(G9*;sbE6Ў8^SvgLH wp|8-^ @h&-{굻f40ܙ*HU샇qF^V88ă"`gwywTR`E$!OQA'EcpS{$yb c`q+]TPۂ |#ηɩ[\ELH{g שpQrybm, "n4e_ y 2b\/~ ܆G!byEJQ&^&8$+fi4R?-o͂ frKQ̣7FvKo27/lOp Re[ǼK)r8O-P,^5J*O/eMQQT%3!Piڦ?dw*I 8Sd*R%-Ͻ9]\&Y k2NtbxYr0}IvsD5uR0$;zOlJxzF58eVحͫ>Pp?,c l˦ENO]|fmiunnΓ{%g1@e';+2W>Y#SڷDACz?Kwv[ DkN;z]\3gr`b|\d8ͩZx37>3%<3QJn~ԦsU`,Xh }$+V,Pǧƫ,07v)!9-Qbˑ,z6C`Qr7Bk6 ~)k%:$ordJ+ͪ@Zlex9L:~4Tۇ5huꚤ/a25O4DmHŐeWD3aIMEfl+Dx¸']3ӜfPao=9-vr²_>6% E; 7!'; L-%c,MRR/ .ҳktճyL3Eghc?*bANeEˎSZWy>`vYi(Yl>}A~#zZT*=>&2Q~n]u^PQqfb1:K\sőF:C{h{Yq}Āpxwjyh$%y6#a:2hr+= 5Y>4vfue;ǜEb .CXdI9ZV֚f14S bhrϹEkukdK>$B(#ΘمX9܏aĹ{ջ`bʷFba.[Nʷ΅D Nܰ[WOtX̃$y93'{sӼ(K> ʜ473 Vv)ԳHQKҨ ~ u: 1P؆ڔ* rx qG|Q'cMν#ZPd7\Q|wSkׅ#:̗Vkhm]#?ŤʹLė&ORIapJ0vr*ͅ;\`c +UXpex .H :JX27?&S#nt'#dǣOC'EWZx<4>7ؿpan4QXBG r#IW׆2C+vʨ _ C i|u1ggA.nX84Nil)xJMD )MRT2թЌȳYiV*ma0~cTx(gy%Ee`']>3;D|kEL8,JX 7aAS ,c~Z.40#͋kw_w _8*6 Q/zc!c/ۊx4p3|X˨4~?0΍DYd>3DJc ,De!E!v]}ҵT1쓍b6ua-dfW6Y('_uIEal* 2 *&3A#(|]fvypC12%Z~7@Hs+];EUlSyU>R|m"S`L"kd(|69td{{B-tAjy[ J{^E8L%(.koQPԵ=bӵ U$)w.#>ֺ6*"*u {{ FKcϰ gQȘY¶F ÅU: Bui ~`N̜Kw*(b5J~d R+0 W3>c;+yF[)"_׽UYhye2>v"~w} {[r*~Sij꽎3 B^';4Uyߊ?z8-d;G IމE ~TP\,r>@uv,_Č=Ww2}D۫a"K<-:lTy0pCPL ;|и6~2ʤ 42*L*!}0|Z T&2Љ2WɓQp54>SVXd-7̹xG'0V 4&s]DDm}ׯT>˜e`ASӃ]TX>bB/ayJ*5Qp% kD?"OLz6 eޘ̿i NSȊ|A݁ ]{~MxFݘioaA7tn, lиdR|d_0$D2=tZp nÛ{+5^"7&yO^ƦCEj!o`ڏ݁.eT삻K+:N**AC W>M#"-I#\/da}#f R0)T@rGHI"(L"v0Q> `p+S]ڍI^z"Z'tx‚77g"(VB?fj^\mbUembg=1l.zl SпOx"[Mn~G ޜ"kqNXˊӥ=N#ptu< @ڈBV8f|?x:crff)_[~CrşqبaRΚ|KO%?:8ܬ(AY }*3^ger䞝SNNA!}H9383YnP$3$86%+~xѳe]yI} W[]`c!.-Zٜm{2եNJ}XnO?t%x_~wP\& #FhD'#MzvxF#c.X5L@XY,:&yzg͍}z/vvK`Ҷ}kA@}M :K:qK$vYlwdzK kyle)e>{ MD/$NJJpvkjd Qw uƚ{Bl. r<]0TpɬĠX6{;FO0jo;Ow3JX7Na Y(g&v,E6 m+yΫkoF$dTMe˜u:1?Z~0FHA9W:lŧeaڣ{}Knb~?góvbDHCS\ppKiZQ]0)( ('s%x̒C/\w{}JnU$S[xr5={۲_;W !_t[>g-}ݏQ"Z# 1zLWV_Wlgar0?{7,7I[K;nh3DN9DBfyUvX9Z^A^W0S(1Ɖc:G8j nsvԐDv|LKvm1/zFvgm NXA! +wC;+Wј9+CBjk87%Ur@i ڴtYiH='b)6$bl;ξ*zCC/p2h2&;*}XkVC 8z9w;".X[LƩxsuI@)-F\{WS7 I_Kiz PȇUjƖݟU`xO.C۰%Usaܮ "[T bxQƅp@> Ħ y-JwC\! ̳26P䚴Lf:ܣ ~> v$HᦝCT[s m4iMQXQ eq |\+։Mr@EݴA^ߵ|ME4tЩ7GS_;82ma!%2#\97cV~-S)lM҂8^G$HL67%bŁi -AK{ HiT A7ӱ?vQ牗3Z>m> +n}^Ju%CC0MqW/f}Hԑ S`_T xkv Acb27(%lbtFF "re>PN _=*3Va< u`jeI?4( #E1%)5Q7>26(D0,Eje|a=|X_5iyVz qZuYi:aϞ$iGJ9ܦTR:VWoce'8 X2Z D+XKF034C4krm3ٳjb CV96cbISh1q/ H)?iJ4ZO»}&gGnݲ* w #HM9 vKLhtV_ TZ+rD hVc.jύH eatpY@5 ՎH|#Ӌ;5x"BoqüG-0W{[S͆Nz1މ >_,7Q: 'Qߨ|K+vd$&(5Bv{~1Y  οMXfz`77 L*X[pa? =58+Ĥy|9 !zlDc≥)QYnkaΓݼ+ȀC˻o}'m$nFOԴ2~KЛ}{Xtz}'*aԢ0Kk9Lg)8`܊ YE;yYIQT!2@iOZDٖg2䡃HȻ>-"ߚӿ+iuBƟhQze8p\Qcqhp#X"}`'KP13w3tLjlq#jR 9aEguҞ S.!d;~>$Q3  ٨i{N ?./l%R_eΡ@vwAJESd8rjܪqvE62v=GQ=7 0S;kOh`cʗAeClR̵0tZrS)v TJ~2/C_k<7]B6܆/޳YYRlH? Iu(_s\C9HhK|.̓ƙJƫ{Spm|&W ݘKit-MvgcKUV1^].J!2 lr,>#-r `~U ij{NYZMMdDd_Ku㯁-ߒ;La۽t6"$4AP:P)$LT&IW fK >dƔՁFfƭ@#vi݁ E[ `x2\.ŷ) v+%Ǯ*`iNQS+lر{&2!mQ̀g1k*ui%YK3;ߦOԈ"kZJF#4Lnr? J-t,;: !eNâ)=b Co 5UC+B;|Qi dZ'36 >? 58o% P IvҦ:eP0n \ nNF}E DžM "1pM֙>A`klB{m W)H7DːkNQ-pd!|Az=I5 Pyb^ټ7c>@E|x1ZD[8*z.1/.-2_cz*Zy Lf5/3[)Oz(DnT,i},䦻an0UyRD8dȞ @'"!_02oL(gE`XIHe4‹`GFǒk1i'rAPl`I#F:3 j~zn1i20/Uo),t#_zuMbV*#)H/\GaUm1;S2 לӨ20R-ˉhe`_\{Oج;%b4!N*|*:cuaƍ#'%b^`u!H-D^˕ v ¦戯wZ!2LЍB'Y4FJ@(qM.\4sPevbߦWꀠ{7$fֶ#[H:S¢z(Q5N73ZS=ppύ6/;o˥c (tjҽĴBcO1^"''j =5 -ƛkhf` ~<:BSw5.i47f:?v '>@0n@>G۸=f7ϳ4~ o:|GZb&Z98Ζބe%r/CN{{IP )4hROY x<::)$nlkQXB db:j>81qP ɩ=LŇxi>u/;ށxbIy}Յ{98`c{K1W@ӗ Qci@h. K/KE>@\5y52=h^Dó;x:wդf89C_%W.=O*&!ogO~)єNH}3h4;hŖs!ru½" `B0_lzeqԠ8P-mP' ZTCUG2Jeg!S~gz0j*NE{S{=Az8*KQw2˲Z)qJJwv0,+"7 L(ev!l_ڣGMQ7S:6iZQcR%=gu?`cd NP? z;EUO? Yy[>` GYp[>Fq{UЅ"9ڸo^h͏*&>0ߤfN#nҭpؾRܹS0C!R߀E8=ܷ ҕ_e\ͽDT4(00щ[BE~I/ſ/7l.[U }zNylT Hj4=׵vUg`yV,^^W fF~ eF^of(s[IRcue;rŌ:ɰvEHnI!+ո{1* _ilJA5.GcО h䃬;XTyO7 )'6y3tz遲lbh>z_neR6f_+1BMQ$Ѭ/䈻L络e-X؋@A쨹[V^M:W/b.dc='c8\bU0U/+^u۳ 0s( ޼hH`S/vھrIb+7{05ⳏb9̕{YT X#n@%BͰQ}̥t`K]5)41uz{$/Ahw1Ƀ </U}k`P# Z,*^?;Yp_j"9ᖨW?"i90'XKƅXF$D7$Lޓ[zj%Ѽ ]G<:& J%%1(!nܚKXk-ƷhJ)rxt6qAɈQf/̆oDuZH|~X_:aʻR oB;JyTVD}Q[jӂMس#0u:DgqrQn^'.p֜}]EJ"~G=&tkYJ,GX\"&=@SH,[N8/T7 }05.EMU>KŪ̮םT q66 ?3):}{4Tq"bх%!"ξqQ B)T9e(BjJ;c2DZR5,/o0ő7V+!.E7Z[R|>!2XGlmSŕ:g4U喝 5Tc^}.IP=%zb+vw;0b7AQv$κj:,F~3s _~mn7l<+USb ڍECVN.\EOjY70I/쵖SOI2BK䤫MX5I-I`EG $k|yls7ג li/!MZNܬ{oY7;T z I: Q}r:?_KΖ%K*Yx*+]4r^vƹYRŞ*V mwarIoVOLmnjA隂5eӊʃ1߮lT:q7kU˻ CuշuC&;%W1 jB=n̸2wy+m!i^̇_G=>w}om qS|;Vp 5Ju~xUDo$N?c6}d7c$2z ʒz#R:Gf=TKtkoyIek@b`'-x^˯tHF[nũfv{v$\(*?6$F0=M@!L߇ZŔxݵAn1t4!lIECw5#s(1$#c|'3xBs8F>׃cR?X/u"!o|cF͙ȍs .PC2`ˢ̂W_6D9|Iȧ-$r_p 6?~':4ԓY?Oo`?K27Ԟe&k2 W(ݚAanmI%ER Mx4ٓ!kx= ](z*:ǒKYpwgkױ -Px[#>b1`t/7–|n ZxdWBP?jI_]6|9@.d*7*U69d? ]OMH-pYi(!YYKQ)f;C^y"6K^8 52lKY.t7k''ɗ̥p£{-ңϨp5Pՙ\l̔름fiٳ]a.CK$j.O9N{N/,L-ZW lK{h>h,y ZОi@Խ !v.E`_S'UbyWqhĸ9KY#ƊeUjAq⣚‹rwy#)OkZөR:ҵӽi+:,?R)i4 c.;=y#]G ~iW̬Ͼnqds `f qrG/|G6$v@v#"SRBBIʿׅ@vAԋB6h=&g7]Ǎ>罐N0PPGuzFzB1E2Dal~_g:$*2fB+xƣbc^u<[}g :d_UJ|#/m&wJE3?F ҎYRNR8; l`#ix:^'v_ςța-]EDJζgo:]qbBB ]~mB7A_! I! ?mnK@K5얤f=Zq vnϚk7NX nA]8gyX&Z- p& ]\LSŨkpbLw8emAx1|%x+',bypIjx@.Ɓ>Yg:Ԑ,4tuL?Z"XCBL#}rWTѓ;eah1ʁ<̻C"~e3nn:\D?z%aҳ?d()lӶ > 9BI ײcTDDla5ظ>u;. Z7} jgf|uٕV3-$:If5"!]` H&MH{_ֻtͤ1݌[<`'zA ʜ0 aRVrsR=5MԔozE%#C N_Ŝ%+/LxWe9&TGctHΨ0{gzxԛKq,ZrϯsgLuiF~?\2x)j?r3~~A@"GP۠u +Yay=Hēp{RG`_4ClmRmV7{1`=<یv_^8};6ִ(&bf6f #Jx@aɠ?wCu&tG1ّJ&>7]i䊄|,w* p{bP-p0ǥ tKu ya |az寪TYP̳B Z0b[kC+;hT\pʋUzt&F{\*s YRɧWgx` nڌ{8jC-Ff Sـ"{>cpLQRoi,j3'(Z |TZ#N^=D M{PW;\%92jPt'E$ml}3"ׅ!)sdݫ&6 3 ;8O|3#!dk/_/rFzv}9eOUqgv܂# } :1A_yеov`S+x8BzNzsW;wk?]?/J,\UpFtuJE΃aB"AcLj*U6A_ܯ[5@O^0ڨ~gIT)5k2$}Iu#`ayD1ASs@9Sʽ˻fnqvWhȗ!eK "绖M=@Gkٛ4@p]6ߩh c)gaAmƣbder̮Zx>%>^}`bdb3陳 o Ca^ ..N׃-EWS4S,?؏V~` U@<N7uM ['&U  p3t"p0Ծ;"2OYKFF@9.\*’X|Wwt0>*F)g<#yPy$:텁am¸1A` |2ezz,47p(c^&S`O- z2CezP4Wr?8u>$K#l9OHoDp|%5|cA w){^M-LYcS1D\KeU|0{Ka\ K ԩ]^gqwgC(rO +b/\F"Vs]Л=N;[\'Gy=,;7; 0lg [V.BxU.V @"KjVʢIC|Uox1u7-T NŊ(6=>إ߻ R(RHz "{XH#aeJd*D uG/TsCVy,<+%r3yE bQ8N ÷5`D/8޺ H#!HA퐮?*L}рi^bh&Uve>1?y:.S*}'sUc.m*ON"+\lrc866@?d4;)Zl\˟c Ϳ 8ĮZ77xXC5ǘWŠ3ޓliWV_#Bí}ʶ{nFL* ,' [ߜe8R3avknoL8 U,k)T_~x5b? R`'P7kt,gӄ.j3UhKZl6yrȹSJtm]2^\l @FdaxSYQV xp;<7@`udC"devও@1*2%pwE+2F]MB-#6!b?+ral7t:`U_/ʏ9c#[Ӧ?':!ig0 \A HH!ل-UkJAlwfiwڭDYqpk +Ny۾R `YZ8 Ep5W, ng\"rzvJ 9Ww<:Q~{̀Vseo~.A@ejc'KB߮D(/*F:LKgA}ၲm&096AV_K_M=R3xZˡIv DλB>/&1HgQljr15E"_b20wfpNقjM7$`M^sYMzpX/Ne\5D,e|*Y6V1&+r D2 t]6PWKF%;>[)؛1Y;µ1!8gK-\K5&  swk({<Ο6a/!GR%32-SE''DŽ:HBx3ϒhRp [SS4]نp4]#yQӧh P4;'}L\sSG{^xhx-+[uK7k2dC WzϏhdI]VoJ­%ГNIMG4`}=vXEBҐk1=7l3=^J21C3:4 9-kY<ob-&UD )+щZL ˚-ntk_Mڧf(>1`?q4To󱤖Ѽ{EpmLL9R4mA^lYK++^5f@X0ۓVZzq%N>UHBK^ka*;NyB`lQM9,0/X~^"V9ҏ!]lˤO14f9 ko+Z蔟n( {BrWBrzY϶Q:;N' *jO>J %̎UZx|TNis'cmy{!iU>;TyR/qV@a~@앝*ldZ>Dl_Upw~̠<!ty O Ma BCn(xgWwaX- AD&N8ύaY9JH|nnlejr@$'0RKY!RxP# =O^aB jsFdϢMHMXK7Xu{߰mGۚKb;+0AEuD/m^M,%@M> j)=X6;!W*{<"CSNeNn ]rg&f1 J9O!YN8b1[`_j#Bd4{#Kfp3(nvI?hB\I!iz~EV#=W)[2M0⨰ߥxtz4`BF4Ɓ;[UCNBNJd=vร~ F׋)a0#L?`B(*6'f3rڎ:ڽ6p \^3gQ_E[|P 땿]hYlNԫc1 M Yi'  GNuJ~k&~#ݎZD5S I>prbN85Əf6:H ?(Vjg+ myb(LCP@9p"NR< xCgb .5/$K'AI]TMiv1YS=6#<vqW ò-gohr W'#YKң]⚑}~2q}TȄQ hyTqVmX &r]z[!wԧ榪 `jy&+t*+R-4ku+4V Lr]ש8wmوSy7xR!Rǫ=Jtu$2=]V?-Sc"OZC)Y3oWeҙ۞13|,$݉Ӽøzz(U#,f  S#2hT>c3 ֺ~T^ObWpz_鹴anG/hvᷢƵSX[De^m*.hJ-{U0M"p@G3>JbCl(ٖ[q_kW R( CjUQgcL(:{24R8p7R 6g]]ޠ;QJux@.Z`al΄ۼLt$1 *&tlV"jIT-Սbؤ3orYjHh׶Yŵ1EZDb]׿ꍊLl2hn$x$HTh Mv{TKJ"k~(<ڍK\V3W=n7%(xE t=DZ%d6'AYwK&O]qnC8nF7D0_Ɓ΁(^WH[*m.j2%^ U.b(t56!p30ĺv/`t!$}3R"n 7ڴHk+ĩA 9-jY59#Gʂ擗f ֚ϥ9M H6']_xBgOHJ|$ͨ-WrI #i#R)8щi/L yP6䃕gn}HiJFKL˥ {S䌺v%!̏ zxۡi['N6wJnpӤtMLNW`d\,F7QS()g/PgzfމW`lŁVr6Ncsڸ( ã(pFKscM)'ypWF{DAF[M>,Ui5YYI"r YQϫrAb/i;C_-wqrTӋd єeh⑝1M飜sc|Fٞ;Eʧ))Hvgp`)61'MNar%OnѥDg ׿l4FcNjcFh~<ǎ'qGl^BCK\iX7 lj&|?ʵ:J -599Fl'FMRmTE-GPuסkCSL隈Ğ4ۯp ¾s~:Ș0LN65uP/5Sljـy1Rz/i8z ᠳ>'o]Y0C_s.? N=tdB19y:@]2v9n Jzn竬9 z'DXGRD 2j&W;2`O~G] pnz$ZPFi^jD`3(llD̎|i}my$+׊j0 !W`lP48"P0H]D* (>?fmÊd.ӯ/2I T=HKl/G= 댘 6|^x~>U!-nx*~LV{?/ԡ[[2S./#Й7z|Ʒ))CQ6Y'~H29˓;~$@Ajk$Ãj 2DQ49Q_}َjV糔t|;w0|Ar* SxW|q?BU a؍CsOn{Z3YAZRQؿLs ]$"V:fpp㡂 bPz=;ilmIsL; þ{yqshNfO1HÑ +Zr&ny3wŁFujfhUC4}&{<5!WwZۯ)# r0ŗGi iDSC$ݹ9rvF']c+߻}4#Uu+*gT0<:q6)WbBj=?o!!]"Xss@!nwA8*nWlBfl_B_SWrsh_/`C 5e~2aսt>-X-!#@yL.7EHWd L#"!A6QfDg;(gߪݵt\蜻Ja!ЀȟjQڍt]9!e'jя-9lz޲8rQvYg0;WW*|w1eg[Zf%RInVltaw4MA!,n+LQį? T#Ǣ{!׫37J%/UWBďRjQr+V~8GEXN66|TM._)'3 w\UEUc`2S{p2H$VՆ+fmy2 J |Rf:F̢8aҧo89|UG]PGl<YؚNrpezJ3/6l҆bd>]w@Z6,PLaYQ1G{kڗP|5e5ܹaP0&ۍ2٬!*QW>ng{P}Dܟ^{yh7 GSa*ӵD:?p /{ ?tl!1XO$XiWSj\L+*px#,RcQ#[S0&%@uvĆήm[N5ng>U=S .IMti_O!egL3 H$W?{~8"q m^CayaP -1 Mz6z Ȕ37`q|rÔl5:RTszw!HB|&1*e)B Tj|] e~@3à~i*b f~ܻ7`F3uj`/x+DA%|Q5QW f*fP0: #tJW0Buә (+ &GwWN>R|\J /,U7 gvODǁʼnk)l=(1_9> yk (xAJ-rk"N3SY!/4|blpHC+I*$U׊A w>IlrYoXC y ޓisXu~1Eu?XgGb/*U_UCv |`o{fr{š6s6{ %΀H&]B9Uu1}k.Ď<6ҖS@RI\s l̆ -  $L ھքw 1=&^=)A50i[|2T15R"\Tfzn~˲3L +f'GsmEoɲK{yj{F$x΅ |+/=ok4olCOp'CF?][3 L;Phre'2Qԙvi Fm5P|ȘQK!owWBxmuUB.&BFXM|SdODg;Źyjh69z=~aG\\)'2*(u<~ Qf>ejQ5leʔCMɣϕ|KS^0'ƃ'Kyk® $.h(p݈Cj2HVbPh1@fl$4FA p1 "'o!n?yyBJL2|3 N`)9t+ܜT>u׽ >ԭػEIkW2)&Ԙ>_e [DA9t/ݐU"\졛 yucn.xK"ljQ{D ح@`xPK #HsUS_y&id,2uLO^ʓ[7!OS kC-43,$!/JYHtMs^;Jݞp^qUO?R]nW,u n ˘@@Zl½o]`'V',DXkbSI6}a+XVj(/TK B!pᯙN8q}6|Ac*zW9FeqRa=R,sٞW qiڢ$DoB5_H?G;&@4)XNI6 マ6$ *D}w3x2rNg(лmg+3 PUh"hZiPSt*I&0j(9}MG3VWU;Z&;\Bo01^\r`"Q~kX2!޳6A^O?|i"{`(@q{1.U$d7_BM菛S4%zR٭, #4ʹ!`뾙ݘusy´^ބv'h*@Y6Dd՚}d '밴V> 7m4TV'Yb⮭b% hi"IcȚON%#LErE?dK)a)tbP  _>_5̈́cr,^z_@ECV %CM4Ec3fA3]@~+g',H"B^3*v)[0uc$9 C8q󔓖 +6>nCȎ fsYb8#B|1Uq!!,<;H4 ?m3^$ad8ȷvWvBE|+Ƌ(A`Ean/w1vm bשU@mY,S `/,cm881TDݘ`5icl[d{ԊQ0I텇_+Ryz68|vS>)sADBdĝ#MLUTt nr^U=3a DTEMCbxH$t 8mor.zo$ߕ:ĜND0j\/ -N掖NsD)(y;_pXAb8oPj/kL m<@{iF6_~?`1mԅs$:?'W~@.TEF O ԇ4/*0}_=}:v{#zL@ۇ=){Dr \jt*8XVh^DX?BX\وs:>(sВ⌅;vMzX~Q 0b;j`B趝m1Z֚s;`%7'i k.HޕUȕuTSѦX)Rsw-2gve]MTTFN^EJ-Jw ,̛Ώ|v{Yx:h;"skzd8U%-ǿOZ!r$~sWY#řB:E[lbCQL NO`) شT`i$LppH<^L _+()D %}V9?Դ+Ԅȟ$֊87_y=Lp߰9ށ^5Ð~ 2?3} |Y6244S&.t26*ՙ ޓ@هPqK$`ފF$[\; jiX?6m8!ڣe%ƈ̦DzWe-Č5[Sս϶RcO ).MҤR4w^{#DX{bS}3Fa0)M)F r$ɎqY#1 v Uo蕅,5G)29fd54*(q g((qS!Qyc9+D!Z.7EpcqFenb)hɳ"%4Spk(^cD;K`;IedR48\nOYTro2L\;נNSR#QAI탠C6-)fCr1ꨞLF-uR&eEΎb@%m9B*,6:d]8h1*)$⇅g6k:8iE鞯 l% ǯ0Zyr`mU>D_r8ASD@fӎ Շ>C lw] n, 347H 9.d%%ܣϿL"o#L{",J>:& .F]/ސy]pݟyZŰMB.4,R٫j@&a39C 4oE Vʹz( ˾$A9 p֖,)/Ue/6dbNPo< M' 6!j"GɭlBл)K +$7a,&X, 3c<1y~q]b ]̌!甄h[,8lTr"ad5दWqTo]e~9p7>4Rs&6e"GmQT|Z~FcƚA X} VpeV2핦sŐb ~1 }dU<."La{-K uă3̏kJ`Agtyj #Hk޹ϪJѷ cP?PQ"jޔ53gmxM.P$5%tpFCa })Ѓ2[!Eɦj)hQ| {ѸӚWR=]GȪ3r. [y!|Bz6K̥m +Gi5_FețijA" /9~9CWv f^+4hMˈOx'=QS>J2׃ϔ0rK),|ܰRtЃ67^e8u: $3?FYU mB\*b?=r1P`,NunM;G^(1G->t6Z_$s Z)NDT\m[URfϊu6ate*1)yW2ا|e#&H 'vn88⡝M(+:ȓ3p?d-bhhZj| E{3GVҮDO53&/tza"EojxqZ;avwps`g&'dgk]K`[|,k4*Gᐙwf9 ONbo FVWzLHf.c5qxxI>ŗw=|4ZXݪ*HN"]Uc MP io%*#*caȅo0-uF/2gMfZPT w%Xz6A$1og?Ng( ɗ TYv<ahTm869fZv%{iINOKbIR$Sj$îCB7t,h*ė_4R#',2`2űQj4{Ĥᢳ=([.9e6*hA;UH+PqksXtbca.:$BNP4mԩfB1NC CsYI%8io]7hv2) li뎀Y}D{>~P'r;oH$Q,v:q!4.]rz5[Y-r2B՗j\S _{k1H!{_"QY|ո޻\}2,v:&FU sWyq[)"gRcȼժѸv0s]cg4\r&'^3ˠp]CzM:2zB8B%BQ3xyߙMIo6>'?Y~RQEOG:!I DÝpj-84(]S.(RXٶMʟO`^[W!jRV"@Ы-@J"錴|X—U/2Vb(SA!Ú֙v қv{ϩB4#iX$\-gbUO j\f@aB-X0؊*Q%h:a!sU`F`Io2y)6ƘByNGs R8yq  gCmDxGyȘ+q!2-sx.93DLmښ_x0h@¥vV֪ AO_Rt IN3;7!Ƕ궯ҐpE7HrDpnje"lm:aK²S/I0Ѭܦ$qzkux[-v]jg{f~L8o-rZsEyjM6^: A 9-BO7EϹDqrN*ؕNOOl&Dȭq\FMde .{ƋV@'< zYFѱ >h%N[.ըRx,BŌV' a>|qp*quĎ:ph?xZ߷9Ve ~y@n MֆWjWrZ \'"> @isCX;_Cϓ0?<6C%I~qۀN8-߬NJ77ۍigw@;ti:z=FI tA0i=FQ :7bQSYLwV)ԭn} ZsOq'GE&G2eCz6 yؕB$ݡL^{gM{8u@x£ l fj#*WcIF Hfɩa=UDYK tM` ]@E Gʪ&ޡک!8=GQka@9=q*#e1!]F t\kn=&"4eh}1QFIIgYs] mNݯDyTa? 5z~3AĻBdtk /\8c 47@ Tgd. { p%FHJoMp2*Kqfp{Zw7b| e |ZMa=peKpeE#Ԣ=S:Y"8i(?-*kwT&`=Y[}=(PqsR~i5yV`iuEH]@V@bq5 pH8)^|dD%`)i嫡@ȶLd|IXݡPwR Orō ܩjJ"ڡen؀ ЈG*=[62d앋8:5f 귂.Y*] U!dYPYaų@!lfւlKl Q@M4Ks2Eso? 3^9:$B?;jQ qwԿqM&@6)-dFIͅC!&lKT$#+xtt\]jr0O=\!ECKjn<\s1?@D4k|vjFac9.]&%Gc7&JE0ohCn ?n@8vQ#lkH9'iY|~6l|$onIf]TƄ4:yFҰ}s mbkRtMO}1eGD U`bkG}lK%F&t~zAΖa1㒳y_8k'(SƒVSFULPIUkwِ9B]<mXewja$r4jHu9ŝ9PGDg< %Hx;8NndyZWZۡ !&?9-a4@Q2a5F! 4vlt ƅb#rV4d.=H:wsX|;[I6SjGϒ!͏hZl:% دIxK'=_5bk?F}~#LTVnɋ蹥SoT`{bGkWOD'`*ghKvژqBfCr"GDkK mw-/C *HH~aaap78hKX[Rܷ(+_y=V(M=z@vNI"sĽCэ,L:[0mD<%( NiI > #~f2UMkw\vr4+2d F~f2l8:0Kl9RBƂ6Mod> MgMóͳS>LHFc8JWnp7 m,JEusC΅]|Iyr.-]pt_;}VN s);t9e61-?4zXS(ʽωhcF*aoFVRgAW\?B( A&"]QU?W FZxSOq x7w2i6x?O(WD aY>s>U rvy<Ǭl#7MzmTwʑLQ q9wDqI1f7dHJ*""7϶+gIw }Uydu<ה98fMrHr31zLnJ UE\;sua (-/ p2mr=)<žr Qqޝ.:{ /#pF~d2b,HMw>Yjƛ&;.lS $@~^ZeY(`(%6 :6Q(FqbʃU" .r-)EYĻ/^zzǠQϊ= h >!VvB ;p+owoUQ`HmŘC{RTe@%,;2իd@N; ZѢ㖒PN=jO 誰9o) ߜyBH"fKʦ\O{ʸ(Ʋv>e53_sRAW|{'ng2ý|Omu_d[aOCak/\s4SsCNfȔҎ%sZt}bq!SJЦ>sN[E p jY2;~Tdtvy?ߖ| SFcxKu wf!k֓^N%84 IuD؞9 / .GJr`se6 EW@EZQ+)FZOUȒrgb6J_E;*HƘ P ':߭/Pxcҍ夜6֖%$0jZt>]1!AC(j|~*RUN1(,{q*CURߎc-Y~V ӏǏz>CAŲq_m#HK!&CuJ K nV݊z{Q{6Q>Yg%,I[yMu-Ѵ!aO2 R<MhrXcl3~Ŝr.3yoH2 `̘v_Ikp'9]|:t솖x@FO6wLs*^[`V#ʗX '֜0"۟|?0O;Fݾ]Q7y6{ZErLG1J7⠼V{^V Jkz} x\1i sE>" O-.:)e+1>fѐS|&Q^rdY@JEU_"_CV[݂Fsƌbt@-\ Dȧn<=Xrr#ʐIؙw4 dyOTq0 APoX!@3['"~Zk\wZ8|2,nse2=Į[NO`wZsK8E>ߙ ]gչ 7?Tf fE" vCEmiuώ+~ħAW ] rW{WEN$8U;dG`W(Ѱ=!%i6>`E 3W!J'jgQ<cguTI@?M7[RÕN!˸ƹWs)0{~UgI;j ~;9X$݉"ޯC,ib9p?~%uN+>miޝ$j,d^i}_.@ZS-o8Hn Dq7(FN+4C7 mߙOܓ<;M}I g9Kvb +DHUHk>ʳ^{sAw;OM4I0;:W-n32^3^eDS֊YÄv{jLࡂCZ]8F@}G5zHP<`)mVV3ٔA!Ԗ3ۀuA s{ώ^ެ!دKcq60DQ I3mĶy#/aFi{X%c’OhqÐN':Ǟ41 E[Yd[ݱDf1y#Latc#XpNsŜt͐F4zBbGk 9Q4_[ub45B*0TszcrIWkt| тp|Ǘwo*VEFJ?j%ίovjN'v) oȯKMsr=?ZqN0{H@MYCaG.hێiJLڡ{V^蘺 DX^?; /CR.ǼXlB ]K 'M2IZ:dwceTOsBV _a&dW;[y_ 7C뙖T ޗv Z pGN Ȧ,- IXe51<&7+:R@PZgiz_h itRϏgiP}*vqȇhIK+ְ?aܜnAB>_a.,"CX*Ӌ}C .MͳGEZW Xi`Y(] %HFmW^ UnxG ca0Lӕ5KN-rDplSD01PAQѶ0|mpvb>3wId.ޚD|i}Tz(|CP [g7dEoyg@"bYcmSr;\*{a66O@ 9阜anpYM/~bcl͘D@HkPJAzڿ)kjS`w*fی>PFLVh|,=6n~J.͆-uW`lPT,f+r$8VK o0E.VGxJ:&1kܔb3LIwm︦gvGa쳤2Nh;&D)+۸+  %:xc$ M%C}r10>d<:pe@Opg02t<~a8lźmfGHӹiDf[1lFW3IvSt&Q ,<-q">qE ,2۔uB~_:+^ u 6iWՇh[+;N0t1S+:=0AGL"*wè(Zi-ũ"m `ZIjM(hBLEIImTc )Ӎ!Xe9GAN.jhSwYe!|n AZLhtNMf(49M3fS5IBJ=ier$+:o5|+0O5k w²{EJ4ϽZу8rB)0a =!{HyjT+>$n*(;(h{"]S㺤 OO82'{T}Lx8-d;/۽ =C$J$ŽQCIKBlSCjX\M~koV^[z]@&'x{I6!1ؔ$DOF%CZNqل2MiD$1 ysJwhg,Kh*զ"d\ŝ K YG}*V=kT+"Ǿ|zw4Ɇʎ$'"h)e-Cy0SBg)8Չ'*u(u|ΕPT3d!͓쮒\@X CgX /.d>I,թ=oB~5XhjτAg[ JD~"-7(IQKzS>fsoljc?{LKBnӌ5x)wie=nEHR@֨jQc O8XlhE/kfpK`c*4o;ʽM f-:|aK\jv ΎV=T+7(hvq^1JқUHolLTA&Q"SY۝-Ri Otq8EyP'͓{eƜ!Iq~01'^{W mvTdn{,PmMgaM9xN~Pf\Sm!Av) =k&mL&MrEt%xϐ>Zi]fOO ~sP"޳6u6C|#]6J=ЇI+Pۜ޵ӹZa`q y>?rG鏔- $7)܇smhgVA`jyrL]L$|aو!?Fh>A8gTeq$N (!] gw5:P {~G4ݙ-M:k~v3''FIkW2S^6(+|<\APfE+r>yfƚ4"@"~-pKnq3):Q /j+ĬrI`egbBG@xmkF,~ޅ0q_)#kw3 ^Fm3ͽ>o_C+iʆ9'#0`ƍ< .mp3ln4¦|}IP~I1NA>H?b1^TV? 3 ;1-. @6D/a3T0_jBlÿT.3Gtr>ݢ|k]  !J!b.qYx? "xIkӦPpHDSsOE1dm7V(jeZ/F n\Ma;C=Ws MO(KSjq4^Bf޻[OR5^a %L9Ojo2x|qȺjx:[$8X"jQt o|8C[5d+*A@ALFuC*ݜyv͂ٝ\s}aB ըW̞` cPAE[#±;lV&n|vdٶ{ŸOҵ;9ԧA;dl ]NCK&7# _'iqh _ܳzPNJ%DzG #G8zgyʅ,/wac/̷>۴~'\pvJ~UQsS*8obK 2Kv_CXe|;Kp `;]0>q>.LPr/6tqKG|=boۺ?26D*9@ MX_$+T ӯjucڷNXpͳ&Pw"&d&z48ZR - 1:Ի[2fR5'ݚerje2+e-ͱRfZTѪ61b$~Jφli^k>b3 dL\ _)?]]A}ˤe1/+GJf#m5,l/'# mhWtEb ozNUEj•?;5b\v.{m|˝RdXYo8qoCvy{bG(.VV\Nι;C&cX9S' _)BN}1PGY\=7k.Vh3WJΪT)/>O ױT\h>3_6ٚariJNYFא(ߛ$%f ݼhow}ebJZ8svv6ֻEwb ;ĠT9X$#_6-Fq?vzLJD%X8 u 4r.LO9mg| G3Pr%;jog̩*pڕGj`jSFХ-3@T!r@ſ$#ELÕ5UeKyCbjc=$sVN#y=)lV W; VyesygU-%ƌh9қNjrmw?h.gSGi Y|;LUGpT?'QdEՋ4익JV `gcg3&Es#:T6`KW?U f>$Q=L$nM"U}*uwl Ͷa鈤W?[TR?_d #Fvr3PO434 .a$|@̢gޘVCG*٬bR\|Ql9챏l撤uVA؇gZI%HXSY^_sk+MIG]pdžNI5װH)Zr1S!V 6jGvz &=e7Л_nJoB V_E"[T?돃c2y y=j/,oNH8בA @x} F}Qq- k%M';Qhucc$ ;Bh>G2b!dN Gןތlo$:6Sa1ݶJp%60qXiw3t!ay4M1}+ǛI!FĆ1$ew%;6Yl%'Ubt}h%OŲœzF= 3f@KRn≁rH΃n{ƹ:{5):NrSwD8].m3Na6"߰ۅZOIQrK؊QfM j Cm( D%M>*eReB[}%M*zt- ؛yPpL7kT[&nϠKoũIMPu 89E%~h{w˸_N xp5ϳJ^OqmYMң 1`T-&>OVy{+r(1b'BMFŸƟ .|,}8ΐ H.)h*NrH[K[7:fzVuҪ+ raoV7z1nٽ(o8 )\Vb> f.ZPHm 5#IZ5?wy"ުrMRAz>W߹YXyX# pg: ']*"os.X-P=<*ܛNFx^B,\_ b *:QY4&"ovMHR$ by9r/GUg}$X˧SXeKA0-NJ޴VL0{G}s?oW-ރ.~6p7oPB9xw_EQ\D8Q4շZRkg&l&H$*:+ݨ; iWfɰzH?/=w_1$M~Sh֣yǮ$3f@02 xS\#{ o\20ʆʘS.|!?kz-$v(}dqE^|{'8cR t zK@2=4ޕCE ~Q:GZi/bzC S~n}X. vx9nvQӊw`EJA M}hTuO:͒FIOd8XϢF><tߺ(Ʒ'tbR#D3OJ V8!O6wBR +l:];ٺmR99{sX6Nj`wd,Ӣ:4Q̴ W+(1GE@"ymJZqj]h%0WEQj5{ i>DZ8$CZvJ,xq|FH&Hil)=X02K%zgX-K KԴA=|t5"΢%f0Y]_|!߈"0ɉdy|wq>(&倷T1_2ˈu_uB/*:" PURia9GO ,`A%*7Idm֋ cO,Xt]_}ELeT"3ƂD]S 8<Sgڧ[y3ɈVoꁂNzp!|\"WWތ5 xؑy;|*gzS@13-xr鴗9)锱Ode'@% Z~Z*G*8*:2esp lpb(_oQh :![&%b uJLS'BB1&*bt ) 6!],8Kž»KK.Yp|W!)5,_V; /ddN- :"+zV8|VjxdSWloS3d;ᢱ\&JKV9J[(𴪁+K(Y`l[^rltp{6**s)pҜTAyBa[nzW|XQϡSB"ӈjBCd.B*%rdu#ocWx1#d) ZHuPkNI mSZ_xu<{bnk~Boc[Er;~ $bfn"ݼ?f98q)Ŵ9ס[>='68TxsURဏ+F^:셐lw|xuJJ*+L(RL.حii!ʥdӤݴKnHhn;cK~ƚ 9mLl3E%xON!TfQ[S)Nq0g"=<ﵡ=үPq'Ptsx?ALW <p_[|t teGe6K"q\04\+5U8w 2RA\u}xy]G"$7*O3F`FYH g*ryT >J^Cnr<D_>^DE,q条5DgI?%HQA}tx4nh Rtw.+T"|8`,~bGQ*gd8oj՗P7<`ac`Iyf\UIC] V!vy-~)1K͊"K2"#I$2˕vp~XIŎ'.5^I(jpG,Oy _.TXzL]"D$^cj pIF+A&P(1zBL+e,ʪ: ȷeMϩCt>=pƒt%,PK1!7C*:% .O$~-v]˓Q4wҽ'Dt11 Zϩyd֙dAd ]hb{gH7hϊH҄\L}[Qpfs&Mz6b%'O&B:1[⫟C'j$ xD! wWBစ#wT+yւSxkk p9H8a>O4G KtSnhwXu@嫫wiYbѭ= =|l_̖Z- V⇼vuߝ m< 2_{7zvHbc6^-B:>)<pS' ՠn쥓>YrVh PEK0in4Cۊ({ 0bUp2B51qlTz:^aq敄mX*u yo!^gje/;sotZ1 MsXX`&tI2 2/lHN2󦺏4qGu|*o N^Wh z9QEa̍jI2Έp%i0EOf*uj 50hLG>B:/xF<1 Agl]8epfiZXz->'r辛'tddz"~G>DQ3mR|GKj@!/YPۧ.l6|&H('2F*~hBQ }^Lqݭ ab+O{&,/sK]I²UUW='I8zRgH.$?"H+E=?nZ CZ*`\&\t ILx$b~Z"~˲)r?OCI _mS%>@5n[s36rڲ~GcWPAR%ʰ蘶fKMafx2޼5#eX(J})yZ8W*x~a{Kmw;*/ٯ{U¹yql t OۦRxں0t931;7s<#C^4ywK|qz p-$ moq@xL x"cQ~Nb$y^@cBB,q x8{a4XنmQd\W>i^XxîÝ>.\>K ^Ev iDUs9^,@0C > ֔2*=O3Xez6N<:[-K-,# l@ ܠbm54(2s0q{kHcVwScv@!u<޷.JynO%ax@4qBaPݏF76kݎDb vo~!kl^qG\PjgVӧfT Z 7 L{@0kQp_ &xj1e떵߾:'ZROpŵUJ=,km'=H9!鎉faik>:ߡY$ O6Łv]ޞ]au3z=srRt}s9wxψg 3Aߘ K2[6j Wاj+,= m448whodWm&p!ѠAFl%0>Jg|^j&ޯ9S-/ڦ+KƢiÜZc.q^jZshP|Xɧ;(ggf\^sa(HĦ\Ռ.<2%Вc9̞y4=Xm|sSfz S֔Bu.w5!i^4Kg {*v t]iS>xw{Q!Rׅfrbg ˎ'Q_&] ൉Zir»>p~4\@9/d(/vҙ9\?MQ 1YBa/c,F[XȄhl(wQوC F,'IL59|*jvY;TzQ{O[ep@)BKhyAEnj"o\&rłS+вS3Ş,sG\{ r^nʵ݄ɱ$ů,A=X12z. &Eܖ>V4GJI]&hRBy8-hLl4O"^[sFFJ[KmO=5Ū5]# `DrգԅwFWUŶ ̛*ʔ̈́s` bvgb֭x(=?k1f`S/doNu,>xljЉ9IDiykxb]:6()3|3>|FR᷽tӲ^p+nH)$EH7@0L)7ucm44)wpW<e̺I`۝W21M-IT|bɌe "aG((9qhs+)g9"3EO[:sr]'MWJ[FI ȢU xXFY8vЀ쫱HpS`ylAtg8{#L o8 ( Vz.H&1 {4t! )?tEVe9jٳ/ڃGPd(B"z4o\s-Gm?GCW<mDl8톅;FdtzMa%q0}S<<,Arֶ,nVG~h- ?L3QWd,Xx"p:@ ?>u< e\Z][ؔʉHkkM'4#=Hf2<\SjW'^}1M@4`F?<@;ж!gjG%X8}&k|$gO >.3:G7Ԟ~n4$Z0Ac/w9~nl^p\H kRk;9AYt!^N"MYȼ0}XΑMOZG".M旯KKyi[*Fo}4v) 2"Ɯ\ݕdF[Yp`nxĴ.LR|6tp3ɦaj (fid)7vL+f1o w` mVh [cjp-Ut40Y86jc5W :w/;dA: {n8DxZצh J6 #TE:r"psɷ|Fܨ5JIg`iW*"wHz\$d10SyG;[2J|}sPa)%]0ި+3=Gԭefsg}& ,R8N7*Aɪ'Ŷy1[V>L=͸,[n-΅,BAr mI״V n0ՐݠF={N; Qnd-8^JopL7"XBY poڤPic[s%05 TrvsFxfC/(Amw􍟵ˍjYl3j3ж]?!-`-Z{F(Z-/%OF;D`(YI_KEdhcj (9bZ9b{?qBx~ I:ʆ}kw=,9>2.|8х4n"OAj0g뼄:.(wMLJݷYt攰Yd6ILZnrPjnDsJMIӭڲ8y0dS=K;_*dGkX{J9㼓x[NCi_H-~ ukj=]\ L=e.DM* zrɽP׉xzT@?;l x l!|2h*|DSb=%P.l7Q-ѨEuBΤfF{'j1SyCޏ/?ZvZԽ_*d{Ll>.rB bG *?z(DW-!{&]fjY־"D^HxUc"nhZlxuV;ҷϚn\ Lhg?e(rv%%Z4kt;a Qg6,Ru r&C? QG-FIfeZ (gQ{ь40lϛ2k<(f"Oaʥ?rikcU6Fp}QP{'lzO2g?Y Ue GqNrS@F /x™`sڰ Y[٤wNü_9"_ŗd4Oɡ']@jpMI}^z,PHfV(P`> 1?G|ɔa@"Ҿ (!V~8ׄ>5t- S{ٙxV"C&$zџʲH>aLFL'cfVwoL,:h5P;3{2pc3Z(W}NPGV = rnܼs7DE𤖛a+'NKˬ)NP^}@Cd"$cX0|F>UXK-eu,xu<*\i$4˼Czٰ8b:ϓe|5BF\npB3wf8a=M"Au#<V$icEvC~`+Vp1,[dy:2#>p4 2aql}Hb̏o zhAx?͢< cqC ÿW6Tj\mG_=vB\~2949|nB/٦/RVN0i^#1*=Z,s ֐D5NSFiGm5+Ƙ{aX}*'EE=ȗT+\ܑkpت#n;(N´ -LI,l~%3\;.K&*@Pgs`ЄRHaۦˣQ`PSC]BD|xա*6>Ĭ0@ɒ5g9+LuG&Ienwy² 8dr6Ğz MIm(eeP]$RSǟ)n1 %TGڱ}DN}[XUsêmߧ ilCn&_?I_s@ vyӀUF7>KZhX VdHZalC [Yŗ%`!bvBd $v_S?kMͪkO^WIxˍCVUSGD:9dan4oJOSB\l#~64Wm"g:B b\·2sՙd,]2c98`ʪ/`5)'&*ENh_cRZ`0 VN ߱=Z6h C&cإp泠=h_߯L9o$H-IWD&n&@z)/w@2mi,tl<$vd B!n#= /F:|8Of1>2w ^'yO#3uGUZX>ꀆr 0zUmף"`T)J&-X rmTX 6`K[DzM:pZGThM"yLYXT=sh\D5ܡ-bVaP/(HfQ.t׼BŢ{hތ؝4y]b5 |QQTgEֺ.Hp k=]0N@ kuenp,@S%* F" Rwm8Pܙu;KL^ qf'¤Œ򈔎Osqoʂ4蔲GPdHVp ֱnҦAt2>q?5'Oi'LگZf=Rel66Z'}[aO9if[(u但J6]mNakX",q(k;ZrDB,h[[Ȩ6gς y`%ՠ.}{/Uex6"qT[_ożVS8T6CO\8kcRX%6'(Hrs)Lݙ_ 11[[(} ux.P x+&'/fMY\dHњA3-p Fnra-, L2hu#ѢMŭ; ӵl/#%B|'܅fKF9r5p;(1I0ȑs_4}fh%(#H lH46obdeL/ TD ~w9עD8!z#.P+|P@l8Q-tS2Jea@%iw#0!kRf!ݑ.R8avg%[O ?>5%Fy?N#Ks%Ae:Xu]W 0$.4} IpT2~ Te< Zy-75T18ʓk%>':Îg]N< ۓ"{UQլSes`tDH2FlIm/h<6lLqoZZb".5)x1\\Mԃ} l o9@ˣ|Udz!R:jRw!} &iFDP;D\P;(b|rTǍɧM'u{_ՃAp4uG:l}yۤ)HFJlCٱQO,H8ȣKPLFpTV`El[/`Fmh}]}h6ՂX2-^s_Ig |"{!>8uD|^(Az!F 8%LiwG^~|"5=&C~Ȗ-V-_p'kn0۫~^Y/i{WnAяp2ʅq2/wUm&_Fz-o_t.1^|DΪ݋25fMqL*S?]K8s䭖"ԃĎfF1_j4scbOX d(GP,hh5}+(M0I᤟s3Ty0a}[ٻ#+yx9& t^'Dd7JV$X؝i`v 93(Xjzx9CU|G}eG3g'(Ҷ7Ϛ981Iaφ#OX8̄EyX6HǾj 3ȸwf UM A ֑@r"P3~[UΖ!ڻ_\?&؂T@LN 'yηYV[Sw2#H#p=y}n! Jm^|&.c;<.*LUS~Ӊcu Jq.xOlj:F(zg-%SL, ի^}E$O.2ϧ7s3{1}u[(7Qr6x*^mȍQb|>2P2TFjkR荼i̔Lm8;"Rފ MK*ޝu:j9⒑{U,ylH/A+=OKf1+{ [OKK'в%Y =>It\L *64!w/& ?"B4z@^-QNX_b*)Mt=@ɰ<:\gCϖZ~*9}WÕ~YtB-߻o)3+ #pb7m;(S eV$?a*(G)mۗBr^Hkxm"-Ęٓ7Hݷw MZxČyTD'9#MEΔeރBLST+d fu wznj>kXizl[#}by(Er,) |[t3?}MZgQW"4TS^LyUh:oB#yhJAA, 8#wnw5:cj%s'χ 'iԝCk mYVЏ7?U޲̐@/NK='z܅(ry-`vg֦wL Ø$[ɸ !.M/$NVI\7#$2{SƌvxbSwAsY {]8ׇn=Z8&ܕum$Vu3+VCgv.[ܗ X dNfIOFC˭<Ǔ_{TƩRyBfXσ:D굈>]Zˏ`Rtj d8V ӜiD+ܓ4غ0]:E0 1 x Cao/cxu"Zۖ2Jec/@=I_4TI&bAYf-!,YfD|)a"[hrsUX^{jw7F f~?TtBlSTŒ$BRWvV?4ZʠV>Ƞ0*Ϝkǥ##r grO.ƺn6en&Dp &7+fm܈A+^{pTz@J5(Eϸ)z@)Hg@BɇDztaF"RJ>yb9а<[/]`=>U#6a^v`D=sJ',LΧ<v 8O4)Ykb۽CYj܉SM})b,Ƹ _o],? "}f gjݙvbvd wx2@tK V.6 ^2S$)&@Z@5YN/o;),@ )Aި騍`jw/C%=)&S}r8Äh~?.n"n5B|M?9`u,IAeudo]25~n2{ekێGwPVd@ )k|"|IuYm_nd.:}/S|-dP_/9BOGڢZnT(LȜZX;;&Y(˚AxBم+JP>*ܵ\l(Z#QS!dFr->)=M&y!y+'E̘LB)zF;U4svIPi~bFnzm4)?m>q<@zhYD:͂l[ʩMKxD;T9K6bIElZ/ZO!Ht3--O|JP.be0l3'&kPv,G?K9(gcEexjV=g27V9, ?[Y59k,q@ " 6kB?Ƕfpe|C98`eduR^G3TK]';DEsWbQ#/P{o|2ߊl|'НXPis@Y\Pf]0XON'b5|ZJ Cb-vᢑ嶡F4꽿^8Ys(> 3@RCfr 3C""z|a" 1YRYK2. @ @i]G437)kޠFnȔbԆ8t L@{2`BVo\9' BA'%ujyCWNC뉛R>ƚhX@Xp!a!o$>׫lH?Q3qP}Im郁tlsT\R~  mqrssptᖡ->wPFH|n;85#SpS-C*el Pۙ<h04mm|`_D|¼%k|)mx 1L>6:@6ϒHY}4{ K! uvaJQ;łki ~V}P+fee}`D+@RTFY iKب` lX4$^^Y9ẚ٭sG ˾w(l*5kɁM=F1ǦG֔~o*_8D.Zo?ˠTC7Q?9JrKfVȄf\AJ\p^șAG/BN]xhEdKS-܌z$^+})@N$[BtFL"$#=uzx⢧MA听n8M;|2 8#@I5|jr\,:;k >\,Gu!_k]3EʱdT#1̌ޱU$1yP]:1K%'k` q;=jm,Z+HvRTb7_p}Ӻ9MS#I +POZ կNa)PRN@cH꯵s ^п$"/`+ Yʮ&s <8vK4}O믗mFiNct}j/U8 l]*B4FmUAyإBGJ g.olto3 neVwMzV}yOx:sM8z+RQf?#R>Ofޫ<-6"̪{-wkysYR rZ6d_[pR+戇_Ҷd*< c|~A`hSxW i06E{;*@;(uyR1Gd-̰i1gu倊KyޤVHZH^kf z&QtwZGi24OɌ +|Q . \B;g˯7s"T#z[q. 1xK-l 0j V>-3'v׮h, 2 ݋OqKh}_05.X jZ[BmڻN(\M{c9^oRmn"@W-R!*uAue/~1KDn;&|/C-mí_/H|Kal|RlZ3ORI:ouIt69EgB2Qkm)4;!RkbՐWVxDSH[?jKSU uZq }tBĶ/ M͵`΀\\NgvE2WhԳM] Y'N?qܞ8 PIS&VVY%5 C!FEȕՉ5L`^sq!`ȶ7>awxc<O*y? L+`0FL'&1 $ԗ0)$kv 0=fad(b>W⎟/RlWxaLdCuew 8B]{~S+s+,.wsqK3m7Q2E ^Gcb=%+%PyS߇p_HEg=*)LhRJ۴O6Za%k5_wN\ ':4Z#Huiivۤ/T6|xܺGLYdⱳqQpH>C1@h1sesqޱpָS6`r!0Gt3!A֎ЀO0&ծh 52  nvs<io4J:1DϔrWDD@]H>^q@dZ΍E[Zonf<װB B·%jՠ.oIĚeXqN>hL!`T$81<23@H<]p:lWp[ôAT^9L<~8W`ERZ2vTH  4Ɉ<y#^7Uǵ:LJTW$z]/ 8xuV6s&oE[[ r(-o@I~}Cj4s5҃ұfXÜ@k臫vh W? %ϐWapLPx{ȐN}dCZ.ViE0 H};bp;?rm'eȆeѬS*G:R ^s|S 4>tgh?wRN> ͸Qsj {Oѩa3ܛe/V\l7hGv8yZ0-aMJ YVŞd|TVuX\ܺkٳ Fbz Zgʗ..,) i|6B[걷uٜ%$+j _r!=w7jiSy%p'Q}YxxB^E Y{ƧaUw}MZuVbfkɫ5(G> cL&!>_O@.@o2'uLg=#_fQZʱHTagc\,4U b;cXqo9q-:^v Uj/ -}jm~r-&EGO%e$]hP\>8=.mdAcz \k >9fsZl;zDXs&L6&ApH9 Mա̲sz{!( wV/]3(Ca(yJ)B)^oLfDI\MRТT,9kч<0(mXofQ :Y"5H2vq56};LmaSވS1WK_7X|R Isv`=ϴEEN ZWE.1pdy8]Guvw,޺iRVg&{,}ICg'C-^^ӛ-y"[,a ʟJ7^7lnJyb@Pre#Y76HlÉ9ib{_=cl)7p",>Q˷\79e<ƈrֶw{؋iވC  dS-n%h'48gBrʺtfܹ zHy- ,*•jM*5ԔWY<Ojx4hY͐F8m>e|-QD BTn׵󩔞U=}53Ŋj.`B53zOLRǏu} K:HF?_`׍띂7K؂r 5cvPWQ@Ҥ9Hsu -]Zq%єhAIKil@U1YtIBFE- V̇D;d iGbe?gl2; ƸbiWYl!p֡o?3H)YkUy?'TU5w2w]\SV8IliSwv/-w竱qDw߃a sSnTWK➋RŌμZxI)7 p$EQ/W4[:M@vf-m$mQb|}IIy+)-;bc>G*W).GE (i|0KP<⽋X} w1@>~ g[WY(-$-?.n өΏ`_cMw_R7> Y|lLUlMAVFNBr}Zf8F(-abvǶdbe魡"[ {?*_fS® bH g`qٕڬYDmC_ٺfWCa}[(3n lq's[4vۦ(=f QTnX鲳NIմ?BieVV; LI;࣓I᎙e!@LVʎfCܸ:nt6I2'@ 9F$_aϙ[VSU۟:,(Up5TÛ՗]8XKya,NrvuVRu./-=r²Grr5ɬYZ;S|4 ꜼLɻqk)*R~FG|rrn=uM*^F!=Sr:һ5Xir*G`"MuFeE|%S:JG@{JHN)~(K3Ch@KBI%26 }9^q+4(:[ GYc') +;> t#wuRu7Z7hqkAEOZ7(DxbN;:Հ1idEJ8MJBPTMq9/L@]6?s!E$Dƕck75*f\jP=#i:X9NU {DM,.K nUgNdCb`/Y'dm/2HnQ,2sDzn9g~aT)%L|BjNʳ=>;S^!X67{|`LTB{uQڠgc){XSjqDAY[83sf7#6aD>[;<m'Xey6Avz| +'Vek^N0 Xdp`41q 5Cë7)}dSp{[Sub~?L+6$xʰ:9)|<K3{ƒ|N۫I$h6^kHĠ+=@A\e;nDՈHc\D3/-apϽ\@pEne+nzpxg d@ԑ0P;> `jB(^mⵟ&AM' J&׭j[*6WhObwfٻ=fQĠ0&DŽHu'@d峋>=Fpd6`BcVԀ//j9. _F)K!8E_։0/kICYn'-i@y sPC璤vl.3Ьl,#f2EPs\kcQiȪng4bHezO1yQdd| ]Ľ"^?e{2i+7INNPA@!YG(-!Ae5]7ɟc~P:fڼ8`vx ̣VC{F6zKX8*ZJM}HDk3rkh`EJ:yYgAfDGXUfJpXN9+d' H/=}tPlBZ˘+qxvDt`꣩$:vP/Ql0QsSH9D{jkBKB`/S2e@xb)x(Wː?c (*}9ꓼ ?%Wz(sK)I)gpSUMYwBs7ȖeH_sg<\C^lCERX 9Aq %#WV<|bk[};+դ⡋рz3ok#n`ُpEWYC4"!]5 ю8ebZ T4'(f vtIte)RSM I%]>p3n@U\T؛- "1OGEl6:=^WYb[sVse-ۛy/S 6E5a|nơ@P_:i) #13e;u+aE YHaK""+.m(UG'kNح [Lx-Wr2]5,$XnpA\/@ [ /:)h()1̺6uYCXsٙvvx {# dᏧ lӍ,3FkE1C{]U4@NZqCFjdf \1(~ 4]${e׵qRd% Vy b1mB@uo] Pu.a=.^RXF'c`}qa!YFr_J[1tHlqΦܕdqԗQ.%ZCi,r#9x#V(Ont8³LB#xxzY|1,5䁁7鎂Uy%?jBOuhdrW>L3O x`_\Wxp%4>ѳ=C`bԙM]^ z/^MAN/agN亩T7 |4;,q^{`Г ]DJkML:°WuC\"U 6_+Ƴ b" 5; A}F{6$RIZ;;%+bzgzCqɳ9=XP|j.%eIC Q-_t-Q+Zd-[%ff{!(҃`_X;ٺLtW~X yNVkbƾ.=y`8Dm'R3>yOE5"x-ju0 1qO9:g0d_{V+Na:r>pƋm론[_ o~gaPb']u\}PϦ {ZZj+!3M'{h&Zݤv3(ѩ_]!2 iTUsXuOGj|c%'8?ɠ0.Zboch?(nО Re<*hzo[ >o7~ډ, -Js> C Qw7r-7Bb0LbT9<0X 0%Nj9#ta0TB"13wtݫ@ztC /M .B‹vp& ꕆ]۵rN'A D=͋5k%Qb> ۴ )%&,ƻi4sjPd+2@kzY `Eekr$$pDA&t11RL[YT\zɲґZE2wġ]p^qͿgj5 :ڒ0(Fnĺ|b]-V& v,jŬ -n#235}x$< b>fY`1 u" ['F-5q[B"W^g649d,?U~| nȄL^Fj@k& 9PL3 q6723F SP&=,_˘Q΍D4%{mEVϞw_:R(tD| 5j)_3Zul&CEG}B͑c8m945&lceƬ[:HH7wLK :!J%ʼ0s:@wфs@FLÎQGO5{䷕/L!^Lv5N~L*T37MJA f[r6AiXAԺ&-UCK,+7c-92g5s=fn`AT2ftL9I3)E"|a¯3[VLw%=wK8Yw><ψ ;Kߚ(8N^7D'&q(՝t)˓w(jm'xܰD¡es%rͶO>!Q?uszKR'XQ ( 9&S/dK' ]ؘ"QhWjG/m< 毧-!ؐU,f@σלZbdfK{D+=BVVXWzm7k- ?nm^Lapx2\ Чo3og'TEJz^*f))!)h2 T;-D.RU(shf`HuU&t=E*=@iP 䎥) muAEU]~ՊpǦiӽ&U|mgƏ,BcsI! AH)#|+fu\M鹠S8X!C 1Mj4n '8Wh^O` T7ac4쐗US3W0/l>P'4TDaI . VRd:+GϸGI @u[BLncZvsiM!DsKt)1cQy4.bg/vw\XxgKON2^)τ9ēde"dF}C>elO^VL%BYhQޙR}جdO}0+ /YrH7ưP08YDS*&ɮ mJ ]i&O6;5=0"`^ʊaT\P_(* 1+Fhlr*>Œg 3r"J^^!M㌭`fZHkeZt\KSJ!#vK3K4T-m /P?@W -2/?C;t\>͓rAXWÀ3`E)x$^@| %LӒ^toygH֔˺6 ,RAI;W9Zdз ^9. ](.022K|OT#EaXz}2}y@y76o@WbH3 fǒN (g2Ww6! X{D (4n9[{yOFwhW* #€c0^g&BprHX SZv_o-'YV[l[ ғ0`8$ dn^3/W!() iaDE-:e|9L/<"]Y3c9Z~"4Ê>Oխ4K| u0(xqyM4iU9U&-2=a]G~DO[{\NJ’倭! DFHD{-vR,j Wvq[kQeJsac*7Jb]3 amQ0vwHeL5b@z8c/T˸I2%+tAW! ޘ*U&o3pR-xϨQ}}N\שԬc&~^NZ@{$Ȁ'>t։l0h'H7u0ML@^+ Oxe-)>~F_O]Rmȭ4Ȓf3h i7Z;,x˵$ovdܖj~eqsX5o]bMčBգOUXբy4|] ͤBX }c.dKݼ'׼P)AM9J7=>h}hikQNjWߪWeOwR U{̵5NyOڠ9~8Nmm=>&=T"[ SC3C)]uZu P9:y6n =[DWdDo!NGyvTɀtOM18+b`p;Ȱ~Ufa 6XcGf{Mtʃc!(VxH\ Je$?&J#˾ ?qyf?Jw ,KY-yۘ.{9oם VҎ;5ll۝#pv&{6;jjfԫP8a ɪt|$pݻJo2{s!'b܀`?\ ܱWQ"5yLp l҆9ʑ`c>`TzP䝹yJFE.)>u5"rL RB Ϝ=6RC^I3ʱ 2NRP; | KV8nsnpʡaZʲ;ݲ .^ N{[y N/eI,GW:pmO! ߾hXй>U[(Z^a{&l+ϕQ{) O|h uӤ[?;o䆑< , \Nbqӽnk䨟$A{Ƹ}C2Q )O:BЮ+Қ̅-̞=/cCHlG1q⤟QO,?nb)n(fDKi`E=$\R08V.O|7TB4ȟHWh0TF$Y!Dh(\ރ;ތ 3F5zN,NT!r9|i(eZ~ ݲ8@ɻvb{kTBTQE4Y7{+ n@Hj} K<Ŭ m{d;q!yFRmoCʧ Cm_E-/rSW4±(n GvXj;CFcnR̔p bBbS2U?4.h2_t-_4>a͑4nؗ^$X%*,v+enN$$Dkse оt1\ˇvgO.@XTکv3q];)swELwG/ F?"8gKS9}+W~"R㛨:\R8Kb1e/HpїL#X}t"znV0>}{/>ॶP"$Ȍ76^}<dz"ZWŃ@!5aTp30.q"I<)itn8Z .HJI^9 'ejJ^&`XkQ,>bPQIbdvtD  >&Y {:+qF84i$ReH|(rH<'vA!¯P59A('^Z'vȣE.̹FSɀN<=y:*F"g;?w%!VXY;Hf&Vf$ ѿg=)B/[nyPyf qM8i"U,+ /_ 3Я&cpOٛ6wYg4 @Y!}mmHERoa ,X,EaJ㨄[Q1/d7u_Qaq>2$3Eo\)fVZН62y ߑm]I>52ƒG*ɚ $^ ]&:$Rh֩sxyC>a q{Q+qt4xxi33u7+Ex q0^Ó"xbj?TJqS;e;)F&4g%ld HDӠD0y -۸_3D(ZL[*{ ^unvdJhs/anhU!J8萛Vk䀅t1?vzLYt偁˝9޵]RX͓>>&B^dɥ{ӻOJ%z*%O'3VA5nmQK >?_ |cjj6^EL3&an$biMl< acg.-1͆:GᬗAOJغ];|F5<}cZ #ih;:lhaH|y[V#Rp쥸H%9Sy/ <-6]& ¢͒ ”xf&ɂZ{Dqk 1EAw;Z=?xı? P=L$,"h5N:ׅ^ҷ3yPS 1cK9 0,OJ}'s0m;p/{:FlZ8/>=XWMjK}*ku__ תi$HQ Á%^.aP\r86ZZܟÓFMb#+TlUP+l^@ORrR7r.Bi|V&|pU|69kCyt ![X1+jN d]" k,rtмYsX\M q:2w7!էMm)!0*[*p#Suh0YefR_8N73mrL!B eOʅ <18x 걨2,$A]!,0̾_Luffnf}|v?%CBZ9KvÖʔN3E+w"|#x=?$":Ԗ|1Z !EGL+XKx`*sb8,'u~p%A#_w0@4J#BBP{xz6;o(v;92Gjo7+Sx Rܒ%w&׍?TdR+վ O(<{zVT\7M%%$Mn 'RS HU ,FҶ=1bbt](ڿ#9#_D̙SV_#m5P@&0)2"86=['Op{ipɒѦ[Bx߽6žy/+)q&4.D A ;X\Pɶ-,ܨ3l/U\iuyevͷ]8va`v e[F {~# q"]S`Z8 f $`] 30*HƊ (cbQه_¬Cs?Rh)z)a8^1j5q-Q%|\/(W+Ծ|5n**U_M3D+1q z&4DILNӶOqDx78D9ȭ; ZcItx.Eڎ^|_/|2h!$.f<Ч.Ƥ\HRXoO6D4MȀٚWl _j%94Ue"~cփ:ۃ{1&Y6Io-ޙ.܅:VVx/ys_ٰQ1gqC.[ R94W:Bq7)kEG>JK Cj/6ne Kj^[k]?@CjBU2r+4 !=6j&!+(r&%2i0,la^ҔQ;Fpqqa n){uQ!iP{`ex8eN:Tu7k%nY-Ӭ8i[DʙT#+m۶fJlXb3_QjE;=@iG"_Ȍ폴_RQOٯ"㠵Bκ-jmCQ*LCFk13/F5JߙORg-^ϱi=kblh!zRa2m-p1gjnϨ k\z2ۄ}kH'Rp+)7.kT͋2/;Dg;yH!lH&,6&R%I5/ Q kI<&ilʫP;@Wo)d3ucGp*EoFcVpYfNPXі$ ۉ)~zl3 0 n:U#'w 5|O^%(ܵ)*b.E^Uv-/O?ЧF%VX@]JM8w$٠kVK%VO ٹo4?Zr;_mXSh\x^fc:Rx `{tנg81\?3ݖfڠω7OdzA&˺Lzo(w O7l&L"yRLcXEz_CBU#xc8 tr{#g6C9n:˷_c9z_6$ FPHWO%d}ëZuUndgyBw]3b5|ZyO֩BaX?v"$X,:O09}vfZ2i)^}/pT ?6^,vDM W#vPk?vLWa|/̂ W!L~9/̺ipc,ŋ,^)-^03 4dRx"i]"H˶EsT}i˭&fPl ]qRE}1`IlrLzWc6rŔ}LSWTЂn R(,KI {?EM<м]s4mɋpfG3P}#ӑVڑ'qHP/BUЂP/K=缫en29P/ڵ f{9#*"jHȜM>TXs66pmBֲ"ж eᖸ4ag[PkW*eL/*\H`LLw_'{49.4~lTVo-<2 fG̷ԅzʺάogl+a q@COIbĹ<~ӦHu'E :/4py~=Jɠ2޺#9d+'+:AoVf$DP@?:<- @D5%]}z n.JB%*~- -2-,-U֑V Ibe0+36 UU[R&û b5s JN8 Jc7%V5;:m{PKGlkW5VWWFť-vbDt*۽>,3ȷyYVM>%y@W#:ng(`ka BFqG=$*'YCz!0ܹv}>B& 9$ϊW;bJ^@X4vk"efC v'=v;JV)z&`ߏ cCwsƋzKRϥBBk0T]°2AvP~xK?]%M]n=rVno 7Le!OuLUԇ^lUnE2^@v܇'Z(U5jz9}g8!WTK'();iU*ֱ߱)'demxf~$ҊTJ:D=y}<"ՆLÿw{nrZwRNA(PF$Am5+ŴOʹp%E=1 }2nK-Q˒: H%+#WG-< fm&/Pl}q (ݟ $^ mƴ:u\Q_==E3-p,띊ˢu46@Yʔ6:_L/j2JV)-][}# 9QyiGAm+ݷ"__3l7dm:nl̞\?ʧNjrNXydذiJ v I٢#3? *PiSz[SyM)?Xؔ^KEJy"B *eI R"\ l Q QRP9Xstd(X -uwxJGϓg/ã4fm!"cr*~^> OI˦ hcĂ1cgznG9MWd0ʫikACrbf⢶8D;ACqEK8m ) ~yѵsn=[)LTǛqM\a僚dA1ѡ(\`m#&`{}u ,ű~؋? Tͻ`U5V8 4oU{Y{Jk.T B?ږ<^@]#Po-RĕLx/s3nS@>:daj>mAiFp&6Q5'= ,L*bKO68AVE'f,dpҀ^5sbOieH #L;kwW׷uP`J|Kl+cl>,_)76eM.37$nK%j0{{̊V^2'Q7e8rRȽX =S*L'.DjyO P\B1n9Oϲ ڲ0apܾAH˖(H-DzGX5~\)j M}&X|T7UO kWm'KI,u2^1ijmj<d ΔvhFٶ۟Vq|' H(Z}yWIEhq}@c7 [.\t`YKnwUsUw3&\.p k\"3%2,g c| k,=RZ-_>-(#צ ڈs_;Θ *XajT#]}֣,Z&t>bJ z4*~Ȝ9'14l0tSs[ŵtX@{{QK] Xrعon6fl \mGubpQ|cEl_>)չ_7O\6zJyƓH.#٬X0ғLveCܒqK7FL7J4bU28zЮ!sy ) n]ARD4=#};Bd|y-Ǎ-WR su5Z4DVдݺіo4ZV>*f.zl.6|~8)?{W鯁W3!ҁrVu!a(,=VqUΕ`ƲVPv]G3Vi'.nS+_m1/'&isG FC.эԕIo.9?1ZH.78Rz#YR#{ȨnY {Ձ+̻?iCCDf&EV2ȨrfNՎy ﯺ&EcN~VXNSxljP~3kZuޔqjV2VCiu'M姣t7,Cϔ&ş@Cj9ަAmM S픪dsDfO 2Eߪ>kHeNݢܒv'niJg6:O|7ۄar&c&п'>cȩa#za<| "7<ڍ!q!ʔN:~Ǯ{>pcR(ER`wq#zFFy jT+ER1͌snwb48pl _9M)tjGI3M=>Ƌtg>&95=!b^Zv?Uj}\?lT; |k›۶.!6b AEPVM,~hH Nַ\1ޣNrK5߳?h&@,|]2/ǀ!(#K>nHv$xcR%Pj_Lz^ J;CR7b٭HI lY@^\/S6dĐCX\`o#TAi6p@ jdiW& lB"/!Ua{)oU5@#M HUĎңw \j/؋m.Ǎ{2Q:[[;}D%h?))QӘ}xˍ$q< RߍuV`NͯQ_FRa"T)PEe:qmtPX)£)"kl-L@ǽ^YA㝖PP+eA4 sJ0$8Vȯy'Un0d(^ZimGr{Fb4?5UyD#b8ugx1W ?֏?87MBǺ{OHHZ d)m]-~Gj2)۠-m2=" E*kQ6ZnAE>۪TG-TW "|1B/i}j1|!q^lxW^ Woz ] !N:gaj-wZ,ދ0yKqrMf ?LOI'"xF{g+P-#_/!-;v?= UvVײAJ.w;Iѳb\B)$߉ h!QzDJ]KŁP;O9XyenSRpa@>z^ʭƓϢXv%3;Y.@{:Er_YMs/E 9mZ #:J%)!b~ri0Fo@1xI 1^"f Rws.%U Ѻ+a9?o*̸D 1$~ZTOfJH})b?r̗flC,W sL9@EmNg6nj>|[)q=1~Fhdo"2= KWw*KZM2[v0v^|Ip嵢72ƴ}:&fЊnF0;ǚ]+ ĨG7V5%\4<;WǺH6(?kƒ̈́{ 5t;E`CG1Gw"q.8KFM 5s )iŮzGH-F#7uMgKt9鋽Yy;$.wR/|:biKt~;W*kFUb+d]J‹ x{Nrh7 C~xПalh~PV>ih6C 4G[ptE=_lo~HFg\E152* Vh6~bB'J"S8J m#uȭaL)i~0L8EDD mEWr˺nWNa50::PRYNHJذ׭~kcRRZO~<0ha\wQC _0 +>&vlX<~"PnM#j愸Ts=Õ98{N^zSPmy5Kص[u)zw6y6{ @dѾ8n.| )S5ZåPP],ָ=.Jc)ߚo( ԫG.G]Gah ¢A$g?vUGˌG}/PdS*CylG%ksS?ߙ*U<5Х -@qIv ޓ//ߠSH- ԣ2{7n'"dh(#xGPV֯VuQ*%_Z@mXyc9gkRz8p5$RlPb|G4+f7d\o{o닜kEɟidE^mN 7,pC ldiw4LHR0%8wdel=hv8^2Tʼ"|T{d5aWxŊqfVَipAtOd;w Ir^`jYGwZTJ,VR[)<_Ǝ/N N['+1`"ݢ!%["Nak]r =tzpֲCM e28}t@$ p};nJC/da5_sg|?h# ^Ѕ>XH2K#V:IUT٤m1<ҥ .e!u=W>pN䐂oRh2PM}0rwq/8"+οWQ!f q;,QҔҒ` g_@v%NEωjX>vaa_-Sw(/dUaѨ2AkA~Je(,ϯNsD/`} <*EMqns'}"]l o0ӠJ$် roZnTXk>oY, J5CuD;٤#DROg01%s'ڿoh:+ݽQr< Q?z#YUd[!@81BͦC"k\K|#vkt\GߘMA5?YlgMn@@ yN]ìwo kDq!Dt@]S5 XgxSڊXމY-($[7.``:ʍlZ4q[~[BѰB9%oF$U4V0q Pƣ*R"r )(w3'{"Fq.xrZz,8k!R 47mZZ@7`6&a׬Gaa@T:5ȍ^0VLp.ҮV=00~W~Ӄ6۬KG1N! }Ya2yp,΃^(vJDO=#kGӾZ>?$!#2b主~IBc7I:oq&1):YJzìs<y^Xm*emJPhS E~AM1Lv@!CTam^+uI+b >=\d]K<(ookˆG[R灨^*v6nNk#)V,'}+Fڿo'ϟ\n%&yo3B_o3<A'_U`8`4AӮ&$4SUD3%E]IS]^m~iwoB8Ax{тx $bV-3/Wk+`'xr;X Xs$X*fQI&>z'R: @kQSTm~طj`C ;PON wZrm}FRՏ0 .yBXB"\$w3.K܇"e\ {?Ua_m~1u3BD-ΥSp.Um:5ڻL Y'1Qш(-NÐ:Fx B2USA$VEHzXYHTY,<]t#qteK|;+"?jwQSVЌlBAK*ՊEU|l)vsb8'OU">S.0ac都| rJdX[O_#j1%c*j;-_sNh%Z>sEAX ݦL K氬=unq~ApZ=-P>Q~DAi00AO +!;b$a5C@.5JuSo.IpdCul-aG875Z $PH﷦I. 䬐+;0TI~l>Pw#UE; ;!z]y[5% k< $r5/cdT9'&dq累 IoXˣD3:2?$\G(5""C?y1͔72@wiv s^XzV`1+t ALmVUŒ9E݂5ピYjr岙SqL3[V#o!qv+o|ԅanGpU:GG A1mN˵\":}?߸ZJ75 |d!yrafIU}ɰ IX?𤎸09Ի79x4apzx [NKvS݅q#lր`A8)OQIZS>oX]?MLI w.,TJdG-O1 Hس͜D(f%HҕӞ,& oFDP;‰θPqtkwD@sƟRKWM>p9GuqX3U"d5Rqk&ϊcfv™)F.5BcI6[mX@2SnL.y1>&* z[;V5A =m5M`)zP# m怄vaxg AFP5(qޘknWȑjsy[7cG(X;@H6r'blpj Ԫ&ȘN"""g"o}0Qxe(Cp+Y \ o @DWJE9Nbg/.NH;Y?d[5pTiJUȗM5ދ u%ewƺWļu>zg?IrE"MυLjѵh mPIr~ߕDD)p1\g@^?>&h Ed*B/-q_xmѢ^0IAabik4F`#'/&,4ڕM߉?ޑ Ѵ}oC}@KisPy8WS|70'<{Րh*1BʎmƮUnp|w|ELΖwIIM/u"hMrP n'KƩ xpgJl2eO{ n^a 9Iȯt8 v 3M~E1+㗥QύWZr>R`!b飉 5Ж".w&1Av6sc"yy["X z}C6KLOہ͹$ ]I_- C)D]nգ!Ew~\T5wv28MYdIg(E.H-Jh!dz 34e!AErAf˚*) =^w8j}Z DGo  Nfh+Bݍ\236m{<MhR!U9)a e;+\س"&~hMNBn|FR&1|\ ?]:תdhKS*jQ$ӽ0E4g,fٿ&Q Sx{+n%f$եm)}fԐ_xc'#9eu7drv2Əy#/m. dG={lYDŗ{$VH6A^\HǏD@8POmK˹fC`0mq|9>GGaCů9H;32h9 Mg?%P#6م+Mwz2q<`-bZH7o"IGDJH1$I4%Xs|3}||aK Cיg2x-d1d47}2KJ;> -!؝pjth&pf]ZQ+Q`ecu16gԱb\Tj#$_VkYMXǁ8]AG n@bSUƣQ Qƽ;j" <ƺ4Oy*t;p:ᒣա=<no:pfi$3>F[gmGju:K3}"Q6w\[FEýq)k(hPBR(zuCp[|}qr,0u{?;6g1c:UNvl.=ri|oi$d2fP|q"jt"QJsH6z1^7BD;IB68N}CťPJ{1HrtÕQ<ի"脁PӁ*,a<-㾙enɘjqM\jLdpLmyT,^4 {XW=4y:Fx<\$Z&;~7;MtoPfd5UfA+48?IAfX0UVk@pZMG Ȧ&QCIǧ.m}C 7CJ"qkx6+Y?UU5q2$JsV2󡖴,qɌU떀iuޞgO|Ƣ0rIͦJCK~ʯ܇t){qr/r2@wœpRȂ˃yq-4P'OTR[eR/c\LfNh㌡1mP+& GphH2򁩯s0ۿBx(ώO:mY%"[Y2W Sw5? 7rˈ"cH.IyL-rSaf[(]Ѫ|>H;RMpi~]JEABkKD.T'B'`Y2ڵ32˛aè@>%O^1'p>V= V2ܑ_h7ex#6gȜsHeQ奸kGpm\7n,T_n,B$8&^*:s%l-kR|̑O7W;qJ?f؝[s׹[?iNL%{+HאXHO'\n"h!e 5 բpb{艟J c۔Z.oYcB]Ir !{97]\5[Qdof!Nsig4V[p> DyNxޜ;LW瘳UJ(c`wu4Jzd^W.#p9*t!B k )huOg09af́ Y;> qi_On9@#87I "Q)0v=Uq)HY{:ֿ83$%Ǜ@#1epj$5X) )@7HAUPD2jC{: Dju[*ؐ? k fKNmY΂ޱ!HYRMGCɨvTp;W<0z%=$&F8W&ĕ"lw%)ƘGlUh{]Y ·#w\P(1Ҁ11w(Łl6Sɤ:KC!W_`<(x=;QZ< ҂ dݤi> KJg9 AۉA|{hqH׊6r\,/`J2X@{5]tq]5?;hO6kYng) k3Qɫ8"ɛ/7ۙE>Nhf,{[\\f5x%MBD3 !KhCc+=:R*W`;gGIJ`k֋9q$O#CCyHw"0LЫ7iIE8*_}EJ 8T\zpaJs$b*2 bJrAEwtMEJB|rJX"8T 3-?3P^|RלTy;3B|Hh?z_ :ȅ; %Z RH>)rgekTB̌*S̭H9;xz<fV*{;]ztҁC'Exo(I@bmQ!W Mdwɪq<犓 IVZmbҫʔW#SgM pb\;FaXJy+y$ǂxzXrьp>O3T9;)k\h)q<ˤ$śPMM ݓ%m1E\h7 W˜YDvIh!A,"F!Ȟ5e'%[ڹoNOe(K :טW0Nuz5NWM k1A#~kY~1[_S/2Qatq."o>btp9;ſVR'ўq׹FF|y[νV-)⴪??v|-VZȋfx|yr&㿭wgrڧ'LDŅlOIK1wwݙ|.mǐWp?_,V \NSʕyܨVJn8dy@lCY6XP T#t-{N1z[N׺J7cp,˭Г>Ѕ;[R.뙿2&mX}28L8Y"$ޒyK<5^\1,z|,DKj\&,?QeA;5( ճڹ:|\M DBiM#S3B5bML$ZI>03)Oh.qCn-rSk :CC,@c1OH7BW:m\{rSk& ;!Iv|.[T0z (cg8db:-e<0Ԫ*<ӦK]ZWgt4]%|V6YG 0*c*Xk=;|x+YzYR0cW1 hK l"ڵ\( k~7%kʉw _S48be`ͧ!h=#n>rOQN#wþRiFxK lAe1g߱H۴ҩ,hzw |X8wO[fK&1$ 1 ##e;똊5*A r؅r8m3.yxxdj%6SK`*isl̺/+o_[POU8bLFBv:S MF39%+#/y֮uaE!@oV4 AH  (̮uT! t~ʴFj;I6PD02SB+ X8wf7&Co\=!h>t/˼'vݚBӭ]~Ω 'ekhvnE!%.Eh/R||c馝8PcEPL3Q&.-ծ/jVp,M5zz4׏23YdC2{w$BN,DMqlܠ6w7 H0 V-:_NQcF,콕U~iBgHF'ͪYII{Y \6 Aވ؆2*6K|*, Zg-)4h;X´Rr~b eM6dྍ0 zr ?&Yngc>C>Hf.[q#G6Kr&.F:Yn#B0_&I  i&ٌMY_- mʪD+@ܑ) |A4v׸;}<".pwux]^q3i< 减d0?Cƹ+_{`sD-y3w^m/gvuOWA}TgCms=|HҮ%(y> G\wU+7Cb>hʸQ[c\Օ"0:\.5@_A ͯkf& |cXm}}Mf4'6.@vq\ŝyӱdY!{xL/[9z{OÉȔEmniÅ ?kGLi%Vxa-I˜^Ӓ{0*# \)AݥB&]B=h .2n )%=^ 3Ehip}s yOʧCajg16g@601PV#q.|>*۲Vu){d2E|o|xXf| wrUI ȋ@1H}Id@_)=cʼnP?  hQ,џe ;T T0wQ\c.c7 W{HvVcdME5f)")ǝ`M#i3pf7nvF1\@!\{p)>"(;fBOz%F&TE(^lRQ0 r,AƄʁ{h ~+4 ܿpٻPK s趉J)h9C3l 2eK^r[Pkb #+[D?9~ʬNO ̞t?ƕY6Ɲ^T-I$5[.ڝHmP%jL̰Xoc.G +yd1b! GԡbўIΐb03WՅwXN9ةdnvn Ɍwʷɝ2,l_(!n:20ؓ|y -t;P9*Ї*P|%:`u2=[ƸX=<_7G_%ފ{L<<<ؽr.8J/}jpc]gBuVh&'·hXg*<]KH`Ёym.Z@u%xt>CI/6lcs~x'ufn".ۋQm oFŁXE2Vq"vm$ȝYnjn2"0^ٕ8x7RD lvy33hr9,(_/P AvR1Pڈ1`BJ$!đsnJ^uzt|g#ܦ_S.,&0筎VKwmϟ ˊK^漫`^ l$AbP8vzч7GUߣ&&bm;?WkU(˜ 碧f*g!Lֻ-z@^XyqXft@+m?@= rCfH;3 XF.K0#ICe"42M5ُJsf?nR-P=6ë0וuS?բgXu4M@ %kxb`#}0!Q?kǝ8Hظ%Fecﲕ\Zn9Twȁ뇓ʋTYZȤ乫R{S4]P),(yJ:{ٯSAJzoG UY>cK՛Sxm[0}c:5ؐP6$EJnW})D"^zO8}a}y%Cϧ:F,Nig6eMʂ(~tFKщ{J?QLBU"iUrבmTQdSGdqi2%@mc(3;CUl )d 1uyR$O=xҶ]Skε!U6jF O "(s"~.<"zя TxCz,um}dЯ;juPTCʴՁ؂Qn&͐h'c1O:DJYH_gfޛO6d߳z=K3Ґ@JL5?C߱ +QyQpmM:)4UT1 h~pB7*rTN}"ذwVg]ȹ+.m"&iB@edG3 ޳|:7\,^<n'- "R?]N\C:<Uz2(w78ƦZ4ّV'wV^X}h@$ RX֑YѾ3mgFj҄#SS ^;u4x,tk뵍p,-+zޡao* ? D?>s?tE9E(;b3(ɽJMsJUGf 2$1 "_lLu>Z";;[!APfff@riʺe@ɺ~RiQ{s~û`'%@ޚ~("L>nJE#+KI5鱿k&_@FSVC5!. _sp9ˌR6Yo\#s/Hߋڐ'>1Y.|k󫱬)j~%H?fi 5|BxԦL$4=njLY']q9lja<:y>y>Y+%5*Ph/r_PW21ǫyHM{438SRl y%)`%'l g&}C TwEk}sGl?CTAk9 iǾ~\v{"^"#wpܮw>s,A0wЯKW&A:;|ΣϔH\X`s-U_fW;yJt|[|IV*9W ofo"LgXSӿf&A17s D^ .w'UBղ:"~jQ`y6]-D7vF,B2ѡCf sH$-"*a i Om {jMX ёZF>otXu#t'y7"Eh 648F΀ғpjDb|&qA|%<jhTS5i&j?u9l =K]qmA>hG|P63gaZ*HDϏbR3]$Z_e>jTefrR}|g -,iM>fӑ?—EsIB/=1`k ʡ.CT {4̒ns-y~i3RexGNm\㛹E3-eׯ7r^kH*b:=\u4`k,>o "IX=}: ˿!LߢT)@ovUwu+9ħdyylŨ F]P/_w.̜ 5f dӫStBr:䙶=̲FmBzU՜ T p9BeLi,!_I>!𞝜yJ"0X Rfui|ё/jJi7'Vʒ%V) cwmH8$گ:|Qlj ^7ңX^.kKHJ/ؑP@0Nr|E˜!rLU}*A Q {i?c߬wdio yIiWL#IBbۂ*ڐ&9&a-DkQ脈L%5v`>M학T8 @Z@˹xn O5xqzFw~z%kIN704cF"6LLUFLiN(mt/U9A,ǪWɌ"G9ce BĆGO։.Fע4َvɻOL}(ʾ^k3a*f,nQ`d?xsbָ6~a"ͮvh)ja:VFnKTOP#:yI%}U ݘ釦 G| ̴ǯRIQCyob^uN^ \sP)SxG~܋’^>>Pbs8"đ͘u:ƝrSzw)ã^:|FvBҞ{Ȋs|2 %$j TXf-qٝHa,Tp)0mux2J.V(:'cE`z]l6_!߬I3 H}A_ƙR+p/xPH|b1v .g#9%\\t6hSF \Z::m'#W{ xqYtdҢ-iWƝ4%(?9fqOQOb nv'zW!LBjmn?~mb }‡~2sKsI6=1#*ޞG_ E}CE2 a'y qQgsWc%u;Ʀ?a?IB F13s/5}\m@19Lz!l,N dJJtOˬb }r>Y Lk|6_l*yiOYdpxyVL"9. xԔywbXSGS'A$M Xa-NR:yt{& ޡ臙5 ˫*SRjGJMYsQ"\زأjÄ z['ش`˟魜( vt;#O\# .8|׏Xԛ~pml^'s|]Ađ}9FZZ5/]4DGD4*x҃\BJ IW]pkUy>/dzG|kFv=5;r[Ey o,ZF^`"k"tἍN# 05`ޑ.`SugUN Qh>zO0}_jeqf D_)ntBdx(IJOQH|wI%ł E-V++#ToRKZKk746r|+fIl4O@ŲAݜ WtEJ+C/ )JɑfjxaSa 霂Q Il7.q#R Iy<趗yy<#KeMϋIC]DT4pJü1\5Yh_)ew)dJO^3jvkQ x4Q£) S(=FMvnz{ nPy%[+fw+f3?b*BxwiUuur70aiISnp_a/x*T͎LQ3I'0 >>^k`Wp(lL3c; 10rAkXXT3=GDDUW/e:̕ =K/6%ǃ&EB_D&=- AߕA6vT1D'Z$\"nKAD\D8U(cت  ˉrևڛ'"'kI1km&@h$!˾Pu ?6W'Rɋ ~ /Nj[%=岑{֠Xz0;T# Mrx 2|poSJ^l wA庼6l汎ʁ7[ez):v-lź۝;'[È@Fmj} _| q[TR E|;->M$IR͇-'Xf3A1W^= y5I-A Q>کݜW7Ղu삉$:\#x"mW0$BUT>>xx A vf <ŰQ$iñ厇bIp:%cu?\wzGv7 jVW!J6><^b:=V?>ADv0u_~^9/gK e^!Yh˴m"瀜%??|Q## ~6BD9DP+8cU[#j?m[ׇi}Sl0kt #;%c=.A ,B*c6&PC,Ѱ ~j~)x?4¢ YQ&>\YdIPfvlW?KPRpR;R+.(W|5cW6ctjSښ%ቝxNnwmD yU/~#2zӱB9)oLʌhi;8Wi6E" DSZ+ ѹ.BJ*ðb> <@r SPoΩKfoڋUYΒ {\JmNJz`),*1P Y͆FUZ^MZ 5zOom  ĂW)ɷ* fg,p+{-U!v%M`e&Ӗ#K7~Tc6G;#!ra C_Pj4 x*P+W!#*Iܝ<7ڇL"aQ()`8:K?6 (O)|O$>ɧ/͒Qo+% 0י7lS[''CԷ$Ć雴A:7=[Y>mὙ|f|QO;ɸQ"Q `- +^l3= TAd׻*VZ*G)s礖%۬ݎ{)[3#bC6nP' HP+/XnrH}W2L2V iU_ (uRYhv@}JtCJS\ +y%.W=ŘF rkHkɪN\@䏬w5 8#}IXq.n>2AA:xʻHfuCPٯB{U٘a/^ߧ ƃ[BFqe|]0q}q^_z!yڤ֞&􍩽.&ɾn/pĠ!ˑR,Z)-mϼ32c0.CC,i"^S4ҳBm8,m30 dҜܐR&V ָuHņH9D7@?{a{PS0+a^PG1uu!* ;…W;~ p4kD' "ʯ 8nt Tli皙4O' #"CJhu9ZJQn+O&e]w^+5؀3!6]``HW8*d1BYm9Ahʱ7dNX:eEVà7lײp]Lݛʟ=ذLxiT l1+ >.D Y>z.jNr-4 i=j~ws:B1D~r>'i(cUGӕm *Y &eF5v] 9rD-zǏX@kv' "RHVA$~Ow q9TKK6ϣ`@\CR[\}E%r |qi@6|j"S4l F3 g]@1͔{H-[RL0r齉fuC0h ;>276X HlS{=/<GCs-HU~~cHm4F!edgAq} Ë:V<,W6Pap-G:8rޏW}鸢?B]D(:RNFĽvn qd41_F S0cM2w@-WXicp8/ǑY(ۤ]um}~w.]PជVYXd5kÄ E9kUk[gg [uOMERյoԌg! '̜a+'<.u0C2hB"ɯ/i,:O~! :xX.X׿-{M31lО4la=;5Jɑf*{4b׹eqڱSJ@LWnQi.'.\6kq3m,dMVS10nqP af@dd]V؝d!(89{e4C rɇJSBJpVVZ(I1=1i 09@92M^- ^o]S_nxtsA(mk,޹/~qTqĮi"J*lw$q'|Еz~$-D3!Ȋ^eam%9ͤRu)ĂLoopE@v2rk)/.@ь`jj(ɵ1XڸAFSOqewj%AHn]dBGkA{FаolV?)ƣC|l#oN,QMoQn35ۏ(7n+8}*8>Z| ՍFaټ/',s61&1"AVqIvY?.fr$<ٔd$.JCj˧|)]yw4,=X@쾉]L{[Z 5AT A2'qAoD駽g"` or̚lw4.ސuJۨ o&, @b9(\Fo;QϼF]̸eek\de!'ȼWbj]1Acg[ x2umhY+I(0FY £m_+_NmH U|$/eUa("wHZ Nr(8<bg6m\}>---VNHSldEn"fev @~)8rK\0_xsbMg&J\UJ%ޒ5Έj2K$5F#]b/CGj?'SsP\t{|iM"=!XſBɆ{#y]pMD 9c Q(uQY[@ >̐:$%\~PqyXk}qj)EV5w2 ]x_ F)g%cS6Sy&[qRqv2oRF1?8ȋ̂96ˤ^@lH˭s"G3? *:0sƲޫN53T&/12J)tCvQ *?z +O?цGB#P5=t8^d(sp(]@UP =o0s7a +9h$*|a?1I̢I'Kf &G% #8SP*M{.v@U ҿ=/SN>c2$li/{-p=>ǝUj؜i#h"ĒraDJq'̎99Nw\@,|c8T05_rknU.%=dm KŰ~Gl4K{yUB'N||)CUBPdXPր ]9DM1ac~Zpq,n"3m"⼫2nzF-KDtՌ;˨ᙽl;^":/f9/u7ى\'Ŕt1F\}Rh pjmL> sR`\7PPggIoӠ=0vob'['ճU@gVun$"VZ AÓAoxi}Ӗؐ*Ӿd };U~eQE޾>Il$>Wua;&݌SvOj|-Xby\^4S_ުGT}ḉLqk{)3\Z\AL#+Ȃ`@*Z0Brg( w݅Ld+ԣXEa )zԁ}܀T% wk]j8朌,$”0ݝ]{_ y sEӳ h<7l|t=F[a=1ʴ.ùOzlP3wk%&鴀sʲ9yjۖt/ʇ^B#BoBtƭ7fS)Un}>~F{;tc 3ΐ=2X6\n E*׳0jD{`Ιڪ(Fe&\5lAL5j9y2΄)`KpkqLnr]9|tiKˬ1j/OɅHs7%-+RwxpSQ%o?4NZ7Yk2;(F)fwAA5b6LJcxhM`5~8aKzr͔kG6PՉrŲ{)|VءrL"mNUPxK=1 9P*T.8sY]y@'UJ" SU|[ **P-l"Qbx |Obm, tDLJI6+5h\GgdJoOh{OĐ:@ @rWy>oIpcre\6%D %[[q[όVw p|ażOc7xھZX|YtK~>b mJR\X /Z{?RP_KްueIJ wNF¶]JfOC6Yyf5'TP"Nr|vz>"~JfwkM3ꎜ]XOJ`9ndcrVt^{ 4EPMp{ \]"ޞnܧN`\vpNNG$\7B̨'Wvu߁W ɑ"Y oO~ eY<3Ц'ɧ^8#iƱW]@rQM fn _i bK2 qxc[k/=G<ā`BS7g#'Xd{+""VeݳWR*|E⋺Do?kHLD `Ďuda+X@q":DikÜS63NV>ٰM?øfK#`+ e 0 -[묳Ի6/e^;v707{d<[{[bdZfBgBwP4a-7 C&omפj&dΧd*smSCqE ºj͑R ҁ@ʐ'f[x"SŌ;Ih BU3x3_2X*KMTP~M3T?CF)r$42kG6"W=C6_gvo~CeI \'`8)ā  h`H`=F8IΙ֢ FR2&b!:И`l#qids:y5gXuDj]QJ#B5Kç݈,FD8.?seRv֣/ \[FgP oNyKʍ͏X܂~#ahC3hc q;Cn8w19WcWAȓb"~1!\j9t-H|SrG6LHOPJkⴹVaa:a o QXjկ`)ҜVB}3PP1h#%cp6=l6t(Ō3Bt1l߿ E0+UQrJ9c6G$K__$ Vq/ vff`{gUYztH1Fayύ*-2 |m\m[Z@r,Qn夽;&C^]'Dw: h#@rC.gO:.;",B7g0\,* aS[1H$QL@5b,mt}`` lpnL1ǎ ;k1.0|HKGH㠯o"c=@QsH?T7ao;lʉ׿N?FT@$\fS~~4R~R$تpH8^3Pt ڕXb h|;ID=y6MO8;\׍˱H pIt@h`⋏)Nha\_8=MP Sqߴ~:Ȯ.6ht$ըmYf q>*G!sQ {gCPWڢv{OwDi YoѕP: DmzȓЈϿۗ  WG`y L{]`1xcHl|EEȰ^,VFg6ǁbS@\\C` WitU'8Q=[.Jnp0OLݞ+ I9'R-Bw`Q.r{i8 Sϣ YG vlsHpF#/t6wep pl6{B5(iYfbﱛFd;y:;ެJO<r  2HԝĬwQ! oԄEڃsoQۅjx?^i"1VmikH4"ʓ? UĘrt<_3Kb=KMO+x SZvN%g`+RYG,+OY_%ĦmN`4AFiʫ=E2gIOq)J Tڏ2g>\3jZaOڽ-B2HHwK(Sa4s9 G~Gڿzէ̥cLO -8d7 IĈ 8{. 4hrPGQtvTMq"0,35гlhfNs9 P Cd 'X!VVka4\}wM ۰>} }R!_ANYx:$/O}[9 o.wָгߓ)촠۾N$@L Q+:Bs`#aL-/}XJ]Y5?',ѩLN.-d+p"kdx4JFvI[^+7,9EV@8Wgp-LDp"XS_HePO7+j'˥P{f;!pRyooմ6P-H/?JB2Ɔr%J~*51 )-{\ .O?x,!{!>xB^G#OYn/F[${>h)9Jŋ7syt=*k^H ՌjRߨMoE0OXؿiJ7?oZhClwL¸0Za] ":Vs]{=ؙ,T 9 E4c/ktO{sC(䮯?D[,nbp=lCG¬z2U( D g:8pß5ߖ)7wR`-lFѸU'n}"no[&tQ;#ؒv_~}FNa4-OV {k:= iSǩ잸#g1۟DrNaعݛC~@G(8۾-fgTt38Nl8"nln_Wju*BPTO Tdr.-%҃lGDؘ̗?rY!9,pX]MBx*nT4Ba2 '#ل aƚ tU(w 0zD-1x2$( OPy1|?_7̠jM 1JNFz{ TMjuyk&O/Ab[vfr]_+WbC`?!o6n/U"-J1TH !jnKt_νMb;_5$MWsr.Ɉ3Ed,3^UQM4Kyi$P ̂,)Vַم 1%J)L]`@Z,:Yf1Wf DLa!,9vJcǶ$H8cDk頋RQd4 ~g鴞Py ո1Ȯi\i) :ܳ+*['~%X9lBԖ xm GVn]``cd&Gp5F]cCn܁Z)Ymޫ܇[Bс`tos{^6Vҍ_;u|*%| d̦Ƞ(/(a E$c84Q|{=$9$6C!q(s,AҜe "_oyMwނiOTh*}ׁmЊCtq ;fuƩ36,v]##[Dz` ُ}xb-4 0p_ Z໣8j;/0Y2]{<-׹"O]@`c݅y:DX!kɨRuLOfOL~?T~F~'r|PxWds%`pGW dɂy ixA ?=qX?DH wB,pջ+ˌE%ZKqK|Nh w8M*~q>U5$-r6њL0L5JoбsjdA[b_J!“+_ 0,῅1+eaŹ!UHۅ3ޕ0Z|ءѲِQ i9 :n)R5RnM>e/m_Du)%@X*GP6"&I(DG(hMHrdmΉcܭ;ĸ{k RXLE|QJj 8WWq.MݽͻcJ4&Ok;HEBOf lŊ 8bȳPFS%ap}1n )t8'U%e屪$Omv,~>!uš؏@:f[gT7ifW\QgC7~-!kwx)|ziZ?[k&5KPơJ ';}Qdi)ޯh9 zhHsX)S@,ؤ@|-q|f{)RU|U゛RB4;{ u~?7<|sgp"^_\i<(i.[5#3ĸwh x%S=Z%(-:z׈])[NJ'>.Kb7fuvX\>at5Y^ϸP6Z{d$S:v72": I* J&9O;XNig&%1el[^ =SֳATkx}?!wqJ{aZAs2/zD7~w)t/y׾l_@3/啂c LkFGVTqI3LP؞Eh6'U*!m)|7rBA<2(/ z`KsЯ@WLNk}3;VHؐqmT #˟Ҿr1N񬱳67cX݃nxB.iw~`o[g|jZ~,ۅȃmp 6fO0$4$99r[HYZٔoR& 9E5t܁ ˨#^!EcwۖwI]p5Āb^LR*<!ׇ- k;Obhp V,ér>o!D!*HЄv ;z X$bS9 3 zs,h?uS vK*2W Π# iIL;wdT]&e3 )F!nƍbqg:xP:J e+#I i?J;s^x߃mDKrj"X4Jѝ 9 Ϣ} ʓk/!kX:iДNf쨲9J^:ovdٶg_!9/0a+J G1Ho>|SplqB֜gu? INR>ռmp/#<']2o :?1NҝtI;ys\JNhzQMP𠍞xŌ ^mPa$\I~Xŝ(щDՌ81&<װjWqɁzJbÎ٠`>6bWFIƴDv%AAv*."??p'}Wџ}?놸n{P~_WHfU(S2PxwtX>U^W{[|)!rGVoM^p5V:tg$:1$T>gAW2 r+BI9U>z/ ~Xx~QSfA0 2aXGGS/֝eW\׌?i/VhĖXIq#pC6ʘf?P4M`,};p\Ӓl눕^I[H;5cEQbObyp3KFHL򏠚1MBv+#%ñA1ώdBM{w1S-LO?kz!9h/$%q͈}X!c/}3h]2jhynw2q@nR:ΩO5k5N{_ bэ}H|I`r~|>)uH Dyݎ5.=eQFhjx2ڬ?72}/ [y102`vsHoNWLxZ]E2@b]K7&R"$*Z"C4zze9 ~G-,TUy+LKzaN }^VK,,/Iz, ?OhV~<.sO@yFkɡ8Q.i\\k0BRSeP%5J36Tqa1gBwpٌW=F\%Ol/2a_ViDcFwM@U&Elb9хo&q%r(FB k1! q:0 ź</tgf+xS.DI-/CT"IOsBr͈8C4&ewAdq;\vɋr€lZ,+|hfzHfKXxF@a 0u>^=wf<_ X8$%q*]iw] Qv} eBշ ]%3mЏilBw@cS#SfoIBїЀ[4T~=*t:-BWduzṈ[}CcmYfשFi7deKUz)E'$KZ\9lK9D86Q &6Ok(ϩ$5kIH 9<ȲsbsOdxE4Q7:M7 .9Kܟ~k1ۆv%.zrHI^;|yet#$ C[w ' y1GS2K{Ҏl$pisrQz:4[?eap&jk vϮ[izZ %?‰x$kڥWc/Qa xpΈMGY1ܠiQq ɆH"!Ƽ:EMR7n^eLTG}.ƜRu}$k̽D YKX#VM_7~4 Jw@6ڡa/`&ֶ(-mpIU\؈F;9jhm)!My،Hh1}vSiծ Wq8dXn:D^ ͞* tpR\6A^=Kx<*n-4k;(HfL)!܎*ZݸneSżQ<&CkXgn8>r֤ӏ0\U/l}# HYy #oJ0ڬVF/CuJ77'TJcRg{%Za[j/mh6ɰ[}h67(2^(-h i9MDB{W{8WG/_{Uq;< tVF;-a %ӡ4Id]nżg]F؏R@Ik-^z)ke+D}0m(t`N |9`2iȃݕk:GǧG l=ӷ%2)S|(uT@eau BfwqBN,D@?b-q٠1gҦkc~Gua+3Ui2BURoJ=Jk4t2vAW  yHFKDŽK[T8A#̜+`|%Tri31s'NX__PHmX|̍{WU17*Rsi;i*NBϮn/*fwPfW_촱>mN_8DO7x R0cPTzr"6J6-`!lD[ϯp*/6WlZ"v")U2gLߘUʉw`&'޴l&^62(022;`)"a|y7 F`)Xu}::Bۯq*XTB96[;(yy]4€J{ץ /mV#|~')99@m0ј3uHOP}1*+8xneE}*<ϓ@D-&2`{m6yOӗMfɀoF1mpZzi!6YX* H!EUNܼ.gVs@yyPiф,_@OAF`FϾ7G<.]'ڿ)\rFp,8{S˶|֎ن@ToY?y 8#oϲȓZ 2&&2LHƝ .?=_$׈6݂akTyƝgUTu@K v(3#+D_ },Z!(Cdަ kYZˆ-m j7,?豔b*IWZjn%d{D\zxꐫMl)ZXa&\ʤ\Y}<}k=/kBdϞ0t WryR8!U[Sb桏7oHjPKvɤT"PNp?_u(D\D$zȆZ,Z;j5-;|JXxn-)EVFI uX-}A> P2uK (]+He 6X&a\꒼U9Θfu'wm nk!5,ݲ@q^=)zp@YWJ Ⴐ_W"ßn[?,[<٢y^`l29F &ӎD Py>Ls bU`o |.%[U  ,hVcqgE7*'PF4 (#1{ g|> z,PWCVf#.@5K f`B&Avg/)nkPfTRx)8bSn"جu!*B~@ȇPc䒚NB{#0jh~a0 >N8ב$S?6_1 nUuNb .[ `t;·D+ ByɅг ]!=&3 >:OoΦx<sN\M V^JnogڱH $'Dֲ6նx؟G+ƫCh mo?+]ZY{+=^4M3B$O`w})ѩh1v1A `[R 2YJ GѢV{]ņQf .=3(/.z nS8Zq#5)ːER⚺z[C @n][KmxH};gԻ9W_lyH;;Pw0 y),t RvсO0 YZspatstat/data/lansing.rda0000644000176000001440000001570712333041774015217 0ustar ripleyusersBZh91AY&SY5,Q]꺪U\D_ |m*Jeic }fV(hP$ɈM L M4L4i5(iA#&42&h`&5MO#*y zi1d=ɦ*zzjS3SyG6Hhh@@"BHҞc%*Id6`^䜡 m"!I""RNLrrrcm6 ArE`j)!pP aQ}:?csc'P%3:Xk2HCM.1Q@l{IaD | >ZRJ%r% sya:7~0HDD9LU> llD$ dT^Tw]DG*_ kb-8pE 1K TT*K(~2DJڃE1rCCPҢ EJE ;h[-iZVX #vD24FB)ސw:ȵ=掭`X7@Rb b%Shbėnu[6Aʸ1 I M@8;9W. aa[ l!?aw2!uX?2f LdԀ;!kex@2!RTD('?I[ )"a j+(~e,)P@?]SuұVs ڜ\u;{h,0d.A.IyBҼ"$U7aE #N"Oq!lQK#\TՌ00!]|KuDD{ۢ QDş9˒$Q6:8%Bx@*ʌgAsY=p7T0<&t&&!i+}FJIJJNk1WlW'QDBqZa쁥E @%0\|gВڡ1]1Kjyyѫbr`)^LATF1<; TF+ ^ZN5[A'֔x3$ȋɀ릪:T^f\ivp{c "'U󁀧wZf2ţe'dF<lH)RQom0yKs5LFeIC8n(PV-5o@1dIloTM{a}I]{ccS^;DpJS Y\,[Gy2Rox| #Rv#I#j΋FvQ\gvJ|vHb 39C0h3믙cQbl)d@ˣy,]TJ  QQ$D@I5]u)GSVѻuun慯qA(:1peoP 7IO'x"߾c$H50|4g|T/ZSè5YF3;Y*2LY|USdNԖEdu 9:ǫ3`&FH3S=h~̙QD)INh^;obGI.dV^G]ClɮKۅXwT~j_Gp !u̿H#Ban-5MYQ9,Bl.dJ}{$Lz#hzXFrf<P+q02R"2A~s`ړk%5n2Ggc)M_xV^(#`L2B%TGcxTe]%ĄT09HF[q, W,SREDx,`[QOܕiӘ|,:煽5[N-v>z}T[xO-!\%.rT%RFi|dbp'Մj8+AwH~u7AɊWZ}@l1qެ7.N+,+:nFq˧lnk⽊46>t `*nAxTV)wh`D_xdu81϶F#C ?[A2֚ CHa#&^N DubYHבv2ڻƏ-A29{ Nx7% .cե4P>& -i=i`'ma5*C/_ä2o#0=~# -(ˁ`^ %{ %__9KJ\Fkor%ǟT:q nHqE yyBլFM8o[Yd!Y/x޺O4TWAleDn#0i +|ƛq>ʄ-w5֪m'| q6JsƩ1J;YuFn KưFd}Ssm#*ĹLe*k9]=+_NFA#6ĤluHzA~uSMDiIGSt麅 bm%y8z_ yHԑ5wV:&K pΥ }em>IG1Dv_03ULΡvn70pZdкQ)h㠢Xr&T&Duҁ-HHq(طӈ)QCtt:TV PV xBk84y\LՍxp(@@`oPO*RY-K H4@p@]J`,n#|/TV=2ΙESЅBIe`u$u[ @":J:g\K#"NB:dkd!`aE0(F*h#=&1Ƹ_D*9S^\?1.ES B/Y,%AdAD IPXP[.DhJ$``([T ",4*>Dߒn`A܎流YC # If@(%AX G5Y VdJDET(oYk[*@B(@Eˎ\$/Ƶ+kiUJRv$%BERRT#cadp&@$A`(vC)e$6@?x,PH8ڶĩjy rNfT26%vD<v\S(%D ! D&C1!|U^B `t)2BeZ.18LAEH+LA3_E" RRP)42Vf"i R*)؂$oBӹLӤp x9dr&@|V(jSikP:ȺJưkoبmHFJT@ݽ "m#mc+ hv, _S@wY5P̠z$gJVZ"r <ܑN$4 }zspatstat/data/bronzefilter.rda0000644000176000001440000000732212333041762016260 0ustar ripleyusersBZh91AY&SY_{߹z}AiJR< zӶ*A$M51M4LA1)MLԧJMGz5&&'h44z2 P􁦚zjT2T0a0 ` @BFAOLz4@ S#P44F&Ѣgf@2z LFHѣiѠѡ  5 F4ѡ;gszlJigrt\ܽ a ']i"6q=x瞤>3!#{~FzTԃ֊xÚ!䄔 ϒSY](B=)@&c!IJ5%"QQbˉPB"R,`D lm1N&6p4 ABD )d H Zh"JHDde ̄FN64pno=Zr#5f{塁1 氓7dFd& HR |BFO@hD@uX=:uɆc}[ ;CMg&2T5NSRv>W,^#|Dl$( }h t,u01O DQqXޔ{H˗/*&ԁRʌJ7`KmGAmk^ ""(E"]$e6-!@9I#nsuƤz5oc to]eNCS gPoR$[XӨ0]DYiH٨02@R8ervXpȕG+FmAW$d6U<?=' B<6=ρm9i$~Ff̐iOu9D& _uq~!p3+3v ^nl~ǽ):a$Ulgc%R}Q)DDy§xA&_|ɳ `S7#MvYD+Z#*Qp@ѳU1j k5kHbfS nqB*rpM@]MZBǛ\n*-H+ ҥ =C7F̂B,xGv 2FAJߑiUmJb朹kf,nȅ64.)i`f,K!T50R$8hAzOK3e7j3=hJ1h#PBq GIs9as[teVB.t1g皴Znʮ2ͱuGH˾$Suڑ{zխGC x$DNq'2q[H2e{` 5`)D2G-ep9 @dNNjgd*2BLhNTdO(4Sb\Ҋ8s")Ngh "*>"Qdw$i` 0%q30b:wQ*Er3ɔe^'F%GV$uXHTYST $/`g8ShgqЈ& (*KRz>A%󼇣%Ȱ4# SHΛrriǭQA1W$2{bه< łF9K @]bQ+_Q2ԢBT! 2K]7EItB/hbk!M!Wxz=ZX@p3g e4FĤMl\ '802p,<J x:RPλU@NށÛEg%&U,EQȬ yӉJԣVA/Y֔ЂacC-V(S'?U$#c͢AVG,R/TMWƾ+;*fv2t|AGr!lI,pn4`ȋWf~/,O!5qjAL>I"c!A@IAJ!횹8céEw_VfQ&IR`,N9[jS=oҫpJAzR $8Dte@DCd[]MJHO1KN? Rƫ\V[م$Y D)m# Lb؀t 1狫\F2=y%&TH6@/)nu'h74 BCg$ Q?2hEb)%e zX"qb+H҄di  !t,e *xxxجiNi[g٢l\34vh6 E@k>j?)ttA3ʦ)K:q l5Sd;Nk5iDjӐ#㰰Pk!tPהw#&C.B@Gv__p(qxƩvaлS!1,o_̿lίQ{r)k \nH4N(A(!XOT%E{ؑgt%Ue^ FϖL_k™FꝌS l&fds UuEH&4P^Nq8xeDž]pմ.;źeV[H VHR R l !׊?u/VpnV!u0B$âc1}qȤT"Ax9íu$\2I\EH7M2#ٌ}`tdPDI tp ޳dDOy|R%7g)-I{d8+'}@vYPA[oV J/%ܑN$=dspatstat/data/longleaf.rda0000644000176000001440000000700412333041774015342 0ustar ripleyusersBZh91AY&SYo'I$I4I$I$I&I$I$i%} ԫ8\j:8vŀj&M1M0@1=4*zO=OT=4dީ䟪l@SЀJhhS@zP D0 &2`#2iCF d& ba4F&L%<)%@ 4h0 &2`#2iCF d& ba4F&L$QM OMM?(7zSi4jl4i14CѨz@ (?| EֶEbZIʟ:+EO<8gxWɒ R" *]dhUoQǓ0)U9RCE/`]qym+IK8gKDiHW:nhƽiZʜ :uyYxg;΋]:Ҥ{MbtKG|a  RME<>hK~?o{3kyƿB8dM<$[i$\LeZN#dɐ L,Ws Z#Z$b9W (֍r"@% ۳Y1VVIQP=`",RB, 5?ĀY8Al7ў\.llon.޽q]i갂UQQX6ŕ^LqVXJJf)`=Êa߫Ō)Q`p0߳'cR`E.Mz*B fEXdNK2X!TIO^Cގ˅1^(82L)JyBiOL%̹7%0ʕjݺQ-TI+ BBbBB:FkE%yB40W5Iwjwa_{s燫OFD A@ K!T*9<.ٿHEɓZBvhGZ&xxMx15tt8MߡPC=vyixd 1dzC˺*q /(cckk åh|ODG| k!KK\ҟ9=*@T浯Y潪Dt =UpNAO䒴٘Ɯ9"c- yd/NZϣW ټ4dc<g!dP.'r]{oo37Ϳpu+I{>8#cmYiHg?B~715ffB[mzPdA}1'GCM!>rH]xC?K{/926_Hq@J`YєHEX>x73%˚w=]bص_n6Mڶj8.CS~̊,Qk+dP@72duvڌMmJAYJQPJriF4bڬQiL0aG=$ބbqHi[Cu8%o]RB pL6o L s<B <ȊVC !N.;<`VY5=ƾMuӓ<)Գ5"Dp! ذqm 5gqgϦ)NT.Qadh5f9]. ib"lZ MBygz= B?ݨ^=WCjfFe*MEfDCAJ mVwdC$IQАPӚR[JmUW,VsnFt|Յ HMj-Kfv݀M<;~Grl/Ŋ[,s{HilԞMmxosd*7:;AWv쬳.so[ncyfglrcDAWD^QGD@yUDUySy9NSx^D9yxi&6 `1m$fG1xbL4).\5F,bD?+B^tԘS!ړp5xTC <l3 8q"k//:V$𰜌, 3xDN[PV)ժ )kVo%d1%tRD].\:p, QիUd; :ۈ=c"(He7Γspatstat/data/hamster.rda0000644000176000001440000000416712333041770015221 0ustar ripleyusersYiU,0QBↈ!1rݍ"*`ȄBNfp1jDd(!Yðٷ.i;NQ7P&rX}9%ݒH|LO|Y2-々ւ"wbɸ>1˜xh W~X`OLkyx9~u-0#E`V-UH: y*|B.Q f"cAN{j,96er֢E)v  2ݥ|TJJ/QO.m&uKڄid/lͼQ}sWcʁY|5^)1{s>1"3NvrJMU˞$ۇ̛Zٓ{rbZ;.'[GU>"䭬rvRm ˿SPfR5|V31gȼgZ+(MзE3$z ~۾K'O~~㟟:,9#^Z<&vx1?ߓ;I@i%%ebtiw-A-f rϨ kJz1ң-1'$n_$OY=&ITZκUZ;GyþTzo=ԫs~9 "<|=A9U-{[*N4`g 8CBURA9"~6sxUl/C~WߵҮYOGdžmqu4w_ʡ>>=|l(ViZN"޴s֝ K~f6D:U|o&a}=' Ս#<&Q5Ɯ8]ԣy܆_~qd~/Bܻ7Q;+Zۇ`S OPo0a+Y[ME!oY7e`C2͇{ |Z|1. }UZg>SgYXɛ]#?0e<~v\e:OHYP7\ƃb=dQoļ89/gǬ3縞qc`'1<fnx1O5o0uuIo"oO;'v ;#[#)כG N-1y܏ӷd'|_?ꦩ[)Kyx!?χ[}? fO9 x}K7`znL]T֘>9 !a(r=%><zȾu<ź_s5g?H3Pk#難6;y/_W/x s YC3?"yKVu<_?Gg>E/;IpQ~P?yKW}Ƀ,{|;<1Fm-X%Gۖ{gYI~QEW,9 c~)5H n>PW"t&\O`j@dXDJR!9JJ-Q:F,CQ6L"r\[ $Ⴐ"1(7'?CNLYUniNѐN#AFc _9ہN1쀃)]s5MHo O-:v4y{rSO8mw0_D~ i.i7Uk/\O;ңןy0ҩrC:?w[@W}lwл7 yd@;E&=ns8};6u_ (q \ RSh*Zٛȴi%M3oBbn9zM!΅ T^B>/Ws3b@vP@vh,iq`/Kb3Kj`e~)ʻzHn5le Mo2,$;7q&TK,+#g| vk+`Z;ˮ;~ǀ|-SoBigV.AMe*/Q[q9pom0gtoDlL1ZSajlyq/0ʅVLyEEW 1d]ʶ+g1@F{1510'Shi)T6Knd: LY)4Gn=g2CSz7'Cfߗ{~R_"?߾v:_N^OeK]|i,8~>2O-,Scc<Z [$|H8oډlue𥖵n}/殤|Oe\06 _]OR)M^V|?-e(ދFQNKGڲBֲW]?-nlnFQI&$ qG0U.VT̶* *̀+ +Q=C!ju?Iw>V[c&Lsx!Rfߘ5c_k}=ؕn7 4:Q"ir!chCO_Dz[QoVN_)&pN%Ez?Nk"HW3@\=$Vfxq0nw]Z Υ tZݸ"~Q*gf̆+(ыǧZ?ʷ7)YF79{S XSy[ț:2Ty43B?;ˋحrKKWXZ4.I4s YH^'#ʭ]?<1>ڿqWuFǫzDbQ*^-' BɊebI0_>ā!FyQY2spatstat/data/swedishpines.rda0000644000176000001440000000076012333041776016264 0ustar ripleyusersuO@)Jx /?a5Eŀ@Sljݭi)ρk4M\ϞQVa[:\,oEyEOH{kE~;0-ԗ $IYQnv.a)Po$SYkswQ$h0ɛ.E:mnhR~;t}Ͷ{0Q\[y^J p@Jg!ӛu3H'sUVSiq;YbM-T3f܅Qc00Ih QFf <zN` +k;@mg؁ ;`ሎ0=j*s̲F{y>T/3øvaQC0)Ue)uj|PfKx{c?tYS-%sh,IÙ  n#mA }nKspatstat/data/hyytiala.rda0000644000176000001440000000476712333041774015414 0ustar ripleyusersW{}6>PMTW aiK0fH̫/~~;GlPzX ]q_x0O\<;X=F4V홗x3,b[8&%%82ݵу-9`3 FqԷ/ Sc t#䗁a0PFUjm1WRfFWXۻ/ /I2 ]j_yz`h7ҖvdqC47XX3i= LHYh_^y9`qbGάbo`=m .\~X!ҭo]k|/?kŗ*Ed40u8h.J́S0`fn9+b Mh8S~:` ][E 5 ׾>"j/܌x=0]c+prUwi@X ,]rc4,6VL=Lwa}A=jw^Ѿj1P /u&#c+#}~?}>ڼ#c[(^]>/_y]2Dm3?kaNiCk`0=Haeϸ50&GWmֵ2 8$^2i=X]Є#١Qgmێ~xwr7`O6j{ 6lw ׄG7-2}>@=P4j\pgpйP{j1gjrYβ"8cơ`քp-d-Q?c]LX rQdxÉ ߬h IYCAi j pA9r,՛7M Lsj1,ܮqu+R!.,N~mX8ojus2ֿ %h;Ŷ$E[`3wUKuG]ih/9$;_LM GM&V4c@aϞ[Jck P6<#m"96ܞ٠cPZz^ێ;y*~(%@y[4U aVM]3<;Aõ^o|#&{ 9muHRlw;jr>!+y}}IC}_Q @>:{) fd#h=!Ȭ衆^:uaS~#uP6/o5*yG7?/ば a=OAfZA;}MsŝT$7c6fm3o$H_fVp~~ } 7$k>` F!Pp XN');:;t7h!{V_K?p%7cSH_9^/B@$(:I"bx7>&FEDC6GLsr9X!Uy͛"$<):*$`+?|7ж,spatstat/data/gorillas.rda0000644000176000001440000031343012333041770015366 0ustar ripleyusers7zXZi"6!X])TW"nRʟ6(;S:ZV<0ҹ@w+%F=+1-.G2UZ(f4/ 4 ۠pq N) GPV$fB3ߦC\NtڮEQHWFS6d?ndN"@T:3E#p6ykHX)&PUyT)ãx.^l`[5F\I}mw'qzf,=MoE.`E:qqQk:*Qq5ơ*g#?;JCW)ǔh,O \7c|SZiCXݡ\誣8|NK+?_rVUdBSƵ 9G q'F򦢭P[9T(WN7~w0P>$ UY؈40ȼy^Pe)>ēӳ4ȶ_?[.e :h@A<ݞB܀#68 DYF+%[}>> pucե_PHDѲ« mHz|EobrQ3AXXykA *ZfG==pUgM F//r22#.p^m*4 JRN\!#'l}_#JfTVePxZ+:@)(&:l"XxtMpg,ɪUi9497W@ao~&PLʡ%^Zpow9ԀD5jiuABivZ2vZBhi$T*/=B{|ƉoW|TY95iϚ8=֙TՐ<2Đ8 дۤףU֖S,A }xe0pd/GLx展/JGa s5oYA4MŨJ1n[Ӟ#!gz2MO_q0[M''A)9V6;w5/ʱ=]v@I E Id4VT$&Z- ?; G[8$Q^ )anbL~5?^ED]bTt|~0W1] (U9xe/=ID:G-D 7ŹϦ0uz4::!'! !8í']%{e? 9dc8N_0WܾSy1>ެt'fƿJBME Q[a54OY֔o]7\P1"2#2ӈFX k&c`0,Uie/<~ ~rT 1BJ'DPJ VfD]+$+7BĿ\ns5`7t F[Osƴ6q;b4M(`YN$$\Ŋ)oVSYhWH1kR@ GF[ⰴOy5{('>G̿;S׸&lEƷCFel {9!㧽UW=5 >N<5A ~smCp9X4D_L,AR1K-f~;c[vJȚC=%@Yw / RY5BZnfuXjzi LqsAlF6K"FCaǮgnG9N! JfIL?_ L+^ /Z:x"zaSѽWOW%woJ-0ߕh0Km=+GDܥZS3@;ͶZzzLʴ +1<R@MMA(˰Z}ەaN- JtJ4ԀԎ>k)J< dԣd4/ں$]/#Wɦ|F?e7)(Vd]F6F\b%@\:ehbZ:$ u 5 |PB;Zʺz}7&={Vgze!kʞΟ|)A_VƆA2MoT:52_D|U{(,%I(bNJG+CU0 >oJ ,g |HU`!W;՞VݽYvbviLUN|$MڑZ‹Q&EVf 5@uFdE-tCt?duEC 4ʷSy(:B6IOּT3Y$\~`D&t3qOHæFIY7-yZ"=EJt ؋H3s{SPLݠѳk`ĝ"S[c֓ҚvnPReh[K^8e~#]&{(y3n ڽ\cg ~Jz1œLF*4Nhp N*@"wx)c _> @0A\97l' o[1˳Ҋ%/Im}cKI 9êżGUEeZ PqF(#+y'Il6go9Oٿ+5/({mw{!/ {,v8:u37̪`dKEѕ 9RH9+IxֿU2WQc{l80,G~װTI\%PvՋ{P륒-fAkuT[m|B LQopP]H}E+qz|Z0  ?fv~oD.#m>.Mآ 7V֙ú/QP6微@ H bp]_Ehe+O`Lf eq/fy Aӕؐ@% =,/Z&ʎ^(MkL.,GI@g=v,@]f cRm/PlIw1?_75d?E=DJRYËE8aR -heWݷ;-;QZF(FVfvAXbgd<)H\icT6{Z#sUdq :CSG P϶4ws4Ly6*Aa!Fr?uO͓n+Ϲ[Ġ}-uQ^cR R "e&[j ~CnPvCsC`]6Tlpӥ:L(;|6/c&¢®k{|-]Bht}k#! y9yWy,S3yO ZT޴0e֛5J G7 h?儮RjAdC,9~YԛսZ7E%IίCi e}xe ,k+߻HZA+gomInM֜5O%'>bӹQ淸dWj?dXXr6N3"mKpAMOMz֗ Q'.^@7wnnXߤ6HO/p\z=v hf;KjW9/b؎ i;#ۀIߢ5԰ H\cXm20;C'* /h\&Iҙő/xܥU."z*1/\6%IJ|>+Y2noڵZ"n~-zm8"mHP }C+/}yq[2$e+fW~bLSHI }luCN #'R3EVLj@ٙ)oMSȧl "VaB-rjK'C:9.靀{WtD*⨯D!>wF|gQ!<ӂ2iپTtH&c9Jf}BY@L5$^}Tc駤S6)s)pq NA8fvχh9/}1%.Wsk1F{3YqxV0OY_]U9lߌwkQr?c 37|,L.zA2uGxyDa*H1– :2PW6 ]9jPPt.l$r2fSf'sC` mj`>a]o; _>n|c\vIhUL W QiP1-Ôz EWE4 ]Ęv)!߻MeR0R9K7`(e&I=f︲Za1ϭ[^C N/M1S/\pŚWV0191 P-{V"Θ/\Hv?B}JRS΃/6Vg]EXR'.9{Ň5lQzt^EGZN<~v5ysMDm*#W:Z۵!RmxU-jhޣ[{Ш`htd[yvw"8Z#Rbs@*w&N4T.i$.j*6wMzvg+W6Rg@GF,eזSkQ&?ih8 䴲+OT˼˜mq;MyƓxO1@NH4i{z I2Xyw{Y|ZCIuL4zòVIqwMV/Alsï4Qx3=ڵp}.ZaЊt;;ls./Tg8Qu`d\ߟrUo/ U֐碴.nCq~@&P˒4y@: UA/a$e> mw^F IOT deBRi"H?U(T;VTbr/ ٍ22ɗW v])@uyl0%['$c:4"!Y%5kJ!jz1 .i}ڥ ߒHm<nk욌ҳH^ 8=#'ށC%iI6$R^TM786b)l`)Ug/N/JEux~oąT8Zӄ'&NAĥM\>4)YOs:mU U]tZ`U]g ڟD&8*%ю2UMP KJW zIյqyޗ0Y;qD@\aU 82r*WzLjet) u*=;XR~VMY-Ї^e*լn>c0'19 6W>4X. x2'+&iGWn޾v(CE~ .]5R"#BC%u&5U2Bg" /Awa'$h7Ʊ;!Zl=3H%`zxݶsMsy7Ț~LGD$q7?ȧē}Y 7Jb_1]78EL;RX4dP/eu'bLo./<x5ֻ_$BA ٱi&61_2\)4Vc#f +3,V uL0 ݸ)vI;. 쾍wj VU UfS1w%"j @U5AYdÄdWљ)>dtX,RNM)Gp9i*I@2=Gyt4~&2|q?;0;e׏̋{mBFA#nqSvOw`&kd<#vL缔9Jfj%ѩn^Κ(y*ϩG,~~_i_߃} ϚG`, qf^rEzG9 |仄  s|uc ^=~3Ҩ,R NzLs⚿Tx\p5vfeh?먻mt5vNm*l?Z~BkwZ}Jv4d:fs*9 GLˍ6pY fţ{.,U ㎳"zcFbn|!f Hk` [҆2dX401-kcַ.54ϣ|ͨ8j.F݊d]Oo&:*x=ՊjA./߰0]U }=Ը+J0e8u@[3g*Grź3ʑo]>.yu!M.~F=cѤ^=1T(dy$qLByLM9-qL] ;}{=x9S7TgJO8#Pe7O#%7pt1l`Bw1<;SK#%eobh]MG,MCeI:uUnAf| qſj tt.U$)W$zӹ@&؂Id47.]R;! ]Yɟ\\E.CZH+ǙթoS_=y`ugRIL;C-+r ؏+E՘DM3=s֢_[sCfgQ̖\ԗFBdl͹wFj ><NdX(ҀI$2km!}p<ᜓ <aysHGZ7wYE//ؒ-UZfI['zn=8&r2X\}{pٖ1bH Š/#D&"=BguڤdXK,:ֻ|v1"fOx-Be!PScVZO)TpD9%I{CQWh-'&"~fRwJ!=?#r)zz3ԙבӬZحhG>Nfp0IBZf=OJ_ ~c^DMcDZ@3puEIT=_#&b`\3<UwmS`3QfW睴eoB'Q4YK٬(!V6sNfwp?V zc,wsDr?H7zJ99p%9Ce'l@g"+`A*; 25^(^YE~ 4w"lVM[)0U3;v;ht J`jkD>ZCcMm+oZ@ݐClAg𥜊{?VZR <{:J[g=NƉ<P[?=EO֧Ǻv  bbNZ51]NOrWd6\9"BeJli/.OrO{lA 0pl©Ɠ>eMb!کbztwD\QςVY-fCCM9gpSw]&m-EN`8-a2;C[V@oCJBYLvpV^iىcxA˚x@=h4"bmGTqAQ1Q  [FfG1 cǦ)sV#tµ~~_ҝT τRmH縴Z[ɂGUQ| %:WF J:*ʱ. bRV*Q3hPיXkgF"<,D11u#`2տHb~71pu{EQ1mFNWA.xm,bi5ZL/l<2p*1jOtCH0#40tiAoŻϑ _ol8 M4րgй9x Gciq6GJPOcO&CU ΚMNܴEwipM7K,z̶G?BhB*>A0qF?;8f;@?9 ohfyXuk^}ly($OoD. rY/'gFx~-A+JW^T0OIUT wd鳳s4>~#EO=x}_Qw-`Ln; DנYE\@~!crw^l_<ғTzoQXLCXR 7'ʷRv)|5yržBG!3!c'2fSH1 ))1*3DqBP~6'֫s~JYsj֗aHh#We( WC:_ ڄ'#8QlHWj1#YN$֎* XS)[2^tKBK&##E.xmeL$(kMl cMDhj1}e>aףuy:o oT.łS{Jz|Ae-׺qs', ڍc!ۛk85r^ Qr>JuF< _qln#&SA,S #"0c={ N00mzF\,JWdʙL1n9ϑ4v|ETo4 Gܻ} !tx_(3sMRW;lZҍ}|C&흧Z|a3~!`I@3&E֜7 NZ+&E`D*^G ؘ:@rّ)a&>^g(SJƼ27~( +QIbJ6ډ!%EdqҶT݈.)#t@6K=^YY*`Ƒ%-O%<Æ(>mdL+%v73#|',p\_IaNGmHI{I[( Zl'`C4^+fAhb_!Cn@ {5 yco81"-q۶~ټ vGBv;OOH8 `P+Զ6xA^kh:6t=3+ A84uU~Z,|]WmvR(`cu}LZЈ ='}&c<~_06ljT1P@ߕnBׇ'և[5W9È^+[=Mm/0Ř 8!Xsw"i `KinӚviu. y+pFHb*W¦JG%Ͳdr&qA$7/baS|s3gX>ƘEw/0<(k7@*gؑ1HG[ žtC׿dR}8o .'L ңNl$"/FճIe3 (;BO,*[ICRWPy8=<0J{m>yn[RICw!ae&fh`y:;O,ݍ&aqJLD6 @` 5X*N}~}T%㲦 te.o5Ja򈓷CF2XG} = Ml=m,ߦVe:v3\ooI]ԩ[6Ȑ3y1/by:wQ#" Nq pMbwa 2ܯ4dp4Uf>|Cב/ޥ{FHGHèي&\sLc2ۧCfd]CcH.PeYtk\ ߋa#*DM)4M 2#WUQ({kjgvLOLg^Yn)Gf+w6|oЈȐ.unH;P_<}Q)SC쩉+I|?h?lKL$\0NZ* k_f"YHKa$wzuWd;˂;wRbkiR%3p-j2g<' iMAzjqX"TM+c$CY`[0E7#>їxT+k)Kb}\9~i"{G%h;e}4Mm2Omui+_ #QI` W60B ٶWZzӛ)zfRr,hV ˘$eiJ[\=.۝Cvy4RH7x{% xiHyIųyxz4/IG\H>t{4ZÞ ($v k>#%#Yfa?PxSj ?>8j &Sc2޹S^جaoL+9sτA\WVSNDoVE\jaCl^TŽH Js6)rE\ EhZ-H6lkbmZ Dڽ\~A%W;*5;eK3F+ō uTCpQBd%ᵍDD3w&v{vxoE\\ꦈqAQZr܅ 60\T>$T -)o(k`6VJޕ87L$3OG6 ړjdAr% 'aβ9hA83))VJ~((}.pOowb:͹ݸ+TA3ahQR&CvR鯈Έ;s2{MFѨŨ=Ҋg_0M)QI;ؗd+]p50Oȃ@,GF:3D{ [;&)Qv2aC12Tk,꼔Tla[׎Qf08, 8uWw' Q:Yꋴص{Lc7 ޥ u,b S čN|SqNV"| ,y,ɖ͒x{2ťas8.4aEq#mMzTC;G#Qfҗ4^ ZT/BGO7/m]^dq 6s'Yx_ڡ$P!UguѝhuI| ?B7+>cvNy{}#{2e;?6a5!9HR%:c wo/=He^:~ cW]_'QdP5[2uƕܟD@ `joz"%"ĞQZo\p:#j g d_sr6ai\L S/k"->;;*^AL*H^m$ʉw&{K^5uE#vŗL^Wl)c1Z^̮qTmF:逃yѕh:=(a HGsiΠZof LfMNx%-KV"O Cqg%4 5~yMz eo&qHd29]dY \l0|oDCq_Ǚ4oJY8a>eM,by87(AgZ^Rq}s$U(8msXPUTcc)SձE\?`vzʟ>tӷ%2Y3qf*V7xbQ01Ql۪qJR6Fa5;.sH;#R9t"Gp8:Ϊ:D"Xe1 Kc]:֏.`Ry8iTnm186k{>QS@l; .¦:lC:noY¹x(\"w:s}e0wL/p9" m4r/k!mQWX,40 UduR1 37T#m'DA:Yd +V]~D ʒE"ɞ臧d%zT^ȯF_I0(kܮ~"HD]`}Xd"CH`E)sLp si3%{=|F3? !cXꫧɄеd|:Up rHl׊V QΪ \\S sR=KO̙ ER?$P/.|PC' ?d Zq5YcG{+I?hOUunNo eB WV)> -'>fji?:n@bö qM`'= Vȫ_ytp]MS5za0)C2L[%4 u'~٩hƧ-g{D^+SٲE3uLk"\2wvDoy\K^;WyһŻMdPP rFr;G>8wm^ 1:aD3R0~alg;򛜉DE\ia13&t5x'7+]#f_CC;P3V#xyOos&d0oؽbr|bzب_ -Q}{;Uou Ci^|z9H]|TÁ@Gֲ4߼:kdToxQq ˴?O=^+Ͻxp>r,QĎSu:x<ЙiFskD* Q(_':=)U߉FГWS5>33d ` o `BYOjI WᇸhPܙ׭tCZ-Z@JŸVȯ<3-0O]$Vn 9b׷& 0;/%mga~*(ȫeN)4N\~5Z{186%ٖR d LR.v'>B@ڜ mJ+*e3}Ҹh}\.2ђʆuRyPex wCvsD:ף__ks[V=$9," 0FJ*,M0*e)0$#̴̵eQ{6-i!=2dGaO%T:(n4!qg;FZ82BLtyE{_s֋- *y&[x{M׮ƺhyHg\7P@}uAjaNFX"T@s>{=3m\}7DlY]y@X%UBk+\(ŔZ Y3Qz`qݝmϚMW `(Ŭ)8g7 H?ZiF'?${%q뒏N䴞d,7ɣ0ȯm&IXr2|+`sǕOrG?0`mv]$d |?>hP CWXn%>bGȞy̼N5L[5! x7"vz_Á̂e9M{ӝqgziR ⠛b 8A e\ռ]22B7 D8q!Mٕb3 RW/DkK|*>a'J:`ck=ivU`X(ZF]YCˍDY %c[QklI?=e1l)i|?AiQ=!?+z o)FY/L"5׎ijݤ'QY {euB>s% g۝ 6HɂbJO)G>eHA2[/ qSNi>Y}2N"/8[CGh+2ݶTO*6ه_ @m6*&Ok罎X=2OwǗ:/YmrO&tUU7+Z|2>VbEDR`*b~0{k \@5ꡒgH͙䚐될MBZ kJgC8g%}ӌηj E`+ O $n$"`фRA!5a*a7@FA }z>ְqbBNK0Dn~?s[9|Ŕgbण1` зxr*MFe?Yɮk˂16":_ɀ|V OAS+DEM{]>y={Fޭ#y O@dDI~`kP8ľW, Id݊^@A60%TsDYuՀhI%q89(xȭAcة&J Q#BEd9,wѣgq$=ٝwz}.dfMB+7yOr SdFS~PCܩТL엲^j"D{eKCEwUQ#N%:fkͻW!<&Ʋ/NQwQ͋%XX4ƽs\2YKJ_'Ou6NidBܢY64$ U-8ͯĻ`Rmbїx}hȓ,4K3ge0MUUα ux-{22 h5{"ceҡm=B[M϶{H+IV[eM`MuctƴCNnI!"V=:?x2D2ݷ"oGvcE2]?ǯ>ܧj.[(L4 ~wl \JV}BnZ6(uM0V4l2Vtasb~koMT50|-,#4B0t}T^, xrw0/S;hknB?D<#;˚ W~* nU1:Su4T$Sݕwp~].=J-X;Bdư 3|+uV&XaK ]4!uLխwhn=c:0fP-ێI%3ac)HIW!v}xGU)Vi%tafQ+8euƒ4ST6Maf_ S~U|f[B! s'#![~N(ekN>uR;7Vs@蕢jq{F7먔5yR4~ߖ8yu:XLR 疇4'Ny4Ja2es]#wztj#f*kT&x˖݀y@S}}}3q7 IɞO6%f xdf .g(Lsh~8HFɅʑ0U6/TI{[&eTWzwY& R5]űZ0s5xs] #;VQvgK`YsYr?!xnMӴ59Zࠈ[Gnz[2O]Q7%Le59wSbzw\5&q=䊝[v!Q OSTN= Qh3Q xw#u6,/do6oMGC^"tsG9'cIHscI Ͳs)8zk먐 7ds({*/\;cem/ q|th|dg,/vZh8&*b]%4f S¯ }<4|KlxqFxǦ'^ {!I݈I m3%GW:u{kp/Ntc&W ᭪tX(Zө$uyÞMǨnOݲZ0@;WYT\yyq\i%(q>x%{|~ධhE\%44B{dzdxH+l@ɓAlŽAV**MzlSsg=޹9G2(*Kpj{|(Oi}83,uO>N2_ąJڟ(Eep"F<h$w]HzWö|f~ݳ5EogwteOO-lղO-ݿ+86_ȧS;w~C@]6Fr49_ƏAd<E*2?"͇VSi~}3-1X &"WkF7O7mSP%EHR窞UE8@&WCbם}Ǝ4ŐUnn4iV/?6i7:xT0bݛv:Mz uZg.c̈!c<C}9Gth~Ε!Kܗ$ LiWPłmvӐȡ`% kX }w=^8,qwd3AW˯O(T" g> .$*"IK[3w$P|L$ˉm$ώPzrpgRÆ9rb@Ԡ51 vМ^8b TB!YNS5Y~qVty ]l(8;#d`,׃Zw~l,KmIJD)YUK Pˏ8ϦbX.sg uCߎ.1v3JtQ5vuy#-[ K0/e7㌻B`;L2?Y!w|H|3`Pj/O,zFd7%=˪Hֆ76ri*e$EF&qv K]6Ɔg.|݃w?|͒Ul"4\i1{dd]]Υٸt2OLj8'Jڤm3F W>yE>2&d ;V*KŞTrՋk4%^OSw-cưsdE&;LDW.0l Q#&T8CP++CJ •04FMYq Wmw eow&P2TV`[\GssCgk){QXA_T;C58<У9bUvB~0yA7lIR?"(_jZ+WyU7N6u;^50\S܉QBwgBS@=$7_ѭۦ.gq+V{r~"hdNyIU\:XT:r"rQ~sGsS:,rMȺUL;es&x&Bt;UMfJAr1vDBlBsj$UH*MS O1r⽠q'øbf>¬s>d¹E+Ki0ɕopd9UT" Ϻ-#,C b /|,>N0:uf\{DӉBd/eF90( &TEq/,)I{K[2w4_GQڄѨ{쭙-nT݆!KkthK/ݖ7&A}(TGP!$L6@7RϪ *Bf;5X'M3?TNit|+^q4X7)-"zܼ o9ѩLBDdlûc.KkGG(ABB4 maT`FPtЖnj ٟ &V[Mc˹R ):olp8.T(,Ĥ|΢zc)mӁ:Lq٘li?EˢqTar . WSsΑ gotyX䂼IS~5P蓒`UPA$e;k_K.Fյr)ke|!x;|`atC}2 /)A@(%|Sp͹}ΓLcFDy@c0: II?pÜ_,` Ƒ" + EohS0gLYD϶uL3Rr.d 1,1ɼVGue ? š~؀Uee݉J썙Fp|nVA7bĄ3|sDη'L"\.f֝8OK~]o˲R/-ȟ@*շ}n,~,,}6#֨X Nݣ=>@%B P? kCW_j{iDE$4K/s! NjPxlg!X41@ԏb&̆Mb`QVҰS]Ew?ǽ*@3`\ieL^zY,س3FՌ[78☱!HeJIU57 %>=I=:bOHrpg b~6!p6!M> =Dx.ȋĬC#xQݱnZA U.gD%{*J\2sdʽZLev֗kBO&7;Ra$<4'#LKq'eBb,Y%U8e23JI]R .CB%PQE; |9i^ ^9S< w\Z|^.%Odu~X(/IG@No8<8=TAa ϐI*IS-N<7Mmވ腐%'S+X̭ǺBv BX5Wzn'{DuXK9Z])t M_`nq yd1Q2+2y; fa1B"r-G).>&a]u*-{?я#va+cbd2 ZDiVs\ B3*F_iGC "mp ^`cH=`Ja4EtbpK05TTԲsx!]. %r+ ufl2n>0Jq{xg5O=_٢GNR *l^< EWalG\:f(*r{(ذt)D"gDf$ts L5.b\6̳^(W 8Ÿ ܁LkwxOF:*W,M`a6p+L;սӧ+<5LJ,L'waX83#O *iZ.*wAk%eIp(E+:5@ppEUv;l' uV6|i2uHYv)+8U>r5Q: y I͍?PZl `::;mW>W+ õݼ= lN,g>ʸ[X؄B &FZOԵXsjH;;q' 8p).8FARSsw ^ð&b%h g79-(*4]|עsAB&قS&PJHy{`~2qάBgÚ? XMwϸ`O`W~:Z pYG 8Ց)Jf*5B%q؞zR|2ײRXQPl0]HKhwh}LLou"i< 7cE ݋lKĬȹ;HRUN@ CaQ+ j`mʇHAO=(z /3t܌uپ/})\ Y{ 䨿 ؃"`>M8D6;*XZ/X|H^T⿪c\.PbP%^0e_K8j9a JSᶨ /e*9"< +̈́ߺ0ԽTܘ>3J70W[c}#xg(.1 }ij$y`@սAKܳouA9vQO]̈́R5Yo Rll_C&+iD,[Ϩ?r/ig^B|mv%}sͥv]d06BM~!vHiAYGUf Qz]64`e]R eRWTKQ&h%]-!ܔ-B'IaD͋r I[c"H~bzEe'-=:0mQ>DwinP4r?WqfVr ƝGQ3jV }YfW Q.P20KD"$J`˨:G!e(:oV[,CtDV#A"Mz&+n0b+̟b2f-Uqm8y A yȲ %:+t`5u A`eN<1$B^XF7FQhF \ڇQL7)0Am YAތ'x#Q&9qG{+oyNsV*Ƈ{c'4d; " 9a ԫ4$ #ZbSY3[xJ!YW+>{WFXA*[ mhDɡK˿#5C/جE[1e#m vwC"JS>;gOĎ,/ OjsVp/;3Ƴ'(d!` @O^@%6IvzOc=L"P;_^1[ɫ dFqA._IDa&(;\귭ua5Meyxmb5g:OauSϧGG*& yMVOI(LC]4I9eוy]A 3)swj5ZK \^پ$4(NqOH\GoH۬1pmnѩ`Ǘğ11(7KrJ8lw0<[ݤ!&x^__ FkW^Y^ o'?5!YAX_ GN94:~%& g A;.MG:f# x 4$]|sGů!h΄ l+C,aymRz[{5lrD-}s^>]LQtXgV8:\ƐAiɨj9jVLW&>12{tG?f)IlTǧSqe*{`8a}+~_l𪒝&}Շ;$kYu^X:|AXpMfxVܱubgR`@aa5"c>MՔo*ltjMU۟&Ħ!.ŧgF?5Jolo9jF m0ם:NO>#kj$WeFx vO SCPQ2hogV.U[dq>aUDC^9p:;$lkCuXtz@pW>&rh:ycB6;O°M f*C~Du?x[<Q?#\M*H ,UtE6%ӥv4:aOBpuvXTKMޔ ŝ".&"Lqg^|A_vD r=}i4b"\<Ϭg>=2:4̇&sl?. ?Ր<~S&ߓPR~Y=vGnotdRMԊzö+9veiC`yZSVl,g`{1eⲠ|Hƍ MWc;9WMDM ]hɡuz,IQzrS0+Ԉ_!cl~> dl <:gLK]nU@j3mŪ|pM&0\*3H9(h̞]+$fľkS ibCTT1h-3W;bo$:tMkOofD3&yMDT^EHx6 QG.txtޱb_n,u6ۋj7[J}g"ntGYr۹y]y2:gp,AAAwL[5ӫ>Q5r\oxUةݨIP& K1La{#\T#+]bYOQQxIY| -YmeikFS~ln" ޭHHA!3idIlfj (-ʞVTYwl" I~ \MVXňF G71 2kA) 2Jd R Jޚ{yVߝ/g9 r8ojUl Bd=[0R6MJWl#[#)^cek#6+JX 'W1 ŎZ'-.KQqoHsH-!46'\fAIF}[:yw3D[FkJ0}.^ui7z"v;]ڧڝCx>d!ql/ A*r&>lXWtZE~R$[W>w3bb}ݎIԄ<+v蹥Z.Au}TX|>=OxgJ+E,zHICHzCU"Htٝ&@0aUg- s%YL~Q`3E9nR\ܓ!'?nZЁO,<r?~<28p8]ٚ8<~UR[cVVD;[ SH6cqذy@U0hsFoa9Z1jBN J 4d*Pߥ@UH#g.]-[=a 9G{UyZ3X\KQ{UZݠ7}F"gqh?_ AC(G/5RǬOCsߟ_(3wqU/f*XN s f%aEhRvǏ:u8qO8Q,1v?JEIy>V{>bqF^:8Xz߭R> rK"N|0:W5U+ \OUWTX_ c(OZaDB.e`L}@.\uOo1"Lz:E cٟ?JJƙ KgzF/,7pP69`ߔ/M|y15ex=O{fb=),xVƘ K+u9H%]n^UƃJRy_϶ b<*J tQ_;o0Қ P$d"R|Qǂ)2^ (c,պK.cSfVY $)MojB;Hԑ9"š:nn1TWއfZYqfRwy~YWu*,תN>T1T@\6)+CN.Zo P 9n>K3_ jNcTKЕظ뱲[P oE+C s=HTcł78< %$֑d=06lhe#5 \3T\9/8f2F6' }G#pNzmBAZr1 >+=\HoL™Q푒lc.[;-W[p ygPY")PH˥F?&?-3 >}雺 !f `Kg_Wn2yEC+3JPutcui%Df#áR7 ]2 ybCy7e*:Nv7fBrfS0@D/[2UO$!Lp}TU_Ku[ҷ0rـ VygwE3ba,UyY zg8 jue,ZFqDARH9x[}! ,qЛo_sFg;TQ:Uʩh4 +e dE"]RF{@T/`@kW&qO%jLLce+gc2X0%k(EyJ5lC8ż>QpZ^9K(^M/}FIoF=e\.ۄF9%?/l(6 ?XĸI OD[XXLnqm]OeGup #""E3:י#-zoB`ZGy>:psHj)c;kY|4Y7=^ kb CPM%q0'B= WJd`#{: i˱NKN5"֒NO״80({yK 9TdFS+*$6\v\M++?m Ag!,#@M+~0xoH a.V=ֶ\ >n(8NA>M|Ry`Koۇ!X?LK[$QT,]`U~jWOmʐn*Z^ߜCCv2 6J2ndlcLKKt░>־{ngKWyH8%DjgRN PRm$K GwS/Kr쮵v=p%]lޣ F~ pFȡ@B, BOR |JN C~:Ԃ[Y(˟fnᄆQN<<.RWl}ф2;ëN[loA.8.W6N)v7$G">D3W(َ#in(Vij3G|u>􉄅rz/a7\/ G,qg=Ԁ5h=fqh?5BIR#$SLhlI -$-Y ^-XBٖ٨tni Ry=ƫQ"8Lr+@$fK7(YyKP cW-d8Mgԍ(&p`n@W':(P[jK+B)9CO%^^T[+@y[ja>t7at[nߍ)LOkgfv .0I9^27O.?,"\5pV.PG%d] 9jsfOF{Wl>㸜ʑ29 x? NزM6 GxHv8 > i삖zw =JB\G$¯E KV턕(UΝsx\e}K?ʇZ:~=^C/XU 9ඈ2f9=a[v]L <W2b?SߊvƗ֏go7޿=.u&8l/;vL+֪e[ ֖c R LQ3A`2d~/[3l»$?_>X2-|*w吻'{Lg̤EE9u1qE`ˈrXɻ6:+Z4#J%|$޷(Vېe֗d!]ѺB'oh0=J@ɈUsӴB?G]16:2ϐ8j'r{D(AWS0s6<[uYR :FPT$q }bT$zR^vIb]uΘ3a#2 @ .G P*{ZjOsgs Eb }( bzL[<G0vjD-$Jæl"ƪt#8*V,Ǚt%TgU]ʃ3"sp^yWmppPʁt/+2qWburJ j5 F9f!V~WNR|W8c5]D5!f96{ݩ&1ē/[E\O뒎dҝ} @.e[S~W\/J.S 6nnlL[yw_7WGf7`e+vgГ{ߒV>l)]ů`>>hc1_ہwPhyj3_x΢ƐF\%Ws"aމ=yuqA0AFط#jP7V]ZRH*sjUE7A dDnTj`7e \-n+yO>Bw9ZPn(_Qaj 31rsV2+:3tl4띟 >cY##6SjS@10S6d2+u;䑤B/5: #@\aby;Q9s:Zk!&g'$%,D@k@}ۍ.~s q.Gs1گ4u$G-\uYJY,o║d1\?;6.0Fڕ$:(9rp*2̲3[v9~q K6"[l8<HMNmyI-2:?YW%,xXj5۞/)OR!-VcBzd.!jY].kKaeX- 28ʷ OTɻbcŖϞP}Si$/,OKGwϘՊ1jhY}ڭES=]p\T45gخP K[m(?قka%:2K|T5霛"O1eI r8=% JF!Bh^DH?2 ɽ4f{l[2MHVסy;>7*Sҡ," nYȩˑ9=Ϳ Q|3/RhU˘*jTɪ5rJO<]]P\MF5@~Օ2Oe.Tus?VGlbf≥5wh; 內Q0R@';2ng/];qZ~%%~< pqϳ'?q|Trq '&E*Yڳ94ap%a@,Hdis&6ܷz@17 0žfGcF#V*OǼ4$]fu c|nYC͔*R4$n.kNd1x#i=wfvvVByEGIjK?򍆙T|My\b!szZN~7{Z2NmMa&+ ]]e2c}$4y4Nzg4Y'p&?I;ѷWZܐ?KL 0lj#^q/o*5d;E=%E12\St2s[k7ml5c#__HRbG=5R;yܦzY֯iAԨ:: V z$ny=vLW@nUJDF<?RuL"c܃z U[e3h--(@,"|O_( " jewM͢]oet1 aa3\0+‰8Wuxx"YDg!#DDT$<3㞮ƍ/TB-Uq*GşvF0 t&{+͔YYq1rjrWGFeQ,1ja%3qf ï7^ C5Cov~ȥplwYkM8x@Qtwn[ s#J([3&{'ԭ [^. KDD&a mnB+9=Pgդn}= gC,9I2LL3-/5Y,ݙrGUb:.7D Dv ˅pe+͵X/`I+b3Z= Zu_4 Tg)4H,רztj/ۭfq_"u`!yIr,DS~Y6SE5 (yt!*E9AĝCʵo $j:u2%ML[#QRRG_);"kgDΚ'rN !'Fgѣr$'˨r_eBOVA8QIzf <2?fq1e9"wHfOu c[JK&P?)dFUd^TO1h B=kx6i(ڃKP[͟aG IH HS+f^K}Gg矝8)lvB;jԷU Mu *i3\|<%2Rԏ;y$-,ˌ7g6Y7Y?yTSAgn{wq)&t6V1cInnQ(M{=u|'굯/$͎![ZNim:7."G3<j_hD:vo#vӟfu3ғMБĬ{~v\C#^ 6Q90|NR1ovN6i-XҀLInqOM}9G h,cZLJ-z SJsC9ݠ':g=-bU29qTo&}Npآ[ɦsl_ԡ2(è>Ü D "ԤVPD&9EQG"v 6qFhqܡ6/!5Ж|(a0QZˀASD/%CH1g=?&BP$=fnPV# E?~@)U_j}Q a8[7FZrB䂞12x{caMm%;0:ݛh-tb`$bD3d|0 h $C1bE&%Gkq1Rs)<|M*!2Plp&_G:_ !!j TB( 6Z&vAE9gK< 660#־A"C ObE.'@׸+L!Z`y;{ʋhw`ߕU7qi `VF 2E)lSC\[8P1ght-׾Qri MHPw.:З&804bUy 0@$\V''D4sgv~Ҟg !U@rd UPZcüǻKVb= _1Mݽ0yHt,#ȮN'zcЎ,=~/ Z3 @ȮBRA,t#z/~\}cL^v}bAM9ALbH6&r/ <9KdaE}eKq!b}i9 Vxrm5ƺ?&+)H6D%bT]w˩h Y5>O8n-Oi*Kb7ߐuf`08SF}T;UNn5lߚqk^gn8:IN,&k'_TaX?Wigt B W.xr l=#+]m.Osnr>fq΋;0b`B:1IZlf, bUPaH6emcıO0AH(D2> W(vmpU E+X26=F!`2+bSG/> p@d d n˘JSЕe;Y)N9])W|Wi$Ugձ5¤fq^?,ᑔDf d U .MM7G84}o%q:,4]W.șk<3bXA<z|mWm=K6+K:#:o)3E3=P? 3t{W5nFq)/"h6vFdͦw'Q`YJ#j:x}"@;Oz<`O*!2sVn@4R%^ve̓^n[ꬨIʵĵHZiL1;0d]ɫe! Bvinov<CM7hŽYTHfYȀN7?*v6`)v[,w%[gp\ڶEdaY\rչ6װ>Taucsuڤ74$ 7@K;ǰMͪvƜHe. iDϩJ?j}ƚXܒ`O0ptb1Bgv\8t(w- ݧ3`EkӈfV6zbRߍ_{9p",v]a߳˙lFL DOZo6}WhO.[ԎHWl6pҢ8 )l H6##@c3b ūmzOYF0JT) ~ƘvJ,6uzX%n .J܄U֗Nj*mcDZǡDKDaW&H q^dSn=Dq5wFYDR4KYc>#aWY!1 tBxv\*5)Ey nwbgh]$?̇Iގߤ{Dy Ø+Q-f޸ɟTEI:4K2 ChI:ִm nqh c'}>K*ѣTeɻ.YcV( FMakt h^ʵ7ۇGu F^j#j=ev7 &X?߲Btdb3A1u(v9hs@_ء']E0 i9L(k|SSu[RzQ~C՞ ծMZ۶q3RԇVĝzXYy lp՗u+)I 1ƕ b%yǫW?/#8:vO WB37Rz!"]3t+9JB?/1tWm c>{s;,Y"t3ka rՃWHFyuHd_Et> {Yx<#ViuءRx&?q\oEچ t}vҾIg?V&j7HCfC!~Upׅ$CHz<GŬmz0 jGq_kmrpF cJjB>7ق?:xئLDDV1yb9:,a .h޷e<٨Y[`Y8%\-JHFvСA eunk;m~ bBN22?D(%v,NSl1]M9clzgc0gK8m!J]E,A<,. ccaqrEgˑJL󸝑[e\N {R WB'ZNG>_,Ď'݀ƹ,f+KНo6a\2-jVf$*cџ^6adv5~m\xobq:мʠx=vݚ&1"lΐ2&Dߔ;V=Py8xLǝ.M>J'lFRO.~2G7 MumO#ӛDՈ{2^$!{L%4ͥ\)Bq !Bw_ pyr,% @/[BꢹW/h x1ذ,XS- >t{D u&'k|'cR@WrO<(TՐŝmÁ ZefsР=~χdW3'no +/QIT,EGNOMYP?Ybҡ#G RFjc0G592>WedOS1/򾺹 +6q]mSO `:1R;CK;p_fn8X&w?.Ꮲ;3cG$%gͺcR܊qSK[p-gI׍O#2B>*NSEMjxPoR0N~bul^;=_\ \owW0<ˆ.x }=x:~~/ ́'{Jz<X/ u< gdmH3{ҒQaFh> 0TRk,M08*yґpom*r8#9%vCU"rؾǻiyr>58pVx9(Bũ =hRPJ`JB W,@Wj?>Zܦ_ z@XƧl=7J)0۩!\+Gt1%vm ECZ](g~=bDԑ@]2NĮMts )K)_$#AhaSΉP:~ܐte)wzQ?3bn@4HEy_6THB5t_%\:3NI s+(M,ќ.|Sm )sa"a$cb@|tśhU%FsZOqhCҠX Sy,qM|>w1̒n|ES'Jۃ!`ұ+o#R/9JmVD YIG KMtoboY!hqphrvn~޻erJ42l'j9$>ѷrhEͰf>(s=a܆͞7T‘EW, %6gEO(ͭG]e-W2pNFL]'ceYHR(m{6J;Wa<^9__WeTrbdbO?G86/ي0ራr҂Wm2lɬ,+'&BŻwP|q B@F$(C^ 702[ivyQf1OojQB&hkzD+[THhmpk8j|Pr+ 'e]YyDfÔCp3ZD.07PE_zұ,#9)O-&@tThX]aH9Ij:8Cd TlMO;8HI.Pydyy&/E_;=!04XM@c^ʧ飻ER*@#\|[_->Tԩ舰d3sg} 9nzR"d5?laxNlx XY`ӘZne귳wwS羞*"}cٔ+tڡ,[a(i l  Hl?ӷ6FݫGkTRp3F z6|[g}R5`#a  SRo q&z*_Фrz )n?qf]pzwCI?*";0w]%$bt>&X #č8'}H3ڳ\FtYIO-5-e\(/sZ>;D,nƘ\#%~wHQ[o>=>ʩKQ˓9zqnjT{/FI%@bf EǴIv^<78Agƴ ɺcuD"톂 khcזocm? *z{Kd @ʆd=m\_lxOO HFt OE+n, O{K czH„ 8SSNM=joc"#}j@(W]6N+h8g]{8b)TIg(K%8m76Nmi{zV_Ǵ.Lp Oz]F2y)$%yyfDSej<>C腳i-Ț 88=@+}ФbC[Ÿ LX|=,޶5Q-yj>f~M3dL(rܟol',Ș+&O65|ר 'ц'\ƎGoELDi䐒vd}3 UCӋO呝k!xq< aK>I4c,c]l؍+&@={g4T7ZyMXIHQC>HBce*ɀ8Pa<0F\X/{F:uID/rЂ #)Up7XSǿ*`@}j ֚IX :z,Ug&Uٳh:г\ ~Ep,/PpLyg$LOS'#U^ <[F&! sQ;FQcf(=j6Fђ\qIFF+G,˼#]=NesYn,?ym'n[O9+[\ң&hSthB*ũ-itB$XsieI|νS9i1RR ڎ(౒)a)D#qɬ82|S~1^Z Rh0V83*[ GŜ%`lݑj9wyV.̓#Q.!m":@$gqrO ߈ r6Ig9 jO3L9qخc1ܺ1iŵKɞPү%]w#'\;?&K "J'Wmns2N׃v{7ߣVc f?4OkmB=ɏ&pϭǔեH%/dup%Szba;z.gȵ<ލSB VM'FlxpdתQ8MɲRDu*nuJ,>v^]VNX#&2@`kf%=4VUCZA1G➼o5sOiL潳MEϪ qS蜚'r"R0;(ɰ I3eH""&톤joK@!p@&eVd->q5P멄)OVM_bF݌K2\Q \2}* WTq3%rxXU.aqN]q<J9D؃}@R˓,[~Ari7wO&ĸ"o#  C ~Nl+se"[r*Obh{RT.)o>5c>{1')MGr09׆yNNlM$5%@/UW Be5^A^+r| 1`/b p!tCa9- g1OsD_E$tsLc@%}MZ2c6́*CYaYZh!}eɨ,loȤ枓jKIo#?ɒGC("U؏;* Φ)6R0[wXi4ڗg`2 #=fw#fgAS1eX ~W$Ḱ$Vl1T1~q<31DiS*D$̖%+Q"pSۣqc CMTp ƍ3R;Ƚd4iOJS!|ͨS%VX>WВ1Hx7W&K0*XDzYeXnq[^R`46 9lmwc}8N-~^F` V .CP-wދ@cwl&ߥ)ڴW[E0Ou^;.K{Nʤ!~0lFgŃQ=yD3IaGJ7ZrQ[9t !쫂X=Pflٹ$_)G]]1LQRP1)՛#DD?VNW^B= ѷז$blI>xB3TbBXԘYU$88|m|7tg7*O!Y +q1; 0#C x6̟=Zj9WC5dڝʐž7e6)QcYչm4W1+i9k]9O_cԆx^\1y#+zh vWzCE ,!BѬگ~pFqt~9Pd&n: 'ռ gX»8K6g̦D iA'Ed*UǜcQm[zQ7 [_)gj& | Ic/3SM :[n)]TuwW ܩނC rW逾qtJP rV8 =7k_RZBP(E^vr'&y~^J@ψ{@{8뎲Uӱ 8 .{2Zl`ޮ?5&d\q7e鲌BUck]Öʜ`,3%s@smw$ǭ3=to$'B[UuIL p7rD9tTb"L6׊"7OX} u;/Y#A] œ"HYvY'sOzFfxp͇ZP.Tއad{J(BJFYC~V:GPݕ`Q) j7M!=uB.P )Cup"1o#U&BԯTQ#jn_|PCJ3sMJR6FRE[TtF`D+ptR'5fPHy|8lhQ=I/N {WNk;Mx^)Lǧ#9nԪ<Vӛ1Y&'nm ǀZ)I±{}l1\aa+9 d7 6v?84ʓOC*k&P^׷p+UT&>$k1ս-U{bKُceLX KUE:O(7ѣk$:Vv$p>Qhp'8tQ`4`X{G]ˆp ]&PfcLh6b 0+-Ƒ,px2kz6ȗijV1\xfcl7g`Rg ;Finx=WdK3@U1u|,t>4ooͿNf"X󊭷&"w|#3it8%٬!Ơ `I:MBdI#8<0Cf*=aI#TvW:w!,A#PVlr#<^ ŋ0T<$ })zU1֣LCN;tU!tQ]_]{[3ǚi!y&gQ* ZD{si\E^Y%|YbJq}(~eOH󰓸T_:)+EŒ`0[Hm&xoX|Dm(&u xzVxfʺqFFGFzAS%:Mb*FMV4S*Tf iO\P'HJ*y8h "}op1tfrxYF5uT>8]nP45I@F>VY@ ~ƯACti5P#1 Q`c)ԑ ~ K܅LkkE-VKvEqYXz>iNv! #uOo'l\p?K~%Y!9wecjͼ~I\inZw4 / lc$6JqrjTEmv^ H+[c_1Z]\aJJŰIU{O7fџќoa/O?(d[~=*Y^Uc{RC{!P$\b[1kĦQؒ"w;.b W@&1zX|%@6WvA]ŀ:UoR@Q҃u:Ld9TnP.L+q ]Ɏ痦Ӌט(re(yec"^qӹ{zF1H]NE`$J@kZ_&M×_+Aum:`xݾĶT00Y|q265ge\(Yhm<%KQ,:嵽1Ymd -g=b`@evv* I7!_ϸIgd1ؖf`B8v.Pb?z-̮sR #v9ȧ,Y<K,FNAֲ^h;#SG^mþ@ l* @`RB&JReUV{, 8vPՔY}q3?wއGeudw1 IUR/V~l KcAr CZbp Gr_U)# kBrV֜լ\wԘ)D=LO62/\q)"YP6g cR- .=n9z VKlLZ@w%O.@wnw-D@<9PŴG^-9@1Y0btWD<2b>*I }^Y%3>[ aK )mxP#bCQ~[{j)y"!~3ვvM5 +Ҫ2&RpE \u72 _=@p1Cv#>!IcX "3aw~$ȝ9N/XoIɥ^l~y\·~Q`;@2G?X3` 6 IUS/;OM3G*ȔCzPp#Mh_䪳^џs[.ÑOsJ^2Zq@|Uk,N_Y=g<W_H//E`牐pbժ|i$'`L-P3XF+1jx0AK ynHuD-쩤uR;&S2?r."E оDQugvI-pkDjh$pNUU〺BU!vfi00k!4sM粦bR/$۩WI R/2x8e Ou3{]Ov\2pۉB'>+ze Wgj97~Sy ¬ÿ:%=#F@cӊiW!.{ :#sQs͍ 4,QFeI9%`6I ɐ}"C2[ ơ%(Fn~[jT:0a*,y74İ8`=V@ik&!FǶ8[*N&zӀS2. 1 <{,DժQ(Ta]:h[ܐT\,rd TXd٧Ь&Y0%D@669|ʆ&lv*7qcƁ.|)Z klCFZĆ2G@ !r" n̼TIk+G㈘( lڏqұrԇςvtsM.ptlLRp$fSbI"p. "ϫ$M$8tzW蠍,[n[:GW^- f Gz@j\Mzn2T-|Xa"hIݦ2U?~ VƄ-HKF?@d]`!4l0 >:Li8vmȲ À^iZG ZA͌u3,E2pMH oc?ĩ 5EWE0qSюJ|L{4o·Pp#nȃ@vt!dr( 6 Ji<6țmuM{sṋCQ&MGM3IUQ3pPjxf] j+,6q\2r ͖g1^Сpm@}@NKQrs2Id h)ozidۗdaQ].Zۏ2t*B?7~e yJG!}T=({SΏ-dK K3JڈSf3QXd1&N% k k_fC^hkfD2=PAJgԤW"PɓB Yg $o #-ףԀV"i$>'Xlj싃׮vqvyxY*?aLgami<6/ڈ4(Ю-TU^g9@ nMwR +6DXnD-+f ޵'=lM}Pys&ߟ6!-"?%cK fs#"}'N ۈC4 N?/8[_B sQ5'c\+Gw|e1W7y+p%uqA:JR<9HށIT[wp5Dvw`:'!qVZ[P[wK8gpr5Vc_[JD2;DE[dHs?:s!섧(ݔ*cEoh:vb~e'l+)8j7ќzsW )L(Eǔn0!BC3@MdmY$a@TU.]F7KrNh}rMNpC8gI|,;.t&(M "Gc甹E7y,HV3,ZoR]/<!lTsy_j'!F`'팃PGXx]&Zit_$o#8#Ps\*7v,@rW?wr !䀭LTf@G1`H 9QijZsmfgcfb rW5`̿{DcMEMᛃӴb)M=QZa4zXo `XY{}:" +0Eh.*k' >+)66 }]o̺o{Fsq׸sh${H wQcƅ^bcq1b61R%>p,v>~GQ:Ccm]!Xqs()¼Bq;A]ܖz.>ve2 żV7|ZH>$hmWWLXY瑺mHp)&A\zxqLA5ʍ`,aHq 3Sۓ;ii!Am:i@I6Ce@8b61$uHnVVDB8mX 鹔CπGAxH?S ltd Q;grdT&05dd\7#czF|ϫ[ޝ9AX(˻~U"7/#~3oҨ %I6@GEG( w 0c hUl:aݪqC Ӡɲ-nNvCEf/wI2d%Pp|灉08>wxC7l{sW^M6 γ3aFu 4|U&\k$s^6V^畔v$ٽ{Z <\87 gڲF\;eÁjU{``8&ԗ [b ~kT{';-g7MyrG%ѕ=t!.f2ݔXsÚtW)nz\X9JIA)eF1.sBW Jf >!{ 3>V@t\HΎl eh sqGRH\o)%??w p'MOl1(\Sq]åo@ Ҽ nu'jp!GerNR_}as}H{^_k pZ/IpA !!ћ -wFt'S+'J?] mӘg̪τn9'КhZG,'*4 & %=y/۵}]o$<;bD6uM` ߕ̢!o4 Mq6T4dzqeI}[oGMHzoi/s{t0{W9@JPZ58Ļ!+.+Rs8/Mv?)*LEdgx:IjwCq4 43o%+rؚX8f`[^uh QzCATӾ"ͳʶ)Kp&UϳRs`T-2+`ї'goPI63V>t`nv:U[Œ3ڹl.5{FC_ucmF Anv[xxf"-14¿#-g2&*UDBLu2g3(G>D~-+f˜ rʼn!ZR?bזB[}djLȳr{<ߩP,9\!3)s{UlT=d]{rӉ4ZxeV*n\qE!izHjByeC:BHbpNEe"lJ>0 S%=V`T,r2JVE`@PkLcOgrkLgOTL:9JO :R2d*x+%'5}qwUPl3U8tteq@ ol٬Ј ;H7ħ78@l?|a^-$ #wXxtEq`0g+V=>YUٴLy] 7Ckq)JR.m 'sK2DYḚ Q5,-N8[Wr^TUan[@ '0e'xցufC>/dV_ܠbg[}8.p}Ѕ&t;ٜ Gnh| (S|w[]WJk<7$MKF)97%yjub\b$*!dumu5l cjy1/ z,'8D|:h^'eg &D'j*7(i r#h6Ncۍw,n l-5TZE1wz8ݔ*[rʠNm\:ֻJ}FQ2hn;\CxmL)ɊɊ?5,<&JQGshOQ.TXp1i(k+т<}? dmY&)zJbwddXsSBEs{##gS#*0˪W5vxM!}xHݷ`.+*3 l-/V̯9OqO /〧&7\ r0yohI̧LUmja]tTՊUtT檩Z"Y#-F{VJeAuc_J@ I{(j#,B.M qG mN1o-Xmn÷Y ?jG%.旬/˻Sxk(EqKHSBbV"HD;ogkJkHwV[G]@*+'%9to3DTDvtq|K0Xɪg}<èR[CxH2F%Aݔ,hh(ޯJVɌ)y΂7f=CN df=E}\gGB2tQYɏ5_-'g)ߵ/wR }!1m90)8|6$_*^D@+,2Q«B*jfӎ)MORmHi|^gړ-2N+Lav2|pG:6Fzrb<2*Ga HPoA-WB|-V>z]*O3 Ed EL&=#zG@Y+AAY"TX=+`q 3/{ּ@@y딞k{]kf9׈`G܆kكA Y2Ab[IQ%& lu .u.J툑frEP@nSlf\ 2KboFF'Zs5?(veEO|,ޗkKoni5U eGSF+b[Z1X=H 9Ņp{wvoRiqrc3Le=TmT~mf?*W4"Y_Jlk羂NG5:$seP8'C-Mz |ӕ+|/'jn&Byrn-ï(]zh֯hYe =R>Y-d:o# ARqbSAihf^I=ړ0sDjgw솲P=OU kJEKMk5%PR+G-y'QO+V,AWo~G|UTwr65bxX Jvw@O&@+ϫav uJ/fedoBB :G^RM&rrvɹYmOr~Cv]&5`axy$|,ZJ-JU$qc\ۦL*Oܘꕠ$usA}]saN)p@~*΢y(u҄Xe^ou7 XdX(ܬįP)CZJԘaIZ͸p;^ :`Q+LBt~}Z9pP߽hl (yt7ReڗNC,T@}CNAh;p9F6N6z>[Nɚޡ2h?pDƠn98Bx k1^Q(^{O ?1 hv] Mm9x[6̡ڱEvfB;񜍧es-?!q՟刘T/.{ =]aH⼳()7_$dP-d:ڂ .iA9ʳ_KHQp;@KE+>e|+㩃Bwސ/zgNnoPbԉN[q3b!e1v\C,ϗUd\wُzJ~IP]OqYRj1DU8AaA5Tg%.T Quxm6_@'9΄Qś"1uFiOlSfFl"/>,a}xM#os"z%hJvdޣ|2BW=~K-OOWe`ՕB:W0_ 3B?6`k S'LOiUv Fط:)oDS)v:f!d.`Ԣd/?>|$/i8_kv( cJ |+^U3a +\d4tf[/ [Lś.Ғ*S_Sić51cKt [?"k F 1m7G`X=BwptvjSO' F'}-NVzeTݪaGAcA/JLMw Dq\){gkv L~"*dw@ !L4d@-:>IYDx$0-vMWX ~ a@%UW6yG[MNW5ҋ2h1sw VGM.:lT$S?F^G>i 6}͏I=4Y:â>fUa;k=mxq'˕=ĆTKa{:ˀ ܗse}; Jb2z܅K7E|: qUd{-xN*v bljַR Qj[IJ Wžg,vlPл׾^+W^ר]UJPF)' ig2!`NPI*Ǭ|3(Gß4IgѰ}gbl@_4;2߬JS >/#6mFI:d -Q v:N }gp]d!/HI'';/s >h\%_ưR0llKļqH1b6~b0*<8#CkQ"Jo 9MZ;5" u0ф :]8SuFTM3NJdPf~MaqY }TXhXP#nb`D  2<1W ojՎ`)cy;u ,W 1+%>3^곫+ ~MSTD {A5)Қ6 6),'3ۅi}v+nWOh@wxSB KDR,;l&Yͧx4T݌ w<7"B{*#Z<9lH(ښ._\%r'MIl,;;r%.VdeeqT.]HLOΊ 8\8JvB돱n hH 6,:s/ǥ#7&N} h1Wȝ_څ* s R٩% FUQv M}":oQ\j8nT6!cL/Sž3`A[^F k4ft)ǭsEwCmZR oAa(ǖST'iy*ʯI? :a+5!oU}8Z ԧޜj{UttZz1Ij4du "(gSk|Z/*a{~i@fXwj=64/tUeB=R&>-+ga41 , --ɸN/;3}Ud|9@H[NSF'-N˩׀l? xUk$X+qHǠƛI]3 2qW`7?CW ;xd ${}UU҂G~Vel/lqb<[@7笟3UE_ 9+Ց: dcAOΊN()kQ vgaɍެޠwW a7t< q}zM|8e ,N}fy~dͶw`713.C<5]ر}7JqyC>; D-YPY*+YGgVp4b Qa.e!Y$IEm.± 5Y[;_I=$S -5>1K7v|-i+C%/1䊛f"| $PKl-0ky|Z 5h2k3f3u S(P^^LO|E7rAt.xzMvMlQ=yvEgi:mWt3,F UҰxD_3|wTLܯYm>|X.ٓA\59mo;+óOV3$:lw4Nu\b4?7%5n,<ۈ7˞OG 5})lMA)'pPP7d<%k s2*M8| IO"IadOFMw2eu ۭ=aLw,) \w--oR9VjCFӴWO*0-xmju#&WǤ|>X6)N;<@Ab8Q́6GN3_ ynm%|XPg^^q c8pmRCI'җ"AOPN0_vyh?Ꚇ]"*aF:|e/iXJLJko?|RWIfZrӯJTD4J9_RJg|ձAK;~~=>&eTwBpt)\t.].(EZ9Pˁs&My Fa cw!ڻJ Ƹ0 ضqdM)ijvȖL{9aF'H^f-*o fKy/uL؛o6 V jWİKU&O+9Y%ep5\ ߠZ0c3.t\сa}awCўp|#H߁:**)N>?hA+iMq*J\ ot(U,/g^@yS^Hu7N2:n+_}"*Q4@(Hf~P,:]p^LԭF VS( Z ԗ =jo%56/,>RHx!GB{%+T8YHr_D/_45F(OY䠑NNjGB4(W"vP{񦯼scū?H OXSb9SsGa;U1^rj$cQbu_ `~RCzof6c`,BFS3Z &FQm+G)H nܓK]:[e웠V): 'U&c8.-[Kr݄~[圩.bϝ堄 }'瘏LgLVS{-*( Sfs!AЮ`)vXf"15‹9vAa: {mpTF|v(_ݭHi :(9uǣq-7O&P(m~WgoDd܀af;Zwɮɠ K Ty6[wKB62Agj# pc0?2 8jz7 UPIEfDna,P"ڐPkT AO;IeoЋnS*?Ҋ m@-$C%Y #pnh"F*)ngLLf ZPC.k"Pi6wMUϚk[87_*ӋAI.+u\|\Dץa V48S:(k^oEx" $ʰlRœAk@F Gt!GےQ76 ~bh^u1ܯ޲8/0~6d f@z+rYk|NZPtpg VE&?{^g e/&T3^oM9\,gd~:] j!QTû*/v;֝C!%ǭ'ֈ1﹛żI]X;9c >~;CFH{3cu|>-qPXJ:D{3Ŭ˾787!d(-@!3rΪD?`?[]F2QP*c=i1j&j'uoR@8 )G7 L7>M8#ۜ=WMVuY\i^9p:ZʅbiʆP|R!;Dm;\X rxD4/=1R$^ވkjB2I6܏&%X~y.4#X `fi: ''' SC jϡ)n'IRug_׋_Y铱G*XtbeX kӂmxZ23$ ϑkT:m'[Vl[su\N(<; ʶ)F8qٗ\Kc窤LfAg&QKbo"$:;){8;Kī$"=b,[Jk,-Σ-ÁTw&˝qhq2^%Y x'Eni TuAӘw|Iu%'P,'P+LtlႠŊ>~ ~sVwv&w}n[B#ؙg9mZ'2ǥńKo%RAV{y)llIP\|`wy^&KM݉RȎ!\}wYiY)K/-dz!Oۧq&9 돗MS1Ϩ`e;w@ܟ8$u$q?s5Te9mD*GV4Q[I ^!7UmO W3#u<GG>rn61.UW=Um Myzk3<dؓ땂dOUuu]xl;#K5TқOE-<{~$Q> X2>5Y.xs @IbMoDր)LZ}.3lVT(Β]޻ZGzzy B/&AeDCzϱC cjjVEKWyZ$ihι>vx|a&Lj%gnD|,O$4A#H!dzrUlRY> AxIUk54e3ԕL 3Be溷N\ ,79gM@rqY[̵a*]R=E"Gs *rh(ЋgiZq%`u ge sWb2ʞLAF}L 8iuI]Cx>neÆ\ 㪷G5Dz/!T'Cd[2+ђ>*榤Xz+g="_B\vb5W0u H-GhdDN`</ˠtwDpieLә|unsO~Na4I)6|Y)}fԻL!MOa}wYs$]g*=752KŧyHnVdp?m%>쒡bd1y=B[p>\ZLlt*)Y/C6n}@%嶱h_8אmu|` Ohe[7Ib!!Da9 ګFf՗EJK0=uKbfRGOOd6A50g9ܬgV"?HUe}"5xZ kҫSrؓ ͥ0(NZ6 !TA@U_"-pܲw}kyw9=ůZc6<+˚-6:Q?ـo$ *UWt)ǮmV;aifFk= BB ,ԁ A4}6NψۺDkHmRb]W*+_$fG{QF&NJP<~.'j5šMJ.v𯪏hqj9` <oOdAG qOĜQ/(xtIx%-*8\qEqc60K"s]7T`8=qA {Qmc?7 0}_+67 ͍dSL7x/8AOX X͐ *5B4m,xs?H-R\KPo݀ CMg;e/ńlwG{^$8b򿛟IϜHBTSu=]`^C&ܼ5 n{_WB=mc@ ]q0ݱ2g|GF}פYꚠ-µs.EZt1Yѭ\Vtid80Amƚ7:!?w[vJlUx9Ap|5.fAG+$Ӡ:1A l")c˭EVx 򮏱=^ƽO/1JXY4m6Z!J\ 0qa: 10tb5Q < FRݍlC䗵Y~'Hgqj6 z$D{셎wZnO(00s'˵K B:SSE^dzŅ-f9 -3ĄWZZVW"?H9W XLm>H̙YF5\FƞI9Nr<,l{~A mQhKZ,!闳OhnڛSuQޅܕR_ v'owA3K_m\YƳ0a9!s!~jF<^yBcuRBDݠJ@N&BۦC;Yо'X7. u`GCg\V:o+T[x63DӾsK Gȉ01v݃SP!TU3>zGW=gΩyK/#: ֺlbkH2:Y\k3%K?͸'30q7nfofQhշ'P.ʖ8dAG%/ ѐ`x}ҟ(~'tʯaci0ŵ)L΅13i`x&A\̘i+mǓ_H@;=>`Df/k)~$$tӥ "p=y1/O2LTw5yF =gj[Ex`W<Z -6I!a}QqShЉ< @3YE8-H=W%!S=K qH?LO Cz24 S'ȥԠynܔr>0 my,"zX};Ԏ)MRFRj Sr\Ժ+\WkUlޤzn`HcwL$TDIþ=}67I1hy^N@sؖ`Z) /`L뫐 =758L rEH_kzz =M\:(̊Ic5G,TuA5DߑdrFq/?f-u -#6H V8:CLɲ~\>#P 3 T  BzDP`b@4XhSE"[u@*L '?+wS6BHI>ÀNT݀B,k&i})OԲ#Ђj&&[]054EjIunxNSb&-G'5pM ]aWb@7>z$k!*U>MaͱkqlnYd&GǼMq}SɁH0M4{JI"o!)xOs}`/k lrx1DSOtFs Ef]a*`>\)Of8%Jfw"z5g>kꃡ˒/,"Ύ\#R?n].F}Z[8ĹŒ@r[zҧ mZ|xYC!U\r|9^\Q}"Vf5tBQy w#@Ա0 8 w[gE5&}"Emmٯih ndNxF*uR!vzfoCL{-uGF??a֞֐+D?r#ˁ;Iau;}SY=݊!>CZ!uv*s?`T-1 biO"vm=}/PmEJU_9@'ͱũZ̧VN9VGh->Y4wo+ѡqvջd * ȵ`cbա.Ϸ\ t wz*juTЅpW|!wlXuB!Uk1sD 7n,:٧n3"erMwgEe-+9yVdHu9<iw#Y bڢa! UD$i֮&A0jjGZV*>BmZ{3ٯ*&q6qs\$.R9u-]`rV }ۼ]oƔHY|lY1"ޟ7c"T`[2z*l 1+:חK :"4{J?Rsk @4V<Pm,T 0lQ#+boy<ԩCZn(y?l1n~5wy7Z}aP35maC㻿/V#kuNAx0k# 3 WuNzr>jn'.1qLK,!*vRTj_ ǓC{`3!OM.]%;$T)z).)4dIællIHb{ 2GY)l$趼3v_w; qՙaYXgBQ4DlS  J*Q  f&VvE`-@_bi"+'(/@s6&SA)^Z*+ B/D6Kv1yO0A6;[ Ǧ\{tq\S@ Hgw[Hix݃$g(=;Qn[# j0$/̐K!Sﴗ*!Pc&4^Lh[bIޫ ";EמsX{De0R ?+l½R*'v8ߜkQUr%` ZL*Ǽo G 4o~t<X8k2鷰҄--wJنol@~չ\V1%`) Ģ?$OLXG~$”=|7k{3Ȑƞ5OdΎ\ѐS)zB%ǭ,;euIpQKn_-{$vжȣߞƫCgj=@ |[HDs%pq+XSE(8$ii2@7=}m d:&U/%OE=f'Fו-|;L]ufصS.Ƒ. (-vx[GZFmӱwmyzB]?`.4.b>,+y}_%eS6 掩oV~mqOpӠ!c|p%VՍ 7Oyѣ2݊=/[% p+ϵ6g{,ħ퓉 5QALpQZnSUNY}Z sFLi >jVLa$_Ɖѕm{f(c$QacBeXߛ|5g\巔* ֞9]eV6n9%|ɰę rb%bJk=|c˶4MN3Wyw.9&-3Q-(X^[Ϧž<0v"-[$4d_y,,eO%d$&1^A밽n_HrYej~ճn9qf6eY료)8fP&~ j?8ZEWÞUØ!ڡҔ1k;ЬKéUkgN*  @ӔAΨ`4* R,  JNT8^7(Y }}Gi}3tFMFe&<5%Ew:@\m̂e$t` $dnIKGR7sTM#h\@A:U:Ε՝h?(VfޡYeӁEz911K.]VuO7ǜV')-5VkT4.c`mY2Vͣ2} ExQ4.0+i =wW8͞y8L*s_b=ܽ 0x@Am2L!o1!.Ȝ O|X'U0N@^$;'ov_IA\/ LJ=&]eـ6 -r[וC%\z8"FD<&(4 چQ[AШG_pA4$@Psd6P>"e[.L0h t6!^loor>Q( B}(9!92͗8@܍8sW"T*,6]Sɣ:Q@2dţ Y|-{[߱3T>{ ӻE[T4WLcws:p"1.|D>zжDK~GɷH% rk=&Cl~2B#72VHb;2i07'=QalP)%#-^)*ș/FɰtΙ:8(d+tc#@:k%Vg_7'2飍;:;܁?Hl<Ky@ $ έ)/8v\[K;.?D\kebC׃:"DoeY{L6c\)|کo#eQXMW#Gl 7e &Fz~MB%Jj}l-zՀľ{h'frOnA}&%O72fZ? 9f7ƉD/kϫ~6zgqcqA3#1Z3n%X]Tc?.5-x>$%,ӑPni"=z)pԦ(!m X$[cY39̩!L2 bo4̴{nNܥ!8<ʽ.EaOe 49eá; o>kyXs5ph$+IP6Je_] $P@KJ%`;<ǁƃ;Mݕ`EL 5le'ON!@wŸvaD h)r?[ 4tAO uHǑnW AAw[j%ya;΁A>8RY5sk{tvN1v"-pzV̿tvS ćUX/Z`6jtԉ.w26><O#bufS^C}8))Do8Z3(n>rOc GO{ƹ='XI3"J+S]E3Ej1Y6<ȩCPr*հm:EevGqyʬ}gYlX2[U]xo /0P C΀Lxܭ^tu|[ XjsA5TN O>|1y/n1E_{ >?X }{,!+Mc] ΠGZ ϔD⎆NƏĉ{6삱x4o!p-ZQ )!y[PKYbsF#(#c ͍> bF=0yuS5_ȟ\913suڹ^lo^.;dCb<һUZzw* rq&:$_T ބ\VW8Q%o}{4X3-AaJ/K-+NȆ14Gxu ̦Kh29 t#iK3$(@Vȝ52?hfDY/ByF#DaBh$`+\dsZmϐGv ]=I%@;# 9LoR KϸIILZ &z&&sI:^լv[!l pMq0c2@#,mWl rD56 \7$MR_伯n03(fw<Ύgl'8>wR/9I Aq?6Nx_!އ4+\sajQplU 15 RKt/1ȁG}!î%-lqKCAiު~_M.5b+gg87q? 8by]LFflM"vޑ]%%YYq?@A|F۱d[[q;hˣhv-)i}@+]5ܠ}AIWXɘfwNjBҚ a+9(dɿh3CVNĘ, ɺ`6A3 ļ28ːC2bQ1 LRѫ7tK}ik0(F iOE$>Y(17!6>C`}H!\1M3$0舦uO"|8W`G[o676/'nse'Au}#0.c )p܄/W@7":lf tG-k-ņ80jLÂM@}KFs7[ *t978! m$f4M (K-C?jӒRp$L' a ^ he 1x s>]C@p3-y\l1x+;{څf]@m&dV[DZ^lm`ɏ[6lz (OQu=GhJ-ͱj{<ɖ l4J`Fb8pV ,'Lu$lಞ! Q|dpY"s:8 uMvwВGXM%ݣ=i-MΌc.YZfInke0`7Nb'a>FDgl\Fz3(}g#wjBLJ^=\ ._~y0αOX:Gie;|όUbGZџWoQcAco (쳯E`yX5:)S=5s[z m}NF6ECQ9O~x,="jDp>An)Qw6gz4ϼs[, JIXM6\gZN=T1V#af;5H1Pe_KW4;(_hiżj?Q:$vjE#NT3!BMbO]g5#LL zK6pgA3èwZ>gmTOt6(+dG,V@oXlq`/e].z PPǦ]0;v `{|z ̈Ǐ/Ijn. pQr_>fh˓2@8t4p=k*!I윁fO2M7meS7u{#2M{Ԏ FO2bG`Bi!Ogl`\]7n[#L #`xdˠ.( PZxф󓏝[uA`e=uQoW|TA9EoF_xR@7[-geybSiDIM6BUyMcGxVAfV=n"Z1MLNFwk\,&>m95=k@Ʊ8p#8^\@'w2׽C>ߦ q@;`8[vx+7O(8XqYPP+:}P֐_>`5|Ԟm+tr5} 2}ր|0(1f6"Xco:ሯ䂰vm7Ir.WCMm"P1596_ԻkDiuEa5Vթ,Z&o7e9oмk{ b 7e3V|VڰD4=ԺyBg6"Q``!e.@taEãͩЙWm^ Sh,*V\f~GߊѨ|#j/4(;"siVFC BM0⤣ҍ.@QY?!?I8,%f^:Z t1{ P:"rz\D c' F׬{I9YFQCvIqLۄ'{^}`?c+]_k1(&l%A8o]r\,sk#B,3k3i8hk[¯ *[󾬨SH>i$Wr,GIGR-Tt 0CgzK _'3uE׭e0I虏!IYC#4l5̉|tKThp}GCB@3pη e8AvEQ,>RREdjFÆgTb3լ$|) юgY\@]dr8@IC0iD͕1{FY`1T/4gmƿ$ބ\UOd}>pvݖdЬ&#H+*p`DwO7:CuSeu?W|:6o#JL=U1<5&>Ǩ\ӻ Gn[oG*b8J'|ݷ|D)刣@x7~Ch$T $А|>3&#ߑ1y²c#ui1ë)TO9-,K(L.䉘) ]-f.@>xqG # .r J7;NZZ:p0:RWŲJ$ ²TQ3#HFP>`S)sOBtwU|xo.GYclo§uFWpA+8UI%YI; MCs Ѓ0K`N+Hm@G\;uf lQ4Whc4_e&^`bl5)E,[ۨ`0f;)tPFÝ11.ٜst M\X!yt"N=<ھ/8i(r hdS}XK"؏p<zf؎ b+?/[);;x*$z+:~mH}L!&Fx6*&xHpOg?+A8 vӒjbsQ,P̵!Zulj2әue=N_,O~A 4Obn MB$|ej]ƾMz^DI=e:`Փl;l4_n#)D,@J+(EfZ*ccAzJn_H|v&k\r ȓ /},XJ\0BOtgamB&&wʥ/aZG<DMPTUt^ ٱ`†'1tT3#ڋs x@.&|.-ў% 7/}<򖊢ˊ;!XHU5.( } #ۣ:|ǧ?R+K8vϮ";2,%Q,/3_V ɓ!+kR2@(q8/S9|$U?%'N,J~DžNDjߨH]3Q6 ҐRwjcTF㆜>dq;lb sDZ wa4ëνޔ3ML0HӢÙu L]he{Hij/6_N!>4&If0^y'ίyw>s gεL˹op\L*e"N2S.R6`2-^0QmMsb0~v.FƷjC PHx𳞁̀)c^ +Ğx,v)*XW e^߱ 0H!"=ze7xyxҊ1bBB #/ځIZc6{s32ݵYl yS{#B@ӬI~ /&W3pVmh7ڶ\8OVI4;*ZRR7Gܣ##;ř0X8B$3^g,`=6t|D}ֆRVk%50UG8WuvքMӡZʙaKWN#%| 08 Эmp7Lb2J^ BO&P/$/ќD}?/U]2z3 oT2`~ zsΫݏ_1PH'. .RcfIrw\zwdB4QV1Ѹ0*XrjXVgv 9t抜YX~DXv:?*E rxiag@{I"s,VPŸ$h:a n=3Rn ,Ɗa4ݚ[5跹|k:x?$n]G y))~1ud7~H`h,%q+yEBE5ɝNֹM_n^y`嚇0ejk6Ab!Z Yg8}]'}uaVi u~3E"Sa?z@2uq8;(!_žgII==TԧIL.S1tnə<\%XwH%]*Eg%Nizy(Yvz Crz-n\|-z#g%?۽6H{&ybߌaU׏d0屢}#,uCy5(bmdYEﮋB1p^Iv s2.^&P7dyqM9O] V(u_%n^ۚh݅հ36^CA†# ;Ϗsj.+kf:ϧ&qqlk?}iʠVd7St,XF;=P"bU1G]OK|&Dt ur,9c;tRD@Un&-zd.{9a$"(Ӽktޡdp.9~I%p'ޡؗ1h QJ?ካg 寂tUY+p;ՔH=W?b\`34f:`{kC2dȡ_?; Zx8Q C?@r;t& բTrx/_ _Qhb]&RcwT2oU8F*BD*i4TIzR.EX>VYUUs 'YĞzטSneMSjLA$˭t%g eW#%q !~7¤b'LRƩ9N_#4}Rd$) d+Z;aL&V,yBҪ.r[}g:\1m4"kG-]6cRͫlܴ?h&~aRʔt*ʓ >昖1r7(_~h 'mܛ%oRAj-A01Μ{Q:Ɠ8LCu{bϯS)#JQ`r 9vn,%˧QQA3"8T}Xav鲛ĽlOvM]W7U\E~K_tϹmcBO6Fe?$B~" BSQS .§ $=BL=PAcmo} JՠJ! bKњ> HX5- TTZܽqAcnd2Lza+;;2Z>Blh7b2IyɎZC'dJ ЂUq19 mWV7"a_nUJi!J)V=%qUgnX2ۆ z[_H `pΌWާ)He\x|Ts`Hf1Hdgr'<45$uZW{{"諱ȳ+T{˚?O7\7ĺdqb9}6WeVyKb$Ѿ4;81Psm/Iv.AJuNۯ.ZM.CVRe$E 5kl5~f^ٓy;?c3YKpuˑG SJk$i}W2?66KjL>ڧXX |pA?yQK2/ޡ+8b1WG?)]az6Or;#qx>AFH;#G4n u?y2׽?V;t_a-%\7ζؿNf*D[bC,7sz=Kvx[~"c97Idg,bSLf0!VKfwS_&}Q]HL]{oNɧ w k~2%{lߚQMLZ*w"(:[49n˲,c=Ǽ+bE=6ZZŧ;n6uG2qI$H%T2=sP)}"`%EFL堔ԉ$)^'0&! &+ 01YtI_?TQ3o7N(P,dq|ΔVv,v dN&9$W,&z6TK{v⭩<-aA r?gH8o{~`Wl-X9{|F p?>}? {Ar7-ƸfbVL?PBΈ'#m7WɲB/_'u`~A#{mՅ!K;RTVq5|?q{ؓF_$N1YȀnnMe.ձj1g{#mCZ &L ub! ߑ7=Ű6/\p'@ݥYL;OQ:D;'poH'14erU;55U]e/O*n|gH0l޹X6 W+~)BHaǶt 5j4zT7c7&߉i"2uޙt~9U6Dja18umԓDttxm GvHٶ]r_`_Pq$`ce:p~`o:7ƚR}q2qx P(5 :NaAA̯1lj% =+9hޞE2,}&;Q`Ă4u(ZItnܯAl/v#&Ub;(ap&坓MZnIl]lPx~MmX!)0, :}pI8)dj_>0j"D)gV4HMu'8",\\ <xd\%/Ea.j]rO@B1`9!2p2 eI@O/͵ zK5DŽJ.90c6C8/%|G2XJ\oiL} B?Z;tꀓ$A8vܥʤfg?jtUVUq] y.Ja`},8L̀a:\8@"r룾澧|T2s+i \5͊GVWOIdNաch6Az]Xu}1' ~]ZhcWQj3rt1Ĝj?Uζ'_=;fV/'$i8{`vfwa̧JwDFu;rr8q-ZJa h2Z?۝GyJ3, @[KK/m>82xKKB0 {eB1Tz٤+hMeh-IqB)x3E8:qQy^VU.f(p_up\d& ǫԳs/wٲV,Gܤikv#1gb+33.Dk 6o=w7IgvՉI+d+楣al-c}[[0}þ$@ ~K$1ZR*cSfaYU71l!T% tϏt-x["$Fevƹ†uhAQn lת'$0f Oƶ6ީP3##p{$Pjo{.ϓ}=.-[0x:eዦbvI梜&.|LJij.CsM!X.  ((GPhXRR+R :c8WGw`)M[CG~B՛B6WE6-d#P]6+p cAJ53 ۫/!3gb2M>9l_x~.o>o·%Z*'rIKqk<񲽸^B&T9oWď~'uqݺّ6gII]\Hp W*#]a`zYq)n,jx㍑KAu-%T2[.l 硼HJ |" FX8"4=QEAVb|vX$QN4PXlH6({+ߡ7c.qmA-U(܌En|#1gԊZva(?a6~). n"}<vEbG[./@o4̩M@~ObM(م' '&4ӱO}6$%hrDyDv)Z.B\M(WKE% ɼmXDm#߹_`eFeA;$Vӱ:kɉƄ1a*/5Bя:hըIt빌*x;iS, y󐱷1Dѳ+R~hl#ZbޚFYZSb}($2I-ͬ|ISI@uH3G`D,s XQ{*L*lC$ۮF ̟||*grj:m#~Tk=Ȟ?(f]=а,M )FF=湇ђuDϤ־uѦ-+]PZ *ռi \ɛu3**^PQRSȘXISrj& {A R4U sE 9?З:T/Pek=%?mrXpOaGضXJMDKK*En , ˃3{ a~߶ibLh=oX7:1 \)qbHϟL_% `F|r.]^P8?O< bS$Ho"{S&ix\;.? I_kkء`>h/ :Wō5~pôڹ"- q;H_iC~wG #7 $&R'zƫڡ?"zWF<-c Qg uel}u3NϾ(l;.1[Rb]cRsp36R\F_@sC^Y,n#uXp tf/~ 70uc/9VM{0@sJ㝏#ՖAӍIƟd{¯2@zlV"sDPrSr=R7>0 YZspatstat/data/simplenet.rda0000644000176000001440000000235612333041776015562 0ustar ripleyusersWkLW}[1(R"jECc11ҘXdwIgwYVH[h(0MEM bM &.-t[Sb%e\ؑ6it;3wsfխLEQjJiUK7Rfc,HQɠJ-| ciKHESOjZ&Xh3cF9ZWZZPaSvK ˸CSYB˚]]ozv6{ НC;"xtzF=8W|gK4 h%#_M+C۷=˿KY }{cnL_Vp]nm -_Xm'Z'σP,p%n}g%!]NX*>pr>;MI0^}*s6A|ZG!z3 a2b{/}0<;&>n\L;7mk_G!=M<-i[]) N0+rn42?*Y.to9MACpk>\-gR@gѕv7.ODZDgB>2I pGU7"@[r/ACpwy)ܝhxX(X~#; uF}/#Lh{/ͳ; uF}/#\OB]2r`1^3~>~\z9?rySwV:Ы|FY#We]8B\ԢxZ=k^hd,&֮;T='Bn?spatstat/data/humberside.rda0000644000176000001440000000321412333041774015701 0ustar ripleyusersilTE_UaޛWEHQPP1"<L4 lܣRj0/?a@Ԩx`P Q*"PN"7-|Аnۙ7 һjH8Nh9eNDY5!54%ѴTJYݗ3ɦt,9W8՗յ@]rSF0񟃧j Lx / pp̣;sja2y)wÃR>OD$Lw3|G>uUd.}@u;]Β?z2|bG\wIx62j'@n 1MS36Wnx{T8;۸!{۽k o3ܡ(+[N{+ew*Knvu$Xv;g׬?u cfDa*LWj!̑+Ic׌ >c}x٬;α*\9YQi,Ve㱰>"dz瘬HѺHxQceИ %HS~\sd,O6d#R |>gMrby҉| |lBx8Өl,=Sth]hP3`xьLc"m' 12SjE&0cH5 MυL#(}vJ*F}#z8,I6Ƕ@8f;,RuOt?|&αIk|&P&!퇵"T;> loJ6I(- OOIg5k~ HRz6l1BbQ~o/~?>[/w+|M?(Z=l5?6I{~M9_~M(vfm|GPM?I\l?Y[~ǃMh#.}'eG+nڎalWK}yAVM"D0.ٜ0̧I|> _3Q;V $i&wlv6CX˅5`1d·;RǷ)Ř B.ߙM=죾NL)X71>2u?IWXDLIL)s'7Ev3.(W{%rHf}\b=:욍`MfSq?~fƬWc/bgžY<6@۫1 Fjؗu:":53)b[>7Od"Sw/FI0n62*ʹ6 7KŶg3RAyj3gA/PawY!-X&5uv kpX/2.e"؞&H\vEb2\϶ݮxm>FFGKgpLGƓ<fK.\e*I_U͈5D M{Erw9WJR+ut]ϯ J3s3 $spatstat/data/heather.rda0000644000176000001440000014710112333041774015176 0ustar ripleyusersBZh91AY&SYri~D @!/iUUR HRQHAB@"IJJ@(PJ DA%AU* U PJA  @H ( *A7 @-m5RU*JB"+Z%TlhM5 %*UiDR@ʣTT5SOO4L5=#6#)&4<AOe46OMO#ALiMa6FJ4ii04IOz4da4g RL`2&L&L0LFCA14 2d&iB)@LMFMdb4ѩ#<%<4&C&LBhi=4dO@M4MfSa04* SJ&&di6 5?U63M5iLSLCL&LhFOPT?&MFM"x# 7?Tɀdz4ʁ5*T!0 @'M4MOC &dzdSɦ6$ifzM=Mhiɣ iz@%R@Ai4i4M#ЛRƒm2)"xmI~6"3Sj LDS=F&Q2MF²6MF FYFb0mbiZ -j,cbp`XX[RhZVR2Z+ń1%Xe)4 Ii`bYMl, SRmJ25 VmŚV6KMFU6V-#F- 0ѕiYamՔj4[idժhdiŠJՅEM,2FMb,YY`K,5KZ1Z3+50c6MLa6hek&lձiLѬ3ZYbVk3V5fXjkXM0֚jciff[364kL6Yc3Vkm665lͣeml6m-[&af46cMffZMS"ҪV ʒ%mQlIM*MP&alRMHllIT6R*UTkd bmkQR.N<s3N6CUÎt*\T@)U:J *BjmH#8Eu\)B\l(\ PȂ+eTlF+jQ!lmJ6%Qq{ߡ*ɿKEy%.D| :oqJ/gM#*?>x?};H||#{TbU 9 gR>:mR\sp?;*y9Sb?I/x98kcE/G! tssmK6-3XPX>KVGhpMWNUn~\5 N6Rr l h]>B*NRdUa/ ʻ\Q=nГ[*%]Q;)Wa|q!Jtq!NQ_=o{)w9?PiDSH*W+ ru*?с|.QNTI=DoR/"HtqKdQUdG.TWdv| hxW ON(GH/AGU]WqK{2o;??*gCĽI8pI- G*8Sa66AKԞp8NƩ=~RWMaWTi9[Jkh:ܕDpkqUJ&u.);H$s4봇o'B5%:,lx))m}ȺyN)rRep1K.(QFyOq\*.tCSڕNy:*tx^&\sW[Ĝw%/UnWʤ2(|= _G4Ыj=׍¿pWG3 `KZU  / 0mBlH;̥~v!1C.n?vYOjī*{-I _cE./%xGUUGĹx# `TzHS?. hW7${K\lQRKZWa?/(=mC}G^#h([ha|\mc\6*^%WvjҼG[܁.4:Wse:.%4=~0xf$ R=V$rԯy,QbKb^^*ҿ+ZY+A//|MjuSj/Wke_е\]T7hIe'|̮-JN]~'O.DZ>R8'IYZ|߸GKr|MNGb"*gB;.J{bҕ4.SԿSp2//*wxjWȎJ~Oa].t~VItKj%ꮞJ`:<̨^F/ypB4:?I=^G+ RmAЯ]^^!hGG+K%JWW0[9B|!aU`4r+'Sev~?Y<\N~_cȿ7Z}-4{'qSqWo]>){IhG9[/JtKI8j+lp;|ꋆq.K_ T]xN2x} lrxrt.M7WRx]_HT/I.%;L:E9X|})yVJĝNUw'O(^_~һ\SSjy@bIj8/aNA|^&4#/+ȺS.5Gh'D#ºXj&KbayثS= '{\Z+ᢞW{= M v?bZ5M%wZSʟ]>ʥq?^'دWgsn(t][%.:e_+ +yܡt%7t>N{Ura.H:oWbW\Ԯu0Hx?EqOCHu2IJ%*g_GjU^%=+D겎OQ0'mGQ{\ඁ2u"|m_}NF^fII~.W/ }e+3HVr#hv:<e^.SeNRZ 5;M>sEj]>>CPܹP]Sj#N*FO'}}2TN)cr^fR|}=>л:L>U }V ;#}\]?^ԧ5q9y`-4Khgzܪ\{dožpx^ͱ^N'zƤ➏2}XI]W;po};xFMg iG0uG|SJ2}O\mz:J#D/}Gk];OT|hGk\Zm:> B;lo~s0M{^R'ENI>VUyYr2'2)}ߗ`K%ha\vI௼ǙS!,iS\%z^߂8KauN4V b )_aQ>-;쪜ܣʏ |>ҹB"]e]p7!?oOkWovOҽfŨtzl9SdNوs<[ ;L.zR1U{e:8]43y:Wwe4CA0=qd?[.S_6:NF"BmB-Pgn 7QÇ]ާsnDGuY<\8uOK+<e=~W?Vvxv{\j.4I2iK>AuvxU}N-]mpM :[.qk8r=4/!^g"5EMw;Aj=/~H"t>o}6O=_={.T5 j;Gswҗ'J\λ9{=a^ͩ4Z0rj)Ms<'K/Iv9+}ުu@1. ﴋʗj+. %ܲOarmKNCzMNj=&8SO/SEÓ]똩t7 ^gPw7H_GvzAJ.Gl$a]!u:OI2]>vC%uG+\'T}/W[v}PL'cNSשG\KG;!98Ù$ZC.T<,u/Wx,؎S}v=%J/ R{ xX9cq=~:Ox\K i4Xw9^vq:x8ruOquWez~+jay~oEpV/jK%{B=^~:r^&'Gg\}KԩxAWS\ lN^/UWuE'x5 5ttz#N^=JzGˋS+b\ : R ¯I23h'ԩ3$؏t<Â64}'C_w/}^6HtGR%AbZODdr4ߛȃkp'A} )+i~F~7 ;lK=qj =.w Gğ e*GTVp޽aOQnMk0+a^KReh/rthWҞ{*=5Q.7J'a<];l| YgwNF;Uңb:q>9ZR dW7/ /KU99/%^{ 9|gt6KʕGe{VI`:[):jGﰽV:%}ҹYI|IM!2&qz\Q#PyOi_~h=oQ: /OI}vYGR2I\m }4'mN(t_7TݴW7:X|Ί_2y'G_+>*p0N踢,#sA_Ein.BwZ$u(pͺmzEϜ#rifs.~#.tnuZu^k>fM!鴶vt9Y_W\cjN7[‘pHu*쏧\WԿA?/Kڔ9ԧ_C`sy?KUG_^N \̺\a57[*7QėO"d{wOڇs<]8qu<^"S=6#Sԗ:o>V<\mU|?-x1Ew)."{**rWgKڝ">N\<6+/ܝWY" / QWmeh<ܗwc!q'j^oOu|%y e.vaW/QUY{lFw{^&^{;NfW5= W{#O3)j'e\=/nUdnۉq)EV5u֕|LnGǃrRxzLSi6cËyW6;dK'/.fS_WS;LQOqUÿ4J| ,9I5lw8vQzO B\v}ƔQCPpx>"fI=Αy Ab'ODeW;PYUc2si\;L%^{߂꿁t\iKhtyY2SS.Tun$8rb ү%.z^^^n'Cyu; I]VJGb ^NR}Pv)n Cbpx8^'vD|,wzJ̕9Ake=^h^< ^GSSGgw.'v=!vPv KdUrKP5%s|"-S.8 6Ŀw⯍p>-T=4]c+䮮GS|܎V$sr'qhG9xS'kK\!9x\'p^Sɵ?\ĸ+.t6"%tS`WIjjW'ᴎFT`Jꣴ\|(X_vT2『:+K8Qw￑~(uy_⫳N|u#|vXOԽcHt3;?*G?Tܒf}_>EEtg{ESUT7%\l>t?Zv e\Nr 8w,}殿QXmq{L'eRL::>.>#<YsK+r> )t0z:!-(z[Ad5%`?sj3H=Aď듄i]+MJeb]t$9:a}MtG!4~V=>q>z\'WwgxxCW:e8>%y+d uq6Jfpi.ߟep)04U.WC jmzx8y{W/9s .J%iWC=΋] .ǂj6]UOM4 NSzU{#^KOuګab=%x=NI9Z>Oqz>rO|MAa_߉Sjn=pQʿ;_W/h?vWy~/Td<9z79Z؜CU9zWA? p]Jq}nm"(7r;|ZD0lW=V{}x *u)?R=֊__}_+Ex)qi*&Dh_7?+Gȯ%1&ehN&FԜ # ԽOy ]8SC_^jvyG3<6UxIW/{+=R9=wj?uUK< |agL~n _gQ'II/%$[=UNvI[D\*(Cε666bYAMPuٿ Qfu(=["Pņq??rTy\PT0DX:8!T[öq6KEQ%Œ)3x&=Ԑ%F8(nV-H-mTg9=-Vr}=%d-uCc/Kn<.QRLrY$ˈ 8 yX|jN=fCa 5hITFp Y8=XNl2p©(,Ӂ@%6lJ zʚiKS<ŸжqBN 1LTM꓃ NFeAjZ=υA8I\Pa~hEpY!a](3`?9Z]2 &SdWGj8+2)3CDP`3iP EQ4N8O~Pk&ςPZKcQ΂XV<|5sFWB< !qX{}ߝ63]W41 ܴlbf.1 6 o}V((ѕޒf&0ʟ Aa(7hp -#*X({i$lQT>VJZ8 tr–,R{ciJfqr-0rf# `\}})üZ62U{{Gq?d S2b}m5O:Ɨ8}0*w2Uh(0Gʘ_r ( * ꔠ}K i=17iLT?F#!$zߵסƅN"5ǽPU-UV Jŀ#3XRg㥡D Wڎ]LDd4w pȴ\T3Inʏ7/&T|?#&-_U ==za&3[.EGRK||1LiA;l+_dl7e($o7̖NǨq[ z E#sX}R ;bs׆ʈɼe0+ҒcƢc*:Rns/=\&ЧDZf'Q)m֏~b bbJ)cCsbf-81䣞Dg 柾]ީ<2=ib?-߇U1sۀؘ?hy/;!Q[؞<<>>A,Ý#Nu߈|++?jMÚds,WGp ŲPg6ʜל sUtO%veXHQwϬjggt9Q qۤ~!q[79+ y{}yr̀rҬeJTHTleF؃m'?OGv;ǚ,~$fSd|_M."eb*Ǖ)ׇ k=Fꡋݶ5~O\)S\1>tZ0vo>dUὸN鳪)qESySccv͒\`62𓀯1G,j/+>8 p4|tM5P_UB'o%sYK"ZbA]<0F#%c)?ܼ#]g{#c;7u'sϕwqy;Þ~Qi0kA}NY6@ (i"C%Y8; mOՀ:WJxTmNBƼXL;Nq, 3#bp'>쬴F'6uR#$^WJ1iұp8 +E\4Bv'Oc+a?=$|n7 F&6o9 G18A9.ss{LMlPDg$Jv/ <v*G\ԡ"N-бkA$w =V<ӣ͐cG]ل1y.ȨV@Dgl1x].|!uԼtm#Q+kD .]1ρр8ҭgXQ=FGAI\0uNFTOc`cn~1 D0 5Ik6h=ls`93*v]"u]4a:,ZDIhc3QMhtqTKr\ c;QzM\rXSgQ!<Ī .rlY&p.c31^!0fvqѫa_;Uofo5ـWs `DJ ny2DsC"6f)Qv3ު"Ź4`yF~K#tF`Fa#t>K>1$1PLsO@G[-ZhSjg,3I߲&.aR*9EbJHBB#,n _vkw ErmޣnLO[7Cq8MFBr>Qj׷mꢊ.J3sp?uoF"%T/l6Y!c-W9q__GiEN5Cb 5QVlد!\6NZ7byY6݇5Fe[26H2ͫ.X y6pZM1c wn*Qi77o Pu?Cug)(݂:oGv\?y]oU!Z4z٭.] H@WkXo8UcWHw=;nX/ڢoEm瞝ٳ:94j,T[Ifًim][ӶILHo[1up]bUz,0Ve_DOtkMvVϧc,az2J<3uXk>얷eZq1b&ֳM?GAֆ2*x^)8ja؊@Uom+ʷ Sh%~I"cB'ub̔_w!iZ7a D0QE}jd`'2$S䟶GiqhC;~;0:CMoIɱ6Ⱥ1Y_RZS+=VR7'bWQYA˲fZḢjG[jEӥobE]H囕0lڶKJw*ҫFlB(˦N6k[aIHeT#1T٘JdluSZOgp%NZLd/sPFYu'A:&. Ktλ/ lR!ޔ3i)=6Eb":\nb7ezDvh" aU 7Ez7JA:#jeV\ڃw Bw܈ FQ=ĵ7hbȮ˺7H,[ۡ}LvӝޢV#)s=P9uUGOp(~,Ǐ>&um#cX<1bU:3oWo;LwD@ՠXȭv狚q8{_`xp)&@(} :We҃mAaށq8A?*4erjXjq:5K-v@Cnǖ ʺ~]DG- w"D>rJ+k8 e!W-K*WO dGO#`O{A7KK5',;*Ҥf33l3堟Kg7?fk3O7RZgT95eV|rU#0{30s/>Dw>q-؝}]ܰ3SnoxRxvVsg_s߿z04Lt܎TDƒܟ_Y~ʝ}W_c\)t;ts*fJpq## 5m[<>;pר3SX=OIJGY]xڙ=屌Jx7]a>=~WwY{巫ydEOǢ &Gwwyșz+\[YWɓKꃯE?y_~%. x&8wyYMJ(i71PDG=ʭ\? p7˼W׻`xO=D.R&䔒K k.63-e[d(MI9d_kD^%{֗KYr̟yNı&ϾM繉{>{"4,B]SHEKiދkYLYidΤ){a}D 9VR".FS>p +}kɿS;N +$e;gƤ LY(c@1cGS$%BN:3iVl[,*hծ]m>zB%&tZ kwe.gY,_u 5^ΫlrԵe%Zп]Y+DŜ%:Sخgy"SVW06QʱT^T'//K8;.zvސax5W~ߺnӑ=ih"H:4hoQ"DF1T==}6+3?ggg? ? Ꝝ>|:E} l~]Ze#{N8n@ѪʺʚJcA4tttb?|##ږ͊*.N*b̗aF6&lB!B!B!B$Hf`ٌxB!B!B!B!cc!B!B!B!"D,czB1c1!Bc1ķDuq-.gJM`1I&Lf>Ŏ>՛5 d^v;Y94ĝԒ%RK$I0e'{)ߩS JUU-[ZѮ5 QLGGEBJ*cWcWưƱNm9S֧N?mׁgø}O;ou4 'p{޸zT=A=sI{uu_5=>SA۾O@P1SKkMڭ-*VƦ}^I 2n'-Ww|_0. &4y9$[e@#!#io M,(lxl(Lhoq?cY^I[q-:! !I?(ij[|r"9XX˿C"G  }Y-qZ4uw?m8#]IUlk~J&ߪhwͮ62g;ᣢ6*v+`/y,#- Ru#v%혇[CZ玘fшM6Z!)'6W2HO΀X^\648Ԅu1޳ GkL2,{[?OIoXGK5ڤb|6BPQQx|m&|\ܽ1VhմuN|δuknm̨}ч7Ӈa蔊7 vR-kޫ.[dZK?vі#H]aqW ;YkOXvvUFBUd+Pޢ'sA㉪XH F O5~,PR޶?wi~T~-qG طXU=ծ=DV["9.ힳmxHVGҸ⩪|Uu#jExa+'{#E#kQ=}m0#*$dqi_غ= R܏" hYˇ\OY>Ɓ!Nؕ5ߴ?A>Gɠ}j͂JEQWjqf)jA6E,_zВv_]1lXB{]ՈædQ-1f9^"\fM'G0>+,gt~yj_iOج#+ݭfb\>a%8W&{7N"qZ1uۢ8@U')G'T;1d5\wd f~2m=Y-p l?Kb׾wO ^& w~l'{sf%\[Ad֞2gVm;A8uHM&r#\ f\=%Q*Ug-ӫTv9>I oc*laULUg3-}rNe@ 5~Fe;n2=X1kI2i#f<1mCRn=ŬÖCnU@iAZ|Dq'EV'։tUYf1oԗLzyy:5ULdtϼwmf=SqvXD51Bx+$D{ڏHӑI:,A[.]`ETa'R'4ô;MDӟx+: XM7*7Y@w2 ?2q:vmcy F\]S潤STpO]YrTpC$Q}.˛_E4¤aaqnIq{60ꧪ֎9n>[XM07q S<#^^<BY£A+iu },Vý9adtִv- ̹G Aa/ѷ! M@/X5OGô?6K6 Gc"Ra`VFSkj)'ix^ 177ayq{U×ni\B2}Q,6uE7 ү~LZJ"I t^gXF9#Voa`7S|I̖owndXMYtϱȜUN*?/HƜ">)\b$ Nǡټk(o9A۬(dK>RFmnɏ܁V(RMi l =HTZ=悧l|7WFd=iltL*B3_=`G(e)oîס\NSt H&]h:pQŏ"Ebӓ&Kwg2x,yS;G⸰zq^u^U\^񃋎^ec_ENFrMp7!yuk̓/,ۍ[df9\=BcW@ٕU[)}SSB*qDq[QB3JZ.TLO#TTW@0~֯I0rsg;Pnt:J)G0e>?c_K#j36C/5:E/rƨ:ܬW_'ϭ3r?D 0.nnXY6Q#֫*Ÿ=_IϮuqbS^fAr@i kېA ̘zϻW jo;P$>ust?Jl=2 ͦtl:VxIv.j =98f'J̇%Ĥw;<گcXQAq8ٶgtϡ <6oHDKn!۞BG׺56hTcvXq$ȇ<  A)]4'F5̨~_C/Nd,vs)m D#k ,W5٣|L-sO;b|bـȶ`TV]F;hP)ǦCnw1l$JfspfM<7;W>0mYXY}=Hڿ'+P5_U^ji9[^q:zdVLjfqzkq* 50r-48u?R4+;qbSez'Rդ]SdUNjî o) QDFD 첵IX }ì c % ҷ%}X([n"jCLyܠ_sNN;ϜJMuyɊ7Ū'ҟYזa mѰ*$.ut)^G>_k.냖ܷg'yuȵ7onk(d v`-/3/wk]лy9ӱ,Wh~⟚+rbM!p(U['sPySޯ05V9N_Mj:`ܣ58ԗ]-U2yy zOF:+Y*ިm)ߊܸY~w,W1b B#WDߙ]%pnHРVm34nױ(iq)J);y&$bj5{Gixտ?]=U<;빺v0iCWe nΪ*& ^St#WՎ׺T*0YYy-atq9RtTxfGnO!As5A8yhpȂ8_:'jRFbu<ލFm^hgАU!Faзg0 dǝR>[v oMJb.p-}é&F@f@ ;}UVC̤wC\;FHկȟC)]g!ȓ_a洇^Ahyb/A7: 9)3OY\JYV h .&` 1Ll?n@\MtsfzINS,6FEfR>ʣ{OߞuǴ*j~j ]J qBP}oH ?>⎣l Ɏr*,!D$lP%epzT0N͏ f~#ڌf7Ʒ?+p{ԨE7 R,7B|Z%d 7*.Sm̢a~֣9y1V]|cT hW"PW;2s;!?qN*zW&[ v2D}w>PpZ,UND.cFϮcʎCGOBݏx ӵ@:.-ٖDs "' 2ԟeC["yScY5NOo\z3FLFApގY9h8EVH}ٝiJ&;e~Q[ݾ[zn\ŝu2j9J37l<$1GpL^ [0K}VI6petq cK5ӛiТ^Mn:4SMQ Zڞ?.r1߻/SцUCqA 9;@h dКcoC<-i7Rz.?5|}I9BpN%?Fo#clŢRxjcVif{>JHzB߿7;aĽҕ6ѻY bnB$ei\3 F<mG]B%mѢ|dx9w!t[LBGNjVXJlfKv˳-Ёt+O]vbړ D JݹTCrGdKn- =b: i=J8Xx (''A`/} LE鞮6<0yWccd7hL!=n4ojK!ʃ>dz7\V>(IyFziyA.Zu3/\(7V7P]n=dŸEd֙[G"їpE㊓-#['GQQ\:&&f۩Ҫr@7XgBZ̺~WF4XKyA5m+ZY,T޹lV7PxVM T DsA*=gs20͚+ -O@ 9tG&KLML8YפlutI;D yI @Ź$:m(kxղ- Ӈj5fý~EBpHLЅP*⨡/}Ge`8miӸ~IC||?jLdqź}Dk\*.G-쒘mpEa-Wh~KӲwx"#hor\ f]F٧[@@}i+ Wԛ^v/{w5鯷g)a?" Z^QȰ2"džfw;^]./̱qL*`CNu,l=)Z٨Bh x9,۞$Io7:!b!SXk@~z!jNUŏ U܊OZe|$k{j_NՕ'=DQwȸ\F"jOg2$)£VT(ܰ)YJxYt7M߹!W/{IF( !OP{8% jAZhasNɤ-ou;cZ2I5򅏖4< F.88^u\41MkVŦNyIJCBM.h 9ޟ+̦\^dYeC<|BŶ[UckǴ\NN,f2|I}N9rUlH_xGxEf5rs\9Z9 'M>ȵZWb+ ^F|{Dz ~dP@*܏Ó6`fv7t>|!z&?讪# c쑋شRgmWK]1)qzl 7'X_;͇c3'AN'&v[ Uuck"egjB&fjEFبB>uD @-W+Mks~{K$تѷ_ķzvUt틖ևܔ'ϰzLUnTVp#V͝ig; h[listZ&22ϝw.-9 F}]V}+rX{"i*R(œ-@ 0&^^KqLcONm5Ftސ){hw@۱|]DydY}kTnR14QR[̇{\)_S/7Gbz[;㎒Y,o܂d?qҡ|Sp%-Be=ur8$3>j%==$Udf հ+PIzj:ÍkXJɛ &x t{]NkL0t>)y9 z|ŎxkY`#F©dVINi:ӆȗ%v"̻i(xUQ'u_B3Nr8}f>YX{`xB>0GC[RO 6őï"үjC6_LO+Jd9hpL5A^Zv85;WlfsjZ\T3܇ͭ@ݣ'qB{4lI9~Yp3r~> '#; .BH߳5rYq(HFՕ[,2±8Yid*vč1 )= Sr<^CfP`9&3atoSB?xΙ4ݐ-W&0b8 )I927~yEL'iOvI@REMΦ5w2Rt|Ѻ֩& ^k#E@e*:`'j2ld $ *KX>e;)zpMApc:G#tXjc/% IGVUt6d$noAH-VMvX6'2)[G$X;i%Ӥ3+r_q%ALKH=YG*FMViJSR!Mz'Ŷw* ?ӵӂ223sV edڤhNp"tbi3wR5n%a0#SCX@dRT$SԮr˵׮>Ǧuq2@ʚ-<Kq2Mo9 !Vѕ\f1w]4c#PK1EտT>٧} 3{ Ҹ_옑 & 2GM/Y=F'qob}kky=ʆ(?K Z;xֶ M˿X742L?Ƕ5S b|-l`\ỵw/9J1]#yrK R;o{ފRώѽ}!+%Ba7Zx\8=0Dj!LzТj:e" [%ti$97c/\MEA \fAd\b^xmvyI{4ayDw{ꙝ #*nTe"R0XJ<H?ߚPĩ0$BB|nEK({T/X+AZQ*DZsdjj8\lX, ohv "YÈO}\hƲTl_իGOUsW') >ӡR0*_z_0 z@\.h\q4i$zH_N  (J($TT U(*JT(I$  )QUABQTR @URUHI@)B 4h4i@ @! 4& @ 42hh2d444dh ѠѦM4 @ 4 @42d44ɠ@@AhLJ ,PBu:  _{j=G%I~l,>PtB[$FB_y) uzIɪSEģ)w"~. j񰃬G+JGʟ.EI5K&vԃ Hyy)N#Jl+Wo\XJWJ| :ꪻi`}ESpTs8"] NG?ݕ=zz%_c_~w+`Sһ,Sz9 B=ԧC"ra;EĪ_W26xO|<Z6}M‡ҕe>VHF?H* >RW5SȧObzT+ F|<%<<>zD\#e"*xu:NDzuZ#t#t꯴#É>!ww|p8z8'iREd^x8 ҧ3rs1(Thr /TiUv2?J+Ei/;|=w#pT/T%wZB/o#1:eOv]JCyvDe/QO**y%Ч5ʥe)d.&A`T3q/d.R]\R|+jQi#ORZWWj9+Iw8)2+өЗUC y6nCN.U9ys2w NxHv]DGz'r8v)ݴy(v7WǾÕjPdWGs2{l< .fKw|O3fOɴ{p#ʼJyڇ1u9:#Oh1=ʋi'NOuz`OsAdt`^t-u-Sԗ= ʋwXď;EbNWkG|WI^F 􏣊;:J`N\eW^KP\WM4xyxJjJQ5C+aȺWxZ\NEʯnuYr_Q:{E`x:FCRiUrdh'Nn.UaaC_+.^~ ]vYK4a+ss:}94s~_"r p+8\vR]u nWº=)}NkԼ#NV@p.n'R?'o|r*hpN+iOSe9Ye f6<++-i.$z*\'/G*zNXR~; Whh'Iv9'^[_Ò]ΧmGi_ua;~ׁ]p"j-.UqJ&#ЧewԺttȾ6A{ kC$4鮹{-u^nNLeGm.VUx<?U'W*tz§ˆGU+6I' UgU}_;$hpsqW;?K#T9CzTw5O(F#m4qޯtòIe~`iwY\gKyWG u#5`/lԾv.v밯xѓi{' ͗pާXĞfI__ru#YΎG<r~i+5OxCGiwo#pKr'iiI2Nv]Ƃ{3/}U1+hsr4O^WZK a:7O#eJuG+$z;j^&Tu>s4^vSe9 y^rWCP~K\BI9UXuҏE^ a]f|ς }_q)Ktq/ȏaD=wYN"5NBGOm4?9P9.q_8SOWmyjv]v_GP^"Mi.ncxWub%_ ӯX_n&+򳋩Kė.A;vW蝆=]  QW7 lWx8rK;bxwO>zG;"y?}\\̣ԿoOQx\;lKuؼʝ^Q>iW7*rMjK^d_Խ=KfQt%}\ث>>CCes-$_ ( Gax/\+]I8~2/|GٰCi;!Y_[CꎣT. {U'42?(tӔ_C+?K_rWY98W~יĜmqT#5.W+#ˍK>>r%ОNOwe}>vS:;nӂ~-J]ސ}LevwE~+;Oe!Or!eTcw9o ??Ew%slxI?S$OT;)x9ߩ9 j4)Kp."؞vknvKG~KiDg;,Q{}v?K'/Q{u9%}_~]]'WdՇC'mvyz\ T]P]8>"~/+ ?Ô:WmIɒ`ZO<]JMEzJ9U=Eѻ쟧3WO p|E+]59\Egu^6^__U6ګ:='99mrtl}zSa>PNAU:_Ď$K'Q燡_)aG8"6dﲏԓ#bGCȲ+`8Cq]BtN spdjM/dW2nMNvz^C:%Q.fkQeuxi+h{%l#Ⱥm*4;]v{ U{I9OdtGI_yG;DoʮtK`\|_*G7 ˑq_c'QzJ:9G['S/WpQؗ'"&PE]VK~xz:ƥ/WCĩiU|Jl yn(3'*H@8 d]. 'Ԝ Gc0} "#SUrr> :*|,EiO{QG[wI^W3N"?CNWΛqۀ y g~$.E.N{.MN)uzNQI]]GG/3D,;UO#QWK/v9R\AGSi||^>vxWqs}UNJ^q(OJ9ݮz8Vw:*||:-Kh=Nsp^ۛwwJ]68xKKlsr\Xrf؉h=N)[#e:>N6CqI2w]8¼WU2ҧݾ6W+?KEG&I}o)rU|=E ꜭH^}H#Z{,KeN"w8ɚ*h].W'U!aOy\|?cާʞN?*= ?T^WK<':]9ڪ9+<Ow9} > S.^"U/ԸeSOKW[R0AWN^J_+Q&J_Ga^#J t׵i04/s^h:+%^sy$u:NK73Oy8|LW\}oZ^'rq.D^Qu}~_rz.%KיЗcI/kp*S+.rUʧzZGG(ZS]^ '/*t^NLyp!>_QuS1u鲕:U9KkvI7fttxS7]eN:l>*zEɧ&zӤ/ArMce:-T8E.qtɭi\#wXdxɈwS\r2.r:SHrrގ~f]֥:|p/)\Q<^Ty)z)XV RzoFf|oOE2>{K%Z/踚KW"6W+x؊u2T; /wI9zwń'+wz'5&{"1\:98O\!'^OKdETT+(+$k,p ? JH *PJ"(UUBPURJU P )E(J HHUH(B((@TU*R R *0RRQ%J*)T*T(( 2USA44hd C@ i# =M3QH=M414jz@UUP (HjzS6ShSҚm'dOSMCmH2i@h h@h@ 4 0jT &&&Ca=iѩ`T~S)?DjS!2z?T@4RU!L mM4d4&M'M&SxOM5'2@0Gf2h@zISz'L=LB!  0a52u8pÎ`#3BBBBBBBBBBBBBBBBBR3` ѣ?.hOg936dM>,Nq(e)8gH@a 5|h.ǙRm;`qND'= ,4J=s؋U2yp.DTdt\ɵ,p_򩓔W0jT=2%^r_U,YRzJJM,-._9:z&sqJ$"(DJj(P}1#~94IVLLRMBj2adUd-&bA6ֶ VȲ[HhE$i626 caZ2&M$Ҵ *ʍVPjeX`edKA3Icf54IEjhhk-VVm L,MѢj05ZCSQLjZbfM#K [)2`SMVƴŭ&ejYYڳSF+&Q֓4֘fVelƖ0kV2h̵L44f6fff[ 6ZͶ3alk,-l3YͱamemM3Vfeֵ[lm6Mm6m5ͬ3lfhƙ2mN qe)6UDlJFʈڥH6!F VˆKi(TU mUMإF҅l"I[l?bS8>_!YjcVܜ?e"/ߍ'0+)Fʂ LEvU|D*AkAҿSWΕu^㣟WGex'0+|%ŠWpW?!Z#:gHX?B92Npԧ/O&~~ŸWT?~~WK)<[UJOs'bO; B*<ܓ\\wYK_벧 )4N]mN]<$.E=U%ؗ<wp8NH2;riŕvbT`[wu,'~;:.I:9q>UZ_hLUvF<SO3M<J࿻FOGGN^VJ|OIxz3)~)_?E\xUaOEɏ <_ɤ^V)l O?I.@ዛPqUz:c{8.Dd:YR='~;@d-?S$f]L}>+h<,~DxWȞ?+w; Q˓p>' 'c+q3*v1znT58=WRtqҫɈ*^~Esh^'GUGsJ9rcĽ+6o)'=*>>+ҏ3ENG||'<%vpKAtjvV8*KiO{&DW{GXΥjr8 qn\wp'BSB<ũ;8y^>N^}v=l+Wr\}#6yxxި9)\as5 $/QgC%],Tɇ["i]hpWw)\w1rN1+_J%īs S<\z]f )Ǐqv|%x|vN\Elci.nIs3ct/6I]'b\-QɃɫG&H/W҇)^IO.LY\1.K:8a˕lp]PҸ~y<#py^WS"uuuqi->ɕrdM]M:^F]'v'.vu^EǕw;~8Pکө ĜX^^.M*t2{E.ցs#D%Jxw⣳jEya6ڪvBx] Q8StoTu'Ժ<Һ;pnTb煥ɥwuu15OCUW x2:ZW[An6Y8cW{yغ>_ 5;+[d?.'0zyI's"v: =Tu1YTpƧt,m;++"$9Kz. ݼU÷{Sӵ+U!.qҏ$ts\D WS];'qW͊9O'Gǫwqqu/˟z>G] 'k9s4gÂw4\mYWaGyNK'Ҽn#axhꎮ>~gC#"e^uuS۲wtvu/+ Wx^U[*WKw)y 19rWbj= ȹ7OHdWS)ˎ;2;4:y+y+<uuǻ<]x4»9܎/7DŽX󰞶#SY."ا*˪qC։Ww.s Ogk)]]#ث_bzNlS^2?;W/觽u+I>&Wdl̩pĽlEɤu5GO6w&6r=5p/CUr螞]-]s.&C‡[.'WLy~?Jg"ęuqxZW?^x^'NJUe}]KxXڮ+GKQ{G&S)z:2_K/b>VW^fw1zy:_;J9x'GGA:..GK'LJusr''0ۓsv4]lNp=M=oQyX:^fWyxvj;zнG8;.#xKei9?)ɜnC*zt]&N%:u1/4|yzGppj<ŅnOC0ɤjN'Ŷ6N=G;<-w{:xx`W7 w⣩k1仛 qpO*Gvjc6*c/Ow.~u^N*|$}9.ˉt0<_5KDZp: GI?p==MUuL ϲFyzbk<$CzX}+4ץG{G{\&SKr;SM:+*Wc^ 9:|;x=):Zrwg O|m(̤pUGGrG+_!ewz;v<~&.q/rNOK\~r9'st5)w2m.~_ dSԗnW7sIUWor+}ܪ<]bNCU{: %? ' 8EŪ;zx^fW6;Wzz o^9=?UhN'۲O;Oz%djzҽmW:*5p=Q.OC*- j-z<:8Rh0F+KG{1'"v+O.T}z];e%¥oҫ+sAyN{GO!bQTa.z'.x4<>}< j+=۳ۡ9wgIk];YWrx, "-`y|i36 *{?Iŝ Zo/KΊtrbcEs'OWu5Ǥ{:X;:;'6`qx46W;\s4rb K#W\yCeG[ԾzOOR~yZtpib}E]dnb~;I~EOC>QeO)C}/`ӭO^q^ΫS`z)?hGsSC zW ¸/KS GmdWҾ&xy}/=>z<#w%m8*j\XM+)0t$[Cv@|AyYWORT#/eyz^n/YuueO/CϿ8+įoU~y8yG<)h'b~;WEqo%y͉͋r`;'dڇNlW4<-M_+s1K8K+qKdl WqO'ʧhq;HĻW a>Ge:ڎ? `ST27{Z>w)͟_PS8T^Jii]<8yXq|SjCғӽNEus4+et"Y{kErd_zcG2+)=,t0x1OpwWz͡Z8jNm)=\Qb;xX7H̝m:_|M:;yz2rh=&Wax_qű|)etp9)bKҧ Bxا:;a/Ǘ#<&z8XCҧ&Sr> g =~O+мx4shL||Qpt5>AvN^!=/'apԧ:9WO5\4<--*D}K0G޴dwOKԟ?WX''Ž+}Eg&[+v5GGUSaO:K'UUr5ޱƗp]BO_Jܨ֒u4)s##׏7 nJe64#y{?y:y>6xV>._;C/}a>_ҟ}=';:sQN /;UOsE=^^q_ñi ĝܙi^ޯ%jN~Ua{^Ϋ8G~.NvQO'{|)\ZJË%yzG|u+I}bCbm{U+S~~v'.WwCcLJqpegj< 0i9=##?jG.~KP}VxǍ~*Py|/hS~WJt<9tIb\jy֍ȺY0/SHrSUjG<]lKt bOE:}XOO"/\w;|t8Sin pԻN]/=}QuOWWľ~B>VUxrd~'WWu4=:3yl?< ˓G.rx|"?CPXKh6i;}'K)9LL^''㳩O]?>6G1GxڇpuppWtVE~.urx==Q͊_+ ?~^Nǃ?/#I:Zdy?W+l^/+%pt'?{>w493jE~#_v/Nx/CwZ~v&=C;OYO̎qRX Uԧ]!~J:_2_+Isu6R??%s񚏱\>%\}|zJ}+wc:/_E_.+,Ŀd# v9/aW0_OP<z }⫽zO/W9e=|%*eGdxyiK[3.kp/xY'e>*K+և.N98Ujzۓ~_ :F5U!y!ڪ;._ .,=LCn^OO%o3TE7?y: YUp1z"yshzsj+eWS"Wҋ6w;ZQi_+^'=|W8],ëd8+WϗW^^N]NG~ E~Wd^W6}<%w򏑈\?ILWTg%^~{/WCүS`*>?xLS2|j.Sb_sb7Jqsp~Ƨ`| W9QW|zAW֒]=)Mj9t]ԝ,Uq+LuξR;{ҧI^ \?M [Tz%4'wPq#c(s8#IBw4>F~E{jG`w3W_I2\.\_WIlM+7dW"9ĝ?tp}?mt}GW%xT_`D~Yv}l+^ R?|,cW'cRx5~'N?^{-̫p$&>ͮmR С] j[Sɩyz~C4Z)]? _ozgW/yxm_7TW!5(}l)Ū|x8<+h7(?>Γ.dQGհ./1O[{S'Kqbq t,S/|{W_)Wgt:rڃ]-)|MJЇ]OG׹tt~^"K]_KlSbND;:Wcj $t1S>ؤ;Jz]^=O+>U}J~)AU"b\|ģ.m\_Hi%wG=9] C'rWi-!Aj_a=k CUOKX KciKwu#<=epQiPvm˵Q=>_'+=Y'|}IONS)Թq]&Q˩_ߡUeS*M{KğuGWH~=ݹHg/ އ,'C/h^'ʎ(vuWVϡ<~4t4v8UO{A{wN]FҼS'oPNS~;9WO.R8j{žW; +<u`t2C:SoW.SÄs_O EhW򯓊utiGs/_rv4)8a1xCbUҹu:Z:\ OĽ~H[(+Q66RtCӣO{˶cC[M^>%~~W;vrs'P${yp*'NNbn8< NjНgBp<9r |-.,;+cap_'JQ{[*(: K6"ZJz9D';TK.:[H!mO{K*/;%:6T;A؝ KCq|lmx\8J8)zK)s2Wq ȺvJاJs_筏 u{Sӯ;X]+pCRr7GC¸d\*j%(]\K)=}/kN#'UOrFItuHCm vSdOCdΥ/'gR=QGC{R]t2/ccS]kO{ Ia> .~:*w4s]O\y,xGN]BK^̡N,95KZ] BjxYW4ShO(ˤu8]=O~t?x2q~_G;K?<(xx{zAϵ[?*:z^K~Qt7qbyZW*~+պ%Ox_c*~UlwR}|SY<꾾~yl4DKc9_N?t2O j?~.OX^B-Vt;>jjXˣ8S+^/qU^Q\6V.> 78C!qS=Lw«<[qLS5JҮ&u\‘ɥ˥' PڃCW';Tv—^O oh/#Rs_ri)G;P%LGP+_iLMc`&1U9Aj9^> U.~.r29S';]LX'pU\zS}=$Ix\ NUɛ&x"C4>ΩMȝܢ΅}ljuWNץ_C}..<'ӏz{~nuOÝ?͑x]N'gPw4s;RfqUuީ>GoR}Wf?cU_ftVߥ{)<O;AtT\mUvl"xx/9x~RfOܼgVٯ˜‘_-C晙2sl?G/.6c8Rp+(QjS)qxN ee.W/%%?{58p.]J#/( E3^m,%jh/a{KBdg\rӭWMB- PbX@)rSznpW|Br/|i{/gw ?}㋻/gEnD[Q1\pcz^o.]x<oNzC"WZ~/\3iс!#cx,"NB<쌘/TJHHT*H"`E$S=) $X5EBP@bJ!&8AAI$u$Wp9I$9P9 .*ݹd.2d!ukkʼt]¶d9.(BJi^ YZ! 54Z8 W0|Ҳ͍b2`ܷ\@Hz{,si` f2)..&k@ ؜5 X) 2/̟}'{_},p*T|FvFeF"f'WQ@v[fk6_:RU*Uӧ4MR`K;Yń ˒֌ԒY}/K|Oei߱Jj, ; / ˰ja_RH*Jec I%vH^DLVb"dG%tLKN| FG`}}Wrrq.]e/?8ݮ:yNI_tqKˤ{om/3U_e\Cr{oms9x|}v{d=Q(-)4Â&Wn[A`9y$|%˻{ˢ=ӑ\nn'.C:^nnnAi=yg777:G#|/r{Oi^g77#)Ur!qs'#|/r3j^{n'9ܜn^p~K_\s9p=ۑȹq$_ q\sssq9Ԣmnnn{ 2֑VlE~vtdgMdgFFrManJnƐHP@(P@OYfjҁ(DFL zO=CMh2a@41M4dFd&AɀMF@4i&LjoTMdѣC&4ib L# i#&&CF #&`POP@<d44C@hh2 =A jɢOMO&44@4z !R T&<#PzM b@h4~to^$Q%1 mHV)A)AF  iAJJZB Z i]P)!@fW<4  HD$N ͹ȴHH@NW 0PR@Dc晅@CL ],a22s?vꮩ  (ȸTRȢqG/]`<I{ȂD lJ@ԃ JI\xו=OO #EdSKS(& GYh3Ma^(7$sɪC{C)UP6@SpAr$Le( 0E@!S9^uėDxA!xuxɿJ5|#(9@ t:@.']0+Nc)wb$(CS( !̐!vBe>!qi x2`; SNڐ22S<8t#hM!ќAO,'8yA'՟t#IH;Irsb0t^<#5iJ @iIHY 4 IW쓜g 䫴(\ChEq sPk _+9Bĉ8 A?e @&/Is;N!۰Awb7SMrZ$`{|7^8O8Qrqyβ&b"o1'fXH ֐|Kv/Yv ѧvECBH\qӮ:Bbry@wK@89q;Gt%J]&ҡOIĀxGlA9JRK DHg<⃌퍥׀NiNlQ˹'bC\ Ӎ2R NO^$%k u݃h&`Z5ҡO 4&xɴ' 9g#F˟D;%{48rSes"O8 Ol] ;ؑR$O\wY|4 1#;at].r<%KCfytv2Ot;JJ }~ ~t)1bN<0CO' !;F9OXOl urii!.!_Z<3;u;9P C¡5|ԃXSi wÔ>=}BR^|7A)yc*u8 #.X9iWKKGPJjC7\燎M v] sC Gd6YYr$=d8D? m!V^XvvcB!(P>p~y^^xG@7(2x?_g e9@C2T&2n)IpvT = xIt2:`tNt~T=`{Nr+r@kp,&zES= !&x7Mm9~X1M0B]RN8{|o|. )@Knq= li]vOW C@ 𗌩QultIq3O)A COGulI^8B Prb Npkn.P/(MP bH\Ǥ"vBvʙk#QtĽg{؇Ir! к5D\=K. c6LA9|;K}5[au2=g'D >p?k(x”k(&r@&u ;9w,qlaLbI!~4'(L^',G+BˉN]_+u .R:Ph8C=ҕ[owLuX68\ 2)yav€m?BP<)z'Hz>=eC|pe(yH֟"u 9|7޲OX ;zG8n ! :\ )GLҏ8zҮ|ޕ:DŽn )u /v|>F;8t0%7ۯ(WƸGUIoH<߃)q.#e߄q ۇn%_.g!|PaC?!+.s.|u(̕;iMCFgrCɓ4R4`y'l̩3\}+}.R' >)YW>rʞrPR4'x88zҘՕCdƈ 1ɻrz眤)D0D%7!MspΦ`B/dy]p||{4x'X5O& S)\ IsNAy}xt "o{^G^(S(rI\=V򰘁AJzN0r'$)%ߕ!{X q@$_l/ӕq< F$a}dS{g"mwG>r9mC;;9S\79(;C0vKAt¦R:ӺCnb?vi/895AウCCY]@e!ԩ|)H؀Sq*ȧmDJ!ܽNa;y_aD`=L2dɓ&Lx] ƤjhjdfffFFfffcNrSBdɓ&N'N:tӧN:!B!Bn5P"Dw!H EBw}h 1%"@8 UpSZm|>)" w}O5rI'i˸AI(ѻlΠQ9)R@ҀHR%IS.KrK@F>[mH2ػ/ ek#"@؀yǜB0Dӫ0l`1Y`}+ " " CVYa0!AAAAAAN["r!r8psp9u1zzTD_ߙ^BRQPzY$yJA^kB?&?20>3P/IPMi0̎M% dRY"X#|gkw7<>L9NPWc}] ft6>DD)=yE(=H2`?gVZ5̰[Yh-C=x>{{9@LR/"آN|86rldMi4B|Xq "Fm)fTr.XV+DI$ "4hѣZֵkZH@8!8 ~ P*Ɛdddff 1I$L c1cȢp"cM(]B%%%%%%%%?H RG`spatstat/data/cells.rda0000644000176000001440000000107612333041762014655 0ustar ripleyusers r0b```b`f@& `d`aҬɩ99 fb$EE%y9@4(cȌf Ki^f +Hj#T%Cu2C93Ks|Ң(+4$ '39Ÿ?T %0*U"` af K~yf^8Z68'I>c ԁf!sa,Kߜ AOmdSo~_ى-.jؚJa_<)>O&>TQl@UISJJNhè ;8 3Ni(QHSEУ.3B 840aPFBc}ܬ༩"u1lSq7{bL@1Ff:fIG`r{ $>O \\vDlbZrW+=(`4]D2.ޣֆTc "H_y9[xQUؼQ܁wF%pp gog`7:al#t7ۗ. y%x^WN ۤrY"#^=3KGWy_̶! Rp֭YV|9ƭv=;&}f3kϟ7@wS+n+|S[imRc}f0jsRsSnʧuS0npoȰFh E4ʔGJpnL9SJG-%UJ Xf (`|FUfA2Hfvu5]T5TIv)EͦJ)vmWYhDT.&+n)HiUbUPYҦ ٚb Li-/2 +x ?dُ=Ǝ 7գY;]{Egyl\X : 3msG)M1HE Mᛵ&fRU`=-52)XgҁlXSfes+ pї9$!!9cXaI[bQ: fʉ֕cXەG4ccM2Ja@ 1I{sYqWwVO7FEwiru[c1o'nRt4*EUTn(@$d 1x;m݇V-O63&e)a6xWNv-m$ˊ2nڬi5*!{L8lbr#Dfd3u64BQӄk=əWQ#쏇|xȻS w%-tPJfatwkQ)*8x|u.G֯n9?K m+I/HB0ZhqzIWO+)X!L(a'p`Wɯ^E^pUۗ wwm^ &،~ӓnj'_Zw$n)HH!/6k# ì`TDm 4Rf\!j@NDD-AuKbNL尡DçA lMd()TE̐ ̞-j!ԩQPvJ }1+ַą&mVTݾrO< oF9ul]U͢H\[f\s BDdS?n$^މ+7f[|ý7k $%"@-0Tsiipl,5mԷwH i66^GE^USDy^S@PS@NP;^9WM m&ؓ`vzqq!ڵ&y{[d[JUB?$?gj^.AcȍKw1QEX(ZÄÑbÇ -Jģr2GrI"LJ4;I-d|>N\tpy|&|yѝϢX%ZLN3)ţAN #ooðLh-ni :舢-SC1O3pyyx`e1q,Ç72F Q=ÉG#t%j( Yd0hc3D畚 d> E*UQHTT*e*Ni2SAԂ5MR!:Ԧ*IAs$[iR JaU{ qh>Eݬ(nzu_}f<nuʋUlgY fkn|.8Ny8w_&ƸYntWҳfyjCbcm ǐ^N9NQCCU^PDyC^PxxP9EPENSPi6!M8nnt7 {\in$J›/ۂ Dțl﬛6L_Uǜ:v۰¡Z ,N,-3%FU$qj]^N.nVUhr>.U.\yq1)EYfZI"bV,[9c"!1 &/%yZ-.SQVTQECC 4la<_vI$zI"pY,UfE "]T[7"7o.p Tspatstat/data/ants.rda0000644000176000001440000000400412333041762014512 0ustar ripleyusersYiE9v3VܗMvrlL"QQ {fQ<'DFa h<#dۯݙd]M|Sկ^z˷Yۓ#$%?lZƟDd}Pʵ*!v<m̄eEd̲!Xx>0vE"4OD@yi59E!o0H3Ym PdnB~ m{vwrpU4/̠;.8^CWI']2ZLUkYÍM-.ⲭUS?g+z`\_]i]S`W RQjcYm:- J}{`@)U-~gHV|Go{y݀PϘ \cO ^LyWe@ rx/=\Z`p+.%3d;;g ŲC{;(g軄>KOC~"QFPgsCmNgzQ`,a#,O~C:)NZkS's@攼@?9SXlPf9O껇OB +8p 0҅lg A}*m9rnOW`dH=4GY]ݯʼtJM+ZܩVCْ&:YG,Z4@T M>W2>3-TRus4Ձh6ˇlҌhziVGz՗(p>¹;zi|#1_!C4>vw-Df"u#ѹhFbDa'ѵNu%Tdl$6GhH$#܈%?*uc=I;?ͳ=GHƱ&~xY]VIm.=1Vom3aOy>OBgse8C8\7bMO9lZ|y$ۿhjW͚VPMS=fnG`qmq(/5q?L:sm5Rpd9lDȕ4U/V f}L0O?XطkM/Tj"H#_2>5<L?\w{J$ =齻[$$uur]z 6|$7ԉhuݨ.8k?]$rי_'],7vK}rҊ]]QײyvL7'9ye>i]ւ`B햿6Kl̻0 }Qf"*EU="|_{{D{sf5CT'ﲌZ.Vޑd ++WcRH}g{PUjwMpQ+򙼕{/sl(рDHs{(r|Aǂ[Kbt/)D8 Kl ,[.WaVC!q ?;i;Qx5B`jsÉ9X_8spatstat/data/paracou.rda0000644000176000001440000001140512333041775015206 0ustar ripleyusers휉UPP0D1"KYD.;4[otCoo_qft3ьj4Q18Iih01- nEnѨp>UMLMw,9׼jۼ &Ս5ocF3nLa< Hu( r_xR왿{;_p /4rw~@p+ g%c.3~V^th 'Y_x {?Lt_I3{ۅvt`8{(x]/~0S?xز]3WRٿUW~Mp5fצW'ɾo ;;BO vG BhxB0|k|m G%#GǠcL/yH0U/ %HNjH0O0= 57;ė%O:(i=Wo=YooyYGV7  L_DD3dnAq2/A?}J&DIUywc~$g1?_Ma'E)M^a}2? qџ,Y?N+/6"p[8@^9s`\#h]7;Gy|r^ ߑUi3 .r`zs꧳O 1?x O+}'#mGh,zn۩"H}o4Q^kީa~x%FYd?rs[=WV9w ~1Kߔ.M ˖+$vJ{9S.~9<)c&]5.~yc?1V? 副 $?ɼSb@ꤼ_˿^!?:v2x߂O|(u!uP5z`3hֽȺ;[rQ<|#oԭ YWyvL$~>ba&/lfnofE>f$O-"~[}xmnBN/FϫKdkq\ y_'AZ)O{ zg0r·yg};0>lb'jʺip7e\x cp)xeBǛ4{JpW*~\:~=o qۜ roV< zڑkc6wB7ύn=kL]D9-Ƙ̺*}u_f/\Ypn?y@C>O^~-}`V@p,?y K_KUwm]wC'G>Ϗ!.)*=;?D8zy$F;IKc/LyH8z}~:Y vr_< ܟLz_{L -5y?lG+ez^87@99Y8{C\v\M}.~.q\Wcǃ.:vQ vˬ[5wnץ֫ꏼgXT:_?#x|B}8~%ЗKzMkNgzպe4d>קe{9+Ǻfї%i|Ə@]㧾/P4 s9sU)]o}O@Xy@@?@=/M,Cqo=;P+W2u^N}?W/yK^蹭t<AXY+;FDZ?zHk^gQ$H7Pϋ?}-TϧhpysO OjúY7;yh=MsVGt;ۍrE;1͂ E$X`qHI ڿwKw$Օ¯>)8uةWN{ aoȐu Fu`iq7t >Q@Y݇܋?qE :H~ o7ɿjyدd}k O6Uy;AVWw`ߟ7e'ypvA GzoK-"~_B^VȻD:%D]Y+Eߡ]uQD^z _DU=C|v_OIS.3GttPz+s^:z9b qq7Yb}/6}b_,Žlb?VԟMԏߢ!{?/8,΢.)3}z9wX*Y Wa_*k?yڇo\$vUqчju=;ٟ곤r ͸ŽzL9.~8>L=*k_wclF_<)7ESRk#78KEWΑ“7[X# yf&hr@;5À 8|[W9I8,J/_o-סzY"Qn} VBoi/F>I)gy/'%~_e}̺M?:V/V֫BߨpϮS)ByppyUʽWފ _q3t!1mx|Ly%3 xqޣ;b<|Hط3``}QEߘꃎ + _('Ow}i?¯mGo'Zz,?<{_<+nBn؅ߺGp+~vF~+~CVo3l<_ _k0~>~̮ۻR X s4hhgL9 ( ͸c ] }$.{G q6Kb~5cf\u 3m`؈;9B3a07{'#'O'N_ÏAgj/} 1_ŏ8Wa{ řyHwLކE~ >@%}ꉮg'3ƿaց8}ԯ'C n E~Ըكw7\x/ 54v][{7qOG:ğ~9Ψ'Y$F׫ya~e>*O_rGzT.c/^Y 8/ UT@^8ח=Kxkxf{6y&Q U^,캺oQG?G>#g3|F>#.1/ow_YG7&z|/i_}8(B jT^)/ڗЄL`NKp9aMu/S7NGspatstat/data/chorley.rda0000644000176000001440000001452512333041763015224 0ustar ripleyusersBZh91AY&SYuPo}o%^|) RRHI ( I*@h 1 @42 @ dh@0ѓ@4h #@@2h 4 ddhhFMID@&#ښ4 0##`F=@M2z!顢)$FJ=5>wozU ?j~ V o [ͮnݛ]#{k\^Od~M2N ϋ{<71չ-\\M z6ŏGhcn{> Wwwcc8jOV4oh{9;7987;^MV9^j{7<9Gg=^V׫擳ѽŵޢ~7>WI,ɹwwܨ;wu2 fcZY3LkV󯟑,)eI^O{]pfcq42#}kLJ {=Q?ݷZ:5D4Չ5}ZH#Y5D=n};v6bZqK`-xyƸiOвWϝ8L~YW]ɲ7M=:&l'E~*\}_zcu[YƶWpWgRΘD\<ׅpWtoę[kz' w7_t|rqs]JXe ٫ rYjdub)jZCPbP0NO/vf]{Ry.Ǻyd]*m8Ɠt!UEF%-neZjՋb$RbLc"c"1bU&EUV+IV1V1YUcX1V2,cXF+ȫ"ĕYĘ1RbV1bYdddcd*XF1U1%XUIX$Y1VH,Uf1bQb1RdbLbdXUIc"J1XĘUXUc1V*%bLbX$+&1RbŌdc"F*ŊVF$&EXȬc%EbL%b1V*1ȫ1Yb21&F+"c ddbLb%dbL1&*UbɒdXc#"ĕXXaU&EUccUX,dUdUdUdUbc c&HV,V1bXUbUX*ŊŊ"1XTȫX1X1bUUXX+"Lc"LbK#1F1Y1V11dcV1X111&+LXY,dcURU,c2,bKV,UdV2,c"2EXSXUcc$U+ĘĕVEcőc"bRcdbc"+Y,*J+IXdddV1Xőc"cIUXbI1KIj $IMղ uY jdceXecTV1XXU%UŊ4(NHMj5Л jF)iQ4FmQK<9&U)$:ce[#j65ƒnMKDh@i&jhu+E|>!ߟZ}jv.|>1#ҔSJj MI1V*b0nl5 _~sx9O82G5\l4KdY%ѪZ-;͞=)1)M}>6̴]#.S-XLu󔚴rjZFEU&6d"aYEIcFF5diƑĚ5kZbŌcEycV*%bLV1X,c21XEV4h&###VF*W14YUUYcdբjĘ1bőV4hѣY1hɑ,XĘ1YEdV1UV$ȬUbF4c 1iemmmj:񝃀l--[Z7-Qۘ[FVDJUUX*hi>ccVHbJ U1bLdcIXX,hdb1dcEdƌh4IVFIHĘȰdTՒ=d4jĕbX&#HdV*1X%hŋ"h1dbU$%uehM,2ڲ*UX,Y#LUbEE%XŋRV2$wt6+c"&EIURpLUV,V,cĘFJIb"UUoV,jV,}hѤUh*UV"IXEV+"X7F,cVFhѢOdZ&"ьIbh4,bőbɌUW&5T"%dWMZ4SY4NcU8Ω'T퍎8͎Sq:ue[VÈ:'TuN8M;sqܑdmb&D($4crV4db4$5V+eG64e[[#huv2ˤoXdXI,V1+G4h"UXՍcH&bLTXd1ȮbLIZ1*4bbȱU&21%IޤUeKPk#-FY&E䱋*F4EUcEEX1XŊdbXbJ2+Q%rV+őccEXm\'d[#1k,o[XbUIdbȪMUUi%dV2*K4hƍ4YUReYbՠ6,-b1RUIX,ob%XƑcEbX%sY,[բIXY#Wi24jT$ёU&ZEUUT*dcUUbر*bc#EIc"IȱV1&,UUUIV1IX(IU&11X**JX(c$dbUc"j4VdUXŌV,Uj1cERV+bJUZ+mpۮ lmmKw웎qaU#I,bĖMěZ&=uc}vs[c8:GJ̫ ˼wwi&yB?HCnzGpqE4QU/caꝃߟ?{s8`Amt,e/+WL aeG>)L|=)pV|.NLIY :^rW#j\9^|+WKjNxKn=rshj6-^j'ͣɱٶM&~M7?Ғl͑[d[C1~=67:9>/G8׻fLJkc7qztz1w6fm\[ڴunr|cG1 |\]]nccFmy5o}wsÃբov{M\77Gں-ؽړ#_]d$w/=gg{ n[FFqtjU)U\71yym膿m&Np{ɳIG7OƬ&:4$#W%~._pׯOݓ[Aғ\qںW4>ǎ}(Qu͹ϔw}I~*>yΚ>̮sr&Ւz}s{/oSWEDhrJrF %Gi>Fclfƛ$4udmmv.\*ߔԯ>G8NCq7 哩6XYV,l^?z('>IK9ieb^9Wg~h'֞;8.b9 hSG(щ$/ߴ~ϾG&?jᵍܫs?_~I9_rjWO6ZūF& 'jNmt5rhqxly9UsonsqUoV4{7=&1s8Wvb:+kٵhǫGqrm~;;OV66Ofnmsz6:Ǜ\Umtpw'٣c7?oj}y+GS2nr}OG74xx} _Trc]eWƎN/7wcctbj]'գs7=F7XW{{UZͣk{{GVכcTI' EQVI%UQTI%UU>t<ɺF XFQ`ժ- I$߸{ =AGz%qVu[ 6-64aV[ FHe?<9 9nt:akHliiVDzL4ԦRVq^g`=93<+奇1bFFAj%ƣb4l`ղey%_,û>YrwǞ=K\Eha#qc aj,FŒYeȩ^bCI/Ϳ'o8?F?'/671'ţW8''6cHƯEuvnh9<8fݽsk;?z=[\z\n-\_lpqouV>MɤqrrojVGEt5njѽ^lz;GW7+\ѹŎ'_qr}.w679+GF78<7r'=[=_F9696?7+իdlzou|cy5|σU|no7mdmz7oV1Fzཛྷݝ#͎ѱ=]\[QlyXْ(I1Xﺠ ܎N@&=[%`Ehm7Һ,nI$[v4<@S.E@D]HOFI/Nkv̂]ʼUhXf v]tJ`$^R /NÛ6lЫ׉fJB 5ѣ!Vګw &.kQ$O4b#6'# W1A x%@/EP,sZ`г)zrڂa(QwWR'AXX y?7)4 ׂ3,P]*ց\( g UݪEײX7K-8W(@>¸yxf0Y.QqʟN" ,8g_!urnމeSEüx6FlwU~T!lOI#G"WpߕOy*/4 8.mgtL\2x}8i#{'J,[x/\gIJw7N42wձ^h(kǾO+Eb?AC=f;4f?=N`>YV5;NIss鳤<@~>uBc(iԫP`"[3hlin"yrq 4 }Pr הT9|բzwsq]'eoh.0gOf|\b_\yލn*Gҙ>![7ToQ se5teLJw3Ž1]K ~ѪYbײ 24騿ۚ_ ^΍4DC< a<ȋWx=(@;uFC~J"$Di`žNU`RDr,ƒyd#Bzk/Rj2س9KBʫDʰqa3Tɾ vAC!ۮlAA4ædNSWۗ1Jba<A -hZO`Bx)k)1L2ʡ tZ W2 }"n8F.I|eA= U@+ꚻ'B~TQp6PV ݊lqDIs[}.i=x1&tC4 @dEw.웏чEO%ڧ:mf?A̝g~&#TKdnj_ݰ׈=-)m/F3{ӘߓU~ZhAݜ\a2MJA5RߝrHi oYBf0A<Ô7UZeHMqe\q=~%OZ _tK p) ķc+jBQ*Vjryߴ׈"ԣsh򼌲-In\Bixn3 O޷m/^Iebat-d+ (Ɉt |Ik¨ ua#O00UuρYHB.:vΚӤI_d۶7vM&R-^gO֛S7>B -&SjQu$=u2Xni U:a3PvM8=o"xO4 ~W*˦Bi LGbûND@:R̲viy'DA m$KXpXBE"="5#PFeaȳsp瑞D#j#U;NSb[Jt@rۣd[aW_Tlr{mSt0v 8wЀ-mDȬe6z K9B$ R yHAfH3RSQL16ܓj|RD l@'D`^raPr WZwhFzuJQU`ŽZF!:AS I1z԰_5VLJ{6]dF&0`B6SwX+Yj* 8t% _J62# _kwk㰑53v?;<& _wݩ)~9.3RnmO g5/N}B5z'[R^p?YAدXWs0֤Ia&&&,c"^I|}Jx!D|hV --7e- ΌFS❔`,Y hz<9M͇~4©NEo&j!7LSdgN/"ΡOS egv6vK-Ul,9Hu%U#4}A䇧*S^[Cf dy[lGgLľ8D\#(zMؕ:q$.8\:VnL' n&9\O~mPAdz_Թiq^)QǮwu99Ւ < )y^Ne:>0nR6N}HM2ر* r&_m"%\n"sp֒pVnHa$wI3lΚͰ.]Yx,bB^xf I%Ir?3.@YȦQˆ~<}meuH J>y`D?yz0Fuq_zz*7ߗMA;:0UX:nk1̊A_iۧfeBC1nLXb4y &ga Ƥ3PД9m@erN(v89%9UFνp2 rq'B羸5Y}hǁ_Zp<ΰAuOH'Oc<{oxvP'33o&Vʻ?bPDu%˽L( .ŗ:0ȥ  ɵ'(4Ҳ΄,@=|E@j{֧YJN"z#5taO$0ƘWBc`6~;vx0/n#]|57& B&Yh:YP:;c3疏Z#xK!$\x_ja_P@aS`ӎ!.9e|LfxuKGI-llyzx~;KZ&~*|Ab3"4fT/8atUXX&) Eܴ.R/U>7GDno첟jt>\򕙉e&0^jpQ& 73C|STI.Z1D!s`6hLVX`󙲱8fx"v`7g I/] Όl1%^Eb H+ Wai6u!7w>7xߎ2!O~ dW)KTSFAx,s 𤥥qϗ㽝c  YD.,m|\* DiM/j7zOGZP7T+_pM@-+u, $QuRjreꙥazX(Z{?(fMB”5$0i}+a~7V C"BmnV{go5h4΃9~>V>p#kRgQ$fwݤ4`z>[TI?WLyiHz ?ZVW2|\ 'mڽuڣy*lRuѲg=L8I4#+]\f~`$+@c GUE.@*Q T5{l:sҦ۠!p䕃XO*^4z\.*"'TZx#xMHY7vi`V^4LkTHEY=8Fdx>Ky pך}ZPP wKu=}YA!d{"i4da>N9zCj?KA ]o =96e@{CO2$y)כJ.-bW!^ZaQ*<ca;%:8Pcha+.1_ΎVBL2Z6t6 \}m"$ye'6TTss*H Z,z`&lk&>1nԲ`G;1Z02DAy(Q D=ry=8s I䍿Kxl h@Rʰb`+-+~\'.zC@m9?6-_Ǜs >HwWjf0:Qgzr Ԟ m]PP~ixWp[n0"WOq=D1>Y^ʇ s&߃Ɓ_D=x'l΃^xȳnA!%/.-8sp$R٪0tsj>pE]251q pX ;b=$9 .!OifFr3 n4&AT%'9/4D=v?oş`AIFIm@K9J6ٖE} R.^#' ?iK݄zvX^[86_ӻ/1'Ouz ?*;% (_5< \.H{t(Z=P'C9gTp|%=$ “`$Sk%6zWϐW.Iѕ ꣅ? E9A6);rG@J}wLyt]ҺG.zV^Q妑E4KkUrR`YeڞV ग़ <Սhm 49[ *~;ث,ԗ2a3J+OnJlamcNj+mp\Aʀ-W ^ җ\]Fӎ y.6? Ok gFʸ㉪|S7WVRESZV.xUZ0L> >!ZXqb]-ש.DByoբm(ՏlO_A!Wha]ʘkBjCHT.:Cq6;N(z!"2N{2q(e_H{G`)ആגy?=1Bt1.Ja|,UnOI=1Ԁ.v0vq#ws!2R Qdߚʬdxsήa~Uuhn{-{ Ѝ7LA4zm*G U3DT],tjR3Qa.0yN`OSWn8JՕoR<`fQBsJ [ZKkaUcwSN\yCWmp[#P֍>c%뾪y#Q`]a[1P_棪mXP }ú6;jeZ6o1F9zuүudYVC +|t󣗡=sm<_@F%m ЦV-y}}96 SO3fXX i??C*RGbؓ,WX7KŞ ^`sZ97rIsΪWftoAzȃC;~%԰WRD$"N+p=ҋ:DS**6W{/ר% 9{|:|֮ (~\~k,%[[isCh5^dLr/L|bn,6ӝaeϿFv]vFp*h nbxZDKfu˨4H.\L]Їf_ {֜kBnr_e(R*o(Ϝjs`7g no9$J>Ly4#ͪ@^[vT><{fqѶN.NV@ Ew7>t$c'(Ttc<ED&dC 격nC p >#&=Yz37)@:a$?ħzkxEj{dr_"p,ʡ*OP)-,cEtt)X[O[]=}$4kJ/Z֚wL$tBX/ܒ+AZ´3{ %BP^aJ~3-,xT%JHsuCu_/ppK\ n"Y9w{x7dV][t?m6'V%-JZvBzXʽɣ7L‹|Yx@y~x-1`,؅zpR{uc}zvʝT0U3 {;J@B ȞKk\巻v]-Fp-H^ w Ph}Z%Qج^Dԙg cu78v|AƜ`nHu9Mp :̌,f-\ cy\)E!  紵"pXҴNHS 5LMDc"{yp)h Ur=qvӑ4s)\&gI\3N0MqsL2Ds'm%W4Be1Ms$4t:;96 ?R~g*+2ZR"zwRYWp̮vek+"[jHBE@P#:;fjl _&ɭgd+)dyBMEi7y'\7'mu ՞zJbnqF3 ^FţU;;?aC*5IO#Kɧ/z/ls9mz׉dtn7 *ޟn3R3lX8&I5H옯;bY1N5ڞvn?W+ow®X%^dgWNiw mƿ+uҟ/o&z2hbVkr P/1rGUKmޯ-js@)u-q7dtr'eJj4 otuM_LVK ]6S}xX.2|F{MMB?`&(yVx+֠)aY;UvsĂJbcDL enos_Pbj:`ָp}1Б45O ޖ`biK{:q7}%U]g]; }!i ӥq R`"KCp}p7OG f&E8M5|Էd !*t™)`N˨%ħ6]4q6tZNNssh&)t7ȏ_]+!l[87R,=ٚxN~pvq|^)Y{QZjބ6u/;]i~5<- 'ͳ{ѓv=@vm8wn $NZ("Iyfdtj,\ɫ%^')C‰kGt明B( y#i{hM"5,+?\`wWQur%2-pVnX mZ+bW.;8cnh?=Y*=h3@A=>ndz8~1!5D݀QƑZg(8xV="(jɛ4Vɲ2H*C(i*vd+7L^S#@X #&>1ۗGqήJPu7&2߄3:Ɔ>gJ vdZ;,֙Ryw'<1CX؂WzxFbхhe-rsp-Aq.bɏ%-£eKH ڛz&#E^k~zQX!le ?'MUk.v(`sz^tBKG;umi@+G!!?F@fr796UpȂ nBRNr&Y:,j]ֽ]`J>Cj:%6}Y4hD 7j`-Ee~ô ުmIE4_v c&}[ql6+sWtŶ1L^W-mcB6M56q;z ~-3)bCP1Y'0:ĩ |(u|=Wd `̭7U?b֒K a["&8_,=GW[{kzs Esc3q6&]vIsm܆K"g] fV+)^P;GePdc{^q~ztx%NJL\,bAH}^zAd(juljOW+7K`W&i9<rFQFJ_ɛH#6{u|{hO[] xO6~-" { 2(Ab4v&z3#0< Vn{(uq|`;iҤD?Nh+XX.+c4U>jg&Z /m*VlzJN6 f;$XԢT~mhn4%FQwqpDفrR169VcßPg>6 6mclzTp&U2U<9w2#Dgĵ;@?;%^Xݪ> j.,vkogL?<=ܯkq }@9ͼZ+DƣʅCC9dd9%Dgɟ%, S _H2}U߁l3:cyO8o!f"c%e)b':JBw|!YUEJG~ F`,7Yfcfa'Rr>LMZ=%*#,h^$fe +kFh$ ZOB) vy$y3vq ] rD$]lzluyEN;/1\I _{k=RnI_z3orB_.`O0U6 Gi7m87x󊚔܍" < 8 酃W\`0EZU_ĝobt ]g*£SIgNd P.ԽϞk7. 0;<_R w2-(6nBFgAy?̶H11xףjӂ0~B5Х%:*Mumin'aɗRׇ0|eȨE`fxW̋;]`%6N_/B>w)S3<"J Ge?򊺶GĝH{ˉh܋+Ol xSb|>3T BŭȽQcvBG ~'XWSuМL? RuJˡ1T / ~]Bmsҗq، e2[Mt|UZĊFP>Im~0b{AE?nvYR`!Q35ѠQg:}VwҲ;$Lq>O--3@OJإ ɍc"e!9ZA ʁ=Scev!B|NɊԌ0` ڳvq$釋IVie=̀*ֻ^SC8HΧ?=fmPȢ/He%dMGWz*P#s(vŒlO$IsAr[5Zt~~ j_*7p=pDY`WY &=_5qdY^#+X: \V3e I&J;Pa95ރyj%HP"^zgv%G!:4JdۑyƝ1e>Jj֞xy1x74~Ťl|4GX1pU9wa/CYiâߍn˦5wLjJ ۠ˊ~hhb\~fUa\`>E/Z ?_ӺurdYүl ÉL=I`Knb6B*n 7H qo]\&ԣepT*] l_tF,S< 70u# X* a4mrȬ 7AYEk;Xi{5Fpl ]r?dAK|-'Ee;Q6pŞ=jg4DzC12Lp:(X1" >qr:vm $MMqB<>e, \^cŚJ'yaˋ2]ţلJ>O@EIt(K1'TPUC葧ᠼ1~q&y(AqH=q#{%S'|GvE:Ν>v%5>Ҙ ` [3*:|@ FMST;a2Jf޽*z>BFbv'zi%3Nl`j]_ݩUnuI&!4KLLDGz;. Ɉ|PLY֭<:Aņ4i`\GXڳx%R8]ݦ4IQ +UdV{x)EIG#RI(:عKtJs%5@4x SͿ/w5O?i%|E_%,>~66$+Hp(6 :5xV*0ܓb.q= ox)V1ۡJ?jՍ9Ss8q F$֯a\]{|S<%.ٵBoiHí_-dX }Iؾ NJ77',+f:L}5W`889;<_g(jkShX~$N$iFliYJId3lӂ i-00SMsu*Ps`.ֶf餾& _+`060ft 6B:sB\7/lCDR4͂;uǼ7) 8Ҹu]|/8d =/SIBbwDĪ ՜4s[./>}.4tvpBjβ3ڤHD;;6p' R==tGcU qLXti ]g I+MD('3:[# 7ͫO13|Y@ЏٯgY(8Ĺ+OOE@?op&[l ?Vozz]pOgD.$OvG݈׮1ZN%:/dV-)|Im!(Ei:-kB_eGugkvmr%Sݧ#Y>4jNQ+@巇bLAWEp~#YUmZ' GsE݀񱔙ʜi9qOzfw`ve(Tj]@]yx?)4H6FU`AY\ .ʟ&a %-ZtL$ߧ̔Zx&Pip a?k3R?b]״XSqsRdB Ht`I8Мj@W ܋9Jx[`+TXg`1xG5YbFP)%Cj SA`H9:zuɿ ش0Sx1 qX-?[t|X%)sS"D 66ړA }]KQd7g^9k/)!񐻡L!yVllޠsk-> yUNܴި<~wJQK3 D):ື|^`^kzZe}53JAzmJonPPƗ e9."Rݐ*.fpٕqVC$75DB]v[Bk4Ui/*].f!󙶻3YJQłu9k[([_T~Il.hBllhI#KYX6:.&aB0B}~HL3HF>&8[LØ%3c=6J3 AqTr&I n"GqvL~mah4 @W̼аZyk.tflT4%UF+ eѻZNE:Ф3: 4Kl7]6onjQog@r:7V˙"R bFg&V^MpKsA ԏY"!m5=?c(&g UNȁu3YE|?@c^JueCv?O>J-nE7HIFD'g#144; U|tue2 NXMO^-nL__b R*4drZc<7q z.Ndr`г HYߺ`;۠B8օ $8>L=v,A=D`|.М/HҮV݈FVhIċ*21'D*PT+Rs22n3 &TyBn듃(ˬ̧쬾L^4 \OqF 2|px==_[!9t$g1!7Hx+8|,8,ԯ\/ȧ=z*xFhD=B~jg 3nS+uqpȷ˥%bx6`6zUVL~:D+<3AT+ mﮬBEv{N]˗ZV S`n#G> [>jTW N epo]6&!s"oty@ʕe5D<`w'%U2B飣hh鱴U[Ӷ J]Ѥns? ^:xo75l$V4F j+Z=O4tZvQDKC-9;3Vv8@rC-LI_g4dV@a:GVC}>;$r@#|= ZD->!X523[SVQ>B8~]$i-sO=PwI~5rC@ Q~KϑܼC_ 8?抯g\;< (A9Gv![T"e_휴3#C 31vаο|p=x%r"<$Rl5&GqT>$Xi?iSyD=5SCWPL<،>i>թh)Զ*ظdǞL~fǨXR/̂%))~sޥDPˉ"X#Ɉ W^CM<BRpH9wf6~б|EhyHd(2bũtg# 㔾 "k xD b\Dra MIBE 98;bU_>BJu_@NZ9*%X`EW.uI2|9'5!Չ~D1̯ZU=4YӀ"9E {ix}OiƝ.k].apW'R$Dnkj!a|7|.%.A߁X`aGG@Dц%+5|9:=g 3 $eAzy2Rd 0Dsgѹ) lh6X@18,I 6ohc=ٴ5#yjc<!Gz)Х:ŰZY~\[ A;>\;/:3^02g?:RzvI#;Ҿܫ)9:D9kHwSyRVou򯉶0Nnj L 9ȠAYi@.f'|'=nGNض44=mUE;b)3lTp\TjOsbsN͛t uX- E>nKymFZLjjMj)ζ !E] !fZJ5:~K ]y;P,?UȆii|)ҜN=g^ 2r] ?B=g!T]u= ǿ0*lmOp %cډblýp5pCkD/֨SZJc97 Dgn!cPJxz1 FZ!P“Ԇ!f8~2ŝHmt?/YG/&*b4e}B9x{%1nr=n4!b!'o,/p:o.L*+c˝=&z9BwZg\n][|Ǡ&cxb% _ȿH3q P>}mՀ Վ}K[6"c0wSE?gR?HU^%=KWRq[U[ ![)L0F3~ $st"!4c "Ӥa@=ǕB*ۏy>'7r Z!:h r(˿ @c>Z0"7 І"e- Y,Z~O?vܫIB#3X:<M,, E̖ϵx"w"Ӟ5Qߣ;dՐ$E=滑6ND}ҪG/#o^(R l(ڂwAmѕs0'r?tp#1g|d(ee\K 2w(sUc,H&G8}Dda0D3 } pI$1{vy 54ZF=šU/gwd]sk$ͨs xir=|~˗=]<V"y=K(P+Grc4aG0Il(pxw&M5 M+d,ܪu6E=۔{|3[M_0;ZKR3}ߋ4H@LNYKO5P Vk"&izwݢ|uVCm)h6Y/VKq#Cl7)5kXs+3̵֗kAN6|[쒐e{pS󏃖y^Y߫rNM xD&ZnkE 4_%1,nl2)[ EzY4m24JQf Q-"B͊.dn`r},iܺXh~gF4ס=XH@Z9'uo<ՇMHO"Vjx4 0`TRj"Uȵnx)<%!j1zJ` 嚔Ԍc3ʊ3x_AS,Х2:K_!륩Y0iWMj7%ݠO!Ӊ5cU3=;n-< bsɬ@<; R: (Ps=/J/yvAHX.B( WMv&b|$I!R?x m9Qfi-[4NTR~ cqiUm\Du~!0ãƬyЃ՚$CBk" ;.yd;hˬCkzS/߻#M/ 9Q >Į󴦄KuYY ["}xRv ve!؎S>Э:@+atQC7~>)uEYJsB4 t$=9- ~U隈8@\d0Mnsr;L Vo} @ be"B 1_,t[_[Eb+l!RHiu>o%]PkqIPSb&gjZ2"\~HٽydZ9-</T AN19,pX2xB/Vx؞<_Lrr Ko3Q ~Yuw i g, $RhοJLadse o{d>]0UѝS]_&ÜD#K ALjc61 @:#Ԯ!ҥ#J@6CY`lpZӁk;sQ丹U/h h]odUWͯڔľ OJc?`ćFOj=TYA=5-g9 PTE΄o ZՔ'`w?@C՗Cnf,Bo6;hE[(fU4^7P`ɘX܏UyrG9{.g|ŹW&hyTX>a˫HN,9lrv]Q/XBz^?xp$^fug3aG~8޲ J)t 0_HPh38-2}VCCG:4~?8o1TS&0Ajؑj&ns"فDl%-qJ+h +˧ϤoNSd hƞ-+@@g=)f aXl{E#t1hLhtComoxLZnπY`>!_{<!:D&49qp!}H?]c*A^߂jHYQG" aoN8(RNvT g_(@&mnԡ'<ӜDr n5r@t^Y"$2N}p0 {Z>kM,qT,~7kCtH_:E <5BysvE9$'pLkqV?1d.̿(>s yAe{-+ŅKgrBّ$VK[rNԶtqsKs{ɍЦ7v7r$ kA;.p߽!ysL ,9jp"Rimt\sj ENB-%yP]񴛱i9YLFF ԑmf#Ӕ4Uzn@´WMR/2_yj9z0 L\r7Q0ZhÊ'[dU"Yi#"jFoIw10ΟƏ\lLY@܎´"bP!A zjfoACWQG$ zݯ^ќbl*Gow#ەu@@ƩԔmM훁PS 4nN+Gj7We+0mWX#M "kNgCcU (o9΋HA߆ {_=v@)@!TdomlS'uO ER-*Xs`?3q4()'Վyj׽D\S%VgoaVXQ͔, 7Py$m_ϗAK'idpbPmȿr+| ;&4'E5FV+=L=IÏ'@UH`c*bnvB(ϣ0a·^vи˼=N)EDZ4MHY\:Wv=ִdq=3u ~ v, }(KB&0n ΃+Q.4[y GĞW=G~F9д:: }qgcсapѐ|*i|N{h(x|1ӝ>O"mǠi l²"dᎤ? Wޯ>K'ۓ4Xe)835t.#@wnMRrŲJ&)e][[6LxHE,; Any&:`|C"6<'\6kD?O#"㡐/VNw^LEb7D :? fX/< qě+Ǭ+1'h ]CmEN1ĝfH($(|N7| y`}[㏬Y15; ߄!'n.S5{/czIf]}V|֭S~ ̊q:SU;ɾ{\)jM19SO6o8tYum|pYHrGu$uZh9|rIDž'}KiBB0P =O|F;7kǖ<'4:6ݜ%q9f8 *GcW.NZ U>`@'zȆ,buy;`Ҥ]:}enQDCo>ujkł݈#c ӓzZ%9](L J6ւjD5 Nd37\4tXm`)Ȅhߐ~x{qKh_ LMب2XBE 6pS{7E r=?&/@ >&#O-GzThͰF_;/ ڐ%(C:˪b&2GI`:8Rsۇ/ ԥn7Hatzð}RiT"ejmgԻ(`s:#%ngT\ ndBD (ՁW[.Dfj󄶥hzo)$Z`yyv+W ښNE.fWglOK0f&7HyP)̷w9pS0͞MۗMpGi:XalἜ\yŻaH-DJfog(IA?Մ^a3x{4C*3(#C̦J>Yc'91:S$KÓI Ɍr|X+#HiC@ ԻNJ^ ^"5҇}"% IU-.t~Q57bdv+F6lߝoʉ;:KFW _$k"g{ fCW1023PMǬ 3@5qPf Lop+[.ȴ$PQ>0InXp330<J. Z{<} ֲ&VWtT"/GEa^}mGW  OSvEl͏R҉LlF88-̓X]xW2EXF @M1 QX6(!Ms;v k#(YhKlu9yFL=(6c҆N՜jULߴkH|hmT l >MU#GoQvBbe$V`?1o9 0܍P'q?0F {si⭭R'Fnt_$Mw-G"y R,)v́7ҽ 9zf#["/oEnY{KұFxMI׌Dn ByY"4RN]7 uB*Oש3^339F:Y-LR\wiי:ND@z$ S[ƍj*S\vZE/ρ+C`Cged*! n fK NgtFN` všpU6̱.2|ᥬY揵I@)gb?~DtsDR,lvPz5KLc3)p_~Wqe[7Ltlg8cM,F|-u*6mnotskt^icjjׅ"*tl O'?̳[-ݕn,j&&^!/ tduK}tA5'N¿?wLH.etIfß?!p*|p=d@DR2=pMgSIpfR1ugANh,^/>:O!xU>SCxͨ-75eH&iNc% ™4WSW# 132K?yl?Z.cث-˖7r |'/\t}ڃ"پAuPd Sݤ;qеpm,8@5:k ,4%AaZU "4=VB'-:^7> CpJEfn 󕻵9*xS'b91I+&u"YRCSy ?Kt*izИǎQT2vS^F;l)к': ؿŸ5 8&A{֦H8ϤIjzO>Ut/ 8:QsZQ=!ӂnt(ct#]#{EJ҇H1%;d&pcfkO|B_PxQo`BOɻ9̐1֋D0UcѾޱ$:A}ޛz'|;;1XlpLSoSrU1M޲%T$` Ri̐|x맍m00d;hs0w=y*<Ҟ(Z~!f}kroFWH/ns%ydzW܁Q'aF[AųeSa,Ar}_a.$B5B0tN$NZ O}nD.󆶄-k-7}qKD];gVNBXb]ļS9VG֙I}OS>$"kTsO6ї>qS?CLniUl*rɗN;Š*zp67`}B_v^9\v演 q@ #t4~0^Na?y`_P  ,$d˴ 9|C7_% rr6495еZiT޹Vbo=bX0<ˋeRY]WXZF\pl2L\byYpX4bs Z6<$~ Q|ln"DZ\h/Sɛօ)\97NuCEQq/@)˻pɮ,fy#4VLYla`=cʚBNbڀn]Z.z],cS 4yc Ϲ @M]BbIHTVAB~Q;0 ED1 *( aq_xJ0 @se1XC-7bM ;۳:':@CK\2U%atAD%< q%L>!]} Ǖ0uܲ%ǣ&#ad5>__BN~;:&jΠiVXI MO ߳-9Wl#[}iWjbLP|h?a9 TC=p7G@usN&%IЊ Ğy}6MQfB&M"[xX(Wv%o{_YP +wsOtqk"W! r/-44l-(x?.'iLei3zz!*ҴR'p|x/$*t T`%dnj:f&JVVHL4YAR%Aۥ8b#jPRF~-I7^+}$oi䧧!Ya9B蹭r+Am<wI<ayi:PSM<Ft0@L3#dž:[êkB9t|;(`oջQ݂kpfRe/c| ƅ >qulro`غgϗ0Yk¤#w(fzJy12+$1ajI 3rlC&Z}T rpelߠ1tV($,a %? B$.2?uV6n p427-0lnt,fXxXc8u~rt=1 3ύonC2l!*WoYAcd_ ;%Sըo]-o`d+A%jPB!.M&[hVG1R<,;(0TWq }eAZQ)8y 9y c8|4 ̦ &RhfV4~{@" Bd#<1%iy<k!wu G:͠pZ,K(5t ݥEg&ZyI472l\Y 7L&q!B@uΛW/R(F:x;9{t,E$; p]u֏Njhjqh[ПgvztHᱎLf$_\=,w]bD+Kv8ޫjBq%zYhy 6Uv1'Yʿ90 ;[M@ޏPTAO5(<>?`OK鍓9l@ t qvWnB϶A*A/MG;a4{F_\Eߤ$>rHuh[5u E(6y2q̻R}Ey)}]%AG_AIMM疝+)_+&`t-Hk1>c# ?gXMjkx/YHbGg S2Z쉸zzFh1@2(hQ=vR`GJ/hď%7mNj:/%_M"'WԖt㲛AwxmDS_1!s`RC[iu'#:E|*j17Tg J׮*bu.vKrX\'ϭر ];_^"I׫Tw9 4>ȱeԽ٬i=&$͇WYK%}R6*qE}xgZ08^A-4QWVfZZ#:U > vy*8.Ut=9ܬt>Yf*+}Xl=GOrIyD1k1qh~ex67 47Sað)Ґ3,PŊT'.t* wamC*w{ ge*~2Ɓtv|Q=;Y|)]u/Q⺄-)h!?xn&hvĕ \g%E CMc]L[c^1M&V߷mDޔl(v N@,n!&ߓ }l O3#\78\RQu m61\gtOmY)`Y5E3>Їx~n"hՖe{{-GZe#a*J0+ ba7HSt"JqZ^95z@"-?GW,+U\8D2˅OX{pCQjB& tKQA>[/<ҢA2Tmv=." $x-Js ƐgGw^=%RhɪBUk21B0b&JNrג ́1Bݕn}S#toJ3D{W) "k;^>~95yg}Gori=/ >ge9)KDЖ'6پߌj-m5僑%d?ڳ[S*o]Vje|1w!̷Sn'+2*;rgZrzk;. V!8"(3+0mLm)0ig3,He>vqVL`4\D~'4ݓ\o_Q<`D9 3 k$U HHw>PNЗEFM:;uUm ţz[ 2]؇?f[wX p$hDeG(/::vt}I v'_+XzGj#;fST? wCxʜf"A<6Nikj" m{,TƒLђ!V BͰ[8q4U%2IQf@?~X!6Ǒ$|$n$00q-x( =bx cZEZLy83Cm6'm{\ #ZF8tsKSf`!ia.nI2J׬n> ;*W'Uo@ЦK"`X`PPB uq%efߖ8 ZV) hSҁh\ +%o{򝪞,||D]E kEӃ e{3i6/OfwS6)Pa/|sibξsa授,BŸxgË6Xz,WP\qJmNWutKdsس*zRKFEY\ kOw3]|iVrߠIP/g䄱-5"cwkElç♆C.HƷ:> K#+m;P3@lO˯D/5lN; 1]am9ea/,H)ËNtM{d?T;* b娇}[ǑZ%![7"cC y&rdxfwV͆mp+ϨbGaXRgt\Ju]|~^Y8~m+>S sǪW Q\DZ _wJ:t[QVY@qWpΆ%}ΒpR,J uAs]:/asCWlbl*1 F{(6NXDmBƬ}}]o Ym blDP~/|:1μ`k/ KLS*ѷVf,넞;GH[v?unN#S]x̮t@ r+ ǧ0B[QQ0 cDO}e]Mkw_LKުh j5$.m}T'V A!AW\H57CꞈV0ﲎ׍:D3=E^hҫ7 q9/({6fLEr֏/g8Sܞ3gmj-xz.݌S^VhULPTT,id^#hi'槰d&ynQy " Qmw٧@q!sYfn 9-2}ܴtg&BVsi5erzK+$8PjΟ+XIa%1EZy_b6EGS+O"ao~ \)];.l}^Ԙz|K5ABP3pEz N|X= U6XMjLŊ4&jM27=ެuK=^Ft6i k OZvP \(\B6/6T/^@yK]IKIEGPtή_%͋{zJ!Jxdֆah iA.~@:BEYCn ]m% uF(}|Cy G_oڧkSq2cȈ~K`tm~hu>L~ux<-ӎ M?R%$.l).|у3}iyL`<ԳB( t^!zfRzofS&],bLO #nna:83l^bkt5urxBj|R7kR&3r.f) xr)H Ѝ3i$3&E}knyqaTmgdB||z7'2ssP TRDàd 6l!R>,QoEq<`:dIT@hی!.F7VJ/ ˝YS3(\0}G%"RӒ=0AQL7ZSأ298m,~E[*xgcϋ"SXdgճTAhT?B4tO},x=SM+/\N$y~gOm`8ZyH^ua5(qqn;ERybc9yE6RZ/q)?sfG}\LJ|;`oFhDh|E.k9cɜvVԅm(R(_QCar!e@7<0h1ɷ֓0'F9ps(|p/Pg7o ?9J)+%&J?VںW?8 qNjQޝsUdECV% cl;fHK͋vIOy IZ?o_Xt9t쏉pϬ2hb#oj[7 ~9d.fsMEE$GjnCIFqkGE8Ge҇%ؙ:V븗Ө|Xz8*66RG8`޲Q`,pA]xWB XUА+l?l!eN7`i-gxW]FCXp"7wpH̪k;2\0R 8Xlqk%xee; '1<t-цAc)лbjz1i4D!וebD;]Z) e լ8ZK  y;-(&ֈ긼iB5!B~ w\[ƵSeqkOj]3uSxvkkddP ,IlqcuaG|HŤE)(RTc!a 5wT=JB![ a#] H˭Jl<'PbO6Q8wPu6DMJ9bn\ChSwa,3˴ #+apUY7o^ȰG8p- MF@•[Pq >1ʀ3;][Q ⧰$#c6^ w`QgK>Ufa=-1Xs37OW #p<^ *rQ>8Nd$pP_? 41BLBB҂#5ܝrLFA>6w;ǙrLJ߶2#Ou)Bxῐ: +rM] @^@-:MW(ĝN6bO%m[yiXGHHQ5s3?%K w|ny~BhsܔgϓWj*ڭ@[P𕂖PXnݏs@3k49sE7f5*sZX :"Vͤ>9 7D ?{{ʞl1&0S Wı,S'zZe]g:)mMs>gMt E"4n̞$K K=d_L貕AT ̈́KYd$\;~v7IT  ghE#Qiz`ن0+5QRF]loZԓwre&[X#P#/Icѵ NBF|DePEˋbYc? ~'6fPh{%f4xt]UIal":E8 dr0}gZe$'j}מRʡv%|Xֹ2P"4"`љUOD6TKt6+%J-ɂWЛZZےH~!; S"\Ά:^XM7LXJ"B$Ә? α/u7cǼS\o1?y…yο3#K+dL@DZL>~ԎSu98qSO㠆RʤcoL ckR2L1.u:}og"pOiVQo "),~M}Hv v׊2?!!: `>(.\ W~κ_mph^d&Y"23kQ6#rFpu[PG(kY8I %qNeˡh'~鈦ٞӛEXpok'ǓXy [}ak./2'?s6M0`nW˺q䂜=߭tA\A =BM[ǟBM>z,_ 4m>*vĈH.xN&8Q<e:߉ڍT[-^*TmN&V-icBOhԢoW+'qk0d^4:7IO#@3L6~=_e:L+9CzN;lqo.x~ˣ*Xf2,j`XGb #p$JcnKEYx8=e[Ѕ&K@R1; 0~>d^2|LCIV,H$tR);HBKpWD)nv ghA;v E'F.hӨIˮ )ϳ!$WB_ZR-~Ҧ~ވ-o&oulJ{D ǀ4w;1FLID.zn~Rk?>?Ӎ*$<ƬF>3&?/5S jBҤ)*Sȡv 2qzCl9J!Y7pUd5PcOV}񼨗´l 48$u {+-fuĆߗM,YKdE$VȠM%mTX~b;m9I8o!8yyFvΐ2e d&=dO}#yk3 "jĘZ9- ?Oh\bBRffyZv"+Y8)!J:rQԡ=ey6_da\ebT}9Cb:9sd8~&d*(8-G'X*V+%7sMQRpJ8|bkKĻbGg=l'`YG:k/Wqi+ZPh ͨ?dϣP-3Gg)U"15 h$ $-NoUUJ.XMHaٻ" 8QS8 tPIf+8ȶ{809LJ-tNj4MԚp5ذ0BWgfg 4[{^ ȓ'Z&73^nq3;=h/y+otot=Zp`7nBk8kj4̀W]sݎ|P3jrLr*PzqI>gߐJU>>$*@R[gRhY`<ُ$I!GX #1cf :e&8M ry|eX$SR$9-?Kj**IhZ3ʛv|+.h#lL/!( HzxÊCJNs+T_MpU%N&ҽJ1ρEsOm3sNpd{Gcf'F^>QeO~MN=as,KH~l_u_ bSM|mҸ,ٔd5`UE{hE~E.t dL9?}l}=H k71{Aq'n?9 ,Vt~R@ef"B,2EDeP t/j="YFpe9J'zܜ G~ұӰ՗Rl${6@2k4N_P{ոmt{Ft9׼pN[[iwVy8j+ g)VtefS1N jﺒov{eYq1CI"< 1 "D&u#|FiStx{ۿrL @fwZ+HZs_SE2%cp3ҵ VwtpyC\"K+Z5BgY,eqAњjC1a`dX` 훼+:呝u6l0dc"AePj(g2Nqcl\"dd_V55]&!s>E2 fc5^$@7}:Kq>19!%C1j@ Nz?]x>@x(dRՐsml-i @y<"1Pe'ȍ'GAEBVǐQB A Mr{smtu3p_R/˼鯰Oz~ ۦ8W5ꉤ$:o7BT195\?!}gz ! A?XTr_ ÏЍq%d}lOY}ˮODer]7t]mӛć:?j<٢9JJqQVs 'lM>UNZsroH *6(nX9ѥ1Nllw(||B^@]B/V<`U~CEJĴpXlx$VlUtViYA#_^oPa8 LF'+'$&:^x5[([8K#t[Y)VTz50H6NE;eΦJUPN-mg - wtd߄C"fkS\co]\e2Z)vw\b׀DJ'v2y˙8vE ]6&KKpAP(eZ>-2sQ"߇L#˜V2܍ffG7|ռoWz"U*^@T˃Ј0vpNH9:xhfCN4&EJ+K~8n[]XĽ7 tZ!"r2~0ܗ7Tpod`GnR"z `3>F -yqjV8um!աsA/1C6v0\ ׽w$Ůš㹊0aCtfCOfDjH؞Ru^#D"h'#q8R @{X\A?ʜWg" o *~r!CEڣ+)*>CT9By;6;3Bש#Uzp6sZO0ID{|g]7aBU09W1} ?WNi'S4/&zy.<1y4wa3 ! ԇɐ,7$?vF Wi𾱹L)elJpt+kÿ6ehS5fNvݽ4+>O&S0 5j=УfSvlZ^;dTcH[tϤ,l!jbl99Ʋ#۞rjP^;lu.f)@pi7*TnV6XNgǩ*1pSrhķA}ةΖ(mh g.LkbSuPXv2C:76үf1u{yafc',%ƈbedŹqc9Z:F;md!uJ4yCALTz1V1,u IXn\&Ȥ3 /|W(Pf};3#KG˩1cЎML@Zv#[PL d*D(vc ;6;5sԔ!q9 O+Xdj`- Q<M|B[Cg[rЮ>\4+$Ev'3 ZZ!((zB .DV(U ٱZ7{ ~"77EJZ?{?b*y.KGI h n+@[S:ehk]>tYqs`B8S\{6B x|yh\ǽړ?f-[xKى;5pdYТoI#c` oT{2mWO؁M6>ײ%\*+$b>[~uw[ lŹdٔyJ d6n9,cwR~Վ u {tKo](IN몏0fa8_5 ?h~ei7H<mEd)JOSŤ84]4"_6SS=`q1"=}߆Yp,>J Jsw|2OvѸ񡄒o:`~L 2&B1w'#W1\1f<%Rن(9}NKَQ!L_<͜c.Cvo- Ӎ3Bt guq,1mTse꿁Q IEz[& U[ C$vFd 8Ӿ,]dq7g;ɻ}w^5p/Ra(F=T5=D3(iF`!0ܬ@` _֓~iȇ`Tg gn@q`{5W[)#C ˃sUtDNjlE0)VK˹e/~ձkd6*x%rF4y}k)M#J/_lgz?i9r톷箭=Ē:EFI n "ksw+?=uN%1q 7B^㿚r[lX{isc H(g&9+o,Hn*gxe; :0*pV_}v~];5@jp'MNL'/z_8;DXR&vzɡMT0ݻÙǥ"?:Z:;66RMGk"8Շij_tc<.;r-`s` KWͩO,Ai~Piñ:݋`.ϙaܝQ JHg`œF'YzK.5va WT%z MGZ^rz]65>&Qņ 05]{O>$[:>RA?q:9~ CH/2d޿%QPUP,"935:m6XXB,dҥڹDLMZʥ~%:C6 4 LeCи檴hٳ۲lppʳYi7=֚px\#0ъ KƋwM#0vF=Б^cv C,.;;8zmd/ vnUsAeGuǵGQ&#v@V.Lc]2t<}=&mFĀ'T.˥s(% J#4\`(M;%'~yDgKY|" bgyq 8pcT^i t4gozg; j'j`*Ħ'7p-dAMnFs'>,0NRy]]?Z:'-HH:nC1gl LԂv_YhCga~:fjkwfӊI"(٣_pA\b3/ȦUݳb2y6ɱ4ҨAC;\}W8(+]=eo/?4}|D>yݓ+2Ѐ,V/fǼ`6;o/7E3/S73P_S}Ux ;6̿n1EqzOK޴F3lm+n+P#{Qy tv%d!C2{A׌'9 W">3L|K&K~9Ղ'5ݸȰ {l'?K|W|K<_Kk{3wnszs['4+S Kckb5QY܄%y0*}?^{LԻc>{H7qs̉ Y|fp;[ؚ.Zds`ZFk(QaU`J'zYz8O+XU|HǸ{m:5b;#N I~8$O&G|f822߽vI:.gQ fD[r%tm@N7hBMiT<Ǖ"@KCN2|APi ^;xfjH F $F&݊[^np3 70*{<~"C>}{lL.t)` BuC^h AJTxתM*%ٿ1Ͱ"|Xs6i~֐!gij2nm8m 7Ä"G3W>E˵ Y!LA>l(`tbt"`AdGsDT\O}R IQ i:J>{Hg/PYćjW"AM-|0! Cõ|G .Ӿ)&a]r \詎]8k e7o5iN:l΃kbD+ogPH>\~2 C[&r+aB72>|[smx!Di۫ȍXK>5P% 3Z,Tٖw/铖hK_0RYGxT}qCGXQ"e5Փ[[nެH>D12^;' ײA1ťh$<ӚLmpdbgc=D/x[lVח5{OeHTdc1fI|\~9Gh42CT6:/UTˇcojoE<Г.?, Ѯiyq;H Yr.?K8fGk|2C$bWhZGKi\]UD6f̟!=!Pq7b.hj?I  ݂ Ҫҳc|A7ڊPqy7=P1C\0N'H5>nj;-40_f0}ųDiaUg.Sʡ`D(xVYRn<̣ o'j(kaȥdsL͉j |܌)Jvl%TD:69ևm4C4ue[#½;Sb;ԓJ? + Y;L4AW̲(pda.ma^ 7Y5i7)P>Svt:_80ndS2gxn.( ,`_Nb…o 2=pů3 ׇ=)埛AsE%cڻAװM,:**.uUe|oi8Ĩ>R&kcǏ ٵ'AkCT]0CQ(5 Wa(Mj#NL񗯦V4,TiD"@bЮ& F-^uzZoN-B{iɒ7T£eo0>Gޢ jz>yʚ{d Н:Q{birz&>+j׍>Pm m@;4 iudL#*>W7]7PMս}^EuF)37Joўw }*/.1dJK@Mq,W{>;[^s$!}P*ܱ)K*[z\*|Uk hڦ%$)uT'fJx$ oiA F>\zHuyP:P%*Tw>CPx;=ᵤ<2sKl$fk׽>'6~.L bbAu0~u 1w]yvTn>`WXjU'쓪9Q`rƬvϊ}G>qvMmwH\*]9i{FtO0b]O>}8Cs%Ʊ!pI9ĄC6rzU#hO\?ͶʒR$7rZ4X$O\O Ӑ4PZsRۖc:,Z :r\!*~NGXJTQ*}wwN.&4 jJ\NM¥tnaw9>iֵ9GoL9Kb9sLe#Yّ4|A%?'j E{u2Oޡ. CKr"fL^Y<*E{Gin05t_d Y`j⼟ j.V5Q3|1ӫ2}rs @ZC.W>څ9#i/Er {HV_'l(! Ѡjw`G[8-$5#>-Jb[@(ބa#a[F}}⌉<>EEP}^KǷ Y`X{#P(bth׍ZB,ab#ߙ Ŝ?IP v0]h!*'λ,X*ѷ{yu#IЎ4T՗DɫN9kP=Ot uV6Y}=4 @iF]l> , My.*n9T8K[lzB7B}o3\u~9im>\\\N*>$jxCU0Vgw䥌f+8GO&ufirDϐJW{lbՈnrC+ pœ1Wkr97_Ʃ+;әF2BՖ‘ʂӵ}_8X6 M:4m2kQ{,Xnܟ!KZ z Xr=$~,֩ |)%ahLHFws  >^?$AhJ *sF"zcr\~ͤp3yfgI>LzqYպ`09HmJB40C FNcBjE͒ϛWip[QrrI3R4F% G2 -m7l)ؗ[k  m7N@UbPMނ"5٠[! _q=ϱ;`Tj'};)IN>Vz|mcYFVyL4.h6~Ioד zbU5P X-Wɖ$"|NkԀ9:"C@ǗOv+9eHykW RoM"+u+"O TftݶV K -tFʀqjV)/{tTCW_i2u.|f %8$ .դɭm~;+-*O:`A`R(}ãm_,PUJf"'ՠtBWdpB[0w|MɥU%^E@ws#RZuD^" c3g"j{OP(c7q G5jU$ (n1/v d2<&,TeyéV|t^hcz VT ZUj? K@k5"1[>Cv/([D(3Yi *$np]{[90WLwZ#c+_gMvHZvwfÌ CrXΎN4)bj1H#>(}ZX0&@6U*$l0+ta۝(H*XD޽<9 R7Œm'`p( kQ&S JzJ49%zŅ0Ұh^"yĢfŇ={)L|Ͻ~zړhf*؈8᧊X}U6KQ[dv:YEx? b2ZZ.א ^U Lpc˳_W\q6_3o!/sc |8'% U=|T_%2C}T&֮Mo>XcbN8͹ݘ0|!M3'ή4/@D#7!>\޼TPS~1w Kw%äV sIL JܟCk녥2ja4wVo@um9$s[::FYwQXC%"yǤ ;Д!|hv죾 |[cf;@Uw>7 GFK8Jf+z]8x!cYԙA=3a- h3DsM6E+ o:B/iX}J"f4B4R'? q`ha9l?+@uF*>bP)6 U[pjX8Xlbhc^LC@G_%7nLdyp[>ƖI f1( IT^D}^ r[Qx=~2tԥ A-E!?Y""5@J˚D$a}a.jf&NZ{ 5B1[_0Բ [@p=8Uїr4bL5IZAACa9ruSFx1ddl1^ՍMePql..f(Ms%"3/ӻi>^$u5tt0#y5L^'7S=Dk0Fcw7~3*mOXqw@QHft' t>"Z`3ƬJqi=w Yc8bo}QOc@D{p,Yq WHɞnI , \g;< Y03%OMw^a81Hj?7&S\Q#[,3dBuprP*je'(zlN :IvCaʼsxͬhwB8SEd'Ϝl[g] СbX ZiȖ$:)NW_-w{N\4$^Oc_r()8x㉥4.ȣd:[&܀0}lm#AgOz boKER& 5WxuO X_Z~J2ȯq1E(ğFiP_K.8p@$1:M36aFU,$|9' Ui?.ģdtH LOR"hKk0zYUϨ#&t+*)uv YZ2J@j}Jh >ŝס3(ESƙ3m%*#!H6 f[G 檿fVqX )_(O"wkua7U'MTP2 $dA&ֲZ$kG JeA<6f,>>8H4YPiq9: οG3P|.Fݰign#$',WyGwI 4? z#HˡeԘ<ʭ}wwiOgAދ".[S*V햘sK3cO  #Qo_z8扂x8FW^,%̧(c_=p8,ϥy|;ĽNDDzW BZc? j[>~)0nevC ѷ;)5V&׋XG7\wޥ@[ئCCJ )i1͞*k\Y,8\~#]o Y]N:E8;6Q&e3Ea{I}3,.$^jFn'+ku5L*0:qlD*eoSky2xji^ʁX\,4)6"C1Ϛm+g!ig-i˖ V~8u+hR%{OM`c3) .:zh.vH@i<Ј5$Ɋ3H1ʔ+PѐAz$nG]M.0]ԋB(X)uٺNKSj3BS?UbI-q8 #%JNlNY$Z jٍj#90E8Kdc} P}+#uCBz=;zĬzV^-k#Rj%["ȉIήK%/tѶ=P-:፜R-]7v O72t2ր@> KD m!Y!>aS?Cnsb/7gL_9^FH)I1BJi+O(Vtl TN\< Ij2;0t_ ;{#"Uc;vI)EJ4`Fzf+bׇS)X9蜭DBr`G A <(EŮڄ3;1|tZU Y[n()Vܖ}yƁa)4ֿ;F\>'v_y1J8x(u_ Wk0O=q! /_i쎫e2h,:UN2xs{0d`aCQ'r≞Oa(['`=ՄNeKTfV&]*Gt0,6<EW_SZR!8'f"U~5leehYQifG4NbamκO`p)'${p>RwPOD,}KZ1|jld{븅($ģHIgִM:6=Kvй H ĩ#)܌~ ^!}SBKŭ 9"+rpl+'٠$fs15((0xL5ۅ:2ȎRNmgmp=sN޿Ur-Tl]_DS1j{w%=%`؝x?`rBcWd>aIe2 H87V0\cYIc C#WDkC *PG(2~h_Dz>uU筚`r8]iu;ӗ8207`2vi'oh L6t9o\OnZ,4C.5sj4Yu<+EzT|l(0'FOA;rTM~_ 1 Eg3~I;lud+&WsO=64,l!(0UGcmkR/.pɼBkn 5:K aeQEg?ZF0fg"g | 4 49ASqi^ŵlAӈ>ž> +5Ȥ ~.A.UHI239,Gm$H}Rr_-%;-T?w0^kjG)WxX:!`a}]!.bYkoKLW'?"dĦB|D-!Tzl5 devزVH|eYI'3] I-2En Ubc w\x ~,G+< OVlRZ]lJbPX{J xٗ%)zu/¯cʷ~:>@E=NoF@T)m&9G3 as. KuWy)n ̰"}whtɄrxvrF dS>C!&D@㰰kHnQ'VY3 `S@D+ "aυe m%xYF h38Z)lLJdRY IЁBrj*kzΙ2ɔ^oWzc;o]?K?3jGVWALq>:3} X"76҃;*P& -xǰmI:lymym#NH%hF_XXvB/,bsy`xeoXMC".9\Vۖ蔧ؼƏ6R)\PɤgFan.1\b vaI<Ħ@, fzjvBV&u?uȶGw_VCgS^ޔ)]O^`!r*W忻,1( pUgpM'Vk; T*Vj[WL2 +57N߁( ^q]v >"s2 Yo+[ƞV]<'b ύ5gdQ6"]b|AEU^RE/tp5jؓ$yɩ,b $XĤH;#\f&(~%lhl%kưre6 :c!.٭0!G:Cu?=!U^l ]]A;@$׫7Ê!N-7Ɉ%+"gpZU &Mƕ5[e5tIqGk}c;Tم|TO&995̀M!XdK,-(U?/Y0b iF9}ݡ"n["`tӢZ\GjtĶmj75-%8sP5)`ILaƳ)EeZ@6RK9jH) yn>m%K F<$fnrR];`y>MG J6VMW3i]Z$NY1O-({]jn(Ϻ0ڀ.aDʜK{eJc*t,CLKmn%ocJܸ9u"mv&9S`M* | 0iTVAnZqvs?2քF#i*_Q3?/^SIjqlQ<:C %_ . 8۶Aч3(\lU\D<q1vkGTdZ~qMs9"50 %;N"2Y$jZ+=  oy i`ֿh2y(Z2;buOR@b ї6׿ho-nƘ+-dŜOU r L%kFGӶԌ+H6!qf-LGZ]|k^\chi;Vt64_qIF SϺeK)2dL؈f#ռrMw91{>t8rƳA(%K:{xtz4@> AJd#cȽDW2*o}L<;uvY|&x"״H_Ziߺ'Zc/ 235az:Nөai0/yGU_Mfw_REvY8Ec9嵰xQêgR&I։l̠`YBnT&Y5;! hk<0_5{A{Y5~WeN[H(0qC h2\c.:ʆ: 6PQI%@R/@+PoPn B/dp/d,C!j͡|"qs#1 Qkt3LR'^ Hl 8LZu>V.(P|ƉZg-1JY*j$p ƶ^)n[FWj-[+ٴ ǐ.e&_(Ka+\ϗQ"tÐAJ$|Fڥik-dORY"- ˢ]}gem5ϥʘw AiG[ᶯ-d< ϝ .ȫTyOS zo~YD8˒QEu%㊳j鉄uYR-zU?GOt3CvrwL@2±)cyYEk SŃmB5UgH#ewLR=bn9`>3_uz}w']41xj9eTF!)v0!Bcn:&6]j1mj?3U ߢM#$p|*j9xڗ6j!/EPUGg *j{ z!-sDј_/h L T?6>y7fBnl)ch2k@I1`,Lǩ($&ldܘzZ~Hlp'ۡ\cV簴hLK[rnoʹ|9&ƦiŖ0r/ȅ!Flouyb(U ؄[A(q3)'  U` Ej_ Mh[^4hB3' ZYm{ܔPɆ[†0nTe1`QTU޿s7e$~K$O'oK+nM%,6}.qZI$dҽx,A(~M0YUXZ8+bXO{`(ym Wߍ@9 #unG N6h2exR_ͺ@T T?yl3,r^ty(gZZ |GŻr7uG9FK,!̉m-@yޏh5&‘\vzjJhMR =IC D~패J aԺwd<gmˠH%xcP]vc1h"H%FFcZ/XgPERe=M]A?dD#(8T|$[hq&Y]LˤH,*{v,Ųgec`&sI'= r) IH'{̡F,! Â/A6r;Xy_CyL&[$6t.Ͳ& փYk4zSPgVzY!C#bĐ$BDn-2mZPI iw;v5zmo&Et (S{5T44-!do_^RT S0}/(YA)/U#U,3֒je0R-.A%,-h~/VJQD+U ,]w=Ht=Cظ7QhZ\,Tafcg^G"'k4" `j|_ C/Y;%'@,f/+ӃF7_Ny1rF>]i-HTЂ:ԍ~s!>hu!1`? tf | T[òE+ Ǹ&&CdH kw>ݤhP P[ & xJub6OeSrݪrIǘ7 !sS%՚ʿ]j cNuEm@Q^헴BV̳tj ũ\&!6BKhAc֔'qMV;-H^|?oW_Q|5 ۚ(PM ۏK8ߐ|(a!ؒsL0Jr#!TpJzr6W7J.85s W)'\[M>sAQ%*%vl9  4Qو2_Sɍu7>rf\9kFg '|*7G㑮 XI:5%M~KK$5KB+mbR>nt?5{NαZ݌BK~p"8{캐Ȁ!,jtIM5Y.)S}ij4ݟ ͝sbOxL"7$ { ҷriguRRx'3Xɺ6ͩiTŐxFkV;޻GArxMX}!#^4θUH7F)K2aH7G,/JޘmMp<"nMöSn@4ϠMڈow}<3ce".VˎNM"3ĖxAQ hyEy8`2MfQ׷(U*t6.FO#9yf6J2~Hg(XԪP$`?|(k{{h{5Aai n(PURv;xp`pJQxEGD<hUAϲ>8'upe-R,@A!3ʢw2}Ra~ \0ђEYblV; Ū!mvYOIr`TLk0SBE!h3VE"X<=Bt%c@(yh>^xտQ.}xy~ Gr7ړ!-F}ч19-..=tR΢ ê}g #W#?nըEx}c o{xriFJhx`U:Tӊ)'H87]78JUg*Djn}l9r@zR~ć/fbK&ʈQ,PwdYK4=k`ZԮ55m~Agl57l#6eFCW((# YJKSo{Vp½m& =~65_?]A@ô5Ē 2QoTТN J Yrus %Rst8`+҉jLd ui 2eP (YC b.Cm$: GzR$oƹKNj29t=G yV6:͚荃?C YrHK{R^y6XekR*4hAňzf{f0vH .iZ)$y^Z9cxȻ_nIоmVԶqq YPs=4|߆OH6mV^8,/!K|\{͵NtR&wn8lHؗZv{ٱGL0. eY-ȅ {>(6;j @d;o͙t ѵ7ކƒ_K "8 ʬ?xfx5Te<Ѳ{ &SQo \2r#E1o;I:4A0\jg2549q@/|"C4!ُ7ө L Cqj&gVHܼ^"vwQS^>b `Rվ#>Z5C4kש!?s<^4MCpL-BoynHp1;%jJ{K7] l_ac {̻ uo=SUt07BF-W s\D L9Ņ-q+P;V>GS;M?/Q.Rr$@ j;=t庯"Un K;=yʅ?h 7z-łOn xmnƮYrKPg ߯r+^;h)RYd}uilAXݟ `2'zOl05~ZH694.-\c}FkduzᓺP{#N2(Z GaW _zHMSYe&5G,D T8``@<D85߬ʔ{+0]w1rF+WٞWUx|ʳ6]ݖ_5 fGibj2{;T'V q&pFY,`\xkz!Ld#rJ9)} aIժe}ouW 6Ӊ87FG}^˥n*ZlΌ5IВiP9[kྴ:[˓(t9sbWEF-E>]pFGM넄ut)6V^$8E7+ SucoZ;UձÍu}(߈MɽeP.4W*`S3n&m맸@lA8MCYvYc~$qSJza& u@PDej 3R+FAʧ i =8'-Kut6h%pMX\u`"3SIޠbO-7dGk3//d}=bȯr4K4=ZpE#[+`pqCԺ MKT`X͡Gu>c-?{=Z>Y|T'D? 帘\#g U r Jڦ ͔id W:hZuooJWnE;tkEXd{ G%dz+)8F@84T$NXx H ǩDЕQI3${Xb|u7"_~p f6&E )L~\ѫ"u͑eےh01ڷ`G/4j1NN$C?yDw~Q5wSeus3'ѥ*j)Oµy-?yk d>rm~ z4j1" QɟlŮtw QgL  ӗ`fv$͋jVڊT̀"CO ъ1zV!dޙm2U-e0 E$/QJ| ҳ"UT3׭|-]L9 mGv6 *Uz= `8ry-Sq0_rrܽ~}ruKJ4揱=~ް1? C1h1jI2InJWşըk_bш+^g.U1jg#zzn{NӇ?u9SOSѶAy=>8s ̆kI0&NtXbFŠ:r%L<5w;?aKƣ?W}.0>P!2L1cDmيs2Vᅆsfw!qO썲7W/{^NOՅrau QEX@]tO/EoOwhmoT"/5crvW&"IyOĘwM&ViG=Y+Ԕ,` n1f+ʋ~ Ȳ~8{OiCNRд|T_AFF^ s"-?60Q 8G"݊$-jbtp]sD9)iwM/NB6g$ެ;`?ONG;O(Og4rE'V?FU|~2*8ZT ,=}uo0=ipFltrϽk].~IUD2ʿkr{v"i,`;yҘ'6Qɇ(\XQP8ذel4aP;e)aV5FeGZ.w;j4N u[|rX{FF7_k^=ȶbSoWɈ@z ;]M+b'<+V"ږ)01_M-`Hi}|Zxs h9'AIV*26-<+= vR-S,۹`ELjZm!n9Z1R~~2qs袮rAqzp"i#uqߓ~vo5P!q^Qj=mY'+0~.0Y 'zo"Y=%ߋ> M|)}~s7f0kj0y[e)nzMe?(5 U 1@V:ON2Ӻ"9Dݲq6jnnB=n[Y堫Ce Oq ?/}(BI?q F Ob4P=$X̬/³ROșJAu|qSjQ+1z} {.a2$DjO$45vXgTmCcH"U> Z-9; 6Ox͏$tp}9ϚQGXG}XZ?Wq3uI7hb㴄ӂ@Y.*'0}7^f[ O\])BpInK^}Y0?q_Vr5rrњK;_=D%#aGĄX H#pz!l#g䲔8وF<[? TٿI.06{8K+x=-h?RX=vjdaE? *w!LfJ# ҸCcruz]B7 EcL0  O'76r-\ x=pM>뮇\aZ9 dl:HNjLC↦g8y'LE 8N~LL?rkH oGhU0t׀ޱwFp Mi!V595TƓT\˯~4 XLd7 W7y. ]}i4+\,wέ}(Snvavҵv kSϮ:N M kgU; rXgQFbrێq;#=69y#Y~y]IRb*bQnѕ_6ZB`իHW2{rN'R~ /BĴ` Vth?^S,zQK˥gbk'Qo*oyz$r` bqR,I^g¯w,\8Sݤ+PVaWЭng.|py }B.M:6j+$0=D{4%):0WF™'9$xus%*)o }a?֚rzq3y#y#mCϤhG)ESryzj^l @e[s7CRٵP3> ijz)F@GE`LK5nOC7Fjҵ! ezE4d\1R:ef =)]Q)sZF4 ģ쏲kNkg$T7W\Ŕu6!B*'fh<[ hGy7ts7U^NȎ¨g42 sf)jxPw: h\t߆ hdPotj޳Ճuy5 tIW}VsJ'Yc\Rn`cY(1-y)$j0/zl,S%7S^trݜ Dόvx ( f홄RQs3ԹC8' /2+treb 5ai_>fSn{;7sEb6.L bRJ _l0&U߅>(l)Ƥior.v߆3Q(JJG:t^ nF5HAW2;RČB%/~p~N23y"]]pTtCrw] D.TڱONDn7L74 5='ġapp7b5ɒ. vAL}B r s\d:ؗW^>ŋZdYL( #V8Ǹ(r顅˞ "嗀紳R"Ԏ@ ]!yi{B>rU͸$y26f>_ȷj4qv'h3{1R8'nW5=/a ;:;t~fK^8C .b?$$U eLfHt|:Ckq^͆TQM.vv/O0(MHؚQ*nZ!G#fuQ @n/~i5Y,NSow.UUA-#pO~P,:(Ηr$g%cc +~?f>\hʚpV7N3V3z u $]f lvsdTDjyz#x<@m h{MŲsQӎ9Kl7K m o}p_Qiv?S'-s^ըf㿵T7ѯ|Z! >ZWSM heOU)5:7KJJiN ˪;zA AStzmρΆ,&;*X΢mbO)'Ȥ_|+{?}REӢRϋGUY #T4B^U)|"ۓgF$B+{sdF(YT#䕓//;{fQޡf=HU 20bSػ]x*7fd&2ːJ,Ty(W^j݆hO:c[W}Px T7J֞x?n܉\4%k!,[4TL`gs;RfMYIXᴚֽaV<=I8oӾmВe!fc@枈 [= hBg&d!H$ʆ6j4ggx#}RhvlV̜{;+7œ{[K\ªڤ{5ه }0FXMфI9%km_퉦T,%Ey4 ۗJΜl^NQ :&nyS_0[`Yu8XgDŽ8&Ib> DR–5y+ Tqٲsz] 2x3kѯѹLwJXR.%$ S%lyK/F "`uq7AzaN3#k]u.n~#LtfUl[I@6TD;igZP3,̆3P§?~)\Cg+)t~cv^.ʊJSЅ5^9(kv]n$R=n%R_[)Ҳܽ1샚8vہbw Vj ['V?+Wsp29{NAnxEr ]ndka5M[Yq\,%ClGʎӝ|ڶ\XQau{3\%X˛"<̃=7G=rsܝpM.]MLZ${AM0/# L͊n2:h-m 5+9*b'>"$WС!X>v-νKE.ygPY a+.> ^'sGKo,\~G措rO+jSOi8 O o. u`ƗϳcA1Iy$N#nxWif- W%@q \Q!$V?%T"n'x';p@a9 QfCNJ6 QhH Of״ml[3 KkbG~N;o_&g9=mQ$/]QI.nhv"X~ @yz@௒h>}:uFYe#fc7 `<מD6́nrŬ"27>^ad;4q7Q7!0CFoKJsb!n ؃?c%uFԱYѼBINߗSb iFbc_ xѴ aRn NUR (׺=AG0sh7Z](0y~NNu6flzH苒̨(0pao_h3F([~SjoqdTEGWfEe- 9 2A]MɧO{79ex>z⧚yp($v<%gdrS*NWiI/p1N'S6''t&kɂb Kv6<+ֺ;lHjAPB NZ]QPÍNt>Ъc;r3jcL6Q Q`*XgێCAKf50wh+PT[ᮽ9dE^U>!jgSH *MahFu%5tr~sr8ú0KAzzH.ؐn~Z~4[UNtxk}kg>BXAvȦI-ܰ=XǺ[GDT(>cF]s AJ"liDbgqyJ[:ϒHQ5y Ou ш ʂ<4-ga:1E_LIL-^|qRX*pQ%z!zV~4QJWbE(h$]Mm~FZR@XEMel|x  ۫)Ḃ Vi=w9 _GÆGdjrk# +_q7fvmn ᳶ*"sߴ}t@M݃VL7~?h3WZwȺS0ŷ U~ (*ߨmO2Hgm׋܅8}B6#|+1Sߢ] T#؟*ls6,~s/(mPP@8mX`u3ׄU4ψi;{63A1G-? G!ssS4E"gJT.XZo'<2Ӟd-uRѷ*aPtJ)kt 8ԧiQ\) pi޴;~)Β#1v~m))]+nᢘɷHjR֜'YaѪE&QwXt=H{}u/2(VHsp1PټV|.S F5$ Քv Ɠ2b6 ={CG ~9<ۗ"jogm&|fH_@D\U2JyzwHW^JBs`} US<֐>-Ʌ(/䰚jibgܝ2h9ouŘ پo(hdS ?D!{*ȜtU7l!>2kޙKvPŔƣ:*e~,Bv5ɿ)Ŝ(YMCBwr4ܸqM$ 0 KA,@&z! KJO7 m]CHRn!I:?~-R8R&jjX,! ~$q ߎF?kp"(cS˦%[#/ֶ)n()XcWe5Dnw K| cb.l\iDJ ! 0Ҿϵe LVzGcnu!gf- &WMRw 2ڎaˏ o] iI+$`;sMDޭ?;XYr=_~h5YhlE_Y"<_Nϖ>[t (32HO,;3-b YѸt Zmm|w1&X w̯`$~"A6dsC>3FN-MXtHs rbdb?pQ%({Xq"ϧ]#7Mv8͞~^>Uz? gi|suqC>-yݯAL#'?!!]5qmM hЁT気K<#7 q&2ɭ%3=tj.Tk3ɗePN)(9 py-(D7׀ў(/x ;_ ?QuO j%tz~?GZ&c$Oui_[xK o0ɕ _h[.pHq{5ƼS5I79M|bz[8fkIR@\[ey%C0DEXM綈bzlnrI7غ1b┫~T^+Wk[kN$5>@* i=?QAzN|@nOV1χ)׋QvIGg,(5?rXp%_xq{PDϣF%NT{LNf qgo}h;">\FOmK|I%S>vCӒ{?g.B|}v2]U+W? X T7Kͼ/)9^DX 2_bބ =`K߹ت޴&n^'6P ABOĉz]a"Kn VӚ!maN|qn7vՊ}5I. _t{P?Peyf<~]rP&Gmc3I5ߏzi}3ŏ Cqۄ(1P9/%{%isHРp>FOC@6(\~"BD8c 5-!M/<SqH6~ @nFJ+K*ZYqV+gwk/ȡd$LOqf|.X.cu}i}%N רHJ.=K=^59Fox1H 1_'OTBzKI Zg%![-@kG@-yz%n>t︠V,9!7K~՛F4E1?Mc";/=ImZ7m^'LǖC%"6tR ʇ)瑶aOu2(zZv&1n#4`Begodhp)vOjn w`Ʉ|Pp̰Z/9c.M8h[o`Zҫ$17VaO4I0;=&*#3y(b5!=kA`|`A IKЅ<6|7gB4Ycz%Y]9,|ZeiCKܮul |Q _w9욼2t!SQD:jf/RH[B'! (Cz$,gZ]GrߴTN-kDvb?^͊*u36y KvN{5?cK=z4:]?jm~H0n>_Au%FȇIϤzCCq*ZZ<>"?Nԉ%. 5 glS@NF:D;R[$'; e4哥^GBG׍F1k,8tGr%7M+qنN yY] :ͺ_OUK6> > Np&!SnV@Fnxfr!tD$R:8Ѥ?Ђ;08LTّV89qw;@) MJl.@la@ 'eLiUKs:%2o E2;@k@\f;zƊyg ώ3$)/gWq3=H?! s@JAvv v;s{DGp E LX\0Y+n~J S57m#o hON#m}+x;)A6DH铲#L+&3|KhH5h/n g~k;MuuJ|ܱYbZ@<,s6?X*&+;-!ٿj(ϯ m !bRK=ҩ,r!,2x!7 /_2i~A  ;SyX s{ލɍr3[5m~ vDkP T|͛jkϒ{ݾ5LOUՓ[|4RG dtbLݫl?w+Pd2yn=-8+jgzHv/1 J͹*= ֬tG}mWp}1gD>VMT DHuP_i4@ZP2U=m6L \K4(h(l7=xGm5?zP=!y@ 59 9F䧃$WehDp=AF^qՓŽ]9"Ax;M`Dzqr}Z]Y(M`Nl@X42ov\'5Es#8]8`H,-QM6ͨv⯋p=NNmj(J`WWC5"m;Xfּy7aŶ"Ȧ3I}vb }:1^#użS/i^) )7ԓiqΚYmIe0alCN7ڏi8Q:AjCͮ Lx_ȉGB>rfQ7R1_Pb0zXYY>X(7u(͍be:<424$\Ng)Sο*ڠ h/s/7MEћND;FL *Z&<;qz\Wbz*eW$Mv²}P_{lA03 E'A瀻v (]WLUUtFwvnX%1[`Sͤ <fLҥwD5L28doKFJyz,n7pX\,E74܄HjCcZ*'9k+ݖ,IW6ʼn'N){[?IvO*XK0 TbBQ^4eБ\{uG,ҘYF=͎r_f:y]dy y雜$ႣPj%Iuo-ɠ)M#9ɈWޜNQ!1rV=z" EDp&+\ 徨CNYthn.s 5gvLAeҮ/[\ @rc K̥7嵲 O0( EY ).^6% D$m'g2·yR!$t/Ok)v^raR73P15rs~3 - 2}O ]qnyPBiש!!9?2F,]c;RidE]w}3޲oآVP5 O$^_.faa`28UpFs=Q馹8CCC0%l|[cֿNPk΍ ' ިrBd9/u3jpZk̮8Rc=QauUh-=whH Ȱ%"B"7O qC3͂\JaFrNNL.40=Zc=T-:XKÃk`>!µ*Wf[ YVʸϮk]^v/JjS?29{*r#2aKSYe'k61'4!\l1|yxZ72}@K$$EGШM=Se7;\P<[LKA638TE6wYa- lt3eL^ŇǖM}9tBϹ2. xѨtPlZPY9VSwOr"HB(~[|n6; fG/żqL91AFu"ԓyN;LF&\l4/0yv8ow,6D@ 5ohRC'ޕzr@i@F8)ǪIUq#bi|%'ޅ.9yƘ܃;K Ve?:F7X"ndmp*yҵ*;$~f3rdoD +\0-U~x`kE.ghK]Yh׋Y峰M"J8xX.N) ad-$*9ߢk5F=BW3 Gb_/͙Em>'GlHbxRBKQ(e#/gM8TlY}-v=!H`1u~ѕwʘYs8D2 3#na# ^9;rB7V>Ly}ǧC N'4Ix~%9&zNرaϖN k7Xg,~#1o T RtlA5mPn%PdlvŽY[RݴS'<%eφՑ^FxJL%G{ͩ8 _Q`81vu eiI >$iGۅ@f=33vɮ71 ag &I\_AψFㆄ`*żӏz9(-G 6W(1e ގH҄ͥWl (Yu/UJp==܎.DBjDmRk@?fQ kDiTekN9#,Gn:Ym_EP$G$.F\zlt8e &Lɻ Һqp1)'+/!y͸^(u8ϟG>CY~EZY:|N+ʹXLAآoJxD9?/H 6 IDO7hgqڋ>!o@m Y4N|̐4u"gkBv`SQƌ2 T 0u(≖P9;$׵-k ǘuOd   E|Uj%\I*QJ@6Z #'n/#}M _`E*;t,9{S;:( ׫H#R]j#r|I96.|||&n6޳QjD/uj5}tDw֗DT0 uy%cX'H83 )p2k-O>\.Ff7{J!^cZ:;QE"1l ^=l}V4z7EPuW,^$tPDX6~5Ǿ-2ƎhVa",e4fL8ⰰ DGnRޞ4)t)ybF%lZܬíQ(FԆ'.T~qH5Lkc,g6= =|N'qz[ |TMf:)umZcf[L9ɘ_J'whRRcq <$ [^%%iAY(-J(wΡ#ꆎz?rx g\鈧|-YD-gScoğc˽V l7!p;J9'5Y Xy]#ж/LubptzT+XqTn @X3UրR -[ : |65:r 2sY2\Qc Q݊MNYkت"2hO5E 2jM' (oobx\9'۾*Ӓ>N3Q} !?g:X`@eDgf??(U}_]w7,מRR>& ۥ:鯮oyyidA`Akⶭy/ X|` aQxJNxWRɾ"dn]^GF5eNI \F8Xh/lG=Jltf\EFt@|"WU -TffE`w\])``8%V :wTbKFY`MDANyFVI!6*ݱ'#2Wʿڜ6oy3Ee߃W\[ۈ i(#5˝aSyζ] !$e$: Mæ{ց@dZNt3yWJN74md21ZC,:«\|{.'Q_1Y{P8z[5rG1raLw:Fb}:nР}cHP!f n{ ^F#H$tz5W0ts+ A5ёQ[,y%Q+:$(*`eyMaٓ$pXOo]>fl&Cj^!41o W>#dDܯ_'2i3v_5˯D'>_9WZQDZ>Nʜ4Ld, ~] ?J+jDvҿZ8Wd4k '6d@ԅ_t]!V%0[*PO|`m.gS?UxD79_rH~8.`kS1@V"@,+ ٕLsOGv:(: ½攌{N+SI<4R/E'+W)]i"{?3֏7o é[<2j i|,0o0+d+kT ټ9[نA)Ot7; UCNl:qJ9uU .#8sx7^;݌|.S'ނ(NYFME?;3cUt]hdK>X!J*da{RI '}2֡~0-9P𥳐Ǽ<`;&Pwqf_#N'A_e(]SJ!9CǞDEh[lᝂi:MɞR_<8M%v8M+/m}yv[EF ժ㠫 &BaN읒F3!TM6 Ei~ܾ7%Įk/0eA8)}Irs$ >ϖφEZ$vuF iwW(f/cis 1C(-16H?gv+8ߧf 5%H!ah?Ƹ/|XJ⌎LcO$SH?(e~[ qX9繠ArWm&fE JQBŜM *h',ωE!۷(9w[μ,=K/6=8Xnk߾9܊b^@ Rt[%z >_sGo_2л}X i@*Q&^)`#E̎>\z/0VpS*3HՎ!D:񲊾~1pNwrf;(L^\Zۀ`Torz-Ɉ2ƟaHĕX525|z.6`%TBA \ccѐD&@4X994lڏXt6`l1 >^q[(>LܼmO6>>x&X&{>?tl;0ޫCE_k$rFjGqGPmPآr`sY~55"4빞rLg6r[>B"(ThN9HAgUU IÐ2h\9ĸI ' t}8GVޙXaoGٛ#讼=W:B=\Qyo=^)WBY9d D(5C\<%'vT`4&v!+o@UlY|V̄˧v` =W,ZWBivcGK3%ZqRxy.{ ri"<|>\ W9q d(\[yJ_8{ FB'i[;yq^` *IiE6Mr:^'q};Yl7b]?ϊTmx,u)+"\faՎ\u=p/vxUA#_qM,J 6R@q^U?VxYH/nzaM[c?y{7-þ%A[ޜޜSRj6ºHOWa31'B( H陒*nA%X.]g+f/ռ䭋[>C⫰ =^g<|o[(ιFDNeF>,h@/{R4ҊCZcVfx;vj๵!;N/)@2wcUv3sx[-7WGX pdچur*z;Լ&( z2o8Ԉrag[>,a`<[}Bc`7$Ģ2Ra)Su55+zX#0Fպb%4w.~h3vC9h&"$ 7I/^֚}7>.Q ZV.n]!wӫ UjPPj'm ְ̖`ivW+|yMV ҍLVQ-`l02EsHs<_%c0ih_c<0 6}VR)*d,B0ӑ1h} ;lũ-SO49ouĬWH0S e_ <ӰoPp A^0K1%% e;"׫4CJ;Ǝ9fK k#ދ)cQ>Ǚ]Ǎ E[o^w锥MFҐ=k2$U j߀ҭRb>/^~c_66er1e X[tb3ŮpnF܈!W1nK5B!JxmA2ӥDqXj+xGWRK~b<ŵs"'w# Uɯ߶=TQ 0BB "Kpym4E`GMhL5xLs/rO:mqN>R*Vñ>pHb_xvڑ^'Gش UçO?Dz0五}T`Jߵe0Σr4X9kC$\,KM9u Go#e{z]06 (b| 3zw +Ɂ?˓S@mZ`UCRj3|7!,R@'Tg $ŭV4n}#^+cVQQ7޻Oo< w ټ%"{(f"5#dcroE?{Oc 7[X Z>C>-~9v4X#:`R1CVpBoMဇґ]ߦ'RBs5P=RMUV:nõW(QT(>ӴVŧ"$S_JJ4Ή§)ӑ! ЁgIL>WQU/]+'~Q B=,9ߺj]C=T4JJ轠1r+#gFd/$ne|,~]˙ҤYGs?y@:\bUǙI뢤 |ck;i3uwƅlgAm{_l_^ <9}$O=v7hll)CsG dŏL:/"W,FK1"i-hP-V\ 96 db>-݃(p&dO쭯斲/Qa`2[omG颓59)Hsz֨o|ȀOj]N0J4yzTB_}[րBNL#~#ȰvkTW6fKD15@{J믑mK˧d>g͗K.$qAGk,ޓ2߷-c|CƕPx?FQ5r v'@Ƅp0C<퀜7r%,eQFa^T;ʛ;U%*>:KI@JJ8wݾ7s o$q1s5#u poQw@W{&{(=@܇X^ku[ F9"dOes9WV:u})Yf\̬+Q2"La}fZuGQgՃ ]ܙ; KqbʯAڢ),9W AD8ʊ҅[1ݐcICeΪxZdwvhRˆQxM:ݷeT T(ݘ0ycWadq]{a^PWdu[N3&4F(6snxU'*eRkHJoJMf S98~Fwj) zǵ$~x!}j?9`Gͳ L: ˙oe.vyX$"X' FjqjAQItڅ̌㥅O2a#Dڈ*5nbB@ _LܺL$"mB*6dZ7xbd G`faR-P9u )Hx̱fL9q JA؀T~y#r{\-f$P-Pt= e&3gQW;DT;^umf](Ԧ0doB7$ԕ}͇0(q#LDթ-?|ӎl.#yKzLXe ?S!/a;95tm}<)!.ۏ&U$'Pz{}\īݎ_6.6k֡["ᇁey'xab'-5.Ԓ++{ͼ!Z=OK2!cO#xW.\!LrTܴI{(Aјt„4[om0 7nkUUÖhۯTj*B|kv\;0ʱuyL+ȓ^ 5FF.P*ެ8Q X2kfHiGLlHSD؂ KhFe+Z:~/15`T;)w(XwnDRmų,<d-GI٘vaSB 0iz3U9GzsJ_2^5FfALMH40ړtD…Tm:xtRcYR8&t!"6gQB%\JHS dz(V7Xp?-3C\<—m*nbdp;AaTX.VS8nj5zI?&<%\Ɋ|@;z-v熂ĥ4g*G i,cUp"o<ɏeP'mM/_|TS-Uqt}$ I v%{C}Nꥲ|N*§DcA)R Pђ.G%;.E̶/S^`|?#Ue -@XUPTA4?Pj i#@l"o/I_W}Fq>1דlα$;=;d_mw8 oJВs \hZ5(NƲj>WtT檆g%-Ezi3kT@3 xŴz!Y|@b~< #f}IGSpPPc0Q5nSHTʊ iߚeA "u8vU% X-(?/ifA;kʲqxMx_geY;ZOKOJCDNU_*5ŁdL̀|{T~7vo@hJBN[OLI-M7Ub6vab=Mfwy@%5Mj"`tJaUMbeWI*4YtT]RΨ_4id$A7* h0E=Tq&@ qJbЁY40 S2'N-Wo@ʾ&jfYߋ'7ݢΰ; Nfء='q+A?&x!QPrn߃oaU]b>]O?1 utBp2<#{ŌP=ϯ?>Ȩ=y dU^sЧ wx0m-ŸZI_ך#8҇APBKcd̳dK䠋5G;@AЅ*=\~'2d׬t#x?W{ }z:0 -z/sIMنakKF@msxzUd#)*߭Nf@ԑu+u-U=J n\*R/.dڂL.dwRϿ)d%cgl X؞584"!:ou: 줓ub:̼]"ݐOe@h}۞5kZGn7pڐK"":V.JPUs{tm@_s{FB6w΄(,(koJ *~L[@~^*VV|"/3P /7Q2roDnLFK6Ϭ&|HHohE$d <@Q+ߏ'xQeUG"SH:b= Kha#tZ<'n !(>'$-CGTm᥺{@.z婶V);\bQή,M÷Qhdw:Bk9hqs8 NiBv=*Ype}$ „ ׇ<"ߐ ;NbiaxAu=p]ɬZ-o%FyS=N7J;Y=]$fZDf8nUMʦ> jr=] :,=.8Ei:Ur7D`d9Sfy o)}ŊJi8tY:`ւ6Mi?A)\NO$'O%y@b!AK D9LQSJ |G9~L}\𲵌fQBjC=v4ۣ- ^zt[(Q&h\L%z" ;i #ӽ+4 wt'E˿ۀi*}GJ9z0]r#{f>EeWMKd\SP8 9]g;`w⮞׾j2?,áHhSndx T|^wr*܄RDC9;E_N XZz5:KpSEpl1h4Nbij.o[k5N1 > C%-Gaae@mqFl_JCW73]ɴ4,!ٍ7dfhfNʌ D2|~ߎq^ T:S&gxUE |ۿGnSCƋqRfxj -g>9i؇58BS$鰙i/"!qp@o''3m[kZi {ko0]60Ë><^/ge5=&d8Yݹ$͢Z_aɚ(iͤAD5}T2WX1e$ KSJ k%*c\иWi ۔^0+lMFdž؞h%b5  ]B0QW1&P8c-(yvp>g'sl@Oh l[2>"77Xxrr.`Z75IeŃ֌G.Fj5 ܩדQ ]WY0W<㐓\lQmQd0=&.3ۖ|Y4(_,W'M5E9B儥PԞNz Gl2fXrKQM ^w$ɞa JPU1'! ZJYfeQ]:юIkzY6{-Hd\-hk&/23gg"yx1\`:!1K{vB^Dz yp N#Snv*O&4env] Ӗw>gc1uԆYM79 bFIkXwRxk쟊?CLĆ9aF"3P(wx/ s#gRGr3)h2ԀEjkVGl,65h?,[p\Z[PIg%+06a_)ӳoSL4Dł #f~ /ZJ]7-w;je6MBr0XDj_HY-߈$ 7Dxg7ZQj*D !Ix|< -UP@(K=j*(?0_mi}FܯPv@F "uHSD`WkZI|CZ8a6*S&j6*[Јy$/^-no3Dlt57}7HQ3EIhW8*'*g'/J5(6D9,G;|k#Óa1ؠ}Q- &xy=B[6MҾYi0{{0*V\nk'e(~vAqC" Sqn-D\;hVG^I$ 7c6ܔPw<ͳ#iͧ^RO͗ThN(#3IS_]Xm߲{܆WJQ,p!nxjnφ!, _=F6$OCBOF'lH˾e=3<( \7*( [$¬D qbFFƌ^T0(~fU@~rb:}`?ѮH /UPd}Cj>E,wH۹ŶoҲFя2 ;r6W]O+u2Wpk0j7ds=Τ?p{?],)[/$'փ//[jrF]OɺT+W#G;mrjUkNWZ̰7T]S|n;Q$2ܰs;Qvo8Y8;o8@m!Z,X G7pliIBsSZ1Wwq<,Mft|NgGΪ35`#7VOqԯ.]%ӫ6!rtvSqbJچ㌝  I[4d-:x_j8>0%fyto(;`Hrpo8Te:ZՠMKɕ`)MQ򱉒ߤLӥ;0c:ZI'^Q5"=r"s+JensNe+UͶdv;:fR /NBjJpZtˆYmHLIn[gfmkXxb}K(IN|9Zt?fU_i("7b Zg~T]sft. ʣA1|9X."SLbVffO.$9nsNHstާtj@$P($A ıP^1z>܁"QFGa+k'o&! yC`*C576xEu/%ԛVVYPzals3=Z/h &]}g¶#ʁC0% qA٣H3}o J-kbEoWZ݄HG}˧ S ]q; }r[g󠂨ޅ) C%7ӺtϚk+ۨ?(4M)(DM ] "*)eF2cȆDXfcKL~D͘Y `Yeˏ?`+T3PD")WTI.Y`={DKTڙM Odl(!'Dzۚ ː}lQW!&> +fx(+2Qe|w+w]$_%W]~ (]*BGZW sj_ C@~^>˃_ޅܵ R:ۜ;"8h7wd<+iKX#f|wMbA;!i*WU慲翺ѭ)$F`AD@[`9cZToZW])Y'E$x3Q4}( ,:{F30$5 pLp)jwGuD{:ӹܫ&>,(2R.LBХE/ L@_s8R&o(bu LZ`DžE}i^I_"k< ReHC4{AitjIOk?=Ck nUIҚ,U!$x V`C2IfKQ^!XpW1-Ԏ$V1h_T:^Jl9!ammg`kWB*IYx?,XkDh00F y{^!f3IW̲gc2m8TsLf)'NawKi?Z3>PJ-=U%x:?6f7/!/~l>;h6i&&d&6٨#2[!צ=zw:6t0 ˷y{=$8B߲5$жWSH?6+>ROټn)^ hfu8 jB\՘}>PϮCVa]d RN )+ZB`(_QE 彌ΩODjcc s5&>jch]=GUdG}#Г P]y4kc6W#䘈T-֨NZ0u@tq0c핃!,5 '֙vMmkbxtr&=(" j.\F B8jϏX*I\p}HCO>LUz%,Hi!v{'1Yh(b'=س'3Nc/|4uF UW uVd*ژSFd8dfIHM*4‰Hȑf)<ϰ~7JdqY9A`O!#EM?F6 mI'}Q(+^S_>ȑ|c] =8~VP'FC̵_1(Rn~mKOᢼhgf}/~ċާvEؠJRq Age#KN0]dWf?C4tDbJU]LYQ_MtĻ?Oaưqb*1Ҕ,b*ڽ4\,!J(Y,J7teK.G,^{*Rɶ<2\\InCU>חiၑ7ET<(t8Ϛ`+l޽СQ+b8bݲ#kU4< ^T&*<ߵ)PyA%ge=Q1R:]`e9:rKhoVl=V7anIl]`O?8ä `~wThi]Fp+PoztL@E7rL>>cYs=XhzfZ9j E'}`t|߁>BՃ{d5qnB@orQ!Z`锄u}1B*Uavp q4~U CT_t5VL>:ozr-Ot$[fӐ=eW!nTPIs TbyB1Gr͖)Y3BҖlP|SXK&79:?F>Dg˶peJuAh.,z.|MO]n֎m' \9*hV~-'V>eIJpv1km~+6Z#X ԌGOy;$Qr'V 7-@04 \$_l5g;㎬ҥV}4j7AXi}ΐo9HGi-蛲2G$h[ 2D ]W-۱5u~ٖz[/atD$ۡ\aX5N*c23ߎ !` P \zb~JIl"yuSM~*lr7 SBǤ%cY8_?j rߑZsԼ")qTR^0&/+yf[kI-[8uKG]* :V@s^"D{jeKH<ĻF%ivQ|`J^tψ[`hSq#70Ǝ *}\~n"[\`Ԃ:6̛hB^q\Oy_w$kxsC=!0zW8{|2QEHṱ 7E\.`~35s?B!Xs8!%u`MvS1EQ~ܥK_wӤ#xs;#:H#y WZ֕?+N^%bW<^+gha>;;a\^vl#8u׿4pρz; ;k5MwNtgy(p JQONO2]G{aTUa4#a\mN. c,4Mq&:( mdĥcs^\B+\ӱ:V!4wun<2}IEG$bi?'p3$KIɄVQQZ^0 H6! xYS̖,Kd@;-SG4.Kc Ffhި{n}ӺګGݣ}vEM荑U;]IDyjx熊==S|?{T\ CBj׎2%\j՛䬵\FaJ6 i:6=oU}l6f^Mͫcؤ r[\^Ѓ|p7Z"TGwNP;$ȓSCwU46V60/ch9L"*>˅lw3ӛ("Qs䥈ߦU;(_$ȍ)vrwjJoRM$}ukVAV41,t7erfx RaO )IkZ4&7x<DvVBFs )"f '}?X)Arf/p:u7t|h`{ f ioy"@+`َWHc4[@Fv+?_ΠQ_T]w^r8]F[a%>MtiH>wfG 5E3Ƅkiq xwq-39V]L*wј0kFա2)SvW+F,]ISršscN:28̪T˚$8$= n`R|KΖ TLTC.@Z"]JB`#Dh#ŲuCBccPee䥇Wk:<|o "%e5PVF8`҅B>%QvɨEwoiq$+}TS>nBfKI/U 9ڏ68RJN΋P^ADڞ?jNa)K~s“2f%es[;LC[Q'%y PrP67m؆ƾ?S CxOkS ui:u#.rN>jYp2(uLbk؆_[:L E/݄>@#ƜM>~j^vo-Χܵr< S^_AH3y]1_|ea`1r]_Hoa!z-L뱘Aٿoﴑ>Zcf1dSڧaT\VX<~';֤(C#2e)NM p)o<^NC[mݟ@h&bF뻧%zyn8 mqfўѠg{__Z׋LVޟdA3}H{xJ hYEkڳpQ>` \5@_IIϙ?Wz݉#0WÄA9dnq^ASۘWk [$.6\?n)~SrCV[Ǧ6vLK].pq0N7oG_/3EO@8&Lx AYRF,E6YW `AKmF:&ƹÚ+b"rObΡZ*'KJ>|nǡ*=5N 1S/AS)[cUG+Xq%Pˢ܄$E[\Yt3rnj-C>: d>墨՛gV# 2[.|f\~+?"Zg #YTg7w 4xST'X3iq}_-y&sH{-fsBE*O "Npp{jH2VQ%KTb9xQI"1Hv~Q 5"/G8!फ-˓I #TAkp8%lPбIȍ\X\,6}}l[$Ac21m|,ϣ0rn#V*˛UQ$Fu]Z*9Zq'0%:2pR9x`iъ- .q_uRHƗkQjK5.'HX淒\(4|m,s}cIfhDR (2v\ WcO?8NF+$mͶV+8D$֔s<1ȱs/aBKR#t (.dޭmҼ' [g8tyӘs`6m&\Hx ||P ăQiLvՇ9nYt"bKz܌Ԑ{n,8,^U|3:fۅS#Ù3Y)\s~shTt)Y烨# !?m;>43Yψ*cr٩7Wf͇KGzwpJU iG9 9>!0x LjZ 78}N-7Nj`sFv}3W$=/Ádpd׆Kܣ`B5~ЋM_:!SV/\!Tffl{R|R˸|^O|Kywk-m->@J]YŶD(҃ʅkLF{1YƵA>d}؞6֫ymKP"Y.-{{ "^:r65H|–3((_q=蒟=kvF.u!0'$Td 6圿V * ic|yFtݟw9H<M/HB 6$D-4?*KQp_xY듊 *<=8w o'ujn&J,O@aȉ&QBEJZM2Z1kǙ9^py~sq4lbAٯf]1ṉֺp:t=wt_G.Y޶"0:k;[8h!9Œt]A;E2, jE`/[n ]=JD%`܊Ofr^/3KL0f l 9Lܺk7t!FU6]YދGSZ W]`XˍTccB[, μDB+O0\B9#vueb1R.fiv8x/> ;c2ΨS|F+m\sgw%+jDo/#vfm p,7~\ǣ"Ce)N~Gp '-h6+qqfɹ qj6U 0.%+J`.^7K ޞ5i$1 c>X辺+L G <ʞ3) :KO2~}0/_7l'k3X{M`Cn4Q(4rN^_6'uCwrC# g)r|&5b6ٲV"5.fj%/w@ɾպ' ̸kyG3߷ep΢?5Q!ө&V1: ]/3>q=| =eyjobPhWɂ`D`-ǔV3, v[jh;CuJ JCsRgEB=&ً^3q#}vg}TD+TysF[T#E#ۂyr_LMG2`hNUkW TLj`~*䜈6Xv RY8}?:-+Vx!j ^#V%Z`p)ڛ;ɷ@mevW[tb7#IKbqbѧn+z$?b3>jqL*St&"I(K\nSx\FuZ-^\jVNe$<5vZwm+6EN"K<xDtB`o'n }s $FvWn ;˔'~2&?986{NX+,jQ2X^EɷR 1Bb71=ߟ:3eJ< QImޕB픗TU)XT0i&V8yd5ܟp`iLl[ѵ& =c{a^ⱮsfPc=..ʚ~\pl əQMO/r:4ϔ6<}Gs>I8ofT<Ƶ#?x"Yz]58LAq(PG:Ӡ~))Ns64j~Ȫ@]zT{;硋ku֟ajłS y+N~6"zװ3xAǮؼhtPuQ<@M0QJ s'Լ^_Mj] P K m3գ\4N/i@d-Rc7¼ߤHFqkϬ'2-7m!zz,7A-U9\| B[7U.HUB${=Q1̯޻[UJo 91yN ݃`Q{c 6ܱȿ+LHiA|f7w&"DI뢸!WދNҀJ._H _K02ʤ=w|bEvmҿ׉ꃢBVGQ#*qpbWxK$,͛;\]M)z=m{zLDyc'd!G2W6N O:Qf5z[-a=.'?WɍrCxL 597T߃d*ZE[!)=~I4iB"닒<3 OT&vɠir7Z6=Ո^a&Wo's8 -KQJMhW㞾)i^QQ/9a 0FwplXqr%>.Ɗf<01np~+R4g7Ige ckjR?bu$֥%E#|T]!bOd/4FXnlYVkַN.?QM ²u.+lΪ6^\tH]ٹoS0yDy2@ʹSnP:h0OKCd+ pI'32S ;fTUD/f~pJl5ܿq}=˞&)0p;-ry;J$ҡT(apFtl ømv2cV 7JxbZnp^9P" 3J5@,|Fx+wWFBjQ7[I RiPA3ߨ'D2Mq3lT/P!v&2-cD7nT*E;`VK7:L*B)ٯWACu!0j#HIϤBNmz#Dj9mc[91Jt%W)F8ҤB4vP-' 8~*F02e4 FX"eFnP_,`ItVO=G `ZtSRd#ofL5B YB#s'}*akwV!pPg6B rXuYt#0^{r8 lRnBfıHN1*&[&1=)lJ/T$cKد7fBA(єԲW)q{fn[n_ &>cO@[ L4P);Mүg"2qczqtOi)m[vShT2 z }hÿ}9R - (Sy'H_?Ծ iC=p@wFKo!DrЂw> e/aMS=Ub{gGS~$@t€.KQl-BBO̫MfsAy@9euλ2BG1nn,K&"Kl4Gnd/npZ%E7@NsJܣV3WHDoY(p~=dWsp}fap-h}8rBgp}4\#pyٌɲL]0A\;QiOI柪ĦuH/ ժ } ֲaQ+v͜8=5{@y9S>8< yS>ycXL2F[Պx6l_KgFElٛg)l}|lUL,[yΒmERaj4|o":콥hU`8V0 I$LUA7휅WAlS_IO?\Ue!Ki [{R"w S  &;k[oP&Dmk7O]l̿nE=؃w$Qx+q)bxɄ9I}z2 lx)T= ^e+,†CZ t@|o M?7BU 64-+3T;F+fF!z6nc$g4<f T~|_g"Z7xhXsm^̾*'{{alȽuN )D:ť̟ 湥-D_EτEep#|xcꄺTY\:Tv@&fmT{e ڢ{Ԓ z bd9@4q/z)qixѰL0UGւ縘-SHTLC17 Z=01 s&+Y2Fay{dJڋŦHMj*<lwY[E2VԇR꧓0XXtsmA[eܴxavϕTyԏ):-bhR",Sү6mE]FeB(Rt(fSFS9[e!i-UDjI}|te=QN_?)X7dKo?fc֠Z?{ ,&:w4;9Q;\/?+Uf{nm#L-w>X2ϥkdXN *U%0A(xNȒ.uG??nĮPR.CyLZQ?E7$k2^a!Hy@L+C(Bɣ2tg*0UAH}{@,@*67 Z-C׼otto0&_ۦs(o,n].EfuVkG$;!zg N47C)AUWV]LJ~@TĐ8\rX<%oQlوrU0>PۊA݋; |YY0ueWBߖhd~ D9Fה`trѝmRU' sf@oMg~-*+]Xޚ f}NQ~ b sPhU?ZDp>zqH{֞"ʿg݇4Rѡ `ȟY2]s#kfdnФs*vŶp 7 Tc uruLDT '{Uw0 +eA4IwQǎw2x]~3rx=T܁h7֕y3Gkr<@f-oJh4$2D̀`{%#ϵ r>0KEM(G7>_&`@\} w\PITJ!K>X (5u/͂Cuk23ذCmR*;N?;Hw0K^Wizj5e M(LD⼱a@dۼI+kJf_PkW ~]-; $'+v)0\&!hGlc%jHJ٠1tB߻/345O2䜗i {MWh/ biYzF0i cC> * ~)l `VS@ΑT5USv {=4mP][3Ky +ߛµj'^*c[-y~\ۓ;JK앮CMtaVo2e3eK^dD(V(&= + #EgAg :m+&/!il.#?&Yf8 ú-~D%}#gsɆ Z&I OGLA; 7YCsVVi`c? +O-yr2aM-7'Gm݄5Gakր!eR:\.o-{_1>i\^Mڧx`{bmxu^>/N,]]I QQV j: 4LS9nuZG35B<4,rM#e!ƀL^@ ~FWSOEɸ32< ['O/ZGl4~Slw2Q4W  vΨRlG}@|N7a'{mQ9;tOnzFL켧;,;_!Lhjչ6ϡv3EMլ~1Gz+4*(`٦L~r.;5NhW9̷~_YX]+Lbpc;l^o:)څQMp'e l {{G4UIV~d`WU*CbHv \.ֳT0`~˟sԹU`A'3ujyh7'Y;XU1(6̅`MbPu]ˋ)m،)=K32kn7($ፈnrY,"Qqo.V(#d?do=1 }<-3 O_K/L$:PrpJp JZe if-^*iW.D V׷<>Ѧ ng<$[˙<(Y {ЃYQeDjnIfZy5jX.FMBS,Bp]9}^FJS:'YXq*)O:hZ;ɖ{v, ޾?\'[OG B&N}uQE,yIu PcQj8.;nT7H$[IV49'V9gɛIRM"so K*/wW9\T@Y_f3Uhs/?_d 6bq#OkPvKgNZPYP{E}P"Ə%҈Yjlk S|چ؀\S@?S  g#B9PUFgXZPɳbϛ]%;>amw Q?KEi+MV=w z*À=Gw=ze@BSp?@R;> a=qo.3iD1W>T --NC!VZIibG|J7Rj^Z@|\YB|&{=3|5-WR>J$4RE#K4u"@&)Ei. Nu쾧*$ jp%g˽GN~Pf`]ɛi8 Mm-^pKwttAs:*՜!iT1{jRRR;A^vΡkw֙G% U>SlgAsg~*#d!{Ը`s]6̒d]-b&B~Se|JZ_(zn1yL EMXKPQ1SNjcg?3]ޤoto PeE7o-#r$WY'͠yHiB!Yȉ}ٻEo/΃s/5%L-(<քϾU=ѧ`o -K&<$cb듌s(>%CA`6<zPɢNczDzS Z&u>VF: KK3>!,ʵQ&Bbhi^x.cTзi^ݬa}8ԏ,Epsn~iDh}C&'Zn XoƩ:G|>aE3\scSsJ5xJ1X՚A1%y=ŧ|ZvU|2o >BI|dO}>|0nvFgB20DL }ɦHXR%FLlLWYLų_ cXuw}ϚP <l"A~:'xEc-R` Vt}*dT2ɦ˴)qJ; q0,(sSj;AL (b%Bp_ETfX y^Exѫ+R_+{u[P-g£ }#t좻R{Cs}kZ+!zw*DKb$LvF'##u 3w'w6]WS,gE}Tȴy|hwR7ǜeЭ(up rU 3EjBsM:b$0LS%wWvOh8,&Boױ*mRgi(Clf3Lqb 52LΎMݟ,&B63_VڡL8I V&h7s\6 ׎lEu6!#SF"&nT;d]IAdJD-M0"TU23'y#kɳq3Z< +<.p^ן r ֲ߯5NzfUs? *.?lYw/4n:ފ{!! ~O{xC_ UiUB.xZoDg3r6\Nt2Zy#9k7;Vk Sc+KCʄхV} T\c}{xȔxMnɅ1oz5TGP,,N>e~q&,=2/5U.znHiRX@bHzdt45[v#e: MU,Սٰ[a.C+H:&6J['uZe,G7tk:bJ F5O59pt\ܦv5f HqOI"\B Љ\Tx[FSR|J_,ݩ-.d5I:?)0KjRwMbt5azT8Š˓w,U,PL$6Nl<{9 A+r <ُ?گin|4kZTFk<&@vκ2:Z7-X7Cby 9rɏZ#텢+=4EL2?提]u ڥVX^\0)UdѬ*fmJ -քL:0+T. &pvˈ5~PVx)nC[|ڇKi՗,Odg7eSiԽ &+oT*:^,NJ4{WS<^(7<~Q8g죠02gu,nm4sVfGe8ZD9:bԡԵB+/h=ΣLj{{0YP X)q,l-UU|=ډZp̬10d#ZbcxDHu6O@0ƛQAl$@%`q_h-F&okj"cn1D9“[DS!#܏Xac@`RiLflP޹|_VTBN9Z9chG$`z}Pף nXs 2h6.b<0)l beN{XMm.=6BQ~#V>Ddt /J~EU3ኩ3}O27(OLj^hd |mڮłp`w/1Gb֨`ׅp~<]29^_\ǛA?R~џBvuW"`@^L~5F GęWnGC'CJs@ ٖ 1CMKɀ=d@wlRcFOyQ3]/ipL*cG¦=H* .te8x/հPktu!)u0_ n&lbZlA_l߃ŮPR !:^.Q_\FQֆQ"kE, ^=Q5fIl}Hi,}ԓ p;[,l/öƭ<jV_m><ə_D9XF?&Å^uy?/K J6 T$u|eLb*Nm&/ (|$s7 |ZU6:)=.f#Š1B$׌àG`=c2f@4貫Jc~XȝG~z8 1}S'N`QT JjcI'kJ/1&-N~e;T}s8τKk19࿅`O2W(Ϳ̖osOk!4=ph u3i)n-qu9-Il/j: !-ysi+v7m#=L.cTu)hp O:8o&fV.c\\+_q&L+,kgVyԝ3j#666q%_? p] ;FLڢ1km^n}*( ]@]=AB{nR<|M}CBj#@cpYzz,yͼFhzk8WVhHBgX8ojzNUV.܄jkŔ s%%wv_̗ŦK0@>{6#Lb7J|I'`RSæ{/U$8e#f\7he'P21yɗ|ւZ6sF:gq8#Z<)K2K,uhycjMgEķk]mҥ?i<`QwaF\`u" 84wxZ[< Ĭ,aYL?8_|ލ~:i*n_a5 t bP|!x s]녽J G"v">#E9 v[`EzX9at4݇ %LJ,ik'R8 [ |75{xu۽\]s"7{Q 6!?i@ N}zKM7AR6&%3 ){ܡQsoӏ lwGLUΚ}w0X &Ӳ\)&emvAv$zE:VaQ m3q`4BCĢ* m6硰|ꥦ٧;D)ns2i6 IOx9%T (Z;PҒ0!^v5$j/){FKncw`"m%'wGO XD=-Ѝ9[GX`KޱB 6ib ؚN_[bZHiC)^#@(W=Q#I!.r $:^S '󀮔 3dIC94`ݻr2Q>8fdOz?rWA؉7rD}Bt C<> NmC{>U#];髆oIt,yɩ:Q^za5n7 ^ܣiQsAܱ44z[;p@?Cz_(Z㪀lc䚝ҹB6 )I%ȜFJӑdLw$Ȍـj9Y QAĝd9SoP^n&l0u#%+Cc(mPP!&+!+cҢ`m+ЄgyVnAoXѤ; 1?.ڞn˽#ى(/\aFrkږ =Q  U[cцJ!N6I ;e["Mpe>,J1a9g4{SFv3luD`aok^~zЉ`6P}Rr T2N>oIISk#˚egg_o-RjqI7:K#E!tamE 6g'A)^t`s? / ٩XD.R OJ"ɭXV' G/C[w8>fRa厛 pQ\Kk}4/YtNcÃ$΂/|)/8T]cg.AZXTE~&laUWnǒ0?13AO+{DWj'596$R=b쇋@]zX=q88(g3ܬNҚA%f<Gd`w|r %P 㘺,QaUB%No6E<%%dq')wf2T,,*J +t UMϷjVʼ'T3 VM<^02}M* JF̣B0,7hO&!A ٣?/Ӑmd6i[s砯܏BpVBJcޣř"ZXuJŎ6 7;aMOJiۑf?^NFE!"JYݞVHOԁMV?tD?*Ěg01Jc&S[,ߓ_,p19as/%p 3WZ櫥kϬpeT֤&chx#i:~\ S8T4'O~\ }a)"k„a-aoײOx*Φ#>t {G2-̤FaL›Dcm,ys) Z'h(ӣ'j{kBaE "*dV_,N3o5 83yC4v B=X4頌b|_mYI^ ajƜgZ>)뎃d{sv#zhצ WU}R3 fp0/:zZtoQPdoRTʴ-EBޖZ'XB^x;(BOH|/1A_VmTߘOjIj CuZZ֠ Ix߫%K_;g)WK{(va,Wܦ62P'WzH` L+ľs̶+S~9A2`3V؇sE41M~fWM\N:C8ss67n7eYQF_}`p)ѯRke[ZP%b D>d'Íewڕהuy9bQBaqѸz[#Xy$`!#֦i;9KX:xɋlMi@_E\ M06f JO.I3z݂|u{Ħ~7D@xoF29F mB"Mɋ%[2guY 1K@+mpC#1Nih]k岂6UlvQJLjecqBE]m /M!SGv7tۇ"hn1 5sTON֪S(AV׌};"A HQ{xGBσҵ5!. l _FU!`=AuN<kˍ}ca7ɬ,D T?aawo@ p99'UkiZzrlr];`jl?GY 8,ZRk t m=5fIdQA`_OgT%v'iy{ ?ŹdT% "NRNСK}DK+$yXjrzm;]tv-pܓhhZ6HG 9kr3p2k-9ݰqqSPbK502TFMsx5D|Lf@Ђռ!T%,A6Dg5RFnVUXVuת8yQGX# hkAdD gddsg@s,2EMIҀ*3d/h*zǽuS,%+ũP/J{.d: u5FV,?eպzVÿsYCWCd2E\3] 3v}y3m…x+%xFG]GOK?&V.@I|3C\;a6hDlnv⎉(vȰ%BB\Zl}uEkd,=BPJNMMa7KȀ|Ѵcq}{~4 Cy'<Ӻ5LDx&[6ŤZ_!Eo(Z`5;lftܳXWF&:m3"aN\Uj\. B8V,attPo"s3z\wuu䚈?1"AP77`D'縫TªZP|S t^P  ANlO޾ M߷FBb@ rܵ<(^CΣ?G\.m)8,s1l^Is]~ҐKߜl{},W!7|5tN ^ |[1zcp'J{˗L5P aͷo22 ަ1j/VDMc8[|Dͨ$tGOA ;4J9&;eDO>!AYw:([K*6*];z2WNzmCʹXǹ3ܙ-QƲqxfۍ暏 |Vy!`oJL{ EPGꊪ܅6>d{ %2W 7&m\"FNpBFkq2U5 Xyù1&=Hi>EjL'ZQZg}R @6H)2^,{` \&r(h3.|s1꩘g֙()P<9ۀ(|x2BT?)Q[ oچA8!w5IWK\PdWP% ҁ 3LjFL-P ?9wt[:eƟd 3l"xw K]R׳0B5 b ؽd 7$ ee=Q0l?w|=~PDl.R>Npff5/N*..ưY Ҫ=mf:uG>:ESWG-j~Iҫڰޜ`&;/ta  [g购IXՌuUӅt6Nvzk_x?}*C=K7< _5jdMw1l:@( S`XYROpmK]3l,#3TbZ}ClpP^br5.>z&.[V9HߡTKy#[o9gH 5"@/*l&t2Ҵ% 2~: 3oؿFZ2~RƵ)@Hbp1l(·J^UƺNZz4>DhO:J9 |3=~ M+Y DȆFt2~j*C#r0|T9 K2= +3cpǶټn\Cm*\c&4Db/ rpd;"w 汳8c䡚. p.vlX$8g`nj"T6kpz~rlʳ8(8, x_Ʌb @?Uc&c1@8z$O :z,QKVlm;%7i) XvcvuPΤ[pL@742hQՇGwQ%~gp qVAb>K N^TX&e% v{,=F ZRpWUnw@i*;I?8͝ :i+,Td"]D} yOҕe;|A8Ђ֭a'e8M\z+NftzkH16KJ{`q﫰?7y3J˕@=W%~<Ӡ-.>n=#{"YEh]HsxhR{i?LC| LcA31 @DK,&eڻ٩:"Dm q㶊F?w`q[$ ÍڡNCfvW=ME=,>}zȜf{ Q~g\u9 zF9y3lg̉j-6F$_#)ve|@F{ȿ C3(:NEIT ߴٵ:`[q4yEbѵNu$?װX!NN7{0}xwU~ځ5BUJy?#ş# "(HP c-sw#) IK0|ʐ1d-T-oY ,i3Gp.%nQw2^M8ee(iX߸wK:4Q `DJQSKًQsz:(>;xc{`ݣN4P;uDt;?@ 40/N }]ob-!~Qcq&Е؍iq.ȹ4R H8bqٹ'6ozcM ; k^$eRϠd0VfCnN|Z]VdAv.;93P{^ܬn7mss!I]KyPcXnL >Cit cRj/BihHoV8œKqW0Q,D+qn'UO&Z..H걹WozrGEo坞_T' jWcAz[oY6,}AI'mq,Rsz`  :*5' RsBvdvLbOՄBd|4F'2AjPet~[fUp vk٬6%81#\OhH`(@; Yin aU,mӊMȱqRz :Rffp2(w J2-X e!2_B89+QlʇuDe=@bB$:y=}Q/z.ίJ(*D0!ԷVvO:C0νgT^&*kAr/$i[!>Kk@sϾ` byb5AnM*B1)5Eb:$-;>P[`q {!0d?&dVwcX'Sj~4"xŇIZ .Y,b*[Fe>V[>9 nH͇CM2ב_Vx!{FÛ$QW?z6ӥm! >IH K[z8Uv}3bƶݪ#(٧8`IgbaTΏ3 5 TH|vUrAi"oAҨ(9aQH-20liI]juH_@+t^PLQBɴcX KP.Ť\}_>ÑI`Пu 0F5Nk*Ϲ-p9>0$iพ]c`ѵ]* JԧrL@igXn`~MO5SYSe|d:*v‘6ǜ|,N2zh%)n3Jt'ܚbA`˵ 0mc` Qp(@ht |% y(ri t8;9Ds6NUo2+o,y:GPPoȂ8ӰbfLw*DW8]$!ɔɩ} WC% N5T?NM;wM-.d}i0h#[IߌgZx^M|3LS`&DG).0R3ʖBuګ|0D䄠,| صLýZJ>_ߗPiMSh]AӘL _Ga} mղ߼kJ;7xB:|fdSʈ^xF=Ƶȑvݮ9pK8'!TEǛmUjV<ci!(hi:xv65j ة[A1}1rUi:YcQO|*c+d>_Wܜq@H1Q}gAYgb@5||XH1UvLi| czp3bqgwSX":@1'4;DW!"TƬ RM㔴fϰHklx:]@ilhl+ʷ4)9Jh4`C54B\~N5#??v툌}rtAf[Hx^E:)R嶐Vz7]Fdog!:f+R }a$ hP4~K bl.1[$MA ɷŨ{Abľ˪ĺ4>`8\o_{C!Eaݪ,sJ_0h y>|e2/yczZ4ۖ$W*9ZU tᒇ{ gKNܨq56S$\'}Z4 zs@hu߈0 ncԊ Lp o0eKakD' 1=;˚{\CWT%%]xm#9@гOeI噛1wcN* .m(6P6!3gK|R:v 2^M+xꂥ p׳$.;$fXW "\ g3h 9ީZ7l鱺"dHrTSx"n6BagB cJ0 F9d@rHP~H$#Tffg;h[ ` wtrf|WcpT1S3DqkN%sVz-*7\ư@wa,ə yI`G#^.FRM[V:=[s1ewTpݫ[S\wQ+|l׺ۣO dlO@G!{JU=231%֦EfSjDFT 4ni57?:.KvBy1Jy {@ C XNIQMꢪ[2H3Voq$a2IWɉLӕDi]_\’#>!ƣZ>+x@~ p@4KXr-npV6z0'jNC#F㖩wB+`KqzER왮9 X@pyj4IcFUJ`#MxAJXp,[l .hH[yIdS"*UNT9&jYCY@1E%v42a6LS(\0Dy;J YaiBBO1 ^Ń˻[Z[÷oaȡ>ן~ɯSdK*wKr9k>o|"6I\njYb r*2??{y-rǪNZΊGI?Nj4˭Ic_[/؈;( .1om:2_ gաLFϵ ݲMLdZ/]ZNa5^r9%!:[̘gNbL*LXǪ;X*XgG:-n h}_G6) 9l Cjeaq9q 'y\m*۵ɲfpkw=b s~'߷+kU WM/&6k ؏5&x:5S7݁F85q~ѳ|rrG0U@.m>^u,ęc(E,"Ӥ j}I/M%Vܦ,XCEFL~Txß:ڌsN"D(pp{to?mӵ:g%N#H*^g$ִu܅ٸdY.2~1owq N"{> cޠY!WhsyD^9څB.2)'3sori& ~t,>0}ܾ)o9s4 g_;v1ŋCAR(_3;EUw#MM x"xĉ! ΝORg{O:bQֵWJ.43Q^S7 %{Sʷ~TkjqPX!p No n7bS:=vE;*GPe"PB17泱 *c ͤeĦKRA?UW!EBC1  |$xwz]3bTq.fC ;PzAOyQFT:SCY܄Tvy#tT(uaՍg-;(/W;=[zW:;ݰ2pz4<͂ϭ(X&P*vQ;{^]iX1F C# Ԏ<!!,+hXv@*j`ݏ) a!P:hOI"OotI{\b0NM OEMg1<3JF({T_@A:st mB\5aCa }椭ĈK)RB O`/$FkJlDi)&Hv*Bͣ& ٳ%(cտ;2$? UϘ1bW7.V>Nr9`1glcqYax eěi =co\:I5v]W<)^L}88 8詠xhJdJzIðGw$'D?pQZa\7> U?a`Jϻc:r$9V7R-\-`XSDLFH\7HvUk`D:7F4!;HsU 5dN[̮sB&_k}Ʈ.bL)$z>(O8׌pYwJBH_- KErJdwaR@xcJx c;D(32pT?)\yȭwzdXzwd\ n#O&k0gE}}^L7n5S9(`ͮtjbtu{BٛCw0j]wv˱xThi2{_9(%C1o,tZhϖqw DkʓqO{餅oְ{UL`;u6r(ޙbU3Q5qow>+l@9[ՋaO>d͆Wj| 0. ְX{rax">-/w q>.9FBI9ǭ<ܐ@^Sj6mkW-V~PXl xe~ VYIU'{%NaTqw{{UJUpj==a^&pڌlDD\~bND 9x&,!vws H%{dmoC1 ~{f2D<:刄+[*>{_!_{8 zSXG5CzvpT^k{r<)Q<nj0rs滼kQOg%1Oٌf 0;eJtQꣷTjr}¡/F^wTyKc$1i?]v0 F6Di(rz{iFY; d F.Q2TW✭ə"~G~5ҏ6+%puIF9 e?Sx@o{D z!$VwЂPc=pG-nրt όG BZzpE q&eTuDaq3SR,LǢ@=K\T&'2oKrG"|bIB⮨fpQqER /05̢^d寤"Y3ω ^#1,xb^ 7*QdoWtܸ.j)UOQ2"G]n!Y? l.'VzFyYɤ!-s*Bǿuu.f?]3)v u]bv@Mv&lVAQi[(ghUC\@^.<*w;?&% 3;6qE\5H [b/[t4;A6fX \Ċ0["t2OuÒL )noүs,;Yp ɻy5Btr-gDZ`t#Vn F{Ƌ_Ou+8]m$n%=bafNe ƥ-@ 8jnb /] n])CYY/序OtH?:ĬMlF+k']Մ8 hZb`@i֡NAF ᕊG#Ď"D q o|r؏ _&e63'X Y}qRejtfd:ng7>MTUqdS~9R[>.f:}v;A(ڀh `IG3)b-+h AMvDEŨ?o \;K9.{ᴤQn7`Yƛ 'v[ހYޭaޮː =),$7,$-$25ѴꜤ66F  X$ӳfQX/ؓ )}| e=j $!.vӤ"^>Qp YP>pM (VoJ9bPBOZNh~Fl&' kAˆ&niZmS?)|,c19}ݡ*NYiHg;OҙAlЃO91"/+RpL70׶LE|/'opz zq{ p]})Vs! ň˯O8C|bR$Vg˜3F2h;2&Cz; GUB +Ͽ zQUՕjˠaVd%(F ?Ʒ=%ɽu 7 4J9"myJ{35*zFտm㒳d`d)h,_ښv| aR |i'7REz(%3 q4M~1N9녤/!(3~a E(mp"i (_Z+AC5ҤS*,/[Te&L. fW^bȈe\FG0]Kͤ [SN Ǐa&^D1 & MNBRPA&?7\Wxu  VX1"Yk死j[\Z;?2D&,BF6򢄺<0z3}ޤ>~ V_X (]=U|심ϮrMKJj.L"5w V@ggcPzhqo\ 8`i]1߂Uu!.|w|}mb[. 0{ݢj{U0Z6r ƿaeƩ,6_n&zYCP6H<| bؽسCvsHMCR >$XlG%߃`C~Vrc(C,ۥĦ@e-Qksx57M>@9r%{YY9ݡucTxF Pٹr+±Fh\ ߛJi/A4VZVqC7ڍ|p8h妡<ΘGWSZaL74[֥ЂrO{j7ǀ,Ϙw#yn o{˵HB]K촨 '4<I:DGm`dneUi/@yKb4689fAqYl@->$l7T{2䵖sZ\+ABIWd_5sJ !@qM=}s謻;[_3=~ޭ ybqX,/GW* "j:I;Vez۹Vܶ_K'霍%qI۴+"-4uvTE%99 {!b_V;'1鍨ƪuVVΤrT%rBn Y(5ܳ DR-KsT3ժ5u2{(ZmD\_./f] euk&z%yQZaJ @NXiãSS\a~o%2bԳL_=E ff_XLZe30߾P1$k,tprA Cu'<&L0Iڊjq)jJt?FYTqsy%0ˋǿOlFK80P>^&NQ%3-G6ZMq 2*XV1jx,e5( @ݵLLnsUppwϑ07-tȶұugL-@q%*T9}LvSWߪ:*/U*#oMMnN>`qNqԭEI;gF ϞF/OHF^cp̑5R_=Ŵntgm7kv';v`E%p!IR4T h:mJcB&-vyO8<bI*q:Q :k+n  '0`DztjƢ4 ^ XTխ~ZW^Ӕf-֍c#-_ŔvZA"<`W@1W׳y=ۓ0їc:UA ]wi>Z'$Nts)_يGiQ[ :p0pvu}]D`8½PdAG$fu2F u 7Qkrw VĐ'ڋ=3!`J^pჂzaqg$)1Xa>$I@acoz2U+]ۚYlcwfԞ,ڧT.8ӸeTxU Bmf P焨Q&9 NZKvFn_N rQVPa\/7=~DY^Du;w-XUX ̢0]!z~R2X C\|-棚 +~ބ'eT: 37h``/ enbG6G/őՇ+(M U'STG,v͂A泄InM}*6^* NkX-Bm/̻uiɎ7RA+H6Hًl16!1ҠjkD y^rlwL;i:u=kgNC6r ' 8sZ\Rڦ^>s,uUJ -+|gbEnxxB"5``l GNcH3Us0qm?Hħ{!)a 1^i$;-?( …z >X VXY\4_Ʉ_/3",iN%fPØַ,*˩Ll@^F\) (D>O}{BiTOѯC^Zzd&zy'S:!/Q49"\$f;B`lWJ]Pz p_+(˟v쬇XjiޯÑ|>lk1q:3GlD-H)0| eTew?rMhW=BҩX%_VRH pK8h Oj(\mKfR^9s])" PVQ 3!y[U ha/-*U82J<?YKO.p:j-No6?s6<M̴M`9!2!qmP)(8:>/g]LgpGxןH6>D$vA9Fԓ\BP1t+ȅj|00o>`um?ha.&>J<%5}U{8?d$k#n"*OK4Yt+c?vC7/Ehx. RNDlYCFF:JCwt/ ylc4~Hx_ l4u8MH^:QvHN$w[kzуN|=74 s|s{|qmF)w)xŚF\h m_63 n%^%X_aU%bye.8LvG)lxױ^*" Դ0_xy`;aiP>F)o"f黉.ȾԎ7W\*$!vPF?E_%Bw,AV`| 1 +]te硣@mh6KGNa")($q݊(#h`&H'XDiM ؟&ܚy3,P;n-sz^Yg (ف(e:̼ؓ h29 (s,}!f@<}'lD& XMh AI8%/b\AI5yb Wl tq\B)W ,P}]ϔmp^h{hYw<ĆdIϼF%]Z;Uf6[di8YZB+ʲ54&d.f/qfN2!Gn$j<5PR({Ӗ "2Hq0HTUeJ?ԊoΐnZJ- @Tm}F/e|kGϮtRVJH8;By0 * ^*zTn";0:ھ7r 0&̪W9|{t9Ѿ!dEAM@ ZM޶}E9[lP3p>yHG+eiNmsd@e22>Yl&jsf$Zxs[\J$p&Æ0dpVgC 5z 鱞s+~- ׆VTXm칡=ǜq@!7R3LcBI"ޙpp2-],֪F%l:5`KacS]~^,|Dq̕܍]@-iH=ރ 5HR MlW!c?y< 4eJfxmm %NgZy 4md!㪙t}>{1$q<hI^. S$}v>~~]32Ն|SxSjg`>A;Q%16 ThALSa,m|c{?%{2+erjs;8emfpBcv!S ?V6T59[,ձ *vir'dR0J ,-ML)Wd.}VT_,|\0a9-=$@ WMg ɍDaLlkЪfjciKk'dk/-5My5g,|%Gi0`K POX %am՜G~r)p{ FS~ٴ¶}=l`2/X+w>4{n :ij/k:/p BMXw`np. J 4GDH1W݂Yu (SύQk3isXR]uD1AopŬਟ~ imSP y= ֊]w;>L z.Х\(,+3ݧgI†t~['CYz9) ;wcۛ.<^wl$vFO!5'0fӡRwT˧*3RSj#w<gN@MR ћ$:2y޳TNiQPaI~*P6 ʳs"nW9/ +\Q3?ǂp'q 'oq6ིMʗu,[+1/}I6HJV%^ͣƷE^-*f-0k|=,xMC%֘űNޫ_1ړҶBUA;׋8+kn΂Cs"[8p;fF+;Q4Q<6Te̳|jh%TgE)FklQ$u>P>%,(&ݘF|"!M1H-PL~ 6 Aӭ=mwㄫh%1'0" UFpNwzH}-) *(o k 3z'mqH>=b&OW09@*2!`A_5[ iҚTGS Bbsėy75Ti jC̿w?f 8}V^2++v`Ц/̷r\.)9{L6kYߨ~"{ȞS.Q;|!OW/\mz3;5NQ!,=^"5W)T3++8%d<̘Y 7d- K0):yx^]L'ݾm|X:?tϕdLݰ'uoDEa&GivfUkRvkFiӈ?y%z&:OLZ}kn𝳘 XtWvOG=O SS_!=|<Nfidp#uh#l҆*Gt eZ/(|[qնGaܗkb!~dcL={EPhmmn*]cU {m qκGr,taኜʻ)r-ݟ6!ֳ-hR`ZRdlPfH/C} 1ב‰wt: 1d4XPc?-'%&hO#oۘ4rVtRQО z,@{0vtS V33FQ hBF}z@ndLH?T}aUVk1%u5eہvl0RtH.k+7xx/QYY\PΊwud$BgxKݡUӑ.LW*iQs.{?R܋'D< r6&K'JE3G! $9X}B`/%͓1.23g{ƞbT @"6Tv,M\v0h)op3i5S$ZSs~uEUJjF'mz@ZvΖbC_mVM1ٙ%1/az]P9{'m/( EtD568nZ u 89E@rK\J}.D@߄p&{|~U=N8/#wP&hV_/횎,BNx_{<_`]&Ld ט i[@p+#{B3[\y#i, ߳U+PԮVG.^zp~Pԓ9M!KFY_>󶪓# n4*AlQMʼ>{-Q}}b05Nʊ3nҦp @2Kglz do k ͶڷDhUmUp f9RLOkBs=ӳrMv>'PB_-S]j{=>'sxyz.yݟ\hzRKH&Tc|DUdXlIw]xmWcwƴPe˄ьP:˴(N 18yEzՠqfr89*IƌC¡*DzB6dd#ːס;CXgQ\0 w3 G6Umf^@,#BK9Ƅt/)1DJy1JveN7[ 8EvFD9=䕨T 8:zkoؤpv*pL$d$ d{]@;aPР1m1JDEHDsooZq "Gz7@iP1Vc€c4Xtz$O-?W %_oOP=F43n~kX yII8RA0=āG?{%Ո6*=`VYHtML^U 5Z{y\ `@Xi*{/]Vq3 qKjo49^(\dEYC+,/B`ǁ67s nul ”>s9Yu>TzvfGݭF "&H $'^RrQF,\ZvL޹(. 2ڭ+ ;u$ć$t6^s#pX'C7喚yMÍ~/ ؝Jmo9*c!7 j^;df$K]NbS.~Lj8Oq':@Pw=I9WO ZijȹUBkY} ƴ9z`liӸ2AFV(IC{\g&5~3߱inU^4 YکWj/X3DUӵamm| K@^ /ml^?IUE(q BSxedֶ9(71#{m~iZ<:Y+ MVo3 FΑ$v>Ē0OY4LN5s{[FU,cf XR[Nզɂ*$[ B8[v[x] gÎ]%%!Y76#4m6LPIL `B:QǪE46rwN5VfCW -pNْ:eH iYdDRzfENp{S]Rb!Rd?`c4|;cZ,Kvעe(VaZNtmIAJ?eov0!Z >E ak΂!)Dܻ3T FP9$ gkm^zz`C9o i}벼3(m99P7\=)(b}rpY$\46È!ap]=rYі dPǿfRcJ+ccxʽq5r6[lpVF %n)07Mߨ #Uy DaPJL)JA_fIAX~b֞.5?7X^\ 'G/J^7)jJƉRU*Y-,p1Ӹ3)O/Ù(g3B' n <o:a_6u-q `t2$`X !o 3F˫  P} A=%stN5_TBm"27^*idVj:7;"H7|U;rT]JlݢM!Ы v k&1s,QR?W"`Qr5ƭ.|G1k݆NARa[x=Hh8 f/r&s;Er"@rx0^0fG {!8k)fK q:y "Aϱ Nl:6eK=[L n)h2FH> H7Y;jw} =IZgvRdMg4}7jfhv1D[&%_G@œ`HlOؽ۟"+<G|-fTi`A (/#>C&Љx#}EE_uǁĞؙlp-EFiL8MxOi^}V̯V hj8JLtI"Ss#V6[P$6 }- f/}" 1fg s0ʐ=V4!t6 Sfg\NS+Q`7E/mG"V3r Fp7rN-D/pH,AnjϿg$ū>nӖiy=L5=jY͵'1 I)Q[^ڎ7[OΜ;"y#c= ;.^rr0D]4r*nY~]#Ԕ;2B%( @-)!$~  ]+ X$DA9l8M#ٝv0PR?9_CkzͼLMR֘4FE+4g< $9"LI1>}?=t*%ڒ{Pc92 "e:4*L"NėXb_%ן=Q o0RZ突dZT ]yצ7}XSc  u#gSù%{H4 SyU^'O*䋰c_8"+ &HF1w_| n#h3^5&-VlQ BGt\di=suںcS%|u}(\uLO4tu kb{C\[མD)5),"/6OLavuO.G_`dCX2·lNlE֩m/ ܥP{]i-tcHZk"9+.a1cTxkPkr6V΍:q(NLwZ4r:^)9Ԓۙ:AO^?g/D˥鋌3Tce3,1&ݖ] 8٬DGjj-g$50ǫ4:n+9X_&vMFql)ѦTƦDOUc2Sy^S+½$Ώ6<:vfI3Iȿ08pB6Bn iE.Q.5Kδ`FR܏cAo!uVP-eáWu ]lBOOP%B7 37C fuϐ" ti|`FdJ/mԑpw#KUZѣzn.bEM2UxgmwIWt9/KM{Zed)? x!ܨ $`Z( pyM(@t1c71޻{М$(]-Z> ʆ$sShn¼K3<ڪQdqSG<@_\[Jp;KIaeq̓\sHp8iVR%$^&!AzH&M->Qͻ-ԀX>鎡`= jP2Q-]E$ a"Y΍L 3jckӦ1/=g.7\ul0B#GZDnMG˾3TCmbILee7?6yi`뼍i<%:m'QbU nzlkґ~4xyX=V^qܢƇV xՊ!ֈJlo<u4ZPAұh&V *^)n5`=rp>3%r mM Seh4Ԩ2g VVEz+ ND/.Fnm^N"k^z?U@]ȅbXBFm \8ܔ̯F]orMb:(؁g*F4H"SoEֱhWD=(.\}Daj.|6qAhheJs ڿ>3iFZIL6ԯ#"$⍉ʱZZe5JSx5`nj'lm7mqiu ?2dw͕g%,ap;um`jmfM"ĂġXp1&TLf!qCĬVxc]d(JU{K hJ#~a`ehwbz cwםk嗠쌂X_H'e&P+:x!oA0㛲:m,FϑPYɻ;E ]Dff/U; .Bjk;+6яe= |57Ԣ(fW =̯61)`eu℧Nu1-r>X(mVHhaI\ '.99E.휇\~oVV}HItZ?hkWu5˞DALVz  (*TYᇃHfxt MagĤcpӾ0xBn{&% @@\% /E(q],Ɩq.imESdgkgГՎXXF8Y9`iea8X%(FX5pof'Wv|lx!Vrv_A/7B! &&S=*;eW!/46 Ds@Ta% 䈋WTNqZh(uYE=^ŘWsKy>ʷyz5o#K*PgKbsw4Goz$3XcCq&7B6Yx4 a[$C`xE?*ZWyp?RO%W <Í סJV:!H~/=@8Tzu;KsET%򲐻͂v/ jKfa'fa= n?J2>-d`X\/- ǃ#5:aaq(6(7YG;K ERz7Ҽz C2~t߬z5rמS]D_3ҥa9f̩]@^7f@&Xb߸W`I|M@KǗFxZ*m ٲAъ) U`WYåbʐCOB(%r|cߓ|ic Jftq?&7E4TP$$cl\]t~Ex"16w=?3!;$R|Zb8&ϻ?ˎ)\sEAAI_TȩSURpCY˿c鍙 8{[FR󾭖}`XbrO6m1IS]h /ԋnHP)"Luf^ ׾CyuGwՊ 0b1 cz&A#\c&>fW;V@<WC=#swU10M'Cb1Mo!es~Xxn :W-PJw)9KXH<<):2˔VjkE4Ϡ8q]}4*QY\>ܶt&Mx|{*>QV50}V&3h TQ"i{m4s2HWf_meG(WwX$kgx8ryۓӧ6Yq ?zWA`]5U5#j@ԡ39G ziyL]۬Qq RNzsVNzI|/#%S΁o|Nwm~nC,E3Β¯OOPO&aЕ _f)$ g*Km^%gw!jqsx&b:rUOzʨ`Bxz.,040-83/iؘB7#mqLPV$W?iH^:bvLpȉ9נݡ@pL2גKar]=bg 1@P/BSNF'zB̦\Υn-~V} -Yiח_-V(\怐 sl.S=H?z~>Rrms([g0b&S|?kxsڛCxoMȷ %n0>0 YZspatstat/data/waka.rda0000644000176000001440000001041112333041776014474 0ustar ripleyusersu dWY{vvC&&!dylLfٷ{{m0`0K&쮛EPHBK1-«P Hi"3ڮʞ9|8;X,+߷owmlsnX/ݽXsڭgV7n__X]lK?Bpϝkg"tOC/Hgc]6x]_[yvk[Qb>e3;]?fnݛk:鮭mń'B;D9es'7Xs<]xB}w>;WsCǹfrb;7 ,:cmP8 ]'bw wp3sJ{u7Xo{J'l~hNy]ۧo3|ÜOnBjGK(ɓ{o~~FӁO֍|&29kI|lr ~8rwpWQΞIwM!/YՇou>Nh;pu #;/WL?c^C>Jw@8 ~"nߓǰND>gsap\%igs}MW <̂/][/s5yggm8||X`>}/?7j" 5 3-slSwDN?2yt,$gM}3Yx;iϾp ra/Ixn K4>fqb \̃EGEwxI' ϭ?ˬ'/fi~k ;O[<jOsSzvS>ww%te%u<@| W~[c<>aנh|W{۶>k1>6>hjԣkL5dz?yM_Nđ&"5#G  ;9g:F''ƒO[^bvk@j5_wl}g3|9';ZGhZ g-fplt:ӹ߷~v:;ؿ}ׇ??`B.:h㝯CxAM&ߏy/~Ɵ`~Ӣ>FͷKmp ^? 8}.x S q'Z?DϯFui>!~9j;/4v~ٵ ~ς`׽Qzo=`E;WwmWPW{ ~,nĸǧx~I8ý$ĹO|7N|7O/vCx9o)͠Z;ǹμײEk39p'O`t_J#_<%Uʜz/*༄=T9/O|S[@kLue129I}ڜ#>d~2OG5i #_F>>uR%}٧M&uuy% ~ubh?A|Yσ8t?ghO]>|Q3P |sVo|gqw3uzo2ګy1}bM!k,,urV_6_ȼ)Ƀ7I~{,q}EY>-??3zpUoQ_Ox=C|oװ~oQORGwGm8Z㯭st߇^!N`'8rNPwyM6;}E>ξzƝݛ 9q=>3+C|^d<¯E"/TѺ.!.|-{;2L}_~.7~ ԉ޷s>?{pYѤߤi' G|wxY4Wddvꮏs'L~[w9xϚ;1O6էyhCZ}EkggsYz"81"ߨ?Ff{Z'YY]u}A߄\I;G]< z-"R[!/\Ѻ"+}{x+Ol9 x4Y&GR'iX˷N10ƙ׬+UoɟKKTz ` =(Ա7»W#sUm٩@Gy݁Qv zw_I|ɏt}{G7~ȡv޸w'[u2.>g⎃Gx/Do­xpG~nNn9z}.qwnq۩;Wτ_~߿?N71spatstat/data/murchison.rda0000644000176000001440000027752012333041774015576 0ustar ripleyusers7zXZi"6!XDn])TW"nRʟ6(;ShZL<^"B*v*K+/݇Z?|UPlw$ 31T9M}&0c.2~!jR4T7n d3:etT4y] 4;;V f_)<aBDWȌJlVj ' %|ViTmBQs,'eNtiһ$y|ûUAeUfoJZMp9(.}f\@^uq]D괰 zT@_ )ՀWLřl m!_B:(ޯ^?aLWS9m `*=,/?@ե.Q8aD\'tJi 8N[!wTjܮ Ѵj[[pIı-ޝjvuteB> V)'Ȍ4f_vv`X-Im+SuM+T*OW2tu>A{7uؤ.Lo T^vҝ2ai4kc/r4qg̅*Z;VUƎH_ ~2$z,_ 8#0<пD9=G҆[sy%֦UmN'n H.&p\@S=VKڒ ķ~ZgUp-. U2%YWF+^@`Gkk`/[Lm,GhaS y^wjx6ؚmYK"a.qdaq:iZPBy?UMx fRzg)h ,5\OF &Fa'QI mA]=}b*ȜJ'NRF3 ;'Hn;ԧU|rZ$mPXYY66G0hXȸv vVRReD$>ō;?l´`e}\`"Qg-1f/F䭜P=P7"r'p^SH9tpj} ٰti;-B鶿hx!z^)1\q{%ZL819~T\m> ?4Pt~ L^]엻 >RW1QOh4DA]߽,u$+͟M SQR[>%\^Ldfsc{=C qAՁFޮ-votd?Dqs|kަ¶qBcPo)^1BΛ,n4CQ@,u nGG|i CMX, B}*p8`\)(;kwe9̥ їxEaD|P GҨhcv3>NDUQeZꍸǺxE6Nt"_=z@j b*8.SX9CL:'&WN 5@6+$ }4`m*{QQT)+ ^d'ڼUu?ӟ2-܌l6?j{T51%U4༕_h:Gq4XVFoVӥhfbQYA$HԜlk o^ӺIǺaoCޛL=@ p0ʐc?ՌE<1]&2PsCuavcpw X,鮧 *_Q'+M8T>9Ҋv3c1!drKӭo9%:2.ivtKvV.!9͍ ` # $̆'B|SÎVbfGξ=y9<#{: ]lD~q kh|.S /'Dm0w`ug(z}q9|$! IkX5VHM2w:=3oJ;&0Y0S٫<}3 ືJ0l盓'qOF[T"n-m9R4GAYFbT^(/&0f9O~ t ԃ(GY37|fYŸ0K %lfCPğ5\:4`OӶ6{wm[>jElg D!-*}xO%\ KU:;xksBtᯀoIAuӢi+Rd_> ЦZ Fdr=^=a%&C7{۹ڑV$Ix<B/dzGd2'^gԻ}Ɖ?Aufc=Y7r0,i^afTV/CjUA,'KtZ!-Q(%YFd]en$V* if9ɎeAZ@3&-;P#yN>}TĻ@UAmê/.j:(]#b hW^4:U7t7pۍ-[f$}NvN@P.'3larw̚Ǝ$'T9By@a1%kOHƑbӍo A *-mWv梜FhWjvZ_fc\?a虉|C R*էGC:To"'Q]GKWgfqĖ%_OIG^@2>%S`7b n=8̶#Bқ1,MT{0r͏*/1ʴ0x.P>+60NOjѓtlNx [Їc=fJ`}SaH5(%:EbgPwPh"F$ w[|@K[}"[5[˟Jb/@ DLk(V !$.q&=G  ro!&KZgClY+8޵jY©Wn[ZsFVIodgn [^z 1h΍;59wINl(@$N/zsyWZ"qR uredhD|~2D7 sE:_q/#6>Um^_P&*nP-jڊ~ [WoercfӮ` T0`KĬKEpA@vuUN XJmr4`7 /Y?<*@Ap|W-qu1Grz/EXʟ\bIUe4o,:xBVNX'`oNɶ&W-#>C~3@ǻ$5VTXi3It՛#t^JSγ{qQǚǀ$lQ7{(jn^؅UV Q RXpMFc?҂_z"=cVR~`I Zh1:uprr!áR#59o ,;M~JhUE mœ$>ho3O Kъ=]`e&΍yacS *0-0pr4:\M6BV IiIPA!S%H_5NWVVj=fMNʇVfNإA?  Ñ*.\H-# E[HkjK2|fD3<%5 -n)lf KH#">|`)"+|3.֍ѼدhMrHQ͌,x>4/|GW4WsF\ðz zem@m?ę:(ZUWXnXG~>h)+If™2(/P&٬:D~3d(ag|1,g EpӘ;(xũ;J)B %3;EqRlևHeh-66'K*k`%׵iڽMuTO>@<ICPSbXRݔ14}A[.͹}Bsa}kH"gi%wN΁")ʩ`o_dkݟZ~ju_jNZ <BD >(}rҤe/[ZLQJ׶6<= fXH q)˄L K+h>S Hu IU'NyםKb-Y vFȅO`b0J׾ArBi xCOl5so6#rNx5ќQ;O=3`3_K_1 DH5bB9tUp^WOVGн>XR86$ 8ؽ,;\إ$9uO^3O>eh5È80*sp|YPکJ0[alގͪV>WgNVRuD9PQwn) \`grH]V>݌Jڑb$cVV-0+ƔHY٬ĽhO߻C޳`XpmWAN5aK>Ȗ dIˠkelS%ˌ2u+ޕ;x8V9P1x^b AF CH㒉cJ~~^wyK {.wb[.jGO qV/"'szދxа{58 ߓ"{)=s]dZ+C EP) wT>{*` q\^ex08!bKM,z!ө䊌(K,o.4q9PVXק$ԓ7RwhV%͢(izeޣY.{ z*f&&K4fK#J4aٿEShCڟy?6:BַЭ.q. h i{p̱N*v:D z3 z;N[,>U'=˼X{KTrfeǯ5G{W;K2kXHV}Ԉ ;"@>! @ pvA$pq:˘;ުEDJ5 8 Y9~s 7=ǖcm 9Q^M*]J*D:Պmk# jr [bÙ󦐏Y+Ou-]O<f$"@J3VcRdұvVԫNU7'xHM\MC<7V! dZ0Jf MfپWAW3&!LUݩh}F;>QEEdԳQx(c2Q[j"G)x,^#~Sݓr)yohxJk#^ڴ ɺMH)a&Mkʎ, βޖZIC:=#SN2g ΋AbܧjOo*t=MSj\z8j7WR j֥1̏D Ia4_["c5U{y 3"LۃPky;FfP7A@Kv(eZֳ^5 Pː=nʵ#t^D-^bNʐg)c1[[OCĈIJQ/{`h$+Tw9k4O:MEƈ3h(3BUh\[FƫlJĔ諑-? `"0 ZHw̢5V_qܼ_m/P~7\3 Z9so]!1KL64\ꔠ@͙^5~N4+f._0+".SՇ;i)Kxo>AU(~zq! M)yz z}$i.uF}:Ήmjeb`2PbJET9i1a/`bCEAQDtOnR q826κ.7iO8O{xXc<6 ;y8H:fT DJa3F!YsN Dd% $sxJy6"7xڐ˯\$`p.򳴕#3tG-}$3JBw)uq #RA6d_];X̂e![gl(i`R0Q*5J^UA_;juI?+:j^~ j1x B:c~6mI2MZc} AY9~m@ ̦ʘ}תC%|)75:SW)!:قf57 %&r2CCK Q^G'ǜ+Fud+>a+`y 4X9˜'{`l~HJ]6/@-YkɜJDZKA>y[`_@rQSjl9"WWL$+nArhvWSAKs;hZ9I#/(wO.dAU CM:3g~Ԙ|C륐BUG]7 +Jgq*/+2C) 0L oSDR}/`BuT]2QM)x:H$+`\q֥1 ONܕlZ'K=rs ~31N*}X*poPjޤwxHB$츿 YqI)ƄL,*2JbߺÂ(@+>*q;%m9I1o; cqF{C7˞km|P =bqYMEBN%}%|D+@(gοW'iO50޶6:CPF?=`#չ{hj!"hE?0'cD֘$})X/V RNNn{JPvޝ/EpnqHU@;i +((͓|`/vF9QmL ~&3)zaE0lg0zp&'jAC `䤙$ u|`RIw%MQA}^ )$d7 2u\@ߌUsQ,1Gst:Z6Ve* [vɺM_T(9XbW#F⠢G>wt/FZ!]W Kݪcz Sgz#r Ao炖E@CJ$W0k,ݩeШXg\Сqq (e֍ܠe*(t䛍0Oںw2)KS5K{־ZzX Vi=c/ʦX|>gk#t';+co,k&W/|U ww(YR{M6k8I bGPˌaE~0c~`PQ- MJ\˜ )߼:J꣏}:aFڀSێnSVM .4)yZ}d?3yǟ4#Ug *̶$SDGԸnz5%\F. \ Lgt _N J5*X!G!4Fgw+~vv#;/zjW(<  1d{ wFk#r@(a롴J%:/~3/}06Y"/M95B!+-sKFwekhwWķ=:7ICQ?=[`+A>=LU屰ArYBe(d؅[JfiwK(qR$nᦲVkIeJ8!GxI^elWu.hl8!!K\4f eFb;Q j1YN\:kµzF.:Oux6':`@ct_xz$`: AzX ʜ1lQκ=,7ߞҡc$[ӳ%dg9aS6,ÇYs<]á2 @LJ=6 z^1nQ_ Hfi@726ܑ7TJ=&ƹW2Wkons.F*W}9,}vi@) 73̠NDaa%+IؾpnGFinT}0NZZG05qfŠ-6 [p0ГTgh=zlǧTԹ^"m-8*K.Q`Ȯ"e>I-}zxL'u]pya:VJFL{O mH4<.:DV}0T>6/\G+LRiRj-+rk7ޭqP:Bcr+ WѾ9Ѯ`6 +\FVz;Vt$\(\BÏuo DnK+s_qvR{]xBi] rPl)Yk_S)/(86 XNrDO7W ɂT@IIխ[O{X{_*[w1F(0>DSc ٮ|?3֢$l×T3$Aϫ X?2Sa F% yоևg,Ĩ`onͻ:UN!WF$pم'b^|EMFU3K^oFݸ]{U2D#gR`ר3#?{ mR&)s Mtۯj.&ܫOb#H7:Y"^֚CGO٨wu%v(Mo|tUFFL? FPW1 1|fP yh~^>P/s3>a(]tt#eﱦ0HM:Md-fz&<ccEѸM]T(+F:.$mGBjy И<@X-;dP ;q՝nUo?Pճ*īc`B9 nՁ= wσԅvRo 4FI[ A%VZ|&T{v7D+WaI_R?VٝN-g{*}^wWVK@{{f98R̿5RÞMby۷A6t1mgƟ4Ff9r߬9 /Tc҆jFЊA/Cib yO4Zq4z.౏$Z68ݣѩ ٠K~UCRUl=WO5ZyƧZ*"*܏sb"\2XLfX֍;!3Yz[=89 '7xB!z|HmLyƭwl%>ƕTN\J^ե;[ eT 3':$*g.|Pt䫝ze?GQ M&)+-U`NS\"Ĝ' wy:'[ Wѥږ#m;`P?e7ކ e &"KG,R /6 3rvYvJW`Or,FMs[P Ȫf(=jizZ1F<5UҔ$q'TjX2u ~GN{xOL\/s W{䚜O<%LO(gdV5e(Xo,IP&pWEK)ҵZXIz5YRD+~W"ye{E04ץeѻJz r;D+c|\wBqϚʈWKDLFGš{u$!o.,BM;j/fEu/2K6"|i_FDP &#:փy:Yk8F18ZIV8BF{P.[ x CdrGʌQ>\hIu#RrEۆl)|7 :4&~nOcp {mi:qv(1^<0['rh\|\TFsng)Ճ>c7IyJJa KjMtKlHmm 3 pk8TQ#Ew qh4v~1w rGhDsIG:8+Oƙ5!-f]xo񀿎"}zJZABz_*rcX#*ap#{m<`c2v?+RKRGO@So$BWsJ:Ն[5*f!rS,m%#H?W WA+is2El9Zwl#)7ќhJS;IS+3I4#F B\z{/=Fu?EMӈ1KQhފؠv»dr=C<5K6! qo_80UՃHcCw@ɊoC4XÏ|&QX,Fj(q[|ѝnt7C-aDGxOTkncTSAqd;.+ع}1y8u|1F*[}huڭS^S$%BJ;_ٹ?K2i VLQՉr11iZXlW} e¨J;?:wH Y4ªpZbK>7D?1 *V:5BMEiM;9霟v!#uwPn٫+CTg;~$M|wr5'J@SQKaXO ;BqusVg\?k_#9Q뛏V'5촍v /ۡMXVeer^Y2fWµ}9zgpA6\P.H5]MHuۅ ɩġ[`Z_ $ݕF\5R4THī^5thWzi\VfzKX9 &<9/ec"چ*RDC[⩌9RG;~)XTN0 >|Zэ+JjQΪ}uZJlK$ n1@td79'͊X0;m+6T~FfQ,t(%^$1|xT Xף1V#FHy8(^?_yrW'Q.gЦBxm ~N<˱ȃ^ $ *fAu`6W{=RW ^͵/HB/BU]% t>c`L8"ǙJ,)uC:=sHo)Ț\Lq>]W(mNL{W6cDŽ(ZV:jXaV+x儨/QSx bo1;!2bDJ`/Y;w@u/ר iG ]sVeeM~[;:.d%O=兖NuQ9e$B,{5D#šu kYD`Aa'5$NB Rk1Hn ԥ/PtkR`J _Bfw|H?_ԵL#@Bq<QG[U.]dSN- l iKMa΅!lk1&g>L& RVs UT*.UW܅\yJ>M2D;Vp} hCN>l "fՎaSNw2x?TAHPQ]mR+=azxOۥ5zF{z뿈L6'Ed=.L"~d ]mO<e9iW0.=^6F5dAwz#"f8vrFgy/cךOJ \Ֆ, gD#PtF]LP44x`zFP4\YѾș[ Th@MpP [OvS0+4õscʰ6G/',wj ǰH?56[- dMÆdu ,Sդ$L#SNG*e@P @9`dwP#L:tNgmf2ջΏĄ™0;@,yߓ^@208޴sx0&(x[1n @A@%s}KfING3;.RWHb{S"xB.T7dX $f0}a/x;bqU{h)K>yr 4M 'wseiW!de0~Ao9rBY"`y y`5 H/)óCuC| x'[~^ؒJe2A lo/gt8ni}oCu:\K@H(bmBXYs 41p}ϔݺZwfdLK᷐8!gvA~de "e2CGJ{5rӧhN`8XdhPT$|>#XhǶ`AAp2 'r!OvD(BE7!npPZuv>w2>9^ŵHX2s.tUłVZG=DK<U~L~&k퇿S <_VAU%õs< 4uxol{F{$0Ja^spFtځ/6 ]JU6@m\q+wf.]wKr冻x';twf_ת]\5io5>[\`خ&WGe…5v{guF1K Y1ɁRr"՜b( ch._yB8a|l+ǧɄ,'3ԏ[D.=NKGWq(Y ~Z<"|I)lbKR_$"`MHApDdB Mntvԕ Ocx}:4bgPm#Z5,.;!U7K89Hbw S$o ]py8ܟL%`KJIHOrx<,B>A8{2? qF=6)%:x b4aՎ͔Pj:#=bnر1ӸB7Aί)Q,J<,%^+zgB KIG^v=s@N}eB[Ħ5!])&SיH g|W-% FBUs^nۯij):I[p| 58'cfuS@J#lgkfA2e9tj5pEJhlvY*`VR+Bqv,Τ+D ǧ̒ƕ^`yZ۫Vۃ<#Y/̮2'X4&]ω'? cH L7Ϙ[}Q_{3^gvB!9sHVŦ7 {uzHԱZ#nKP4سхNϭZ܆ά\́tWf"jno@GүE0e._׮xd2sDߙc%lZIB(P`LѴ 0lpUU[BaQ[4r# :*2d}V:ͧLC~iPOK}QrߣL!tК$=@,!mƜ|O]=Dh~LۖPҍzѸ8߈mz?ݫI%ukMh9JtKR[ 6en@ѥЗv-1Tמ3K̳~kCE;>1/唸X˝빛_C,peWV[Qg$K-w.FK&Ԅ3^"B3AQ[̧'::S? δPef3GQy 4^Ē~mUu ˬ<ə6XҢU;.9*=xdoa.!qu;%1mA朂6`U۞HBWfs4qs]kH8 ^\5A"M {ZEֽғ;n~[F[-}֐,M쮚2I`sM/f[27~!UI`>&nN3rAhO`MWQ1>PopR!X yQ`wB^ tG* 3cђ1PqBv,VX*7BSD nq3 <1.&0 3$>脜KT>֍< -Bz:Up@_ڻE kMи<2ZMK& V\ -_83!&Q{&Vn #y< jj$z?TAϤ$Tx?,+&ڻ<ܷm oʓސ=~ Aj0vC5-DҕoGknps9%CTMK`@ُpҥN@_Khg 9S `v׍, &1Ã~!$;ՅXK5 "vk埗+aH6|Z@+zrtba| h%ܚni0-fuNU?BkN“?Skb|U ddc«뗰CbJ%֠ԓ K3[gZy!8Ry4q$' ^FgS`n/} j0mjqZūh0Bnٌp)adbM{.f DžNNzC8Tp(@x~dg/ĐJɆ=C n:06n,qjτHb;dЏ/.Mׁ K5w,X 8'"KLwj wW/?tC)lrVL?X(1N#L XX+ԟHI- >~{=h'ݻ1ylzqT`SLr$LΑ{F }dKѨQ2Z'5}&W* HN%ҌEmauϽffh=:A& Fi #h+g*u>Ryʂ :D!E|t!w&\hѝ4~1Uէ_I_S*][u$Q-Πgma1Gmk&5 dKY$~/oQl$h#6ն24^Uj ]EOt Xt>mk#UP2^'J,v8O@&raG~986ã̯b܁ZY y2)BCߐ(6MC:q"NAiK!wUR1nLq(΂= @ [ɬ!@K6{WjN z1Hv_ҁh yǣ ztre+~ބO'uz X#f[t8[csį}cy'V:8KC:[Xᢕhp³ad-%^FG`-[U^ԓooc/ܛ>r B֙;PPNJ8y.7)M$q!$FV5gIRjNN<ߣ0kΘEbP}bX ?[:c-zA2Dj"h̞b0ب '^8EPR{ cMX@[`=Mh/弯=*MWFбFwuoX1ɸ| 7_fN3[tWhFi^SnI_GtQ⿢Ct `pd^BtiVdEhӚɒu[rCdG`ρi>H0 vQ2ǵum1|X KI<0޼Ԩ?2d%W1{id$].& [Pn-9ӯde3"9qvN%w\鈂P v\Lˮ4<M%vAj" $QtR|Q.bQA1Qθ:Y5e2p#L{S)'OB{dH2|ݏD e#@D9Xn˸(/l5-Eە֬( sycew\wbdvuĭ!͠yڒ¿u9lH D:AF'&ˮ+=WCk16'A5B^Ka/y%{,i?!X{{!>iJ]nX=gxKIqXX@׋ %0']ۣ%XB0}^?Z+'I3NwX Q7w8.;W?"jv͓ĎdÚ-<Q"D\:(㳗 _ȶgR8[ZـWr ldu y7j(xobSsMч&:u kə#HŷGy[s'܂ ,Mtϗhò ˖v)书zznйX{}@Nc}~'Ȣǘh6[!I[D;"F~,P/M:F \p_Flj13 FuS7mKNt((Dx`Ik*>M1@w@?f" ,aڱZD08ъY*Q`J%.},ՐW<|:G8EIZwZ#3a&<kr4"n4AnBPU$i $ti=Cz, 6:)[zzwR p;=7" !O/1BslZXu^lWn8NO ]Lb yC:inf0grKcoLr  ?"BM{t Dh' .:oEV:YDN-񷴉nM2g ' ~'B}5a+H0ul3 s)bLxUC?2ڮ^ )qfgXW&SN#XJ_0 cH"M{Qy ˶(87>>1uv~?wU/ ,䭬wTWB_ᆩ ߖ /CJ-JHTKc#@K{5R^)-2n I3L s9ȈϻNZEñ?8nX7܎^y_d7QsiX]E~otR6R\ >-p~laP-7mޤ{콼d>"d8oؙxk*[pE2\Y㎲ U_S3e*| *x&DK0.%3!tUSMD7`|_19 P)\XC">~tֈylc)w( cF*(IitmF xXh!\2VH z:g9'iWe~y4ff}pI-Ѫ'_uŵT8Vv~H:ŰoJiVdz(AȃuFy:zUd<+L6Puɰ47zK´1|a3&MeN!s[/T7~LZj4ЁrbʢDnSS:K`edL/cLt;o97+VSuEj3P+˯Rbӕ{jTF Z{Xīr YȒZnk7wSm٬X~#+ oTi9bOOw3ҩ5~+sr?n!ZZҌ#6 T^F9ўGR:ϐ)6Ĺ I K^mT 7KIi/ ìydSO-l8͡( ~rJ[2}A\Q7E>aD~V^)[$ۭ>Yl 싧!׽q8x".>~i >gi@܀AH>Ոlcf.B^ўܜ3v)`W-sm{ghNexI]ƾVh4(yȇSGް5zb S]IȢjhZ Fר#лA>L48^#a*@US)~|udj{1յU0L<,/~ 2buG2>b\UՑ]1<_ >A3˒qWcn~divV.k?jT%UZ;kRqvCF4;qM%H0OؿƊa^Z.6 77k]خD 5`t?ՇLA*Au'H{y1%l\}Je2at; i|Ӑ|,sW1mg`0}`W:~@f{.b,\Q_$+T@<9]_7%ֻX&RX,tɜD;|58_B4Fp*b mo7\Gni~άȅC7Zۃ; ֌Uԛ:c׳?Xxc}9e?vVGrk])uwCyH)"Dꍪmcp46ܝtqZbЋx s/_ĸcR~^_[%Ah 8}b U:aNZ̚wx^a1ֲnuy%`}o̅W|`L&qS؄P333".55 +PfL#14Whw` b.QNSGӌևxz~|4yIUKYpZhpշi# ʎY"2dF"|JLg!,i"E&dcNHT9GeSs̿nܪąSaY9 wFlXd{Qj&S'~RyݘZd,o;ϋŽ']Gȴ4 Y}-ɛ盃@ƮIPfOj($u5pH@z5bj)"E_W<hgf=#w;T;_*?2o:\K$83 *_oQ_Yč×;u)%,eq[yYiO*sGCm.11'I+CK si,F,'MJ^o_iǔ+ۿ{H $-*x-Cqsge"ȿA}(P,1VcA+kfv#xI٭WEh|mֽf]IUoҳu w8g8!*+}Nx_LY|5H5'#uQ$N9 sJ̽ǻUȫ~ VSmoy_ PEWYnD:b'!Xg*^ʁY7=7!Nb9 F;M" i ImR!VB_C\`ohy<.+!#N^7˗G?8T-qLC_lkHϊړ# orZ&S EIXhvS iq)Ԝ4{3bX+mhv.Q'r]9$sY_KLU$پxJ+i/y`5 1Me1gQxo`zrιY'{CytN.8 5S^vGUбjњ{&CJ%jiTA,:`H;?7,: YquKn;Z p (ۀr4h>gZzŐOCgכ¿2U>ln؏ zx(VkE+pKaHlG@Ꮚӽ2 89RklOM6RKJYNVsqo {vZo0] ! XxB.)j?;w^&QoX O*LnBMĝӌ%fFm.AܳVsG5C lnp}OY8y:g#1~Ƿr|g=kc %Q۽Xɉ5 -#ǡ:˪78[_T hGsۈD$QӾyl!·ʋi KL+ҥYY,>uy|ʔH3}>|Hk؂&eat;Fp?E'hZt¨B_:{%-ʒ }Z9`o6&̳-e'l?L=R *e&%V$#&`B66$V?vO;3+P1;&a7!\pڃwC% SVr{+nXwPz\QNhZZ{l:Atp )KVx7ՙE5޹y U) |brU3L/RF2]; #"UUԴ}NvҷzJCP#QnE JĆݱL|I`sK Pj/w;]mHrpf#\o)f-b@@E}$9j`]su|nv>gIBh ?SQ{n[g)=O_ ٷڊ-M4ԁafgėh0Qf'5nutH 3&ttw4+(x VpͩbEOOOf?MBcZ K2]-_?Qťaܠ I|X}HNh+:N\<=¡FHv{Z els2:on j]77쓸}}HMLniŞۺtyO,.Cr]EvOkF"I/b!yb^Zicwlpf8bMX4E=BGqOBxZ\ט.].o#=7ɉŤIN~密E6g3Q vE`[Sc'uԼJ¦, фu:rtMxDS&SŠ,L8x@*u [^R ^N6)AȆwZLF1 ȬYjDdݝJq>0jT=R#_8%$I~gI줛sT"ϕ2U>@32&JSLj;+I]" (a&7v(*#\R1Hbk&&Nʾ1f6 vF W'쇟w[Wѣ_  xiQ ϰ 7cCO#M0ܾF谋ƹ'67 }K>R+ X{J9L)-OfP # :9ǠU<{b 6u,a=%@/9Hs-jϐQ(Qd-7b(A *M.SeB6gMwvg]7_?#o \߶m N9zZApmGXj | aK-{aD4j zPͧ-wSy>mGC4RҸO:t,AZk02>и_m MIpve(!#Je*"\J]B*=K&PFW;wvK-=-o鮏WC^]|y34Owx#mLb>g7$=IQ@.Ur]7`>4Gq:{91$e4̘/2V̦X2:nuc@:8zbdj|T4̀KDD&G2@w1`x_<[ϕƞ8o0#K[Af;mN˅B*#O Uon%niːՃsaL3bδn1 p% V{0^ +^u5 S\y褷_]"*v~66>ĵ\),VZ(g{+yw=;aKujթR ]v4VR,iT]?ZvD0=6I2ʾ_n*Ǽ Db;@')?e_k.zD;!b,kF!Sp g08M^,}uƫ6Z=M[;Rq5E=j$Ɠn}3ɺlkCsyq!@Oa4:%L!1T0۫6oBD#ɐ`:7d7Mu3XOP'V! 79}&5^GR ;g;ݰ9Y׆0_rRt抾ҥ~ 0SS>U"Kό!' 7fӚ|$$~ePYH!KҶw'T`d*Tݛ!TF26iIt+;_[}kXKPd~~kfcnr/?)aU[EBK4Y8ApȆtUP|˅Q(oJKuc=[b{RPR@I] *d % MFbd|ܟvI"kȅ|><2E(9oкыPG贇{2>ܖK)5$ S)"84_s.>HQ/C mň=C'5q/]B$p%w(t"Fqۣx&0~g>ڨ%oO2B% i<[$vK5PzX4b-U}FD GD-d+ŐjS%g=q c1vBc0LDr?_SF >AɅ YN e%SF-As/!{'p*ct6p}9k\+ I>ށv %5 /?ThQZ4g{MlIJZPNݢ3?O#K@ ZxÎ"Oc;GTez}v4"bqJ0Du< e!BꫭdP",EF>;BB]BUaDeYāi'7)ZFxq-l;թt9̇3-3^\3԰ U1}V'OÞczmC)<R}g`WnuD%%bN#J"cִ14'Ye fXѣ`6pG0i-բ kt֚b!ˬ%]pxb]kN5eYr4`!+ؕ9qԼ@ST?A+)o"K-Z3z_SE*K.Cb"4R @y}_H"ybQN `˴σ#9麑T{Pmt\jj!/gLu|6Kg FT}6sewylɟ6Ćr6t L]y,yӯ'v9hF{+o66{d*Bp)A7|sYK"9? Ԃ'S C_ERN@yICtBfoyYKH&):>M+Jvi1KiH놣GNXEU'' ;G!y$9__'26,1,ܲc@T$aǦaQEG}҄249$D$l܁f¾Cˢ;:`$milC0ب9tEW vg:GC*u#"A6q"q1->cuzlv%o.ظGDuByxz?A5é7 OM^,qj[ ؔlх8`ۮs"h@݄Y][Yǂ8)|d6# ;mxX`BS Fnj$s#bYcea/La=0HU}TX] cbWsq |N ـ avj9sirmt*_wmqH ԫH9DΤ4,lDJf!*' $l0CU9[e-C :ձ(ӷݓlvI%fh@6ɵPkXn=8MEaH><=jWmdWY|tAxu5kqr}?H<+r_X/ܕ܉8o3BnP@NtVQtvǯNdVjnbmƕ p%z:K Jq+q:5ؤE.lIBJAEj– _e1Snlo/6vÐH8 ?=F%5߭B,!P0F>YpܴonZ!QW JOQ^LE]> Q񸾇X,el32ǓÃXsMZNN ,wLM-ۧd,}m~=Q*yb~\@cAZ909 lIL$~26ejXcI$cjociFmlSjHO=g& r}zKx aRQdf:)QޖE=dY}x|59iX$'4mJJOOЪmhԽO5u%?E2:PlJReWlvT{lqh?zU ltyQ0=' h Q磪sN&.DGI9ݱmXXMoVnL2}fo#"Νn^$A #zb`oga*m)#ɜ^'$3NËox.Qs `.(p{RlE ۍ'Gb5(Ė AҘؕ \ڹ WL/V' dV!_4do-GH,n]+\* 'ϡ/)bT4貝^3AiK `p|լsm8{RYƗ)+i6b4E+/q!+%6$0wXt,F- RX9cJ:$#Iln%Ȟ? CuQ3N QtJ^oW^[|1{ٛ_)}-|u- &x^[nQlf{X#$T-s>96}%J*Odnt٪^W.0:Q-eU84W~U%)̙gPīc&i(`6XCgّU3 K).8r5pnY@cנlsKGcD1=[SExaD`tfo ut9N>' Tt4ade= |-!)|-h' G҆DrLrb13|(Xf שpKGᠫ`%]q }F!|0 avx/!np c>UHfZ֛>1s9~@Ua9'RŽKEh3􃔔ٽ Ы1"uJxwXqm'k_w6rGmK* + GA֢;\H޼G9g9 vojSoA6kW>nBwԤi۟pYuܜ`[4+fulJΖ_3-}REZ/P-J*Teh3m:8ym_K稺 ~`Hްj{Jz\3h'EƉޔfbD5[xaޘ\z[YQ&d⇻,0y*S\u{)9ƹv8iOUJ73WI'35-c =M^)_f;Ls u1?Ao:|yj`O p$Lefv;X̉(q;/ߛW X_0W[PFf:=Ppl.;GyZ{fBDߥWGUWSE;O>e`QVFHɕ2(yrjto-Q< A8W@+}q4E~K;=YJiroQ-. !"^օEUooRkc4]q"b tz/VCl %Kkt$!}5 m_NoWhvrR gt 6BsQ h@:ZqfJw!|Pu=zD r2%BZ;ЧNrL]hB>cZ(AʡK--%"M0rK<֖d&~hz *n1w%&f .z=Ÿjy{d~PKF'e-VG+MJ -s/wevf#|`)4/K03? @gH:Uaʋ󧥘tVf}ޘ,]CHI5ɠHum?G*hH a>m 8|X!p` Z%unyrfx8  /9Xb<5 "h8xjH?8X_l^^kXD%z=2lBN;~tϘvNdãzgD yF蹄]l(cNJhIbP\ڶ#M6|1[" bY괉0A@oUܾG2Sŧ-Ocn~ LJ;rOZ$U]4=\`FD]X^-Sʔ 3Uxý8M 2\L\fyTP; zTk"'*XzDdž=n&d_L_>O`lx %i Af]mHӵL5vx]-\^@ogHwS)@;y(ϐZRR4e6eMQsI?M_t'WWbb|xJ6!seZ^MMl4Hєe^gUN3^Z o&-)1jMHNj'0tEq/GCp"zCj+t_KZxm9x5:x_^]5Hpwµ24 0 ϟ񬕫SEEG5HE<] a |;kK(~P~Y_G^fqrٲjeHW۶l.Ss%s9ATT8I|9 Hy L0AO8/ulLySi%< 'Ljs`F$ +qݑ8)YXi* >6D b*Iʿ)8vnq<٨m˨ȧ2# )pj_8#$L7vZ 7N#X@̆Tܞ@9^>dNCO6J#j:?#qpJܡ ק2/WKKNdl.3kYz.A tUfMt#}kH]ږ:_Rs| mce lWσ3IeYA2C4ǹoFhZdQ1= P+w]Y=@/.ګ?I׀Nat<̑GHgLu#Ա01zO/dͺ)O%i`b-5U8\#or9 A .`-׆\i&= S Z +W5~OI(ֲΥK{c`1"tIXkO(5vp`@pe#-[VoMޚ(*EZ7Odz[7CxN'dgEƕZ)g/ISriNlwpH+㚺;մh1;C*&Jә!xrid4W/.'zz rp3M iнLDlkf z\F5s1OG*7{ \ϖJw;6Hmsa z<\59 4zņ^@z9%!AL)쇏>) 8ٵ7~i+* ң `EK9kk 6:F#H2ޢ"&Rx#aIC\kd3l\W4kn#HA7#aB'#d7\"si炌zn29eJĊCGQFހ3~pVrb+b{0ƒ%_+LQ݀ ſ26;7 ,BsIj\#*U >h'ݴa'(tF~Xa~9S2I$eGU8 J_,C60OSYTjK 'BK_WY#'6:6_cP[1'R(7K'M%;ŠK;h40Z\!}T+ ԰Sb 5Y}Rn3&KĠ.!7aM=KT7Y˥t0l0H?pB]>ʒiiwVi R g8Sixrg7QHNzCBa{ ]KQ>B$.syCgH%kifChY{FT9_yW <ύe̜JfPoıl?%t[ hnsr.sqejމ5} J%=Ż:MxW+a.І9$da;ĒYBgZ#}GTӁ[RTn/ .qx8f)#صvYx,z-Vr7 Jgҽ6 voX󑻐6y~BXƀӐCn_ܥlkO0h>],-L[pBMtGkHOX]{ 'HAsǗX P96Y($OΘ"P dV`B{+|! 73$MTDVǺ|qA=;M04pnMv˶_Q@6UhH@nnϧ#3"IZ" ֿU fҹ$Ί oE8Y>GmqZҟtPr*"+B3Kw^vZn#oz o'FV2aDmLQyz1Fș)Vc)}AP~ v]k݇ťeyM5?8"ZًŋXuu=`%M#$كV[ H_jahmL0HB:y* }ܵx q㯭h5~'/5֔)].ҁdd",v[L|T\݅rxS ~[Iٵ֐WlY˂9btbjϑul2q=٨Sw;w2$cjA hʙ3*Z3< 8~3%UI26 hHJ}d!w$B7"aC)Lg+7{>R MkiIJ7 ]1@.>Clޘ%,obUUMZW K?w9պ䃘KփMo1KJB3.gYv%?il=ZyR}. r?1*3j䔹uva2.2~%gWY( =IX۟OqO"MTȁHˑۑ3Rhv1=~l»K2D<$,f'R8Y$Σ 9I؎o: C,mCRя8N(XYZ^fȣ1Z Փϻ1=/K@}Blf~>h׍g$|NX"a6?/ߜDɬHO<+1+OjjSՍ%0.e,$4TiL#WJfr WӔ=m[Nq3̹T-N+d.iALc}9 {̫l@'d1r\){ft,p g}o11=Ё K- >=Z &ip eVte/˸û|8:ۇaX&1Q>y+L%~\63V.:;sْd}""X`hqEUnzESI ,?!*ǒݦv]v@%jKbLJ%/q s֘{`@"L4^!o?>; =O^^*JSEH`d2xWS}9J &?Rd5)R|N[JjF1MKjߛҏXotlSSD mdEvX.O{cxo87SL4t: 7m]Nc1^rM "At 8a~zB}dy5 Z=VG=5xuR@ gj_#HkIMEuLS>~=2'7nG*l;$\;m7qPYJ)כGm>x7$8?I%5fN.mpLoY(RU\TF|9f! Yu{d)(g1? 6lEe#G3!remyDn,iS5C5FՠVJxފy3V+!X{{m^[X(;hǬ2bF.%zmrWWb"-*mXRb 1|MR[T@|~pA&9a\}G7p 6i디eZwRI$v)sIhJ{:y9oHX3=Cvaym@_:~B!=]B[=ǐ =1hnGX["#,‚BDO- WkWcITvDӃeH35Z7^ևibd3pdw'+jl0#fe@*G5 E=DkZL&RQӷDU-ڠ*A yc"H +g򲽔*.D]6HÌ:I^ xGhI`xjC@a2P>'͙*7 K]u۝%0n2SLJ'w'R{~"F' ,i`"ͥ|ض%ɸHpZ TB}^3x-NmLZl JʈlXCD}{mjFu?eiw9"_z(Jz_̳=7XwKղ!1SĝX.D-Z<B@蟚\=!ycɤAB["TqOucv)tZpzSr.΄A z\K[[t R}?%?VVx@bUzPFVpBE)ګJ9 tQRږodKgWXCIh鞨 x+17(V)T3kz6AURDbT7|GCN3">**Uu7$CQgORql- ܨX77/q SE<| N vk sJ<\/Ewć;j~2)9qxS@ѭy\(M 짽 x9 bj$0;'i mV1;:~LVX]#ɪnFf:Ȣe;'I~ ? G4N]oKWԚLw8J_+V whM:!NVCIbR<4¨f[T{ϛ;/#hFQnKtcǝgp!j?(Q_|%EbRlñf"=^^6iHsЖ驿}6-pAt?!&"\ Sp?[;hb*3 :&!v;%s.p~ʯhai~F8K`7c;:vNu[[$ߥ,AwO\=ҚM*+5$e)?JiTy.:>fR㐰Fb^~aWЍ~L>A#Xp1,@MF*SuUnT te߽cdsW^HxJi!DSog8#(}HӅ(޾·_/j$ݑ2Ō:. Jl-n<؆);$t3R`^.~}g#=FfGxAh߁ 8ȉ9ݘ޾SRXe .zVxO:r nLG'xcs(1=?Y 2F83nRTǚiZ̓납['U+E)x0?u;P`%G 'x[x7z6Ǥ=PYu"'cE9_oe 4ύXУ Gnn~%a,v[K ak|i 50gwFMxz 1Pu@VшޅCݏ^+6םRV[«O#Xų("8YyLig ,iEr{ G^#|dg޶~ӔeYd&FQ.{iWe,cv%˨"h.%:iQ5h:rkU˹4`?KzPWƮ|/̐8W'KlН7Ԥ jy*jTCv>Obpi;T_ia;!O-労XK"uR´W 4e; ]\ h&!(Qb̊1i?yl"VC ^N+WxmOu)UcZZaGo+Zo]yzTGh cWˈwh1s H휱^ !)Hi cU_hA򉓺\3dNiU-Q#{hXtZnFYWĕt}_\j޽bH[a`z5Imuq,xpRW SP ?yT"F)0yaҳV=CBUSޭRŽ#G9˚vƼ(] {熓#iw1ƃV7I9 v}־!4d^k/)aL5 r2*7pS@v"Ԉur#c8!0[ EvECw>p,}c~.94Ю9:a`Z.y;lS^Ʋ>~Vjkq[OwU&uBgj奓gy\I6V|L{ By%'Bo>' ;k\AZ0'gqrϪz쉯S DŁbU A {!X'} b] ֙bG7ws<<ͤS𯱄Ue^i{+Bh}VO'*ѱ`x⪱7wl[?ZjVp~n!|ViA; $Z6o/TW$sT|t7z8P6ӻގ0ɾLC]?%Z //5)Gj c4QTr5(]M jRƋMUXѰ*H1~qp,1 )\})ʇ+Lp2'8Gtdmq2u/}S]Nns9Y;:Sba_BӑsӭnB$.,fIGGUL#ssl^06J.mbPJHb\}b\G36}ϯ`6e .u]%TuMp3*rVx^ ffLl"5qq%jn}cZ#ӷ[`WQ-vp?~%תx9̕j΅1DLXj2U0h# 袞X-iAQy樄1j1cE Bi_ޟ)1DtHPd:Bz:F~$?hm۴%Y!͌/SnLU93ه ,U6tX+?pM0RoBk~e߁zj4Ô"+Zm6{%6 "?́)6vL(o<kOwM λXowkc,0]:Ávz>&zMCE:4%s\.ߔp!ܒ? 5Hyh25RprsV?f_f NeJRy"jʻ@X.Wh[`1`/dcpZ iu=wW|OH"3͠bxZZF%;컛 dVnKuԋ(EWgr{V]op m̵v)sҮ/ߩ]2Lk5@oG],tlMKc}=@u jaF(3߆v'-OezxDHeU[Z[a2l)PGN2$b ]P@LkuA=tq=i)GGCZqu9bwծ2þ,-kN/{kb8k>nPDzCQ7<Ҧ1HYX1` sc5ˏ|XuAZLc11$q*KV::4B'ƼaqA´AM4gPJ8ZE H0 EFu퐮.L)KRndd<Юت$ڂ-[X_F+Ɋ IOM4S ʔi:/|a3v-1C6i,rn-ϡAvBcS*Uyof#SgL4eHxb℁@j\xQKoYBDC,igݵ+9x '*x+} pƭBMg6ZZzm4Wv +2^v5dM-Z2-H=fh>`g:tBLs?1yIy7"N t^Q܂xgwц1NO{g> "T2@Gϭ[9{'vn:׮M(뭒pTBe()nOC VsQ ɽϋ"G%^z6zjMȦD&J/8ߜy0*C' ?X&UC ^Il&.qyˍ%'X 4%@g:@[zq ]`&i9Ǹoѯr#P*\szhhƥB'V6c$˚8@C;lq@)mq1"}Fk-mKL2io 0Wk_L~ LS']AAi@ǻ:QɒGCM;H!ߺ/(ۏ1;H3+`;7q*yA}X{cpʥ]Yi*\1MȸHܦN+>A[%nWb3_?Q|NKX 2 |TbϑȗBYMNoaC\xdv~H %0ȑٲunϽ'Dώ4\TIͧM9ӝOyPmG Q`2@w֗&>e]>]eh&!uy E)" O]E#r*)xf$)wS?@ W᷄DL-IDw&w[,y˞DHcWnJI=lz_øIRJMٟ| v3O1=!Xٻ=8ݼ")h^W }4:ruvJy >onIӹM&x~^zµ1.-HMYcȰ~{uʨhvJ{4 DC>_$ilv7a] 3.2҃Z+%34KZUk>Xa.yU#wqK{ak9K?百3rD?r^3#i`2}Cxz1S ~Mf$a B$9IOi߾%6~X*aM ~1p9n6e6 Zk:''\VCo*`f~.We@fhb e3^'"]i=b>;9[Ux{ou|^Ih)$HNj!Y&'AAmIbkbKgN\1EIE,1d aa[AJ\ _ e!6lȋxꃯ\np=] tlѓ绕\0M]M Q X'7.^[>:S+$ڍN^UՊzev efOwbR9$90}MlPםE`ۡ(pl1/k;obɱTxeou;)+MHhyqp.XYiMQ] "ũ{*QT#Зz)CsM6͵;5^-s4mD4:OnPC@-Kr,Ct0Y05x";(~nA.uF=7n~ic+ɀil @}Rm>!s=_4GtOm+$*&> 'wCp Z'؜dj+g5JWiפx ^)X'8q7yv)c x" ɌΆ8+R`&`KlFh-KLg:$ޖ"{Ut*c$E?Ǻ@>_][ LGBv)X!K19FE`ٛv"\~ Ӗ %;a#oXkDr̸zN6R%Ŗ虆8|I 2t|#85á7^.VH4F &XLA+6VŹun8]F%wPLX\:䧦À2eT8-4遦-!H D}H7k/ YʫpcҌlX4̂W4&ۅy׏&c `q[C 3} )C 2)wZ&A"s_(Y-IQ y=GE`KtXښJ=d|ug bcdY>Ya!,Vg"p|1,ʰ3fmռZ$3#9zþ R'O.jJg NVb?)/U7jh|iok <?V–1ƅgz mb]\R9i]d[R|@Z@^f DkŸҙuHΎ ']."N{Өմv=vlFRyJlRـ)8‡vb@<vaO63h\;1p[0\6#Rޅ+V}MKĴ"%cUe5kF@}-m 94~=ρ@lhvn Oώ?jJ)_4T[쬒m3DuC Y8F/F['>VO-,=;~  ai9zU{KӯVfaX§WV1"~zRtY 5WRlp:wAgg)x77\n/\ G3ۍH x*.q:DE/ $uKt\T{0w 5LfݾQ <.-/ Sl&k%R &h@1N7GW}9 Q0PQrMpt&F|leBtH4oḥ8.ƸSlf84!*9:/O<[9b33cv FvJmIs,͢:aj@/ʜWGW溡7ZURm U8˝?zkdu}L >c~^-[U͈AO3i ䷐~p#Da&\в 0 h.i,rP "iG3X \.$pҐxcS޺u6}9~q*G܆ QrR~)4'K͘O+ ?Jr,@ {*vbw#H(b> |kW`+@MRAN^Z*m(.OAgl as)͛cTj޺U_2H!{M{*ihk#ZB$Wp҂ny]_`似kQ½t.S_[CˮHn)Ѧ/vCd\Pp,vœYzɯgm8qJ!)W_X{sÓl^ac9:Fe 蕢kI_|~/z"BL64zx.9 $bvuROc>Kl7Ơ(l/)4!|!utjL7(τ]2}DR 9J~`-Ȟ 5=!ݑL!pܷ޿G[;d䓪QNʚL)9 laJnAltFףnOM2_륕ԁ~wXdKrJ1zu= ZBT}dlfwk9Q_Z  =]巢cb4$mi$ ,~M'F5UWt\\ҋ3}+C 5n s}1_J҇-lp u=^ 8d2N%7sĥV@h(4CvH魩 t_fEo2HSqdgvhu=[]\;#>^zu߿lO&ש?eX҅k_O EmBsζ-3_[`Rj❺f32buX]M"sZ݅.8K4x7vN^*mNmy[%ҨƘ\K쳐I?ݥCI,CraOL6HzOvxY}5(DCGC`}E f2Qdi-l .,ًE{{8x. h=hhYgB l0h4&</ѷe_z 4`6UQ#rb1dQˍeUZ#~슬sV;/c˲۔7cZB$t!xF(HYM:D|]3Dj~lҗ!b{YMJK8aUb{8Iy`ĀVEN՟ H 2jyl>x6=Bf ~^K z^2glX@Zr` @/)Mɒ w_3kH4ji@l7X P9T+zM~ 6RIwo[DTedg%iOg,{d]W$~R9)~$Ts&Bɥ2&C; 0x:^Z;l+BJ*Y! ʃ`OkשP!f'5 3O~񻶟2T shWŕHMd<0S7 =\TL\OF^ D5+)I#ձ;#e;$g=(g~:eP@jΏ((xO^=\>XԁUS%;Sk7q ;|d̬T0WF>YEiN&u|nz%?3<`\Xdd i=%8?o]m%ϣW^n;\:Y8ПMsRХ!/)=NN3N]NjѓXOEP؁ŋs6F˲zp_Ds":%uw:{U0OmO~o2\2==QEx_ڀ@\9*Q!XES։vY6 SճM*s7!<_ w?͈९,nikWخ_!D;/̔LNu m~I+Y(hW?Vd Y2EdۓlS]籀6/볭wnӣ!\Bˏ)vQ$Ddd92P@< c2V9L$Is%::Up9cl[IB%6gy;8nGp~fLNu,]\NX:ho+h<2uHGx6<Ѩ0n2:2Јk@6+Jvew֙fx#l벽6c褞7HL/35^A;F(Px63 V͐ހ*xZ2w5MY40,=mq*\uK9@Т\yY2*~ge(:JX%g<ӁLR '5mauL* Rl~ibܣF||1@ϞI\<18 Gʘ:Ofq3Ј*.`2Pk\/3kRp$Ar5Ze!=PȻXq /` +lnԐ_c JXf}9˻ZUo)4 $ HPS2]ޘPs6<3掛lDΆ V>? r=5tw۵~.c.B=A,pme Q 5΁gEc_> jecM=pTh-x\6W*Plc=T&!,+WP-bJp4&kCc{a ңԆAy/*ˁ /6͔AOTXJ:~+䢑@;1tt7H|°H;5.jnCsԧ) j{y/>+>2f@ =Dy=13tZ2|glMO(co:9w%t̛q̟Fzkީ-QN'Dft+~ +rV\ވƨcYvI0yWWV^^ƅv/doW03ӕRs'zJ*"ƒ :z=#JRx6)1Jt1߽/;$]MY9`𹢶y^N1/ O–7a ;\j^G8늜g sRKfh*v*u \Ic)_EpTG˵˞znY71;%[pBcTzҩlnOy:Lp, }ЀqL|G]=۾*Zs(L p}vFcg?}[G!c`¹a2$7~ &ԴzLU3G%S&FZtϞaQ£Vd?сH Ѥq%z }AEf>ňoy䞇q A !f/I Y+/zNTWSftɢe?g+I7?MbE@u%[Dt9u0BCSWf]Pn'ѠS)s$U %qYb)?NVq"v-o9mryA"rW^q`Cs5Q(&k*ﰛ&&S'CU̺2 3Ba/?ɍX"wA}M:/D0#adr twǻKd X>ihċCr`d6ڕ>x2McR2KEr^`QPw(0Wα3_˧^Q&Tqb؞ 7XKWLVhmXn!'y?68 \rہ:S4Y]L-9ThV6djҡ,02;\L1<{}m],s\?WN ^hBƆ-ح7m6}Hc%4@_nsoDH5nTLg> u=O&zP?‹SRE:*0IP1&"ʔu$7[hҿ?R@ևIœȟ6V~YQ!I!![F6=QzĽBf3 _+oտ.iF#.m#;L 0D@utR!ikaJiFn~.TemTW@a::S:B xǴgB9zPy%Ȫ.m?c/*!*xزHRG Кbu"7=AFU"EK&E߶S-^=OHuHHd0*DEa=r%78A^y˄)˴5]$zd'!.(=-^AA8dpWܭdU4\YmwLLQz.&JwyBQ kJ|𿾜CQYM=j ppw{K'o+k(DS3O<[% 笧^ FXͪ%{Uq!|iDҦu#>"ܓ7;{И7MD3P {33%D2c ~2wgwK]sΥG(󂱭nDK/!'diyz6yZe@~ c{' i`3rr-<E2ȁ͎OkTW釥M^<<;}:H*EZT)\ 읽aD4]<' jL@*T ?4}-.ANQ&}:灟X?r^pS+pYKk`7 r0{>;ܮkGnuHHk tj!Cv,,W&2~+i!K$k(P'5|X&rl1/?T,B9r=™ M ຬz4GuNaᑢ[j}AF[p񴊠ܚ:vPIP~ꡀE@ 8Bxm"6~T%[\JKټ'<`S|%܎u4\:τt7&dĬtpn\/AI!yX'X <ޥP~6B̰g_K(}אPJswV/˃7[aOjYY@ϓִ j<VAt(d3͏\Jek{6yDOSg$ `~2K³}eV[~?ZkE 7(+fHluTMGxiTY<˨Z(,nT9)taL _a9q0Hj&S=yRK\(d%hڌ`Kss-r\?uj3~xV:+z/$o #&dhhי B4֎6SX, 5YɔDƕ.pE~Hy͑ώ,} unuS>5Y!67ԞHTrW Ɏi`:EwE"8H s&6|ۭM/ϰҊ>Fяs,>`W32uu0aAgNe!O4_% 7I-jJ9 gL!wedxy[ r PMamh7.cX9;[#{j(;yo&7[4X;|OpCLZiMXVO0lvȘk*{g} uDP-k[֨GE9nJ׊Y-?§-qccW '|M82U^,Bק͍ 7?zWUE |N3C?#])t^UY䱢z#ޫ·G.rUXKcیޜJظZkShA'?WXQkRA&wwEW:Qroe,lP հ*9,7(5ΓP"H2ל8%č .쏂DfCkN6mx/@xL y}S-z=p~ "#vRkӎ00&;Lh9i0ڏ F |o.}0fLLtw:|ǹYm߷L.{@|-nU 2q֪b$&>nn=b(OcVtΩ*$*!y ꛄ~BHx6g0[kd3֯q-@ң GnGI'ёW4ʕtѱ=Ab$din:]ۮ|ڒ4v7߼ܠfWI NTgut|];ɹo1o#{qH.aH$N=ї}y-;3NIFд7q{^催 '~cCt4D☵1;S„|T<Ͽ)9$^l/."j1~P5[yX[H;#:sŦ`PQCond;rˇ"ǯGQ! 9W}:5J?Zqa"~{lLxdȒyGTXbhF1I1)ǩ)ý亅zˍ ,6%‘-|3#)0hX Qyĉ P iyzp/I7܄_%)`O;ڭ@.ܼ@T6a]Cdt$h8lIHb藮n?⅗oFϷV +wXW%Ml>]ݮ1ǽđ(uɖɿd0hK gWuӁﮕߏ d[dKؙaDpi]@$ԉc+4·L:MD*cJۦ:k90!O$ϨgN7w޴^,Vfn6q) )g?"J7} A6 obiؿ=*_F~f#3̆bU6cANkaֲ A[%|FdR9z>J`jGR Ւ,x_|-Bfm؈GMFO2]FX @80#Y~X8|=^> r*rL/vapHǒ^yǮNUR[r gvr%0Nc /-? N~`=,צ2 cF6I{O!7snT k*7!2+hY 0ԩN|%Yߟx@aZEaO"0%z 6mQw4Y@~/IIMyو%f2g)J{7zt|wD}!㗘9;Fk>6>@Q,e- `DC>3MZldd_u `]HpCsYj ~;2Ӳc.yA-Tؿ:-ؚԎkHH>):j,`0k2 [چ5 j\!FA&[ৱ\)diDae;nzmЯ&ϯΖ83QHb9xUt2P*ːkm>q{kt9ʘW\U hm^?>B`%BŲvP*DBɸUt_^r u|p){^-%Z;B_L#].? K>0X65dA<΢p f08f.,>l (Sb/ڇcQ|Zu[i-N׷uJ@DAr{@iI07t>vs031 B{`SܘŵvSH_b*g_z2 $.Cz8' 9 'p.TWZC z+ C՘*(SCKF ~h.3+. cĿp/`.Q1Gt= 0+\ _+qo -|"g_wjrC,:}?JzR ^􈙿N)ʛE ,^Kn7W< x+|.% YBu%6N/W%0JKȆq#C]f2άcO2.rwU,1mQ^ܯjN7%8HknޛT%| ㈙M6ZEX Q9<Qve7"gRj,#-4.SHr|KĮ]<-CDGYzܪû##ZDa  1}Og^,Ķ3ϷLJ+8 ҁ$j!KD\AB r~Jұl+)yAyb1a|YiwcWK#uY ň㙅g bj_8)X߹v5@p'Q݆6jKHL/l&s|=C1SwUꭤqɎmTGaYƔ~{)4`H$a[E@D`LB> v0Y%;a/bJ5h޶{DPrtf#lE|o)Ձ{ cwPE7] ˖>sGoE`ڄ23K B嵯veԜf+Œ$vjUitpGx-M8H }Y=BW#XmcC0M<|PV@ݡ"k~us2ZK!{ tZS18;U"SE%'7dk*zժU]Q!!Ǥ:MY,TS4X=ZiLUO@,'.M6u3v]p} 1U, LD Y-.t“-+ٷzAH ٥Ѓb;- lzH߷i*5ZomkvWb7'QTfʼ舣DLߖ"AۗL pc{8P÷7Rĵgܼb@zjڒB6b Pq6C`d[j͚3ɎڍǨReh B+ZI(=8&&TL<;[NsK0237I`%.Ј(ɁPU-G< }3)gky40$}kaQߛJuN8Ǿw\d2b(Bb{l 4:LCx9J'ߋ -afa7ƨl =!Cs\ Dj>:5FpP1g"`U!+x噱\uw+Aa,934/͓z}Tˆ Xg}j*%( 9`6;<Q8Qی@U0 x>bYZ8$ X}>P ot(~{u\nXR_x?A<=WI`h^CYo?e>_8VΛG%>~*g*Z?X.d9GvI-,>EJ~-ݽDoHSzOl(;ʶc~,,0?{b2o,CN,Y6|ey\'^Y2y|۹~+${juIؖyp&={, 5&*S, xOC bKwlVxޒu]Oc M$o4ymZ4n.S෉xtNʅ1-#mdW l{q- TA#g#>vlVnE8]5BaGHxۭbk +;!!c %`wU11rH9 jŧjZWlbCPInfb@_yIMj)Y/>RϾ .l̰8(b&E).F' Sg  #ߓ#D7ѤUu iͪ۾\!-Vv70x,!|7[!eM: beq}辇2}lܨݞ)`8H*q?fu|imwP}_\ PJ?Z+1@1PaMmzt73,&NM0%w^Dndœ—1 mobv!mzvhuji(oj?Pa[|9o*̥@$AIkGl^[E3irWӴI/64ZpejIIKkOr3B9ڂ/<,)ӥlv3'3ª^iOr?r/wImlvH9#5)ʁ|-I26|q.ag>Xwo<%d܉B )~6qA@efcaO^;e>ͅ9C;AWgY?BA=L뉏בcpNȰ%:~4e9z}EGVzL;Z_jᄒp6۸7Y%R!|3I^3Y}p^(5#CCL^Ve u)fz(. z>oڗJ-^ˌ.o`( _} װDj.\4tX!.$%KN) ˉ2\6̇\ᡣ Fc#I: `gG%C\V}pPs|[یĖ#OWDx䋅gw84޳c,Xx5Q}ػz#PdmڟhO粒h{q*={Fk{侶 Ri"MS9ҍX\uLCq-QڗAf]I,{I6IGe˴Fϻs eec9˃nE4~l Q $Ve_݁ Uxsl`@ۙûUQpsiJKBApMvN z1܂{0aXpteUlA=f 4.(ayNEkBP̑fҥvξ†`IUnO/Z ,R^mJ^)5p`Y]Z|jfw'fZHpNXO1T!x%kS2Ϝ F@uae•p 2@k(@k=Rq;wV3b1zX6En{>, \=Gc˺i`^4>:>Ŋ "ZXhw"&B8;~o1c\ؗvB; Cq^|q3 ]AȓyaraDK:fir-͜+/L V@Hp7pO][$@&vCǚi;A ;o!h_Zu &ZU%i?JgNi/Nɰl6}BMa~ f_hg,FIh~8\2%+BC_AVG*X94b냼tEO.1eA(53qh9<:P41CA 2ŀ*)j?B#%W=.&g'er\ e,vf0s roI)b/ "sV3EQ{f |rk`Nse><;Ĉhx2_vP$]NnJlh/:ypq0qFuCߨ+뙭SnԲ!9$'_!tCDͅ˽9~$[ߏ'wWVPr(Ī\ad1ݤFݧ) 1_6ǩ ~_O\U&C_+WɈ6@ݤ|}}Tm{ V[^g7wby2ґ'vA Hc$I,#,'LR3Pv #k6{l.;2XjF$^u&@zPWg/I#_Uf0ju64~K9o4 ˢEfui}jd`wa4{+߮ER,2*FJ5ȥd.M鵐zr8F6O2hTPѶ1LO^~hI 80\o$` SC|KjGlUYw"9^J}N,lkL-LZ߯e\IԌ^;(JO3*VcOs-'w`u{'&W^S)o /VgNTܪ&oq/Ì)2=\PUlClP5wYq)`O-q@RPzgqoX~Ӄ"+Ӻ\Sm$t ׈/,ĪL,xňܝ+]kZdwDٿ[zv3軣`3|^K/ϴЊz)*R$t p*4ls,uY+ߗ=l b,Z3g\dq=_+.e3ƍTs<8È# rrP# ZZ}h;^brSu &oRdSf|ʄ'~/mlgw(Z/cfK:恲%+t=( j@A`: _L":T~CdzD `ހF#G[#)̶ ͋9[_\g 6ǹ(xOob=h~($51i^p:-Q =ϻol׊^p\r62htiIH,%U In >7̏|򦶨طf8/#`ݨgȠGJp S0 %P֞}|P'/vvt=bb>֔yAu(={Tm^ɩX?YXxM1Zqo+TtsyHu]v"ؒaJEG{6@;-nOO/b:*1 `W8'eNAɯVSTOQ|G *ܕq}⺪&i8i̦PnũXt.^^֯cX[2c ķi-9Iœm Tt FjL B1GO7Yy7mk4m{X#Qg3vbduEz/ WˤD ɯNULo ̭mTGUHm*piགྷqt赇N"S ¢g/rDΖ@L]̻ҭ%^EBr҆;$ 'n;*H)},K] fL6\s*xp6h)UK`MbUV ?G 6 C_4LDīS. 1牯:ŏU1gbQPɀ w @@AkN%l%K3kBy1eJ3Qa|?T?bE6Fs5)V;EFu6ȫ ׍(٫50oo;O%㢸eC+O7 GdXgp ԓ竻 ZJX#9_ij4&s[ORr vKb6\,1e>1B)^GE>+}kdBgrn"C h9:?B~Xm,fV5I  p>__3󓏬Q.@RovHy=#xssAJ"yorЄa(kk8EWgU!f:;c3tVi_ ;:>¨F昞ANJB4ioJI+Eq+ߤP;aR F=vjd Hi%&53b !9гumm2u) s^gԪbIz( W:8 69uߐwdAӏN3fXQB->/`}ӅЎ#"h4 BU۽wX%5 ܺ9-ഒ T>1)m[~Zܿh]F7H-6.V:ժ`4YlJ>4rh:'\?n鋡[L:V':Z~% [aOhtA^v"d=(OƯp~KPŜu@P[jʙcb(n$/wQkZ3VAiBΦ0BYA7*ͻ,ɓ)[Q̸ͭgmz{:rY3~\ %' ޕ:1}wsBg3߇ykw&;1߆51(U_i!HUh "DO qj eU[KN')aQ RTvь _zX1!yx nx 1Ožs!޶ea,y\`zF; ND8wuڂβgE pz< Ȍq}߯|ak't`{m>c=48'&Q !?^0u/+$2gjC\^$>3ʨGU+XZIdktGx^f]as.l ;'$. U ZW>?l(nulʹ[1q892(7^"a>,8`6{m!xfGr<Ɖ8s!Юa2 ͷ8' %eIE,͏Lj7D"ґO8Xm Iʺk""ÜR$3+70{7_ \q²|53EX: Aq@0~K4 Q4}'w`#op6Yӌo[QfsS5h( 73[y`m+pK حhu4ojȠnt4SMĽHXKY57jݭ#77]gV^WZ@1)pXd}~D<[a]ƹc\a npF!Dqyx1`Rlt΂"Z2^RBPؐ1VEkvo-}or6v ;̃_@ /10M,s9ԜwgY#z`,M_W".PBj)Q҉B Ҟ# V]lAacz3"_#omֈq& D6Qr$$"JHe18~X 9xoާyE?#{aB/K%ڸy>ͤӔ-y\d(@}=6 @0m&F)'8Gƀdjշ0K *o Vd}L涠R6!ͬ챱l轴mBzWA}jf5%IZ wOUl @;[klvs׋OeHSfEБhM6>Ή6eF2msbuO\Hz$3L a Q,b=r=5.0F<+Y;n)$ !BƂqZ*ec(?WL)AS > pLak*.D1+V 4%hb jjyZ yPi  dɱHi|H1♴q(o"z`t8 ֣ڊd=)^U eV  ȣgsfH5ɠ}sbRÁ6M(7bQTNq$ ^,˼+PT; bFxĤNׁY1BTUgX!ԑ[PE뒋"$|;Vd `)tZ52IKslX' ܸgb$|035os^ R6% ŞǂE'v)vZI( 7+oY/#m wyVk lK%Գ8:;YH]mKϕ{ @23Y%<^ٷ1'E979xȨKxn-(-iHJrIWʞ)Ut~"kWy~ Y2Fxed-K' ᳛%[ݿ\iizwJ ᤞo0)2&2 +UUPڅlNj'ґo4GpbܝrDc ^rPn}"@,{MoRdj҂Z b}pՀCv"6v*W`@npHdm&!*Pz8x$V倉*(oMU>_ﶹ0K4]E$YdMoxjӿ&g'Ӿ)5GrТS9_ix/.LSTMSm}TOiπ{ nmO:ɅD:ñr8ޢY` e1v~}g'̢M3Û}dSM&#,liu瘭 C~7#A6sZMB,4B: /K9r1uQ'4R1]ԵTqi[DiHnC@.~=,Ʒ YoP שWW *Q##9bVһ sufqgM:/oԏ\O(Qܹ7[M'oQqT]&VJUZb1GW63@oj@`oi+UsÕl)HZZ,:3;J,UA퟇x)ᐐf0?i!c6+ YFq1rSH'DZԩޙF"@6ؓ'xy];V#(ҸӛPآW ,/ӪjeC39eaL . x!~x9GI^y:)McQ/zB;a]%GfjGb~ IS0)aE/0=jDIt5DfӍпDXyD8'^3FZ&ui2&'"3N)V|l:U8ITs l q0( itR[~a=^W/bCt!8lkKqYԇ]6V/mbY~;bnÎ5DeYڎKc4!֊:sR`6g ma{~z@A޳E/RO-T\\V@Ӹ^չ6GE8Yۍ\*z[ةhgvU^C,1^ghGZxø]3@ޣ 7D*@NZGȁ)I\ hF Yqń 5Bh7}& z!I?is1zR+قdU~yckuQ/mKY߭DLXmwಥPbJūy9PUdKЕ6%{QۆϹdZ$oٴ??4S ETP7w|)elT1,ֹ@\ٽ\={Y`$3ȗ,>.yeO0Y)7]Yk(? }1_K^-c,<4YSfp.o/A*BCTUHw(0_q*\NN/}0/H(e֌BU:H2 {\{;dK[d/zT-zGh?1#_2 y@DidΗ\rR*WT*|,OoAlUnɅxX/7!Z~JPCmR3u 9zWJ `s-L@ sKeG35yfT8i@43;wQ*ɭ/͗Oߑoy=B&Ŗ[G/-x.!WtT\$Ո޽%vK 4hvR.AV56L3Hobr鯹W^Qa\lχD|b4H:j]fvg'LQP'U<#;OGO!AB%0}~@/  D[91BI" Lf銝pʤZ(HLZIӖ^*[5ĈIW䪡,|`@9nnɥٌ18k%jS!'1x pвg}%iX z6{_@3Q۷zE%Ne``Z R?{±Q pv\0ȶ%2fH{3\ǖA Hθhg=Z ]LaleH%rxfHׄ9cٮ[sWek\vGÂx ۘYa) FAB15zI4]ջ+ )H.n(^oyڕi>=hن]\Jǒhtz Bpf\B7 Щ˅,!F:CfVN4*Ͽ)s+M|xoψia$Y*䛀Qaz/gT>F_'ǝb+Uq[]WB9m&@mb[:38^*%٨*rt8v?߼SoZ,ތxЭMv0ӄT1$!3Yٛδ9-^C*Zk7:z\PZ(,.;pֽ̳Rई_F#_'oB1m %^Ny ^CE^9 JF[5igWHJxa-,ο/ ! Y)&Ue)Θ[1E2&O)&ho 5̮p V9Ο!p <,o?Gr"Xk wU792*Yo:~W\%~p }.\D'6t*-K ͮTg~*''s,Reu>Pmc}4߱nVLQh|^$k "Pν\lt&.;YMh !X2~˲VA ԰`[˒>Kc]Sd.(1zu/E~MP t nB}HC˒ኩX@e zvxC4 cKL6ia:n&3A]TҤPx1S#rdI_%Aa5/E2"W J܄<~7Ԕ3\7[vFwuAM&bkIߎMrkDs[y{qCˈ$R(1۬JͲUh)b)^毙,mlGoH()McNx,1WuJ*(fHtw4s"p>3BƝI),v@uDܤ}C-)Y([p,jXb}cP؁G+w j?BwlfQS:<=lEG.7L0yoDr+f?Ç܁hk:`@!vv܅W`* tc(EB=9C {ń43>#e/pHSpiNLZ O ѺzMbX\޽OGY|Cjxˤ^`!QFYY )jkS P f(&'9"6|pJnJ)ׂz4e2xQx!|wECdebm^ W/jZrYqL`Zc+6D>p1"7&W珒7qjI_6 d暺|\g{p[/x]&{44ć(le7Q4h#kƈ_a,V `,ˆ >`WXX: (rJ,2}-|E|fO &Y`]IHS-SF9DQukBGcl?C73BPi,*LhDbh TO s0;(}q(P"zn45^)d@TE@<a+ℐuM$A85*X0tCNXx` _PvFo7]'u+`T.c^̵: 4(W2bH{-54 x?h s6w *܆~"? ekMWdQx|uq*3 iVe=t ƅ*#U :]<'8⣐[3 6gX CƂƟ ;JnT΋s< P|Z7hfQ?h/"&O"H_J}0/lԑ(EF^%O_JWih {[ hb- (smίLL9gKLY #:@ݜ䊇$8= T'X r՘otUŪ2uۢ\azf=a2:Ut`? %zC9,+uE<:S Y94obHL՜֡ !0OiFvd?fQoFvN07 eN Ou$G^:m !'Zo$m_'Q( NDO5}YsTH&3[$YfEi? Cnbh ,!U+/56[PNI@)JPg@-V7Y&BYRXHB]I9,añwXeGhQ8A^QzSok(Com=LrP\葙9h uWnb]KXW  lC <6pxHfz8_Pϥ8FйUwVMN RUIm)sas8:Tu? TN9f>s]x0L>, CM]$$v]8T=]'$|ԇRኤ8;2ƮQ{SXPG.vh@~oax|Q<~.o4kuBvR{w]w1G0v'CAe oEN76;]`F,_γqb% !#uNd8S 1KO6>􏆈vbx5j]+sO{]cQwjkcnM|@S9S@nO+&Z߸ʓjMc|9qU0тj:5?a^]{#;":*]Rm}*GkdH0їrV&~Br4|2^9ZnI V .u !版^ޝN=^\`+8pc=ʚ[erLO}@a0Ufrny6 y#*iM(k@3*v ^:;x@T$cOXl|2>~{1X"Ȁ De7XuwmH8NLC}exg?v.xCw=XhRe]@ںkJʅUzncnU_[ @"H" 7KI.|3{?U@. ag&%/eFg}, P.!~P(AafMkuQiCţ ZA, %:D\ EDOa7"'C Zڦ9 :$FSBTU 3[`Z$UKSjkZ`41*ˋ{0QW~ & ߫*j'M#\߂Oph`6 j@ %@_pkL1)ckh76"3zzILT*0[Éڰ :'癸J-z+a,Wg3k9/0_6"kC5R#gKV~1}ƀIflTSP"Q ?]^vw7q1d2&xdc=< <肹r x"|y>\J8}4XJ(\S_@9S*8Hw@c.U ?NG履 ۜbNp}z3&d d(x͌PG&Kg ü_9f;WRhcJN³zi)dQ0}E %6\؀BХ5s!IES3)^wJQV}z/ lkd0e82n7P69*.zGb2]XK;a!:R ËkjzNs/~bNOBq7x!sQ}KorS^3&tr(<KoFiz _7U:- 4W11akKУ}+=!eV12^kkt#jL1?,/sSnim&> kR3n̷$8%lZN5z0&qXRHFlR_1-Iq4i`FO݊nO"0+V F ӪW% nN:mx W[c1j{7j~P*BAۍ4qWz+onrhjcDgWmCՠ8F[tsT+Ъ e6Uk;wX,@DxE\>Ef jac Yc8d#MvN:yU?&tԨnĪMY0:ͯUŁv2фb%IbQ0ԡb?p }ҾpyquՖ2;ܧd5-xG<T6 rfqYW<@{X齃$/L^uZ6\ٯN_z$>pF +aZ:mMu=:J#=w@E(fkr+}.8ޗ*_Ķ;nĪbCݜۻŪ4o{2 & _yվoi)֞?CPʏ#G /5O" g(ME Dp"\w/Las%W?(NU6cFn.t:4ѵ7 $ :O^=#쫭*ÚE)@#LqT#]a5{=- *ɐU媸uHs*IE:хg Q+#ߴRY_[yŻ^u0Fcz^|1PV wX6}DK)^hF t[F󯙜ˈ!b g<Y4XPq Sˇ:z2psmxnD1ջ:Gx2{T# C5-m++ׁ8Rtߕ g˝8P)$p*4b\`Hwj0$xgrIJ#Ƴ`0mP98hy@1'X=ZrIHOR+k9}ўoDv4v4 a>OKM}@D43>%;LA=< xoB5=dJUhPoSN9T\c:~{6؜;Uf_FLmHL\Gg_xdiVE2]H(#Ub|Ê ,bzyv[DkB-rRͅ*-'d6I-, r"f<7+ʩ<t ܙ;SOUWiJ ]X@P>ʌ8 ` Z\ I_FO.@\5l':>Z{ƉT3 f"Nx29hEz(X `}=~aϰ"}JbpXip.̷~'~ 8O}h%jGX„/MXjWqp),QH:qndi4w`\r!sn37AzKDtTSbM+I_vnsKÑ(]yz,3h=!'H n$v lZ&9U5+ lGLV4|{\*J 8٘6ΏW @=7m2]_ZAR|gֲ*ɂt<[_-כxKQ_ :4*[f5Z'uE`kf%X>Z m[*YTzKY:Vkbd9rdb{7<J5l]E;"#^nXg9YT8㍒Hи.0B]@GRc7(M*Ǡ[wШR9kmDPσ]BՐݦnqrFS/~T(L& £YHĥ!{9#I2 O+l=S.SM7+kPKSqgo}8*ɦ:QcFHű]="*4P}efA&}{?CTv0ck¡o$2r`HAIJm2w!|>nj毯8|d,lbZ7L BRIO젞&ʅmQm( onz7 V?uk [mUoq7S! ќՇ8jݽnad(#ApRc`z\ >z8]8|SAv<;[ڹy^>u$2˺m~mjy Kcdf\o> S 1*; j씀62E+Y8=yI2Q26 ڴ $jU'LH]qvx.U1uEѸ8bP"*Aڝď V9@5;KYwͯ(Uk58cX QJyۂNN79H5ju#ʼ}ccQxb:ۥi|>@V6:.G3o)-9P$uT$4♆+Zkڅ s4{LW#alUZ<;;Myfm ߚ+D!ȹ&wN6v$|A呢Lm34}q YQ QF=}=ioJhDi%.ri'ʊfܩ|/|H)$5$6L}`.c?\<x[Sp /l$]P's[&g)ζ:oPӋ#S`&,+fGVj},ON$߽Dhc,~5,FcgE_#fZ\h؛L'&MdlHGG_ ɌhfKiO"* A8R:qSJ8^R#lnFU!N#Ds3HA]Nn2b;iCE!%} &?tͭd_c;\QB2gng}džʼn*ߋ@s.hKuB/AT05 ڐ_Ƨ m!m8|:gkSQq,-&zQZ0g,AҨRHdj%_,,Yw_5E ;S^ci0[Xl2 Wnx43=7q}V3XW?نE1pc(EcZ2\ RU&[(QTEEmEe(|./-WXsU:!?f(gD*_Հ)ݸn;D탹0ۣ(-, ݕ}C;{6IҒSe|YL P8:62X^acje 8|^剓|:Q\gZP"|!9) z,0&K B LE, F]z#Y%2[1|aAV#b9}UeUB["4X:d{!BR>a_d0KaY/f AqhiP+.-X0%$4 :)n{;FrIǀT:^t9Se]衜n#"ݶŧ鵓m}hdUkF>4_[i#׷¼Q9%[(lP܆e_62nE8=>&[mAhzy1e[𽙫#ge,dy vї1b4/A 5=(:;j)ITol YX# S`:M p% ! (8U:g zYJjU /1P yFJ艵lBcPf=[\͏B[Lv\ǀgWh f&lGf[ f.#~p*P&0_5ТQRMxݮZ(~d3~T,a($;z"kBd(1zg;"@0҇,4(URwGgFVF|1*XUբ6N=H))ѯyx {@uu13q+p{8n߂SNDSHƯØ|b[Xd%rO ʁ0.~IY--_]-Y^1'"1d{;BK0'\|-ѯϙH,~zBz3V:u48]bK71<@OӁD)Gu5>q2*S~( }E3ޫvfL\lifm Dl4;\KWÖwZGk`~ibcAB0 XY`\Ht^8C%їv? n$7< ODW郣:~I$zmuȔ,/4Hn%?Tж+DxĂaĄ ~YLv xE,IuٱOwKw%?]`d~Kόn+cuP#*UxP72)ǵ |_y!)OEG۔b1j 3Zm'ȰU* ִ$qpZw"8h0o"u/ےɃ#s~.I?{Z2OtaZ84*#ΩsK:sôq%KW`F"(pG7'v}h2S(+\Lȳ @tG ~1qY?Ýz9[(al>UJ5NePokz@u%ycjJOqQl9XlxLgA5+s7ƻ3PVXKGt!t[IgED/bTS9J D|]@Wz>IPӫֳc&R;F6Ɨ(n9{j3_ Ü܇kL$Ҵ Us yF꞉pMSPSLu- :X2C䐋R'%gȘ9I@"+%#6mk1n>ն#SOi <3KJw>*X7n'{-2A-"8A/5O=|"2krڊ:4&&ϲ!2>QjÈS-T|UE}Nlv;sb_O]* c+t$.B ϟS8YzmƍKH\17@>UHh% 6&3'*MEVQ0D}!@q!UEt:T)W4w[IZ\BAذMbYT<`]g7"NQ*,t]e`ߑA,Q5kwuۈ}f=Ѡoi 0>o2b2z(iݏº&-6Qp\$-5'jb6Ov7*O]Ytz!1MqH /=HG򭡆 sz2pRnM=tJw4)}ԋ7}LԐHrxhZt"xS9q$2ARK9^-h*M'W@E4&0ϥf~ #2 .-Ҭ vKrJlOxظngA \mQFؑ0CQEExmqH}p;P_,C=4?ˆC(uH c^I* ћ&̋5$~xUр̀PӘJבkW1w#cU[*80]3C&)?uvF5 7{|?UfAj KSWʯlZ#y]s\f4cFeUQ-NtPgqPqgXUUFu5_3 f-{dG|!h z"`Z;h!b1+| ZtRP,M @).= E;v\Xw>Qe~x= '|6T(.e1`2\؝sb 8P'd/c3"-B`o' Ut[߇#v~Y=qݩCP>3סG+Y ;| R.G*t 3ZRK$s6}ȧS/'o=`}VD}|>93Ċ,Idv0 T}4Vᅻ\>fبGWΒ)u%buu~Ra2.O'$ABP #khZ9D?B2 ֻOĈY9y0h.y~d&d0[b}|Y$ 7D0k M]HMlcGvk4N=dc60_[qREԊi1JE^=+ 9+~M~m,y;<Q+7yaE{)܂M zbx EG< ĦLSNe 6t+8X xx8d͹W΁T6hBhCXxD;P(ӳ25uos=狊 ί&$uY&!HG- 'Wh>)炌Cۚ~W޲Tӆ.pp}v~w{Ĭ(e<'5F>FA*xV=Pu<"ΟTbiipXdt'+"_ xf=כ ټHZ/tLF'2Ö٥9.joWSQ4hGzB|lC7N գ9d[ K˃;!h"z@6ZS6[S3 $%P_~ >z7+vݮwCx<.H_r}_PhDr)`{ $`x|, ?TWAps6 d9X-;v IR,N'o=#R*~= X.6G]i$<ds2.?UQ Qxy"~)0_vdD¶y,#KDuV 6Y)+\ iym\: }+@َ1Ue1Xq=P#7=.zZzZs'쮨*='Xp6Q+|mjoB,_$[_uq .̽' $_<@mQ گZavpVo=V=)x6c )*EOlo9N!ݙhEn) HV̶A$>;ɝ-!&Hr+=\ڇDc=OKl_4?Qa~Wfi TRI(l2.ģ 5UʘZ}N~f*ɑ>`B.5+&#|\}slkFLգr}2*j=A(Bŏf^RW3t=t`ȁT *,9 YpYjER1klՂ@ß16">{6AV{"%űR(tM/3Ra۔Oxrj醺*a<a-3__)X<gL<|H]0F߬'g W;\MG*Yc;a)ߵĻS_3/Gstf]Cx 37(FCwyU[0[`mzuܸnKdI7ExI!A8XOnI~[\ jٙ.ǥ_:9|_7oa0K5!Zeb=Dwr~^ \>0 YZspatstat/data/waterstriders.rda0000644000176000001440000000202012333041776016450 0ustar ripleyusersVKhYi1NLǤĀLlؑJuMu71#ѝk] :0+݊Be` A] 8 cUs7ɭws?5O5M k?>FֺeΨj)wE\e2u6.3Z딦ku,>:_]``xz#/eE1˘-UarMl*۬;]|nʶY.9`ӦQ6[嚧|/K8Łhm.)ǭH_#Yj̕-qzMDZ7{n Z/咷.;^Um)B<~lS]']rQ7иvjWw_ͻhXR/Piĕ>Yz;kr+_*Oeή'@~j.=nO"|s*D$/y&u)ܖ*8/'ˮι6!~n i~@?օul3C=B@βUIc0=j2ØsuC spatstat/data/ganglia.rda0000644000176000001440000000231312333041766015154 0ustar ripleyusersV oTUeS)Ęb!`b!dcݺz{wGi14b1hBP !BZlK][۪Hps9f<>0 _r*e1w5bq)T_3q7+zN(Z$b:'9VU ;=X 9 ۊ2؉e3JPnem+Ȍy=^ चjH*\u 9C)j0zZ=H_[vѶWj䂙]7ϧsqM-vs/ϣ<4a-,[)^i+?<9Cәeb{oЙM-kJ~L>vtlv걭)u)u֯{ŦUtSWw T>gVnyԻTD4ºP&W7R/PϿ{oWܣ = x9]GGQF;(ߣ ۍ9C5W =ݳfT2\4~8?lݬȋ@iVitR0Ua4)-yՔUħ<m~+:`? ACHj't(u>A#>qD¡&A)y ~N:>=?Puq? ~  {a_* A}bZr裰jNjcw]HTW 8^#3{}\~"_ǽC}} gq/)C\3ZL}a14ytbxդv^7X@udm' v&}A+qbr`G >joE UV#\h$D"XyH: spatstat/data/bramblecanes.rda0000644000176000001440000000723412333041762016173 0ustar ripleyusersBZh91AY&SY%Ѡw]U }DՖAm1Q$B 5'jazaOSO&gyLM 1OM'&Bi US aOzLfSaS4Li3I)(&z@  'Sd鑥)6j 2i=OԏDG hi @hh 4hh4@E$6OzM)MCOS&2M4@ ѣ# 4hP "IS& iC6J =2QiHfSM4 6dzQz@F eJIaANO+DA;j<"IE hUSNJH4W-1f29HmdŤ] , ZwY$Zd”R"%)h)HDL oVH:| '4D+q5+oT|%n4¿"\@xBPjʣ1r4a4C*T${Aj%IQN55mU5@Yq_rLȊHk XwJj9[, ld }z@ \NaL@gJFVNb;?^u} _2}⧩Zw>3~( >6JʏDP'' ʵA^Ep߲_"QlPK̖.I$)9l*h<b0L+ -i0-Dm1UI)IPA:N]' xY2[9O[ |~Yk7 E!{Gml츦<|s)㗵&oNmQ} jKs4nPE7Ctr" S:PVZ<%ݣ!hCOٶ'|ȝ! NN=*(ap>iXޚf׃5¢3V1@n z]S>vKc07H1[I%§Cv \Mk CuQ.7o3Bʗ,:c%Kghѱ*NيFuLVw8+c>'#%CUɱVm61Yy2؋*jL߲T0Ġ$1Oh@F3]Wfu?QBS96cɈ؃Siup JUc8'hXeY$Γ^#ThY4I$~"!E\Pe?{ZRdйbENzxRP6JDƆcR lwG+k:qb -J,JP]}n4vmr5\`_ԚS |20]ϿqD҉A(sV?N:NʍR`YVLdNpN* g̑`TP}u7)J:Ft&'"'@^Gv]#kT<O:Q\}چ"Z T@er:KD/S)jXgٶsL5&ksVZ%dP;. 1IQ(103TbeuxTN4vm\THo_ RANƷfv.,h!XX+EdYW:A0 2*?ss(he&hf"$JMalTQ<3pi -+e)B|8pA2L"B°  T!:O(# $„)ގ͐½M( 4B@R$+lXAXͱ.O<9@ x2#&F40£P!(XEffpr!]Ha/e`fookyDQ^ Ykl":N(@hBt]U*.^&&AU!gȱJ BD!ob0Y 窣]|RI&͘ʸ) "b #l>Hr*+! 6b Pe5+!X:hJI 0qCpE)0\Qv"iɐ_8mZj ˨d$!BmL(p}  n/`QR>ߟ]BC@Fspatstat/data/finpines.rda0000644000176000001440000000530512333041766015371 0ustar ripleyusersuWXTފ.EWQ 6'"QAE)`EDZdq Hb%6ASFr5P|K Eo;ywܹ3u!ϕG4&]f,Eh\u{i4H-k5KF2O@wo?O;dІ $kޔklg̓VIStЁM. 풁}eؔ/HGJ!}˩}H&pT⇸=V_Giö-/+`yU,_0Fȳi0-% y/LBoKsw#n.̺iY% ?v!QA3NY+O,]눸OעqO;GIf#^J]Gr>&!3*7Wع Dm>ecٚБބ8QV{klxvi7/ⵐNعKbiG|[Tq)H"TzlӢՄ*f'=f5= ]})D]jX&^?<`m?h4'{יw2szqBwr Mb$w[ii:SPK`w_-8p (|fݒ

Ү#Ɉ8iN;ڻJWW[@~\PׄKuVYԺ* Jr}H ~]W|Tnt}2=s/=ox%@A!ڸ_#.88e 8ųcI/߃K!Mw#%_X5H|7oLуOߦ爖T(yĔiP z*l%˥Ξ7ƅeUMn~$mޥ@K[ɮh(X+ ֤r܂l;=cCY%Ր^ S/v~~ҋOӥL}ԿTQ2[NPc}Qxe쁺n- y;̈; y׸q!IPvpCa乥owY8zA#'leSoWBହAלJhVWsS^f&r+g-rU%ps2'- m[E'wlk,#X?c_| 7wMtY^^\ǀx.>J|F4,*#p* m'm\^t1$zEJ)D5DOd{ N]ܚN*3+xr7h!eH*>HTo|]L*KA&<)',z?2__u*9=9:C|};0]JCF&[\-2>AP-G hvb4!ѝ(AS&H/od$g4cǓ'dҞڢHnd|_xr?ϻ2k>t$̇}gh)̢5iAzȠd.4)WՇD:NY"QzႧHi37,LZ#a3 Buޭ!t>b+VdwMClO'eDwzׯBt[G~!ú.$\~GTo\$n QS-VQ\S(~v/_ W;XnwsC O/tj*k/>sn/;>oK#hޭ }@헁E9=K&y9%/aw*Ǒm( }Ǎ#1p[29 ibAr(cX6ϠڬQ:7Olc_hsxp<8ڨ>l?TF@ rF.zP2H`4$KJR^O#K47'yDuMY?MM#8nâ8^'CY~Ofq}zE@K_O_lQ!qP2Os@OM)&o8 ϓ1y/WNFRja2uºwARF0nhmw>2{&Wk)fJZ(6%spatstat/data/spruces.rda0000644000176000001440000000225712333041776015246 0ustar ripleyusersuOpSU_P%:B--h[Qۤm^4iYጛL L4I*7n` kdㆥ:ˆl7ŗwߕιsλᄒSy^/?^7OtZZbCw >ۮtͳZ< Nʉ/*"9{Vkv DT}_Qfu5 F&d<ިEj z[o5굶KҨv:nqz6ݍVMJ`'I졣_;Wo(yRKE?Lx Θ2 ~߇QG¿ |}a};up18qo3 n׆W4|JܱyXϣ/3 |+N_A_W賂xsuПb,ԓAGӹyx\JysO]6G=Gz~ћ98qѝ# o9(At&^hsWu~wu7>GY׹$%Q@/ ^ }tcG;$]c~U{J?s'I{AAo5}:!s#sW&_a_DIYω;/W^Rv GEx_`筵i/1l{V"o=v=ƕ؃o[aWOLK<_-|[=TW\>8s_wN./>si@J9.b~UYkV;1< *j<#@spatstat/data/demohyper.rda0000644000176000001440000006531012333041766015554 0ustar ripleyusers7zXZi"6!Xmj])TW"nRʟ6(;ShgVM۾Pdf)H7tF7)?qi pGoA_ gs?uyi2- m6RO{܉,E7)mH.rB_il:2)(JbJ] 4#9/q7':%l {lk:ė!-oJe-kDW" DZ|PZ}R`ImS)jU=@j('@G<8 HeC%X^+)]мn"o EP&@dHVR 5ZVN;/*ڜdH9L7,C?Ё>T3aTT*?B-sSW\ Wi㯙"EP>5 `9>'t)҈=4ZJG`); Me|N9H{)ނkDzxZt6* 65`Akk(ZFЌ6CyZҀ+V 'w ͡z.7Ͽ,B8jؤ& "|7,#yR`C= ,鱑U (m 66e&̓w+"aSЄX|2͟+00b1TP9:&@2†ܦxfM'K;h6~+^3L/?Ȧ&-Rp*, Ct63b8k(!U㪨l֟-/.y^8LL9߭#r5:sXZ (cNX85ȥ tgGcT їrMĩ@; 1~< ,qֿnZN8}[ДADPmÏVJsѫ@+R&Ab7((0B=A Ze%Y㛤MCWXM W"[,Q Ōqbwn]_Og|Sޘ5i є{3M9n8+ VRD(0ki~cW9RY4¦[^IsںqY##A EL Ps\j2jZo8C`G,,L3ŒZNGw"N$$6fV5.Xx6 s}Ό[( QzCOr@GX=rg=dJ >F{RW_#JbE uT`RZ҈;a߿j6IAf8<,4ɋ#Oz. b Y%8ᖳbc߃ 2L6MW]&@E%ѩZ-68V^eT_GS)i%جLރN{'Fd/j9fEl8*UfmQ" wE $_ JrAx9FЖ wS )4©mT:\\ qi3T/=JYmEx*37o$(GιqUXرa:O~< #W3dDOK}m!}Q/ݻhn33cl=3,I4Ot.>؊}W Z==2JY 9;&Pj !, ޸M\qOW DaO l8*ڍiwlwý>aS84[ō"p}Dũwx8)x9m>c5: !1gQ2ң^oCT,0*h 3pآyvůaJ/@O !hA)F)Vnm`yH3& C.2WR_|'hKTd{,4ݒ͝(1'^4~3 ]M]RoKU<`5AG2ܓGǺjSYx8)/VHfW`wl=LTGxAsa~ɭ3g[cXk|ڃiq:4ɲ0sCO3.`bzxvdAs{>2slCY2:V().0E(S4$8%3֐.0.P'[bf ns&σ!T@o}ք4؏C]V7˽BxZ R>n:r4EP ϸ ˋ1׎W2rO"R;P(. ?c}6kk:i6u7t&FsC3'bBH[*W9r_,aey/Brլ !/LaUSl8G~V}?8NΏ\p|\H Ҟ2o'IQԖPQx.&q¯kA}o{5`b̄ ޢNt 2efI*c%"uL^&YɨnK*nooE:4p/Tl1YUN?^~ҋuJ P0_xKFquu12!S!^?ujT)*nϫ$mv樟  IgT&%T7 ek-fȫ=D 9E,PN>/Y]K$G݅8Jl?/%H\h!hjPR}Y%UR#E`sHzn_&oZ`+^AkS*qi ?ݳ a/c\kzKZzS$]?]X;Cܲv%!# (_ *`K%[u3\JPa N"Vw h+JE&˷B^%Stj(͑8'K{ ury(f\9.l0D_`KȑU.LXI^8v&@JVG~ZzjWOJ[N:K2ђ8uמ|AāL;Թ2Jm/=xJĺt=gCTwO3}9[qɱ7=1vF޸)+AGI 1X_5>+[}5KM ݻ;E![1FQ>%[MB)* -5cAD\U+!H˰_̇1ksOw(,,ڇxll=AM@'t} 5PzK蝞ᥘC}/ԔS] ;3Ķj7iBb1k|9 MUƷ. &{uc[@-WN ; d1uA#os.]Ȩ1='!0xZ!X!գbcV8G֌,}3g0<+]9a(Ž.&?E56 ]-TIi]JsD{C8}8EҜ(c+tTِ MV=2 ij\sͳDQi@mU\ӒfN2 R.eֱ,zYX+r Ƀa!ZjfeyFN˧*%L3{ca$}"7dރZ sU ; 5 m i*H%/ئC0Ү1>܁SW#en(cqIǒϮzNsڗ}Wsc֧Wg|4. kruQ6W)㦧64lEwU@(ٳ3Z4&["I 73d^m.D)nfk5c}:,IMH5.#@8LQuKO 4i RZlǃ@덵+{K,S{ap4b8EAk+Dgp44(ޞ>ktVyU=nm/|kv=% # '_a Ԓ9ɧ6×؟h۷ ɦ_;a֟sS w!δ_#a,J\FjRPCW%0aə.UPƍdA~8fӊ83x;^GMnԨ,P\sn4%Okw5cW=jJ r}668 *Vq^ۑma( T<d 7˜Ի t1h5ltܨCvs֪T7VS̋0f6 ^zυ#vCU++\}52$TW(Yp9,y?Tb/U'p@TY T4$8yXQ C)9mߊxƜ{r!1ԹoTИbZC.^S])^zHȥJMEHpvp`Pm[Fc28l OC6BrBvx -T*Pr:w'{^o!rj _s/p8cS)K;*/u xA32 7g?o{XAة)C t8v"6B1}k{FDVKR7TVwW.XQTk5_'j:Og`Nm[,ѐN.V=h3c!m9)VȦRJhCɈč#g}[s=7(S&%>z*켴o.ϒnIΎYY7cJ@)ӱE_.hɪXqIC{-1",=Ǜ|[o ~`$aOR#=6^D?15r$<L'Lf`ВMpAJDlU;aIzٺ,;OgG~i(.`?rqn]q4#7'q_][mrDE٫7JLS&SUxؙ(T[:+ilbo"';s+ b'*gရ.pj #%hJ}.NHdķ?q[ {ʧ`a̴0+>c_ 8J3Ńm( ^I*V $OCh+tr:` :yyy# )T HXA͏]548tȳ<@ ->SGXnb@N P`XYmdPQ-5g1pm:GIaɢsSqQG1J\hND +˳:ca#x10 R|u씧w[Q[EkqגOcy{ V`yC1h``)y֒PAqkY}n78lvKh![i@CE_*OeEFZ3ï/)"A)5^8;ɳ%ȍb?U54:2UcJὂʃ:=_G LjaE櫖FϜvq>s`}&59i/?X2o]P v۴DqT:o S|}/M2 5\` H(..9`.Q+8vgk" hiET.mz+n p5&X3a?_/vrYSƍm1Π^k1tx`~@lRn.cPr`f^NīS `&q f]{)_ӏ !umیv&.|$ě/<0inu!qϷ&;K 0 t:,!DחK( S(fL?*lfVM#t#~4X2H&8(4K^R+hRDxR [ qѪSh[F$Wv@g"m~HR߮dTG|"uں3UAp Dg %o 6"-y%m͙ME4*lZevMz9x0uf XAw-'$pu=|`;HOR52!2 M۸#츊m"7Jw~4iI̺58•P^dT&)/*c}ObF^#J|`HËm_JD_p)U\iT1> m<[Џ'yȍبۻh+<5b ;]yS W򮲜ftۀfVR+f:M?"XS.Ȥ֤]4F%^{or92oLbvq@72lj:mBKSw'OB-fjF:Ne  J1|FDB b_6,b&~$RiL!eubn"P; gtYw2VD7<,:|o}y6jܟdTm?3tJ}_V̇cu j-e݊,%rC.Q/ E7ka 9(2B2hAfjh!Z `|uVbUՃݖVx<[1-6RfD.9[@1."_XR߭⍀ݒp\#acykj+/V`ad&:ȏgX_mrۯA8Qe4 b ߵ4"✣r=\_ș!G30b K^g%.6A-4"deV?s%x&In.SfQ 9%C_<X 4b"Nlk@ LiucթC CIT"µf>.8ǃRyI-iQi)oY]`w? iD |$s*lLe0<ݙW)!hYFtmY)t9A O셑Uwc=41 ETQvq]n<j~U ?"z;>JR&cCֿC$G]$E}"8,ZE7M#AsPvvk"/LC ҫ>6IzXgH/C!`!icMQdIO 59ޡL$@-fh'Jf&"&p96&{/~;_ϱIt&ޱ~\P~N+U>>+Lg/H+٨A#ZS8m=(oH_Q -/h" fMBX)O^\a5Yɏ4Aįpg vljym2VIq"}?joQ-Bk|``N z.x=.3U[~+Qkp>CjcV=|HlkҢ;t~ N6ɏ- ) *$s}a0 *$<1 F/s0[٫?3lY]wh&E#`,ۙXȝqGv#*hi֚`rP]T_ ϝdX/,ns\@kW*S1lVJkة DS~Yڂr2iQGyd`jU 7M,'\ 'm"`Qzg3KHMu_{&gčW= %,lUt$M#\^݉nUYx7XߜCQ6a/ k$lkG1eڠǂSG8T\ˁFQa*T;s[tb]r{UWPjx\L8A=ҺkzȎD1K6(&#yӴ֘ = `  =ǃgc  !~s?pcezN >t{DŽ iٽ}P!p5|hUy%nϙ3KUNQk9Ap{68Ɛ93OnԷ`R"\fKض<'p B 6Ev/&]NKICl=v&$Izj^SJ-/5by U/_PP]FN_qC*?hxV]_㍎0U?uHVucJqwըJu &?tYeJ\le_j1O+P,غܐU :~1&@Iz`mVLk-1 @p5nJ$PNLΜ*(XV][ɠstc 1'8OWݸmpRf0-2h Cnfn{<W\gLdN8C]4Jys%'R׮||9EH)SQ&M3 |[ bt5|HI=h&5W,bsӜn!| \=\i̕G#;z$8v]y }|d=SFfVyUt#fT: oYrVK^0Y[Iu̪"mfc'su/SЉT f[w<0Yqg`_Of: K#{rФ *he, "&ڭ@3N+|/Qca98 B mɤV xb4f\Là~ 9|'`/ٺJP^=D~wu6^n16 t8kжkNHA'(|Bn^(_(D$Uy6V6 ]tgQn`ż!{ ɡ\XT73ʥSZ%fmY \r'Ł^ΑQWy?<<ˍoxuxO?/y~Њ}PJAHg'Cm-&0:A3""0QGwj8%`o{QmZ\4)f/b@ b,-)ZP$?*2> !0+cItkL6L8\lkTѡÎ'-{,ݭđ7izjET+BF4M2c(xW^*[$`g2Ezx;K'wӴTv.q̷C} ^Men)@LN󆾇l71L:o58)ڀ f?&@ӽ~~i6yҖU: ?(Ioe5$@oܣHζJnjYiA(?t=3G:KScNjyh~w(2o0qK*L:W*w6(g_HN%r%)4(7g 9W 0q9ׁALM5EDZ/s&{)ZǠn3TiZW[VUHør{? vKt*}RWQ9fj Cw3q V{ZT]fg"M]0b|ⴽ0ޮPR&Dd`+|Q-3V-9S" fnZw[^kESS>_b1LJͼ%&Zk kCh69*θ!THBm{ R)7V>NZ~2XT{bkU7GEuŚ Zpp\>ݚl0ijx0L`ۘ4\-.YM7r[et{Sh֛Y 89yE2XTXрuWf;گiOf[x\9`ֶAOu$߅W`}ŹY j-00)SD ĤFܰjd|N8֓|-Χ5'Ʋ Wnk(%pȄ. {V.V-ߑQtH!Y:uk="aj2'83ޜw;&=M})2:|j- vY>VgU'6LRp@%I0pzIZ@m_|\&u 7!S-҂h+9HAYS!ĉQm>"֝e А֜N \FՀ.x*fa5+>Pϕyh D2_.!Itvim*O7fw%ɩrPVWgZjr]eJv9H..+_n76 Ȋn%)5j|kS4 QEDߣGՊJ Cْ^#vXg;S݇1cҐK85ѯ oTd\뼌H@\M(}l4v/`u1UJ)XR jq /=tRs*oEOê@"|Oke{^K*Z;?-k(vʮe_<۞mtC´ƶW$6H obVO`qݦdx}(' +aPS؍20YK?Q ?`UPD@r/nf3Hji[|Xg\W-eb|ZBd{+}8{p= :gJ\k CY OKQCTѱr Oa-߂T;hE] \|p)ι~4/%==Z܌f& x$\C{H4,7+zݬNr=?(J(R;P_3*] 0O喍 FOD8­:;)RSULCu|LG){9/6 -4M+y Jz!W3G'J "M|->La)5I\ѡDɹ+BRiZ2\YGL͑(f%t+^Lm)7Zʮ=ʧ.栓v۫ *ǟ鑿Hw$ Dr!Q)kvnF~"b+KZWvQϛ Ej=wjwo|[HbXG,#HD-FA){1F[a !ÓFϓ['kmCT=YL)kyp/:F[dOOӚ-^TCκOGD]3A&}[WO$$]8^kU>g,]+;RFY7=!h( T.,vVbRbb*݋?I =B6foo}U$E)@:miQat QTjXdvw,h>ߥ0ޠ ךSd^?!B BIs,܂`evkH2Fbh~lw "pM_ZFSٖF;xɂaެxi `6)Fθ5?ypp~|0(I?1&{JOQ+ڴxa3SR)ʻ[wm| E, D8fm(vDKƱ_9rfŕ`XwI<]Smz% N(`*E_~.o~s/F*U3hf%gDdL61eޗ$_ׂEu.{yc+`moLUSEKK PSչ6Ab&c"z~-^*=dί1xjĭﯢm#7uY Qi`W4M\6 % ;(H&j0Z!deD`@֜_%((,yDĈ>D#쩶{d3SSqK R}5fD`ъ5O檤!{ze;z YY% | ]7h38]$Y9uUM৞P69lTgs35Lvվ2YFc!ɾ.=Kbhw[&Vo4U/E9K. ;#lߧYz9%g6[D;[gryӜJz7y0 EvjT2{ƪzyO}1Za!cϤTuE?Onb 69tw|(\ͼ Yvjim3E 9z +r%VĀV%D-Nں N\z+B)W4T-} a|> #lMI& Ű'J%,6P#&~* 3< U1p(?KL PTDRbfm϶ZNAoKĔ 'Iܭv?BkH OzjjDK~[BDۋ14o=0N/eO'!M_%Vnja%m^vv<6v 'w!52Ɂ^s$24Q6Tomd25cHX N19FB'Sph7Xy.(\#{Dvu$0a;/D?p˲Yc @[g=aF%.(Hp%iDLnHlGgC ?džjzjV|2 9 [p^\~540-Ea|{X)[='!FU`|KxN솑pWVrVWi BۜQYȫ?>DuXV i'Dݻ7Z@tHUMf?3#,[wݹ8v}Y~B9 *Zƶ]n;NRHVA ޛӪOܦClEujNu8O.dWަROɰ8W5]++*ڡCbcOV{%n#6Or6Gr}lhja4arGzNWAM+d⩱PHl.TnbY-d[,jۜOcPdii;hܾg!.Hy8,'kr4Q ZzU5$b$Wϝqq "6SMt2X W=_~Wذ?LOѢ6[$O۸¬]W[̶ 4#ؗ7,>kfUw2.X|Ke7/ۘT[6'r(ꧩbpCNN%qV{鷀Jn Qg'DOD*![~AZT/mVl=SC$lI7!1>\a \=8C@9޳o;7i 颜Ј iQ]uР PHMn\@Lʻ1ԅF{mw[aOe5@8h3)ګ9/ vr‚Rǎ:/%%Ćwס Y&UEg&pې|\S'(n=L'TQ o,O,tɀ{o*3NFpMc<3 JE܀.i\"?fTMѧ?(N *0yȂA2ݢ5*F~D+ͥNm-$$]m -i}7'=Mse) `Y2e;0CHV {ZK4}')N(DLw>=X8 AYѻjX$2{EKc\{DM!hcϧdZ⃜a/x:*N搴Nd"]+'{^2f_JJ$Rj ;m-V75J.k?Zdf5y І;G7N~pެti=k=,ټΔ'a__d""EO}J` HO(`/\{^q$d'̉qcc5"O,V'Xm7  _8{)l"2]~q=5׉<p\G)e)X_a1z|hX=' ӵgDQZTJ@ϝu$ΗܻRwxCLYBmZ&sh/jg稱"6B_Ζ+;b$[؇nFgk}58PKaG:auvu@5حdGQ&ŝ'Jg2o})do}$&E-!>M?뉺w"l"W%GOT: lhz)2h.=OLP}r(uH'^XsRO2Kd{{@4K̀#u7o멙bW_iu}_ ~^icuK<3C,6T黕wisEt2IRRT8zoO.@lʡݯL`'MH,5\E_1j+kR¦ 7[Ã/L'${L1o:jR=Ak#Ui̮RO8I х<=yEX, zDp)bI5_#RUQ﮾0ѧ^g_* F3$ 0! s"1F,!u-P ҕʩs}s!7h?ozB ^aGc0A|F{TE۱ &:e#*0Y$hJ\ sk~3X&}r O+v' Ɓy#ʷ'$)l확?:saE\2$^' T( h@u5򃽢d5j2J V@}xD=k! (?7 FO',;4D|G54BAICh t9,(FdM$cAH2(EtIl/}ls˭;O~$%*vz9O;m ,Eaf- oaZ:7m)ɂι3{Y3 pK:!|\+ 'I)V9mMENyM ; RLux#j˯e3ݺzI0uyуw0)GTߥdֆY/%ܥVDr˾A+=MU!K+a@:5KlAyrsre 5;6Pl[09TVRG`佺 ~!D:(?yO8c\E$qY/ޟnclqa?as7s0{xe)"tOQey 6bU;Td7eJ֧6..Gw//iIRQME,eLP3ҋux+ُ cXy;U55 B&eNuGr_y'.ϝE#wJZ {*שX{9tӽ [A,H2f*V^l/׍>iqѰ:W'ل'=`K"=dC0 YZspatstat/data/letterR.rda0000644000176000001440000000122012333041774015166 0ustar ripleyusers r0b```b`f@& `d`a9%%EA @.+ IsT%9| s.p7\_wg}n?Cе@'8gAj3x j}e'XF80]q*fpp:0CÍ `NzDJ4G<ּbh` 2VPKbQj" E?.(8BhtqB|hS+Ps2BL/.D3]}L@F6K*s`<;Ġ<< h@qBlċ n )DC&9o ɡyCk!i\ɫ㐍qgTrQ~\W"牅1r/XO@Ʒ< O{ugxFҼlK)F`Nc|п}6y~EKqNc0Ӹ_!ȡPC_ZN^Dy,s&N7!(\|OY{8!a|~qq㓀rIhO"0qjX[|X\. ~vcq¸8{s!Cipe1~ gmUOBG82|s|_=L]_ gz˟{6r>/6y_ l}"*JkW 4A =yld-Ϙi2C:쾤&Gc|z}fޢWN~cƆe2{S{!)~sNҲ59&azu=F$.jm߁cɥ{i{oSGfBڵp{bo߱&vM=ߵ$윙и oC~kG:Uy\DB?Zn~eJYKqj^{?bj_B&s["b,t8^SsD e [ΫǢCkAwo@5NYPFU'yaY=r_L Gmm8(#ǧ,{}. щUΜ4QE`n Q{24-Y;=t2oa.li8K:yh޵`X3v{6.+`22{a%Xw&ŝ։MڗViqƷI`KO h47By@da& т T62kMQPjTg^x,@⿈ӟ5֩p &^APPָH(@y 2WW+RADya+ j%¼TlB-XRT, |C _:A,kWɷ--jƪ3?\rh4}^ p^"fDo5E$ 04r5T|Q=4zNs8nSyr<+zFcOcw&`_~\0*}?W6I<.t 8cw7(!&ʉ=ut)ZZs72Sh5:8i:93ifQ[=O[y]qRɴZxI1K)ئqihMy?&owMXڭIXH30eFyW (u0=.ƶ[JARqX6Ìjd%Wd6|< 5at+ @n Vq˱݀-~uE0v*VMޯ~ R_YZ zC{ڹ%RGB7>7Dv`>- ,!_u@@޵~Ľypl>O.ۘ_0DD&jmM 5 LA64hFA2244z@?Q4d444A =T`}RORxfaD9y5sVhMjⱪ-up)C1Up'$57ZIHHBKcGdDJH0"PJ0/ṀqD `"iUJ68DPʙ)#-c2YL&(Ě:pח[73]ߠ 3>w/0Ћ/eޤP4Lڤ iVj"1̮À.1X|zaD.RcDC3ү:e2ab`²1j1.m5hIl?|0v,/KL`A:hXiH4)*FBx(j @+DTDd1YVYVC*lmjejm+ƥm6mLf-lSM]h4Im暙TmIEQljfکcUji4e>G9r1vz:}lU LGhR D1*JL}Q68$hO'OPJ܉bt6 MOf'D ؉ȝMM\JN&D N؟6'DONOO ۉNNby\_I Ol&Bl'*UU"t*'`Ob'q'19JDwWlO`L O DA<w!;rN5O2'O'A9T'yOO6uxx6MpO#& 8Ϝ:aQ~~f3 `6Y(ѢDm/?7!t}]=I% jƱ&<)0'lwn<6f8H ẅ́x'Ȣv 'q*J0MDDuhMO,'P$ xĜ(yψQGg[(*rJ$QPԯX䜛捧F˄q>o-s~'/KpNF63blj0($@>6o9=bo(T:QC%ZfK Z+ͶڷF֭_E%"&*#BfABRL#H+1'b*ġғ` Mm7i5ԽIttՅ")DĂ&d@;, CO㭙o MV>aˆSٕC:K (=fQdĒ4^v.\kv6oѵɢFF0` LMf4J4AFIE10ݎqD3"au#Um%(Ѭ 1hF>'{/CH6 H289gWrG #9RtgrRy2Yw8A!y93TZ;d@ie"P66&ějܵ>uIQJ&)H LESMg S:$_7Hm>'ȋ"j0'̄z6 bhJd]BB2b4spatstat/data/simba.rda0000644000176000001440000001447512333041776014662 0ustar ripleyusers[T_AF4b$np1ҤCD[P ""(HYz]51}9N; 3wڽwܹ;sVx<ϼ^oVzFu2:IJ_ !m׍g :'p'S۽NM(g㏶:;8:{+V.wsvq5R#\L_ͬtXQWLx=Vɛ3?썉n^no/G/GW/gh:3lᶾ/ov-FV8x9]Q'6 ze2XDs#^ c"1BBs]LhEu[pwgo?V.^NNoY+Z^uɔzMވm=[+;rFoaWPRI_o[/_M#\#}|]TO[AP?K2?s*ʝ45{U"ݚ\&(9駤:Xe/^Ӳ}6^ۆemVri{5UxFA_EmT/q۷?auk7nHe5|'?%ww&(zs I[,%\\OBrob&̪?YO|w{I0g~`~RN}O3)hQvل_53U7fbң;:<0\` 1\s.?$e]Adhފ%Vh'k'(^Є7f~ #\?A0ZjIXk i,߇<ÂܑGfIy4ƕnW9]EXߡ} =,:Òlt`+;Mfp%ʸP1˶"?~ozǎ.5EZ SOp?F@З("y^I؏Wr𶘠n3(9r?]6!?􏼿Uj>NHzC`bCWj@z*Na=2%N3~U K!}ѝaݮ?F|t%'87 ?pA~-т%Ho\Jo®g/vzطh+9.)`$/^Q0hC!y'ï %4*:iE-+?ּ(W7WG$؀mǮz ƄvnD\Ȅofai"b Z B<ʡ@շY /:" ͬB)8}6hH*U;3 Fw$Zf+z07E2r9 GpŏF}]< ~.NL!X ֪v̍ڠc]ib3<\5{ ėWFvsqÖ}N<)y[ D/o8'5wy㭻dG:,豑\\.rQڛCƐ>u|۵$/x12=/%X1GPq`@$-.˶~\EH {cK=S?#xn1w?"{i޺CɏfmQy*ߟHx_\'8OC~{ُ%yomYc:6!>i+;^r)Sw7ϋN~ ѓ4ܸ6$8@zK6!Ru[[|ݍc™7ZGr"*=-_GCח=yd-W_̸K_^8f8_ }IH#o#Gs0]9^9yT}MS_"=g Wy2=1 lsRbeqy5 #%l&^%>U}=N*$4Dj?ܮrS^g*$r#-#Orq 3UlS$LHPPMm bdAr¥*;ﲯOw@}zqo%s7蝖|`A!ѥU)WMV>&rt zJ%₩W BfdW;KPhf{Ovŝc|^0W[b/Zyk7#Wvd?$pEg[_Z{~E>֥`e7vz~t"B:IGdOљ4?}Z ңɨLvtjN[QmV.mCxi0WG}o *&¯]$ٻ/5 x^l'\hNzx?IS"yRI"b=znSxe_B~h۪ߺٗğ{t3^5%eW/7=}n"X ]+ƋÍt;*%vJSM\H>D|[Π֖'uN>wďh^AkL 3ϸVp"~)ý1"HlTEVf|COZMC& U c)΄o#~R2ʗEиbSjC}P#EF͐u j6]陑^>l1"QK:)AX$-"E4cVJ }#Lz{&0t A_A`t547?omB!;VL\/D)gln(%0k =*ܰ%2H,J+җݠo݂֣.=x;=H>Yt+^_U~$؝˜㒋HobvVUQMI5l[Dk/ސVKz^yHz2~CyL8jK?JSI דQc}&$]7 ʭgy Z6&=M{/!f#wz6?Z`?DOoO37!JIxlr6KӼ_M ?"$ksL2p_11EFo3`L6Z:q9y Q[*A9|/.U )Dr/mNl=QP _b5NgS~4.Oq}%IO!t5>d_\#TB/~spI{WOyxS$!?s൝1}AɛJxѲduLϏ3>[ʎBDbב=nuzI .=%q`{}INBIi_wM#ẓ3Wod櫉.Z/ :gW&\`nއJUwCs*/ dܾ:9&V./4_OGQzFaU?.K!%Izn8r;R(̋~7J+<Ep.h? ʔlGbCPcb驚V}Y(V: n4F77oD &@FGDt&;_7'{N'`MxpN?K_C|WN[Ih&xW4u͈})q<3UǒcR.-7ȿ~6U=!,u+.-`}iB>_B'ucolP/a:QAT͙ei2#6uӛ6M=ݑW [Gs]_o;5~vwT,qG%4~u W;cׂO;3@]zޱ%`yN/x~ v>nvh/nԻTc~Z]… |xם_c;A3u-V@^x+ øt~ּխb'E;9,nE\y"NVZKLzIJ;d `тE 4줲Hg"e\m*FGN/970N";e }~N^iS$ae$vDvCprB컗__d'^ dp)7(<˘,XR"YUn՝e3@4Q[>PeLj<'6=] nxJåУ^~`Gщt^z ]E#p]1gdܼX3#diEEc/!޷9M>h3\=U{/ppq |'sb},5U;52GqQ|5`UaO{luRnp)Y:[+ݿoJkw!=NnWY \i>rK]ZūL;ONjp}oy۹)ąX7'dg 37u'o{8tV7@V|K,⁞ʄ^Vڿl;X_ھ2oƍ{Ndx>eW8g`״Vg5:ٍ6gzTPGm3jt$Y]8UFf7 1w ^vó jy)YEB`7Y`Z[PxÛҬf55tX*jțҬ1nvLȄ 3n̄%ʈo뎘vCX4#, n1C2bAvEL!eF)Y, 9 z .CY7Du#L 9_IߙA ݎ*9..@c#b13j"y}eeޕY1znifeo`eVV2~v=L3-˰,3M2.{bxs7i#Ϲ {(/iWeweb[v{W7pRp0 Y~5}fg汆58|Wu7X8iD,Bىb'4ݎfy0`8,YWnj$vrXή_rcv2L2`u9XcݎV{W׃u;ݏܾM? !.IC?uAXuCXz(vAXuCXu?t*Ƚ WYcc1v?H; ozW;;yzd>s26Pk?sX4~u>p#V0w?gc|do)K@spatstat/data/datalist0000644000176000001440000000125212333041762014607 0ustar ripleyusersamacrine anemones ants: ants ants.extra bei: bei bei.extra betacells bramblecanes bronzefilter cells chicago chorley: chorley chorley.extra clmfires: clmfires clmfires.extra copper demohyper demopat finpines flu ganglia gordon gorillas: gorillas gorillas.extra hamster heather humberside: humberside humberside.convex hyytiala japanesepines lansing letterR longleaf mucosa: mucosa mucosa.subwin murchison nbfires: nbfires nbfires.extra nbw.rect nztrees osteo paracou ponderosa: ponderosa ponderosa.extra pyramidal redwood redwoodfull: redwoodfull redwoodfull.extra residualspaper shapley: shapley shapley.extra simba simdat simplenet spruces swedishpines urkiola waka waterstriders spatstat/data/ponderosa.rda0000644000176000001440000000334412333041775015551 0ustar ripleyusers}V PTUDHfQKDD)$+,,:ew]GM:bf2rk125232Nssݙ{?9eaXF_φj ָKQm`Hŀ:Nl/[&)ez:w(V eaP]TLt:몓d$ z$W@1.Ib/yj kzB\xuB  f[`g͑37oWy1fzDs,h$s1CS4c1_İmN;mM|t0r2x0ye eSʙ1 Jz`:H2+{!wm&>+4X^5;ˇFzV {?D֊ĝk_9Km]rC|6zq1m1bm]݇*~ 0zO'iAZadql=gP2oaweͭx[0̲ʏd7 TD% r>c7`P*brr> O _^G^\+M,E]+5?F9Pp͢+XQqTQXk_Egf,a+ia~X6x`]DگPְiX>C| 9QuJVzi[YX?q\ i*רa\5cX2:] >xbyC0/= [ FrXLXױ.؝5߈_vͥ]]RhT2ԚFtzlVAo'8̓(ωO#2}61jb,J\p"ܜwsC\i ˉǕ(8VX`{lcDwT?y>-{/ObFg*ֿPQO[æ~ ({U"<-ʊ0{h9f3n"{%8P eF1/y-Eq|#EQԧ ~^>൩/VxVޠPPmWhz6Sp"g`)-\m2R.yŶ# KriA?ls;V?҇ս?/k)*~!]i<o2o[Cm QqIYo\ʒ0o~؈lj!W<^$(_@5Cv CNÐ'oad#K+ei5<!u!?"Qż>,F;Yhok[aϋe53Ujrt7S̴^eФ ç+0c/P hﰸ[n إGw+Yt|3$.ۊ H8`Ρ5*|eP 5w}zz:{]G~t'l K/%ISd~1~J$ '5kS]D y!Ux g]'tmqT' u..d#Zj1D*&E%"9F i؈kJu'dU:Oǫά:I'VCyT3U|ޙ%!/ naģ%$3:U$U S7i.EBE# spatstat/data/nztrees.rda0000644000176000001440000000103712333041775015246 0ustar ripleyuserso A]*i"pUDBj6bsͮ]_ ' Z;J=V}Z*)A-㫤\5gŬ-z|o@oVBΞn<~fcu|7[݀N!E?cZS3~Sv]ppg+0+Y',C,L8 tR V /3A*&'vi'6S;AUzN f!&OvwǕg{}yH; aFp N8M$]) tn,=z9-@M; ` >'_3|:_a;Z܅p3Z_Sjw ̎N_ \;<Y}Go4Cf%+au[jccOqJQDFe a¤0EV9o58Q|5d(cQnXrv `=milkAOT-7{}ƾ\7o,WTbDx6&&4ЗR6=YNEv)kM q+_abx 9ra1? i ׬ TU_\@GS'3[YWqFҦd88C%ƬV+E!6^"|q`xOT߿m~Eain~KpAr]eEng]2O?XVD5!f7N=k?``8WȜxsm^)fuBVKP+ @Mw\%=E4q=㉥\`^OH\fj!mKDmHT D+N( KH{ݺOr$l <9Z(YSEo{/@^h)X|)Jq<: 񋯐7_ 4ڪ]~ˀOg Hv<'YN6րkRvGa4>>(dRb!:ހ활EWq&`lf'W5voӆ2vS\Ao u=S,91 ~.,A#=>4"oOp쓓 wLi$?ClHTuGZ)8˔z |TRdf%oR*@ \ё*`S#d]vAUTZBJ~?! Sh)Nm/3粗LM1Թ&Orwg0Q/߁kn֫6ľ_}`ND,ڕRͨ/ \!Ǜ#`7 [p^MeO1o1vIش^K|XgI ^wM**̘lL_ytM>?#+YBi?oFZm VPK!< kn,jgBTpJ}e@#oQ2K#(GPtԸ(mFWLc{ڇݕT鱀>EP-2Ӗo91~KȖ>賦=pm׾DF"vp@Zqű&Ho?t-UfH!elR6IH{;uʶ{d#V֬)3ϋ8=Lda߽yiHQ<,N&g+`W_Az Hepʶ?߰δ"ڊ rƭxW*I؉1$fW䣝V>WpD,Kl+ܙ̠Q>X+"^Tb'nWigN$Ns?"#^WsX 7i?ˢO 9kțԠ-ߒ J6$̂׳mdKr⓴7p^3gV1"z? xJK79ڏlR}yf)%9Iq߶Y!J -@s|(e6gՓ5:j*sV035u3:.587i 1x%CVFK) c8r!yOCyBj8 *0{^(B [̞;  ốF^_῔Ԥ{74WjkZ`8<`ºO81zU}wAH=?IP {*$~Kڠ>"RZ6)K0gC/YMϩ__r^~e25z[I[W]S %:YlۼzZ_ٜXv*V zTȋzeɥ)aw/5^F,vy&Y]q|YaS xM \>Y9fdGmI")|iU T\ b;KR+I;s5fF6>*Xch&}t 0,ƺjF+ ,d"[i[*n@_~"Af5=> DRҾ/%%ֺpC ~S-x2ncG{"8_$9>{DNiA1cƬהh08?*.VJ$yA3w Coz2S;@*j#xi%χ'xձKH뿇vT-WġVR]WozJ(tҳffuO\ ip8]i8ބsV)3k].G>Ae- @Āuh [耏=Ce@ymJG #r=Xp1e _">Acv" 5;VV%Fq$RH_^^X،VEq7e5)ҽ nf^-ɻqd -#U&j!Hߨ8yEB9fx5JǺ#??rg G wЪ!iy~O+N}߰K?n-}Yn+)g?@fmАKKܩ+ HK29ޯ (AA@w(+:+~j rӃ}XMgNb]NSE;B,kKv l?!{Κ>^Y& YG3:sR5?rhilVqQ|;x(p5gCn6s~/}srNyoz䳛A!MvxaɾBK`f>dfcNjjRчOz0'xF *M_oZ_uRrfe^HLB̡rJ;Kߌ-tIkQN|bE+y%v2kx%Kr-1 mvȿTʶ&6+փ(2 ^`cG%?yOZg!P_X7/[maxTB~.ԅM/+- X֥ y͙bn h"0=c#o!W(gGobJ~N 8KB`5`[2% YPa/;Z^w?j5u RJ`o~1ng-zw !U-, mgݓDwYU+4J ֜M_P9#mtj~.zk{>V*$bGf"df%xM~-AYn\W E9XYM wd%ήHfZu 6IfRџ?> {̀Ѷ#fT<ȱp~ԝ[W8BM=%J`*#eZ~+jz'3#bcnڸn5y>[#بa@GcCfz_ Yq9߻iZ/q9;* lXԵc]8/xLBvOpHqn# Ȇ-C] j%"YR&w;Z/-izbӔK:XRLZ7mǨxQP4u0c $~9s18Fv AFsRȨ~pK` 0p狇H1yH=&+!r47cd=:OE4L;F(Vi@EOzC ތյ/&A ^ib-5 7fPU# $b ~?O']TRPtoP:k7LaqTdKO?PʧbdgST@2 ywigh6Kf'%a#}ȶ-瑞,YoOo^ݿTK9Jjc%:8FkLMHHgMEC q`ecV#5u;צOO;f P܃ʆl&bQ׽jܘ#MSU/ %e|#<[x?g/ uSt3WL 1Ys^pBi-BYF4G";HD[y墰!F k8IwWܨaK#*isq-bö%Wg nAESȇ[5O.^$g_ N9?z1^lKelƵWU51|$3Apbu7KȚ%jK9DV۬u!# x|{pRբ#!#э :oqJw̡}& "bC|,K ->ı%FhA)l5mhΩZ1Źn:~7uKz̥SrI[o+1Vͭ,X_ q j7:;Mλ RTw/:gW~b|:91fhZbqeАɒ{AbAaALJ,j+f@IoG㍠:OӐ,+M (]eF3tQbIZ;˘p @WA'F!q )2{רxz0!:U(P Zs)}}v,VoΒfZL E-m';S?tOӢ@SNxND,_(6 Cw$Z YGYB~ׄj-hռ{T33aj U0G!ԏt|0c[;-%R=r3JkAT#kfʴ%okSTMF[6뼲Bp4eC %PYt #^2rwvlSocR1 V>5ڙtуwxNu}|G k^BRRTYK,hyв\(w0差HfO7&ݦn]h[a~Ħ) u\ڰ^1}$x\O 9'RiBZfge&~ݽ|8X}d8W'[4tcn[Yn#kӓ(!1=܏[rb !j`v;?ȇfmө(I(x1:$6Δڤx^Z8Tm΅ tdeg%tEM9LV<+HGRbȷigoФZ'VhuyQK֯q&"G-бO\Ө¯v;vX ~ɥ%U'wΔƲFUo&>$cߊ.aqʦ6A-P^S^@ ͳ^7-OB=ݵGt" >r, @;*!SO-O![[_<-&!?/o$_5?0s3j sۯ2Xji#H%1fVEmY81Nߐ%^Cqu|] u:Rv[Jd;cm_> t͜:, lǞ u0ܵ;%-cB4Cp}&LZ!Q=F^Ck僽;j4ռpehh#:p Gߝm ,eu9X*o1 k.1qII]kLp}t0%;@%+lПO[A 6|'^!t qߓ.~wą.z6Tw&# 6iى]7ǝAwNx2官%*Rif *1d aIv@; gF 3(QøOI}(8"Vq9k}O:-|7.} _a5/j9ϥ 4eSSOU_5[2*4L@ mlaAotmB`~rܳ[_L?'QZ,w J K- ZE@5r~_Qy(bǪtZ2S٢|nQr*Ot:OgݏS=h2]EC#V[oSrsϬ6sB"l p~], IAs-ׁ-9|p$tȫrx^d nqF6q{NFAh/?,aI %Pph-sݎ4l|WfV5?T )g4ֳnr#%RnYuW+%X&Zo)3ȍj #xCo/DTlۊmg:-?]I%=9[r f,Ւkx 4҉zFd"Aj?P55^zeɾ1 g "yؕ0:q/(ț@6s+* H>i2}:+/mxXOk(yKl+sÿW$Kw>3ƕ:!ڷl3vWxI" jДc~D>tP\P'2Hf'3Q<=H8(>]%^ Çqe`sjZKd%Oޝ;5lK&Y'Za)n'ޏ8m S= qAJlS7Z $u'17d|9jȌicClQ;^=PI`Pr#qe#/C4J~J{+6{9ߥŰOsHf;*ɧkLA6JiZ|s0> AH:F\dlSQKغɠ؂kaRQ dٍ`".˔w_䉗*0<evA^[TkBQ\ 1G9kW }鍑ۅ!<{|#MI5V I2)R<q] r5aBH=83]檼ǺqnaImvS=BaT[]CDL?4QAU}"FX}7+c^hq%ܔS3,';UP^,~YqoO Nq2`x[4/};$6W`OZ|Pfao4%=U,QO=ZL.iS6T (C˭D:d;/rXZ`,D2F 7J'^)F\_9熝N'f !P Wd:dB?H!b=M|$D/[dSO*<}E5۽3P:Krsb)iLP>ó7?5ahmB/H wzVdۙ1v+%frJZGrlAجIC5W$k{gK N[.>3@5Y;>ӻψTZ3]f3ޏn85GDZx+/;4ή \x(`=vN$l^U#L>ȄF埠5gt6h^ 2m _υ*pg&đ1K%|4#2YPV?t@i_?#oYɂE&X:&N‚ 9.69?GUیz#g  (p-Q#`zai"^k کN#fwSyEE5Q=8㏐ .mRQ>0xrj+{9$Ү"؅BBRĦ$Vir]7{-(C#R9<1{7"|K].Y;Mţ] N!T-@kta-ٚe$j7n,l;pʹ)W>Hc-=aVj$G~#y=I[ Ia8qmcΙe J׮WCKO Ԃ8 * Q"ƒ0OZ a 6{9gC $eR|ஸZN"Xc[1`j6X.vPlt߼Z;U{\EW 8LP9o۷63E{^.i@S,8Ia*,c/U&>.`r1`ܐn1Q=49!DDb ~.tTД l%0]\AaS >*]XlxV@Ƽ^iHNX|aF@͖ ^7$DЋ`;;Pg ^e4}WXiaKW3T_yWgDЏ3N"V. Lz_D"&=Rl¶opͲ7菲l0-&k^:lˊ}Ygug¸؟ փ*LmI=Z^q"ҫ?O{zٮ;vm YIzH܍3[ᤍ +If-:^(C!?H" ^m$k0x<FlUAE`3\D.& "-m!}TUJܯ5B䴹d!8U(q'jÃ,<=C3@`+hUac DG검(d=X &u&y'E7,MhF =dA ' @e%F6pnPOAѴ>?я^݂A~@5+X}XjQ2&7Q" zS֝C&?"uLKG@ 5%>!_>w^2*;B("A8[\6yv8y%/͜嫉 s^0fT#ʜض[V);I9o\JhɄobZ EgVXZ{" E1~cr+dژ:fEj~!1k]n{6dB:N VnʍчQs:ƊO/W|Lo!#rǥzh=z]u_S5|WlM-gn1W1,yh*NʲgUvvz|:*d30;m5Ic)R88胄7?bpBy:GR~ޛ\' '|xK0Ji҅({.駂5IϽ&wh ~`${;ϻIw/h5ѳ[Ei*M ;O'+0ɬbӎ--Cg<CCIyu_lHE]}p`iue$ b~wo5j`;GKo~ϟd+#=l:mRwjub{k#$6׾ї{3,5K"Wn+&E EIQs{k%'u[w.ZĸDlbt~@*cdեΚ vPM49),|n#X~ruذ2|,<^k,uoQ$0&[UPb(RO~H }ZdlG/%w;՗AO;),^B̑xsOˢ&HԦUgaaH3r%& `UƧE[k/iJ]"%@". PMBy4TᖙƪkCjc$f :L]!"!a4R Z^*lrl6n3!I8D*]; ȯ!#Ia30 h'QdRaN! aFsԧv>QCO3&dm83F4xy z8^&#| פwӂ >GE.3/0м]\;k4MaX[.SRr{N{P#Vjh|"Rdw'aR0`JWoWti%r~Ev#wkOg 7dj[> JLm<8 x^vCb~ROCLt-U]Q7~Po!MΊ13͓֬ QØ|R[e95U9i}vMQ>^[DIz'Noh^&[$+%rx]KA 㻇YU5\&)^Un!ϭr]햸/IN)>ꇲсa.I~`Cm4Cm*U *@;W0e!ɉ2zƑ+~DuW1南q߈BWRowҭTc{J Pm$!7ݎ!-uí>i2\JIF\< u=7{V25zI߽s.8؏d)~련%=dֽE<\K3/P8"]ү]ggT1ziΌ8(ifWjb.l!pVy$6F9R*奓[>+dzkRL8HK k.75!/Is[QlMOF{vb`2zvo (@ Kz.ӝhws*s\]id̋=~ΐK:5hg;r޹R?}M;k G<إXuQ2ziΨQhzj ukH\6e,PtEtgW$ =1d@forUh߷WnS?zrDhc4}O%R+9rqdܽꍆ^c~uY)3P^2tuq.W;!;)' 8_5|) }WF'>h1W 9 &I"DكOUzJZp'8װ/!aبSaډ?:3{ý Kʜ" 4B6<`;h]p59}u4ps;$ tfzS݇šiy# mJQcV3hB\*UҾT9FҲ*.thm/^td #`o0G7~ט?3zJx3QEP%;LyO'y#!GEZB7$G>_UgSric {4xϜ+|2O`D$q<|B1^!P899Rn[c,|r鲫d.**)Qbkύ\ d03eХySa30GbtWb*m%b{-vN<QDz?dGZӢyrF_3V81&;A*X^^S# 34P^MRDzyȯ|-ISgS ka*.lt2kN`s}>oi;c .&E,ffւ^l.GvfҪN2&<-r=~z06M)g=Ji6Dtn`íaCIll؀Ϯ+apL a9[Ft~cH fSmq; fiCz[\39iIR7~%A<Uez?)t#q^..;(R{GvKVW'ǗV4)MM)4BJMX8 ׈/^r!g1Z8_W%\/LA<xL? %X|Y(#27urrAj˹JQ%Ȇ, 0y(͏(e6W^Sl\'%K5&(r8ElR`bYO>Xm3At[1W_USt]  g0KҳŹ޹}dv);ylnPUen {d+j)e""j<[ [fi؛oQz? ~R,祓s; oUG* a5H:HaI=uNLOihw|z rH ^>;7o}H%P넲KHY/))"97VIyMUm nq=om^t5oU ̩22cB{KruJ #u;)b8ѵ9l-klqH6|PO}fOdA\߆G`֋LٽdgA⓸0D.6gWYIDߖ^Ԣsm Kv|'`b 6!{E9iw\U6D=s)vT&3ϦI cCg_lkhie<͛cՐN}4PtD7оPKp)h-Cwp5 ^Ụ U ;Kޥz16γSՓZUU%m.;޶y9`koK]g J3NLmӍ_Rr #7$*Mu~nYנ MmŚɠbQmgb X@vW$i_ ~!9O@eB[ Q2aWlmyz}]O~Ϻ^tbq6ldekS~hJcO%ןd1F̼~fhFC] YRNkb؎\8 LǂS~Og] +lmE,( #q].:@o=}Q*'d'CH/%~`OHDr8qR7;\@"V݇ .7U'YەKpGx~zQ.(f93OU&IMFDyOi1l1I}qbRMڈ?bˑZ;D'9BpOC&*Sީ>389[V֐2k6-TMqYc!gK?cR?0P 3"NBPd.!@鶭oc烮L覾ɼ =N[I)}rS.݌#{C0AY?1ͥɸxGW7& !wpD嚧مƆ3$z IAYtIŦp㲇!5Lhg[Ȉ"laZ 1 +;h< aMRuΘXhvdm0}?V_ED{Sb^ayM0@o_4Pb8hHo/K> A6Bc61tn(]`@9!,U4%<BBݳPU丕S uJ(3 D$D¦<(#c.adduRpٯIrH y5Uuʯ?W3eEcI*)pyͽ" :7[0 bSݎ0$,g-pX<9{B0bIlC8/q(?(tYb-A:ؗN'A,`r&i\&w]Xvr eҲ_[C6͑QNEp&K  >L3[4|:N\J^iV&$4p~j_8>e[)RW}M}m8|s;C|M6̫l YΤ( iz/Q"Y_LbL ] 6UR}!ia}:OK0³O%xn?A2v%d"NyqB&  E!IMdu'WN頂5 ܕ"40/$ U|(Q/}3}ߠbWSh]~geA)R]sWfP 0`)t a#zFsP_t-b } 9SN#N ˫CLdY(4߁Cs`5dYЊ7ϚDGɧ&:]NTX̶`/ 3ts).zTנNFG vr-(xҦB Ui82~#s kF]Nz Mr UW˿qcz6p0c/=-JLB>%~) I<9ٓTtSYc 1mFˍP/i C34Sܜp8=SVmD?I)a UDPa$0 yRlpnKh$rDž?W@g7X6`!xuG֟hfP{@%ᚋZ/uP5[#'YP0XA^K]R,lVPȋ?ʞ):7o"P bOBAJcεBlj2?X[ѪI0H]LLwĠ+hMiIn\ D {\-%זbk[=$o۟ڦ<)뎆rP6tURvy!OGLG.-+=rz28j4$Pt)ʵKdc$m|sIt*dΩͺt%3BC>J~GR@0g;]!oޡ1u6cTmLMdL?ޝO-U 4-Sv3&,i'u%iԯ:{"ƕ %W|renZbv*,LgL/u{f[a6ҀE} ,֏/&0b)kQ#DB1Ql@,fGEۏ !Jn1"h)~.u 93;Ub Mђs]Pkcx5h%dэR&<_ӷ2 "߿ME5"cwB}0 G(BoVVRPW 2r*v)p.6D UgADhH_ ]gj\Em霯9]ЕZ4Pm뜿'MsPzd;ږpQoʧ3~Z)9dq%"*h]pFOXT "^lu n1FFLgiw:߇ @,,'<9&[Z&o"Tm>:il5:= s8eɋsMav~ `&쓢]eMFK $jW]x.cHsR.7uôP3tD]ʘExE e(/k!N?-H0)l BJ, ݥ)/e7}yJ'I|NML%~FyrBH+fR6-{הIRʒ.lXYW;Tg?OK1۳}I5d7ʋ&K11z "b7rΉ[Btw2Gs qh7N~\$.ГUع+vLKr7L1[M-N 6* 9MRUMi8E/8Y*EbTo83b#4JuUQGpGJ)wa4ݕD}"V:ntSf"UqЇRLtb,ᩅ9k؇SÊɸB* "PÓ\T:'^aݹ+ɸ@e0 Br9((:(w[ϖٻ2W-I p@w^LtƔoNAn)]p쉾oohxpB抢# !;6!N׿_͆gҧog95 cPo ,sv^e&ھ7+kƋJ=dXD}; eWWui] RճXSYe(KG &8jJVN ;}ĺ9%<6 B|({½RUތ|j/B>}Am[B _g1S -X13O[[9yg*AnB@^|0 ^5Ql|B~q:2-2э~g H3G`1%U_UYs\DHFE4D l<Qѡ؂{_w3e[D} J@]yJDu9XBdb}Dcg d:hd(Oi+`]6gi'ߖ= 8l8>!(BkGhE:L,<4A4Չ@p/Ji9X5.*bD~ o'C;lmA|7ݙk)a7~2B -IlK5 1rs0֙ %mjDYR6طH1`P8k\mmAɮ'$M׳̗=;kvHw #}JI󨽌#$s`j<`½.B$𰮥k΅0͕23̎BcJ)SՃ׳S k{KRu:}?pdayvk^0{z{Sf^R'=טnwk,ҿZӞ."`O"-y%YH_>8abB1ڥ RXhQP5yAX4ISG$D-0`цdRd9b]E_ZY`hlAYA)iEĪ51JӲ˰2 0tf.cς*X nEdD b|%3pvK;@pW+x5r)s4<`$Pŝ1OÞ`8J6q93$Mq s`:}H]y}WW\@lҤ26"-5W :_FhL]qS[ąNښ,*J{Gj0m.b1s=Xx#ա܎ sU(bGR;Aӝ"BaʈF8(QuIZ|'UjXO_z}߼^N6"3wm~u 5yZn$OR9fn{gZa1< +x t*D!{x ~QCD#ʝ7kOI/+b"6vŦ($nIyʠ"C"C _}.z@w>IB#m+BMo-,7A\NzsoeNhLTlQyb oyJ%v 1kk7j" Q8JK\7B=֔3qmC颽G£X" rlA Vk~. ʞesmf[0qP8p2zF%Mz =NԌbB8LFIT]҈Ndc+n ;hޗy~)oLb89!e:7Kc_O}꼽 [3Da۫$."]0=S㝒~/͞dUp7c jR D²0XYT׃!1ZELUMlh8=|Q\f@2e FVPrRko1kN("4krF!oPjڦ 5&xn0ݩS*gAD(<g/LbF3|T9}ۏ_a#^ 8g]gvN'jm]͹^&q~ [+f3w+-S<ٛ X.g?oE59r9͊L8-gsv{cW6w[ ևQxF+i[#c;x-:ݩO QẀKh,&tM5&;,䥭s4 $Ot%ұ6J>sv`J2b/D9Wzfw //Olɼ$s Z l; ϰ I` bC Og^!mQ^gPmHFLW<#WۣwZJy @O:&sbFR n&WN׍%PW|#O*!F. Y`4䌢I=}O!8qs3Zy`3^nVclMm:B2f1MY8fwh#.%7/- _Gdו*8_ v#~*'~wFS֌I8@+jς4k{aΜڐ,A@ëpa7USp}rN fܩDn1Ϣ &Fj!-!nvdrYvIxKҊʗ#Ѡ^YM-%?nuj"v) ^ɖmy|v!oȍ-/ArJ\bѳ,; U; VzItD]{p`-쇸h.'L|]NK[? PTU!5igqc%6"ȁs_7̼%ՎNVtRn$\kGWWfh&({Qߒ{oG%4 ?!o &ƿ;Mj5{UqFGf)0B2I&4@5z >6n sj}#L1,[^0O9`y2bB6_㹙Q`.e7fm ? E]P]2Ż>/y0._ \84uE2bNb8+,="2.3(x[ú)E`@Oe&g\[h2Qssc,L<2>7禮tP!z *I#\Roݑ.^/y0IP^d O8 }H/3p)1T \ar-?o+ :>IZPEDlU xTL^P``ڠ,S\~HV5v^WRݡxA/mԝ)d ϳVggXU?:4fU+]os]z*!c\$``KcuCKe,E Bd,&SG%4KW)b %_aŨ}A, -m\͏|+i҈}95gʾZjzoz؜h\KԞ`w$Wt`Beo=-jD2֯a%,^opSdKOL-)ˬGcR]C l2O+9j{=wb fu_u= Q /1!^pdu5*v8gr$럙 U8>`GۙFdWGVo DFϝ9m[Wfc^9WΛ[ =LoϨg0gKs .&DŽ'?X1k3K6Naaܰ\(1})-Ij ,3.Ż~8 "HG&EjvFE~jnxi[E * PqùWQhT3U-נ'Ywm~-">1o{,>p} <$KiFD ͪp9+ <’}"?FΩ,G|ψ_/q֚`pQ蒃Պ7ldVh 6\ش֜8Q 6%PƆb`7ﺃ MpN1,!ro.bf/(4Mz{T,T+$c[pjn3I2Ij ·SXkjF$ä3SyKoeїUSOsM%vz03p5 R)I IW+dΨgWU?*6WU6 ٹW𦽽'+nRYKp׃ t/ڙ>&6Pⴻcp\АV K9iE=ӈg}&3U)m#1mX2Ex(h\~jQ<9~WIp':]ߑ|/ .V3vІJ;]3KKoQBʁ.Jobqp SbE*y=OPܴ6S2lUXߢ\P~UA/J1$ݑ{B T=C~CL] :J9:pA'+.K[Zu ^]=ڸOq Z\!|b;5{엧‰ӽp_v䠩 AԨz\W_ߛ .XyC4c&hi޼!X{&h] Y*C31z`XoӁI Jʸ`~L!IsU> ׭ F4Y:{J 1,_hbq?XNfR:iA$3)`Yy] ԦMbf3^.WEI ;m+61@©P*&EWr^Kku c6'l$ t6Û80`p>!439Ls\{o bH néPe./aHT@85 ԋ$ oڗM]胚 uu8%ȫd6meFB(X֚DA ,ɓ<2 28עr/v -wA@i;cOӇӞh#%-->Vst"WGoحbhھˎ&C+K/,m"]Q![GS- f}Rp-%P`mW4Iˬ:V:e|,g `hs "+o-m2\e}&"\6Vf$Rg1]K k^=6]ԾI.H8.W~6C0b4Ox!N Bd| ey{m٣o) ԣMub'MUF- tc_; ֑!8r#C8)3H+yU`|)br͏ɋjR%=)᭠Zժ39#Eme,+8I$ cF A0yUTQ*;[AL2+qYj{|V3TIyc?/ pao\sg.cjWgGCRV"A 1W%uNY#%Q̙b鱳ngE_˴#$a7P`q$+Yr{J~vP0򙂋 pa]Igǁ&`e?IV!t—'ѡ[fݼX(w䀋L'ipBT; =rMw33tNfBiB r*͚y9I$!Lf1VE(h-Ԗ:̲(T:>0@`I4CQ;EEi`1EG[y}we\c8 71*^¡L4's/L@IX{kVq5H#xR\`I6^-KZt/<5͋Q֏A<DYL[)kCppr؟s-:h7d߮Bv˰dżs1K1,٩A|SP`sE&4JGCF83=s*9vMMdB>׶BW=]!_rf XrQnw`߼J\ALNf9aM ƙ108IBnV+# 0]a,OՍGeZm~cI!դԾɁ#!OL wJvGx5w` !ξ&*v(Ti&g:鬁lλaJVƨ׮ FCZN%ȬΉ QɛEW‰|G2*ȩI&AEEј  /Aa$< 0޼<Ʒ,q/_c GiR|!4ٯ1װH#qSpW/襇 Ez-/6=ɨfd_[٥q#T\X0U- 5~&zj:ѢBQi7tM3)ya¢pԝ~-^|Ov݊ NL@>X.T8 [4F(6k qZzV D{9?*[U!{k92ơְ=m[A\Z=E/1R`GoߔN梞bY{L9胨iz51@8;B{eP3 V>֒! nAo. 5"f/G*eduP.m}E Ҩ/XAPTnR5/ VpE^& n|Ifiq(k*tBU5NOpY?[1 L뀎ۭuqDCYK [ [d˘inBކ 'p|5iE%s \}ߍ%#:^OT}>T0-hS -t)'zKSnEm. ~)ZV!(*5z X  :5av2(ba{ S?CElYM]?@ZP|zt80ٓZ^γ=N{M6Pe"rF(JU ƠJ_X@[R!X.WFMOPZl-j`7@."Ȩ3}D\^u[l' L?,oدU&,hK Rr/L0 JU͝K;agyp'hAƉyxXwh(P'I@*hLucϮS 81>1s} Խ 閥IkbÐn6تA_(zpEKXzOA3%~ ~;CSP~zܲ! qG+ъ">B*T,S3#"`keV5$FH:v$dޗ{ s+xG"ӫ)AGH(&R}y2-˖,(zU5IŃ^8WiN<%͑|P?cGNnkkb= 䰖8EƐ{3<ՎM~ݷFq#8u*$%2Gѝ#V\<[<$I OecV[՚$C jzxc놖c}sV9M,BʷoFpS %,rM H{}h@EC Cϛu`1vՏQ?YR'Ԧ{ZrIkBow4k܏-OXU '3G#]F8 l7/̚O87]gS7nq;Fڎ pGU s{Ԉ!-]~@ z);Qe$$<?O^sMaqׂ ly Ӗ W]H܈pqU\lEᯗБ@hc%vӜbJpFŢJݲ1v6{TF XEcf3!ыp'U֕X? Y`q{r[ _ a(3Y x;- vԤi[LsnǨu\BTzBZ!8%owaN%/US#}&sC+|M6,֬:c,.}w2>fN Ti.HG׎'U|t!Ч<N ;i:7!(?'" z1 ,4ݽQ}Y[^sw ^1#(2>텚+-jkE Jlc+> Y 7K)tL g86 ܑVMO^OywFChYF!̯VO{Mot8"; g+; nҕWRd|#(Ӄ'~(Ū&iʏ`K ޠȦuB|lj4l ng{A"blw"݊h/I-BQJquA{{vMN 7"bT wW4e%UÒXoN,7:V1FR{AYA3@ 2W׉N2Q5Q3_$'=8x RȭcAզoKYRK1Z3}j4NV0T랁F胂]_Qs!,=IcgOL$ã'RkQָ.첻>G݌W \HG+A?#v){*Yؾ=A(TCH(֫ө 4켢4,rn9sP|w(ϧK_L;a, J.l-Fgw1D^8[6X%QysٖNs!PыQN߯9Y (TP&j@vB iop>+Gó:̒׷^AX\F_3@3| VFC>dhS%Q? Ϯ` *aeY<FRa4]q݂J;I#lQE.~Wq8w1aV<O/aʰgZ/{{ل`*]{}R+,-DL|s8gqn;mBq< 3Qu#1xgڸhC/(.Qa5IoIn̊Wb!JU6gniwLqEwGߊpsh,ڗo6@ C ]8uCn܉~ڋT|hhKUʡ'=J潋Bcpg{D_C/$0` XWVph9ZSi~1|V\2Nm?M=H*c6I6<Oң4H0#F<-ePW@MqArԻgD%| gձHnGz;ľ\3I'T}aw=tL\c(Rc[9mEӻ$ e9i N2A qboC}$}˧؄1RX=+W ބ-ܦ41Zepn2̿Lg.ߺh1v sy6ǐ0PR6B\$et,HE\kx9=;,qZby߲w!dg sE:!:J8n` [ @(ɟ(mv@ 91jv4 8]e) f\#__uFh)5VL+t݋|GO {s֞#dXQF4PJ ЗOD BRzQ#wi(j y8xUbJEQajd>uG,-u{}s0),{Be/Bcp_,nIھbNw{<$h2>jV6)0n{ h$)@DB.yo9IHzeBxL%hFl^/[M "fIt$Bܻ)S pf[_jKc6 ͋*`l=J3]Xr+$w[G4X^/Iﲴ|uq+ur=6n' h0~Tt(#櫀> 266DD]Hj)aG$rT鉫~^$On!g6Ώ1%6=$<%i q"98, :aa48=^t_$ǨCy2cՃf{ÁwCs϶{4>*@¡XЯĝ~BgWPrPذ(9!'P巽o\0W?#5gJ Y}L (^ȡ6G"R;f-my3kOj"V*ٹõMW8]F&5vۿN"u6έw3Z DVJ#'TA$ɜ\+YSPҴMLFK[(s7!:kNaWf++]"d?͍:kNrgE';[$;G0C ^Η,yX),bD8^E-PX'ͩ/.xI%笒ͅ ){L"vtO`6ۼcھmzhfL]q4XnP|p\dl'H,ɤ 6"FxnmƱB_,o<Ƽ=kO 7۱?7םlS ;YQ dlj+\{<@fqpۥn^5yhj/\DXrxR`4xlX+QIr.>_Xs$imMubHELC1I@ 'Z /O jC,jh sYboK/-P:գX"<7 w}4/l-dGpb~5ZY9ajL'^Y+j}in^UyU%:ěbxN| p;`3^bk=U[2P/ZzO]3iG1Q`rME5߶g%Y@?F,q?CvXy~M9-뙃kPX~ %#nlR.`_7ٍA" &Jdk~6Tyؾ;3 'ʾs#lq=Ǟ PWUX6A_`eq 9+aJGhoE(9kX1xY'Cj۰ ?%=TNk4-SKY\Sn,3FpM<⍺k} WzsDi i7NJ+_;&XRt~gNy I eΕHa9'׵;Fz՛o݆% ?@j@څ6Q93T {F^ee벎Fu#6!5x;գ`(.މ?^ٺqۮbQ/xƭc֌ϕ,u.0fȮhf~/ EqGxjB{+n޼wmDVvI$X[ï ǍEO*~_^#/^dI5r<آ2/NHY~&hL8kh>adeC)%åͧ4=M-Vߨ̿jR{ YMP=b\R[KC7}t!Ic)[o\匋/Čx-Tt_@hxRy/+uơz7 + j5ߺmdR^# /ʱJe3I]won}^ VWPFc_~;Y_c Hf1Z@$ѴwFH[uV%4G1/EpI S{ Zuŝh-Ժ+z,ߢ&N7Ctʁcvzs,'&:i. A0V*ZTe&%nVH7E="˫^Cu].G@?czmc@AڗH.wr'a0hЃޚe5v(1g pJіS+"#XF7OY(0tTCj{&oo:>GYzcƆ~I-R~V|LCCoGux̣y 1 tGr IOv χ-͌K+SƄ~"} Hk-(?4!|@v|zu/Lqm^\ E/ڠ{0RI\Kğ?.i)𧂱j$0CRj/|HI)m={囃JʹHCcFw{)ZO?*h(f-~HlW|/^ŇsS%V0mYb8Œng{L<',G/{2]y- ZM^BӃ^D Z"xQܜ|$?Ȧ] ,h&.Azף6U{ ~K:xj_(ɳM*0. MUV`=$]4VU|?hrܬ>nƳ.YwTwo'ly}\_;,OmYۊc (76C\)?r|ҬNՠB`\XD^{&l»]oV /^3?KI{~$z>a~W{s#A6 =!!zt`A*pIp>HIFtA j钾[iud@·$#_zVIf4 ADY0q;po}#~`~azG(s31%lT^2Z.m֮;"^OU!]Gg nFZT!K 2JtJp,S$ bl˾ٖnIJPC>̇X!#@-DH>O6ٹg-l՞P0#uZ9aTuOѹcaxBC}bNvnۄ˕۶=ZQW %A*yW/0A/Lq~n2Sr˱TLjL.J= y¼Ti {R0/@)F3㾊;BTDw-gH썃7m,ib!oROA5`xjAzbjgwQ;% l$0Frhn51ى/A|lX^Mngh,UɏzsI}$k]\oG94!8NtS}xP M 6o7TsGJ(_]|xī1~?Rw3r)EP6Vظ{J&fhi>[.̹Ƹiazh^\}Tt $ j á}Xňc\390@0|_գ%mܯۧDO (~x,5gZcRăCI:Y~|Hn3yjid&E(?mNrTͰRbxW3A茍N.KvDc3 bVV2q.K1/!*}{{󱹻dLNDa>N $z*FֲB{N *h ;Ey䟹NPWE3kN~&&m4ݬ9A۽rjDQ-f+8Ӣ"*cG+[ק .Ͷ[89&`L7 QܼsGu flEH3M ʓXK>@I٥wwy.axGp>e!A)o i`+$wˮ !vG-R@: 7WeV/{݇V7biN6Pn^sf!j}TuDR2nMwJ'S78dހw `^?xK ɞ^!|8'TD^"CcNUe:r؀mh'pb9䧧ǡD~9.V_✤֘Ç&vs]);.ڮ, %^X,u[:s MSWNp[SHR?eR|W,F2rLsL%jM ײ>$Xg LlQ&lF?^N[?eq7qiG e3}|O$MxCqMϿ.@x_H8h'㠔 C"\,1eTtpalIB*'+&/:̜@8!ybf^1G3-bWM@S,$͊?#Qeהj [ԹY~Aӝr\-0(N-ۦ 綶gHTyiDr3Q>ao.d̈u(L5!D-w@(b`[2e3.UB'6lZjHk2_sAyS×An8P6oKGEC'{> U*gG[?E,niW,("8!.=+Ս \[2R?4!yf6p4 ܧ%ފ@;9hd>еrLVW,<3fv]N?\V;OQFzjwoAh=g8S;L[QLBLcٮW)}cI컑&PiK;pHD l{ie)J%jGQmZz 2n:FH5Ѐyj,TѿSnޔ[f>1n&'wo0GYj޼{V^b+ 1Dg c$S"\p1B&an|c\BَԱúN̈́ZQp[ƺo8.lQq;ðݭ⯬WQOXm}a9-:hZFT[d\,[BHy?qe=5l#DjxM-T\e/c]{GyEj߅yOłѹgDC9 D <5 ([h>4q]R&AXv E/ɣ\;GkTAz%>ӈ_'K5pV(rY9ޣC*.g3b䠽C*>A,T3a)=z24U40u=wMT A^{M5N>wyOݏm E@Gj BB.-Pp'bMG/4)U1@ٽ YqRVb{BF%~G_A$HƗ^ +>y{ζ`@jf ։@A_t7)['(HV?815 Hz7uovJ"<LQmnۗ3H?x V=)Kwc҃$@q!ɘ-Al9GiѧQs+zm;=ed67t=:}e CKRzKmb-* hvI| By\^\J23&zPj_ D k孕 ݀S ņ6Aq(xܧWm12ĭ_òF/ VW #[rAZqH`GM-kM&2WJDŘ eoB*cVvz C|Kchj>% :D\YTazZ!hu=Ie*5MP֖}N* M'V.kdTB´mUCEuto3jCwҤ 6eCϛwSN3ll_>5άzq;% n1V.\~-~ԫI-4J$!M㺡N37I>>F]B KVV kHAl ~PR[#p=DG!D Ǩ?;AgGGRLϴugbIVf-5=z|$q_WY2LgJ^d*ln@TOdֱIkaJ-^W4jN!N;nuF d +R"KZrw?'IJ=l8i`>y/\4sD\J*+*&tVRdbn:CKuM<¶mr7AG[}Nvd=f}j\J;k߳|bN c 恕pxŇdq)Kg-a fp/qdܝM<[a^Mrs9/gm 9X#N[<ɴeߺ99!3+әrGfaE?h<;jnJOlzϽKb+\b<gM)zy &qͥ4muTӆxVRsJ5uB}7qɕO3; )'p;ݩ{ףqM\zPzLD@ {CE[Z6nĢɧ2I3:^Q\l _ ︸f""M,5ZPb; ^j qKmILaaC1(vSxMh;C"=gIKûSi`(bAT>җk!ӿ9F.\M'ƜPX|p4{Eыٴ I=m8$Ae~ glM/gX(Q%=+iXTat0%s2:,'B_0eڢRn y## @W =S1I &D۳fmsz+ e%EWaeC|d7{4o{c]*U5ܒ͙SD.(Fe.*$hqvFXCjO?Hvtp mOU'=1zZ9(X"o^2m,ē龐5cVg/b*VW0sw|^J17*q @Zo_~;e{䙏)YHNv4 JMrGQ} ~*%wv6(_*M@k MzoM_Cup߳qۮjIs!WB\Ed K>quyua1f܀ ]Mlj̯}tz{vk\\N~ŎDi:2)+p)j.&^>8Xȱn+'`A)" p l-{V/p/CɔOK{!<*{t`x7U_ }c`E0"S~@["%`JYnp  RO,˜,]ba@wKN!nMO9bm1%Hݚv*:4xe  0d7϶`tڒ@ ic/]A@m?@Ֆxb+:g\ȄW~dfu6B5.fc}-%y;va8^nGed ffB[lH%rr0uFCXϽ&/^#I7P4!+ze?ē6DӁ `XY/*"(Iǜ|4%0Vw_|1h[zO:Ɩc1;Ψ8Ps|C9.Ej]@,4LȞj)]ϭٰJA"ai5".QGO%љ-ˉH{4tNbdqU 0*Z*%wv;Hb` P) ykf4na~ ɟTX -ѭHYʜ&OVZ&2XfKA&XXa>9]բ_W}(‘ 3IQXj 虢RF[D>! TLd?]Bp3 ST `+cjh%[~oс33.X6Zm+u~ڷg1FDo&>C=>/1xb,GlܷE ; $@]&pWczjI>( (KGo.L^N\KFHαNJֵ~JM D@/'7EЛ(|Qoӻ9^г&,W3ODGE'_E+r e8/ v|{,ʙ F{9Ԟs Bzmc[O7xz >?t6;|"0`FZ,nsIZ"fB-%e}XdsYPwy*]PE &q-W[wb%pnV:(Z/:C!4wh#J" ]A$dckEpHQUm7pD 3쿕;;ث0r,$?E!,,u*a$ 1U{vτq.n} _|m q6E& P@~.wrm^ֱN_en[fVKy{$TǛPĘWC$d'q\WzvAR :I+~e2zKpj &X~ B&ਥcִm 56M\1Kbjs[ۖq#v(Zs39`$^fMڒ[k4`ȋ]Yq]_Wι\I^n ~UeDNYRrGu4n+AmaH.?NQm7ˁ*RE+/EZcP9<vnEaQ۩ QgkDMKZ$~43PSTB́zTeHmWG+ D1Z `Q!Li' OKFBM| e,f)찃aN *^7?fGeBs@i!X`+I44G0E[[]E&<&WJn&ъZMyKuGOKA 䎅Uh]?2>n)S-eAl!IE[6Dl̹` _{X1c }y;yz KQؼx#5y@Rg :mJJƄO=PgW}4Oʿum: |L΍0>up1%U Rbnxqo*t:O5LqHsPbWEQrÙ'; ^ͯ6m/c-./&}k:g@Y$*. LM1)ec: ەՎ({9VdBHiZa#{)78;Q/l]UUw4J[ 26[?>Bgg M*8SEc L$Ȼ4KwQksoij NAzyBC;$k4#q3n<w:`FW$AE򹈌K-^2pat'ɡxB6n}i(Ss u-5ɿf}(GQjm2o)in<{ntX23FfkAWTqjMҾ`O\I"<931A)Xb R.KȱO̟ U܀$2T!J~#4e;-v>۾E+Ep!סh>Q|rsJZ!"J4-%lGoN80\Xc+F5;7o?q6Y6㶱la#W*50 ƞ,1ΐoަ姉j$ճ6yn]u%x}ف`)o\NrṊb#aa>ݓTd;gxJ%7gǁ +[sX=;CrQy]-o#PRf"g,DoJyf[?yoXob&(OsÇ'-yEZuH+Cu:9/O)+=ʶ֫s|X_:PTH=P=j$] gWwr1- Z0Ze;/sa}Jx2|rH0!z,h^Zf]\W+˰8gJ!=q4NE P%Gìs _1f3okzByq;!U}^;\d[H8/EwͶJq=ZTL9r}]@'gؿ7&XL]WO\ j!Tvhaa"k:$'i7r0\4$&$pݤ(V,/#$)4aĸz25?rJ iuoҠ"Q!_c 13i@bd VfB0Oukx4Lk>^Mj@D7K 6v^+w.p# ajhUzq8nN.P*@dR}ENSsl*B"PW2s(1 Vyj߿?ȝ`4O $| zU_ByTXЊZYs5l 0V8 kk}G\׶~"׆E&CL+?~"\䠻w0VZVIMb9(#,QoR J7+ޣBTP"M))~!Kk)z*f?8=hbZW׆xQ9ELMBΐr*P)z/0S>bt`R_IG팵)dx)$ WQ<Ɯ L|\?,iT92 K:B}Αo)eDQ/|8iVijFcϢ8r)`np\Utyl*T(x9Vhs! :&jelJ1"vS2TmT<-Rf81wsCpƈ\_yE)R_Y[:cJن3MR@L:} #^Z\ˠwHNv?ּ03eޭI>W0Ptft E~;}v E:tgI7Y,ӗ6y3R)~`̳_QݦTȌiyQ~UFJcb>b-S8yp dWE-4U'HC8P4,@iG=+|f^a4* 0h ټ:u˗1wSf02Q4= 5^ot#\\ފEs$~sY/&L43=I0fyzy[!8p哷 m(e-zu=ҹ OAy-em]Zo 8&\UyAY~ (]14!7-Ecn׼q*X) NE ^V'֚H 9  jB(LiۮיL O"1.d.v 0f))7y wܤjd}=CW"Y/+}hzt4<^$ruuCpzMM3i䌌ӓc0!/1/wZ 3e8[|ZD6|M&*"OS7zuがm8~g&G~Gx FFeQvoia ?g9"~O=>Ě O-]AL~0XkOJ!ҹAJf@ t<鋯ċ7\M@w5eSA \O n]5N L=I%="_.vScm8C,%򙸂l"r͔pp_7m/!H!MĖxۼ~  hn];&#g}U 7THS|戼} ˛}Wr^esE!5^T]Ynq}Ax[^99urLF=W/_ۊ~ixt*;7[UMqy|벚vyK}13HDIJRj q*, {hĽZ/`%.?״ع}Pϼ=e,^/Þ|o/-﯆7cNJ` xW\sn珙YS5J":xۨ7[ 8Am I8ȥx -x"NSƠ}AMC/zGa d=q3;XD1Vx,{ZOLfN,uOG94zfx1ƈIT\pQ䳍ZU*@M4ie&e%}fCǛĉ@7@#kۙZ;~ENV8<:}/|08|N(<9M.ږԩ/"_1d O֛W4,Nyk]|"pbV /d;ڜAq#r͵SWubrPlqā0 <r*C%ap2V48*g~OFjd~*kaߊI6.ܵсN*RZ/2u H!̻"酿=Oɍ5O {on΋5 {YJ4! [kx] wlz`lzA#XJ#- Sh\H~o-vXJܪ iXj($hzVr?ʗ;S^1uf_DϙN_CUh^l L^,}ZxԾ\'<@ks)l6EO5x/W^M3VYE[-sj~ztwW$hPzSt_Awg;[o , X  eJ||oׄuJ$(tkp DggsV8xf熓xDsӕ'9ZyYe*6^!=4`_4.SzzH{ׄXo[M{r0?.Y^[VK..Y9C=.vf$.mhVq4iV[F+AS=sе>RtJuw)XtjJ hEv̂\qڡ%tY8Ů^8HUbl6\Xu {r0&-9OK@9*_v_16MZ E~ѕӤ٩F+۠?o;#IȨױ0l)6 =!A xɽ8@V"%I ΗFN62bQ(A˦.RVlC&geeQ0/'JL^hJtX.(=O' ` h_k3+(6I\5ͨ-#SwrgP4M-u2Hjcq@Z@HK8lu8>ugkC@mNQa++fAQ#i,5&"E[KO)٠o4 }mC[:;LH^e[##ozA4=[W_r8o@O[0pIN7 ӳ}q ogk~8p8F}挳g3*hS#a^`;SDl*@!\[HuYYɜkZXJޮ9tNpeM0K^%>,*W |}JӝtrJB [9LAA έL !LqO!`=o<ꥁ & "r-QT ]0D1Blw42=$oj~^)b"XvP⊹mj.dǩRaFuN ~K_݁@2 dc \&3(Ha [ i( 'CDjZ GsTE5è=_?\o'_yw8谖H q5()7N;b͵lSP(U # 1DŽcA'^+য়Z>2)S@rDEB"gQgIh- 4iOIӼ9T~X5]-~/Z:CUw 5s2 e'Ydz2T_EEjhAɻY ;w&M3B\!b:5Y:8mD.HTEI (varq,v\[V|̉< _Ѣ~` sWz[McYt|0wǏC#֐f p̖"e˨3 f0,QRe^GˏZ]J8{z-6:İQrBZwz r.^lrbƜiڿ2FtcBB;ai6Ҝ }] =9ۿ԰@޺<>/S)m#?E=xk=oe%AO{QW뼢&5f+Z˃x1c?xPmǮjFREB}᪉v)@ 'h6 =ЛyaYotj!=3AG @o?P^ s3J2Nډ5:Y8M֙47n/SKl9@X!>44sSL^ĸ7¦gaNKs;av!yp? pc̼RܚRp˹裡W64 OcJKQ:.V7R ܱ{0}Ⱋ5v7~Un K*B;3+JӹY՚9B' bhq#Q \>TL˩aLS~ծ ׬k;cuL bf|M2~D7wSi/KU3z\qKʠّvl*bh7CPWІU_ eHK7ţե&P>yaΟNcHl&Mzc}#vd] R Yӓ`}U"%ݖq! (96!ki ,LB\ph3f85Tc?Gm\f3pǍiц @yo0.?+(AA#f`t?syU ؘ,د" hQQe~XV̹̹&Cs(10 Hkr.ds5P2k#g­Z_?_C#&bH玾MFes]C#M@A{rN&璄uE$A1o_ h-ZH^ ,"[0$g4Z53J03 c6qOۋ|sw;WFYSZ/n#)cku(9XL1]tUWt‰'Dc+Jhp[JˆHUL(ave&k^i-'["*LZP0êMrsN\aR|!y>ww pnPG.E7~zWe]bm]f+G_!`%;|JVGГ캛>N|lwߤz17̡nC z]^bՎzeW4He`@ 9V.({Ǯ;Z]@5A`X cclb~boRrg[Y* r!7Fּbx3Z:bmuN$״7>;[eTs*U?;],K(I$eer 4k;k]&LZظ 19t KR9_VsUMiUH@+q/}ҧͰK'EyKCfh}>kX3[vGhߝm+u, #O.7_$Xt ŗ)&dh PЍ2t q71<Ʋe qmKā\ꔪ%-Uhq3FÉGmp~J aKs2UF+Fν%zD-f[Ex]HjB>Wi \^yV-³ꆸP I$.@s1˗>AbtYuqܠL q&DЃ) ̲a$S-fn 8CȠx#/qHݰBw`ś]?w?/>}X=?@Al8hN5̫v}%!G0?nԱw1m*iLGd&)j}WϷp"s5nm(~]ZgsUTcM: pZ[< gelwr,_QdkᗪX$ΚRY 1TGHoEU 3jT^k ꧖ kg;[Z#w`,lJݭg)dH=*m.&hJUO(M$aW1fVo..ˍ>LM)KmhBV3jxS*FǙD? "KAL"|AKVXd}2Þ$s| G l9)s ˤ;_;l|j2+@JZgѝ% 2͌XyR$TSm?Y?|h2(1+TE(bsce%ȇV]}7=tf`9DI }NlJ,xaci>wL^X|at۫T*0gT@iE2NvFՙm{?a 1.4iA-0=J p}<| c,JOQ ,E$h%Lh]bFܡ;,@$59{+el&p:m5z@N&a+a@TX*AxjvW痛=W ڐ }%T$FXm6[2^;}R+h$r<(sUcOI-[IQm5mo;aiD$hhesz$OmRΖӟ" HAe\ aOAY^CLM4-^ o!J%"?OBMPɎgd8Vɯ0<€5%/<?GL(83dM 3S]$w{Oɱ kA.b2o;_aP1o63z}p^g% FG>QNOí1}o͑g mZ ;ˁ78MrE1̺͓z,AyQ?yJ]2DNã8 `t6k8#5rE锅͛dgV,u, ez" =@978 hUGHxqS|;?XFs~/[јlvd@Ʌ\1'Qe:jzaBުQ):/pfۃD|*>e*h?@bqMYl1-?#cly.@֋،B0ʀsAڢ- Ͳ؁nWf@' 1\M"-U1_k2xP i[p8ʽ*t];9|5D{i@ny{0 q dWB*XDC=>6\!IO׳I`,i \JN$FLSD6sG'-<|کD~"<%~Jjl}NCdeBunξA:/U(%ջ@:͵Eo0B( On; ivSEewTM]*OX@'RBw `k"hVȼ:JcւDcz]%I:0FLq[K-̯ri%_7(C^xCH]\XJ7xh)Z: ^mpވ@(zGT]8 QFT|h"BheX^G32}Mv,RQ IǂrU%6Mpj s |Tz{>mq#SDne)ib$}m,:ey&T@->Q]և !o"ZyEWR;1$ϟV/c@f v.[lnpm^7ġH 7\&^{ox=fb)|@SqOv~\;T6R:e5ptKޙaz zs"g6?$UArI/]+̔#s[P݋}sLVޒQ)h X Nr0AI>!@:5bh> v2Lꊿ92V@)6JWZii -"%6q&oͥb :$iN>FðE.nNQzj.5:F>SclMj: *Ko;p\&ѶaZkױUnɆ͓d9 !ʹ-&spye 4?:^$ߐoyKQ] ].gYA<:.KVG6N-8fPP? ״SA_ˑ~زTCVMH Ğj'j M!i C[!cG_DM$\ F.ˆmsДvDx{ֳ Y"$'&$nCL[(ޘ}^}&}]{0'ogf6|(^`l@idZdJ9!8L:$5#4ixSv `c@E2[""pD\\ sc8{N-#XzHZtdXJ\g!:iNt>#x7MLSG>4Vӏ- V ^b (9ɢ wӘ`e&S=>RW !.wOsBvym9ɭLq!V{4[͒RO; 题Z*(36uM!٥+H‹Py$`=½H+w~G_tc^وb/:]dB+7Xd:.EO~|m#N_~vNކMb?Q>[E*4Lھ9uf<"nwl#'>h 1b LVMNθD7 <jtVW  b8Ɖ+`5p\*R\)<) mSRIz8M^#'$j\?;@~{MAWlĚYJR!4 tjvkyn(CRm,ﶏ_ڏK;x:[皪 e爽*n$q̒Y`\1A`q=z{3?a|ȗIȪK~/wx~(梶+3^f3 @1ҮjZ3C=aGo6Ix؏RFg2"U#$m*c/_r\5NjFYXs fT^Siqpk، ٙ㵵0ۘ޵@"42t:F@#TBfzKy?{¼'6[Ñm`W+]pRl蝱JInly5R}V ceOq'Z]^à#gq/؂ _R\ 2$$\d\P/(s֥d\ ?ShJN]j5*$;"F Rj,!Lgqy8\H FubZ i^@QKpu8'N/EJGyɫ{ lEp a  i&>n~[`EG G)zzpo"eq0G&]Uɪe*~:hQ&ŪFl_ZwzGXTzC~}:P 3ˍoXu qo1? 6`Lr:*&vfJ5p>y`͑x'w=51>h\>iaG@F} 'VKKtX!/6岣Qb@>Ul+ZRc苮p6SU6Qz"A:x2pEr~.R@BVp. 0z>yy .CwLj,,Q-8ŴH9x[;b%;2ݿ)_GpL3d^5{{Ip9 6YsQ=Hv|Z[F)Xү{2{=\# H(:iga(@DYN3̦Mؑω>D6ƈBV H ʉȓ@1YDU@wp.>t1ZgJޚ M[{RAt>a2lv\MmpPBVhwloS^\ur1Ϯ?J%S,_~0]kgƸcg놠PbZ6t 0 vG E[)k \@ Y`xD\&cLZ]dYx홑P/.oQdϔafB =@9O!:~32c@g{Ci5v,6N oTDs҆q/ILQw YM:L'i꣱g*&z\ntY?C{HW Cp07〴MP[˿h>V&#dxݾ [3pķH)ug*s&:IUW?*R@7Bk/91ejgtQ![*$ɮHMd(7YlD#]ޔ}GWgdFz>B#IULj4mwj>3CA @1zfxYͫTү{cڊ-8r.b43>P1ptj^2~ۏE'>ʇgu{?'NҬY/5 Y>r9Bƽ> Y}*k"/N/%Y{_P=}O{PՋ1_4e3mW@5Vs[Ƕ-&Jl5V0dO'+XQL5>Qڳ 4²# SmSJ,y ZJ sګ#Ӊ|嬴fr~=en"ԹcOQR!x\y0K]ĺ2$dS!=PDa= ˷{~܅0bMY6*'.|u޹+ opH{Oq%HL:+_"zzvJTrtRku0Շ36ݿyE`ӎ]LgߡmM {`JgBE=?;^0M9x?[]qb @L>b#`Kk }G,Hr(y"޳jԢc M@tNkÆ?C;q2TN=)um#vZ٧Fc+PVt^za_>偸Wro! DB&25]-PG]E5dGVNno(+d>z?ڲI(ǃI;ɥ7Ip!Mph'k (,rY1e(30XA@$h 9;1co. oތ<n"O \t jo+v !DgݐtXrtw-By|{p,F-gzL^}<lcl|ܕemW3gšblg;kB&m&#d3,bIݖJ79@=CUaYRCԬX'!=) f ro @&pb^L#fgW">/^(׈3`;xGb8nv6Ry%"HfަI˄5 `aQmeg/PqC$+yDLfBc _i3C2xŕI +EhxiJ$]%*>:z)"ysjpC_6Wl[&F.S 69Y/*Ә05/Bg[IYz+Yu.1Hւ's:8L^˱C%RHQL.(u;FTp>CW @փѤɺ+JyL^1;(1{q ' dJ^2ۙ >y`e~x|,ƛĪ_[sZȥ}v$'򘋘 ve}e]Woʍ]xl)vɱ=B/1%0^% Ub%; g= )LIm}gz@vϷX"iL.&C'sٖ%z3Q!9{pמ$ϨVoxBx3IghԳU$kSLVg?v$`0U8L[p͚}";GOp1 4Z>FGjyaWق +T-߄ Z -DSCL':2) VF3q9(-",Af|;U*0F]?z wO8[nÉ@zH~.~`@ΒX TSTQgFdm$q>Fs=vFZ}ïTva- +qr{Qj`#1uC@ㅞMc덵 vi5з| {/ƪ~Ѭ1~@Mo?-mkfCh'ZJID<: [vрٚx$A؏qGQ!'M K{ݓZ4UVXrA1p-߹Q! 󟮠-%%VYO>xSWo?B>\7QA(8ܖdíӢ}ndgR0O❗  {O|,Sd% J% (n!GM !|Y|AfJ"jmnb'=\)"=^Z:Q>VD΃urUL#Л.TU>Ymw}u`UG9J_ʷker+Hz|o92tye%ˆV9^I5ǗOxfq:=. | Cr z|gSNBM}b52ԨbھhoGu{Ҕ)s3/ zT .x9| ƭ^uX-#Th-s;ݍ"c?aP=E۱5PdI JRޝ4z~}toi`פZk5mi=_R+_ڧ*Q#K> f.ࢗV}U;92*~09R_ZIB.40NHI/D8Zwzqe7 LZSQ^eP4/ړ{DΜ[Q4jU-QLd &g7۹l#*<;}SʳP,31}9~yhwym@;X}SZ@-b|ODcL=g~$%>ϘPv-8JTaPɰ!Zl{$mp>O*`VW\I~ra}tlyx>٠?䛵tbSx&A"?Qy<:B%f9aW_֏#X PVCM6+#)x'%K1c v Gxc!W'E57b & @gћXSF_rQ@wq9y*faJvJ̜6d}?X3OzSU?j@֒&#HnJz&{Ib2j-iE-iJ>rI(R&I-mb5 .苁5u:q |N>8.%3j*LW{5o"}O$y~ْ@{:A%%zzRzڴxxVS >YavD ']P/xiI7}5gɈl|IR>NNJ /v h\ȩ~!.QOpdC,6wb|ZQ|4˥[qy`A2oMK?'WϦr\ĖOFs/ @o:Ղ0D̥@,l r6?X5Ls-En%8"=M";9R{]tgCfh`< ~ybS`αu'9 Vf@ ~[ts>p낝c(M Q(iQP4"Gǎ\uF&HSb?X@H8v6_;~<,>P) (td^#2+^C|ƀ8مwQ{]fTWRAz##ac75R<PT_kO@.z4j4R0`:5ʒ(ceNc5* 1m5a3!C|LÓsïx=c89 `=6J;!5Ay'_R]6`n㖭=<91w-n,J|BֈIQFb29} :t^^ TI^w+  m]<= xnS]/"B HzE'2T}wes ]gY.iy #|d\Nfprx+O3Nhfp8K-(l&)H lU3┖8)eF95"+qS-'=%"$[OƢ(f"GV.ʴ;wscZC$ƀho|s6CueeQxxva]`Y %3!H4A}@Hx[Zz}Gdm!FƲQ f(2uA&V]on f,"A3_z-5S氝"Zm\նi 8ig0D %?t6Zl81a緝sdgK4`8_rڜ91i뗐* +ߓr`0Gٚ[ihMsĺaB֭-4jYVW^BK/Nk>bg>r#f &CZig&+x@`"3CuP$&CRॺa79).ԫ >cwqAAQ| \|;-X8Θ5_2βj]0J20 uRmpֿʣk%H5.w@&hC}>HVf0QW39$nFYg`RHq3GsҳWl[ }"'JC1 t=;zwM3><͇T(Jg0;_*j h($p_I4󔱩v<CzIaN"RSIoCc~S!ߟiⱼLʂ ;m…|3+̯9t;յ9:EQܾfn-Nh.?G&h`EvM4P0kG2E@DĞ, YbŠd\ApgGvCf`,XnV}XHW3T hi.)',Um`zSXN񄉯q>yje3矗 lWsm}=KTo?i52l(#E6s#?Q.Aj(DQ_IRz6u@1J#GXCsh/%ߦN+8?4!>Lvtߚ&Sy7$vqhquo$&`vިC#ʧ0NwHL"ʜ!![j', ܀8J.QÃʯ?I.+5.|1kGm|p\7+5fJ+^! s!rm(?N g uG]O lZW-=)W:ZwlRUiuhqVYc)ґ,ע /ޒk6D^bǁ}5wWN<X*=fb/ڢTOOיMK8?9藐҉.T@ZHA \h!& }=N;Α2GgI馄,8Ys"BZR'#$]i5-堬4v9*&8D!J\2]:0dof8KݯcxbTRiPmiߝk5{}Dˇ !7t/ 1C+C lg aSDO=br0iР|J2C<sa]D9ˣk)ΩލϩB"ү9j#d(֓e4|{ҫ@,؅]i*Nac[VNHZOb=Y?dg, z! _ezc\3PL%t)RES)[C E+gH-Pq {AXWhj.B"/CGuAYRQNN敇s] }]x%K+oh(2`SۤB h]lo/-a233J?h7w'.F(9'@!?j \A5G1};7w8y/$~`yMŜ=B9_QH̯MB(P FF1\:C/IH<=n;ER7Tr0=sbZ){4J=`aS1 _f &B"d`9m#:%(yq n+ؓ6VG-u)TcTyՅEi_"QuZ"\z[|;l^C Z8W[N 3rL@uq5hS#)\GGRbثc* |4* "*PB9~S/z?.Tv/u$L֨vc")mkb=B@A*&f]i%K!6g{9$1YʲD/X׵N֧P6ވk,` e¥`SOMQAR:m/UG0wfdBJ^ ;ihgw! V74mŔ{-B['rȜф9 9_W0e}!~gЌheNUwi5iϑCϷDImu+"'ILNw<[rAA 8kC"gI:bʡ Kyx5<@9LzÙ S{ J!,M F ]0S$@]ـs yJ8 u; 47N§iOi~SR 7U|<# (;ە|0(P\WܤNqH DO B I@ɮ\CHb5w3[T*w]*Bҝj{R xTݱb,^4nB|7iN^q-#nmS66dz,Eϳ6C=Nożi:'H#C,Z($9b|>J5_'APϖ?Ne Ŧlf>>NIPxW'6񋩓p"llUÃu" vՅD*[ؚ!k$a4ّW+tHmM@pYUǹ`s߈Zoͫ.yL_YX9րF%D0%>kF606IWdg[ҹЊ0*2ɫmKS?|X޼u>Y>рͯ'5X1EzEs $oxZvcZ!,1JM;3B<llVHCu.f,Q4DF-i&-~4 dvx8;> <4OSʑH QwشgyxMT8cn␅Ooqٱ,D}}/|/vI5GMl S'[]`fR{899WG4J%N=9^B* !0:|n!کVj 3d/ckq%4RMc(V?"Fεz"QŏU 2:v;|CHWk17[}tOWV?yPJm&+]!ĩN?f GYL;ͿВZ,L{ԎKjbB5 Ǻ<IWsbt HƋ9\SJF!;xvXy7ߕҠ^SɑA!;H_CPg2%/|W{:}Ю+A:IE)vk hmmo'ҖIV5|"#tW!f'A+>{{B|JoZs8떖";DDZ{K Wcϴ<=ZD8Ee4/'.P_T}6[p9xQ=LT:$HR85肙S ݮ_@Tv?5Qm"| El4K߼/wv`l&3$Eoՙ$gN%@R`FL:U^r{( RN: Fv6G׀ Laqjg/N8{“U;f.Rx8F"wļ:Ngo_5*%t3Zq${l_n.oiy(xg}QctT-dElyy=F"wR@R}@ׄ–G+{ j'l:IяZ;&VN[WI;99bm11=\j+(xXhÖ@7/)K3?E=XKY$ }5qF=u2H>&GO"ڰx0Fzr]ҒtlcL%wAcgYhd,0 =*YvgХ^㢡|0^ݨ`xB SFeџw.K=t FAWG3;B+Auw}Y{>Ӊ ~ )n o:u<İ9Tg~mSS*޸4Q'X a)3, AUOuׁgA~w1Y?֬%5늉 2&{ (s8=Be;O b|:11]}O=nJ.%. 桂v׫rNK\ yEY_,@"b%*'4Z1"qR3_g-K<%e r ݨe(Z,GK5p'ދ!]A41{"ʌ!+? !.|P6V-]h ۩@5I\Ȕ0  ])&#Eɛx$ik%MNH8ZGBM<w~Tfr^"Gu'!)%v53.D^ۈc +I5J$Q7| ]s\e4rvU\A%#ꉞ)f6'^XxVT>óq(T p?QndCzRC|{5n:PDr?M&*v'4b%+\cK^e~G zCE#9.WBcW'ϬLe[=ܗ %^zNE(;*!Iv!r4⁥<7V2'Tc ċb*+TneZPb3hD({Ư(¨IC(1JȷE~`'x9XNZidłKFX%_4S>n UC8YSa )kG$& j@qv=+^kr#"@UĎKsh4^KsuJ[?*>Ju :< LAYƓ =-##ʨ.ˁƶ[Crpz9g+lVѻ^Ig Փ\|lqJ-DH$EթڷayG?]?>G-2@5(.bB¥ć@lBHQc:Q%SX!аe{e]b3 QK;X^Q H;μA9\"y6×In^_EM9f]<ҿ;)+ (jO,䆸ӑ !n!|toVh5LU=gZaj޾V$6+nD2mMyle7]=XY:49P%F 'tRbdKv-dm}(:8vt <\6rW*A B#9d>۫4sx3ؼe.9Mc )OV.91G~SNT]r;AKY3AX'0Œ۷z̙3jN \^{J蜩zi<)>p\Ho솪`J5]Z6Yڧ&ӣd8BLlh!I<otm&|ly]xCϨwէ6uֶ׀T"tՁLez?';,^> ̜UU=|@ߏ-0H~(әv&٦vG1Q{wh*gm}ss>Sfyl-=-כocXbK0,[=70*tx Y7K i G񂛿||q(KCVE=*H_Ng/>P)/9r8UJ rx ?Ni<.+M%C3Ah_jU"k w-2p1HF\@;ye~%?KR$MESeE/fz:j`j8j|[X:,g\U,(awO%:'&JQ݁ҹ=ӒOYT'^-Sz@qCUrawV㖟D` Pp-vLu iU}VZk7yB%WoV(?%rVg/</M"FPF_@W ,Ыg[@62dBrx3^ [w(Hm/5 8]b-} 2׳|wRfVETt$XܘEufr_5=$qqsrv2rp-ໄiS$3Fd /gw UvARp * 9@K4PnfK-շvӛИ8w TDW[ې祌2CSK3$hCDR4\(UŘL=D}g:+MjNq/~qbZJh`}W᲍??Uqw ΦAOO9;11s lS tذ *@R)e)OƩ Fk@LqJ X|a{m{g_8DX5QաZmҋ OпŲPI2B{WRm/I:s(9`UI%3QZ*/cDK˥ZAqU1=ք*ţ]J4gVoˍ,Uq˓8NH[p@}v*1+b|7&Aˢ!N_wٸֱO`c|!+ x!hp׏W?D!۩+0\ykwO)A=#N>MF!ݗ)RSɲ&t멏aB3zH F8b&e顷ďr=5c*K怋.u`ŕ ZZΝ 5mo=GCT*X%\&}{ s]<`,+T5қk6w Iǻ.;ۿL4gHJ~ Y~˚̻Ͽ|#PoyNVLzNl2PӱYc'+(f_*ViR@E4ko0(vAPt3$߸ۙʜBt.=BT!EF^q󡟹ePv3֑;'V)oNC(Ixl- :L+v'\(%xֽ+I%䁂7sWuvPP "(T\yvxىhDU4CJ" {aŗ K%An2nW0ኅP}#ݶN0A:ԬC$tMUw$_@跣n\[||! Yk{^={% Ze}>S#Gt[e(WǧjћΟ%TvZ-bq{yiI8SQ%c5WmOLۈLRۭvhDefpGu1!! ^~!NOs: X yķ` {ɠ rMMkۧI\MecR*Z SFe>[QÙx9BK[uD +v% `zwYZB~KScO{%EHYc_L<.d0Qc-߅]&"o-&iѼ]&|Y#Ӳy݊P =˯/ã ]Ft,HVys>AhF =?nsT2G $ē dCfLɥX,!77+`:*%E}_in+~Erx'^Fb) cY&n:q#NH9 <}3cȖgf:, 9H$GUZFPJzB Yb!+#5Lo0hm0),׀7O/{(Amt=yGB\)Bj;BrpCUQ`}Ӿ`>9VվSW]46CMȯU#+C]fj[voq%cYФ`E G&ٳЇSZҵ fSBЋ"QԔ יc=$ 'c-3 0К-* JDԏp.ܹ~2Ɯ|pجJY@Kz˱p<;0aUD]'=y秿]E!qv۲?:m ԣ6y0;# #L _5kջ/ ٺ \@{ j'>pE߻t/#Yd~.9eF­$abJO﷯r]r?vN ϑߘTO?'uqkEp!} d /[xT m.gT>+Gg?-.%Fcd!+!V:Ff4O9>MfcWX ɎAQuZ MfkX!j#9h2e ;`Y҈:UCT t y!M$> 0&!^[Q4? C8ϋ{X҃ԩ3W퓻P l P,; rqaш)dbB TX+?W˽ -,KZrYqդwRP_LaIkmnuxj O{Vgq Py-]KZx^KF!0' awmvsZA*لEKmq3Sbyfy>eGDߘy $ S,[AM+qgeSN=3rLO(ޕ0s~%;i$&S;$[=Yd%S28i׬fwbѮ(]ĻjQMݘ]aZG;#QG\2@㟫M.Yv8C%OG< noEj"0&zg`=$L3KultodaȄRIGE-K-^~Hj PS-=(uk0~9W= vtV¶ |ЩO{X77n 9𗧑RV^%<3IilJDj'ԜƜo; #GrdS'+Z*N"=22)\A;Wh3@c-d[kPCSk*vC9bX(s:̘_/ sNMt`$٭vVTmR&UdOrd_xWAæT\د[Nj()(kx .MYx)GW#d%zy¶>k]P?Ib'JύUܻwm /1g$1 41|FehZVmsD|Bڑ$,dB!y+ gIeU=/4y0!,:ØF+L}λpxKʤz*ZB0A;ϙKx|%]cONSYu.w] ||Ŷ_G#LmEw!yi2[KǖUG';:Wvt_ `بt.&|2/0ZaW9j;%5Q%cϒ?w+Hͫd*2}*AA#w=}RC)>J ~ ;s5~Fr7˄1X|S#- Fٖ~؂cJjڄN\ Pm$K쪓KW?nT. [`wJon%eX">c9ue?Kt'w _KbhG5f 6Ë"~u,[6(R_Y2qi؏Wn)$[ơ䠪ab¯, ݏNEwz0'b%Bd*=B);wxXҎd)seb1.YPo=D7~ 9 +3:{&)Jlr="ӞV ,l^Q9B7w^n}Ӝ`|r*:"@%_ d u>z3;+},V."| 1sUxL|'-qwav"½#flEXT&䱾dLԍe^WRkG'^`}Zi1-uqBIu LS^eqw/-s^eeJV`\Jc)G:iO>I5 #ݴxҊJ,"/=TW]'SUHPIAԱdGLX|yJ[e%lMOKR^㳌 +<&FsG^SDe)] r[r[5rg;F$iwL,k;T>i^#%Ym[ 9Pʮs-d_%=Wm!CoEIrv Z l]ΘJ4jԒ]ӓ#nFݹ!GO3-hL1\xnKaiƟlVTw~r;`/֋uIT,@?O S!&b_D{R[ j[=G]G3D`lǫ. fr)(cؗg℧zA(m)gШ671wu\0/bJr֐ZZVReY,q J#\uPN:M XܢI aWT(k#=+SFH]]CD)'m6:AIq ^nɟ<'mݎ#pR}?LkR4 yv1x+)=\7Ϙ'vJ̬#$2 eCjvN@:fcP&Z-0aa *y;D%oI-g_px]IzHDݠ#Š9kQn3nft4BtvDFRMޕx(PWwl4+zH(ȧ!aoŻ*ZL3_>1J.hzYw f!d~+MSW+ʴ* 21ì3 }#)Kp̏@?r^|cv` ˱)1~fU9zS;[uaꢴBK3*A ,L3JFEeE;ے'̭Z[BFwG>X3';Ku=*d]}0[x^]=j+ܒIdKRz+LI\D.B,0L1+q;WvҭL-ifV8$9RDb\Md|+}lY`-Ѧ9T]rJgm ts1巎/)؇r2i*~Bdݻ)?гvw׿6{h0%bn@.@XN᤮7Ӊ-ii}J wOĜ)|3,&t-f`ikn#Z*RN 9:) k FDXp&ۺC4Cɉ`cR%;IYRz>fQcNldWmVvEkw+gt1^q_OP[$АjjWc͸f|Ǵph0!=%7as)#vfp@ѧK2=вN슫<gR;~ \9=u  ÄJa\ B>4wj/> .+J́η]6(Â]Ǖ[ O=)o Z&d2(]ԑ[{//AJ{9X=`\sqzRH~oV5BKjAlt'ͭ%RKu%Wza&ͬ PzS#gNoN p<2 .##Ϙ>$9-?W{궀9ތ? 瞡uG&*cWa2z2˃N &u`Bn) uH"Ywhw(ÝGj"q?: z&~ 8PULh\ݳA\ɳxJi!^v;U^BG3ȹiiUIf2f- l@dS^ ] Kf?(ρP P[ob?-qd;h)R $mK{~uj "Ri%]xs)YTdir wV r{~%W@8`ǐ4;aDTvGKT2I51ZY1m"l@#,pO I!|'1qzp1-3\*f ,š?ü<|Q穝S,!9cưd'> qXG!!cr/ir>3:Whh74̱Iw< [8< $.asߥ=1G}[~ٛ1ɠ]x[K w DL  D?iotܬ+{]EF:*]A\RFR8_#rȮ;jC 1ԹzzDr ^FI燷bwĴv^95Vuw w]BIĜ-h܌ +cڣ|SZpk-0 ^0V}YQ,ҁȹ>|)jGiljkA"jم= q`Y\h`?I^c,6hcGƉtz-g`xCmEo}<&ácȰ^YȮ)6$&/'xQi-!52J3O@>`]%_Cܔc74 lև͎zD}}GHxr 5^ZH #RyS"B{EA8`ؠcͲߞb_"- 6I<9 ]WiRʛ ɌI|ŧdMM9rH)ʈѹ#}|}N8W&'4V)i)2; ΄'tSd II-jmSe=18ncE! tϮt&ɯ?O^Rh࢞PS2|ĀFaf*iMZ'1D5[aE z,3?pv\ir=hMo͵ ҋ 95NL wq[ $7jj?q:_h4@H%S("w7[:`5.Xo,ZsHXN _ %CmH/Z8$_gG_n69d֬Fmc ~OE^k_i%@ Fċ79lk첦|U%F"]+_̯'0ЏzH~4r.\:-f<`f>I? #rr@,I_D wm^ƺQ>Ѝgަ9l$/30rݐ[x&~zyKsS+>i̲f@΢#-oҫ=_< D¨ ~iiGW5jqԪIFۓk7sWSV_P(O/ك24:d+y$( }_:|*7E;]uPC( =|8%/҄lad̓ӏ!;ri/ǵf8RJ!tp߄Pu4+;xdrgCn|O4j*Dd#dL(9z (S7Dm,s3Y}<1(>I~m,Y4.$Jn*{ JiW(Hii|0Mw;A&xp': ϙ_s|&݂a#<$dSSɰ&6f4-nFCٖHޝn~WfS/FrkC>1NFiý<aN5 ɑ5GcO}3$|ٝi [g%{'+\!ƶ]nta*7CnoI4_ggz: XCFi Y7~KzM_*¡ս,}Ή?4W5[zÓD7H<._0nJ''^,D(R=4l pQٮ!}DOGJ:>~jHu[ï~Q8ȡv"q|NH/AK(3Bٹ0Ň 6|姹X$ \w[a= EǤC :GnԱ36^'{ʵenɶ EQ'h)׹\u׫Ԯ3>,DAg'tybˆxR7K oWQs 2Y$'Dkd~q&xrW\6xά΃:jx#AXzy[Z oHI(Cp"n ,Y29| \3~UDv<,-=PV-tcxTzy+;m1vx67L۞98CPKUJD+naFmfm|%-VU{1@][ /iWo;IwWܟf>7}Z÷-Jd׀QMݧ+*Q<&¤VբvUgY!= >\ $NзsHX"5tB_;6\$PYC_@thLpH.sSd_GqnFv Ac%bw_#C$~m9K؃! N%*QӆR;SGZkԦN.xZ@8&?kzZ)u]~n+C-D9j"ݩjeãALך/T7UhOz 8H:JFI[ueo8i-wmͣ|zp M9-T-/@V.Jɰ^1>KlTI^ME]Z<,`hQO|鬒{=GbإmqQ?FCebE O`"rjz!$+lƩ+`w>;%ɬ HNEv#s_L/2R#D7[dDpZ)4r-|YG21ДMߤDV; Oš{@ۍugS:, 6etLy=sL#q[~z)jUE9_~܁%T];ae&I>.Af[>PQ(f#=U>wh+rZr̖bWy:̼MAϷ"]MV.046ٽR\y9\[v>.&$\C9P4þȰ=(#E̙{]QjEgc4EA>xR֭+4*~9=oE^$-!F%0-5~[()2*8>#7x¶]=cmhv9 ={xAT)*HudJ8wY(b)ʿHɧ{U5 ‚3WtQ%6¥.2-x(|jEgȵwwvVe9Ftc8j4+9!w7=C[r$-eHqs6i4+}A*uTGBoٚs$ |0aൻy`ĸ? <5KŃRSV^,;ҺDHхya,J 0<-O ECVſ>}TՁ|aR_R빣X[խd{$*;I1{ϽOƒ>Uw751:H D<եz+E_ArYR;_E4 zbE@{'xzX7[`D?$T> :gļL Lo}aOnHaPݪۨ6$/K.r1q & m1QPr%weg$_MLȾIm G (9 6mRC<@hb$(X?>D3F0-֛1 QA?D$=ފM([^HfF7nsaMٟ&hX2-kjcpTOzHpĚPiCvi[Mx~S0-fT˿n9x ;\\̅™y0rqvF&t(2L./pO%UxҏFVAfO`yN$]&eHBL_`_c>MW]^QĜFN P_< '^16oh]`{)ӌ4H9ҋsA G*ٲ1hdg\\} kA~Lq.]i!Zgt;sb1#2srjǵj4ߘz &_]drmn eiR$F2(L;Z,]B(ڦ^IЪPdۤL kqs ߜ1 1i>:`*sQ` =b[y՛j׌?)HZ7X=-TvٔO;jP<,:Lq)f(2Q>_k}O؃Ud9?I*bư^h9U4egIgwm-ouZظT{'mlaGeg;jU0JU`޹nQl[Υ:_ˮ-bXBG]`;iҩvu,.Pb [!}3: [?#u )j6,d/ JDI-SsOO7_cėj{Ey_9(D k(˘uctI+?iԖ]QXOe޻AjXHkV-^>PCmOݠ^̀v_2fnFߔV"=v՘.!ݑN#cΠH\1-* lQۆɊQ1%ʢ0Wlsα/|Q,`KW(G>wC n)EG}X1$_?fcBш]HR?^t-gA%~+%rۥZA :׸4-}4܁*Zo+7ʋ L%Iڕ= ִ165-3؊u8>'uMwN-0CnBq0=.%Ñ6NrdK髉9-y*QxY)-VIP\q nؐk1uҟ D$v4[g8wNx4:@ (ǹlRALtwI OLrzp%8Oțo8jA|5!\uq6jn6s@^";:tOl#n2G0^5HsxΝ7+`*{3b\L d}\-Gm^[ru8e?+M'd쩐v FR7s?Ǽ+Pct/a]eZJh*p}({4*@T Ld!WC183cgiV7*hwң7; J^5͘&J-Ǜs?jlNDRO JC{+1i,EC%h-uOk`uZ^vy T3q6t\_8KNs+;B%k! i"\=MQ٣^hGq5)C>jT15t~yVw9em\)twË,@;P 3 >[_8e5$!pΆ AձL9W l[{/$s sB%}e? q-GKn~W ~BM/"USXXǷ&)w+ng"~ijFUd+Zx+5j@<G`T3-s~sBoHd!E$ՍK?*q Ԉs-h% 㲔wJ"I(Yq`ҔaRg[IBJ_hbP[Z!`6"w w#:N7"=6oR8n4Z\#w/QD+>Qѩg[[>zO;Ih5~,b 4abE!qf׀nB>sԇ-l䔖J- |Ϊi0.f6+9sCg ^Uωoԙ{}%Tm^*[u@~P= |Wϋ Y<<2r34G_ H0pݦњʩw:R| Em+̫F*q8~VzGI4 ZRcלk]Pk60@*pwC4U@iQ}/nHglcmd۷9P80GEE\H"pO {HG'!s]aW5ߘFޡr]-)v޾yK7-D7^䭅e9oѭSl[P]zDoaNecbe;Ff^[^X; RU߃wk7vu7,+< jjZvĤ߿`][3Wx&9|gP$TVR"J9ђS&5-*/t[,%&Y6p(v^LovI5?unF'\ e,Jy4|D~r~0i{:t_  WaSwnt ~ GEsQ<bo;m!hyM9Gt(*$Q)X瘺0}YdwWzAAc K[!-O1w %OyaPv iE兩`֘20>Ψ`6AklBiP,EQѥ6Eg%w |}ucEPWUdr0uN$+ >g3>gedHs(&le0x{A[Me~uYeǼXhh[lғsQ3a3Sb,4wF{s/S@QJS˖́DYC 鷏.m0ny^oHTT_K uOE bh_8pyYQ;2t >mx_ֽR:xWWC"6 ԏ3chƨNLB8S;\쀍V(E&=X-(?cc` 4 p1*_@Q;f$@oNLl'R]@~кH 'G URKE >zڏV//U!CٖODa7q׃.%<P~5M;AXiSHg??Hr)=Sd!yZt+FfyFfT}d)év'ckdo5ӑz6Gx'X+.>gByb=1w p)L;M*7>f w#%j⫂2]&6bM϶Uɥb XG_FbBD='*P\wIVձ4ޟ͡jn'oz&qNcy7׼YȲ+1Rh!-!U\3Ҿ_eT(u)\ڛa X% 4|w)%Yz(2h,'ѻqy#&l ~&Y5fzV5pD2]+% O70CȴHC`R 6ƒy;['Œ4D*ΧƵ{={TRn N^9BvYQU7;b'μ/.o0KB@RY` 5e9@hr9BP;X-=td/A]}Czn9ZJC(LŖʫ͞0oGُQh a,OAkMbv۵M\ frpw/x)2ǵtIygg?ѥ]3T5=!)?̂W[pv]ktѳԀ,nE6ĩ|pο3,@2YR|G2%|2ap: WvƇXJRb+Ԗ3Wb#ٶF'!1XDIy,)og$Za.y~aru BB;GIJZ'N3ĉl#%UL =N >eǒaMIHSN^eKxM덛3fJU.xl.f>](@?5|Ȧ" _G2VE@*J:5'K_ jV+̒8(I|L .סu:Av#ܴy8ИrǺksf'/@1D?f[T̢o `aβ*ѭBS0s[s5ptL& +P݌{}RmSXPjpMjlh wqzUfb e`76CVƔt,߻w&ٲq89q[֗]Ӎ㟧6=M~WrU2̠% v 3B$#6fҪFq:LqDnW%/u䲳m1! zn'fiKš}^ČEȀ,# }y㒧eslꖧpq:L.q3r_Wl *-qhOxw3_-dFnX#vuQ]q")ͬvkAẁ*zpX3u&1oz [; }-%uBJ`N{4iR܂מᾌ"ľOCW>6mS3T_Qr\5((9Eqs~gq ?ӯi`9VZ'jΉyA< uU.l/xֈNvG`.+Q6eJML͉;|HJBcxMNաo@!܄ luL}y ,rL\*DV[* #%I~پBZѹ:WIyU?]–9C[GF^^e]ȒzLD|Rx_Peht,N5~45Q&ǣ½iGVsO64a%sEj.\#y7,z @U& ^O8U8l4x< V_T &b&u[ dYE[W46 4_!0PG2)׼3@*p<'-/֔pӂ&TJb`B"#nͺ`J$؃>v">חn*&8b&ҡi&9zH :EVq1OyrL`f!4RBIXSoNVz6ѝ Nk.pI{-0H0J Dogr/CsIr+"HޖzH괻%8wQa B4Ԁ ].$qo6Uz +AW]FR7qTW]a^_  "|T<`r|ϫtvkss~)`ǣ e\:$Gqr*Vpm ''fzHQjNH&F}<ޘ殰T?Ӛ1P2xW4s46 נ6~#XA;%jaTi*l2guMJ=ɁFthپH_)m䓻GWS0!3s7)C̈́Ɇޖ⼝%=\gf>}RXT7$3!qI*",*EYS+ݖG ƹSɼN-hR%VDX3<C 5XU2gx3,٠8۞u!_{\p7 ޛ=C9 'P[і/(ReC@QAk<~pZ?GV!$fGCq0NjUh08͗}»M}e,)=S]u%+יV.puYX),fH_Yq';lR0R-y(UnK>$mW78nxٿ,hD^m jE%H2e M8l @'dUߖ9Sp]MQ9n/`E2 lrVTPu{; 0W14FCXiOF&k{ 7Wt*alx3O SZd#"h5Sԋ?$GFb{Vrf_wM.nhHl=(RlzuevqF'ҳGa /禦\dU赶!g_hD+Q7!OO놤SVnk tޖ~s8Geѐ + }v€c%&=$!zzB)4VO$cWQc{Ə_2~bFPW߂3͓UjkG!S3LAY bt`ۉ狖lu?ºW759ĝܼ'o 25, %K􅝹#kOpDoRce%Za rROxSf83z#^gewo?{$I 9˖w-=K~kCRbNeJY [4,Xɹ:  9N,S."u=&7 +4 p͡2>?lm2Jl~ Su8oG(IES=:$6;;f׶] A-KrzZL_#Uv܊!zZWx_!Jfp#n8֮y6oC>f;q®?C2Rٯ[^yqBe=rكhcG}tl*R ˣI~;Dѻz,qDބ?cCoQ|aXͣ~)%2Sn b!s+FAr`F"BiDq&J\41}X5QC8{cA'#d}gABK'gdv`,r U0HkA2PI&$EԌR[HةlF A)+OGӘi] =y9Vn`2^Ȑ IiF]fo1ӖWFqK:d9D[L Pg;Tܿy Z4dDR& \8S2OJO<=uMpDgeOT"G':QI)3N$'3~NJ()mEcw34r؊۲CaNzBCDy>ل[q銲 AIne?ۀHYӘ7j0\}j]+X=]ߩ}nY!˹_z2Wl[~Ed3WKnb(86H) B9[!zH$!a\yND\SD"7pei <=:ˮ">G53d֯+o(ݚ}ExǺfu_q/h$˫c+81slmJJYy!Fgճ +ѷ,%sURɅS>z-HK)\ߺC.6RV+j6pS3yз| C^y>P-u$x&Q $hÓXLk61L`jƗ%c,JVg3HwKʩw1\LV:(`)I5!FJ XPǒ20 CHTgE᪃fv-M#1~;4}JT.9ӜFG(gqee Y74'EA%9F$5 ; 5Z$c%Hc񗰓0㟇 ⦇E U4 -CqŰY}9EU-eٸy5Х8+%] U[ީ$ +oLCs{pB}FQaIJt`ƺkSKVs.>h -H@#HʺpOm<ħGw3%JAa?;o%Zg29Dڌp훴"̏Ő\S?Rtb[9uHR=UJs±y4:ץ旫zVެ Z-Q묁acL -so cH7 {yݣzfgܯBkݥ@@ܫGn'#ŠWrU>^$tm 1< X},+)gYEGt|V;ͥ99j~ɾv2|W3>JZLD*tG<&TfKЛ&BCK:Zv^BkRAJpD]s騙^aH5b?! MsZ!♱a 1Bm?c7ZE-Tf99YZ}sndGé[m9]~ъ(UwC LS:p`eȨBlz&P[t Q/Lj|30G^$aoyNlS,6P d@E+<eF9 hʑd)˯KBfKG w-(kKh^XP?+ܟ 5y PsR]5n`&q/_ùo+f݅(|gi)Zű!FN (f&m@d{Lb;:.\V1}|  dW6\?s۪xS1>s\"ȁG ic\v׿0w--1eĤƜKQ Ъa>A-Ó.⳾Ǵ( B'drC7LHxؚ?b ݥʑlf|{=g JUW:`S`d *4/m Rl XVt7G4fVt_$NO UvIqrZWkR|ҭUU!כZ3%=VN䥠Eun zϸiŮrɻhM5E-f&R|Vʊg84壅>xg!-^ZCUJ{Jon cn->ԍ}4m*@ У\= Ѵ|mʼn^7tQ+3y+.ZX%vf._ J (Tgc~Q.-9A|sٸ%㔊]@щJ8sl&o>fSbƳ t= ѐQ?:ItE_~I zI?СJ_z!_Gm" Z-QpGPEXlhA9/;x)Jƺh;h@81I.c EJA.^" ە9B9W/sµ?#j2b96n8C'p^OlT׮Ne*?R`@A91RZ⬃@lHPK*cps1|SP^1|fE+I=R:WgKǕH JQSP26tǗ5 z>]- %v%2f]z޲O=FGɄo^,hi5Uߎg%VVym[ոHʣO{Vvr1FҲuV\TlZͰ `Lߧ|7)5 C) h[L_i׽*i8q]_D_E,GP*]iRy3܀YDAQuJȌMfhRƸ-'Ѿo2#REn\PG0?ć栰1Ͷ}#Y]`ixriM-(5@ pUc. %RaQ`ӽ\Ƴ\ +8v7UG'utl7Jz|MHX[B|q<*c]$V~ueDΜ'WRlMQkgqa`2 E)ARVudzT"7-6oo͉s]\JQYPAMF`2_a\uMYVA23qtPQp~h!t˻Jq`ۉ˕Rzz2nE[GYdƇ ؘ~} * $fׅX )83533R*Dac'ki6u߱(6S܇|ڦTQix\r aCg 5-*$ޮB:ߏSBn(xJG93XV#6pCd z/˽#D6|fMՑ}ztxo% wXJl,=-ˋ8EL,pqoZT®aӲRi ųFUpb"d9M,xRwa wRXTJpD`Oi$Knd )bY 'F?ͻ-HXX.)iƆz7f\C~L֘M+EJĈ\7x=^ָ sO:$-P"M_3|QZϜءpV ٓâ[WTsl!+]aqcrU0$Sh<>LOu> h-P^-fوU HL]1H(fl1kоk( _Y8eQ18@DA9b@Da. XO)~D;G&HWO'P ep(YZ}T^ӇGnc g^Kȧቾuj͗IdƇPU.E%jIw [BXDF_kiڙJ gu:~ȏ6F1$މ*C;+5] #C-Ff""Qq0%i@ۧp`ߛ98DsazMtU&_˗ y9C'_OUƠi o=3ӤL3_33XJgzV%"DUyZ<3'gl$s""~k㹜 Щ/C WSyq ;"˂Am\~ilfh*)p7ch6MԃPcO  [*1BlrXf$@qG yJuG|c(pZ]"kś U.9, >R q-X+Tq Q wL>)adk9_/I\4t"umrK&p.m8,i% b/[KnYmQr[~z_GqB_uHǩ}M[KzB 3,@; M^F}YFJw8!g50f.Y^-|ij|/rE4{>nf$! B/f1.]0qwʓj>Ҡ8)q*{4 3 ƇH`<LbqK IOѯtVT2~SP*Hky:Lޯ*gsca<>O=i™NeeoQuLme{ִIyؑYRz޸.> S?lBF~^;\wx ۙTx :M ٻDh͊m7IZ9Sߔ*9PZ ް 05%Zx/< mpB' Cv!0P'9_ܬQ%@&J.,ae[55U GDW0b?PxmiԾ*+SHТh:9FJ";tt(`]/\4 mVqzv+$mizi#ߦ}5[Zqs0Bŭ 5̭Z9M֭_l}SP2[%m2o  x1DҨ>}l;F~C\M%FiW9@5~*y F:F)uP xD?$1$P%|F } >hc/#L G8OSro#}`e`&zb1,ۑ;ݯ/.LEzduԉaoBqs( ,63fDuCG_)v=]klAA\ BaO% V]i;S܉Z7+`y0k|ޕ`OC:%hu*|hdKXoD~Ϣ1PP{rJJYGU\R>`Eܸb#6<^StA> g_-r3ˆB ݭQrUut rG3(w.]狵 m;\|pw:%fX_$: vҕn0Bv!W0􎼶[*\%Yd>ںɾۉllӮPO?`$ ,ۚVZ%IP >jh0 ZFz3/+;tVX^DmqБٽaWo. cd:c ?EyP\ K,䋵_t_p)y?^i[p2S-_@m 0`2=jg{]GQɠ]iYE☣zGޡ]QaҰDH5NcYQr\^'a`|h5 #$~]t@B uhwϢV˛4w'f46,^?zv'|ވܼr$3#'P:V7 5`#'٬K38M3Շ$#͎r@Y'w~:10ݬ TCx/|j_}-RS9_Ue@S62߀qkm\9nPUW.~5#6ީu|vݓ$wI[;NaL֬+S髉祋ق#Lp}Ŕր_c.`b NDaj?(ѝٍ3t"LpIM &q WC촯4 {4HWo╀@ ۩HiyyMK!ў~Qm]a:gd>0݇$B(mCzv**]n0mxͼi秀2/*Q԰-Ds|FL1sk5<ȸۜ=T5VU?lRbw8wQh<qXĥT~_{G,@\jg>k,=6W}IJcGt,E~] ';?t ":'T1;Ij@:(٩t_ Uj?N8隷U PA򒺭/Q'Z J8²JIN&u/a r9|U-״U1/>.pE\@1 gܡfW9V߾E}N,̒\cPLWz{*Z,aK<W!Kc_(u{E)_T(=-C[jmL~& x[L\ax礪jեw;V,VE / Z 1M=QR\o4^'|d0#x&DWL}ĨSd*\nj֦dm)+M^֬M;KΤH.'L^]1w[*oy׌@Zɗiw?WrQMja_:,K=x3&rR!՞H?S~[\5{ 0FoMظ-XWJ`Y|:n qw҉̩1up/"q[ s%fu a(i/\ͳ |?\O^4钦pu&SG *qKkp*d[ƹbJ`y pL?`x |QjwVgaJqŽBF+߿-D:J :," aҾ:rWTj,|NGsG7Ƞߕ/Ж*ɷeZKOVޘ‚A0umgUSX!n; BcW[J$rl{wrc)T ".5Vv=C) u /SIߞ^s&0EQW1.k-JYn=led Xg6L|tPc Ew8ln'GSQaz}GZ$Zwٟ2 1|rϵ2t`sv3%@Zɔ =ł͕ڿ&٦89RXD\4@0Ց f_aАrջ!^n'-yk') =\.T5DR^}IoZ$!q:N m8&FJmm~Ƶ+ d5ZCy^&#so}eT&Ϳ ۴T]5\7 #29dzmO`VA䰊p %1e>tecQ?f=q6@1RrbL&t8Z*IpVxoZpDUY9c&U(WB(`P:7(Qw,o MeCviSJ0pH GV2) AtCG"cB%O4%u;*uF6ţ7p WFy3l @Zτ{j6Hםu*lg\2-&Hz!GIX$5$ϯ_<#oLHс8/b8KMJ30KȲu蔿xfcM ;Dm4ŜsH=Ns׮df.v "u Zp5NӾjt-=H)7׺:"t<'vyo'80OS_6]%0enl{n->̼P`r\֘t^7Z Q Ǣ<(X_"PEn95Hj8lUڷVձY",/t@$Jdtt]?Hi¡z% /qI <¹ab4|bH}s싹 '.ڲRWX q]jhw]1Kr✤X"4=6961$_@fT#JКN<2vVBE5`yDzP^7:Z cC8q >?Xo]3I9F_ukg*["DG-Q-7Zk-x$;f)3u)(rj|p9ƅ*xɧڵ*:khG53cpclRT_ ַbd 吶>:X,քc2!m|0t!"`Yl㊗ Z`JJBrʹ˝av eP|F\&mFUmpib56>'?s8mm3@<p`ʹzTR݅!.)_}7 npɂiЋ:b>n >E_ yTeyXkfO]ZeGl]&@46ː"gA3zB Mf ?@/VD_g*uqJ7]U)#=kΖw>o3rKT#Mdkb1[ot PvѨ؊}ok)۰o8B phË^׵Q~|mg$ENx 5#IT>ooE<#y>2Y֒ :If>錕DQ5㊧,9(uOϰZע|Ox-܋0^WAԁBL3-Yn$Skkn/U-.z|=ɠqFuSɐOL)PIX2bC~^ਬ9ِÁ0Tbp }s-)9y W<*L ?F Nn?;!2ۨx {Ē q NWApeo_<Y!*l~M'-[mN6rrcciRBxhɀT Y_($poJS#uo7B2aTCM!##M&WG,d-|Y6\euI\6o{b*WDkp:w9ɨC{X3K }NzL6Zw%5tƣbډ2/uUxҮTW& 6 0t۩ [G8aCAc)WM츎#zVm!mھdMޱ.A=L H@퍱Þ_/~o*IÖD{,>գ@|+OjӼj&yI e\7D h~JQ YQa5p*W75([YW`$j~aN>qbd+A}X;M!F:N?$b|z |M:*s3x#DcP|LwpQ'@  Lci-xOCN~>F@}3@fXGfq4pNB;BuG))3-$`;Y8Rϱ>l8%Yý, 'jx?gyJMʑBMzLDg!. 9cO UJ _"}ίZf="cK_  ^(WosEg$:%C>e2v .^5MǢz?byK 2SPeyXN~~CIYвDAP% /CķM".~dOl xӅ.=^_&4TD 0m :v_Ѽ@:-Ͼ1wy ,Ҵ~TA%+̱g:8h>/"ݐqK3D rI=D>pPu͜T[¢A:h0ḵZ@- RyXp_#ql ՞đ }#]+rK2wl6oY^I92DqktxȺQWZ7?|N<٤v@MS|{F BL ~B*JAg7dKz]`R)iURʝ Z @4N^;bu Kѽ@':Ĥ#L\\ÎӃlp2ڼ8\S}<NK^abv!7ܓɛP`9mu a"mg1_Gt\]yоDEAW_I9Cɀ0iK l6^%IPU)cybuv/c^Dʭ|95Aۥ&k콰uv$PI\>ƅ fu we)d~~o 1Ҋ":6^5sU@(^Nrӿz5ގp9@r4j~zcqÀB=D{ :r3:O'f3MVBbp>UIiuyk ۡH(E̪te^͓&vUB:uHZ{3:SPY'I)iPͯкetx2-. qVH] (g#ɼ~<حc42QOfQeT)t[b/Ԟ H}kP1S0>.e"{о<_^b Q]D / R~g |!rONY<˃л4NBS'=;؛p;}3*hb[ 2r__GSx}mW;" w﯂eB-Ѡ!:s- "ٌ2r߂4QxvsQ>r .z?v2O|!*"J3BAC"FH/jiQ5%Q4/:C>͂`\v p'u61IO>HRcD1}FFW7!W~/hdҁr}ŞHf aAuOf2cr%z.^ uxrAT w՞HHD PĞ?溫W)b󨽷Ʈ [7DKf@b#[h4ۋ535F=<# %c(<ⷪxQkL\n %->扐vIgSBU?0`-<6UH5)$=z4t,O<ͼZ % a+M' H,657~VU8)G.jաndo;oŖ4 رPOpkۑn5[gggBZgcz6l,FJ/KLXdiuUPw^]}_dE|цw q䩟i[?ߏ2bRڪk<5w_v4Ovⶵ ^ 5^ېց(\Eטf2l"TPW1%/O%Lь _pQoK+eo0 XH["R8H* tܣL'&ʔC(ӯ& tW`D)Z0X We#cFiȷF[pF!YvP%b!.vS}]ؓ4:.Y,$& 2UW94I~ߦoZ6S?{lUb?s t>ճrD>q5l jD,}˜zZdE7PO`mӲ;}N}|R5岢xx^{}L:~qgL.RQ6N,+uțARugL2bSmyϑl S$P]'|gl''JΧ)P{q_fYǏ*v#P gC9GŮױ^dAP77!IA)`}`anIօJZl* 옜r8Wu5vl؄H ?wSF# lƠjwjz! ;d\hr? !;t4WoiHw R&zB'z$5zǂEUz/ָ,tN ,+bAtQR5p1lLל{Xo8`:;ª|Ll_^򣻇 -Lsu#H'~B WmQ7-MF'[nˀGp 9#=Z->q:4cGf)}Ì*/%e#Iɗ. 6]kf姸!ͯ&?խ9cAADavE`:k!Z+ Bщ k`wV*\\yOWfyp*_F] U9x B?B $tBeCgyv%\6+ ɻr@-Z[DyWنH7W9̽`oZe|{a)IloGW1i):-#,4Ĭ^,e$#^Ա}pt\: Tr C`LvsmxU uAgNZոltZ\{ՋG9Lj ϣSU.k(^f쮯׌dɾ(=*wӁ#yɾ1huyzd6$B@Kd]X\=ta۝ ~ !֧>zwRD8&V*޻ 1hL+n& NHXpmbVnۯB2oH$T]#_O.g[򏻯11#zB境wAp^b%OC^m>@QtptPљgOZAm/ݱڔDDnl7$|4/%\78RH6d݆KMskv:Egs.kQ"U A_}pΪ%:_IԹ&B{ =-C ]zpF6F$vUٵP={Jd/.9Guyi1>aUpp@ {bYfGz5A,l+`/uko迾 Lwg.}iA)ZP{3(Q[qUE|{ zؿ?8q H~T`{p%;ӊS.Ɲy<>:2dPSMcm1 7߬O#}#8Yh+|n7QIz1Q(\b""z}hJ@OV|QШ4gڰuҝNkDrgo 9N.l\CJA8U2[ ~~9}>cy?a*vN9M Ť#O/B;X/1ܔ>|\aOnQV; QE[Vz. bfC:Q@Ml3_pLUsCt& ]>>\^ZW\٬qLG@V߄0.yϻykDe'pA9uM/< g% {|*" %t/6U2`@ BrS+>@HvG|%2kɻzM#i%vrPM4K t>(b?S.)n=chҰ$Eey8 +/,N0+:X[n!X?fC ۩bj7څ{ܥmHw!m8+;qla"a}pK#L3)p>6R/y~8zjspbjGFuӞɐA(w y =:v#qli(i"{ǎ)޿ |ag2dVf-3˵z2fכ>Q5IV+l8^d9wұLj38.ڑp5^?q!D(]KqK]+s3BF9LB p-R=TTO{Tw$XnoJNINOv%w"a0^~r8LL~lr׶$NM )FgIFXa( 盐qѱ |QlW=6vc7y I/%kϔ$c9d sF^Rwuky;֌0ZҸ%Qq:@z^BCegЅ(,eThL&?/IKCP'rުZ{:m'24g*qޓ of 0Kw;8)߀i{מ(#ѵ.(d' -Zc@I>HO7.-cT?p@l{dr_1Po+B1FS_h&%&:ԢƓN ۨ5g2~ǎ R6~#S05:h圗'ærx[a:-YEJV4bhY(gW(>`M6R]G?"㐆[Ft"{կc"`diw&x?'bLL^hn 0 E/X=d }hؐZBbq%@){2Ӧ8] aVKڦ^FiޜۢPkgl)/-qfq'fݺu0=~/scYaT(SB8 բI@Eх8Zf & uݹn4DAvclK;|5  R=46X R0Is''<(0H -8wKxA>)%[?fB@ 1X&? `Ȧ'Z 1 i,mLaR*)QXZXfoIΟ-`0o@ 4:ї-܇5z(yS( Ɉt)k7͟x",R(^tWre&/hp¢=JcϳZHT5 V\;퐜Dc'A G)!zN4x>ON`&.8s)qLSQ䖞|Wa(\](5롘H|⿵:nuaGܩGS V$o+aYdzNf>lsYNsZWHBRۈfo`"D|~ZGZ;Qz,o*O5ֶ`E {e/u- ^{XU07q2د|S5?Q~JhX\ڒM|2r<_ᚹ, U| yNKb3BSѻ'Nj5)7(@{5r:#86%},xԝ͙2{ mlڜqFK||]5ED[™emv{w;&xqA*p'^U|ۀy-V̖"_Sydvϋ1Qa5? AdѿI,v]hR2gZړ lsPsFܿW!>.1Qv`AM3cq/cs?۔-8987;A2 ¿YݬKګ̡ӮVD9 ( ϓ@N$%S\׵g>VC ^G:CBV3kKZ=5.(fyډ|kȦEtUdթ|.H.2Fr} MQƑ SdZzW3E4.82#G^JSnTw_ 8C̓I?-,$g?Kt,Òș"7.p߲&MPfqZu٠NYÇA Gd&ºGc{=0:pHzQflC[B¨}nO:$g@_1бTrv.1Úv1x+mD)ָ5#dixXЭ/namwe%$z] H .eLq3knuU(nX`00зCI&1H pĿcW$LaY[nJ_+TR#_'ː燱$Wט y4x :uHRT"UW{gܢ92k8~y _`V֬ۂ)ȻaI瘁xrGD|HHMK<L|10Efk<BGQo;L4 8E)ZW]U&ץm4'D}\FjKN5lb/byG%޲J"s_Lz핾.iq^^:Z2Gȸ18ҟK-W+ct 5|i"E?Hh `]ˮiluy'ǂ$:e#s6(E[:!2lcJm~i.`5XU:)]jBa#;epA%л' /ǹM nﴜ@ =m6ՙv=t] QWvAn_Տe9eZ,apyEs&4hrL.>=YR=rW mAWpW?X[ye͔7(3MPOxAlxinvzDV?$D5M Ϝ QG"'HwIܩ?3hb,g.Iabt+KKf;1pNw UgGJQ3]TxOHק‰gyN ݛy# d.DޫBWƅ12m>deO3ސ}O+pA:N Qf}z"K~cm S#:'Tjsq:?G60,#eQ|NjnocOg3o8}Ju+{ %V8:gfz#DMtKQ!."n9X=ב3( A汐)D2L嫍Q$eqޕ|:D:`{lHN>Av|5Q])J=kfIMNM3@o0ޕZ1FvWS@ CtIrzq1J^ܡFڢvumE]$Ya?ϴ6_C"pUGl[}0e]pd1ޠFy_U#==_XC@[ZQ%2&mSE%6z^/2~}aO9NgԦ|<@GzEz:b`e>})gkRSt;NFAŖ,ej튥^ۇ<1c1?nE,9,tBբʜg0RDQPg'|#HY;o1:>xEwq*vOC>pnO,{Mכի-<Q;t0#/И DZEz34TO`ܿ^173'tf1w ܥ?{b1`6މ EN'2@}we5ڢDA߂7#OY}G ۨ3$OѵL/庡Xb~cJrrHj/=EE9K!pXӞxqj (cO)Jl+8KcAgR@{CȧTU#dODVNo^TE)oaKfJ"<`v%Nd'*= ک JVny /Ŧ&nzF?JD1[ 㿾6ewY V_VLFOa3`F6 qr;>smOW J5vKg} 5Mͬ5I!?x'IX'~U``h&`|'9g!$E>] K*< ݷ4%-c.LݏRp ~u;(BYT w%5G-t=. <|y^^Lc ^m_cAVb-96<Gp!=!tr+қ 84wKPulH09&s!,vk\\T’ >`qKB]ӭԫw3?_~eM>zV\Cz8@J;ՠzeM9/ux0ԕ"xD-~vj,փ|dT %Z3N`J .$ߩ'N>aIf&/A[$J" ;.[Az oTg?OWF4;D*rW qߥ1 CˋwFK#y[pH]fK3s~73kj+0Q;;OT./hͷ{F="G5>Vm%Z.2[]M<0L^4j,JZ ܊aFc/$Sʕo[!p{c l|he_F1B@n k)ycL%omIv1U 1sVP?8$ݨ#<*QZj2ׅm\:^&K7M%mQB4(^ T4];]+8@ Nʷw(7rRTZJEw23wuʪ61rf@ 45W!&:Z!hp4.e1_Im."b*;h{vx"7ڎ~Ԡ}d5/q?"7rl@!hiJmAs Ӡ&[ ayŻk7$"FooOta=9 uHMyķMi Wp)i]%ULLiв :#G&Zގ_rQ|8 za̯}8F/:p9('riy؍ Ж[ [K9 N#S&M%n3>%aZñeIų4jZ``e,UxVWU(^kKyB&c˓/YcșQŚlɻ(TE.#[y  fs$<8C̻Td^7@v -L9c`I5G-<1MJm> FmEm神&*kzN@ûlRlosq5A,U.f[|Ύy?n2hF`uYY3156IU!zZOcTMXpt [X=eupZi^f 6篸@uRxqd1J1H9ZRB {,BTXڊ.D`Hݺ~X.gP *uo;-64H„= BCF!tSš/99uAS![W`lHi/TA@5?).+~8YLAˉ:hzK?>A<`G&ϟ*Va(wGR;<7U.9[Fʑ}1/ "$FYn4۩]GUZm?qsy7A {2 y{~3XxrcRTy]K(E[WPӃH>Xdw)zyf8jDSqsN0L(3d)*\H{{L)wk48jKJ%2Ewݰ rhhѷ˜"J4]U.D0ze!gY-MyFSʇ(L&WWz Sjy#β3f|C5%Ym24>g963=ԃ9VS˸kcs nLdY֚ՖEtǀ*R *3 2%4PWOy!`q?03ŶwQ6H3 :SnIo=^_>(QȐ`i_ԭO~+[GF8)J ό*caDm.Gs7>Jd .2&VeRHXÁc|zƭmPv\V/\u(^RgB<繉A_~Jr ɕ9YV=hAsH#jcBeݺ>ijLa⺡]`IFuҀN%G%]6GI 1UsV 0Űu xhTpMb7GkϵDLL"$Q1DNw(x+W3P8ιʢ"Hߐ#BU^2Ӗ4 8QVQ^r_[b5wFO*v*-(Ob} KH8,;y7SZ7É ֗}:̘5$V?VO/C=1+r Ft WZIEbE;o~)ҟ>Lr{pT L:~#_Z.nH+=|LQY˗Q,} |(DNTǺ:[0$ca=G\$+1X9t1'Z-^ߏ j\M17oAӨF?1o֡ HwM L!v Y7ԣYj^OpkqDRJjeBU6=B! #}ĈAëe(X8#M [x Becwu"0@@S3rȠiyB{wzQWK?]Ja$`n}?aMLa"| X0ApgL_֗l&lőϿIÊlóM<t,[S6'ͬe%_k$X=AB7o DNg/SثZٟ:,YX/\<7p5ƛ(KXDK#-Iq9`җOl^ cf%dt;#Wxˀ*yqX8AiZ~Bw|l9 tf-?bhܻlsA3̘q4W-(鹹dEԶorpӪ@z')EPBG=CNQ<7J#lH< %Av.ãu a\[b\D da<n069̗̍ `G@鮛anfFx.fRR!1F bSDp0ugNUū^!:(S'#D4)}ε tlwԖ [Z6^`$oJ(™,1iQ,lѩCu'>$H8r ιsh_yJqGE_*& e33B)ܘ0Ll/B Hh_`ˬxC(;ӟ0䩲v >mȏj[ǻGI+1|T[ L=ac/wr4)Kwtc_A(#7)F-/Rht{Ggm:%qKwȱVos5&7c]A30-a 㦃I~ [ t]N3^]L\8dsuyt#ﵞArv)B!nȯ#8J%88E2ggȗl۫rk-brRQKOheyS #hEU䕈jg3M<վ&S =QA3PM{Bߡ0ۮ|8OAaV2.wZ춐R$ X~]\RX.sř:Fe}N^kF}EVJ 9`-+7_G`+Y]P?ͳrD8DKYڍx.ⶴ\3oU'&uDz2nhk({7‚~}Y5֏ 4]];{WwHA&$%ɩˎ5ѤqƦt!NpX]Co 6 Q׼c4L[%r5 _/p !AUv 0\Jד\LT>e1 UW)!cԏWhpR7d7rB;WLԂK<\_HLh1kZBD6{{ԚB 1"45Q[*Oy2_vu"VАMLTyKTNE.*l0>FXq62[L@#q ׏NHu) Dz|"=51J~|Ȫ2Xj98oIz^V}P岑i/P̍4ϼXdAAN4do6y.@7kQ>9Apv#ҥ(ZƹSZz+u2_&&⍤I`R(qPIL$D7HlX]3;fʉ;+' &r ?Qӑ+tY-ݰl"^w^̄+"xQBy,)I>u^ }|q.,34XA\F 4 YA)'?3~-(Rs͓{ͤ3rE>@2Dtq+`%gq`{"@V"rW%zQ.U$Fs{0E9,MwE<0 A@FNviGKJUt"[>9ݘ\DahEE߆ MAȒ${x*O:0mf`;@R]hoSR[Ӈ|( 3ٳvn.y\ ~Μl8ɖ/Z;oIt0xZ G`O*{^B&(c*0k*E!R̺hH54⛋b@ث襶J,ԍU8R?vj3@m.Dħ./X 'X3Ox&꾴v  §Sp`JmPS T-TiJgtJ=E 0*-Xڪ*U#Z=u#K&@;t~'J`RҠ(wN(Y3ُ3v]#p^Od~G/$rma 3(P֤lFr:AE 6ϕ_$@/z( m A|U6a 3:ӱ4AB;Q0 "!ֶm˶d51ݑA8Xi Q+eyˎɢG&:ԝ+b<Pݙt~|j` tV1%,sCr>3k_2`z9s/.I$a|z lm J5r$:Sv}e|-OD gdm6+7zLQOĚ1cɇ8"%dɡNkpA$0xb  њ 2 ]xleF lvwt׀4r ,Elt45ZcsےKN.J 2 D]VyC=e+X Aou󝎧E7 ;\J`;WI*v|#'fp{~!HW} f˽ #?tP ; tUpR)'1Z&7j~o$qZOa#>Q^Nx/ށ7뮙z$߲TK9dFA.+lֹ ;mi-~]L46'Xʨ&9P$iB@)μ fYLqv=aӝV%/$ V}6%!fԉTFQćmeßcH<巴( SOhi%gxA yJdu0w|2[أA'J(+l;;>_6oYӴG񶌂jJFs}}ye][w[!M8Ҁ>LMpGpnTz5ʰjѴL[MTR#U8* 7v&0=ιe@fM:j?:1/37vJv-qpygP0QMJpQ&,C$,|v,NǽޝxD0w.(smӷ]S<9/:? S{x:bwD5Jw4qD'Ҹys}hԄAP59r/saΥE8U ;jϼy`u5\l;Z&3~*N>gi5;yy`k!# ٵ\&lRpUc=JFpiiRf A>8O׹:S=dM qvLr VO:WprچU\HȹLS B੢Qo&= Ņ@:Bp#o{%EP0 MLj6P8ƃ09ƀyTYP%QSN&ʇ&t E'ٟR 1H ӶYռ|T兟c^ 3D"j*`qg({>mF1j:b&+-LSգYFi˝a)) ,</GSƂlu?jvyjg%' #[io,e{@>I]mG]n ugK9$Ec>267϶΋DibgJ׺)eʻ{σ@Ro??%"z|x6^dXuqd}2|!ߑk3{0wPXg8+p֮[V}Y;;WŽ“ŀ[| Jx[]BM:O? į1mޓ +AMZz@Qa!qvi1t\l?CGPο ͞_aE0Lvt/do^z2GoZ%G5̯֠Lq8/CEb PFgB,Jd6_d"RT=s|_6) (JƟګgڥ""v+UVP@a#.s -2lYYD4*v$L }o"Zr+w"(5X+`vf"zNBĝc$098]Dc&kn' (Z/DEIA&*oEĕ/DL$,0wvkcc,ύSYV`_+. {T| N(otVp]QkeOdڛi4- >{ tI*  Z1@)ҍ PCB1DS$x B'| 3J/>>){/VPSVS/18n$ DrDF1? rY l>]C)r+}7qPGޭe'>RĊ U tYz2w'~"E=A`3óUf`ԇ!}}TGM{rwhOjBXWq+Wmޖ*qQsX{N>SCV[8IAzr'9];n6do^R˥k QCh@S⽐.(8`ߢfpf hX.x##uh~ rpW.Qqeu-ʐfɜ 7jm9 '`բSvm'1EFL]lS8rEA? |<63UHy+|"3ZT}9 #猓 ȕci&.b38b)̯۹ P-e= z<< 9e^Ybgb SNSXuv[@YsvM5BxŻo^f2 ^N])'y%Ӕt7s//iH}T;UɅo _\tko ULyU#noc/U_;AN|RHxh3Rx揆1ry8#{ʛyt.۷-8?Om- ^԰p{ZUG@[ #Z:Kn]O:n Eq˧ >KTٚU_@a$:΍fo㓶!%{\SR/0JUblW f#ESԘcMR7`oudͥد}xugy;u%T#(jKy$e$&mѫN>$ld'0[?ysyhȊ<$EWz@%5 Ndfzlhh9j? n%3~ PS>6R6cl74|peI!_60ίu-4E.o_L%^|P~Q*0vb9Xz7TkTw4|պR Z{ǞC+𿨧͏e^P֝ ~y?O(6=~:v7PB rgH˚Y,0ю %QY)Nv4cOnR$2.aP6zrw਌A Y_5czg @!8"NC*GU4$2EWpS]tզ,7E皪xQ֜WMvT!E}^[IZ)??"a]īKV/gz %;*X܃ >GlP7Bo6뵮:L,$!qy!-S{-P7f sANXyh5tQpF1^ˀp5X : C 8BɦP`^ "\l~#C!@ц,7q4ݻ{ 'OB gslw2y_>c)?Rc1_r ǞUƺF v}y/@.TLGK p J\"W#xuJބєx]n*99fޘaE!9m׶s?rfx8L'𨶶 g)3 k${ei !iKq?zN"1W9I+ĥE;?`=4`]~\~W>\W^@P#cѭJQ!qn ]mt%۟x "*:צ+Q <OR'OH[ $zЋb5r:~ =iK3|Y(JÙ0/ $ۜ%ފs,xjK1JRjJ>LV'~A[ose:4,{W$g"exC6} sC:녻N^+DY7/v[RS GǕI,8pR 4VAxpL m̯PE{?ki<7YJHn)2J`}0a`ºyů_*e5C,J]Cs"1! ?a0m?|}?4"CZ8]f2*D;fd}I.2\Z e-n*Pe~j(ۙ M BDR,Gsw^OM:ShVEDX%B Gzӄ?6F +0:Ӄ6CU̲ _[zn.QM|BQ,x5j\q%OcaBn ׶+d^Gt{ yj.+=GwUHM uog2x/V"0ޝ{^y™#hQ^r9̈r7Z5Ocw7CtZ`;4I*#=Yd= ʑUv1%E>S]7aců.O;xBLj@tҘ T2y×ΞరT0|5QOv*t҈w6䐚p@{[rVISTӕ—E39Cs,XqpDT'ޫ#i/_.Exl<&u&,[\?grA`5 Xn gRε+H/SzEOÿ/]bx9`= 9G@rx鸨/YZ?jJtr.Խ׻e@.6Tm0Y}ojF';!@no:ױ>r0^R@K ǫci?k_%^)$bڢ@)6 a14 yE TNt5J%KC_?hṲN[l"N91*l-8)vZٿG= }s$a3tZ !MPz Mҟֹy*)sd&)'Pm 0ݬgbv@U1r;/b͋mA-I-I3@a`їّRRpM_I{; &Ԇshiv LVrSt*[>(Ÿ洽5z=9S{5dPKU{/v'_#喼֓W"]ە]~cgel@| 0YΏҤ[r5 VmsVK⡂La:ȸ4XXI_>(Ai=TEWi&ےV|qX()qZ&X*`VkQ0P jY2=5Y˷aX53:H"ROӡnzfۙIߗ֬GD h2I" =<~P\A195(M.YT@K%UU$[" o/? Uʅ䭬/}1 n%~!TTSbz)s8!AZ;hy.wf$3 :,yj "aN̯4U(A{?Ys2qw"073LusU|94k?f3 F$ ֞=,GnKx%[+='&ܷw w X*XC|H|4 dr x0̗\.:yJАð)3"薩4DB sc뻙( 7̱`tpt+uΐL",>}'7: EEW_^-#4"cWI[|mbd"\ яB"?B.Ahaa$cȡl](R)1'\Hlgu?AмT2C*з^WGtfs$O_ѺT@ݺrXBd" >0jͷ9ƕPIW6I]eKwśsoRksZZXwiYpmPVlKOF0Q{Ɗ:A1q;O(}UOmWB7HF؎3<+gvS'K/o"|s0R|)aV&Vu`k\jTa{@Ep (1'a5.GO>#U x}ŽKg~(I(Gw`bӨu=T#XIa>E ? UfX.ww EA5 >izk{SUЎ9n  >k kr!Vݦn3\+;Xѵ,nEN$5s\uݧmjM6U5 SF`z%eHmsO pJJE"SdZy ,(\U/F U}`΢ JY*<]γ(cIs^:q dw[қE)(,{e9M _n m@>٤WOh#_9|+yn\x׼o .a;:NquZ|[ Q\ҴG bj-Jw웻wYRHdL_qk_SB\ΨR77sGD\[asKt3d$FG9z^]`}3TI8ay>2ӤCA|H.pL!e㝍j׌6A csÈrx' C#5y)CL>,$ZۣⰄfvWO^L>%;'~'3Yxr<7G~&\=`~ ?ܣÐ08m4+&\ih/tFA>.M*J8%5nogKnt3&;ysl ~pxwX~JZԻsh 9fJlBkMw6W kyzX\-T'OhT.i$mWsSճ`tFT?} }ȍu𘊸Y'[x,čcKu!TiFӆX=ZAY uac8WO %U6l|o{ӟ(0 2%ZStSm֯6(GWHYЇVŪaZۼY鏜6DbP- өd`Zd:j'%GU>ܣj#CF,a;V^%GE\cMa툩 GZ'JZFЦN=0@LG1s9q?uXV? ٛ1 :b($v5l~ٽPwF|iLW1u-N̶E^v,le*r5쿌>, FV=1I鰿hĊ{{yfw^(m,\ sʑ;DtV5h[=(JmMf[""3=]#-O40ڶ$*g1JnwԡÁ!Eh{^M#F[%[=]|o򢉅捞*-̌ `ĭ(޴}c%f݆ tQbKOrPf`].l+:k.T6by3@O—A7%a,.\7i& 7Ey"bGp`Q.Ş9s1 }GVZeU!t\GuŵJfnȤ1ջ~:z_kƦ@:*&i<3I[; =oB`> rZnH鏏N 8͛vblXаB+MURu!XI j? h"oJg]"$`^p0M#k0"1[hT\2jɢ+K'u@a2iHuɧ]>+׻˒/+WW 2"m;zofNңcj6-t+.v|`om9υNܳК&rHOOqjWl."v+~Tsqpp=%8 b?nx}##q=gHg\0I2f_ܯuҮ GR/8)WTX@ͳ&</l6҇)YKqFSk0DN dlp&Xm*uקVȟ,U7w?Ԅ׮7X;䧧Smre_+j[1pқII|"kC*)C~6a-=-uRny%ր_k[^jE_?#>K2v;w!Yv'L4%."[=R(=󽆇Veu3)Ƭ;LvH~53q8BE5.*\EGgKnY,`:gѕ"@a9SOM[{j-puqUuQZKcA&jL"\>5<1o,Etd^UzyTͭB;@DbUgiƵ@\X^?T'|/*7TxC?}.آ2J xe u[*fu./z\S}>MVVfXvnƜjk .Gq&Nvӷ"^( ݊? # pŮCe*wRnjj3[r`f2rfQI.n0C|`Ĵɧe +6mg/H"qJEoݏAPʳu]iKAao,iZQɪ<GC0ʲpUθ6;jU俔 @A%}ٕA}xWң_Re"MwچW [Sa%<.y])ů7I㉶֍ ط FJRc/ȫ'/5o G=',pcf@RR xOtgV;^ՠG5e4N8r&M{3ڜB$AB ==yg hT.oR lƇ)Y0[G46(Ll2l5iyΝ1okq|;eߊ]lfwWgChՎR2"/+i$Nxf17WpO.ˆ֘.ͣߤQߴ9 g0uz|MM.X00Ī@ZK8hv ' ;Y&{^PqhN˛a7}C2ċڝJ4$jī.H_BF|Hw@;14RX: Ѷ4ݜD,|\*og+FX}UB6:If@d&,?wgR 7G+ߊPPM&#ՠB!+ݏXjE>׏W8,8%y徘FMȌ / ` ^W j/ʃ{ A\ P(E:ORϴkU7$ }Wd6WrO0CwD Eںb[>mЀ1D&ZMA(hk{'!}x> )t'/9?y`=p[w(-nT,kddzDi+k#rBTgMoPx'&dR UƯ1dtdvwkDtx^@-*xP v.`q>1$MQFZ(vXTQfĚR^5T$2uR6ZEz]s_*&7'fSl)6g {EEtyUz<"?:փxgmLm[Aq{k;ab~)xIa(ՠoJ 7ȍ#R0>+0SAw{ʚ-A-gut#ZV/NaIQvz d4l(! W: j8Б\(džtGup8w Kǎ rc0?0;L У}ati'Pk>߷؂v`AE:0xNoHyG奠TFÒ5 d)?LIT KPtNkgƲ~~C՟Њۢ͝dGW ac3rϤke1':T%۴eb9,iF)C#QAcҳdV@WfxYww6hC̱׌)[T'o\"ؓ#K*Fa8z谶x 5?-n^VR4ˁ47X[F@Dd6TZCy\r6L e}H*nG(nCb+D4 TcEqV9 ">k=3`'3goCd`cG|]t;$hĘ7gR&3s O(m8g Dcφ"ԶXIST :T,(dfX -`~W j-y CK7ؐßy5M\ 2ll$+]qv~9"FgN+v" LkՐp^qk'*΢w39{kY6R SR֠{TtW`#FNa4)K/y~⊽Ǹ%^$,ԢV~ZjfE;~Ruj 7?x@(*Ą⿮ ěENѤ~'h2ݶGT;i5yq0CUG*VZ5a@ZD=:x'*K +7@xuh2("=DIχv) Ȱ~-ƻ[ n~4z֩pc@f}#<ϸ+nXnX/=MK&Ar(̪}06*zŌxvv'Pao[C4j7c"@~xiUپ,㇧`CsU $S[8H'ݹۖ5 3}.qB|STbYca@e_@艄)1*)qkeIA#9R|c h~6nx~?f2F[`/Rl;e{z?RN'!|2R4E߅%>WkAAo#Ogn{wvBJÿ7`)Hb'}I2&tUUߝ,Rz,GBheхVs9sD *UN!&(<8!EO 7aح\g+a9$[XM %m/:ǽQ3P o.k\>7yەOxO3Qx;bSihO}r ?#rTb}X”Tf.\]Vod:Bsa)emKDgUt$2&;BǂH`v D`}Wzդ޼AlL5LKMhe4eN9p+g;5jwi?HaH]W ÍD@8*O}K nȉ!fQ.\:yrK&Ro@%N<7 E|'?% 2\.5%lg^`L n8,0jTQ{K ͶѭaCSn-9]Z8ȯn<} 3Qx YMnUd.?6D Pf['__VS\@N\na|N`J>Y3lTpW,B gW2a[bD!@\%],>;`p6;ef|6N%`C0FIbʇzM1 .J$d<oaVs>4pw&c[_<:7' W&Kqg:b{dWY6 衖UDX,J@`YG ۠(ſEwQ_ls6bD `I~rS6` `spg+D!~޺HBˌH÷L=MY{* Su:Q@ }nn ? 60[>AϥKI;Q1fK">} `-Vk%]=H%Bڊћ 6H_uˆjsUZE'kPo.lvm,r2&D164O6颬ۊz6uQCڈ՜.4/7/"B y6n5FmTJHΎi3K{?J'vq5M6bAV fsϦhf*?:4"~ҮfMwK7#OOx6SH ԥxɾ2i IF 3|ZSUԃ_2}\W:ob5f'~KbCK>n$4ynҸ ?A I]Pv12,[S#M @یgؑ߭Z*{>f"B2rtAk[OW})&B׍YYp;0yUyq4wNN.Tjk+jʈ FoSms?ӛ9ށEY,WV*=7rEl FC(&ߟg@d:z.U6} qW~~-j-Ot 0u, q&j =V#= v=B*n!mZ]e0´ROVF@e`B'r3_:wߖ45\ hֹQf2[,M܉x5.>$yAf˚= XѬc曵)ܒNkt5B)h_xcfy!-t(5>gNẼ(~ =Q-UAAW|-#D pD:S EeM~/c:@ 6Ԛ'rNYw"W{_HY0s,;ҲR_Pq6tYBV,q?_]t rJPƈ -ÊO;tOT=kRŔW67$=76JTO|flj8N.qJrRzS%5u^q UJ=`<Ƒǟ(ȃ ^-EO>9xפ:E+Q,Ӈ J4;ԍԜՙC)iY/i}w]կ5.uC3@`Ӻ""R* ^_^N*_l2rȣFx5o+#7.R ȿSGbJX!>[uWۻ%Xo۶^4dxRx@^Mh?F#ʭ_k&XXѕA5A9*ec Y_!Wx[pAҀK;跪ʵ5H^!Otqn :QC_K+Ew~,NqyfeX"2RM~]yяɸdR"Q<JK7z n 9}1/b-|X"%*~Syms׍ hxT k\7^<'%mq|F9qM%* bӏٔSѴ= K؅l&mӉ SZwU }(NC$cWSjgy5[/v'gRvwL|m]J\wf x;ɣͥ]Y~\9ϨO6S;m-qWƒ-{#`o@%DlcԉeX}~'RH8T qje!Y>96kzAepWWpA=Te2]b3\T}r{J@^v SJ 2"  ()S~@~9^ᏳVF !p> YԴI#-+*Uv*)&__j\/#5Ap^VѳkIѼŕو" W9;%I'}- oࡱӬK#Sq2)\xW*L㚣f$!TGI53HX|@bO}f:@r$O#}6@T1". >( 5DhSJ3?ɟ@GJ ͝,nȟp^dB ~pLuwj;L%EYrC)gK9L쫒T7G0+A6Bf@$A7BxYtEaNؑ{(⑨"~W=f6/^DNtZ(&4`|$5\ MeלQ|l5V1C?!"zb7j>rne02 v&q!υlp`t҃Y(X3J<Ƭߎ*:|f^4FdE[+,Dw7 aah# }ӈ>uCV,-7Yl|y/˵FoNS~, Y]x mD[Q!!(ߊOko~П_ >*BM^h4z`#|]I( 1tdw;n;zR4IhcRzR)5D>Lqcj`/WFޓgşm|A$d0ێ7!p#_+psNRྡU_/fʈŲ[k2P},܄1s̏`K7G"l8^} -UfuY;K#^3ֿו ~\Ce0(ՠY:%7=do$}ލSX 4ШtMi|ٟF|4ЩgnI!O#!/3pWnAt1|J;ikG7ox.D}n8D[+Y6Yby?sXR,8YT̳$pvð2ïL:N+-^7D īxX2 p5ه$aq\.xsŦvh3n` /򓠲 a8h|r* Aƒ󧽅U)m{.I&Jw%"1M&E[MEѳZPK;l9hMOq3ed57?JHRl/ap9:F6 >F"2rxI(٤M爫D A k<:3'E$ޗS*H2F&瞋3% A,,O# `#`-)raXJ `Nt)bG M|_TLTuPmJxQ^G+m](pO[F*HD#yT$+es9ŏ) V`P(XfomV棇|BT&/V@烦&twB3(Mf?<9 =3o ۴eh<'t(N;Fہ5 RR}1pnxʆ.e:h Q8.zJp:\[xȜ>1c2a;kR>ݬAgY^PtpW)툨 !>cD. , Q_~&lT L)9z*j &*ekH4)! F 6\tvv n~oviRqfe#>p 6΢^7b!+ʇ 4A{: WI8ET IggR07R,$$eJ -q 'A0֮]k=:Uj( nҖf˺'cg RSDrIUZ28eslplozɋ;-wGؾ6JmvTӹ&cQ{} v(( :mEG+r}O b ~sHn1D8䠥H? ̥&4 4j0ېL̪Y,[*Kx &MVBV_~pȭa2| v,E߱ :k^וŏa\ H_zܞ$cjm~WhJiVBu'H;wCȝKitJKErUvm6NP2#MC䱴}W+Vd >*uq`A\i3DY+}:&g=QӚHT%Z`-6[*op]@JAz5Ixn_nKH7B<(L+=5N8BxXҢ] 㱢ۃ/umC+$(LcrHZwa'\ R ѳ#eD:#ey8{!H7D{~s:KFn/),j.3 GmVVzThL|z2.6}~`Hqv6 6FB>E lo;h:$!;CkTS$9;| CsVVZqƄ@ /| Wq@^>P\7ćnI\ _=?d%cl}3`x:a?tK R@馠>>vZJpn,YȅEE`"%)VY((EjB1_Β˳J񝖢D6>RQA[)0k#&^J,YZdoV„O z秔į9d`"<̣ϣuM-XA-zA!X=ݟ-+)Dm)5 4_:v{ SH;i}AYky\~(ZdkJqI饼"c:JTB(PmǍSČ{ٞ|!bޑ_;0QhzPZqn-wheYIQ(-])\0u]+gXh![S9bR\e@q 1]~ҭFڝzL%tnmn-S7:ϑdt5tAZA|lg3^?-{ ґh/V[\u֔<p: Nfl OJp fKUyˢc[WBԏL]XS:9)Udm;Ga64/s֙ORy-X'q|#qx (if μ,t"*!>'b X-t5-JLb+_٨!f@$5{k> &sUUz'S`D%ye߈(VͨƯV,[k, {#r`Vkta_Mƨe59@Hԫt]VYEV0cLf#?7ёd2nݭjR^,"f'c.ipHwjgXoG$X6~|ҍ-8;ȝTRIj{l]ݛܦ\3e%Ɯ=K.;! eCi^?y96l1/1go!ִ?]]1)BrD jRc0`ZN`L 1]Qr5 t\m8FB({qšN/lJ$ePvz'?!p"۶d!qm|e`G2?B\K^}KԵoQz z\t\5k2[ڞ@=#c0*C@%?b&# nvT+H$R+]Ǿ06)j0ƹg(Ŧ+~L1[gJe(`%X~![]$IhœN9҃(}. ?־MLĽ];pJ,*v;i( 5.JNZ.aR,weu]Nms̿gp|SPdkI94t3Ce8Pi E](F!qjSlHcݝt.h`CyCCJy^C4RP)NB^-1l8Qtn̑jHDde|`n/2>ţL3,9 cdxHǁKz&*b-c@-=+4ww#D\u:+,́b2p(?ՕH ˢ|Y(o*;S&#`̮=D'/~{!.ePxG7X˘ad`$e־ n@Ϸ9 qpCX:)Cfŝ1'OX`"CE'e\!hbVAI-v`@[<0OS7%i>9Щr:rR6tH /hb>ZQ#RHJ*"pODA9`]#> ~㍬'C^|L<8#9{LoW=d/=jMXÅ#:,ɶGp q2 zQ;!,BI%'nQ>M(}:E:O44?z}ZQ14 _zPBUC9/CǗ,Q+j)ک` b[͔Y?S믄^:zgkJĎY\T"BE0.>{E*\FⅣ4RwV R?pA@ÿOpV .J _}1?:Dk8QencOC%ԝskC1|ߖ.LTg|͖.BQwHZ:%l>ϩn~R_(U?Fen2|B$檼b.qt҈\ F7Дb4t,5f~DEnz.xUe䵘WM4Cs) Kv&dM8/>3qP&P,lgVA/?ICq,%[05S&P2 )\TN Vۀ\X‘b/ _e7z>VΕ̙ß'eKͳloV ;c;a3>:̲D  /1f1p~h+;4M4䥿JMosV?oo]L!Y'd[4 U/V CVTWqw Q&Lzy_( p>/Cs8H/ @8.IG/h$#K֣Q,V[iuiz{ jPY2=*^?g*) &w&(WtCTIX6 XEq ?Dd_qk7gO{mY#1-qzaAa Vb9 Ul`XeKS&+#?Ma^v y,Ğܿ_ԃPw\K;p(8jKEdG!AR 59Adи!l9$@Fm:A_7W=8%6S& 5?gJ ~ *2+g+7.8UmU/_ ) 9@|0ʪȳfB-_&)ԫa- ͫ|1l(bT} q,S.%>y {H'~q D]oEVI 7ʵ"_Φ`&P&U+Y<$+d,?I`-°Y3* ^]r)Py Ö1JkV_[yQh^4 r ;Vj*f@#H"_$$> W2߻ΑH#Vpunb!5?熕>-jYnbz3ԒZCF@1q^9/7e9﨤 >Ěn;ٱ#L0HJl.T7:r9Eʤ7Q/kW ݥ2]33^gW g#..EҞpy=pl 6 _ cs|J(.Хy_w Ti֬C[5oU6Z;ĤPC Z.0ҙAEf{$'P 龋4-{\Q ľT A4`%f'+uh x߷9Z.km>a=[V{zp:c<Y!Î15ܸh`Zwyn> ҌA%*H4LPwO8,?WuM "1㷐?bK$ &Zy@0̞yU$HD6\osͫ(~6tYQ[E'TEZd?3֥<B14Θ<}?gtxdUO$<VMV2_EF _ؑrv%re lep }f=;(픣IY@E%Կog.մ;ņJ먴x(M11؛81ObJmH~t:ꋌ1e_oTؤf54vy6EUeϪ]Y`SS{9VC0sL0X._ yDx]G7)ȩbqgQ,5* L@@ؼjF9̬?A?+ϧ }bvi!\M{W+~+߸R -t`Tw,f̝Р5mɔH%0Zg2{I}Gv|?ޭ"dw/Nc6ڑ|CM]OЋa\)`"W0GngLake0rzӊ')bZ$/R M@\vR; xი5xC}V#Rw.Xja&?AbQ.:Y /R{.!_`kQU?[dkUbD [R#0,%}~1S91|}Ҍ?MնEcԁvG&c(,mrr;HC[(Qb돑Hc@9;W39 ){y2ت)޽Hn}L;;omo߁hKTnm]v΁Ap|[!W <:)V?q&{܇0&=q*гƲ.#o p{U˟"M7ND|-|.qaeP[ ~n>jb(_3qWZR =N,)T6 #ЈB up@,!5'c:L췓Iб&%6(^/Oq=GGFUY{_yos@2,iӆɱM YəD{\j_R-SB$௑~=pF$B07{:qIcVS2z OyI(l\PuH 73k}aqt6%EƐ=P@S fٔ%FbLzPvMN̟j9la흣~'.y@ (^j2F.cz P{T]mqX|-m'o Oױy27/@T ЙfkK$̝ȡcC!1zϥ| )֙BՕE1/Z90q3!F…J^O.,YQP2 ,r.>i}~ tqk dB7FJjH瀝5}̻)hJp"%P{_r-~3ٓ2+'I]wbR=%x?,P<Ŗ :BB vyl5fNgήKJ-kRU536csC-i9G}G;} w@2xрL8(e"L%#EA1AԐ [DdexQ8]8S̛.5e㍵SQVkKVU@fxD@2jRz>z0|>Rm U4tMWe9|Y(#Թޠ2-,+}Yardi$6pڀ,k׋ Vr.h8e!BvD^Mz+'7X6̕H~ۆ{`Mlah~6x`nWqٙ!ԃLG(򄧨T9gݪokl}-a*kD֮z3:Wڨۆ}J5YKצ{J?DMJ)m=PGpH ۈF[ aW@%H, Y{utR8㺎*ձ<_甒 _'BϠ~ ŷq!Sd};v5맅Ʈi!L)Fúr@v_ AfsltJAyQ .XJ:-Z% "6l/Ԙa8OX|1<'8-5Xp(+/7@qLdѱ푋.~5҄opkMFg҅6FB;$A@>|9J[0mIupƈs~W%'a:y&v}^j.'5Όm@% pR _R~3фsOo'YXbХj`2`COuqvK v' Clo!j^^OW@b"$ŕ֋N1y[T尺>K"KoFњM1uX1 Wj5#nPZ hwB[$Q >zFԕlJ~2l%o31:&+,ݎ[o6mrȠQ!@8sPI)=\370M\awepP6_/ 8Ubǯ--bgQaW; cJ/HK0:t-D{)B0ΐxg1VQE_s*Ss*NZ/x"s2Fޔe!=MY_+7o@&:aT~*=] Ieaq BѲ)[EBZ?gEE*vZ?I|ٸ0o YAsI~b}Go-PW'Y彪V+371!i)0M<=~9kc7aV͸ٵca$3SRTU{~6ĴVQ.&ḯ gӼ4fßiS1Ld3NvݸQWPr(LڷDp:.ZNk>w!_?̓W^i s7Kaa]l{_jTٻlm(EI?Nh>Ghbi-p%ֳDg#Ÿ;'i6f 9Ei=~j]zCیs/S+ja ┌mgq2n"H!^pN67n,I>2B.{ɀ|&] k$ )8%?wX4@5q0k@|>gso!:T!.|^̺_® 9`sZn> B =y.$gS|PŷuHwEmņ)Hg#Ɛ IV]k?vp<#5pϷL֝˘-PR}ptڼ)9;(HO?H7'S__{r` %>, KUkԒ^~2HlR a,{qnx>'{@xXb3%{ ХxOW)hqYB:pݾB3z$n &R*RBaTSIƫ ](xBXyfX# ySd55ˆ7iUg-.,*mRSvLkc[TP?wyqs!kы j˘oGLce*@a^cW8 el?[LRbSOX,L)a{?XY/!kzMZ"<5:*A[@_D9E(;5E]%[!mx'p?fZ1;TxQ?yx>ýXL&HkFStx6go kLսvu,*a\JξtT}Wu f1) <\cdV5oaad'<o~2!LF/p!#KQ&؜PO;vsVIR=CZh6r("Q\c * HxJq9&]Û.DvN) 6}swvK|M(褲+/!f0 q4=}K毫줂':B}y_zKh:#Hkh fzC\ ~'ǘ?iLOE}޽ieQ̘ ;lJ>^ wCR9)݁g{v|Q \21^wv6L^CO6wgͶFH͉h$)r n}~ rjs]l*s.sNʑrECwB.׳Gn:.IO ~E%ֲC͔ޞ^Q`XT׆H*I{e9#+𮄖qh*s*ڣo&Ӑh}r;/٭*Ul;O?H*MXS=cO-pZ?gRk| (͒ךSz4޸(2@'7QewؚYȈ=f!B&w Ic]fe r*zMRM6ϲ38H}k;rwkYv8뛁iH~E,NaW6n,t0z$#lZLҶ1&ϻyiz+െhO_JŝpsS.G{$](j|_wui"I6%L(X>{&P4#IL 7XTۍUK9fHڵ+FmvB\¿x%'q!]9 k݈۶+;CgMW.Mf-XQ2/xb侯2ʰ 3'C(i|1icU!d30gi.̌ZtBz:95`rѻy.' `a*|w#}!X"^JiMT6%Z(*jiy+DU3RdĢ(a#9n !0DsajU PLQ+Z~L!f.f7ނo0MTF○ !qx9\k;d]Ɛ;^gjfX} YeԻ'Y#.LEyoϳg˿%'ۇOڝm'޺T5L +X݇963`|&IfS= |$ʻтTC|EAٱ:X LK3|tͳ8 jgZ혿S@x1MN.*򞸲j=⦒Z.20!Z;{oB3Cf= M"nf}ۜŠf^QѾ _)fB"S.~L7wVZ\VtNK 15Tb gϮ8=[v%>!INLj(!5+S-3QWct:~g`_#X T)\FSHQ_ #@& C.5WL|:Bfcҭξk>sّP;oUi11t#z^[Zxv%j`S p _Nya)V©DVe ۫'&hOQ.K͖%nA.=5+#Qt=VdJŊL)v2X{x԰!1p_b~Q m~g<#p袀ɧ8셜R]T %£!t=pI׍Uφ4%|HZ9@v*B(ӕV\({-);UbNۯrשef>,ϬI5*Dh>"k)aDA![5pMf/Q"|ޝ!8`Y]J;/ Mo tdbw\ d!WZ ]^%#nmO-pzcs%[E[*`MTy1XQx\l(Σ2֭g -\YFEy,q&˯;i@8 ˟Mi.6ڤd #y&Bϵ|oa;|_l&J-";þ=!p,fE6c{sd?د"AfЁst9Aj8Qϯһ$ hΫΆ+4B ٙԦfu"Gj+`PMGY?69}j/ދ~4'h'䴂X M-~} oX'whE#Xdhc+8B 9  ]mHN8sĜ;(\y-$''tT3? ]@~1%BUa4 WjZ WgmCY F0o$]f0*P!dhڮ[;~P`F IgSɨxPY=k7y2 HcudM5G҆M/(T>ϟAf1ٚ'2h'4ە_US&P PP5O BVL 3m>Lw^˝dVID0uZT,fa4EOota'B Y"ps;M%0yȣoktoWځe:B5٠T^,}%-",(ZF#__3ZIr8CND 3>Mr5ke0+O:/T Ѱ5 ڜ9.}ޠ#]\Objno:~HNGyb|: .C0im:X VWH%ܰȿ6ioڅYCXb9wdN1ܥ9s`pmSX>uEXp5Mj3hCp=B_R+rTh#8Ӓ$\G]f,yM/[9<8h A+2ٚ& G,fcKb"FgASqD{'DUf@,S+?\l_X&z!T ~a:%LL(w!`ozW4{h١jH"6hF]CRQn HXBr[\öeO-FzF1 a90yZK1)7hoV6ͩϸ@3a͋oF9fyD^ctBl)W?\ L`\қ3\EBot 0Rb1 z]Z40(uɓ@C|+վMr֌EryN(oz莶7VH)Gww&Tol]jDs:+6Csz̔S[><3CMo$VZ7ZEg%(EL9{Za.c<>4dGqMo!{ϣ?K( ꁑeKԜ x$xe@GoGñ5#D<)i0ֽ,zWbG mb el-k}sZ7nzgK*iRSW'se(a.2[Lt<;j=c쾎[5Y1|qL5 i2D BWeB6Vaj\J':}YwДǻ␰ 4z1Huh.A㴲ʹOBV)^.b'yc,! Ȭ^7 u ;5)S Q3z6H 5o gs*7txQ'7?KpILh)#7wFr0̣Xqf9E:|ރֻ{D (-ع3zLGw &iJL *kJP+TiEa@8ˀ Ϧ$EDa-J7Kf\ְH]L/&i#1qFk$Ҏ}ʺtyd3݊tƱeb'%8r,iBu6Q٢f k6MW5m'O_ܬD6څ/k9إL C1xq/pU'nDfGh/|j^Fq`Ytbb3.}EB/@,ֳ}$6Me9{46$ŕkh^B):[~RK+7p[@omM1Fz1(|@{~Vj0^A1t<1nٵ ~u/piD5 TdQ:9 Qnx ۈH,I1rqMIY7]RĹ"L lwE#q<2$RHgNC8~,paX1Fa<LSXߎMNk R8t+G uœ($It"Yb>ڃ "q)CsL6g}tXˌwDf0f-whɚZzFZ dHPL?:}G54ǹj Tx8sD~0qC5FAܹ>~=*Ż4c- x3$wz7SZI[|Y _&8!-HG2ȃ6ҟWx1O۰.&)JD*5&qL1@J=C9~ŰDqLlp*9Jaz:g7&j,!<ԝI.7PO=(HB3']42Jt%U|DÐ `OHoyKTgquW֒͝ 4-oVQ%+heA^H)OmmZmԽT1?͐wX=LxyǴM g>RF,~bcZl~wq?W\{"&]6`$6<z: 鬌r]_#J0]QU?#V9&[Z"8ܒnaB]Yuop TvUW.3׿O9y5K`H1ש>^mLva/!1)_L+C3WWM'?eeV6EDBzMաǗ0kItk KOj=S y2}IoS潥X}gIh_is >w&k9ޔUnۃ;$˗hN 1CkH˟/H]x-7ۛQ(Al(JZ,H*jc:'#c }aa#OJ,X?띂7e\ee`,m <w?%L۪#?0̕jtTgbKkQP$BOJci3KE9IѲ,y$˪FJaͮuEFCk)un2Pi!}D7% aGgjy00` 5TrDObou|<&o齶KP(G A̔f@zZn2t& 󚺒 ]ė -%;Rsӆq |[Jqj#[D ;O+Ci,n<:M*HU܁U!O "A&.sIʷmgDO'\ c sJ]ˌQPKeUQ&:4L6KfKއR.AT_im֝ʯn1d`7uGh60'ޚmC:8H iiT( ]o\Ϲipd&"o+E]:6F6ù+bC4WKX$(7Ȟ1ܟS42Z1<(a.B[iw[]RĥkQ-gS {lC2} MʏS :ڢڂ<|T=y8þcrJt$ bA˶ܩ)sYhnqY ! U@$pbą u09)︲י=Æxj=ة`zOdF1鷖e#&on5X"{mP u"\`|ӱͧ' 㓌{@yk{ഐ q6Ǡ]ΦΥjSSTb\yv۱< C'0Kx+wkOCi" A5{ex`?+ČB{ 2όKqMW%˲M;%ZC-۾iEQ/f\!;AuH۟;Q%]@7eV]`(ghJZJfi^P6߆&2"g`i!A$ %VaYR3%D_uR#PwYag gu"zLH XS)ݍidO2t 0d#eӕk=jI Fk\۹=ZI gg9ײJUA‡RF9 p2gQIM WKB!QR;wvhgQ>  ˔zq>Rhm>pXHֱn`$IEߎ3puYk˛x?:Z|o4߸]!hC͝@0>?r<>- $x&V^v= !^2iӉVQ8_Ѱy~FU8B} xP bp}x-=񇄇Piؔ"pT+bv'#VԧQJlw1S}@OS)5أCMR@^oGQw9Ky 2D0> Dx ~@&2e%f"1P㰊Pb 74L/󪟟=`-CBVE}wi&JbY7Cg n D (<ߧdWAGME؀27U#. eߙis"bb2cdxpMoӻ"&[Cƙ+c1Ot*ܽC[C##`?x+En<˷!!x&2DZOx}fCg N; l;t-0Y^mZmi\aБsmG2D s|'b eU8ܳ._^2:Ilj87 Q ' K;LӕHCEof7?-~䒞sf~!j$X<a`gy}Ѽo~OH<ԝxW0vTH4pصLSnxe$[ ״lnȢpQP=9PF$EEJS=SyЙx͒gOG8ȑEB}jJH3" GU`Lt':joAew?L hKsXҁZmRCG3h3!A$V(_ k· v;^ eFZuz}F RMC̈́ '<{Z iS8 !]*A*pJ笭ZR 4;+BP of< gzd_m+*ѹou-vO '?5}/1)qṳKZieˌ[b*.9I뒔),w>`\}Z#D@/>²J6љs M)~\6^#dq/nWǼCg(<4EE܉&d$7B]2^{t.-cŹ2DzV՛.tGV?gaG8款kIlʰ7P9k<@Fg!Rq~c &BLS4a$~Sd7ݩ,Ra$lM'n9rBՒz8͂rlQʜ{ڸ.thb@"O-c`%^+YC6zZ[8RMZBӦwyo# h"GߑYVi"vEQ&WW滺!dú?_IN*&:3?"6 Y trm"o89Yմz(~VFh8f+a5,]S=,䇒ZoR5/$poz\+ Wƨ:Yp[xwR" MocU~ iY)kr}Srqwk5f3ԯjcu!|m -2Uii8fFF${OnS-Fd(ƹmsyZt)&;fA4FFȃZl1bl5#n$UօtȾ ɀ@j`.=t%C]2#z0w_Sy}IG0P c@<:K#kc;!~ٯeX55\G 混3sKsF#Ex3)_.h{f;9eƴif\k ?5-[P̬~KtZ,0 C]=- -K :>.ÿo,δ|CJ{Hb%#zD]%ia}1n"T=_O^"kMk9اJ= Vtd3%J"όy$"^PMfKalUd7b R{\%Nt0L^-Gw~G~\}HZM >Eqy$&6L sB(X[L`Ycv!X 0oj)6hPݽ{K5;dAi ϶䢯W B6見= KP7M>pKdq"!aex6S_9QRPX6sS_Snzo+AYOX&%fP!SI|ice8NaC1?0&\>w.z}%!aca W\Րŕ#''Ƨ 8q5W!ہ.[l+GX ^w)`xF HZ#Gmفy˃a[*l"oωV5VAC[j7*^݇/G c1Di#I?2~RA&I99ǙbL[,!~ r|"BUE:E/}qܩ ϋ>j#Kb-LAv˘dJGtiS .¹E*djQTin-nx|pE@ n.T&r8fyˉ! M`S{JɦkB ˟z*h0j@gVKrŠb2Z,E ϔB?[Vۢ{o`o[X3~ @p#]5Ga{7m^7Tc)ܰJ^2O?_E>).Px @S2pjU hrǗYXeQ{Jx)g(O8S1j wb =IGx*x#@X&ȅ/76ͪ:5fkKE>(1o[زWq O=DIp3xzXm`diO|[~xƥ2eTl-FE!?0Lׯo_P ز.7xŋːsfL;L[%mSU&,>(qPmoh>^k>XLX: \\/KRImFsqGv+N<..uA `w$t=*VGH{4.nS;|;'Ժ9`u쐲aV^ L_2ִcH0L$$an_0H+PgYV_#3;UuY3ḹ8ABދ鬨Jf`wR,Z,HyPHyi۲=F|ąhxu1ux7i̳y&7`CIkYfovy!A .YFs tOx^셫k<-(9QNj=yC\28+z}=3jC]xsY|~ {^I-Sag=/o(^۩ Xr]ppshPg> sa18bjOcTL.HE !d;{EYɸ KmX/D E% ` )=!7 v3=nz/zU|sLfI}d^sZU~6P30 EIbQ WLVa;uJ Md]s/2IK,㛃J@ǵ/TMse i-!NC%QY+=B$/}^tpSfhEBg$oE7=0qLC Tloi>aUVW, 7n׈{ Ņ6g\} 3\ٺ_lؼc@=aZq_b ;bc0,Z1N`ѣl˫[U+־ƛ  a3P '\ӓE, /'Q}3g6cy!YmkH]\l"aqlc=1[i rU@^Hl3VH>~t67\3Uw[y  {6%9/@;%0̼Lc:Ѫn45Mjp]Wj%7ظg$jN*dqˉtݩrXS$|9O('q, z Ө/ӻ+Oµx.T((a24O#+ҟZ/HB PXySƉt^ 1?JF!U]1)BT9B# U}:]1clř8A9㨠9B||QS*wt!ޡ-wrj!Jj2։ɗL fҦaaD(b8o y"imq}O9mZ!Sw,a̳0wn*+mqBC$j_&@Rrɠ푋M^[2cjHpnd޴3lyf:&C̔vY" tW/N\Q5_|͂ŭ]w7gcۤ'_.f&^*M<3w~6{~bA8 OdUK!uޤ_+#|-hjh򩑠ԝ-nT>'غ/n}kT"=^Ȇ@"_\ ~7Hh]HQԡ4^霋#!.`;O jzmNLѿ>sk:{f>sHaBd X|" |ϲ hBIZjšu㼗 |2aZˡ_V%\xgG _|VNI}|r9!tgZg@iWjG5eRmcLFn֖Bm< MjcVp^U-4`SAmaĴ6dTj.$V'k26zL1EnA5eB-{Z<\^?۩֧?+vj,^y:@K;Ų-@ ,=w'<Ǭr^]D&V@d,&e;+}A%AAJzJi6,| ') 4/z? VnA36 ό@(_)N=]rnrЄ LBjq˪2#/F1YPp/m7I>[CN X9b_꘼w^Oj$*ce:c:ƥBu]U 1JMw 2rwWn_֟s@z;gbi,!ƑYEhp>sM^ jP \Lۖ&#R׮w͔Mk!VvQp&\1:niO[ՇBT}R7u}!|P ѿ_P'?᲏ /q(l,`1q*7 O|՗ʵ bJ b_zQQ4%en"p'IKC0O`Fr!>rWI;Sa_bCwc LMn/fO;GDt0ːRgI؞O sE XxlbmמNz.y |(OplJ D@O!ğZɷ0[|竟an1O+;Nk߄ xW[av8?밼"а S[>Ime}L"|鱟3"m^W5{o>"櫟Eq*T\fL,fD(XX\Ć%E:G uw< ,mGa6{=o]VJޡPQ?Ͽ3r64EƮ=DOqrE(M15CW.4-ok5>-?QT2Gujou/.8ƊG")JƅCJ=}(p&BXfVީl齳љHaҾ8 T>Nrz؏QQH*Z& S$ -9jwvEAgt^] 0>=H)iR\"[HfCL}F:^J=,}M 4؎)~!Q[+EYp'؅[+|0Jix@FN>FCY$ sPiW7%r-Kj*~A&9KPD 6kjg*G@G14ҵ.WROI@W# _PGz=ϱuZB2b5]pF*E27׿4##?ѷ*+|EL2ܘ+~ Wh,)-֩in*|NNEBZT4~VvUaֿ|3G6*KoZa2n(##l V?( AA?r:$9to?'B&y2P$;Zɉ$Xw'xwn+5' Df5\ޠYLϢp[C2#3Y^xەU&I+[ *RֶsW~:p9\6FjЅ}Ìx;Ovs(ʗ)Q5zAX53s+= fDko& ١h4"+^66'hP3mwӻ+$.w7 >!aI!׿p~ ,g.*$=a2RKa(|q/^Crrt~MZeP9gC}6:`ozuBwҸ1V"B1uݵ[w9գIfCvgre+Ɗe JԔYB_-=Dвv1[M A.2o19s`{3==ǵ{I!#QhU̔7mC&hM9qݴ`+*?-:=ķ۔P] r' G;qpluіVOYG(S=d&\YfK"U01tO5H ν𤏎*!zt~y |&B0d7`oc{DhͦW)><*MF|UzRG6kdw(la(\>o+nlۡu;z 5٥B}7RݣRs]x ^OF~/M%h:C8{(Ώb\3b{5Zs|nG>c^hevUU`(YMK՘8oFI1Y_J_,Flb4F7s ;/'\jð*]}pGU8.l < H H4՘85( pnw3R+'}NٹI\KK%Py; ‘]Q& R oiG|Y~,es6!'?:p,7Tܺiͻl]ee\=wo"O_W'd xxSHqQ+&W-+|+^ ##G6cբx5yI PN-\"QS(/4t4kAPBIMB:=}|(`pY>;$ TTpBd"x'oR0y25E?|dAfxDQVKK`ַ%zS*%Q*iǹ3r_6أZC''>PǺ'X@$ýΏr@-9D<(D B̾M^޵!6+rx{K/ZB/TcԀϴmKQjmK2V 'է"sZY &C_jcG˲=y.'؏)}("&cycSDg_d$5-wl dY3>xiL,5;HA^kb7lVn.=EVŇ$ᦪq# tTļc1o>xkf bդCG"F1ލ"jPf^/,]Kp- VsŶz܁4Q; AOqW~6{dxu(VU!\:p6jjt'T%[1Ě&O01`pZf Jө'ys;p@z9fՠ|FDlP]0Kr*9}[Fy)ʔ?9Xc#?TNdu],?=jSM.ufOI}"St8߉MuoVn ~(a("} r ?•; +j'ިT ryQٶgvQ9-=+ v Gj1buS=a55#ع؈r4UJ]Q{pI^SH{ud[jW#L\8}¶v;5{v(hBFP&OvCٻ^poR709o;ryL7u@Ɉ)ysphk@()gרE,@x:Pū}874+61y9R۹:l*1ڋDRAkN5\njOe}̝2 T $~>k #*o~0GȂ x- y**;/K *njmیm߷&0ajDP-,@iy_7/T^^..|. Omd,LTva^HW#ɝfGǰ+ í[AiS"@am&l&I }jɜfeT!PI#vMsX<SCwhP7?C%nwEi]'ABvm^yrdFG[>icosBCq*ƀ% d3֭_5ttml +j < _:HqǾ|7m3y|.m$#UŜ}] Ֆ}ӿ%qȊņsd%}teAwb֋EIOAagB2&p/ޙS8rcO⿵&jvM*m'Vin;Aq0& 4,db $#t1!BlBHquRqaCH̹}R[ލ "|=fCBCXt*WaiHDJ|0tXYqJc f0VGF]y9FQX AjG,WU"Mև=YaLY`jv"F4LI;VKrڶΪ~;wypbE)[㓆_ZLp``v]>Rb(DmْȈ$ơkJDz(r@9JH 4;aWF?\1cNnrqTö`]>tsz[ :_>߾WMXSt!;h@?kB'58@d>*ωio=ػ@c@k:9(D wK;Z%J#Ș+B20UOQ;I_=j#ҳBQk*{9fD⁑v@b{oacwImWK) ,B@(`ӲuDn=MW{cyE&>SmLp[,RN;/k@ξRSe2fP2c$-cP= wb #l*99n1~EFwotpd݄2+c}F[hpĮJ"0L=Q-Qzn`Op::(sa3'Hв\^қ^hI~i%f{n @"6 5k嘈1O5e+^4o'YyS\ZGX5H>i`ny: =&+fՌb' 0=$\cΤa,"HɈ}n! c+ĴABJMM'c7X]^V'f'2 OB^}WN=!U=á1"/9;6݃~9TٝSۃ>k;m}6c<Ѵ"^Ni4ce*YD 5da "@9W UT\ ̗^xFˇjۯ(w7 ݮ>O%ь1Ȉ: 5mFqaFE*_cphY^!1݅j2\:kh\k)X{`2%)iNZ FdGB8`d2!īKANp i"͜(GFaM-j#u 8rѧTŅ"7zAGPL~U]N*5_ZyMXڌR~/6+mڦ [ ޣu9!?VʃpeVCi(kz`M;Y.-F2B.mţkyĦ@J쉻,jpDQP 2]R55 mp,1 L64Lo ؁I΁6=ʀu6iFʤfOM*9⊷/F',!Ö k5vnA49#qFO)Y R;DM6Z^} iI%T3/VI |8@go%*W8%v%Gʜ^kAX_鏯΍L٣LyI%YUf3ܞ-_MKz-rvFK;3R[\C .-E8?C ;<jVqy]^/ jͩ*1v2e(%@Ǖ6@ jz轤jkgg^FH)i L,=gu 0%_1~ˢ"yxabw |"kr./5tIvl;>秚?4?:Ez}^M=Р̰(J;G]`HizU͗WnסBewA!ƴEn_7 *O\&8 /jm@?S_||tTi/0B]έpnkUO+}g".$F{h UHļ P^4!fmU720F a/';x$Oq_PC`*'S"OD:yuEr63‚5[֑bgݺ[6bt_TЎ%P d7 /ݿxPXHv6Tq_TrԢEm[.0"ft#cܑ3]220,_wsɒ\˃k=F0cTw.e5c-1IF5l5iwSԇl!|*6K@?f]Kg$7^᫃ZՏ+6XXz[MB%r&v 5fZG$e+\x<F V PeCV)4*  5qgz#t+eu0KtAP""J-5L@8|sn?3%P'ꫲ-ȎJwJN(jLnk d|µl %>FAbzk5Hj %H3+G݄|W JB"T$Y-}HJl @ŷs; 08[88ÿ8b C#IaH'G0|b;jdFQbk٩j=v5 -%UhX-ѣ+^⃔RoB_|1i 5X9{CP#[#cɤͬL_}ctGK=wd4[֌7ҥo@zS1ݥ'~/@ yzWސ7Rsd>P˦0<3wEigtǫLN \-t6SHobAoz\P[m|EWեc_{Ư܈˩;]oRQ-T}8yZ-9eeYU)}Lxro Zi o:6IƲX-搙MaV DiVIzE'tUjĺ(wg7#0O&ESVHQ>Go%+X@ӛW>O-Qoes ~VbT}n @B3Q`j;*-c)jrpTՈ94..pxz[Yyt08ȵ_ KR"bxL">y]@ﮘzl?Lq>ڵ4t ;)m;O\raUuB9S"^]5wrnۜ\Xs,βMMg3 w:YK{KZ8je*Bxcpގe,p`?_@DuX4"Y IAOEz܍Sf x X][wñ5T-bmV\}syFlPs*Q˥a' ͑ DKu*C|vQ.T˿w&{!H aH¸x NpW/rs۟S-sqaf(-NP6{ >MvC5.!A;c%*f6!̭Z#T<{^;~7^,E9VŔdE"XɅh8 \1583& d@ ;- 2Wo3dn3R+>UuN QH+>hbXC'/ iB)dLKxz9CTN!~ \~(Mi\KDOQ`hn'G+];/րÎ)>7cE)jVv9wҩDBrvO3 I 0C62J>soZ&-zk?Y|tAs'm8wuB =n0m_L45&0>cGįt# $W>/ 1כŊo+HkU|: f# Dg@eSPrHWfO#^05R 7ԝ_R:۞O#:N|-7Ion4 gzE&-vNV3ZU#6^O1u5c+$˵rJv]R#+ }#ZnK):RG)jcK޺|mߦ-62 ]zl)2Ո!沠5#\ṛ2' sTgotڗ`K+Vwe-%Q#ĕd rZ*Jqn{DFyOX(6L>˜* ;!A:Pk)Ɔxq3=u?EOrΥ>qmC}0Gk7:P̱Lk='S%yoKCw862ѣlA1pa>߷fv1 œQI1,6!N?owƼqia,[t莳rof΍8OQh?ʧy>I Lkb{jL@% Z*' p-]o8Uk+]8("jO`6őBx^'tNgR]EbfCB1):XLueC7nlU~$:nLY?(+qP(KhQ8PH+Yj\炔[.Vw]mv^Yzxn5͍wskV(t1H)uA!(I#fpT(-l{2)$K c>+ >lm|P]DF 0EھxAmy4N;K3Ki=i}_7` g Bȗ4hs\B3~,,A\?|1]G 3װ :17n͐Cgcу! ?C/}NްZ~4@S 9 OEEHO p<`mX&=ify!fC/ Ť!^-ԙ#a yX0-Fplҷm}ՠhvyfvHV9<>Mz-bYxR'%' .ʝz|}{@ZK.frؠgł8݈jѯcҴO ֢ K{;IKXa7m1rbBwyNjj ĉ#.='YL/+E/YG/ch:^ʄyg{n9CV܂%Hŀݭx;Ruw7F7KHzc^m5e6ou%.tƒ+!UaG,L̋`oGȆ>`B2 7۠Joӣ]ctMx$XYX\zMwćyqeJ^73PQhiqCvX^ (- IMƥ{qb*\֡}x2&Zs.NH QGxo&nNjS`ʕ) }sL? sEMNLWy?7vJs_WZ+Cy1;JSH=!Bm},;?`ZONqj#~{:7R |wHa:pnx߈L*hH'x͸U-W ,XX/Z|H > rEWu,R·0dկ/_U)o 㤪} 8,\5jwR9STX#n(uĸQH|<2|oF ֪\'6لdDyER*wrnrZ.x({4ő+w t2D=]eɻNg948E (́DcWS MU0Vɉ|Eܠfy@9z4S"7 ksVx!!8g$|VS+\(43|x\c-K1Qa=X`Wsȣ6V",cE( 4(곂|AKB\9;_ߍ+Nqs\Z7A;5IewoK-OP%tN־w/  Hh򙳱#HD:=x-6T;-NT&e|7/V ,:#ܺuTL_x/Y܏7雼}jX1LUz-e˾?ny+L]9 VW.n x$] ,zG.ͱ.HE3ɝ{ nw%w4/3.GӉg S0:@"9QޝpW=]=02흻$>b oFOMbK`0sg/ffIwT$`@$jB\^EΑ;coUj<.Dւq >O9%*)D7}']~||Hm} cFުy ǣ2wGPIBl/ >VU>~oV-\OKvS/]X-cB\}az?÷К 8Vǒ%]4η Vv梅ON1iE(3V%|y !~\Q: sg|FML|bÎ5_g<y_&?86믉0N/%rC8WLC pSgOd>d)KDR<~56 Xs )fɵGrmTbU sF *&Y3WzM\y-#0U^a10T 6tWx@p 9]tVp0m.젂:%*R.S]mX=2-"d{FPAR<qAaW㭬=N(El+O80㍌r<^FQ߮ ެ2{0S4Kd|ڙuGۑL@AM;ytî(+|+c˙G=1ii+ [)c8 룍h)+P:Ԡ Wg:9׍*ᆮX]݊BҍnIVc""6!_Mꅬ{WAMj Gs6eh`ɂ tVOJ3>Z/0 {|eYJH݉ty݋]z2/@)ʮRxwqH:tحr:* xS9֘ߖ$P&e[ Pmk[!)0JZn Fӽ{9 OEB: uyiH%hTӼڻq Z4˧qI}(5,r:~/vi7=p4.nDܸW~oy+13T7=9T5Up9:b^Tezn( ]0 Qeshj Jq˳rnB.od67]{4-7B&IY{%MzyRi$o\~\ǂ gn|Oy:f:X&ʸk) S$xǖ[ZRP-`\nMXT*5xѽQuVs|wɯA#Raokӣ쩑`{!5DF)F?A?ndcFFH~T!˙_?ǁS[ZVxJKP'`ظ%$8JDz .u6d~Tȿ=A SpqZn~oPj$"Q{h`ҟ *?R,2KjΦ7:jc7Ż /+˯*Jz(jdz'ij&TZ&iǂ{)h`ՇGŀ!Oϲot3DuJOu@KZ)fY<7u&dxX.z'h,DOaX툏{9zYԀi*b7d_\\a8jlUStbjgJa$K0 ק?9 w"D8-es෤Jvtڡ(&OtiBz dDʌV#fvϽ00r ./ayOsPHTj^:һU:1[EO7'?v_/77Ԗ+P#l8 o%'=+/V"1ҋ1]5K#j 3KӨ| T$M江&d3pvg>u9] w,  Rupݦf!} 7DBA $hلrs ѝG)꼙Nj6)# ps4!Q>YG?ZHxp#W yD*\T]U 4K~欪fx;gagnGc%K^c/c͛ ٜOZm'NsCSW7M1."grk3a٧iNz1YҭJB4gЈᵕ>0f ,ֻ7%* \ &ˈX rOaQO].uG/KY@fM~X.ms`,tȮ N aB.e}L8e?Ow=|@A#&I٘fN=V1[Rٍ=؎U]o$G{O1Q;pטw-O2]@61!;Vw aJGN:cےHfgFFkZQ<yXiﯧ@%^):!~L$G˪6O-zτ p4H 4}(*ŏܼ]WvG0g5=۟AXɄ. n5X/^BlxqN,Iy D Mj̀]m%x!uѣW~^| q"5r4ؼ'4n PGUKiv3mV9K-"e,`TQ`0Aа*D'ӚF%KZٍvC`tN~RGZ^t|fob~u,Lh;L-կk4.rB'<,(SW Y(2-!?641G(~nGBiu~R%?l3`W-^k%f =+;z<eR*e=5E=#^NK!UaXe=e,Y$3CEQ^q y[|-oOSI h ō# O0:et|f21/SKFZEX@|^r]Ebdbh¼/W7x֤K'+1L*EFvI-u E / p㚱Pe 旞oSrE߁>UHo˥Ó ҕ}q+jf~|Jm4B@fĪlTl'G$9⭼p2"P_6&%>Qji[^fF"}\A{|S%SehacQWyi𜶘H?~F)ɋ,hAoTQ1ĨA"]≔:2=^Ζfl(jV ${;8eP(ˆZn;p6eGV(`*PzlDLOҕa`fW<<_F [P*OtfBBC{c>\Yt`Ę,r[O'1ܝILÂyNQ-p[j)Hm 0'uV1,Tb?YtcZ3&C6~…_I7JB6CUf-v_"s<{-F qM ,mAa(ށ}&$)B~Šl3RKd/?m)j͒X.we @W<N?%|y'sи*.ҽKCE $jܞKvK OhӢ2vayٿn֢-Ц*un*A-@u2y^P8/r/ BUar!$ΛnϏ"xAީK?)œ2rNC Q#VAӂg_x}Y^hx5_ۃDfgcպ8Ċ񲙼D, u"4٥3Dq`:*p Pu$=YspAd[smnt"9/MG$cq6{/bCE3=PQm8@HH݀?؇ O˞we6G9hmd6OuIW)u즲^!/a^2A&?mU):'vWh5հ.qauӠ1{nlr5!Ui+Cӎm/>hCJfyVe'rHzkn> 7'=}tRd<9pd[T('$fKMia/ '>q@ҫ>&<'& +e566m:Xd_+Uh%$ Ð"QP+)˭.,ܰ8iI ߞZ5eěTRئцؠ*r҈씄BUZEb`+41u"زU#{`"urBN0j(Ls۱2`'3=^[.hGWGt~pd! Cga:Np 哴RP*nB VdjТy* m:ZLY3%,O CG/?t/˲K4nDC}b//azzuTi $*o5W{+>uio*&$5 [NGsatbd&CBorKoSUWB Ox|O9zh yoOC  jB84wExK})yIafy+ipk_]Ʃo} #ӿ[wA"$zʸߜ5L[H!c܋<4  |.?rpE(. W|ҲuM~Ϯ|ieB؍ CRmdnX%~Mo[(w|=8] s֜桥! )./Ah|F@ |>it0R_θp  fh! lבFUK[3\# .<JAelȩ(vj.}ǧ$0 r&VIz,cU4O&y/gh`;>*{T`U>Ch4\Aܡ`@' F'"x aH`/!= A+`{Y )Rcc`G<+1ni FeaL3Gj ܗ x/1Z%bplm@#K)wND=2 ļ Yɛ@M!p R"%2<佻u06{Ӣ ;mcRV#u=j8[~_cuelĸ(:#g[T}4UdЏٱ.'F iq{[՚%nc+]Ŧ {+Ȱg* -!s3cVàG7='b1SUlBN6/'W)")E3vq>>'e6* >{#V6o.~;ֺXZ_*>gԟ)_^ ^[y [) !!|h_Z*O-\z:iRkymݷ?!x}2ñEDfbaPc0@s or%^# *7XAЇ$oݧ_SM3^ o 3!7zimw/ݝ} E5AՔ<'$B7ek!h\n$VI; Q'p&[wh[H׶`l㺳 ecL!4J6A1ak߭PY<0hBơqUЕ] x?k%{.Ÿl`9o\&46Hn- 4۹4"j3I}^iQ(9T|Ujrժ¬ʞR!#/!YߙV?҇q+ks)6 _ýmp  nMK53 wY2'QK9%#+6$fO<6^ɺ7Ӿ6ulDw"p9OHͫ,p=tOĤ3*O;긮{IJ4Jr"X$><:zmuTkW(X6kк=ee=&g|p8O] y\5rT~p$]#hСGcI}QGnXB{n2%c[`i;`s?VC+Z9.לӦ<v*J' f[l;HYc! k ge%yqTW~jD P622,utx/*מGr&;yNE"-1j~|p<,ChcyxclGxp,wJyFhJdX{@I(QL04h}s%Np 5-'Y`l%79ԍ$6zjC!w! T1xޗruJZ^w-R퇀 _O PB>TnL6PC<I_Sx$ӚD|v'X-hZ]kց~2Y,3V$GOx6A6AO<69%Nwp<2ȊDOyB̔a5F敤]2;-rb`އ6d ST)W"YCF:QΩ7*5e0`tuL%jVM$IZ7:nT2=:b0i;jzaѻ!Ld v#%kG*,+W3uA* Kph,- 4B6˫YX"]jC: (ƥ~" 9֜+KPXŬr?1D8WMΩjic:2ִށ~Hfr !IfTzc^Յ߁8͔|A<-~܁ ]lTTx]3E<ܣqd L!kKJPMq>y$f}:,opXM).r*טa7e4;Hg;?_VV4uЂ,]'':V_#zP}|d)oN\+^H%e wD_1ff*P* ߒGSP+&^Ōy>ϕlt{WA5!p7&fu z'&Nߴ.U੥gspV+Ukhs݅>pa Ol  Ĭ/kjͳثt~ z~+;ZvU>r_vwKgz19L1F}Olޢ'zّvs[}\QU@'K@EwfVxLЉs(a >IԑMco=~/.Ǣyrx唳(z" _ϓZ} +oٯQFWնA-^ՍrٴxE=͔X^X,ga'l{J$s'Zuv9 5L?<9 4ʈ{eX=As*!=OJD`6J);Yp^^6-`R@wDI:tQqW  !efw0!D&!Mm]cGRU!M ('ium6;~ ǁc=:v1-d^! LV{ ҿ;v&mF0Nɭu,f|8c3]$=h,Wk|cu\kS0`ppkݒ >밮{anW ߦ'N{-:SW#l5#ry:x 2h\<[s S`ҷ> v'pY{ql*u]׌xC<ܗԴSp*|ߺz){M>M} w7_oY,{TsRp7<)*%& *xYV|Ϋ T٭PG RXꕋ=^b!;x˒)H(kanFa [F8څe"@aeWDŽ=[2=8`A> 3Q?駌 -f7V`G!(ڗL.³FHۖ־JiM$>Ez)$Jiö\~z3k-#舚ѹJhΔJWWG%?r#{US0&Lq,ȊZ}@Vpu~eڞyam/OWgFeBpD (,KebȪtY{ !ӿCEt0݊{F5n~j,4ntL9˴V%4 o11-"|'AcP"yу>IA$ګ S_l&8f8J+&֭Bd Z_Ѿ9ў$$p6"BܒZl L_3eczH* +W`jΫ(wbb`-Ad`>=3%&-!u֜I94VD珀;bBV;lxMOOS# ydKc:sFXp<7{<9.fWEŒ=uu!_Uo-j6VإC 8QFDJ<UL ͶkLZXuzu L?EeXdchAEo[ ؊_YYc#|p! ChSX1_K׋Q ڿ5Z L@0rg@Lz}f "=ۭtLIr.9ݣnqeFCxJח,ci)vL{rCܢ9~6, tY nxp|B9JCڕpxaC4u]K<~^JTm˯ *cc떱c3`= z{߿Ey7ic)pܙ!Zղ}\)i,^if_C D+ tqwgJ*y. ɱDp遪1~l`p(K4[>ȧ0;c{YcvkfEKB@dI^}V=V[ʣ` ^Wq1ky׃ WI$C1W<ѐYÿLy?nUtX''%u&Wl^f,1(ɮVڬx Y؂'YFCf9Wԋ;Yu-'oX$j;AJC^l&FgO(5yBawԽ -  Sy5=glڝLh f\!ɍCss.+?;osL @kűN_ нgfZ\qK%9#nC=r1T9xnW)} 9TSHQ AprLsbg o_yǰ2E@rJ^-+ *‘Hz[d$ MJQK +_B]hKuK̈Jtd*TbS|ȏ1&?hn] 'y7Z+%6ǒ4׀(͂qa;@zdGTK+pF|O(Ѫ@ =,e,GȾ ]Ĵ~2^_)^hz\!qV~W䵹;._ :w 8޽>VGS=g8^jl2 7EbO&{ sNR}_-s 5|a7NudZ;% cx Wl]P% @n*cnŔW,^+߅A +읺,"Er@IYG{ ga킣<\Tقj ȗmC܅ٮ&?mSIcGn1aXO 8&noK7XmYH\I,l'r8{ (:rm,ll"14!}ji|t_TM wEXDIϛ.ja?`ڐ*s&Q1Kg B 4Jhs'KlsijlJ(D t <WT i.ku*mB< $ZjL)(Fni+{hnAn:ixXYL2"yh[ DDv,ZL !x[H ͭh?>@1GS!mW.|JQ/%Zb}08vxR$Qie>m|o`RjcY$pzOu!yB)/лP*}Qs[SeWPl(Ise :g$>4.ΨF rԎBnul<8Y{- ^4է{`}f')x8T'F/S-s\m%^@6Qlr+-DD Y]".:/W/s[yD]Z}uV礒^ ^< #ȪJ,,uCd󅢳I (Zܓ'%/#ULAOzBs22;ɷ̨G5%|9}~%z qoK2\E+M`+&!g*ٽr$HIM־?> 4ڈtIY E8z(:߽-rŕ .gGB8=2n YSUcj*NB7KkgUd=lI"Q3o\ o/y(l{ ž ǡ\/ gī^"aAld+%y J>9qw_>Nz ?7ΰ[V+ˠ T*Z'KIߤLNpL3p' L|&yn.(-[H!* />/QF-[OQ.wJ#9G#c<]ݡ)^ |i"ܗSp qTFe W@d 0Th0^EhlcTldINU8I# r q״ki6c?&J v쏝Qvr-U`5Tz>W|6;{ݡ]JB>Y| -UKd8, jqݺzw9PDsf|*iApD-+0ֱ2 KѩVpX1j]Ԇ\~RsEWQL% H:gƪU!'7{7VkՑ?|Uy|@7FN=ECzFU($"pf w=Midۏp[9["Q%ՐU-ERga/fm틩2'TbkR} ";_C4@卓,1qpkZdy¨W)iwaeMV`Pa8+2P~'S BNxm}͆Y̍VϽ x~aǩ?dAmM|-$|yQOX[ArC:bcXٜ;%P4iS ldX1=oM|U/ЎcO@N]1`{SEIQrMCxA?& ! *uD{Nkk`Y8x#/wRݭYjp_J8 )ԁbY3m-[JEtn3Ӭli<]F&WU CwÝx'YSH'PX:\67 pM/.e(mQ. ۄxFMt $Q|W޳['3ZU$dpg6''HFSE)0 q72KX1u7ȳ̓x|C1v̇ıC?qxI(E!ώT& [fжQYcڃ2rM7H5u Q\bGEPgG0qN^<IJU=*?N zПlPn[/j16=^[xkڟ}~ܑzvj/ Cc@Tj;CGޞ B3"(Wk0 ;T$,Tyw:-Jٻ^{txvck-V ήUGrU粌XeHC9QYvؒgbqAM> 'h X<>-ۥ tWW؟. 㥒I&RJt>O~PXυg/2#Ar<'b*`Thu{u?b )sYt=1A Ԇ~y^ȾR}& O)7rĆ]jvSc~M-AyZil0cc+ՃViNOE "V#HN}F@xt^5Lgʝ`[R bm{ͦw;t5ΣFJ<Ȟp |?acg"CI4=d 5wsI ΏxV76qx䘄Ц'$HK 7B./2B"C[> U8\GAH0a*s0|Ƙ|$\ gMO8D4s'{AVG)YQCp<36$L?Yx3g)7ƪ5UPՆU=-DJf&>˸5GN'/\ȕv΢nk~X$iI210Y'.$A:`]YI6oft{i[,rmm!;ub5fؚ,z"vd8)"r0}`',֎Uh ?b]=h;?9boqxPK={|LqU-}>/Nq$ITIRڿrUOŚcDQJoivm9_TtgJ1y(&Ub%G#Gzm/Nl3Aa ј !aJ:M"r刓T,Mru~O19ӎŖ b3#;fO *ZU"?nC9akz[L3l~o oؗ9(P~M KD3)dJ¶8$t]Zt07$<[`hBʖ:e~LwsI [|":k=Y J*K>|nvȗy)QPLTm*PgOf 9H9ɽADch}Y3&5@2pae=6HqgbNLd#ׄ}-vէ}tRcdO$n~ܩ_NXEKݩX@3R_}'>+h1DXz p~jmLm9-7aֳTB4XN!/ )4‚&}FG W![+ X6=3حFEks xڡ $]TVE)5'}:̵_BTeBxO~Jq:$ [ggAL<4oFseG4\=wCli|}/|7ʷw ÙAK'O5vdGOżNh1.RS ]/W!>"9O'"a-r{b, MyQk`T+d,9rMl!h nyVubyN9Cm5Pv 5y,>=^~IŚ 7OH`i D4U7ȴyrD!!uCPxs[7v/tb)kZAaBjy)SrD7X{%(8Ϯv?+);6:w포k }wDiﭘs q|M1*<p:ݞq)Q^b#2fsjt\"QRv-UgO.2/C딧)ݷcwuWz_"xpuzK,ԼXԿ^O˛iP4lj/"U%P؍ q L 1"2CFtrO˄!`u-F$qz&@ՏLQH!<3XЂcaAxf1{ͧ\H,K64~" N"͞<، *C, 4Ĵ"$MGD51x2_RRp$Kߒ{9$Q/$T88lL/D=V>hO8_gĶY[zLz?_Uk߃hl?LjoUEQ -pro@[UQA{_J>qD`k>!Q)όc|k:MgE= |J3@ {IN ..G\:Um*^ ؜Tq& B+!DO}=vۿ>(e7[W) ?^(*Vt,POp%*̳b(ʂDjNt޿n)olSp%k5gqzG~Iƽڧ[6b_un1 %{Tԍܱ(MRw J'(٨㟘 #vŭtV=\nF;rI-M|E Sץ_^Xi sP:FĶvX+@ֵ_;^5mұ P&#e)2[q:xr{^x{b =OLHW yUJ鶟~R < j=h.%w2$47i띡 b?D^:^x2 *)f|haI[`1" &J}x>De莒6h,Ʋ4rN=38hr T&N5%ПgA0ÇpsQ) QuҦFf x9 Q¥?A_RAǼsb7?\Gm=N5l]Y]6Ӣ>Ye݀uR3M;Dz$v.FJ$R봧OyYGtDGZJT%g/{w}]КB"j(v¦-cY8bl?"2+! f BkF& d% Û{{75VˀQ XzBP3cFj{G7ʁq"-O7@ ' Ր-l[y.kVC*d }&h bA֌=?9T'jVДR#S dt b)_!4++Q ~ ݬW rg 3ULN=(^6VۈP_j6=.KI *ƅ<'HD,%e? DFi 9+eܒE>.%FY Zh۝"DY_mڂƅ -SaijPhߓ_M#i8R ) M.C7F(ӐD/0_ L? ~ʥrnE˖I [_fu:Hj+ #6-Z, % ;T ^>3s~;2M|'UB:-z#$1{%!:l؋." *SW˶wl;C鏷[#XrènP0qVC#LQ?#bџ$}aX QzBjSw! CXzQ8+=|LF\Ȏ#J?] f=6~ WXn/YX@){:L!%J'š \lQ]G[ \r;lE{$^z1\Zs\ Fp]<LJsNc2O.!ās~9jj/t3Cq)C @Q?U\En\LX9PJU1c>-;mTf3ιFZ+٧3R[#Y-='R;z<Ϫ#_^5i݋Cvc_DJ$+CF9+%V ٹ $c@3G->WC5jfF6E`G9@ T>UҩLyC!r`έb񺖲nyV;\aTW*FTsK!9$Oh[#yAK5ȂWhW xX-ܮqMїꓛuo %UXA'@5˷>j"Zs&ni&j>Bv1Q%F4h;,3.uU(q:FQ审I5v>=j6WC;pks5գچW?AѼO,NrC 79P:(1φ&qƒ_&KK>mٸX "d+aIP*ɄupN-T:L6\cSMm$-*tW W_7H'Q˲Z Ff.b0iI[%š_,ҥMU[eO^RX/`9"ѭt~Kh77H㥞kkR,p=-J:yb2?i`ǡ='j!nEI ;;Q@p%~@{Wg&)#osl-uR '2ze\̜ \ګcXa:!~~uzHD27z; bs33 ̺ RщnkpY\]v+*)<}Zo!E-)mI/Ij,t(2$eĠXiˍڻsD?KD][ؑ$ FyW/Zמ*3v'T=f^y%\Smfm+oDtqƖu ᣛc:w>St^iïd:0w+ L+_긥RxI\!rߗ`Z&m,5`7A"~ pҼ3Qn qf[U]:E2`jy!G/X8,zDɎ9]4"Qy2_5*_E~otT^xX앨"[KSq'~UFOFXŅ2ǚӀ=k$jrM=]PSfQЏ|z'gFU WZZe 1uGw+m/.) Im?bUHQ "H>PB/3bak85zz-g3Q`؋]6_Y/0`.֞K%5b՝Nd%2yD8&|<" t8Xa%0C}Δs@s4oTnj l?mMԱu)%rG2\*` | \#)H6`1GZh9q<Z)VUX>'zm%pwr<‰aߏGj~!ܴmq$|?QRlsq2:6cu4W6Ěef؛G&w8ferxC.zs(P ./쵉=Œ"ř sٷ {&4撍rt٤ݚ9A|D+`nURuu w'i6taWwo)5gDRY g\s8F+'A58c,*HU_aҾZv6Xawq2CTQZaI8}A)ӟ*6D 'Gb2økFXkC'8_U?QZk Sp'=P{ -MSU {rţ:^a-d \!"0 -!n4?H/OK0s(54ٛ"D9uoeAo~׮=JOJd=Mz*nYջ/O)<"RJ.$'0ZUUvLw:¤ג&M0e.x |,$*IF얆leO(w*JDkG M=f5j{{3u(<}<ιn^񫯅Qw]l>H82MH̍' ٖ{r^˥ʁRg}RC9ջ 2̯wR)3C8#һF,#x \HQV^xwB6'owZ܂dJN JndYI?{a]gQ%_AÀܴ_p*kľV\ @;Ye1e"wۺl$r-ˋ[]II9V9Tބ?w𧬫G㥻$?6%s.!9C.W" $ 2sb*Uyhk]`%[ߙXMGH1ѹp*9&*$yvwQ* sUN ߰%j e6)IuLe@1^Ydr_ ~bB^|UWjVAF%ߘ%#۩a|t nl1A~7b<+c@. `MJ*B`  ^+I~U }oíG'j v_('O*ɢsnO&A x%Z$‰`,EŅ;Hn+X0&k$i[OC2C %\jSk)R/:?v;cDPZ9!~/v; &ԻIhPϟh^,up2|0|p)0$1]Wxj4O }{Iv;<,)YnԀD:68d_W/Rk)l@dAg-agGmG, 9C8OO!tɝ$ a"{=O9hš:X]=2 vGΡ=1Y9+[H #E*T*yºgSU op'LhP٪pN ,\PCDppoRj(Z)׸hklu[ھpv1*,Py8V%P1lH4/ {WMF0IS* 49 JOb u4KGqxl8e7; Y~L} jYH%kPdbbBg>r@UMꆊ?zJxOGh,~s-K-U:+w?ޓ@kaU{CJ&jpP0K9 ?{-5^oדj #ԤkiU6ڹAj>a4&ng# ? 4.::N 61_ HXf̊ff8H7p Qh;>mٽ6(T.Jah|4%мim}#GLvB?rQcAfHǼZ~5M $^բ"Ѫe*hٿT`P[dru}64 .Lg'1(] `*[ZAlJtw4 !(_r{oR(P}olw~UxF,(ί}\S 3cfG8,n(0d|%٫ M'yvXQyqs\,+S!vz1 .]hjI`q@MXM‰V].m:OByA{ٺN:+w'~+g1JnO75ZӾ(7{H-DfK$By͒ EElSw^fij4zxr.|OXE{Z ,0'dkjH UHQy* ^GHƩ8;بCW]PBӒLHzI!, To|[D䆗#ӦSmWcKG 2blV$UxfD7 ]Jg;JM5I"(=PL_^4<㧻;^xBkFQTv{Iu't0VKΑI|:iz3~ qe !5a{3\<KzoH\IYHTLR*` J,! _}U|M=\ ɶT:< 4(7<<:jS" Iwe>[*l5lL15 xe0n9DҦI(cA+E(Z6F}>d.ѹdbv|}:t4YѮ p .YIOM)Q@` ?}/Q=s@ۉ"-%&Xmt5:[Xl*b|.\l4̕7tF((>PISǠ<Ś\,k R#08Ms%nAa2t~?B.<j%NŸ_?SgOTwTԣ(wͭ-)i6w 4G4Bna5fwCIAJ,*m'=XAN:7v\  7A*HOʜqw fa  cJ RդOǹ8cd8ہd|`qS*prS#j0 ҖOIf AQ\<䎞MxjMj苻-˖kKTw F*zL,uӂGA;%vsP.y٪}7yֆD2%Qp+c@x2%#@FY\6>横=T NHk31#~~r* ѽy,/LߧB\Jf&Y8 ]&3`% -en~"דhѬІ^M`! UЈ>xh=vlwh+Tv%ϯ\ZXvq'U$ze-ޏ-X9c;4WknaDӇ QdIczj6 LL^tZQ!\3I1 *P#"m=Ce%XcnWd7lJm9@n׶C sQY"2E|UpEW, ,2+`$A}@25T[~N~Iޢ=(8mC'҅ z1Mc=aIq-B\bV-rMr4Z\Rmbj!Dzν>F3RAKѩ˜ǾR:b@m+ij@@syF9/vJrvrKzX`U='h;jWOxB㑣 #37_4=ڇE1$ %$7WkPHЗ2𑪆ּb+knҫj(.{7M1Em1|Ǯǎ5s/tr3cp%6 Vkׄm5%|> ARQ:2[hƫ`y" O^}"1G۔|?%5f8)"䗍;(7cwAlƓr8=i]Ux[Q:R?"G1m`b8Aqz& :ρxrkL$2W784Q+ PxUw.pj=-Yx7%DG{wGﻘDB"WRP/-JcM6%8} `W֭p 9!Dr𮼞 0I9*b$YfAMN YW30[Ie X-m/ )9==yfzg jy8Z4&Wk-[;N̑26<kP[]_dpҸuUۇpz6I\(#H-NðILb)ַ")XF,G<\V^8Jxq ; q9!e)HrM;RTC1Vou!8vŕDcNTQ*_v'7B1Doٗ=x`w@C$: ʈ~ƚigc= Y\펈[z7_;qN?zܾ7]S^V<e4$׀!g]qu-3fk?+d&ϝ}AfSr_6^& _2m1Oc6+?\vN^t>hx8*^m_Tlk~0O꽴PXUGh &L9UCTMƓwAe*UYlΖwLPHHo0W B> o/\LM8鑦<1mbz" ynh7Y0]frfxlzk27O&mŽq"׷zo{/M _{q[:͙ &ZU߻kPcOR@Fsn߰~=W8onT\auw#|aQX͓: ldzI6o/}_:NKl\hT[NDBw] (!Q"8Dj@7ܭZhSD~=sv\2@Q$eWx`H*Rd̴l5TGŻlGIhYiʁ2`Z迺I{NZ}7eT=L$V%_o{;}LI@,Y5[nb!ѿ=@.h U~eTð?G~##3]7©Mfxxju۽h${q1d+Wf/T1[[3 ȯݜ+]k} 3qPe& `tj9)Dyg# Z⑯WQx$~+vKp5LҭJkZ/k Ce= 0Dn7{˘ dh愶(B/ ߕl%H %4Sswrbxa4͹Q)UDb|@ #~=sDi-G(T>>DqAUYPPݐ}~[h>r|Uh|>j|tY_ TxnՑ2$s؟M qvoX tCWNӝΪf1 G eym(sM5~(B+ шO>X'?&;4_V*`_ +T6@./̋{H׻UjmN,ZKD< -(Y0nJ3׉Y^. n),il`{-B$acu''ԗi*U,RHFLӧw#)q2ϙY@C i/pJHY3#:hohgg" Wz37QD|gilLˋ dQn}Ӎ[0I(պ?͔Ny%lTQt(8b'ϨАْCǔX_J]oĻﴕH^#d>H,Xt->z9l6=䓧|BS% &%*H,۟di#˷jKUNzTK &C?͡Bve%)cL8슸t[:SF-sH[E9{ sn49fUF[3tyZԇ8s/dY"?hy=aՆJߕ] gC2#;XzIxC:vȫ ]*T,K(\nxRdsϜ y4 F7jxwV/2R+t~d[=uA^4UJbC!s^bȖ9'0=T@!,^wG6W쿼=tQ14|$/̄O te^5Jif "tn:#7'֦1]=r45JvK>dUd;wg=Js [J]t &{X'\kȡg)N4FX+iIN-'=`5Ye|XLY押av&1/7}0weQLиRzNeuPdS(kg0 " eJ,ɾFYq$ nS^V)iP|qd[ы5z=B~πLƒ16?sL^g7 2YO#5ϭH=Do6蝝p Rp'ٯw/-uc~k BMX?^m+Z(rK?_[۬f?4´2`8vO g Kl7q@n}"X䁚uz>Ol1ϱ쥋@OĤZv BW ͗9T7Ȑc (Xcz+ Ъđ հffI@0OridTQ6]]Oew'LJS75(>Hzzwp9ǜF5V+23ON̒l$J~#6ĝ*ܯi322EnvGM~ "ꑣ6oذVd8lAS=OʬԳ1S|*na|=B3&O=(M{"Dꐲ@Wer;5p-<oM/:DϲM*\I\4-PuOkZep']G\Gwc_&f^ rȚ lj.'-#Zc(UGJ[/FI}" <%[iת{!!炔@ϐet4gFHWvO}x~F X@0Gd:QteRD[ecFmJ|γedI7;(mF0>!rk"q+N&7=jT"9K䆛&0O({8Wq)lW@=$LRyPٽN1Koa#>UO<!&7wQP>|L (?ۀt6̕h0ЪYȣO˪"~c[Kh4jtkم0WA*L_e/c*Cm'OUa$#!qRHřj=<_ނf-0w& DJdZ z;0aYJ)yAla<ُY) YN^{9|r0wFqDpK` ׈e7Uݛ[zP_ϕxQeKo[{f nys%i+ ytm6&sK|$^''zɢ>-mO& bDy|z28U@ 041v9j`7JW8$ܜ=yӟjbxɬnd¾[Z :qrOғ,)h5AE\fFN>? r01y[j3;mNJ ha&+5xglCɾWjk&aOA792I^d߉Mȭ}w<4|O$e#4}̒'Il/C.NmĬ|g!'՚džج$BP[ AWxߌ,_1#3z.e=IW|d<ޫQEuN=V2wr|?g'5@7׌~L+<7e_֙ @̩-vH;mYCw$l7ygW¯<\v@j(bꝫ=4ɺWdpGd`~խ\b~Gm:}0m]d 4d85s\H~ggʅU@KQ7NBuET,P촞aXϜ}9ɉM8жmLkE͆W1k( aqj&xen\ji7`c`]5;JLBY4 L|m9j|O ǬFOR'hPh+n_]i\ T@6CzZaFG5r,ȹޅpJ;A,8XrWJGqLJk+i{HlF;εiIl3=؊KSn-T!ls@@ QhM:"EM (_?C;ݫ;\X6?F NUh,sXLAԎ.6v>0NJɴF_gd~劤 /G }ý>FN1Qqm<^ `I ;&hq?RZ >"^ݵza~/H!kYڧCa1De1\>Ah9q4'ySe,-k*E8'jplW / Ty?K0g>`[,ᅴ\vy@;#.4>"hagLm$uEhIy ,$!P}|PmnB.i[q\z筂`kf4s8 bHg uиG쥟Mj=0Y*akD+3ro3H=f"Au9OQ`KOKUH<̌\ԵZejʈ (/-e1\s@cش5j)s>8dK{,#)%h~aO^ zvb߄ TcPաN`i J]Oj41F,=C!UF;DVjh{/_*RSI [g\6Y[l5|.dhb7q+XN2kYIy.,aAQĸم"dou8^6F&:w](RVH ^)Õ`;o71AOTBz&?԰8Ggk_ϝd h_ # 63dJRCxsmY1*+as@4DۉtgWVMܒJKڳ`I4+|wEށ$2=xj9F.ojwj-1/z V(!nl"P[#kybs7yiKՈՃQR&)bW$0G'*gj H4P^ 51b9' ]LE '_au7($^D %ƴ`Mrl?Ql˺yaB͊>^Ul~+}ɉU~{"9&}N~1ه]9Ur_3b &IO8{쌞CyDxJfi' sj+WY8fcil򈄯'f;~v;P]2>*c6}wj7&lsϒHc. ,pPB,'U~><ò?\C46h0On jlt`Hs|n\z< @6RHFk6bwf%VǒNE˜)] %Bd)&_ *֫7W3#l@THI.)[ O3Xh#31 cߕ/!WٚjY!<1{W//psݕ} ]9* mf!FۭtCP C#;>b8/ՒʴmjNTqw$W9[&p,5_U{ R]#16D3`ޮ6]\~S,:z:39'8QC bYo dunc-+o|bvܔk}+T,$+PȡYrvY<=OVfyz%,ƈO]+{tݸULHdv-i#Р*sq$chPB%"~ϡ5'0ə '`'ҟTveD\2_:GʒBK|sB/%s[4(}7:ZKJIp衢og ?,lؐ!2=,dDö}*=*4niA%gL~{a:"d 7428$d4EӂO Gz {GE-6֌"IHuY^ixo7jLgb)ph056j{~0ܰ9Ǎ«B|`D"~tdXa#q.teF j0B$ZWϞoD̥Mv]EgD|{H[%bV`WŤx Z&-S%'vjUE{w$K;EW4ӋwU>->jRUi73d"m%4wZ2T|As32="#zw9F}e U,-*(ab" zcνh(%2%$njTl:fRu`gu_s&HR9%i<㵤,ڣwEa 8Lp# A~KU!6g mb2h풭hZSsbkUNw6=+# 2xS`diqOo2ϵ]6jI&JV>kRC)d8hw]-urs?kP(p0Y h 4P޹M Ĩ氱ln"- I/4 qǩ9lB {T-`t pITHG^>~ qyc gv~$Cb\ȇ p촯+:~rI@HJ`<$L7 S vᆺpsءe%Bh0ļ(B܄[ ''-8YP}AWmq;^t^Hu% x/@vJbD1wKha1&IHL1zJgw:Ftg~rY`eb;ƿcWZ*~' vXĿDnv !X*!!Z.}BTwHl:>+'a|vSy#upB4u,By;kA1[&]EI"`{&8hY C{McϰcWQg>I 4T^"̒|HZѳ mW Ǜ "Y1,Ldh͆2ܘokp 8$jQwJQF)i)"2κžr;+>&wY)1]۽)c;׋(vW:ne9񁍏?PD[M gcZelͿ`[l?)Eȓԇu#)KH8T@j'Y}2@^.윪G(xWP\c-(m|6CEl ?6&Mmq4޳9O\R+b/2pu(tj-Ff%P`\"ɼR;MS"< ^q7,?90\@}MVn 1މh4@f+kz;I_Isz j5`vܫO JK2$${:+Vuc˻hv.yx|&l|?H]̷/(&ax@kI$I +Q~W9(G2`O,kŅֲpLc]C+YC4p-zWZm6RǴ 7Sډ[h1Vv=y[K&2CG`GllڦZ2`Rk$j299}P0D*96/m;~SJm*V;7ʸcu"\ JBf7, hq>°'͈]Nџē VߦNe!vԀ֯Q%ƟSf*_xеC|yuPe;KۨN?3 E]в y(}͛CP0 N=#qƩu@7Z@m<Oղ%gu Vŋ"dCS1KhÂpoƥ ::cX1WK¸f`B^Ebǧ[˅)zm@lE 7zKTPH ^rGq4^& 8!) %o6",fPUGg"*^T XV=EUu#NƜky{yʌ8Qqy(90ȟm =&M93[0dʗLMYV֔O 8P !!Xmd}?au%(&\Mrf:iaMzGE؃%cO1H)E[6OE KztݓAҢ"q8瀝C5?oY+ k%> oXXK[?o=&g!P~^Z| qZAk(Y}s[,2xndoIo[[[<2QdYKLaT~jWk@y_v6t:{ijGRrvB!*U1F+Т@{]fR<贩ץ2 뎵UaBԡ+Lfkv f|сxxH聩vrQKVBbSKF;יF&Ƞ e2irlE+cQ_TT湑bWd3Ą3@<зdaz}9~|?sڍX}BsV=jN.J!m_ɍ$؇_y3:i+U͏* ִtuF),7@8Y#t2ћM1`ke2/8 i3?}j}PvPYJ-dem`RD 5qʽ1[#tX[a?KA?OBVKK:{I{?Lx{-w47{NCQרLNa4Lq/{#ߎ:hGJԖN4HW`5s_6&ҋu JdJvqp',neRQf]xZJȶA.*w\~ Aw'>,Yow~3M'D'aw樞pegQ'|]G+af31i/H'to*^S(ENKXLܔe[["a@LDhӗ,޶zpP?Na3g-BPPb+{z Ymr 3d?]<{iU\n ;M>GrZFj;o /p_|KVʌ*W[X#)Bjo[vK .eMWȹ;,y;iq{Qs2 ͯlRTlO >mZg "Pb4r?UD'mk邩Ց)>SiXAuɹ7p+ӳ,.zP+WyI sEP~D4] EzqDK@5 >Z:slSچ_1=dx|r~;R8 _c3D\َUD16HtZ74_űC5> iJzI*`<2>ľ6? 8G tiEXX)|@=1/V| < uHU#FҲ1ΕtͶ j4̻, W* ey yݻe@'%qfJ2u`}~PN怓)1Aܸ [-: (j,EȝUfuLh8Ktr͎=gխY8Qp6ə |:i__o02;>`R,h!1U|ؗ/雑a)?gmnRo4,l+h,{F;…j܏MK10Q0SU+Q'h00\I),+ 4A7YqI0f^1e2IV;\Ȳ^ByFXӁ?vKLi9:X;S{_b)P 񶖝IEQ4?OtȖ\f[c -_=3mPBYh VJB:젇5h,+nޫ5 eHHVhJP14? S/6FRPӈw8Iĥ@'*_ˁ$TkHI}qniyQ6kҜq)zT}ɶbakp &먻eӑ1#.t@zhQ1C2g <65;L\Y:(HaCW䟋6*Gu23u/%Yh3ahtz$xrWҞyWa›ڪӰr?Y…HCҼRb lJ=b˜8dؚ/hl[$N.#.aK7ɤazܧW8V+tk18x@ MlFH$0OQePCYjO (J] AB"t (q @pzރB*dj h*L, PJo;7 iOry9B m;\/;憭3)sJGb2t 2xj|lf-ZFl K\'lYAopY&/w99Y^z#hmpGgX$?ADdiV,}Ͻ-(8k(tN#tH8*ngO䳻`|)WY8oѣ[owIJוV u @RLyfKr#`[ φP~c z[=cAX\=-zQwq}broqtgHQvutе'YqH=>t/?ƇZ- )S{\xm҇#y1`]xpu1ZFמTu|T2m<&CUC!Y*O9'4͝ؾ' RT{0τJVHljh)JY[vlF Hfу2+1_~ .nK-Zau-wdA@c8]C{!<RUic=jB[&-6î%]5\<µw7[/޼K j^ V8y[~Ry6rGTr"AWw אф7jE6V#8 7y'5-5+^@˜] St<¼g/g+h8%6'::|ųp$_ .: sVt0-Y kM)KX=IGp{R6 ,i~!!Pr&-ubѿ_@5_;!~=6gi#VE&CXVI*4:M(4!v2-, Cb4`>Iy/9a7Jňv<-4,JYȈh<$MїȎ}‡2η.t0]XH>H^(#&B{뗫.[/G;R&íʞ9\ RBd%,B];b{2RExjΤTwn@)cxanW2Nwv O }j?@n6aίwQ=;>>)|azIؤ܈?;8~Rh*5D 9qs!; L&dR3ƝxO'[_@X{6aml 6ÇR{HlY8暼_̪0bZ`k8e,{K Cl@]cBH+w1e:vS!Ch#GexQBcGJaa 6 Z\]fH!5س_=N t/2Ls. )a8 8o HF7VTeo.Zn=/8wkƴH |1neo奢LB)*L#HgM* ljQUK?9[9bTFu8#Rk _ydv' -!=M !Jc,zXcyKGaDզdVkj{Iz/D]t,#qo6?dsvP|w`oNO)zAJ\`Xˊ_J<9*>hWpv" FHnƂY)M#1f*/ ~JM":#w &,zZ'ԩF(ŲE ޿Yny{DI*Rk5"L+?f\'XRgnBF=^QE`L]-\* GfڜoH I%<~K*pQ$|kO#dŏ2T&&!@F@A/s/z.`ھv0Q _Z07%dcZ'hlz:G"%6աijJEtVK\ECY'[C *fܗ~v/ )>JlN [-Ai²q,-\v)?:erP?&Wslab)gp']#-JwIM}2(ʌKToQ^KpY{CQu=Υ̕|DpM4 C憬WD VSRkZ3UCN3*-o~)@rx[66 ܑA=yʳsnj٩:0# BhOVʳ+c߬ 8ƧM!G鉝3uH7MAA }8jo5wKU[}i3O4v (ľ y/twPf. J NKFC_CS3t"\1Pe+y8rVW2"a\L{E$͎ǒQ._@/vEn(6wZm*8\De<~1nnsۥ՜MʽR0^/3J E>UؒOs"~p^BSP*y6RDdtdF3hAXForDAtwB̿z)-xq"Q65ϊ@hYfp=CWjQ|;]56bL $[I'[g}c'y*rGS3+0 Rޗ/Zm"9+ږU.Rt>ΊB%ċϔKp>A 8Tgy:Dm)~؆k`%)] ^/:x1B\)|PO䝁C"!A|Ű]ҫU&{f‚G#kcE\ڻBWnː:}bJ܁CB ^ʜ9 Y^-$ 琒 n7#>"?N'c` f 6t P_SvS`׾Sd\p3ps^4=jFǨ^|7Sg9Oi/AL3On*>؝*9E [/<UJ X_BѯpRv9T5wŝFC2 FSi$$bL|(F/ڪL-=Alß vŽfD1׍ܤ+Aj 6;#:|9.{=i{bAr 2S+)x`E> <&&8`d?G ]!fAW,UO歊Aq8LldH&\–!G5EAI߄M" ߊdiV n"D@q?j_ ssعB'Z ^>sHcVv,C{>msm-m'}-jjS @0\|?đ],mO&G({DGO2#AFS.&^{ʏ6s<^O6LW_`2LYZrM?(Qx !0b=)X@JWy(Zi߱hvԾ3o ,۪7S󪎋-ӻݓZN`D`]{7Ι\~Ng "qztӶmB{aW/xʁ<-Ç!7J%vcnj-%1^b#X4nĎɖ=K.' C^G< 0KX(.ͳa ,pgi, ھ C4OZ/L7fh #4[͗ZW3p$G{Sso$Yrʍ\vFE4l_NCFGK=3ikFPo-ykViUɧܶ~#.~,eSF5`=^d 2Qn].J8E?PM+Va:> QlJ-n)ECOV$Wu^~kUiˈګ%^ #(z(U P[Uy>3q/J{CvUDwF^t`ؚkYn,1MC>ҵl^>ʖnN9Ë|5b!'{pڻ?nL_R2gh:05,e!,AƳb-?r3b WNȕܗyna(qxuժ*\^4!EPQ[D#|@~J'|,Fs!XuBDv8S#U+V``X M5c\ l8SWu:.\”ڶfJs^ޏgQP߾<  v/J#0x6TZJ,4]NӲG,m)F0(H\\!oh# $ΐ$ o&P| +3nU\b.}mÕ\9H} ݯNR%%U+uS ].WTfN؇Mm=[Q %M;*kj1Xj,~R&n7 ZhK?/0;x8v`[hlXQH\FL!><WΗxG~2CROkr<?>z/oި ]c͏/.aԚyV`bd-lw+ K_θD-M9rYx b]@(xtNHT=Pe-0pP1[⍶Pes5 k@0V_p߮!H0<{ u^$NOR=i#Z+HU<2`x Iv'6GRAIqcȂ|>,MnJ0G >+k,u1:"%yGh`oL -a$ƇYɑ{ýÜxxڛ`.c^9uHg|YNn%Ir`L]˂ǃ:d֍Ȧd_}CfXMiN@0^9}}3Y@]:öq~씇O 9o2ul?iZy,ۆx5CZȥuئ=8'{ !\o b%z) ׏]Haoqa߮~J\X%{n Z[m5zlȑtۊ˚Įa3=$$n NeϺפzI#~=k >S+$<@u 3qȗ(gBdwtgV[ԋ*E[qʴwn~MTuEUJr!B4;inj; 1H;cu~`5)S_7& \o {<^T':քOw%W? +RO2͠D& ZV nE1ryG{`$ J&.6kܹ!rW#YPI$H$u%۷D,Lbo=g<􀎾ˣ5:s3i)B/Jf*^W'65?A4oAk]u;LMK'脉 4 ld6̥ٵ(nҁD&VdoPMW WcܱM Rh{-}Xk6EKW(CPY[h KB.ޒNSxM8ט#ܟMo3^$ ՉD#Ri(2ipM`4Va2h>6djk t4.iO'َ'GF λ M'~&UC>Y ^~ȝ|H=h2z_Ol*f^zHcU*Tp]*H:1[-?YƨrcfvW2.0f6wM/K488W;7X^\|y:Cp6 >dy}F{)Pp@_=0evgGwRMv{\4ؚa[7m y BW1\(&JAj]X5P+(h{g_%tEu?8w#> x/Zi{WJ` zl(t}b^5ڔݿDa6AY!ϊgIDL Qg(_?-]ځQ@AWaeD-?sF.zgmʦi58Q dqs<{ 2zij48|cA.5`?͢htLTȄMIlRFMr[M #4u)Z"@4S$huVZd#-^NX.'/Jj]+UC(3AuDZ`&tcm2~ȑ ds DYcyH\&N88:7 eo9}x7NZRNvz wd .Q\ܐa$Ba ^̢ۤÑ/P.ȡȻXxG4SLhzeu&x`RgLM5vLh(YX+)9F;|UaTtȂG'-cS/ۨ| RyhAy~CsE%x@5OݵuqޒsHo1f"RcK j7r<23@rn;`9,xMY.d|xhK htkl)gzr3fP5Wljc{WeO V93AՇ_5_z6 mدrJe5a`vĕ a&٫!ݨF!@n:o 5t1Ao-);%ぃ&()ڐr\fҜBATV1wO ,@ͬhv 7JN\ 󁻴5m_ KI&1xU/hH+.׸OIMmPŜNm"Y~bj\W_pB9ӊ>wɒP–z-Y譃W\ Oq(p)HIׁ}:JבqUAk< T,~h_lKN#!THW閖s~#:sprLTXt,Nkb b(~8/,=>ߒK8"DYItF*'IlrsY;8(GqQ|_eU smvpqB6x^F5uG_ +_iν؇iϫ(0VƴpIaJ/Lz[1 ݨI9b=*_N^ !vkһ5Dˎce cF:G:[;%y6pMR/OJp6Lr^p0:M`0Hpe)t+W]^TnNDG_+Ӆ($$~H׆)wK(;DSm?PWVrVdLo%_a;~Bik<[:Mto])%5ɚD~Jv ̴{pehP9v%lF,q ( (/88~6020*[JyaG(>HfĜLM`77 G2%PogIyِGW-/tܵ(Hq]ex-{`G4mkeR/RGweQψ/rb 2;COk,hʓ gz@n6m*CQVEbpDGkA] `nEg"e_"Zv1^M)KKB%$ڲ`O 忆ᵤ?8Q%}z -f0pLֶP,'$$[boΤrQM4/]{JY. 5Lyͽ{`\L?jpE5_% ~$}.~o"d++[49B6HKfjvn:3!SƇg$$" !eel:LD\=Ȇֹ"2SI.U(BaЫAEv堳o"֯Z>_,cyU>EqŠ5G`CpHfp UX4+0s}L7lt6Ra~jyNf^ݍqgNo:`U@Eg iBPvH8J̩vi yI)% G7Sr34촟vgKĉsA_{oחY|y|0吡7[@ۈ xwTy;U6NTnu2.e-,T"ώ#FI}) ,ߚl :GtdWP9'qV`=ky1chnb0|S"er;-Z<(hN4j !=>ˏ#ēA\G?n+H29Fst_pjSbL9?(Pylu| r`RF5.Vr5Y$%xbg{w8r~sal{3eetQΉ'(U$fPI8Lᇨ~2Le;VdxN\zh؋d[~M6X6'iH<t3y$t"nOHu haGRwjQ!EƷ:~@ A];rvoh`@M-i&x13+ok XvɅ$vRt(kŮyP S:>MwZW8;ZqQPd9ԻK~!fuP~FyFf<0D- ,DZzMkN+) ?o7^}h|֣ϫt C*"0?(^y +5ݓtٶ,@q:(W\O- H 7+b CHC4zmY/ldX&}jX橺γS5=}[в $-5i܁V2RrQLN.:D]|; {p{4\hcB3sRzƙI m(Z74O^$4 @/] <^oJW֖t/Xeޑ0up)/$ 6_r6T7Cx:Vqh$ձ&l)ҾjW6Y<(aJeu:+Mb)#kxެ>Kn٪/C.;#\4׆ W{(=89c6 Sz5c5b%5%o=rr+o\aHRiIl:\9ސ5=Hcdkhau8;aDX;.ĹYPE|\UB2L _;i xQI}񬌟VNA$d+"|+Yr>=[Z\Mc H G !pŧ,L#WvFcƐ[!dȆ7ns^s)nAb5ήnsrrx'uP|GÏ$GUX Ld@Siw&P5 sx6!>˫`f#2ӛ, .k+\h ҼkK |G 0PJ h& l9TIw{寇,v$hmdFF_Ľ3Q:O7ocBWP1]U LlL!I|zBX$]z`If6l%;yd5"/@i`.q,KV| t}0bq|p\=:k ^J51*k,>wgFa]%d֞v}&a'\ XןR&=1lլ#W4VTfĩ e i=5ysY 9|./T2R\.0߬@ubk[U:.ፇX1h=T&BA:9;J [lyߠ@RY|'RL8/ؚ4{30骡^R{n4 'U5:eZjDhh"0~3ڟ&U?_"Ӛ!Bɤ/floJlÝWTF+эȟYUe%CEź-tLK/!+7,AOlΉyM6R`qكUR=|=,.|_XZqQ:UU-۝РO*e}CAYtt[mKK/F#뿎m8ïY_ xU%tK2lj&Ah$m~IO#W_x0^̿Z./C#t~\=J K&air1\j[4PPVh$k( i˓i)5#ѕ+Y}m+bޅ>.[ֶ)8t?f2x0[J*;Y׬QL˅yJf%; Ir_}T͙iOt(VMbَ\0MǠ-K"ea@jlZP% 4g$vJj9Q75F=N>C_*Wt5NOrS0hǷlHY#v@Jw;~&B/kof*p@pT[s|Hkį1=<\md#Eb*bLicNC8#0>jF]vlѸ] z@4uG+l ZHPѬ%pFea,7ږ1⫧P uEsp2 2Jhq:Ȉ3 F'Wsm1ˊ86lgEWq <6z_Gai‹UP4Ok#']Ł3 C : Qo< S'Wh&&jC߉Z_wl IH1FUgRWcYJI\q+9 0/x\lݩ9z\ι'B= A5wgN)#U35:BJې{m%u3il;OLSf:M2TW1SDM-DZk%I,7 ٽ(~qK+ qlʀ*`6Bl 5@SKscx?E`ZEm nuFe5ZF ѥm}6/+0 qתvW놮ett;5d~,_=Gku[Ci%彆0}Q=ZL1{jսj6awJVjĴ?|Tz6N&Y:SΎIbT}؎ؘn/#{qCG"m+T`L{ u2?Lt4IW_unW'#FKwzcI.|9d|!U4&)AB\)"xƔ30l28ۤ4Gf;ȼB ) ?"dF/qiɈ7*BXE}l{㎙ܵYZzF=_pZ8MmG‰*Q Ҹ!E sCO~2Bw۞6I"$WkK^Z &+dT'SDdɲ82Que>)MCLHMQ% Nt^U.=>XHDK5'!OR8h]ϣ +"r4Sn4Jg?=4f8tuD&SpSxFⒶBnJr7Kȱc G ѳNBRh %ܯHf\N(P}ݰu[cq[]_>cˁr# D9'7uCE_DTŒ闧D0FC<. raIT;xkrd.&Cz{4lnU>bB$OvS5QgL6m0j<)&{RoJ?@E??d,?|olU>b?HAyWlj`h#DANĨ){Kp7OQ!LY60҃WGhØw)_e o v ~b.^.Mβ#/Z^@yBƩ>XҔ,43oiDJ:lfYB/g%4V2+vż0'hGd WNO܃ s-"j >>,-W'"{)w@:B:c*'.[HU.y и66kS9kZ`+GI+-[i7`.O9L  c8t&}5a_hq@}v.}`=-̋_)6>Z .qW60cӖ>73Gُۚ؏fɜ뭯vl4 =_ۇ GLO}+j`RCQakЧ7i^BlOG̖t QH0wiZpN_NUmȯ%ې q d6;R v:m 8E~V^!ԋ< v_@wqfN;lbx\P& ^x!_Ik@"L19P 1 Qb}zgMpW``Q (p>p75P|c?m9=40V+>/Sq@hё۷]bY7fGz=j dCمrcޠ 60pq*rGA4 1+rËNmΓr"ҵ 5(^jYW,Ԁ&bZ̶+7g5h_ (K|b.T^uwm1i'х0 HϤ4nzv"BGgȲ<&z-*Z>}Zi${CA*<99hSY+s㷠IJCH0IVhavkk:z?_ Cjd&"sBZ.Cng9`eGiȀ:o؁0<:_ͥԫm@QEU)3ruRcl%UU $ ە-4q{ЋwDu8SJnRgH!$J9/.A=o Q5w?ġ='*l@.KX,Is#-eE3fp5| WH+lN,BuQ#i r,3Z^5%_fL#Bc۝&p-mWß|Y_^D-;QiKlhZ9:L,4!F1lQ|25 }ϭZӮU՚4E@s#u:o)>xr(_5 C:!"齾z0 ]҇lZOWk:e8 Vc h.MغW&+.sx?Ϭ@=M>È) 5.7=G{;FBk֌l\?%9->K'u@`QnOҼŷGP$dVUq<-&!~`b9X%D0#,DHm0nRNًbT=hk =)CBЕTM, v2n'F(#o"z.)zO7CP_ MDSf%PHYRv_VDipAlQ^lT_Ș 5ki=sMU  }Ϟov@bJUi2skf!ta% jT_o Jijn?+Mh53p@u1>o%E"3II/2 UL7" YFtx;*;Ds cUlPqB4(hwln>{RNȠ[.Z:SJ4ajH%u ky>ȳ8>Ԇ!2wB@ho,񔌑|K86TP(p/9eSě005 &BTG}jCDFk!7]yQSNfז-} ' \O@NfOm6ӽvXH#k Q; Xse*^*QM2scx LA42K!P)47yLeB J f5?@cg5 79YGnfŸ[ϝi3H\u?BEPq`gdJz6;FՂȂE7%TqQ{nb4oy^*FvGY NKpw"οu|Mv" (N#l+ pED8< Epʚpݭh60>{ K Ʒ{*\sxA?*780, A_҉YbSƿAy/Px񗥎<. a#R4Vͧ%gˬ+w k%$*q)WyUz^ ;X5F9خX6M r+ :1cj`0V0z (#!RS8MFhN=MDp#}lq LU9(5y&؟e,?k,!2`(0FWZ>@*X9FX@a!ɊBKxO`k gE5o^CNi;<oKG<V!$D*M-xH Ve y` *yaF.xiXa0\mi:Z U S%U 'HsWoJ؁U8r/LG*Jt+& BUvbA4FD~^5$ֵ;t5v09h]=lTLoEV| &uDhu;}uqcXU6bp5cilf<{}N@]z 8O^Fx]aonx[= ƪOXo7z[C O4,sċVeVT(ܧ)Dz-4[dYoa'OyXӥJm͏ksn%*q~^>%rW B د\u'CBĴ3__[[@Ȳf17/; +IW,#ꄟ<}`;!p\k:Y([}:BʈUmTM7L:o]Md&[$RFjxnRdH0ѱGQ^}akpvŰ:$.6BW !p j!,B8_[~y}j. hٔ) Y3#G 6U7 x]`y\Db8 |ሜ#¨ҫ]).Vf_v[ #ܮ{Y!2!$W ꢫ^zJC0Z wc^6@QX]+oY\6g#\ZFVRl;Q2A"7ۋܵ7o{9͸X 99q3{1ҫԻ-Xb 9EHԵ!pN;|1㠢8Ye Gq.=*W : -%Vcj,h!f@+?p59ǐW8˲t6#Z*jSxJ9sɌ=b"WOƐ6k|R`(S\7{eYv 5:?1U6{{Wk8 _6H,o })Zf ޟcEzPBoͤSM?HF |pS"]00;N;:utOo1Y. oɴH/F6!ar%(MDaLg.\G+d=E9/(MWdJfkENE< a9TGȊ?^H9_hjaRS8 5A5**4М P b/֦ 9?Ww#7h%2;pN痝66_q 228N/xxV5n0}@ M_.U},:"ȦM㢁cP Tl" *ol Y?1New~jq1콡PsixD{vD0TRC_􆉆Czné1/ 8'4AQsUT!IN)F $hw&j.U&SJd9jǙQW,flP'5,=/;bIيq1䬁"e]4e8N|+eZu ~b6.)"]%ژ[5[YhaM6'r'=4][: ϜPIJ1P2)8LWI֢e[Uf!侄3 ~姕ց=92odzi }@+Vd\LIWGŦO7R$?@Yz\H^^Y]-ZA(EP2\&eBzXPdwWnn*ciRn{WwKqȢb(O 37C{GrCOzwe'iQ1YUoE1 _z a+a )܈g,lצ&.F0NM6JcTyNkHDĶe1vW*|"(r4{ 89%[>slnN- }䵞7gNН1Ʉy GF*}Ź0|{L("j18VOIiϞ`|ɵZ2\x} 4q1A%%@b'gLYiv) _$3(19~;^&Mس p$laqR͆X's\6ƅ|LC-O1<51c]tj@?`*cB>qYJ$(614΋,ݢ]+ vr`'[򤎑͢Y%z@wM9j:&„[cY:F(+7ϧ wN3ˎ- @5SeHtd{UY\DL֬3l<u(p2Sf:kwpSN(_`aT,sC_2m$Qo{`DJpYDhTű cAD~l?&>m]q&J P>ԫsVSf+w נv$<=}QG8ҚnEv X"ת?7VzЗ~/Ǔ^<>7" ~5q.Qk{:?f%CZZ5&llq85TN4tvYFDqT>6AF$%6x*{q)Nʲ24~u\I ?WZICSY*ܨ>£2 wšk{gV8yu0A{XeohVpx0L-e|)#Mۗ7sNvJ{ %jWm3l)\"@TV 6rKS>'w<{;QU҇s?eI{іŤ߆MˤĨD(guX?LτWF!mE7FuFRPu CeZzZm=l`$k`)u6,Y^"hҭdpˬ-a G*=,f3L/,Uʒ(7aE߁-yٌ%3N*B*V ΢8Jہjz ǖ]2sjs%xAܩ:՚6 ^trTlZ^r# z%nG"$ }0p{pxJZ{{ݽ_`7:<ɔ3ͼth2vwߛ*_jEK-bZ|ҕ)?;P "c_5{;",`c7רQ$@mK-(͍lcT+$KKu~/`*csGeDmZÒ,n}q0o`YisҘ3"{/ 3?/4vm2.Va$s(i cN/@Nd闺7u79n>ޭ0J2R>GKbd*;lSf&|"B9OCi7.5xѾsEɎ);{&_|}н_Mm)?XX'n=u]$-bdVdF\(OԨ.!QcǼ) [uJG :VaVcGp@ 5ZV7ARH{ɸGQ(ˁԗ:;Ay2OiAb{owPqV5r  ;_7*`s9.H 7p}B*1I.p\:7v-O^W=%ZOgg۴6Ԑ, Ci1$!>Fh7}&zfS%_PxS3n8,ۤԖ^gFf#Z/Ki.*H, fFAP!=M `q^7A:fpW,г7)AbP]e2TQeUpH^dJT]|Hք$y!uNEu SBRU*өyMË!uoe|٢5RZ+-;RNE k]O؀wIz@R{XnבcT~Q MA﫨Q6k+ ͞`sw9]_֪"gᆆ2!3oLF0gB?ǰ<=JhɾB3췚TD: [ړ ˶9u/[]39V :^+E1R-C<2 ˈۃ}ͼ!"*jf}bdt"IR}Ҽp[J^TB$wiR#xK:4f5B_.Mgy4yvL7cɻ>T-]#<蓼\4T@)dAБD /b\ ,U7yǦ'R<3#|k2_4l~;_ә3: ?e 1mm{ ڮbfc_9Qce= -qCR2=}3ߒ' =d\3Gӈe+aTbⅉyFԢÊt` O)CF';cA%Nf+rCwKn@YBNBC6K47i{Tjq}p1]Sh{G"0/` Q˷wD8su(N8!7GolW!QaQeY56G~϶ 5-GRc_ Q*Cxgh<4,h"l7t*nN$rMEϕ@x9_^\#A 3+b<t^OȬ)q\ܽr9inCwXHDN'5L}ϑU&tZ_A_f䤉\dQ?㯮Fз85sH^3+x0ʩ9~ZϦ3Dy`4(7&lT:zWxvwgMn!pUX?xOVPO#/':C5{9~flLWkG.מ~6Y5nMțъ8j'[f~~G@2?۷c}#u='?<q^IMԐ\JV/:x/NN C<7Kw`[~8R=]} t.w~K-.QcjnyO=fimB:}}j*_䚅m%;!L/na[?צzWWnI*0rxɂިuCqI~<CԪYI$MYƵ\oL%\{ r:u<֙-d`4XXQj^"to]2nioļ̗ $8@Z3@V@_xvJi3.Hr*B ؠT1!y-ˈcUUEDyu}E, fE/Ku^d 6k#d07Q5X]տ6gO Mt Q0sYJ.+ةh wIф.IG>RX1{Բ9t~P m4-|w&vQIq*û1Ǖ@^κ?Gwq1N-]@mfR\LY.',9$u˛0+r?57F ^r#9rݼ]Tk7rAe1kI~UH4qKQOxԗ_e Jq?CmCI !N7D0%'q11܎ )+Sg 0m霋B:u˛Ɖ94TwRux)xVʌ3:B,6t;JMƎfNS Fh mkV9!1U q<.Y}D}Ւ1j OVmẕؗnAyYKNN4]֌L*Jcf/7HZ<)QFsQ`쬒 ?kVhʰޱ=g;ƨ,^Ooh:RuмOJJ 9D%unquI' {{Uc aIuAkFfi #Vk5ɋJY҉j2lȬU^2UOגmo7<qNLһRaWڑqid>27j䒾&rD˙xFp&r;cItq>PO{lCeh?ƙ|s z'!LU uaJ6ؤrL9+ H歯̨ZA1hc_[Ȣk)4G=K2]HwiAc.UmC2t&1ѳt-]̅˝lLm&ޗ3mZH 0.XDžpK'}2NuK.mȿو_-J{Boy4IMPoZd] VO \Aܼ+ NK\+OsAP)'8ocB|dmVuAabw}w@mn;3H,J-YuSGl p#Y{4iRUݲhju퇺D3xElbMIVbb`DZҁhQ(~mVQuMo0mڪ40 y5W'RIrjp"Y:@-99VRk~Ҡ~!)b( NJ o$.WK( 'Ċtp2U;>y3;g9r+RE:݈%3 +q8lyDcU"e5u Cf@yĞGZ2H`@ځ{HLm>  St|:&-[gJa !l`-E?Wg6v7M㕓BhZ2UKޞ,: @9N͏ASK[=Ur:ܥ'G{ӝ~f0%68DlӨPB*,o> AUA@NZcr[F6r:LkⶐgN ZE'MZUOn-=uH1[/^1H:RMP"m ]8ev KQVJC*$@uLZ!=C fܟCh,9K3x0u6f2ExwHڷ05  j~:͵m8.Vɻ#QFnGYQ¼5ė:$S]dX =AuQZB*kk29") t_ç1% k>4dT!#/&|%36DŽaJ띛 5$dL%p,ً8J?֜Y"d%U2&~nYq=htv%&q₁|mx/lmI iaܡ)?Xc Rv'.C-Y\a[z_Sɻ}蘞zU/M:RBDod+]F7 B#EmCW1 O.3i !24:(ՙx/?zy#C NcÞR= #[%UyPOGN AގQnLEiKQB郕t>S2ה;}Ay *m;1G/̫G:E Ӭ6?!sw@T!+<ܕ{IZDU6EZ`~Ͼ:Iݘ"iw|2C;a @,FD WGc"d"h5GxWKqM(U ł-_6H_e=\ lI#9zw?:KI8| p+ ?U_=Ab@{60lPfHJj rq:31sI0DʹBDR@!tyʶ" ")IRR6nɖ:є\UE̾680 'wTe&0Q't)k ᘐQ`hDި2ănҹaH`eᄊ9ȶWz`勛Pͱc^LXwtV\<^hkM N&yzvlKuOtWM;jm9VT WͿ2vXMyt`_B9Đ>8ICYHʚ_qĞr}M AiEJjj{K:\KOɥh_* t$WD B pוֹA(|n>Ve5ЌگQ(&^<4S .7y/C"`Uk:~5SxIJN=zR Q=h[P7f&pokI-tL+kO}ut|) kC\$0V,}!oomXW:L1Tge;Ti8_GW䋵hV0cr/nOۜHAE߻:YU`=ǩhsQBs6ܡ L~qJRA׸w:,U߁ϛ9O:JWo%5{ v͹ sw b6cg@Qz'`,[?CI*ʾ.\BQ*z>`{Jin7{vC+X"Zyj{\mk.387,P̈́/:>7: ^ +ʋg ^8 xS}J*] aQ*$I=qd 0=v^C,;:Q w5 :z7v$cRWCEqO]'ULodv&CJwsjL#OƯjb kA_~{*AB(0Ax9 /Ԁ\!0Hz +F#n˓֦]NDxf}.M#Z?EEi\i. IW`x a5F&ִ|K?7ء71svs0A$46`JTsZ#UcL5ì\5[yqIM\U\&E=ֺ79tP&yWZ2%Bg~<}t95o&ٴ&7TV7;ӰyzmZ[NR|gF:9k cS| ӷ!.͞ØVwG:o"K4Ͳ,j>/"N*]*Ϻ ̺tN<Ŕ,힌u-2V|ZZ.],\iyr!"r⳼X]5.XbU[ ݇^̢+!G1 TKD~;= oV!cVn]9;(44(t4$˝ݞ,&n~3MDX h,H6@a/ Sy8G9WAYH3M@"+l8П7-^M!rkd[* +޳Wi Y.t 4 u)C/iYlW]yڞ O8ȓv6mhWn'k8OЦ$·y9UbOʿƪPS͆j1# ,=?A-ŕs<C ˜%Z)Z>^~@m߲9E>4LļW9xM A iJ]e T^rĦ1ȍ;[`m~TMXiXxxP^|X zDH#ĸ4ap{Âv IH3zoP`{Ug1[-A ۦT?Cy Vp\P됰ٳjn uJ':"KJ8ٗ:=Jk}=؅ʒ€v&x6LjzRh׊jlJ]Vj?xXc/P=dE$N{U्D-]2Pw@3㉽׽T/ QZ q#Z mϐA7[/%ףE  iGsWw]tN ~zY[Q)I&=?W|qٟ0[!hlH(RLlTuYDO#K>mkBc<ԂFjג.̬_[6ʰ1~6v.yM> wG"®R;麔HHgxK 0Hnrzb)!I$@'< Сe%M <֢vkt~CB-ƛxZTd!*ïjwX&cBڭi2a^ ʥӔ3F\3+{LEB`=X:\cA`{Ai)XUmI7L\(/ |$׵ g۵"Ǿog7b&w\ Rk+ MbZʮH*CWk&W5iQYeUYΊp#΍pClXn ˑ#+;r^sU7T[ "a`L YɲJ\.liy?+7G2ҼRPC:ӽ^\M=a* G#bIBZT'Ժ2Jh]>ձ%xEC@P8KP;pbmߪR9ssRœŶy^!h> , =ƞ+O_' W~?4 Ra6AlcV;ɉ*(_ pҝ|)'f43ij"ַɳy)^Sξe[(T> 9U^d8jj8-戬r#ZM+-kQxZh-޹:o?S <|9%rgmlRJI詑kIL0LI"Λ+Ѕpwȵ E%/D)]8SG U&wtE|L1/d .*x ("m ;$Uo~ i[%n{n~,ӔunYMSY|>{Ckp(qLYla+K,dD5>ҶY7h:K@ #nO^>R/Tuo$tZǏmJp + a5xh' )vqT!]\S*FjꄗEiOE1b:8l&%5RiHzvG!c[ nIH'Sm# fL7Uw -7thޝxK¨Ri>{Oӹr^+8tFBs1䫑~9CoM :/4ryq&F{+ClN?!۪)! #ږx fIMܳcNcl]<st+}| li V0MV|}2>*ߙ=!u.c:aW>ோUƸ̫xz.-BfefD! ɬt7Ҳg@ Ys9LKeX'w Yʒ{We s¦Ç{`&^5=BIff˽d P_5J~ЕzC,F@\l ʎVS0w#v :zT_^>aKDyWUi.\:=q/aIl87bIѓ+»4KDNV/젫J)@>I*']?EɌ,'C3T e3N8\e;:ЊAW ,!8/Xn3 n,Dx6rù^;7dsh+KX T}}p;!޼ExLr:u}Mg7]} wY($wĴw`[fNie}DA`Xǎ6AGyl< ,n1"|j`k@S+3}["=2M|K|Kc*sq?ä*j-1l7UicհpUWiHS;֣jg{˜ Cr@i+.@ c +!8N_J]!rDabȌ+q1ŪV͊HFvz/ O(QOZfn.ݲ0AXq'g #quҽъq3Sx\LVhp&b>F[ KF8$i[bUݥ5z:9 {۫Pq9Ze>ec(o&2aaV@dU%EB5_/7K_hg/(򻒬\j1e!'R{q4kX!6 $ϘfNTQX[pX ~wkpTtY9&k"Ul(W,zҩ1=R8 ӓEɔWD&Ayz#G-UQ]j0OEixR/o`b$OCLP8˲h׆4=^۹Q &صi9FN5riPb}Q[\@ƻ56$$4 7oD`LY]r8t*skoЭ*|3yͼO:Yy"y n:O$= =˺ 0l!4~Bz cbTP GE +@p~=%g"b .4 ,}EX;%x & Ct[W9Ls=_<ҩ5p(tjIiroQAÑ[6R1l*qCpsc^;^)(h 23w?AɅiTx`m5 t{E#]k P[]2  <^Ihpc it>OLySUbyd!eeuykg 8ɩ=irX{b 9ëHCkgp Au5H8WsV%@9$@3pbz>]V\_!IlVKʳ= (*n||Xr+Hdj]Đ4TU2XF*uAgZr & [p~YBv*[TM'I|#}VW 4!V*ĊOoa˦RNH/cn8vS2qC}E?VU?hǏ+?gIZ[-aZ_!M#a(͏Ч9K'{t]yY@|jtTI> X-`o$ pwn2ښ7<8:JeFb\jߦg&!'Z\ˮHci &M#<6/WW=~z>KFATI:ek:3]=Z1 q%CtځS]Eùnt)4T,f 4)C !\EᏎF/:4;qw%`RXN uwnf^8e5)X@ֈ`*v [Ezg<$ECu}GƧڟˁPGIh۲B%?:K*^Z%D~@KT9%ݙWyw0'=:+;.ݕQ=,xgiwp&O~<[Ok}i%wUn26c& Ȳ>Rae*?϶gԸ8W\b`GȦk^2%qUg~RQZdjȄ]ru%.2Vb@sU ksVbv\qDiD"CLy(I@>s/!rs Ͼ;R掂j K 3Q'J͓kv?__T6g<ڷɟlۛ ˋ:GP<ۛ8MOzwV O&)o;Uz!OE*3]U:si7ktǩG@; F\ ag3+]s¾1wL_Wu決ӫ?JȈ?9V%ؚ"h@H%>ox S!@ ^x+[SFT@"T9gҸ濛 {Ȅ#:cC.4rEbо+PxB=O׋\3h78|^E7!~+z?zKiǷ)n˻G*ƹAf"a8`FQq߁y!NsydR=1rlq0YNUʯiP҅m((IY4aϕ9#_\;2/ښڀzoOELx9}bCCx`Zԏj=x hX<)njl<6rNV3hz IEYĹ#[tٝnÞ8o Qw]E6j{z[y>?I^ek}o`XB8flWA6$-t( uw/0XMת>M 'IW2%pY@RR xL:<<YTG ={vS{T Lc K&[y»|zC e$k7^v6>҂{%ljdBUX1ry?!wс ]8?&xQ^CiD&nV'"YG0_RpcnxWM ['!l "ҽu-~Ov? .~09VF;q }Fڥd##㢢/D*Q)87+(Sz ˪azb'M=F[Ά=eegipb9Q+OGyPe:jl :3,oJR|Oi_l8' S6L:%Ֆ!=ړ~n+W6#YMRuS̘-&Xޤ.ݜOiR6`eR@ğ_P?t1&7G%ON]*,Ҏ׌y4c'KJB_ e^U+V$gBu;[ᅊ_:ɜS!1S;~_Vic8cK;Q'VQbzOB)XRˌ5pTN'X)w_hoFC)t$ĵl9%%e~ݍ- k'+ KXngCx5N C@24O}=`m; k Jat^tA:z4l;57B:uD!`48<~ GUK1[GB^Հ$Y$YU+N=@ۤ@G)Pֽ,>d~_ !AwJe <\@.  0\2UQdOGt$ [N`tW&n-E;(Sĩ{JjeJَ(1M @j Ydn m;o_,CJfTIJ;$<_X1#a;vpKBDnF2 u%VR\(<~[^6Ѣ,0C&y[ED#kHl@lZ38 K^hp@v:B,d6ta{sar3ztC&gQ"BJ |n>~+_{.JwfF9 vIQp ?ME87a2zM]b|? u4 Xm[Cm+l }H.piTNlv;%zS̲9<\lh821+*:2*7^Ef&%-O95*^5^DX×zP7p lcP/xr"W(VdP3P7жS0j q6FDG#9;\@NYWB:_yqMI~{Y<!n(a4b"Msbo?O @zUyaSc,\ž|kˢ?`LpruN ʺ6 Tt Rw(;SH`[|pcGR.v}-ѐ%u1s  K1e{*JttT\2ti2^1#(ԥXLuE 3qG5[O{k u$z *<3{%QS&vb YU:`{^lŚ~Jq=9 ~IN{ (N88y2ڕta\6#~'a7{!8#6& şNjuD㤁~Q)vg=o~'Bm3֍'UGK9'L:+fL|JnbVP"! $18en**smc^BHcW2{`m9ve]z[^Iq =ũrc^|wDKU.jOJE 5şEgLD-[ʖ> =:Rn~X:llN؊HVX$rT ^-e*:e8p}x(NхgvV| /`rWY4R5OH}Lܭ'"2TQ3cvtF,5\vAE$64jÁ卖 fT6+1Ux)G8#kdȗ doo{"-t#rd}U\.)#ߒ_R6VtCNg&$ atl״ 1B1V @3tKCè2TdB\v8"38mwx,:m!Ƀ43-9Vb3@ W0|`wG#%|Ow>xNP6v4C!Ou|*RZO.dW Z#j>ú.`LJI9̭7HӜ5*ad糧Uޠ pW5` vS:#$&u^dmõ;60FP۝X eŻoXbXF ]lu=wsR>Qu) E3G4;;TjX׽`,wG}09IJ4dHXmg0i3Y\IX<ĈQJiJmnS嗏.6e_p,uõLYf^7^3]h^{tIKI=wP2InXSvl?Y%%t&̃NنZYHѾcKPÛ&&ƫ3b"0 C*~"&UUm# xkؚVu O0h I>q]$p"ו R![ĉ)ofCabe^,vO5ZDVz2E0xy_ՠ$&6H}ds6),)t^2v>xw`c5둰<@*ihlS,5m/2C vوQX{&;{[Omkc8$p-o/XHwŨdՔM#t*/D" hixM!Ƃo26$##[~= :J ,+-a52&F6RpA!UIڼ9|G\Tm`gG ibݒܹy1%; nw.Q'-'ƿ ɕx:IfU l&?** GJ-c`( C@ NӪULqyJR)Dzf8H?ln $aK)osʶ4z0w@u`m{5tmŇ\gLq>Z.E Z4nBC4Nӵ|B}`f|=wǭx(k'w&\v!76~-0Qԃa\Vh=n%c]Q8ɺ!kU(84mTDggqN "oU }[A.nHqv Js7 qZҝكA|_r ЍouCnbYYCiaf9\~Q*,V[jbє0={q^˸\wk412FpXu1&Ca7xbwns!?BVε&` ޷l˭'XT?U/uBSOO*(9EOI5RMpee8W٠3/Pr]j8!:ʦH,$ԷAm;ts:oʑa(SLW˨+zJR?(l{^80[R0U+k&X[c5Ai^e"8[.xtYk*9o0\1-h6mݦ$ 2T 2d>c%@,12۬Pkz*0A!x[vR-spH,3iơRѧ]&ݯW ʏmoEy$چYI|epRA.)l2c}f )0H٪uʥ2f&x gaLϓR.Rǿ'T28mKy[>An|ߎ)ػSJCi ףvCa))ahJ5 `QHZ22J܆p?%n`i@2Gt!Qp 2X.VHCMljm-(亷2/'VoXγ~4:ճ ++.nOKk2v9]Wn0K KHsA)(G2, `|b~Ug.'W\6eK'R@&'~~ÜY)XM|^cKi&}w<خ_)6vD1>lz>n;.Up> YFנ|vD1.ߡ@60KIȚ\~mΓwt b>@nHRyiq306bLtB "''w"%ERGgͩ-=u[ VbVٔQMg:(Ǒߘx``N(,|-[3Wog ~VjL4rEzzԖ1VrXx5 Y=J!4:tipq-('~#:ȹ. '#Q#s%?Nqh|TȣZ鵈Fh;\q< oŭsrw JC>w ̛=#'+' fi~s!Gor$ӲLrm:s=9oQOθ[goW^/XZzUo|FIVȩTB8%/h99)|]"z-?%KiJm2C(H1G??krR/P" 7uJE6/Unf/߹Ӕsv(KYHy2kFZ27 TJNcG10ةIcn(xnv*sY{EAZ y:"[Pę&s"z /镔YJt_`R3Z޻CPIڃZ#s U+4C.ڳܜ|[G\N|}wOgYm^^&y}0-@(߁3I)U tү2+|4bY TL%dխNzmϵ,:- h m5/W(|8ŁlOfVx;W@ZLRkQл(b6IMJm#n] oQP)&R7{|?ToWY/ͦt.4O(%NKH9 .ԛ-c~@ M"i铪k8~Ee)W^Rfmqu.XB;R?AO2<s>7ptr ³rT4.bDj&lh%YYj z#?^'X }垀Y򀄥θdH2_R/*+1sypbJl< :(*?^Sq e7G<_SEl<!J bp]aO⇏ qX]g& +B"FzAZ*1|[ mIWүzO(cx_ZߪHu}gS7_/vɜc֭<{4@$?j}HS]iy?C8:XhS-5 κ՞@r5ss=aTby-#B)9Ҭ1ƽ؇LwlLs,4f}|tc׸H&w,Od2]M\F$>clmxՍ;BĝKV#홿4GRwi/G,s]D1XFm 7B4[O־ w}1@^]U <$nNI 8Hfpǔ(pen x>]tZ[tE" ,t@aI${֦7_fW׊US'7lA噣˗w诔<"#&`DWQ8`0:3)zD2?!/F%x%iʼn\(QŲ"˫R!;Q:e{Ӧ fdUmC0%8q oE6p 2Y"2J'xwQqӓ,?Aw,B~aJ9hrdBcQ;H$] @  ϡ"E{]2g-k?]v&IC<z^N! Y'gعmAuTN>ʭ a-mO,lSKX&|E`/Xv'ZL_TV\,NUk(]:J ]FT\l0Z߷rQ$ƭ7J4@tnkLʶy[j I2pn26R҅W 067qn= L6miBzN/ѾɸIj^x< cPT;R&lb{~(QL=2f@ ǫ y㤢2w7`A5W^ ^U~+;@).kZ@l,dŠ2d3;@{A??>T^^6tsHϵ8 “ji c 00T-- H! #]&jQrYc5;biǔ,z,M/x.ZZjmL E1|PN`U٦~]ppe5EWy%0;ss"'?d熓THm`پAlLz*a!3L+3&#Cyc hiUa5gR@Ao~KB  ]X|Eȼ: :Lt7Imo&2S-dzCow"G Qơ\ kMBSI:t¡1kV/%SQxFVm{WPby%TrQ, qzw/55uSzT+M۽#S .t&H E M\ɝbVn8oXx'6xtimVwV!9B>C(Bȯ-B/?sn]~;b݂ <v">& xalB|D Rk&'#'ʣ&zCS]}Ti%]?RhtU6]ZAv2y|_gݤҖB4PT|//v7`T[S}@ie-1'drcvXYl%C5m,%HqoAB?9Sg6kdzGW-ASpZK+A )ehz=,쫢_yc=X;>sԐ#؀7tUvJ{iYqWΧ:bC\b{7,T̩w=vfW{Uet;8n@"Bn 5翰-YX\~ c.;Π.Y"m6A*ܶp*a^ɵWc|((ZecSŖ`RƳzBxgj֠L U;qƷH`o:s[9jtpI?mʠPaTuGtk{rW!ˊ[9>nRTiϮ[JIVq<\N7*Kje,1!t  *+V*?vug74H1!nD-kLѻX@}}ةlZ(ֹyT  j2{F ŞК~E‘ѭ P9f/Sɏ2C: bUSF =kz\mibmw G7^CI몺%T\NR߾9 * ۑ7 tZ-ej:DPr̃31bLMac;0B'8QU9y 6DvdM20'<6 0}Pɣ' ł#ҟW޻ (/xUa)0i=hsRyKgvұ?5"EcN{v:haOjU7MF_m]̲Eu.,S3,3?@1"03$hUMzƢ;kp2r8{[xKGA.|"0Uwv>x ٢?[OYـ)g !8Qbw4.-Ȋm)?^J~ >,Vtjq q ADzVЁ734HA@|=8[-dחNې;:hו8U&j_Vb H*I 8v Аd!h!h학&OiJd7@2>Tngp5}Jd,.3xJյ'5i`-Vm47?kaݚGn;e;ӰRvxW֋Q WĎyҮy2³<~gKc =qd`UR̃|IX$COƽ '?ܘ/.za@g~{(L-kct n{dnim`UZfAfd 'E˶ҔBy2k<%"Vԕma3`u'<(H4AQ2pȑ&i6!db[5lZsM\koXEdv 79 W\-ۨW#"K1i%W y'0MivXT" >F$t>X+ITMNl8"j^Z1dLSV.R/4vl i'clԓHP][[ ,wrL"860}pώ:*BӒP Kb2 o4>N? Bؽ+ +*,c`4Hp>rT-9Pb>/N_gJX ܨpG@"7^#N F"UwK=H4ՈYC;yVڟgwKPϹ6QTƇd vog#sO6x^Kt3: Y۪}Ewy`#mqqw5s:J8pX~-dFqfjmW+KB +cAGT3#i'JاFtORMCv#ZnG i\?ب9lP|0 >bJa}ZS#huk%[gko뇆42ZPjh}AR4+vueɒ#uHzlaE}hg7Cth^ >Z{,aٿq-d~/]y٠8- {9F*Y䥗Nj}SDhg (@v? ED[*K %TmL=qah }>[f ֕ )I}7NKo*'Ņ3*OM蝳Q6ym}ebo3SiHВ\`Oa9 +%Prmk녢 ޢME`m8_e+fŞg NC27@HbF!%)* Rhl9%%Te|tD EVD3Xζo8b5g}*:sQ{ĥ" e(;Sy-"XWMdc>[:d%yTgei+9w][r> bRpo7axZ)`j&c8? E6Ƕ5ǵ> 6IڽgE)_s^Ĥ8hVr&ǯPXS^xt[q%%"![iuׄBՃANJs!hKxʑ?sfij*HO(fS\ '~ Ғ>z&'J[?Lp)3(q%yPmkOy63q{Jx Wyf Yscl =P7%xĩeq X l4-h gRx1*¤}ibh cz4nKKo2}5eslRzbƉ+蘞y9txeK*O wYygLv?N5 DBqta-oN7u *b葌<mTIoo>@hGũӹk2?Tfp5(hUWk8*q~{xdy+Y」w V_-WafEbYĵvހh \.2#Y5(YJ';!5vu/!{k^%TnOUPDҒuǝ,M=w#2bPo෵A1q>ȕo8ِs8NHhdbE#L"k]C6ً3K>$n^]4BEiTt0JDH)D˰ޮ[˗WwW|DIooDpC4).4s{O@^ơI7-LQ畂ݟ|ȴ3l;K|8H֧_qa{߸Nj[(W2HyHϞ|a0?2$oL?Lry졊Yjyq>fߤ[<]R@P|O$9BV' ji _*<@& 3 /Uv OXi-?b ?YWz487G ˋBٕZ#WQ}+09GS v/ @f?9ء 3M􅪡vds7 nU%\J"c~3SYd=U*&5:7=ޛ}?0kU"0ćb@ϐߚ qG,k?]uٿGM(Eݴ+/G*tP\:yc݄˄PA7n<+VVyh92l"[Ays+.lI .] DX1{s3O=C[}FZN.rFPO'D Į Q+ʁ7ܵةPz:~.]}ivךOu0|p|єxFE pv@YicPh o2m!XDF&ZEV\C F kwBj3S'oXf+Fa,QHهӵ\BV7eSS Тu@1I!mn1prfJ*DuĐlNV|S ٣Fؕn١+=U0;7hH'naR>D?xJR LQZK9ƒ&}[CrAsdz"@7>)I-Ѵ'CZ8٥nd:"5)eh4i}0RqDڝC;4].9[ qՍ20)\&o50 ˣTkcT 0-Y]u@N_3KXia$t?.v(V ꆆ&€ϙV>r O/DygT_ ;UeJT^2v`NhM5GMR`uf ,a/41Z`w 1 ~gg,yyQ|յc~VwI*A#?2_.cqL RV Tw:2 ^(("ߙ\U#~Wf5tJp G9\URML d1>?ܬR{=Ƥ\a\=/|9r\5;<s>cdY/ܐOX/ [<YսL2ӻ|ц!qXj˥~+Y Jf{pbN!3Rƌ f)*XctKMCyhb߂cm]f)N8!4T#_pbdI`:ped$ %uQaJ_ݶ<~Qp\Gb0+,3k+Os[]O3"g$uTҁmXȕK0wq<ޣ/9{vbv-E/.enf۹siIeǺ@YD zתuTwg ;K'D- U2gY\lƋVEiK"F)S@BI0~}L'xWz_3 8P? ĸp(C !mw<5H P|gp BhauT jQԎ{T|v`|'z4ŝ2߉š]mTppΥc)gZ>2f<.˯U T D5/: 1pIz_"xw,Y1-Lv[<d+# #8B}m/3 Zk?0XKPtVS7Km죺`4X1fG9@s vmqvjTZlg}"C=7)eީ?6g/8uN >/^K WKZrE E)=ԴvHD{ߣrή^]oXzEW$d[#;] ]D*i0*͂Wm9U}^k> l~xsKZǍlîDZN>A: QHq lޫݠz "ƪ-Azڌd7DFzha57A\ra+t@$D9}̓HO$d˵ln,4o?.v@1Hu;8}pX╸ڇ[ly2;GQ$Fi[ <lFθU@${HZs,@bQbˮ =Nƣ: ];v GNPMd-"1Wؽ;lUNH%/b԰C/@)y[ly_F$>>1QWxPYHֲwNg~F~⒳ J`#9b\ߒݨμİҋR2< !dXjg`őj|tWa n`vҙUs(|h'Alw_IMkd ʴ*T9tly8lؐ<.?'qؖ?HTaYT^pH씌nGkGV.40β${c?,%4}떯CB$@2eq4;t靖G-VA~;&MF[?"4Khsl5[mÝ]6I̤%  r-1fb׹3boܿGOCAf3yD\*^zlЅ 傛x1.T~Dyyjq5;l.>o,`捐 6w}aH,93?(F-B[gp8{nKZ| h8|C1gKU Rf0Lփi;46nbҿ5nLҗPh])\(A#!l#`@ ˏV: yMLu[2 o͙lHX4.Ķ.mV_.bKuIw-8 n(:_ Mt,Z1#0& =9<2N@ uG( 03?w5IҖ%:aS:߫C"8R;q(ؖ?RJUՖikvuIBXcqۦY=͉r:|˘+^( +(㾓p$\pfK^=Z\`[dmtYp`Y3|k շ@Oз{?@^簊|ziTan&1RD5lծ;ܧJA7r!v/a 4 ~$U-YD&۽|oJXE+oG֒/[Wɀʞ/420_";%3n=)vm[r1 h&Fy_%@@ 8)9^ZD'fϣWrh Ȟ rj5vowb~6ZZU6[־om1< o;dㅸ tRTKKtyš)py mPvm{\gwoU󐁒Dd.vq7~ǞՁ~ >gݑy0*ϧ֒׾SФ}ԌZ,6a[q7<9ﳽӫ"b>p >3L Ö6C!Xb%*;Rj"6ްJq NPڢ"V(Nꌶ5&HNq"ʃ(Ja-]e{ Wߥ}O˪馰aP)"ߚ@ݡDW<䛌(3XߖǜzEJJ.3v w\U4(T3&y "s=iFj=w<%6 ޱ6:ޠv"q܍Lks3E2p߆)Ͼ`3Ϲ$^'_byn9wf'b;V;JcJ M*j>D+* 8L1!Ig댵s<Uc$sY=;KbNt4p+2_07Ha >מ$ L[^3`o{2-$棷C\h@y /Ξbff5GޞeV '<`ceitI uL+CAIT^Zdx#$^ ]nPţ[&1:Ԫ$n'7:)\Z2֫_7H^:Y^^XeqE.Ty77Ca`>z?j=2O0wWv fds#+ Qdk3NDMw},]VLnyd5-|%]kQ_mtV`ڱ^„C+ [Su*i}`/i"ǜxa2M2[ײ<`fםěͮMK?gZ/g{ C#/EEQZZsreb7+n5AjIj9Pj68NO,H7my%y'iopkT3eu\%9# }[ʾ xi }uDJxhʒ wh%CۄqL!E4ʪwYdSJ {uMH\5(Ԏ%j&z,_||Y~!| =k럎p/ދY)x jS7])f}Z_8hKqV<5iRg&󜌪& @`-K*,~w51y9Kv1wbnށw(Tp)%`RPGb!+E4JSO"X!XfM`C KDԹ %aU)4Hvш3+hIT=cwat,/woJ$.x)h+%^ a~EuLfQ?auv:SŒW }{oߏG9fSmyKueHXp1h3S6Xpr2vagݴV(Ѿy; CgUn~ytZשUUD4{>u}׮_Bwok~b"]^{ATsnѱ̊)(dvv(Hokz\ӈdEJrv%nvE_xށ6>\Y舫C k/L >̰ci]a *B}_}Vk0@+$@>bQخ'!f"ak']T蠬HzT7p:XQ=+[mMEJu+`܌mcc\ZėBrheIIQ4xpЮeV. $>(qw7%Z]MujϓM:>} ZϹ جdؗb+n>P { a@w٫>5c&m[ɡӅ vDgrהY#~3zjX,2H~F7ʞQOUGwDRa,V+^հ*%%Oʅue+ A<:ݧ="Ї w$=cFCmϛ&@UƜ%kqnuo#:<ܳbn? [,r}29pp=~78ut-V`V}lO(7BC)5<3,_HvK˲ڈ `:he;ƞ|ꂠ.|AqvMy -"G(P)~)ie 鉺'"o~Y3W#cuL%8ex\w ECh*BJX*ʇjɕ|?5<֞3tUhenT. ,Ӕ/^ɤv=amc-xͱDVNOe|$> 39HJk!T=1޿YZ s7:*;.>59s5ƚX@y2>Xߕt΍44y/:!)E_ G "Eތg ^<3#Am+IU'jPQfhh ϛ̡p d q5VWήJï?t-p9c, `jc,հ{:2P+Z7; ,#Wf _x"23e{ hB(?.cw߰ :R2Cڴ^Zջ :%&i=tM sQLw_, 7>X^-l넗\l'p|c#bZ$OU |p_~HEi!ZvbKt==qCW :l6LT \#)u{K& cL WؾE1R,JiCvRCnd3AXNǗc()ʽ@$<ɚ5U,50Ҙt|IIQpJhN͜# cڙ 5g ,VUpkWG̀9au ۩][*8*tן; O &BmJJ miQ0]7io2V5[ :tRꑵs_?S~Gv}v3\JdXIܿ.`y[ɰ*9>`2&">gZQԾ0 ?I/RiW\ނUO)}dGG.(5#Zw <CUcFER9l.e/X2y^b-:&\<c̿WFg<aj79-8mT)-8e..jUu312V?`am Fj0 :=<2| 65]w:vۊTY르e5}OOn$ʘguéiX8X"2&H"wՄ'mVw#տ1.=%;# .~1-~(qv{\n%5&g}9vďѢ 0` J2tGr6bb ipdF Z)zf8?핣~UH!_P) d&ezrVwɅWY-4WA:M2}).&cnphNI\݁ͣr=oܭ="GW|xj_XCQ?KeO֔k"T*Qw&Ӡ# P}˸R yh1nM,y=ϼUK ^ Fx?>CJ)! 3+8AT&d\=.1)zҖ! ܨ1^BsJkf/'Vv!)QZɝJ icΞ ^ crhZ$5L&&L+^ H+ UknVvD݈sKW]y [$ *+%Ayyh,lƅu| 1R[p!~x AOi@ӛN-n'3NWJ2wȫzmݰ? ]kk"91Fb]P#Il'/YE|}%1Qέ[h.GvOh!8OqJĥ$I v%/V'9Zw&}*7EǸOt& `̛sйpyQmm \JÃc"Q@ٚ2L"Ai^8Kzm]} JgM xT)} crT5%2k`6!~MZ{1RC UbrCd`D-)i tx[/Z+b Q\'4C?1wAMgӜE0\2[; pְQM RGFMR[5Ὁ".v! ߔ=3<윂Tiw_{0qc`>'jXNĿ|'rΫ-އE".<뼱`,E4 h{ eO1kKrNS+#[ @x,YS .4U_7p:$Q-9IB$:?j]ou0Jk0y:w#l⮕7j``~=g€b`Ua"*sTE`?hGoZ5=jT7 58ej+p)dCY lY{ gj" b8IΑJi4;Q|:~]e7[DnKֺLJ*W*Z̭WcðVt{_>5H}×"i2G?m:|#6irp0Uhri6okǾxo .A~Ÿ 1^R t~ ,]䞇5,RaR"=Dʤ=۠ (>hjPgNXf3z;nfqLpc3A}967r,|kp0ǡ=/]llU5un1zlZk\]ߊɣ#eq`mC:8G }saBawnb0j lmGfpX|P),,-%Ŵ/6uWb]6m؍jYR8/H"ۆc9<,-M,)bt?35g>vlE ԡI >0rɅ?.wDrȨFM}Fx~@"B#77W8= 7 p{x wSI 1R hE^E%n3ӪP@3Cai nm֩G#J4" , m632mXAI 0wӉX墄IFV^!xV=>@gGe{R%oCVO'UJuSn7,c@.*, c((:a U֮IۊxV3Q3˯bz:0TJ({_Ÿe'F 2gv9?`HDI|DC%AGj-"4 'cO[q5 'ϑ́KN7[zFNvr=+aE]6q j4wɂLb-}]#b8 )ds3)|jҡܞ٨\NQxX/Ml}R&[0g,0bȋbӷ=>;Q:?ؼ z-I.%M/^iU34 %X󼪳-\',c( E6>-[*x􆵔O)Ӊ,[޾9Tf{|#14;uwZ}+4OĿ~X#GXvj]-)Jq8F_0m.s2 1rRp#3 )gF)973^S8|e[L+iRͽ;I⬖]i6Qg!>k6teEԁuuBE_5o uN7 2Or>\W nj긩S b.T35+,Z.KqVv5b.GtƥUPs]OY@UM "zuk7TuS>NQAϜ@4Sf="H,V͈B@%/{e`'_xM; g HH]t cVƤ)s@dX^/(|콆,H]׾ (,_,I{Jc2n,o`bҵf||߄}AyX5m.ybt_>Ӕ'=wA6"A, xK>Cgύ% hUD/߽^Ϫf$mh*"YP+Jx3tNMsK!>v hVG &&} )>w-.cJ*!s: [&dP})q=cB5n Z_ZTu-j Q=Q o6g>p?Q,YřkX2ꨇ{ߟ71l2:EX:FjPIpB kA$RHkc? "j^jY[#vgb2E@'cL7 #h9(* NV[kCuɷ/Mtq?"$QG u>Q!$GEd5Ϣ32H'wcGKy kl]29}\ n/7TwwA쎉 { m ?&dBNu^\ӄ\,2Gzarz~ TJZ&9GOtvKf(q}0N5+/_9Lkf&yU@]`Ү:)~f@{[d0~ *l$/Mp4e{dI?1/>dRg {yg J粬|Gp`[F'ć>S >&,%%,Ӻ*"ҾiS Ntuِğը-|jlv;(~wd^[1ahoE fY[Z-s2TI~Z&0#ҌYQՍiH.P9 ZMVf tLוrTpZ;-&VN a -`l5 ȧۛk10Q׼{U;ܷ_ծX*b嶡uS+uF^j|=y ,`za= Ls'osD_J':'vsVV?(a-,RϜe͈fiC쑡qiшq,>qI9;`ؒ:k2RgM^7Jb6-nٱ3~*{4W[o+LC Sk= ]R7ոMSS|{Ɔȿ:UCe- V%#})]L}[L?8C 16E ("|@D9 0~_DjQř!T~C9P62RA#2Ec;p*=ҐD3R,ø|4M:. ZE$BL c${HцH!f8*Hlf™t+eZ" Xa$oy m(es0f|wd ckii,E<T؎HTUZXRa#ȠRY`Ovƫ'jotx$%bdZZt fYIiNaU@O|$@sS>#zCF̑LQ'27S?C*2L(]`Evpvi^d ~OYwLb]$5|{yC.+af@93xmjLrUkAkePsbz1H:?@&+M6P,ݜlo_[0f3 TXý H!z1 ˅T5:Rq:zmD*7%4j#-{:‹5~$1yorBGV_?[[{9GTi- cIT)R)̽BMEUGm ۻݡ=OsOMN ^fB߇_θ,* {`W(Бɥ_?Wa&_AQPQ BęX?Li| +K3HSR9I#NQy7aد/_ dr=&ZFU׶'@oXa1Fy/ѦL%)su,p8UGa S?"JSDUTQq.qqvPeS(tHXoC~B,ӒvV3)BxX)PWF^"h#몱VMy_ÂgQh+a&QO eW 6cӛ jkUR.Bċ)ڑu%kR!m |&Gv^N:7d/ ø -^Wu,L/pkFg5C+<&It6դm"'"UZs>ڸ1H?7ys 7T]B"yf[YKj/-kTnnjޓXBUnzI*ԇZc{YĆid*f  8TCYsc冭1S@"e$ yE)OױLXW ,LԼAO=xRZAFfuP0b[+YOܥ˫ig쀳!I=o4f,x( xF *!I^:]~ZC1o#v콥}( 2#(tjZzbBYS_g`]Ozĵj~PE;Z9"/(!W`Da_Jp!VźD˕Hn6粕8'xba>ƇUDץHu t8w¬$swo.n~ac5U('ҏGn cަ'jFWl-ᣅ!c i\sz=&>MձIY}a6t 10̻u=)ЭS+hrni03Z0c uR.7H뱷$>~~3(YX1 6E/7PMbf"N2^<[w^GBAl;rfvL?6&ȁ.INb/'؀pgO.}mi|iJTkiK8~X>a!4~!a@&+{ > ֱ.[D7<7fr4Gǿ(6WC+ktGZJF|v@ UGSz(C0)akVUEM|t^g-qȄѽ5 _ mE+9T{0{נiAw![=S\ :v:%/v/aBk޴rՉ\.J;%ן Bl9v =9'iyJx8{[.a:sj5Or@*& V(xJwQʧjdi8)7Z`7*ڤ̅QDB&-U cdWqU[pn~Q쇺ͦ' NgsQZ Z=393b[`\Ͳ=BSM*n:X*џkRÑƔ(tS~Ĩe_߾ORvHTIXzJo|=^{.υ;c=RF?j  5%rZlxM^#uWL .Y +I"N?@N;ltL'gWR9`δqn8_ggAWѷ|Hha9{WK5)XOIUS 'i"Vj*Y뼐qҡIdPc8I|Ta.>7 )Dȓf'-|v1YѸEoP[ ޟ* [&b+ E-;цP-r T γlL-o^*@{P_C`=}Ǥ5{C*쀠ř #:mFߴץ"kW)YĽjUV\}}nŶ;^ʚW3.Up @)^9fV%7_^7Q}䳦W!#@-cu}}\{v)i흋:IhPxx@ӟVWxAPx]UH-2.vBd ڪ23]5+CBN6uJ LQ&oN"=AܠHn^` luv]Nw{g-V]%ݒnk/A'I<%jz~Dߢ3m=K1uCv+.?&nn.ƚ]ϑ'ɩw>ƗDgl#:0c*.  6Yě\ϜDbOPf8[lЬifJ.,e7 _ vi (JW"m{j/q|.|GodaoK|ξ]^)8jd:!sp35Ô.*^%R@xف.tk{KWk ]Ҡ,渇ٓŢH @L̺6d"q[9JK(jj@; 5ߴt-)5 E@lEKQqfSS1G{rtZ>"wK_;ʊRNz` DwJ$4VQ,4t׆}u K}>F'0r)39d]x<RyCf0f {&H\/~X״1b6wRcu[S[7o2zg J&:{Mw'a/WkvzD@UσM pȢQ<uhѠta.8%G$ϼ˅ @L?ϚLN$ ؟GX] b@k-񟈳CgfL%u?Bk@x**hf ?HH+ڳތlּ=4浒-zZn6;2EQOYbdekuRqp452$r7bj/oV%Cы_'姽hTM$ͪЗuɏ B,n {f?h!$_G.%9&0=y7]dO3)QOPxu㊇a r$8GM:]BL2M ,]=j%LEi;fy\|61\' d5^~wi nnsJ.6 ڡ'G^fȼb)k#w,Љ@ nG'{PYr.cB7Q:\ُ'U_ZẄGiiy'Zu{whb$-yp'fM%ݼd@87ekK(Y-ߡЇzIGPG9\a#yT7JԸ+ז}pr0^b}Mtʗ>~1RӌʶS(}d8u=RsfYO{[tɏ'sh [xyKh :-fؙ@D />+2 j%@wK 9z s+L9j8i  ȡ%rP=I> oy*'A!L$8Im-ȉV'hi1acɷ!+8u<3$Vd#L.,R$ҥݯQ lrM_7pB-̵>q CBQ:}v}3)mo&[h9!Չ [{ :j>eVCaeoZEF5F`ə+۳|gos-?>85epyW1rGk.{ Ï`-"{5OzH.3WK-h7Bfip@~y7}rZ/"UM_pe=9 J+}&KQlkg8cI9 Œ˕e u \&g.%X\쳕vsS`ℤ߹U"P+ mO IWJ!n5ek̺Dpl5l c(>0Z`5|$17hȿfA$-ź8I |j֋Y RL nп <ŐqC{Oᓉh >Fy۪4Y͸T ACfME;3DZV 1 d&yL.6& V!D3nxi; .nweӍZzb燏kgVrNm8IWffiq1:D)ܺq M-H7L*HIۧN/A0+N8?gentya$"p>=M6WldޣQe|t4W$c4"Y~b ' ̠Rx>snTȬ{6iJ:F =u`赠ݐ'6'[wk<TXXf2pd|52a& 5 =#n`8vp#4/|`t^"I2 *jkHͲ%7*qSqEŽd ٴ(Hz(x!} k/9zzwc|Z=OFPJS5\#*M"s m-9|N=+GI 6% 1{YW*[;24fx ;f8A)Lҏ41Yq}:Š+Dͣ.]U&4Rʄ#xh)P1R2[( 5ܻޅ>޻~rLњe̶|_WNjxuNXRJ9$cF~lov_77`ZW籤4S/ ~#1©kTPH0ӏe}X IO(Yt4=4Zh'"C~^>U99%6mco6)vY"XDVbLgOI6K^х~j(#`$p.N(]8xu}D#QطR؞){rOL<^&\Q$Wn*ӓ/[ FCU S_;%,Њ("9!yI)تj=N /D@E;T0A)CO}ϤŪՔS {OHEs>P7$3 ;O2 ߤM6Gy1DM6/')5+vqn)P0ux-p<KB7 !ig&F$vc9{XUK,2/u VAت48 8H`};98=yāKLȉS9=fk"Pojݣ0 {;K+%= R.^Zݡ͗*Ϲքe fbgvhjpO"Kle/۪x ƾ sQ("$8#̷W՝QF{(N"!ՆI%y4%ŵu?Bf+МE& gƸ ='<پ"F,PֹG3_(pȊVyvl& {\vʫ||r$kZJ }vԺ +t ?+w50絶 Ռ}$GZh4E* u orf 4NV1vhPΞ4NX)zMb1;v_e͗P=i\nG<@Uc F!K ✠RPblz'딦ېxŵ}m "SB|DMMPJҺJ_{ɔ'=$ȃˊNR( ˸퉝Kme+MUvRR*>m(HNT1;yEr DTB}l!(Mj!xLHАCcFj'(LIoO U,.uSʐ&Ldא箸:%SQ%uXsE=Ϗ`|[ {c"&6>Mcm7j+4ZyZ v,o9 4s#Z; }G_5S MQ >|ArUJ@MfʐJ,ΧbTtbjPb!A`j7f ޓekY{_|l\䦦x bElP,?WFp !]|5cR͋+J;Xr𱊧1/:ٗ[ڋ|j[m#_+Ws1f+m 0JgI۬y/R3hH vZ[g 01orih"媴+TɅK`a_BZ?UБ0Tv_벾HlG[x4p *7_֟.2wv<R8OS,%%v%E._NrRSiҐd6 TfvT1Ye\ˍ9_bqk"p h&L4vQnF_j (ZBr)~5 aYv(zoq;_9ZlP+9{$z:#R?C4%ZuaqM֑Qfy}2O27ř!6DԟQj[Le I\i&DcVO*п9tHc Zk|T6Z ծN`]2sv%Tݩ=PzeGLJerQuA3QrzӦm&aD$$75㦘*&c"£Ws"W&>%Қqw\m-mZIג662Ι|ry<7÷o?&K{ ([ 6%%{_8b܅DHt߃'*Z48b`>գFO6<੉w]' IV.a&/Ӣ^"/B֧WtO`Ss|:>U|Z9kEƈ5Aؿ՛U#HrSkK 2\[\4F{]K}p[Vf G%+W$+-{[ /~dGpWыſ9BR^1Q>-{JAԬА ~I2dWHʨފh`oݧ17<4>BEp䖘|_HymOsg&Ea9 O4\8}bS0 ;A]Vj*&ѣ}TeJl3fV{aPK92έJV,1Ֆ%x!~zp/AzB't*,Άs0:"qI*I__9&Afrɵ=m9O?!.B0@fX8~a1y tOruXwy#dy 2>#&iA!ުkW!r2RR?=o%#~N)۵=wy)ئ+nׯƖȂ6hP2 :\[ә&^kLpmOW]p}R4UcATpHM[SayH)Kyz@ ;PB싮=QrZihƺ]^ |rQL|zUͿoF@Qzj, jQ(T&Ȫ[Dz? )Ysj`ȯ,@] JCh_!|h7 "Y q4T*=``b@փ,'3"RC/![-tbP68 -9 h&`uLɖ;Ha&A,gۢ/_ґ=3둲pUCMw"*om_Qt nN=[VO:[+o1SP#eqgrѧ%1ʓ9#ŏ T¦-lV*-'^qHA .~ox *nz Ț ֮&o-G*7?tsXd\dKwUX J|b7-2;KѤZ5D7u2ݿ".yqf1UI ȉI0Kt)51ϗO MzAs9]ۜgݹ6].8' ZiЊΪ$3PdUU:y;] Ы#6t·ꄟ_uBM2Fq2=H4EˤJІ?Q9l{*ۏbQl!?Jy @ wXd3RXv Pc(y~mr%%HT)+30FWLV }#s" Q0%6ʁ_Cժj"Ώ̷ jwLE+ #-$rQȗ*4qrnbUKmzLJ*hDq_.MEYF ]  o'v2Lbr.S3s= )AL4_K<$9=vm?hu~?b(,C+n M|[P[Ѓ+п̈́e ^J)t:t 88 O;sz Y73N_ύt^h<})-g뗵9M:@?׹xo@3Іkͱ ܖ4H[~ھ"1IL svhʐO’M=P : RQ<;2},nU=N> t|B*F"-w +ߩ'0u[hLg% N X@RLI1eq&({(׾4PmՁ:<))|:1̳, [x΄B\ɏK;<.(*:aCS7Fhsmkw^}#e.5ޙb/(-Ou@L(Fs +punyc ςP_O%gDܱy#\ |{c"4(a'QiaT5>u^:9J" fl4SS3u k81-Ӗ2ފBe%N9O7(X A*KQ@}[DB>x>Eԕ2oD_J>~$dd(0CorGjZ^)et@kM0A!Uiu(φoCKDT =g"xН G r3;"~3P(xY { x,_&2=!Id!̏!\scm,hKq,2": &s ( ڮcJ5_>I:t~e)Td"ޤ'X';YgVj?zx3TD4e+Uk0$F㤴O+9$+%/x^sr.↝ڀߛ>/_\gY<\œ$^o[Ma T%|qC5;#=k$# Oȋ 7 Q“SC$\(ge!VImL zaD`:?A (,d~!lmL 0>-h}dm& *Y9 }ƜT,%@w A \z)Ur׳@aU8W8#z*+Ajp&IÞQ1bWbTmNahgh#vs+yAbڤN݂ Ik R:(/$בֿ25 /3{ ЗjxGZ,mȌ2$}m!ݖB[ ѹn(FT柪`lW92ɏ)bԧuϯG{{߸|f`PDIDjGICѢ/sf-t\ *aL/eKNn!m9O3x?gUon &@+Rw%o~R7|Y03~mE\Nsz?\'"x&@(ed=' (@v}$K&޵?>,"}+6㭙CLxJ):װs!;ًV4R [ц0N-x]צ&n]m 52?V6*ЦQFҦ3H|gWےv$U{m4oF|WBFj-t,Ǔ UϵT*1sѠC:' vI urh )71>$I=!4J=`jKoM -O ff&h }z1IװQ̩ΥoC AӍ2{W%.u+X"vxX~B+H;2R7l_,ڿ[bO-$^RXqq:jj!ISx#yq _0# DŽL_7HՏ!1py=*d.M[`!}(x@3s*O!d ;| &͕PkBH@/Uki7 :R$4 8O=q<8??`ИM a`ZBNJ:5L=n2[:IJbpQ6S"rL. VeWY5ߑI[Ӧ VzmvjԘ#kW_ucfLPAxe 5Z?.H ߎk/Cu}q誜u/>t¯s}|'X^df&Uv}Sv>ݾq.劓nHCB uNy`шub剪4'ЍN'`;u TIQ,$KJ/wD;hK\0TYAԤ۝cRxGY'Vv:l' 7еbj]Vl𚹞8# CMx5@zUC'$Δ`ě!0{zD Q6E%MF۲umHVH7jߐ0OZe>/]Gݡ2˘#]nސDX.;G.ӕ,!i1OP ȇ#bgs6 ,׸%7.1? rg:]9u9#V@'!tm͐ء8iF\k dT(HWh17Z_ .z@9SdJ!V e [t>Pvc}пA+^(a yJl TKDQn]' O8%y٢dxP'Nx"zR rMy}5U0pb޼z~ \͹<+. ßIeP3S.j"M2<N9 d(2}3,^~fzwȳ]cX!+(FOHp?R} {\USWꓺ'}}ċŒgRO4="G_6:Oa?+q5߽~o4s8u;5qGjX0a&1DczaD/R$-1ﯰu˛NNu[5*DO4e )ϓc<>Z !?D:л $H2 FT`G9W c ק2_"ؠF_T/N,v8;+nǽvtDBduő$F_˛H)(rxL(fTHՊX8|v+MJn(ZLhUjx!3 0˃~`g*SS)$]=7 Af;ˤ?3 q@ ,ULrlOFz+{B\߭lVdV{⁤bVDp*!7K!CJ'Rc[^1YaQQٗ &.Iw6j< ^wu&aXO>BZnmzE+̧$H~pzl'8&ai/^5If+4Q? &jG{$[F|.q7Al}~2 F%!7cwg3JXeИqdR01Kvi|N\ X>/=_28,>f4 9!. \])؟(~ɹ't7Kj?"oj4n\{}ǑJb=3ڟ;6OX'W]yqԅҙ\V]o#v0,,izܸV|]Rϲc[UC h(nwdLbI]s/k+9" ߫5Ӝ 幻-q-G ;ijr<꣱Oyyƪ"ohة {&tXq >L8ط躖i P;2՗N:#@;WʣD ڢWs;%,*wpzaJ(E%Kz|!7 {&Pr`i=D֖@ )G┇׸9TEXS aVq3vxSO՚sL}:2L %:fHG.D(%HvCϳtf6BT A0wP 7'oIE]`aRAڇ`, ޿芄ucWEq3ng`DS9ӄWO/ՒKݽA)G/SP]#Z Ӵs/a@5xXWk;1466gQ4`"=Ԇ.}f[3 k?DS&S(Ta &wsD[2^vgy_*`6`ĿQ(C,a񷠘"|}+pE=-1(t22̤*D!_"JsiU΃IQ>I_VЅ* /0goʖj;B2PbƓsH*(*wT=2H=LUoO5[3⺝g#@Z,^9d*^ھ~=$DT&-HW*峯kr\Dw>SXtkO; "j?3n ޏ)584 y˛ #r(UgJ uKx57z͊W޻}yx`+^P]SiϏA(.]6r,+2r_qY4)qr$|/j~YuqKؠǙ!?KW,o6Gp4HS 0OƪB8+̛ñk7ۗ#|?8`P{$ fgu!Sn fi⟥ f泫i՚0(#&%zCOw \V[6@{|6@Ɲ~MqrH\F-*477 cauv_+AYqDK &ebb2ހ 8 qCL)Wc5 PIgx+PQ;ې{YK  layԺgbkŐڛra ٸI2­1 KS&F;q s0N*5X 2k/*a(_!Apש6O H2Ad>x=i^\CjFjZp_e._Kb"=\݅'TEUd5V2m#ƃ\Un LO(}AwU~kfͥ`l,?AiqAy:K5ݱg7f5VXX՜l{Fϋ1ٿGiH 1 a|V|$EF!l}n'fp;qUL?G; SYՅ @=cMMHp_Tu;נ43$Ijw O2>sMy6tғ2q_\{X_#Em%&@`Ԫ8$BqȲZAnrKRR1?Yb/GpNW ZO N.c(PNV_ZK Vni^Piv Df`@ʆaOzr%ᖜeg6|owhȻnJWMZ̏}3q;Truoq*Dz9h.YNDQ G@;C! ),Z誅~8h8i;DT&tPM _ʃ'oգ%T^3iz&[[zt[oD|Ca?*. A CnQ+[XSS[0kdO>G0CLGWt"\y+,ϋ *BvuuFH5m7t;SH3Qf wM5R yp.nyؠaqUsiy55ӟ޴{RfV*9L 7OnUd*?.Z/ۦlb,N/嗔yG*Gxf?dPFsw&^dTU?, ||^C ӆ@h4y&AEэ-.p%,O$u1h8r|DZZ~ 9w{&ڽ% 5M !.=%vb{Ō0(yC zA/wA:rD l\PtO[ "stV;\$t.%+JaVzpD}mO> |ltD6.'m$r~1%z ? {VRAN hM˼]DI y.i@rȗzIT n_ Pߏ/{SUƗ }!mP_0Q+eh=A; @^ ƁD u6$0}D| )MMz y/ syt4g'^g \~ZKryNAzFMv L K-_]e :Exbr J@! xq1`e h%mP:YE~)`Tϓ@Du3jފr[F7owǜه0.!a'sd1F\Аl-[vLIT""˽>Y3!T4 T$ Z+~]9qs=x3,1Ea{#dݪ F1#AoYхߒ<迊s$C9,gݍ0zw/fT-ZV˾wL-zvp@J2Q Q Lw'8°I=9gƔ =YW;<}(y@= ,ҳO,uJQP-`Fvz8]7 , eDQeGn_ 2 qS1}ulAXPwkLX0. -ZٶBA=/ ?hn9AV&u,Y n`y K2p!(̬ $5;Lekz5_g{/O´>U7p[$V(6Q'lC琣nc |K(4yMRGp?}kI7;a[Vkn5~Ʉqzh6aGuPN9\/j4Y>S+;{fWφ&oqv{_SS,}xjAwVH( Vk}aRɺ~SMwI$&Fl+(ع[V!4JՋѴ{c1ڠ_jcxҪ2oU-OPqw]1;!:B ILN 1vuЎD404M)7a$7^a9Oג2\* fI26F/cst;l|.Td/]+pG%v=0dLf;.2U;'G,HYa(`G$alQ> `iAo'@fҜɲ Hp0>\&N )] ,^4T+B-9+ls6MlxsTJb`; ъ%)KJC5&'s4&h[ݰ`ۛiR!~`ٌnq8bgR+r>JzBЩZQ,qDEniLѲ^z&5q~vpzȸ}ɒR}s͘7hD.>5\T'+ ?-c*FPmM3PMݲx!DaUJ}ަq < u_ΥJaZs,)~+j$7NMldu`ͦ,'@ԥ=ttiR?qK7vKzOS{uC~"w2١Y!l&s)lE$kxƎ_SsJsu %2l:0 ] a-.|Xyo/ :{s-߁PE=*/ܡźxszRzWEћ+NW (%W7'8 Lzr:8oO~* f1j+ YC-e#ϯœI4seΜ+Kok_mVUϓ"{`:dZ@VƾoMK`K)##,xN& '4:wh8I+~z:Edh~e,chkLFv5sF l/bɗv;(+*Z' C"cUJ o#",G hIP4+_*GfmY gUľ!y״M"6N{!ΨvmO/67yznQ4O  P *OEkmx<Nö Ŝ*ߐ=)R[&U3 T-hD),4{V!3ȦI,fŪf{_LV𳰋SpP?~dyVPl͂J<N%x[Ҷ=C'PiT}+S4x>zנxu8uxy20~DHneR8?6ROsrxţ;Bv|ncj 5~V' r ,geع_S?1zSsqyG̲!'>;f-1Auɾެ50>C'-mGJ̖e.J|ۣї|FX{zEk>JBx^iX=IwMʽ`=UXgo!Q=7▃)c4_qS2F]FHȪR8?;PARE!_KSI(hZds2ƩS8EՄRqREjS -n9Q 8vRp'$g'w$d-ac͋3͋.9y' .֣¡֎K7GTiv=)j{gݖwI3xm1iȠU)~X?^ p8HDĂnʵ~vշ0)ȖsrbVq)ɡ__(3 -D W6Ob r/oH3-ߔ<ཾ,4x.p#Ei`o#bͭ)&WOvoux:ͷ G]%, /,=m M:FP18he;  # CV/)G.goե P B@P=hms^FSE{ԒW/tJRF@yVj\ꝉ`":^2s#|_ĚV^wB#L<2xHǺڙ]4|S|KmsD8ӭh`XZ)DwΡ:`9[tE8/cpӟ(D1 Kgl\BP[Czw˃+VCo(w4hmbm;e<%!g?w_7lIge;5DN-dmZBNc_5`Hh^[Xҹhb}!L[SхC#UִĴ.{-[X@T gTZ˓0%PclKQ,03φ-%S`kQO–18^` 9σS,'>+`= <ۘ}ZR9ffuX@n}%LE f#lτhp4rs凘JPc^2KUj6t FQe^sjtцO{#-l?tI2x751G>ƊP #Z@Ď}S,\F:T?jOhu9,MS:W/p-$D4(%X9׊֜{˜|J b(rSn{;V3Ο δ[-,2 22.=4_u?8QSZ&DCgxQaW%B=2awZ*%>gF2䖷':{ʑg{^L촋4',>Fn t5A/Vb'N0'KRD5C/eR_ /$V6if\rG-#@p+oh$t1O4XOUAY'249U &TiKQm`;cV(N'ꈧ_[Xf+cԞO(r/LߞdC#>J~w*I [.N©C[y/'?bˋ|G&^ޤ2;!x l.%c=i cu QI%k!tj``>H[oVCskM W4.3@"*=đձ;fQ ML&7c s@ƃHRH9#J1!Z{ذ~d|1B*Ed66[/iYuJ~ 9ltby.,vUn3 t}?@69\5[>Lrb/e1rIzc,ShpbkTc⌈>(7A&jX =X0SWŹ!8cnw1Tm_qrܧ`;N! T7O2/q[~U|}39Yh/wL'2>T`q O @N$(ƣvf1p"{ ~)}Hų&rb:J%Oq3sSEj[:0zk[ BL$>OC8P85 Â5kD| /\*Tn7zQnDKqy1LYux'рH.|YnX-_?;ń`oz d9ƽt|5쌘yu`guOgNfEtثeFX}d&T.>t.@X.{ʥGE-f+Mq^8f~u|+!]%R̊X uL#Nfʲoj:1쀋PJ2IcT׀I6r,BNgtx_I (/0Թ1iBA,o4-ঽB:uDVd߿r8AQy5 w?k> 9tY#hNڪzH^wCu%24S*H:>l:B(_{WB!js-Uu_o?Q]Fu ݃GM]MUV 5wX8pn*4T@j6H TWqd1ܕXK tnFߣ!=hi!va|$Kכϙ=_Vns(HghXH p)3;f}y3E>y.B: b oJߺ 0S}r0c&O2JO+[v< ]xxc/5WmY?!s,5l2^jH~(^YlG;6)}r>=47PVH .Űr ^ {88 6BжN|</y'/I]HT<($07OO`9,o: PH&n9q$b](/p YKâ~\?̆z&U882u9V#]8bPOm Xߚox$N=Ea0\`@~'lVfKtt㯦ȊB$W36,"p c3t޻+pads]DI/j1=H{d  696eHevCEZ-z4F!V0d>7=%宎~P⦗0 aCO~7N4G@6&1|d[z g5U/@V-o$u3( /1xdrjUKKOAdcnsZ $]C+"D>=gS >G0(d2No_ ă4U#sctD%vn.@cA-dx픁E Lgm֭UeJx-:V2npXy$e0${aNY@o!AJ6䀲W3TtۆUG\rve &/0'.~l?D=NtpQ8̍fǀ>n0SΤuY!MD< #M'*Dx|mz܂!n>DjtW+C(h&[p8B5`፮;mgx o}64nmX7X m{E]]S}<0p* y /ssq9=v̓ov0W  Jbc&^ýVJܵ̊[m +tI{{.3A-lbmgotbZGg9t)[s/ `xV 1$y73Sݯa:\ 9%xVWJCe?h |>P!7dz72LPynO ӑ[fZҎ|<2`By176)n`A"1Nz-F*0.k6-㷐e M`J@naӓ(#2o' g쇗u*x:[cv4~ P\jz/\GO3,f^}t ne COP3_>@,Daj]TN0_@R f. \DhjSVB r>|@{1L gU:^ɸc7ߋj~'`1ANۉe{M,Zx3Hr!C@ !Cڳ9c.Mۼ'g c:H˦q 2UڥӶڎլ<@L`KR6?6dWqOTL붲|K.s@Uv]e͈{бLQZ2ҵ=tЙ | ?|`4a\2TI1%OaU'%U1o^VZNNҢ*KkES2 aE ^JGZMFDee-¶UA$=َkYڮvLJT Bw5L{4RO4H1I?ޤBJT}X'3GZQ:>)zlǕiT%%j_#>DLd aY2+7>HRr#y\aݽ T-n #kE@+71ٮ6_T55(:ڈ SNp"W"QC;AwSxx<(Wjspuݞrw*Psۗ6p=XT$8ɞ*"᜝OHv_kP:4-L>% ]75f5E{ Ub6tO M1٥P EOQ61e3s.H|H 5^Y!bTBB_ƺGR!l,8x*1޺g3J0!Ja% &4+t;3RqdZ=J\5],ChvWZ 1cZ[r VJOWqEZ~&9w=P&0e!ん|mX[o d?)8JYP@_J)a9A-u]זmJhND73 J$>ıs× g6 jr#z3U;Y)5 KAil.$%I-M k,_DsnܟN)R_Ev, *Vg۽9Ma[ UoII 8 ɤ$!נZh⡲(_Η@4> G4`u+ Vp9x&wM%Ew7+nn; O[=K n.BZ|Ր4~}M~O(ֺy2@(W*Ӈ 4 ql;$O(JW7ϯ?5{~V#SX텻SYU eT ީ/ vT%D(9K CUg>ȗސ>[- D573-&NmQ,}p 16(!@0(EwԚP3V@7bjK|{F#*Pct-+wz:Q !O"$3QeJ2&qNSp+?a= E-z"+3Z`\"ԙ h(v*}~-iZaPsqa[Gj=@ _b.:[@ZW Z>ovYp-~F}ӽOHNk9܅\f튮:KXPtqlaʻ ~֤Н"ErziJ|IXvm؊r@kNM'/Q}X#J}~qcCAm6-";t~kOoדM2g^ʐu{yǝːS)X-FlL'rĂ*%y@йnڥisQv Soo ʖaELiDط'~<0lƫS|V/^{'C^n7N|XFp ۴UH#@ZhR G^JK'Q;@!cм(tX]Pt^ MVxg޶Y>AhbU;g42nSZ}ppsJ$354հ-A9.'lR63a6nj]~W $k1\{,RǴEI(Ls#S͒e$h[)MƸ"20gyoyqͺ ש|j󽚴/C+ jnp8wp*nH`$s9Ykba[UyAZEY{c*~Yd "n[ybG2GC QJfHRȭٝJY;UyFXT7疳3׻<$87aȘc-9@deT5 ~@a}SP ל"aݨJZ~9,;;H/VKX80P:HS!";N~ 谮0h?0@n?`wgh#UYj(઼t3Q&< aVh2x&V%O:)@g"j[^4mkq&@˱X+N|p4k.A>(\dhA4|SAI<E':z#(*H3%Z4TU."oVQ_%[[.xDR҈89$sƴ%Љ.|ԯc_k14R8. gr<aI$|=r*|OA]>D=xw,Ӝ۸w3VXl7 m)M3y;4|[*k1]yXT/G94ؑ!fUl ͜tlZ#D"<5},nO.jsm&7ٙiNu/W[oxcEP@ѭVlQ3۰ ^vܱ</ȹ*(oL\v iqqO՜Y 3UO|P8d TLEmCLQt|;O~UF4C[maI2 NT[YU/n/pIK{,>\ & (Qjh:YxX,ڒp'ahu_N^UL:5Z"KZ!.;9b XդBF(/3:NjU/WZ33>ų,Ҕl-DЌ!<;r_w+ZtnX&{r0XI>0=EsEu1qxIv r!c_Ԋ8wMtL&:ߤS5^{M2|*yVE~|sTk\{Gy gP> ˰a&PDǙ2|ItyKb|B$Kkb=nK~P}Hl݆;>>v Ɨ:lPY:rNoEB2 ;ؐ;\ӕ* G"ԠN;Oƚڃ`ZZppH$W}C\q=R@} /;֗g1QheKcXjB(NZj4x#DX1Bv"5},:Sw%pzx#?DVF+GEH b<-])U88OM8AzB)d\+QiwH h!zT;Di\̬ɜڄebcC93*{|r} >y?Ph›LvX$hcZ;k[ AxI8w4%D|ރ=#2i3N=|̝? kkYU|5% BPaxcTMazb{'3i*OeJE_dlYchw} Mt*pw\qsqGxO9s鯏޺G.-!E##eKE@T$"^MԧH .d5x!&ՖiLwzwF1OJ[WI __kWwWƁN! eH> B6,1+At sAXaw{V>*oog#J~88e]VZ?6ڥ{#@KCV1#DC}Zn>t|$+ t2T*FϚ DZj6P+ЃX]#V@B)EEk₃?)LfVPpc8-E1hLPW<*) $OU?9YN.x$+'Z6np0'޷J >L_khr.G qNWHec2DHNB}[Pl$n+ c9k16n}bXv ) ;`(ш<'{╒ |[yE$Љ Ь+]<Cj<@1-80KI~eZ uJ28 ?#*5VxoCHYf3-*r/xB=4,JeրQKcѵp8FQl+"B"wU>P!w7I"ufФ`Ή1>SvyaGbgTdDP'Oמ3Ȝ$tKoouYąs lL)Enu%YQXX4<(5T]^>g.^92.J#`HOi&-.$!u|PD=֔_gùb8`F}ɾRjQ#i d1|`ABipvne R^BU旦: LS<ҳḶɏ_mmdbÜXVmџRj43lΛ%sC!QgnUUR!T_ECi :JJP&ª\}p5 ih ah"h#QA!$U~&EAN Nn3i>T渔ד|6XFqƴQwfhۓ(Ɔkݑr"֔udǢdk᱖ ?N&A}uMBE0 uG 4| ί)~}Edo nePwZkàؿ^P1-/Л]ì#rw>D@}CJT~hhQ0BftDŽs!vƾ6Aƽ8|YzZ%O/sl(u![}F g#pBV,>O%waf5W+9(8)\x#rg$,/%g*dr^QMv1>tG-l] zIB|%t%N~mϭ1pVß70T9'w$LZjȌ?Z@BH7|[LSVLBK8s@? 56SB{0J%"ڝvп qLS}jhGa#_</Uq)j'0ǙoMw&m٦F< F2_\GDp? UwVm80j{CpR5S A euoF"R=;_p)#|3)cv?>jo{ۭ:8(±qtǝ2 愀Q/[$A*9\2ć";QY;!>7N-~bz L^zr<(Be G 9D,?\d-n# oeV# [聯ǿ^|D# @7k;>-4h'4ڞt}XMjģJܲɫ ]"t!{3(/K"Һˋ`F1=ĮNTN/nVA 77 5q a=hcm' wbLbawZ#tn<2\VP2@x$} p'$XK7hmDN6IVe&3*=kcNޓ%@(倮XT߰Oxc0)%;m"L .r'~zu7KngoO R NUHsbPʕ[.?e3eʥ ,8ͱB0_s4HKBāsn22G"1Y[RzKbh&[V.uMźfdT 'H~s lC>aW,va($tS.!kFT/CV_K*{F"lzMS7 MBC#F"A6@AT"slDZ9h8oY }L@۵dIS5vVВ\>WkJ/ZxD>YZFpx[:8l[k=rA(iy=8"8*՛cr`sC.-&P=)jϊpT|sZI:X馅X>Q %ͯqUVzk|6i*EPc)slJ!oiq9}glL D%&^)gX#)- b_@\;a06)m') ynGҚ\2D;1y( uDP+oL1p/>4q  Q7an)tBavq۟YP[dA> I*ʽdüeȩEu-'PBh Y#북 gzO,:Ӈ)ew5k̐>pNSa;?o2m^M:=Ss1x,y[=Q@[i_/ی3V& ;Ez2Za4שC2>9o=)z9~XULo&ew > ?>c;#S+4vɇ96>٨:OڷjSqDB.NkƄ*agu=^vG}a:28-jvA}1X$Rz ע 4$L:N\ԖHmK[Y18ýW[>{zxTis;Ex=Fń"ܵ͝TL{تۀ6Co`Do:W!"ޯi/ p0" NQ<0 Kr+x)7%F)VznLc#f RK_/gWAnKį .zG{s[MM0{c5c^sAA8Sz)*W㸯oABv˜3U}ie>bs =@'o1K c=6M|v>Tw_^>4Ǿ"YXk$ H?:u:!pzG/uj//lh>V$ [H* ,?8̐Wr?dZ2-GcUCp+M>p,chH!ЎAq}d#B7$T᡼Դ5MWQ_Gg&tAJC6v[3LP;n!Wg! ]~9QVyt\?\TWT@%qXƊԔ_ *)إm߀&(/@-C~Ze!M잣׏26RBnNi-FIAi=A+_NyCrJn KjdVs']Brޫteѯ5"s"64.6=y6oYZ֏,kVe.#:F'6)Q)Ը_;bK(YP4??[U2WOٍ]#ٟ ?'4X+ 33Qgvp}f|kK6VȨRL!H̝^vToYY0H)Nw2z2Lz 8h ǧ W)€*{,H ɯ 8؈a%ѷvnw>pH ߁GR7o6 R~X/ s)e*.ΠeK \]ݲ(qܙx9] La:bؕhiWh(aM\ 녚uL.Rxۜ÷[|cLye2@ӷF0Tt*kF nT_iTbB0?ĝ`k``<,\6/7]B+ e w^- Z/,-!Sy2`:(- ( *={|%~j_2'@ 굽el͌KmxN/()DL_CcV⡫M٣kVeSf޹?D7pg09u9[~^t-?Z&o+\ow5NꛛE9)Z8W*@z >P[|w6 ^xRptg[?MCىYSH*Ggɨ h`8g *q|87hݮ&}>ż jϕoOQdz8@.wEm\6Db#]eXǬvqo:d'm°V;cM-AL"iz l;0!*ϝE`LKMrSd^ŃA|{)-Z&Vd;}/B:ap7k2bY>:7'ϧn 4WVNDZ 2șȠm0ѫ|@rb<u@5nn)F>!&OaocZB8H6ytIhQD\vMkҕĸ_6$eB?gؠ@LIF`B'E=jrr>b&ో?vڷ챃#cGDm}8˚Zs=W\pbM&wpH u7Rc'@DbZ8@V*2(;ʈU(ΦaxLGqȁIr<2 &%ޙ2?[2rWWhXEٍTR5=7,*Sr<QNO[/ vxoxqd]ʿ`8W(i@Rbum\i?BaT42NM;c+dek#쨚1-0칺ܲ(dwN=G RRj pK}M$ƺDJSMVT2Ȏ2CN]ˆZ&rx%ARlو/J:]3d;I +-KE/sQ3U8S~1<Y> HŅFWr#7%7n G(_&,`FN|YN'zWƌ5ʮQϽh"556(@&lNť ζB#o=.IHQ)5e ej%E4B.ipmksGWHO6, J|3Ld|PKo5ҙ>Ny,+(\f(U5 њ{gnM9NQ4ޙm`q6ՙL Bv p&D9:+8PqEQ/@-Ng,i]}F8 o|)q&ZƳ鞢 olRW]AN`VF\W+񩩿E^E!Qօ@7f[[<+pCoR ,kd@awX/yl-9S"[ŭC-sR|Q\  (Q!_oS. TJq)%hhJ!(eC BFX XFA/[H6r(kxwHZh]Ʊӡ1S^^9:0Qp,3Ný%6jo60NO}W/f{%<Ɉo1}GGy=(3k_]e@Xw Lr %C}EZewb;տ#xLGV!["v;%u9o8|W\pm)zq>}Sik"( {ϕh׵Ta*l3d>5-@&`Y#OR{O(f-vx[2Z.|vgF7@°Z6F9ݳ4؟]RTJBDM(@ښ6CE쀘zI1? E+\ХJq~C#Ō` 2| Ivi~ŭˤ-e `ʔo` ye'T, A0V 8LmlUiʢ8-rr;<2 Ba.K 6ܑUb* <s5Q,ٜ{SPG{]#)yVD\T}|T3V]d1`2P^ŠHB@\f [Hق2vtw T;U~^\ ya,~@&C= e|#0_HDxȍvӛET/ͽ0OE5OG W) 0Kaf v?a#tB4ITmD]eZ|1IN_sr>h>OjokWm_t"ߚITV?T8N=԰U*>M.cKI SLfyn5UD:ѲktX2v#oRBYSt}֩Z+' , 7@Ta1I $Ϙgͦ`&7Ab N,J%dO*yTp(χ7  ޟ׮llHVZF #[ɬtºЌ{'@'Ij DmoڵJ;$<08ˏν(#?w[4u5EؼhέKj+cgi4P8GJmvܦ%̕p"`|%Wa,/ WN uF59% T_/0@KyLܯljxȢUSm,gx7CztM qtBڐjHrt3(k4O }L5ۣTD Mhq:𠙹ԳpXyXK;BGeCc_p~]qv,DFx܉|X+,OX^~Xa7Ҫ8xa4.P䰠k tO%n'$/}Y[%tqd/R`6Q/g|7D0]c,4@<ߺDG(ۍN0Kp7ȇFN8e[.eZAfH@4of1M[Z2ZU}};͒[riM*>㶋k4`߱I3B9B8,P:>9(E HzaJJD9ą\. _Q=^I,g=%dh>DLdݒ7 \v6u˓hĔ\Z VFQ/!XX4[[l_2j\>Mg{G{"a9/_O$bj"ʳ(Öp ϔCq^a𸯫B=r咭|Ţ<3Em 4e)_YgQI f^h6D5{b̃ȁ*|Y늲w&js R/7{ * 7F2}!`)5H-VuԷ ͥ?vP@=yrլȮhN-`:4x~wվa'gƢ2[wX?rl">6Ղ31v^}$Jo* Hb ԗLIuM[}_8˴7mO)=rN _6@0̛5@5,4ri=:`u[&!:f"R0OSt.uWDV`s^2?ӝlX]8q~i/ڢ).*Av|:fm 9,z8!\ f/Z( N> .⧌2uN w[0)_OLxNzQ~6h,f_gsx0/ ~ɤ80U{ @*9EGB֨{!(Qb6ݑڮM)52EҵpStXԅ"?I'Z+ʁGN3"ϴ3u5ks SUw#{d|xX~ c;Xp{7;ƜYpͫ=?`Nb\$q{p{z> * :vƆQ^kyvDdLEg@Vjα[6Ex),GVb1^O_kU~26jۯoۋN{nnV} );2!~lYրOT*g3m^_+(h `&L0+{^C-10g7_wL̈<pZ*?WIޯo_s1f3MJvhD!H&E=?dc%ӂ?d >9 V~;Ɍ')Ľe0 mzNO| /"W PsjYHY\U@FX.5 W}xPmzvlې0&CB(Kn'Vm;}T ʱ/}~?бb/V5CVܘ7MBp}1D0EmQB6ì9rQVytMTď-l:pq bo[{5z߶śb֬RRމ(*zffEm9V_c gR>M9H S?>>֑X9&i_jlj10mVzTw Ъ&j6(ш22ߨ|ŁrlV‚l3Fa W|rܓeSxfڬs>"sLKꯘOYuH^$糅'3Uss%ƀyCFʌ9(K)Mj؂-A??G?W[IEIUGXfseP\Zu*VAa^'Vճ:x2|il 7ʑ>yGng{׸̓q|Ai;Dt}鏅-gJkbϳj?K`[h_<i9 #Kя~L9YZ? zd8FA]xm%kZVϏ!GĒ bkLo-+uNʽß^iN#A:v7%v1 L MliSGw'uMwxh/yQpuQ: WFcёlx7 A&;P=ßGNx"ԍkW4$Ll]8hgm7 8~n0l!b}׫+K!o  R\dt㡋whdLY[[|SןE =NO]ty",HT\"ZxPv+Hgp'VFзN( KZ٢ W2VUMê11`_gmR`T95AgD,,2j&[2JF3S!-a8_R6h&ߢy&ʨ?&34MF𨷸\$괪JN3k22Bl&n:>y409ޥUBQtgl:rc~`^ j"HẃN3!T[塢u6x0GѯuV8D /b@Tӟ5EJpI >tIE%mRX6K~.)C"#;/p+|iI ut/gw=?K wkz/lu>\vaw~>)!_6Bw9Hwd}19/oǝJvfu9[w70SJD3]WNQ ]); ]y2M,'ACV"%jxĩK?|-a f|հBywl-2 YaRsٚ]!ÝL)Vl1rY*lRM=fsC`jր."ҽLTe.N ~M,[^tġW2g'pWIrRՑ} )ETf37),$ ?#zU9ZztbUvOQN,)|J&*[ Jv6ёYb JXQȵx4Q/|OHg=@qFFV M~Ǡt{A6:gh}C}@#ɄK[Ē<%^Gi,[ˮJK4r_޻bLJo?[ R&raF,hkS`^a8bڎ)G^tb(Vz6,u+L 3bA-<`Z快kG}P_U"g|cw!8x[xcm/>Aբ h=ݿ`r&gQC/Kr<iLfG\R4V[1k5skhLxpd;e/@Ő Al鸬Ci1bQ L9?+g.ZɐəQk*Æsgᬆr(?SNeJE<ߒwxV0Gk;_dɳQR]ޠf>VhI8 s3賋M$:mo#=>crX嶰+"|^ Cjvxϗf#s,:}򢖰G#OS+n.4^=<5Tc_l9jpC m׎/*+ osŋ}"r':׈d.!(w"XXf{DZ5zzhy)SChndyINϟx|?O@27߷vJ1ms% !, <LU4ԍIRS{t%-k'4 U%rA^UahCb@XGHHaf$)$S[ЬlGI[14̾|@UO$"RBINUҮ 20ˋ>/oH ۅ3?!+x7]Q-Vv &; Ldvܹ c ~k%;PaڼzbcSrkLɄb+0%D)nD8/ $i<Җx6h'pΐL`  .Ϸ:kRE׊|ߩǠD~E|CaZ9 g҄& *u2Cwn!B?v+vp~ioF3O.<|X6 ًf&tS(RāW*]ld\KN9I.Q^v=0MJ^h$ǒ);1D wiݏ6UΘUc_k|/K%ˠ^Z8\ PPw*~Z'EǝhWni}?#ZRHb K,CX/;̀'a,vރF11%%oE"筊Ԏ2xoZ >.e&KU|@֙%X=ꡇ+NY hBzR[1?Vg X2=`s=M$o{wvz8A<|b ImA/VֺoYIMe7<.Js 5Y3!lWdP·cT%rmD 5MN`q;S蟾 ]2OóѴG P}.!GU7p؛? C%۞: `/fdϿ'݊#;TDޮ[  Zp)ܹ9Jx۱-OKb*00fhlH4@"*0h,=>=j0yQ׊<ܶ1o6fwuʯ|NѰNLDI &f*<+#(D[*s a㼨r *M$5&71"{`|P/60uVndb_P1 `J1@94%Nf9:qba~emڏVdʞZKI1LyG/_`ЃW5eC3ּfL-X3mj5b鷣 iSCLN.wIįt ѣ-8BуF7/?`6?ck@{BA+r:Ķڔn}g#BK7,H5Iм2ͷ\λ=?""q~P1q1\5TI|k6zEzGyȕ;Ө9 yT}'y #.{|ef+IO|V'xRk7fm-s,!NI+QP X:XG?6𶡝WvI gcF[jHn'͎]o&QGI pw(Dp݇dVR +"b>-c(8co<ǰPs[IV1bjrI*9 @>3q)hv[l5 ,,(rK[rХv̢ArB'O_ F%N9fbu}.Ax'v:+fWEJ<xȼ+3]^fO=u^@bl\!j ! D%ŀ1cb5 O50s.p- AngL40Ў`-7)"s-!ObQt2lO=I "ۖ_o"@ q% UW;ŲT0ӒWm^XoKlx4PӄZ8^ G0l" 3>Wc&hAvv:, g2!! o W=?&%VדtF^:rй?hzQly|C/eG`< 4>ypu=:]`5 8hzBoG 2lR|7Sn 4{A׼ l*,-9+pq)b^.!=Sz|Han$s(lD'dT_54Rhw!(C K]* 3R(5•   G΀+ȶX$=g\/9 āf2tCxl aH0.Z@x5ݾru跟GE(WTdZif)!27[*0GΣD9W8 TiV/UQ8g-Z<pbP0T6\ꄶLDN!:*;Z~uJ[qJ׽c_>[Ftp&H*(w8瀷m?N3"AB\Yw׮Tz ?o\H`c|g$T`EG=nKpZfd;5Mq} dU8'=wM > O[Ã8A8 75?˘Bǻs/#tp0##2Uf͒nYN'Ty1ÊKꀪ{#jeLK4"PsP:Kj2qc/W핶1jk] RJXgjj2R2i{_U\NBH8^'Ց@of]}"[@zm%0zsg &RL\IsEYnˁԲ8I;c=Խ/RXQklv%l nu?hDДiZHW߼;5_hŐ1r*8m 4-Ii*C*/uk=7OVw`"2KGrSa\ah:ul /ܲ$T۟} CńW j\Vrtmv'mq|y m `]v^Il>A1t;#5 h:v(WGܝT(c}3m)?5%\a7]$ݗ[VѺ[`"H:l&Il,fvaIyb>CG7[]tfd"q?YtvI R1atW#\ސQ!: &OxO3Qݹ G|XƳb$jUz SK9uЊf4v[@cII- o^ bҺu!Ё!-:[N˱Wcڙ{/YSǂoݙ(ӧ7݂!։Z0*SaeѬIΒM\W~ALƠ$o%B{G3ԘW?j6 "D_- ]˗WvD"6η]Ճ{zT9M=s;z6EcJߊ/&-+]#'t N)cQ/3-M|9~#Ta]{M`^Our#rN[yML- .2_?mOœ޸ aeg,LQLۥK|0z,#a;{6bΥUN&D5 1*0B@D ~m沮O$aZ/pyU57|DRшjO"dhN{OS)hz C$ݘĨnCS!F (Sɹ`a6C($wi{ uei:rqa+`c \PY2o" lc'}RTW'arooH9E!®l\5܂; 6,6эAOS{Y?8NE+TC )2\*jXa zNnS6[Ml'#;aآC5;aU#g^BDė0=E:8"EQcC"3{wʋgC8&㇨'#03X?jm>~ԝ^pь8^2XqEo>+e)׻]ﺆx2 L bmB/FvK36Tx"ߢm2=$m܊-*q#z V+A NΫQM` XpXl4H=ǂژKyT!*5&|٨?|~\\|>3cɄ9BÍs _ZӔDHnũv9ZNEW?>DTa/O}j6xF%{ctp -&<'o#*~?Z߲m-r <^(ԀϢܤHXR (PҶN)y.%hD\;ejNx6l%);žd05_0cr&)ѕxC!0Ь93d]b ѹW$!SNhHT34V$sЂfd%PTW+j<ĢOޫbilxޙXΆ]=O+tHtIV4vEEIt7 -U- )bÁl n \$?J>TפL 9.f-KT((N".QA)j8[f!/MsvYVΥ$_ӱl6}jnY( /q ֐t//^%pYJP0 Jo03i<ЖXUU0Sj)(}*F&ps;փfwif䝤2$ {/]~>[n}^ju4I^gI`^9VdԟKnqDbύ5:L2lmYW(rhrX~b0TưV.>](W0LԼ DDr!@)ecǼ[Th'~ڜ{f$w$p` %uDwqvkڝ"\ #_' s- !! uaE*֫F'ϣ:'ָ"x$̃0l; v/ 1& [GV֖r:^0 0NB'ʬ6iNtyǪbo0f=!AlP P;u9$Y"5tgJe@`d^9+p4YDj5K^9`? 7F<8YTC)L^h!ܵgo5ݢ9MEKWZv{c?O~}_{Ot' 6KIWۼL݋k,zZA@ޗEx.6V !̷=zmo8*(@ɿ`.Ã8 !+2'i*GӍ?5+:l oۆ [J5pK\8ago k(7)|P^Zg"lKn]NlR䧂hbMHn`^)łlPOSXyi*Wb'ڴ:kMLj \A{p.R94b-* TS^@N|zHbCp\d[:,Dwj Nm6r3tz[|.z)srߧ C%(*ݴ\i!fC+뛐B)b-,ȋu()廅H8qb 9+9gK?{(^5jꛣIezr!JbOXB~DE0LoK=Mf:mZ6tt f~4̥!V_M~VpZF 7.{$Qġo:b}K5|=I nP |$<ȡ6 G%ʧ`Dޱe߳BHx&?+l̄uUU'r1%8`;fHϰN0G_KJq0ȗz2/Rt!%~7.DA>)KU}SZv_  R/za4 9]uҡ>y1ٱQZ]:T0/}7r A* CD"ݟ'B?B總ؠ؇"=zqլG7K;ǠmSՍR r7tKKpGCg+!ʊ['d@ULД=Qz 3LxX415 qs؍kHˆ۸ I&s#. PŒHPl"Igk:4V Άx-JVX'u/bO!'^3PKC zˈI_hN| :`ͥA/eAB98ȓ\#r\UGX>Sz*[Ʃ=DoVs R-] g<Ш&-1曞ZG{NM!(~a# 5૒^:pʁɃ3Bٲ[b}ADͅQT&o;ض|N\\1,0L($OњIgC fڤI7|tVHOzUTF"Цe͊ ebEI)Z4S;g'@2S!W]Gy Qf}n8pfEȶ\jҦ҆k,  U+i W)+pf0-x{yY ?4^kUOT aw)E cz455%cn=iPZr|#7UNk-Dգb! છ҄Ѷ+6O>a0S$9+3 NPѓWGsE8׋,. -T[]+B@ɞ fuGD?s$Ru򓕑ćtլHpwlȚ{u': 3ӫu{ r.%A`bDXry `B.C/Fb,s8gצ"[u 4TejY9%rL^87@ډ_DTP|? ު1RtG_HђH$EWYNThsLP (X-cF|ޭW?DuN|Լ.cT,_GQS3czbLjMWcγ y g&i+&%oB˹YUKxL#uFZ]Znqj[ _ޓ_q#nN:]á}R{EB"HF/In}UyV%|!+#HoYdf{[FdԂZ)ǀ.`_z+߀LUWr -K`#z/9ň^idDMww-P#?WZ(+~Epm-mܺjr]V1u .Բʿ -0q~fMvlp$tpgẀ*QϖpVZ F{ ەpA@%[%$_HUBfǘ@}NC b_Eoܚ*#[qCM&X˪mMz*ސIFVVeԝI&smzqX,&pkL*w!9jxi2`nGtj´BrTB]Y6ïZBrnlk3"f,Vױ2#!<{teS1?,/0}jh>n)6o@-ƍeY۫4اd4xrm :H 0;fy:L7sF'Yvһ$XA݉HjYlwiޓ_/o/'Ƣk?9%[狿+4(81+kefaJX}DrHtȈyr a[KueaFPuɖi}d(E%Y_k[IL֋]B֎<>{0:s>Ymw v@…`gRfJ\iVocWX,ZEDWῐa,gxs6, M_0JhN eMxf(A$(ȱbwT[m})bI |)aveB^lҎ5ѯoX ֺtjlWqLMuGlX\eKG]..pױ4 ~|MNKPPY]6KEC?"KsC^ ) \uG!$zd|Zh3',Z}ooon*̕A/PdouTNJm9̚Kw S1FuLqؿ3q=. }\b;fi;1H v˔gGʹJ~oL#S4wxÉ;2H PUë!1F4_!-auk 8L- t+ etT1e O4kop' >*]5:- Y3l HaN۱5f*VwRz8Ayd|'|ke $)JCŸӫCLM { 8qw,&!*{Acߝv+8ľ%mAB(^K-蒘$zaiO#*SMIcO= f~*tiryz} !0SuTFTCe$͢c05)ſ \#-fMAPߝ!ECtT0hI1QW ۅ̈ h t΁\Tu16nfYTP"V9&,h4=8_W9:NWSL% Fnnzv< 8{ϼS<֧A.;2]if_gѲ`?KH}yAڛYs 9MP-¾i$'Uq薤zXm8g#Rw*>C@ʇ׿^ Xx|q@-k7m6e]^ 8"zc3F0YXh3 Gms_Ȏ  l 78G~.S؁ՑjbYd" ekzg}y'& I$qM>]IQ9W{ N'F&9II^TsJsc~2IP/y@U  (e10PIY@d6n0UnRPG` dn;<Ņ̀c! c 2zN)#ZjOB?o'Z:#.&ȶD8T`*QV0VV7p|%2m9W/(1xm* vR 7NAvSQpve=k:(Wuh9|qFwRހ*av>ל? 8o\ *<W(nS(kv\j(t i&GWժp#HL⸩HYq1\蠜v xf̖Ó+Wc}3>2&8=vY YUT#dZ#q6;PJb8v^D. 3o9xnz,<`hi&|N;5$?=ZCeѳRCqr(EH~ixtӏnƊA#_'P([&,Pdzz'!3䓁iy1Jlj߉&6r3\^a<,}iVYh95i8R_Ⱥ9!-n)61F7 ǙI56+}r VMRN׷؃E1C 9e;:x"e Ũyu5DQe*6T{*$9zu* Gc("g3ښ-'!'1XɥV_!G/k~W#oB+1[| YؐBmz;\`[7ZJ8,pGQg^eiX3S]bgI!4Յ8AXtVa@>V뉐ȃ"']Zӣ@ n>N+@s#bm\_\V0p'wm=iE"xk%z[J+s xmk-S_2kF6$xd5sH[>i(0 ?6+\pL͆lD9ry2<`]ϊ $3F.OUT`X`HY ͂d؝7]4iQOߐn G4RMZ)Si-n"Q %qIpx~^xvH~l`Wi?$+, ? ϬI];.ly;V1mT5.ȿdcYYb}GlFuV#M$k߃t|rcTaWu9J1ڎ< _Qf(Ȇ*;LsM=ថ]-~P|lޙbRc1tGgFdpElR=t"|oX\JW~a\.Mx{UIlL]Mx޷dZ@wʎ2&l)T6 L+KĒ)'VոlDȑ=" Ξ;I"L$2CZ>{p0)N fhHh嘷->jF' rͭ^#فž fFpOH *=.[gN"ͯno4t:"=ێ)w˭fl/o!LGv2BRg s.խ>(9,,x&#MdwleUۨV'B˽^0gk%b*筷o|Ҝ_7[VL:G*VET]&L(yqro꺿lkw;qx|!Oݻ;qG-1(JRǕ%>rjhtQr3!*fZެ }D PFLs:w%=&6Cl9%74X(R@,CK@/z"O<5p>=?N{ʂ]5rSF"@?YTnb?OV]@#)a)$G efDj2^s aZ+ˎ/c+UbZ !,HnɲpkK6IO𔦄`aA\ ^4S2 o;KP>9ݲ0xht[`If3(ӧZʯ9raB|{cQH# 191#UG?Ṙ$Ex}<Hѝv_H*MLTW$2͹֘/Wl/nbp*ӌ48Jii`&7NF4CWEidZ~@Q̔qaR(dB~8S)@fD- W:7MҺKk$ܛRkgt;ZgcW^YJg"vV{$jʅF/ȹ%C{)ͿCi@P:5pPI75k>*m qZMFS *%F&ms맸/(A)?rJ%\CS 0}{iye N{V|dZ{ċEǠ5cmQ"pztdLj1Xoe/-߼Ѝ0&r] :%:pdde8b/\;_CucGPPRDAyo|q-O3^BVgsT+0v4\XT  ۷ǫNd=~înN;[־GkrUSm{\ªgcW8N&oA`+a'z Xx34ψm̀f*^Z^b1H*zּi]\P\DXã_! ǝ-,"itI^KX7# U粆9q3ǻZ_ʡAђw"k{>| w>Sa"7Zi<p>)p-јJ)J"xډ ;PD&'_43YƼ3܁G-5OG]ze,)yBHى"Ur#?[`oDz%ytּ1c1bN"d++BGRHKx±֐~V@m 釉5O+U gH@a^Kt N \ORo;\%0LƔJvw-2%b:s츜Ӟ$.86AQx(A <i *h8ϔe Iz/& 6'f=<)EΊR`ozQ1.lu&Tf^)VI+?lD-Hw옅*ZfwQD\6RJ?*SlmhHHvh^R~Gx4 yO Ue== //K ɩTJAmuDNTߝCC'w`dˑ<ы/wyΕV9p|#6fjֳHP!w@ڎͻ 18#쒜L\X 2YA-Z6ֵxV)¢e A+p/%-6v oVl3-i9zFBrBNŏ +~^u.Q:ZMqܾoϨZw%S p2H;B,D,V&7|PG%blYp;1%Yb8&cby$!Duf,e"TmL;﷍:cEc_7! Waֽdk Ҹ $R GRE,1*=#S[~d@ߤEIp˖R"`KBV"ɞ2V2ы.CZ ;N{IBWr8:-V3# * W?譤cVp^E[\$1+1ySgK2P$q ߱Ѳ+ubP{3(䨣eo7?P:=7=~6T RӄSAUB>kܩLRu=53"L8nҼ: -xY >U:{ )wK@#&5T;BYcǍ$0ޤ)0Ѧ?f_54ňms^xH7|&:tzŰ/D%#W Mw895J x8(=KO3,3)"QwE\l;TV#w.қ  @@sS8w.q[5qˈ?ds!of Yz1V&R0Dq57Rs^bϖ?f{Ƹ Ǎ/$(I-db)qVm;|"A4vG2_Tځ;P\]zZM,o1ȫ^W=5;Xߞ&F3+nWW*C*s#>`G7RF5 );@TɸzzV|*Vf {/ldiJΓLyh^HkQW lg΁laW3w ՛eɲoJO`1XdP}!.~sE E߄ 6=B;24*%j)*6)W,5I1AS-ঁ~V5|m4P*9XwzCB~i FvV,`|5ڜ䄿=qy%y<^KVbOCA'e &Gi0}JnPE& Z,YHz:(]e =L=}u6! 5jvrt":ДLYl>84Dc:Tpzy| 2ee$ 1ٹ@O&QT*'ƖCmD_ $rM"hh%h)u!l4̋hwb0EeoGHUw(;e*6c N88nUTtRd8ɽM:CStXd\Һǿݳ_(ogmfŝ{!T#p Хlb I5LX `{* !8JapΥkDB_4V}l8iT?QnդҾOmp z& G@fIM 奅"yVWDn@Tue_:Uœ DsrjE8laUE״m.oLtK !)y:< \LcKM3h`V~M6Qvۙ[{+*2]o'frϛV&~ !d1 X$[b6O0Fchܼ9/ LHBK=FA,u tf9`}`P>Zg/Uܖ+`KŌQXij W傋`ى@>di\*bq]Lwh|NXtaܙ[I1 ?A7TpVxWJ) rJw,UEMTD&!}l?_iζG:V n>H1RbT<:+C>B3FWuw]T 6zS؊ Jme@Mا0mXMDDU p]|/JEA$3J"A[!FJ%ltLR^jMd,~z뭭W0,WMBR92Bsoʰ.aU~IucbZ(Ka7&CTT Ȏv1͒ o>ItՅꃃT\-lL G$纅eh {ٜHʚ/}DI<%:y6$_c`k+Of>+Yl[% `lo<8_e'z`J,m+ť+8Tn}PgR`+%^t=F qk fRwfG+C$Zo΃eb=$"" #h@)tZ8zIU|/)r >ģJT+cY7ehȵ/}lr†%>F.vBjv[4GSay7n6doͿeL%gQ0y;s}3/IcO u>7j; "|a[rTlhE^7`'ONf/K~!wA*QLd4oby\x_:%WEWk{-h|@zQt޶-wx]@o C6EJim@Y44` 1 5No"M7U)Z>J"!/yᛀu̾~NUy+=+)( * ӳB )YK0B*wF(_=MWssԑ$W&fQmlRcV>_?s;ۡZ}0'R 9ͶgwgX~0t͙` (Z/ys,Z^?s+f`f jВ]aW B1í6F +Zvx.pȺ&SpFQ_0IIF,:\S_jKY+p.eY"`zny z亯Ͱ5ܓM`Nd7**. 3hՋÂK L>]>E a2PϘ6 Qxp*4% %#1gHnJ}E.?n\ǜJ`aGGE57)t4[A͢~%Y 0n5iSKP#ótJC QX/daH )H"Z $V"]^yeΜ&ϹlQAob0Oa-Cor"5 ńǹa! Qn- BIdҳQjA L@Qlj[QKDRjHy!!̸S}P#RS2^OLQ5zI^dlJ02\0ӒÖS 漷mOuA;<\7:R[+-Յnt5Y70sQ6.M^7" G3`z=?g~\oNMf/V7? f)tvh]^w+ bƄVOHL9^>dȿO&/\P" '5ZMbA6:/?xև) YdJ؈Kf)~.%}74wW/5`C{3|;jB 4eדg =GQx|vM~lmW\ެ1!Vd:4r7__@˴:.U`ä3CXeGI` ƥ̥Q  1' ^L*v/ 6>+b!TuŚ_vњ +/4PlGD WT@H%$'LpL*ʸ@3K}<]֚QhTPVPϦ4 6`ջdKV`,׻Vچ,ab Ql.n[AtŊo(<ȒSrqС$\8T2%(t^ =9.l'_z^]bpEǣA"wwn7JvH96 u^N!ŵBKT;s4AkF3JOVB݋ \OTT'w%¢˞$.xTp09w5↑B1;} *.fyOsۼ921nQ]QU8$g,#ktH] 41W#{pjոfs]<f1mhp5=({ꖐV B  :uܕ>$V)<ߔBL ]py-ߣmQ+-al/~)i5o[J?>"'ĐUl {h[?ٯ<]y+^1nBH[Cy֧z#ASu9I |pF5V:y\,ЂcS2RڽЃI(_vSphj܅-;>Ұd6Z__sC=Y]9xl2"4{O"/0qq4=HrjJD?+G"4/ *Vu­]c~I|u B̡$݀1En1P;r6rAXQS{-:5 VPDxX˩aJom u>\j4 w㻒N *U! |D&l I˱PtIi9#JUY,p.uX W=x2GsBN'lR4)k!#S&Q TT7E( y~7}P[{z5"G YSd+sjʁj=+Աt_Z|@F5$`KO7E+|LX`t+2ۺ:}.nBugJL!ADeE%CvIy}#kaaĩBW62NJ[- #Fx51shH1ƒP+n@#B6Lz-ř{^_9 RqOډ$;hǬ2;(qvtؤ $ /_4(\ū\X!7}KJ&s &T|=oM-3 BTItG ҝkݝ:>dC vN2ITRN7jA]v[ܫC -c J Uc4TlUdٛ2eZreUOO1ƛ K,i{7qINn'?Hj&{\2MTT켛K>]>,HlᑛBDx5}35Y!Dv9qO(+۞J;Hכ8O*3$#np@qo ;-Ƌ j9 Q|U :Da\]!,eX|˚Tڼߝ/> 0Rг80+[,]aR=Z}dgDDe;>}߇DwX;X=Wn횗4?FyoXK w6?X'E;TXﶮϩ\XRG '+t.j*J(XgS#6{d}(0NV톩TIj،9, 9WJx[~.) kOC%oE|BGiR*yɿɝe[so^v=GY8v%_70öNab{%nyJVH2˅>XXr,.~qGWX>dT!2xu5OX7pTЇD^cAɦ V.E zۙ\;*4b{ lW=:{ˎ_y:}"aWG_^9%s=spF2ܖ2.hD;5QT,KFS6ۂBC*;QDoNYz K?0[j!kl6 M%JVC'.]_"(a).h~ kHŒ-'c bF1I.=džvlLŒM&<ڦvC$aJlTx޸@ Hz/}eز\tGSꕖ^ W^6Vu4Л3`y}X9goO @\@)/l'HB Se3C#O }$ogqj*I*/3)YKBM2tN? +WEۼژ v2q뙋-?9յv1Oހ w-3ѲnPm#-CʯxuWAX9MF7PXOᴕ]'ٿLu:N ,*mo@Mv c,ʸuէ\ _j߷/hT682[ʈpJsAuJZ6!z"%.YsۃC hj+efhP#^~,`p *YB׈~񞼩㹲$2\xpW~u^u82f{K7fR?[Z_*c4g(6cy:DUݐ>XίP3 Su٠s[AGz5AnT$as{K2v*6/v:aу.KE=ڇb OYZ!X=l0GvL:[b1lh;?6GHZWnD2b*\VxNU#*?. +< kcT&I䣙 nQ[bLw`. T:ӈaF0@:VE9?8"U?ύOh3dp7kKYRLßCbKSkWۑ*)(Sd.C0Oe|&X.)R ]τqZW,Fv{~=lI寽:G*raΦď<$92v;eᘈe{2O;2^xy ޷5JEI\:5>'R򚘟3rI{RV*5D&h] bt&QݱLmO=݄BQV|;aOcCwVz"- _tatQ30d?(A C59C9Eщ} hp?`5 B|a0,R`~`z RS>8v?sGHwLZ(A2:UH+7|]WdIl 7hV#P뀝3h-2"w7,5Kiru]ض+x,B9!e55Hz0> +s:K{S h,%dQp[XUZ3zd!'˛iE]4\ 9F$&.Ī[ dmK4DcX.^픲ׂyښO&EL .AWT*dGS\ii,^-OmپRVGLdbZ ŮC0(ɣ]b-Eop+nF z.ƒJ7knK!c;` ]m <.;?4MSΟO;ȹN_ύ2+-mՂڿ2|:`Folc ORәLݨK/uQ³q \،U"W3W.'TWnأ5;YGkN/ۀYH@YfqBj\h1hwGU\+ۑJ1a׫Itp:g'%({ֽO2ڰN>}i4$)vc -|83OaYoJ}|&EM4jf m@fCe9UT#@^vű9hBijM(ThvB13gi)@JAM+>\)0oVo4b80N!w4*]տz^TL1d6E)%adg3$i!MV·`wXd@g. )m>4~Pl#.CEr8CR2${ C90 7WQ-=l <@uf>cO\^&8-D9G^uN#q(ϯ`Yx .LOq; yM}[IPGiL!O8VfM6}Ⱦ^i]@|h5EuAY+qk`ijq3}UFYM1aoMYB:NWEBg@(I5psLˬ0(WS44ݬUPnݴb͉V 6ddk^XDT T !.)k3ehQUC3]?-uQ𦈀4ĘǢlq%yЇfS*~A $o6]?aN9O2`'pĤD3Ƶu` P[6"ngء;5N>^pzgoe1 ra?ml`Mi4ט[t6"x>{)`eT|ofwyW_LD#/uOhw̖F;Җw;.|k~@Kc7\mg(M>D6H(U Qӿ{3>Btׯ_˄CNexڮJJ %͊>Uu Q5tSd$1ɗ&YPv5n%J3nu|~8f]Rt_†-^FS^|c-\Q1kzW: :+ j܁݊-[6:t'J@h,wҾ_R͔ 7)7A-DeHRvX- hYD<\F~2?>"rbÐ}ۅNScQn|@^΄v"E+Kb0R%M2*i[IPHBrIqs`a35wXpk%*엠kciZA _ uTb'cy1a7Ko%)3⦍yQ{KZYc ^ԍ'&|CfI^RjFigÕh)8R.- w Xc|7ŭVn`bӂ͚$ 7ZC=&74/Or0r gPvqI"G(Gא;Z%xZUMn,3 q/s?uF[w@BL 3KEoP4M7  : iKK L%N<*xd= [a+y3/Jx]ψϳ2b^ DR /|/&wTrJMϸOWA"9/2ǏXJEh:Õc\9 <0&VPh8sMJP-ʹMc-_',%Y69صUHytA |7Fr t2WZٱsA9E ,\ +嚤C`WǷY]-̷Z 7㚨2%зGbRpCʲ 2&ܲw-4X{ -v&a^TqT:VVڐ%#GFB}  ^fZe@PҴdD, !77CjVK"/;ڊ2D'I{r-z3Х KgpXy˴%ᮾ 6RُTEa )cxU03pdZr#K/ (^hXȿE8qaeV0)`M[W9`vknEz;*ԳCPZoį"r9we ;aWhW,b.e )lT ݪ;Rh|@D:G4-{Ai#5,FH>aPN8-Dyg:HaD~͏4a h@8?Wy ӫɌC[quB2!aJJ Y{(v3'Oe,k| 45hHhFA;f`;~#ׯgD5 (]xaW׫=/@HAj<*LӑʹK#-r|"D̗:E Wݷ ͗vi`v5j` fU Dvb Ґx&+ɲkx 1le k=icgJ!C| w>q_6YOB#o'J6&[4t&#M=4 %-f*cr¢@qjaC^R-Isa'1>kB7ɋ'Pƶ0o!J }sz'; $奮wd휐5l1)`^䪵 0v3J|-O ;,/ǭS0Iχdx.BÿJ͸@ e`g1+t鬢3)%jTi/AnPOVk N_27 WY6V#Ex+gطϗok5{d-ZQ+Uf:ڞ#tu?,6X[fDvϺ7 4o}„E6+a>gFQl`Kٸa&'Z#$4[-6rC^v=f =e^ͱFVɢ$b-f Pl^?Ϳ@ l8AJ3(o'm+_br2K3I2=֡K}H iUHM6A Sp-K*#1_zZjG6=`ӧ~ȡZe5e4wC# |@ka̿v7n OlW;6wkN8AV"B )H#>?%ŀVFQǶ/L]|SݵͲ8? dZtϼ#nITZ!jL8ds7[Pk 9bqI Y۪PޑK #Kd?O{AÆY~ JQz &| V-m0)@d$S.O+Y|54ۖkK S *$N*b4?(zqP6{rO%3Q,Z*tyARyTT^?& Y GS;m'Ra4xN;= i6%=ߒ͗'|4-.#c$Y"&ͣj=Uq@v=݌!^s*+-tk71gZsh Po wIC|}Pe=D=ĸrrѨ7( Cg\gGKGDF(4 40؏=7oh/#AsLw$Xoڛ򀂐xӹ[/"۟Vkq0њej29p2:}?slKr0#+Ҹ%p݇X]NL@N)k\jp9PzRE BF>0*1~`!BfJ3gor ZW?ߝT1q:.T?&IOh Ur<]e< &;;wEz ʼn"$p1lStHO+t>65*5di틦 ԭ,4!cl"r$McA, Ux6/P8܆t@qH Ф07A~Hkj(=EptsF&qI1 e*#ǔo&;I kŷ^_9f騺0Y%пdX[ެ6Hb`n<m-!peIƴ.Zi"I} ]sP顚ֿFw]to O_MwbOwQs.5.nt3Rki'n Ly-r񧉢B}j;аumƈfLoMI,_(9?{ jd~w(Zm鼏cZN6$c\(d:-ۄ7I~xC{^AEj1˪<Ȫ >s1Qh4@ڕSڛ( O|N2op8εmM& FY)jH~e[ΫNu#/L]_>8%w.i*xY x\h 8]$B4r~ljyl݈>=î6I%2&~^foV3k_ov* Id d2 wɓRcO9m^2~QI. }C6A'@JG I۰E]0ioڲv䦿KöYn(E*:@BFoϧ܉HrXFc%]"44,_m#,/)qQ3Ka\99^7!UAW;+خ:3⛃^t'nJtNy=؝zq`&oYKlWfh-QOj" jIrCVMXś ǀqYɂ.y 'GfXǽ,-rcͯ:n 0G r [{P%l$v?11Ċo b{w[Y\87!^ d4eVC7,}^&Bia_ pgY8 P<4[{fU9@h]2e`B4哟*?(sק*Έ9C7k{3vW*3,Š/{we20Qk.8W-oD[ncA x%=J:wNBP^za6A"Q;#qss C,w53[S^OͭFe<𪪏?%jӶ*Dm6nf]nS95n8A{?=~5,f];!;`!1+*DqXaΐe8[y S2g rk@z&#샢j8 ޭOfu9j] xɠzon ~ ߯g>ݳ୤#Rg4~ :3|Bi+ݍ[BvSkV-,J @a8>(n+@=GߦMڕc_aG*H;%ߤs_\WکdgVv]ZA1aL[B W4G#>oz,Hc{fR *OPrw8'_Dgo="j}qE/gNj᥯+ EB,A™v^7|\f5)nt缲뼉v}8ezy,ֻo5kx׏SZ D}+;ֵBeq.9z/%|2.FU9q:mx9 ut΢2#N7 zߐ0:sk;6%d6f3LDꘫt4>S(/){5 Wlщ@j(ak`m-L@/Ш|.yꆭRPAwfsLSɭ$>`^]ST: i2u pSk.V0"]u ]%EChEy榓P>. I dԛ<:vs=QE#8%idL.uTݵ5uQS"me%cEW$_lVgufC]>1_jNч=(NW<3(ԓ(-ėQD[ m{VU)9@[qpTjX 7?WBղ"?ܔ˵p;NGi }V* 5FAev^ ![:56nȰ2Ǡ@M9T@WGа2L Ju55wuRtdd mPhY`#,TWenY{w }fP;SZuZQUuLRN )/T01rPx|&2<31OUbGIaHh9t5](}m )LRRE8/w`?G3sqHhgXGnNyк\c4ؼEt"\cU\3 8( #;vhb=p b=r6 o鑒I{9<=t %_3B!Z.P IxJ{$/rG5%(JC,~Ꞌ4g\ҽpj I 21I}T%s2:jeш7.yz \N~Ugv&=-56x=_ pzP0 >,WUP!~ѕ2DT6=y1QQgdv@ͭ_NE-)L^U+pW297ʙ!U#2XSCa\v@Y-_ݡڟ"Qle5Da#bmkqwQљME8e_yrJ%_b`6v*v6|Z}x(6+<;7!i:aAo*/,P'A_婖 \gϊhų;afvyd)Wfn p:*!hsh+,Nh$//f8d_daIWeZgѵIjxs;&ilx-t>(U Xm8/9ڼhՆ I( m%,0 OvWU{ў+$n`B73 MfW0"LeϞH31PER;rk1j(U/\վ%# lb?]8rނnXxKp7f ;-bWaWH0|)j8s\x)st5tW]Z+M%< }y*~rXB@ F w}ߐ\MAK.,޾@*n|)[_QE3>5. dΌ@xcq3bz(Yv=D{;qafzש9)ⵢ~u!Ld3%U%0I=Z1ՑC RhIG n$ԁER_0 ^%lPY6L o5M8,L'AEauO+F@VBrhyπ"@s cYMֹm[(x8eP_@$ldȪI]s)y#- I*%X~q5:o30ۓ'¹9Sb&w ]R@)ԉjS7z;6ugH͋D\sCnNT$U9ETi9ʑu#e2RψVQ=URH &I2 c0c8x^Z.I^}:^)DEw-w`fx) _ԍ[b74~_GtHQXIoڗNN0L3Hw0 >"ֻēK}< \f] 3o* A 'vrIZd @W5HI;g Q5C%/&lBZ ltLR , p޷+v\к3("?ItOE< 1kWVPLap 0GQF^#|ᠵ~lD/Xٱ ȨuջIL Y,nR𽕳Y=ꃈUpA0NʷnAۡi %KYoƝ2 t/jn]nN"gMI 걪TעΡM3hp|7{Ou=Ǥ}4ghM>]ĩ+Niv$x( ;!}n-7wd7eԗc]ıI0jN[߆aF㎧ѠQQB2 ]d|NH Ё wGޜ=' wkg۳Xv*bhFS/4T"MϔtHe窰4\kٔHp*Z| k@gU[1 -iɰ0/K7Ma~?ztWhJר><ήV]p"zCP[`L#]ؼ$C !iܫ`yA?\QElB 0bvD|> x ޅ$8c]  x끨Grg'I W-8G x$=wd#7!HNE&j ik`ǡ-ˈݩS^taTh]G0uaB ߅H^u8Jw4'1LTKŧxJE?͒GVKv@{Suyg4bmg~ x =ΩT^wlhcJZg1Z(.H7,42Ih^9"Ѭ?ࣅ ړM/TS*^k%I,ؽ,~EcgDm>0e~%fWaݰeX @>luɥOG /*՝2+,L5wf~~vQDc95]=$+!v27?)ylMI؃fsyKj ߬{qa,UԼYKtb5tM<ϻwy=5;:/@i9 )BNuWEޥWealcd5㜻]i]tv&P-H]u;["!:!`.]a6LpZs7C#c< zϹ(dT#:2pK'  hF_yE-*"e}هx ZSL˅!6+m) IĮ~wQei: z=rj>x::h;>pTx-4 ]~HbP'"6(uC5Ӌ`k=uyjgKB@;ʙtqXC#_KC5Ai8=եRhj G_v5S.DМ+V; Y+V@Bӻ#LJ[?qLꧭ"W?$?`cYgGS.Z&ӕ|SѾȰD RqH)z ]O"=,%G?j҃8C@!"[g=2p"AT@Kuի I4L %0YJ/ZYe)#}@ ݚD7Ջ}mG1iݵKZ-?S6޷B.WJ/%J-EzwBCǾ6ѣ5"9h YL\1Y%ֶ\jC!LDFkxh ?Ma6]`Uy1zS^ldU1|WvO=zhX-MCLM]}\35F-o,V8m; .P-"7j3_2ʸE oŹ5%$ Twq6fO?ٖY>&Bܤ0xvCɱApQ> G> r$hm]XS{d;D 66A41] Sgx,~HOQ9c]dZb#<"ˆxI|yĂ\ȍPo*bǚd*&p֮w@y'?a\ s.pW'ĩ!0հT"@>Rm8%Ml [E쳞]_}>%2k-(.M^k L4$q3ɏnVݓx|(el}渷A+W=YOk#`C\}xNng7\عt|2ӌBvkC-ڃ;&.vfaס\yTmtHc9dnKE mP}`M6`CE;G*h-jZG[օARO͉+mj֨c&"|4zǜOä'L|)-Ncɹ't-Ĩ:1l!cLGӨ=neǿ{~$r kr)PY/$"yO+ Md Upa@\[#߻C}qv=42T/,7&g:b!r`Lʖ!R5 R%%bsȁWWH"Q5(lea7yU%:KZxؽK݄U Nuo|x)?~ k!{T#qI4<`%0L%S jcJ~4&лzd/[u1DBvw# |T񼺊_ka3-l%l KJ9" hOo9"}\o+Ν UlqQeA'_PonІQޮ˞V[}3I~,k<B<ܱ ݙQ+"$#f8qS(_A!"Yu@4^>,s6LlZً@$Oj+y`K$`5`@5Je勦 \:Dqeư9 65 $7b⼈ȤPjRr3.RD3D* JHt+V D=[ݒ|C)yqD2ǃ&ʔ 9 PSqR/ki5w= Iy緝oo~uҿQ3;JnZ6΍\Qhx:ڛW`O%_TlB维^X]mza7$; 3!%5wqI!*+'$ꑯ/ʼgiC n&u8Fy󎗍OxvmUJ[mJIqZ^ xa1l4\T+?yj?踃hؕrzTToǨÁ`Nde\Kk"ftOF_܅4Le5mWWzdl|-ߥue: x; 1JD:zPagnTP8H2VptOx(Zl, t{`B#^y"8EU`T=7HM_p=&yOhȔp1L1yI j7lœq*ib@H,po&"GSrOSr_f=Z$ù#G\+glaGX(ņWK9ZE#0βȟ-\rLh^c6P ѡ񹯅'#GR`7ȕ箏pf羸ܟ:6CI6_:aqh F;}=n1&Qotbvihp$D&7f6,#Hy+=i+gfӬ 1k(JZdq[<N`s9 l{ EюV?YH&` yQsvim6\k&=\2>z\YI%/X tggz/p\nkvIX4hG3 @AclP֘m%P΁wgD x| K9Rkv0. .I%ׁ 菮x$HM s4x<0d[9s/ ٛ$!Z( ʍT-3~pyzrt́0TPFis[p|a*HhCpfZ*~z@Y)$_p_Ijo"\ k;dxn5RgʸC+s8j,i:Aٶ OwYV0TDXý AqU+|ndi|~ _Z;K_7wv;L.p` ,5cI28 <(KҀD刾j1LS丽mhzqP_([k4K#K}sD4Aˣ,b%] ќc^hic6I~+ r=e9LseƂ R>AڿO7*wP4} DvAm7!LY(A7.ghMU t*gǛCm`\*'wpA!5Ly]D?vT\w;kqga`3+O{?,ygB4gkȐFg!:@7@<fwהQD# yrG4F&q,C3 tڪ p'-"iPֺ406qP\{T A[b%5gtrޘg$.b2{^F?pX?DPe 煻9xݡ̟5-nꛞ%ѽ'^R0[5b>6SJT[Bc)шkG?ᝧr.#gE d]F]\qRW$xm*eͩDiuY]fIhu pXTd);CnJvEiLWNrA}s6mvY Ϧ-ݎǕe,jfGb(%n=a l)N\t۞ .[Ԭ5ͽ{GDY쥗VFTsA+s j[f%!Biy@ Ub:@Ib3jΕo݌?$o"qE5/ĸx 7}&>Yx GtM,NDgE3po@>"8$6 7N$K5cSn.{zt zls9d|]9!i(OG? *Y ;.% <ڕkwKtt1qxĚR=٣N7Duzj4f/CAG^Kau]q1$t|]WȄpp$4L08J=]w'l6ZKݠ5 ퟽&,5,zrU/rSԊF^b&28tP'7l]7oC@62n9O12A@Z٤`sEfU:&_x<8xlZ WRB&\n|I3.*Y$e{E՛۳oعĩܰ8g U 6zכV5aKש*cHV ۣbܜl*Gp~\Bcik,}.T? !γؚT*E"cJw7i2dda T32?Nyh2pP<@B$l;0xev/LybMߥWYV?Rj%F ]@:8ǮhA= w/|;. 뒵!He# *a>ޭmFQFp-eh #Ʈ8xh&/70B@a6eAT =[+1t?2ȵPlS9CAmY`̀Gk[QA# `FQ2@f~׆ ȡHf7JMp]u*Ŵ:%S맞vNXgpiνKg|1TlddT2ze%zrR72jet8`+\5!>܇#t_@XoU٘=c4C|dT9(<}дmS c lnWb+O.%V~~MvJ+\Z:}Bj^XtfYw RgR[(gDq>ǖHՃH:g/sNhԧ 2W#`O6 B|;# 3\-A눓:*a5TU8{WAeqz6_-& [_^aBVǷTݢUY}Jnj<9:6Po4wmk-lVjjT1*ߕFslGwsjɱdж)Y%b͸'? .z>|$^^Qڂi|F6 %jS'1cҒ^mBqǼC*R,\:Yjy"xVnni0q+Plןm Pr.^\^(mWęZK~ǏEsl-!YJC߰&y߫)MTqhu}Th%o/am.}.NTbCFֳ@FchFGR)gl5s"BSץ$4ڎlHY-=6G;^xZH3]81p\-mPCѨ 6dy@_8oQ]#yRkSҤjx ]46ƑJSFh@tT)C*.' $ =hm9pƛ+ϝ< =፿'ltJֳrUMss]$&|ӭHQTYL9GweokeiGIpocŠ>߱Nk9 t\Fb)\TQMZ/c1d݂pӋzkrOx bucd;4~.flZE#Y;8 Ȅr/6p~9A~'Zc~"ei^,:Ol!xt+~W)X}T*lJ^gWCm6Zn.>W~P ]}c~RV$g nIħJ-\O Wl ^ˬĐvvgt\KGn2;832Y#Ey^ :p~B }%(S_j<s#erqf|#^^貂ի@l{_kmrY DxLL%t5H=˛ӘBg2?\y /"ҹW4ݥDZw*(Vb?S,\cJ;I+oQmns@?>)E0WMUW 3ྍn0SL~)ؾ/lHHhni? B]^ޠt Q10F{jz$ǀ;\I"ƥC*!&$?a]Ty#T:==E)FǐcP-Y%:EPHZѲ{S@hbhFݯt-1/d}SZ*RO` k;Wh}Ó ٸT ?VC#MXop r!XctJcN  6:q ,Jҩp{jHxE3#@\01cqg|-ÂL!e4g0EsDYaˣXtHۓ"-y_1^a_.-sG @_ϡpr[{E(GDiLX;*`lP$)rUgt~.Ӹdg!;(ƞƋb*NsgJ퀀1 #I#:fO &t6M $gdG)'Zc.WL_ml07975Qsy pJ8o#;tyZ Vff얄Nq קG-zkW䀨-8I+؊:S$KA(q3`BxkG-" SA͈ &?6"{]\rÅM4oI|; MYn0*|Lo^==Y\b v&6wR~ǎ" ^ P]3z%DUw1+{,EL-SzevWodF]CW^*4LT!Tu8:a`ڨ2h`#A?_(.cYjҗ7Qv\|ܺ!9\=?O;Tsګ!((oDq3cM'YrրL7Qr2T~mسΝFWyYI\>ʔLQj/; c-oE"Î!tC3CƊ=Sn*TiDWQM[LeQl* fZ(;S%Y w?u7ׄ.uQIs7N}r F#+y1E:=h(gg޺'i|yr/0 [7h&0Mz#IKtb3uc)zL"_H8:9jҟehܿp>uiI*l;l6)WJ7 )nՕTo@KNC0 ^Hzj'Pb8;r%P=8`r3 ;!~;t{b$ sgtl#x L5fn=v^cQ0˕e:rϢј dڜcb5ym:¶ qaD| d83:ѻ025 ІyH`|7nmR݀K$ha~?zĒ>f!sv 1~v齷4߷dØgLb@.C!TƆ}B,wnK#p;E$b) @#SW><枅ؠ19ᣰ OYz0xۧm\$Y3;\1O"ssTir~AS`WwA=(i3Wނޓ/Jɏcpn!C[N:eoƋU `QUgU0)T1DlopޝPVu k&uDY_eO=!^3o2ZwWBӜߜeu/Yev&ć(U&)za* Q$H O> 4 ^ VMT ZC6Xn@O(5\)ZOV${##^vHh[Z=Jqu=[\}N*=X?;`=CPY1ho5bᝏ~1fuI qD lwC]*Ej^ݫ9_-ʤ\7n(?1` ߱E~]_Wy|W3*cQT1څsυXQؖ* иȥR,bK_]][#Ƭ1aB&3*/HkYT7hүV3[Q˂Dx84r_Ͻ=Zy \5~ĿO-#x|[U9u! ꡼qp‚8(bW,;cJ&aI"^zs₦AsX}9jU|L 58rO<5olEL+~*)/#Tg@p4]; 0spLYgGҮW/gA=}<)%J uVss7$HVޮ5ԯY`ݬjB<8U#>;3ΈWf\#{2/p:#4L6D#g&Dli\:Yf<6إ-L :n LjQ֍lB6r] ዆g0O(GٞE- lX~0H=eXrt&>]Id?RW3hPgUi s껻)Or ŬXB]dmۖ 7Aڸi#\8A%l0X](GUsRfܷ&*7;1S[81:J>ZbݥhiQG ,R21~}c#uȸ7p1N'Fݤ.> Ĉ=:0vT<)(fX wWP8mmG"dwMr+o["f|b4I_NT,}-dz`?Z1KK!^!A[ТCȝvj>b@; dLfI#TŸ8*&HyL $ Zg'+xu{(p5R$ ( Ҥ>UE Z4Ze~sFZk=3(P|PT1&laidWO\\M`qq .`& @)'B/ifn>W}7 &?ZZuNɔ%ؕW8 CdTR쌧EN5M+c٨因m]4Xξ `D=d08A|+8(g ey.^OpRww}+TL=yM#ΨhKhPvyhɔw D5++wgCE+< + gU[WܩDFfB뵌Zr\nFN.U<ז.@\ÓrÍ~KǑExZCə GrIG{aaF\[Dt5ˎp>ZWXnp;߉cH5H1Hv0;FI&ˮu-҉Ck>qYn.MJvQ"DQmCmDJ |Mt@"dTBtYqJx ‘L|EԦދ|' QUn¿j5w^Q#0=/g*g-˺ч{) 2xy6>oKħ|. 'lngҧ|l sefsK=V{J/sD,܁:X[ɿͳi0ND!:d =U'AQch F*t>O.i"AmhقMǔYm)8ayYpLCv )H́jg }Zyڒ  U-8n<-4F1 $5Dp1ˤ y^6f/V*iG dK}2+f&z钠,N.r¼AWգEx38pA!ϲ4\eҌfD0#s&?NVW7h~u%;Bokkh 2:w#(wrx[i km^MxfBeFpt t!j56]Ah@h-5a#w;9>=ddHnLKc9z5ޙ*"DS!(Q*Jީ(z 7ۻ8I]TK %#n£ wR0hg_vVa!C*5^qscgh6쟍Ì3qKtc,0en] 8x㋈/Dst7`o䕥gX4XiZFkPTcSYYwLz qץނŊ!䜃~ѭftv=kwbjEPQN Vqڌ?<3 "PT"}aԎw$"q)0Hdi{c^@+#z/Ct~Q:1@PΕà[.=:J4s} ANGba`FM/JUfTZiiWpMKTOZ 8MUWr8-|eƿõ&ksRz8IaF,#r9arbGfK(\%bDM.A s ]2g,9mS?>qRfm!}?|$xeag!04iQd>**^ɆܪoO$`Pdw\2fJ!yƦfܽ?ԐKn}0@ C55 U("RH1m{Rҋ+?f"ƞiߌDCK *gOgy;ͮ2aK}h3Wxǚ9u7LHzWw ij|g善GEg +y?PZɪd*Oxwhf2 61qxFKgs@<4 u2۞6N>vQ |*Yaz Z(;iB)m?q3Uy]!V@nn>ٓ8` Z`Kk lLNds2 7#uj&8y)~MMo:TbJ/rUܲ{"݊"!G"7lVenҸLM2rr4hCu^vrZ4 dCh:oun0 KX \ϒĊ"T~ =)?qfҮ05fyWK3Duƕ5wpP|QZl=CE/4!koO&B5g=FhֈpuCE(nu;k*G*V)RSȀ 57|)BB4% 2 LKBVQ 骝|?H)EjJ%Hvm79~WSބ&#ɬ# uA.޲HԵ#{შn砅 uSpvf~%4f\G|v(1m^nkO "~ɉSn}Ѳ=~?痶HO I+"7=AB5_> Ǜ&Itjrt9Ϭ D0@ NIR}GP@Iq'DZ)DKXZH VUqHz O=;:"tQ\աg(@Sma$_^/Cٸ_TaHӫx{X&k23@j4JSA0ubE,~U_ң-a̞x&3\[( m%}ư0匁9mïíת6'#|s\8/?Ǿ`JEƢO|۠Cϡ?ED~.fK&/q=m7ާ Q\"=rJJzjMLz -8'q'+RT&uOO "O)IoÌ5YyZ.ug'S)jFZ& rվB9?vְ‘w̉!qo,^6GF~RW]ĹW`[50V',% 'YAföMܨ ku]| +sy.`CWH:{.hW*`'"(`M +<O`uj{Ytf _xc A7d|!-&ٳvVds; U譏:y]Ъl<\+g}z^^JgcY^h\؝֘N o5'}k M(#2L 0?MF6 =^͘g2,A xQ,l  Fqrer=*:6I vwmu%Sl'ɽ 3igԗ^yMɋ$`4Қ Sϣ3Efn8P~N͵_8E^k #lAQ?›'n4ȑNoW48G9h/4c^.޳pQYuo g k+^eun-e{iz47I5%S׏}n1 R`{<59B,e[1%%>y) 171yXڎ2,8^Ơ*qz*ho(Ye0չe7Lus= M2;Z3s1Ȧ+6O܇4>м|@8\mԬ]DM~bP#[PjNCt>9^pi.Z*O$p)UD 6t9n~2abmcՒ&6}<5T^0NDHwE o.kPȚCwgPQJߜdRh:3nJ`R@xRIvZ8$7b%0bxRwxסm6k_N 8Zr`<|ᛄ%=AKZbqxE:-&貙+)PD lGUS X!} nTRa>o rgthűChHeaGx8U?xҴtǍ"M¨cGu*~.Kr3|9\!xDxc`6gg ׻0IuC`.F=<؏Vhx>Pf!X.jޑf`\V)Lχ@;V.;k&-sSƲeA͵dVS@*!/oASp۫F{m=`>{(W%q jGhjK僺ȗHʙ4jo`gW\m-K]?@sY"%W :a,KLo3[-Z@BK3Rñڕ#r/M#>{hEbnky!$q+i(/B h`d0B̲+_d ՇtuohaNX}෱b x;~lfcal(!,ű9ftgQF,74]_p7p/"zWnf?'KAbt[^䳄eh|<עqvvQs_8. PlQЕj'Y}::hVmQ^ EP>39/luKJع4^,lDAUBRk8Ĕ>8rI=7pNLV{xK*z 0ӗlic??EE nXɴeەg7GԪ?Qv8%٭lS;.x* "ж0%7DWw0Dؒ*:MӪ<5J]RY2P.t}=! 2DD>.0l</ zxp)B0sERwS\ATH;i/?οj}Fda͵Q0S6{dT(QpK@Pc k˱>鿲6Xb.PN=4:K/1DN'9|@gMSϗQzGzϠ_F^{ܓls})A>g}hH]wuJ3LoG:3vddOkFGp?Y,8mћ$&eX [k{i@n OQP|A EZrVF̂2Wq-Sl4+_^~J $G;-iBQLdq'G;o|g J(/1& bdjS̺0qo5f735wd,[8:U<o[0L[[9/V9Qdk4oE.]L_,xq/(#e%;!P]>:CjaC*!3`n =-S(a] CYjЊ!XH h 5z-ͫ-"^tV#/ 3.deLB߀TW]{׋i:MWs4Bb䤄cy[vl'~*w|WqlŠJsa7O-N8)wB#ĝ5WD;|YZ@$|ئE&;TVH[FLS&+& lyz7+п廠Z2>IojNo[ֶ,Ei}?6x6eqM;F6A .fb$if{"`<ƶu:k_=ohjmI?O=Fta㧧@;S{LL\\ @b̫!&+ٓml}fR_?84%yf<1}l'D^8ݒN>Kȸ.3-~S-oUB53ȣg:xD/x7 ^ܸBmUB? DZl ]y{I9# ɑVz2Λ+CRqѹz3]|u.v+GA+9Tt;CFeV *\tKd83d_AfKƥ25rwĽLM.rXz,u=3+v还3t#bw'VzQ%D@*TC(EzA#z3i`Ul;  | z_GozϲCq6ܙHi{aCS BSg9nqW|mP9sK]Ei- |=IeKAXAD:Ţ(ꀐn@GNJRK|}–*[to v@nQN l[752_Ib31#WzCPCLy%b*;%UCG{>+ҭeIhoXj@k|N}Os4!Xo}NOw#_7Eog=A_`>ߊ}YPhȜ0-%ۆ?$K_ZtJ G~n9ߍp<?>9 ߃fRD>瞵s53cz3㧜! ֧]>5SMΤt{ |9\A I⠞ FтBچ&Φt;ZdÉϋqX`(~Ri_:_rߞμUO+E\ 2܉H!܆=v>{ZmY͑{{Ǜ Nt H? M0,),⣷Al{5,@fvV( jbkt# 5DJM,*)j0RAeF ?W$'J hglE U/5'@[*p˒_S0 t^~%^[>mW Nf.ׇ{w@|ڞ`8,y x;Œ~ g2@Ud;轃y;[b9Pހ匶{(ȅD(J~A/0SFťL 1w?+/iKn#A}m13NŐ^\f kwR$ʄ@h\P:]Nu&p4\? -3j;.+% raz˩¶?.N=ĘO:] 4ysI3&2%C!q" ~iտ{͛z{.Ax^_)fpeo*:U$Aѧ !p8p|KVjV㓹l\cLh3(*3bmnkv_mz^ˊIzΙ'SGr\53 L qJ?™O}FmjS -!]UI@?ǿ ~DaZX,Llf2?UaGT$LpraBőYZN?qm,A@[2w  U$UcvNn)+0;Eo擮ђ %L]Ԉ#sʹZFd:% "Lfl%qoE̪ϱ]OQT40t{P- .%8ڀJH둝gI7BP #+D16g[줈6Q5!+ y ȵcz\\)pCn9R މY'_m*֫ 툭pNv;lE@'CCfuƛb+_iWpҸ}V%.{kywqW1@џYþ e|!ʭ73I#vm1%Đ!_ vRϖI/MCsx(X,uU7+v%=vSm/f_~%!iټH#( 4*g0ːjʑxkbd&PUUdNuIۃWPCh>hݞ )UMǠ(+PS[.y3cI˾Wn%#iFѵ}B70'4˓YXLpy^ JڇW\ҐP$z5R(L{_1 O(M\^1Pѣ?pg>C}:m<:d=XJfGŌnN+V}@O?Eqcc4E`o[QiZzQ]۔3OjkǼ+:wRrً)R e'pIr+p8^MVcpōY`}lK} oYHdr@W`>jfM疫b&"MQN_uUѲ#_Boaa{}nl@+6PRuA<_vQ{/_qv Kz=JM-ϾM;=IXÀQB]cSZ\O JPNX*^m\2T453(Z\Mw5c$fN&q5q&YMýGΨ11lyҥtlQ͓6t:}LKѾpib 28 ۔rƮiAHL AlV:"&6ʰql"_E!SE㖲Dw/k$av_My,dѼL9x*ZjؿF芴gVnA5S=}ܳJ< KߛJ! h6{l1`*ͣU ;6N`)$ӱbwKMPUo .Wt5<@Ƅlෳ_ΐW] QX}gXiBv:Kk!^&}[f"$&cd9}|(MV ߧ *M94 UꯢmU3E?3kkfhP&~[HZ5 VY$GBv A?+tj`i0A 9ĻY S/7Gy$LԙVG}E$ȳhVYѽq"u>}~!"]!4ޯɃ 퍊#4R})3ɍF0܅EZ|dzL=C+xAs-,||;`!rւ77jBo"F=bn)AGz?YZkv*<>t c{ P?i&hN3L_Q%X&I~?=hd'x)8P@rmIпSu'Q$+T5bwC ^tsNi wL̀rCOY;ä*tkLX0`k A7}.#"V(!htKZ)ӈO %"g2"|fD x={b6F#5ċf#A۠xNC@˪@O_PW@ {TJfȌ$4B>D!{may&]<+>r ?\475>*ibm,) NB:O0_A.rg(>0 m E`s_f<Ĭ4خ\F xo-iқ,WLc"|tw:Cx5jž+NS{)]QC(:6##r]Zp1^<xByH}wwC3/q *F(s"9-"j !ȯRG^$ .\B{ ij4y8mLVoh4[;2@8bB&ݡ[kiه%:YXRH%O^Yt9P$.2D%~_~yflD*|>o/C> #'9O_tϙfA'ܖQ3N40tG~\=-cSʼnf1N e"D7H?9Aΐّ^tNy zo#˪OU:6ؚ0(t`ʊ_`M/\ݵh_^ Ƶ>F,( # *}Fdr @5ҏMvSoӉ倮OLLN̔.#L'\*y-;GzS9^_;uuk9 H yEP/,(r>sv" ^QXcH$c^-o׈bx<K< d.<?4<6x,[㏔ر >aᰥ 6;AeO)h̫J!D|t|r[hYmŪ$=8LgSo4>֐a"#{Zhlb$_k3ZzT%Kœ_ F`ʗ.S#v`Lн:U).ta!2Ţ^\aۄdX2{iSh] 1exf{1zBզG7qyrbœHI{ ѫGDSUO6\snUB-C`:L_ m(ugYw|b@[w4w dBFpV\.[.$z B FҳA|k>"z /̈́,!; օy%Y6HťCBkq\(vvz\O' 5д?݈xO0OwGm;ȩ>U7qg:I!4NHx!:ɿab&.Cr{_Mkd7 I@!O3 }LE)@yN,FsqhYjNҒ.?QP y=GH I3B}t$G?x% -Qv=biP_/ 1R\>׿1oJ4U{ gr꫙%DA ob#CujXR4f1x W`1i)+7)Jnù6$ZX0hu''|'vhFT^I  { u >l7hZ?taT%S)~؉X`-Lzo^^)'W'/V˶耴t>⋠㵋npyA}'٣d=~wT֭g˨K MpihP%!xӓ%b$15Y\&+a*뉗]5WsdlOﲈ{NO%-eKpl^=6< B(~^ji #V@;ֶwv1?k59KTCݏ)^ ."O2qzΘz8|ۻzʥw3]: տ%g KjTEyZS\;6X{m?+T;Jϧ۔M,B%f7٭K#"M])mwO>3ZKߟ"PJᨄb[]c ,Z_jǬ¡sog\=wB+/MG ʝ%ݼLm&.C,jWz oSbHtC͸x%[$y,AK+R_^S2U i5>L&"AWMSӺ @8-؍MG +{;O+݅qV&סTztC@#^yܶhg`Y)@2FI!Gͣ_OdS3>x)Hdb MDH~$z}wEoyouf|+oDbG:n;TU0brɖ(~;%o>K9tGcIwKtqtTi`R)@a5!݌6 NW9Ru{i9FI/gV2:sܩާ[G7Լdҍ[P"}ײ_>$%l8kG</ԞYd.H4Ee0c_^y / ^՜~^Ř|xT(waGu^܉A&@S\=46WT^H9b[n[ 3K&R,3{=lDV\v:iа\E2+>n42bQd pןC?b5HzÀuj#1ҫ:c4>eS"{'cYocJWό` \qf#<:%(gMe[,+>{b#dġJ >B9TO}):,1c2fLl{ceYj #&ъ. "ł:iUlE($SS3OX/:($9y3]EhqH黬PÝj\p,wߟjh,1\ .dq<=mr 85/g?U7hTԫx~s:zO VvNRhz%DphҊ2N.i r<5NԟEJcKV\fU6Јn#d!{đj/ΏsqĠ%l"9S"B]N9nv$+Y,"7`:}|]pphzl[ICX9J0s̓GGhݢKꫨch L]Z]ދĻoOUǙ*0(?ZN˝p^74w6o=TSc{ Wan+ (^:pDˑUM)4>VR ǫ+^ރ‡4f* 1Ҁ/e_6:IA~eat9@>MpY~/eL+}eU LZfI U? eFE>ܵ3 1&e!N&@ o`[@|0N#Q["[˻xژ9\gw^8v&P }_Tf;Aj+]jl2hD㝯HOC /_f걦<(J1/ivN8Ox4ȕD?ߒLx!O~N Wdwd`hZ\ߒ?clž6-@cvwEDFw!˕Fbp!>1^\nRm.dE" @;4G]^ڛe +dO<(hUt8#5QqwY`c (; }: tPRw\זx|Dp#m~XK;ҬؚsV +gO'#kXIg7 ^-M[2@PZʤ07|wzD"Uxg,7q11+]

vj޻Uc;nX'@v&!u}_goSy&5ǘrt&=OR5ݒ&C0▋A8v+f;!Q4 $H$p#E8+b^@~P'Y[n׹SWְA= jh #KǿVfk#]8_}B׷z¿J2_SSsEP\瘯hNQ?TZuj~͈m)wi;ox_ۄ`A)*F/nѓ @Q\1Սէ ZZD__^|%3jR +ͼ/"$%59O4ͦ%ɓSgϜqV,RI.a;Wٺ_Rһeȶ^Q ICU0/յ/֐%`b47IHYP̎ :''U870@ 5cHYA4ҹׇwfgD*~#gTm':̙5_t(CG)UDW+-)Ay6$G>)u>H49],v7DǛ>xF/O MeD0ct\eNj6pMFmRLB SJ=dXOanS~¥rpL!1? &ZD&2CɦJ`].S%4ɿ3JQ`J'ߌ $ߛP*E"i^p$Co5KRE\ ph;IUHIua{K&T17`lo/*2'z0BYmǿ̞L04kS'LI<.3g,4AX{S&ߵRE퇜%89I o-n &n7(+vP >=9Lmi_ؐ@) ^ a9,jnIsF,R4l)QSvB{x._Jw4Ό&(68]{̜ǒ »Ԟ4yUve`&Ķ!`/E4b 2]/TDG;w9fɆ̀s q(v?T鵪XRp!l7OPY%us~ !u~XjPL5gLp?BgKkNa<*"}5'8\ULh[\Qu[MtSv>HPE޼RӢ>$"}VC|jlЍu`c3Df-$u+?Wa[`@Lq@#yXyOT|78s@o,~m/*cdX@>eV CfU8:h+~yM|3#ʴ%9p|ge@tYThf LMG5 _C_ƎeX$caA½0ƨź`PMuR) N~Q@o}:HO %&Rc2pe"Jw*0Ƅ͠$E-HV/G݌1,D@%ŹH*e`-w-Lk;e^T%i hn#ڻز@x$dE.ʹC97 8EzZ}6l?P5{NHo_EmH$CWvKhb){>o3՛ xo7]] F-P?MF1e'M ҏ+) ;{p\rz,\!K!_^6X2A*E'2U< 8zBOd[-$Nb"2d*M{*_·O\x5akHHd;,M |{KaNSgo:E^Z,+Ië [GxƗbůgVRt9y*U&kA CRcjXab;lѓ9_/g 5W\&SJv Lscf*4[^uN?v,=(:viK)4R.NN&Jjvu tp-2+Mf^Y` =f#j]I e8֥DQ3ſA mc a 6ZpYkKȼ+ ySV*=ݯ]i"]\Pa ;Q.ƩWF+RTM2le2 'v"Pf2ޯˏ.i\S6SeusD%ݚ̩mu.Q\.ʎ@TMOUH ?֓3뷳y:T$lV'*9ߖ "X7wv@bZW* KeƭEҀq| 1x/&= F2n i&7fcnڑHd 4KUiVAk86x%BϋшӹʠXoɘFFIU^wc8%Q?(ť -/iQ><s\K # ٱ؃n'Ӛ57oR7LF:_h\3f>^i#@؍L}0?D,v|IrYDuIZ#-BvbDX>0g2M5ZԎJBA}GK=1A-XHҞ0S@<Όac5/3SCΛ0C5RӀsf/%t`@K~gÆ4|FfAJhKSe 8>Dzn6 3ю]8GNgWT}}KIXУ& Qdct"" a}I{mx^NxUc^\$ H?6fW=] hvk0A4]@ކwk&gcwZ-г/k U2|+bKgY>^~ \F a_gҏR{CybJS56SP=F;&N0c'{3*6l R,iK @;K.ew6˚l>]_Om O^c: fL" ȩfiMG@P=RAA'.{tFJ?S2, aa?ӧN +>)è/+[`V'?ggl+H34*G/P-#pUFipXTJƄ'e}Xʮ sRm+#0ezFVzR{,{a,xqw*[R$prՉN mFf O7 Sx;k8JY%nj7֔⦍[v$@zMAyPA]"8!*xm W$ "^DySH; ٥ Wc"GEj &?|( OһOmO-ůtm"=8J8Hܾqf$-zq$vB$!1<ܩ=( Qeh~^UnYSܯX*V`R;JUsxT s/`bb/T(<ܕ Q%AһcӢ C$)SšTªnQ*Tbg?b@(9}o}RHUp0rTЩ܇Ҹas Df7{:|Zfy̅ 4zz把ɦQ|uW!`x !_k0@@cg q{2e V\6y LhDiʞwؕYSuiҖs223n6~R"+\ :ׁI.{hyXUy ![aPkg\WQQK4_g=#j;Ij<"_]T \&Q.SAi{c)QN2q}yXw?(cփ>sXW;bL#GscW)jwP(q3D4(7Fn^1 []Z,u߽/fN^{>MG*ox[!ծ/)~ڏy$I-(zMa)e[ ̩μ@RgLSoPBƫ";Q s~!e9f<$p/.+4M1[-fuhh3jM(E;!ի2&(\(#e~$Oe97sd.M*(m[ 7L LUG<3Z၅__>W}fkx8%l\Ч~ ŘQ_x_ #'6 LBJ֟asiDej{#m.dr=-l [=PRЕʃjT)ҰqRԐ5_4םY*M5Z(d1y(Wp\{_ 1u8ҚM߁e}J bE}_ARg*hz_? `t4GͿWD< 3$ӃӖ{%_siCo;Qü4T3|z3A) v,=[cQv{o< @zF\S>g=&uw7+:Ѱ̫qteih;?2¿ׯJ{}H90+Fu4iBifڭҊ$3ն.C…7P8,2/#rWf[adu4O{ _Hj^. -=-qHt`*( lRJd;s,"#LX%f=gcF.vOѫk%bdfX|Ur l_@R_MU:,VQ[)I3 '1>1kXC-YYM}#z(ХSʀ ssBtKau` =kF G%U6G;۱-/l )n`$I-Kc28! Q& =ȢUL>%t'ɩ(^) oVz[O¿޺ZH|j3p,?~tǃdm] 5w\eN@pD0 ?ԙH #w [+7.x xK7:24/& ܍WQa1tM1WbS?r1gAG=(;^hg7>F٧4aZOL/c/ LN̂Mo[/HeK1ݖ{nciWDwMC)o)[ld UM]pts2?.%Ia kV Ń_Q1SG5?h\/p㶜)$~7rFsq۹5Qa[& Tq\B+훇o%>_&d ~{庯z8we^4Omi0jAPR%@y=/a'vzn c"{FI[(|hU 'wl]a(!vN1g)IrB:)M  |jV3ȿɾdN}Ըnjv9DhIs8U8 cL^m2q&ޒU0wp^jwܚߓ/|%nmEKgE\` s?0?n]Th]L]PytEb_SJ%:J>=.㖟d 0R,1e4Of8[G7^(+wC2etM]{ U_c 95UHCoR)]iV$˽zS͞2, 7F}#E%ss,tйuv$U#;݀}fi%qa.E6Q $c^Ĩ<>0y>KL%u9ȲcHj?QUaCާ6n; rfE"NlH泰WFnQU5h?j+ݑYI[φz #5mt?D"6Yp& ۋI Ңi)H!}huյ_hPгRCT/* %OHv+ɌTQD{{ؐayI*// @tI1,~*ⒶC)XJ4LоIk)GN[9Oq_cLZ^S![E<%1d/# >ȵDb$qq=>b .)=mE ~[K!mϐV3ンKbzSCIpHXˎC7yDVʨw:RjK蜇F&wNa^#Pm!"+h` %%zᢋ [Fs{8&^؂vJ =Ғbp1ӍOWˀ'=Ȯ :),{mmQKSyB/!|o"U7?$\iG*愊}[GysL7Xz; ݗg)kg]:$s]`QTo<{ +22 aMah@ h  {Ufy=Q3aӮje5oӕ\_0}gpBQs]Ӂqm,N5r= ?e*"2eZozEaϱoLv_bO(_v9ٟ)|cs~0d4hR|4?ټw.k-oㆭM#,dᡒ}} |"MOC v^&H2[jvm@cTNf*sOԻs%`¿gpN ~W2;ݮtgevwHN9 AG'd6T` QI D8sp)}/|Vs[b4Ĭ <{C"xa("oI ~EhWRوIz9nUyɆS׳0Ug[ӂ͢?^x 78(:\^oYM[O 1#NP'I.c"Lo0Ū1 3ЂRNӲn"†W>%zH|-ޕRAoND< Ѝ p.ӫy,vr3]19dɢ~׭%UJ^ ` P1,[aMFpd,_ &nN b?dK,_r}'j"'-Jd` C[,9M'Kd0Kcd~Axes/l"*eqM凜m;}nt=4(G9qҶayPQwd"ߌ(6EѨE%/CARvJz~ݸQǵK%Ld~. k<_" e /|6JhB"y]rB}li;(Q{-ȢA([Arœi#mSs:@a;i`0:Gٞ.ѽʅh$ej-vatz.Z\g+5,o6\ʇ۬+5H,]ݥVMüsat3Z [#Y.L aFNN)=dWfҦIó]p#s41#yN@c~gK?Ip]Ϊ\=JȞ2V > nB>{Mqz·07?O+h8Af>pQE? >**d8t} h*B ?$H|Ϟ|(?P Bee/P)vʭ]5*؀AciޟmמѥbЗ OV೻<4)]]i %J7fcla@T%ǁSu,$]*wL4UR>; Q wv2 Kkr(>Ji۠/ԙ! g7 G}y9缈 U^̟t#__`x Ԃ;\ $B52$ }DXɨ\/ss+>6¬!D]ݧ;3rmY>8y*BIӡ(._hĨ#U 7یDJ]S+/-7\[ʛd_i@DH15'ͥF7!pg_T[y]Dް$N:JPBz\cSq\]47pe 3Hz>l(9cereeCX8ykAl3LJRiwpKlgM>e>3A@V_Bv*žfIX YM+'vdc0 NYT[h xIn4b1Nm=VxÝ#@e>ƫ|Fi1}VrLLVQ- HFQ[uͣ^ #DK|=:SX4< q 'Y~lYM'aLE*2D\;b!rOFtF,ٍbW^Ϣ'I+o{LLTRoZ)8Qü2o3nU1 F_&/1%AdvAwN$[%-s F C/hj껰pdL-З!ynpAh1Fғ'' }#4/ IY;jDO,ҿIfμi&`,qlN{d2ei1 ~llaŻ˪8"Gk!΍y&|e-s{+!~Z L}$kSւyQMІtُ`E r+e%(r_}aGy´&Jzާբ|kfC=Ī;B`*|_z[PV;\AGf;/@FމR!'ln0i7f1Me&hMv"ړc"]S:%4pJS H9UѽS0NH}dƙҺ{㭈dqO{'QYBy1lE]ՠ7Չx X~/z2$dMF;3*w|愖Q~0u:\ҧ@CN[rQ{Yg- jHK{x *e0کra-YNmQP)]'M"0 -.Э la,;{\(R`E.3< ]bɀJZz,Qu[+ MTlty|ȯѰ26#&N=%G$̲U14&#ɏΜwt4LS*iFdTUԓ i#G6~qqz;:.)\AOsl-כF[Ƨ=#P~oPWf og˧ zC2%,?![vo19Q rРh J_,]xhB/!IGMB/*s j] kbn}^h{YtYB,I՟!3hA}*IMiHD d3WKwڴ ؍Bn=S0[y^'^Z&5pH.=*809]#jԞkc~.O N] pDhH@1/oФ1[.5:QqǾv<;8WB܄sv'>=̼<'w-\iزǫuK;Γ~gۺ(,`zлGxŘa1A~6"|*tg(&zj]ҡ-c)+ϫ~~fk{5-c9?N8ӄIG{$;2ڎ1RŮнR ۍ+ ܱ9֐5 H1yɧh6!N! JyQ'p񌀳D4TFK̐azO=hhegIި҈S ߛ=Tl.(*aps9gUs Gmdv ԖQ/[tt!H uoP/>t2@ 6:Z!l$2$"_ա*G{h.|&9%E-vR_Z^KYFy$BfP[!4$ikV?XrZI(pV)6;$YP5D6!3S#-@ecN Ԛ'CJaŒ/Rbř`ABNM!3M?D("zha= *=7"4: VF:%gsEj l? ![fQxp&8 ƾWtf[rq2=nT 0ejKPn}joG oF'.k.*H9zΞ@X'j9o'\<u9-Ad+":SzH~mn4v& YzN{>՜7bfhTcHp ˯1+ ޅRO Oo{,1jn/N)~~Gэ*?pkR`iT(.NvޡNU fH= ק{˛G43&DMb\@,H;r&䰫u+/~[Sum~QE՜IE[~#=nt?[@20"-$8VH #uG'v-gI.SmB<:4 /`v,+ܳ k-]_$^`es@BMֲ]:Y? RIRݴ+-kwW ePҋFun/Df} KTs /g,*%$JA!E~ 2f#dB~]gy&HoGǟ^AhO0* Bg(OIGKf ^yipX^_/8, #3 p4:}Sr &6 @_ /e43ق1߼,ᲁcnySDA|各#Bxׂjpjȴ &VPtC SC OĠ_dDCҿ^7"; >\>P0s6:hpfi,^M뜦N.n-yr!q8DI˽l`a_#ӂr>.\rb0hP\3-5BKndH" XkNa ėjhJ`(ue1LmytV cnlGs0q1@)\ Ÿ1Z>g>)j__Vw0,\mq699UYrpLEqt:b<ҿY/"l"VJl4DCQZn^KJұȰNӳYfE68IKffF"S WaK?TS[24 ?(uMaKKFYXTRBbSd3C]"SIk'lI/ࡠj/zwU2} bP^w\f V_9(4̋P9"x` BV%zRZr1mV"@WQ1L?Ola\~ J<ٻa ) 8ҺG66(A:NBtݳZ 6Aqaf^4 skbJSS#y Z7?q.N@kT3)78*BUygmhw;R\Z!>5bX줰&:< I TX{52sj3|DoL*’TV&a"Zc^fYIeCn >l97v̀ ]\q)+;eyLdN $)O3 [ ߢL9E L mk'=עJp1rCyT/&yڑoU\|b8terTo)G \ cЗ ]IƉ\Ȭ+ tc@CX?|֘/rS9.%F[>Rzb<=k\[#VZ SPRa굨~(:]hƝݲ[@){os0%rB|O`o-z:QLVFb`n.SOaߠE~oz@݂R'|fTC(7ow1Fn>bT:>wI+bV}(0G%?cBfwT7,R &B)0֙$8wi.vP2P &Ԛ映D6n\[_A)>\JBЩ?>a&}X{Vɧ-j!ƥvu]!qLN8@5o8c{nEĀf'Zȣ x,8ho˸wN(s'أ-Ki2t)瀹S)T`%G~@Cl;z6/Dс_q9oC DC"EYr} FL _n`p9bx/ez!O6y-kd,\eQO`="N̴BF>]ё zb+喏C"dY?*"ƭ2)f ~cڕNt=WVbA*^ =fmYtOBӛZ\Rin9l6/2i(b6Won߇}|E~wT5?/znLZpR;> [1qʪ3ץ>6< 4f@R3 E76 rEzM OEg#NqsQT̠C{8"NqoF[ؗ}T6+m4! z]P"'W$oB%qmMVg?qK6LtWN[HbBpgE'oJ(awHX͈J%aqTvNu yA|浶%7 ?)?YwE%hB՜,F.Wޘ _M =t55gONyޛ0PS-dy2qIlg?N}[%32}Zf@y娥7[+C ~P03Nh7&`@39mSu#ZEq*khu޷e&2LM.Cd8Xr__*-z4LEpȝjhB/navhB.i+'s"fMQf_v$p1eڗMg~+jbt`'_z ^0BmG&&Wz m+݌U4\.D؀ӛlnnP[eF@(„o6D9?Z4hnmtf;ihO?OFDB8j!|"Vcfn빼@>S<}XaW9r^l;`\61S@W)hAgR,$yOHx+ p}tpÇ\aV$YgZXiYAE[I(Jt jԾ`>`$GeQr/|v 4^5Bo%0*X"_ͬu]WH1;y5,^1Oʳ\ {Ue^CZU :4[I s|#$4X4 LQ$+8hG&"ʏd<ӳ/ܙ2h x#aAf`3 gW*3 Q8RzK \*|"i.A񰸜:(\iɡ&84 IL0d-vՕu?n`dq':w|\xn} -w=84<%Ric?+^yY;nv(quRY>iNp"Pb?EdS(Q5"f2w*޹|S!BЈ{Y KD(#3%GʗȔk@,/Vy埒s,L.f?5CLG JG-QHEr*E؈tfJ=^ i/W,沲nR3Μ#Nvs]KYD!g<)^<;LK(ICJNCEY uS2$[#tvQˊܘ9FTPy|h* RDEԱIˏ:a0lẌ@{gӵ7@+9zzSt/ qW$bjyp 8y)GE*YXÕ5,BgʦһA;_R"N+(Y &$-CۊD + t:y)ܾ 9*UWIns^^wXh>EG.Vp] & 4l9P1*Į[g us+*%ol߹{;2ƕR1Zf+ }{ǼPJM\~BO$qSwԬ:`7ΫP0 & ϫ4*3<yufy츕q o, av M ґB.CALӌg_Pn( ,d;ίf5:i` >! ?w^ KZlO*Wv|6@]f5ƯINW@k6+'y_Xh;,R!.!-DCdB+Qf./WUNzз졍``eiR:))- -%e|L[L:h݊&6e',ZP=H#jI$RrKPCA0曤 -t>2W'|s9UEuQvU'goWN gp:zBe5Cco4k`R;; G3dR]ßQ [ TZ"(YKd\x(<"Lg9!8nKاJ$8H2B}.# 9@$МoODz& Gesq+I5J՟f?z*J,%J)&a* `>SX8TϹVƝAFQd\Yqܓ-{}b;I4 ?-Cp3:Lѧ{aP}܎18v9Rx;<~5,deEhaEԤ 4 ֺSe"pLP$NJkrZĎ\OBa ۜ;۝R>9:7wlE=Wм!H,ͅp@5x]ytÁ&GF,u]D~!w j)T/Rڶr?|x"@Q w_-7K6&4ˇyp&v 7;]gF>na 9avJ`DL_QST/8"I\hfY{ֲMF2zs|ùXLs t-6eWwh7Qu(WZT|)FϣԽ$ءL1B落i t̘^+$+MU2`]FFAx=@MG R=f~*T|!3ℹ/Eo6?VS`L:Ƀr+ezh;hzS4ACt`A #W`55nQ.I@Ib̊ zN1:Jr$_K7Rl Ze-Q{‚](}xZL %V ǙE]Hlפ5>E:D'l[64mvQEv#{ S+6\m\ܣIOvsFW:׏_q.IVQ063!E8Fh=/( tk{zb2| k 9 ĜJYi?PX'Y|V6Eu[aTl8r~d}=\RWEW*B畛;i.U0AA2gʓ=) M6<4Ɲ7CY_ML͍6uMfgQC 5Xpޡq.2UY㒶S4~Q TS=_gǙMQ,$݋Q D<$xR W5lh3yERۼG|J@5'qˮ['Ժ+o* u.ɔ˯9pn`'xi_Ph•M6DqU~?:˜{.[v)ZΝwR8ʃOy7KLjm}fW{Htp=57'0^ hQXF|}\8Y"hڐv9<tugo>&1 %I}`'?d6<[r* 663/eϪN8Bݮ3!*{0&3>7kȢrрFeMUA ʧɠjt\2NeREX3i/ z'T\7hZ*"Wxnpp\5.:6+ƑeyIo $ΐ+A%xiW>#C a*7:9|?ZSW;+I|!!e>+"ǻPpkVhoЩՃUؔ bdC^Zٶ]n\@Y N}r@c#9V"@A7/7&QۊuꕂdqNátjaS@9Ǿ)5C,‚D" h^5, G4S$wJu>*|@ Sr*!9/K8>d/ @*$ f]_W 㬰da~?GQ ]^5{d@P<џ@3l7~|Vce(~5 4XTE?tLnzYI@}=-9xuCf("V%g_ּ= ݌G_h jAH>KuEYC$[(CDLsHqz׃nмYlC?κ!Fܖr 㥗#Q2}%9m{So&Ef9c *q2z3*Y$ WEE@J2onQK>{a 'qC9i0}JI(hɿ̠h'vO02dl!XNxu_ EI2:YSb0 Wx5Y|S[ބo>|mo:ax? -3!YY {: ilخT!,g:'jLm#RT P\J&Ȍ^|"ߵK*gn6ڞx‰ 1yot#g.0Kr[ U6m 'E)}VhASa7 Ǐ:=RCQZW6Ou[.D ,mr!f WCc=6 a%ݪ O]/[ ˋc4Ce(ޫ~o'Ǘ:@Vz`)u==wW XMu˂sy_ŏK/*#Eq_fK'`%%)*k{_^ب_AԪhFzgkʺ< b.:Tj8 ZJ2Afa @ Jt5E\gˊH@꘿[rnObLjJJE>;GD8 'A*ay:CzMӭ i\7?_@0=sO1-Ȗ?,CqF6E_vvēڮ.mAתq8r?e^03)%wq`?}ɱ{[8?ToO.Ps* ifQgy^.>`nrJ}g{ݶ혠RZCݞfg[ˊ숒Ƹ} >~ż9^TT3pڥ(5b^tYRIs]TVyl[,MAԴod CMr`ll^]n/S27jQ6H*-Խ# K^ް/ԿpU Z%lTW&Qm%o+gxj׮ !uSBpe SSq>.ia<%+aLa-=XzV-`ڒX sT)(?}QsRJ"Įx8%ڟ͛$ABӔ.`{r`+FXY{[.Ş SB'3#q %Q^>NbYǙxOܛS RQm[AxL1CFD]rSeX|Dž0ls4A^`j!=8D$wsj[`dw6>bG@h@hPg_p(HK}=Llo*8P~R>6&w4 -&HM%?to$:ِ̡|IɴŒ3r3.-v@v @p{T|c`n{ #v.3^֋)j)ծGM9~/d8\ ϤY#^WS RA aSp}{( ~KVVѻ4tƍKYy|V/ASg B`+,a5 32^exvLV'F];z0KX2fh z5Α[1h@ݦ׻Ib`JOiHqٞlߋA=bexݵFC6O^\o KsEH%{֌p >6{h92!s?˛ s?~`2=])I.Y"tVX]nii&sR}? Bݢ:wP`eW~6k\߮QIąN%:|/<Yՠ}XV>`ܳmt}O Pߍ]+iTա@Q@AKަ$0ڋ>1RL$o=)4*$UpsWkFu+%޳fPJw틿fyrgΠ/.`~ȶ!uf=FmX}3eH>_m?YI^'/iPM.4ϢVMfAp#JS8f Gt폜6sp@fa HM zAܠ=T|J IY ^b59o(Ԯ=o )"3ա(w3p xIM"+~Ռ!"8$M ʒhaiʻ?qi^NTwmv';Y# sx1H.ĵr4/Ck$J/w,j5e5UʀC?@L+ut]\%/j)'xU?FYzyzX$4bA%u՘N4/RF]<`L)@Px 1!R1P r(X[Saaq`Ʉ}[@2.1w­p^NǔhT1G\+# 7Ɏ h\rƒن~dDAB e0w'NzU:( nP&>upx5|Ga@5fsmjϼ{p5\(^yD ywƉ#sqd@Iqz_@!=5vzJ8 H0z"aDԔ_QP ԑT-(1TtHܗ: | Qd4(Ii3=^hLc۲KL}}2Mjád&W1Uw yZBb1V͚M|+:s9H!i:kBDnt8T?mt*1o&EI79J>gZu2TH_}R!`hZ92 [+  1~D?B /DZlhQ״ qA3D|mP؄kUXkU jFu 9m@sL:$X5: 7@^&| $b68+Bi̫"GjGxl?e+a׉O(n-.h_Nx Bbl!G.TB0zgwJCSE CN_xNXV\)|opj^][“ £q ƤѣV2+pf`f|{g3Y hobZBP*v⼵4x2f>g1 :2-ZOiAxaOԜ^#j7OAD#u? g5*Rs'mXtG\$ g=`a$Y!dxF Q\?F Qgxed՗z8}y> #4S( -$So {}$xW=v@sz\IԾ~z1[f" DJ+<fn^§ _6^[l1y0Uc{77vLV49A EȀXlP7uah wI2s фk]l! !KEs3l{  |֏긹LO4pRdׇw-1^]}ɳU:.2-&ؾuf'=R$2r ">wty_M_-h-LATӯhsd<,if*<zQW k$>Lrꅌ 6q΋PhcM"u8Sz S=lm:q =q3 =Z(1jjVnoGCɎn՗Kp ;y3F 쏮Փg|\!i<湕_,b)~IXlBK#Mw_hSSG=h帕HNCvqr!*LEW+? \9v-C=;t3bŭǷƫțsjD5 W9EJ^'w!;P4SP"/|4?e܈G1;)j}H 4'1|xP.WȊ& 54;2qa;8 )Uy#+O#;W.i !IItg@I;؅ξqEеsQ\_(.{4FR83@qMݶ4.8?]v.8 kcr ?!H{\[Tv+Sb#Yp j !zwwpeW уֻ*OQbnַպ⑨*|=_K&IqB?ݒF1/U0Jy b,s\wOfqbc ڌ"E߇A .l4 HxȊ5{mi۱OW-,Y_ &&ljG-%$VHEkXLq2|J>)];G:ڱolIڸ]齨ݬ\i=n[Y^9sd9GlVϡ֧&)q {RQlK&FCpe0[ِ0OARIܢ!ye'S<|)}JYds-?A}UekO "#=$ 6lfEB4˙kXteAu)Mkj랔bϔ.J-ю;]s+Ra.ZyKoi4{t'y"lxv62$gE/5D~!B [4rm z//ANa!cGaҾ>yN4fڅ'm #==LYCа" K1}EܹZI$&.,,Zfwꡟb}R\ ߘ!G|<-խJsV7C1.JLB,{ZwƖҼD8|B(|JN(mT*r""2$#^zyo M0.ޙ#Ӯ|y2BCa'_7ҘG[h4y>ZR!`kѡ.۫dwM `6{plNC;M +շsÀJw! 8ҐO*l 0o ECn>>IAp[|L,|)M!)NgcQX{:o܄)/yY9u mmo Y/}bѬySWyWӾ%V_3wKۮ V&0> !*% y|Be;t )- #~ ׿xϘSg^ o&CYhj~T)GHFS'IA 850VJm+%qϮRx`6Å^Ԯ62׏UM?#QBg0 Vx5xx9pXD AqNa &8epB 1ߪh=cheε{M?0_/pStŠQP"`5R);8aa8hw~ř-7jW+d˜HIiEѼ+&|G^kْq|oeì\c>4]% "_R8o$$&$x[,>h˱5[v鳫,)=Lo4DIű׿ؒseBjIhLˎK6bDl&hUF kȼ0fVAc/[Z\ SHB#$ _%x SlMbG?>FDޚ9v^/S0@"ИE})hĵ[vc·b;]J)WϰBIWU1`B aᛑ!y-U$fchFUqdWܞYK"s8t O6!Ъ5ykS#m&]_$CAhMsݸSǓ -|뵉1hsfkD±˒d7x9[{`;^‰LOp|6ٹuy<A $gղOE !sXmV{N$W"pŮKC&ּBu3Ɇ7c# 8:dn.L_4& |Bb>޲dfS"Z Hٮmo0`4{"5JGk{^enBS\iuoaQ.1bKV#tD/{yX[TAdLSãl*\ia`\q_LX(e|HJ 9^@yulp Pgά:c[CX7| oT5`2>vXfdo!RQruIm8 i2)B?U4q72ވԵ~ sYVebܿK:DTRJV%+q"0KJ!E j(غiƀ j7L V,JFOK!aBS WFa[ ǹJT<>J 8q]jkd!r[2TBDN03FW䱪mf3_+a:v!$YE C(CTU=Forys'xؠ.~ ng(9N1[9ԓZ=BSf0˺1 'rsx/{Z,nۑrx_BaCpgi.LayƤjKg )nx@V~n1EO;CJqwkFZUtg6X^).%s1ԋ(A44럣?zh^BZ} )qFˡyVoѤ*S{բ.KKwOV$~ Q>kGgY*dnrqE cwSq:Ӊ_T6p,Ht-UJ \;umM<(OnCp }5nƎ qWs:H+6!:Ed㚞2$VI(4 rŶ?$ߗv%>"߸nyy`H_^#xAfj3^cj*jn쓼Fj ~ ;pUg>2atlU&jx$NzXKqp +u0Mdù|cRCAx? bNJET3RIGxJS )1!XRܧBhqA{yqR >GԤYgDUS$8q#?3]\Nw'7;@иȦzڛ5>*s_u:wVf`Q@lOLn~>)j4)sJtLF<,iVjeO-i+pyo26, Ӆ:bN<!$T;ٔUXe lܰuZ1Iܹs{x-tw 7;D3[dt \-ڡ?gB^m֌{to] ńx|F"|瘲iEn od=J,|A4;jȞ3(A+ czh)3qy*b سG?.4`2|^,|rǸ> (wR8`Jي9ܬ:Kiq6?9q MʊO2wxzǀgp,`%!͊Ct. ^j 6PWowϿ謘\6ZkwRlihc4-+2/xҷFpUeߧnЖؼ]eW0D3^Y$9Ya]) $Jʖl`-һ}PApf&y$b b-GkRXSo~j{CAy q>Pם2AxԂoy08}uH[2|I@d%\F5]%-x@3ݢW*ca STʭL/Q /zʜ:]Xk +%_7n㕴4t1䭈rѥ`UJJb!!6McwiڿRc } ,6kizR(\5ݭ0PH0񀡾^,k8>X,;-3S \,*笓qr-9h9l[dG_eJW֑_9S8 Z@D+LJ͊"(>r)jլ迉P|yw+:Gi))@LOWRQ)̍QqbsqbfTs͒KKDa?W~KZmV ALٷYt* Q@!񂡉+?B͗ 4AB^%1 X2vM h5O?`u >WBMb$Yv^]֛!hr!<&Sk?/3 {i'G$aW IѼh\gU:l{1߽a#0,ԮgKW_c@\`E .ICQV}Bx0*k' qͮxyZ% NszNO3ܨ٦O8pH4h uYR.is\,L$W\`r$f<# ʷUn<ȼO/jS V@=/\f໛nZD|N(n=7ԳW1~B}HRm_]cwGw2`hAJTaFFx'/-:}$0̏o!Pv&7F(ԑ+I Zqt G2"c^yoȋ59 D!cR;O"EQ8W;nCx21 :ʼnMlg QX?'N# Kx,wePă2lT-1,BgM홴^c.jYAL"12.K}uQ0HўG1>dp#mglR"瓯.hB6 {d5_/7~iɫi沬k|ðr"U()'XcSZ1Gxӹzk"8@g Q86t'0 Rjj'&JnG#j*/y!b#9a`!^Isi#qO'2]fجG'Hu`"BeQH"tJ5-st '1/΍rE+|>%(ϻI[tFbėFZh" 1}k;0s/ض5R9N:yv]NE5OhGg4KgQcwA_ S,l۪ϫx<"]ob .CgMI=/Gl]Yn-[XXgPTڼ{Z%@m/b'x";.9wWR6S QbxosldS<0J Ψ4?,eHzD}(n,α)h`%Q(5s\ 쩋i3=axcJT/r&{ g3MJTЊ5 bB;>vXJu?;)5MئDyJz#VH?%C q'׌#?ACzUOITW’&7[F:T]bEb: ˹5}Neq~{ʐ{exqDU=5=q+2ږ"0"P t1ǺE|kaD?>o2b(`.FvI a\^+gR7x,rIS8̶ϕXw y" '-K&s*PIU[3+5Ì/泘g2krw+"zw"GDClv^ \-ȝo"k<p $`RwQ{B 42Dc󇥹h4XpepB[ZdXA$+xe#¯# Ve|t5$f U iᑬ f^jGbr$Qp;MUt '6!F :0]Edlkxt0 qW#9ʇ@[?T=\ޜ&y^QBS ,45FMPIt;D9A֑H\-"Uy T_'c}޳p^h2&~J^=V>EVXOS<YwEpB>8ּf) 5`~uS&a/^"֍o:`cwkRƺjC 049=&ĕ<뒟vʃh-l715aLlNm^>kO!Dɉ_LEv7WMflj>!q#d£`z\"#vwD =@+>donu!V/C.O0Ђ4&#zR6KsߴѡM Zt嘶JRo[ 1FmbWȠ>Lɱ=̂֏ύEM,w !{Lp7' yOr99-5 t[ZL74U#q0*_w#џTz+V_Je5Hۆc%j_ _ " _RڪL+4u\Y< ZR.r,Ra#XWo^>zB /´esB2AEk’yJgxS$+sSnJCD_1)FŞmÏyO:롙`CK|m6/T)<fj^Ѐ8(ây7TvB؎T\`w4Q|gNs4fC0 @cz0Nȳ )x ZEj7*^bSl5nP ?#X< ~1_l/z؅l&ʵ` (wr{%FUj6nA8I>MܵH &ếX&W B4;@Q4>PZ߶Fr\_ʄ O7~qsML3"ŝPΛ胏tqJȩ {xw_ݕ5rEP㽇o䉁Cڝ8&1;*4L-G} @詑65YD>zn~}Hm| 8 l{C ۼPޫ /IBNCVzLC}C{6ϑ %cNpcPr\ꘚ`{AH֗ aN8J-!7ք< hX b>F!I}H \a7ZC`(tfC *gh<%.rYh2ÞPkM!}80 3RQsE1=É 1K=Jx_xS)\X }٧M;u h@F2'V,]6hҜ_K&h} a5tb+n't_.&W&g:9/xa)&jy.˸imxM/ހһpoN~az!=_1E AQ])2w堌j[Gp|ΝrdJ#*s~)N%gFW2L3`W}Mql@=ʳ`ϑGώgJVIw,l=m]ɬZ :4?94%l//Qćڪ}HF_A\HޑF 0쓻@IQ@cc|ͣ]mCז &ɑۑ, %gH1o)|)XU櫛Y&J 'nCt1:N|Q LI΂Gq{!Do*Gc-۝5zBOafXgG3[+I8+i3pG%#UgXs416U-nqBd}{D[;@8Y`d%+P]Vz;^:l s5a:vTU|yk]}S@"M&RH$W4!qC@>OqHn&J .'|~RH1prAtI D-dN-ͯP Bh]pxwqt$1y"D3Hg5[g @JZP֡ NVs>l'դlާQx Gh8Tڥ5e ˌq$D# + EzY2;I E.&!뵄,#N {@O;Q 8mɜ9v\p(0vgE37+w;tK_6D]2~JIMХpr5sMڃ}Fc EEC&C u_ \ۯ? "d:+WtA1aBƴtAS^68Kf?sΗkqCl-#%9:[ w1dw<7ihi AL|;}\BW l3܅Ur1%FpVkҚ}ri JGs͏I-[|ˠߔ2u#ZoKm@w(! ®yIWY^aV%-/\|,Gw7,pUW㝑j(KE3O '*Jb/ yaEy((`v7afLK ٣|1UQoˏn)%'UT!ԵgG/!n,]w5Rc'9(7`N'L!.KLk1dBz볬@70tݒ_Tܻ2UbFeKc<ʌ'ܡc\D‘ QBӁbVt)P`}t7?kLmܡd:Н2msp\o9-mrtݺhTYߛ2a_"3EBN} z[B̫Rҫ_~!as.ug%|{c|`KJ-WhPnjg&oYb<.\ucDj,FC NZ=/В.̈hQh"sMΘASC@kDDCւ ~?ATs봐{lj*( t3ȮX_,08^ӦzބH!騫 YP1\/b3Nfޑ|~Hʞmd1X|Z1)ce%ZVz9IԎMÆ-}ij" ed2 уb(NMgS:#T}}n;k pw(u{%7Ig( Da4Zzmgɝ}OI6-<߱ =搭,NM(ˆ>m0']^$wx2.VĐSHOErs6ptv}o3ː:ǹBKunpUP-j _;rkn[v@8v'KeTM Җs GD$Fxx&Ũ8__!|ՄEt3,|@"YZ1{H90ݽ#nSvtAF sC> @^˗Qܦ^ݼ\NR/`a~:.Ͻv}Z*;'rjUO 'xp<540& #Yeq'<=T6BxŎ0_;|ӏQġ M: `~Eͬ#6""Aӧ<%M 7ǦԶޢR@89=m%V>@pEadt5H-'Ϗyb7F28lcp÷=@&3/y;ea`/6~"Pȏzrs=~ӹؘp¢^ } {nGWS]p7o9v_,8ΈX#rJ=F!I#f1>+"i]y R=Ţڢ3S@b @礒;Ϋ#9|kVCSS>6 u@~I 5TZ)YbNı~D 433P㼞ëh*t}Nk^zwixqMf22&*fB_3yqlg]JmQ]a]{iCI#y}+ժ14㶱p\i[&̺s2{B ;*i(RЋ%kG&$f+e]O EϾ-Ob, 5cԧx~noZʀ[N\3-iP9e&]g ΩZ=/U0-'&Sn2J˰Ga4 ŭ%;KGcRC))`78m¡-m{N(nQu55%%4H?7!$<)=Nn l馯+WKn@DwL_$00ىKR%=ys kUi;FT{΄tϐ (R82阐 Sqo<9\(<ߨ*7"ZS;/ڹ~o7LogDJ|%o&!vZŻZ <)9XÛ8̬n1 h_;H'[{;EOW."K~uEb]5lܛnA,F3{J?c>.lHѪxOiȰEUQ74a蝒AyVfvYѯ9# V![7K%0d&ɠU2ūj#ꞷv 4eE㙊C}M-)qҍW87"XiFD&"<2N' +wH[z#FhP&4]=?.D#XҹݲN s o*c:xFBz.ߦ,(a|<@e܁R_8t z>T^їyZz_oUqhO] g4".y^s0a| !m1@ܫO|aw!n=+FݒX9ʞ@ې!|g= Ha:m(/Og-w֎85GjOC5L+!T$fR2 1OzلW\Z4 oX&q0C;:&b!I:p)?Rh]>E!fͷ.nqy?2{vQDerǻO&S?Ogʗɗ/}rIxiET ^Fs>nk=~ȥM6n'hmC)"jaB>jxqsqgdF4ѥEVZ`\+)JQ FsqQmEf )N)hCrd8w)Gېkp84,=Z+1涔3 9= B3 j+;30H95&@<t |ۦ{FPG!)9-WÆ䬀ȸbE̕5Y7e3[BF8|cy1g[uVĒ?^/SB/By!׿Ӳe8 kD~Պ tuLM7joR~ ^](g+$rNvwoSD!$b(#l +J8h u%$FR<ĽZA98&DDGA4Bg.B/ v{?|OH聃qȌюa4EI7QwYɲ?rGײ[ɏ' UOqr7DL ?nq#{4ȱߌEрsor~zὦnȜ~<{hxk-$e:Hr%JT{$::LbB:Ǖqr}g{X!PQϦ\)zgqVh]`\\mKZVu#[d, #*ّ'qܙq 'Γ*=++y1*:&hx}zӳ$"r#f6r дi03d>P_&QlDת;Oy07UJon<ӻ5<4evL/SE(yv4jN< &Xs=`K:ַU%V+/+fbQlO^:f3B% Pa XKX w&Pf(UJ"6g1> ,Q}ɲW5{BG9ojϔ@]5# \bu"+Ӏ-"r,^҆P*<]½降컮3IhF3M뢺@si;M?A1;P >AF3:`}\U"M[qa/ANkg1!!T.Keۊ⇃$?V&ʂ΍H[-^Hԏ=U5++%ȕ6GV z* m+9#ؿ V4z=*X,N^ L?oU X^138.bޢ/Y8|9?tCiVPMz^3=%Dٰ/o8ʳY #C])Gp7'p˖z\`Tb[>5r|n񼸧Ec& Z869[G+f?Eaq_)+qlƁOYQl`ȯ/CҌ_Wgqw&z3;ڰqu4R/6q$0|9%@14&/"3Y8,;;϶W؅SacRʵ`;,ybk<M5ƥjr]+BY{ś`_ COC;7Dh]wP!*u].b1H+LZ'AcƚQVӎZKbL[=)a~~+u&܈!Q KB:/ { /|fq=C o""c/Mzpl3_f򍭴}ֈXI*G?fV:-NMV|ZGDv]Z77{z=fnu5SRqVz->z*4[g\%q}Hh-\ */mK.,b]laWGm?|iyN w+ ԫ_ /O'޻F"땶"qsI+ m:nKQZԵgVKII.adYgM}z:fv;;vcxیN]ǞoѹI~cب\K$F$Q1-6Z vr~k_4C%tGT3"(Yo8ShB9ք}njS;Xs&p㻛Z"e5ޔ\IgH/dePX {lϥR` C[56G7jHcw^PNiY.U_,0C[}iXEQ#O%ñkM"$F%Uz݂P iЬ/.c<0Ճ.=Sc켁EBJb5^%[>Vo2ۄTE0]!<,q !Lȑ09+짘CUВ8ՈLuX$ ~i{y-H; 젋nxj?*@E4aB I`5^MLjDE5Drb귡GhJG'wڥY!Pr 2@gsM9CvMU2 o9`nj\.U[zy}BHZr"(ؘ5eҗpKQ( ѯ8"̂hv1&w]zעoI[}7)#eHHn񫣔5?: UY;I&YP^ye\CNVogkWZȜ7E*y-CDTl[˽)M]o|!٩ :OH0١K&r5F%FtV0rۮJsUY2wq q%Ty7±#THh׼ w;M`r( ׇo }WZK}9ox,P(lS}qa`odm5iWmGsR4nDEǗ`JU!w4ÐQ,+\5g tvGwΊrPD0ۇ;fyY!*@f? B ^^ T#v&tCbc[)9mv/S)&3d4*uL5K ;R"%/N؅Z*m+`_Bۗ >TT LZD[Kqab{ 4AP2uXWЁI>N]i2yl68mdPQͪIn*_bCY@x "'p=% dG_f8Y=nnxS7=PtM0p}~?s"t MO Tcڤ+D՛ff|-6V}jpG"ΰBBtR u=<ꥋ޼nɽ Sr^_!&eZZVcn5R1f8ƸX wzV, gC~\sq: =G7D s R| ~X}G]uKS7i߸3@BK Ew=Z?>bٝZkiH=D)zG)()  Ӏq }v"XȅKt7~tD 4cF#)&ǔ{RN<>*Q~AbkV^7\Pb\#My R^3z _7"ዤFoS}fo M:ioN4QK sb5'i zN&Bx 'q~Ov^ie@U48GpQ$8*2E <)f:!a]PS΢7 H5}4Z&fm<&Ck<\1}D\ '6^9 dy:"&V :U4MQEr_q6;e8a7!8LM]Nů1|_PW\fV|uM> 6O+0 .@qS\ 箙(K|]PD`r<>lo]F/Rg}j@* FbVFWApG Rۡ(f|[ruL ~ρ#Gb 䥻q"û*(C#յIc7cf7r v~GtR,ٗ*G e֤m.; Ɋy`di~gʁO[=vweqEÅt+}n28YBj\GVO,G %s.S4Wo.Dqˮ$m2=;#deQx)[y@A٢>ʰWpjJ̇qK=ZbLv$5UвX׆(6S ߦ{}P">Ymt_(sȞA?&  @@wI+pTjւy]Y]Xb-CGpn 뢶RF+z-ljdimlUMl19ن}Y&Cbowx:C?^媢نt-羸Uf͸;Hcb:*rOt5I_@ϒ ޮ͚wRb7j|ڄ?.Κ7 R,sߤ [hoʅSN ߴq5L1TGZBF=b'Y{L5c ȣnZT.aO#66u { ayuLԤKq _Xd>2GU^[yFouLj=`H;ZUS6+iӰr`gato=k5L` &kZ~A9zLKes?ʞXυm12_'C^}ݓ⅄tLhCdzA婒cXEk=QhG#]LѵM c~/aςk^IGv*4]NȜ5DSu@ꢎDg ™CR4?nY:~ӂI2:R6VB]cЌ="]Ejg7^NӴO4~C(%fOيf(x#훦&p7ƯH(}T0~?.U@=ߣHx 2D :rlHKD&$02uB,+5Mnyn}Rغ9ؤO@ɓ=j5*xx.2%dwfڳtlYyZtsm<#vLN(d!x%)~PAE1DΨ~rga"ٝW:W/Yhbk 9Ob\;3\b\7Օ k?%w`Pm_߯?J1R)#} ƍ|k:( =[Pʳmic9]gѤ+$ɟ= 6:r"\oOOmƗbU=ʇlm]X'[&P/[>"aO27U nNV!Z$;>ܭ[4.wb~B6G@#w*Z"*m= !Zꍲ䖋 ^e ʇl"BX'0Y6ŽI*ʾVw3-l3eɤ/UXF* (2KU.+fl{\y x OPAFhk&\$wq4 NE݂Ys"x3](4\{qzሶ\V9xk({iXm1Z`wL)] GW.1\@7^5YH"kWbE>xB !GwM[U;G^bq!"i)[0ki]5ar пr([sҶV?ME:TY|7b9O4.XG' VV<)q4?!u,'ʉI K =./ԩ#Ʊi4pA ]тkTN{%O*X3 ,XJ$eQi7YMnl\M)掕"#`1Ên K8ҩwutiY{aV+2<^ީ5(O2%}dbv,s=j+e|vqY'ɋ[fT@x0)/!#{񎖇G_ש00JY@xWŰ?,ɠg3dJc>e.9{eQxbFC@]Fay[Ti-Hݘ+S̖Niy>d_5C:&ȇ PvD GCMT=V-8"`u S%!߅ȱm?㻎(/7Fʚ,ڥ 0tBa* >kA6P:E\9p=7E t`!ofHB'*!yKQrqP~^5lDP; %!3d7\Vֱ$Ʈ,^jm+6w)Hx$g #62bZ>g $z^ MRkH(oMobG^d5X@ 5{.f+b8U^JhF!wjI^&N6 "@6(9r#QC?Q#8jVLtv)^t *59Dا/bu[̇5@6.h֥`[pdMN]Wnd- E6~l?9cZ^*j(M$%ה`(A$xw5C_d:(2ѥF9$-gs_;Oۤ},.]A4n F;4tx+T:yDآTKڈM6(NJBE1K;I X^皹I#x#azNtaD0bI)= &ĪF)g+%h^FvؽmῊ'fY<҈y᧮tu@O{SjIэ16>µ[F }g ű)M$kSIۙ#c>z5^dgE2HFڝAoA[~t;Mޢ<ޠOl"Ng1ND=!d>$Vӫv|UCrNQpWȼNI>HO*U\fF)AAKZsI;?QdsBDy8NR ~>Mw{5. ?^L'=gAKAs9e e$6O[=2qcm˓N@ 187ڋQ0¾Ə Yˈ$P34륟@NwFH(Nj05vGqvwrPTUɮɗ;1E\;:am% Hyxlҋ:{|Ҷ4/lB|֪xB ߋ&ġ1EZ>:Xe%:LjyPT݊2T(78N~g-#CY;vvϰQi8KHCDC?$wdGY\puߔE tylUt3 u! 瀺~_S9L;d֑̰K& v,kZA(On!X |P`1X8J?n.l O%#ӷ_ DpzNq{zJPӤkd'R̗ZU͈¡}(Sy(ʨGYPY7o7i;YpqM4i\"[/ D1#6R B zLumqWp 3ۍ,n( s"|t@;G#4s1G{zXIhnOPI Zև (;9ٲl8nX&_\vr%e*hl#+A{9.<$Q'$䐭 xa7߷^ b2j^ CMBixYՄsxq{ 8-f (}GwڲGurǐKpRAQέـj\׳J=GfAkp!.fōwϑ_M>_V 2mE͏>dh!f}#sb)9=Dȟ[JRJ8E& YQkN'tA}OiVb;v_Hn,Pc /Q n0dOjxg~&{ ψYx8y5~@ʌp6K}K=jb-p\=>̮;o9۶^8L.:ɢ+q77XΣu&?Oթ%l0~ O:L8@{$(7K5OG$d[`1ht8V]dI'|*FYqͲgQQpiN ((3y?GѧƪVV7}F,1'MMX=ѯfmqV񁭵cZ>;ZȬoֵBot߱8˅'Z-lпѫ4VH$i薑Ka,POc!telx!1,'Ds̳^9g-=Nh9"9ZP. ]#+VY}fɤҗӐX|.U5QB:`_*eJsE,ŗ"e .+l#i&\anN]z3gnBk:2"+R[H^x'{[)3X & ﲽ"upZjvX.Ӵ>!ӒA6˲$xc^抣F 6KCA˸ fs%%j%isS\ Rݾ#mF3}:h(6@JpY4EA'mg$gԶsA=\w<\񸮷]tҽ-M w;o-T͋p D'4J1wÚ?IP3?@j>탿ZLwN]GX?_t:TsrPAs9:FW(nspOC:m?XRG*¾>^D,88O0 #~_م^m(V俲KQUބ 嗭csT9`t`dɠ>[$K^d (E6X}VUK8:l DK4Te:(KZa = 1 V^#Iz}5u%W1i;P)1-g>슓z^FDm\:ݮ||%] ߽\olVMJBBltZq#17Q3RaN E¼^IR*S_}x-% @vcU3簮S'qt(q%o(ߩ㳳804UiGGwmY7UNeAY޲5i,FnCCpcʶYOoEB<01O@v{ܞp>AZl#Ll p:j kL6.5oLIKcc)Zǚ[//Ckvx܅gH>`dvyFBW]1Zf10G͓y?΂Vy|Kmaine0ZǀwJ2+`;R C23$[]}Fs);MtΥHkJt[h^[,gzeaHԦ۳ߵ[i8\m_T7&d9W5+bS AlB4~VQv!kNnu] />^}RMfd֘n"cL)ھ~*,{9.-Ħ)qVџV7v1nCr<6r̀@P1%,Z\?u8"`N_#7 AW^6j3k ";dlWdb:1uZsSѪSP<#YG^Df}l.yVsP>P{(_ vrhD(^h.店cyB[plQژ+U|݉'.0v@]t][]>T!aqi͊@[C6 ]$BKb3TF$>g'B%$Z߰ ?;LJl(KɃBcEa +//82Dt|yk_U͈0IK$GL6^rU[Zqj猪a_xB Ee4 oY7/ph{Ji' *'z}IYtԀw=}SJE.>ZMB,r_3J5/(оa6#c.#Â;Guʼ8$ve4m1Zz7_P"]u/5(kӵ3CY^=F]17ee58]DʠC.į^4"OVI倐 VmkAZ+#5#ųg$)\h `^շ$ˈTb_,=ΏEǼ^PeN v"LkձLtr/$wXRvA5 Y. ~ȃ͂-bV˂Vl_:T~[ lLzi_Nd, 3 $ɥºE~HӮf1轇ϹҀ9ɧe)d;.2!NaJ圓xm@AJHk$G qknyX>r&xлׯ<)uWX -j}`Atjo3ߙ6CEMe[IEʲ ]HRRޘ9z cA^͏ ~c /Kĉn*zt4>6v#V=>S[MZ,0`4 -_ 9Z& 826JT݃UEF :}c*,"S&@]ދ=\M*]Ёꋕq9 O'8xKȚ&2%qżCX從vQMnhu]H]$ .RK `B ϙVUw<2z y5X_4 GDh5!>wU(H dqɌ$Ar r4(mJRdn:\GV0B)u3Np"Bק-uR۶+/W(fܳ-ÐL 9.j`VTzp)Uf 2vXXQio4'Oqv^×Bb3ϛDVzZ&O?uU<:wQы% xdSG$ =1ث<߉x.1T]Pid}qL{DrҬi)hhJ@.>PAg{ Q[v# ])tbmj)E0XeJrҔ~Mx3vAV3Y<Ш7 HA )LQ? +<$gĐ^&_ Ì_y^JUJA;2xJIWPu ֛HKɪ0S.mɒR|!,)vV2lqA"g2f]Omy sk롙 >)M)Qp/Q ' BB5`n3Pwܤg9Szg\I䉣cؿn`]°n(ͫ߻aN^+a3|>9P2M}N,jV-.ŢHZ=F^mq13 үrRIT?)j_\g[Tā(IO?i4āhs"IjvQ\TrEd}Y[ 햷YMvK'shyK`N _H[<- h  3S ±Y4g,p ي *,vt3 n/TWu wcJU/6tljtlHlN'>a$oXl`!S_86 }/%暑#b#:4u+YGr,r<$p~5=jt| ^ S_ظZM{v8/,_ ylޓaW^^ɍޒ-퍐~j6[$rk?!]7Λ4me#TFn<9kK'DTzaZ >d]W.?iEER !GX0g~keGf2IMdQܔ/]_!UߕZqbK\ila|fWu~d+oTZ9}Npg; ~P*) '#ߖmZ(&^* 쀯m?Pht)y SE&eVo@xh, u;axt`.{L2;RقzjZ{f6ou)8yӰ;>=jK9S1ӄlz0~nӟ-[$wR&2hI \fk=ЯR:+ccL~#R(fѧv,J{-G"Հh;R@-0elUi賜\S:2kH*:󤙦qmͭڋ`ha?`$v q_>4 T*Q ^Ӏ?c0[NfD{ sʈc)o{ jb84 ">6Nw*)O3vM͡[bvM~Sw2:QoTZ ݻ&lSE8ϿJņ+RT`Ͽ6 ey%dlp)s2"@ݲt 3Խ~N܁T1Jc\z']"jQ!; c ̏ 9aKn 4䉀4kʹSBt)m/c8ѐs]gf{1֤3yv͗4&ُAk|q7} Ulޒgr5ǙYgt7N(P@l5~\-qLը8oJfK=M0Jտ::M^iۦ!y~P}A̚c?-s"*L&m$EC%}J~Jw{0.Tr*VXu* $z19$WPY!znT97E7(Ꜫ4Ph,Xa0_cv[C5V^&:U*SCP Q/C @m_μ8F j.-x<=ĥ>`Kfm z,(D$/wMBT aێLd|<š ȑMä];4ɲЩW)MA uqz( :9aqD?k2N-"Fݽ+{yTU,WCرCHOvoK'CN^ߟ3& 'n e'i|>/QNk%e95N_4k?HBmDBC|I&U}r 3, / Qly2c%^Heue˄Z[s>^ r.!8I?+[HSĤDKQTiј:qԡ̓amo#t3XӁ^F &B`= =,TQ^?EH{p=_k? ˽)% $@Ш!"f(zz΅{y~' wQ8Xl,t_v0"Q22;!oߒeAU.`ҪQT}WUmUFi L@_x`ii&)uU9LԐםO&dg"0 ?/s/ݎ? J/s(=/7gW8wѲ8 C#"&s}bC_L#KtF%Xiq<R[ͭvnZvU&B8y!zJpT +^:tz'|E {>=n̬iKtYCжKZ'Uw6V-Y'']|:95.3GRlMOVA* >J㛥ϸ7t[`q>Sq&}t=6\hq Eٺf4_s=O bAYlVX5$ LȨ:탼+ikuTNDb9/ =b~EJ ̒b0 *1v!o6G,fxf10Z%Y),7$a4!﫯fXأSfО1TcٞL/4ma˜Pb<]te#."+h,8eyk{‰0F&$J¹dJ#;ň3F^n{i'O6!\} 7TypoUZ,c1>߷y7X=њPwwzCp1wHK5R [*+B4;d*C9 q +5V!9c&9"-L~es'ͶES!__@0sH!(Pvd `kg*xeM)-C$& /t\eΤ.\2 C͊t(OХm}54d1ya_KrcxjQ}mٵ &AǾ-&~tEopFey|a|xY`8%o}vi6i2ޗ{8[^{; Fu *E@.#e:J i6?! w(r[}t8H;A@]2Pcu"!'y"!OJ;L%欼PR⠫F lSk D'\W`ّT4mG)W;ے~Vf~^Sz5A޽^w9CKe7GsA:iyW 4DHQPJŧ|TzQhV*h#W70aPDf-en9 TӐ/2Hӈ N4=#eJiT'gI8Fgv`]{/xA0^e9qm:u<&<%sD42큜.3)~yyOIP־ũLw~dj^L5Hv"rp7yi3o·=3\,r3U"Ty[)j6 8>NeԮ]5Ϡu:2<^r[[P#ڱ7w"#V $5N^4jTpWmtlW;r<(#V ]Nv v5Zٴg-Ye(pr5NadmB("gw w=4yT kg%eEY sȖĖ'xCa0A2i&KLۂX7 O[Y&eXb}}-d}TL\^(buVNOזQiw<]84pe~1zHl8z2%촮]ի{(QՅ92:cBBO8Ļ 8nͺ8նWa4QfpcZƋm-F- *gAjD8ÿҾM~#>#9 >=_5\F^E:易&>ԙNV4.#i/[/DfDž2itT&R&y }?˩8X q7/W$q}[F*P_P r=qz ֍c4o`-TNggOmԏVh3.O[lns>l%UQ3r F,5&FcB5JЦ;$8T@;ur *N 7oCH:{r=qdU֓UA8"bL0ݙ 0>*1Џ7*[iKTk'KʎNΐYG\tX:h;왎.5[cv%MlG!v4-jxhAv)O JSM!DHTvmP$X7?anq2;%HbXݭ=>v]4PK^p-0A%Υ۪TL-3i4J=d9),z/ⶢ u|׍Fa(pS+SpUl+D:fL1|Ԟ#'WANΑݨ6G!, #='b~^r3DM]zd铂!*HJ-)[}h͐ٔ AW~p?bpRWkjuh5VڑI5?/Ћy'a 9[^G"eQ`|z9O]z?У'\HO/CzG CKXu[= S!V$*>v9WTfN cAq6`RY u+Ӓ;t8Wowssu00deSK\q:Ъ8 f]֑F^L\lZNamt2,D7б!*szA4j,vOf> sKX(F'n>y1+oݫ=F9r8@IMwF^%qs<+ZاPG~X#lo]ðG߬BpZwpڴjqo})&= 8UͿ!dc>j$C@SD$ރeewo\9I"4\o pqlѶiVw^X\H,3#h_WW웋)"LGAEZ؂3$'[I 7W`ޜ^+eՊ}zM=͝4Ж7a zZWU.Dմ z)DvHPn Rx+-?`UzCtjA3Pheg%omi@S.VkkPK煥at-M8=<GjZtD U3L `* dB?$u\7Iq^Iuԟ]L8,Sb'SM R:'j ttOSlgr~ >DyM!}ޭ.S/maRP;shm“cfAI~j+6=QuBBOrs&Q_;< :A\P>Ā[s'sd."|oڹFџml(#$ږ/GG[EC+o/GUJ..Y(m*¦\ nTD@'̓l)IVuIG0<Ǧ#F\4b:GPW_.*Jc67]ؼK)[29B#riZ'ߛ|L_^/RB%q둷u~PDq̈́A0dbPډIZQBk-r$ޭiե) qS?!kӔ{!Ts&%U]7?"fó5˩c`Yw3_FȟJU3H6-Y6J3i$5tUe[MXP>} @{D'd~O }@Rayw]NKY鋧Ƹ6dvfӷ9aG&Db ['@?$Y< +QqilGr6m5HVd #=x3'82.7gD@ڮb0@BѩcOשf6G=|0tl*0WTKk)~E3O4F?!I"\X<Z=8 ieݲ`~6iп'+|? i(ݨ v(7ϗm۹D>85|4?LH0Q14SibHdz;<71pwܲ'[uȗ :5w G`Ʒ'@Ǹa_ɼuE΃Y )ǯC?^Gf,rR9n{98O7xskVg`u?6IER, R"`wWi&N4:x仉l~b:mG &ÁɏQWu6 Re qX!@KUrR]<2< Щw :c;s=[22d TY_WJx_:1"]k7ޯB^q$ER[YHT*}k:~̏&Rs7-w&b ք2f:&V)OvC¾6Q7\GTT#_~r{MeV EԘݘ^?r!u޳jD#7J۵(~;8@)k["6X詽COnY|y DWX(p[K2ʯUٷNG^RCpk]ޚllYqJ/"j Ր}NN}7=>Dfld̄'|WB&*zo7W+~1q.Dd(@ 7*^I89&a(:!c\{}f;d ´~isj~ؤ^粡y cnaglK)\qRu֫NPvvr.!/ݙ\P;ELlΐDQy79jEdP*1\ TםF!b>5Tqgrpt؀֧R 9qu !D]wͶsgcLa"2|bW@ NW7, AĄ=\b1_Nz$€M( c}A2Nu\0 :Sҡk&l&$^C3,.L$eTḇ3]Ҏ4U)/'LAظ2@[VJimA]}%_?Kf2l^d2xX{m; r+[p|J@3qNҖt; Ha$`w˜KeFNan jьQ6)E?*L(ZyV}Kv( P9'c2>*xUE}9Gt̨|#hBOdc,|jFmDYvb%ji-U\g +Eu2K'F(`^9F$OՆ"K^Zc73 ~qc8#KKqb@b2ӺŽg270x?)lHEby%0Qf8BraƿU-ٛˊ:"Y$?zv2.Z>_Ԑu'C2WF=r3L]'qƄRttpR\֞<ٵɥ÷`|A0 4HfhRO0KoUopԥTMF1kF=Vt'>hkVl؋qat?wA\hD~ut~B3@p]0 y0+[p$;i NW? *ó8n-[R%Qn)@i;2;*p=׽7So3s+E 3mD:b @C9߼0^2UyBR1;&rҶҖ͞9eED?;r3ui^ ! v9uyi-&ϭvK}o9f& ɗU|G0%7l%Rħ=I ZW2#U}|LdwԠ,Y [GXx"~iXH)DHdx<d&PLأu> D ~ On+w3[/)$5;ffk!Ci(<y;{})x7?}r)>o`pn:pxj[|Uxлd]nG젧 j52Uo5=pk6-CY#6eUɊkw1nIPU Ώ7K*4Ŕ_XYLo +y{u;HVis{ퟖ1DȄC?TD4_6ƌL㔴p-."Q6u$H}.W_pemC3qQ|9o㸌7TSB@]4mL sBXSV=d ws< = ,zW.L:tISRzBꘞž;)jw~(>!{+ӣ 3g0Zn&7uh]$MIpxKZ V1c}TrU>y?DBD 69YD@ <Q_˴&9hM N zra5 (Odۍ ++x}.l4{E 7JD*vu v.|~${ iGɴC~1tDr0נv1&谙X<(.KĚ(ovDc@*O+n*ͼ)jP E.8ּE'ē/zo5DFe\IU<< 0GrqT0ƧFc:?oPNyABgCk 爯oH*ͺXܖ&꾯PLhr $6/727$,yjmƑಉ) >Ty; ]Ҁ̧QS,>®^upB WTbdSƻF6ur{f3OA~u_ ʳiE"vcwu4kg{ILcz} CáE>4wuO ѯ}+F230kΑD KWxC;G59F/"x[qjG{y.w֏|8d V>v<u1A4g%{ޫ%RHEө$(>8uCeDJ_m-k+{Q-GzDyVr|veD=BLQiiIUCAC?=XqٹYwdH+L/5;&+p!z\%ba_JPcgeB \OL;4VliQÉ꽜uyQϩ=<_D)Bn^(iR{P̚XLVB9ג0F\hh>t Ѭy|8QyΧӤ9u#%cwd\ qj?=c$l= US e\(hsfHdsȱFa7PRkY.R#jE‚ QJhm ΗCӸ^ҧvu(| $ʭv!U.15CgEIx`=W/ip>* ?pX L"weEOpvˆ@),t^mSex92d(`Eix?L J-]T EYTj9֟@~q"rja=xۀY/8wr=_9\+a+NUX;kƽoϊ=QtbL+xWm&=4 dYjόh!%V0ޡl=+O8]lc1sed.drVwv?&u]~\!{;s2q>JKXyl=beS c0qw%`U2.@ Z2p9e:u:{X ~E-Om¾oj+= BYa6Ώo]̤ڗ+Zϧ+*"'0ERǺ -=q+0^]bx2)r]#eַҢV~BO#FKojze sɟS썥(sj 6'>t^膽-Qٍsw^`2xt7ʾTH|d!q !#1?]x Y`MʥXS VM}]9Erf4ˆ \Q]-#(AMg>0wduiwK؀]SMDj":I8SpAϖ+[m!츟o1z )A.{Vd2uh&2\PQщ QXzx,a;J%1O0er/P쨂φ@A$ FScɑIc%U=j ֝Jc7= iw6&C{LS Wp51AXVA)^x7pCJMQv&8"܄'cNRN<'Q'[ X'el8l]g7sGFGT},yoeF c=}3ׇ,+E$q&aR:zkh8\5 øhhF0bUJI ݏQ} r4@OR˖;Jl+4?M0xRA6=`"өn;xV#3khZ~:;(%k 5KPA1:g-zxjk: ~i2PMe FqL{}5Kgp-c5 E^6>h!?/_a^7v`YЋgG,"KEgOm0ܲR2 Q5ې}"$W G -p=GͿm!zp Z^ ^{GhJӯ(3Tl3`>ȶo1HEELy|vW,s",N4:h#ī|Tq:/)uțO$Z/$sº\]{חnR!ҁ/we O.{`s6H]ïO[kK; ۮbY3X_#҉nE5끾TåaÃ{A9'|{&4u^M?wxCA*;*64[RDwC6X] 3N`d)#V9"~; hSjn LtD1>I@'/k2+mWi4a7kGb 7W'n4qy5넉}(w0}&ʑH+,m6p7@C=&6i_3abFe"J;N)Ĝb\J&͵IinzNj#-~Qx Md;y^B G͸qZJ-a#d31J9b%e8 >~*F(iLp/ ʨxh06>e /]@{%`ʘ\պc~V>+|,cXd7YkKB?3){~l9WvvcYD,/ ,şXrV!K1Qy8`WHd.s[ejxʵ+jTl ^gdwP敢/°Ya{& ̢CD %K*:].5"ґsGw 9_ͳ}x4|h T-ɎttH:^sRbyO9htsl: :`Vr1@| 1%oqO"2Y$̄zA,o7 dC^']3Z~NCs]͸Rx֫ӨC35;A=]}ؤ/M( (GC$S>ЅA+:*Vɗڜ0TM4ƺ9p>ГQ4C'AzhG!e{:j#Gy~#7(.6Hhni^uÆCSm:*ASraln%0Vک1ՠAjژ@:e$;OykMP&뮝'SP{_)Db!urƠI%0BqK %*YPHp| V_jap O59WcU7r2*<&`rSe=2f%> ϩ/~\ Q-"$+K+["3xt0k0b 3ߙLgܾelVS{sɌZu/Cp'r`S$R\X; 9K+_nl;r<[8Bcy馰@S.L0@f^: ǻMݩG5`~# ٘_Bg6½}iJ !||vČu/:& (M=R/=vlak(E֦݊C yfb;>DGgMn)~A_-7-ĿoW i^Z򫾍dDzZ&uֳ}ɴrʡ˾Q`]|qpQLW8kj i!HL6`twd 4~<66yR̩o v /DaBOFIB*VHaKT0j_FR0t@J z9 Kzd߈EIuU Y~@%3 h1!u/۟qR㒵5iR䍉JfLN[ÍM-ă} KB|o6%#g<è >5ǩd6Ղsh!<~)7P{bB9rnHn|ҧ~v&g~`=lxfz53b6Ԍ? 2iԌ?BRhei6ruмT*k9ÅoX!CI-a`& ,p[Ô@ |2w9И:\\2I2S=P b7x9͆pG 1&U h`#9.bďmA/öZ#Y h4DqKWbx) DGA^oH n 9>)f!j7e fJqUg&l;'^hUq|錬#_cCZY1֌1XӴk?վ/ף "|q (K2_9APdz;_bjk=|e:<̻i)$I<whvۇ =l44Ÿ"Me0[^Y&f_ɗpAsڲd)(Ҳ!>qE M)C/M` n,ʏ|e<@?2ecmo!LZJn'ϩi"iRڝ,^_} M={̜nkLHm5L]h)Mw-PC"d i{} BZ4_W. bP޵R޲rGkw wo6{`ߺ#@UџO9oMMV8Ppʀ)dM0,mbfU脒H61!QxB{ٷbeHڋidAف<2/,)'u?)P=0cf}RNfRٚM8?}ƨd ,| (T̿QH1PƇbL%U}ń'1ڞP! #9,*('j%>X՗91zy-O}=GJ1M ?O6 q?ԫadyܡ/7v ~;:`~Y+joߦqb3ФaŠeOhxh+ o򲟿;7tZɥ> ɴpM5\ R n+ܱ޲wvK%~a|cܘL zχW s'' ;Će'/CADk'dq287Tkg9ha{H6T p@r"*^孥$ ]Y|c@f1>ixY^bx9@2hޢPqxb5'*䓐!@ArxҭJSWIV+7C0QWk3$NJe6 Pk!=`SCvn?k{1ً~wWmS&z)~/&X(hYy'sUhkO_\2& Û8Ę~AJZ$(ξ%! (ghSVڅ_j_ sfaGWıpqN/-,;))m߲ _RgcF~rP,s$"'uc)DI0"7sR@qF WKCD qNV4mC0ltHQdA)Wx@90Hmʥ5g9z@RƯ/QE"ZO{z&;|Er'M@Q4H<ƃܸdz,v+% MB 0`؅#^6JQwg#k ipD؊M߅M.,2s Ls! nL? ۩0vLM-NOwj'$[mPM&JY:B(/0$!bŪO%1Ű}0d,Dgt);'zvѩ ?2ҼQ92zn7_wl1d&e("E0u4QC2`U XRwM"Ba47 9r20{Q5:so࠺/+Ίy@_.w,9[oEޒo1!\=fQd)8 ob~%#'쿑A}m[MTXJ|*[9#>d"ﲒechY_uFC.(|6W(֌}[rA?$fK*IH%Kչ4ٯ2>eJ[p~QŢIъYUkoLbT6(-;ؠd]JWdOX{!opH[lޮňb mѷD(9*:w|e/aߙO~ ؎jҋ/։}^[tޏ#ˍ9?X1dյiu3z }l[BrxkVXNjMY8?_%6q5(WKiOȿ(^OS+Rgp .|#@'usđ7zz^Zg/=YksN炭J&˃ymҿD~b#=(in;_ >f'}~_ƴRmt܋5"7o։'bJ^eT9Ď ތ,MH`$Kc k~ЫmD+%K?=W v8/®cTÍI60Q³6~*^L\qwH,߹q&NֵȡRx?ЩSjVe/ DDԕ'sVq$z9!_⺇+V2W]9p̈n)1D~D\"^#7zK;ִs5#Ǔѭi84gQ¬'l~@ >3ȭx;J%Cx% ^S t5+N8e~q9*i<.D3g|A= /e˗yywo&#a:A0&r(T^\qdf G&T㔝'xqJq̋|qF!^'?񺊘Y1,CVyeŶxZΓ(ZX<w/3o n؂ u}μ W\ZMYPUmk8(u( zŶ8RBX# HK!y]1U_vMsHT1Kj'_Aa:jo$U8am%a!҄o'9ۘe*dXXG'_{L=O+kq0EWlw'- )ܩ9 yyAO&B}aƎY嚊r4?h㻥ɹ3TX0Ǫa*#5sx!tmd4:$]I3)S;5Q)RI#3>_FJAKB"= ٣,}LwARS k9:oȖV@xoIM~U7vJYQڀ8,P"^9{@6_R/ | 5vʱ8?aƫ%;#vƑ$į{_0$V;b-R *bj`Y»eT*2bk/Ā#B 1oşq0aI͊7Z7_%/nj#rDW+%@}oX%_7i~3{l: [/ND)LX *[+X9)P7ܬ1 .z-Dϡ9< 3 _{N) 8?} %[ W^0VN̓^Ԣ9O.6+Vk*0M1Mvgp똤޸-K2hc .츆b>џ:r 2Iws^ u5 8c;6i]W hcʔg vN&;5ή]ҝ"ճcUlV}~/n7P0f{ݷ Xfi8b d?%l8Y/;;6V:xnCw7PP "7ZҰ HԟmG&y¼’SC댹Ïa2}0hF;ai!ҵ8zx˭4)tem^ Q˷c>?70l.Ǧ>7J,۫M.v }kN:rV/2_8V56ORb(LPuS̘pf 9IcXފpݢ#]Ç4xV ؊`/1Ikq86]y~qՂJUq^tP#2 T=JX#s@fh827C3K+,|~ 7ظ8IͰ<[@ ǁ [1l&}k~dj()2OtQG?RIaa>8uMη'xp6x(ufߵDus͚V`*r_BIiG]T%Tܯ)fj"JL>~owR>e/foZf5Z_SzۋgFVLOܵ ke"8gí–͇~{)hu M>= M x'h4\]YyIO,ۥYH{n.Nr>=Y욝(&n/G%Kl%<+\jja23wvy}dgM_ q*MvD UX@7-׉~&0 B ~`'מUMq>\n VH6k:Bʸ0쑀{&ӎpBT7AoWQ5+7ׂZ~‡݈nsbrHX;$k$B^"m KK8+L* sv~r7 z`=MJT`2%=y' ( 35AyLM9BHfS\pĞ) ./E)dUv4ycw):p2& SEz?([ 6}#GÉ}̊+VwSP:  247QavPr<_MtHń]i d#36=LsIgU:`]nKg?d/=2?\lGeL!>Xs{.hᜤ;2 b0P Bm'K` ]bk2lmEOMkx6 mRmʉCǩiϱX=W0BSxvTܖ֡-n5ǒE)(0䯛+&!BC64ET)kdx`/'$Թ tLR3#PjmB4<9̲ <@An0 )5| Փ[f<ԉ;7(f?c@zSzNד)OMe=tgy"8].Ir/K K1Id<}t@ٜHdo 01 O?| -;0Xţd_R$[w{bK5Gk~@6GpW*_nݒ`#VC BWFƪs*g,aC=Z L32F<Vob4!gF&HƿV_swZLNg_g|_"aP '~1}JtUImB\ !=Z)^H_cZ8Yk$-/ϤT CaJjSt/rj>2ۿZ asrY+fN2VoI-J%K Y-,.C_>6UNknσͽPa4yIoCp˹a&gA84| Z,Ԣa썓, foI( CgIiJ {>pvNѸS0>Xw@'!a>s0/ߪk/$'WOM2Ktjb#]-* a<57^ؐ]ނK ]x h36bIb&'D# 7i5xiO{oI9@Wplcۋ!lH+Mz( `TY_.D_6*2gC]5: ` R8~eWI$|j:mM0mTq-5n18EKeҰͅυ窊=!R샺LfK(di3w%LċKՂG ;t@Bm%fP8=M?߸@TF*EYL^CW3?^ϯiՠP胰bAQaAm Wwo={1\e>6#z279^QZJ1Yzp%V0u 1}]b 4*f4)T^v(M%)q5.: <&Y܄3*d!Q@,.X1!-?&(f{JTPy]}a#j k~C0(fs㩰ĚMUW-gdG+^q!Lp"Jd(J f|Z\,i,y_BW7karX5NHNQNShX9ձۦ` ֡^f޺~{jMP.xT]Gy+0W遁ޘKd&, n]yµDXCut6.187֬1)fȃۈS%PV rld#_ }d7_Z#*+D)A! yE8d}Y3ၧ2XJݻ6CC%^X8BϜ%ϛb hK7ZrV -F'PY+灨R.Vm๳=+:@ `0#R1CgL@fas2*u \_:jlh%rkGh(2 T2jEE,O,,$*j rJ{W;kxEEؔed8A~}/yǷ-jakfPCY$qK.\Gp L蒾OTԋ`|Ng1{ uW?nhMXG&OsF#ݢq!c'2FMH~߈.t]cFs?|@J%~~+;>% 8dA2iGjBo3~ >-41< 򒉖l\RZ=PpC]9nJz2Юӌ'$5{7IxַCyw Zr[:\PlG%O' :{]A'LsUwDIRe\ S6*etNmqg1_ԀǤA%{x\_^ǵ:3/ \,Wl"Xo P @ ~Kc咨:+o]"<N%;f2͌@N l?7r%~zbch ]= aYlXXS?Cm-E51ie.1\tD@.Ӱ>OQ!Vad~|;އ=`ijC?wgسeFxNvl^m UgCgzRM Wj Eٙ dX`?XqU .} {5,YW 2h'"Jq0 (b-]%)a,~1`Ex4m`?݌W^l*fU6@v`WPqG@"Fy,+^~J.qrˡ/ N4N14t4P>[͖b!>k@NUPϋ{^hWRSb?mjd DpO0!Y %4X<v_kE>lHEoZLP,N>}QRm _c8h]~;%Nl}l-avo1~P?$hy#H oC$t'С'iv=>PCTkaFzV/{psI1m;r:&|& ga8S {eώA_O(N3TV *; S! [#~fH"t_[P(n|\F*HחwD[qsd?m.+ǒ}g 軓϶SVͽ S{>&fժGc)tJ\!g]ʴI?O8.uwuUTǤcLKdU+Yæ 0MNhȉ%/v 4v6:]_G l]]{ؤ +ӡMg/ȃv+يEd@7T0IY;ʖWy.7 GVY9`> ;&,)UʛSrbA+-~A\>^YR(3LJ'$6臾ٹ;\>BW0sik&-Zw+ #>zΠ-r+`"1~!kECM}1YiEr{{b=WrH*%,Gel\B XP⎆ #G4JӉB:KC`V%V52vއ`ҒcCw+WLx9+UqN]'Dgk,x@HNg) X}H\.pOV`/\sN&\BpZ\"&fuB<'^*4s9^0Z ͛cҀ群U\TfCb",3(̹tuHmv|汯hynPkǨ#"m"i(Q Spfn2Zy~0Z/jUS= q+mUV&י>yt4Q7v]*p%e0e[0IJ->;IUFNEdC=\w!D4ȰNk11ts{zVXKh0ڐRGyXؤ FZV[wda_>sbؐ `]{(G}ٍm5i: 9q^zoHWÇupyrR[<CoOSЮfHmo׏c:"W=J.un[Hq/J>o:a_4H#/HEC=w!<2 )T.b <\#{aB*?Ǡ4hU##j5xz:pAl]{mX9)q}t؎JFe}PjW?iLZ+q%|0*MW%'ăVe@K][.s׸x!j#I7Bٟr=!`7(lt4,1e2M;J%h+I^_k_4J\1m̑w{ կ"qF u@b&BY F\L4%6% er5j\nYGͮq> S퓢7!b{L}tru2!Tt\ȌQ;@<`Qlѭ LcYa|{yן6.^=n~ 7e+Iv`PUͩA{kbbJG *[E!>ScXkl%s{-^?2nVXq>ljv~ǸJs^y,+skDᨒ0__j'a>RA|NN|;ƦS^~`i Uăx_+Vf)&q9V{B67:ʼny~u_R 6_c}ߤo[DH3Ɓ:}| 5禜Đ;`CSo8GYVp(hI}kEJ'# r<9@杶EV\\̸R`Ix8@̯٢Y~K#0dYR >˗ㆷweA`J2d.N }md]_ M:`!4ND-c`_2;@׭RBh3ed qIck$`SpL_䋚QO`NR2ʀȃ,[%WjGH,R< 0 qu *?墟.VBm6q> h֦fLYᇟ'Ϛfzf @(Hm@U% 6;z\ ǜ&&*AS L q酘ȣg8ŷN!EC W^@7, 4Ug;*{a/@|ԦCU [Խjj[KpGTJMe%2}k:qYϔS~R擵[h'cX\|O< t7wٮ:߆֕/N{x^/"o>0k:w%JǤ JLq #JQ 17,3rCd;>*2Iɂ|7?98_bn FzQX|΢"vwa<͌0&yhx惼Rk x7m_~uv uzw -l$`N  G8Soާ@ 9p>jZI[Y\>GUyV*<LΘh.oՉ=c|u>g&`݃g^Пl|N(:Z.?;ʒwMH<va2X5$f gl`F⡖ԩRv ,X.FuRG~(Gة9aΌ9@͸K$[U.cRC7*RhQ)Ԡg8Ŀq;ldn8ܽ3P4ewA(`Õ̱S{Ƣ~㺻iHTMK|Y=cx:8NY ru/ЩĖup1Ey V\bPy>6*s`.XcKTQ HAl\l'e&3Ao0f=Rʊ/*_&W OCMUY$ X.35wrϝ'ݠ@8Z`g~^+^="@.;vJ9<<=m#G Ǯ%e!2٠t0y!,QV"&[u06y|k:wْ͉l9Z]saɸe PKdً@ Am.&`\ K4I (q}Ogj<8?] Ddk,"x=\Vzk?nYvm̆$2{lkh-b{BNJ5@&V7 63)M̋brx(eޅMjW@<X?Fnl_vL^Cď_pȻ0&Z1By 3kJ C<`S6~LF#iWixƺf p 1nn\|MEoZAJOF2ފ?Y#b{R} 9Q8dE"'Xb{ !SB45v:· "غ5%ݫv4}tGo}W8sҕ{]Ɋ@ ~lՃ !F02uGmPn.@<Npm1peYl#.H<,H3P]wGnL]< p LͲXPy_4$߄a| pC;9mSF#ppPyaqX6apk6(*2%Rr- 舡uA;j* @/x\}B刢ehAC5Hu7ô &E/԰Av[s`d(HXҪ#5LQhP DƱkx?1=:c4.Z? kOq.7k^rV6>]@'1pöL5I| r_bx\5mz#kS?y L{Rs: 5{'V !ދ'h90K2-~>#=X&˻]? ~#sNuUMpț8tނH`AT|hN3$i*.u*3ykT;K/.'GB5hn@y5+=>VF-GDC#.Y Q-@ {p~s,'\or h".~bPA9إ{N4(L[k tA!!0BStls{x#<Ȁfd0*T}U.$`579P &q֨ /*ci5b74RH`EA&Ko*Y'&^#|Yzߨ xg-v&hj|X#c)`m`>0 YZspatstat/data/simdat.rda0000644000176000001440000000253012333041776015035 0ustar ripleyusersu=lE׷wg{s>kco"D3R(h*ESrNǝONC RP @HQ(BaHQ#6vNɉdf{v.8e,{aߞǦ<κe,e^Zu/wW$oʯ׭G9ɠ>8ZP{Ag;Iťqopu$a29zouG.;` q1J)-3q:O׮&[o7/>TO;g_ O>/tNt湧7Zj7|.goTsF[5~u"B':ݩhH7Xwt[2䭎Cp_.vt?5n߈/Ưρl⩻"~}u3ZMa\3(;^5X͂w綍3jK^ U֩.N[SN'<|nO~~}uJş6}\o ן'S :" ѓmg煏"q=1^aw[9u>}Ry%ݪ]9ğO̟9H ɉ~7=g 婃;<=Y}xLlpݦy_? j{qE~2WDu:ѯ} uNȹB^<}JD_O{(orN271sy[3ԣ)| /AR.'xL[OOH!yűw_.CkCyR;E7_"5ԇ~g~ySq~/S1ܗ:I:WޗнG]ڬW当"G5ه_xOxۂmuO\}P/r} Ïd7{o q-ew_.y';rr^1 2Xt>r)3VJ@ʩ `L &&M` *i4DIGcALzmL#mM=I䞚L d j ѓTOj5=Oj4i7oTɣ=Ghz 4A"HHɁI=M<2! ѐb4zG4AM C24! 224$Jy4OU?@z(􆙨zjxj=Lij@F0@0@i= M0@R1)$(fʟ禈Jh )Pکi?ThSG4h  HiR-_TSP3 Pm5 ۏm$$r@6U- S9Fn?TO%CUTV]<=LA+//R<$d8g Sh"]YdT8aIG],FR_¸mcRs$j(խRRStҬZ*T1a{)jZjǰhk{NqBpi8OWz˼'ϲ #Y1&k9t72HLjJeUADSztF[P6㈽L^L,L{)b<*aY2\ؽtѥ6rQͅ>xa,@9 $M G)p=Q5+\.P z]r"VTB!"'[9{i-oTxH,6 s ;: Hh!cE$̯U@9T{}RqkımF= um"\iF6(l 2NpQlz_ *o"r͸QԽB=s)5Ef(I. !@ 5A5ل5D,YeUgPc3̗ Pz#^痯2 OY  ie\ S#zli(um(J2{Dwo\+ƂqLC 8A)}e}t) OoԿ&=3ew&:u ږ>}6xw9YZ,̉,h7^z"~ĭIr ՚7K4-AS Ta> Ą/ lSzx 5꾷2r[ +TX:+c67<;mb#ٯ0̭G Q18}B ,E4U/gLrM[I*R<ٽDqH5;!/D0S8 b/r1<9ZF8 𭎳<ͺHn`mח2\Z`/Г^{1|O:}n"mu[nVZ5f\Hp<.~d 8Qր1R\H#.^Um[y\lzuliie g)m0Ӑ9J&xAc_2l_<[ 9&a-uKcm:qu ѻRt92 Tfr+Oe"l_qTv5!v4f$Zqk&Q [C1j}d? 'n]n6wY1:R[a{g/΢2 L-0HTaWCQeq= #r+Y_64nܵU6Zc\K^ZPΪ] l93f$z0S}"1k04T DGY)(K y8# NULEV=+Iɺ8+u[3 H4 jl&@>* ,<DtEʮ#ʙa tFv) 1MgJ y|7=:/D /K38x"V,D+~frQڕSӡvey0X}gY1Wds뚮Fsn`  kCt pm.!(xۼ.gMmP%7)$EItXZ"5+s,}o\ņwUMmS1Tθ޸;K:>uY1+1C(،BrbE &XVN|642Q.4g1EKX"<|S`sPᰝĜC& jE]U}:9';n1(׋l1?R% 2U@|*&sx0]ӶSt+)k+$dly&Ol0v<<@^׉vwvJsPS :<%%k\-dL!ѩ,Ԅlc0cZwk9*IRn=W%~W33SG<5ԇ m\I>d+ߪ#u%"m,܆ChgAt( cw>ɛ&0Hf~ î`VaԜ!`Vp"Ȭ/0aTD|W:ЕWPT6xLq74Z_Z:1mňĂA ֨NLr$H2;9(Ф҄8)(tH\rJ],J,04;X4@w`$uI( ّ$@ .=FS1$'3&f06 ͐ѽa4Jġ=ZzYԃF VUii'$o܏W hkl $ia-;dr>0*vS0I8G0e%^0I,/NSs7m c;/9mAp H&DN>g!&6{:&5I6HoX@W#tKWT6KIa5Axq!ˆlxNK Ai2 (`So16MlQm9ڹ_|VR%}_6Z`CO+a9I!$~ $G7)mә3"#\4I$`46V}ʞ.a}5*+\V+evDɡ ϸ5u_Xa?'kI&;I$BiL' |}ꛏ1u&՟/73hX;]]y ʖhdQ%XqaA$zg#Nd9.eX|(JlhgM6UJR0Jr|O&U!y-aylQVGISgAG½}ϖBvg@mK9v&.^:3dE8rŲ=s hD>lb4BURi4ǐ$ 8 rg(YyH"Q)J 6ikYy7&ؙ(٬z$3Lo$T5&޽m ,pD[cף&(8`Iz >#lᷝ4bR@F͂{ŏT , q/MШMc!7mA`'`F0>i+4RIV̦aP(uB=!5ڀ\3htMϵP'酇S:h HPbM%-➔}>+(JCg$*l칁\j OJ̳fBV $X1,Ar|>C U0fRD0SzgšdaPʂ`b 3kp/E E >Qogp2ٞ$#`#7I7L ZŘ5 EHƁ Uc+Bd^砺&EFːFAG+U@4`TjA*8&Sf%c*$ ł=}#ǻݳ3("$DO1]z3wv@&.5T TDP;2G DO;Řa`fs$$ۅVΙҤˆPM"7%[pS RLy ̺DHsj11oQKDV,ˠd Eb ѹY (Q4UrFcf9#qx*AQ|!zW* ̔JϞE_d {%tw@S K)„spatstat/data/redwood.rda0000644000176000001440000000114112333041775015213 0ustar ripleyusersuT?LPw\10qx214\!qdf&\$hD.W^r{ou!DUXiev5{T-2<N6.eb hg'̆bw2uḯ G\O )]JA|*Z7-(%^0oǎj&}'Iq[Wa`si7rLHݓ);^;^1>&h~.?ݽ*7zxyWWrW5׻8<ۓDf ?׏y"n#YErw)}x9f\ց˸8yȂr2'u@v|-<繝{yyB0_h6j?a5n*W:UGS&Z훿JmTj˜ [rX}(Dl1M3 g?VP; 7~`9o^S^W c[$c`dd`j&UȩK&w OUYayb>a ю v_zS`ܪ7eؑB1ɫ1O YWPtwDz[9[-2l4ȇZ>m.M>;ƥwʴ1y>,e֠OCNh 86XR=SfoٿW/̻E} (I``Sץ8e͹lvˀ^0I}w̫\-ui JP +s SlnwF:o92)Ojj\6GيTZ2-qfM4]hvVW8PzL]^\sp·4VSf2s /tQGhkBWe؋[!'!';> yq?b\~!?<?x~0->-8S0)!]?/ϾB#J9γa Dwz)p' b{g;~AoH<76A( x&`^3gn_{@?9x-0~ m9-w*39Nv?zm8#/Qp>|M0^O2`u1>lu0O0<Ϧl_d=>Dg~;1 ƸV֣n 0lxǡ0Ŏq9yly{ljfQ%x/*+x x#:v\ rYY}]7+iN<ϸ]id M`п3-UcB7ߘ[g)V׶=cFdz7n#>˖ۨN6=C̢ث슼H>[&e)aUfUY- 9ּU\/:]Y-kL­XSDzW)spatstat/data/mucosa.rda0000644000176000001440000003215612333041774015050 0ustar ripleyusers|y8U_ۿ̚$CE,DMJyHT(iy2tsIwqz~뺖s>{us''3C|&M">-luxDG㟼D/W _Ե427 u7|GDyC^;Kv}vI;oYZ؎3~R\f⡬ltǏ&[ؙ_4671umm'2F\{ /^6= ꒉAz}\'W&iPO}Zx*-+,@Mi3ѡ?s\yiBh20čb烬Qkyksӳ9D'DN*Qwue@zj1ĸz-䬽 rXޘ& `oW9/ Ҵx&bzo^Ee`ӻs:s?kdN +>= JC6`{0*k7\AI@dقovt߾y (6oeFZ!h;YS|yZdj]&q$_i ۓ65=!QAt2hVk9kPÞU[!>F撏ߔ.B3oA_-nف"gPojBSۊl&lF4$Rc84}M+f[ʮYд}*hj Kj4gIVvK:%ঋ|:oUǐd:fܫk7!V\ .QsM]i<^%yofcґ>$"dѵ"k*=?BVM[y;2k4|8+>uƗm<M!4NC=r莎͑/:kѽs1n4}htx-(GW.iнdl:7~}-wF]A U2`MtM.u&,3tp;ltL!:Sbi7$wjjCzt2mwt/,z75,3S[!y&|dB0:5 j:e u+u;ѵWBX&R^.CM`-}"E; ؠG_][K)Q/ݳԐћ2wAF]1]zgY}}K]یʥ>4tڥpkFO2oվD=wڼ rۼg6%>Wu[>Ѿ*xt\j+7ƒħZqk('ZAW?-k/\_ ,E'us+Cf׫%ё,Dg\~Gt l]u$Uh 4ڋNcùSE)˙ б;JZ*XQN/+V'<=ܥ%Sa<#/VU2'פS9[)y>~5^f1ߣ( Q<<=_wҪaEt/_{z8b+l t][*9o^;+oW&ytG1R{2e::6+14ڡ5`u-H ˙O},AT,݇$qh6`޼tW~5w{(:{ zooJ1O8d\'Ǣokv+BTu'uM R<Ϲbgh=SU~((ӏETxiCD>h\8l~R`e.KvbN`pY[`H^t kF7[]|LGĀ`~ FӺI Uh9L|v}?F@ǂ緿ugSb]F EDnIl3Kh$9Ow0 TEgv(^ދ_^_O% :P yj.y+B;,(q%ַ:Dbe&((3gz-UKl)m7!峜Ac\6yu㳻܎؃W=@mt?d(!|.P,I ʉ3Uy@&7'E6jB:$1(Ub<_â/?5N7Q%<-8 V,8$uxV.h'׭7 `NZAw?L[2?}i{a9}I+>\Փ upED;ykvQ_f*` 7QHOv]%Z=f|[g[AԺP'\4%!T^;}-(JR'MgU7HyPG]Ce՝;en$eWm e "-VPq9 d(u*]04ѽq28DST<{T((9s9C.'{"K{~ # ;.q8IWց-zf6ǿ"V 58RI%n2WЃZh(Q "ă{r zI0f>zU"΀yMohi*~veoAK ^۟Wd0>K'\QF.:3m?f~AC}N r'` :| Fx؛οlCW-DxPx7h[t4c?=sSl"Pi r΄ 17ʝk„,Ww ާkG~[,y3.3`E.Kf^>ړ.(դA`'~ݎg A줈 GE U 9 KZO^.Nڂ&o {vu>k<@&<nU~4L[Q56^0V'&m)m!U7I$=PPzvOT{j/DuAQeWTq6xFG c P5f.9j} TwU~X /Լ h]Վ6W v7:~юzUGo_9?HCϢڝgKPk4 KES#u󚢂v\/rg?Zz6«W%7{srCinu4-6DdMN)$a< @b0/V <@T8Bō?~F׬0ggd,P~]=j+.=js/E?xh₍+/i+jJ+T/ؽl 9H+zzBʹ;fkp4<^Wހ r/s8ƺ8~4 @!y>UB/f"hf hf mar=>ٵ.|<*D@`Ohv^ҁVVJ`֫~h{_q%-rkub0zԙ‘ Ia"٨~-ZDۍS[nIF M?uB_oWAsHf?r՝-ڄdV}A˙69:gk"O5O\ı&EˑfDݼ=@̽u䥻Q?o+s#U7nDw-T9\+;bqm8,%]"Z&mWID+5C3ηlϳ8|v/(E붪'Ra4̢m=3Bˎ7o^hr^?r-*Jˉ5sKeAqKj|'n܃W"%6cALSCTJtB՛S; *QET\ϗF{ yh@Ux~f-;T,gCuXT~1>zwiw^4MlYMfx Γ<*!o>f 8ܔ+7*8kn~E&%TD-ZB<߁;B2y>bZ+,?XW\ }Ӳ^*#rF#Pj3#k jM!gVۜZXv qq_J@>o]2:zh)&rGkՊs [3ADn輯Qwo!ta$Ul[y1jMyHS=qڗ|O8ݭb+~1[+4~wGZ$N_a!ץ\?viLw"Ip!}w0X9YI3#5N ]d{t,9"{,L$;I @6{Y!kނTLM_f)u&#pJ^QChdֽ]3Z|G_GkUǠod9EoDǥҼ\] gK@VMM/!\q͟M>ӆ4/e#+&;u*iB]& Mu(WY2H|KrY5EP/|k-RUBM;#:|㌒ږdhr:޽0F"7+LH ?Z.+`ظβABKXĬ*Bs@(4,. Vx5? 1nBO;韍 [p`Ia$[5bG\zkQYtԮa}a]eQ1h ێ .~LX}˩ή0ަ"c,$]۴N!2L|C1=ѽ.o/Y!.L 1̩^Had}QqGNU6ZdBUd؛[_ 锵EQAې(y}r~4,zmME_[ ߫fu9qE9 ou>-e(eVJwޜ $m?pOΘV_IT{mTmB־s%.]L{R⼙q̦z=lwұn PqD'_`YjAIxEwO t9jG=;mS8lDsНh哓Q۵n u5z6,IQDx^!ȴ `y|EzX 9skwI>AfXB?4s5#K4(Kk d)<$er7p=|{_ck*'鞥FwO5N Ӟ 3RJ ?!ҡn$/Xo鄴=LUp1i}0Fk[ ;4)z*>{Wou/]mԏG*"i[s4̤˷o'̎bvn22rd.BQV6>aUx=l& ^@*7%H3*Cˍ!_iC5)xf*j枰n<2wOˢ9#TҧdP%,8*kzGP9GI9 vJ[3֬|K~xdfrL>|UPqt7׬08 s}'ROL.9?ʌUR4_ 5e?8>Z[^-A!jP9kW|)ciTKT+M U] }hTFVWNJ$@Itǻi(:Ju'|iJ*1^}"Jnv!ȤۤfU+@^JhY S&*yi;| "V ڤnuu˛mN ApFGp\ERAPVԳ/A 0iM%޻q\m=M~ =@>Rr!ڷ6f>hNT7qS0."f}0t~=siW`P]A;9 ҕLjIS_}T{Ӧ7+}֐h O<6}la@}@@æ] Y"4ʊ%GAu $0"5d14i/_ 5civ$#2 3^^izh u]8dhc %gVnpxr˰ G?.Tl HҢ?tRգq,7!vb I`9W|,]$K?h<1TvaUd oM [z}3|н뇐X9!YK$xՠ )ʧ*(]3!g7Dl-S_#`b:A *H!X~7:Sϧ .H>;Pf~ox(I0@~}Aѭgg~@{eB+I%ZT?yTh @^85/ހA6ACS Etd|%(4 :8s;Z?(E w 5ț^ș?;*t7.#9'd{"`~ssȑ0R瘾oEۯ Gt;Ίh0ML=um/gY4 n.NZGCA+4ueK!PsH+-}@cKAx>r cf ;"u91BR7܅`7~HA޸N)foj8׻堏euVgm;1k<_vOTn7@Q`^ T @4C/ D'/͊D^ȳ]΋icir3dC"}O/r:lȞqVJ\JǑ0PZ >4Ejm/'987ӗ^JXJJAE}=o_*f/{EuxP_Tx7{v;byg: ^r$ l|ov%`%Y"^~"[lېSw02 얚t;d͐)r#cRث QAsiy.BlH2[~ 3};WDCo-BUoۂ#&rS {mC'ǭ}4܊HfʣBœx@bHBz>p]J[^ )Kj5vyĭˉcd͞|24ǀB/PB2;L안+3%te(qMԤNRATWo@J׾U 6橇٧WNe Hg"56%?>:ol U(pI۶C el(N/r-z=ez@ڮ)_U3c%~[ [܌>lԻ+?I ӿm?êbk  (G徙顼KQȝt O2owGTEޣ%vUҥ)}|+o0D坥t=PpƼF~>j u7!\R/+AQ)uQ:2$tt;PF ~&>߼- ~pa=)܎6^̮_sElQ#Eh AEl/s)1FKjht49SMr]8Vv's)N!ONz7TX :HsW -OCv>{5Q@I㑙2Ԡ3BH9;ZRSWG(\"pD}e;۷Ȱ{|TS YW{I7"{STHmr$Ā.grQkٍT}YYϗ}g?fGo#U g7V1ɪ"zŔݮ2߷٩k ^";a_("@Xjd;1$fj!6~ͪ8H_#(ިzΜO]{W!>dԲ(j'WF-kk/F<08蛓c8WO'[xvO` ayx2@6,uH Rok @*|fв,69ŭ>*4HyBaP>^\ᶚV@(nEr@eō9eI'Y% !mOz$.DG?]*8T=UQBhSP {겧gzMJ|=xD@xWߧ]񺍒[g8:MKF}pm]BըY Wl?X emhlǬ*yZ#@[1B #[[';s4 =jԌ֣"璅 mv㙭cgՙp"p\]h4T!/ dE;+A]EXqhBcd4{/CƾШAcF7dI4Q;ӿ(ѡsQ.^gTg$I{Ȗúh;4F } qI-ol,J- ;](Lc_>ܟCo:on c EPގv!jͭ`|4 @Gr0y%w<)`69V=XMk}It*횳fy`[wuUϭAo|tN箁c P?K@uK43~]G;S1`Ty ~rsg׵d[h)k'cF8 >Yl"X&W굖}cˀ<]BSڍAUc WqQ.h"Ú]b)FL ܇ .^x~z {jK0gv&fMx%903 D\@{b~7:OԝV'~u+|M@;KDq+P4~ ЉŰWk-; 3TtxN@:tۃooʆgIOi?Oi?4s{7qٵ;.Of?ooǫ'dby$ˉ/_.sikcfhec{qbdmc<圞omF7D>gkwqfuo16_ 9Ospatstat/data/copper.rda0000644000176000001440000001120412333041765015040 0ustar ripleyusers] xTUl,BK6 Yout'$4!Iw :1eۨ ~OQFd(OY9"8' s_MG2|p=Kԭ:9gM&K#zLڧQ<*~5|ԫ(:XSt/?ݵlXw?F(.>vkUѼ[:aQw>&t"\T|fZ:gOC]K/jkmUgع:gSwmzj{s_ۼFQpkI_#v(n 2dgoMgjɔ3L)GQ:[cEvG)f2՟fLn<;q_C)~'3/ 9GEaP74B<, ?jLiת)gy? {c0Ghivh~z%~Ob$GB? >?|+915ϧa| tF5p#+9P{ksǸ-sl@{p$TyK|P̻ orOyS1(?y3q|F{ǘ<p>_pwAz8JYz(3~>?Ro7iLk<7 MD5ymU؛/υ,ןX\(Yjj7|ME6JqC)Q}WS|%'9]TD9ߏ{.rKcEO=HD3ﵽ?mϫK`^{5Rd&(=Q{@)ZߛxQ+pJe9|-|lBn֧y^M\hj=U\_*{@hReۣ5a>h9J T~IU[ٿ8?eKwe!?W#,1>}mHϽH]~c}kLبxvw7.jg3l~h9eDz?'"b"jM:}4lj65_˥< w#K(x8Cg{+#xe=iV u9.6cL3sQ6k3]F3Pet<4cVEfPtdTTٓNq5s?}ՓAgdKfdJfd?،O3=2ãȌLwʼ32mF3i[^.Ɍ>'#C2Cy3w-jʋ9uOV4x*xO6bG{Qg'ϼȌxx2(9㓼Uf3 ~oEq.,F/E{1G{++#wn2#!3ya鮪 m is6TwΧqTZo|׸nA]PS5-MG^AA#{9[j5Mߌa|=ʖ-uu%Z_nCq6LڸթIGbpN"LL>j:|Z~}d}p{g1i7L/spatstat/data/chicago.rda0000644000176000001440000200470412333041763015154 0ustar ripleyusers7zXZi"6!XX9])TW"nRʟ6(;S:S5"hkgi}uܲ 5t*nA1& `H~M߫ɷ2( Wo ՝p+`1!~d6(#gba^}jb?iegmC3KV=,)'Ah-ч .5{vZ [O"8=o[-9戉w 4k|YN$Aic]oIO2Ւw|ebNyl4M벦Rj)d|x_?5GCJTз+1y8~ex3-'.0qa(_Q~?X@J+Ad ?>GMn'BP#iO(=܂Lگz2[\+œr汮uvF %uYP\gn=>o"&8T axE_tk0} \ͩ{ ^s 4oқ>\h0{սaW*5UH<-:6L{U\B|~N2EYS4 |"tj >A2i嶄\itO֓/zҩh'h6Mdz̓-;RWrB{iFADD!<Eіٕ>@Y _`tvqGČM}mm{$+kfi_ї"/35߅#aû;Tn 5,MB$G|-az;p!x o:U[}, :r;;5ptK: Iub< _7e=eaG2cjR"{1"yځm#l$A֏C]V6J)?6Д:f#:|Y8貔ˡZaYi1>JF*V@F鼬C!Yo[킟+N\|aV[%8q6\SKh0yA,!sM<$ 1TCq %ff 48?:%ǥ1/ Pd\>zii$NRG5V<0BVpز(aOJ`GdG1*@\wBtR40qL>0`f=NùԱJp<kk=j8wI,7G1F:~%RBG%)?mҜtYԻo#{\`JW+[O.^h$hJ-,C ؛1}DS]¤3هZ.WGC|Н*I%r uAIaˊ}خ 'aM.d v .p9jI!WUr$ lAÉւ,xqwuFIQR 咈oN}#2L_${3 8c$Iǣ aLeN+ͷ/9\y\}Tp򲢐cOt|Qd'Y'S^@b0E.T2 oRTi$š1{m7WǪ_q]i1^^0;.,ź[K%}fEz23d5 ei~~[<]C|[TtX`Aq\'wVoTWmgKd(!-awQrD7,>"9M:O-Kp66Կy%'Z?%9{S_:5e9x̾~1v̘\iz͔ 6FnOnVOЬ13QZY ~G+%iq$4X !qi M=ErX; 0]^]F_- Q.7\ B]p:Cg"߅o`YH 3UoB4<;ly9leևIՠj-*_\luq.ta5<[H!ڿ 3%^o3Ћۮ<^SQ/(gFz ,=מjq(2r[ |юe q 7%q3&p+ zKZ xΥ7ت~L7N4Qܑۀ~f%]&G5@=RND;~佐pml]=iv<|7ì.~x,ӗɎTޫBZR5peO? yBk8;] ՠ 4URڷh_}@}^к: \$QXcZ̮!-ethYS8ۉZ$H`uj(JOcʱ@%rаƖ:l&|:L8.+FuK.E寤jZe>ViVݷ5GOh4r"Ds<NޓȔ%  $z1GSPJ d4Z.[$KJ.\&"Sٸx"L4^Q>}s>Sm˥;}^{rR*BФĺ-s7q\Co(Ttta:wo A֫# Ѩa1s{G BWԩʑpƅft{$gJSץ֒7, 2 r)[ "k'\$KbMSEM u3k(X-Do[j%?-#Fpn4=b3x}Pďl2s^{2EuiuHy9QV8C1{KjEu8r? PߘRAxqa"Q 3RfԁT sʖx^IC+woGTazKj h_ZW@VH *F{*[F(g,& O ~.X xLWXOWuL7t[c[2 ' ֩^2=/tz/D%pí)DZ|AqZO2ccmP` >5ZkƵ`o">d~z0ܿhhxE(w6. ~;9<Mӻ-5F9fQ-*Yσ|!:@C [-`c-ok`U/h0̿zɰs`zϧE%rŔXRTvǚ!Zc.,Ru[v& .LȪC1C@?=,,,F uJ?Rl6 QYD G:xOZQkwru~HvX&C э/qNZ5"tZŮ1F%d{3&W'UQ(dxR?VyT3cv8@K9 |@\ oziӾ'.jw""|@0sZSF '7Wܵ)YE/Qn֞I$\HS-< ­$4MR3z+䎉[ݒ0^6累M\ jh`qx¸!UTRdTK!e>Z{ہ[$nj~^ iMK_~\g^}C:JQbC:8X*Dž@Wf+x/l XFl# ȷ:ޞ ! FiKQiş@/S\RI`Հw>pp{TR^.]rJދp K*% ƐU,g޴jt] I;U2Sn 3z69ur-aX%Oq'/@VjRGJJ10~o+#?ͯr߮Pt},xj7s+ *ܛelؚi4;j.ivv0GkؤjtfUhʕT5G@5kQ,pa +t)cncgy/]pڗ%H6SdJtdh&ju < F z-X9gzvQ3 T6gmM p?r) `?TZ4p nJF|)촀}u :~pN:%L \O`䟔1 v?u .*:̱xtJ[?V5VbFeYbRH`U{]n./@/ G8_8KY (b[XMl.E%\JR0w˶`ߌ2 |-n H͛ ,cd3pJMJX7T"y \{~$1u}9l lDcCWfm sqDݕ:U#P %&2 Ϲ58r }Z|hUxL^b'BOuSc\UKEmuq|_PX_g#;_VF`WQjP?ЫtMvԏaC#s(E[!F=hJ҃yQ׹6ty8Nonܩk- FH{uNa ]R~E0{xJbqJr X<$`@OAsl8\ Y'I;ļ]nzO:hu9\CM!鴘w J-S,^hEɥ0!vt3R.KB y!NVF?":9(;v @Àɼ>|JAynvr>VQV)GА,-nT9$MnC{:(ONJ3lVW+/3&)+}-?/WS:RN hf5lgQ5XVUbxӓP!*@m~[VՓ(k,C6) 1$Ga::Xd>phY!si]X*h>tm\]oGPf !x+XG|ߛ5"_2gz?w.q^,v!hs .J05L_apuhfnaBwuAaĬgdbđj>viy$>c<()训fUR?WB T,ch$2n~F5n3J1HPeNW[vewvx-s\urKCEg&D^Hm/(b&mRR_|*&]4" e*/;p!X!y4mdb a(+.F_rhvɯ/H4~&4%?`/N %+`uM%l#K-C ^=hdNN]&eWo iY_֕Ck<} 25Fލ(; ]bT.YdP nNFE%Z+> U;1ⱄW|8¾Z_otd.gsM;[yaYnW.]"!d.!,غq0";P! 5բ! or* Ӧ1qٻ`pr[Q` -CH#9æSu!~2$o@cL۽lCLYӡ9>;"3-;ɘ1r\^G)vW<;pi<5<%ə{6zT+%Fd1%tws>h.Ч|n~W/E]GVJ0MH s.lv0n@sTektQQ"ye()֪Kgz3uҨ<v^Fux^4,cX eae;@ĝ BnS~!#nН7mUY@N Sm,p)ކ|܅ %M,Plqɖ*}T:J)p]r$ܦv ^F0>C 2cʝ'HfT2t4w; 7ﳽ;N>YG2 {%B+aH.RdoUzА\K{d%U}Y_9C5<X) >z״bӏv6g-"k@.:{߷8Kd̸X#=.iGGچU:V=&uxؠ)L8W+7{YbF۷;+PBg; ]6 'Ih]ƈU0!"Lv4RN Q 0BLTo- Ev1Q{쑫 6;veܔ=hB^(z-SJ:$ cե\n!F$]>7Lt(*:t걬)3R z9i D?ϣ ^bk)X vb\8shz7+q|qngf~u_%%8Q`buBMm7oſOq^P(џk_$K5(L˫K{n6𷞆vo4͟3e&4h(}z+4F sR8u꧒8JQ]NoC<]K7%ҕI\'|ʔjX3䞅I'=g]5aŤ*&l=C gaY@k!2TjxjA¾$g':ugG n1^ѩrXe6e pF ܰ;Y FV ET(t?z}gR=w,@nX\‚fFyH,CtW޴&B6)F"l2ҧ*Tc%c,ѥig,.ֳc%;.&<=켎\2SYQ LDZFZpN  7l)U3/qr-Iz0iY ?XO]-lXbf>L@#bnLz[:q@CPs[U Xиmoӌ) ŽP]1M)\H~ӿ^m9~[EaF7JT;lQ0 kRJ.E!Tl$xU҆bq3\3z~ɨ'BQzPMY Z\`iTT.b{v5,ܫ ޑZ Ӡ [q"b c r  喇oTm4>Xb!0NY\ atbW@JT³,:ijX_@켛[T:\hQbݵ@y0d6Ae|!$SdupZS[gF0> ڐs@xe9'#q:M3`VV  +y]p؊_-L-!vA\7o^fO`s L$92%K\R^ 0obZ˲Kеe.,iŝ *6N >cQs'xvɔ; #o 4*=jJCN?B8t{o~,&<PrbT챡">k()UgeYPHݤ\0l0IsRU9<xzܚȪ5@*?M~sHgrSJNOJJ9 5FJ$5 MhTB_y:"geL5$>9a|-$4ܓmXĦΰϙ5񎝔?W[1kQ. w]*Fý:uû?/a2BDM5_ T`t77g^rR:?|t$Bd-Nr*W~~u GBQېFuy0ø윒_~3;a#U"بm@0^ O)Gފ)e5Yd S[+#F'uba:Evt. :F9UGBD4 `_o2;jH>>nPkHfc[]%~-c@E.*e(  i5#7- ]Tʌh(')^T J* `_|(~KO6h=adt[Q)Zj|WKG$*V7 u j^B荻Z0KssfEFyM3S>P@ ¡wNӃOkG^A|WiPcIYE@9$jOķ}8f1(YlW} e:v˰kϛf$07#}s~0!om8'h7Ձ>NÏ)( `;LT,G%_Up2UM1#_=~L@6[>X/$nҌbǷxYvly[ JZϙ(|P"2#VLm|*܈K֫YKT!`X4B*ShZ8=V8=YD!-i~$w̄!%KeU'pV(z]Y[_G+ ،;8tATWtMqByƖ`$['3$i˔׆/S_P<_QKUrU5@!;%^s!x9XX `Qܮؓiu9m妽}kBW*Lfpc%-T@,M@"p;d12!,|lۚyֻ Y 1U`[~AO o * 5k0$]xߩ,_TE -  ")4+R[ә̿Tmۀ`7]OS@I=1p 9Uhvxaq*A3dErF`\`zω; ^egz@`4FsiX܁1>}MSK)C8RNM= :g t%ưHHhP(/#"70ߌqd,tc]'S״s,bk߯j . e 'kfԕ[:(=iuK U_A_1fLVdg~5?K[ND0%vp"_jv ,gs[֮AhNM3S(VK6Bc, ৞ĝgjQ,T>Ff%8_Rj瀏ӏ ؝Es*~vOGtGsa+V&0([wI 4ĠK g=Ո>_U$~Dq\F5*^<0W-fP7Xm`H e|TˏbIԢE !072݀T7˒_XI"Hl92O+550`!q2]eD$'OMPs:H!&J\3bUCg7oTkƢ>RrP4 M3 HFѥ U 4 H`K#Sr5^D[x,Az`‡%ׯI? q@i>}*2œ^Q76U-g2-z$L$3fr+#"N UXK]_NѨ=;:]pG)hþ;„V&LG߻_Absxxj+\$k+8зƀ,6tϕF3ϲ97N =Ajː?`F˖>2LpsD6̼ij-Lȗ+Bڡhu%] c9EPvaXc(!-f`bP -;Apx*2; řdâx>) m*nb_rxQw+^P+V]\3+w \_XZL;pjPIq_nYʦ_TF5qqdF7@o]Jpi%CUk6xdAMmxmI5z*ٿq;^.?xBGi! B^זڡO z!G- -φ*mfch&͇%!gHs+km(uE_/It3 ۻXHKu`=A}axJt4vRqRXD o9/BIz z &ECj@T fp}ZT=qo1q p۝x/zLDX>SLXjbw$zJ$L ߠrP̏S|,PzB)g*'q\y8_+)\BS["B-Ӄȇ 1cBYv.Ki[ص"R`X' *\f"kgZ.t͆0ɮom,b˴Ɨ:6jTqV\)[c3GNkDI_&a7wHkPYuo6~>Xŗ6p E) P*L ]G)ev6#rbjo>9ϐGݗFK#n'3K͡Kx)Rde te{4,>εzF*B#6^ߎ,zl0>ƒ"R e8D)xfi}#1%*$6u * 35K}KCpA3ҟZ&ڛ]:/lahg)sLˮ}5b9jRpG$AQ6+& T4+H꿶`ZMi#a&gD)T_:wMub\s"aw)JNa? A78<̆Z'bkn׆L%Ao AȯRՀ=bј"3D Fž$5׀Y#E;>+}5!zho%ޟ55w}eBo^(/r#[w2-u@z3w$Shԉ",<HyZQM@Ef i[Cя|(RAc֗d!gcڄQZ ES0TՂ0)J7vS O9CHo#Ӈh?~rwϕ^} d/-.t}d*!4pW5H}<2zL=hIuB|X tLir{䝀Tĺ<繶S+3K`TvRga&dy( != 16Jt-s;-Gzc)bLKIaس@6^%Ч\&-`fE2FEΎAY.ƎbT)s;EyUKN` oth Yj|n.#+渓({]1pL$3 .=У/pIl!{ 8R3WCn:f bP5 %6(63{/(|0[-ۆgtd 9k #8UZG"k\[j @n_[ #i %'1rMIͣWpEGFߊXy">4z@X7rnuDYj~^k86< eaFVU/CּX߿|,4WA$Beoawn#p8fm:~[1;d!.( 4ifADwr_J\;9LI;kvuS]x'q}{ᡋ1kHsm1# QqnQ MΩ~XA>g` X7?:˛)G7V7$gSEsj2HpT#I҄!r7M'/f GdE&t:?U1СQ9Ed^f s|wJi"Fmt0OEWIZ\ф#A9*_/GwS|棒3  T}71mA}qi!JRUx`U<cOP,;j'$"$8&p˦bx!X iű8:}C Pކ]ht턆Ȁ* 퍙笧Qȕְ>'XqCN\J .ڧY/SgI !!1wt#ֿk{!UBY) :fˁa-&FoZ\MA 62Wk8Do8fRPc#;F ȇ,ƃ% '- o0ŇK|_I(ܶpXWpFN-&$_;PFܪASgZ CK?sGw.+]#,PW`Ix i#%"Slru٭%jw!C*dShK IcERxͦΆ^3`>\xc|6*+seBw[Y;$Yj"a@5nH38]o.m䇰]g_#fP̌F%PޞRD3/${¨ pA|NSҞC5%6l;U)Zb@哈C *8o㠊\>>uSEgHF54%hChv;9@0H#%>(|H!|Xtkѧlx$XU Qߤ>. y4u &'r4ȻiINJxώkۂH÷W2;@lu W./uB*a=tћ۩>X`dC;w-ʓaAYOfy]E:G?LUGX_KXvq-%:H~g:jٗ薺/ZRXAkQC n!r7^z=ߊۚ>ͤwlJ3*&&LQqfh:p  u%{/FfM'1 pHbC'/Sd~)Zzu)E~uՊwZɦFHU;am#|9#w2?א@4 {k @"8,W=0QXGP:*AQ^:`A=~Ԃ|\8D"8vP!w8ň?)BiL"C{JOmw!/ !S3? ۩ɮT-߹N1l?+V}qZ2_"i%bd8IٺmaDE8+o'!aԬ!wIVhi^b*xM v|3YV*yx$ 2czs ITW~CKX=~zqҧlL,U])I0]>cAX57lQ,y܆If&n?r 4jzll>bPvg.X< ;r)=/cԍ~i\=NGtvٷudn/-%> .ROmm>O/*1^ rYPaY:I }i>@hT;.n8Hl(1 :E<} X+~[NYp(O0=NܨE=TMIPg$*}ix`3:#y"]cƠ4 @% ^Y`:5 Z/C]35PS Vnh3u1F-[/5Aw7v4I:4~+c@>dxǖko$KамԱ4aQ`z@(%\H(ʱ>WIj7v1|*\#(ܩP|g4/#nG+ :y I؃H^8;ՂubzxK0P^ŇEl敷4rek_u)(>Td(6Ӹ?=3Iˋh=m wfx,^nQz&ե+V"g/J^іbE²CቐZDLBM9'IOAې̺i7Ȕ0!L9)Dw5 ֡VߦgT-<JDG濥dHgjzFDj k AuOVSwς< ȕ0u*{iLP#}3j:qzf\_)X1g*gv])kJӋ/ؒ/|Oރ4m~0X֌fH0#]D(~w97廩엪g;gA#9) 4+XUBsJN mUnshe̡ηlAVزDBnQ=ȷtj^eIъHS;DǕ $LC=A(3X wa/> e%]k ~P./>rnzK/4| hàY_L:ݿ_ 0Oz0i^ER<;nȖsa}UPUA%o@4.=6<.e(;9Ӡ7v.gvD#(K \8s,[*#(H #d >m{|ٗ#MSw FA=?3vGD:cwk{VakϠcv Ym0/T1Tׅº{t-d)8;MH~_5gyT RBE? 'JzKͯk&f z.2ƀ}1FfEL;qWuA7dM`6󜳂  ^yuRD.T^|uf\BѹZ!Ɏv6;|'qPyhk zd.N6̼Ս Y$rT7kQw&:ʾ ߽݇,kj>A9 wZS1M*xΕj7и*o6V f810 @k<y u<[K$.SA9 KA_Dqpif]OXplSsKfΨMՈm?8C(p9 /YMS,`,U/!"DlVV!"#ÙX3Wͤ XY3TyLeUa)2T0i_81w[>CUQ!v9VDayg;[ $4ԫ#TKklv`}gk0V/}r-j !( -i: uaױrT?K؝mI7w]޻}+)΍ٽZwEuX֍J/8$NࢴuY;!=A[6 ̐"(yPo*Ru[_c? X &L?iJI?*⡤zɉ@9oӀ ?qз &AV!ceSMVFo JASXF:R.5j˔E>u}%Y">(⥔]kU{@<\YTa&BI{ln;B.IŃ'WN>sO֚OF+">(N6{IS#k.(9_ "+W鋃2M d Xo |`%^\ڞ.OJ=/2&indPhXO^㸃%?$-\kʘu[shQH4\_+=Erb|Ao!G:BO/wmڳIr.IL=Vr]Kʿjܓs}xq2.[FbT¿WJ4h+͝GuT:(C iHը08:kײ$jNIgYخD^p-TaFH#]4MZo۪v! HU< * j^->2u[e&6OpPiuj4t+WDǰSuK-|ҏ|oA҅/96A#qSo6/hsES_(CУ+uRn׌Pe8r*C J@]dz?&Wwn$mn@v~ _&+ 5 "]F fٺUGXl<4KmB:TI(^+.cW H"Ќ FaCZp&jDxU[9 ^&‡+r^~ƶj)كZے&yEM/L0:avE:#-uPbh]~|a+u¬j%Τb'AQHG)aowS@6Qx"ɉXTA ^˾&šTgUV#޸ԈcR:7Z.2#ĝPoy*Lژ_\ujUpsO?05bq&J T)+mp޾=u#0 t#`k$.I{DKO$;ug)oHP vlmd+ C9VvRh[ `ؾ)"64'CU)"$Q c-=TLdР"i$ZzVxߥ,P099{6AulRkKPwHg| {FuaT l ~TOF$Bq >⹹;zrs5G0|rTx}9D$^7F5+倆yfc^+>`=j*c-O^bt1Qae;LYWbyY-zm zwva($K1-^V˒Y[WDܗZ`B$dOiИJ閬v˟3j6q籒Xd.N)'jH wu["l X^b9E| E8duH6Pj'WGT&ؾAq1FgUvݶsBD%{.Ņ. |aJ'lIb@`Zjc!T@E*>%jJ"VED5sy~ $Ns2gLKj2"sH:fjƋ]EXsٲC~DwMt0jY9RH.y B_o ?'QyY{u6ۀ~#&͓u6R(c^ l? D]x8٥)IerhW<ޱQm9ւ3J Ý!MHTo :"DBLq>ϱ9-M {Uq(>4lǑr[3!Ibd$LqCZ@:>^t(U'\ î Tm,dWңO 38X* +R;o|5a_siRRL-BSazj#4oztHB|јk᫮ߔ.s/T6],I. rӔfx`vW(I+l /cl}K,ӕiy8W~X/X=xK2_X/`yFϣVЪ'/0dǣ3Gx!YTK@#5{tI+a {ćNv|Ztif}Z ۡm˲PLRWeNj 43;i"R;Ƹ^rOgdz F pkyT44-1?M_%=."!s> b ;IVGhm.q~~O9Z}z4I?7 äf@*}oh5 f#Rc-Qũoe¬zC} ٳnքRB@* Z]]iJODf`+~Rا%2hco(㍊h<6G,5p)˵2W_! qxJ:=fbkBEIL{qimE<kئBM<{E|H9gKE-NTXl4$:j!t,<Alg-ݎv0d0uZ!(F#޵XLƎ:UV>dAddq20JwK I0yB^L SlVr^h~G;&Ǘ#6$%,VdgwnPA[gH` $fܸ I ~ fs="$Ưx#Qr8QWM6k_%,w7M 3/0"b؃[Eqj&p-ltdAteHYp\>9G1<o?t4;Hh 1Zon>Fl4 {5B%@ ;rGI0_ރ-WGXILͳ Ų{ݼe iucy(~nMн2HHzgWX|9**qds7NM~,>uY ?ˏ R Hk`xv# m fg.'9l>Q_#MP3Cab=H2NJ3Rmb#' 5HKg&Aȸ4}6Մ4xqݺ\"܌o_]Po};$- ^ke\{x>[U &S͆Q"7.dy\!cK?ǂ) YXl UW#$yLR!MLz^4hE3l3fzW ͇[-Vj:0Q ֘ :ԢE 8d/LIl{z  8HrKJq 9uѺ+s85[d؍jAfoH]jh? A0[2 pRu23ޗQ DHm][ ~M&xDH6󇫽L{"TVg(v^N{gD7 .8y3 Jl5ș޽2d;f`Gˤj"!ElQ@ܷ$X$"@ k"`T~~ny ~Eja?2H*Yjc\]=d2(|mQR]dz4[ˑ:e$x# 6~m 0ݸPݢR,1>GT8 1ZΒiZ:vH`mLjU3ۊE NfA!lѯqY,~E&:Ck&I SMƠ.uSÒM7ȲB3NcShFN_Ǐ_4el7@Be$ƪ/D>bfT <(>;9tyncs&'1nlSF2e f|v\\ HRH dF3y֗/sZ\OoQ3[ Dd >!Ma6~ؾlV3ʣ- |WE|j6+2RtnhwhR4â"ČnOKakcx=l[eTǪd4TshMUr~c,D`̼)rcLosC5swCDŽYNxbM(i@x)0y'~e3:l4ԫgO'UfaOAU(rȄQ Cq7酺n e, o5^\B5M8p S+ j{s7CY=T[|+ᲇX=n{yg2I!MhhX҃>wO/KWŁɗՑS5Ae>Br<  JYx !ޖ(5ݔu7܊ņ',~~!my)pS:n+k{oh~%аw%qG/7㉷!`f`M/LZRiIKZR1վs,vYz*(rKNUsMЅ0Ƈ(<]Yd߃*j~G`/Q-km[cs '.:=(YO UOBkR~,Aۂ/,xŦ/ZWCz,idh6M!fta!ϧ^Pr"zrOY.?,dQ }!fU9UR@wȇ+%hBI =\D-S%glc~  8>_8iu4 F8ܡSt Gʣ$5ӥvޠڒkڏEd7Cl`4' 8QbpID6{_]=H>xni*A΃lӷf 3yGLjrH-Zb`k{N8{ :.=(s<%Il%C*.e=+-:zOYW{xgAtѢolkKBd~M3V6եރ?P4fEXU}ĥaʆ\<1-K?񩞖EsWи+/C>tY%ˮZ@9Xz[kg+2 ̬Xwqt2BgUh>eh4gx!zl'xPjMD$eBfDI,C^ʷγāC8c;PVIEXbcai"pR>NáLWiCQU-PYw0D%Ǵf6D!Qnc$˫{`%U)kM[}Yórй%@Ms۝bS'W /$:00'"/ν}zWݲE$*ur{"kr#6_Cc.z5i{XHca+p82,8%ͫTcXF<;MWfz|:(%ey +K^6m>PSO U;Np=Bvxc*w dq;Y/(z]pS> u/kmJ:vL.]rE8vQqO_RVoӒ:t#8)SQ,)<((s;nWern\cG9W_15 'ы:~xl\V? ?2gwb3]UR5gÎ[?4Q3;(7 MdF+EJiZFRֹTůyֻLpeZ̖'i X3OmV`)rjQΗ0(OGqLڵZMð_0{??$_lunSl|@Hkݻ7`#Q 1>\ t4\ɄCkS{\؆m:z#+2F u ssx[җ+"^<\kCݦ`V&dz ]2Gk6N})"ȗE?TL_R?q[*;NOܤs/շ~,IZMn73'pּxhخ NaqN\Cj9Y 霠74N>j=^Gdba`Y@/1uf7 \b)T/KimcUc 723(:G&--]\VRgfDkw?f?@us*JXz=eWb9,v *ɳs[:Xfx>G;jǀIZnjdK,pk,*vA(,m Pi[S˜4;'m~x `#XJI@>#UUwafeZ pՀeۆ P>s3 Mw %Is)p<5+/NppT˱2cn} n1 ;5ث0)W\_aZ">J>U} sWkM[s<L XP7X -ˁᩖDSc_Z?n$Oܩ%FKk]  X0N$@Bvk6Xʠ{)Y9`L72ڮ=S\ +mTXiUQz6.v_R)z7T?eׁȬs`ߚ0 ~abЃ>3.bPA?@ /WwBV%WE)aiOFX6&reߝLZg  ={DG^YPMV LC+moAYVJ綑v z5c)QFLހ}+VAJ ʓJ Dv_VMsRJϋ.:r\ e`đ5tHpZy>F!P,Lu{^JzX?i8Sp s?2ʫG؄מY vHDRXF͗%AV SHa-@w}@LhS3 oac¶ @!W[UUlk6\PmtkAQM%3y~6#G^(ާd4֪"C˰k:N!h!i_R  idˠǎ{{2y˰g;ٱYش!>;1ޱ=ua[J'1K &v_jM`@K<{t0+ثS+ fQaM%2g?pXqϾV'.iK_Uiv8b!'.q:sJhwW(ɂ<7/ -*=^1Q;h+gmge`d(=dZ A_ [YN-S4~m]Ebd DK խUspf&>= W]dhd.}D8Uv\+Jq9|OBT v$PBcv,r+uDHh8dФ>c"|?4xzw7jecFm{=|2cBzG$3-ީX!Ψc w®.w{vS&2tWB7!w$CM,r[:ߍ bYϽz "o'!.qzּbY ` kׇC>ҍ 0n9}*wġ/ ~WKYCZ3.l's$v_e෩܉G|{"|DȞJTf~ls?~HbFBG2|)N*8ۭo}>Z*fzGP'@dyd%r³l QM-g\f⑻D.ͺ# n5Tܺ,U>ʔH֊-5zQNY 8r69X6>0աC{Jj#^yB׽>S<_w˶pb/6^"E!ni1g# ,LNy 3Z==܂d;XwJ7f{݁jLk gx*09B?Ȟwd@[wx(k;z;9)p{hcRlTiR};v~ϗOYvR^Ѧcи0 'ԶwK%Je3cҥ=iR=(JrAp7{aM$I[c[o(P|"L/)#r-j2i199K7ʎWT}NbosQ* A2KEL+ۀ"x(@nKeNz*1)lJo4'Zzm(:s-vـ.kغEH݅0EA1!Nϊ#BrٻR:m5| tqyjc;zpE#\^cY%#Jntvf p%͂lv DGM( BPղ E%9Hst`|uDL/H1f|LZT`}%kж,`% ] 8/b;,D=oc6gR#!Õ  ѧ]2Rnf2Df}ypӠaZw Z`A[ļAKI&z_KR rs|7q#il֚0 8gܠ1]){ώͨ90dҢ{٫Jp7Ot#3fMu@+0݄+-.w i>إѯ@c֏76Nh &b MIcG鎥L}y<<]  ]%N8g2R~FPjz3"Gȶ~K^+ ']!fY0˓O# >2X;Fӎ|H;gq n[͍uEɂxe?Hm'uN;wLfϛ2DN_ ⇜NB97"̵t*q!ù)w~--Mep:"(>m'] 2uMY\mG2O/1<N%,{T*vPEL2bQbp=K 40mNAbq?)>9.Q\[:y2 Y|xY . 9. 7OA K%5m6M6ڢu҈䔙%Z"kMUDŽe[,~x":63W$P ,in3Hbʹ,~O)2F4bpu& ʊ{$?C&B*|Clx]jVP Re:Չ|[# u[Dϛ}h`լJA rGuޫ,`8-rÉs Scf$}o|$Q^qF!\e6w !6M߁_JNE2ͱG'rʨöHUz(~-X]/ I*##0+!g m)ՕzE*1 6q\&M8Qg fQ3 kѣ+5|]G h?M=uE9l(W J2R`r@o1:NhUB?RJ\eylJt編ƐVJ]?ˀ g'&C"3`(/ܳ֡gWNb S%hW?e:" 'iŖuPVI r7)OBxsGRz-gTb_of{(cJ[*i}A>4=e0o?(FY={ȎiHAX1>᧒nJ^~84lw2W}:.37Z0`R"]`GiOoYNzc\j_@Wb {?X5e{H6[ͯzn@7T.nQ>!#' 1uOOQo(w#VD lQ`9{%up2.#+!s=i(?zSvm+""(f4HHro*CD[C]ڔN~V"~b*Jc`)/:1+MgDb}_0edQނtapaēQ%t=<{?7C]Hb͗:Ovl"(w{>"ERjnqv&w$r3]ұ!+T^ pQ#)Kޑk0"*b`Ύ q#-2ԎX3KM7\ǚ[ɟ^:T`bAo%VJfWc"zW9m;?,AOCQx}_`& IgZ-C ~Jɗl!x5r1K`X2MQJzs.K`/mojtW۸ŏcƝJPh7M6 vnl" lDo02?EHG}##ų֏1AIEO}!\YL8}Xی{R\!QڴNIjmLk/FUm)SnܫF4iX5sP;9Zza)]eY$lSյ$a@ ߑ *{>Hq)=X/g>bF/&9=g`23~n_#œhpzr2(UyHAjxXƷ+ڧAP2ۙ]+udw?GZ=ƧtHƎ<~s05hCT[dK2>:d_$):qd&&R,Pof' l[臹8(0,eqrG_ 3̸'g$WW(1ʏi0|ѓ3J) >ޒ:AMquE1b66cY3pShq% )~qH@?[p_1u9G`̀q1󛝈R:-`b㸽Wja2ÉaܳSˑ~y~O5P,Hl'B̷/`dYKT.D˥\x/½} Ȇ5i9QXsWZ#Έ93]1S}֘%ꅲ].(UK yiҾJCUPߣqğ+pXxH,iQ_t}| !t>Z6#$ /CBm]l2N1aD6鹋/ZEɿP"<ϊ2uau=EC}}Xr<;fMk}€onb?^Aꡰnhh>f@*0<\9(^|_go0Hm v$g†<=M^Al4)u̅` \+捎.FlO`(u|91vj#(Ab8)T"fO`XW*..ؓUUp$/rdER VMXB\tlryo6QT"yu]oBKj(2=g kżv |{t9>o&{] !^EqA;cvoy06׏NmY¹,~$T8@Il>qez\ f9'YKЍГ/zVe)Pǯe|. i W5q߸{xl4ӗHk=s`bpK:Tq4Б-HE^ cFmTl gpVoC3:>gGLڜ7}@ń.B2 *=o ԗ޳%ݣp@OOr谹BYg'#Tɂ0tc/tx"i܃>۸bT;8|\*umcfW!Efjj\)+yPEe5fYEOhkry;ť a9's Zswt7tqaV"Q؟o(nWd 0wHDje=I}`-I g%Y!>78roaަnvPɰȡҠ-dU (&v;C 1HjM-Fvp*.%DDP\ڍt {e>4Ʌnw:nGZͦ2 ֨]X(Gt,537hCFmӾ.xl߳ v՜`ZCʒvk*aÓN/bxp{҈kH7glw'?* ~e85i]ɩQ:-TCirVGx]٥V/T57]/QDAxе#3~Yt a+tO+pΫc^G_Y,[ӃàP.Z詋m=,v^Kη Y?U3'1"_!\s~4[q=D.Xv aˆ^D|"4Hj[`UwKA~~\._T R|w zMFrY{ ٓrCcɎPqp>MRq|l nRf@I{maR:?U>br>3vp'C Y{Iw_OSe ^t-a+2퓱nE!矟xhj {~č56{X<]^y1} <9q;,6m#{*2psq']O'cԩׄ7d0#`|:"+mN JūýÕ @셪/L > =,EC՛1ŌCGŬL_Omta NoI]*;C*"5CAVɚkFC`eS óÁ-iP{i V">ySJyBDY!Z x6ZQx!˦m-zF:&h۩ƈVˋEp#X"1V]N>5$-1fN4)?.)e,N)Q4zM|j9b:0t߲YwKN҈Ŵq$h$&>ױm&Ɵ1}.c)8WQdyEJ5W.AA.jq~;?+Vp zJR3_ Okn?.W1IM%*Ur?T\5c^и4GRIv.\y,R}Lya,C/1PklO?4͵D#XytI݆RMsN.d$}X|v};Y;;qӝ:SjI@ |lC2)˨@lz`.\e󸪎O Փ.ʘyqD,1[iib9ROd)Tڀʩg'RVMmZ:$2<1XDx@tś@~ç2 7=grF}sP9_1RГ\¥. ⠇|YF1猸sR@ ,1TGRt #WT"#5مId /Bρ52v埨rS7!=܍3~$V_?Q)46AkijvB3 j=p`#;[~nVV'+ÚCpbJ.ǔL)L"a>f;ZʮlS1G^R7g30>{6W*D7t2|3 x(4(Y>#L[$ڸ+85> %\m[s,͜uPN?eXtE?R|! rVlw&Gp@$.GP8֟ tI~8˗ᄃF&\3&bpȞUP34̮@\Qre\V75=;e,iH=p=4Kf*g B̸Y04?[z0Bxv〳A6Lla*d ^3t.ξ})|ԏ]0#[TuTr93vOa&yDc#iH1t9ql@MU.{dRhx(ՒjJwF]yE35`V[s:n抙őF~ [sXw,CLC2;8*^ U129aF`ʃR3(}&@|Ifh ricA뾐蕬YkSBEH>n-k̿t{-uѰ[_Tr\ˏ$/R 뱋JpR)+#1VuћIRV®WPx9Mt5y-Krr68p~,n<~bsWe6-$Yav̬s>!)4JhΛCSbLFﮰlY& B) L/0V_E\ ^^P)БD[Z "& 6;w^_i g2*4o">urcp3)TGTѰsZP._1 OZÔ*Y=^@rT%}9e2g=1@Y0S0\G4Nna[0CȾqmPo_DSNwEaCx\? j4%-S8WGV_#%NOWtW\GK׌|`ӊoL/;R4WŘ- ;P,$Y( dtuU ֠+ og0y rI>P;2kb]:Ū@wVm0&5Gt5rqS>c2қF1FxfNպsLT-4kͺ1p56W|fIqy>?TOʛa_^^pm </,C¨Č0M"Gģ&00ғ+k ϯ,4:װb{sUah$'رU o7kH>PS"3L[uWTzMRLPWζ$Q{RS틬~C L%|6xU=xϵH@,Z1)ɹ` Kһ4pӟhW:Nkoa^}`(`Lȸ8ՙvP?]r‰?5 >wզd5FoEp]1mpqqhf[.ʨ/.,"NA dJ/κ?+o-F3R@ӥNea%iXoEǮwI,W`-[肸v*0ІKEF+洨t᝖ZY hG.-> rX"2׎VY&8sV?ZKLxL7bVӸu"s[~1h.2W Z}du= W/TUݴ$x9d.Ws1߉AeB pM5AAc86,qjyZNogA$xp5m2ٟbuR>Fc4$wVm߫&ht⚳)*AB[ Õ_=2zx] usqTnxD;(zl:~w~›" fZ} 5) nF/VMQ.qh즗@YJCt3wMݬWAOImaXew'mSHxKS_q,`>JkYЕꕐFrjӝsә g;dk8iN .k+=)ZAoupq9mSk( *G[1&(4!Sȃr@վ$t0T8I^a/~~(as8d.]*[_e9&nZ0R~2 C_ hB|dsѴɱEelcY# ßgSR;Jy/n8nCh ^ @>|I@ kH,l*?/>NN)9EBq^hHS9]=g=ּM*B܃A8y ʗcDr\;`2OyU10G>ߋ-i\2ޚǏ3Ci#e_ _ѡYݣċS50lFU{2dR+J2yJV.9KXt8eq1 wh>]r/B=W7GR.0<p$=oJ#+E`{C- 4XBisfN VA׉w*P (5G/ǨJ2ӈ۾ԛ7ݎ0#K^U=A˄f&ѿ 3lio_O(D#1tR#>c%nOq[܏!iIёO vt>X,AbJ}ƦX!o'j9;ȉf%gD`ET%-Oe;b@`^6ttFW*%/@>ޗOcMHxs>8n)̗`ub LN z;CnG/Oz4{CI.T0ud=4U}zD5@C I0ꍬ~wx?, @ŵC*=,f CNyRh5PddR<2 fȱwVӾE"UD #-My7XְaP۲Fш_A%<5'Y ?'9؄)wF/a71 5>iwQ2F%#W%*yw0^ %G;i5o0jRnԯGW:lRѽvndtdPjxBƁI|G@A_Ǻ>Y6*^VC%L |P 3xe({dVWB4Gl!5vF^fQkܿKb vg]^ `* hGtI;@7[ {ZUۏmIJq>Ż-OT${RU*6gءnpR0dՏ h]邷+Wx4YEz84ɳd>>%bM>-ŢڽXol삑W7z7?XK7|}'C&A<CGCc]Ud_q UYMK]Hj<-G$8MVAdoso/6Bs!sYAo~z*#'N*G۾'[F[EvzIj OdԤMgcpȺ дl8&'4dU}(@mEֹv*k?@:&SVOUiJn=3/w1RBC؎:<| _&ؠ49EVP!Rƫdͱϵ>c EFLdp~]|a#j?*FO[lgLv 4P,/mt4۔(1Dd-9Fg\@{_s5=Beʡ*">kuߧmqV`4چvrA"]^WA5YCZL`^.BH$6?pq(\(57‡Wc{ϱ ܝ{J_W2Y7|@=: 4ucг9Hm{0ɽ?BcWڏJ"S9Z{mmx;q%iԖ~xumNV<%ӒWrƢ}V%So/'<?LחJD*&MCu 55>h*!I4d(;Ie&h7xkMg9rRtHC; RQKj uP =svG. A0W;K^nfNcHMPŝ!.'?ap3m}7eGgI]bRtn޵;8sC6sD=!d{Mcŋ?:S>1H|cZܔz)'Jb=x/'2~qDE_\SdRU'c>*Ly9Ky]Xν@J/% ʚQ)ɛ wxD:Vnw3b-'%3暣`M|in~1;|VVRV^Hl60'mC3/ ft~h؂CՂJh&hN̮ ЀeT>,C%@C@#jOs ȋ[Z3@ET5R}KyCj=7WpǵC"QJSK qZijUPi|mŵd_| @.pl-. k\Fޯƻj2w 7EsuY _)v_g1+I?le7\5v3vΧya$Mr !< c~'Yj~`F cyB:Bq-5(<7O?Ľ>hk̳5:V;/ii|pLDiEKZgÜK}-iJP!29 u3L'8)>˂cSux]ͨSHJhR ٱ@EE!gNIuZPK\Pf+Xo*v?,  Г{vM@I_]&%?{؀_~ W:8c15#@gc{-n8v} [(Zr9ZsE 2Y}C B_;P8au0`=nF L_pG\r0 AŶ7nU C%f`M BMݶi2[s(NZQm#F}UsM05)؀I"#hgã]aE))nc:J3QѦI~%{]jrD>dpGVE lU**}/ɜv/r5rم-9%iL,g=Tϴpl;*eF]ɯޠ Hnd5'зlBM;}yiD.i"FFB&޴xĊ;8-$wCyYWy)Q?\~ +}qt#yJoB?)TC&|]ʛhQ'FͽّIz{n==6WZ؍!he0nZڎ^(<،nBÄ`n SD ?Ȫ141ѝI>텲q3 ;mb.)\NT'pş^O^zG|Mx(?3;㇯5a)Q3#mu{u* "?J_|Z^a$5T4}8" Дռ{ljo![/ 1<__2b}?(}n$x|hk\{yJꬕ1Gb} o0 ç Aå]8N !##$G餑T.׃$Jcp ,#R0$c}*z>x*vq Ē&)q!ʇh@ ".94nry_fB@.QKe*rrp'l{BC1mV= Z ^6QH藇ӫP !_kD.7Qܑ}b:L^Gbz$ܳГr𩆆I_Zc%XMqKʥ=fDj-HrUƇ/4V]m*A HjfbX\qUl=Fm]߿_9@P6P3ū[tLwq2'KAʤ|k%vcF `G/a ZsqKAn &]-_᝗W(69=x{.sV f/"QAЂ3OF"Zc5 2jzc2 [׬:~`'.A*7(M%y*> 󻜀QWogi%j7bC=v[jsHl4vv,eB?5~Fo?YBı~1T`DVR4:[}%mt:f`h @)gB^XYΒv E9JFD#O;Sq@ǵfu=ō"(,ÿ| M}5*츒xw wdRB8f#]'eGQܺ٣}D$CXTȥ%_ 9%/S89^y.?iAZg|?Ic\ #nلgY/g|V<20Sz%- eȕ7GI>`qD ݪ+ x%#ՠzΉݒJ-/XMJ×׬/!V/0,t,6eTԻP&g:-2?dk^FGm"_t}/Wi*>9/1-)KyeK8 la/"^D` w+F.$MU>P-SKS<?ycRuOE}s}Dh Z]m/wy!&HH`iH`ǩJVԞoⳇAcMB:QRq'Ou;mwl;ߟ˩tcU%ZtKW7p^7LֵW!>0)9Uٜɬ nU5A> Pρ:R~m; cUu_.a%cg9A7BQEJ){bL q'FڿШS_}zzOgP;_%:)`,,Z't, >&,nLdeSZ$F7GT=/?j Vl^Lv'*҇׍ֹ/%rBϟtז<6FuZTI}NBҼEN@|QaLߡ()\Xk{)+9p:jD;-T"_1跐˙j1hE-7nWL|1sDn?ۘEk΅ʞ+h~c{4VVL%u/(#<>{7 IzrTd_ `aVdh_$?qiZ7b^] ͽ+ ƀف'ĀBb(@QsګV7|(/*܍eBj&&=[%5fvMY{ױ<< -J@ƙRGROwӨ>8v~O 'X%4C/]t#֧c@f'q<:@tQO&ĩ<B$MKe**l)dE \KvgMMڡ'U0 4hVDYW1&Z@=jP>vaPukHsFSdnJnτ=n˔=wh,Fmg*~9TԴ`ymT~w',a;6T)BL|9 " WȓG`0e?#BB(!FV+C<~R";`I%nk:,O%>S,cJH*?:?!8辻 Ƭ3`ckc\u&0j] .HëJ]#%M!_S>2u'L;E|X;W}^]B Sα"uBHh4gp̪OD!ye% wc2g"aB\ܡښbFgnߘ f(js"I0@YZ8 rhHc$TGEV% +u*S_#0 k-3SZe<D \.͞(>@; k&?fZNM$ٓqГNQݗs)dlq\Uf 2+GL{ ztÌiO2ʤU7zfm$fG ak4{[!bOF"f(3-'M`RCϤRDW.1 !AiL }48ؒY>'.$G㸔7rJ/ӎ؃KvIR<9 '65k,JϽs7ŇxW|R %O`΂p4g ¹+!)ft&f98DpN>L'bvʞ2Y~ :,r  F_:dF*fs~I+R9,9/.ȅݥisbc nP!5qдP!,yN*A m<ޛaGתs]D%sZ#UwoUcfG@wX+^/nS㗫F\u3մ{ ~I[К3)e~k~t#b,RLwC eG^st m_N3N 2և |~}\S`>&b'<+u2!ÏHQ#愰 2rͣm77_eI\CEosSU#ewgkGI؀&ik7d&qT5"mu!mnHpΔc㎌G\Jsa~v cxj~1%ʯj$&oyT ,!=i^H İ|V\zEŊHܹD6[nio0'Y3hj2@:qm^&Ӯ}|Mh8ҹX}O4|#9̌uj5&xg*0']./PwiHL_D|7pzVuS>SVMEsP( =ERgl5W1oq%Cg628O1$ fWsn0XF+yYjBm_ȕ0rS#1M>:(jz`QcZmfD1ɟbVՁ-{ߦ FTn? E;9>֍7L$U`}WVD?EuJhbhHф{*uDB< mAL# 5l^0Lq<"\#YAm0Rn|`MT\XHs[dT'Ń>KI@wթ9? _9s0uX|yB)'v=vB | O|L,퍵a87Bo_4v ;7k4i5UD.FdƕV_ƽ FO4tK<HBgk1TzV!U$~7#R1Ԫt.n8@u*^- އ͹ZRk4.M)FI.7쿯b6[oLW wmf?)XsFllՍ ~n\A- `cE#G,P(|q`ۯ~B|;L a(,Dߪ}Zu\6܄Ur)S5ز1sXj3+)v?y;MIJO+K-r'[ xc)y)\ {foAк _:g&n_C\>Tz,8h qG)s 47Y$W> WoJh )u;jς8pRՍˋ%+Ft&W.-ziW˩/~F] Ӡ{oWBJ3酐ލp|:gT]ԎӪU~ ތ:&" .Em}S`R[ż MlTz;ͩ=4cJbZb0yЭ EV_0ՆݝND3"?@y^.R{am~HO/ذK%`W5tYi9Fn<82uT=gb) +B؆D ">RQLMQBd8R^p6t1&D`X=^Fg".,#s~[?xEڕu4<IHI)xOg>F*3t!q{KUQ/fլXAyrGkHj=*mꄏȦtrphm&ufI=$]}4I:6,iW1-#?/obZm^%A}|>۩utī=YƂ9dkzp텅B}R8k! ] 3H%JJ=#F*њE^/TqoSs 9z1qi8d6 E8wĬZ@'x\8 2O,?In@-3Bnyi uq9Rڮ  IlI8lBe 撄U #XdC;Fx!PZ6g=Kma qPp T_*KήZ̕K! F[,0rȷVTa.R{\_=d M{y8dj []$v4fk&31Agt8t y$!N)]T/G3cf"8k+k4ˀ]".]O<*CTʩ^ Dg{g,̈́)v7ꁟ̼(n.yZآS;YC>Vz}QS\vVs5md5 l: 7ԳŦ;/C^Rk& Ul3c G2-C7ʫԼ_J@w]=DGhne77Q6=RijMkeU[ D4Pņ ؉ 8l#*z"Ze/D֍0hĝ/7]akXt8`[m/BȯxTvHYuYO{zk-xGS T9'ě8 4Uvj1#:)"-:,斃 Wb@`R=MtEmϪ7pMx8 Uߪɋ1pmfӛ{Zi5t̵aheIA]f9X1r+rNU5MJnP`sda#V|a=OgQ̴+Ļ3cјrx=2|5/tw^/Y?K.;(*oU@Y]! O*Ws*+Pc \(Xh(m:HD3xyi"N h͸ fa f1F|czh#8eBvCwRk=mZ>29_oܡlXGj q({u?%`J:(&0y \7WAS%G{:.tÞiXsQ({Z %{\KrUI82Lo!K _e oqqAgLGŒԹ:(b0X<%H:-@Ӊ[#1d(<^6(EBCD}w&%r+) Pd8": pe[Wob =tWó%_x|]_Ϡxg JKLZhkF࢙VǼ½:HT?b&b^J*gYw/]C3I[<,\\gҦ!lRbXs;O!rI_Az:D%aeػ|MMlg؆2B <5Z2?;k$Fm/ċN<}:Z,y$)V%Qvgu2O8JW4PNL$6cVtcPG]1^Z9f6 AB8 B̶9e$[nO9ϋeD*1_/s [t*~nы;a0 cEobG0y+*ʒ~ -up/){hQvD|ydII|6Z35Q|P9 C>%^qVt@[v6kbo=Z{O tFVWDj![ͥOc9mC5(ïʦ?h,al! :K*7 rҚL]B&|& j>ǒkIThZF'.RRHE pN;q.OdHVٓ!Y*4%;0zCʊnӝ^y}Q,=|mLH뙛~bVMawW3\;zP)OuG1 Ű}BzEXV$ѫhת84x)f{Oa/=de@!* ns\>H WT = @d}B`/-lEc,6@bK=a MEA^r^Y2nl[g=…cߞFQIN @BQq-/;J8H0\>L!d@Ǵ1 ܟ!S筙KӰ5TpX\tRM X-V͍<~mTja #q*<߻7*YꋾT& ;Si;؟@GL`,EMd=eԒ_ޡVKB@Pkbd>7.dy8r"3î}oe>\^r| ;A G擡!6"ίw;t2ARTJ, }a;% t_/: իp]S\MU8\WZk;?;iL2r‰(Fag y%) Եwn/}=r|ǢĦ}@|rWdK}'7)R=@1^V%B0dbik>]ɶt_IO\?z + v)h̤hf7j⧅K^l!04 uWҨETs9lJnϠ 41~zh<ϸ6ydK5>@S.*nPCRI$F]An{Kkwgm7]|zf鉣XM~G)Z ~VQ}q04);ac &I if-=A\s:1u %K|ot63\EW]\KS݄, Ϙ,үQPnF58^KLݙvf׶y3څ̾%kEI~30e6sPh)w&s`4Hk_6+'mlLoHHXȓA$el2*a}PK%u eܯE%/X E?2p4<܎)[< MzZBXTUIv #bmvQ/ L xPxԆ۱g6! h.h~}E=T7s㻭Fϧ@fM(>3`#)n`(@#Tn ֦(xabM?&DU.~6Fq:-"?b{nM OIA7*7oJivD*q"H*ZXi\ǟGO r/&Or YFO5[͚'ͳ3PaCZɩyJ+P0p %pSȚnU4<,@/DA3bg"2#i"I+ԅ+ "'L幋pSà9ӬjOevj ]LH@f"~pRw,jq$V:x|4 <-Jhсy}r5b7ߡ}nǎ%5fˍ⎶~,D:.۸#6,oJ9g[V`y5a.xw䒸Ò5(TWZؔβΝm?6=㚽r@9%sגm)[~ aZ"("l8 #7Yk 葝P'sJ! b8&q Y&;KUH.[MJE+vYDYe]!E)WG{`8k(,ӵ"x9$/[c*p#C`{I6Jĺa9Pw'XMJϥߴ[Ȱj́U=Lf/_#ΈDҹ飁,}Ӻ۾B6#^EMsd*z㦅Nu6Cy =׭`v&B~nΤfCNZ=\ |]!]KCrtdV| %.aJvx;vt]'?gNNnbmnrp#gGGG#w&U"9pan!]3|cD!/|E-ݨ_Hh#8VCP]ݖb" "29Rcm /wؑ^kjI I3vDMɟ0Iu>@i%(zfe+7)/>  P? yUk7~`6D~~lQM@Iȟ୽=;3C{`+0a^uK?6͍r'hʚ*ySBkz¾ԟȨrŘPE6"ΦК$HREz &F>2T9Jn?M* 7ӔP`FN%nI=@e˘ ]/ SuX87 !OwbxV6$]*KaQ'C;[wLZ*,"t|Q~Cu{2gt̥h/)fxҙgwm#^BnGEy׋oBtF0,&*,Pbދ`o|쿣~*;dk28gi{D$V`CR|C(Sit qc~w6/眜3%~Zp(XP]S[t/oÖGBǭJZ^+py  H?n,z' 7u*}6{IgT+KuQr;k$#b:/YX5/ QOF ]E@e/+(Tז`B.bc:틅&P"P+UV}Ql0ZvQ `o@j[ T<Pdw}妄Zƪ^@񆙌\NNluW@7X [TznͱX? 5*R@lw΍0ƪa{(jx|Zޫ8VG)qJݜHڋ3~Z2M rչ44#>F|Dr $ډX'7*ΟFɻ:D܂<>J<G EybXيtC_WւPGc$-l)+Չod#9g:F?ťٕޝ FBͻ>N=$:ɕJqM'Ogsk!?kC+n㠸*[Ӧ=Yl -%>ʯ;NٖC*t;xЃ;ʩ?K7 VGˌMx D\[D w+a2|%9.#C;IIMgMi"aW!zcy!"krtCwR.A8 㤏:%MGp w6]9Ftt8z*/?axExڐ e ICBR` s ~9SsB]dΥt7UT^]a*{6w[Iڪv{ w7dvs7I,= x 5ZۇUVF-WG{ HekM^"E%G@GYq=l,KRac~zذ&û3Fd z72s>mɺͥsOt+tJSB}~v^jnPOREyrkk !uqKqAh"|o5O6|q#kgRo' ۏ*L mkQz1ך^&s)j+p%iROsWMLK "'z B=eR9 jzt5Ci `Q";nCd|.˷l4-e죚7Trgn]^,q$l mN2>LRw%͘ɪYKLivgG;..6x=˼BipzLv nSC97VH*mpy, NNnbIO 堳?=g&K%+ug:eTl(SM$|U⬞ };ipTipMd {nW/v!%w8׳˯ǪgcuC:;#3 qk-c~V5aI[1 UBB(GQݺ!ZV ooY"$ke)GQ+>YG 6c$I;olb*lSŌ1([ ޺&#0N i'C%vL0c43ݔAjҜw.b[_w![,ɥSrLc ފiPzOܤ晲`DUѮ Mg][֪?7oI}?"wЍl? <}N-xrC50F r#شmvLa lX(8k6?w: }aLf)#}\xb<=t\o2:[]\Ok`e Ic躉ulti|`f۱P(N k eLYX7 ~].n? Iy+2=qb˃"˅Aobѫշc>h8 !mIzV9 wU&:"yK뛄_w)CԎhu,6#fT>H8N]UqgtWtuO/> 㔫3o MF{%PJ PZ_ Y{p,Z1{§HCk\\WIy쎇R! ˹s$F}"ӲHK>pWuR“,~YkA.y<`H5v>(!` WlZ=n.[dJJ -3]*|Z~ſŔCCR0('zo`K,Hk?+Q%ꗚl+..⡸mv WխyzL!9W(kYBo]pT:{yRF)%?IqrqocJ0=v`G/†G(ͅ:zZApqtKQvHp.BIxLftF{n12Ç(Dy&\ a3BdqMNm<VtG79xI6 @(v{> 9Jނn8#\#m/Y1ս&=,G8-/eSUaW$rfӥPr#ŸIQbpk iF?,&m@vwy(pu="w0!]tS|\;1Y)M9+௧]d -+dj) —|9<r(K* 8aaEBp%uJ Q"8Bf]E$*]AMQ\PI`&!ZLuX|Gvt2vIڣ%Ö)蝅$ 6\Pm;H5}pWݘppE&LV\[9w"n\xpOSlC~ٴ1b ~w|cψ. >b {f @5BW^ [d]|aCJx=&o7r$~p]F!c*dqX{3^ըʯY ;,1=5nwӕrU(}^7fANB,/;%۰W /nu2Hn3xG j?VA4)7<3j9p ޻&SQA96Js\ =ݴEn?Ȫ_?'I?$iȵ)Htz5:Mx(n;is].U:ucsEtΎVCԎUJ& w\^SŀDfϪ#I?MǍ 7 k9Gϊ'H㌏4 E/U scuɁ?v:`p'`4 x !!~8t! kp &zwԡFq2-vl Y'뱸bL/!=lc(abhhK7 Uf$c Fo?2a>*ۀ%\,%S :XY"C,!HDb&s̸S_ <.Ek5NrMJǏ d%u-EƵW}ppC׆6S-}ݍ_ey:oٻ (̀q&uV !Y7:]YՍ|섲G"9#uкO3/,0奍Q`syرװml:So=}9cpguK>{CEhx+4r7 X/E'\-6zn T֜àuޭL` ϱz9Y,!MY&[bí0#Ţ >ⱸsp 8L&՞ 65爉T1w˒#dSφ~7 Aj\+ZmO87 sTqיԔOH!V.Hpg$!8 k^YmW"SpZz?,og$ $v/hG+MzSݴ욈!QKs^-LblXw868 ȸdPQ@&?B~C ^K3vO61jI}w>vg7R%?4E.18y<;8QuZZFXŰmq~8ɵb>4o֦e,Pld|jh)ynux s D~>"f}Re:hGfK`8z.֘2gI^J||"^@<5IuA)=<cNL߳Ś mlcd>Y,cY[o|:1p_ 1\)Lh{w r)o f,m| OUW*!l5arfXE6ux>l%>E?`SsCT^1@ oÙ|֬D9ue>.<W/}bv4u @mU/̽>Ǹ _c}d`_d^&eq*v"/w)N2_P#ʾʮ: î* fGiz@0.3_Z}[ZDW)Ť5YJ7'+TAbaBei%>HOԤ?WxoͱSx%Щj|-shHQ,BQ}vc?r57|w{y'j@bh}vns2np0) CX8Dр1QybgIWu^ M~k+1Lsa}03S/PRaq#~iĂ3d;?]}0y)咠bYe:ԃypA b:3RI@~~Kb!7Դ_ CfJN/kqc>s!C:5QG8,gO䷲]\8GZcy'Q `f ??c03T*]܀3g!▔C._m ^6myjZY3o0b)1SࣉI%Hf5Y-&ң; M'X,[b辙p P J4#X@^s9xZԬkR;EnC#ԍꦻA6Qa]jEbB+tv<ŪcnEOaG,fy~5`Hoqm椺ԙLW|c&~d^DiSblQ9PC[zMV.ɃS75xvŋpgB -Y\[cC*"lK4qxQQ8jkͅeyǞLGՓl敓~ϒxxZ,JЋ>[4'!F؇4%tE Vmɸ0{E~)x]*enѳe;4W;ʬr?m@@ra쮱rNTV?d^&pK7W4(u_*_\O6=ZiKnep}\cT a^eC:Fv-'re*4dn+.R /&#w6(m^xb!d۰%I+kt|q'{5^|rLL[SyJ2ő\j+.[ɋ;GY E`aa}e6xՋH>vV\yM3::{+YLz iUOth){kL;U b^7tc#cOEf%xϑp) Mb#xڠ%b|vڔ칛#a7̫3}Rgңb}Z=eאEE7S _Hq2s#FܔdԲ4#|N$cJN.A7o>? 6o!X)8l7rɐ~Ǫ f@ H}|"nS@ 3<;3 ˢ|8r]Ze-~.F ~0qtJUZVɔimxƋ]TxSq4s0J6e7=@ ]qzݹ8R2 ixo7xD'cßoǷK^xz[r\ȯ`tlC^O.T LD79 ʄD-lguoߑʬ`.T 2"DRH܁4nvODzyof[ ] ^{?! UHfI 2>Ij|qOU4ݏQI @/6&R$3S.nKI9?xIhB#y,vp7-/V0%Pif0\ MFK43btt^oa9tX$2r7pS_`ov'6@9axx'5$(\覛D V0mڄeO _ϛЙ|s`[o%D\ 4 (GE^|CinDÄ^ ۝շ9%%5QbsUSt3 |IWwJNsb eskNk.Cp%ĖaIR|*3li:lMr吨%C2:4yf cg'.n|qʝG$FcL ۟\4Yqq ؠBD" =!@>.[PlW݉,lxjVNX *ZJ9rR HM~\NVqN :^3]LA_XDdsD[7ܯ'ș$q"g,"/l7hYҬhRSpeYy]Pvu@={ #mmsq;8?RRIi)J-1On/J@@;0 bZ{aXpNVraLWY:z7i3ne\1.DomM^_|\sKX!溣 s)m@l.+A!XlV8vaNRVaʾa3V(WO\=ӊn+ Uߤ重V cZMd1FvN腪XB$RpWtelThw4]5GE`|&,D!nC:^I+U%;nvIb\\3)HU·ԀX%P̌fWΩ 4_G!g4` n&Dd5+G|:l(c !4N̸+Ӟ3kӣ7UNMvr?F[]F:TRzYByaRՈ䓆^1vr 'VU=\H*5Al_VftK=mF DExCHc@pI.UׇLKVcGQэמ:D.,,'m!y][oZ\,oAy͑RRwlKgu >Dlr ȱGM k+f k@+F3J캨\}* LoDM"<:cZ6ی|a:{ŸhC ujlVE}# cW0xnF,.9ki `5b%cIwXIeK=+'Lz;p8ܷp-S@j1UB@xA|v1f>J'^<ҔtM%Ft^!jS[hy*7U<:!/Dq0vdTϑf🔣-g3Ðb4_ r\ЦlFߢm6IP5=RFj4NDřY^G[rAAЧWWbGera33 ɶMN0̱"gj`2, RX*XjtU7APHhEPoh)>6gC1(BK$Կ{W-"%osY_:c5"NɣO 8EM'tl7@΀@@A3M Z{8:vI_/zkCĝU۪]\oBQnz^|R/n&6lZ:?ѳLupmxCC9ÚHUх]sY y>;XZ|zv۴3A/+U6E"׎% t3űsG:߂͈ǃ'*(i 5B'Ln˚UjVFLWb>#%"q=Tºvl{ kqkǻ/0@9^RsฅqEmZ,vŴ4`$C׳?@ոà/'e2x_/\beE)$`(Oc#4h'YN4 Q,1Adn˗RVʜ_tF3hi'9O. ɈIlYʃxPWFk=9 ┹IQ-R%@}b(K}\-y?3F⿎.ڮ& o)\`Iސ0bʭeFK]/x{% FvߘWKlHY_.8z z*y'mL wL/6.|uX햔\u!]rl[)8OoDžFR:NEbC;DC>!Fb}U5{?ڂo =soOUy' G8 RͺK0G oMK`p<&IE0DvpaONtKaE- 7Tͼ)!6J׹&N>LOݻSp4.B0@L!C0 Y([P?~F긴mף[u8]u!bmIh?Z!ь+\`vȾy24)t~R<`_yݽ!NXhX{&Xc oPP-/4qx rFh dE7i4q0u m R Df;+G4;78#Mp Zz;V'@>/)}#4s͏WX*+8 p9U |?e}B6DG!p1gx(]ť+OqQH\d-O9p˳җZtU b}-#2:K̠M\#,au`ʰb) w=)GW[t= W(Qga6SP@lp^^"xZX vqVDV9rc}5άUs!$v)n=VjXl&>BJ%~|q, A,YIJ1YQP2/6Q=R2Tfq{eXQE he/t8gN635R֔p|N ǧ'88"\, xR0sPR9`R9V J(6Nl [K>>띪%YAK^I];q嗎+_GyJ^w<-p{pOW+կGHIXY%I-%?@׋J3"lזMHQ?>>%A 3V+7U% ^gN% >y`WWaW瓬:`Ɲ9%ZjD": $q.g^`.YдFE~k@sO"b{\r z,J|ra.\rVC:FTZO`$DC+xĬZ2)Mq߽/jb=խg qjVb-;a4\غt;$v:UM7 (\'HhG7EךO@}9. "|&}>5BX MA\ne<ңSLV}Ė/j M >d&nF FȔ\ J+4vFFiZf pxeBa3۾9gvAU3୮#; UR5)ƀ$ ۤ+Ϗ;ZPJgev%?*rLxX)5Չ~"od);'=U`Iqbgn\E"8u9H}w+"^a48S13voE2+:V0-BCÔMT&P<5KGdO4PK f\ Qb6$V\)/O֝_#=\:iDR2E> tHxFČ7[3>aqJ0`ݜ+j$.e0hǭOlFI 8!<@[մ*v?Z1x.(zM9 AnMJ́^ :-v<9qhL5븩XzD LᅹQOFsR uI? CZ_3[VZqy˒cq"_ά]AKlk(>XѷnWiK r2@eIw"#;@YCTWn Z;d6g-kGS, ?+ZɣWdPe9un QbP\TŌ9^<@"d=w?Zڕx^1+[c>Tm  $C׽ClU>ݷ;w7Kp D&RZw _&$eST + F4lq'T;|^6sm!Lqd𭝊Ō$=R~tXkR &X;$q"cUMD!1V-z>J#HFW跕 Ób+e89̊`~38 ! nt ,l ۛOV.guh}ziϮ|f0V 8J6_8t؀ngN/5GcJfS=W yʗуW箦Q Y!OnpxB`cX z|D'ȗ3mfZ 4~vlB"f g;>Ni܏?X^rKHs;)M¢6vo9p)*m~E&ȿ0G0D1ݷ]r.AB2 ldoÄE xW2!0OHvSgţ\qp~ʰnPy|=pIWIfPun 5Z9P%^!EEiL=l'Q;ϝb6U=Jh$K≓,JEEhtx'3t'`!B/fa/11$7A}sgU8Ș@T(` *-3_U+XVx[ބ-KgQ-R(2X.]k%s*3st@q5>(':}ݻRm3 *5V@@hCIcs!F*,U_M'],:i!!8E#8VO:|rYclZNAwu6N#BG+MJ`JN?g_aňJ~*lm6kulE|2jzqWHfbFӫzHgEO7vXF3S8ZT)lGBgDCL4}ƜAJ3W_dEr:+y#iXA;W@m<Ry,Ee20UelS0=dQ Às[(֑h?h}TɃѬݵ(u qX殼MAyDV*eR0MҘe*#Q3 rFEnswnϵːl ʅbK :_Kl!pԭظU)G!L7Oǖ'D +IWy5%dUeG2w%H N KԿL]B'=1^;-K]Dsovch9R0]D' [4yMCBY=d;OfW& k(SXD=3/pDCdn0@Wn}GFxyTg]hQ1p i[؟Qu^JKNY@DӇqw B5G+x;1VޏN/ePVj,ҌT M&1E9xTQZ(ti?p@#~!X#b=}tLuIt$]JS;:1D)`cEMͳ24J4Cш.>}⼅աCq;ƩD%:5O8DSDhZ{8 cyŢ6w|puh; Mė(@|%B}o. ŀΥy[@"dz`aO`W1*1T> FwZ3\ߡmI' 5nJ1>vߟ#֨t@f{:ӃA..@n4blu/蔨NE[fuVr[̹d +̕ݱi'qi4["5s, x:";\j^L, @7%`$iY #)HfPf z4gGk\uè 7 bqYWh(c=h IBh<9+ΪA &Ѳ{ٵGVYJe1OYPBUEIbwehyf/I?{%Wa#tX z㵭PX A"%E,KjhQuqN;ۣeK\Ѕ+1E3Z_s?->黤Y N1ߐAB6y#3bsc-ٌy:Ђ7϶*m .2-H'@^u¦?}BGw*̊w(2sZ[<\R 5?~tɺ")h9Jc~d<q٣%3 Dz)Yt|p_;ƌfrZ5DCEvیUaX򟈤}d*熱/CeV,.K|X!n 6amV뭣P֓rN&'l+cXZ ih6R58q@l(uLQlb67 ^TaH9wt}`!yVM5`ʓF!e7vEPD_[8-H7"Qjb < t5O_?pezj SM`y*^OpDG͹bw90К->AAHVI>zUX)1!"-1|&iMmؕEjdnKu!Ŏ&V 7%d2&{Q̅%&*Wemd4Sdlr7pʂInvX I!^Wf85?g-kFm 5ĴGRZHލc)N' "f z{Ug}KVl ,8N(&%PCg\5:kYȫ% ͕-8\ҧ@JR"w>U~]MWW$;"g#%^> z&9nT &wEo/Tp`OJ쑲尓S=#){EM3ҡg!*7Bk{҉l"sݥRŎ,Q@0%pۑke37!oPnr&w *hr,gBU=Yjd7@YQٸh\@*0>Vd^r\Q~M.Gwփ>o'f/}03mͧT'ֽrfs@0t 66{gͫ\\ cï\^D[V e{zޣw 7Tl Ԯ..h?U>G3l5Tp-:V s|hJPӖ# 6 UiBZ3C|Z쀙Վ?ڍw}dEWUeX6QjB ϻ{',]$ ~/.WT5l{_^J߸]#L~{4a0s|g !4ـڟ%!|.$ARI{M$(XQZ'>'VG \O؟tn}Fy9G)(9}#(6DCtACmhC؁р23K/&;aN\sߚ`X_Ąt.["ꦶgduCm݉?7't~zMK:š'e2P*(0N#JU5.6jp f{CLK5jks,^~^z vnQK?kܗӯ_=0lSbLg+9\ޠ1@-l.OOQ!1ig.@YY-$0z mv<3vkp`it-zDdSv +Rϭ4X-X<q*Xl! #P)tk]J*hag3 ѕg!JZס&mқًprTHAD oI8ġf!giuUM#`y7Dc6&dKl1=ZpڏDi(O4|XYy:0踍C|@koL`md(rk{#~t|Xc[p9iĈyV*MU1v\_R9լr%y6bV+` N/8 ;gt=Ée(}qy$ f!D $owtn0> lK[ەlśz-$j G/?йko?T$alc . ͞,A =R_N--1jޠ~tI>"<:s #_#l1v"=I3)hUքi߳W>_5KoLZ7̅7]#Y>e.*1ӖȽ˟Zj+IV# M`GrIB :3 |m(Ωu8MŬzTFzzS'nO[adm5BA&Z4#3NhrXF42= ewc+%32t;UV5siБ~L'Y$nkax_&7D92@pIr6gs=okՋphi0:t—0OV6}0}pn0|!yn;j͐8*~ƥZ`K@*֗P,96YL@9я7%aNɖg-*Jj]z"h\VO}#%ek0_j2X޼/Ș!Uv%zi!~M >aQbxc;!s̜w:CpӭāT`RVӟ %]1}wŷ5$*lql+efQeBkі9NgN_в&4_y%7pwk 35b)?BEq85i}.+nk'jsj0 u81/@TOuk M76 tca+`X>'#%mѕIIv(!:|$x2do6?N]ִN/׵Jzvn̸mOJA58Ѻm Po :fAC X̫.ۢWYrXh vzU˞*OH5)*Ȣ$x_ԓ}&s4`m~i9)|#iVK (=gHoiS\?S+NbO!=`.IQ W ۥ}NyA>iJi:.TcGV hBaHl3+MY᎛XϿHlm~ (jDH;:DlsWʑ0 i;K9/t:9審wIjd乂;킁/Q **q'.6i!HS¬nR%>bc>B ?L JUۑ3`צW+-b$yk;xGŖ5@(An1@KZT?=;H uO ʂq&kGP<ayG?(]k(]䔮O'oཔҘ#2TGЙTVeփt y&*3{x}pۭsj5@ƔM\L"`0nV%F0\9en 8G*\ 4y *#Z(=yjmk"\t8ielֱ,S6>/5cC%̊K?z{]' {ha+MU[ x1W /xc#¢=qAƌ8yXf/ "K4>?+w59}n!k% Λ7K!ߵC'J:;rKj*n3bʹ'V!Y i?NDmz1T6LQjC^9L\JS&oT*||X*1}m] .Yw]860ԟ,r@rm8;χ ~ *)gjڵoۄCȒ;420j Ѥ>ewE ?t6u7!_EċPHGӦb덬.2VINẾ’`@ʦeq)\`ƐK jy+"JWHИu OpB$E dVp\* ;\C=r ls#*2KIbp81VAB|͵ՠ~o7 #6ѤZS}4UcS72az@d|Nʟ* uIqF ,X8Cٺ4]л\_gk=hE?cڅ7F油-؜uZuBJ7+FgF_3_>RѦ`:OhYWmFnRriOj`2BIK=Sn|o~[E2 j_WW`Rp[jي3Bry'!8@>VD|͸>zz-!F('Cl^SF}W2Z{\wҋi5v6a*j(AIcN]'y4F B<>xYdS\q)Sum[Yv%b7R+@4LSyʀaˀҮ Kwg f ^iq⍌b 0}EPOιx5}~J~4ܺkP/uϲq+ C3C޼XȗΣ2RJ/qP5F`h8>-7eش'ek2i?W$kSH+Pћ l,k|,+QR aIYXT5 zx5XzC;6XtR2|,pb"u%*Z{h]cmL皶,spH(>1̽Vea­|Hyqe>CDnA]SЧjBᇲ/8`Rs`GlVrߦ0УLM)/R.Fn{pϯd!{$9gYㇲ"^,NIUC?i\ Z|ę,A/!zyV5BȒ/N裳ffe@m8:s={e=m<yÿkmF!>y [mBRlaU`ɝ||h+-R Iqd8 Kۋ\T%؄Ɠq3=`JeV˶ P.Y@x5se:Kuzŝ~#7ݓS@'B²\c+RCg+3r&G]ل,b7ufGCV5bWPp&k |G)z;`R/>/Ֆngz1;YUA H; VɅ&Ғ7KpJb6 8UR)f TU|k`VkU"."\#NEm:\ED7q Bz` PAڸA-ST]xn&=5gě^ɜ[f?lܺ^AV2}mxmKV:\aa)3zmU.Z#9Dg-Rmqb\2@,F.%dO#q1L}j]T(&Dk\WWSZjM2rƅSW˗8a1$@S#a`lONJM~N odz&\f@oկ'K Ki }r#ț}e//ȸD=Z䩖k{6)w%|OiN5SdwR+# % +I_qY!Zpk-G$e$5eg9Owu\S$-_,&k&IG;"9i8v}EspLo-]e64 oExD;ٌ/bzmB6 Ζh#L*󨵴i" Ӥ;ݧ[Ke7X*6yww>:Ňcedγ`+vҧ+lToFʆ+X#.E~,2}+8$`.hT%j|0򑔷(#o,ڲFi7EhApx}usB{vu5tqweuW5p/Bu+\1ʧEDO*ؠm"N=nFD9+Yޫ質X4P2L)U $`[)j+1t<W:Oȇv\/j7V_CFWLlY!ȵ@\*mhDnDtƉQemZwߦt85fU$FK@GsLL+_ѕW0c7s27$ xMtm0gQ#vWLl[x) []9yNe-&dM1#<pϭQsY4sN\;`͍NJP *LHp} g1hbƟZTD gDPa*myr0"jYo+ ܀Oޡ𰴅rM47( 9C!Pw߮m1H <*QBf+T,K<.ALKp 舼bUr=e4qvQ7qzs4[Mu1oTstP5Ϝl^v*}w5sL?ZiLۊZw.xm-XDsq_W}/pF4e^GӘ"( =wf1yk,E?v83V 얪tMnpA􍂾_#{|έXl0p%u=#zϳoJ","g>$zd!1ن P3G?udU,z$݆`^Ӻ] K؆ΤRC8`#kg#ະB@&Cqgrp&e>h *V:Oz 9G 5Q{\k󏨘I|9c\;ngTѽk?Z)=;nuVh p>,7M,ҿJmW0mXLŚeV2d5gV)F|KKEWµ1@/8Su_IHS%wN(Hr 9_-lA 9huqp' ~[Bjh&>MGC.ϼл3KbMTo3\۟78bڳ-y XzTkF67|ůiq硓LL`KjEDIxQz,ZT ^m P%=qkH ޟ5$؋:7NU'"kQO50O04 2׼#ƜN LsǨҨPYBc;ͥˠFwT>7_ ]\ k|uMhhdT=, * m%CH o}ӈMmfs3f[|gs: +nm!yn+·l2hx,lhw IS7tEkOb% ʆD.C*" Tju*ໆKx͑FDҶyY7Fu*B5 :q̖s*M44e@`z='( 6'oLZ8޲Oם90S(_xhL,RFqQ~̏S_8C~]F!Xp{o6w0y&Wk$1c$:͘PZK^Vr-B?dK;(Ь'ފJ)CX=JC]n^)vRIt\t2Dl8?<ш!jj06PmNej/ r2e~",_/ff_+e:"KwB_KBXHMLc y(ܳBΥ*e@oZ[VH֌UƮ7t[!n)o畫s ?aҊU PńQQRD"#~u8dO&ڱ*J?YרБ@)GTGVUom!ΥdjOO.V@_UBu5q||ݱ;{]_& 9b0pYZq ϊKxFX_D+vWx\A+)e)uҮxYWYQZѕ?Of˿',e7 yVو-≯1[vJ%[MLd@*I!/zCU]tC*)<֑)庁: 5N4 9";VVyS6g!XD[42Ěa8ԨmX>h:ixҺMOH{fo<7攂Ȅ%EYGy|o5=ns.m*^xcSuyj|?̷7\53֏H.xf +J8**h,T[$iOdԔ8L =4t*;yRXFãC@EΜO( PO.{4ޗ%w]v5sk {x0H(FX^e6$q-؃$| bRBKxE)Ehѱ3J~B% AQ+*x7mufwJZJh:3vB;e &k&kEEM=zz"/tsG3ֺ1܄jWu}tM:8*3RSyy>;0YLՐ (mݤ) lMA'TT4;g/34u6ph9+k&꾎w\Ҩ}>TҎbeٞx^L] 3e+$h9e y]<#3r,R)`cg􏼷9"e$ **z`O62JBiўxCD9[Yf #=^#qfЄJtvU#Pn@񊝺&M:T`sTc mdK`k}gBG6AhHՁ{{e[ 'T9w>sb u]B5<.E (pf\|*zҠu4\.@LuǻA ;|м Zges='"%raϋzJEYqk9?6A6f8X9k.9ur(鱵në=4>p6F#Sib5O,G/<*@L2N:ʯ;SϸX=䟋2bwF7s$0Mb 1S,:pϙsgA^e'rFvS d}0f?][W7U^&OCU2HR -EQ( @-14ْ!r1Te0pxB}t:Aj_Ie_x1X'WI GBFzT]T^2pc|E' э[?@e`x';umH [anmcC#ml!ha77;q.gۦloN40>AY䓉Q?wڑ'cHLYWDŶ\H(b7l҄h5jeJ4dW<ĆLjMk[bsEzݧk+y wQs#N3n8-dL0*qew+Z澰t# es9FM)AjBQs 6bd<Ë^QՃ:e8fPB92bj;BE)EjHS_ߏ472E^k*AHE r,2ң^OҟzX&}sɼȪƅ\k>RCr ;Xd8@^!T\axj;#1hP Yc'ZbwbRwDbpe~H[TjNCԣh揹e_FJȚtb5(L)2 rSifr5KYv'*]ՙj'U)f`U+Pzb0X{1E\> !b)Z% sWmuF^**eciDoȰT,3kuoy{ &agTEXk\բΑH.d6+5#c V^̍ cXkg&8swJoh[sk,'Q%W/" +1 eW1wYCv=+Cy#711au1?$N HNx{IlsY?⫒.#743RKxI!,E7C֑>1es };N_ cgyToS7aB~p|v5}j!)fYMjP#?S+y |L[fO8 OUjaoUK'(fZ[,, ]p7;.=|,qὗu#B`G\j]k{8P{ڗ\E@%vۙFR:0.9#T%1M艡uZQ'~H=49hTG+v9[*H5wϛwP^Lϛ p^ bv4&N $Lj+9 TR3ɋ E\W ^XFǍݎb""yU$k*]l&R;=pm5:q͚/0L_r 7`k\@kٽxi}>dS'W C B wO(挛{gwSwZťI]aezkU侄V L8:(#&|-yl!   !r!Aw4V%5!nZ,GvcmN~7Kԝ5Se׸^7]O_p,!rt-4MHVC]<0,0;(rgJg;Ne:"{OvJ ::5M{sG)-0Ys T)N2U5 T5/@Pz,aT_cS>u+0gil|_9mfn xut9=P.W*mȁOLboXߕK>t*xuXRbB $ M҅ JqHYh\B}XUӱ$/ U"5bŶNpp)g^޼NZ m(j$_KZ}Nݣ$wbh")&.47n=C#={wzMfQp"s[klWkty4W=2Y? $^|`~x^v;YF> +.+FdN>/(k%117Ȁ#.v]V)RKԠ._:'JǓQ~=/Ղ1&މ6PNFnY$q\ +䝎k+|u@grSYE}dUcגYx tŋ!:-[.DKC$_&@4J8R)4 nY*D#6GڲӌO.E1c8* s JevF:cX 6'>E+4,^ xj߫H(h@&jGL+Oȟ<{y]!2G=ʽ~a [pBEǴn}@hɬN+] Xw;}C67q :-3DHpTNDž w2?"7EezwoV{9(C"b @DRl4y_ɜ*͸vFQ`yH!hj ,ηL,twh[gBӧH~3:@r/y|?٪u?ح})b1#C:z8.7RJtndmYi7MWAYY,㱃*n (.๲T̢4mt%Ʀmco5@2w y{_~Wۊ >HxHچEcr2]&0=C@.^d-y;Q`>ޱƠ0EIJZZóaX3^yԽ'yn^>(Egქ[ʂј `E3B=?NGF@~/:@żin[RCPf@18t gI /[Yu3idXҜ#Qc UGhNmrXoi_0CdTl,saW ȧK|hkiqZXE `C%py;7w 캞@Axfϣ7?抳V6hY7{U0ˣE ^愲阴ήG8+F [ё˒N?VUە]|p$B#:t`Y+!)E-(/љ_jwv6oHp8a,JAj¨;)35+V&dx>FI:*Tu(1B5Yf}0!QwDD2B`؆[!cs5|j(፦0wWۊDule6f"{:9H 0H9*\XgؠԐI빘A*h*撣T5cc[@~ FM\^P*5,wQG}@j?~)p>bNaUiX7SI}BN}S6ӟbQw`cҗ.%C9[Pbu{)c^*ȬDIpq~?Lp'_d"ML n|AX^"O`v,@B110rȌ2$ii^@Y'= SNc/6T7l!M~9z q.NɠJB@@^|ƾE[6MkҊ`I}#jWCvnm HX{l9%J8H4[hF0;Zo焢8⪶4 -WQ8%8[SɅSxr e/ߢFj`W ?xhusSh"tÊ~N4Bp& nbד# m(; =5IJ>o:(\uD䇕ƠSJ1%K}Ȅ H *.$ z6meڔ-\CV"Ղkm ?XUN#mn+Te{yc|mTQy~_O]$6KY 88in K?&[2,WC>KRd(Ɠ6qT';y޶]Ki:ir?,paQA.ժxB[b캖@p&˻cW_my49(e,-zo[[.Eg)ԃ/,iAzR37B]jR][-G.7HZ%{r"' q;Q2MXV ߂9Fܧ.JDT-n\cڑDHoW|%ήga!ij N:Z2~\o>B$}M~xغn񽐞&ۿu)65={y?m . `.GE=hq xD~Fo%n#9Dyr(x/&#N:وzT;PG̊u%[fݡi<1edWJK+hFspnK-s?5x§Av=S!qxuN|8>9f9-=edYp0 FHx\6E3:3* A C&_ؓw5YˆSE7jX ny !7燿KxeK]֐LԖx\> Y>eGy6^:G;<.$]&dz ňGQ@dҼFҥF1Sp,=Mw2@l ~2U\gtl'*Lup-詃 A!])O0e_ͨl Lui[A;'}aA0vag#_K'[ sE=!|˾tg AoM7dܖŬi,gٓYD d?,Ϲ _rI}f[#del; {Nm<9G4<\xƪ/b ߘaO-DH`J )2X Wma]$}m4~>l{)JRŨ72&=nYˆ.:-v$/s">FzI^f,%JU UMKiA35ԑ, ycN\\ 7V):ltG{e'.B>d]T~jmjF/e_ ]dʟf(-NЊ$WR0/l'- y-֔KB|!#H> J(~EjyhMʱNz9wLqqE!{0U8LJܶqSVF~qЕgP0'^)u`x++9̰-*c+frؐ,Nfٹ%:xJ%gaM҇sq!5TqR.M! ^<=KһF s:@`ϿBXh0Є# #j94B0hA*5F^7`ߒJ>h<ό;m<b=1w͡=d7:e18Lc <^p G515G F3-8 I8.%V^+b3 N>-Tq[ԫAfTx 0fEBъMD$6ʱlqL?:<+.-ںz”ry1 B`*01תR^번rjV 8H3FJ4) Z.SD `̡l\tUE_/);eۑܜKLyX/'ɀW}q+rɠF,4ɐBљx:!w]'Qu9RԨUzHZ3w~vW b]TW21ӵ7HJ&^,ݰ_A2b0YW#[N0Xc?E5f?,+%-^0k}OQP3MY!B=iq:X^_Z;lѤӘVV)Yxj|xY]gl0w.ͅXs}KڥdAYānNv@W*G%۳DmׄtD`F(ocvGT MzY"j7K# 1U 4gW쉳r$RWu먜@kLќLEq0$riyG+o0A(ɾ*جpeh8.-}VbR\CփZqaeT|Ae^NNKBN mgO IY ƒ,mD<f¹޶,"Q2} 1 vr"XI.nr} ,h&;:1=m%ew9{ },ǀ^`wPa)Kة(x{i{GA3. jjy:ˣPt/i?ٵ'(М@~%:ιo2iD"3 **t ON. ;hj # HŏDe*Jw/zEZpȠ (7M6!ZbGJ.4+8$I=d$}sxR_&}_#[Ws/rqt& 1`5ܞR승P?*`-jBrv8CuEA3bh^ RE֜8T@,8/$!̿yD)+>/A|bLƠn ,hu[ĴLB/5+pVgv8@8lJ/~zNa=@NQ\HBBٲ#n-p]5я9zKaaxW:ojPN~bY} =&$Ʃ;[}mĚ|#!OM!~7QyнZc&v27RS'N~$t$uڍ@qa̕\L*Vm$z̉40>:N#nԇ9-S.P`)b,H%DyCNB\ XJxHPՀc7-r }RbIE%c#~bnv$P[E,+>э6*qa.Y j3C MessFrܪ||L K y 44T{&}ffO) !%_Κz$%4bwwYeFc2og(h5{|5 r k'Z+r/y^D/8m1o Hyjl5ֺB*"ʝ0q׃o:Y;B|h@Z[\&+4ف`Yy )%(of\ޞzwmOzϻ35wh!a2%o|`+~tKǼ2ebZӎ2BT;A~A:O]7:̧>-'++$dhd!c20%'Jl%#-TdۈQ?6 0/i:Era޽6?g0FM7х=oOA@ԴWR^|ΥdK}@HG(=VF^\PhYֈ,fގiz%٘FRtW&>y|gXՖ|W_;˷+H:8xZUPX.9e0rEVLƚѮw;ڨ k[lg_A5n蝙2 mR'^^yg9ϓΝCԀRan,`(RQqfqUWCЍԤhcaO Pc TE&(^%TFk*l -5iRN͘[=7i/f3>Di3!91=gLZVL?V"^txy4fapx@# ^VR"|P{%:.q$F0åzQUӖëgs< eRc'0֐A>fy8FPSg}Eq\jWYgEWA:J>j+QvfW.uMĦjo.u=ioiѼo3oir 5:GL(drE&$UgUƩi3ĩ 6F?;&Ϣ.eЫ/P-x6\|S9;^}_)46Pu,Ou& dx )s Q6+sn|a)W%= ŧqFLy[M +'y׍N#yj ,ӃӛUeRW,?Jb=8KIb0/-lN([:]@q *Fʪ#^>4C̨. ~ע>ćJ/UkWF1mCP<\“aSRB@ W3 'w_uDQ,Ki<`U+ڱ(TXV3U E Hnx}_#\rYzJV=+q?9L*S{a`J< Vb qx7䳑oCMI gg\^ճԕчU wxM>YVLf]nFc8mG7~x te|S=-j?;| D$AϜ_:vMYa CIw>+;S? YaΞF-v-Z< J7Iw6L> T_{19aYQ*gcoyO1JbYeh ^9tu^aJHI y$,(P|+*6 ]Vccbuö%g6 42SWzt)+a5XO8XkΏp2{!3*F\2)MX3Ҿ3Р<`-$o`B_'ߩ"e/`U_*2U!Vb-{_*1G<*$AR<o7׀\;:ty!NdeqY/#M]v9""!:.n_-y;Df+A]-7pַK(ȋc0r(\eǮ%(WQn*)6 RH NSj(0<0$tUܰvvC%ni+Q2e{:KS=g4|\8Ǩ;] Uw%5Jh.vo7Fe٥= yCs,9XUv[-c+!U)gj=qbPfv!/?I ۻ%f4-PۆL`BS7|9.a Q~^B!M$5 C[K. v1$!"T(PmBKl`n*F'>Y!B\I,,6UG)={Taߵ't'NcY1\Ut&Eró KՓ.f&^>$OTj.<3b>;"*V&z o.]a_0gGr7(n1!@,zLn?ȈԥXJ-=^M;$Ncya@.)P5?+7iQzjn?8'[\2 :HK fѽ{qҀɲ ث詛B S]ai6$gj߇q37eƔaۛLA~7sRLv*ݿS_ =} ;G%!ת}싛>&hVHC>UD0BM0TZ` >gJuDiU<"FMާWiƁWno#MM/.uwv^tԄiب-fj di^O  0V7EI$nÇ7J1P2j]H>{r;KUE7V|v:Iɑ/5^%uLy?U _A '$79Hˠ"d(M0pr ]wf[WPFb% z bOF&Ndix/I1\-.ƻzv$V/WH{xfcbaOuH}^;+rJ4*\sMDFYpO!8N7?xy8-.IL9H@>Cݷk`u+?-]{ݫvV>}H*fWbßVڂNݡx'M̼홢ʸ9>x13Xuʏz?icG(r@9$K( ip bwS'Mq'_N/HN Xa k&MWvvFjF6?%Ll+e]_x鐮lѺ!#5`8fZ,~+)e"ؚ;#e JqS:AynHbdȾ=*]8"$Ɖ`d8`s uWYCE4pQbM☊|tjn _5A/Yf;"tqC:QY'E۵+n܌U5H1mxۙ*´t!˳ޜw${|zY)Q4ŏNOK)by{+ S ڈ$۲똠*7iq~YIv)1U 뮧D.?T}U̿_r6h7n(/Mx:3ɻ\RZPQHo/~9&+?S0N*Y7d^.y;X}lonCu8E1%` ]o8\Uɢo:dɆa9}$_M" .zI>Q,) B" +x1FxzH$˪ܹy棢_G[{=Vz{Fd 2g2 5~mE\'1".7x9lƲ[VgZ ?r;&Q W NZlYb[>[kw~LycQB2%N"^b2וcD̼e_ODR,#U?QNj4"~a=U M ~< t(Dk;3R]D#A_C&8x6-S+)'`t,`8Ğܙ_goq/E8W)P~Idqe&߶ ]BjbQΌZEˎ!&FLt< Giɉx^_Lz6d(x0=QIK:`=W:'K C|ک3057$v9kc,nˉl0`[Nce*b]L)Qc!pN  d:xc6}Ъ%Gt-kh ;N'))!3o1HjE2!yo:+e_RxajrHivZGI??) j~s4˄%-pI%iVtIeV7C|`3wa)I@hnfeK_J 78 _0IGD -"bI=*#y!^ Iێ)Rh9갩^##Fk voy RwS6ZʴҖlѺ]G-˿Jݯi AcI4E 5a,ctXq :USʂxU:h'QV0ɗbW; }w'c[N$w7GFRdkn] kiF ,\A"M@(>'R\'RCL,(eV֗cbXW MԔȚfLyLt*^kp8 98ҟwW))^~ܼBgwe逜I+^2)b:M˯nSYk/TA4W毕Dr|7G+Y];w%$1(( GpZ4xL- GR(<EDnqރ3"b.Q&(8I[QB^0=ae,K'D`gh6Gm[g8F3E1ߴ.6eta&aM U ,HcP'?p0 4+D̡#հhù23dpsaVw1]J$S=W`!PΓD ciC0X;}GN[@ȁ iw"9oEfmDbɓ*e@w=u!˗ Aʞp=к+F-WNړjQ;[r⓾r?[. 5_A;UU VE&VY#$տMqnK.Nd'3u $D}D P.ʌIrv"1<}%~LϦÜ|2Rũ2+O VQ鸓_L~ &/)`͇ˍ㕀H-@ CEʸ'9wK3Xvܳ]TBn>-)gլ*-o8 KF8{`cJ>{j3+1b$5V?= d_ui%u*c~+KEo{.(` ( l9-LЇ|-՛vArk v bƃ}w>w_W`;??Aߙdp~`b¶MT y`-C|!B\+Ӻg]-(IаIB[C`j@~qs{A2jVBʗ%bO `]AKw7U\@Ơ dY^2CC]W ƞ s͞kkf8?'H4֔C*+%$h'ݏiI\G [ZN"F5S-[".߆#XaRL.G[.gѻ),U}D>>#iBJdKGcP,KVu!\5-F6اYu{h9#&J^ӲY#cuQn *Aj #%N-RfXj ;Dqty9L3&=gӆBz E>J[is_V㨋(TB;0p*Ȩβh[j)DjS)Z5MgMYV:[chǚ9gMmbMcY1w 6dRВ SMvcZ898zL&CE|P[( F\bR@24ZSSFnȭsX˜~q1"lTaI(nq pUr=2מ8ypv+W);5͢}J]V@ȭ2L c&fi4<0˻}aM XoKzV`K-tW&ٹ5'+cS$:=1R0ͤCp̽ח+bbyRk,PlIZ)`ш6z`g\hk?snrqAV<$BW`ցd9oFD@59Sin*/(c` ~c;S i[6|x,S^!S}nMUI_O{./A} ̼.z[Ua 8AR/ׁ\u˲(O%}vC!ӹ9B,7ǥkkb#+el9*n`rln|(4 y P ۼc{l<ξOC&#FuK0 esbG,R킦0Nu\'EXZ .P}0=,[U*ly|KY~, :Z 1- JMhN Fci_BLL4u0It?}\UEsa8`t3fOPKU<]o!giALx-%;*Dc6<[MU; G#' DJ /Xb-I]0apc '79QQ&2b>aS.Z }ԟ/ڡ;a:L$ga8 @P|J0 ?< ᒝҍkr΂\KϬx¡pbq;X/kbQ{^ fh-c"y1R:>!M@;H#RL.o~*hэLS%$4=.L< coZJ2ɘR9ΥhqpO-Tc?qRd[y:JOFݵ3hMLFgEv[ޒe0?/-8:?njY]$ tIڀWǐؾ[ w[ٖ(r1 ɵ <a'[wRFAW("yŧ6ZTzRNclٔ#fCrGAJ ǥTNG1EbmD޽Ps,cyt w WL;^9RJ9xUBU fsbHvMD q VK+m 84my;@'r^Ҹ߆6,Υj0 L=Tj@SX0Z*D3UTQM!{qBFn1imZtbgSlS 9o[ +ɱ(S GPrR#46֦7Km:oH(u[P2PU)IB">t&$yCѯ< ɝz@[4” Q6=͚uMj{2Khr+؆'ŐA|aM5pP(͉غ[Iɇ,-g_NJ( e{?-}Bף7Ue҈rdd͊:J^%(Jy8GkP gm̨ZNf"4\ؗzGaQh~ڨjO-\m.xKAdLz}`fΠ4vWcJ"y&HW٦`AfYוQ@t;(ZíZ|޾'M~`hpy>ZZ ߎ`;jtϢ\Ň"kIu8yu:c2~<7(Uw8y`nѻwH=YQ^IXc@,uɿg°`,('MxLF(pw}jbt鮰B |+V#Aڸ_ghw2:+xfM~WQqNIf].fAӉ)䤾QȄE" kT5d;ӂٖ k k.xJAɆq'ʣջy&- V :Ɣ6?pPalZ« X֟> ۬}"rPry"6<Ǖ罣Պe1;j&¾O>$uy5/CI5D+ JX6a9+z8i\j6T+j_2exhsӷKF@\P*6OAEb)яflMbqxXV#t~jDaQ{|׍d3#n A;b݃eDxyc5;YE~.0_ ߺ^¼4[T2rBzC1B05ڢ+Vx dmV0'kIz(F&C*B EsT'_NԻv,Cpi-ɣ_N!n<Ŗu{Qd\bkFI((A'hP9:@hPp|tO> j/Lj65yZNs^!.&8^APh"T4+P 8 2#zUdޥu]Dl҇&m,pj )ekB4wll롾wy rH&G/G]M-yvF errGV `k umezgE ,qN RS>֕ Q\-M&q2*N_ 2e`wyfL`$W5v};Mm7Ntz}mMBJUQ7Cm U)KO3Ylm[oks{{C; _Q 4#)3 TRH؆E!H'/j4>2MrzM& 2h8JX"? &QiˈS/Sܭ_FIM޲'g nw(cT O1gY&UZ%Z}NTauSI8g8oq)lCXr0 BF\i^"cRq\?^kznlZ& loQ(yDGjYR0NdF=3ΙeTauŚۇM̈́<*xO1jUO'MMfNӾJَ wLybߴг讌 EaHV/Wf@kA%6c؛Ap6[qɤ Li/:ҔNwr+:M-f s%X]=x8pc,`zލ7@pAUӋm6^ R%("ۻl@(DQ/e' hՏ;/rq.̃TmwL[] h.+cM-2ENNgyG{h6@kn:c0&մ(b!Ԭ6Ղ= SR~4ה)J.VYrmݓ~wᑁ!`X>ĽM)|Cz#D{PH4느#s9<ۏb0[1e iІcCQkj5߯;|s=n,+0a-vٙRu6 ~Jwܼ([TT#|%Ho΂9#iG/tfm]|=̧݆TT?'r2t&wZk&j~; =t%&o;++ivCe4/|*&ĺ"&;[AJǎqҁ>U +̵pJ'Tʧ}[dbmT.h0C` CΙlq$mW-,:VM6"v2F;v?7=5GxW뷈MïFHܽ'қ^ģ%xYn'J$I2hXVR)}}Vr\{eUWgqt,kۋ`w<*;6UFr|+Ɣؐv^vGMf~8źtLg]9")P8iWd A.xRwj<՝D~yq@Ц5nWjxKOeg9Ďʾr?vɎmy=0d5T/#Ķw[AZ <3IAŝ:|:` كA>{č+B,{ |m4~}TPIP M",$䟯?KFޅDhX]2:?ws^)'$< V K+ 6;Mt~?!?B[Kր[|+ELd鉷tČ:tO;]j`vwNfc~d.ˌehz>ZHuuw@"F"a$0G"mIP,.MћkD*@0 T#Ⱦ*%0%+ir 7muֹ! *+WjN0%YƑODq\?B@^nPSF!?VMlAKghht@W(J98L{܏J_,= rLTID0dޜd>$Rό.YÀbx:Cp1?AEEM ֠8,󇺫 VU7^$.7ǐJ;M.5#ZݬF%K{o#/~ 풧Ѣ.5V1_m>"5bN&7{;P%<CPW[A$Šo[ydjfQ%(;Y8j^K)_._a!̆$^mJnWOK6Y=R+Ef^HT^ fVBN2}mEH Ç 9dL(wTN(¥׽1j9 BG.TD*P9j _A<7(P<PヵU~cmvp\gRN"@/Pی9n"?ŗw{ XEi1;mIP̓"Pq:k%OA4z繙xn(gG.? TCNql@R?$ 䩿b~s [Otᄠ~|='3@Yu>hˬ@0~hNGIqg lgHu t:~]d[8=E1Ll®[9|?۔`D1ő&L;[$Ȏw+}yc#W;l~dq;5 |iXaC/o%@S)鄈)| CZwqfG\1iZlӁm7+]Wf25n ^Vǁľs{6^_>v*&$Q442֣lu/.?O-itw@gYKp5檇"yݤ Όc1U=:5Ov1T ?lPzVQH!P-f 3Ԩ`l#ǵ S! J*v?䳫Pyp=D;7˂ٹn*1MoѪ J֞IF:0Okư^H(.2}jx`ݟz)>hC_}B[&/:JA4z[_@ 6Ҫ}H=Yx_Vt+BIs"ӽ>k] N3i yxQ*𜵗 C凡x4iĮ9`p Αɯˑ͵ZCe]FˮOzȮ0JLˈA*ʊ9ve$B+rs٧ߊf<} g^xŐyn]3#hGb/k5$1l9 綦Y;mL;nN53 IHr, οvQI>zm?5If/GR!,LI1,N嬢-R8 >c_AP!ޛfLUgEBcC T)]zITņ SpFǴR "+0ЗFg.lٛ~Ie[H$ٰj-9K X(D)mھHulݢC˒a9 3Ap$kե9_FWKx55kάfNь}j*-zd]9fMqЫ&QlԸ4`p];*83?rP G1Sh1~è_pMӕ?ɏyb DSxm|(>S1Z)bGIhol6rBR6LQKfX!:p9ӪWR9!̏7P'={<"3Ծ}љ@`,kh\ˍ6' 95X?7c.kby<[e}E͕Xm>t{d]8And+s=c"1,^Kb~Rq]bw`ڶabu!#mzR8F>I1 o\f7`'R1d )V1KeLm?9%6W~q\ eoF?`9Mw@R=-0hQ83'6'7*vCUɖ/BD̨~u.j6F￲KrSw4vbИVai*FP܆>/'FɅʮ#; s@l7l03ĠMj0/'V*Rq'Ռ2An@?6ʃl+ lm j`Q v Peu~-M onYIЁVZ&rBCD:hRRc].%9 Ƌc`yvtji)9.O}*f8/ .0f_u IhR-Z>Ҷ0ClEj?;1"jظ c+ʺjb]Ш3*gn2ӐqSI?bCoC9`DŽ7Hu^퀐0_;D<'uF xDjW;XdaTnVA˜H-춮.:ɣ6&! L"(6j (X]9ܓG1SŸJ, _ǒ~Tg8 A 1NH8)HGZ*`šrO@WN=Zxch%HHv,+}P%TԔt;eߓga20@G,9h옳#!*|P~R}>F9_GC.gL N6]%Mj<:{ρ-l}g^%ػywPb|>h#zuWOɴ/H_GJua18+Hr9?ĝ'qydyOr`;XXu-B:“1Yq^,!Fò ix:Z(?Ƅ.Wժ"6T}?kaFO4#fa\(7j%{,SaKwPD$ Tsd*].>j ibװ/qN!3Gh|u =IC3 ]yvMZdS4B'C]LN.{sj`R6⫿LIYhb ɋRd>jV2A?y`$=UF:i:̃"7Y\(Ӳ@8:WKz>.KC#07;-£tzِ}m)"v^ަk ᾿ 4wq[[R+C`2! X۲feCC ^бK-r<\>&& ;N6}„]K=Kj>M/23z'(8yϬdA.&8.}Y"XSހ}Ӿtʥ2,F#BKaĸ/{ i$J̲wF1ЇS;շ4S@$sWGD8ƦC"=uw=nܒUYɬ:}|>CM]En nOWݡ-¸K:G;%<ӌNOmS80?5Ǣ~8g֣5_NBsˎ֎Z]}%Ƽ`DwAӚxxOq%-MpSĉ\|*UzE\+ca[m KD:8a!'r|\/Rt<eѨEXͧ8zb6ix.]1j>c /iycŖKm;"@`'!qcqRw /_4|%Ob+* dcL+F\fW gjM'zH[&{ m,YX_,JamlGh^na$afpZ{f9#<,MeS_O>;FWn"X _rA J> œ)Z)]c-31d=NV0Z)YGxws|-EN7e҈ CPiklސaaFԥlZޣJcn ęɈv98Y9<[6x tZ!HN5[VC䠴14(J2kD(6}Rx$FqS`,,*%LUԌM#NüRO2;`β39ÐF SyVNy\֋ʜѵݝV+h- rLÍEh}Պ_A^q%O)ic$ %x&O"q3yGSMES'8'K?=5D䬦; B}C⊾gQjUEElbğu|n8mx TW > B`^|G}/- Ny"ۙ&/KvDf@IAUj\ꛊaPXσ W=D.R)UEuN]ccT/Hf^b*T}JgOU+RH};?V{6\Ώ G G& &^k`{Re(PJ繿,̟ }LE~D7hj Ys䚹%xEg4s>& FRGɔx[+7*f C,J~oeim@Ģ.s~]pf{+T2mtj ywr0+ Ȟ~ ޏ } DA wʊ8#$H([eS*6 զ@0VJ<$88]ڨ^ cLdT\}7!'$^ppdu~>o&ka: AMj?infi31I)  eO$aYh2E[kIR,*[ipĈT  'h TqI_K{X\nc6jRG[-spӹE-?vq]Ϛ.Jb.K6'금N𰔣A8ڒ볖tV%5 !;X&c)X/$!95Tc8SZHʳ,^op.`O/UrVɜT.aR.0axM1s|b]A2VB9򎐢#ٗm.T[fCbs{|̰rIHI߽ܠ_5j~d&GmH'ʣ?T9))WgRhuS`|$1 \pĶ戻i4Z]@\C#f* ]Ql'\n%l'_+)/ E6mfeci94\CPOT XC?eW;9M+CQ{Ρu\khHTDj/)O{,p44c+Ҋk84)pPKm)21L혵~ek4+*+Ϗjo?QWՉ{cߥx5g_w앋3"Zw&& 9,)]-b #TBh`ߏa/oU*@_O.f"w^:#K^JrDqZzA4`f15~`sя`gRw}2 ~yF?a>koeG+@p)?.$M8ŭ8Į'hd tKܰi#c=ojM95Ƅ6?!WPNKIp8PaK"ϠS+nF(1OM֡;dB˄Xύ\)b\fB_ &Qn]'ZbVdnݛԝWҲF"&r萯ƼRU![ "W'ȜG"5Q)v~\M.:6) T#h]g.$4 TZ̸Yw@={|@ e_{ +;ej<|~ɡ[Bg>f5 w- MG(Vp,=^PRI%t5s-J-shkt矙 px:p<_QӾU &c)ŘPqFXor[hXmH$f MAiE(.[Q?xn9Qw`U@+ΥvLc5V|7<K9QĽ;0s&imBD"GMODcJEN߁Y}+1U4|Y":;oN֬z[ɼNKO\r(ѽ&1'epՐOh]uI6# q.kSrB>uA]w>cR2HJnbf}/]h7?:y=zz #5>S3 nLdA?q#Ǩܸb#B,ѠEhŪu#Q~4,k':#38.?tيV 7-S/4T',GSK'Գol&lr{mjdg~ٰK4'`ƭ;:EMV&?{?qpE>R Dk!m0`7bn'-4\_(`ܡ^ .3UTJ`>ʘ/T傝=@KzY1ԅ~ѽߗaYHԾR5dXgp xzesQ :._.S =p}}Wp-ip_1{skxqƃ̮\=B(v=*D֛3E1ёrU5Y*rl} 5!D*3OY$9 : Ӥj|s;8URW'P-^31%&]!&Gmq]A1E ͽoCXmBpQه:iW02Aa(IRLhOkJGn۾z^7¶vYa0/ cCjyܺ%cwjao ij!ݗ0$kQ'q7 -3cP'P%D^o&u( "\yl2t#o/UEɿuo@:Y\+}3"ֆ$E b(!z` Wu+*0ksBzs,7:_..e2زfsP`lml&tZDp ѐ4>2ˎQb)t1eD@ZB,RqgĈnwTC%;tݗ'A' bL24\Mw.Kx8=/々r@&ds2roVŴ6ԝDԔ:"Yi |K&t{>eNY)L^ht=ۗg 9u Fހ|[Z&e;7&k=NxK6fuv AJCouwY5ػ`rYz1?{d3 8βN5Jnf_}rCFލ*(0GͤN/h.`Oُ^0K<3^` cm@׸+f\_>S %!+Jڤagx>{jWBo?+1B Uz k!8tó` |y F!]&pL^nM)Dd o`RHupQ8v7vF0W*1Ji ]MW]ad|U7{wz9C~ziF m,p:l=2)xj΁Q84GӂL[OFL"?l㿍 0Ӷt]~`Tg`Jt.2 `mg2;v\Fp(Da{ VY`$+e":[1C ުg#ڧk3|'oUG,OAWjKy["HTK̙]F2wazܶ6GCjoM(|H=l[ DJ3CS٧i\I0q'1s|u-/N8eLsh)9z@Yݏ($ϒbOv ?ځb)va%)*m;A,Jk #O HVr׹Ɗ0e`VLcZiǛUS/_u-Jil}jTvgV`>@4)MC,ld-`pSVQ`DGTZ?)#3BK|OF79B\y+KD:o8m`)a9Caa. oZ<< kRif ggZўk+p`U$l5Z0W,zG)( ~K%c<1F?CuG^qj7~`Hf@"AǂV$(TYLVPZϥxb?]Q$h e{_11=. N_<AN)Y ƐiwhH|`ϲ>FXG'܌ȷ1n!d}\CTW5)$6=ʣ7mI~s,(v&fX/.A93(&Ŝ?WmJJVZڎEahAOYJKH0"Q:= \7'5B)cScȣ.s۬瀨t{[،#}=Qe*t+pկ`5;+?5sRb}Àz}Jg(,Me&/%1a;052K1&-@qmCpa2Qf #Wz߷&G)쐥]4 ]dr_4rNo;}ڰ珈\iE z|; E1nBWZ~o&ڐ{ijJ3t }XM)VcԽD+:BȉҵZ]}=h6g0scs𧞒 q$h=#Xçlt)E#H^&|3Q4z;Ngp)<.+%NpTm\7Q=mFWy)X+?/18xDeЋ.yBOE! B3s`J3\8j佄 )Dĭ(>gA .tp\\#T3@\}]Lfۦ`-ʮpocOB<_GۋJ3, ZGxwTHטV!Mc|׀ Hwxk5) T͏7wdm. A)"-GBgVi=$7D 2pPlb}~08v!=M;pZL(\pڋ_X`{#DHRHa-ĕ csp'%>_}ݎ/wu&/Lϵ?>ƀg\*5Lg*V!ic4~9)p I%[`&?!aA:$Q6ȄJ[C4-GMF@I t8,TPsHKTEQS4(^QCt)$#7pWxX|qA5,T7e޲Uc>=? hz/if8"2[Eq.b"~;#wvCۣ/hVw_i iUjrKXx]`F,֬?@y #ɰljV%%צt4Cp:6pFj떖(ɽ1ׯկ%G<f[|]guS?^d&7bзN3Ӯ'z.߲jL#GhwV2vEXv ؔn[d4rzl<[Tݮlk7|M R31d͗PBBu=~CTG}~9bh#xOnf;T8$̏KI΄ fvZoet!-'Mׇi~mS|$]~^v^XWͦ{h٣$,O'T4K=geW[ΜWS붨w,s4P12kvm4M-[!#WRp q)li^t8ЧLOU/qcIi+٩0`GG_FFEc# |DjTguGM;o ]?PkzeTHWj4gե1]A .oQ>wz^wxr'X'x'˲,aY1qG&Sw)G]ʁvb^?q 5 #nE5l98DEY:G1rlLMzVb]f+2d@abW]^g|KHz}1c/$Y|e,g,,uڥ{uٙG45Э=]+n ;Sxx`X!1>Y٭T|e#S%tj:2a J^ Hx `Ը 4S;%c8nѪRo\zjw^Nl6O1O^bbgZ*p>]k+f ȳ*4ly9bcDJC*8=pKZ}Fmѐ1` /Ah~],*9/dE?rbcQH@}ݽ3IނBgv|}Yjp|[+%Bd/ZNݐL9'7H ?8Jj3W]]J4.̠_cQ 4bz>:<,NY}'v%ǐ[◅ *aLIm[|+״4Dlz{-dzHYsLREO3~`LuDtSPDDeq'0)R쬡ۉ}}xG!Q%ggK Ziӿi{HF-oĥn ( Pʫzum='5$BҚ8fU'ZӨs{LٲAf K]]q)hc⸄! ht'56&7_$Z̏#u51';uKsPߛnD $Ķ5qYJ޵2DWd}5j`dK^xTie]\HIqٝ{0~LS,j] ’.1'>`h]v~G=6)X&-Yc7Fw?¼ZWэѣ!H#J?Q?zgd{[ {sd>̜N9esݙllH4ͳ#$̮L1>TP7he6W4\q?:[E9E|[LJ桑Y7$A xW"mj]GW+6z[ZZ9\ rEy=  W+i#^S߉}QK2dD(Tz'_@PY\v1Up-*Y .;܋UD?ٹTڳeX1Yh) Hݞ8c< !"팻ukeTũmnI`~p6 Nb~P*XinX}:hVJZE:CTBo-|;8Fxy= v܏sՑ. 1pwS!`Vk'X7,B6;)[9W{&"C^~s75UQ 9| qlwM˲Mj|HEM,<\W6!?ijGNÜUL {4À ERhK[f , -bSJ` 9nK5b>K}ze`5B6.~z8R!!#dG8i!0;a9v3EK:ԉz_A&m/%MY:n6 ]soVU8 J('O Co9Ɓio16R@d])?,l=P2BY5J4 EGGb ~sv C0v-vWZۣ^ؿi!H=IqUZQ p"_9 \\J"{?PbwЏZ͟/39qG! ԩp">R#tnY(Μ4{9v޾aRGzWN`u˭ 4%~8~?'1uk}/9 ;q~%RW=h 0kY^uu]KUnh!M#]ݫs xdjtPkk8)BJt8qi1Mmâ94o4h( i6@5R#S&W!'&dn7òS)w}aݰ3P!gKR6㽝M#:&+ti_9eSVwٌKo6콓!5u%Z^)b ⎕QPZ4Q_J7 l}/b&^ %4-RikcRۊ5 rxP<[-_?pܛ31q\t-/ Ƒ`pٲAkdG C Hå/fP7tST찍Z}k01ȣ* ۈ\|d4 o"h\!\!!15rR-=;5$_Hz`' 睔|QBlao>d}-TV#&qB> < Gb ɥx}ω+}kj!ƵEffv+yAN`E'B&{ʂyA-xcesT!39B@JA`cХG'Z_ƧubMOu^$[X6iPN__`CWd]|Ho%si6QTilHtmBߙp*[,Gs<[нYN MFĬSw!2aA^ܾ֘B*^%($))WL ϥ4K0 UF4goD/(~qCIX*|~Ϳob□S>`t$붌BI᯾5z>.ܜ;']K }De @C6a)~L,KUtoqEl}涢=,=aEӵd H"=/q<ٸ) JT%`>8u34@᧒+AM,j9jt/Ci 5@W=6ՅvxV (@ LJ*kʩ!6i `%Z7yh度g읊U-tҠId[t*6{a>!ˊ0ʎG!"/n7:[py-&LIލ{^j ;oi&.OSYhԍ/Rs4%ֹm&S1֙Jr?}Hv*3(_hAf\Ҏ/)y}zOYDyꐅ-1!aKE);&MvI*pnQ;tAd}շd!}&_sU;Mh!>\/! + !#[G/(4!!TEaF8Zƶԭ)&jF*7S̱ /~W^szꃝx 9fD"s4D&4i~"kH9?ᖢ  ǭMz°:1K|"`:/v"һ@XHvɽ %̌k0^_ C6l :ƃ~.h\!I92<GNfHL l[ nZSOhKUA+ +Ԗb]RNY.ijJ{ZL|_Uە]ŘC)ؓ.\LUq5䝷#zG[Ť{˜j,Gaq]ls悖 sߪWY0`Cw:{?$,3,Z +Y]Pzx䦽RX (珃(r $U_zb-$\YwD`lhNoopDV{躰C1H"XsYe5%5ӭuR6ODwGJ=H* 8B$amBz=BKGmM?} aWal2_dݭƟB}\b=+tj^-To*_)3PUDel.~+K1J{&g JD} ýj߯;Ovw NRE^D^r,*1EWRJMf4U#m 6[Āl5)lSJd$-Y9WX[BpeH2fDhb} 頨>OS2,nF`:yp%'g7-[9:ԭ˽v^ܝ "6'S@=k,fiU؏ 30EAȁ79"6h850v鳫nP7aTgswTtnPu<sE^/U+%`uW1 1]آ̿\> bp|$%1=#~sx3F&idb~mz s<%*F=g5| 峇3dgo+m i1uCj 4қ͇ͩCWF2㪧%950M_/;۵6}{TbeXc61$Ĝ8iq6$v|׉;[1RReb6BO8呱@fy s!Ntr }%/"2mOX`n{3 5b0&pLJ F4b;5#D%Qڊrk-%n*R?dxyhƌ !dzwFzA%C|sOb'{UW_(PT>(x+jr BF[:} Ȯk;?PHK BЇti&* }SCc kPraq+-*#(' IU_/mI/pNZX[:, qZr1gir#0i͛@Y >62O962\hCW,o> ')[Ŵ|Z40 Mw9N>=s=7t<8Vl&(s#?uǓ$"Io}_oom2 }-R`2󲈗wAHvRC5 DS~UdfUUGߡ7{.T1_-)+ޞ'c]=7%xݹ aa,KƆc&XY:_򂞸+8K F ͯ ,y7⚨Pnn>pDRm-F&cKgφc$ [Gƕ/ |f5"ȹ+NHKR`?VoxcSfs"o%r\E <<2m^sCi'opޗω!OŻX@Ec.@݀! n22BAg|oٗTDk3LaW:8\!Sq{r3أҴ<0VPr9S?95CEB/s$ E>rF#Rpq} ꖌk6&:Pn^>g# XZZ J|c[&9$BUn>9n8g!ς$:SNcꬩevsCcWt"ZU{'@9; {MCỌ1:Q0"Bm1?+@ U|A^A/ՂfS&Nq,A+- Qq_ A]6o$ <`X &9io{YBixHkKe{UWtS}ܯlİSfnIZ\1FhFX _I!7}O^ᚰ;=ԙؔ-\g"+s4@6e g;oy  G(r\TڹBFf|ltƿ6 = tC5UGˡn܌H,{y,JU d&ZA:;w$t2}l!^awܻ+\?N)ܵ(t{o':rڕZyt>${N}^8)ݩ$hO- 蔋2Rߌm 6c7 P0ȈX<:p',4Zb?VHI+=xAN%bؓM۬@ILXA}dXZeoY NTQ{C=h8- &{)|_ 8}Лb3Ӿ|%УxUtgaS+i v]&pAYUVv|2]Ї|sRK2+BnŁNv0^NQL.Z n܎M"u$^:vID_["gH8Ѝ^Vy 2X}o>D#q()?vFKm+aϯ"`uCE|-V9O6zc4{\E}d]GX.r_MTb)HerI{OjB@[ui庍Հ)YEbw # r>`'<8XoF;MV;|/^NUy}G`u묞6-hmMĺ]綻] `a a[ ГL7+c, Q Íj{kY__$Lf ?'2hMU6.:|.G] hp33H~JFl#́B$~# DԽS9nUS7'wM)6c Ty/5(DʺЅYxy`z.2ћV:P;w(I6[P `;L`sX݋֫f{*n&Q{7|/HX绗ۃ2շYsR_f51e.x4Gє{}@H%=MI@ȝ߫s5[I,_Z ,La-b!twR4EfnhIm:KAnJlJO6 <~5R#RU@Nړh(I"o'7p dus#M~$E^DGi0e R]Y~IPT fV]kħgir4Lnԍ6Du<ֵۥ!;U&(`1,Yܘ :5$]3D"/-P 4x<v/4U/mc:[_aΗBʗ\0a%]4yCl~wQWE<-6+[E!sh^.ChL$6OߤYkyG(uAμSX|0uUʘ0`dS 7c_k27rϰڵ«SƊQ9_5aóOQ `ɐ $nTDnnqog)N&i߇psd__ Idi{{Q(޴- E3W \1]54/KȆo&A@/WL177&0r&]dph ,$ q}:_/yN4_o9P[C>DU1:SciW]?h1w!ާ~ֻ͘|-dSRF~ m\ gygG1lf+KQ6ҙe7sk%#%\`ϕFZ9#hv6+}q0@žJ qeG !!jo%nþq [ hFq΁pUKz>os3''`%v{lRfQ(Sy]CI aw +J$"ILs cǤk^L'tz _|-(cX9ze?pr-ՉӅp.#Q&źIsl ̕:_] 9*aQ 8&>/8)FW=MR⢝9\wI*&r!\ 6XU{vЭSh_K쥴gT geH2d2F`%#i^Lwc3L肢`\c?SǂR8SzN2_D1泝K?%vxn%bNA?f,Mbr)=Wq\sb*:cр>A"TQ࿞$3]Js64LP >VaN$?q|ŵ &x?J> Lg~m}TATb64& ͼdsxP(br>@̋(@'z?Y&(b )@mm Uk?H`5\1jUGeG*ao%?kKMe?B1>\$:UDؽp%:}wŨ۞Ur\^6[bl\brq%ӈs۶HЧX Є#~$\w.=Nk8$+ve){bx.3L<{ᚘP8ZᥧJwnZڝ mL (QFg V6ޤT#A}Lщ[^<6fƧae|9{RnTNvcyQIÈk3'#GZҐUs1ɫb{=m Z@LK??=΂*.V%IN/񼗢 QX~zsur)w:BlH)__'K>7tL5C{ ~9h0NLQO5Ig}ҍ{PR]*5g`x!I&Qc'hGm2q"v;L8[['/D $K`+Z٘F bW˻ ?ǯq'W]g>#E> mk^%p\ȥG#uUIYxZдu5MYW~UPmjƺm v} ?&Nm1y J2*LX[✎)f%5M%ݓ'MOچ+ǚˀӧLOqzaSNb?jNj%ߥ^Qd z &8G m}OOaRKyq!߭9&VϻHI/)z+d;fn1=g3Y`p7y* 郮]U]V4~tyLB n~ryvm˓T>zQ gY]DpЍsd: zٍ774z7,kr\IF:M0%h|L†hܸ48k26vEPϣGgeENϺع(K0w%W3n6a {x >;sb@IJLbپ,`bYfNeL<Ӄrn0> W9nhڲO%%aSS`B=_0wp%nmcuot~etP[h-z*CzN7Ҳ˓X6nz-\2) /J̺`"v.]͕jj @nƨ2E6(=Dţ3Ds;)땱|q+vp,xA+I2Vx@jM\o6S-Cte,<.,^QX~r2ti*9= Ip(.=GH#?wr`!]#+~)u 4'X'&jSV.[Ns2V޸9%(#=v9?'Wg:1| \. FiKȩɮ&d`pj amzjT 64-G&ۜ4nqUjNpr)5^zB[EnM/ \϶K˧6gs4 8\Nq(J f@,7x0YE]-#wןQsvLސ|Eᣮ#i" lݎpfM#,7!DQ6q2WřOيJsL-ގeãi#d  u-:j([\SڜpWlZĺ=ma1M!Qg5xjs)0\K"N]Xbi_ה -zSƑ.#pMTT* 78{r'1k'.ID5F;C/֝zIe 5]VGyF8c ܛUT*ե#?/8R-/UR|zqo^{ETpzicO, &SMF%3˷0:%5{^t~( 17!bKAM=ml^N$\3]CTޅO}Q-YJTZ7O%k:D}8Ǥm„K_h>^݃yS7I5DT0 \W}7IW=Ua/<-;bPY'O*fDW71H_ѽLQ .bRWp鈴M@!F(Q8-e\4AoR7#VeFUfjt&(zrnbM"!zj&}޷ &ʎ?bVF;V &J^v+LՏtJ@74I b 0YQ+LLYڽirOC1oO+9J"..^zzX ghE~`s`)V\M$D[IƵS%tBT-dI3eB.h*?]ЭŦ+cc:sg2:6Z'W*] .q[Ҍb% hϽ {sVi2)A.#esEK/:LG!OUgo#&r\ӘJ;,\#bƑY@Glk<(iRAWaJdr-+s֞Ԣ̈Up0sGg4aYq6W2kZ" N̺eX;(*Z--3ԆlPg-ii,ݹ`u>(V [d*u5rqCvR(Q[Qju{AGh?L H3zuwZ0cO&X4$gەic.z ONā3 [ Gc#P7d_Sw* Qar̄61ڡD8;nڰRVi^ &lk|Ѣ+_H!Eѣ"MIEIޞ4DnuL*YǚNˀ8]򨈴0o< 04+ Vq0-9sϮ2bQ.TR%`(K<)G)zcx5 \ xL(*hȰ0%]j-E4 (Q"9秕7v]ԌIbٝ*%к .spJЃ?|OqUt$8Jj'΁qq]N/qaw{9ߒ7ΊeAڰG`"~ ˋx2a8Z'HPcD|VKn,]Y)ʌ Ӌd Ƥa0&oLGa8k#^7„գsX#RS\X'T߸Degl$zxje Ghu34-INրĮ8܆l! W7_20ܙ ?VZν!#SqLI;F[Yg9T|\%`_bך<:ö;% z #4RϐHkhˋ/dZ )f'^^%CqG|Wсy^^Jiq 9y oQ2ƍTQt}(й7.8s%ck|U"DS>O9F$r|h:oy#э<#wd]?l`w26w3Avzs,qq>?:ͣ0]kb[2,R t Ӥ>J65'<#G88J*k7gz,_+V8m2> nrq,^!*JNC'@ґA\.ΕTpJ! .tbJt v0R7_!=%8h7qǐJ}l{ "`wOk+`NN똖rF=TjxSZQUSBR?K]UZDMvɶ$\KI2zte?~Z|_mq ,nK:+3K78űJUf5Q$1 >bh{Ԙ򧴼W\9yw#=&YB.Zd1A%3lI:L9 LI.;v~t!M~qFM ضNd `s Azxr趃+#(&B#$vaP-WmUī[sdH% U6E8^ x'؇rT5Q  ZJv24d?3yKM(tynV* x¬ ܨ|4] 6w.J4VITUȥcoݾCD@rN7)-nit?B)FnI+D|nWϮj:хkg֖6qY*3eeT{ޝçdr:=3&Q{I˾- ,G%Mz]5y(qmoj1 we6 V aIĝƌ-try#YTpxrc)7X*p@$EyN+ VN^Y:9'C=Ak$Y W/HjZ,-Z m;U>9I,4#tӽD!JպxRܾF8cH(@3}'Al1-M2> Oض=>0."|7yGs3 WNl2MkinE"DrM|u׾ 9T¿Q' 5p cZ}|qpQwFEzm,\淎}~圼}.kh!xjՋ'8kS?mQԶ(V ʰpʄs64Vpa, Ni"nP, >T_,tSnzYEX$̲">ce;u"]MFO`f(g"Qz2hT n8N8Q,U:/^w A{Z L"-38F Aky%oƳ VQhY}w/*~|U CGSе)%^x0 8i'L0q}dvO%҉CϮJsVy:L7v[6I̞c C؃^zHhk䋓jO? &d'=䈑"˱UѸ1hRH&DW]McF*LJ<_ZJЎ-Z>EDHrÄG9bY5>xS6&G=*H0E`)J%}@ySj:_ɨjWU}ЫBv3G T?;ܮN3g~@lBAxbD}pF T+HfЂȁN0Y˹Ԙ|P'!綟r}rw OY>:DM_̳Tw6W%컐|iZcr!pEzpVtGrqP^{qwמ{G^oկ{k^]g'ԌF | c26.,C$?Z[8!$Ȕ[=b%geLXل-,c/s0 l# OczCr.aDSLoߚxshE[7TVL12i;n_P'aJ I!]̴P!aav n@<.=**az˭K)2kNǞ1e­w||L B=˅a9ȴYz v["7+Cn>bqcNވ3Z#qQ-n[F,`r2a.|7Qjx%^i8/,R:]ckP$k0.ò(cA3!wK_S#sAi*zmҧS貉ŠFcDNSQLD{c\ϝ[vRݐ, &HXL4 *_&s' 5WNma@81"nI+" ! iZ]=jOK$Z&F_= _ח; BjeiI{@D7A.DQ4][+n~Ŏ6䢳e=h;`6;Na%ѯMJSS0niLL40l>yl^#uaƜiX`7甞0+,A~DF$/}N tl9l孅݉vс !,Nԍ^l ,kGN1]رUǵB&^dN/(d܇2q:iNINٍ{u#B6:G:-qTx_cѮȫP6?~EaL(!HEF14 n3Qӯ.kΏY3#v[{ $xV+8#(SKś؍rֹD|>!-(Χz#Ww.mY")[{=NJKx#B'ۚ)xFF+w .ᵌPyGFlP_#jߔBrfIbfKk#p/*L_rzV5#b4^Ab\eAu3/],#(pxE짙 YnLe}ۜZ}z oޕ.Ks߽?%'X 73UTy׸/HrK{yor\#h?VK|{P pg^o[ỷzL)֋ּ32ynm{ Qy-\ϧ=0ڷHޒ@?kZ>?W7ȆWxS *MEaYJ٬oa-S\">Rng]3F6Mecӻ]E,B'|jxag @^PN7eNb:"ܻUz!ᅴ򭃢BF8D x+B) fd%b[{y.C/&\9t9Yzmo~I=M[~Y'6nܰ?q-˝GPl`K1J7axq8P[] D2N+2!h7X()tBPE_/-k=̘4KckLx5tƨb7yԇdq6/JVƊR!Bt4[Ss7t KJy$J1vI3G'뼫6X8ȋHԊrT+rC?ed6N:N8}er3Z(+`׵ Ώ-´dZPྔ[c ,{D&78|&lGΰ(v29 ?^Y-fTnjf3ѬǞJ~pW̪vaUP M]P]́ j.uF8Z~f\IFoIi\`2 ½4;KPձsdY&LEȋC>UD\K=ďhk׉  u˪fރ {Z!o5X^`^^nmc~BC\X`Bn_55ؚI]xxd7S,(O)ӳyDSg >sk^2A}<Ͽ¬=4ƈCF . =[$ĂFͦm}gnd7M\j~3]=Y竁4{FTENCL+Hk\Mz e88(|ci ῷGgf$N[DVS0LN:;K$bU $pT2iC{ *؉k; BF:S&cɥ kD}_fA~wT}7"YnZCb>Un&0q Kl6Wt!5no Cn`d&e X{~"+ 'Ä^A KȠʝ#R2JD yf꺒DoHtW pJuwAX$ -RRvxs$ݠ}$Rs1:l@N͒wє!{qwȤxfs i`e܀/%8I*0C>a9$YvFozAت #>fȷj0Xk_8Qy;jB&+BpB sC)R%`Vo>͚<dn&JW?W?>aKJ|oPRMkfTѣŀcܣE,ca[@*kq@Vd oogY$&AN0weV[ FCok>թl7|w^bcʲܺ:k9ΛH(3Ōꭻ.IaeCb~@7g8PtǑ )W*}B{RB^aPNV Yu^s$i6]la lM}@–O:?aAḧ\O@4>՜ptDo"d#~Q+&DDY⪺#j96tWD0~R ff*%"2 >}%w{lWU>!cZ`"Hi5JdU7VBI>lnwEAl7d,Q7?n6`mJ. wF*fBa~g *q揜J??lF)Ŀ6&Q~S-[9 ֠>&K<-k=>(_ql4Ol! 8(`O~O`61 Xd7aqJ]?X,i.ǪOrb z,zG*[2G05XUz0%308Y6η_ٚJ;JX9@[Ft׌Gued#G-X\1(rh~6Usvb' 3J8O$cj:GVڡo`4Mv)]MXÖY`Ǫ#/tYlZgOOYQ8=Z1B(8H^_PG*aYN' YWKqܼkM@=-r~AkD E: h]D}Ͻ VWHPjxwh @~1}dic\ݜ8 r3N%:]B+ !Кg0)EЫꉐ|{wnsv ihw(O9%ɻʣkǩS݈_۱*fw ]ȉSnBE6_Cq,u9˘ d*j,Slox6qRhYvU`M$a&\~BRTFQ<'ANSF?eω6Ė+kaР"ȼ(\u;SdA:A?m%rrPdɻ!~P:h,Zѱon1唿+ 0m8dBXi>b:Gm?xXeI +ˇg~=P-e=Kq.O AQV`m]W/V2؄3}sLɩJIµ mD&ˏu4"y5)VТ-F._A뽋m<@Ey]XMw7#4v0憦oƢG_?lH@*K˓;`}9~C 8oDFB: Uy*? B 5v׫7 1bto%r;R3Y˻QǪ<6_D.ȯpd}"I&YY{:qZA ^uȄ3Fy ⊖q:ӏpĉ[Jd!j" I\/ O?>fj^@uÉ<4)%8";B";I!>y W0"Jqf(`›A|k|F1ⶅT LU#ԥ /]!!ߥLP_- M$ptdqjLݡq"s?BU Gɨ+5jД%)e^NH ƫ\5:rM !Mr_C VΘ=ku >߲}!HLҩDI{zHP$lUz,_ll|V RLsibQK7C#MW?RXؘl7dͤ6NE鯵SwSP9:TXs*6W=sx]sWRYeTmƂ1*BEc?e~ =zn ֞'˨a{V`L  cMֲOia$5w!CchHe&<2:.F4 um ecص#^ ʆ !X`q>j \I°ʊvK_a}YOuoPhʚ'7yB;1 N.7:W$^aˁgWdhڍ-ԟ~Mbg9^( 2ˎzp?8lO_bQ%#bîȳ)¢$JGv B?i蒝p:0C˄6d:@ɻU-7T4_6~y Tٴ$be 0#5w(*KƱCrDs)04k(Hlϟh1>eo]fy}9֩RQA*> Nӟ@,5\3GsV.Xe&;D5ѭ3N4oIz0zfc^P5/:Z8vNhn>5۸vVsEy*.iɒqq' ; f[ @ V)X (JW8O$v`雮A.f2(. mGEĻPԝ! #̵}n;O^U;Vh1 eSlj^@J(8+y!aV{#9 ehxyk~*% !_?D8uhCw-۝}-]fV0Sr|(A7Nm Ǿȡ_{N$Ru Xn<7`m9i.dͻLqQ|I<=r]Ck0o k{׳XrCf:8,l^ե-sN҂2 }Sl5IЭ2s2Q),V7FG"tF| S1d޲z\y'˜) \e$o!h]7IUA*YEANy? Z L. );*F}N:eJEnПHy3kexbmG˨{У5Tt? YSj;Phz ZSRȜ^%/mߟyc=IJc] ;~q׀\z VEV42)摬3WUH4rD9Q(9Gv |ܚ!jgÆ ۲2Yy"z 7tAj3ؒ_ԋ6ؚoԭmOy]K< 4O9(aUOp(iR^Pd\H'+GiTgݍj+1Fԭ׉v d W?Y)vJyf;F[S ծ~Pq!Nqݪ?GlR5i)I&n˜_ `=U?`>/$y(WUѸH(Ltq_$ǴkMjW{梃9EGd2k4u֐\7 RrfxcR*ܱO /فv@Tѣ=wQX ?s. bp}Ch=h놑S++sI B'*aDFiVƜu4݇Nt!:٩(K6>k#D{ /~2FewiYz :% m-T:'6b>ҞO.=vgNxsA1}y;N\8~[XřjRu*J {[uyDkY]^iC9Kje &eMMc?ET~Ձ2-c穥C47i{\I%9bj=?jb6Znw%squ<3+\29 v g8XGQF/.!r0cCG#Z¥\%)b70icB-L:]uZB 66[F4<Ĝֵ^C+'_)AAk@ʝ<Ğnҟ$6H>cQMCtg͊$B9װYV]*̈́G;$yXeOFcAދZT*k{!/՛YsPIBCOoL%,iL~  :;Coy'wϯįMNSѓ53О&վP͹Q A&}0)DvomüHd죒)S,byXFH@2! i|Ym`R]p-iKrVUܰKĝ G߇;v3Y*Jm7!MOMn Uő+pi2lp#G:^P7ew:/]nm.jxFNqsmE@:a;ȚjKqDb:jHInj;gSrV8[>UBלQ$Í;>ϡ3n>dʼT1+N6oUo=R?hw`0qVHV%/6> L6Z=eAw8A3șd"E=4`UVJlt1qقg LnOFIq dʦ 5=8 Ls =XIm/hzQS!uST$*%2A_PoZ.xaddPayK5Ƌ0^,| !~{^:싓p>:fw--sP7%(G 9^vq7myAR{Q࢞^TbjӤB9#xwƪ?zej:R R*-AA.J[ ksw;C2J$ފql$h!b+><n6qvIj?ȭr=%1|R-銃>9Xbٯ\Gy7Figg>_\ܻ\LRs+Sw{# hW&w@H<=Y}Ǩף\#aC` zN Y avl26ƭ1;_Fj"EMwN٭/2Efy|&;AL"ɝ;t}Qg`67"| ֞4\(!wng9A2#7sC#އ*B75+bܗ9GQ%}@t*:][kۧ\}mcNWE<#V˘n˴KH>_H~&@5T"H(<,`K!;ȥ)nTFWnӶ :vR_nAuQ% AI -qːTK)p#l)!? ͐BsgcO&0{:$N&dcl-D&)Aٶpv1rdj5.Rf$FꬽvLlK,hWl`ІQFygD/Nmu#WòNg)0>bV<6H꭪oLp}vbځ ̩\h9'r.F+pL9GqˉXޡVyx >91UCf\/Q˻fP t֑"UUrBCW.ihצ #z99PEs%=a2zkd(9\sѤFC%AxuFIE1<+N_r5)K$B##6^>c@vj\&}:zl'1x|6,إ4dݽNQp@J?RCt3ﯲy{$1' ~NjEO'h ܌TX!/>s6I$+ ̕ (Zw 1Cq ТYk#+d6Ⱦl+ W0y3DJϺT%(smq Fm"^whJESU=?ڌ5Wz+ţo2%$H /tuS|+mm,\x9"/@Ekr eV+"^8`W $!J2!\qEEbuXJ',C9wᨭb2۾TeWר)4rh{lNde8WF>I]+PBfEk#Fqa[w4K_u60hSC +谋H'o)$@,NtN)=Ma<'Ȳ1QSv~Ynj+ԡǫN䘲)7+}GӴV'ƭ9G߲'(֙!kDD P(waq~&n~P'M")b&U/r/uOxC\=f?Z wMDgPCMVpbWrlr%-j:7xbmީ@F |2KUC}6 1N>n9Qegn< I!m-QA8e]P,rub5gҋ&\>7qpXzGTHtٹO!14~6V x.{W1T`)$2196. #9S_n JMC \u Ym[DZ◙;Lj&-[9Ȟdt5!7^68NN{mXF  l@4r/$ 8{a4CY(\f00~Vg?^g,∶A8jg誇05B(HΧ=%(Lp(pu spdЀB?VF)  yo6TO&)]>A4uF8ވIPM;~|5^@vPMARb֒4֏ŜΉLװI3T\`aBʳY̔*<*DC^I%^!'&8TECͮF߹f,h ]t- LVvW." gݗ}n|WVHf1E5Q~5`6+>LX_=% ;4?M9(jz"f|_ w1]NL8MHK&xBzP/m a.HquIkUp R^ƔI׮5qV+Z`SdJX薚3Ψѡ-NpG^v hv[oF` l"XX;NK`# +)[L\+t&#<)ógBA,e `oVٴ'}0:'a=` _ V-eOC5l!zW%x{J⌑tl ݢgLxՕ#6{T^/˧! wX}Ms{}f׈u[J~zw\׮Oۗuxp`['S_zKJ~x;n[Ĭ'Bq/@ Xi Ď!Ÿ5&_WJn#h8wMWkV3e b$Qip[09NL|H%OAkBHJ5P |cF &q@瀣#u$`6 wzJ  Z [Nţfmuw)樣jַt''Rr%t=~VsqX hM`e=ȪPoC-,2wTGn3 &B=CJ TKiэngyF=,1#?&9UK6NDsچnc{A_MKw-m[vс9λ˘6rx˲$g~l j57lyoa j'iZ|Ij }3?NT);$n/&ٙor% 96O_d$~@eg`.U %| E71hwd&qaᡃBelG3&&tL9r5w@c^; SN#>[95=1zvW~{] f&Q Ĭ z䛘 g CM1qT& glRh~CS,YU6 C,)>ClT^6bWjU L{Rw`%(dkaUtO2lښ},!$n;(f}@sG]yTicIPu}kBչ6یH Ձ[rפu\D,lld9H˩BrU7O^ݾ=6|sL;}Ply}BxV˾9#D 1Մa|]+?YAAFCxV1q ]oﮬӒ4Egx "5}A#c\SXbwD1K囄Q/x͐ɫ_x! ?&"%[If Pom-4di$n?#Y)a64@WB?!T:aȂobgy.WīD$tߢ?dg#~x|qڕ<;TRUK iK*p}M59vc}4޵r2Vƈ~-K:mβ†t`@2Y E|젠3Lu? 3-\J)ʙ/-uju-e˺,x}^Q HnfJ,n$B܌P7׾*,qϴ.9Ld>U]R `=mm NjWʡ)Q/:p=\Fͼ*ݑQT"1n0sD!Of \ռ⫄##"M vDU^X:x&wWdSi')+ujZNf0:) 5 ]_k!۬Iȴ ){~x*_77tDeATVJ6)١ w ']ExZ~ xr^dM%-{&JqGl„ߥԆyKduuBQ CYoM1,φ bʵdc=K1qZ0&7aZUv€m\mCp4(+R6Ƈ\'A1M__DQpkvu΋ q8R֤wsvw_0O9R2;QdR${blA8 CVt;yG\#!$@'EI\>2y_p/CF:8MVLwYϨ4 :,DeC)˭?;8f6(pbWeO8gqugSe~o|%qZ݊>Nd!E_#–UVrA,!!V:蠵#7`‡}׶O"$ٕ;bxFE.Utg #!|1Ψ(TnSKy{>[>&)яnqryxm[s _:9I(faqKbd*DV6q3{cL7!:{/q 7⯆a#^YQWy ޾l%?j (G]~}qtS@g3}W!wٿr&Qi{;ls)GJβ&𞌳"$8c4XsC3t;L='iE,>UY#"jNsJ~CعCrR\*? P~B ms&nS;NIO}#dd.AY{KtS(D) 9TS|W+O7*Z]`rcD @?>?=cզ"y(`M9?<({r:qыIyI=lZ"-cXSuL.e=CQg okvc$2(lCuKGNMN_fä@ENؘ@)wad:s=o98(9~aZ\!"P%9Ub ؝|ug@p~ S4P$%w)g^%!?Nu'?g*WJCju)={g 9Pd1:?*u:xQ?T`ll1ӓ$*⑮KPw[wgp)lQWյ_ڞW ƹܭa09fWƵeǦxG;uh @/@I`C,GvpķJR0W: 'T*L|}j._ִ Fo,#E]ҍ$U}bЙ:mdC.+ZdnS5%89V1~3јmMn'@9Im g?r#@$(8:"@ \Mk_"M?9_gwctLhnű3xo4 Q~OX[ @WĪ͛{;N4qc9A"@drY""jb J7=Inl{ */R݄эGY|ᗄ)+pi&Zd)?hE|)Ȧ #גPOcɂAž[IKn"yDce48M Rgƥsd)X9b;_9GYwDS=B`wp7dBI6Bzr#5\ͣ0AfTcE[u6 žQn< W*KM>;308$whE)L=qlȠ}:T®ʝ&9 aIO8ϗj{oyvnH-8Ύf?Io!òد$˦pzvTU o@Y0;;`z|Cir|[\27t ˱ЮfCoj06$1F(X6דp>axEqghbK٠+]ņ0e엔 *#b\9\ATM\Ao˘ŻmawVv+o, Qsԝ`r/le.٨ض܈,\n'|@ɨG;=(iGWG?n:2ӳ"gl9/O^`wδ~_EI?RK;Pex;UvL<1UU=BG uRl p}caҳ P)*Mv+zVEd!Wyw!\mLkf˜{ ݲIg-'k)kggS[~W[ݗ?)Bg٤*n]uS7Y~EB~%~W tEeBRJ1lo_h  7zG#*ɕ:ByX] ϣTW }+:N}룳b HFT !Od/iI\4qo܂Hwf{'ԑPQK߆{ZDmozR\ir[)]A () f%$wtܒ`i/8B_EC?])W=f„t ?S𬨾5qWh+EPcNWx[L3Oҷ_*67^hƫ}M[$w>B93ZY>na #(nHW 4ېcm nԀLmT﹗"JsKt5D[$/*g. <~ۄ&s]$=,~ajJ_΅rܲL-=W PBkxoDw&xvgqaPF|jCP5,i ;VXwTȢOV9v6̺Z& =k?UH_Tc.R[8Avi=nN1zoʗAY C˟mPEgUj:d)EvC̀< yWQhbUa>+vjܚ,:ץ1SJlAn/3x+/@()&mAL{'r/sS9мM889t/:x,)r$=կ4h'be'`ɕ.5f2e"n3[D6z,!T9,~;c7[w&H,v@M7lH6\#ļQQrAҳbot9WfmEu~pVr^[r <9\t|)b~3G1H ȀhN<?,RM 9M}uz wg:p m׏^@~>cy}` cҥ她˽h5o ;CleBd͙SRdRf~ T;#s/d,A@ev:+BqrP vE$ݔ3}›:S !~+?ymj,q/BEs5н(!0U^/lx_ZiNfA\ztMLΧVOF7&Nw!<`gʍENLk$r8|w~Mqxz-k3Ç좫n%3 9k=Z =`68Me@7:wf&f}1(;ZncG"H&#7 RzGVh}Ky9"$v=~ciP"pp!)IapL+GㆲJpSc*vMQC|ӊbT$0XJo/P:SY"Y-&lP}Ҟ@J j[5:7&ĥRnwRK2, ^N鷧G׵}JsntN[}bN.!c|!?^Yvs5rٶHusyJYv9ѿ(zU"QO4K zkj`9aZC7`U ezQqk^p)s@%Aǒ^ oنl9S ID}ڄh ikhK![~xkANqP Nd|1D ׼|QDK:b{K]~SEš}H\aLpP9LSZȀ{(01زA1,q s]QshU`I"@=(df %+uJ3,Or=m ^=Xe0!WLA!k^F?uP y/FD^'|@l%v+DzgNr--讏`ضp5)ĝ'PR }A&ig0mSrf>Z k}a!^>rJ!m\fb{.6E9%"FW_ߕvf@!݃% f 1ON=[mi]:oǂ;g:8%Ř YS >;4ttb.)Oٚ3I+A>N֠/L9mF]V Պ#,fVT8`z;6-e/Kޝ:k$焎] ;9\ '&wB-__9b&"O89CSS#F#j'G p9"zf֫: ͬok+ ގ"^X{8^$)ܘz}UfJ J.gN$#ݧǺ'F7#3}/O,趓K%@ePf׼tKgSS_ OZI>3ܩO r; aT")frBg/jzҞ VOʖJnML)H6P>"[_`rk{sTb_ )bo^ľހ@ P>e4 |iZ8֏vVmnqk8`n×.D8|:8kJup ȿtYc,nAMJ`8[_;q.nq߫f =g7_"¶D'o'l!vV5TI ,*H;5CT=/O\Cњ5tMۧVQUWed^Tz:ohb;^ޤM`%I$B VNPj~%N(4´U|('aN9+P+^. a(Z. + $竷4*&tb+yf +bOH6>67?sɟiO{z?4NGAGfK~ kVPﲔ\m3)"{ 1P2ew8nb6O3Udv?Bto^Ւ(;nB #p2Ұ'ŨʋwgXۯ}@ =ma&i$QhAy.pX# =rbY8B.*@$jj:S3{!$;znQJT{"/wb4'ͯ|($¯w?ɺ+DG#eFLAa ƥYdIH$!ІoN^C wcm␜e\8_XC>߹24uRfvx`5pB#?l:/y(hW8 DE0Cy0T7J{n ͚y|CazX01(|\RRfX AvQMb}E+Ö_HJrJCvrΈcMisydwOd(U6QPY8XJ̿7cӹi 6 5!J(Llfkgu)6LAq5P@ jSG@xOo4Ӿ%ZsGk4ntA!v>އtT7^S/`S)M /2;Ĥ;(D8[\$Ek9%V O/ | Q}6M蝒 GT1Ҋ:Mۀr"Y&Ljh,"\9.v9u+Vl(J]3WXʋ4 LI@4\lth E'Bg ]MktZ xG$(ֳB]zK\5P ~  jkwօb@2g6p~cBnŎ{E{腜H濣GUW𴳤OdIvUM=dґ$ y >+*6'Eڴ/Vց`:[Bb`3>q5(ޤD)' Г'gEӛ*XR5i;f>mzI]O~p}/غB!1Y]rіx8%EFz::d$5zCrv6߲9P?Rܬoy4[0OdO|%h\1z~OY&p%|tXnp.ŗD#j]C"i;7ϭ\ˆ$<ա D7]5CdMSQ * @)iacG=@Sݚ+/絤Vա f(*Fu30%Sŗ.@ {,AT.GAg?f 9ҹRF#*,ԁ4x0W|t:{=<aUWKt"Bx]Iq|_3^ $ʉZ`E :&;Aձy,`֯+Bxk!.'bj:bAbwoˆ8g~6T- =%+,d_QЯ6Dsώ<~[*,) H8()wGM"gtaUѰ$Ws7v\^8O"~fl'ר/ <$f,#Xc8G4tnJs@>H=q!6Ǯ5S5TeҸJOYZ6ɰX~PF:ؗkou *_|Ib a]c($ 5k*o1TRfM)g*{ JޝqOǥ1_cbjv{nkUa)KϮ9[^qn2ZMx~ YoF`σ"n%slrt\v/W@$14"/@_P.d9:@K _>2_cT#Se|Qmt2<" d JVwyJ>B>^MC k%)k}*Mi_ 7J~cP̔BSn$_Dx-׀UidiRI]ckbLRawvǟ _HPs&\ &.m< Y",-mA (~9}7tWó,IPp2ޙN]8)B &?^4q*?n&MRhN:Oqtau[H!-,I?τ.u{&|7OsW3 Nl2l"3,'AYQ Aߕ  :a=`RA:Iu8h4A毖%Εr.pES95qB@,ƐNcWbc[dB?;9O|D.R;L6s<*_7sZl5q3kCQI3u6,;VѴ3əwm XW]m8RN:VNa:$FY}ACRL\JacWgyu3:sq\suW0g~1 i&ʽBy֟}:˛jWqwUoDmΆbN˴LZǩi= v|V6ǣa/H.a8k⻑qE&OsW"[C/K(Bj"Ѐy4P_m9{vCOkwW(+t.cD=XLɱ\rĈE?,Nl!Y]YüĔOm[9xחǨءW);UEF$k8BV.S}a]N -xa}WRO"@#<%ݷcY* 3^uΗ*$(==,ȡ6"-.(C,a{*>Qw}ׁ֤ 9C#}|\FO8ky\ڵTTi K:O#V<Ryjj~j^?;w_s )H׺MU^ҧ*_D!3Iia:rbΏ&!^P ˛;Ht@"Jo&<ϕD([4n 벪O˼ +A&9>$J ?B?P!df(FmY̆Y_ l].#KFk$iaK6շ)"pgo̚_e}yXaÜu]R;nFZ\QOF$w(VfAMJ*`V Ds I!Ey@3#`@?`Jī5.[JS= @g̠JxAqCXFz4%_w?pٗS]ty ﰑg3z<Rs{Lyq,iHy1n94c=k(}S,_՞&&x9p2u$:V,a&R@|'D) ;N*RS,ݲw5]to!>^$hb]6B}$ґb3`\/1 ?偛*# $d,X~ aGH\t4$pScT1p`e8 $>%[BE* eYk/T۹XYpaPagghJQdayO2;\>[OGJkD84Ʌ +ֶ^tB& ͸h%VXvr~::E:\eɂeQUg{nMkXiG+qMu~ϥX 7A(Ez^-t0iUʉ[=o0PU)8VO&ЇZB2YYfM ѧ}Ib|[Ο(6aA1YǠTZmۅ4D*@໇H+o hya@J2l^vKmtN($c-tlZߌMjv,4MU]׬4?Q8AA7 ڰtmx+WW~惪KP`zTe[5m%E Oƽ4+58c rxje.^pƝ~xgze+Af$aG擹D&p!3QޚY־.y`4NDzΣ8p- %5?ة+~+!6lB/VnLF;,Bђ|>$%`YBX{ B*}'$gGm+>EYwz|/6݅ :t藩Q6dH"tc& mx =\L $d<> ԔeIk}ʍYgkeR)yE3Og;)mw#Jd=G,U0ц DcsaOٹ:9&_95Mē8~g¶F!̗4iuA!$jbk:=Swe~Z 83M1)WB[u"W,i%nc'"5?3hW^4tQBʂt0!&1Pnufo9m o:[w'[AQ73cGbH9I;,XC|+A{]ٴ&߹]Ms xod=)x6y͍M A(k"$5OsUڊŎkIQR`^/H(UU6"7bcJ{!%~ _Ubo;m~k\}AТ/kh[+p[ shK袹c}?װBSқsQ5K9 l 2{/QW9RnXxf@Ov_MףfYo3r#pZ ^ tƾMd0ėGF꘸+Q$.K:w3]/c`Ձtl@C hl20WnMc;=b[3z3+ O9ڔA0I#OOL.!5C1%(d/nrNz#! l|сk.ԝP5np=)|C󓀌KY cp>ĢeUOFd tʢklh|c˪8m&> jT:NʩPY =f~!mfckznHv[ڱ}'hMJT,%'opʫkӕ [ǷL^&Ȭ3bj5p{p邿[G jp@:7IO\ vhy|A^ M v1+yrg nB5nB #D'~o';XE1*ȁr4ۄ}):GiHݖW$q3ftj}/Ͽ!$^IvE5(ߨI@E]n'\F/~,ftL21K9Uzdl(وXU PbsK]eʹqvpȪ!]tJK9+⠎CV#ʍ:.}זIStg‰L`j<[} TLuƂ(/ʼnȻ#ÖIps_+)Tb '!60s{6fGUi1֛ˎ}J<ڛO 4V%)N9)cKHW3qd/@Vpv{y+L%L5*eZTJoRU>#*c*bPl~ACʲK VK^C[p0c~e$Yd49#x3ş'5uPJL,us9;x!xayIx6 ޜ,hZ.BfW!m.nư9~L W鵠5A:ւ)F@(ڪ)&=ߢX~miKwyMLOpZo;JM\&ȈA׉+!'kOE.۞ٺB,;xW H.Zz ]o[bMʋPzJtZx3Xk*F*}(-7;'~k@| S$t\Y&ebֵZVLtQV uBQKO*3Ig3~,5_KW?Sͤ44vr7EO.$IՁAB)O@}0;&xpodsz]\[AN#ҞK8u/]>'j{WsoЬqG$ X phe*A, ے/dS$6"mhj uNi/RGnpJɲo G`F4q?R h`ZLLKnmW :i3-ݪvD":=gIH :f|PKF)bYČӞep`m1=g(׷_B#RaS4ʘ^+`cli/hvHBX QgO~kmÅϮb,(8*P7}ϲ))sIx }p$hcY= M[]DuU?3Qk%ime_,I6jdSCw yE)6f-E\Ɇ7\)Njޑz .&-X` .ӈ8=7B|.ʥIfyPl7;I;'oNq_Q }Je~,' IBplm4W0rd7z 8uM 7;SbKRs,W;%2.u }jJ"]J/ j|)zZzZޚ \I"^û,y%RfL%q_zp6jA*=t8osfN3VFcuҹĢ2Ń0pdw؝ISwh\"Q߷'I?T;.|L9H3T ?&X&|?o qt p|<#L-A.gCP=]GQա|ƭ/qw /'%ȄRveafH:^j)B wC/Xhb&fu7]zmY?(Z̷!r/iH^) mW&:몶½fT5,PO tt,=+10`rX('CAKemWbf=!P>w?~/QWV i%ӑ斂9vBz*ܾ-`PCZ'p!D/,( .+d(R οtjj35Nt(oB@FTb{,cNd : Kӻ#X5) 6f%k($^ Ki5MN͖L0eQ0!}5LTC9HQ C$Q i/N.#'7>j#Qy_`NeppsY#Bv*juڸScd\kpqepB6!4w;I3(;`6Κ"HqK[gRWV ҶD^'쮡hK=*E:ߠwA.>6'coNH ؜M[Օ2RdCĴ3<0;o4G80s;S"O Ԑ8,I~vRWKfj+ Wf984C[BqUl#jk4C:e^rv`cC`sDQv]@DAjPnKb يBSkjQu+^t қjڄb Z| zmJ W?k`l 9'tt 5 =L1Q=vyM L/'zߘU"k^HUn#/26sb)oZ˗.e"HozG{bb/':&HE;kl;hțK0&vCUrF"sPY}WxMxn:XzoLrqi? }r Y&$U [K7*D[˔m):K@%kAwtr&bëɯνR{@P0DžA4"X"6ϴ;l>*QлхW/:޵ҿmX`>'u$iRfN,&>:A7L'xY$k-}B0?ƳS{vH@YM sUcCSdfaxjVb=i:zL+-”#6 -!IEVfIB]W;kHZ^wĺ J%7j\RnuMgZ?`~ǘgaODrPUBtExq'Hò 0 s8¥)m .jȽ89pJZ̧yvh|[7dsE>ÎR\/mK"ϓҝ}p#WO|dB= wTvq١e Ij $m[P]H }@qlWI/7=UQ,YB١W;Cl#f*goq3I펧:(E*6V|4&>aES #eS)~=t iA)Muџo9 "p.Y$D`[&1k?&B`|K}_}de=k{+&BLPKꟘ^ᏟSpk\m2FQL@ u)QvPnH.nr0%_ks#nSN]bvS r}^is>iqnU FE0;d$j\-s#`7it@H?xq%Lw@|=zNTe=A@ W[#&39C睈NK@Ex~msKKպ,ڳ-uFr /N4j>|CD|PVg &wOqT{39n@AY-Td~f"mKLiLٔ:FR#Ze݇𮓒B\rfX^%I^KZ0Ac_V%~T 7V":jk[^/Kw:H4)aM"=eӯ WT7&[ǩYZ*N;6o;ͣ44۳T?a;ޏs! --gR(w5m Ӆ}Q9'zA9F+w~B9N#nd06$wx31ؽ˗K v+Iɜkh+jk-^x5;c]+^]< 1r$BF}=H}=0@7v2L4ौٽEs 9asw z'} U8W+l|Te©ڭr^eK)rCympl5ݷE!ߞV&=Ճ5ѝU gc'~blU5UqwuVrXIm"7rO ɳV7>8ʺ#K$6HI'cctF{[J1k6}ӒĔAm tq)O|j8`8[Jvexߎ]+Z^=a|#C~otQ^ 2?ԇ-G2T(YGhGRCSYo6 u1Q6&#?hM*QfS o:rxg%}]bQMM\ܠ-sv`iBs?J7mSQ[o,ĕ4sflZi8|R^K`16{j\0;w =Vv.38&vAꠔLG>T3dR"> *Gѧ!>F=9GF9Xs_m@\۸ =DsEGG~IhxCv'N7!B~$#fi l{tW-zK(K,8VQ")M2 )sx< ݦ3>Ǐ{Zʌo؉A61G!\?07?=ϝuobiz\30*dBpJc]|t51_FPR/$E>ep3d=lAjoߘ0CkG:Z7OtrnKߎ<@Zzwh7묌͑֫(geux[m2N|^/ݜ(9UzzI?YPbԃgty] qӶ3@?= m1b 7A$ϑ>̞]#(:9ĹZʭeJ. M>&ј k1gNpfw1+"ŭ)ȗdBI]*,9~DQ,v[{r@8Z(|$BZ"+@Oк{ųCvc d~T-'7\^=ʉum3.r c1~f ۆxjc%_wbӌ)F{u[s3m݂.G]s]ǐ:J \bb0ۍ5ƔE1Egl%[E Ë{TAa}z1adO)REE}c[UBkC4:=dm~ D-4!neC">"k@wr"_/QSշ^Cj]M_HYe7}c'A!L@5pX8Bre`;JS\=e=C( Sϭpq7Ң s|s]Ϧ2~W ^Ɖ4gYRFXSR]bW=b Vu\-Iu`f_ zE$l=Y^q_G6ħ},vu?8,һzHUf?:'g8l`e1)0a ZmC'N6+oز}^qt r[1YԴ)$X޷YoR1;J!0JGfKV~S\{C_3O+SHKӡL7ddOVBu"6y0Mqb L0^;s &nc%`̄Lj[( |J*J5)G&M槨{/~@b"8E= `-GxҨ {GMͺ,f*tU󶞟e!9#ڞt\BK,cryƴJ\^J:>;){6{"X~:rˠ,3ꖔT49]76YE/U8M [Ws$ u m@n6LMgLDž&MNC&q&az NbשȾS1V!lރ ߬E0î'\94;}q٤/-ZtT)Si&9@')oLXvv#nEhAz#eR]X;!n MmUI\?( Hl^SO+KkVXY%VXKo9,X-n#~iuZ6ϧ֑zvK+,:;eEu.<Cإ%7a+o.|vI4/z "io~ ;X-ٗ;vvϗϑ oqǺ={ wËwnbF[\∅JƹX*mWׄ hzM@Nf3!bS\6 Kv30qfy]T smo^ʺZ}]Ӏu `!q~)Tqg6f,b$n0y11tYja7zhYg-KO(k@GyنKoke4T7^~f>0S'ڳw9@VP".#1M~〛ٝ]n@]E({ !&-tYwܶY$EE}#EiY%q;i R$t}WxULum-0G* $|no_ ˆs$1b{D[f+Cll׮C.bxuyˀQ%!`&u@[3uFd,& FRO һ]Y>@'#4*x9y :^ob_*~t"wD 3GDW4"BRTZEl_vGk^&hL?krM43J,.]zhKy 1Cy1m6Ն$.֔~#@C7Ƌ4q6Ux9 A j-0 k ]9(ii[4f'AX'|С5-EC?`?rbpMf7ʺ{m5ZV#u4m;Dcc I/* A`FfCޠ_UxtoӤђ@c.7oͶ)2!U?bzº{/Iy%66X%x|mOGwV+<:8 z_at)He" /qd)ñ\;c2Mk1f |M[UIDEY:MoFn&$[8砛 ~[XL) ^ N($){^@ twQixÇ^~7eTȓhDvu[7s=Zr_>SYMwz# $Si tِ?FY $_^i ^2 vs2yАzG"Kil =i$ދ^Qw,`3i ֎U WWMV ۃoQKpi1\uErhFs>~$$!՞CjD\ "oC~?eo0vdҗK2eJ@4AfD<7?;Jr,=,yPLEwzEth_ c8|qݑY/XnW\Lg@?>ܾYիS_ XOsp؜Y&~j)?)Q lm.YN77iKgC9[?gE (STm3kjEGAM5†ۍmtNTn5Imt`v^L@i#|ظws0MÁ5gl`\r:}j.]8NRA,r㗌Kx7 ?@` d D8 HO{N #:@ c}T }̏Y0h@" 9YrE{j}]W ͬj-lN:,n40 bn%EN#J-X#`VKRS֜xi_.#S,~_0 P-i>9(; ZC4P{e.Af Et^][ɭMZ`"ˣv1ж; ?rQ&)]̣b%K>Ōi C:,TOJHΐy S>dqfRQwUR_,bG54o-W/Md9$.J.X$e#}QcZQyuک Jפ;^$#eCldh{38&Fvij˸3* 2T49WӬ)KTHpU]q?.=;i]&wG}?!~ri^=?"čr/?}mՁcLXP쟫L pMӲǙ6_OM2p>p"DނR9'YÚ1Ո),Ibǚאo ƼU6ŮJ Xe%bF끚d_ZebT-qYlaJ6cل+K+Ĉbh#{v-BVT{p#L 񻻝w|^Ʉ+xRc"<;:ژN$L*T\]^3Ln* SբCWiJ|٩Ѯ5jy^W8a-%-]pE"yW+V$Oɲ[^i"WzrS3;یYDml4яT:[C& c[=J^SaýL'*SﮋI%(5zf<|Aq/ĭv+<i>eJFahlAЅ;X48- =޲ċQcJщa4;>-/j7Ta2`F$^FOŔ,7ݨ6DqgСi ">J+jr3ig| x_ګjA)LНnvc5,eSzMWWڊ/A=b\rQ@.AX ،xMG~BR(0ұT-WіS%"Of ?ᱭqPGfOf%mS{DtN9 w 4WyT聜+.}?oj>IyQ/cٲm\Ɛצtև1`+?fXbu2ϳUoXf(O<w%Ntʏ5֗}X|vJZVfa<)Pj u#Nd1Qm[2HOnD /ƭk%dqGSˆ8f=y?F,S9cn-M)tfGUsJ؃vƏُwQ3\$UAY-5N*nLr)||1;cc0f|: %EW+;eza?Y91`JVF7oXh!Hћ`reDI46LRKD>I=AKw+4ue b2d|{NhsWɃ#/ έf/B/Ҥ[~a{,.{,)5\9@kՂTPp7bzÄ, Ո0N\G:$Ҍ~"ʁZK nO3-=b=;5'~:!~5o>|UzET>w;Y,I U12z>l6()kLDG?sLD!>HhY+|klo6~> V~ZZJasKI`غ) jv)^}!䡩żݥ\Y;r(tM٘g[$s;`Wۙ $خ{}n\ϱMj\6nl0_@M 2Q=Kħ5 :RIo\1aZTc$qSdնgǛ*8N G8jnG*{uwƲNMK0i9gk Mxx);]\}U%-Q?sVluN("cy&;˛+qLr" -ӑtvqoT#M*@-~ b]wksY|J7,L oI (9oOUhR L`ߵ5{2>):ER0/ɽX5c hKM ּM%jΰv[4?>j=IC|Rp\kCܷNL7۠kДe!N^giI}xBF"FHksvX-:eRXAt95Kf"ZG6-=N>k~\ .Ǔd(4rZ9 e5=%y9ŸjgZXb Z<_0+aLQ2}Jb MV-q$^gc!ҀosoA>m ļ|\izUԨèC z:}WX'_f$[Lb&07@ 8w&t D~a5;tBpa zXݡ3 K:ɸfRqY?-IXY/2C|*n/#]iQ^[d 'oGDq[O10(Ihh8qwY `L-NCKA.ṁ9Eԗ!W( a({AI}W8`ySa$N3Ba$->fJ0q;횛(_9 uΥalmPg%ۻְgI#F>|$()?\~[ʳ5_hOe嗊T Gl'$ROh'ܩ|q2 mR3"ͻ&\g1XogM*"mǏq%q~\\btwX0v-2zk7Y"3SM-꥽f].r]g>6[Aai.V7չIM"Gq›L \S|!~ e""S+SJMXeC77*u_D۲awBͼ轛(MenLIi2g/(THvSs%s{d\t{b:!I]Zu(}. KsD_]Aў8C;^ᴷ+x/5/+#]1W٠HxTG*M8}SWϰ(&u#Y,5Cv XAnii@jLF-Z3TA:=tø9ts4M+.`-{|W|0=A`ýuWvW=eѭ/ni3W>XbÕ@"dк1r P%w}Kǂʹ\w2活pM [zQYs[o(h.l20GAU RK\^e'l71Tϝ_HX$ ǝî [)(E3/0>} IE[DV%脃Q5tq5|"S:8H BUu.V˂箮izn:q dE4r˗0 κ߉zbV'c! /ϒ8kFִ]ln,f|3IAamX9?iOiioE".9znbQ_) CDߒ{;FZϙpٗ/&Υ@]D~)Qaz0t3P")x"|Egd5˕MO kiqyvfAT?WfI"I廮pyŀ7oa3]xv}P.0nM:wMl@CYZ=je]oR_M .bEx |uzO ˄qqi+Izl++^K|*]wr/!QJ(QbC`z9-A+*7j2μ 95oRQGA$1K'%&a=ob[Y  BH*L>E#"M|"o^ luuYf<.8leH8!W`}y Gq-MfT1Jn VۍQ3L#.l٢bwkí *"2Uw!ўVlbji鶰oÂLqd~&{ !]t:viI36P[`wD]:CM:\ѢY' D30-oT"ܱsMCbA}PV vt6a/>b[Oyo_dڴ _Ht?y7K7wgCRAB/@*+Uw9w&!#x+W~ Jk Wab,c@ITPXVVGa("wO~% @xvP.Fه#jJ<'B6iNTX8^QGK:SY-_S;Zӡ7 LYs IN!CS3ѭ.-tVsZ>1[y>NzغkZgu`/hvl.UVCu[kʖi%ooԖm#25Zⲽ&jBQǒ&7E8#7ǗP%b}K,>ͧz/b3v&g;g`c.d`v> |t"  ,Q55Ig1ꐤaЫO`L$ MU غf/ hE4=aЄ|QC0c=Eu^=NOUG 9`5O5zcⲛxD7fvCS nxQx{|7NO-">|6]܃ȝ6Г%}:; â:}=|69q&<,xfv?/ZW6۷X7BDWq]0X|?4k1 ~eϐJ%HnNFpqg$ĕ m̎ѦWoXB%3k%fV%s]d~yJZ>GD?[uu&hH#v7G;dz+}jgGj䲅 FY0Yło$F#cPsIGNhY0/J)ZL~QM5 _! m^Ъ6tBL lzsЀQ PV`*(B4V/zaP+!p\s ?[B76O60?:3҃Ō~_߀TeQAy.#^+z_&rk9@ӌj]o}+$h_mlQ[U,( 6ۓ)$ kF~pNqX2ؙ˹٭OpY-R';AQ;q5e u6=.Go~47]ct>o擽7p)3%C8oe)樼wL>淥,~e}V;|oPߏsJ\N r0FI+ LNБްftU {M]NDȩlE#A1Y Mk UVyyRCpE~ض4=$fa.,|`!:1?.YHNbmZW^9GuR?wW[ ?Pz~|;)DϐÜRU7 A4:7#6W25ygxR-XxJZ P8??."ZQbb[PX%<&[#"P9ua,2X ʸ\0zTOn$= | x𽁘űNЋS]<@9ḿJ[ڂ%:ZTGq X5Qjr|x U{b,1.s>g4 =ϙN@W]≮p7l*=:o.zh>2/StBPx``ɛփN 9+9+9_ IChJ}`o_{C yW ϚK]r?[rxEkrh9ZTIsE,qMFh8y:+xBfCiVs z-7ى:.-OBf//k}Q:T[Ly yzLpylWM\:LSWݠa@²Ϫlsm[RTI=zs)P3KoΝAi; /(n=s*ƁvwPktqHPJV ^A,kN>?]vnG:pkt 4}jN_/wsλut.Z9z6[Zd!"t!8 `qP(ڧv&1 :`CWe)l?eeR! p{Nqm~5^\m>v-@|)2[΍Io1I_LSqm# tse䗾;>UĉCu6r?:0q3b:-#&Sl!'_@_VƎV譨&QP lW d$[7Sܲ_+-04W*5L+k)5ԝw8 ^xwaεI O:l2&bL7+}-V|*ǽ_-H:[~ 4H c;do':̩Υ9s#`e"mȥumlsI,|>jWxoHlo rUҬ]΢Qf7z9CwܪO&RZ]G,ɿV,Tpό!')5pye_:dq,~>$YV` 3~h|Ws굁4*VgSnof~݉uYZ2#aV`ir bSeVi*@-#w8 P @ :J^-k`zIzeza L6KYIe.u't)Kog;8~wvĕ$"VIu͸}ń:3M叺ڡL7_uSzPW o=*&q3m\'\1lg~AGk14{Z^q9?GGxT@=~R Uvn.h44 2 c.1 /Ӣ i7^Ԑ@~~@\Uuz2ĬMenj2F $ߩ)"s]9:wD4^ iҎvT,QwG:U6LNg\2W_LM_ȮBk#՗U|$QCHZL9|z~K<az/oL QEˁ~6Q@%vHP9HraάE&͟?m^\" U{,FD,%g).o`ڭpk]DJIq ͚-.Ԥ9 r 1!?Z_#b:YvO>s7usfILצq@@o7^vۋsy`%"I _ \NFKtBr 8Y+>Q%SP ONe*eF R{1CJ!'2_B^ឹ >oɹk9[)H{]%y^fp08i\Ij\g{yM@DGa7`B:f4D{}&~\S5?,W3. JɢP$9^@)[vQc_wjJ>Sb0e=Χz' }+ i \Zk@e3!Ct`[N ЊHG#!S&bVTA 2 .y:s%^d{_>z}T:Π/1GҲvٱb0[egKfy/=x{ %?DEM?pxB( n!3P/k{^ia=3#N/D7u)keWq/\UQxw`]{j"<&xr@)9`L30}9 ,=/4#)#u!9|s >La㊚ό!0w٠N|i8Fr0Tn5YՉYyH/gaWd㝐):#W)1㯔H֦2"ˆ۱iWjT^FYf96&9MWO*6sCNoHW^Of]˭sVL=4rIϥ1]WO+[(':rcFVF>jϐXgւkJ{,~x-B49-&ĩDciĪ4;*t3 H4LͤJms 3"66A.Yųv p%29G 5zjXX /渲r2{/kVo\j>*$]G Րgdw\ }f n9`?\E\Cb" ^=)d*A0.%>`rtZ/7o6 W;* R` ts-ioN_xxF)X@47c̵nC0 QFCIBSNzNA'p~oWnLʥYܔ _Z(ޝ\J=8xlU* SapjS!YUۗў,153/*OlI[~UX^1pVoq2"`Jq|<7Y#mS%{EBv)ECAapF˜^/Sv>ךt*U,aiK)WvaY%͹؜\,i6dA]R%?۾4•N/5\P菭nQ \$- g Fc?yre48TjAДjXdvU#w:gڷpfb¸j̽o]kZ3hH,_؆h"Irč ?xw :Z l; pZB^ w:K5߲ }=v֢%ܚ5tI[VRM5] hy ÌͨKr= ZUUEb5z . g;8׹﭅vOmggٙnP_nb26a3Ƈd-N7}}`E;A<e%RHipN>B-˘Q^)}C!JicI(/Ъ`v>ۗG:%OzP$xR3/y/Xdi :a%i_&q<52+§!L>i-}i FqtwJQC }tc\t:-Fz'(!avWjvUC0/@-fAUG¸<͟']cbSO$o4}qv~el݈LZO{e; ?G9vNB@Yz+|Uwh(_tt[n'Ih8֌H,/ '/%hX([ -\Q;YwT愈 J"5ةRW}y_Nt%Hqζo]{ AFJLqgX$T!!넁ѐ[X)X'BDs`qP\T=:BT:+]ʍq>"tRyb09+bZMsTCLJCZ9g{MV*!#8Aiaoajϧҷt?2qZ (>PxYF2tPbYO9.-P^4߯a^@딣r'++謟z&Hܐw!d륣 (A7Hko9kNkœ"=?S[rl+kgt`zR} mN_Q^tP%[4CJ5g5[+OMD{bskTi z^!{%Ҧ't[JXKB W>˾Ԯ柬3`xqW;@/.]b*y 0[vNg;b$N(b!KYxIܻ),DO]VQWKvzI]rkD7BJ HoEPr5Wlƺ["&Fo=)M+.&`",qKst3&xivQ/Mh95旯Fobje, x,w"q'"{9+ʜ> pk`,:kJ\^6mJdM PWv]wC RmDDQ˫Evu_ZKڎ 69ÑevwM/tX:X`1Ӂ B^joI9,}=At+q9TAv''5'σJ7 x E=8)ڐx 鐨%0ݹԬU^Da'BfpmyR|]ѽRΆѭG*LFZ~Қޓ>DgCeh=#B1(J;=U[H"R!+9J, L %kԗ_+"$e`yȚ9?xnƆGݓ}ϝ |e.piﴽC[|o'C_u+NFRe%3M?);T6EB9\7~GĄ|+%̸sN7-6Rt{w\ybhte=ֹY^0[!d=@;]M3c(d/I >D vAy*~ĠEqm&(3еA]t^ޖ[)l pWߛB0@/| XwѴ4}yek"OY˘^zv#ZL*'i_KT۝cDხt@7H2f >;X NㄱTZ>_-$a7=%6IthR'CR ?A{7 Jag\ G6ի!Y,Ԅ|F?U*:}7t] 8Ykb{UҢwA9`ʪz~)śݩP K%1n2m !BǕ3kHATPds joFvӠĴTeLii sp_e!Sz{(|| th-mo :Drb0Jp[&Dc.8!>!ꆿ)ckcڹN??Vn P+B8nh$yE*\O $Đo.7N0ޟZbFȠMqj{1.Oط=o"6oCXm$[yJ.ux=*.F/*Ҳaڃ&] g:tΞ*PZ `lZ67{65pˏ N~8]k &jh"7%J lB] f|A1noiZMdͩPa 3X]3]V`}ضwءI݆a$এ*/(eZ4r|g/{`\9Ůx6F]b hhTCb)'- ?:8~COp?dtq|bSe`'ܞU#'g %v Q,Hk^˸Bt^Q>unB́8<gtC/hz E㥙֮q WbYylTM 0 噼:xoOKt9ưy*~1pBN.kAے4~Y 6>"6foġ&Vź1u%y/^%,ed}qebS:/-J`gɂ1qBX `^ђIB dd:tSvvL˜~BxE*.Yߧ|o!!r?i ^h8A;GLeF@एmD.jbunB5$<.J\Qs R<Hx>#np osSnzZ.6; q~٣jlRT3I@AI!"dw_7u5{ǝ\絚>F/M*ɽAyCtZE$8:`t~F &gB!d@p'\8>ɧ7>TMbGZ_sI GB|Nʟ;? Ɇ򳠍B y`+Q!t9W^tt ׽Dj52GxqW;[Yly侯2$V۩ή?DU0n,J7Kxk~"lzV0%5 jK<9d`p:ga pDK e'.4q)D9F0aG9}^|V"4\/.w4z ^8 uEh XO㐇/Pz}=%(ЮOǻ}B657EPwtigkykY;' 8)G_qjkjwf@;N/$u)'G~pf`~+Eh|NCo VNsM&<~,w/W/1|u޵QtgjBA{ߞBTJ U*L-xj8L2U#ktoROH(Cø@L˽ 탋*3{:p Q*/!a Xh!S(v<5>cVw ͘Hnx,yT5bCg#r(s&k7i`mo"NTހp7N(ʩN#?7"\gi6s% ӻV~1\' uq CpKߏH!蓅s}+:"U-))oפ碽HI:>_ڱÑ{vO?"@mį-ZfL^9Umx,6\^qj޸dAldˤjY2$VAS+B]dѯiS!lG=a쇰N`O˄^T#Mlz@x|ma7q'hΞ,ɟڌ: 4DiB~{qTq: o; ty_^n=Y ?"nV ) \2U hKŊ4G¢83X<ǻ Kft)օ-*?g'=A5BN Q4#r ,@OLg][o,:Q]dK:OT4:e*kLtӿEO-ga&M0Ȱ_hM3ųC.='ƺ%1>S'7g=k %4K/JV\)*'7đgN06{T?<x QVc1&4ib C}%B3ʤgîg Lg x&߭F~1k-ղi)n ȜEpqC./^ ?,\qW#$+Pd[j &Y#|:m@_̋{\EhbƤ`Ϝw*GUh{}JvZuLB3a+ڲ5Z˭Sq^cC\r7Nqaڧ[$IM`I7,Q5)됻E4<g V쫄/1u;kp>`i<|np!Jh$Pp7_e8b_Ov^MX蒟=| U}<<ݺ*+vIf4%w:/Pxy1_yΒ2b[ex w@pD1g*(w&3r4U-p %cNzx!to *lm~r%10Ҧòn0ErpͩzKum_0.1#A$:^c; y3 "sz|eY %4 Ƃ9e!YhT ;mx1YYBY~DGZ!װ`=&vv`ʣE'.qHY z9Giۗ |ahlZU&kLk@o5ZZmƑ+LFk/H~: hz26X>c2W$hwY(f>®u^\WdK"G] .RǪգPO$&2%dꆷY͸,ԉ"9 re zbQ;#[ڽs=zV_{2c'L8πaynq_̑cM@/i5*ky˥o)u,Mm8Ϡ\evb79N}B( +C&O{+~$O7{ )̀f|.p+֗q}N.@uPdSࡺ%e&Pf9S}J26 8M<\NwX9X⇀guwh{[n`kA(=0iS {3T1qZU!33^ab~Gݾe+EӚG6bWcA^Dz @:du: ^mcj% YVvfE'oEZf TgڪJ{{R6j,w&Qt@NIJ%%yQ;O:w4WŋT3쿷n[YQ @XJ|ة 0rph0MU҃Su56_+7 kƒog&<0PhR`̍tjoV=,?-Vd8eR^@|~j2]"?f€>Hfk& 703ĸ t|.trduu$黌>f@R!xyB3L(,l/*7{ؙ(~͊cKy@2[z1ΐpȦk|6ẕ=Ǯ4U)(0`I;O%IP!Ok)ݘYOЮ$ ھvenmcՊ1V آٿ"L.-n0׌ @BZ;(, W%^A}E>pW!R4|E)d\[2j% X** r^牼:x,J:O-a1I2 s8KҮԁɧ6=!&V/Qn9 9[w8 {?X[Fʭ<|P8|.]fw2S.M| ~?pϵxt&s#"U?օI=aÓ-pQXUC w. EsC6] ֽ7'O! Zχ Sy Oi WOtԞ8Օ}HPX fۓ񣲊]*_#"{%FHQ ߯cm2 lҊPvܧ[xQltZFvSkL@ ̾l(yDdG,46=eD4 $avg7]tP= *i'..kDck3ZD&k#D~*̳g|F״2/3 Ԑc[%LF; chkOM m[bUpfTFN0X~8<qaebtC\Ѯ%g ?HT' M`fZ !-e/.aC Q}u!TK+=-,(-6LZsiO >,JuiS' ^5&FN@cIm6J ٟaY"(~+ CkI-G-{I^LHØ3a\?őؽQvyH)Fw; B z#CpkT vnVWͽ6ӠPeT7;Ne;C@6,V{IC>BLhByBo eٓan}@$\uq?!3eΏrNX ,Cا2*N&15MXxG6B,cBt?^5mZ>gکUoW{u[EWn |K;I_xc 5 f>1qV&gɓ?V ꇕ$r_d_ `Z|3FE$?P 533@c]u_&WX܃)TS{}"f2R-?QQ~n⚘ }\Ӆgv@B =r0_Ue+IBm{;G]vAi1+v5 .*'^XSҠpap{z_qz.~r VYz:v Twm!g^I&>3xխMncRMdg;nPԯIn1;_I6ةoVР( ( @C]L !W=O.CZkY[1]$ XS(_cW)|8dҏ=ocr^Tv\]f}BpL@Rvn~3RGAtA^|9/CgbTUXئ6 Y$5D*/dƫ$ o7¨6I%Cs;k5l7z%8(3)5kHe(E~bRbӈ.{:_ozJoXG\ҌYȌVVOjHҋ0BFd/:AlA@ۤ:Ȫ|8|U#;n^fOS8<|6j(;jo|Hs2\_dCbQd'">r;mR.~?Jiyu30 QvoHEP@A WĴ/,3:,3;n}[%Hr XJI\Ge3s z8ja /kl^w]ي%b vPOdɀK|4?Z2*f;r/ne"Ӑ 496hEN/_/@êK ]ث'W-(s:Q0ͩ)gf_fkPHqT`h~ʸ/5q<)Ɓ}G l*nyqfy#2xziIWB(`kPo9܋+ oK[L~*&'[yfcR0N.h|Ε-DQ3P~qaol y{^['UDozk#*%,39hɵ̄6(;,'l@ ݕP)YO Y(j+_*^~=ď^w@HZ1i7!mN:F )&@<yQc XTF YD]Is- 7, >&\|] C2!5?ѢAL(7:)5%q&G7^&2?v 4/a~ז("[6)xMk#VP[e UgI[>XB̌ =|FϏe/GdQ/K *"]v&`7&d M,F"J൝-=0`e0@TRc;.rb& d=;}hU/} ZDlZ򜦠Nkh+_r9FtNJoŗ^jUD6@zŠ0@ZE5.#K4ou֜]51bM`ZEtrBgwS?Cb㜻 qqoAWıl=~qCMزwԒ71VcP6 /Ǖ`}']^&& $5q|.IlDI&~L*,yJW%vSҦVC&dk ﵍0 K34=?˸n[EL@žQ|oph>8ӒjzAP")}=Aypӫ4l;JHŴTTCÔOteQeE>+7J5D&qbOGAAL_HB4ʠZ?t;3w?ώ0>AT<향cArnm%u{rl]w囮/󟶨o,/Nxe!_@s->ܰG BUa/T8l&qML[hؓ1nWx/D";H[)f`|3&-FqCt7Q;O 7i7;A&W<n d1H2E/g)ז0oZI}P5DQr؜.x1-Jٺq Q 9z3RP7k'٤93!G.9G HSAgjQmH%N-Q}Q m_Qދ>9O(s^xy-Ht_5e>MߢXaT:~n#qʴ^{tнX3qĤ&翵+By%VAoʉߑ1͊g%yNz=)kKIĘh-(L]Js2ԍ dx Nn.DogB9v}PQɎ]^0l>}14NIdbf#~/"vm``T)*t %.DX4y 7z<f68%U&E/BYnj; κ"8w5C!:DM,@xݍg&drWa٤LWhIŊx$.bWCtZ՚*_HІ5etںWvJkRO?:thiXIr:s?1 w-`uõ%1ruLsY9$]ٌ*ݙlM;6(t<;͕^X|i0 BI$Fw ~ : {㬻 ݱGJ̡{E%:"ICt>S2sڜ}26 $u?IRsjҟ qYc- 4l˓ĉZ{p+H\X:W(?Cܼ[K {KGt> 9P?éD.CšY^VXSfQo]ݧs5cUը97cco2ruw5ߧLj=ѯJYPSqB b=`Ζi u׀HNCWጟoj5" O*ST*Lr"UIYv0 M1|j-]'"Ssc.ẞ'Tg:-aK&lU?́2^HRUBYןl" r:]3jx/2v8͌+I(L(Xb ҨzV5-^h[eW-F;xK|KlM!{mY{{ʱ.йMDB ED1m,S#]X0K. }MmsNK!/]2KAF+aΣl2>NY4%+7(u'5̓r WNOxj3|b%Ŵm>d{ӡ(-ϨGY47)u:'G$jC#aʿ¢_(}2)&T#(җfFrjiԂ ܟxI y|&!.+dSa̙#h2ur.ϻ?ӴZFV:{Htؽ?S8Ѽ -kY/I#/ڈӓ7IC&o%@`]$[_}UX{+49{I`y!={F! _sݻ,UO*ٔt5$eU ٖ:Lg{d~'CӰƧo</8LbK劉==( u?7MB_\R{=@ER;1oc)r̞Ur^_w-s6pAE2:Fmȏr v=d_3ǻƝF:F1@|g<^xږ9@<\Yxtvɳ &ɽjM+,a -Ezxcud^m0B nhȿeo̘'7ȎEZx8߁~ W& >{_j+Ж[($}#nkV1X*n_i`IPxnޛGOzK1_ME̢W̝b{l);(ͫ㣦n^p^ܓ|'A@w8AֆS<,b'tsep"=kqcފ]LS<}fL>;'Ib˸ݦgبJ`6h@{-k֏ !]W{V Mm@q.A*MM o{\l;,/?sHz>"8!DKfBJ81eH< {BM'n94x4KT]A(.H-cNlA4**.8c05ؙZ<*|:*'}Ǧ=< rpf$/H:N78Oa/t1~PZ?QLV)yLSuabehDR,KT6L >Zh7):{|:yUMdlQI -e*M`ǭ;Cx:m.*N>㚤Nx^͛w0/"f$P"ey@J`u"d^mCN +y w &b@{ ?'s D 3Bd;GT ku9PNM8f `HV9s Ve>L3 }$2sݩ4%Z]5/dZS4=A,X-O}關oBk*X2ێ^^4BĨ“=2 27Zz3kbgo0 ydn4*PjbD֦KkB<{B*Q-aLd[wxb"PO5;1^Bm fh&oNP7~a[A grGd,6q6EAݩn1wYb>jg! o9$V9@"ߓ7+$ {Fj<:p8}G9˿PUdLdliʎdT%7m|Z "wnsDѼ^6D t6fʏ+|p%R d4N94c /r>'8`E0SmEeňo<P>roLL*i|dB4zccqZT*fF &TNmIS#K-(aF2Ϡֹ>,X*Q+,3ySBQo?6:~RLE }&BaPx !W|'yrWFγΖm& c|7H^6'{`m )š* sGHU#K7 ^B<.;1Cgxu/RNƌnsEZ8ч l=8lGe*t:s:~|Xa&ᘱ9qC*/=eM+^ fu6?cˎO Gw}:;w3J{*< {%xgxqvvuK\JxE" /JH2n ƷY۽Lj~m ˃O#(P3It|29$YU|u?gBU Џe`00֑e촐mVsnj)B&2 8q0 GiW>,>"/'S ]h=m睱z(Y֪0XSDkŢgERg1eF'"ו%p}BMxJc6 5;&3ѐgsM*EsPMXܸMm.uu4.䍸&/H\$piOr- F'PKwX%Yl8"C}bʋ@n+e8ѬIi%*S?m/veʲZV,NX@^R{*I,ۏ5!gܠOuSHQ@CVNZHJGe#8F7 T$ E^rnG 8sHԑ<&E`TEYyR8aӺnaP@E_зЦ3d-L=!@xi ؼ &xpU[Y2w I{8ņ[W5!eo/"vչ*wZ)z1SP3iq[wi,Im͸mZiՆ) ~;2Jh|gTeD]p[$&fMs'J &jEy[ hVиZumG$=iUǫc^g?1NU/}t{2v9]e>~qQy:w2P]0 (č7Bݏ~`}b,fm =GUPGc-@^Lժ !nz.eqѦ4Մ^ e5-6'NUzL@XoU<~͊JL\ F~NQ:姂ɮm$'{v\ 3vt,Cчɺa5~r.#BLx55iO:lxVcQ@EO噧ehf䇋gcڶ DYWCUˬ4'J,Mڠ_a;\CSPi\3fk@ <6-+jZpeS|%\Z |­\ʴ8K5m5MBQ>oZYpE~=p"c XPI%yr,n8h"2z'# TQp=ɣ S#ӋM>XGVmMmÅZܿHF%&R~ \RpZ04;W8aXr z4'*vmUV',bL#TF{/6VӒ I,oY}-}oI㙰!3ZC#sv fݘVEn ScGYa`7#Xrs3:dNXX2Om.G8(r T6<1FS !amU @\N ?g-JP-M&U`HuhLĨA8N;(0qp )122q` Ǵ:z^!ttY2N1 fnW~?t-)EAjo*3VukjEQsA8 -FPUg+xCh DXxz*s`*:Lt|im{3=DՁ9HM> 4WNs7MvEE 3\D/_y÷iǍ$g]# 6n DZ Vj'H&*0R[*ޖw 0 hSkq5Jk/Dz K5/BzX/S Gc`#'fJ6A<sMw8ι?gW_}9[zbd{kjEQpT·`b,~si݁IR^< B *iD|=3 H g!'l͂f@֨i~3 Dg v23KoCqqS33Pv e\}8kiK!VW|Y{V+]SdMt1, 5Y2ۨU(dT\ҮOgN*hr9m܄r+:\$nY fn6XU>?o8Q5k r ',CoglX$ ݎse\,)6:zh %]Ӏ#^I&cU *Jq[;w2Nk 0ݒ4hk͡Nmp x~@~B6~jsA9y ?IZ3; MPv Uc]f.JN pOŌcǶ7)?qJʇnV:Q" L'ԼUݝh޵̱}3Rm ʆOɑxsSUYtr#Uː TI< ZRZlk y .&5pb|3[jԉ!C#r~{C;OwuSR]bJZؕT(È̾;n{ 3{yHۇNO- I|ia(#P; Xןtc/иҢ"5̕Jb!wt؍Se]{wLb*Ǿ g˜y3-|!?#xvou-DC8=ZTA:d*HyhqMm3)ٸO諯|ARB\$ǵӺ~+R@Pz%+$VHߍq8L$tPڹϸv?e\"fL^z\pi>;Re W!\rȊN6O2DH٣XWD}iN!:0g}sa!D@Fwh@9nl@xGIb rW+m Ckw[淼D8VqA\,.YR}f'ya/DYI"om,x}Y$'b"c3Ry|0,LS p7/$5лQXDl J: 7vNQ20^{e1iseɟZGDD-Dv'YG m;Y -W}9//Vd96S4 4 wCq'CE ásTeUڴXAnݶq#O<աvKT(=̳(`.6rsp:kz;F-T5`0C˙8$ @ٖ=0{!:n%+w}i.jp.>leLJ0ETEUߝƾ\[R֎>7'Q=!5³nD_mLPЭqۥrUc!ꝩCh&7\Q38 -FV~*W,]}ox[n/56 L"vs=Wń!z ydqk n9~.5[XdV8o> E˅{|74LZ;Ų G(./^-yOՊKL$VtV6yZ(]̭YZ>4v}$#l,k[}=#qq^qXZ$cDV~WH D1YXj8P2?WuYH_tO-w6lkǏ 6崃zk"\8pkYr$Ng_Kgi©h/CvlYzHy&{ Aysλwi*A/~U$Oyn진5QiZ՞?&n@Kzb}ఊsDR\,[uw+ˉ#[-2#^7|L%ye0;q} aY|G].f+}5ӌYv SYŦضi*TƧHawhDǡv\hI ׵u/.\+!>TtG$:&f2R*z"6R@a4S#`Ï. 4_wQaaacn'"p*hǒNihy?N^%% QCڵc`AOr0]tjԅ_%WSZ~ QXne, W"4A+bpKv%X;.uŨ3diAUn'Ft3[?C[ǯȬj+41DQ8阮hleK5^@ԥztT#rx)}8=,椃B' K bfCP2b2^WgY} ȊWQ(,{k,+~+kLEQ<;{d 'eI*t`TJ)g~xM-KLUřD Aܿ߃ʏL(%ӥ|r>IxPUe,7k)z4"N ieFŭ R=|=UÇ5C=9#UaD#s#,hP^A`=$rV@hiq !N# e7Ev)vS%I^cȚPI#>9Әb#k:KJ12hdJX`Wc5]ef)^0L 6[+E i,+lxt1 yO?".>6Vɟ8w!j]$ޑ+~2JnU~ͳI"`dvϓ7LD3 X:J\c=S͚,!"uشE@_0u|[ܝiYmxX)O2K'i9 FiO]Z 7ru !cgA\Me5X}b=Dx=oDMݠǹpmq#:ۓ{o=86F&_̵~D};9@"cG*`lG/BQP 7GƞV$[dsK.:j!AZhd'a18w/Suq!4| TF$l@I I2:襸-{.bZdZ=Vwe}!*o2>CNLn25UtX} -m(f }|;ÓAټ p%rcQ?7g\3k;^&_yhd :f,jhuGbL7cBl(MHÛֱ؛R?@p#7!k-8#!gy z]|ZP67m֠M>bpܹߏ;(0>ZG]kl{glZ {[^J|% %$mELuW{fzՔ)M['J@4y^VhB* Ƈ4&k7pPCYZYkzbǮoG[)ѱRZ NM1ޮlѲfě<݁1,UΝ4eA:@s:ÎQAi:៦W@x.d|kLj9emX~e8~a©fufHWJ(̯ýa b?4GC ӚdԔTRTʴɄd? .*%@2tYv)V'jU'L{}'df&܉,LmXs83jІ%4JZ:$@$ѪqS2(/ilPox@b#osFF ڣ#X A+zߧ6o".nH_̬HՅa,UU𹯟5I@9}<w m@:>}ޠCG 9. U -4ueH~zd7Ac?ql76 vv:nk?L!])%i"j*b| C6pêc#AIY' k}i  Tl6n6 m& FB|fe haS P Y:E N 6+(1X)KG4fF\Yr얊|9Vam$lUR̔)o,IӐWtڽo!#i5u6V%S>"!K+m㦙lK:"gỳ!Q!ŒU$֡%McE>PNa)F]hvoUI vOijzTaF&"RX["apT0)$̳څPR<%bKaH<b6|E"'B›o]n1 VbgO a!sNó0'N0UBn^ kK 1q$ mmH:)訌jO\ӹYn? ~KlB ,5UJyio0Hj/M.[Li!xw6H~&`8k2s/9}DFr[s GAtiڹaɼ+Vv I]Ro)w EͮK5T fyGhŝ:*N2΂"@cWw͖CvpJ-:aVvi5K-o"vE岮»/y49PXYʛJIP7zrZЙreb{?O-f2\춄 A1#;2]jr=y4M:JG é[ Z{@}.LI:}?8˱Vf;|O@X|#|jáw.!8oЖ^V6.t#SF9:I&I|3u|;zS~! davUœXٔs܋ǰuxӿJxa4pN b z|]vE僅 tLI3ޝvh 7X.O߹EڜFA[vz_Y)"!y܌sVSjn9ɗ!E1XIc.WU^etJM{8N؈ZZLOBpL^x8IE$~ S ^Pߦ9b\@",Tu\w{6BCU֛ss 0IG:e;cXe ִ"${3+%|'gJrT9m`'HOSCÖ,*f,*dAjokaͲ'@1M}H8I fp(Fc`:Yxoc%/ASz-Dވgr^t&֟өZhɡ Eo3/;@s/D[p2BTNxm)3~W=q~a1)ʥHcꈘ IMt;d2Wd3Q"Pg<JZK<:_hmX :',\BK_ VG߼ `# _4@L!JW2: m|&岯4C|\)SQeQ}o)k"|p[*]3Pד| (3( /h 7toaf!UvikSFї,zS=Xm ]('rj@ä7؁Zt֠w(W & 9'f7cbyn$/&FH9B= 4']|\dp'(y6ŝYɓ@c2cTQbgS0Q*|R jFH@~)N,M]:S|8(M\v P{آ'8)Fj0p1& o eJU蹠fS.qšAL>s# YG0Y\s[f= qB{ p v;B;RB#TSH9,g`>ELu0olC5Hj[cn 3l`wM@H]O5LKZKz7PS HXĘt~4dxKΈ$Y56"vF)vQlEboY~j!52MhcJ!AO\P}(ӡaX.fB^OL+UJq-r{iM n'3<lPaF^Mg;t1Es "Ooc(ERBKhy,:JƷ {`mxӀcB.GbުǚO`jy{Sp*]/`VaĞ}.G?TK_f/PM$#eͩ^R!s==pQXCq`2AzoJhn!ԭ ZhU_B~?-Z(U)؄elq@G03UOqWԊ1M1o&gQ6%X |>#f [ԕWQo $fͦ/GLPʬ+&u0GRO,V'ܴTPV3tlxX+s[]I a2j+Z{?Mc&yEEzsZJy}/ص')[OLuڹBd/cL1L%hjwuYy|%w@}E[ 珞hU#on.&GYq͎@W~Q\k=4Rk;[4*Yda^FrQ EtWE|b̆NNŋ'<\oNCi)]cz}N[[m-ĘR,%pn,g43Wک]oL|2Y;\,G>\ cV۪ÔDՕtzTm²fVtVn3i/: d(#xqɽ+V1 lįo&TȪv]%~XF8ΎMCZ4?3Ќܬz6𨸎 YL j#kI<^VW@9B+(4Uw&=9͂{P5=P}Ͼr2 OR4im l ?{!Z$Xl.sH<7}"O1K/.H?? U4+ z8ZҞ+Zuf΂Dv(!s֊ޝ\t0P]K{9йDu|ٝT%efA)2 QLOV>OuJuun[|.wr4uGҋ!%aXŹ?5.#9M(;4sn-lOx{/ -bjyc~Ee m`^ުYN%LCb:)etT5]5X.kDZ0AP~qp0ڀPgx0L$:'&%N{^#-,դȊ"Uw2 Ǻ&Odbe>E(E 035$0yբ3s{nXZO]!i>&ůa[ xՔDTQb"u:>cxh~N $)fJ"x:%ѫ=N=ՑT]WPo^Lʛj @]qz b'{DFU1 *,Tуڔ8)xfJ|ޠqzd^h{r> PlyAčA1u^d"ε_qDŽo Z=׺yݬ揲bGX"hteW䑼o>:i==ыj:3#@PW-[Kʰ>Ԁ&nՄemE?< -9dpj pJav֘rE wBm_J|*qGL T_K]l!S!Q19.&Q0vi[5!尘Ip+`nW!!O[pΡWt ?eԎ\ CWv;$ȧhU8ψoQw IςHdjO\J]aeӹ78Vf:d\nVSt_*"sXRݮfQ/5IDh@+w$M—a!eo~_1-IނEʑa_rj:@;qEJf)~1ìʩ*>}@8z~Р$ߞ|dL֨&צ[bt$ýŕɨ&.Y3M"zg- IspQbyFQ.)9<}jgBy8[. r& MuPމWL% bCv]I0: a4)T0"["]mU :Dm)JǴWInr)F9񌕚qG x9x&pŭ3Qj!9y=q,A(_J*Po^r.K_͕̂F^J9GLԺm5 1W {cln;|{sLtE:ե\Qӛ#h-?!Qc Aڃ&ܕHYiU@֨< mON`"Ƕ]8:U(+鬩.V= Vc[Bd6XAH~ OYMj}T΢`N @23TEw ?c Jk*%sX%iNVoẂCё+ 1a;Zؙ*}IvߢMZ͕{1{C> ~qXef/4O-8\d .p^!7Ӂ4;k|eBy-Z/G!2̥L m <$EDᑎuč?o1a`IkI@BHD(I|[S^`Q)y]zO>vG=1Mq *^+Q8%8" ֢7ic4ZL gճfH;.P7ϴU ><0&\WhߓhPջ,sp[*߅Xt&k Q[];м/eȸ2G0+D*4Ubyꐿ$ZIIyUnwJiQ%:Jaz>>;١L=UfK =:7Ѻ5,NB·W}6)%Wd}R42~  lKݤFLG ny诛Ř*dǀ#,_oŒ#&΅2:Ǚ۬>/1cv OGrs.Ż\3pr#Į]dO:0xTQI-5F~ (sܞ[TW@?X~jb\7F׍_a9zdO΂xK O@9AGxw|ݑ{ɟC`K-5Nꪈ]&4G+w@y2ȅKIUH h͝ Kej%9v%[3 n 7$9D7p`{ p&xg~=Gln>J.ÔuZ{Hhpe- G2 46@,+^SlӸ춬<HȬV~q6 3PY@#9T.IjBΨYN(%1*Q̲Ɛev$zs+-e".x[ [ǁi9! !5 p5sv j4ZPYYbݝmhKg(~]e6-Xh+5aڥ7Ntoœ2n?%ۋ7Wj ֌!WGÛ̜lN-}DjԾ76JMNֳuaT{~ ߆t`$H.s۩_N4ЌTbzɳ)WZ0m4uqFTȺdW[L/]a, Ң 6N74O~dϡYHPӬI#HT-)i" n4LHi3~ZnJEXLWC{*gKcWpfA=&HՀ16l&oJ,7" 'k'$ۼXx>[j̟K<{1pp`lQ"k$㘵bPJl]Qx 2@G)Q)ESqb"\[yd^T?ũ$eP=#/abz8b/MLQq%Y; rXd/[y36[*$jJSIzyꏛ&ݭL:3'sj>x:ǥdH|BK]ɬy铥(_ 4;052T#h@݉,hz+di%Gupo!y +2Wqև^UfmhS3U %M-Zjޖ,FsN!d3Hӂ~2SR{!,Dl 3Ӌ@?EU ^{,dIPզ2ϾڷY0;\aH}A]DlG`"G[{6P fBwޯ0}e*?0AKf[9cr*:41>Lsk1f%jx@Eq|P/;8cS#!dx{47FH6A>l }(/`Fg6Iѫ_L:H^0=vB5}s/5\D Qny5,a++mM3#iaHuX@WVkRbYaaW^Z?-=q.ɩqF´Gl4m%x_~6<~e,,TE-dǚrMV Ո;f"_oizoIA2ndÖR:ZP3#_6RV0l< xn_RToF؇Qu% k,+zS k5vJ(jB{.K;^>]U }&RhS%>cJ7f:e3$(I hEs7Nןjt̂%>ԭYw:K #!<ݔZ]ΟB o`xDw |܈yd+>J< AlC,|yj,_PWIv6;b աҞ[#EU=N49GU+bT$``z9rcpf좷;zON|V66`ڞzT3H먞kzu] H(XyI4[esOlX,N[O9SecyѪ?<&,c[$9T؆x`Hl <3o"Ň|l"$6it;׍ЋtфP'.߯OHS{!?>`l>' JGFW\t EI)SF_?e͐}N]Qƞ;Luh% XSxȘ6 yxg+_6oF|2%:e c@5RS,@NhIox(K02q}v57Yx]feeeOUTGmX~ĚE+gK> ǏŴ |3M'=/sc20R< / o5>ʍ$y3iZ?1]9oVOLϕ{z*ݟusH|UO;:NTRק֏֦oT@MRRӯ5dPHOGMzb.8﫢?zgwGc}LAPl#4/m\:R3a20bA$C Q/DݔTֶ`Ҿz=^f==mu"Dq; u 8"'vF@ՂPdp0*J9\6Pr7lrJ]ĩZ .cyZ0p,9JP HoqU@¹0//bV L586̟^2#Ɋg9ܔ Rwku\^QK:'|) iAD&ѧ]?"-Y6c,@GwO;MƗE@?" MrLAom.5Ǻ~ٳ,#y9jL.wʲ>$b̚57~/ rrU/ ҹc (2 d|dni pンkLՀat7siV,Fu^ٲEQ~IlfgIՓ[f,qP)ɕ{+i=Mp`iSXݢW2k=@4v (Qx,7H]!7t6h #S/0 k WkjߐNNx [X &uq&"l0t]~n poH*n)=>J~z"]; YlG^8HqOMw:2<.|7-ņ >C@=3zݢE]?^2Ew"A.)rWCZDFQ]?^`8tְ2%3^ ;smH >͐;Yݣ{Vo:G "8ԹE]Eջ+SdDk{i7AOAk86f\UU20F S;ne4۳?OGMG ؖ&VKνP) <]sҋLHJk1Q x!⨌"!zc%[IpqoTՑ_|ґ@ (sHĽ!PNm#Y+,j %(ㇶIjk.0%s>n݉?(WwO {I7?O$-TlbtF) w:[6J>ӿs0H/+eLFAP+uɘr!݇ z$'dR+0{ߩiG.Tar?',8˶FLլ> gĄtZ]PlybNGM0,VLAY V'JFľ"M/0{]貢U!u* ySx2ֺSv.(k4 (!pho܏<0'+۸d[>BEp$Y^$o ?J:,l*J$mgG cQ1ꐿng:I@1ȁ*KHb!4vr zu]vEW}!cK@|[ ߥQ~7KԌ` Q M9)=voX&MЁlIf][[^x;.2vCOutHz JeQ:Ctԣ`'d82zA 2/W9־qu^kʨti<`JsMIB# lcŠ^{9gqa4ᜩ_m:$WMQh\1a{ݓ 黧 pl'rO{}\CT//TPrP^CՄ)1:|A籚qNkx^/d]/nK ĝ/qPCy1o5I(1pM(fu"89TxnGND  LP{af_=@ ԍNyS(48?KX HNAӪ\G hDi3K ȖJ^cM_"@O!_[b<j i5%޹8[EIM i=u㋱9^-:D0XœGCym hhCU?f7`ĢRISe89:jlBȌi(/D ʱXFV3jvt;T] E>ȨקbybD#p)C֑ ﺹׅ\Ùk@a"el6!Qs2&+? Ky=r]C %1]xU94=Y.C *_nFދrI]C4QG-ScyR69H#ᚩdzdq^Bi袃eg·lkCAC*mO[S.jޢdf~2x!Mۙ FD89TX }*Sz„5fó5 P%/co_hm`ݐ7/[z젚+CC #b\[I-H𽣷&0Lޖ )G@3mFJY1lb xq%_D#4"/*NR)dFvɹᕴ P~}mv>K0@W!=%/0;rZ=P/w66Ta*C27Œl,^b#e3m'@>9&C1}G`[(zMFb#UTSDž9)/)u:h <|/>f6KԟbA!Tv|܍PR>'J錭3(,9HԂg$<}De+$;P<`YM@6tmyq SE֑EnEA9RzeQ&H4X]i%t|]Qc$;z}&ha57^U&<#ԎyIe) zP\&dFGϗCXx#MeqFٌXf9.0kPɴgGK>B#DP lI~ \p#hwM`pghOH@c5l|dɅLKP6,4c2˟h̚чzurO³0Kj g3H~4>O~}>*=s#n#u(9rgwVTr`7(cV\RmWy)}`y&[6]d(7R#1]փ:$0_*7Z<,yrN KuF/XQֲ5B4lt,  ex±wVpzER>.7*j)RVf R$+uMKM\ڠV6FF0 uW_HTb'bGOLiBonYK%p@06n{H{~ܜMxrjOZy)z0}tTO0O$')inZf_e_Nq$x<HAX)~YZ .0l|oVy:\M=C-r U[CZ^jCgy=l JY JwtQg|Qcij[`'<ײDFm>z -OS;8 Qe ȗcqb7{*ȨH bƉb躏䊂nV1kq)T&V\Dxw]-|,>(5ZXQ\`QHp;F0v";~ha40ڿDa~6DOx#O8z֭>$/w.F/7jd%)n-VV}]MA Pa,>+#|HT`0?h3^}d|PQ}r.9t*Cs<:렑L5mSظ$H=>h|Z#/Ǟ 槣*wy?"0W\fڱPv^XDˉ&r^m+VT r^rh{˭e(q6 A1~ug$!N߀Glۗ3EuTRPm+c؎d;T>~bqKȒSJ?*S^G"= )RSN̗H( Li .3ٴ:=iD<;d:8ygI)}m.V qzse"U f0R`Ol5J \aK$9qZm"y\ytFj9&g?bvNfb4op8ը@,>d`QRd o? uaGI- ؃R-OƲy@;ؗĦRȵ:rg?J0Xcn܊ ) s~+^+MAO [,$Kޝ+pF; qSÚ҈Wnj{t5j"Sl"^Zȷ455v6$soA@Nh; M7 19a:|=C.&R|ω0t?8"4nط=@̃PoVlS0))M{=.SW'crcGd[1ldc?Z)-d27ǟW҆ZW iqt$y`"ͽCNY6$ K{QtqtHlwpvv8y \D[(oO;N][N}u.ZǓWLT)1PP-2nHXO6fPf(u&lX"6+{ÁTT; ;HE*A8^[E^l:(vήݟSN{c׫?I_~(/Lz G=QSWS_W.+{`Ż2vYf~r602$MppwcG}\_uo:h~(TgDu}g\4j$$IբR 06lKԮsI늼c@iD9jى&Op/kC_e^/m56v{ :pg"'N|Ž&N/d΋o[r8G'u撈 hQ5XKñ@IWb{~Z%נio6!.̃ܚPr|WI%\-0h<ۅ詧e7Ww*f0Y(4^LEFzk/HKwCN@e3Osi4Lc3.JOD\^j6Pjnv.@Pأ/$hqw=?0P~ Y;AָŦM`/L_Wvϭ@Q>tN_p.cv0]u-f96%{dN#y)l,qSdE+5=Lm [ZLXX 9 u$45x ùl뢾gG4.kbA}W:H]~%G77zހdW[/qZw/)2Krrɼ\ցOuCq-R'w$͙Pu'9~K@);q)F- !7J)/(mȽ&d0Yh qcbOϾ-b>B($ֻCIdCˏ5b>Up{k_*NUD =Y= 5YW1-j#}]`L('sx-ۃ^NOp?M N,D]lfQL*ٙ4d$HMޥHXgrnu` 4ηU&Pe^'@Laocn&mFND2Nk;P0n@g dK!݄;pUwz?ϧaa_jh: ͖#Ulxf4NI:&l zaH2*=UY=;P1d(5%=_,b(Z1CtW஘rP@ ғDvKc\D)i ː@ondfڟ]XT(-R0;o|}6*Hq* )G ˜c3i NJ=p Gvn ̖#⽡mp.cl_+zM%r=1G !Kj,j1r /6xhV-+P_[ ,Oc{ pYlN^εqj,)6Oc%SjnDtڤ@ɼQtҟn5HQοğU=FaULJ+~b]l =Ga%BRțkmRS_p3X8˲wI&^|%m7+=]Sk[ .S[Żt0 0PsyNE4--kEFQ BB1R^/z2ږO3ڕu1=oRq ?}z&*V63PτJ+KPOh,ԕ zx:&c]eLH| *`tN^HL̿"27K 41'-%i3fPB]Ưp6@ǀQ!g$@q<يO:_-El0l&zy_!V@'轢^9w\ipR/lr48Bek)&7tLU9s^Z^?=Z|GX1Sr-v1yTS%DZA*XGiͧE j6<1^eMb{殰!8TX \Am"ul_lm`sF'OrgqfszTڞ[W7~d__w2s# gzb.0;i{P曰ŀ"r~|:C<4&-)`m)XOvQq2/#5;DmG|yFDVvs^Oa 5f=efyغ`IiՅ"/9RײX*!&V f 딥ɘ[|\+BX.c<[ePd}P틲z,3|!ƅb>̵N3 E׻{W.l~oM(rS0NszDE4jȣ璠3&E>~a>Mqv@"IwMzkxkJJ(}6h* ߤ>/j/=mQ&|N׍95D,R+g6'HXky-ɤguBSr'-Wo6F. |PZFv+[u%2OSWiIʌ>.{5'^H>cE}ݯ|CQ݋V}ψ 8#7xAgN7( wpRVi.=it+↊K+X̛+6W NgfKGye]Ќ퇺}Ik Q]OS7~-pGqۂKN_k( )6X8Yt#*8SMv `Liy&*5WňseV]x[{a 4Mܘ={8[=zv]A:zo p$^OWUFFEXR`IĖ0|x6=)֜V/yq 09,|s[<>ivou#^:u _$$!BhVY'#L[.i-zʯ2,p#% [TKϢ_ A10M1AeU!Մ`/@H:U\lI%&8']g^!G$ R@5wP)LVx$2 ҩE{E!vuu rVS޹iGK N<./NVܭ8%c6{T  p.f'5aZ`a ÙUϯW3Y]icA?4[JG/(N,d.je62YvKeups۪|O|qz˾8u/~$> P!t wI X.A%$?\t6 *O0 O$T8½ CǚCfƾypdhFƇ,R&Q2Cs@(PP+ 3c©W)tΞaUe ?%,{RVcu @v A{lf|J?5>?N"m A:5gRL6(2 5j"?>COYo?} -j3-eͲzpnnC(y~8, 8@-4_} bG"\pI` {.:0=sr-.qC9tJ:Mr6kw WB)3FKc|pr ^c ;5@9Z*:7mBCT% }g-{\ojҞݰ]L ЙA%~xԯi?{%eM^-ΥzB{-tt"VLəbg!VESv 0IaɊvW5u7q%^w!8 p$*MJvFw'ЯceO?vz=]=tn+øC_#>t1][?JWDͥO*M0mg C}Ūfܬղy:$ApbVY?Av#YBKfﴕ + JQ'^y(-1֋yrcI h{Fuϖ)Ό 7T-_΅3Hetl9w[ Xj\Z\RlPUf5gR)<&J#]Fcpy$ӳE2*قW @zK7[s>9J1^WM^T$KD8xGjWDomH#}q?\WA)L.|AY+twmIn/9[:07gU\E-mo89)p%KC~ Z\+ ܵ yҙkL!T]aN܋Ewwt)녴zmm3'ǗM7^']8R=mO/RX+pvQIp&J ڜ@I܃iG?4^Ⱦ` b{uB B^?I$+ @P}o4F*k :aueqnLngU{BEI5`m&юk 6EYwnu8~yѣ \u@å6AFUh.7[ҙijwѸm^myD/DQ=.^Vcƥތ"\3ʜd@I+Ƕ~ <~gW:'.5{r#&J?&/UnA =T14Vs4x걏2x=-K9QM$@Tdo"3A_y `$<5#rnYoWlFUtRN $l#w"I&8d1]o%pٛbtu6ц+GC}UFЧwݵg2?X_ Ы]e -5?M*J^އ7ߊcXyD|nJ4xa /r8]CC֣7x"xBIaf?OkTڙۅb[* ~CMU#,**ȰZ=h @ӥ}מĭM$?1g{<>YEIfK D*@XccqC<-4$Ne9F/}&UqHk+h5\\3?0:Ͻ'(l譜8l5e,1Xɀi;Ij?Np(rӿQl"h.1YjҾ?}3*{Wq$_G  "؊< 69aeֻ)"t)UCUeY(䐦)a9gl3ֆtEy{7sYѬW/|tpc}i} my^JdfKɘi_YHl@mƚt&?#q S#QYd\)&ZJ |4x"IZex,.Il&ubMip-d{H f^)?OzlEizn4|y1k&VHr NKM/~Z_a-[ ME$JK_H)CzI x콑#b^kŝ<轋ᡪįis5Os,FgTb}hS`o-(D]ْ V|Lӟ˪P`Һb9FZ&Ȓ/#d59*a QWǼM:٣vPt;cIbbg{H˝ \ag go8]4(/&#蠖E;]~W<|ȢmaC3GqGQ3CF{Vʡ%1_`0W{DEj^,o  w;i+uKǻ\-!Z=|O\C㒫8xh_^qx:Qi5'YMfh Y]w|]s>H߼,- R}2JOp>c z?hZ#ZL. ƁoLu.Tl?L`<$mNAr|^\'pJb*BA;ZkLϢ/F܎&4u>9 hby8U2xnq;jj/MUxUK)5%hΓ?I4V7AV%@*ZD8lSOL箩:Me2UޙU8Cw&R팵"꾅UG >)==,*vLrtIVi#*\moވ`izRAb1r01%UP: W"P(4UƯV\]*LzKq5W2XS;\ߝ:\ Ͼ<UUw3! ߯gof]c+{2͛#V]0͛:T&}4@GZ?),8LilFF@9'n /ys7ӦVv^0 qbq3Vv3]i|I+~'O8c詔]6NR$D,/̖~Ig70WnQ\3 *;V~&wmc # &X{S|'73 (u ^(+h=(7S@ ǓXPr}+GT ]}ްN T_@&WOh?2&w;%9h<63V<:[U^\b{zsX=_K>Cspri屠Ss`1?9stʁNFّ 2,i{+ՠ1 9z| 깟P@_X1j'CzBL?|!Y"8_)x86.|+\Z03Ҭ/ vϬ|UL`OBQbE)P@y$ĵ(,$wM}:#23]#fp%綔U֌9YR)C#,tGh?!ZM4cq˳DUegҕϩ=$Jl^2~ߖC n\-Jdc4޵Ţ)J[P8Wmk'EW{HJ~kMn.ʟ#n RCF/J7O8#[i;ZCs~SV^L54G-O&ZT tb=U:Mc 1G%Pe8(s5ϙ'Ky*CT){y.8^I,4!,9e Ks5D`s~ٰرi';[{.rgqŵ3ף5ϙO>mwҙ:MZij^yz=MUkenmcƍxss^˙JDgӿ%_GwU XC|xW'n! 5 g~̻^P.̪"s*Ru}c%/%K}l-w9&K9y%t@`ò 6wN g̔hQl%}'ԜBe~B͒Gh,At }J2I4I8ȩfm Rsnr9ϗƐ 'BWmڐ2gF; ~| X nۂqqj̭V єx?W=bQ4 MR.#{YS~2iVDSh<,)TM߀p/e9ZD$QLj!$"yh߅G+* q/Έ=|yo K H>M~rL nfz8YPiTzY I:XFJ2?dsKa;-NZr"E , #"Pΰ rWe>{X T`Y<[R >rN}H_|K o<ޮxSC.#=h DoC2Xyu5ӝoԂ>/ sZd=36iTL#F#.|e Q3N vbr͟G 3U|Ww+Ǩ%>G+d?<}nx3HO%$0^VoTQP_D_t"-Y8AweOϮ'Zk-Bi帮J+#@᡹.&_ARqg${d .Nr=8"}2&v#UIrإLm=#欨319kB =d9=DJ.#-4* {"IPVm売1ctV/ȹfJG)8MRj5ȆƁuͪFdm"NFܳGIS62(i}诲4)6Ҥ)$ -HlABcuGu} ;yKW9\paPW,w(}P1 V5>fPnp-CyDW 5YއVo|)_ȶ,u u$oYМuy'&E>MYhKvK=3̸hkj+ی eAcH5s|=Vr J3 1z+~<$P$M'l! Kpyr'8GIj`X(lY*{0=q{fvXn1Ԋ 5ݴ6RsL$-!["֐vW y4_?SyD]0B[)7N_boP;`a:;:K u\#˲ 喘0Ug{Z1;BO>=їW7' n$^6f>m`&{4!Pb= ȻA^=z;rd`t:繽pq*+ 0Gԍ 77$\ae"D@|;Y=?pEcN)x"LWN*΅/EXb&x=Y'3Rb^nG PYhK6 P'h;ˣת؈?!]o%>jbHő ?Z w-݈TʉAB$VJ'5q{l,/s7$qyۊTr]^uveRͰp1^_R] Mn$ ^J&ՌX.*U/~$[7ҁy5w`g'$&^!TSn.ť#ކnj6A9)0_<^Pj*zly}vڷ /@1@{4^ġW)cݴ\3[] #4>P˜2{aIЇ¿N곉[/)4xlo2RPI= Qq⋱S%~-%~([װ-Xo5(r(m HtkNÛfwCc$/#u*`S8yO-6fMʂhM9&lfb2F+V!#=%y j7Ȳ[O6lб&RD?"K7 \֨>⠖'\|?O3"YvyS;8zi,ƛЌǪ%o%*m0v?DP81n<Ԃ Fa 3ܤ$2+vØ5?i -X`t.~{LJ}Dg{Uz-l`ˢˌXTcyεǎџ#F+[ VAb}H-'(ai2aaiΜoQ &wg[X ؈md}Q Ɣv =[LB'Zos&0vƓ&U*ļLo~Ahpp 9Co8`N5AϷBGZDުd2F}̰L1N&}D~BᣳDĽh #ڞPFp^.i٣A+ѝXZ%ɕ|pnJlx#Ra}ssqi׃¼%.qugG@LzT~d@u_͕9\=`Lo۾:[5ZA䢶 3}MlD~R*}+Gh E^׾9`>1o &c(GT}.D6@ ƛ^uZ}YMi huUp -Wz˫,)PCdxlBIF1K?C)wh|PS+4dn팷*X@dR+K)r+}(ʲT(x♙ waB mlPt2qj46') lR;Z$Ӓ7wG 9UwVSӍDbh~;r'ӭe}ꃰTړ38C B3@#'FᮀN7a}HW0҈=h 3|$)g\Ks Eo0LS qHH_|h-(|L'9bQh%A6hu}&&FoI\@U2&cj͘8|UZeɓu+ ՍL?[ B w[_f(4K4MA@ Om5Fl e4Z4u%0uq/ZjTKW1$n>TXp.L.xLNjL,,(Q5L(SF@'}+Sv %FY]Dr]GuT*D[-GAq:f`Ҡ !01_ZC|Djy8)4r,݋dJ.6wuhk+ZՍN Cy#K~'(6xJ=6m_x0PL)lڻ"xdȘ&B笔 ǰQlAߜgUFgsRJ( h8ؠN)RK襗`C ^~j_H,}\%pq2&=P`f~c,2ߛ\RǷH6n2}&n*Z5B4Q$ aܢ\2iq$IЬi.άMd%țBъ&j@WT Fe{F2rō3Гʗ^߻nwнᵤ+B*My:ěd2JzvB\L|'󷖲$LCxS: M`Nf/j8-K돬LAceY8l$}*Bќ3pR7Td4dUlxW.+L%x,֧X|:vE/.[.Rkه'f90޲ԡ8t7uA˺׌nCVYbs@%RMsa){T˜7NT,66ZxQfS< HzMZx{'vXx`]O/NX]#OğEIŊ/ kF킽MCRr_%w+Ud<RwWcWcYI L8/+y+a(Wm+PJGK#FF 1x8`daGŢLl,j8~OVI:hPL?!Z]4K BgidhS gU{0S OeEUGPnwm?[͡]eR0 .J $@ v}V}WNC`3D|xД^:AB}H8/ y߅_&36JY|ͷ ؕM w2V 00#BVD1MK5{.wM(- l]Lˎ}G'3 fEZ6z 5zc48LOt+@ӫWs5 sEͅ{  n3Pl4#=vSCT_ T+"az032QڹDJM}"Y4a̙-ZfB w %Ug%y!$sb(~sIl^-}S~T/L֘aӶj҉3\ykVjU4y!#F76Q jUᕔ$ s8~(rD_LiR'f,߿]uN?iJG@F*oLJOVlhWMJىV+z Xͦ3;Gd>٣c/“qV. Vd#㡎d3~5@91ηc.!Lłgߤ<(#&!_~cs{jWz'ƣe6hNϓ9H8꜆@zmzcOY$z5xh\W2Q;YjrqQ4ч墘5j*]]}<Z^ا~)Ԥ15 VT%?(~vNi*?/@rNhFW堶S_cî:5kޕ:+5Ё;G.ASUSLf+Kw]>nat?m#TkH3(׾o30\Ŵz~X"hԋ? 3 L+lY׆J}Є@$ 4p)(i> 8kFկM>0I" n@I8(&wO P}I;jEmwƂ/qEzIPB]GV+UF%0!xQ[hHД[rzJ3T"ݗFd~sʘxCOCf{4Y,)o!`"M@IZv)=kw%=ݹzE[FBc(6LVa)Χ狯"AFUxƲSrE0/K8Hjron݀UZ3H=L:z Yk{n!ibmW(' cZʋl?0 t b+ jrO!Y uf-`u0> 4?~1?a`?Phm%"|wJբQuw%⪐7aqM08OA҉ZtP-_CG?mn?97$7hwf(7BƜwɵHʂ" {'SBBٟ!B)Jy:-D^%}£2wf._Ut/; AqYS>+uS1ɍ(jw/&ϼK33;S[9ΎFJ Jˌ-ZA2Yj"U[ k19c>7g<$\&CU}P-8#G礩Wh[RhjicZt< Rr*߀ G69RTqc}V3Osm osjgܧJAN vt>ư@猚jĕB}]-{V>bvNe0lh/j FOQA".qy#OAlGV( Fhn&d%ٱ\UHtS&6"e˖sXJ0G9-#hyKU. +S}}JhqbڎEz a[ at:bYy"!Jٹl^]V.WZ/ ;{ui f%HL䚳A#9/zw#t9MdDG{DhY zCT-:m?ۈ=Y/ l62;ѓӆ`#_, vxڷ ބ6po]gwq#ܻҬӅ LI/%s{gvIrT9Sg0nJA/p Jk*TSt%?V^z%i?M:ćB:"fB1opD~Es޴D/,^7t :t4zmI w.x7WWc>ڵD|޾ao9h,ZqIޓjH@G-}5ZKyl OdɐP=WLS5ᾉAFSz:P :8!& /m U,Ykdt~e_5$To34tҧ=OaxS>֧\!j@'kշt;dA+-`xS}:}f@ $L42l˕%Ǥd5vCRP2h0WCYҪ?\SjS z}Y‚}C M=t:^g{c"tEskl VIEu20gq[RZXΡȇH%W ;msGT|#gSjE ˳d`L:mOmx}|r'8ˀzlihxf2ʛicΙ.NQ.1#β:J& :GYo#_0E O"iĶs$j:>~}Şfδ<$|} z`-:Zn!X5V@1YS ^٤4xؓୈWݼ/biU@Tcl%|suŌ #S0n^@W2v'h.N^XZS_xu)2MVNMx>4Fٕ 0t*mKBD{EKXᷠ'4Z?=(<1(%V=s(`x~)96YJTQ =B)fJ͕듷V Ã(gc=LoS3BI)_2*dҗ0 /g{{e+f,=h 瑾t`!a#4#T sه[Й0j0~;#֘f|*W9>fԏL)F Q{a0 ojw,Kf+)i ޝZ)ħw t˫|0QO[S!rGhdMi*{7#ZQy' v)߽7ZeHd|w^`XMjr}Cأ_peN]Uը!L|> .GG=,u+IZGAYl<,(>4X Ǟ=,ªaH3r$Ngc{ 08}* ?rw E 2 18Aɦl<`Q$оL ^[\1py:yAT8 m+"K9(Z{Y`1pzERD-Hwz+9O}Ֆku\|CDalrBq2/uN$xZ<$8uݿEg"HNtܪPkjޕu\}FIC<}@S*:yw:INtbm֛X, V,&7r/"|z/OOIS["Gd>s2*a":|m썛j8,/D.nŘE4of `3á;o=SPL\hCe]E_QeӁMN䖧vabHÖJ30B4=`ƤfНl6Y3K:RHUY4Cj xqfy}hg ,c1?=q#ߙYd |_$RN6y E %?mm(R¹ER;eu4y)jE c^Xt1_nt1 \;[=T&VuKySKoH*GD Yj+p"E^ir5&cl~tlab/ߌ3R ,҂ft哃`=jw-u|U.\}n힁 Orf˰Q,k!^!L'ϓҖJ"-Pw8dl8Uضtz5 gq;k c'wcqBZK{ӄ;o]13x>ԕh'kMW[FSfo&4:a06olzϖۈ447=;he7sP#At߂C/?v:h3G)`l ~Mlp IF%6Xq2'Rh$[~̠`"Z,05GP;W):4{~>`lſpk<'I@9ڸTJYoק^|q}}J{O)a\@ ' o=<1yqD<9aI?uDv S~ޗKPfM̛߫6X|'*6UQ׫,k_,([A`*ʮGUʥ?plj1[1Y88)r rk{{ Tf#>!+@[7QzE]֘[%$̝\DdO >){N7wW~.-dbY JR屪!3lؚǬv"õhzD#玍uPCagd>p M1?Xt5g( C}E? J4!q6 SubB=U9]#1O'hMA,1Wt`0m`Xw 5}hp2Jo=8ы82b ](;] u6HC qBTx Ncqу\4eղSPd֜Dĝ;WGiYm@~Kh"~)~:иzC1(||EU=dz~p K/$b![.0opqH٧4&;=ɴhs On?@Rʫzfd\k .寤L@ڴGS-:O bPsn}rE7u`Kj&p~.O[SoV󻩍 U*25ݜ×4!x$՟ |ԴḥxxFY nma_ʶ%b]WoR-64%zѿdQB}:p'LvNa?Fj &=Xvdҙ0fۿV"$%c{Z@/}O7'\ج$WcJ>$\2vJ&[<Μ.%;3n#dq3^# 6 5Lb?䱾nIKO #+P[}$"9nXBMKu_[?ahpi+(K0mYю e?:{j 0r_;G`^+a KBq-4I ;߯FJRM0%NH"p͜qGO!2滗{ʐQÒ; !tjmS &89pxvI#ӊFg*i DoxUWSԨS@ŘC#%sGdձOawQjP;1N 8kx1ʬrzׯMq+ 72jv ܠ5`eVj}U Bw\ߵD% s $><ЎMgrVD0Ny. =68gxN22vqboc4mz]L}XT;h3 q=TEi|O %^Hwcߧ܈8s>o"tr/ ޠvIcނBԊ*Dt%Đc$fiv|WnJ3a A-_SAqľ*Ѡ?kTpEHet+QF֗rfQtA:'2 džvgx$p8feRt|S'̈2JgYiIrwuN;VKEuIj"Kծc@ މ`,,jAޡ3r64O3IaNJJۀ/kD¬S|. ԪCZ!4ftxL{9}nǢ􆋦FB' 7<9}G3N Ksk(X##4(vԀ!==#$dPo`XA"'z:~x_.2E:.0DaG+" !ᅽ(wuİw`npl+ҧJl2l@`.&fKmi/v'-`# 1e%ؼbJ fкƖ!1ܔ'v%u\ T2&AwщZNnf54_)~w| /\jfLM޴5 gv(r'xnA]IYp>갸t&sdbқ;D ~Xn&BG:j uN=۞uv_i̛ZW i&)IKnd6}^{wNf_ZR&v^BW VV#_-0dg/y NAPM8xڧWe%Nr$_( , vLM X~^՜o{m!ェICtl7xt_QƉFzkF2ӛ,D9t {4 !" >zjؕ}EЕ 05![%jZ~$ i('KiX[*ET#YR@q\4A@C&A.w]Y$wgۢ!1 (}PKeC_]΄Rz͆-Go$%]aUB/h5É2+MP-Rf'٭76BH7CwG gF%X@%僮}$82lڸ@|KeYCOÍڭ%ޥwN`ʗdd CoGZВn\=ek=џCGl- ˈVwlGRqԉݞc(&bʆN^9QA2D\ i;$LtF>^VKJtHAJf%nҶ#.CF/<#{Y!=ɚ6x$gCs}4敉9*AًlGR$@b/RXt!Q/H#A {]V`Iǜ5ތJ-ED^-_P/F8DZ׋5y&W/s=sWOsah*Symz=֤q>O%̠R~TZ2KRj!LѤ/#-_Cs8i%r jTsq;rݲ4㊵0Kk-ƱWFIjhGiu<~`ޠ*pJ&t&:X xJ c}uu}DnԠ ía` ,nJèxd6s[G}T]h]߰8!O話$80qp[VI'A^4!?UqbXgl~{#~nC`a̻_3M3V)Ў0ꥬ0K~/ѩ_r5x{YIs [TXJE_;G3q t>ad;eSE?I E nV>P4٤|mNKXjP@_D~%NkO e[¿Gͳh83!^3(%a&S| v* xS((c7eWJvQDz Is|yv]T ht?Njr` VTtjKdĂە*R7 _0!YϾ- 9Ɉg'M@ߏK _Pxyy QwI+^ƓlA)/Y& l$?m@0ek4{W⨴'՛y>ѻ/H>beŊdNLpJzbSzJIݣ6hHJ~<$2 +e9=/5Au{^a ol/n ؑ|Kn9_,>7w8 */Io_)zOJ[SC]yKNi:C9)u5YWį3)XK#̺ȇͅqNr2|#;5Z*jzb=Ǚ c<661xw{f  )W8o=R @;BXK]iv^D[// ::+&qATVNѥlW_b}h`񠉑#!YZcO6,YAg+! Uz>K$i=n{\@?7u^dtԵm0aC.~K-Qp$&0|WKMa,ZYDe܅*ƺ 6Gng/7d'Ab@uHVw+ atџ(7U{mӡڦg)X4t|JoGo9R&!Xvr#4wV3Bv@*9[[rS̓rZ$DuaijiMGD SJ,&^np3UuGm@5h /m'lA#GDZ3vCxpšq2OhI³``\3i=]hSl\hlS6پq6W]iH v.Skl |"7d-G\`*Ww_2saЍ"˂j^+/n ?*KI 4Ԙȸ1,,Cd0 $I_j Y~>.&W"QZ,x:Fe|Fl0_W**m"֍Li/'9"9=,ɨg g+zx8Ƞ.~F 9#g])U&D:$2 >/!N+/3u rY(~:^>#b~q emS:[ 1i身FUM䅣^E;Hwm޴Y'a%b.)ɓ~Kv^VGjRT:Ga+7fQSjE)DXfFU&o"W<ڰfCV!гf\ 7c57l6tqPF+i.5$"Ȼ}*v7b5OٮӜ^&O_K$҅!Zkִ˥CD`|ߛ-)Z>x >wǑ-|~}.`̈́?p)1hשODVa$e;=fa 9P9ej (suQVfJh=ǶQ4F[xA"`ǯKKYSM,8r#|1Cj!~ȤC%" [SVEK3_ܠ/>r ^|aEu:Y!i\,CtKRs`y4^VZՔ q sKvz`^Wz\?4Sh fP#-ʮ/W!RxekA&tD9c`-I5$լKdQj Y[^!QTOx3M.>Q|j̋$poF {IU=B._9<8iD!Qn41+86&똗2"ɱvB %d>AM/&UA"%B]RB߭,*9nL"4+ e. ٯk ٛFP ?.ێa%z UD.k(l{ ZP:+2&bSS #1)l*ѓ^]մH>DTtJڌ;Z5n|~5/qi=ň&:mE;HɿO#L33yU3ӧSwI;X#`uAzWU=Cv_+ >U+tݤN$!";BMܗﳳ8:?/P?f}@2hqMw~˞Ձ%Ks.C|ġJq{RO2rE8-ՖA,X"j355Ձ?Dcj=9g8B,׸Op!K-gce812to*,v-=(} 'T*:L,N.sZ4X.;"}跻lD{u0x*:ѝd: o#BP$ZĖɯF^rEpۄw[;b>_OV60̜mÝCi{/%<<u2|ʳ<ouwj+]cZ dK6)VGKifW1Njc @Kr?֎.:B3&= 9_C^~ ")b ?hn;1N8_} ͝% RĠe' %=,9A 0x!񶄅la*6_Jb } +Z/iǵ~<%;Ԯ|x{>p$F OgVTO<^9 2\l!ܹ_~$6=kT:qzFJ@[~oxr&v^uH߶h 6J ʝ~Qyol C.P@tK/zr>FMɻLCr`h;#E/0cx6S I 6XG3=sqlԥtLe^84ڷє"1l"tf]2"{ou\O#,]d-=%g6 6,wQz:<&{"whHрpfё/nyV4}rAlH~!-q)Q|ܑ-خ;ǣN6t_cnkL ~?q9nXu$=O HJG(S`2Zgn@&Aqt:v<tB;ǢߞŞ,*)5OgGs~1C/IkܯڝxEmWݣOVJe-9ɮ%6ȅTĔv{i]¾ZB8Ѝ? ;9 ݻlWW)UML"ɚuJ{8k1^E[^C`^3'xV gmFziЉ[NJ"6%7xe֧m9p)Q8 DZڧ&:t#ȔQ Wh;@ᄡŋT31񏢅O86#gb&FܷL|w[|߃f/fq:~=cZv(ߠqPV*ܵ:6}+-aV_"೛^\Yu~u^K O~9c C#Q[O <7ݎ8$*eQ [KO'IrJ9+XR~t kqظ4mr*ymmgjڜz7yP4FW`.۠ ($Cƃ(?eBW3"cx`Y!'m7 "ʨ@:ۘco/}6>EVx3-T$*0ϣRQ?h]xv~dX1jeW>:4eM]svKt?= J<8ۘ)ĄOl#L 7 ^: }j y􃼧Y`q*)_lG4T8G]Jf;##+)kDPlT=Wh>#cȰ0:FS7zĬժA3_dgwI\QR6ߎaH1^5Tl 5R t2Z6. H P"d,z*bg5X$.Cu" 5[ J8-.k{Cޙ\|IBupn8I-emZNAg?ƇLb^~j\G4ƳzdK=mصf竑3LCN!AB4gdV^Nc*uƟnoj,H;}LD)xTyxQˎ2w.O,w 8 }5B.ĒÄ{ fT[G 'N}_E5ώw&Gk/Nk>/y|Wg^*;Ԍ6WﲒVbSiA $Nt_ڤiQ%j83 %xϖ܆NeFWÜHSJqw?I kʖ| f&}]?R&]T\g#KMURL?ɽ ЬJ"au+Q eN5u[B%K:5z1筈*2Y|:avϬ_qs/M0mo1RC95^SE;R&)~G(RՓRjR/O/}q3b R[XOI9~gK^C56Vei'CK7τw p,p o] ͟^-EۜxM`nJ[~8&I+~6Ͽ5 cVXNwt4d&Bɉt&;\yd$ uJ "{[+G)ЂP2wDR\*)iliզy$IdzQ*܅U8_&XNS{ uqhW<ޜV_?8x@A0QZ0V7P$DQ;O9 ?cO}?; V{ۺZ݂&dF( Cu,z,+X5B39}?A_^ܿFr$Eנ4g Lx0&қ+1Oӈs-(';KZK p ȁS j/Tğ@GZk@ }-FKM!h#Iܸje Jf#?o3w1Vu%v+3VQNpQً{zh﷋Mq`^)c|it Kcbi&:?Rn{E]vPUC&Om1i}iT/}63щrD7^xnn7tLOY%|K0]7$lPWTpiFEeұFVhgO~/c-= kH-6~#M_ "!,)rMKѕmmJ>orhKxNxTZV2;5gŹ:xoΈ!Oi5 'f)+H7ݷ-(25 :U~ Lg,?]6Jcg"p:٥e7CP{t@,3cLOUͩtE b)(K|9M=IB?!jHO{Mhp2ވBR'tLveW? s{Q)LS7-:)zS/~DѪؖFL.ZNh‹TL} zIYfJ-(3,ex."yv 5/Q";3[_-$ cPwQ#M&i;9BĻJ0\Ғ@Q`M^A4m8v1feUj䖺i+%`֓{H{$-n|^Ċu Ie[n+ 4]]ipN$Ņ.1bf퐧*gd^LME_y۷{@uE֐zvƭ2R隀~4=u%3::t%6{=5(AN~5 \Xe2:}s4|mOrR-i:ִqG;tdULټѡK=wC]]=rcJ MptA(> N* s֣nHʰvkjK.d 澷1ˁk?̿+T&r" i tIL3AID$h_x2a\`,+"T@gTFESId}Iݡ9 BvYof P =@ڲR_ٿͱJb%%B#9]t+-_mUJb5h˵B4n22&o777B ;n%p˜R4k+czWԂ1 /%cI[7nP'_Iߴ8=#もf{UQ"m֢X~yH~XXtHFnr߹ Awe)UI2-NAj%_ n-:j8\=2VєE\\vǸΖ5:@htUbeB$ˍh=r{^bxM`mVj2@EFQW{f=xYO̩EC(I⚴mtG/_i?Vc)}Oy/:F=ۧ~EN2f湻B4\=)һ%c~*]dӋ⚽4Zsb~Ꜣ$UFB %I=jxةUt{ oP?Ԗ|R{MP؝ɻz_4,XAߨAo)iktq*y}І8'M%$$~&c(DA]MvF!/"Қiu Ek[\ %D2O=E4A M,TS[|ł|AП{fc|/02[ ;f'u-o/ t jC R6r WUgt-ήV1,P(BLϗ]yչrs`qձSA|ffO8(KvRQعz7v+>2!0fbDQp^:·3Px] փam A_ x]X% KBB!_ɘrKO].ڃLwPH!y#nv ws5<J?S ̙ OPrAV0xVCL(CFZ*C ӓ_Q!).nfwX 6Qj{8t}W06Vi(B--0K&wp= %$SRSɉv^BkLX^'$v?)lnƮ8O7'=4bQhwRb90C>MmZ]&H3o49h)q-i~J릲B)E| qlVZTZ(N$Y|`2c]?FuUñ[X']T*uSI3yUE$}b~p?T3UC<,ӲCt1 !ap|&h<i8йQg_*wz(wfέm`Kp6땇d0GQʵ< !Ďhg{svDov^,E0JQК5\O=J,$@އ?~aQᄮ ; M*lc?QWǖV\%v!D rU)q Qt \"|ؽz/a\p@5Z+%mMQ~#m%)tpa'}b[Xovapca }Uxө㎖@mrg:: 7PzZG#+}.@\٬A1R6ϙ@77QR16y\Hjw?t7\ss5Wd<HR4ܴYJlmI<`7eؖu-[QfZ7 n.:Fф7*,dVP`ŷ-M{B7~TWb4K$zyOj4!6 ضuOgR?*-h36"](`60[@{OtxWOÎ}9B6_,XY-l4޳tYe@_{'`O**J"akh@ܜh Jܺڥ_@>/?S4^RTYA ~s4`"7|Tto[F;| /i#'nܺ̕}61/pjE!0*Ԉ~+d9xּD8mL/OiohT)"adzbWWz:ǭeނľW!ɸ 5[s5BMr#J4_ *@vT-Ҭ>R!i~yO{ =$E+Ʌ)Ud(wcPߵ){"ڋMP*ƕi ׇhٗܧqT}䓵Ŋ\ŜC1"hb.ψsc)H+iI}3oTr`5pZj5,IgR1: 'eHU)[-bム/@J7; #fX'Vбt:DGc~d <__ Ue#!QܡLJPcRpHμYG KN(g{!acܿ]ڵ/p*3z;sx,ʙ4@:/ioy힉EЦ/lwmx<@LmSXE5Fh4~'0!ݒ 4DE2K8`_Q2-;9q h:و]|,伳*Rͧu?92V]Q ,TLZ*h^}$fB_α}@Ċzcj ~ZsZ&H~je?3͐Hcad?xS? d #7e4w 蒹ݰca>DRȧҖ1 Q"!5Ld ?$f#\#[aM~1Ѳ_B~p\+Ǔ{zT§Sے`7(6M0;ިRW%VKlPo&Kj\n {1TaKQ8{u W?{{n{\;-7Өj?.\`e r% v.51Q}T2A=1+i|@ RՕIt竓]3JԤ0,"Pxq`KMB̨rvpvrSu]QklsN˞]R _)YX.r4oXb 2 Xl{"(?R\^N`!~;䱣]\ԖQI3_ks!2/Svnq 8A%KQO``Al\-%jh~z8!Łbkn0r,s48k7Ujfa3ʼ:$x"ݻWIjmZwXv΄|ŁoہS [&傝Ca 7v콓9| ,6SG 1|sqh!NbcJ_@;!˳Z@c$BB1͘^޹dF}y_:ZV %}TU3jRC%1P&u\R<;Xz sO6#溘Q4U+ >F9u ǹUr9uwpY4&\{kJŖh^&gݢ/1Sjyq[ʗw;l.d+Qu0t%X*!ߞg7[7%46WH_b_]ro=1gE@[O!tY\}eZ*ۭnbOW5i#&8WRC`-ԕP&VV1tKtfDXM6,-͕Dgu)(u!b{dl+T2b{݋GNOa3Xn 4,BlXfG}P*.!4i!. ל' 躍Zl Eiz9# v"`yʸtI[[({ŋή!Gm8Aҍ6M]"ŀ=Ze!ּM͵`?\b؋a29ԲqjY]vHYze+]Q0^cұu )~J  1 ML!1ֈt#M3[fl7_1""Z2]PNkYwglWu^\Xݼ)&;{_/G3,sCOcaaTMK ̄XKOϋI+]LدFٓ#>Ĭw> t)aHZ2Ob:N\v*D[iupG007ٗ z"9DX"g j t?6 vd!ԫ +Y3x~P a`0'ػK'ȪZȯwQ !&=~GIp%>PǦS>!1{YE2m8=U &Xy'bEˮq[H֌P_=k&g$XKv|% 0J,0oqk7O_H\tx|[  ^ +YwF% jh~]s_; pUgԇMϩ &e,=ޠilf!uI7p+wŲ-{` \o`^Ν09!%~'+0< EP\T<yM ZΪbUׯ8, ᛯNG״ң1 sA)y[ڇ$"qXX+UZ>No )`^'gx+A%A9WTEvs2< 4Hz|"YALֻL ̵&.O/,43ABO֣ R|יKvV(nxթV$W.&>PeB84. #\>g*Gz~Ԛ=+|G7#Z/UCW*1=v3 ќqPk҂Qg1H􄒘zEqnqE HPbE Tq=LY`.[~i2!#Of5' 9a7$W2I H|l [8G_o!WA&DqO#җzs[.3 buw 7ɲ]nU.e*y4jý}̕,Ev(V"hƖ6Q{K{ g#FÁ&qgZI$͋>gp XS#݁7ؠ8DG@ %UYS5l-GFbM$NX}EAرKQCm [\̗%#ȊbEToBi2 +z`-{4+Ծ!kn|FIP2W+W%ϮVElUiϧQD~4=Vϳ~t3KEk~40^א{| S837G⅋'Ujr0Ɛ8$r>6~WTZCo*yD{L3#O!MGm ؝GW"U|[CD qN IXjscf6}sޭ1[.8xeWj Lۊ0 $Z@u9v>vxKG[X}Ň>Zc-%f%$_fͽgr@Ut%ĥ%*+oC+Ţv>)B߭.A 0ϳc`4ˌO*$0ƆWzTyRA7J dR/(O(sAShbš,* M9įG'At> $D-| 5]7"xAek |@U:vdp~'TdVkwK?H$HGk#趮zRLJ6^x[j*8A:*TFf6X47*<>srv2RJ],S@U>}Z`2u)M\6xبI^WboYlnjt>n;oWҢas'p<4詺haneu `^#KcvnlKJ>ý{[ 8At~a,l ~ns46W`J+wƪ/|xB G(,{Us23y`{3lIJ?9Q`'F|ToiNB %K{P|.ͱbi$jo NG!-4ɥ:w fe3 ۾C,Dn).![dFub:[SgFԢ\fgƸd*UObnL8JU_愣hmՏQQ@j4Wd1X@@E֠P '-B 3wvIk1EŧxR5Ԏ cx{d2q%"\mJlpoN*ԜpU% *%7E7$^s~GIJX18gf?Nچy޺wl&SNipa\ſBͬn~sn> lC7wpnGC!_u+M䁋sKN2Bٵ=}iaYn̴!mCUm ' ~3&P>A4sy+KC]GANѯ>g }/۩U>iB hHf]<]|wtIaIfbe#KnH?ġs[[sm+A҂0̸y~: v):! ۾i1۳k=6plS` فcazlJdtHIęVm XgA(@ۥ5){HzDK~ZnXMDcVqt>bKYP$X'6\ i)dhu3BUI7y܄jxQUuRU_8HFJ+ ˘CMA~ ~Ă(pG,E`D- eMU96٧z B_> LKb-|^O '.nyfYq8'>~I !ր*S{)-Xb{٠c尔 } ~̦~KNY_cP\ɮl} =!!vŮTz+]7+gsJ8FTt)oUbmJH[enm8Gג.GD&\H,8o /x RO LdeNρ'l듎zu0kҫq^gPJ^' 4Ԍ{^1<5)=Yy'sabn5 &ǢN]"9B#˝[}G$& ̫XɊG7bҧ`gnYuGCQ@tGkaǑGKC#W={Cڋة ycDW^0DBexlhPZ$[FMrOd V]7ӷɓ-9A푦uGOKjnTj_^hˡ1e!WAºv6&\svWUl,m0`p\.N 娪ޓ08iE^Uc[5X6iPı.rn\DZ8>F|_Gmhc1-ل/`I bGhnFՄD4g[L'Y j̎ㅗRڃQwA$i}pū ?n¸r~P*V&EV_QwfJ>WƓG`j/&4awn+x!BNԬ\" Zg\xܞ+?W~fؤ:ݶXΡ?20BZ]-+h܋Mi%uZpɒ1p"kam JՉwfZÎbAmOHo&7#+cS ]J\9np"yYҦZnYDx#[g\q]R(6y{ n!XB7^)z+ry>Ќk5AV+5=bǜVG69_SK[x)X+8w1jgo t^Ă 8-xy -8_GH%ꇞ0S1G$?vx~+'¼K17 K8JRI)l@{J],b6}`=DX q%:!'WCa!7{,6\NI(@fq89. PyW#pLTAê=]ZNiR>M*n{_(ACMA|S P'KyZ*KoYlPn%]װodD[w?a|0j㣂y6Ϲ X$4Φ 4_mO:yJ,…t"65 eʯ]"2ߩ&6iDBae[[Hj4;5>v>6ПE_X }뛎%1{kLu9+ڊv ƪR64oY;GC"p7OwP0>7tTLCILr cl{^#@KSlܠ\ `2ođZjǢd9sf=P1]#wJ&1<LqTg73A>^ADQ(PGdSou 88G*W}ؘi6+) "̲bd WI`1N@ ,vdŽ[}ÉiX@ij?KKf/@!6#9P%Ro8TCCOf\<{@ b xag!y;ܫd6qm;Ş4E&F[2̅E[; T-Bę|;V".Bd_|S6K*T lPnm+P`Zz^#GjykpqĞI)̖,䷥4tOp>$eN ݫے{p 樒YcjOw8R|}D'9AY#Gy_|vC^71r|α9r!4T߫l(VTCΥ޽`-`R<%S3o``rK9 Ժb'fM׳\ ,)PEpx>3f1ԫv"7[LBށ9*qF[$)UBNER4 2Z`lӠ>nE/%?.?s~2o^r]AV/aa9qoBZt&g ĮE n;jk1řU Rc78KDzMĄz{Qe4cnӡsA _1U7U}%:oݿDʖ?g2ΰEUA;{;ҽ2̡u@ŀ":a[u0P`8&|M!kbisK܇X\(ȫfFd)i74oEzXF 5݅]tC40Ö-Ƹ3μ=5(CU=kOnYBW[O1*Q`a0` įQqS:4Rt`%g_6 (i"3'T'K..@Q*ɀN;r>=4memd %Vfjm#X!=f)U (1\2$xJrܱgM:@p@?n؇hJ輈o0z !cfiZ6b5l &٪KRxiPn Нf89L 4sRяc~)sN5 6ιkƁAuY+;P~N Kwz;Q`0Y\;@]^KnT?sC·Tc60yC#VA_5X wDh=U,aL'XӗS&E`D^1 d#@?_0&wS=%BMf|.Odck^|$Uf; },„Zoe.a- u}Rp& 2r%T%0"~3"¸ 2PKZڰ`JNE+mv-&oWc[@p \$ʑ8OHlzpŘ98[xFNE$t5ZDwmĐ2See:sJ(/v|`|Bxa=ؒ)QOad{0Y2Z9)gY88ZR{wwBFQ\i_gy=λq M( @)GP|hՖ&.Hsb}p%R{K-nplEcJI/UV:e$g(iX{ٖۉQg6 u0d;NY0nfA ~遺F8m^SVG.DFjƪP ǤVهM&qy}4NFE䌟3 n#THOh,YU"K6^ML&8w?!>4n-PAś]͚a+1&&ҕvT]6Ɋ< 8H"h)WCI|6H`,cT !hu G~}'%6R H#e(۷ͩGvo "\Q,BÈ..2~W>C`r'cu#OWrC{Kʙ JqS5: J7 fD(+W3п`!nwnYOط(i:sRKPI e鸀y YnJGeuDVQϡ 'ޏfJS]%Oq7BƪdXʚ:Vwr6k-ΟFcA6Fv3{5 ` ΃ [ouAܬFG:de H}|uC%)/3?>)N!"2Ln$ͯ@6K<ŲCk$mC?ըDiY5BlMq"0朶PD#F3ŷp XX\@OA&]a+Gp#}] `q+㽸DwդaM<U Hg1FiY+Jq &Ha;~uoDS3CUBdsÂ:E%6OHϫ$'t9 b\Wdsy4xcxvBaFT \È,E:S/upS8GpMnJ-B^mN;pֹ)ZH8ֽv1yw+LK~2HYJ/".弚a`Q[oJC\ߩ vLڒf!-݌-yb _N|{Mbkl?aŧKAd-xPOg]cCdE .vC:+qUOYQ4^ (. oTwf{OTx#3 T{MY7p:sevBe6dHz#.NZGsD +tS0Kx?!?sgLM1sGioJk_-x̜Vςw`+D8oWS^5N>ro%zX^Tk;!e $$i)[8@ rDž' hк# Ot={$0ԏu'/'>сX.0 ~H1SǺ' ^ujMHXx@PT&z.e-6e8&YhAnaEQ=pD&mS+u;\axihk`m=]N˥s=Ʊ Z,JhJ}|Bm}uU4,`6eƌc_=k$RBlTf}Bt4-ȹ!$i([[&=>*̫S0mM6&1%J=룦)e)_Uή=^Lmܪc/Nm=@:Y9lrm߯>|z~Y6Ö\> ۋz*œy:x%[Hdًn aqdQ4=id l-4fiTa#/G6:ȿeߎ?HFn͆eFV46׳p;kKB!Mp[ŧm¾\et5Z;Ӑ뚪R#=ﯠFdjcJY\ k7! A7ɖsiƒ'zii؇v}ROʐ?;C™?4p_C(=I2)"5\o$[d:]qe,nEVAɄP8^t YUVO~[rlQ\aڐ%[vA:r6bdGḳIJH#-BVۡ F-i;L)<9?Mi)P&)Q /6!KL;J׹UiDeiCHM]PaL `{&Yǝ5:}dV['D1zl.ŤT3#oM*n$5v`Pa pm#D82@+}!av]ED"+\A A tQ ףrQ(r* HjxS$"q7ؾy7_S^A:_%JʝoɮEh8X5{U /];M7mQXZEo %"W2~1!0eR~ꭠlmFȤ8efu? #vb '$(xܧ3.Jbex'}cn/8GI4 >MtWoD /Up`/;߂(CMsZ8V(!-!'涕Sm3qxY gީ SƎ{j@px #G?dw_fmTF_N{B$lw1oRtL uN >|]?7FgbVsˇ/:O?9a+~gthr8lS>t~ߪ?!=Sd*u)MR:4 bf¥V+(wVQegf3 Z: =mܗ _vl3&m0s:>.~S&k}v[>`ǹ֣× ۀumx_pF~N1.2'N~%寂J7׭ү*/,6 d٭`Ͻf]j3JyT$K"j;~M#/.V+CKe07g=5!(x$$O f#{?LyTOtce MEҽ kTOxB*`Ыo_$ T>r:HBuV; 6 =sV\ե)к;WUadqY KV9_Gt3[~r𬗆R͈s${ T%b"#GPf1,3́rU/{rǣMK%솓T:^ 9qgj7mjver6@n^fcҷH똿\EIȝk2z:.eem_nXl*I,PQ~>iLm"vdbV#Z4T{yP0W]-{"x^U$08V4&F( /c'݃i [oU _u@co9 urLXGtƢpk@;EIޥ=`k 8ќD+=ǯ0{D,N0Me{$s7s>]GGCWԫ;6*ql<Sڷm }Bçf=28PvM8d9œK#H^sm>޿/#ȨsEYRP"Ŋ2zD\Q N- '[*ʍ y)>SyT\Ly[i幓@[sN`xL6*=B5LkI[tFb0488 U$6Xye&ǣB Nn>rlil_Ͻ5'7ETCcʼĀ<#er [W\>ǁGpΡY[_q'/''A:/ APoA!t}s?A ❆V4uIM8V٩grX2%<]\Q:rTJ\w +W6C`s y3`\ә6ZVR* /ek%ן*I\2Y$B.T @ 7W gU嘊#4w&w, ϛ/f&(*(y` HRCx.w'cm;R^i3" g>h /܄f"k3wƴbg;6(Q#pŐ*eWq$p?T#V4X 3¤L>!<UtqD`lt9H70 AgۂX  PhVW8!])<ȗ2|~B}7RK'M~لfƆgcڍ`&yY2ys$y}_~( ʔ2ۯBp@/2FI4"4 8~PX$oPSljC/"wom (}f0yƲn)舴 bD,BܓM8B4)~g9uI L B`6"SӉKv1kum*JO*^NiD,ip%5T]U]@~%x:F%s F{Y,,)pD5&oQFHkgO]c^߻?L$֠KlZUZ)زh4ʍFOZ0ȸ#$,`oL?۲,xjSeL"Pj], &[KQ焇jGljZrda+ùBk{m;-W{TZr՚ 4L .\9K)ųv5u%\َ_ ۦ X]%+h#Z /2"eM> ;: R-:]ߕl Igm^h8cp䜩z@`p)Z&(`Y:(W-^y`[!`\*.DHuÑFnSx40QVa;IMᖇ#2Vͮ"_+#bQmqJQN%)p"!cދi8;ENXVzVf"t;z,\ak_O$+դRVψ/ z+fƍxgO 2:F<|l[l7U zWpIiD=70$!͐Xo]V2}5߂̘I ˫yPEK] FeO5zy86=ràp:=ɼZC%̬Lle1bnjqtNNl;KˀSQ P,(<]%}D$ dPW)cV\OH ,=8vϬA`KP#-U@pp؊|VeJT:RzI5O/i4@tB/%s؆b2{BxWw]:+ӃrZ݌^BBƭWNA{؅ V/cp;:&_3Ğim$JC G-{G(L Wii,E&Rpڤ:t%a@觵sbfӽd-1_Ҹi+\[/":Y"q#I L\ s(i GEG[Dw5/zޛ0|_b,5+A[^` hH@j[d:6(m#3-bzbY+pB4պ004,+,+#(ˁ$鑿P(N#N`"a+ie@o l ]c=ؐcOvַį{xcs?Ud;^ipt A)\B/çE(3V&*[c"@ @L>-W!Vtu2M9EiF̺#Ha+JSlBHyѡwI`.c˵{s򒒴j`4rȺDOY]R/!9x\(IQšvjrkF Î|'R>=+*yUJkc;!9t85 O;btE[Jc,)5K^ݎhN"$mtwF!|_6TBL,U\sMr(s\dx{y aʟ'+R:̅.ԧZ򚻗XJ?L]8J})N=S{9j>oT"'dR : 4{s)V$Z}V&\JhhV`#duaoѺgȏ;fv}r~uv~d[}IA ~NaG=uQS'O^HLToqQP=AI"cXnYM"" .ҏ)o䥹zE*SնxcPLtm |M+@* qyu1kwr0<R}Κi(b|6a,dI[/o{ ¼;zɝm,q3/r)/R+xӭ ^bwַ<ƌ+cU`l9)!Q#wQtQ6qOdbvlf /˒|H{ y5e0j֝S = {Hn^Ux56apF>ϭAC{h+A@w\D.De09ZD[,C(7:0]R93Vw i=K 5|UT_},^OU*' h2J[@jYcskjx[aK7{`ูs*Qs&qh%qLoۇQ;IFibߒC+ F98o^GM(@ZhYx?t+mQsP}͔ qQ=z}yYߚ+# o[p3:ذ.`еpQR(\Wk!8l, f68u ڧ;/2FPv{=rVГ>e%YDzX/Q !i~O-h??_[,`,\ɻNwk}oL M<Ӥ]0}!FC/Ez^,|Ѱ &q ~fKA',BU_Yݮ1K8 xхC~Sl3sJ-> SM/${rcC<"Rަd?#3l2)q9Agm\}0-af{^8fL4 Ъ-^s%S_A~LkI), dTU~h1t1NJUl vݸI#5lИ3 y^Ț{- $ò}2N9M %.Hr]j%:Ӗ r,Ӕ&3$7?QU82=C͋5R@!I0H ~B<]=QMC^[lMEĺzص˝9X}QE&Fb`B 'f${!՗xaj݅HxZfLdD"P(|q#䟺q~Y{ަQ)5}=7~YJKR7W 脓B4:]Jy)b^Wuv<a/3NYA孇4qIv-]L-X $mᎨu+M -Q@CץG{$"XtGΈ[ j/M\|n u'\LbJZv|Ƕn[3BJn.@I3wϔ 6q7^o~o2&EQ:l #gN{'CY}/ž/g6jQ# !v)YƖ{[K 8c]?PYO٘{>i 1(^X§=3#Ц#83=NDR*2Y`18 3GG3#y3ϐ4|F4b,[ lo[wIm}NeQs]cN8x$ ~ c EbH{.F.Q7d^b/go[@JKIog g3Ӛck2| {컡k\?C-ñTjn9[zpZвч_6/.\aECrw ~}(aЬtHF!jsAƍι]/Ժo{۱ȿ "X> I| zIi^1 t ҴF QeG&AF| ڿ @Z*<H€I4Pve4ZpOZm9Ƴ/wT`VP-3v}{Oc1‹ YL0kʫÁ8]RIjgOlMI MDW =k*=ray ;+%h`U(=oׂ+ØMG+m̈"^Pƽ/ȁIاm~Mۿnb(@FOm֥1\l8cݡv7L4>E߀ͼNj=09QˣQQ N H.ǏEj/e ##{*̪_|~xܚòyDnA8uZ2|J&64NC&ߍ\JՁ€]%CKfbPz'D c˕]Ч)p%:)*lBy%) 8NF=[›?-︜d[W[sB*% a%|-& r1+Q3 8-{@Zݠ;R#Og;A+K*De)rZj)ɪ$'tQ:s+\֡b(Еz}\',SSL}z>VXֺ=x*W@։|$_t)|ab ,ʹũˇnMM@PW]R;0Sޯ-( c j[Զ όV׉gנ*˦$EF!h Lr mW*8ׯ (/ :Q DRB.h!D\1^!U A+v#I.۰^kO'M=i~#P[sO* t;̗X 1Kz~Öks\&aZmY_!+_g3[Kpb;1 7d˯S֮ ~'7/!.(!ǯZYlFR,zzZ'Uq4 s!UH6Ӌ!21tR38u23Sz/nt#VZR4BtFWòS3lDLad~ 08NtrR8}H[T ?3*-Y%٥~\ͮ Pgd~wqd`+7 ɲ12H}97wVz}dua݃Riv8 Rrs` 7cץ,h'Xj8ł4/ 'I&?(e&#-)4J嬞#od A(#$КA  J(LatD+wfu xFU-N:'VJ󒄫APAUý͵Z.{yiW#N"'*έGiR{<dQYp,$ZEUIAiu }Km 9*L.eȶNOE4KଞN7FNpwڕAC8!tIqv`~7`:4 Oq-;)"+x5b3Up uډ9dŞÿ/%1J ~n ](V}%\o<ͱdeAF8po D|2º+ޜ U196NLDpn2з%͛JG;kyV5^踌gq;nDaPlystzu8:)v@S r7 }gׄO{T#&IF`fS &80Ukz+qe"PuLY*/xңGP .,]p֞jg 4QNQz(dӒ+Oo0Ifz׽Cldoc&+mYFMϓ@U0KlQlxw9fc uFac5ii2],q2܋hZ oh@$,{U+v|vVj oڸh nY>) >ưG.4`TGJq}E)%:}決]N3ܐuP@nWWBNjiן%ƪ@B!c},L>)'@#Y"ps ep`~E8?) #&`QZx۶VƱ|)q1mҎ=': BK˥aKW8 C $(wRبK%-h2N>_VإUhH4E#-K7f|: )Vlh+c&ե8Mξ??etI(YJizM@M\~J嵍L(n*Ηˮ#Kq&V5 et^UF4=*%ql~u0?gV@C&,ʇtA [}[rToINqׯ@9A̱#srS"2CXj*bMx%Ҷ;i 5Qؤ4 ܥS#n[]>U+k4ghӾw[ 'p(RlLǓ2o50jGQ>`N9$ 1f`<6(NٵKz?G\]A'EhrsY]axk@K!ױFޘkPFmuW {XHtP¡Fj B(a ^9lu^n<$Pa9c`oРRX"W1 %|byZis}qwýbLЂfԮI9sn*NS_&tm632~ݠ4o;eM(`tsPV˿2jOtִȮHLD2$~oҟ]`TgՅZ0팰7?hg-_* 𴷽@:!Mp1pgPskE\D#QOOuסIB~AtG8W KM~a)åCqI ʊLl ULI{f>)l=NK >rEكU@x8Ȍe>ENҷ`ɺޥPV70uE'ٚ]U2Nuָ@Ǧ,Imb!SkMctc#M n y`D\c uI߃0X#Z5?u~m&39w`X~TĀ5Ud8+_N]\#Rcq=ʑ[uh?ܖTvhC5*>''|P^APj?,I=SӌVIK- l_aTuFvF]G}hnWQ VEh- 0K7 xi-o⭊ңLM*H i2b,"ģ6 yUICwT'篨\;?c@@Naf͐K)*jjkLnؖr}I[t>K~w ;[oJkni]x#uRD R]Y@b޿T;V{6,P{H(MLʵ3#%dKҫ<~$+4~.UC^O_B@ΣtzտOWשQaru!"eT @x %7Ԭsz-XriA>=A)Nc$Lwӫ ZZLE^ ;ɦ"L[=ˬ9s&͍z*] @ 0P|=²:Į))+"NO;iaIc_o٤---⹛Pb9-(vK@ e+6Aԍ`!u5o>a WA {-"-$B8<< H }GQWmo)fuS?K$& F\1"II't_TF~))DyR;|QcT=#L9-4Bn|]m\$%(2Hvॴ^Ū腋fӯN8}r,&a8bUzMa`&n_G}1{ g44~Z*f^^Pn聐s0*3#ktX+}6rH8W[Kxr m5CbQ$`pv'aX;iMt ]Hx9a)h~|*۝og#.m($6ܸ)ܸb5`]nwCocP /qAG2wt/iLa9\mHp㎙+Xܑar)LEbx77SNAd/ ϵQ,JkW׀εKg'ƚ͵\ֻy&>J`JᵜUntZK>뭕Zo%C8}Ábʖ ]D % Z) BI.|VX~H2na \Hxo8yG n4j!heD蟏~ז3la%XI"Sg">p.0| {G–2w%!2~7\[83b1LVJKFSf Ƽ#W:Fj̛@8"JWu6`ns笅>#ܓ$@RR `R/O7T0vg4)nng_TmtN{}zط^WCFN <=Цfu7ߤZB:C%E?$F\P"a,VSuLF(aN*ԟ>2\,)-%AbGFϘGN#\rnA._r q3G"*Lǰa3#*" 2"H*N8oE#'b\~EI L={yKZ'Q7z@nt9vNI~*%OiqAOKjmNwv8$숈5Y|0R!X^NDJ mR_=];@)`_x*$`G^Si( h:ҹS5O@pM ΃Ba`n_ @ >c*6wݸ}N5z?=med5p,,mm9\V^VdqepHM*8xZڪQ{\mOq¦WdjmuxU//;?z!73pCdo}CH0xx;R/ hA6ڮ7 MJb&@u0$q`wv Ūr`SU{]Jot ~wH0=e{{yILSA.)u̠w#g9 A@ˍiDʤ2kl)3HKԿ s) >!x-W@6F4+K'8V47զY.WJJeeʏՊuj[Nx;7: ?,*;rA,_l7^sFrA4mĘrԴ~G}IQn8 k1Ge?_(Btd7?[o<%O Î<#߭RcU}xX.#,uFUK~om=sXصN1!^r3N0ɇ g?IѯO3)|{Ai_V$cNI*&Ə%dm [UTB|+0b=EX-f!4ua ݥ̄NN;Rmgc[ 3h0z6~,NU!o嶏}9vH2TA3TѨAe!*~SLf6g;}2wkSo:0Q )WUY<\޶C䛢0n9##KsBD mIl-P'R߀+Ŭx:ߙ3Ka%~&pMEYZF7`4a?l+JMa?3d{)$u^c|G f VJdK Ѐ~^n6\Y?!qh%D!Yw^}0Q}`@F:9X{ܮĕJ@fE%[XG4C}K֙{΁'B$˪QIZ #V'QyUK8XKAC⒇s>L54&3 &|;`xָ^%[^K\ΈYU2'L6ƅ?Kn/.!CRN1*$rAV ^qopu{I´/J/cw oBHu8K5pMmϢC+#E}}Ҹi-9YL1]ª "2?31oou\ɉƂ&VH|)J@" ͒`ʚ)Mu؆GwVS~ԊhwRnM.'aG~ۧGi~:Rl]F}3ݰݫׄ2P"N+h{7Ӈ[N֞=C AT{xA?bk6SERѰ;x2O;7cRQrS:WӞR1X#m:)΢F&v4T]s}7`HֿURV-suNK<厡r}ʔwOE}4Ί*0'jϣjKNB瀢 V_s4E21ԚQɿ5ʋ4Q]l3%l_= (T%>[?qznAV7L)M+@ӎ),.<p"ԓѣ߽Dۜ)h-#4)VΝRz4tyf8/".ЬH{ v$`{WtJ_8Ј `P?Gǿ]a0GIq$\A!5vST$ɦ~T-G-ٿV DkeyClsOΣ\gq'LJjJq낼ȼ}dpyԭSH9}r2OaQ57I0D3A2G_J%Y2%=\V)\-2tqB㚿 I+NyObYẸ%TT'Dl֝G?G |Ƴo.xDwD%0o5zFԉ3DL^.9 WbfX>h7J^ϔ#-%1/8o;\ļ:Ȣ nr်4Vo>csᾇ+Vx"qZcK:WV N&cW fjx"_ SV7Sʣ` K1@|G ImCdD%"X+* uX n4@MK/ <ξqLRm$t5*X.*rגiW y2f<Ȇ pq|zsp{18n\PCc*թvO\H r1_#OQ9'erYnmJZƒvY;m=e(:) d3[4ؚf8>yQ51߈WG̫<@[ [4z4s̘mm"3~qmGGF8LH:V)V)I4^Fп^['͘n5-5c eY? s,{FV,Z;xxq/ysȿIM3Ā}IoվSiez2(UN"üY0IVHnr%ԥw5NH(a# -}Y*yсڿgTΦZct_ ihvP_E@8+RU}9*z ؇\Z3'B3TV5ϣ٘G ?$QiEJKԑ4?ȇkHp(Gvޫ=0J] dzܨS' ZlE[cQd'NRd#-@.2/Q o= [V0K oƦXAuW z~#%X.?<9qιId:ާzPKE1OLYM͕w\B4vIpa@Uއp43%LNs?^_9`[jt1IH!4 PcA5 [OS#΂S6`#vco5fU]ͦz›~V|?2ëV px9z+*{>'jj+d혥kS>\ww>q&Xjka F] NnjU%^hI+ٝqmBh$)" ;/]w]]q 1-y'ro9A,OS}Q`9Z!*I>S:4( B%+e2I&+<l@w0D. 7X׏Z\I†%I/ͻݪl/0˫18 ߢo2xX5eqy7OYl/Y7`#Fҵ$ ),m"a nF tؐVV}|QM#Bj%h$kHzCg&+Qt9֒Fe˛&e碌GUjw{;&iSҩ'4C/0 }~78iʟ wdݫ.3S4xML{ ܿUڌ-l%!#][1Ք?`Cݺ|$ ?'^ OCQ=ٸdve='7#P ֎]Bq~ʴyan@l61P ܎6qtoԇm6.Y s%t`ꌪ1ܟ+H3 $m,(WOܛj[}:(*sJ ;`Z+V]dC ଒{\L/nxaWϷcЋ&^YfY~AeD3d1\9Mg*L0c].,S]m{||<3 sSkI"8= {$?TiiZjaZ pLVҜ%X]Hn.gnmU,5&cvP4s6q[]1'WrF3E+b5 tI5xIy ^L!, $HzI.3}{TD߼]|HDX!ϽtO; pv|X`_&%ɶno8AF/3!$ŀ7YdtG_OQ8BN)i4ߨOYmXs^`#Č `/I5[ᇢB&Q #6~r4hntHJ=udaGܜH3j>4w zGRVt tb#妻 iYj5-q?*iKp+t! Lcs[(V7%r͂#/8?@z c%4%Jf-z(+<]YJC"7C{r*ØկH8Z:/NkAwW-_x΍d@+  M$[K()#cB>Ba4z /CDh S ^` ށR{z}V*#cB-س:JBޑETQpنdI?vi/B W+g"ʂ@B> 52**+;" ԶҿVͪ.?6]RL֞/S0 Ic%xH FХS)A(l {vy\bKM=Q6QK V O]A S z(6vЭ4FIuOǘA,h1و'vٱװ+R_atk$oj7W8Mbs0CCX@n0Jss%_"EAQ;RGuwgjʓo $H )X 6:bJ_oUIx'Cɽh84a#~3 mgOna{yyRLf]}C><ګ%qjsGTTM6tB= O䓤lphq*O;1 #Kݛ$T ^w_|1h=ÙGվ@y o  7TrAPhm̮C}45c:PHזwH|= ^W" Wc s#6_{#T-F*ip=y* k#8|RAglQYLHmV`X|!s#F#GePI. Dp m ыI1pG_oK_zjƟ}~ j6+BG4 Ӄ皡 o"(Du!(뇤%t g`"AJD -]!;=/*񳄦TEpGI;)}qKxlFOhs0g 2ⶏ^`;ըa kP;~I \l-V[鸏PZPih/ϳ,NnxyEQ Rd8/`1GLBtWUP8@ˡSv^#N&b t5F8&B}ئ(KBBـkfhK0T,*OƅiWB5#,L ]B9|7{ թ4\bÜ@Y-LKd9wH@ hT· oh(ڄrݛ!8@@O Pc4>oq ?>%m`ҘRVm`׷Ҫ7=7;.иjPKS>"w'em+'])'8 U\6]<] s'*(mj`^e"?|SI>Ѧ]pbچ-ch)u*zϵ}_W)k _z@GQecguAkKgÊ%x]A=]Rddp5Ù.tw27,xH%i$ѿ ~t)&A=*-=' ϐdRqB`MTUl  IyB|jV-AI|ţeg6L5c3O%<'y֝@}yg ERx;'ԃXVyV#seZ]uS3֩!co_\v{е?.09)/v}y:IwQNM 4)WƇ2n{$]{PñLlK)=X{8uT_V{& \9+) h;0is t7k[](G<|}H !'j3"UKN4(qYuk{ȃ[= zbgReOZ8(7tٰAm yO)!VyzPR(U*ekfMگd~5·дrWŔ˨2jNeZZ%@OLNUC~EnE1M:lA/yykf:8'}Cѯ ^cK)*$ͧc*pӃ8{dS1RcW}@j,%{OW.#-<^z=S h.u#ȶPGɘ)IRtAQkt ^Hqi)O($ti0%OC ˧%Z+@Ob}=xA,lg8MQ@kX3[Et_3o]Q&ؖµ Qd7gXOGꚯ}jhD:7Puo-湂yvPg26cv5 xpmEaf<xڲE:[e37%ڸAN5I`)$uf >DFzâ`ɾ rÙ:%YB0VT̲NϿ4r gs b N=Xh&j`oEO~԰qˆj]Gi"QƈOWejvIȵ d Zjޓs8>!^qBJttsgtx"pmlv[mR?:9A,C[#фhM /,/Zj"@14z׍6+Ƃ$Y`jɵT<4|j9z.sg7%mWfH+ߐΝjt4cy>q F)PEěY{'Ijv{CH9K;LHyU)*7<euٶX{Q97 LzV|UF# Pޤu \Hʃe8Z9lk4dn%kG ,߫.Sݓ׳{8UߤWʼ59㤼8/1_tc4!b*H"-lڽpRmQ˓@yٲصX(cssso/vyTC.;-TH/ݛ%t2^"R4HS}Ø5aUP" t yz+\s+H3[lo&DF [cKIMA jP#?L~nTmYH"Nyd},m/2@TA,ZnzNnwN֙n|#I[pR$ă!BLͯ^.UoLk>426s 9jkYG[Ahf^0 )iRJ/EddCIu6FNZ !@f#!,4)bQJJ#삲+‡N@GA DsQ` f{/W~ݥTK$8۴%\h/%VaV͗C61cу2d hO(2>4NUbMw 3xfUJBF>>""K;?|,HSӦ32CDw{H._6y"ƅ`9*44(4q*nlՅңB;d=>vWb$BS^Sg%\x7]:MW$$ɔɢհ!J(番X .crȂ҉pU)?}]Y 5)IU ^J@(Km-3V1%/ bj!ϩCZ#N=M>~ 8ysmnklb謶hcucQ%R;782ؾyMA;,_Z4,AF>EBsL`1%܅-^<ăckM¥=Cc_Nc~F$ %:&I_5Z D+kQcHMOrL V\_ֱZ!x+OsGH7|YT_oemLU+szcLb9sSԓ819kSa|=l0$%&30LZoi/sZOcҜ> .3N|Ca0ۡEGt~m5޸vԷ]HQk{|puBB bZ&li\%4A*i4b R Q"QtŠ@AY mՊ~b<,F6 JHr֮{L73aMSBUkyJ푬]G]Lt(%=V݌ghR,l*z*;SDq`vD"Zkᇝ>RX9'3>8̺ ƟIO;.|ԥVұ25wwa?T7xvS`ة@9']j֟ʬM\GΚhoRge'؊/"mf>g ʒ1-HGoOXٌ{ciML¯f&dh;詮8"_3#=YCòH}nB~u@677sQ;zs^ҋg/IuT#^SVky]c0BT&@ug^ r`8hG`x w>HG>nzOmwΎ# '1Dx:UeJr~O8?w"$*ur-ChW';I-lEA m¿4^~} .DZQ_C{_wCׂ.}~KBc5VG: tf|t(epo"U} J7?۶ cA{ܡ30"sZȽ;;0/ʐBD8!ג>a}9_UHNME5R*$d?xGF1.[Sc루* J+pRW\l^w^E'b|/Be"B & i'ZT#fBPdF5A̝־ :ߪxuhζ1;ktּJ8ZY׵'Lm 0P1.J&fhI;78/rNN,jǿrt"r,'&_J0-m~(dwdZ n[S~dKWT{r +l K@P"a{[C +u&pgwsm40\V؎-%`p_5VC?B:ZHܻ~Pn=@ 9ձfY ) e7@P5ې&Pޑrs%brX$xGޙxtW̫{ULe {? q TgyQ!mkh 0B|5wأKbOs0, =3rE$L;$'dv.4zh5۳~[.p x:_)'_Yk6 rٗݘԳre P!4WyLCMq~ˎ{萴5mVPy#][;lCIkdaXPc4MAfGͼg 蜮8ĺ9SGxo~MdWDT4"&CG$吸nfs:HU='ߥr>E/̃k>>eSnBx .PeBUay> V]r"l@]}jm Kn(1- Ixrn|::h*K])BI1_+/(G]&g3ݗw0S1=%5 w1H|0)P wΨ#)J:Q:|\JGxQ*' !pu\o D".w+\6Ѽm`ARNpܸ=V0K4)ʟhkhu[2??5hnE_= !"`[sVJX$k]? peSAԏkxlpMiJҥjV.iT!BM`eR-"rwT,kFOZn:nF(x/[wzjU1HrO_c6Srl ?CwI z*)ka^ fnڢ\$ZSUј~6G_Ye;Ra<\>: L`x#+-8&EP:Lt@0]w8d D.]YN5gSr;G=P͸1!0uqv_~ytxb9~aڈ#9\A{!b:}MWx?nz*n358! l/6'յVUYd=-HBq $gjگWx⷟( fZpcs@yLMbg'KyFꙉg1W9̡#zBޖwFJm@ Cw(a o (&B8?`DT3j3=?-]B8S GGX8Aϙ$W?񊦷I١e3B}d gj 1DA@@]>(Q~lA}t4(LwvXܪ́kS!m@_9,4O<):je}_ '3hPTo"9I+b6x%IXĂ|>r.j{jNz{7"3(Bћ~q\TZVGQEj!@'TD#G-1FC LjP'䣂S./-xst`f+<># ҪGHk` ףkKTCp_넙Xm*\WX9 ]H8X+0e< EȜ)j]p-9<3A Aw8 Z? Wy NȺ1a wIK\ &_˵b [E8@$+&NL{Qw8WH@8_`MFDy4xg+q<*i.tl'B8g Qs>爽;~d|Z7aio^~qӝ9-gw{c vI1s!3hʜxbgP=5%̘Ҩo) z)ZVkc7-j_vXgfKZP,>?XH'9.7i9)5o /#1g†i.BB\e(1;}H2]3p)6^e7ˬe6p0!WT<` po3U rHcR `w|7T mDѤszVD&%d@6Ƭjn.T\^Mu!FT*N*QOHIN&l8O3Ku2QcS!avuhY%qq:e$n,?wkWfeYX ZJ5wCimK?Bi=Kh e3!3ٺ$Q߽D!e_X7`G6wɑjNj.{ٓVTBgiH~V}jjNz eЁk 0Ĭ73lr78l4:F)<%rbkNgj1|tq5]¶<ϿB9cmr3Aibe9iPrĝxʴ+f+[f(t#t8S-q>Sc?sd{@@_Z6uUT3F? ۉCeJ\0pSEH{ߋQT\Qڟ7tT;L*2/ oB[;[T;AB"}w3ȷ @eܼAk| (\;?ԲBcO 1K`>PK[ P6E\_<\0@|u"` i~ct-MR Ͷ|z+2Ћ??ݓ46?l^ yR8>gw/$5\Nȳ-!a>'~e+,0U@ؗ|ZP %c;*ЫMv hgb@i(ddr d٣2]t-M36Egj$dkK}4ÍY @)=~ˬ񀉬 Tw4қ3+Q݅j󐽲//rLOQaZ} MMzcʳ)MUwȘXq"UwK^3BZ$ E:['+@;h2!~+hC)@BЯ:zߤlտQ g`6SRZ*g]@-wּu "R҅DϢ푵ADU593w7Rq 2u?l13Hګl0(k͜e5lhs+ P#>GOb#8'B|yŤt&EFO $ 5FUl;Tb=0R3oz]c.x*daK[LF\Ipa:2FZﺂv=&%@is_g"'Nb @r9(&ljIk;/MX4! t7>YJ^s lm'@hfZ*Uj#\*ewo Ey~q #lLMM y6ZDYٻzy Г^t]8]Ikx%9'4%Iy9T*Ë 90 ; F}<j%/,+ɓ(̵Pra4וzLI.MK?ab *mT{\C*I #m#!Zn4ra4FWzKg~SCj*1q}T3";Ǭ*0h|Dˆ! 1t0 $k'2ȊR"xg ]nXG1dXEj9C} O׭*>0Yfy=N3JA|oE ; ~&<}zR䒎]NWrk::&~~Y^JOaDWy=O_k wnqAy3lS,Quזm ׺k.!%EA-Ħ.:z]CևOSw~HIpanDwr%eʺ^}FƝ"+=*;kTQZеЖlRnǧ\}ju'!@}t&gn HSZoIXhQFX aly' ך.˫JbjS .:, ŧ85pu{gUh y2Z@VS1ꑓv9 o7Ѐ!NvS?Qg|n/GB7NIX<K>p$ _C3`{#*@2Ӗx>3!)oNC97dHsrY66jx7uRVpH1`M*E,>_X8"wAO~pjofKNeGP8b<2*.alט# r5gLȡ+y=Đwi?xuhZˆkd&⇦R4)KsmYHig"%2 t+x5 ]F߲fyni߹- ;-E c:S>] R xۃH0՚+2i՞eo8c[{% &Y1u9{H=M&dG5^<;\wZIY4eqm>瀗W19IL7_Gd/m1 ^PSxʪދLaRYYo}HHrq4O&9sK9Ih҄rF^}w.}m:Lh)4"KfbۨՍ ɀty *N4"TJO9=ꝷq2?D'O~8ՅrJk%^:*,W`!?;3VJ<6' nb ^I kG'm!G(rX5\0kp˶S0NfAކ[~լ)8BjR\FOy$>0%j íX$p` dAbM9v~T{*DnVQeO2"j0DCwsK<$E(AlC$3YP f P<3@0pBdw'\HZ>)@C :`iANqwtJ_.5v-[Śa2 NJh4HEYS~=6+Qݩ|zk 02/LKo q{iH@#&32 GPj/zmB$G=}:yy!8 K:]l Ϊ 8kn X/Q9㛌[3;h-jzB̰eYpef3& SR c0pM&N S`u05U6&Xt9hxizrh!tR,swL%O84  #"2DlJNPƱ~gL³x-FrAlMyfP_Ӗdݓ iL5Az@d,Rk i ^]6\@8۰Wpрlp߲kdBؓ0E(Щpnޭ tW^! ԭǶG޺E>pq\1KS:)3c0U`xh@aߐFEk!@ X=$2u iSGyJ a4{&+>>Kȹ@h<{CY:O5;΢hB 6bC;Lr8jL)!.p`*8Y w9qwè{q5L*i;Ju(G? D3h`}%a-n}ՍC(u4|D-߮ `Rei?q=x0}zk2PC%if:Ul:&m*RdZ0Ny0F)tmMDŕ lbtSv`g %DGuT.>i8Ogb(,;;)]}rFm~W+qk3/G}g>Ϥg8jK8z1@/W86o} ] 3XSs`dMt,aƱ%^Y31;)Mb]\ N4G"@r 7^P_T*; e4-7q Z5,п{5k*W`DIJhz8LbpE%wsFEPL,)uXX 1*Z}*?_dB1j~(8׋1x ;J ZD~MVg"] BG0RQMUoo Cfj:6 E (5wDE-xLԝ gD=PKZG)Z\|b V5Q<ۜ—t0sR"Ut$yWy*ɱ͎W$n'fC{a:iu@Ix/9*6T!"=eY}KTpL)9UKRúE6Ѳ4@*]TkTME\pB7[:8>Sjg2R/n35pзfuT|ckT8 cT$1 cq ,ꠤD{i ;<yRO0 d1Tᆁm<@.S VjBω7"= BCV"{;iymBeza[^A~<ٍ:*2 .6eOsuFn"f%q.ĺT~+GH6Uf l; %Z|> *BK)|TyC _<Y]GcăN2g#oUƨP^*a~[GtFγ֧tAHnN؝w/]?zL'6tPjQ!dh뙆NE9>B2:aLWKz~zf=M]#o2y N-~xipm ͉?0 ԛ[(KNa%Zx6ꢋD2u6fOʧk-q$TBZckĔ*$q@"(pۥ :.~N0Y_>,0;I,gtJu R*ip3WTU=j rRW5%rԆztZ8,MLrbk4Yu4l @[{ }O7FO=D틹w#=\Қ&:.4#A痒_P K)![auˬzwvrggeZw,δڥ"DݩDT'lԨnobKY}u(!56;%X RuU%vt :rl ]PbMBx^IoYZ\v#=AF9[+F kPxkd6N͔ [hVX&)LX@Qzc3vhy?A˚Y6!9"a%7T'#8m,Q:ʿ&6()]շw%K2C۰[ isv4hWrmЪ_obvͲ>{r٭ L7Li7nCV,KܻKJQ$u!R'tmqђuφsx+-wp(w}'zK#|WGBBZ#(7nEq ;`+ˑ)Py+9۷Վش e' :9.yAFfKǖd G,;N=nIqvQ ޜ:ae4hd[# n{@-r{14:20ץ#@-DyT~2=A/HfH~O@Tk9[ v|\g i]!`3OY= 7-EZ[-ua6UXyZB7sˋ K1_͕S5m裨0VLy`vSn=w^ċ A=|=2{Kee5 ,^հ)`~ᒦƎr?eތ;eŠ`uu, qb%k{T `z_\xePNCx5jL0PߎDXiV9y#_<Ԅ,Q ((e;aqd# 'dޙ>Y!XE-KRٛ*h;ًgCz&C:QJ4,+32HňBʜE`nGx\/CEHu?p%.ˠ2^v<:*bd!_|7v^r( 8[N<ҬbK5SRjuD$[qIZ:/az& ,BĆ)WbǼ1&2Bkٞ FS3=*&~F>3W AվKr>5aQy+UD@O܀iKRE(Q[TID}shO)G)۠uẴ :+Z(4ᖁ;>Jj@R:9xVz!AʙO ) ~v0| 6_4Clp4:<Ύ0c{1XBs85| @(*[{ Jޢ@€b}RԤ(T2[odd 4,$)?TQ}"^  5DY_ h I:k}T'#HKyWjr N-#ɲܷVLip6k[K8=R'-Ԭ߮XHfj&,B 2qGc^4JTZ䁥uUOª,vJz,7)+C4&VZmֺ'v7BkSGN(L@ Hw ֺk,fg_4ggee'&*-36ZK#ee)aUGA7Z\p& q h.RnHOPy<:;~>}Գh"YDH 0ס#QVzԆH!,ۿ(Ȝ7uEe tiǂI@uB>;k{0,O º˘TgVv">NL@8Y^w Vxx ʚlDpIg8mVHY6GFˇCuM3‘Ԑҳ=`z!6wI%UKy>Bcn U`q_g^xqy*ڌ:nQ)#S*8QC%Fph(RV@YD&ZRu)PUW.r8 2LޅL-t]"&P6/]ݢ!6 d'ck־ϕd=Jv%yP*a-tPuBeFeϋ$#^&i .ʃ~p{OMeDY ߢ[8̡?͒RJ$-)\QE@kXW`/,mТ}?^$e!F.:rBM0{Ҭk$ ԞeС"4$qV&}[: #VZq~0xK!*iQȑ$_$BsY-''erv@=z3? /zn[y{Lì&*{Ua| d ά_ᨾfG_nnvXeIL`;8H)?mFMe`3 4<nY_> o G>Yi-QQJI1)4gɖ:"paVb h->gg(bl ރAl١ qo`)45c5(N}~Ag 9)w&7ő--@H aE&`D0Gp[,ɳ`&B :qgYF_mr9a5xof7耨0̌\-f?ÂġbVxJҙ#%] O};9( ?s"ܢCՆxWaȢ'1@Yf)i/ _\DBu3dH{!Ο<Ҭj`4ת%E*G ?gKc뉎X80-@5R[7^TDlIzD$5 [1%|20oijJ\ |fFU|ڑEշogh}Ia=QfQ2z1rukr4].."ޭ¿ y~~b2%@OWH5Q5ulŰ*\?9ws/U^~hCnJR#pSB\ M3u~۟ [sTQ {JJovHa5 DۉҎ Bi.In|w:d= "\+*&}i]RV7ԎvcP_/-Dxp|^?\FP'kI0&gP XCyG#cPcbǠR3S6`-[ᔄ;9&wu`!٦B qk ܟ}Mt9wAM[?GEeqs O"XDk]*~Dg!Vf{YظRKE,4K/H>T,H8 zHLBddW!gO l0W yt}!ڲ^|GYgq5hX,2O '5zI8=뙫տg*S#Tr*a(ֱC9+# yb&z*pu|9 ~" hIծUż!F@6ҹ;=3]i)*o/<T/pv3VӰ6]5hO͙8Ѓscm!P^+E?4*4&.ey!s *CYd&O,XhI5~dM5(ˍrLUzo cVv~wQum=sk?yszHt[oCb  X-46ͬ.෽MWxюv%`:X*),Ov%sزp1 ͼ yЖZ7mY_5VNJ zH*ׄVa.{?-sᏉwhJ=ȒY-Q|%'y T"&“nQ^"vh!4+Isw6` JFhVrO< <6_jA7aB@}'Ͻ;\+Yb4#j88wE\kB_"(Y+F(R`@pdٻ`3`xH䳺՚C@䮛]Mvo"rckCBB_ªiZ6qл`{ʃBZy؎BmI4Ϣt$5܊ ?fz즤r~Ӹ8T!yhZ Ҵ3cTfX.ͣ'3zޮJ)n4ؠzsuCOۺ_|O[UF#H3Rf DY[thQ&tq޸ on5l+zr E~lDAl > kVn"adS!34_=Z?A'GʈUnX]AӉ!xOGEY~Yhy.h\Cf/=1ZF_[wq;ewJ_),h8乱(;^y I, j5Ȼi+g&8-21 ^M(VCͫUQΥEMNMhkӄlF5Bl&4ڑ'u/)u9SL_QCs#XX{E|7!MtQ#KUk 725w%5_Os/i As=?:Y q2ec# CtkwEA q.(ZS5RBrţch 0T0{T[%N' 11H1IFmi%Q7 Nۻ_F6.e#XGo"3`i]T4T1#~?AT8C vF]ᄠIP`[k^M6Z_":8/.M9=3iξ^ %q1UF7䗉x8|IUar4}> kJ%6 Α09$~;q׹EM䂄J~9amXrsV|#aHdOϧepDl 9ww~0*@$sbE񈖔hp<3tYZć,?POp|`؛2Di )/,{}[ qhW7͒\\[rm)NW FaKȯ0 /Lڊ#Cy5GlSj%`j>q)dzj $I(xw\秆y)=%(uj8w/snBhk(a+# AWUVӜj H+3<6Y,\27cc;OW_Dn6$2H 5.4]58*sXsa9͒b-g?; V"lI|A- ("1miJ6Ї\Pϫ (vQ,??n;,wl"# "a+ lk`OMFad$J|>& M$D$$?- ! VݛgRT&@Wݨk@h< "],u3'S}1mU]dDZ|/:8_Y dh#/҇S5x !<:0ѢDJSh}S'&31|ǒG 9BȠx&KpӆV99Swr"QBj,Q]s\̩Ra3zXAҙjjKaq=Ziaq@]#WoaEO\8%oo Yީ~v65K5ffB4?n2YF)UC]rm(⋛Y3וּo8FqmFP)|0U)`*掃cO'qجWoSg)!`*0ڋ)LVBͫ-Wˋ*Xj4j;>LN,oSVƼ/D^\v,:i;M%dLȹPF5\;.L:CGNet*jTQnzUݭmqb_nUhqPJz7oIm@6Bp6 GJ;&yn@2oEH&$g aܲ|P6Δfʴ%q  KvQjj0!r?Nq /갶P z䷞og/E|9;Rֹy c1S)D8x_OƤ#!niVgĭmKH0rD'@Je$uj;d6It -OEG@5b\isk$<1EFYO sYsuO BF^aK”d{\ K֐9(;~ ~ %t9m/# DEmdԊ{#"e9Dc&Q'F웗ܞh 2e$=ߒU\|!c`þ[42AbofSҤ+J>XY3 /BE {.7ʉF]7˭<,ǞjЁZ nMM4Ey᯵GfQp𜚰B*e3£۵OtFk-͘x %˄; ~: &Mи /zn U0*uE77d 9a}LGfEv:d"<;vmdzgZPAܑI1l nHbwv-5n}\/EA>!#4PtMp[ĞtqC} l9.%}O@n ̌"x6" (g( ܸGFS?S >8N6K&3.Ϗ{ N{4j1B T^psTi'gS |p@=(+{SsZʒh=^{Ȕߍ[K573nb^NQv;I ?U?|myv['f 5l-[r-=|S+ͿJ}![sbFD8+vᆪGhңxS 9qM8R$Z"(梣H&|: )Pq9 1bQ.|lGFr%< /^kgѠ~H BdEJVϫOjTi0kuUPEٮ{]jG/rٹO 'kj5tA1tC$֘L/dKjVSXFld){a%C i iHn^]Նvmc)bk^Cpz'6aLx[rA}9)hƞp &|}Z mŒ%1_`YS|Z4J3|YL4G~<UZ8Mdk"sf8t71e ro)J"X*'Rg.5LqKpsRAe`Ϫɺ;-Ď}vb[}Y`lv/`fO3)MͲw_ JA#Ώ% xݑ5̃6щ3HG|K+{ .U39t{ea] 4m1R:м#azu9,Gd! DX>tTv0/lr+e ^,aH1leyKF$RZT޼`5p;IvbKfs#^y7ED 0"eCBq'ƤVZ:!-Y\t.?;Bd媗xsVLw 8c c: 칡@۳zT; 17[ݢPgI :TKDixyD,n둏2֍lN%/&h=Kf)=FJU˙;Q)PZ&Nﹷ AsU]X7C%vt:Xrچ]Il:=폽nX8N.tS'PD9{"~i\Eȗ7}ֻl,Y,|eR`~ m CqVqFcpc 7Q͇ȖLQJRVF?߂?B0=9N1"ZGeGgiVM&л6E&VTU-l"zh=̢e@XI7aØ4RIvGdZx%7:zM@Fpz IO1[0%T9e }v Fю=Dk}㜳ȅ.?.g߿?+tLR9dAf6ޓ%DwB=Rx".hOܿ#RUUGȕ ``p-wl)u$Te83aݳ7 #y= ].bBP!u[޵C2=0c"J,(. r2=&Iuxc wq-yH뎷C9\ qtN;N3k/1 ROٰ<|$F$gT2Ͷ /;ax\&!ԲWڌb{*XI~r Hp^zpbN!%) 7hh}A])ۚ%8}xw#P3Iuќ ؽgpt'D |XB8 @n}T|6lOwJZиl`4{7+?bGW㖈Z^h;xGlBM7 ]RnwW@a[(UC8iN0uSx@Eճ\^pK21(C J̶{6PAb7D:?d}D'?wz/ع/^({DBͬ-w;D-'r Q 9T~<вuQ\M >2wy;QJ.B`c/Hк + PU|jNiHftEs5"fFPi6ϔ{`ı{2X_fVavHKifuuZ:x\}z{*iWg@@.etÐ6O z fxsJ(X%$?nIՕbt{"0|wn}#Ug"KK1һ,UeU9ThA޲Ei(YiNcUHw -SG+@t)PwvƍnvPĵjJi#l{KS޽fo O,OY,m1Z9.?-;x,r8uXSC~6*sODf|\ly)5!In 4A8W ַk, ijAhKX]Z!{$kk6+^X\F܆.W?.)_ID!,, hُ1H% EPa*z8֥H0@%<$qL&kuvN}U<|BΈ <( ?)ʯg!X!cv >J1Q'p7)}o . c8٧4UE`w̳X?/UiֻRv4Sݱ `P[3MfԀH ̜ jiͨs)ᾴ, |A*s5Jy=d &SDښT]eWeqWStsX搲~)Fi,G1F!챶!U?vQB;˅V,b cvtYiKoI0 NK h*d39;JleS|"3B֧tbySĚIq}(|*h^GHe\B&7)"ԅ"~[zq "~!6)P8 YI*QrfB Ԗ|n`t)§R^!~Iߡ{;ID$BYlLw F(}#l/Y9Wh;ы S%͙jJBd9dh%Zlm]3J;Dp;2,*T|}s7U|feR9nG5y=A&]3-i)ZBJMۮ}I,gl4qk;S" K~GT~ P1r[pN}p[2|G%6n6T,y7S>ER켮{lr-%$8@ L@`D)7'ZRڻE/pFĸAc2)"BywWtDY4i;L|VxZNCVKLsRcVO+'|/ b lP$W~'tF%":`59LaܣM`f6rݑNP}j.9.c\v(p5s+E}_! 0E;)iA9bIOZ'I944/"j;0:J42*DP9:JFv{M5ٌ^DehTÚT8k&[Q~.ղE/Ng$3; M)D4 z?ۮ`$9?pɨD@c[D!i=xmHނ^oHO^ uCη" ˩9/Uz $6ٹ1lv&ӳ{G)'t\~K,nĮU̸ $YL{>YE [ s1sy \[N MDг=U"ybv~v#.<Úh"1Ce^`TVW!߾j~-pf&L.$s?QCSߓJ%MNi'&Il£KdOY>xҪ.6)5CjrwsyڽbNS~7$*xBo q;9xZk8grT`/ ^"n ^U_QzNjO"Qֽ'[xXT=uupm0}VT" n1)e"#yw\]/zcN+PM=hܦb\8s::_@gu:ͤnj'bbtHR#ꢇV`8gIN=Aq='%vұDп=gog) qL4OJDUy%+J3e6AhS[gr. ;:b#ZCghQ,Ͱ0O#0(, 1s׀T(2)Eg~u[T_.;bys4VHc=$˿V/O̝DM;$%Lu?7c+Es') h8xK7$()ZRXc ̓[oL0rcGUjwMup)"Ȥ5OXks7>fULD V:d3x|t P/IziRFZ 1nBB0gzSp &y6A@jcY?-c e趾 ZZy맬aFG$' ֜Z£'dBBhhP]DX&ؙ|vrۮ %h] ]8t J?\tOQE7NaCmjEC.UgA>{QS|N.?J, `COgQ*''1<#g8\39QSṟŅL5Un sF,щᰮplx |WOJUr܂啋Ixoh4O]up#SsuAڞTh(2 z9v_#`qBfLpf.c3x+H8s &yf D.Ø/#_j!4DÑb=J.U")<d#tllp#]bRPUN@qmos~wO[ ?.XBKj~AP87)Te.3x1)E&I 4,+kY!e~ΎnSzd|ы*=j{Ħ%T آ;G`7të/GfQɁ fm$4ֵ݅SR"tI][u,bØ@ױwByf8*aTG >+mT{{.9y^pm ЇQ*'TyTZ,2m5b0 바@q cDGB =3F\ DAI=f-C.xʯ=xN+݁||ۇdgEbM~DRvܣ|p$|R*^*z>6[c: Q>aV"$) CG4jHjJ h_4obmbɈ㠎.u(`G#) ɼ/cPse>Ҷ_2\fnID=sfcپ2~ǓNeh3F d]A Fmܮ\[dP9wuEU7w,@{fIaEʾuܠ? ʛ)}Y-mI_7ЯF育 S CD\ǘ9aЙ {+O釁37G+Eq_6׀?]cAeO͉pr{; dJrQ5waa8h2FsY?qz (-OwY.ʭs'Ab ToP:dO[5kƥ-pḦ́aaq9B !^W%+gT:1lu=ht%M߄3!Ewxa;HSn|*RLM 7H\z2VCУ[ 5aSY#UTɔOP|899QpLͳoUΦBa㬢lX 0P'bsJZ,9`uY2芨rpHL)>E>cYpz_l9W99Owq0\$[B$N ]yz˭dջ= 98[udPFBB^m@OCjymHqr%J >oD~1ۭgh۹s"˲mddVd uH ]=Tom:F_⭓@Ȫ kۉz #x(%(z% _@ >8Xh"F=FuPb 7KDM<@AojI*he/*vNcgI7-k T2Yyg_6Qfi; *4.HXĮy 5p?NJ`rDᜇ~*z&K]aa"8`,k6UQ?,8Wi~ѸLvNJ5aPX(}zD#SkGgh޳ʶFƿ=WeIc;o{&ʴ;XkԗLp9 bWavyډxv\TM`$ZyDyL rV)t*MbYRuzG5>]T/vF(~7N@uḟG!؏ *FMy<ԯ7_́mAk0j bŌ9i\ͬ`Q,xG'Ur,zeJ^ $y+ 8Nen†@Er G%"q$,Jc_n]Fvl_k,sLH5Cư(Pr$8XגudW e!t(tA@7]J* _jKC<ЯlCj7L HJQnhyfGAωx*AQWfDݣ7.cR\/F+S@jgfSP/?Y7rclA(q,:&j+)\!wr 26(t*=Bg?~{2 -m]ɢ&udJ[Kx@$^Ry<6ԼӴ =L*wQ 2 HY?k)>Вȕ4`gfd.8;KqJK\81/Эym|<)/w]LP1[XG(=|VՅjwz>ժ@!>9߷V |ڙ'+9#Ey~Q?\4hي ނ%vƨͥt m56|Ԛс)Xl*2G]D~2ʭ%7")*&{:/#o U'/Jqr٧؄j5Lgg'7Y.σř\zeNȉ} v*~3X!4N"S{B3lUO=͑]={튶c"RE# KO擢!+eG* ܗQKK}ONߡy\Xv*2z߈)R լ"=!#ky% 9c5$iZy1 %Wˀ$b$G27s8$o"$$s-2/4~eɆger\q ]hƊ:e*W:kbh+/Yq>:xOV!ǼZh 1w*b]FK6EJ D;qe*w6Mn/jAL,E+?v5ŒWPԘ9]gEb[ z& 7XoI?iF29Cނ.J RpB6/Ҩ g7A plsEBv[&F56`MxI"13BW׊V_IΙKs)R“H}Lͺt]iߓL˳N?h|JM"<ƫLA!:fl[-Ztvah(t$)Dry>3-MN[~q`{ %(>nu !w٤Uh R=,DiPiY7 o I1v0u˴Abƭ!JcvGкEB{$ 1)4FB`cbev.|)ak55反KXi d׸Kj1%r>[u9뵙`y){)7;LÞ˶QdV| Y1 ?My~Z&ΠTD3ZZ)\pFyȻuEl4|3aD0&q4w.0 ed5 /R6kv &g=JCHDF\E-'d=,E! #];) qOc{:p9-&RFѩu\z㙋iKWPw%bA!S)YPXVV4۹!7긤niМ7JYٗZXq`DY{tOٴj.ر"|!-MJ UCm]3 WHcZ*(7}7_BGY`V&`s#uO:e MRL>aS'Q=tn$e#3,x.O r:/Dl|Y5 _7DBW: vd 42g(/ {lCƖܜbMNLCrx9K Fk.ԟ.pSyEPiUeVގ3McM6&) ݹ` OU;?K,"R_%?c*$9V}6SM{*aqɮr?t?7Υ( q GAs2;Г+yr l*^O]ԫJXsN5qXL> \| \_eth0 疛a*™S5z͠M#'QfM)S36 =dDqQǯLShZܘοfk4,Pօŧ ~_ B+' 9Z7{ dqşqY@ ;pyfp3M\&|lMZH^r.C0{@P'EU Sˀ?ˉ-= B V$;Vqk4z}U^1c:fZ |jDg nUp%NW Emy=OZ&)_gA-rc"=CW1iM~uI0hj( hoycQMw 1*?'[u)sv3ir܄Ǔ}K896ŲVv̠Eg?*PhqTgE1xX %&"4DZLWlնg~܃dc>OxX]j߳4ŮY^=h09QcC|,Iʐ6c 4N:cUGxìw_SQHD"E5@f47rEh (ndN;͜?sS񸜘kEߧ6Nݾyw88k,n) \_b*Rp gR{x.% (ީԫ\SZ_)m_*Gg0BԠOg9"$yXՔ Yq6Ui*z#J6d"*zt6w 7RZ !Sz&j_`PHە%{P(]L|M-W4:Y&9[i G*L\;+Ǔ4ǞI"x4Hv@}w5хpno~DI=-FR~|{D|3EP~leeYyf.@vdT8㶔p+dCa Y-۔c+-loj&L6)ĒK޵b%loO!d,( VrRjF=x5o7Da? tPj@{DIvUT$4#le `SBj?a SE:W./%z)╤UmqE:Y J:&u x8u>e.a`ZՖSu"Nf;-M| R Q3Om^(qE;/5!'KA7r䛃!:ӡY`Zͽ%,|! xO^қO`NrB19P0r2bw?d i kdo:f9Rl0iK s vwxY1[LCU9M>=ZR}|XN'G/۷4qU*렘bk3n]EtZVoPcTZ#{5BVI}[gEcc^995ZGP]s# `vo;2W[.kr^{ N 唲>.7& b,NW)j4pjCJJJpPxXl[5'>6WI:"htu~oxh]Uht:Nbˉ~ CB&w6yIy6+A׺$O88gkoBG.vwrW*,{[o˯,*mtbn5f29MaiIQjE/u5#_-t)dݤTa@DlUK>~W? yHA+L>JhȏW sE:F53@%v7Nj6'U 9eG.]3d<{oÒ{8(М9+%4ڿru}.2-lP 1Z@<[3Y^tRZ/YҊ>%gJ?^2d$~2*,$/ l!s."y2Cs$a"K(cEc޵)O_7O܍ d.I#NCХs!2RiZjy &[˘y{_]q͓b2&uyRїbi]\['鲹 f7YHԛ% SfZ2W[Fr l2M,mZt*΄бR.CYiӣ+D'ars󵼤R#MbL@]cvlx ) 2ߺȼuS\%XX -rGm5Xi@ .1 G]+X#!M~+_:9aQE6ekuQ۶DnD9yh 5:O*VVH%8(V8j S` ^A0@[*Y/-O?}ksk\:s} CDc4 mLg?6Mk ,׳zDwNtgχď #h|n+YGP!J 2itJ&3p#^:ysXN.ː&|@-p\[򀢭R7 `uƭf|Z Xyu)*H|vN KEw w' B Yxto$, Ś[0n 4{p$'|DHVar=w,"C\ަ>! NqA 63jy>rIGT#]=ב vH:"p +;*]xlGEH˴xaXem?lQh\XŴD};? U=Y2k7YwH맥TayA*@,!kݳɺ'ŏ3*C_@tUIM!;9؉~sLu;] ђQs ^'CBaLZfcR$x:it.g~ yH̿?}B;w+,*&FRvrg#oFǼDB6,Äe)n I7't&5(lښe$;@6`Hj|>X&{j<=BHے#כ'5yy2tF?Qh't2Vqk@NhjC@x fq!r6 5{+.NHqJTDU~CC{ Kf=CfDZT nHy̠IƢ*ng(e"J.V3ѱz~4n~ &?1l+mMZ͙|^p N0w|(;$6ncqI>;Po ˕;OZWˮLįS>S_gc|Lq`E6_hܐ!F&G؉:/Ey `mž&tP'M4Rm~EݗGu.z"ztrFYݜʰF$Eϗ~eKK dL ӌ\nm͸G9[1-8¾|%1ʵ?ha* ׳j2eݗQ 5]g[xi:nS4JI,}6𽔓΃oF_-8Q5idSs4  ?6A P"d1|=mw~`n [%anAL1w2UENZhW9K<}(.2zL崖/B| T@c'0FQ O "~K:NUzWFqߩy1#'4{!Ev2؟>DSjg,f˚'WHg Z^D\z2Y&> Ѓp5':[A>o'VȈi_{8)RY-zcO"!HgFȨ|XuNL=7@?LAN3lj0U09yZON0:T c@/!Kߡ.E> hGt̝5-HDZh͜)C+JHd2HyUZMd=a3u댕.ω11RȼZ3XK $V0vטi_<̷` xB)SKӇS?Wf?G G`-Q#l;d#^~Z>Cge7zsUB#@M%iȪIm Q8ǭqHRԫߘ _p>3"eEZo=g}5ui ޒ$m8/Wu0-L%MJ,,dŭwvsg*br#Q![gƯ;9x{0K D(Dy)-JB"HCc@'.~2O@*䕀GCXT8:@|+gȢRGv$bN4Z.)hd Cƛ쨗>z{_c؝*5v *[\ =owhSG>+~\'hLGcN4)zmC"o؇@|GR܇mmk-ht⹼;l<_`>5lqչ4»`k^hspO}pbhcw'O9's,ʵO['6dam0;z,AqtrsAQ?b]x-RMA>mBbcj"D͉dG+? 1ɻiXAl]e<-.}śI 'x+0SsY.I"vJj.;X+e)Qh 1=HZoV^*@8He1q;uR"s݉|:vMX ֛w`} C /Q Iupd,"Qk42Gs:XZWջ27<)Q:T}#7!DS^ j8:̩J5W;tWˎ>Q]jVD.qފ@L 9Bgjⱓ<r[ o3Y)|^ehqO6=Jk9Y.'t*-Q!1q geM{]Gl*T8P*n a_ }):j D~vPաZq+Mk4av%E!N'STܖpz\p-wKZשt]N lِvG}αJوTVQ7 ' 3J#sL䯐uV_H_Úʉ(nKJHB=ƢPE(Ӏ9U­y ޻dIm#pWmӂ\3SR$OOJ?ր:m&^G`ආ-Ɔ"2M1UJ6s74OyלDN'ȏ-rkXyDO(W{rCՍy" >AAj0^,Dْ,yQ<-ݤRfƁ0~VCIa-P@9B/SB'8yl ?zB3R|%96 yUА[Eڴ0l)-c=QH_pЊs?R[л@0m۫>Jv%(Zã+J$w8Ð6d ncs-댕hS۠r):)oݲW@.7"=*ׄ_/bo2t1f;M*l7C ν;X+zu0٨ט R?D!5B?9FF؊*T+sЩ"V(͏8 BΟn̯ɐ1O#u-© _ %ʊ>UKv+ܕ*+CA;Mmb (>E'û -14ziN9~ *_Ѭi$I:uɃM/-[cNgg-9_Ҏ9G q ,9nx1ϝ5Z0 1QHkz-—Q.xa1K"[kuƲH(5&`r\Xlk3R doI-ǟȇ|=D6lsJ(`INI_MCpx!̊4.SGW]*˜Y(ވ !03j=7Q(6@wrǒqFǜ%M%%|w'IK6lF>Oc. ,hcQ鋈-.Nc6~nͩ^؝fT C {wh8/oE R=2M ~v\a]x_4Fܕu[NueS:MX ŷ9\yFQi 彆*&~,A7O4Ȳu:~.aɟ@|RNmL9ڔe(U"qv8]֞ !K%{EжiUV;`w GX7r>?FoH8:V84TxjX-FqG{]?m M ;v8˖Nd5?;37WྭЛL-ARϪ㬸pYL4ͼ%JRZxϪ^rd\Z+*߫+U+aV2M#*7A0$ ")5Xc#{q E1͔ʗg<(ivBqt ذjzƖw0IDðu"J]0x־IUn{ktPh*fLsB_Ņ'G-Z'UqɀO1M+8 wzo:7zgldhE\nA@zYׅ $¡HUC=y&\l mZc4\U{$C%q)H6RM Ţr`xᑸ"{Kyw=%23vr^_;F5?7oʎ-b:pZ.v1?G -Cjn7 I)ا׈˩__$rZ rgH0Tm-zra2ad (lynyJSCDnBQ@Rux+)vNmBPX:C<<_Z۵Bbȣ;yEi uiQN,Fs{Ϥ4;Q3mi\N& VsTg%9i5X~@r"buFmSwQZ1O c޿R]n.*|%}ÈꋨرXjaXAKxF<+?(,>/&.-q k;b[RIB|:ׄ%;]W[T֨׸~&6:U:O= }Za,t޸2 1QY[9e޽c՝{ wwUkJmKm1 >AH*ۋA5='k pr:N}5OCNGŧJLfzntp:}5.4N2;NLdN~UrQ7Ri=Bh$sRt2 Iэcၤ!4v!p/%;)G :MOR9J o Գ]3|tڛ<֠ƻ0D-k+dFĬ-© X mr.\Wgsf B'tňE|c&E昂_EqX1Z.@YB`9N)Sqd'w`0w|?36Cg=S8[@5cjeLCb{i$Wq:]h_Ag̉ʼnԶWcj؏X*vf?Gb\qELU,Al$<8}rwQv |)xGL&MցٍX׆x7<"pږ2߾XZQfGMH1k[gwQuj:=T\]< 氙q$?39RtCD^G+G@L3}>`QwM0bB$g+\e KQȧaDU([M6$Z|pq~mQjF7՞wɺ`Z_QnSf(ԉNbf3&ly˹ۑP㟷`{^ժge1r9GrN/۰r3eZ?a3$/=c.5C=1j7:|=pEv2%M2H'$JG_Ood?A}wI8_M b|* ĤҴr= u%=ؗå졿 F- LH}"$^P|Di8ƧZjhS ]l l6/@N!ĕZ7ղ^sMr(AmTκ:vGZ^Ie;̟<]~E`X@pw1<')tsNEuYD! K{Ulݫqp_2F(5i]]/əU`'F۴QX\_X15*"- Rnњ[u\{5($$$[B3u+lT'huFԃܬFH/[I#jjΪ0 r?[޲bV=g5zGHTz?)e㝏QMy>:%ۇ2va @%:Qvb"[X/ݖ?ѷNkes˩Oy99& {a2ɦ2ː_c n'mz!<>(.g7`Z(AզIPq"T8v OV YA=` /2ûS Qa鲶/ fy9z"dr$Nz7%h3B]_< =%&}&Vro)tJRV%7$x9w/vmat\{`J[L(>Oց6B/ gI"/*S)ۦ&B sT0D"KP!PB`4[M/^Bw=ӠjkH -Lt()Wuj7fCpn8zAd>-T4-/^P͟x߀q}?IY8<r q'Rb|s;<`dϔJoxk{HQ3jH :!>mq7C.=U8fVҀ6ݶGgc?^_M_Uch ߫KC>&eJʷ $4vpUQA@'-)Wv|$P9Moh)Az/;IBE#;u}W(W$N OwHct];Ñ:O-:Zܿ2gl%tx=Hg$Q7 y}2Ɉ)Rhh6pt[K?1mNΝ^vY \o3DHR,tYo"x`\2S~&H4Ms" ?Dv? +4o6j0֭r(b|dS}+K"- '?xuf_&۠~A(Lwoħ9VU<\h^sZR;USIgtA܏^Ə fm~Ht5/IiZT j._O͓xz-SwWkNPEfT*7AðZtkDž+8(7k>7h*)Q҉%:U/ճ9{}wec_ ,BiA2hp[L}:9Xq&wD'/b1#`r=E ma&Y#vlqe FNn1 ,(-ho8 U ֥:dd?ڈq5Fs FC8;dM-Vyްg\\-;'~^G4zZ`%e$VSgDETԤͭ ^agc[AG7 e+2Nd;)A)6+]H4\X?}R)'dMG}Ay³bG$jҴ-X;ڑy[ ruM9h8zɪT!S3-sÝe ?oyBXJ^}1ƫVCBs@5Nk6 19IX/5_DN:_cM?Lk][q7V{%Y՛1ˆLwS~nW)=蹩}:D[$%,6v-jlU鳀>PmIbFzu]ƙzsUjAC48󂿵<\qCu%`^؜—>NSX 7/iVC`bl uj리Pդg9RP1q "ZD7L)vbib73R O?8]Y nq-# bxKk =u5>.Tibhߣ"d_d+þLL+MO9@H:ؽhׄ`,kٛD*elʻ\,/\wUgIy$f|y>Ig{<6Y\ŤB)ƢX3T|s채Rn D S'@(jV }C, Ɂ`>dϿt/wQyM:EU==*6@N7kE7o3,Y3#XMfxX԰h핬=M1qUvE= D™nriԘ|Q(uI֫޾$ªuH|*]GT,aծrÉM0~ty:\r܀l"8w6bWVմʸ~_PQ44',]l7! :E[`*9]-B2K"ߴ*(]O褜ULr1Td/\I4f/3jk@NS{p?u4o:kJU83EV yNEj.eHU ř>H2&|vmL8iֽVW y2L z_[Spe0a?b.\Ie ~+O6b62y* l+x4Ô]cPdp,hqB!nwv(2X 3:M=SFBBXV]V?Ncs 9 ;#Orc"i?؉3 H%.9ۋz;He #-yҝ^?JKjoRSI &NGMT ]soQN] 2?6o7 }"-ָG{OK (Ih!XV\&0@th8X%3>J|2b)V.S@GEXmp!xhX JWFs׽̕s;3R4"cXw3oX|Sq 9[`7@2=qMI )>PsD*mBuPOð"h{UA%3]`v.[0{tgGar [}qt1Ю+8ʲՅeXWQ,3~e-ϔCRz \ !+rm={hA[ۑN˾&*)Ԯ!O:0}U8I=׳g:37gN]㵊r5G6S0Q󢚉_ҿm-Q+-O:"{Z՝=Л%[۲g ?2RQÅO{]o"!ɠiB7Pe3fՆR1J/E 4P4Wd7$5xٳ'N P{Q6ݝVE ߞ2#Gyۚr&]ʧeVqskL<3؟2gF8%̢;g~Gو ae.]$̺,aGRع(,Lc$._6\ ϓҘ;gQzX2ZG7ط̙sU-$Mj vDggnQ1g_rmo+Q`¤V~w&S$<!T}~#%[ 'fk&c/Զ=dĦ=,#:XD.G 0N(ݸoAȴ\<`\wT.",aHGzK˝p0Auj)HaQT*PmZיD_E^*oXl^,p d5ztE4*g7#ۍϋmB *Ȗp2@=*`ImP&šw C=KzNm8ӀY Z~H>"MVbSO gke„ ˇ^*;b魐: Ɇ ƿsB%"fǨkkd:@V`߱(qZn=z[4 }4@CBH,s!|3nw.y/!J̰TFCtmfy,A һ _c2=$x|P>#V,=en(3:'ٖ7H7]f6K3,kpY$MГ>F$m@(0Ԓ\mR65<^M/`yߚoDSdꁓ$ J@ćl}Ň%J$sۚk爴)8MSt(Hz{@f{;[,Gvu[y9=dYXتbwl!DF1ٰNu둛USlZaV$fB]D86@y?=R \ڒ O`D@"`*=H1N`u>+6dloF"4\?n 1𙳼nW[d&=&Ee{JB{տ\,e d ґHc^6 VH1cuLG5sU'QLdۢ^1m;HF̅L8&LfBV9eGc 86{m $c`vpdP?N猃hD6Pr7<; U٦SUؿڦ^];{y2q?%o+gJM=7h JY$wI'alSci+VrIK N4PڣG+PDթ{'Ek xZ<?B͜>BŽ4[03@ (b>Fup^[n8X (h_+}ˋ_ѭ~uѭ / I^Fك4fG̚@`7V:dХ;,k.i-v'ֆvZ$z(&^~m_(gY3tMyO%Wv [KGaODTW~RI5 sBb3<9+ FU ։== GmajjjDVX69)]^ƂUp4dQ *zٯ#D>f+kj10 /'OI=k|b=Yꚗfc-HyQkG@wko_ z} ?"~ڙk @C᠀nQW rek2a|ځ!C P[_lZѫ'BjuƮ㎖vsG2?#tFOĵ ]6!:=fLItzsRo53~&2 CmS;e+I~6RW ب4q/oV(L9~ơv)7[8l0Sz^WPOaH1Ŵ.؄ V: 2Q =vr.@|63 dm66jV<Lr(3ӆj唌Tz5R {5dآpe!.3> ]IV5Ps-^ɹ'έRb;f6kL2!h[CM"*2 Ţue9Flq&T=5ҪJ?[Veu$߶ZWmuo`'yX~QOw:])2{"NW͘\SJ%~@i;!Ӹ5p0KsFL4+Sh;:Z0Y4mli \6?RGᅇҺ~z)X=r)T,AB<]R%BZ1L*h:EZ̆ `bN=TTpGan{)zPeT<4#9/)6 Wx}ְ^ʔkNDkzK;+Jppxn-~xtΘ҄0t.W$O9-{l 4Bp6mn-%A?TۭC'U؏YJư!b5UCoJ6U/xiMU,'>3U3s_hbchZ0 `K8L< O< ^]XtDvPDmuCptt0&{|'#g b p^Zf'SN#:]|'E\,Uz`l6wWz̀qtdEoa 4mlҠ܍߰//PצBV]Kb}+( dKdhJZܞAܒ6 2F)L6 `ɮ+]gu]'>ә2`zTLxe@z vCw4J fp\\",j O-6&6;2w}Xgj[`G&S^:cpEHU_$U,A<ފ`r3xHFv{8 N^`M}W+>]仵 ϯ=H 2 A0߃* (_] z*{HxHlK5GW =("єVo!)ΚpJr_z\ŌBNASW"&NlC{y@񴅳W'a$fPgc|ON-Iuq|920cEMu}XxSTZy!Kt%018BRQQnxT +![SQ`urKU0#l#bqC^.a1'79yJXHQ_VB[]& MLI2{s?ڴ3H<('Ako*A/Ͷ?Y>`7|i[dMWR@ H*cpY$6[U)?f]\/[cOfcw@.8b}ozk h+iNXүL5@RV{b?Dvz1"R " ٵ"uܲebI֪Os(5%)~7AF JzLv>Ò3%~`IKVUHΦ81j:::i+ `G%O~ vZnY,9}r>;s<`( dRl<ڳ:Nkٷ <zcYa pF><\ƌZ*LR?W/^ -Kxs]a*."SuP#Mg0LyQZ%sTïA\Ks fCϵϒAQW;m!q:#ބ_)>Y()Dבˏ<qn!h7 ݲ~7X앲 c#~j㷜؃.H]a hqZU' B43ٵ7~^pU5JAl]jcL]آJ2*8@aURצעy%9R Y@0OUBlEH$@5bMҊbh:CzmZ |]L+gP~$~UFF Vog922ՓoYl;H0 D B}ǟ+tέ8 B g*^Í$l*ÑyfBSYIqET8 ,:$.сY%޹ (+;p ; ^*(T ēOQ /ws04+> eN(1=-[S`L݆ZnCXq9OuԧBOyd"PT@q/VU#ȑS[TΣضg,D]C\a1_Qd4| șN<8wQpG GSw$IM`F\07 rR+x.*$u[diBՈy<$g(3 Պ ZE%׊5vo(^LͱkER $x%iY@K1 vο D>KGq%tnY"xY猝O .H+F~)aUWu xHx`5POvsݻv$~'0*ߌG$l|eыC[=;y~83msOݞ W&pTQA`@>>{s4ȅ*MirM2kW5I wa,Y-oSv1mc/D]Vָ} Џʻ/ M 7j J*{TovufTv5U\F?t]vWαʓ$ H4 *,3lӏYy_FQ"!K>%ҵ俪5O M%}zZ7ABҟ=gͱ`J{ Do OϗVtt6N$58x7PIvPPJomH`Tzj" -D] v.h֌%רܡ:|-mo 4=k!neg\cɟdfjl};g Cf:G;=rl{g(v5)oN6xh=Ѯ]TaLl9~8^lbxJZf+GM)8Z=n -2^Z;b8UW 'R(;/46KhBWm~52CLvڥm[NU o$_r:`e{1dg"aLVmݫ}JjNʖWX"{ Zv1=R `{YÃBlr`JYNeH\ס?9Sg0_ޖ@TIeoz`nCώ[6H9l -DcO,,t7.f10zG 6ک؂==9o8j#R N1a^%l ,ix-?U\4CW vV 5q Y8]Y{dbp,+tVR, M X:JAc# +2[ ULI"KQ6j693mMf4a"xm)=-lL9PnVð_Q~ZPj!SAf+|KyeFOF h&bq:ej(M? #\7N#C?DyM5 4?F`%q>U>=QȆ428jcN65kI(kߙ!֑ WŐ`QםάxEKőV8D= y_ˆqk܂Ջ.0Bl0Mv46# Zl(֍0 $rys^D"n^o6UJj~yUv}p@!{*qB*=  Tk&vMw"iq 3c[d;hLZI,x`pEUp= RN4;jV;vD+SfeqN+}F Xo,yswզ#[(/cTTBʈ"Ȱ{&Fhu941;{+:[V-O)}8]$_1G9gkvѣ$K-\D|z/G '*5d0R56ȲRj[e ϪOW~+69A˦C+{E,eZ5a1QR~D Z ~Ri>3Aqi6Ŗ2Ta.{zcM⡼J?k{g|\:,GL&N{[ի|W|B&3KoMI8ڙ5&*~م}eZ+;3 ,Y "oJSFMx"S3 {yφ7S͏|^\z4=¹W83HRx r.tKL~Ěx`Yd*)dо$ٔapDi "^+0B4Cc,!%稯vR(+!)(P^OV^W#C wLaɤ'ܽliuVJƹefϢVtc4{J07CjAEP߲t UjM@ϩxGw~Ҵ0>&5>ptl'UU^ tV =7bu.A> OTWzt2d!}Ddk P~]y+oecهKWnswX]C\AAט>u?BH5p7}99 K%cY#uJlQklK~yޜm}"Cibi0BP.@'f >/}ڻAcT/S.G:/X Up*ҪQȩ3W  6r3tNx׳{W |.4eb~5= U=D+͐< 㔎= HF۲dM?4ÒOCկ1 1z@̯=? ?&H;B.bA mW?o\ZZJ?EG8ASa~v{!~@#;zA 8#51L UddXQf:}YXcW˟R>iё^]:('!Iϼ_$'̩qhLJ (>_b.`pw[C~ 9/j+Q5 w`;e @\V0`0?8WFβy+;!PRڪ"Bq]&Y(&P mEVMХnA.9 J([I#>$Ƹh|h]J'f>fJA;5/[C? )Su-VE3S_-beЬH~ꎼtȣbX12`Cg3§rU3heիBO ^f}仡.j x+܋iY,;%n-Uw mUP':'.VhlLU6|3)}3 ,485_ 4+ )(^X&,/oyGKvтQ,5.hvmNρ*C2 7yL`ñyyUؔ]\D髰ϲw7yM~'nR<+w_bART;M^xiTeQY/%'@6C[\Jh JX!d%Y}N#bDoiXdZu;M-HV|e1xPdqr1(,wƃ心T []0BXMd (b]8gC˯@*'C wI^W~A E FZ;vdwIŧ!)}bW4N k30!bmqT+̬VSWQt}fϡ}Ԃc7"E,=O]Ǧp4c]fowJ?r" weZ ש[1S 7 D|A,2,#EΐwӝZmP3N\ۨ8pM1az6m ~B$q<|jmbiZٷ!TD졻5wFk;jp1ENZ 6ϱnw>/)M(O% 2 kT$+Bd#9RS0eߩv%N8u ~CnUmT+7zv}L nS&!6ގ@PĨ6f,]T/)j"'od{F!Als(458PaVX9\2bX{N\V%Gˢ!;luʂBvH34\i.6yE"ML|H,` <*k&gO78~O '앺Up‰#`-FLq0[[ͪҸ eۚXɨ&1׽| RU,G_!hm`(޽=d淎scjft;H!^~a˜Nh-vC'9P]>&p+✡.jI}*Xzζx@9&6uABQoHTUH;6^aVCX64Cj$FUX3>!D،FeX>4RL`A!SCi.睐w2-?nq𬭭㐑NJwyf^/ s K.ґx $:\|US ln}Z,rU)~Tv(_PΈS<礽."bb K1za|jO%qDMɍ@AI9,ޣ9!BLzE 6"lj o_-y*"jom W_`yAU ?6y"tךqgIK4mft')!7_ֽC!>@pǒA 6wk5:Lg݋N ߞHMR+ڢptYkBw^d\"YY@N|5da$mp ;RtFZ^B%7j17]fЈWĐ%%&raWTI#>/٦d6)@;K؋y,hr0<(aaHb*1>܅Ɉ LkH8l`6(Ys6kW1e"2/T4~gU|B #g^R! 㥿HJkkHNjt`;UBϿ:5&،8F$y)JTnX.;/l{ "NߋK&$&]?CxTb}ɹE D!Ӣ\?fvmgQnDv2.@(!ץ(Bra\rA7@dE!Z][W#oטy\ܾT>"VXV1*T ~JebQ&JeEx!,c ,*ѱ৞G(/?2ʑ_#kg5$ 7m).D= ﴛH'R8u o3~8?]j>sتwLHf9 ,ӌ"M BZk i)V*dϰlEwOa[?s{x6ijC/]#Ƽ@sXxE6K[%>B Vmovά 1%@˦~hp{"(Te\;<8'%yTl(3Frlk )`4ti64vtz`=j(|mD7B Yj"Ξ̕22NSd ?*Rޏ-!+5еu*ګYF'л Sxe~Jl}hYI#Fݓ'k3|?}yoH, JF&H:RIG3o|JfD>$ S {$Mx;bZ)o!̍5cthȒ`8)GH@7c>4BF %=kmӃ'Bf[̺i&t*E~0%ϲC/YTdGc=l[vžg/bmЖD0LF3QsX_M 65k4 Gt~*{iet/8f4-XM T0OA ֿmqćpdHa"16:Ashy4zOHy:^ibIEGף)}8\''NP2H=E kbsagLVm G.(U;)ȢQN;🦏T =}i ƘosuWïB.%E/7Yu=(+fc,q~nTDո-Dbњ&":ْA`#dzsɦV k R;:b{sxu [Wo:lv6+@It2dGq 2E}GPfĄXﮋjS`˳9۝ٞ "^'-V`m>NV[AjUHjn]OS0kRo昗\XӇ1){vQ:536ZB5ۅEDT꼗Ć%)mFʛ]5dl|dd.#-jKGvL᨝`Ļ8"q d̡%LNjMTk} dE|ВGB"PqG94t63%*njf=~n#*,}};|h>DWӏ}*~XwbR(ԡzz,vA()$ y!⹰,`z Z!<O+R҄ÄFG6!}Q8`-I`O/DgN2wZ9S.62w-TxЃ*TE9GҠ[8U'0ۦ46pހ,k!m1h;웆v:l=FBAe\z 9\V \ސ$Y.Ś8 y%NU&ʓv޸[p6k,߶V˶m^"c$FDԁK@S2|HTo&^?`cP{jqQ"ih&L)@F(۔ߓhA)Ib0_ŲozGPբ o51l"L2w=%?"xUI%{\3 5ZDG i=6ZkP99cp٪#Gw{ ~ بt%_驂Y@C(Ja#PRs:s|竻tVT%}ZI՟Ie+ͧfy:)l* tYCIT*3ޤW.y`/5"|1>gLnf-eEqO,yaVTLR*ykËײu"/'E+"(oAl27yFN܌ rx_ ]Y 2 k,3XM!PӼrv̇k"o=wO-x%f G뉵`*V6櫼IZ.U@S ϋdF粍u4z h\Ih>κ Kt5U<( iv㶞23hhKae8!7'C4g}d7Ts3׶hy׀r@!]؄q`x%dljD`p-bQKԼ*fԁS{,w/q] 8M<с]lƈMDLH|[?YMhы_rXV![fqY(W5#48pXh#e> e!,N}B|1(PU%|JM|(fᐨ&W77}qq}XQGvܟei߅QN&$SR|hdÑMĿ =Qs6 -& h#;<,5eeuj{զ ?:?`CL}0j6W(e[wR͛KCRӰ.+4)P}0ZhqqSS.<1Q1Zu|E>ĜM\U^Xi|Af$ qʤsǽ({@;0[(:Qv:jK K K>aye- 7IKpK YD܍87! *2ݧWF3] O@WK¯=;/bkXMڇ5eaVùO,m΄VV^+Z.xרN*ϓtQ& BDcyxQK./%'! GAT1D3Q^N{8ZGQ 9m@K˯?[X5W ) LO4TBIǻtCv @gh|ɘ0?qUPMa1%H^HS.ůj+>Utpp^'AS`tǚ)GSԷ RpY0MW$lN_<㡉3ᑐ,Oj1}9Ȳ%md5dr P.ͩ1MigH \ 4"T (l."П'ZWO<׎³]3j\Zv6KM(z 4z<5Fs:%ZSIvOH׫~Rf U+ Auu':gV`4#*QG850ew\8lyMXU>v[ԁ V)`IK9TP堓( fS2&pMBؔSTs$T/ŬFH.dÊx6/}Rq~q`=T.K`(Dގ{Lcf̀USqL !"7b0 w}U7]g;b*;j'875"JxlϿx. oLl0}Yہb8/!l;-"'<o g×nY}vh_ G8yaK\q6XN oXr0žK?=m.2,Tֲ-F-`L"<xFa qvҕ*+uלHdO"i:&/"QyZ`jaˍĺXM/wIuO_a`g#)UWPֈaFo&pSrի#f^7"`3F5/iqv/piwgX^c} 惿bH"@ia5 ~g^X2]B3x16] U%$H j_dl_1|M*ϙ@]?UH2 !n9x>2~@B}L=7QVٿ˘`:7PLc !3l,wB~!F4 E EXGc~WD{C~8L 嚎]5ĄًdAyPY?""р:hp+s֏y B܂,}DM =p/^~yS w /*f4g25HABV376 S]%!Ajx<@!Kuiy}/8_ހ|_<]Vܦ+&HթiaWNDe!LH ){դ}ÍהWsa_\Dۘ#ZcYke'ZpvP`;?P6Z͔3'D@jyr񃎶 =tfyzؕ n'\Jwݍ4+-c/ )9Q,wP xU/ o=zX`眐 +3UU,x)W_7ցﻡ]n1ch7=h'iO]= 1/HO`V}vGr^+n31weY\钓Rrz4m’{:t$:'!Ʒ*AK.vϳ>.S`i{S@ JE!4t^\ʰ4@lZ?{-9#<6me7$Yɱ4v#]~R.EXP%7~{og# h{d fB3qoT?%Ji!Ua]͋Ro?? M>7GA#^ h!%YFvՑoR,fJ>ba@Y eJG*uv]w Fo2ymj"X(qÇPPO6&S{c*gix!QkS%OV?mW\2gTvYF2e`"eYl1\LBIDiⳎpkI'U_8?3@2!PeEd aꖑjIsC=t8׹MS%Kw-Bre<tm+a?VXM Ȁ3jPLQ V>be}Lc5+Sߞ*滿lsp}[Vgv.e](/]0O._?X! {0C{\CO,WRjټdTW >=pD os^ ϰHmzn3B\4 q]x!E%\~&+ۛRp =\; Cq)c,V_S\^A3 wyr*Ujvtt30m jڧ:Hs\_%`Xͺ;dғ *kU6 x`z Xp "`ZVr뱇MUuՃ݂`,,A O(C,{{"{ Lj6 zq ֧9j6Eq<#zVd}UA M(8r{5R pɯ%) ÌruWc/ݲ6ɤ`@YyE`߅eٗظCd|neZA( ?R>EXt\ä(EGB?6Ï6Hި(ڷ(3MWK_7I?%ojWbPQC厧󡗂QpH% !liGxQ)_ #ҵ:􏄜H|F ).݀%Wq%6fË/T_q4Nn=@EB:"ugs 9l9);8Ѵ'4O:<\@l\X@;HG@0 ޮ V8pyqy?}=K_iPKn YccF8>63yS (PW/%f|Q*j&(_#>Aڌ軀;7: BO(C1ŠV̪RWϬnf(:}˜z(Q%I׫;'uimgtRY3_ g# $r*FsT""ͿQ !9 H4`!)?%OsIGKѮ @^|!phUZ#vN^s=۠__1n&FVRDvS 507x>V^L]Bxa 1-I;kљ1;D[p0Lh Y$;Z=/xU:v 뤔5a@AByMџ77ohXe$OBv|n͚LJKy׋̦,BOGJh{4bG)\qE|*yxRe|A_aTìOHSpWdUu_~f̟gT!)n\r8>uxXQxgv[ҩ-;i:)u!Vw=.C5TzHT-Cfr ֦2,^?e#jHN]f,P%;HqJ}mwO̧+tkA%0:MÉSmC3ڕZ\PƩfOKF;\`6ؗ[% ,P$o"R3IOtQOrjϤ)ծ %S}JAvA >z{{}zѧ|Z{xH\KE=zJc ٶ_bJx'Uc"p>|KĈ &$͚H}5X: wWs$,X6JĨiv'/lrKaby†((`_^ I!t-QMqUSgcQ8"DGBANf!fRĦ jElnNn7b3  ؏3Iܘ!^׏is[o5 }gi$#3Y&[QG2 $ޖOEC\<0@;Ԋ) t#ժ_LTk0{=G/\=zWo pKѰW39cf/+IIL<1~xlݘODWўmB3j x-&fv`ǽ֓f TӮ&HZD](6"ָO""QsgXg]** 2@ԱM^Ý]y/Gx,!T~.\[>HjR: @Єw2VX'kaqǔI[?|#P. Sw‡L+*V%! *Ͻ'<&]qWd*HgkceL|-~Xr|QQTvvT%e7<p4l "XsbB o9laLOOkV"E$myZ?X1S>U9W~`s*Rjh1d7ꬲ-k>w7-bk ~44K- QjǢͯ& Cdƿ)c"sx'sFP6/w!=jE8,4!OWH> .yQ=rxB,΅ ~o`˂_ߌ%1PiFv?(3֛߯8_DeVG΄ls]k~hP擯.dLjFJ ȏ>#߁ 1ux&|N d&:f>[BOSsZxH# }yKi e ]" &ĩŚ?ĸ{\+\?Z4iOab9 VX2Fᅷ"bLk r}-%2adi? զ;)hG)~tQ᥊F_1E=QbjCǯ2bjӭxm+},K|BXITt,b$K0$TTRT; s! R \ђv*&Yz,qT$|DN5yw2MPӰT} cBD #:L,Q?啠&YO5&=v3,DUf#hhl7(,&eK:BqwH Oe{ׯKùRgŃ+?wpXRӳخx\KS&fצ!հsS?v/iO,4p\DS h926 &z:mL#m@ф17}Ytfc:08A) %m֎yNOVf[N,qS_6e<i>oyܠ`DKmg9"< >oc(tj1#ڤ!SA~deܞOM̷?[Z%`GCbֈ9땪QLWgXH/c\y.N*C%rpsfTSE(U̮-Hs|~pER\[]똓Y!NG(*-}8@EA I 𗑗?93&BD˥Ɋ ܒ~s.U]>?1b kNC ByZbLgl}EPd]8$3$)t,H\yD^㝂0hvEɐY%;\:Q4}19W?sT5(,X!A ]nn?K.{h6JeoHsgmܚ22|%wힳKF!(&Z3;9 t vK/Ƀ[Т숅5Veyt-@%.ͽ$zbj]in6` m^ ӝQ0.~[ o䘋e>p 2Yd9#9 _\5ZhO'0^Us~`64 f>2 >cˣbdZ &dPxҔT:[c[4$d6Jd[Ӳ]‡uҌ顲rkB7|''v%n @/GL-;9>%J@ERr J(0+;Bjؘ dž2LΡ吰+U*5i8gGphK쪾?Q C(1k{ڝԪWY?%#Ee?s"-#R;#3(1RQ6=RT gzZP!'knf`&qJs2F *=0A Qk40p4q]%u)L݇.Bl]1^]}&M]Qұ&u-ݱ\0k}9iAd1vxCwI$׮8Ƥ<F](E-qzNAkѣRU&2$644FT4Iı(3vo*[(cMj*A0SYVVSJܢRT*yDu4鋀!֨^;| nk[ ;j*[ ܻwsN-;62&I?+c`Y=' BRÊIފv(Wz2W3/Ϊfs7Gx̵u&g5_Hhjp{d<9l+ǔ;;^/hj$wd{t  OFII23nv>m,ƾiǶEMTŊ},;i ǃU莯KmFEe9Bz/ {Gj^ABy4۩<4/WTh#csgϘD^:Ȟj UVኴIY6AaZ0^CťRze&l)X|k,>k3>E% !؅vLl\Xj 純dz+ ~pLɒW񺏁QᚲwE(ry:Us2d XƩ(r0ΰ :>mA{BVj7^E.Ehma ] 9\Yd `FG"3rSQ.RJD!oOu`!$tIzĢGLíz+4sw)I{X?Gfbkܞ9`^_⢨lIw j@88 ]o;AJM'.)a.='/i406At!W[U0rx֥':3ȿO7FeQfm0'h!)~d0V1Ns rsWZOzĴ%$IX'\0őS Fs<?ߌ ~$sn5?ͪ_هGOȗV5$A-p4 u'>%0XZ,3Ϙ3!ZA]XNE(a";ֽC$ck%|Tz1A򦈪Luds{\T o6{3B="^Aza$⿾&6HT \qG֚CPe L xjze%"|36;7Z]L_?3LWւ(n0GT!7zJl݇~`9:bw"<).`ȸ\@I'k}30iFCCG\m ۞͇KbaTF1AH *F]EO1yC{D _m!Jf B:ϑg'ذS`34͸W2F5~N9a-uneȩFhR=:q 7%A_*:%>/ ƫ1fH5Hcը=Tk3) 5×_%, J|o.^ʈ~}H }tӾ!eRba jj}< -]|o} OQӼ o×Z9u3E /oӵɿ]yjƶ5o㼨bt,}k!-Ngn~E՘P Wdgo"eJ xlㆷXJ#&tH6) \~K,jH11vb@QO|rMQwImoͭN805s+?n,t:K$ci1_BHT~ᩞl 0痖XhH~hʈM 4O7+O&#o ~CQx#ܵ!L4ơ $lMWgz(!?iT'+hcRJF%,s6~}v6ObY2( urNfPW\ls=9E\PL682cbQsSv˨yGYHQEA{ ;[[GϦE;?߂c?b5'ŞK70E:;c/pX|d MHl_>bzTL.!HSUPGQX͡x;bGM/S%݉vZݐ4ěEk@dL~z촫J2W4 ZvF+ )؆C-,]6o)jVTSYsz/슕4 ~ xRUMkR5+4+3Eݦڲ;$1xlIgI#:[䵪sbx֢Nn:8?Xֺz+zk|qS=ҵs쓶q9p_9C@ C "^\$?ېߑaK4x*s`4WNl7^*PdN@8fHH0&O}&PPU??:d  >qw(3䉖pq^IsUE!^놩E_? Ɗ~m;~»k!mt F’@Yё8XGS)۰-+mIw۷5T/_NPj8 Oe\s!6AU3P_ 8TTRϼpDXTXr^4!^ ):Ƕ`<9wĐ]\isƎn_`/DH?:ȳ*}h|K^ޝvdxfi7U#R3iWDB+jR cSsShrj lN`Wz"OOIﳏko1~ۢܜ&A?-NQ)8.՛lL(K;0<7Y~9ÙX)O<0W*,ִd?U!n <=U6*28'89OI]zY4kh0 Ft|/=XŜ"+H*}qh&R:5R$P~e#xY'ŏ#..v:l=P9M#X֞9̇7M7)rtU1 )`]ƣ BΑ &G ;{{y|pP\)ج i{6ƅp 7Oͩ`.#jj:@씘4e?٭B $'[^SVVodFĴv˴@?L8v6e8ټb[EP!Ҭ3.5PUꬵvq`t:z[oWA>ft40'Z&ٿ/pBC@ѣd!Q^Fto0 6jӄlwSHxG7:G u$ Ӊaե9]?n;q q-Mq(]+p=C PX]ʞy^ ;msR{uVc6Ϣ⬙~BPVԙ+=0 3KÆ ۰ (JGc~NA HtWTV:Wo,gLtnؚ|Y7u`]K(O4=DdyjOQy9^* PTs3Xq[U5iސk?aBas@-(&1k YzX$1]睺mPhCxGYF~/2Io[dkIqR԰Z̺TPh6iEtXJf2crnQ32欗) Q3*Dd4::a_΋$=%HRjXߘveqY7y]9b/S1MX73vs1xDwBZԅ~o:\9S ob*>7]$ ULzcmi[UҸLߝ/hIFl 93WԴXy**M/ ﵵ#7:a͓R[J.?[ _:ˌI@NFVZ~pv*t+L|c#P![MijfUeP1ou]wfN"&$/5;i;)%IjMn9PuƁ" ȡ6AjM4$P/P4k=A82 9Zf4pRk*!- &x2|6whK"}p5͜؟~MN}.燖vnv\dL r*aFrGI޷locXwniU0 Bla/RK {˼Fљ›~[?oO/thl0[y~Tfx\)6=! ̻Gcfa=/;^U}P2 Vm饪1NE Pazrz|-3Ф=5Ll's6^XY#srӓ^*oEᑍNv~SG{r,?Rq!IaH{sENh3<|:CMU9~lBR<] z"zQ IqeBy-`VW1ho2bN2)<.eH4իmwju~`z&gAMs#'t G kr'L4Ӧ#%@y(KMqr:ہR9"Z'2DZΙ{7%b?w5T@ܱQ#EID8odxG3EpLuFR@oѭU|<񲬚J=y5 7L*ڠK.|lHXS)$w 9 i~ZShO.Td5S%zHZ-'G@ m7l܋T U&wD2ˢ]iyo=4uۂ:φtSYfҿڒeW$;tJ۱ʍY+JŐ6Cb-o:Ƌv–ZMXZn&.Ȉ#ȸY7TZbF(:k:>Ӝs=Ls>md})xѱ-,2 ׃Ju;ww>;+Qk4BNWuG8i;jdn7 h<$!dq˭kJ+v3` amf ~|=ۀEI,袇>7Ka_E}e( =FEJ7lk/nÀ|#|68;{% RX ".xƉoRvb_i^)r1 'ExMQ_*ŮfAoE]t`J2gD=BQXЫT2s !d.Q@ [n+2eS—pf*emID6$X .,PɧK-N|O_&V@kn_!*N<$deUiCH־ez"mya-Gx. ) "z^F o,w~f *i#KlatX ğLA73'Ν'nlվ%ɼ$97ǻ_VtL)+R%sVʼ@CSB!臽I0&{SBC;](#+;h(`c)Wஓ9 p(“8Ϣ>nE)K'_X'!c?QZH9ו7+5`/6jz=%TvN# L?Y TfC&)߻E,Ո@iWsfo{e)}!5,9Fѧ#$vu&µ&Dɪrw{Sl ^L/%-Y;o4JBw U y-CTZ%SӦx.,NU<ʥcrWP^ :mxί,U]#P4\ދ I @ -L_S&<ްxW1TƊz0\aduMlʿ.7H /]>+Zf5MBJt'цiiuS3Rkso*)U+uʬD[yyz`6Yo=`*\r"6|g($G/Ou`'')Ǿ?$o(n_x|e;}TpQG*[6 g31S%C]~YJ<mf %I|7}A8o%;xCe{\T2XJ~ əx :Jl 0@e*I"#fWiaXup03#/jcSAKF`mElq{%xIX@4އQ 1T1pT}Po3-(I$0{4f9 Kby7fDw">Ԇ'XWLS>쭩5`v̲t/ZM7,IB?fba$_.}ض˻.k:'l9zqV_vG. ~2 DFJs1[F^@ˆ)rqT3Ws»7|2."z=SջRrP>e<(A8O=M_³Ð߫ϳFQfHٲ` m_6h`ĩ񺥈pX$4ܧѼ$%_-w&s2@WUkʚ'Z9 Y hsgG!=<._ӗvf6n;.(C$C֡LKL}jZ)X|Ph'F%#q Gzµ]!ҧPפ ~Ш~ZT("Ik0k5" ԓPu=O|Q[MЀY=OD4Xp cUQ\>44\)^ Y圡rf [vDHjL4k) p2ҫ(JM,0J@gue ; FY!v>^EcPmmy=2굞.K:MCo覡'0zXtnZFCdicʅa|I"=iSnv>k#?-w_+,+.K i+>1g\* w虲X PVHR=$)Km6@ \WX8.VsH4^dnUojCiK >_RͣgpxO j0#F!rARBrnؖT@dHq:)` ֗L(?L4U#Usi|ߘ}t) i%4=fo W$Fޠ41p>d-8:W35ٙOAQ:L{ xa:kN q$3:t sY^'Spˌ :4nؒ5B\StIt$!lB/3f~fRlOة6olչ48kup^JZwvfl|Pd,r@VmN!RfI[pӀ慥ˈxCDA4P"_g.}V15H)$Z3R<##OQQ+KiUtC !`08di)c3ٱ;¼x7* >v)Eu7P+;xZtևMDU،k$HF,OTYiK{ v۴>jvx<{Ew:%%c3̾`%:HE*8{A's ـɼ[ x e-mt]!T򡆖Er\~|;^%hwuys(`" < \`(xJ!ѷo|`Tڕi 3>Me@}'2ʏj ۤo {e&ɽdPCQn ~kJ?QOJ*/6OѠu[@bE'iLcV$ٽF>5E0a6Fa*t`LT Ab?0ФnKz0Q9Iq>w fe V4GoysceGI0fgB}Q\Y8"l~,&]_ j59;%7 .[kV8ʫ^L9Nxrf {([D\mv4u7W).}vbLtMQ];BਃeƬX_n*S\aA`e _F ^gbg-Ѵ yxnd5#k#eD >yL7Wxp:^C M;I|Y+q(&h [5<ATR :E4$]:vuL/؍sUvZ:s X;J7vJָ A}9,/dۍo?1pV`|2MpdZ}Opz]e|Hzgk99&^:: aK%pԕjzGvwo)չQy+[mqݎvrlvjh&ϞRd A?}q4Jt{B&7NXΒkӕec klkv0協' x"W/`TQjb>,kAy;}ʢSfQLDo&BDZ"Q tDMUW@G;;'Y̽NWƷݴSe lLٌ9KI<YǮߍO,Ovk(BKJjdۇS瓳mgq1UބeC;52G% Px6A)ESH,!(n8+HFF+Œ9/b jxx$~ƍp&RAdXGNy)'+h<lhجld-`rDr 6 wZb}=GEHP7١ZO9x00ysޣ \Cw)v\[jd#I|`ZS"s)CSBuk+_oG1iC7z(&)8 `8 m0 0hI- UCVIWG8}T.Ghcbo*cP`}9B5*:*I}-Uz%P黪`:c: TVb$KF?d~zۖNPyXF:Pq ,i_ާ@y!vnʆX>; JhON2cFl!jP=^b9g 4ܖS4AJiܽADTۏ oVmq<9Z5,>.{s|?JidKXJ} aȪG~qBDB -nur#O}&+L[g+5H^kV᱈iUp;O\:*<}K9#}r͗'z?[LO}w+M Ϧ=q<aW=+#B/ļtKfm@{)$j=t>(+WY)q6)9K$ͤmC$$O{!~֟&LSQʖV eּ')r]{Qd[absf3#^G҄=(,wTK +i/l>k°=)S靴zr^;ʙjȶv6|5CtMxjnI4S3j[¼Km9Sſ\UKj!`]Z:F+}o1z~l Az&r%vT_(`):^ cm2|#@`6m݋`KfɲƖW wtv080BkV4-F1`u#y!lPaocք['}%ޭoVIeLLZ8>aܨF}|]ny$|(P9˽1& x!:֮~us&}ElB,veC+;ٽR+H!tSK Ftr[s'륦&b!?nLg/JrYЀ}$S[8-2u R8^:NHNȽ&a'6݈xwҥ'Mӻq-<}0QT/' s~0Q:sdL{\1(\8=ax{`UׂTxx,dVEa\t#L|$f;6ߛ],e]2+=lR'xNX5s_jys->KZ Xb.% f(ԣa|!7FmUcTHVEftOd(SaCž%T|+ESKaLbYVr5_NZZ}msڰ@ _mb_0Õ atʭ%W_m$S/,H#L'rNtsbQ )׃&0 s6#1o3 xx]QUb3pCPI`q_PQw inBtZ ;VJ\Xֻ%°WlAYk,5&0Uc؃3j痚ywL liCFos9wh?t x'>/$9VKկP6I,ݰHbfՅ H!n@C:w'Cy!duՓ&OKn?xQIFCn ,iz#P6Ө9v8ɬ|= `Ri^Tπ4 +6A.F[[;$[^<\ -ޕJ׌FC\K0 aAU4rs\Lځjb^ BºS] ޞr Q3 <1~)muNlٚ]N!xrn""J;VVCpK1J)fv6w}K 3ɉ4vނ$@^|@H$e* ^ ~>Ɓ Ryv!rB}[ \:fTu#0h"k$Yy GRZI:3Nf]* JK\'R 8+ WѽvEdvS]! CL.Oœ¢5b6nA]-bla6tNL7s#?“ d0]9A&X,ץ=g+>RHޭtbc^ZM4HA!Y żxJi ̌?ٽXϹN E3VZ\w,ԝ$_9d6]))7H*":p˧Ti Gff|:r+"d~@#&iڛ{RGlt$f~W*7e8!HzJKl&w}q q0`C pѭ Z¹ͬoїt~+\b8#euزAP)ytqP! Es\AK}su2K{K@5OWJK#c+D'EipzPpneXG qcu[Fo^#2U"yf^ M WXRKնX&Q^bz*q$'厍I3+4je].t?@)oK^{z7BH+rQs^ 4[ T T<%*굹Ba><=_Ko}3L؂y V<ĴG)wa}UdSu^|VI:G *Ѕsn*^()Z$4*x'1p;D}\+/e ~]Zxب.#^nqGL#|KvqvJoysJ#łSYkfJ Y6d/E`tby"v?iG7 c6g@qBdNLشxSKo7fpy5wW%o5$V 9[C.;s{2.AnuO6^]_ <AbWi@n7X+n#t d[ l/ZՌb5ڹ|ȱ5W@h y_Ƥa:R T Jb8;SmrBye^Flp|pLjm @G[uFhF:݃ʾד!.R;AE *i:7-lvg.8"6f~Soڎ #/F[94M?#V0hS ]i/oqc5HsQv={q*ց 'UelI%).;3 Qz>/uȚ΢ˡC)(gR@`U}WGsqhj $ʬ#k.J :\f}aBbhQTش)[a=XэD@SȼZED;f~ JA ךرK' BGV85|e2E::҆!HmʹA/iAHヰjJ?ͭ_" q6+L7zR-=l|PV汥t:\Ms9 I0.2uk£ ϴ)PsD:=:x4 Sc4_. 8mj$ឫs|g {VY9:'l|CXX[#&ԴHNgEdC ruc"2O/W1E#u 7ȈjF=1z!I~ɤ]Wf |΁Iylw۸$nL[* N3~ V 쮭 FC"}{GW%?bz~"SK>tU&tN6){|-g< 0qϏÃ`y᪷br[ع+OeM q@^?Gxƶ| J; :/ JSN`p`Ap3{ЍtD鉓^w= +dvzyIuE ecFSS\%3/FLKe.f?4:滆N$ Ä(=\xq tޭYAwƼut9Vt*օo3kg Z8슦\nRfxVץde%o>緲zyJu^K[b7)G)cfOOۑuz#^oٮ<2cZ7cj9c{LQ!vI'p5YYU5qEC ۹?Oh`(k)G2` ~D@J{Q ~Zr lsʃ" (_={V-N,*'%WeHr~Wm5Lk1Q6g<5D ]#EX p*ZZJ%r W-@5=6.5>U?*Tt#˿ԉY׶_Ճ#@?yl%ŰE:6 m 7F\d<-+_|S;rmSJ.=I:Y$ }:F_X3ܑ!jsknK"KE2lr//uڷ| S/f M}G,-3]qah { GFmA#ɩCK#$_~zck!v W,M2}BHxVk4Pdb2E{5'v7՘pzv!VBރ޻!O40@5eD^؇iRRxAw=TjA7Ļ8]_Dי^ZŹEL~#Om@TD.geYEe[㶔HL&ivj؁Kr`EI[N'N%P#JoqKf|sJjW#|csX0TbOaX7.1h|iPD3r:‡)boDKn;\XͽCkrW0-`v.[d@yCP}9R?DJ o'\ߪ/O EsMjQ* '\4jM1`y@'4 xVPDyd`7jQu-V`e{DۖF?C]-k!qzry mu!/~5"Ew" ܫlOa_y*V|6,fO:[Sd'iϢ9ԳmWfvPe6@a)`^mEbۮ5Cz2{p'0Jû,lE8hWSW31Gض:Ҡ]OSl( ӇLVThDP)bSİt[I@I#-_g%v|RL判t3Mpi/N((7Kvf.ufEyk$ZYrfȬf_m|]cd{ SCΠ r҇%mOf9Xgvxۭc+}vF]L_(;/a".F1 j!;ߚB6AȪW3.>Jhis;Y0p1F'\t܀}Yl rfWzBMyrvZ<,fؽ7EU/?3ݗ."z_o_0\2"cq:W8X?* y. i9>4D`P(ap^qX D%&Arn6Cn.kx&C$1~TdDI6w'MC^d,;y#>Ib3(ӬZرp2) O6noT)r7G=/ɷB*~^Ϋ&nip<#q7KI;׌]ͮd abË'z, H`1Bb|u 'Tu2baxj~a )ۥ?no"(0&3%SoA+qb܎ 5^d/(L}s@uTa]Th{x,bwπsqNpq"jҋA@@Rŋ#hvκ!b{^F:x5@(9%B!Kr"mvm gTX牣hc4hĭm F0I?aT3t%qk"0}666i<7? v#`ʐ l-q3hH< F0ML1D %3٤B@;'3ZS~YgzYW%'wyѼNR[)y؝x=Vb(&;g,*G 8ڐʬJaH[tܤ:?j| rsuu8BqkYHPMc۠"#fR[*#nEMt=08gn27^pr93<aa79._Kna7thSpL0(VkSg,ŝ`w҂d$[-cDY@q.q7箼+ͺ9|)+dH)Gyi+`4t q;2ԝ<Bx- <c!և&tu`s2fP5EGEsz2LMg>>:ay[ mKՎ\/{>enյ}EIزcL ߤN{}-B]39ч/ $8&n`ኴy%5sb]ơ Ѫ& Vs@sp,@vg* W2UJbW []huNB8u^9'PΣ2 $Vz()+-AlNe}tu׮[Y ,OLRTR$4 $6S6|*ʁ~."b?iwacj;<]Oե%U ì/nU xރWݹ(I\8MAfc56ԪF.( ZxuikFAFko$D"Ts!q*`[uk?c'hiSM|5>[:?E?'!.5UyDBƛF6ͲOQ $Em2L^F9n-؟c.Fv\>G0@qazImp3 ر ^yH4h۝*7o 9^IkDv#Ϋsۆ.^"W=4w4J |p;nnxI#>C|V䏋GG]Φ\f`Phn=qAs6q|o9. ldTZSU⃘DN)Z*,'`%R4b9WCbI\3"&|dUi)j\B ~L8/c^fc6n֠tTE#X>bYK.ke? v'l *zG-"5q+jUf9}& 'Oz'vOD/h$/hOg`'_H7NdLkO7\:~2)وN=8j3Lma1(Cղi\~ z/XH8 x]\)!WQR\> 1׹8[2t3X,40U#VyI%ɓ<5 K-JsU0^SWDW^g.`жF+~ư$w3o\:HI= K㐩ǽ!Hr ,c/9@*f=>ON0J5uPyT; K3ؖN. QǪB\ڡ*.,xϘ3iJk&%EmF)!.b? Z#s8N ˦f ɰwߦ];|%󗙱#.>,?+ ,ni˨5aTLO blF'wwh5vu>93-2pa $tD9A)X·HQ{V >i+a~in]E[-8<^ d*|Bl3x7bξݯuA&-k ĭ931#U+R"WG ;= hD>-PвL*Uf,vM_IݐcPS-bZn(RZ ;1y eGBfƓcL٘tZ_-ʭwr`G;^xB 4Ǧ pG p:f|NY,\%m#e^\m}3 tEe͔y8?j~KKZR?O8tl8>o|x!- ” ~b2GjA"YeͷcSvVlN\wBuw%KdאHoGۂZ~_=W~ҮmЉOkiH JGĔ:Dl8Dn!C.r/2k@;3ۣTft ~]`^+J, ʐi$͂b<@t>kZN1v+I^9yL$#cFa;-6?Ti ^Xܹ \~D>,?|}ae?^_=kUIz.3);Ƞܤ9s\(wNU׆Z~qB$!L,vT l;)l[ub`C^t9?݃wTq&C~Zm \C]w 9[$:clpP`̔ax!m jK e|t@r2&m%C8<{X@tj@ien~W DSDk8pJݲP>t ALf~&>G]x}戻J۵ACQL;,Hu6: KͯwDb\tY/ZI+`p ܠf.B0uSL wZ9wD/EMIʼnI6$]nVLr6u#?S^/,`!ӄLɄ-řsKB7#cw1]3ݖAx~Aa0@DY T g O2S6>iqJF@gEFɪuyFbS44niV\9FX=L&3|=,%qВZx ~N+to4&gZWt|ȓ{r[Ou͂ ˯%2(]:/ߍ24 O' d?*PDNQ{-.Eze vӷ?J1 F@#ğ_5&PQXo喈)0J?SMV6AW?g?ֺ5w@J[Ð*FRGx3t3&06KK'`~dr!Q?mTPa0X灛^YnuFѺZz :jk8A z 3Ao++-REІYVa]#zLTPr?{(NV0pܘ2%;0O,?zy;ƥ5.P:?:$8 $k]~c7kA_)RE)e9h֦`…E?qVS)-e׆+;pU'Em&V?IÁmgtrgp1!rū)y;%Ƴ$~LIp RƗpGqaRs&m8.mi _Wv[9-;BcrL%XqO>҄*QTIh3QjU>?"mvTz *bD_\ojХx'+"o`鳲5J!d{'L[ +Ms(Ѱg}氁68++q/>0Q~]b-M>z(6koINKDsx"Uy3e`–,,>o^Vd^n& ܙ/>9κ4c8~7plžqNOni%}^{ K`c1n3ujCTt\Nǜ".i<\VtIŠDʰ%ꎕFOyo~V{d Wyxmx`/YF v6 3;-x~'.aEp8A'w Pah4#/&@x`iYJ_(SA^G3  gQړ6Z(q ,C4;d>EJLun\%ke9HʵHWHֿ#(x#l*hgZИ AZǖzЬEn@Aw 8y+&[25T!ߌ2O0-wOh{QmNc#fܢ:)+HÃ]||luc-.[vF`i2 Q _aMېyF]H~𗪅INF/)bx@HoǸZTDwic-(w_?^g;h!`nUlE1|J^/Jй%ѱ[ Ci$+qÏF EG( ~9k:rWQ>\+ -==L/Mysϙ5=͈3$%Ph`% OQʺCwPuAMK=9]Ɇky CCt7a?B.jLNnNa@B%ûW}g~P9._oa]W^P.vSfV;/|v녠(0FV٪ dpaUx%u,3GūY$IMyͰ粲L34oDٜ.LVd/;g-xI:0aLe)JJ8 7uvMK*A.¹Zj*gyƗ+OGL҃ tԯۂsMd%tF^TZ &H"Nݟ1@%a T2Zcb\ +=X샸jp4/S^|SXត1Ca q<R1$*lv9S7NӲ u\{;7tZu٭!,[NNnr9 L8ΉM;Gjz N볛=R$K;Y}e НԵ% " S^}hqC1 _$?\ $;mig.T) wq 4/͇}${KĞu/Vqf7x3rR,-VdDTV5DEN}Sd[w8[X_KD9<䞊īPP}3PT RMב {5!?`hس@GPoF. ^^+s$#ZpI7 +6pV | 8⚗\-":NTJGr3)hz~';p;"(Hbνv3+&Aњ>ӝV|cj4e܁[x.'Mӎz^z(afdV#>^u~v͊9騣-Qz6Oiq,K,I(ӛ `);1DwE' uG9$ƚ($ƞ`Ϩs5nm'FsԂrZ~YNN.*&N.| K]ajQ7ZH"uAWSX/Ofܵ'*R!9ճl;q&aXt,#:W[a2 ㆞@!5%E}M>V)HW o`uVbb G}I`/iw"gH`CN~6:=TXu6Pǚ:2d!_ڱ]94ʏ-蕪C*’;hgIU4bKV`Ug;bz6*Jv5uJizys 5ƩcR<Ө`T:\q2w#v/K{LuRw+xy i[եVɚ{ ȨG<5}j''RW5Ie7z>r euX[Pf-q)*߫J:|Xv-aIK }?hX,Pq"0~ֺ| HΐnƱShf <#KJ%tޡfz]rG1;z9&qvݗUs̀Ѽ_|<9V Jc[l+6~EwdELZCOT3rIX fELa :ԋyj/JvmחHb=yr-5kPLRWPD0Lhb9>zF2 @U'jydXjBG x©+1'!xUD4w,)N%$,b}' p1;"*}4 +udzYǃmoR ,m/{f &^G<$`d}+It. z-{[2 x;9#Av]Fi {u''Z #{[)Z߆87GG A((BPdT~R-~~VCw`7Gsm(U1H@3+>PYR_s_OH/B8R_6V8kq g5酔*]ȾKXB{L$=Ʀ3ڗ?RXg54IAUϱ^@"M񪻰5 ?}R}Lhւ}Y.B5[ wP&׼O2N%|u/+ \53@ak&+ܬbnIMچe1ʏ] ̫_3J OR..]򰯊U&RA=: @c^;a` 1Kz% tK(̈́ G3jviY?[ܩ/6.H?7(Wm^ ~ N=}mo\vh %@*ڦYID[`I^Y[ɕZ?a {?B>sy V/89lt`yGX?MV@FdХa봷w+Cϑxu}Om]GuPsL4 :fEPQvjdu+a`'61q2At%~@7*A/+ljld]C)#>-! Rm_7#,`q8~\N#p@}Vn aHC}l<}rvXmQv#T47^6DUUDKU+Wk$2eDv)M@U=$+N224՞r(`_ifk{ckѷ2|0>ݢAัаĺnF(Bٌ\?l7W1. q!Җ/Ou6$)mQe*E~=qq {c &/Q(6jb725<']F8Au=kyy1lx Y:}IOxwu 0b+TZUUi.ZeWn@%7dַP d#䦣B"RS֮{"/m}]&+nT > Ώr=pʳфW}5P`dTvf|LQ`o  C9(~ջ*zBLPlҒ3֖a 5X(2~CY7s!V"pI $}k֨BIt_s4|UOAA8qo՝h?=;ӱ+|ۼYa=w_1-26̞tRPɐ"Ād9㮞Ҟx!| ɳ1tVs1S/lǯ5W0J [9Zq<P-,щqrS:[*8e$CR7*lhHzAߛ(U9^>z# SvگBO25H(*G,2B=rB^qL`xiAicE5"ʷ'm~2Ch )"x,`V>q y#W7YJpƦE /& jv:0O+, aƗuB_1D;ǪZE˿~sUKc BWr^G~R2QY@%L02ږĠ)^'m-*!Lӱם_A5M8< R1p`8)t6( ,00GO=+J`:F L7t&P.0)wPTT7i%-W$O0ELt%2X`ym۴! %NTH!v֖{$'1I.lbwiF:jmki5u߅Ѫct476 jϽ|<؆˓ Ml]Eq1~_7(AT rD J  4t`Vؼ{5ng!'ifgӭbښwG8uVq}Gak T|t Z o}(Lj2aP((U򻇭C?5ՙ/АD~MHt캀pd9rhU;k;GH5Dyc8~DIs*tÎݞZ:2|:@9HS gBn:!q韦";=M=\i\O !C4?&p)#m_:9*-Wz'xD-Qb (0Kèg8M'cxQ@`!>k,rؐh?~_mкIGξ|^ݔ})QLK)cY-gr]27?)%-W9[6r74>±oʸ?JՎkQ(N*G:3osa1l 2#KL$TK E pUlj6 $Dygdț*sghY^uu!*ƃU!6wv?1gٮ0Ra8Ƈ xgl=חˈe v`8r'yp7nt"F,&^\|֦oNi BcJxC4/BȳKD]x5Qw xGY|11o֦5{E/JPL1Iɜ*b6e< 1;r$ Դ_Drߟ9@Lɱt{G 204;wǮZt^oǡMW7-f<<٫f@pzPu$T 4cG%[}r-NО͊^H>Xmҿ6࡝TV7"/{>VaKk,׹F p0Q $c2e]t#<cO/>&vOܑ~xu`d봹 ShP}"3gV 3XCrߨMI oHT1L6ސKL(Cܲ׈Ƭ V$GtSY@߱i$0_:Lsӛ#Q1o:OeK=яJJҼ-P_d7<;tX|d  jk5$?SO#RYS_i?OgJ8Y)&'3/L.| ?ʑ)mokv!0:B1 LҮZ'S 0"ЫGs)-oUzF&B=9-r?Ǡ5>)-b V/f?CamXʓ Wz@AZ!܂浬1cbz]JZ)RݱzV4OżE`1AO4U{m_$I%qe0WњcR'zr4EӱpW;~`c$A%ZaeiYshtk35f7mF>qmFa Dq! ^9JH6)8 Jat1@:L 3A {M#PÅf;Jn@&0%ͽj,o#)J~hA%A~LZ,׭4 Z=ۏhg]Dގ/O~L ;+ (sFS +[lрfkca-xgJ?&$u J .vmߌid p_Zne.冃J t9w[ȟX=89YlpAZ6~{Im 퓢޸Xz^nZ@625}4y]/it9Wwsg՘&g\-Y.7%Z] 'os:0רn=$']H*L鷑\ =^"|zIw›#HZu\yibY?_ֆcw0aBmzgPA`>B.c(07Ai7oiK)7 iLp !޲&ݣi%Ԇ[vxMHaIUPI&ӊ@5g8!<^xNf*:#2 ϠHHm8dSѿeVIi]A!>Av:ONnFݓZ_PƉ=f}To43B X*u׸H;ꦆB hKBȘ\U+7aKRYBE&eIǸK#NǨzH vBy /1}bV)-yF3j,Ўq&&U|]/+w*3lbJ1o6H[|43s(~Q0xH}]Rʰ+',fd^>v+͋'hR5~CߊCp3zfjA:? hճ)flRHn Ce$O7ɹijӱ/"ॹ9Ec=I*4 r:ü}vo!^j,[G%j205NC5+q$I2 E5j(0Yl9~=4(,~T+~ly&3^Ӊ9 oDFZ gY\xp~'.6~(VH ذU⻵`] v=5xݛS2"i8oc2Yt,g"R4yOf9'nd!DB~k$W~E>}yqOQږK dlj-*Y?_Q't'sϒPfG`5oxm֢]A k +/MV$8ѱ ~v9f!%~tC18QMx~Kqۻnfɬ܋9F8H3Xv}{ͻd؇)<#`"z &Y)A5U"chn+/C!Gykd06ip]( WbDaLIAѼt0eAEZP`>'f$ŸH=ͮopJ"6$yq=*s%tL=Wo[TJ kZo 2L^o Z5ƛg^=k{ysٕאW2h%gC攜nK> ci-_)wԪhu=*@5ӂ#4"ԧ^Y$Z5> x 3g0hSS(m:)8T\{?>eɳvw7PNqfRt4 2*nyftƖH(CtLέ?S(]M8b}C!&f!C lklNAaA$FTm:9yo7;nF/o3Zv|oEAr&pb?@Vӷ<&܎,8{ J&=CqwP`V6r~%e7 4ޖUXU4,X+\#f(&H[O'Ubdwk5p DLkIj`T`MDz$ ??C+NfjyjY- 'pBi,8!`oY wTLC5v],W%Q?r{YlDzCly Ҷ~Yv8z/f =ؠ 䨐M{ ]3 [;7 wVuBô5r~#$/{m@O*]|!.}R :^^= -Yg +ǘ4Rv&zA*KJzd.rMq P]Yٷ{0YP vhJgW/I!/U[\|ea=3a*$Rݙ}s#J3L?;/U;0'9DF%5a0sXѧ>kSMdl7}X'՘T;,WbNڍ) k[3Rߖ=fCx& -kGkn`ٖ8bxS 2/GB"ZBoɮON*gP7 ua!ҵ%FѶMybZ3YZ/$QYp Q;rH4se՜!}śM[CRY Pc8aSoB}1p# b/4Y :e&.r # )uUe!] \**PG$=kf6l m9ytג㸘%nM ]P2`d[7P/Sɒ3t|s)wؗ HՏbѾy"@Yz%#,tԱ^R&Ge't_/(T/ nMa|ؖ7>;nH1}&b眉GʺX7zB:<*d~zmU k!(Ȳ٨ 6/\(U,foz#0~N+ =us 83ع\,Bx=w_4=H{G Tm[26Tp`t >ryuʥ cԍ4(Vpu]&(R`x"w6Ƿ6ξ"JEoF7*BU63ȸHĈ;4hJl>7HHTd]]dhM3 آ.?,J,KL3ʁIe B *Ήm^$oL-]HCO8)׾o23!M.x8~?GL:Th.$Jd?jRl`EA~zogs0O7Z@TLw86;&@djJ&?6=;SzJ Y.3ya93h1$dI՘ߕiR81{3|<}ta]¿j~ CPr̔Ą)VrWL3D0)GbP`hJh}#vOf7N7ØpGz Lvvk1v+GJԲp3mmɂX=UfMYme{R!<%O֣gC3NRQUN҇4buyfq"P($NEޟPh?.oKpj0*2s!a{pLe@c~^DQ5U:PBw9[D0] :n&rb@qZ SD2C%7֥ҷǹv&;C miKPNBH>@ l,?=,F1d3X0m"e$ЧYhg)muc$wqd:ucu0ZRv N̦f=MTͺ Jp,PP7Knh>`r+CjQR`SlCE$ӘOzD%sze!9Z&SK-ɵb1_)9ˆC*k3H%4vAHпGqSC:#lÛ!+o.ixTAq$ri vTh%$.d/R<ٛsd90 ,$9&WDuWP#VzFM)NˎfxŪŔ*fgnă#U+^n\*ລ` 1ti [eFEnh @L WE \}-eq#}6 |X8؆pIʠ{qECv!J]u}nn>ȓҺɈ#yi?s/`e"W~K!L&q^1xDhkͺNEZ鐯 }tAto" 7gبWa%:3^#ĺBiA'`#S+C.v`vӦ!weX*ܼ0Mc-^Js`,PDƨMF&^)o`!x[\-Iq|ho/JC RutyfKvWgK Y`U؈2v*^Ya+1Y=X[dJ+WE ws*T;9‡f>7 ]Å28Ҟao_eT|LZ |洏"ILTH,;Bf(' }E$.G[Z k'gAc2w wNΛ[qC XIa7ovJyԜ]VN՟péqQ5\­|*"J2i%h.ܾ9p]?ar`YD7I_Be?Y]' }Q? N<8{1mJ5ڐ.&Cp8Z+R+Hu*xڢ\9$!'U( f4'hMla H);A3'4ۻi? xҩas^#$|aR/YGJэR4zd-#Vn ~?,zkY̢7D50WZ6O]u~]X!JĬZ 㺾:2BLH|\sjũl+ߥDBp~P#'ouU[+?/B&֭NyFUKOѬzcw#ܠ&ź.͂oo T#VOEx1w0kA/ /*Fe)ձ=W& b fƑxO5gL}DcI"?t^;F["Qn=^4I޴[F\fs3mثnNE{3uhft%o,i cAT"G3ѸqKZ>՞v &ے?LnX2/m ۬86)\1SuZ&t;#cI1}o% >ݻHsΕO3` j>G¸D3]tBM! 4'~$.uo# n@BLl"(K<2,dMAJkgS廜XrWWg^f6#!)fj)tB=9}xb|e"Y(|V hR":$JR{ruSX3`ъ*$2 xaXaݧy\̨Bve/ϨcwV C Z?sKC9IXFk6xEx16 } qߏjҀ4?Y;6Ɍ7Y%YLh;$T%mnGZgZ|oбƩG#%Tt2m@$Vy<ԚksY@⫷[f $?FLƓB671j uA(3 ܿ(HKMR3E,w:@mI^ҁϿd#D+ ,fy9>T{ʘv^G̃[ Mpmh}ퟬU*y1%,~|5Lwsat|52 4 gd3'`@m7Odp&^@!Q%,xKrۗuB8^c#~$lPQtjx\,{9zLzk$5jPR8@kI M+ z_0{B*Nm.lSXQߑCcXgF()'èנH]QWw{G{]],a .66A DU6ŤV!-1r nSkk&rN(~8ԵZbI>Jm~48|۷ `+}2t%)[ ;( Ok G( =MFgKX-hQ*5Kj؎e*4l8DZ`e-09ﵬ5AAHK&$\ԀɥK /:ǛY:ZS?c_o\Le 4bQH<`t/B\Sļ,t:JFAqvX!&`9?Lr#U\4|j, 3_,X>|ڇ7GFɇi S, ># yF3Wz9{x3y $F$^z~NWVe5X1YL.Ǧ`yE"Ϟ_' ^@ !b#_}Rsuɺ5qNۈDjӡS KHL%.y$|8<8$+SԼ쪏 Z1&u6&ޘRݰ5ҭs\#9^ } !g*5!0t}b2G!3YQ_]2g4 㨭z75=1FãJA(񰓄q SaEU~ 1!192!Q$up< źr7 8"~Gg`pyvAӃsv @K#W[9QFL[L]@ik0bׅr}CsBth'lM@ Y\8cڭ9o] ?ےK T?Mk\݈):[C%:V~ąT*1F ,UJ1ਤ R.uT!l\z~b]t%g&p!P]#},3 W ,oE;|[_\NbסKuSTd&Pn` .جЃ h Xf Up=+s!ÒWC XY0>nXéZ#L8!(ļ͇äW,?GJۈz-R:cۢQmJʄhp0p^_Y=|ViǩfP#$jx(Ъc!=U=ICH q%b&<(WI.Zs$AIֵ߆4 ܭym:MHG|3zoJ ;ta)6w7VDɰ Vzow >a& nF%!ASXɊf%K+B@ccK1˃[HagVFz?펜xz1/iXG;t(%4Z6K?UkL̷|ݱ_yQ0mτ_iGcF H6{m"ϑ%yh!M3\w@^&NhO갚 "oz?iRkEtV(SQX02cx}BԏR%PO;5a{MoyJ [wu="Fl"pw@kr8.KB3^R8_~!g +g.mA)V|MnUUFA±4{/=^2 W2_U5 _\79YZ,g5Mp(B{v֢N_P!\͉77z_f<9pM,B\9֎]޼9gMxS\S*kη]ХIe[b ;-4G龮V5ǦЪ1 $BT.vOfZ8g&U(ז^X,cxHkePŰ|Wd$ 3[K/QWI\dDH_)~}}7^je2ɞ,<ґ\$;Y"HC,*^iuV'm4%_ e/ç(?9(f+-WVP\7+d?*s54 lq|ulQ ϯH(-TGVAz,x˅dٴEtd*txd@kJIBYִ%_z1LI]m<}zKBhtZ#+UClP\/,cvqr&瑪Q5lt[} ~}ZJv]FFevx#z:RgV&'抄hW;$t3T 핢j 6iJybytv}9̀qu$Ibn uNEX]$hZe v;}pԬC,RfS?Y E~C CA]8NP%48$Ag/%gv`Hwj&)1yv'^Z[;’@#\`ݰl`6}Z;*!9z!E g,7)t"`ܿ׋^nמaf1$NxӲ` dsP]HC thVuy(tꮟj My,=k>وl9Š'#pN1ZM6wC1g'xB1\byY&`(d}7cx̺qQuuH 9&;^"ƉmM-&- ~JTNyhɘ\CSY 2n& srUCť&0b- rKA|HW`./\1Mر<&80ϾD=;tœ+?wm2{Ck>:D8Wm}PM;"/ FrT8ľłScOjp=7;Ӱ93xU/^a*:tfH| &[y7e :ѐuyqaT~>5[͖Ъʗo[BJy^uEݙ4R8ߓ=_^Zg30vd2!Y`rwT kbYD{8O&E =<宺M]#emXRi9Q.TthmIB?KscyEpvet!-4fWBoL.|^#0LzIk-xW• ժcxQCWR#d*)jȖ3)LcczӽIg ftaģ 5j7.aYqBuv[E#* ,r(@/YR#KC8E~' g$D'›$3xVC080O'翵b#..bm%Gh"m UJ߾,[xTD8_5=` կnh3$J(FXpɥ]HX̞oUFp/GQr*}?cT5O3H.g:~WdhCɚUF*3'c!Wa/d@"VHUk> ௦B@^5^ Vbiw:ӧ5Q9B,[9 M52|[- y@j-z[ Øq'85V\m%%OFTy0?mcwfP6 #+0ղ\%B,V6z Aaوho(A"ꔉ0y٣lǿL ]xGUGc;iiŻc\"nySrDYlOߎ8v^H_! 怶&HQ3WX;u̬eH8!bc GLszZfҺ'6&54{/߇|*侵u#l@/EZiN걩Ҟ澟ʹ:,N2GdjRCµJPVgU]3˵D` 3%@ъgU@۲%=R_rǟ=tGc.E =x\QV%CTfɍ\tVM M/,-wނzgcLSčm{ʾ}ĻT"$FÊAzeYLIiB[V+㘍w,]ɿH$IIK0;o5꺇:h)}UX蔭L4z>=\N?hz,lRfۦ!5&dy~qAƨ; bۥe*l%::4~|}}$>>RFʈ@R DS LOS8H?ЎpH;3'YMbE ]s0Xq7LZjTDd_E*(Ϳ\U0rmoNvMP\W~EjfwZӽ*iފwa3\e\ѩVla~~SWK063>[Ak@qVGOPݽe&hF?Jz(}] pEj~4Ob@"!jNx\`>1 /&dXEJ-Heu.T\/5ubݸa{r>7BZ06]qm04)RO)˯>7Rl /Jb'/ք2Ka;?RT4LKAZ'酵Vlc6)/ ',S6i[ni a6nf9(2=:e8 wcRW48U.bFBq$9=Z-o1YNȰ2՚9n 3沕ܔ*wlDyj 2y/0 fq21y}J9ԉ,Q䯁2l5$Y߽mK|շ\¶[>b7t%E _?d<*^_efwP'*B C"Kȍj[W=go1rs g,z'(,'oP"+-r:D6!љ(F~{Ϥ DAK-xY"D^ ow\h] }uYg#L;+!21O,VA_#|-5.3Id`q)[bҒ3liLe!RbP'f9+ѪzeR7Q %ﴲݻ~nj͐%=L0=wxn+2yu ,EJ/:0 W@~ MY*`ڹ:C翦r4tKEYelJf=8>eic }Nҟ시4:Hm&3a",=3&դB+#o>^db?375.E,>kK?nԧ )`):^+1%9JbELvQ o n]trZfζB<|z?.Z0֦!vli%ڔ^˥<مv] @J@z5~6}5Rr>FOIx(dD!_#ɊX=Aі[*Dh§;ߐ.ӑkO{Kt|mA,a_TNJty TvD#J /(p>>DL"oX#)~/hD W+wgJyqcLUΓ~=. F^P mi:ZaNs/ Y$7`/~I=vu̓` K'n*'Wn2y.8& >]G_ yȽȣ'ׯ~wms\`I` S{7dC"IswQb'~#[Dkp6=3Ubԗ/o^:jZ7B- 6=eM{G+tZUug>Ug0GiF(,MNO\ӏgPn\{{uqkn6Ho]' :H"{| !,`^e 'կ/~OV֒g $w,| Mj]HX:Ew+ˢ6^9~غg-+` W<]NJ0d}P OoBg)T/ a+M9VL}S0l^u6(Gk HlXkq$ïv`9^ TՆg+ -&v,*jCT>'r^I$m:Z[r@&h:yps *Nv7?$[7ɺP\._ʮG>yBj \ܒO42d8Oh͹^kO Z͠t]Cn~-Aֆj,rrKg0m| 0o} Ζ5g@JKnϡn(gB[)䘞Ky>Tɝ ҨF!}+FEթyՇ=dG' j?oܬz*}69$]t=A̒@mas4:T=pߩ/.4ćmsx+6ۂ`ޔeNuzfK/8J޿ϔCpt?(4l{4%,0АeONeOs:Q>Bh$dR(!= 0Y2d?i|\shW k;wx Y۹iQV-nј6eP)X xS" 2 Q(gej\,?W$Ml'D唵*Ra%.:IZg\CSsn?FYAב*ܲ_*>qj*X7jC!5apXĦ)LHz'͚>{E-&ѾF'jt&0n/* v*4)z[7op@5cFX'_j؟ڗ aF@nzKD%'P'f;M>fi`7qhv~k:pwaʵI%MN#g=U|pV!6rѲmvͨqNj YrKgJ fx%=5_o3Ud-E6o/!:,rY3~`y' n,(yց(i'p`(?*ъ01i(FIj}Ag6FY?$h_Y l_Wi)kkE)F,zN%nyYgG/c3{e}|d˱ѶS?s4_^K(g>>CxF뢡p+ퟻ͜5`Ok1e E5enQBsxT?s ,BN|8ŖcE k7 be_ǣ; @3g ܧ>e$"C +XS eFv*q #!+ jj< b:Ư 01L~~S)Ñ`z93P8VVivA Ƞ|C0_ٺv6UK\*.=cqqlXצJz |g?Ekoq%0\\1+3.Uokdcn6J@<ZQ4uuo?32sW/ ]ê:&h/\wLQr|]zE@(dҝ;.kcvcC#ig)RR+-XV-CF=kη0kDH$ a/"E=hRUW&ХexI 6:E X.j=L!Hevw,ɥc|* ~8j}b(l\K8/DƴL xHyg@1}kqnlpۇ"^wsPQVnm/ C -m:S |{ t11/5FͼnMmELͪvF[z9fYC@6F%Â>oF؉*a㐭aa1|iK> F)MW!-z-&:HqpƇm(X:АPE`\J8O>-GJꃫy}U}1Akw\7JnVy9fތFv$DK.~Rl_TΎ뭻KDƞ.+3Kxa^zu;7%oɌݣ;IPbs uPۀM3D}*d1aZqAq@[F+-~`jZIv+CbTg@EVVApVts` 3a"젹N1O!f8V3V|¦uL"-UPlwxKKٓ4: ۺzO * ,1V>l~d^:#H\9|h Gr`>?O2dJ R3nۀEu0,~f} бr%ڐ:yqRiWlI9[KTFKmVkC[yGzIkJJytf篹_ynNyyz7IA)w\T2{:{uЌRͤ^p 2zs@n L/ 78X)Զ:z/: aE7%GgS E i AWw6C qE7n N/5}C>0gX#:nJ$ѾvF>pSWB _nJ愢x-vVB5^)6,hE-W4x\Q Z3hLwd 9ա)PaGa U$D G>&=jñ=-aURfR=t: >#U0Qzb D̹{m%,}6mt+]ӪE6E ϔutlU4{*2 8 ϛVqV9ӽr =䑔U=5a(̹Q3Rf')ďE Y՜\=tu/HoSCm N o,ŏɀ&ohMӦU*c { mn0͋pbJ hZ Vlz!N@f~|JB{[KCnY佝l;FLY!#yxU6䁶N`*H;x${(Ѕz{m=%]_;ԓr27JWSsu !ru-\K6- kqvHzɸ~$c݈yWO85E9T\a6S8zJ㺒qЪlR"daCeYn/Iv$vo`ޜ`(S%2 >7|SJMw5RXj!C("o n, ё}6eO8|R|^;aS$B@f?W /5HUcCYf!XV&[2H#QP'F䄩s#v!JB?S}Aĺ8yɉ;|xp#27ߊ]T$.VjX+В47(+u;}"F5ޑÑo,8}rGAgwHgjOUeJkE+&Z}s1.E0HyHX=Tt*>NTMi \I2!l!l#GF AI@aPC"^[IUAiUR"1$I}AL߅m Q*PiJd[8o83Ƅh(ˇvNa)Q<(Drf>qygA\Ԓ㘋C'K:'AbUđZbU-y"v@=1rgT wV48|5Af 4F_d_FI$/uʊxfXV!ql3:?L>1Y8qSJĆO1FUǑ%Jܿ(_(U yiO}+ +(x؞@qR^(AÙ f dz>w\2r+--;G1p[jnrKY @btF Te v +4i{IZW,0+ĚǰXOQ}KQ!^q^S2ZMNKWZZ<<*#hT8N"dgЄF/&bzxWaŞܛbev֘ǼAWgқ[@GILQVjS ;ymᶎCgtyi#k&iU7{( Yk4ws5o]6 CWg^W34&!fv0wಫ#Mz7g*bl`wV!i ;gFC}R(C;vVHK(ᆯ/ gjZME7$9'&RC*F{\VwZ2vE~ڔcqFdCEGtVaz+Ɖ?=Ѱ!@$ M|!T SR+.#M+;z*,I[k` D+A\_ GT ,Fi 6=(~ mx>{1\N/4(=]w!}į5As1lyb. Ko&=L?>ęËլP~~HZF5YNn恶\ݾquT˗`WY<{w8Yx']ZTҕ1E5+}d EA_6N.Ni|@IKbI?qe.2~$gG ͠mZ_2H"i{{Pv1M's!=ZaeӞ`X`(5CmTĬfX]¹j; 9[Mn3$榔=g Ӛ$rKRdH=6b rDO,H25BU{&{0Ҳ88eJ=auj.B- HӞp?ڛ Аs~7PYCJ,12ddϮ` 8 RBnVK I4eMpx<̀s+ԊYkB&gsp–:'2v:)htvmy #iYtEtdh)$Ĉe"@f,v_uY8oaCİ^Td>;)۱հ;4GIFߒw%ua@<=bڗ3_BDUj^Ezz䆕xY[i eֹ 6 (as3enxS$Ẹ̌ʼn`t%b'6r]Ij(8`fokLF4u{{:97P2b]C~~{&iTZ!R-N1VP۪ .³!gaV%_mw+Ud+7]<)8pv[d0~\?nL #] zL궡\_)B`e vzbuMNz&_1|9QJΒԆrW_y :mc*]rG XREVtgIub`CM? Q WB1‹b,oЗDZZ^E@Fz#pfLOr\j Ф{ٗIwڠ#juekiC H<B UV[5{>? OJuEzQM| 2f[E%JqdU\L;uEitt6#(w-/-wX(e'U$4J넯 .D8.sC`z㋛7 "~+yjbA@!$bZfmj aGT_nWGPQR<,Xgh8@%m*N!n9j6V<^dtFB|WBp2E}雈O r4;v.& :}g?G5-fV :"lF^]/MpQN.D[~k(ٍL_)lKc,f(З}w#H=,](߈Hxq'y#R!;x t忆$W @0Mk%W3Lc`Y ^XH r5=@Ε>aƲV&HR[A$DѸ[P,<߫|=h,RNz j<⌶{!R/R)0mSIku2-X,hc8p](a{5͆BDpH&PGmr:6DtG^[ swU` 9} &zXM=;I b]|θ@;i$oӭ:w]}?c 33U0{=/(Փ; * `ģ}6_ݣ6u5 '!]DsVٶRrr/{V1 w#3jGz8~xw }tLJWg gEt>݈}){tQ~±pF(}% K>~'ã8_j3x;سt)A&58S?yv}&`5Q\baO+#nF&Y$(a %?MGP`.P_kZw_kٺz"y MS9SUVk& ,QBT! Z*f 1g&T-[6xKj4VNȀy /?ܨ 56L^=4L}ŷɨAvr?a14C;-uE' n{}M_N/-LkJݫhl'DmR*fm!`k/7|2 U\[+Q*Jy|1'$Eq񤰊t:nMg7Rr/A9RC\1&q=CgvdhcK8WrjdN fviAS N}W. O 9fЭv.@hrmﻀ۲(teSJF|>tv =@p\f1Eˆeh( ǿOv@1\m@);i:HAQ8Iɸ1Qc=#yn, P(`]7}7d&ru뷖+vDu-9Z L:l(9[28M؝w׃U໔ JO5nހ'9h ԵVDh*9PXKp q~ V1 hTOv/nHVB*4N5*0#`B 9pH`-+az %:7a ?@,uDDHˀeCW] aDG6}-Es K1pŊU_֏3{5gt# }*=!RS:|I+x{k *hƶT&Lcl 1_l<@ՓH.J{kH5(٤Pé>]{rfnx }w.Ejn6(M<}Ԉb"0zEesChYG*;g;&\sZ|ٍI8t KlpcX p]ĝIV?1CHRUVk`N5Rx[]Ç"o4y ,1jS5~1AWPjuW9V\$ӣQ:߾Qt#,NRV);xv[|Kn .vZ1h^5aX1j>иK[2 Af/xv '1b-L/t[1?v.ܨӤ;t|00w0r#24=GH;:D>M<9ؠk{JtgUvφI/z*soJӫn 7ZuW#`]0!$*;p}CR1Dqb,7ٕqj7zLG95bhlFo.bC([KfꝒTZG֟iPEL~c ⩾̛S+8t^]Tw?Ig}/׆3bZ'Ke=G"dЊɺ^UF׶MQ}}̟/\$GxzO4t6φکr/mj'%} -~+un[nLGԔH2eirη+|ZNkÏ>#,TN'>K X8eIH #I{V_SZ H@nwIy,r~ +@]دE%A 樆@C>r̷@t5L[d{WG>s㐔GP Ҭғt.(4)3jO$v%(H*$U̸}C6u<WsX w=Swy#i@SIhkm^FsLݨ0~wA?!}9-[5l K(n1ñ/}Il=5- ЖRs5Ej ڏ)D&e t b1%RHXR&Avsčuj_,3 \ T"芬=|; ~y**pCE֐=Rt+b_Fїb|My GԑJx}`4А[›ʞ-RA%D6Ҹ}T1( ,5+zSf:AՂPuF4؂bGK$H$i]wva*/$DB d`b9)'ԕ|z|Rq .6Njסf8M 5Czox֞bxڒQ}oersɅCٚQIrɩJQ뉂mHMDžHk՞r]k\cM\OR4Xs.+ֲ]to9Y(X&Af:3.l7Σ7``)(1&RdfEiu}AYj ]V/FL~-TC*>͑{r.;>W6ⅴG8/֖g/u[^| r`\kT4˼Mf7xSWV?H&HHjq~|r07 (]nA oOW_nK@% "+|~C, D?ᘸYg^W=pB=l sEmK3l6>6d^a]xMénӶ |2eѵ#)l,݌K0pYG G+V{G·!#`Hbw`$ m2-=p3VTe5 lh8kMu"`nq Jr'$ASdzZXsբHEq S:$s!BtF$ys58tS,8~}xڏ:BZ" *)ޖ' eM'~?K\?oHIF@_rAρM0@.*JBMT}^O Ւ%rvaI<<+Dq:Ì9B~rt.hF}:̮ttCO nXMO2G0u,bV(;ӕpE:;Ays&p PO5]F$ "^p1p}S;K+b@k}XuĂ;doM%.lݼ~=Oxdb9@dy~YɌ;-ƛz/;B$jN.:q3Ϲe"!fSU8a68|-{fX۷ȜM%bx9 >є$n!A$)ò0#볯~_%!'Oz՘Yd8pf5{&z09QW+IӔC'%}EI"xXjR/MIM/2A̟DH+J }{јM_ y\X2_H#5C7&p7"I0:qzcnIb>$t_ -PXtKØ`!Fڧ~n5 >[B6(~s vтHpe]ap2LQ7O?<먵DsɑuEBMHEsjأ2$vshȱ9py.h[h9L67|X9+d$#D _o̦.de7fgb/u)hOrTM Q4JM\5y5*yI_fuxw|oyXyd+@e/[C&%?\idIߠ<(l ô/>[_2͇ v/3$m/솢R~R``k$"a$|ΣPv/]!/_0,D2ɖuy^U&E5W,/ j*tḱ.5z.O<-z\ %*5@x;ia˴w eED6+C. pҘeC̵N,RZo@Ү0ݑJ8S:?F|k/ ĸFyo,d< wS-)4ԲUj@'hىC0@>ĬO&Sx?5]D;a !n옠qY!~06P:rΡr511C^! j-[]9@4M-[Ǿ޷' 3+0)P;z_9'[K}2(/Z22p?#LFK Ss6T Q6PY_:b)[L'b(`Q9a/Mjx@!+qCg"WޔPR`ν' ~xɩrjhٜ0n>?aiom/Eqj_`Z,ˢ/~ۇg`ՂGĶj~4L8 @P8Q n 2Np;8bw Nň)x!}a0(E DZ(k )b(X@`‰^p}Sn4~EToC+?o*'Orc#R uoh,>bL'^x6h2; ҙmJO+^PYlME49ꘊ)HHyVvy#!6Aeoh[hsEWğS&eUV%tdD ?=#ӥۈCiJoc1ra*x|%Fg#}EY\Į)wM y;{Pt׺A?o1́j.9-7QU->gM{Z%T2i亿pxEr&bSw,Ĺ, sZQ***WͶϢ:dzdڗ'3w[F# 퓎R-8~EgV‹ VXĮkۉIwcYFy Sr,;w]\k9fV8rI ?w;YXCU *`6" q'lvW-r]E0rڍ"d/BT09bΝ%:Ȩq^$͵O18$*YG)3P۶;CpW\\ĠLg⑌e Z(vrjnxt1ٸi ٳ4 'F*uaMq`;%LzLBIE6 ]6nK569LĵRqwi]KJ~6 Ѧ\]+mRA[hk@[l?}) ?Ёn, & iٯit?믦`s UV>0 YZspatstat/data/shapley.rda0000644000176000001440000011147012333041776015225 0ustar ripleyusers7zXZi"6!X2])TW"nRʟ6(;S:SrABGmꖠ~tǻj~Xp@&7*V/Rq%VZQ! bBa(o+BB8cC 9g&HuNkQ/՛<bY$˵+))ȔV_@)%L}< ܶd1|yBvH5>!:_{qE}ף>Qϋ&߾фI %k_uSvr@uLnj~=ieא^u%E;[H(SSb:Mv" NcT{w^(h"ڲc({]tiW1I3z&SMFP ^սz0|z2zN~~^E@XZ)3ac0871ao@P/g0 o5~ ]yb8vW1݇z3d# uc$4mUi6q[Ωv7{Qo!ץU&dI> i'CdayfORlueX {>|0?;~$ n0gA6ˈ=VS9'T=q^U1ƥ)u:Kg 0$*W6L-Td]6gÜ7ZRZ׮7|S1=ĭ N9RW6@bjڽ+$ۖv77S۝6R.ۏsҗeĆS_жA߃Х$7QQ']{LKwAZ>zle33F؉ CYB}~PZ_󞩎˖QB6W#BNYŎ$W[شIC~GN8* б⫻0,x"B6%ouEܦuIq*"q .W%W/´nN4I;#6@:^qqFKjlyB av\(_r9;vpZC^e 3 dнHqsi^4s #o]ە٦ YBGSn G=OhZgS[_=c#H4=)NV}YH,. u0.T$^Qx{V+wjŅ|9KXK:ypYƳY-kDw%oNLY__efń`^6s8!;㴃ﲼmt%D(z'.Kn#2˽(map?GaP0s#'!:Fyq\R&E7\GR~0GXuzQ+=.{;bdE뢿Dža;>'z E$N4fflL=.#{G|JG8]WGq/XQgmz84#t*ϯ:\p*uSny*tGJ6I$Ê =ϩ-=ÕΦRQ `B PSEHlX_>R2fVV|y2  5U+}O>+Oq#45R^s鉄B72;Yۨ* ы:F7_"L"IHq(bn-M˵d S#©lh~*.M>BUMl(xP(z+9Z2?(b@:c,+m_Jw=[}VoJ\ڀz;᲏Ly'7J1ը@nܤр0(F +C`j`/`"(BV܀G:?:9V~-5z1-fphPd#o;oCsmiűX/߅F pk8]㻷ŇѼ$j ?$mnjޓrYki58U¿g+id&nq<qIm#5C l=!]g$.Kj10zz0'PΞ~%[ mohHsaW`׆GKx<ؾ%z ufmzn79F>ot/˕` pS!5~Ųa;,ޥ26+q_Nb4PLaY)4$FtJl V!4GzY4ӈآxr-d#%RdS"*4ڊa JUԽаo5BGqxʵCP3XŪeA`>WMF`kףlQsj4gl<ҀN@優Մr2lo,5j0`>kΰ|E ͗'~G:9S>p9&*:ys ZQY:HW[[yG'BWsW$ х6+MuLgFz"Ydft#%kF¢>%+${|UA5n簐5ۓF yo cijGP X, A"k%uW;%HmUVRZL XSr/$O%)ql&iWE&qNzi`olk4AT6ڷK~/tòCb}YIK 3j{ 0heBFzfPM \8'eTJ5rϊ6;2mk| <%%{eD#%gKYW+׍}2 ͣwKgb :<6f,&dωiVajΣ!15P_]~x0CKbn JIyLuC?UH}%H簧Rh`l4 3=.i?D4ZqWt*NV/ϧ GT§^)OD8jWrR_yD0OFle9 {hqxjfB(!SthT|햀zoeD+C(L0 ,wһJ!FZ c ru <gmY3h;p}HAksi7Г~h{LcmC"RfmM^̘HS}ܴ!*_;do&Xn;'vQe7gRbʖ.[򅏩O!k^Xº6p;0 )+E# d^ߕ.谦D-"/"Y*9F<.;秱]G:hbHjYPVjZJc*+ԝ k$2\1 m٭}L;cZ>_1y.RkK+*pBo+[9dCY<\׆[K9թ|(`AKa? [@cgq:;j<\b8>q5WӺ_X8`ވҕƔ[M`%fRvhc3v0emg "OᲨ2'> ^<)LrZ!CQhkS>{}?E/j򫧲ynB  hst ?&kWlt.iD%vP) w9 d! )47s\0:6j1 PPn~-* .OOיda!CCz[#Cc.$q̳qv˼yG| }̅v^c`ghb9VOWߝlv`)f; F!;&Y\eL;4 APzNXmpF*ϿҚd;M\Red4yp4X]溻 +s4h5J맄ᒭW%zn;2$!XT?Bv5skZN k>䳾>=%5+-ܘsiu|A<#`\ulIeaׅhwwbQxy7I7."6Re3q9Ǹ%HԒoG'Yȅc:( ]f71Ņ=B|$znj $!=%LāN%@!eZAEвi._+*WpU+b[>Zf h6{y2Y4ʆP'> mr:3oAJM"x=ߞr[߆çu\L8O;1l7tlX32.*Q'=)W URt YA㟻Aֿgػ:\0uua˥*yk'}eE.ڧ;`Mbl PO#:F S]hPd_ߊ_İh.tѶƒ+ `97Bv}].ki<֚?ܧ"g5yRr6D[;t%wDA4l~2M <A-bϼAP?[_'A YhjǣyArJ_lra=tѤ$fFo!#nxV8 [kyW F`\i@െPRɊTPFDJ} ~>!." 3T)1 &Bc5.H4Hhq w*æLW%5UXWH} ?&w(&ͣDl| >ġ$)SYw} l&U >!8;_07v-bѩ%M(r-ݢ!'%Ærϖe<ՠ\ߐ҂""4J}CH= ۈњ' .۰tlXFrPu88O&r}rm3!KcX.^^Y[Ăt-?W/|"8錛8ܽA2Ϋ?.捫3'{IvJ'r^UW,JW\Wp)v86p8]WO[.+Ǧrg`y5ߚȽ!%$OqGwxx=&;[a"#ȧKS2-@R$:~چYRN ^92AYb[V J !8r zXjU#UKaӊRyWV]BC/?E9ryy4%^N?F}Ĭ$S3'V ry\7zDڀs, /:)djIo6^_*]R֢PAܵi{L!ZR3ҷ^4Uj5zd߈L4!KgR%(/P!灄t(w ʛ14a!5۔:YI`Uh|I3l&v`npxU {/V&/ sF?4"]L*ԯ( eSd鮎GZ۞~L%dxM!10slyh[pnJp춚L` |`Kƞw/k+&ޫRūM@.:%j}8]U![`?2w-OnmHY GuO,\󅪺W\EB$|3խ79AFBG0הVu{jԸ CȻ˗s\ͻn (’DX&[4}~`h"Ogf0&S ]&yn;rPF>1߬_A'lmWM*ҽ=DkRNQŽf[3'O[lPǟӄ9yoDuPBB#A~B{kݑT3ǹՀU*K(BSg2mh%';K7`Ri* *7!Qk (aw"Q+jll8pWRHG$oʧ`:őeiqXq Ec MGYLk CnI95lOZY(M2I/h^_i3?D=lgǥʩ:! :axϫK1] L 2WlB߻t3TɌ(C`RcV7!S ' ,Dx~ļ=1ld PxAe=r/-eFճIE(a2} >-%G&62iŶɤ읲۪&V#$۽mّkYϞ.3i@czhka?5I1jOuuȺQ? nqb 9R> {B ;x&{JT#7!zz]Sl%6DAxWaI񟯲]5Q"_:kni7nI߆ $ѿ #}8'ns$lRL є)AS~-3vLJ+e!?rU ,V\Om1a|.:NOU5x5-{?NMXjXkkA1=o2f9;MDS3A*, 87Wa H q Ky y~M 2N@X_|ʝBL9A Bc)o'F~`4K3=F4C>jV%aDhIK3=~=շ&;H][;ˢl=1vA{n%(yɈf0t;$C"d;.C1aĘvϼ+.˱DSRsy#@Mk-D= 4Nr҇|e;p+t@:7 =EjV` ^mNjX 5$BEP_'klLF\ Wc?x'n. ja˃uFm RzlOVajYM>. aD"Ec Bo Y]}+b wvz( Vf|aJ 2c? Q2s,k@ m=L2M)PN`n=ɡŐ=i - \B|8a9f08UB=pG._-l4>EgSL֖rl^uvP#:/#~N4D vFaw9s\aȗA?MA3!aJ]a6,K)QHJ3u6W-4 +l=ӶICD{򡻰`4PɨBxe'1+D )uWX9#-EOTBǗC΍ :cUɠ8lksl? ꕧsf]KAkV9pa$(MmNDHg='m<78&Y7Or@Y<'f COx4:D'r˓ fez[,/bKPĈ@cdܥas\cWYE2c/f43Vk)FQP* 4upw~4},al9>E D&__ z1/wcSY}Y 7Z %1=) 0H.X5/aY8 HAUC$Y# m^2@8)JX!R*H(dTԱ~Z:ns@Cm߹LT+X2cmAtܿ1#:(ƮOt|=| EPjoYtAWi?@c%G3Jy),"Kf{rz!9я=ȴEFܕϑZ&J#cDihhCUx,zX#^xG~Q;{Ҧ*30;H\jiI ~1VLY%[݋)Ľ݀@=`Ajj1 \9oГ|$.ʼn"  esB&7r?I:BzdyZk)=[" {!E8w7@ Kf1Ok\ol,{1zho.IQ߯Pms~-Ĉr0EBږٞ׸$O-jawv>)lJ/{uk9op$ zF;n G]xkkml0gB=Яk$rOVe;4pU&\kb,="#5לzqB$q˓~RQ,z`ryr/?5I@峛vP3/TBjV܁Er] T@PīkQ ;u9Ȃ.#QE5FZav dat&Ftݠ=>jh2;_KM@;fB Dž'ًZц 1prc'@V.D,J#ZEr}+Y.vxGlm\RHh1P]u| 0 c q8fe bbLRiQ#/lu^vx\[ΣVY]ۛ/lD&opo8gfIf z=&Sz ۲J@ׇ3sW*[A(Yoâ fP/ЮZT.]r]Gj ֫>e4 @FⷴV.Fj~ć(J#i۲O;[T)T Gg[Y$k-}[<(/<&pǐ1iO|d$Na¸&2O 2ݞ)K|+CM m2GoFqCJ]]|7ʨ?VN %Ÿʴ2v!:i+~{_GiorԚN.S8R"⦟%P'Ud'nQTe +d.ʞ,cYvC@5ja0y()P'#u:cC ~901n нS4_WF.m4mM\KV a/fLJ=~ <+$RvOYE5^=8WJ*I4~%1 ve/ (CdS\.i11JndnDy X./a;=a?ldfڎ1妀E=>T%Qe۷qȯq P=ȒM>F>':^ap5uׇo Qgyx=rAf"[=NQ֞YJ*:j_;WlF9v>$x`vUP,ca %g?~!uHC++nGD9tR! y!nWT%j!B"Y?"FPwA{Ld% `iwԈH7SIBOEUI梩#A70v|M.3cMy'd 6!?C`/![X[blxC9ԛwTPq{."Z-=mʿ=H<ΠNl %;-QԜM` e8Wr s1"ICWq֐:hsBE%+*|W/ d!g+6W3]73(,l{hY@k_0EE&sB Jb2p<%2A9 ۍUn ~sJĢW>;^7w !e-ogd1"w z@r뵍S&Jc %NԦFd?räϖ+ו{qdWciqG@!zޯD e9lȈND,&`M~n u ta&Xq4IZhh890`]98eX ج +H%O 3S>Kp^!Uuc#vJ x%S!7$,ٔ܇ްYmzۅJNM)s0# Q,I]:{j.[1%")4BvߋL'_,띴$_?&/gy^YMB۪*LU@(݀+GXOf%uں/@!-lK iаދqp`r%VsSl5DK҅ou9 :z1{aElܧ_jUxjI8{mʑ*IS%i-{_h^\ 7zvDn5_&>ҍ׍%#aO^nhp(ʭYRܨgIs6Ф^3jP0 I寄@ՠoChr#(8g‡ SYIeq<050(tQ?eq;! <Ia4GW밵ײapTr(j_/8=wcL_ۋj=>=屶y?8d[4~yp}MK%t=f!yUS53A$! Q7USXueYWޜij3GHDM ;._ֲ}1J_^" _e|nR~G^oʫKvi泩&Cp##0=co#0sy  YUN -5ǚ3JQYk,M 6=eí1\^! Qy7c*qDwE/z'D3 A+3qlLt[YNe,-߷tgf <uE4 Z6icLh[;ň$/ǾP̪d/2əgUGC1GiǖBX z Rrxly9*g(t u *f?5,;vl%(iB|$DDx9qjٚh6+~eF7 9mJ4mrBBHH,>qnS'/4峈ƀ%uV8p[RAWwj0%PKO"f/=TS۩c -I ]!R.sIyԶ rZ%mIsk_H- jJs͕,]x 1i00`k*,@pEs }P9(Sx ;\lwAT'k%Ơ {s 5yɄfҠ¨ӿ DOGmXE0]-܁#6OY+25o6N,jwPlvJ Ŀ(:eXeNR&70j :ˉr]WT?jv'9JKY$X.oJֽ ,=}Ǣ(m<#{k~|dpϸ ߳>8Ut<y)j`a|Թ]$P9NC4^wz6aQS?k(=&X#1.#ֆdIzhQ@Hσ4vyc)QOӟ ꗱN)B&>Ѷkmvȕ5 ܨۿ] %7%9ft iZ l ?rSCˆOK)75xY|WI _Ao"iX;{\f&II3@Vxhy6p%^ t'Y(?~H&P[K8&Lo=E}9nt*9m ?5?rKi8V۟&@O_ -mG?ZTYWP2,wroҠ|YP-l r@ QAGH#BW^Avɤ^Q {(h: oo֞SXâjZkc-s*ZkW9,*fYiPǁ8*Pxy$b7.Z NeS :2IJ5p |0佩1x I&׾inz>D\v<;ATzøT)wN^ {)A9jCPt)Е .u2J_U5 *<ܮNKu<_=^͚=;*mS:#QREd,@zxm*W? "hbt4..]UxA_icgǟސA;v8ҩOJ>d^t7F|=$g{K ;d_wwp潚&pD|\d_6;`&DGLýnNܟ!9+f}~־c UBDA(c+d$$"~n8FV%s. &jdY"ovbN h8;="F q|llKa:n3=&m_[&= 3?lT!A2v5jF^ מk~2R񓵼H[(ߌQ>Z}IyQC%釃IaWFk)(-j7 k:垯Ha\J]G}IScTV©^n#>| vZҵÊ䱇6iVSG9m4slG`kĢ+c0Z8,&l_ `JpÄSTR;b?Pm"ђxgq BSPӬ׺p`GσeS^\P^B<\ud.Ehed+fl6G5A:kCAs,ֿm XI,~3ŔSϤ#$FFEx#k->[yqhGo/sڠ}a2_@Y!w0Zhk&jr $ꎏ\i,I_?C,@kHs{$Ja+Z+<6E1Y:{/S B&B%*z\#ṁ}?Ncm v".ܽ;Ake/DO(zbƎN׀/Tl{+b]j;i ) s MYݓp ;_FC]X !WyEI1="D묹ṃ_A)pYH0csOFpNK?]H9_%DUȾ* @}khqaZ=Kj2fFo FKp#?;.5gg ٻDw{kOZLȳ^5z /f}:Qzg w>3:tHU25Ǿt2~n1zᙸh'lӒּSoBf{LQT.nk~Zm_wݴk`z/~{mb}3OT_❞!{#=uAۈȡ+mj&i"~6w.K(Oy0_q.#X4onOMKV(<*~gs$`; Gdgt h(C0nw A]YSD/AHoT̓T2eK}YC7݅dNMۏwF>{g4+XnWmA AaĎz|TrKDx$ }Lo*k_&6Y=Vfvb JН agMqoju[ ރ,-T}s#a3#D{#A\03ypq/UU_K .7:8G.#A뽶yU ;I禃gԙ C韝1އV$sQuLUX#F.9iyv'C#5p zeg6q#W;†QJWc4bʧu$g1kL:/gBfFUk'Ԩ ;sh΀\n{>&tNI_0C-.;ፑMӪT@hKR|x2L 68>NX ),w]](S lٴ=hg;zE 8:Dһqdݮ){a.͟~LHDц f36P @szH.xsLI5U($&Ixq_ F dZFeh`G' ڒ!B/u"<폻iRuS\XKj5QVp9jTXnm†E3`e>1<-eoy:|1_[%nsbv_HȴWjop9΄X45YekQBA.m CmhDO!:.+x !{*gHP6aS-ɑ0D~99.+*&W?79/^ZccV"y$ iAրsS9֩1Э40&|_ו7so9⮠ V܁&-pnxU! ޤ*`lAH|axxHԢ2UXDasżvӲ-:[ެw^O{ڭMgk=UI&J0M)s9&5HeʧF E慪 (sM{dC=𡬺-;51(~O~Hf#: 5ڠ-U3S 8`X>=|)b1{ T/#O˪&:Elܩ Crpl%@_3:2bfƳ Ջ`XPbζg }DRMMm{]C蠚^d]ZS1,{N7],Vtk0ޚj׃HjڃTpX~+׌K =W@vA~a;(1TbmDqM=dLUH$qIg/s5|렗X) f<,P~*u nj" Q+»i8 @,"ק5c׳E{3HoL)x=2׵`ߧ_*?3!Rl!aLZu1 ĉR~*X`W^)m_)2&`#Xx4`3&}-ceb#z9XĥIE=擻= ]&'W;5ߝ8$*U?%'RQk6"`ۍrHӟD7XΧwXxфزqC^?AQAx|ON6)^=S<}kh/u9|jٸsbvxű]<:-o*>p/2Yt|h8au1Fɺ(E=FUj|`2XU_֜6fЇiBoO~[i+z#bD`"HS|2Jjz9!$Rs6׃kJЛ=ԕ1.!_kIbdxy9K`}5T߾ d}BE>NNŜE֋2v*ҹ1w(OdpZ?G DeԂ]4վ1܊$x ~* Ap8xjlnJuZ\a-B-&Ч-7n][Qjغ!4]~sB | WmeYŵEnIZ'̳@Q^DLyۺEY&| e;`u"я?gP09p"gU)>ڱE)YsaDr%B)ԉ%VEqF ;P+w/Fg+Sjr8d| =4)^F{L~acn>3j- YoKӊ(t s>(}iqk\WW)=x -/ aϮVxp`8X98xR<C):ISE8dL $Ka$ `A=_y[‰crSCQ_gr ̎ˁnu0~'q\hYRLf/F6wI7:ec>s9SSaQ?]=)zj߻U}^օzv(2Z?drAn-;Hfua{;=/7 o"H8[B)z5"!$ H-wyf1M/D@- .d\t}\|E9z$*X_(7Z9 /3X(S.&~~qqqbU U? SYzzED ݆qH= 1G06QuUN >e p4𾉮mjC GșaN49>aXJmRPٜ,΢^Sg{ƻnve恃mŷۥqE)SafxzHjxz|D+yB R9;3>3$Ȳ:|mD(F,oS5l4m7g¸l7*~ңqsp^>DK>#6tp6LW*_VRѪ3͍h-|s&J.3 hOx>7p²Lbzj<2442gkְ#XG X] HE֑WM*,]k/0LIk!%$k ˯[@X$. ٖs:~( VXS4:wa0M$N\n3fxNX,J116+ѽaw!#5!@Ǵk}$6GJ5Wl5.ovJ5U>dIW 7Z},SQ,{5t!b@s2"OSR4Ѯ3]σ v_v"Gܪk= `=ImWn(1CnjMyFǡ=UVV.!qIP2tiv X]jjN/О$E#%Z"VT`r-QqFn| SpVK:bEj2 fJE?Y^xD񧸨n㫪M rlfpSP ȝm̐^&:8`n41Me1)H k=<\Ssc~C@+,BI,Vh g{Eй3R/-)s,QAX*aF5;}4 ei72 EfxP-iƄL[;:{/s=ӬH!D.|ۅKW;X>@^Bp4  ȡ-WbdFDlBtZD[Y~B8%jȺ|UfȜNoQ6b7""M:9d?!bL~KUTnAa*X vұڕ4#/Vـ:1 [!W. 6xl?QYhM !gU(QxP6=*>=Vye ؈9E JoZe\Cj髃)t.bAbܪ=;Tl~7VG MGŦV2W_EYQp1I#lx:fK\w]%SAtr?pCND"OtO2Zf $`?+aq;?d%yuvgh5ّXؤƨt8s,$idp}dm被8.B;8JusHz[2>.o}bAidGDeߞ: 7{>>FF%Ζ޷ef%z4:8BV*f`}7rzRX,s1zc -VZ8`|q"5IX^kث( _JP<6١@pzABZ"BS ~ڐ/CZ@U oJa*&_ ey:'D6mT~L<^(ȯ|VEPmcqIƅ?klĕ*V/MS ]gu9M `Q+p*zlnX~$X^w94ì!F&/#"+'Z!V8SwF0m!e\EP⇡S|FXIW&rH/jup~tuߢ"E-^6^ "IU2>:bL]02inVZdn8mJSO~_!J~<4Fї[ck@jAmӌz&-A}NTC:5%REBGJYoS Df$^2 R`m8]FRngHw,qOTqQ%/80cI<4tH[ɓ lΰ#`<~ߠ.ksgy"" ~t][4j:Hb9,9iv8AR ګjMh{`!SNq3P/hTgVUնy3Qi4l@_f1I4|1ezVk||/[Z.BP3sH#{6@K 0z,):q^d$ uHxH'(R¢WTOaTqw~\6͑YGOy'd =2KR2Vg:,8Q}qIl)n%2B<:1Aub5pj䢃z,YMJ . cxs<=;s2.@Ei4D~$H߉1 ==f0dK[B/ G9PWjYӇ)/fW.֓, ^ C BAȹ;lQTN:/YFKd:m"( ZEw.q\{R(?ҿxLԅ ^ O!D5͕^M;dS]+pNÚ|w@PIZ_.]#lLduŒ5?rbntIFEqҰAmP%^OS?XqqW":$\ hƎ>ߕpqn3hw rvڜ* )d;vKGU0gF"̪;'b8N%'M-Q!N!c9>J㷄#47NmV́KYɊUdu[8"|`'TOcB%r,%wFE_ $W-2? jK sLFrg QxrY&BJ|>c稳O]+c_Q[N7]ur}aa 8w[qZn-oϽPDFsLgēٓ_|sI2S6Wunz5=yVϑIZjͧʊ`,/lG2d.OYY8-8+L2IiHW%vkv*@"s LOH VvVnR*s_,rT޶(qLEcsgn/9vfj 6.OWNL )T0#蝝5-Xat@)hu[F3+z1 p%W]+>IԒN3ɟUL%[3}||`aUCNO/cbbXф)@CHUZ*36aJ8!"clQ[O#h4B#Tq`ʷ6]-ݖV'xs\TVGWayGb1,wN+@FD#{^>\,' vzo_EJ=0 !~(/}Xܞ E[,sԪwqd[RE.^T39#$U]YPY|qpgg1d `ΞJYK:wiZY}RnS7,2*v? Te"Y!oP-Z~[I2l B4'vܐf y3ջ$%V,f`AZ_6ڪc h>/v2I0r%fX;`E( fNK@z;] W,PρKA4Ьm1RF˞P+`3P֙8vrcCR=HS]!w+U؅މ}E|׺ M#]=Lhffߚ ڈ`BZؖJ s#5 (`V^Τ=E8UxC OqRa}eGF fbx&ՀAKH{}JB:ި`֫zS hnG-; FdAgi,{| ]쨅] Y|NU?9-=J*3bqDP'2Lκ/̌Qˈt*PYO>Fj=$# ӔDCsG?7ZCFN$Ցvyu~b[ %)zyУ+ԳY*M_nXE_]I{S:5LqN]f #%wiL |j%t-sqx'w{SpQ tbHKM=?e:1%'Oݩh2JOoRa`^?mv 0B784<Э|Q(-Ey.`? AA.C/52ㅐMMyb>80Oq`;#+HF$<6xV0SO_k󂉛%.ۧL]XΟ]k(J¡Q ִJKDF."#]A)$% بUTx6ICpQ(`O fHi[YUZppG뒆HtIbbrC(M9dxCO=KN\X2p MS_QlgCW߲W X`" 9~-}b\"Sz/ u])œrǦD3MozD:zan&T|ʫ] pP?]821vE*<̟} ҂K݆.)`(ϖТ߻_Ӱ̣_1RB"BfAz#+Fq&nrUT:q Q4%Fju ׯ,R_٨+hSs6#{vZ-M@LsRI酰(JBlu+FP[飚. W镫QqvIV-?` _mD )&@oq)(aTB}Ida/_#pvGN oM4='gW7MD>Vwy֮`0 3dW ~Rf6lySJ7-}RLSd!m]քg?XXy#\N9h}fэ]S 9v) qÃ-pg {Xndv^E&t mMgcpq\mG.8;Ea":wRlT |BtG03ʸ+1Rv_/K~c/NSu4%ʤ9_U@Br#0QSQ:1短"]=sق([ҨAQlv>L7 |Yfwc>A,' ( 񕼽@?DVNggo'x}ˬg91L`g/n40s&nX.uH cMx-6J.ŌD_ED#Q54"[Υ ΉAk Mءv؊ . z) =AƏy%)H iT4Q9=ߧY>YVwlm2+iR Z"t7=E]VUy%X^l?O9h=b>qsL?xKJ&kz~6 ap;@W&"R5jeBxD%vgoTX2wWO^qmݹZ2GOh@]ݣ|7Jq E,9^ju8)&f~b!Xb}J4"W"abPTy\&ߟ7 r&uX'FȪA1.~ 54_{Ċ"_Q@IUB~׮owsM v6Qp~Y:@[1'¤M6m)2t gS"pe$Bogyb }`zɒ(|ʁINBꦰI r7%UΞ_9J]tɉ~d+:T?9K٩i |)HG:8d5MWo/$>xl^ ͮ2Pay*q` 4u}<Ϻ^Buo@Y7?>СUϐPT -Hr*aekFYJL#zܔ6̵Q%]O04eTQ,i[fԴC8^2@U&vkg&ҟz3^͕E|&tm.?pecՉzX3@ү |N--xϱr3 'Ffv Inπ0,͌Ŗ\9C  J/*7KQC" omqRȏFwN/%h8:6Y.kW N>.dȖݥ fpjV.o~hxL:T70?/(U.5J^cB6#)[Ó﬈Pd߫B}q}tl0<޳{%GmȊ2?_Á}\e$ŧV s`-xυ SIG^.c^&kWkeQ-cRb jR>/8DxsY_U,o7VrB4;ܖyf!8??tX3XU*]c>2Y7D l2"ִ1;epћ[viTIRMݱ qXqG` 8]S2s&8Ƒ}hZNJu'OF܎i ]'H úd`,2c&=<fNBi{B=; -Bcolӻ0nXPB]Y ૰陰_񦸪'حn[*oJj,H͈(̿Z"-|n.䇃Ն1na%*E7̇\=)Joy/i4;~nڍ{}3xn8D M0+/e3R^X|85#nGA2xmXVUq[2CH Sa(tKRiqfFU1NE+W\@!^`݆ڽ'S)*_]&S%v(j$0뤱HVhaAW5B$!w#NhV4\}(«[(wf6eE1dϾ,pcKP $Waڎ;2jdػt硊z$JM,y ]ćmAzE8 DfWq!b?/W1ab- ۠Z834P̻8,l9>*ÉZL n SQ+2LP6Z$/'W/R('¬Ef6Pd<_qWdQCx#}SJN+D?7t0I1Bz;ǪۯVYNRh@oo^ot]8 ?mZ lebmլ H$/ 6.fȵDOWlt"b 6G:L}EP\z4օ̺lU4qVXӯwQٖ9ݮ3Qk6!~sl4DX;^߭* 5֖5Υ?@Rη#_>$NH6H: ê @,1mm[dM0GnHA6y\*ZaE6}3BFNɨd/f Ғ!<5\u.4i!Q-O~L)ou%Qi!$>c|]3T'lB$8QđШG#Urk(`9JLeHkh́[PWt;)Sx2^Rm$A ER o@ez OAғp. ig?v ͖ksg`ykĎBJ`n [Ṿg ߭9Jy0<xV3}^`ggUvZsX " Aj)N6Py=$ y:ppVf8 И(hDžzdtقbeэ׿֍<v1hxn]f& Hl şG}O(ZY=XJu`hQMQk}Isi}Ӗ^P玍e+k=* fBo-Rj5Fh|GQ"nYW61 47Z1f#FC$cqf}fU9q=(Zt'+cCTѴ"ֆM ̧- u"װbPVU*065[huUhO}Hr*GbT+OF}D=X?ܕ=k.c'^@}Z DIemZ!  ¶f\~WhMjvOek{xsˍq$-')Eܘ#snqz,R߽?@bx"9j9>E9_QE dJ=v$3~JLX -XU.B?XxO%>όQ%%-}5>XƼ4E砍^d Gow辩 jLX%f`>,<!+E.nUi(PA_t݉9'Aa{ן-# %ZVx ; ^!K~L9ؼ=B\Ĝ8H}}V60I6+AAE%|Z>jOYϋ-P'DTBO}fvK6d'?_>0 YZspatstat/data/betacells.rda0000644000176000001440000000354512333041762015514 0ustar ripleyusersX lSe1a8MTD'"h$L~@QnnoXv-݃ф&`e( JDbFCPQ&f~_n7?;;{m.p8NGn?8SvJې\nY,A>#6Oy-s.ͧdIςT'X΢>aORFN\ '^֔%-AMM+h4eë^ %] dx [8 mgUwSHR3 lܑ,/yWԔሓ{\v،D">/ܛ-baKCL JխBewyObYU!<̊f~c?sz.Ng +k߮DisoyqGh+Djכo*{ø\>F[8~Q/OtEvس1C_Cm6W4C߸ ~jn q Jwތ?=mp4Wg.#ЉOVpߥ&.m"oߴO"o~` xkKO XWΑnuY,׊H/<kK=>֧2e=&ڈ#?1|zsQNlOOﺐez~?8 _E-Dm\Kwm#G)U xX̛.=;,BKsiWv>pf=+_ mWU=ľ :~s_Qqc 5Kga܈xqi qކ/^eoyi<> q< |u}5 imAu"r"'8u#/WO@0 Ut܏G+}6"o8ޏ1%׹,#>''8^%4E؍v`ŦOr&?d7[?{?3ݫMu?<{OSog뢷zہw%M Up\xa˼m ɣY.T^T8ݎn<3&{|<|goqx6|i~ kX1;v%IiO*09# uiOݒqoJPfUG4~X9rx݁?}z5 ʩJNB{le Ots5b>XaA8;Cy /E肞QlْjqE3Vy@d7?#ylg^W~L:aLfY'Pef*21n\<{2џ:06Y솼<|7t_N֑Uƛ4O9=/8TcOo?뭭 y6ӂyq4??8X'Yq^$-e$|s[FFFlYY3_d/GIG?]HZǧ5JF-Bp4Mspatstat/data/amacrine.rda0000644000176000001440000000621612333041762015333 0ustar ripleyusersYgxB" XEiE@/"4 F MT)CUz'$^Id7ٖl6n"wfrAGoofΜ39plZckT*gta?]هUU} Q\{7veWW3;+`{QUW H _Y8?-/1 zZ5s 7xP_e)!S‚讖_oOyy`HPmg+:'Giv0s;e >˳fq P5hW9ZSl|lçCrny4n̻g>pfGKOBNÕ7{䛚"f1 51NEܸjtiTɪl$vص#2?f߈,όGwz Az~O?YD.=gbaUcs5o.d{L̅ϟ@΅ vώYۧ_kFUޱL>bz\zm -rwytWyM?1PߩPjGoZ}a1 k=ցϡۀfʦoCȊAZ՞\[W~*bFZ?Y}NA[3ִ܌s p0͆8m6'K*=u*BY!g i&U-DaW [uQ XiTh/پ>0EG|& f<cO6oX F1svr8Y#t+^aGg01)LC|f鋏ph,L>" (fƙQJ _* J:, ܽG{Wzo1>و=PKw9(8hԠU86^g089<-* adAd=Qً/d *㇟݁t27 Y=3uZ=*(~ʐ+g`Rs+l"` 5ti(ogGYe+6䢜VZ#l?}/b UCřTMFBvW򩂏69(7-kvqD>J"4XD#]X~waQrw>˕w Œi)~~[u`ݳ-Bq?Hj^] r8 IAH}pNK*=X/;@;ȆBnA0Y5#8~[C׷Ͼp;.ya>ےb91˾5B[?3Cީwvh(4էC,8$O K'?ǡǃŊ| x7Wza2Foq-A0eE[ս"y(G%)糌M;Uޏy?F$Y~a%S'?_Nȟik([WMtG3:1 NN!z~x+aqjjjjx2Hh,瘃+}z˄UiE#;0"){7o)I']qwai1J>r&OZ1Y]r]lyӯOt.y(0PH%vt_@UNx^Z:9/i"Ցa# bLGBVGU]gUI82qH Ἐ%(j*F&NPMagl=:V;ń00k~:6FOK37%~qT91DZzJw Rߓz6tlc aUI $r28d}v:Bx|*{D< =Ew_\\(u+A(8SzTCG_YaN+yDh[<FNC.ˀ0?,ޞ =UIг L ЊLVwwة,Z;Z9#xH] uɋJ%@Q_ŕs*{>KGD.O˥/}dbөWSTx'Cws)$q؄fH$ UQ% .#Οd,<+;_dUO?俜o/dX0j`Z,F: ֫?؍AY /saZRB͒߬Be TL\xWfQ^Ux_@'f(،B;BNwB_@85`fy% `vĭl']kd2/ jL@{s<Ǔ/>]zfJ<$d 5Q zn#=tyEG+xQ7I''>M  J~)X0M<8Et^O/䒻}DN@Ȧs#t̩%<_,=)N}Wե|!o@Ϸe̢.5=oP}R!=TG~Ms< |Ɂ|q/K>p,?75 j: FY.n{YDYmB:( ~&:g