DirichletMultinomial/DESCRIPTION0000644000175200017520000000223314516030164017424 0ustar00biocbuildbiocbuildPackage: DirichletMultinomial Type: Package Title: Dirichlet-Multinomial Mixture Model Machine Learning for Microbiome Data Version: 1.44.0 Author: Martin Morgan Maintainer: Martin Morgan Description: Dirichlet-multinomial mixture models can be used to describe variability in microbial metagenomic data. This package is an interface to code originally made available by Holmes, Harris, and Quince, 2012, PLoS ONE 7(2): 1-15, as discussed further in the man page for this package, ?DirichletMultinomial. License: LGPL-3 Depends: S4Vectors, IRanges Imports: stats4, methods, BiocGenerics Suggests: lattice, parallel, MASS, RColorBrewer, xtable Collate: AllGenerics.R dmn.R dmngroup.R roc.R util.R SystemRequirements: gsl biocViews: ImmunoOncology, Microbiome, Sequencing, Clustering, Classification, Metagenomics git_url: https://git.bioconductor.org/packages/DirichletMultinomial git_branch: RELEASE_3_18 git_last_commit: dbea7cf git_last_commit_date: 2023-10-24 Date/Publication: 2023-10-24 NeedsCompilation: yes Packaged: 2023-10-24 21:00:36 UTC; biocbuild DirichletMultinomial/NAMESPACE0000644000175200017520000000117514516004340017136 0ustar00biocbuildbiocbuilduseDynLib(DirichletMultinomial, .registration=TRUE) importFrom(graphics, axis, image, layout, par) importFrom(stats, runif, setNames) importFrom(utils, head) import(methods) importFrom(stats4, AIC, BIC, summary) importClassesFrom(S4Vectors, Annotated, Vector) importMethodsFrom(IRanges, length, lapply, names) importMethodsFrom(BiocGenerics, Map, sapply) importClassesFrom(S4Vectors, SimpleList, List) exportClasses(DMN, DMNGroup) export(dmn, dmngroup, goodnessOfFit, laplace, mixturewt, mixture, heatmapdmn, cvdmngroup, roc, csubset, ## S4 generics fitted, predict) exportMethods(AIC, BIC, summary, show) DirichletMultinomial/R/0000755000175200017520000000000014516004340016114 5ustar00biocbuildbiocbuildDirichletMultinomial/R/AllGenerics.R0000644000175200017520000000010114516004340020417 0ustar00biocbuildbiocbuild## promoted generics setGeneric("fitted") setGeneric("predict") DirichletMultinomial/R/dmn.R0000644000175200017520000001044314516004340017017 0ustar00biocbuildbiocbuildsetClass("DMN", representation=representation(goodnessOfFit="numeric", group="matrix", mixture="list", fit="list")) .DMN <- function(goodnessOfFit, group, mixture, fit, ...) { new("DMN", goodnessOfFit=goodnessOfFit, group=group, mixture=mixture, fit=fit, ...) } dmn <- function(count, k, verbose=FALSE, seed=runif(1, 0, .Machine$integer.max)) { if (verbose) message(sprintf("dmn, k=%d", k)) if (any(rowSums(count) == 0L)) stop("some 'rowSums()' on the dmn() count matrix equal 0") mode(count) <- "integer" ans <- .Call(.dirichlet_fit, count, as.integer(k), as.logical(verbose), as.integer(seed)) o <- order(ans$Mixture$Weight, decreasing=TRUE) ans <- within(ans, { Group <- Group[,o, drop=FALSE] Mixture$Weight <- Mixture$Weight[o] Fit <- lapply(Fit, function(elt, o) elt[, o, drop=FALSE], o) }) with(ans, .DMN(goodnessOfFit=GoodnessOfFit, group=Group, mixture=Mixture, fit=Fit)) } ## k-means mixture <- function(object, ..., assign=FALSE) { if (assign) { apply(mixture(object), 1, which.max) } else { object@group } } ## Dirichlet goodnessOfFit <- function(object, ...) object@goodnessOfFit laplace <- function(object, ...) goodnessOfFit(object)[["Laplace"]] .AIC.DMN <- function(object, ...) goodnessOfFit(object)[["AIC"]] setMethod(AIC, "DMN", .AIC.DMN) .BIC.DMN <- function(object, ...) goodnessOfFit(object)[["BIC"]] setMethod(BIC, "DMN", .BIC.DMN) mixturewt <- function(object, ...) { data.frame(pi=object@mixture$Weight, theta=colSums(fitted(object))) } .fitted.DMN <- function(object, ..., scale=FALSE) { fit <- object@fit$Estimate if (scale) fit <- scale(fit, FALSE, mixturewt(object)$theta) fit } setMethod(fitted, "DMN", .fitted.DMN) ## predict .neg_log_evidence_i <- function(x, alpha) { .B <- function(x) sum(lgamma(x)) - lgamma(sum(x)) -(.B(x + alpha) - .B(alpha)) } .predict.DMN <- function(object, newdata, ..., logevidence=FALSE) { if (is.vector(newdata)) newdata <- matrix(newdata, nrow=1) lambda <- fitted(object) K <- ncol(lambda) alpha <- sapply(seq_len(K), function(k, lamda, x) { apply(x, 1, .neg_log_evidence_i, lambda[,k]) }, lambda, newdata) if (is.vector(alpha)) alpha <- matrix(alpha, nrow=1, dimnames=list(rownames(newdata), NULL)) if (!logevidence) { wt <- mixturewt(object)$pi offset <- apply(alpha, 1, min) z <- sweep(exp(-(alpha - offset)), 2, wt, "*") z / rowSums(z) } else { alpha } } setMethod(predict, "DMN", .predict.DMN) ## print / plot setMethod(show, "DMN", function(object) { cat("class:", class(object), "\n") cat("k:", ncol(mixture(object)), "\n") cat("samples x taxa:", nrow(mixture(object)), "x", nrow(fitted(object)), "\n") cat("Laplace:", laplace(object), "BIC:", BIC(object), "AIC:", AIC(object), "\n") }) heatmapdmn <- function(count, fit1, fitN, ntaxa=30, ..., transform=sqrt, lblwidth=.2 * nrow(count), col=.gradient) { p1 <- fitted(fit1, scale=TRUE) pN <- fitted(fitN, scale=TRUE) if (!setequal(rownames(p1), rownames(pN))) stop("taxa in 'fit1' and 'fitN' differ") p1 <- p1[rownames(pN),, drop=FALSE] diff <- rowSums(abs(pN - as.vector(p1))) taxa <- rev(head(order(diff, decreasing=TRUE), ntaxa)) pN <- pN[taxa,] cl <- mixture(fitN, assign=TRUE) ncl <- length(unique(cl)) nms <- names(cl) grp <- factor(cl, levels=as.character(seq(1, ncl))) idx <- split(nms, grp) ## 2 * ncl + 1 (for labels) panels mwd <- .15 * length(cl) / ncl # 'm's take up 15% of total width wd <- c(unlist(Map(c, lapply(idx, length), mwd), use.names=FALSE), lblwidth) layout(matrix(seq(1, 2 * ncl + 1), nrow=1), widths=wd) op <- par(no.readonly=TRUE) on.exit(par(op), add=TRUE) par(mar=c(1, 0, 1, 0)) for (i in seq_along(idx)) { image(transform(count[idx[[i]], taxa, drop=FALSE]), col=col, xaxt="n", yaxt="n") image(t(transform(pN[, i, drop=FALSE])), col=col, xaxt="n", yaxt="n") } xat <- (seq_len(nrow(pN)) - 1) / (nrow(pN) - 1) axis(4, xat, labels=rownames(pN), las=1) } DirichletMultinomial/R/dmngroup.R0000644000175200017520000001007314516004340020073 0ustar00biocbuildbiocbuildsetClass("DMNGroup", contains="SimpleList", prototype=prototype(elementType="DMN")) .DMNGroup <- function(...) { new("DMNGroup", listData=list(...)) } ## dmngroup dmngroup <- function(count, group, k, ..., simplify=TRUE, .lapply=parallel::mclapply) { if (length(group) != nrow(count)) stop("'length(group)' does not equal 'nrow(count)'") if (!is.factor(group)) group <- factor(group) lvls <- setNames(nm=levels(group)) counts <- lapply(lvls, csubset, count, group) tasks <- expand.grid(group=names(counts), k=k) tid <- seq_len(nrow(tasks)) ans0 <- .lapply(tid, function(i, tasks, counts, ...) { count <- counts[[tasks[i,"group"]]] k <- tasks[i,"k"] dmn(count, k, ...) }, tasks, counts, ...) ans <- if (simplify) { ans1 <- split(ans0, tasks[,"group"]) opt <- lapply(ans1, function(ans) { which.min(sapply(ans, laplace)) }) Map("[[", ans1, opt) } else ans0 do.call(.DMNGroup, ans) } ## predict .predict.DMNGroup <- function(object, newdata, ..., assign=FALSE) { if (2 < length(object)) stop("only 2 groups can be used for classification") res <- lapply(object, predict, newdata, ..., logevidence=TRUE) offset <- apply(do.call(cbind, res), 1, min) prClass <- local({ nClass <- sapply(object, function(x) nrow(mixture(x))) nClass / sum(nClass) }) pr <- simplify2array(Map(function(x, alpha, prClass, offset) { prMix <- sweep(exp(-(alpha - offset)), 2, mixturewt(x)$pi, "*") rowSums(prMix) * prClass }, object, res, prClass, MoreArgs=list(offset=offset))) if (!is.matrix(pr)) { dmnms <- list(rownames(newdata), names(prClass)) pr <- matrix(pr, nrow=1, dimnames=dmnms) } if (assign) names(object)[ifelse((pr[,1] / rowSums(pr)) > .5, 1, 2)] else pr / rowSums(pr) } setMethod(predict, "DMNGroup", .predict.DMNGroup) ## cross-validation .cv_dmngroup <- function(dropidx, count, k, z, ..., verbose=FALSE) ## e.g., k = c(Lean=1, Obese=3) --> 1 group for lean, 3 for obese { tryCatch({ trainz <- z[-dropidx] u <- unique(trainz) train <- count[-dropidx,,drop=FALSE] if (!is.factor(trainz)) trainz <- factor(trainz, levels=names(k)) if (any(is.na(trainz))) stop("values of 'z' not all in 'names(k)'") if (!all(names(k) %in% as.character(trainz))) stop("not all names(k) in z subset") trains <- sapply(levels(trainz), csubset, train, trainz) fits <- Map(dmn, trains, k[levels(trainz)], ..., verbose=verbose) fits <- do.call(.DMNGroup, fits) predict(fits, count[dropidx,,drop=FALSE], assign=FALSE) }, error=function(err) { message(".cv_dmngroup error: ", conditionMessage(err)) matrix(NA_integer_, nrow=length(dropidx), ncol=length(k), dimnames=list(rownames(count)[dropidx], names(k))) }) } cvdmngroup <- function(ncv, count, k, z, ..., verbose=FALSE, .lapply=parallel::mclapply) { n <- seq_len(nrow(count)) grp <- split(sample(length(n)), cut(n, ncv)) names(grp) <- seq_along(grp) cvresult <- .lapply(names(grp), function(idx, grp, ..., verbose) { if (verbose) cat("cross-validation group", names(grp[idx]), "\n") .cv_dmngroup(grp[[idx]], ..., verbose=verbose) }, grp, count, k, z, ..., verbose=verbose) gid <- rep(seq_along(cvresult), sapply(cvresult, nrow)) cbind(data.frame(group=gid, row.names=NULL), do.call(rbind, cvresult)) } ## summary / print / plot setMethod(summary, "DMNGroup", function(object, ...) { k <- data.frame(k=sapply(object, function(elt) ncol(mixture(elt)))) sxt <- t(sapply(object, function(elt) { c(samples=nrow(mixture(elt)), taxa=nrow(fitted(elt))) })) goodness <- t(sapply(object, goodnessOfFit)) cbind(k=k, sxt, goodness) }) setMethod(show, "DMNGroup", function(object) { cat("class:", class(object), "\n") cat("summary:\n") print(summary(object)) }) DirichletMultinomial/R/roc.R0000644000175200017520000000030214516004340017015 0ustar00biocbuildbiocbuildroc <- function(exp, obs, ...) { exp0 <- exp[order(obs, decreasing=TRUE)] data.frame(TruePostive=cumsum(exp0) / sum(exp0), FalsePositive=cumsum(!exp0) / sum(!exp0)) } DirichletMultinomial/R/util.R0000644000175200017520000000132314516004340017213 0ustar00biocbuildbiocbuild## utility .gradient <- # RColorBrewer::brewer.pal(9, "YlOrRd") c("#FFFFCC", "#FFEDA0", "#FED976", "#FEB24C", "#FD8D3C", "#FC4E2A", "#E31A1C", "#BD0026", "#800026") .divergent <- # RColorBrewer::brewer.pal(9, "RdYlBu") c("#D73027", "#F46D43", "#FDAE61", "#FEE090", "#FFFFBF", "#E0F3F8", "#ABD9E9", "#74ADD1", "#4575B4") .qualitative <- # RColorBrewer::brewer.pal(10, "Paired") c("#A6CEE3", "#1F78B4", "#B2DF8A", "#33A02C", "#FB9A99", "#E31A1C", "#FDBF6F", "#FF7F00", "#CAB2D6", "#6A3D9A") csubset <- function(val, x, pheno, cidx=TRUE) { ridx <- pheno %in% val if (!cidx) cidx <- colSums(x[ridx,]) != 0 x[ridx, cidx] } DirichletMultinomial/README.md0000644000175200017520000000231314516004340017171 0ustar00biocbuildbiocbuild # DirichletMultinomial Dirichlet-multinomial mixture models can be used to describe variability in microbial metagenomic data. This package is an interface to code originally made available by Holmes, Harris, and Quince, 2012, PLoS ONE 7(2): 1-15, as discussed further in the man page for this package, ?DirichletMultinomial. ## Installation Install [DirichletMultinomial][] from [Bioconductor][] with: ```{r} if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("DirichletMultinomial") ``` Linux and MacOS with source-level installations require the 'gsl' system dependency. On Debian or Ubuntu ``` sudo apt-get install -y libgsl-dev ``` On Fedora, CentOS or RHEL ``` sudo yum install libgsl-devel ``` On macOS (source installations are not common on macOS, so this step may is not usually necessary) ``` brew install gsl ``` ## Use See the [DirichletMultinomial][] landing page and [vignette][] for use. [DirichletMultinomial]: https://bioconductor.org/packages/DirichletMultinomial [Bioconductor]: https://bioconductor.org [vignette]: https://bioconductor.org/packages/release/bioc/vignettes/DirichletMultinomial/inst/doc/DirichletMultinomial.pdf DirichletMultinomial/build/0000755000175200017520000000000014516030164017015 5ustar00biocbuildbiocbuildDirichletMultinomial/build/vignette.rds0000644000175200017520000000041114516030164021350 0ustar00biocbuildbiocbuildQMK1~XmA cn/^ Ń4ցdgY˭+6Lf{3o"eഘs߱gS>kߝUз\!=<M iul?qg S.Q+OQSS> ~oGrسotX#Q=3TG߱]`e*DirichletMultinomial/data/0000755000175200017520000000000014516004340016624 5ustar00biocbuildbiocbuildDirichletMultinomial/data/bestgrp.rda0000644000175200017520000004245614516004340020775 0ustar00biocbuildbiocbuildw<0n4$ ʞ~4WR e޲(IJy#N~|:=s_i 0h3PPPPQP1R?i?()h(ёVockhmIAI/#o7tģ:_t6r8[je52ZXmlT ۢ+u\8ku !Vݾ[W0U=R>#I9:[ȧ/D}yCގrj*h8oCi >|oQ(l }ì: x_N̯T/Gޱ G\9ug'ӖJ;7^bi2}I/?{ǨH*Tw'Шpj, nWhx0\,Oyj08NyÝ[6>d뛞QKr]֐wXY4:8.ߛ]ȴ4 RPR^ohxzu++"%wUQ[٘Zv54؁B=í_H!} &' 3䂙I.۲='Ӛ*Pwb$DW:>bw!]0|t⯸ԛa613&>kp(9ݸR|$N2ue4 ) #]Ѧ3l}:pg׸}Pdz``RK;:@b/ntW*CqpG+ro] .Nt}Ye#/60-Εe~/ $?>_eg[[lvfOj-#>BBOfYZšvJ H3'= eb6ÙP҄grcKSca75]Y#Mnؔ"jIji8K4/19gkmg'5ֶF 3KpQuzz8=)zi[ K4?,XɆ =dYX99̹E;Y;Z35au63&e9o$Y0,Lʃ,onh9emZYS A0TXquhېdIrQ(I:Y kgmlKL7Q9o4BO▐dI3 # i*9 kzFpYNgphaL9ooZ\ U/__fM&D| +h&Ս%Xyĺq$BܯbU ӈӄ?zn>NeY֘[8D޹v+64[ Iuʃc4 AbZbgYHF~_z9K7D=Ǜ=E넾Hc9 jNGR.Ik7w}-Nb?I)V+GR#ʑtHr$]9IWD#iۙ-Pjҏݺ<1![CO/~eTNMnU Ҫ\#--!)Z/Gp4]n 8x߃. ] 2yxEv7K .Ά2^z)h9X~ dfmo$VA7սk>9"YuI~ &p(6t7T֥y 5&tE~00} 1i;TZ6_ q:i@»u˝~{.`M4R]⯄|Aàq}֥A'^(> %*6Fn\Vf?'}<3~@]lK>oc9_&uŴ8*$]G&oJlH$|s&+Bc7Ӌ JolP>zżLl"CS1/ÚN$ B.5! \\) ּ52Kֿ &?&}Bt)F̺ źK.(HX:N5\! ?dAdwjk|O[>&X<2)(뇛Gɱa d(=BwMB&.J]q[oÊ!H),;ٶ]WL",]2qZr-ngp1ƧՈV=혡g;'umI`W =)|X/&M.:|<\CY$SЁs vǵg{߀\o.dlRBa'1_b>3VFs FckMaCwsuJ.W"ͅhv7yD[T&`o/D͵qLm)sܒ1{ NL50,9~XSdc+gnm$=N]s2 مTy@![ :M@i^qx>#4;{sCz}ߟӁcVƆP~#0{}nb.JXGCp;Լ` |rO5~gӄQL#zF9|WLž͛1 k^nnpFnS;o:d^/Am99gz$'/#&o[yJk@xwM;yNȾO Q'yF]E;?v%!_ʵ'FjpF̽}zav70L[0$%̲9!rf51>ClO6B|k]˜$T?=3iέvt%ri%C1C_p\|RߐU8~eHr9c}׿Ҏb\vGhb{>DjʵSukӼǔ86jjXLڥ[RWWhY/"FቕUɋŬ/TQS` 2 ٗwxLN 6!%>S&4aʷVK7v#$d>CLuWC 񺵟;aFW4Ŏq zy-HSu9VehwLSCd+TQ*P :rӯXvX2EV?C{05o6{b>މw9L9ebEaH QJ`$˫R7%=ɕowiMk 14y%O;6)*=~dX+_[g㯱k6hbzyq:B.|5Z|N[xfiylS&Pk*ȋ Jٜgs9 ׮'\4^ /· gk@-'*_dWF5/̅||ߝ 0Q["~LڝG,CElK'qReM -WG4|׳|Qåh3<>Q*}ӣcpfTL;Éy6uMFֿN Yc%Hy;. 8gǁW}嘯.4\+x0xC b"Y`lYh|F1@v; }}sD ޵Q-Jh_; Ï JR !Г_5A:@{iҳNb Hl@ȖXpȸ a%9@TGpSb!Mi=w'WU Y:0=0zL 1==|P۔x0|ߎqM/P'moA>SjssFB(Jø̭MxJWa8N095syd-zܻՀ8ܡyy:d! EN MƔ9ve Ҋ]xᡱ,lgA^ǵ' %^'s@ ~Î<^-HNs]`{FDh=TO e8:y{lD wKw,{#TJMU7oGKk;61I;{-M4sE_jK~:yሯ}QzNiڣ> yQ@nQa>*FN{_ͳ|T+mE>Fo| EłM콻%fEÝjUvC }ſWIcfYŭ.!Gמyْ _Sg ,+!'' +uAxNGEIzX*WqG/{=kuha&j6!Zgug.[wi` K Ak55ӆK:vâ_ii{׷n86%IpڃRk-\[:p}W&_`ߧpX @0 I/e8,BN!{qxuI" w?5~rkɭ޲O~?-lxIr'y ͳ`$!HC4rNI$$C A9$Ϻ iEB$O i-HhAD ^"D !TB4B"S<B"Oi*S!D !!H8#Ia؄c&M<6a؄&m\^"Bj@܀r"d @D @D @Dɗ1Qr5jDՈ#ϧib,F^b$׼$fP|Y%In!Yod)$($# oس$i"$"NF!Elo?BdB$1 (L0Y$1 ]#L0ٕ9&PȢ&?"(Q"d舐ʐ]$B2"d8*B"d1 YzM@$JiQL-JRxD$HfZ,dQEB%,0QȒ.Ft1vob$y FYH.FodI#YI+J,$i'K8I-N,8q/NxqI' [$lqΉ~y|S"Z^=Yz }N 8QzA^7q6dګlkcE1^$&*gU]Ai,Sjgnǿ4N7h$tGYX\pCR$}Y oil "^K/TKvJf4dSWl  MoY⻵4@ӹbϫw¡rA  m #>n';sn9xT[$S2٦ -~P)^Lt<%kNGU-Ȳ]? +X.AO,BbPvyӷ0xYY(M%w~RK"rxT0.W3iZP9,v]*UQ>h%MfH"b}%@)3>W1&ZE[v[>RW9y2=1)-G;Dm? fx|wPu@yӝp4jMk+Kfr,H0Vͅ'7{w5$:x3e5JvV>x|T)`7|#+=\?RX 0nQy_g2Ӊ+ -]yG#C;7sϨg~u^cWJ(|}[}~`UB{"i>[USU&x+G&`)>pdco%R@+g7SJ>Qʠ_qPGfћkӷKeTBLtC!A3̶w:@lrsXG0l~ #E4΍1>?Fvc'd{H>Q.=9c2:t\}חH毶HP#nQƸ~qt1H>7h=d<lm@i7d$rù릊`// Mo>[ ]rGî r!7]yl"w/,JVSQ3u32򒈰4Ϝt,\dCY~E`hH̷-nU6(^{3 z+rVUlNAT&)A=r򂲉͍VO+q2؇Eu {QycSBN.j} 1 '5V&%re[pL(}i0!$oE(Bp$.#2w5Mx4-ÆձOo̶ w_p'Pj8$ HaA.#W^b! 'l-AP~A"ovn3 T; ޏ.YD2аf=TV`Ce;s(Mض$)B2pmo3Zqz]%'n}%s1fR)+HvLT۔g6bAyY)^=yYsҡb~jc]Ѯ2_Y]q!$]S?WL@Yo\4- 7XUуR?+~VZAF'a47䪉Z7ָ{/ O0L68+|t>(8?A Iߍm݈rP~9C'Gm8ڧ fP4%*S&ɤq]Ɣ[`p?\Bwu00Y= wdi{ބ?)7{ҕg8}n[Q*=b[G&6P{篟 Oe]tABJ~gG35{2CvT]=FToDW*3!V^JE]Kvc@qa&}2L's]~10R-y e*݆jrgl{Q?iH6 IJ_u/=)!@h_Z|iϗV>_Z|iϗnԠ D7@J҅[#dԷ#?o"&M:;ǥ5!?7P@&w{U$A5u 8T[bT%< 櫵`$#t>/]nx2Bԟ}˖)"4b?n2 *OH ??qo~h#YB{8^T4Q^.㼪q0*G?yO WUvB{|5H\~ bo2^CLUўQN\~z.sdv~Y |x^=n\Mrʕӿ3p6y/r<|wzȯfaв_xX*zd|Ogk˧8&83Ifp+;pUpw r;0.t8lκk8}q4nz[?䗄I|X'6{XF40j; \ⵐZJ'tط:1Yb5~ JlRd4x`̭Y㲆[B!O"v/GQvL$;7Pm?̻+)SJ&vG˂DU!8eaNgBX 㭑 [D@bCV:xxk-)i F.Ov0ۥzۢUO]_o"oAQIj#| *x1މ߁{pp_"~:f >?&hau+O% >4ocKbʆi/}VIw~Gab7^N*xCcWk_ҁ͂o~Mr~czg~{={rTfTQz2…*y@'p L %Z UMC,W)h`=UXw[@|wɊS H Q5°pB=ސo/< cOq[tYWsQ; ;ιʿ_ eU !ޤq:;d!Cмg d*࿛Jj:dۏF@չXZ)CwDES)yeJ-G>{Z[{ :x 4ahs\\x֌_S&k c VnT B``]61IlV\lMɢ&x)0{^ "׫||zϸ 07R.)CDYlVh݇ }.燬򔩼Ѷ3D*m|f脠rB6Β^| {Ͼ&~ Z('B T:BZTj3h|t/(p.U#ڻ6! dY`:uy8";4K^k񳮷:;Z7e颤znf0㞀mYb ~qCZċKM=o])LuE v?7 5AZEvn)1Ά[\s.np($OGӇ-s;.g(K W۴W"JeΉ#/shA_tz7^B t^1Xq*fٞS|eŌE+h`/ i] vH,hx WCQoe%Ayg)4kqk : ruwo9Ňp&'c]7ocE`} .t91Ya(G j\ rapb~rS7;am-0pI( kڎjޑR6O9>X@NHׇ84F!lŽ, ];vGKU B?RL'9A!si>w]adpʚb+kW+W^Y^yez5uD.[=* W_]o"Ϭ_"G~Ó¶#έ;5w{!a=x2,Pֽ2cm͛nuIdxұ? މX;rq}͑OvcegxzHo:n/yi.}J>ϧϋcX sMFܸ븫C"vqzޒctZ~ý^Wyz&ҵ F8 _BJ/J1WrNFCM(2|s%xPq{w~AFl_1ac{զOe&QP|AYRf.H` 8̗>B0ՙ D/MYrsRMS̆'mvݸߍ?lUe<0m.[x:ndZx= Z|OA23CwP^ AvJ_~ʲ9}/Ɯ"k˯h[Bɹ{}sy`r 4SԿa ,vҙ a*m#b1'[q1AܰzZ̙72<~DJPG?c&C`5▀S.'`1Ww>p{y}@2O>PL{"_ &oDR7tY@7׃&@uL MDs@=~;0u={*lNNm q1pMmNGIF~5[)]_AI.(n) 3~t4^@շuPul$LӃ8.)~(kUBT,SțJ4q 34 W18w2 yb\â"^UYR*%~Ȓ²&d8߻Kkv@[)pI酒*Poz|Dմj"yW)@nkq׋j *PtՇkۋu-!'2at-ڡ-b$8. wxf]=aD{HwPI}+3?i˃zG%}0eXIdCb{(}μp4:$&ck^ǫnVOr)DcukAsWHtZ&End82 d֟ n ig6۔BҧLyeiP:9YNe :N?({ Oix=ЧU=H)A ު(zD(?ݹ5k 9Ŷ_sW%,w%.;z 6!]5'z-,NPTLKj߄ތA\S9󉏩geO:5/lz"Mj3>{B7ӄɞFrro6ZN/6U腥h0ڨqy혖,!/\Ah~Ϥ[R-] .ȱ"3Y{m]E.>6o]Purws8OQ;po A{EoPmtjtٜZ3nCyṁ?zH[v< 3U_(Ư*y^y*im{@xEa(s ׮ Ap(R~s:j쳜L+VP{r6=EVC c u(̯*k*q c΍:m[ G((ӾA4||qzZnNO˼a fZ;Kyw8-?2uyBz|3/{ɿ% D#>Oq>c k*!z Hi$SAvIM=A jmh9y^:5 /N@u rpvkqmC/-^vb?n;L%K5p ޓu5jZI7L%s E['|× K3 ^'+Ugi4wZ=HLqy3_faQ-Q/?\A3 9^P܀ot._RC݁@u2WА "=T2/@qm*=,e."DgKn{^w4Յ֏K@[n -_G^yԛejXHd\yxgr#P+Yk!.#|ߓnq$S (Ez-qDp'AmuPQL5eᔂV{x&}pH4kjE#O"@=aw7*5T>v~W7X;al]cp1w +LC]ҡd TNo0#O2!߭UP_֗G5PEҩ yYqrPw@[w\ӗFGFA酦rN!\j>" \Hx0 I^\8 ӌy.3:_—Wk1f=ts<DN)>,}Cmjh oִI5Z3niŠmVBGqY\5 bd@m ~2[pDndq2S$% LM7cJΣ~@v#;? h~󏡸NVnޞݖmVZ:V&:ZV:45?״7 W_Z&ZZZ֖TײBPnkBqƶZ: u,5L,5ooio1512)6;OqZt]]ktsOHyRYYXjR~ +LoQqZZZF5oejZok  Kmh k,4lqh Ҷ}}FF:fh5OH9(alfk8jX(;9[ZdFZ8@& m45+ryM-4M5,hX[GkmMtO k$BZ:HBo Z>0E6?xi!lb⟺Sg򘰥j i= [i&:&??$_X[$:&AQS m_V th1onj{ojo}7u,PH[]֜imaj?/ōt4wο<3/ƃhVNolUIp[Z %JggW2 &&V^A%th\jοxIXVLB_$,M _]B~{%)wљoYXXwܱA;4c8xWjXhhתU_ Wmf?k-P͹}wuvɻ:f#[U2_-iXjiXhz𮩅ZJ6XlR"{&kk;'ad ʿ1%A)dng>)SKMk݈LH@"گoei# _!{Mt4 %F% k\7BT]LO.9:緅/Eɥ5q+֊PZ 5K_H{ϸ"5A;3rIetНmZ.cwژKk9 %ΒǧrI졆Ѷi}$U5ew}ۿo>IK9vCzob7蘉oԔ׏X;Qly/hmfA`2E 1!`M~mTҼ8OϜwBeH|]3!YvWЀλC݉@ma;H*G7Zjg&aKhZs5l8>j8HrkNjI\>A [2k(H0~q`$m}30%k )Vb^5b&}>_X Uv>1 >V C:"QIlDxXB&c.^B.Geniϸ*$gLwʻ WW\e+D7T~^2xoJ肇q!NlI5bG++KJ-ަ;D_< v+XύPqYh'(0:jJ0;ARQ[3 +dP>-'fX !P!̞Jhأ0s7Xt M'G^ZKkW mhZF6?R݀dS_ tجadb$8ʌ4~ߍ_̨Ouҧ#Q %I}'%^Ӗ[N}uxT]w&:98T奻yobw?Iv?Iw?Iv?Iw?Iw?Iw?Iw?Iw?Iw?IV$<˪ '5~]4:)f~0lhuC̹$C)(A" ^ˆ7PAIӟ{jpM fC3!16,r!z~Zt}g)9 F_ _(e<#*  jVRu/p}bn |0si [$Sv(Z톶=wCe'W%xy18 _Rٷ;Jo/1V 'g Q5h.F>P_tnv`9;2Qrgz[[Jwnmc!0~0-||4n}w5-~4:x Kf^A[;ã"y{{R?*_1qgK'hjBpSt1XՆDn <Ʉ2D"jyZnUH$Mpg*ӾY Mw6&j&tΠy/e}92K{?A(| G4= ^Tb'4Tkc i/l$6Eg tU;(_y ~$ƟP|@Ϩݗj揸tH44>eOJ?t:bpuPY> - ^{PHy1yT ukiWy>[拠45\B4-`,V]LoMIU}|(ڿqrKR9',q[h;Sd>si9CkL˓LCͽkl2o+Cﻶ[L8P9v߆Qr}qTP>i,~Wf${E?ϬVI| WsN@ko ?OQ/ Vq}(dE` .dk$5V`ߔoa$$$$$$$$$$[t?%uo(RFY33HC h[%c34 4\n$lzoMx2>BU@QN˨7z|lo!߰LT/CMSf0g9Nԩ( =D|Q P8%~YHuIod;7kxQ);;//`փ 4+2`j.: uU}ME7=?WO?vv93`y2E lTqK_ԁbU8}Uƶxu#M6ldʥ3دe!Ō:Zj#)K_T][y=^}9.a\]rKis ~k h N} O w9x ~4mӁ_ɋF%+zQgTpo\JKvxrZ<ל Q{TQ >P@5Xk?V;/$Q'Ӵ_DL'Ї-gJNJvNk}?oiD"G/Z[CJm0.GU :XXܬ E^9ЀWK@3S⏪c-$T~ZDvθ*bQM7y#6k2(_{!k`nkiNtK6&[yD..Bi(?1.o2G%.nEGO/l55gʣ.SbH%pWjG4eshyl3yb8Ү~ϻ>.zVjW;`rQVʗ(ҏO3_wS ^VJ=.~Òٻ,Y;R h?}۾(mݛZ'"Ƴ}n17pPGK4/έ3l1 K9+ T"Kp,$s"{%$qt^7bb_,'0&sz F=hl#[ut~ญѹm3iٽ~pC,|8>9~o(m}gǩ?W^"=Ty'uuNO&WaԵ۟G"*},橣w(Y'wJT Aӈnm3ԉ)>qe}3\O~aR-׭r'gtP.^{Jk<͍n $eZBLP9U9+[Ƌ6R";#J7ӟ:֕ۦT8?ׇ ?G!4^"61^sa )OPeJ#Kjzt|r U?)kU>$QMYqbtˉFxe O!HH|(gACzM&Y?^3'u}5ct#ً:1Sp:U(=w2joj.H ZNomG2mQE뷊]$B 9屢`C^ 1!%h\=Fpt[Z" pe)zKt=YשE'5o!xd9i:Mʿjr,hqw~h-8puz;̴ ^DS.,]7oyi28 [4pvbb1^;i0W<9Pu*fdoQ mqs|D $|5)$g݆"+!ĕ>9 b!vE/>]P*rC/kEI Ʉ7ugrT߻ڎm(7`N%M5H j'ShY̚(9t&ƭ6Y@gw )gi?Z&C>Ats`fcSWzݷs/}J[gylpS(4oexn˕?}, om_%MG4=y)zc,O*5b.#s@ f/>È_No`EVhOC~o\آ@?-{^rՑZ03 3?^ҡE,[ )#qgԎy@״j>vE@8d./RpC޼y&Ju}Y< K܊CR]q*p>jޓN G4~7^Dr sCccV+:lGO[v7& d'E^ u8"s_H+='s(I.T8 :iGC_8xn_ 8ynn"xa/U{R{5`9tB#M+حӭ8ڞfF'/V,KOd1b=z]/y3Wnߝ>tVl0mNBUGۑQ=Z)&TT\x.^HNB\4i*s8"3p"7)7PW <4G ?t_,zi蘼YBBQJ/g T|jc<(qο +q>c(8*~) 3ZuM؊d}iFq}h ƿff A:?ngpXDT:2v)&n?҂Sާdh჋.1>xO3_j7eKtw΁B~|M#?w8ᡳ#T)90~wΤJ8ԌquԓҗS .!_UʵJ{o6n\5E:!a'wQ[<_~~f}|vhลsy4;m %7"uDpմ8zkMӅWco<p+KDT?~&%&PI7\(c&G>ue[zEZ^\+ofpaй>qkB͂CǪ^pldܿA?#3}?m־>]3>tbQ6WNV-so6B7ADSx鷕wf`+ yqPX=Ws 0ҕ(3 c{=>DIF\L6(bIª⣝9 ?HHC[rF#)R#B/jOə)ܒX;AqrHV/]DU$!wksqBg jZgGKN32R/0;!Ki Gc}{ѭkEwsZ޶km7ڶ\kZ͵&k-۶\k걛km7ڶ\kZ#j0\k"Pmi?Mk~wzW~0wB@ c7U$8P rӪ@ޓL^#0D@W@Nd B.VR:h*KڦBG5Y`Ȏ CuG?y]­w4 eBvL3> R ř$Spv@ 3=h~A oqu ,]6{ c"W5S;D-^6 F6IlƮp#'ܽqz ))xF9%P}J6/Wƙ&G%(m̫cv#e[CuˊhXt#]-ėZFq ӇOknPsqhW AtTʿ` he\iMMԏWtP,f] 8q*aꯉ@܀,gN:O;*VIRF0[@RgmOOf>ߥ~OWP-]z >̜<':.l)xi, =^v?r;[S591`OW-'sj e1zn$=$8ETAJk8,,Ia}S\Ku 2|swYiőf}BjsIcQv M$Bgf8ZXc Ĕ_@J’wMegV0'goZynpO`of. #ůh!Qٓ0LK5ρCxoC( m%||{KC.;'2p4Ag%ggezP|f6"v1co5tUEPta$@_I]ZD̩yM%BqnM!+*bC-KчBGn/ ƒ+P &L./ui]0FD$گX'm %B+le)-e? ?)@ʪx2VL=CC ~_ s{,R)ޞDH8)~sx}WZr$B ! `6,JP\U;[vH'=|=dz—ja:P9$i @CD+ TGzA9ڶ|;ՅWRf"ڼ 7Г4/?̂Cr~eDk?'s?'s?'s?'s?'sw.B8UBq%r [U_$YYxQ͇ Hh,sI<%/]!7B}sf.4LF@DĆsoe0dcfgC?=2h_ߒcE oÔ?xDcmtO,5C*1\;Ϙ>gsս0 G%] ,ꗮš,P$;Pd${""UB+ݗA+s_@s/гe)|4rբN$qzSvڣg]ӛLV7*t&(T!V @u EiK tߤ ûP`1>;3`upXof͈ к7B9\lO!3_J0e/}3U@Ҿ<6p># B_z<9,E_\ɁjaO>9#ȸ;~ۚ{ __$@#~:~4X0/_O}?;5C9`T,-)͟Cbt0(YG(JŃǷƁh}`6(VXт8aPTV%MÓ ?i֥.ր:߀o>PܞmX Q7V`gؔWfxR%eh.kYBtJ[R VG+8 y*u;Ow'J_}b^D?bZxgy [ O3i ,sR X1ܱ©ƫ;oNPp// }.\hŗ%BE{s:үap*s]No} wxW) %2-|n.j-y`$d6AN$>z J|uPEb B҂{iʏ@WD{\ʨm¡ם>"qHjBӬ{ a$)qDNu>Ul j=%B5J3 aՇj`w lsAkZ; ir!sN򝋌ZJ܄du'ZFME)e N^A(;cܠ/F ? Vr1̤BI$F@HM;~-w Ms7!E{V>w.oGK>=nWo ^!: X~o4R Wq,39|,+n.]úB_pq)h|h[O; UnO.]j o,_i,@H3Έj797 6ŒdZg""~F 1g?k?N_ YEQ͖toyLBkנ ϔ:NGAՌw_ QɩPJBu婗>|W=dϜbpԾATAk:zNjUA  1s.iTl<5v'G9XPg]Q(| Uo C $/%#qK͐c/kêV !N|}@CыuTauj9GEE!J#?Ԟf v16xsGlpK߯ay鋬êp"?6 ExV=ZII-2Bǐ/ 1O:!C0ͥ-/qτ<~IyF!|=/s`ޟ|yȂh/4V{t)w}8㣟W![}>Q*bn aegSr3c߰?׭02z`"1K~{5PېXdYw#.w;SY8@8cQǹH`[0:q 2o8@_ft H֦AAN@sQy[B>.|]I@YG8i_[bk}+wj6M--sgpᗤ W<_li&.|.f~'d`P*wmxӞqò)0v 7Z]X.[w!Po贋"4Z廸@<5NDkg/@7N2͢~ɐ D#`Re B .ѵcj6g ^ cWjerA 8{l5Hn/'j߄و:j[}.t-z*⟽#%̈́SRүA<.eTRTv,27_n,Ԝ;U 24f}Qze9}r^בoQN<5 2Yj{w^:6,\K?*u Yi9O {},WTxWTWTxWTWTWTWTWTWTWTy2ۉ7|% n7q; ݉ p\7U"`2x}mnŀ ?刱iTĕ^àL#ӭ (m/Cn1p)C6('`f$5/d[ 1U3^)[-y7~c1z)`WϏ4l%~so%6K$;hUE^٧֫إ3Ǿ @$qA0 Ps%\c.6\BKfD /uJ S?iM#)˩C^s'R#]O僙sy\L{\`veu2͙.p5sfi@&FJZL7 fRrRN|ʹ/`qF$` . aS K$Gk _~^[%(-4yIQNK #g_pw @/хLY9IטTri'_a?\b^BSh\ |BmAg!/cV°'?05v~mԅ#Tqu!a 7p .?Fzj#-gߓl8'aZL ާcxpݛm#g uL eS3ʚb=;0.!b:-N^Bn;b䧆OՒ \"} €W;mp#'^8-"Fr`O"wfD%{ce.Y6z^'@?>C ?,*o3D _cCl GO .ޣtjt/Gvh]U',ťX?Vp 7]֯obiETdL7PyHzeMjLOSsl:cףpa糉wC ,sf=f!y)ksg.^Ί.T{^\4讽5Ȍ~q絘^>>?7Nr WJOz {K<h j#Wk;RyvYj57,Wĸd eۃIO-N'l %_;)(=9x sHȮwg8` Xb+-\卽?+8LL(%lP>}gg.Z{.z[.ouaq?0u"\M⟐IM^}M7ށء&<Z7[o0yKPDW]Cl Ӡ v=C7Qc͚a-`Nz[B8^Ğ #0P&޸l-eЪkcTLvuG=޼Hi!K]Ě1Zp5+Z4^H|F+y Ҿ*y& υa[1dւLG .1;=h}qM'>{ CQRùMTU1x/)K)/#BƁ-h"w+!hƞ|$ B9TXY يĭ?oTFͰ)ƒ [c"kɲScI b!:6LCuZA"f{bii}i y$7~G W0# Ç1Ǧ(d"DFHTUQ})ɦBMoff4@JRc!rMj3d%*x#(N 9/yX4u_Nv'Z6;xP}C^!b͟Zq0E#^7FBƩUx@ ?#f^Z9`WdeKΚn찠J}Jiƃ[ __ң|tXp|(`T*Hj%8h,+;Z{SYUIFҔ,HaEG"Ua#zPb,}J/A,7R󺷽Wh͕zփqhayU3TGn"5Ɲ{0N19e)/܋ yzgńGlƚe_.+ ,,T^M_fviyx}|Y=GFhاo}OԕW@vYqDӿEi4Ama8M}P2.apOL\_=5T/b0ZA?Ґ!VCr[b+O",mtHۯ ygۋH_eI6c0 呩 )}t1oN{OD'|O}C\\p`f4\P@LXAJ|ї0BYgԿx?D~I=g.f\KZVćǑb٩ C0% *"aAI[%|T k B@8KtVeDk 7/amGCԶwBpUȾG>mI (F_"2bHhr,D\ϳ[1Cjf{h$tڷ_89gI0&7^ f)'G!yjsiQ,)W:kP6͍Rc~EM9D[(2Ҩu A?q (2Wc)»չ+~?k %C^4 Fh.JbZtFcZL_"sZw1F*j"=놗l$U!۵,A\Y{ wR"+;޶؅gW0Y+j왺t8]`A띞({u"2we|ִ*ks/DqzD _[\ll(yl"ǞMn\3Oq]" :OMhּ`p1ar^7>Bx'=Q:#'ZCnx|FЃ;jc!҄Qy"G8 oȒ6aE z |G{xu1rJ `nvLR.6vlxnP[Yj:VyFXl΅!o&  wgڍ;oSO'֫x-=bSL+iv\v L%2MS X8:`οJ[uE*嘞(c ^C8HĦ"Ddߐ~C`HN(̀ a1 2qŇ]SW 1zo`?`dw1/a[*T{$L[ȡK0)q9jd}~7}H(IXA 3_´AΉ-`$SO]y+IFv-l[ s8}I&8&CtDmMJA VBxCgh=DnV)Xzmcd n1z\bܡMNJF٫g]uE>j)sCEVEa6g|HVλqy(gIOO"]mJ$1ߛ,)z"ś! {fί7z{fAC݃jӈwG>t!J@InDG#޴LG^`iZd1"*$ab;;`J㇓}!%x԰~ABoOz<3p;8!% x-ju1/gY <k0fsҹ{# '[Tgi\R)٨o&¸u[mՠjxѹCp:WYH[ =]O]D- %)JB\ς2.+x72gh yiʺu]24 Y7pG-0? Ah LN :>di>!!`iOCr!K.EC.WIU=.AZV+<!WO"iH ܪJs(r|L %t}5՟ T?ӟ JON#Q>Q"} "pH)fZv/q8d\Ddؑt>p3Z V{,1S[EљhLIIFNtQ)%$: C^7Zl|_"A>:q9p7 b,D혘 ȞFt*x7!R.S’.be> {Bysp 7VC>sK_.ϪTpKe-rC {>tlI$iQʧ-`7# La0 /_FVI5r _"#"͸ݙv2i6E(>s< ^I\&Y%`" cpJ3[K&ĵ[wYܭyjFg+N|#l8C%%t7 H"3cf̞cej.YOU/ |yBǑ#qqͅƘS QtN03p^ãHzD/mH7-1!R#Ƚr&j;i "kRﭮCuZ%5̒lcFA7M)Ep*- ^|?<+4Wo vfo"=XF*b}y3YQ(s\qct|?D[b$+; )sk3nߣ}H?->G2 0?6̨W0;6ޮ\ntgfݺ1,=5dp\'$$.a #Wh0:Xx*9m'h z=*^>!\!L7ն!4Mb"?[b̥`%c~gG:۠Gy<-bٯ$l`(2's 񸬶ZY|m7U;rϹu`շncHuxFuӷ?x,ߢsf+ Yj?jt=h/+s_4;08EAXRУT5崒 mόR}z#ݣ#h#O :k"?!MFO-d3y8[ n7?))&4\D>BsG.1{ \W>Œ0dC95miQ2dtog|1̯E[0f -Ov 1&tD蓽Sl|ȰȞdDBįs!8:cn/?~DYm=9QrNqNGd$,1 HZjnwH-qcCڤI2jkF&1f7\+e]?TЪ/$3*ǑMeTPvUnVl(z5= هwzF\g΂+E.7fr{_/O*ױ#H8/1MmI ՀIa{P,Ǖ>6Mg G| {W-/es{_aƸVFMP3`&hd#ˍ\xŽ2ɾ]6v݇"v}(b[CEKCEPCPĿ$>e>P"`2x&ZN6 J`qSC$k %/<ž3͙#$&W* okAZM0`S_|sΞ;=qHpKޣ৐kO*ĐߵŨK/<gMJӛ{Z5aH٘˵ϭDEO]{YmFHgL!-CO@[cQFxOd97p_ tgNQq >'DE9nbkn$|+KFs݁Јd0Rr\!D$Dӗ% toE#:r]jF$$8nnz])O(qnl-tnS8֣J9AY4Wm<<:eX}?8, GM "^z,ǐϝe1 Y^$4sH$qbv [.:[Թ< 53l:-д_S=(=Ib?l ) >p1q#)T45y 0TNS8 pA~֖-~Kd*bxv9hNSC7&_!)O=n*5wΜw,M&")$az54977{޺~JWeS<"K24Aϵ 0Y9W / *qrJL UIZ(ȡ$R.l RONςHLۙ+cOQ|I1 <_Ki{^ß {H_<0 OXSh Y.H I=I8AnD7[:lj; |ݞMi)b_XCwR\;s(~" El34%v)ʞ U]GVO8@tD4x!͈iyv^>jQM |*~wQp}-w@o:=r>Bf8U"b|9RDvD*kicAU]i,W$@.40 t5o:5`f|C]1.9؛eׅ|B G!>ve}%/Ed/0= u0@Jח/mE5=~0s&iO}D,$g+\\/ؿCQRȝT#VK@`B<<\ [_r&\ΰYCft5GM: J_Go5Ufhį^"Is> =}ՠ$냌!Y/eȡrtB/O~˫g#I{d P^L!taD0\ze/4i(3h{f݆K% ~cD:Cpk7VM`=*L{z cρKIu?k?GI N<7&^!g^>uHRc~Lp-6CGd! >Pr tsH߃ x+6}HC&g :Pgk?$ ~Dj:P2.ޘ:MAYÆwa .J<-wlnPeʆlda?9QɼKz2#.hr: s>Xj/τ~L_z`xz3.U3Sw<,ӅK:$_@L̍6T>CU;$IGm@LjgUW<9QE_P/t'hʯ@4ofP?b Dgk:;]}ל_akfI:Ɂ$~<:Gm^{@,Aq!"ivS>M}o7nvSU|1+ PmHtS\r!)[.^>c)A"oRgI +D]wmkSKnL<6lO j+;b%:6<&d845_Ϭݢu[g2D\?42}kܟgC#"*TZ< *6/J:tp"7rsCpBbqJo>zw{uFL%'^RM(T%isԆ]p ;sI",x @qXpN}G 7N+O')C{8IH!OOSxԼ?yP W \RiD]9﷔fK!*Q8 \9m2*Q=>C4ATOf>wV!Al9TIOrF݂W27?ohSB?6[#)0I;6᧫,Zoө4x@ PC?5 XɃUM.ElBjU!t]W'}S|9x\je"$S,82R|!WVKL%4! ޹Dl]د A `^3~ oJT 7kʿ_{J[QcGcqZbT}_\O}mLMsUf0[+= ~ 9%8~oZp$( ('ɅVkhi=~qXhӣ~PgOGg-= >+xye_Ȋաqqϟ!-fv:/͘t sׁ X:2NOm.Ѣ؞;]j2671,g8tf`b4_81=$3D>KY閣t!ڒs^z^xNگSLu!^Aeó E/>R SƏR7ӿzA8k̵K$r"X_K{d]-ul脠bmdhqt/NrHrvOO8)/^.&6*A2gRS0rBh$y]/yҬvC)-ν+ߒ$x9C6:ȎJ~ E`JFQ#E!{x%5σi +GnU\ܩąBY'NE`r R+Y5(!ofp?-NwT{;pϜFǙyN]+Y.en1M5~׈EGh"=9I-S?!˨Gu g,!3(M8]~֛FS(NV/z/4;VEN nqp 5*)UP##)r3 4W" aV Zf "=ZfvG3bqRɢrYֱ{OH /3\тz__vgȾ0}IqlTM㖟Hji6+~G 7GnÏ8KPy[:Y nXs?s{r^?۷SŖﴨC7S*|l@=y2˓:+ fٌ'qy}wx84L RP 04 3?GJ_=mxLL:t 9zVgq[zwpcn(TdYP6ϛ H_kf"~j|D,H權|!&m;5\0VW&"jA^cRz0{(O6ȃaPxb.d\]ei=&:2ډuy1%z4'`~M 0BaKs8}Ox={,p˫oװ\WfÇlԘ k}LZyK0+wk8ujFjUU6xr[,3!S2&)ŗݔܕ|[t7~P|Á'k|R(yZR f.SߢpqhLA~׵󟜚^(XZ.Ad.vry*lMj@zEBU}xp3= _;Xpj7&ḡFOjP9({h"=<{z+2֏aGw}2%H}pѐ35?Eˁ7ei/ is`cȰ \ze>rYJrއֻO9K@I[Eu'\:-w=Bc쿯rxhiw& nS.;uSմ7!;n]:hE ynHt;E6Ĩ($))>i5Q=r2@KPK Rf-ZERBEX*b ERҤM[g˞7Ǵ3DF@>~-YPtY-zgqB%֚HȠ\TѝLwR<#%y8 EYn|S݁4WJi}ƙ7{ + 3嶳yP`s{~ Qr;Z`wMӞT +=Zjr_(Y:Z~3u? ԝ Tj m$+x B$kË}[(SGWj[{!Ͽ4@, z֦پ Yo@zP/)_\aƁuj*G@O/>7~pD@GàT^][ ^_Kt;ﱃ3G1}aZOj_9P~JoZ8v2Qk}o D:g`2{Zy莕?}~>-x * Yč'C U!# \T)NdIzq _i: qKOԠAMU/!N1P m47 N9M5צZ S+M|'XjM' N?6(կA ~E *oNqҳ /I8' vI '5X8@l`NI>8$$T3B婱nvh%ya 3|(jL)H~sUb$xZo:~A'K /TvO'?xμ'JB \v\j eA#PɇE+^~Da)څOR8%x#jpMO#_be#2l |ې[Um?H6? U/L8Uy~$m-Euj+*!4I{[fPu1矐]S7 YEx1xKY Ω0:-@89C7S[?΅r! q^(~ȇwꖣ*Ư@%О[3?ۢiݤթP& 7G,BDo UΛGa[!Gp$^!bN7'8*`±y) 7|AYD7@BX?4J z ^e0^=k*wfNyv DZ yk)W[ cuf1yH?^1,}nAg3D0fqH˒"Oȋn17 VC)I^{:fN<T2jϙJd4xU 2;fΫc0;4ju B\o!ʉ(7$K) e) G;> ]kV(#=Dt~/ElQ_/wYPn'&ZŸ6 [gt |L_wWOBW5|6 &cR dT&o@qhOݷ(mʏȫl 􂄆OWB1黔^4_ tEU(fV;>CP9h*~v'ox^+?^8g|Ptqi«sk*(EץD/U|h:Hd'HA$e_^K >׋G6z7ZhͶQrRv=z'Ar ̈́ =('rc!Dld DfvE댅QZIcozozzzzzzo?>07L~!UϙO(Ax4QQyJi&uZ1ԴSzD˃H{i*evInb@_}~=-!o?l<9g[yo#.m 85v to##~`׃6!L\9ή~A.ޟCf&m3`C"ȷ C?R8.ve,c\t?$)7wܑ21p=߱PxȎӤVbM\䠌=<67myPsZ[e,_xEOHpS{[g3Ku7mZk(Di!"{76~ 6; 5ͫ-»'%pĭ1<q ggk!Fp_~xovW]4&0޳/Y]GԨ.;@M$#E!F1CTn>/H둸ozR0Φ,׎=CdoN뙦[-ē\5g:ݳ(u'\ ^}_R;#GB#nF343AdkHv=Ctځc"'n65z/Ss#0|t%k0Bx"Uk^2Re6h}ϸ[> !ր 2յ{;yH>%ڸ6fE-G5Ċ^LEGBNm5Y!SgJr;ͧp(XE(~˖eaqܳ&c|ؕp q.2qmk.m!NȺP`|\H6gڼ5څM΍%3! &0(ٙZ30/#g;ZZYKp=b#ƝPA8!鵴pS&GNFρ>7d񛦌~qޓ B`Y}ϘN똼3HYpLD$Gyta&w)=y+Ap4~G֧Vl$<$<ڧi}@Q~ $f NŚhLՊ2E4r Oұ!TCrgCrc?3ﱧtOt!oaP fji"jx1ǙzKE:q#5Nf+O}cq3c,&Ə Cg4Op847rX! ,N9o`E0AX9oivM>*v,9/ڥbƕu#Z刪Ĕe4%pż(N]`Udr2Iۦ.94]\%YoDzyHE21)4j9rl5.*F¥v$ z:;ͥ}Y]W D: HK( &Bɉtdɗ{xʇiHLB$Dc~҆#ŧ؀#''CHG ~u9`VG"D?# Wq?=]= S)ſ M/bFu9n6 brWҙ˚ yie5i5=tTQ DO1>#bv8ŒP [3CM#03-kHyȭ_cQ'8}w||xy.%e~g `z+w#:ߟ(޹~"Ҁ;!4zQLBzrRbc kHrDHUc{#A \MSå=QL'\f&Ro=CfO!DXL Rጎ9Vφ[/6F~aHCTw4ݺIHQCW?{scHܨY`N &=Y9zyA?.(Pv}_Əx3q=1zdyoɎX:I0u9/ʎ=,X'( Y0uQX`*o=3<< !oCG6V WL-vP8yKnO@$J%F^ +@KpkKio _6HBݟAlTN"z3B^+:֘d:\ϻorI/$ݚ6=`zKn@ڷ ؚi#?v{ o}] ?GCtGNmA^HA|Cf%4χqYŰ%{-ҟr"W"hv|E;j jm{G$nP{k2Y^T(GQ!֝+*.N#l龅fu>=Lqݖ,y~~D}trFUF/ۍe`j֯D4Wޝ;`}QM_5oѥ`bӽ&pfqw yۀ9yYPB ٬L-lWb cG:' ΄~{_O>{() ?'iLϟ sPm2 {<8M32!;lȼ} $>?AnyPBpuѡrTs߀->c 78a`s Q}vr=ME(~HDupOyט3pA#+A4umQ謟\4Q8[,c|: H4~h23-py,h49Ө ܳ S~ڳ¬KdAGePv̆ߣNǻ69v9<%bsWY@ꊥ[@).W4׻t"xv:~a Xk~F =~͉B*~ )Avafp,C ~Бb.yA59)mF",~h PwGhIoViG\"Sr8JLvl_[]"}]f5n1.!L!ϧ.*TtpGn⅗i6w߁eAS5^XL'M5zRcnGhWw vX:44sY|C 0iq\pِllpFCjk'{H}t\ji޸Y~6 偬6( ؛CuHnAa2|w#Hg3Z ,n)W@XU,M& YkDƵ3 Et ϣ>|l(= jB}V3G.Qz_!7F052E זBqJ"v?CqiE v;{OV (0hɸϦP/&1{RN=C *\&q;rbq>A Lϱܫ {lLe*8 .)QI=V½~[yWl6M֩03]4( &%g\3Iɉ;m1>&*b]4$ 1TV衎oзwfv$Z5ȻkHz֕|{+/BLXya? []P+5UR>fh3@!*-ͫr K6s=ON2TF<ɦpޟj6_oG2Utt!QӅj[-!jܚ)_3wF$c[hLJ㵚y-iI|PJ:v4[ﶜ!~~Y_%[yTdʗσDQbYkjSr}S`&$q+̻q`Úޥ ]7V].`ۈ dF*yk0cWpw]m /:Ѵ#t1ÕEu/-F%)> Ahч ( x:6ug[^.9(?N|n|-aAgzSb77٘[Pf8 |G5KnC$i>uc^4Pyz^7#+bQ3E\/H.;!#G-<UxJD'3 ݛy9HBuwI4RkGB6tb=7L9Fɸ.;|B9$8l> *-2Pu±'3,_;R~]ڵBylxpyL})(w!;zLԻs쨫xĄ'nu%ʐ7w? HC2ޫQ! (ו7ʅK(E1/kҸo5t`ϙh4$-7 p?u}vUz,oT C{֡zgLup]rN6_sC5Bo3~7( SRro6ߘ`~Ө>lDȀK5k-|Uq[1?Bi_&DO"MGƑqsnFTJ.ftƎg;4ipCrzmTy[&ppM7uޭQrIB2E lO5,E&SoܰAtCLD%U]fVbsJb\`s :T"Jp6DΓrҌ\Tu_ZVF$Up".toT5W8+FyHpsc ~>9Jߡ* H-aoDJ75FĽuXɂ^7iy|ʖOnEr~dOb}񆷖2ʩomӌݐQWhz#ڵYj(HPM9(DR[+${h_$T5adۊ}O[P<%0FVU]`JD48x֗jUcQZh+Qp\@w#A'S|yt{!Ըp:ZvVf&;E+y*!D\Ms<,tg' ‹Z٘G+6U'v~4a2g%7a'қk@$Mj{bdU\Ϯݡ:mUJKܤk\`m)EȢQ~j}nP{S"v7z(` bJt*2pj C2dT gF{w"MeP2Tˍ2.`F17@ނeq /U!+dއ0~ !Q(S[S%P21 ϒ0ju4brhAf7ԯFa%zf&$upxCN Ա9g~2C/;00] "&Grs@ZJ1f~(Tchȴ&q_E6H4D\Ag=Oe*:pi/凞+ӡ0x[pd\k/׫1wr!bBYȤ f0.=z|=iP-amY|{Ε:*s׊x@d94)ުFn8W ?^cPv^_Wn_]2 S/]o O+H"$;%_W MJBDhR^Ƈ^ǐeGvJ n qYa!,ͅ΋fo@UCϣg^l-PMV ;%S^@&11FJ߂ޥu4sZ,Dy<ٽ!&vGWu5TYó$O@g7+^C^xf t i4m)`cy̗.ص;_+C`C<.x)aZIY{nVH? nR*? /+O+2C[@/ [&b]Eip;x1ZQ~~n|-D{]Y"Gnv2|R{ y„ nĝ f E؏Ið8dמy ( fh[~<M,vܽT AB2gϭCBh o>Z'|@ARv] C7<@Ob?$Ψ:Hu1hNC1j=Dwn?LNPCX67P懫ޞhtƣ$);63f`hM7d@IIHc[Pi`d W.3VWDC/4P\9pX=J{Rm,iK' ,3?vF2!¹_&Ԩra:p+caeH# ,$3ڙY$ Q$uY*Zv+x>!ګV+?t|SM1q:td@'}S$X, n~v71o!%KU8-Q _l3jZSs)c,xމj<M>2W/K/:i ז,@"Z%Cz]+#)ҝgL/`NbO~ `W!A@s M-r<+)YabhМ}l:<2HX8_ U %:|6$mYm# fM= +~ڣ JG5_>4 ;0WQBd ~M/kЛCeAG6D6 RlqvG?Phl`"U=~Z} %RPb\Kv p_u% K&),CfaDhegm4 xk8lK.?,:լt-{'C~:-}#%:PrUW=z|![=Of/Em$($ e9cbh|WDfUefJ:{KӣɚNP{$3LQd .@/1|6TkM*c/Bf;i 9 !݀WkxMhSD^; <;Š 1&,@(/{ $)x~R;p"׈xYO 7j%hOGܪclU!EcWk^v8Ge~T~=9Y5viOx R BPvi{i|]ob{&]IΦ}-;A/1)0T"yeߎY2҄ Hyp c߽!d]bMw8< ߰W[YFMv.eŸ́P8%#i6*Bً,8\~LWAS# /z*V>{q?J7 k@}h7(/? u{b~O DÐ?]DPlk̹:dx5j@-B{-H@/kUCxgm?yn+02zXP>fc<%i jVX8AzO %VBrC !" WQ$##P!S1P(+:K4u:CzHd|4vLxo [-T Kd'N*@QP%ub1;NSG,Mlmd>{ /W~M9".ρyU}? Ɉ6J F𹲞ퟪ< {VZ>6ۘ]^ٴ;ruՋQ'5q`fON*>w oiE[@աDG`޷i?O&%y"c6;] D#𼜟Y0=R랆wϜ39\v9mfbhJd XpCU l; l 'ӃXYPfy#GطN*UX]{.azy*џM&Ccu/$)- zAs_fkdNJ;{@ׂ&E.Ħ7o*':a$>Wp84Md9·Y>B9^Z?Y -#ںg'hr؍|wH"SCK;+ԶGrk ܭ-uzC0>`ZtlwJ= FkAV#d[:w ӛGM]]>aV }hrk:8\\kAaeϡ!0j9S B`5b;-L@ZOVnߺ+&czazsyCOwvη+zs$|n1@BWa R_68=۟{YY9s`ީ;}k ieHóD]EJmM]0\KGUjIlXT)'$ϯ a'C:(rXC;)4M;V<3S7♱nkxsd,N YmH;A@1n*>虋n_8'MM 1|7lqvG!< s Mpwbw?7jeRyaAЄh[=>b|Ul:]8 $h[ڏyOO(̦LDS,[y7 ә{*= 2`<'e_"'"W~/NNoNֵUTnWgvѮG5deqN7쩴*ce-U{$˲?^*.VrCQ0:W/&S^CgaVvQ3hЪG>ZIq[Jfurl9v#Z;|~)&ρW^[S=EOω vf0i]Tl ] i:9+T?Yk M PFӝ(_)O|8*{ ES{?"/~̃ bӶxH?{1:PR0u?7 *FrT}Xog~$z#ޞ3=$|qNm;d{/7{#ߣr7IxuvV>;||f3)="#,=#=u讟ެK{2 nY^e=AXHE^m)-6 N#(z@BnNҸ͍&'#nb*FJ^SiU?Euڨ֏oy~f_B*R<-JDH3\b>^i$|q[cX{ewvȊ0 O@,x] 3IADzd̨_nuB`[i b冷 $h;q]%&. 9Ng <9sԐIK0M "J4yp#9Lj^DGAqǝ 㧘aUޕ Ͷ.0~O6fOɖy%NUwvn6 䶬; tbr /|6;,>BPaPа X!oT-15|%`EMoдVC>:_^*!/$lEסGbb>D_WaQ})x R dD;XXBCĀ7h %iJ7{h~T pz;RZ\`-F.D|v Ĺ\xٝ/(G6 2֨s),cx5Ch+i[ {FAD9ДahڸxS /ÐMWb"9-reswvA;g;  bhY8uLe!=j8yJdAhOoh)< )u 0w'@[!ᨶ0GٌO^~NM`uuaMO%:$ZT ËcO_Ej107 Nʸ5VƻRX1_B IՑ n}8As7vo! Gh}7"uP9?2 H&+1k@5GH|9WBCHzFX  Qb/zY`a 󗒚A>V\֮_+a Dc/&3?oz'!QY،\s;lG3xm"Rs.A ?JDg(uyCQy|1c簺 J 'vQ`zs$WvACO=Ɲ* ,7d =R.X&@Fmev/MR ,ށ.5J Z̛xʇv~/8 d5vR?@ʉkJqеx+|/ɱ }<3 Bb.x@'Ppv a|jq,zzkLe\Pu56 ;ҿv&ʋ+sВa)>_Z`naw0$!TZȍ0KNԈDe@+P\(H4AYgvEqxEjP1X!B[7ًͯ\8v(f? ]\DNdbǬ&3ftz[{=q!,F0k5ƱOC'73{DXo.ϫK$ Ǐ@uaI ?{T q\6;YtC{W7#*/#zZBt-˧?vA7KX.al!^cz98 q 9AÏIK妲҈`dt @9BޤVr^|9?4ueq;G>Bm0wA]|e:kBqHi~=z-7_{^}@p ?v)jB2x[L좫OA$>c֮>;Z(q<[ |)K_~,>9 *(xf?T=W@>@D=t7~9w›S@ q/mL>9\00^ T&QxC.ʤ?M8CM@\#k4SIF^sdtC3Pz,o"/Q< Lwu?8 OM-4誃h'Us=c 1{L+3X2pM_ 9iž1]DR#%dׇ/l5kdzSlsќUvWf|-g͗@9k,?';D|"FH7+Z&v񼢇o| gšţ7ܞWR#6y6y q|t$T p /p|2)fMW7e154fo~@ d Xb; 97~JFr 'LKWW^n0H? @7>ㄸ犿"c0 >넆<@&^Cgϳcmp$\IJgA;i@ii`Ƽ!ƜL2-ϋvw@tO{cl|2m_y )N2Fh94Lö}*fV@?d> hz7x2@a4 [;󻇓m1:>J`# I;EoCƸ}ӹr03{ Z0+n3o!3~=a{9,S덟O"z!صk ̧"xsAv-gct4i!`:gK8C!4ߌG}=#=#={zKÿldbSHUcc ZB</.$TEpi|Z Y57OHĆҴ?s+`/6jJWDly!6<0?.(/ JW X5 >cD#dsNKi_+r]e?ڪ5χ fVF@-n0Weӫ63tϲÕ&0}V; ZQ ^U{Pm&kѷTåR{V璅1V2'AU tz3<Lѹ[H#AC7xS/djF?#\zùt$|any0ZIWT܇齩 xʵ3g-3p'B*q3DYҍA2{j"a_SzkVhǮT-G!*;"D0 z6USPa#=p VtX՞꼝SitǏ~q$BbH^&2cgl;'Ldmj.G~A ~:>vo(k'+2 .Db5~2=h&{SU(<9%M ZB=U̐,\КhdG\=Ţ@[DL woPĢYG=}f)v% R߈izI%2T/Pԅ5?k 1HFrЫ7DN@ﰊ@X& @"THddTc v?8^I^?v4j^TPj29d~B\8gd}ѧoVOIiy9a̬3{w#\*.77+W* .w۾H?P->J02]e{M/łE Zt.ɱGǞ̜]HM䶽sƂoടt-rQ{PAGA'Zhxc1M+|Q_mvG& {%i_O qԩCȎ b0$VGhiEç?U}nr`^'Lqn%|ϕrdj[HKI/$_v 6/f xNB:~&$W~D2sڏkG *א_ <}aW<=nN!6hP  byi~u.:0L,hWO07Kᄘ7nƻl*6\Þ'$˔в"&?RWT⮫E_lyx ]WrG)tZy{@lS96m+H"]zS|!X~ Ҹ6sFXK9AELGm"8ގgO41*}Fn!H1k.(hЕW_V9M@- НΒzpۯyo>2[$>E*>9QD`^{om%mܘ,Y+ dVg: 3̒T̎qh":Q6, f^N{,qtzZギ.uBH;7Q@xc K/_V"+Dscjo{auHWP8R6N7O55Ƅ˻uC=qtr%Dljl\@0jqvt' ^$ǜ`mF=L *AdEOTaba@nL|(7P%?(Nzb>~&^ FegKHaCLyP4-lHT}kwF~֭žB8@(X}GIOo{ cJ,+>y-׿U&6F2g5g"Ie^3$,4aM;E2jHqD}jΟ*J8 ye%a灾D3eΟN+>ôs_D(lzzND "~}=;nz'㪟%~k%}X oO(k8ۧ8dɯg(qR~J@Žx,\2J[[Ip4^ WEizc _Ek}˭ٍ&uS.BxT޻,A3bܰw QrCrDe CRh!MBT9vZ)d:aj>mE㏻Ӑg}Y]/DqVfBӹF3wI ӯ~J-#On ]M_Cz] |ۏOgF(i\ RH!Uh`f;hiҶC_m׿(Tٱ&:x2T$5:%EpFEN>+zWgVw57d'O]ztGDJ(~ 9d*o 턮tCQ`<A \/^G?NAӵ1#ͧ}^CvrKC+5nGSϙ^4~r }f.Y}$NޠU}Oqin勲hKJ spgC2T;@IÛ&Ʊ#'भR MPՉ(MeţMM*>yM.ܧ;TﲺGue ~^, i:RᰧxLDOXsBVY f;hl&`-&aְz^zw"(*Nd[g<3ZPT^Gk_!5jgj 3T&U.E:j| :K1CLOˣ,% Ė7fsG &o_?[vAhX= QM՟9sCPޟ ?t$,j^զ@6FMw=fDDiV$ߍ|tT#G0{eHPdȦXBojK̷>8 nejs;{.7,st1l{lhȏ׎%txj y }ɍ qf&/~޼[pRs-k*$8׏ô^(jƛDj<>8z&q%"W$BlHôoMx| P) τ""ٕ`wӥh}zWW(A_38r)*{ |w ]$h9JRt\{$~CWwg]FŬhncӄ}tIH8&f hu}嵪3tk}iG/s?9Pe:++} ]xe m#`j# k9(9':T4QjџN%|͠2AoPv̌vSby{k9\S&;r/g 6DS =ծR0S>qR.!D5K!)2C##H&/>5:!_LlUp%{ъ8{Qâ)ip]QW]0 t^|Ah7FsA\ Jr$ "NN0}]3"z-vE)g,6?3N =cwu26MV*HӵzMhm|ʇ4$mA{Vq{/;8d,VUb..~ܡF'N9xne2|u8:Z']y5h <8؄'е+cuC&RsӓɌ?8z[_T`\1jq(Jtg'{#-) 3I DD]W x;JUĩOjJ`awo.3ΦOO}6[6~r(څ.(z3R&4˶ j;$%T.PrFA:r9VOOaٷﺻktX<(mx}6≒\4rz.2~b+ $iUc I60ןF:3?_Kѻ{WsaRݨTb},Mh#K ͥ!'EZy6]pE49(}fV0ۻ0>d&' 5>: u{ۯ #6 ݓUIr a'/n6?!C4ƤQW[wsG0kF #Rr >W,!Z%ݟ:aɉcbs0vЭb'Z,;ŮOFI?|u>tn{*5ԁWӴ A h ZKTL3J ] u9//r/s_q9R h-NVqF(k_a<_ra9Jݸq @ɟ07Q^.E991(~VS95O }3bR$6KR.49FoЊotdgFT}T3DA[i[NˋHNpyrXxb`_/b̅$Exb+$GSQNO*Ns4!:rJժ%?£4yPKGi#w]'CBwAl[R\RR\fzYG6>r r=>TK%g.i 1W-JNPcD8C9pl{[]t4p$0LHvB=MH헵;g\qٵ)ȍMBT8\LJ._T XxRc:h4ve{9$C$ZyODCcMdPJ$-Y =DĮ u$Qzz jZaG \fOG#^`:r3%s43M01=~[?3D%v(Y~1M"mb˛A KL{1W?LqC.&~!yYioYf6p"u鐨JTIV?@,ٗ`}x23T`tuJ?^"Nҙzy1Cȟ$܂5Aq'n%;{ ORvcS'O~ą#kR|p,Qg+f lߔ! /jZcYq#E=USN"?+ϴ)'3kE )duHZ:O/u3>o4B|E'lXC\˧ˮT/o@卫)DφSv -ݙqs)C ;//띆^ ^C6gvVg *z+OO-!ؾud,L2ačzˆy5vz0c-"uQ֜@߀_kRRe|UR8[S0ZBVMɯr`G$ctfM(M&03)~0ۼ, f hI>-ni醆3;~P4]SZU#9bߤ8?D>(E}T 5!71 LǼ\/Oh75,/ЇQcˋ1S- Ex?T̸@< }&KFjr^?Q/ƻpH-vh9h4B-]{Sa"údkC9',vr$тVkF7ЕO< ѯN_ID39^&KY|1ȜIhכH%\ܘC,RLsičUdzy=za~(+u4dkd'Q+UJ?35 n3^uVF|9]o,0q]pI3zOYs4O>}QunXB@i-[/\lQyT;g"q¶6IC'nd|C($'ˋ;sBR V{KBn2qD &e2hiO| V6U8qK/Į j)I|^N ّl]$wL~F7^0-I{D c|~_^).Mm~ֽxɣ+P _PU ]aPs"S@^m^1܇hesېy{Z NSZV ŕ ~cu2b{ L{|y\(p/v~^qJ4a"6я+٢)g lْAO=ۋ {~x.Sl.^Krp ЯO|z ~$(UQ2I\h:[B59K t] TiusW:SiCU2vNo5k9}:&l"Qr+{=nr_3(/wu"n݈,x&ֶ#3V!N u.!H[|<Z](}-b:[Txp;rYnMtآԳ / B,1LqW;C=`!/w`i0=T;=)/5 I^ "wH+!{W~8_H҅hgڍ0|3k߯.VIuVE632g9o[d-i'qO_;.vl?c`$ZUۦ!_!3w;em0hL~m;ݐ_=˹yu蜞8DgtY!/̬X}$YOTgbuBBw#q?}h,Ds-\.!Q_?iG"@GcᢎӊV*Gy?<@3[nQBv4QBMy}EbzN=1ٍ< FHZcF޵GUӳ_~.6dq {vGf6dqܫڹ>4Ra{R*Qo2vhC)H$K;,j1w%CNxPJl.eiGТ괮\ȁO8/MLUt=rWPp  .rpKTБLUq qX,^NnwԶ WRHKA!2:N‹.ߥ wǥiqHSE_eQ]*EoP^+O8&vX7=í$cBw!wDNz^FyByڴ]hu\;>H`O@^6^a(ܵ~8l.CRb"XJHAT}֯fzSpsZn$G.5fR뻦q#:׾; ܒԈ`zD]|*>y=aSj~K缗½e 7#O՜M ^b@l_SI*7_`y0 {V<nEcuLN!ø"_Y|tgKhM|hKڟx_ܚ6D }5@,s䯉 TV:Af6զӆ-K ׌nGuW. GH & ֎8OoH9܊Nʻwo+!vB888888?b`wMV﶐n⸷{po{[=ڎڊV︷xdz;lo;nk~x{dz;lgw<[Vx{dzջɻ;nw{x掗g;n%˻=b[#ƻ=b[#ƻ=b[#ƻ=b[#ƻ=b[#ƻ=b[#f1#1#1#1ۦo{ƈo{ƈo{ƈo{F?ٮkk`| зQ l1y+ pml5R`[ ؞)6 lϔL lw@`aؚ)Z۫Y`k5 lfy*_p$]VE nbgqj8 m]Vh{`_ۭޚ}afo7Cxk[xUۭF}be!Ə`a|zw 6-m-ڲ1[> mœ-nw'[< %wjlƻ û3ߖ[|چڂކ*J÷-$6I|[$Oxoxoxo0eKŅ_mZ&M%g[T l6ox#-lF`KeY`KF`Knܖ--w[/m nYx,38זIZh_B'-B[f/~moOh7Bۼڒ?mڒ-~ o˟ o˟ҶE@xKE@xKE@xKE@xKE@xK0%(pJm+T߹vjjv [%l 6*Cj8M$<^]sH0"h1ڈIS.xv;XsqS/u[YSQGr9}$ As[̻z<}x%VLw@igMcPh3,x0qR.f`=wԆ/WL(o+W!>KJIR墀l{/p1Y.H'DnM=.Bn Kf#h^n\],b?4 s-M}T87'EۇjNhnZcD >E¯_BϋG`xZ<5ZV^N{MD?@+}wO2.vd]` RT5i}0=bX3t$e R+vUY_AxxjKU[:Y͋J XmUO0bh?Y^/ _;XP?mƇA Ͼ] {~o3/>Il%!ͭb\7}@Kd7<_: %/)LXa) e!;b%6ҚՇulKu;Vos7I`nZ Ora'/ [:cnk^ +F-y'-6Y'G4W߀lNa R/ʹgó'fdAVX4;V'q%G ĵ>ZgyמOTD}ه2*C 9 ,{# 򷜻[ &/86X|ShlC(ְP*<rqޑ; !=odȄpD@篕]xRk`J owkc4@W뇕 qȈH<NW^5BS-C34 M5- Wn?k3=PoͶ/K~?GVu{pa1kNWi̹S? B8զ%0o gg P2zZEfwx#tT-}[#yg찙wHGvݱ18y]~,ĉ@DT |U3?M/aqUp\̡BS; A IU(4@T䥂4_"cZ~º-xDA!K61zucˉM=WRBԙQ&5K:55 T|(q! ɡ =)W!{?aTޜa :_ Su;Wp;9Y>淵BY՞,|n(wob9pf 4~Urn񧪄؇Ը-jOa.BTcUe FWvr*݋;{2 ?h}vj""y4Y,aBzݓ S?`]̥u| t#z3:: txAGa( 6fO0awv0)WDirnr{r" o/9W:1c) _L®Wobޅ=>xci1Gqb%> T mmfa{D<ȻYwNkGF-<#*sbh~oHnHr|<w6aRbHjѠGCXKY/\ΡY{P5#/FXz`D<= MO|',~}ܮZAϗ{ݰ_h*c<)4B3b`#@L8~yݻҕNγBf׀%z5C:=y %3*-H Cvb+f|[{л7JWyb\>QxO3q n4YX>{6.OKiRnAg-;V Wٌ3'/ "ޕ C.h^+v 聏QDq5+lUӆi} ‹lvCrQIK)EM|E>YX=3])zj%]Wu({To;yFk.QWC䄚E-S~s+g".`\7zNy#,,GetuFɟ _,.(jZ^E)mv/^LflO_|z=>^# ˝%shZ{AOAAO송dAzk]*߇1m31P %N2mU#@Pl_"3K"hd\?:<`_]sǺۋt-N*~n1ts.'BǞSy}$4rr_R "Vɬ%-tR׉t9:NjqΘï v44yt&KMg'(5|0[- ㏱|G ^"RHYd!BjRy:s]0|'l@X h<>ίxi%;CA<˞Oo :öKUD{t5xkM,U!@Y[tp؎pT|O GJǙT1y~ c^8]t?3½`Arf|3"G10 9wK.3ěB.w!=5vqN#]-r:*>i`Ú_=6?I/kHkMդoiP74Ç Ifޞ91zRɞ:ЪJge@D ~67[.h]iĎYy =r[%;NvJH9uIR8!Sqm#lL1~~d&ͰC3xR )B;67?ဍݔul!j] 2(\VlZ[\ jfGgzrJo ێ:oڈ ^gj}eC_cŬM /WQP7Jz1; ~σEr_k]h䩺bṉO ™aD q]yED*IDޅ]#{ٳ&ϋ}z?u5AH[M_)mkG/o> Tgt"־k~'kNyBRu!QE8|S|"vΙtoXZ."T[l A:/> 5ռӥ͸s{7(^y%Ԝ9U "JCZ} ӻKwxA<1Bϯpӆs'+bivRÌ˝RY0_m-Ç%"yu&7-v4vGUP f|_vaߪ%e` ==)}ԥlf[A]{01K64x 6NzћvSCK=Y(&,l7)mTC!`%Ga&'{ ߿W`؍;kH;:A {dՔ%Tj5xhF!ā~;´2) c&q{A# ]|#H~ !vVktĆ]-  oJSnl4*:5%.^CLeCgN_{ԧ2o>dpnGTݵ'}!M竺ʦݴ{W;>_1i$Һ>eM\閖=3o!.%C~w$U'N|!+t?n]5W~,cEN=ygz/H1괻UwA18MWAo ހUc<3z3y :ܹ5mĞoB@).Qj8 1x۶l tH){Iƾ+muQ!̐pT^-ݕ iVdkxzaEC [В%)V UWn9>!|?eF*[x3 N72#C6e>h >=Aퟆ/C=ha~}%*s^vExo.鹮8`4_!3ן ̻5W4c$0psymN*7:w$Qo8j5q_7z!#c :)2>irŸߠ{&e ࡹ{@Ar2v~ϦIW =h~}{K)"K#ΰ\{J$Mj8n9`rS?>d)\-Mܒ,wPGÏk7OlrаZ<Ύ2N8oYRx(r!O&( yG!% MKAI cڏՁYFuy#{a@"?C\Hѝlb;$wjS n=BlKHK;W/S֊l³ mً!LB#PzyKnIп~ _Zꊡ, fp oӥ?1AlC7=, nG6 !IZvԱ)tO*;:,0t8+)<2xw}}2M>e,'=!_$Qʟt;}|pY=EϋarAeKp؟ګw oL,dV M~D/ #WPKfy9xs8m?FOڊƭx ) ײlB :O*4YXfP~_aKd?j> [:INCDByo(~]PF1YŭP8zC!''Xԟ77)S>|=ӆ6)\if@[ps6X<W)N*d rBţcĺu O;ŋBr؏?R5WƷ`MgPC ʊn78kL.t\]B)q\Ui!\H|_}f0UC) WvlLzz1kꆌq{iOҎyp u8_B퐅P(no,ڙA+ÇuX]}h^!2>fBz&p`Wq{qyqʹPO 0f-zv/{~h^ B(/Y`4)8 ,/OoB b{KN?1zayW َm+L <]|#>[DHÝڜ~~g@kgMԋ*0qeIw)g%b{ie+s<1^+[BFutG%CowӼXsijqfKlӾP3&v`(M1z24iy_ DU3v8@H+L z!wl"L x0m2u!c0eDS5aJg3=it-r݃P=?x)\/so~Lcgq& n/c%)\Cg!H@(/d9h`8Ň2x<$2/ѥ/ʀ>5 3NK\,mP%aw 3wM=ŠlI"-HmR9wǤk}Ma\;^T~ NRGĂ 2$kqlATd8bcE~-zlF-xg!4}^蘭 O4F; pO85>zAѐBbX'P/^:9 ?`t u#a]}c=zO}[~Ϡn{3 aHS7k!H(iQub3}i{҆eȫDe\6 ]6d>[0m5FKwWJQmoKw[IurtW_4h3 ;@N ;,0=in _g3ixX_7I5@{pU=)BK[Y{%ɌĜFt#f;4^41 {pB2wrxh >|y&4bLv e7'3j8Ih& f'g!%jsYx(pI+$9cCx" fMiD' J; 7SC 4Uѿtdwk&M}@;kPz$NCOt@6}ܬcаmCh}94^U)"mK@^rL7COʢCcO1UXQ 3#t6-qBlt6j@%/ڢn|?t6@4jw,++Zr+Soj&7c y5 :)Zpc45ՁVHSgu] ݪ*#.g< r#MA蠁!Hjjj*UZnߜp%kh:ykG ݰp]I DA.cYLqYu^̦_npJǐASNUh:LK_KqjM7@5S+4o-}_;Cs%1 sG>PRG[>7\]Y:?CX*C5\o{>T!j$,4[-aS1][iEL= ~x}ia&.O =d׻#Ve~ZۨUvb궣u7%Hꒇ а*D#" e 1I+(OCe5I4*S>q4hzh"lVcS|gg RL%&$,ytMKO8 LHv4M5vn`LߚChri+ܯh|-aEt$DJ^Hp%$D'Jwhrq ulmnƭOhSe6Q*Y\,zFM y< _ 9&!҇"w.s(7qAB˕X*{Ղļ- VvgsF~As7)|ߺ}4>=XKcU'TLc`dU"sSOF+V >d6R' 2G㉻38(5^f܃rT#; $Ik>qHk^GA!7;(fYo וC #w7ȴL]d? -Leo!W ȊG˴v9ȕ?}dlm9콳 Ũdod(byb%-Vr@S*?Bg"SaH]ﱥ1cW^o j "q+<$~Uߥ.- bK{vыx? o¤ކa΄ 0;M N1DEGC Y,02xǹ&BA"yDhP;OuM"C(nVʴCJ@fݥ5N} J{J:}|_ͫ%Rݥ]5}]>Sx9PS-4Gi!B0yWe^fo)!ՂG4v? {8WrU e _nkA.1hTs\-:imI!L+H0CbV)_ORZ+ +7ON@i=ikh]̎rm- q3s:NtF7rF!P?fm :''!%%)'+C/ŸNa?ȫp5 ^ڌ7~s:T/Cwy~{A۞TJ(,隿sTbUz?,෧!B'E, DE/kvri1;qk.0b6{r|ڔhVƏ$,96 v~x<_Jr,M_PuNJ% yʼn=8Vg;:9CHŪ8$TpAeKbY4?,s>=<~3 l QWK(b ?@;u(vkaUA .aK1iI{ n@3IM`Ĵbd];Su_@!žd%3Eor"}# b<:+Hpȅ/'ovdTERXNf_%STŹMjjFt^u@+\RƷd̟l6}=w4|vn)Gs?u$K&0jB^?1D\ yϣH{5F$Ylqtj11."1 M 3 Say+$k#2BPy7Ip<a7`XPC!7>K/4>TD!u75Nwʗȷwuw8G5CFqZn=v6޾(1N:H[ك٬`OaY,o l)Ɂ$vI#6 OA$MAEwLOS 2Fw7Ҧ {?B\!S&7#\.Mo33`RFH#66ФfN Agڭyޒ'ѾZj<ʒD]G M0jl8E^ˆ<|{rG,` P(37ke[,eCAkR0vGr_fEײ*Uz?9P\׷_}!(a;0kmgR %)W* Y!R6:X4d-O=|w_ժdwVDGDu6d?dc &s4oŠ_7rB(>)AP\g"25 Z>U{B>r#%hɠy ={B0s SrQ:"qJ,8SQ|ۄٙqHȭt$ XC|p HN#+q^T\P =3 {"jqj?9GAWW'M(W!{=`rGGcٯ3>o ]_r郌ُO~~w3к+A'$ J yϹgZ%B.'64VfhI:f *=K 'CoH4E[ ?3^\ '# m{qhzd G׈g5eВ!w.;s[>~-գL&2F%N0X% -9j!0B;UD1x/| 7>Dy|!oQ|C˴[41V`1dKBwVd+̖<{1 M "WB4xI,VuDEYi"8uRP''@-#\- -Aci{6Gi{Gi{woir^z(Σmx';O[jڏǭF+G޼Kkxy;yw92ӨXR8< $3ԯ8q4yCq#g9; >pghg RrQ@@'vg !vk$|$Jot}S1Y`+1%$Hc2 '?_3]a$^攏a,*qg[1N֊_+wy~* C,F]}@rVU+vd+Aw73Ʊe闼nPY쑫 qU 3?c J:I~D3'ui+/~fh(:mU{:)>.Wsʿ1#Uf"}k&ZpZFt'dNr>krrr[P^F_qh .[ٜ;]\Hw{9`>/ _ƛ!v2Θ[qRTq+Xؼw ׿T9+A?de =אq\< cȸ;wȁڧ)7:y/`gb NV2'7:,[= B,xɬ29>ƪtn%g}ҭƭ}<_*E´pz1[%~F .얈hx5/ YOBɿƍ"NJC"75o#=NHB% %p aW#cp=ž%WFf*<3ɽ ThW\~Ln>92(XDްs܋;29 y6svyզwqd !QUvS&NGY1~_) q 1LU/oA%6pz+^p!S=rځ83 y6 Ӆ={Oߔ~pc4UJa[p/8 3#DqR~Eb?ƗW!dnd2 f͚;08( 5DТUN"W&)?rD!Fk,ÄJ}T$[NGh~xgS7LI|%?ncFZ5,ߺױ@-KW^XZFͨ<ie!%&jH*&HSЫMpyg GZ>C&njk=_ =\300y=mo'XeF8V#̧/O1 QI؞B:heML݋K6B&7™ߢ%r Jp=rBG޵TׅSB%A%_K/Pm92*Vv~{أr ((/E/-f =zRHX^8kIHmKH`+Q穻®:{ 7NY[o: u&f-5xjkQ8=6 ӫqw,Ĕ~~!WetCÏd nuaZpׅ?tH@ڢd:^{rfnCo8VX7&ˋ.iCy |g?J\x'nYx3#L+wޕDZ}"pYaΧ_R`] Y+^ae64.!eLak|Hhv=s 87? "IZ/Ow(ot+3H:EXJ bLpx2b{MdJ@l]Xftj˿Wg80DLٸG|{QOFjԜy"]Γ#O"U}E|~P8,f 8v馑H !C5xÍ8W1z]^sv$erRZvo8u|wJN24vǮM -JIۇYgSIimnGs^*.,\YŐoh܃c5OZwz.UOEd>ܽO24|Y],DazieNaL]a3fn± =~t35GI$wKYvEY[ {u-2}'X{N>E9߿:2eeL"!=>2Ի^OM1KJ<&߰~(~SŌ,qfKvf٭}\̦;r[̫ջ*YaY9ke%#fHHY~GxE#[LD+K p?ܩЫ|@IphO?~,bE]ӝؖ_Fؙ>/}f &>yzVVR֍,^y͹ќy]|J- .Ӊvɑ`:Ϟp)3g|8>1;gemfma o~K8uF8R.vwoz.WaɆ ף=JV)Ry_=1XgCTqɁ#ؤ'ODd|,By!t(.A|0⢧Brwq^܉kgcYyڟy ~H3sũ9.0$&489[87 2*}'đEs,I5 T3@>}@)5]qg 3}Yէ.0tr$*2#4/?C iHH^]_@qEzQ}߅t?u=a`>P^ga,{bEQYIy#bke,2_@ Ւ˷E֔0t>@27IJ6AĹ4A8}r<.1:q=Q=zJNTP7$Dr[f b8jR0OKYO< Xgl=dF7α LJE#enggD6+?\7RJ*y=o$R8C+§gfĘxlq-eJ /*ȐY? I!o $X] N%N䉼X/]*y$T^g.AT5,C_3Ϥ03`ktn_\(f'pd69G\;Itv7kED=U{2S?VPM6Έw&^ctkE]0f"Ct!CJ z:^ eC}2Autc7\aouqXe?aZe;]a ķpѤlބydץ%%b(7{үw"6ȕa9TB W5`S:;6fXS+xҞ9 ,2Y).4ܼYӵv V'6ߓZlo4daXq\NQ3Q o'}8K)Ey~ik5}G"ƙV|mr |W9.&5ܣ8.ahdV#$e$ ~7vAPI3{C 5 -Y?Z[ыf`ݽ|-։)(`}Uشmqp%O]5#dXg(ڱB|a硵=@i`uKDuԅww_bXq 0nzw);Nd/DJ_+SS=s?k-.>ՆO6, -sqݚ`&@5U"EfŘ{\܋Q͝.bBE=ia{3 ȨKdSj}Ls7 S-FZGi޺6Ëv^ws=ySJt,mLx'5 HuŞP,{T͈2`zτ!D,dfJW/MXq'*iFp瑕OLY;f{% aE 0q҉aЧ\p܃ f-:{ 7TWl4z]۫ 3K+v_2|ls=aħjcլ'a27Tʫ$8Ģ I:/cLO+ȱ5VƧRla T+c9 C$;|2Q5bt{|puJBsb]ϧMӁMm;椱NSbl}ԀWj=ot 3&xM0 gMg 1+eNS| a/K!4j@_lx|j|YysQHآeTI8m[q bDԬ Y,#&,]*Wj]$XqVym1 =F>j6S+Da6)ǝ2PDΥk_~čk@"ϓ1-Eau7~2AXsܔNvna|y^%^Hs"8ۀdVC/5"嗓յP"qr122um~9<}yA:Kg^xPDVvʘ9bG䈆G: Xa 8l 7S9KA{0{'_%2ZFYO'>iŦԞ A/&37~z\IEKxruF)XBB]בT/JV#2rPC(۵Diy P{M;kPxС5o[Wex\뤰$B[n-v}aq(׽^ѧe<]G)yj-$YRzJVՖڜux9t+0zsQ?+%|Nz' ևҸCVlVklOD};G`mEȔDig!I [Hicl1JG+"&p\n蠏\<6 pXE2?z^?ǸX{5;җ\ 0>?/$ 3rg=؋z|0s>wRe;sD,őf@d8UfXG፞CȁDžO4J%*|ʟ3ykgWmFrbP"zJ=k!)#^lѕ }oa SZG ]c3s72=)ҽ?_?ʵWaFq˃gnqdžz~ڋ\t#ڞV߻R[^azϲ4N([˵.IU͜~pFLD;/fn?ukHO>N3$5WYA/ s0̰'{yiV4l 3G>[|fMM(yT1]+ ԧCm#}Gжl7'>9{e7}Rx~ӤÉztm 4U /'T`_q'/HWe$$|QիE꺚k 7T_"dgRpD_:uf,ERZgrj]vP w"^RXX&TpcMEң<)'>5,3#E>uzrZCjg=/d+؟MrRo!O˰;k SmL"wƵ cz r2'n\#7#~qRSzב U˂Ejk= $8e xI9udX}"߰RE\9@G~/̖t7qzAlVHlj/njt4H~WjH񇱦0[Y@ _ 7ϫ]$oGڒoy0d߲ݴ "aW˽e ~u9!Os} L G?#a\mDSR{C3~qD =#^,4tL1^HY@TQq\8'ikN7%8^NISY=̐kb?&GfQZJ(Ył\5?\y19 tמUwgHO2胷" 'N)SXm="q{D* -[拻L2zWr7bji'jy8k|[}|ҌD8aNQjwVF1ɃbsϜuq_ًHOy8#r/i"5evɶjԇҧеWሦ`nLynU@\{9R5a*ȴzS.`0R#HDb1G2$fOu=ORω0{s|Tp VyʉP:{0 AB Yp y%}M@=2٠DE$aq\{sEnqA\7Cˏg%s_& Kz|Gfo.6Drv`)TIX[z!EB\WKd`0؉i3IPFB$] w DVwEtiȽ/8lvrz^\-^hT Wkh iAgqŸfv[lle@}YD%Ul~.T<4*r98̤̒74Hz,ҷi]@ijOWLK\UiBڶ㜱M`EI )+53=tV'.l~nZkM 8vš w(CwTs^."RV-N`/CBƓH1?k FؽudM8̃9EvCFG /7?fhHE-V2V8sClXZ۱ߘ&/#ݢVTm>:1cΗi`Ma0c*h"/6 :ccO+ H?DcR2Gй*r~:%8!V]}RI;k-Ub_M>xO♱N޶n3l,C. H&Onz_?u{Y#_,ۤUa1 :~-gM=RF*'jY?zbnL<۸XYCK &:G8^,ʒy1Z?f" %<^=KĠ>@Ӄ:R?sK8j-콃V?_8ѵ@a6KnW0͸{ 82˘Rs..A_Verv צ˄s8.[>roMz#Į<IAx1VRxy\/WGI]7v"We{s¤SAb2Ffj۰lRPcz0e-im+pJlg>?x]^|' '?bV{KRB+yxFp:xHk1|(3X:WO:c7x>©SN1u5daf=2J3ؼ'nY<ջu߱/IKU&0 }NKl~^4{3\#ȵɪ,>bVTc}xm^mJ^,9O)<('T-;S%zzE260Pb3'Rb:^Z=uO^ƌ^"x(N)fs}f }PqL1D 7qߘn`# 6ӆq}L9]h;gd7ݓ2,Hrx#Ihti1>rGQ&A]5ladb/ASu o#2xل%Dd\g}Oqc1dD}7sXz"/D<_z߫wkr3OxĚ9-~+ixfa_c{P{'El+%]ǿwD3}0 5|S0B.2h _ t* -S6!Qŕ We?:7-vu|bm+{³DU:(BCC:XL”90QKj1Z5)Bh31>JyV|{iuioVEqCڦbKaeLUͿK%a/%pG3"M*%x?a]ȷM_w^y Q7Y6֜'5d{[խ-bK y|LHgi=f,4M- ao1%!7txJ6n)H4ԫ'Ű^ﰇVc no?U&,Dai+ SqwY1ġH_|Loԓso Gu 5%^8wE_oIܮiʿӔB`NC:::::ѝ:? b%Dǻ6MvNDNԉlDǻ6t|;DǷNDǷNt|DǷNt|DǷ߁':w{vv9u;N3ƿ1d;c;N3f lH`'G9ɑvvr$#Ns$# H`;G;9޾پs3vw $XlG-(c0O@wVv;:}HE m/Dhg,SB;%Ўv)>B;Yh4 f}_xIxgH!wrl g[~nRNĩ74^~E7@(LN 8 JwTʣ WĴJpЂtaߩ [KiW݅_od|r_>¾u`(v? lW׹6j;JU_ %lQ oh g7;2~!6朾# NE~,5,>TѽJMv?4>o񇡂Է8+8뽯' ݚz ^QbTBUYΉɂ. Zȼ.aWf^# ^VlNwsx0"ׯ g'7UKnNt{O?G=/rKIo L+nJC2DE_ձ;rs0~#T޸BMt~ zS9~~ &r`X(_r77}r,s*]V[XAfGOV?êp f hD6 aH- z#-!ն2, ]^ _K̖nf:r+nhޔUN7R?I17ge'p&30ji zWX$^?I| q~sy-dɯ_ώBYC"_}eGA2U퍼6|aXBo$3Tz$Ts'7c йm-k$1/<$xk}Z[q5PrRf|^fhWC*H`9#foݞ_drh:p1u 88xnrAe%l?}cWbg~ IM)'@SyO[a,H]t94\b2+dnAܝ7osnSi#)h0IZ/[\z`VFVAgg(=Qy#YO}\]y^ d$OK>Iu;gw\ߍ fwvbԄvf-\A M\x;?$i2(S~ߏciOyR>c+WNHzӨ\Hm ΄hݍO[AEr>qt9R|r5Y $C3_M I0U?6!I_BsMsESrlCRvn u\\üLVA'uR=3'I(ZS.m~[9W=ӹ0ɸe}!PNPoˁ(6ܛ73ʏ\[c򔮊TokWNOů>5k6%CF81x < ɗχL/ },bT95ǡ ֿ|7MiP o>_U ^G.mG^"] xr89O ߉6eR4vD)n6soDz7Oe2-hПxƳXϮ侪@!/Pm3MaHݟ( յAVߩ`% d$-(:쵫~q}`.C=bc=fZZiPF-Th, rWBq/>p Am*:^[RoWNy { ŅCm2K0`O >q>99<(:`w!B?wE:E}6-^1 j%&h "M!%ᚇ}J48hiқLJ[G=2ѯa{~g_gqG&Z1v0;-OT;jJs3_prԏ3?N{_) اq®%CGBn8‘ߏ|}K{u0j||S<,o]a%z1LgE .ۭbHB>&$m幂FJv_X@vq;?P{m)10DZpU󅹪a(CaAYU0f! tiM WwIi!$1x D˨3먤w zg:=6Oπgt4y 9~Q=vvMݾqǐhoUD rSC+AĞ|htueW`=!D/Imr9W](vlXD}g7Nh2m%3$ٖ!tM h|w{ |pCw?VG!\~Ŕ6DMЦhғ"Od Ųm^c){#F|ϴCKa.7tG#:9hz^(ܤ>id}}#FSD pVqU\>8(䰵Z/!d_49 _8Irq6ͼo[bM6vNO-=8W/OY#QPszт8zJd:z>K&8l aF؅kgv/woK"7Pr#qW4%5eKoAEۄMSO)ܴ eF ^rt efη^ sŕH~ݠ/Uix5IϾD9^ʞ> jFBnwv?c4z}JQLݗA|4 5el?`b´7^ky^:^:^C:^:^:߿RW\ qEje|Et _STxҸW4 -ǐ:J 'JՅ9v" p^x.PWւKjKN4ZCt{]jKqAY t忽֞-:BH ȩu;U$]J &+.} }?Xބ ͺ8MS=#}U%eL̥[ܦ 5;Ǿpo ?m/9_E$Auk}k^̾1.Qo)Fo]zT*ڪ178wQX%KPyNE.>v]o l8#u)y˵:SɠxH:/n4{(JJ‚ѣgI'cQEI@ƅdS^kYX;AI\?<_wd ]sbwU {4$d _CڞR[즚'؞ F&l &ixRH텚 n0?5no>di1p)~rAƵ#4] l1rxi1yœercz7p~` %{IIM~bƿ|z?6C HC8 blDsQ,nPo5MzS'kp%X:ˀ L{݋a2P| .[4_6oX2x fϒPVuhH?^wEԇUCE2h$]6d]7fsPr/8ܵFxܙp4ny Q?ܽԟOCu6/Q}pP[U|t d>qє\?A⋰W?c)ľ8&\( >qStg\o[ 8 V"CaKt!3iOo5g} /ZrGhJT:/mO ==foWkӡu= D&|NH 8EXg4r!7V"3WV4~ HP1 z[{lC m-CO /.y@ҍdL?qRE^g#Q(g'.g)U5RĜ+Ctc%V^ToVW)c2qP/@S`踻rT.~'ڳ޲)Y 2PǺ<IR53o噫=3ǞFB@S8b> O3xuyOcZo3.}JaQ}/2YGyv IV(9!t0]4ހ5EemyHΖ_֜`8BCC/[ix(H r.<8kW35MtNs8nB֩WȠؖ"qtƗXp\ɏ^$PD_|7^}<2h=|ʰZJ'l1fP^80N^ ի:sN;&'|ṻ'4Z ^X|r'I7ߙ+&,!@?_=j"'l-FphKآks1}`LʲҲ(: S5i</ՁʠpCcB ~? ~jl^N@v(&M@o?<س'ň=}jP'djk]FA+a\4dןl%I0~T!& h^SD!ًk`O4r[ ^LHcЦqy͘(K 0 xܞӾ=Kc9 j{Yޤ0y.Nk,e3\@1c\vU!6SoYK]&!\.m@nH)p ZWOG^S5Yfz.\ /znV( Å "?GPeckc !e2[wq}Rx·or7g2.u"^شc)ASc~>T4 !}!$XL>Iȭs qnA_Q0,rЇy^)<"4%Vqdp}[#_}Z1I/Tϙ>uSoR`ɥQzƃo}睟]į5؄AB9T؎u'ӔD J z켍E๚B3+wnvxNr_ +8P2G6i9B.ȩf#Xh-S9&o }ZNcjw!󹟭$hTN%rê;TGSr~z_]751ף5 !xT2Da~kzf_ ~O[ Xq1=" s44hI1V)'ykz-Cܒkv/Qܕ1r⋚䩤𡸿9쯷Uך{)jkvyq^{G%_B!KlJJS_.r$!k=ߖ]j7oӑYP~c E^7nъS&(Yj,ݢ:+ DOHC=-EX`!;CI KJ^{3T ƚI0ZiA/5 Pp܂]u0)_ͫ=T엪m{= lB#bA,2aO5/T ߧsR٣ӏ'GK몤CиMG e3X$;8䧲a,t,Z|`i[U9 akd|9>R <")OQMBY~KN's5N"+~,qVHѦ~_7 Wc * nSC!v^׉) 0VUo:k ϖ'Y`2ʻ@4~<^ힻ_vUkSf.~]CRľqBPQV]ۧ4c럨P"9U3 `|D.҅.9)4J<yozhۛ 5`A# ndܱ =q㊒?jHhCi>vm-MW`Ux9kX.HvݙBKOtd(F8q!U{:ajHvr*D{gڐ`X7׫KVR !LrPAC27-Xar"3<q)?! q3uOҴt4%G!F>()lCPUE9Bt|&7Ƭ)nysSx>PB^}!MqmM 11oq̙{AXxtX<< qGi67{TF eB}bE?h|0/&Л)֋n|pw;ykEN[wVZ﹊zSA[ ݢ>)6kkx5m .q_!|nlC;oQ;r #sa TQ; &~ng'NW_o%z|btQBsw*;#14w Lr Qo|s|{u+ @5j?oƭzxm;A ztx{f < : Mt\ , ʰm(}Xv!pLf10u^ N6z!gKS4z 55B /1|_N}}bnBx1e wi)bQ;{DP$3d>G%}'D)W*|v R~1K7$< }egGwc? @zU=k.oNe>?rKKתpCw_Iy]eZM[K3֬pFV6wr%&M:*t[z+sǴ؉?N(mecBGhbjx|F'R<]ՏV5W Zk`t L~tGI&OPbm(6Vu(r )qđ RG\aKzs=I>QA3/;fHdGO;"^^v/C#LY׵"xc8ͅ{U\wڲ|d5``x<]E`h1 /XZvI5$m'h|Ǐ7nr?G%Df!yM9 :KըqY\ x}俹kklsa5@a.?X L鲱*ةkN}-|'ѵ?g% ?KgwM@-R0+BxoY(ސu h@}'\a`Qv5 %RܵwеPl7/Bz* Єn ^n6N$M܈QM9YwPVBhԘV %:^h^8 |UknS 鮛AF5}z6 RCEsw.SXYhQ"?MZwAvT8;f:v+rY Y,$ ?ݒshu9*m.@lX] :q2Xp㴛غ ] ŝīk*tL׃U ћu. UM 9{}uF]p%h\3 N(4uJqP"pfo1g}x5]+P?!ې5Mm}7~aJBu?8j@1EPqwwFL < X)Bݾ|oPJН?zj79P8l|1$w]1~: X-~Qr!oDܒ\rZSw P`&_;|9y)D^&*Nc!tZdf\3⟅_UsXdܜDxʯ?Bj.h + Y@,G>p%-ً+Sn4Đ3׬\?WQzި!cI?HjgPK:4MT62 >o|!pVEd_ !w]+YC]VZ&? [|R?-1^NJȽ"CuDhbALJ u~dٛ_˯*>ߞJ۲ݒ!b%;xȠ:>k8]x[Y>h2=#ʞ}{$|zusğ*RaI,ruh5#TE-'ݾY : ߨ 0f\c.bRL`һy&z_sR+2;Qf-dauxI} td;ϡW?b8*udhTR( :PCGY^jZ htݡʣrbAD0s(`T#{BkZTw2Iۗ}^^VX5h&amL!/VG`}h%} ^=Hnm5ɻBH\29] ְ~$ƍ< U3 eXLC=>lRf^)AjTjc_ߘǵ?EШ5pM?.P|}ٿ̻oJ[w8"FWICKN:v9 k n^Iox.[v|=V2TNJr #)D{Bsrq#x@YZ.`WjHç{QυJ)GGy?>҅s>}!B!v!٘[!:ͧץ܏D-)@kc ?GH:,dOH텖3P(+"-e_4%q59qCJO:`= 3,c >o|w/4>n䡷J+ :U@KL[ճ#۰*:gBowoKnG& Pryf=PG,|Ay7 _l4;%1ft}_Rg\ϫ{u4B%d*YXb~"(cmh^⮥YAןVs0:i-%e,Ch)hf& MW? eyJH\TEԄމ]87C4&_q~7oסi?d-9FANEfVф˹ARѿҤNո{Qo+XߕJ, 6(Bhݭ9Ptݳ?(Av5 okW%*z9SM/\՞>m[Z>Psn>)e}M҉-PXwoMN&O$^40_E+[̰9W4ĮB ׳a=x'sA(KC;uB@kvKP D% bp'hرr.}sbH]@zw)ȬY4[w;+aWh{b~Yxh;B9a+נ=Uaw祝!c6h avT Y̪,i{&gPbrg%;cJҩ5auh!y s!ZfU:H7UNv UB( 5/y3(tژN9W> 2wbE Ws /s8 r{"" Zhe|nC Zsdω)/_ǒ Q\b˜>dT `JtK4VM fU[]|xȼ~M44}[ËG+j[S%ާ!b {_5h^".pBYVčp[ h8D&w&)Bcnh#?4D=ݪVDm2uL3)_jߡ[ 72+'T zaiuc'7Y`GAF0D ;J¤8GSGK s `C|B$dBCe-6EQV%}Mb4Jȭ|'c _XNԯ^=-I!m'r ө =!KKD^u9 Y5kdМ%d'^mz:'OM2,9҆]MO\pbn3Gǎ'݆'O}f=#vd}3ϱJKh2V;qNhAc|M j-^݈a͸и;A- ͙~ ^f_@A͸63].jK-S_AW ONnoBlYo!w1|МNX $cѸx*ؽ8!*ݓyZo\TܨSޖ.%}FƖo>ݱYaH'%馩a<_i7 46E9~`=G7[xJeA 4l{u?{˄]y˟բ'|vF~_׿!-l(,'\2zwK4 E7gfiNu-78ڙ}+aPYXՠpe)Ň-wpxsuMsȹLL|юr Phggq7#'j;[j#5V-a + d/~a/630q 2/;r*p7'WLs^ l$1H ٍ:[ܚ;> ,;~Z ZYlh~e6 NuiUջ?yؚW6.X7{}c?>P bף'^#Xs/RkՁcZ(3-CXٺPI,ᇋS{K.%O8Ȃ껜E4X_KF aOduX!VzfCw9M)s掚z+(t(=tKd8Vg+-܂eÂ42Tj_C0/Tj,0Ƿd٩u*9a0u^Us}FA][ ia/sWau)d9[$:guO:#5mY8O'Kk]P?\ XP Aϔ_#֗f{4S_|8)/p9d+o~/T~^Z ;T̛b>w̖\Ԇ}"?xiOyd߹|Xl&K ɡL-?׾N& ?BM@^O_ ?s "/󀈷CD8l`'ǎ>Bc-K歔z%jY^O%m?^ͩ{/=B#.=B#.=#.=#.=#.n#.;^m石ÈE1 C?Fy##o4k6y1Ҟ+ץL$;_Gkϱ-[O )_C 9(Ӻ N'J+F5Ǥ_!uOOR+esEYR7¦${D/Q/+! F{ꦧ@)U~րpEf~Lᡪ*']}5~L^-Q.zǰQzN߈˄7){`Rk*d>s~:(vFuy!\e\;QqRq/j!Za2IQB,⣗Hx"|Ao")V)^kʕ4Ѵk :#Oh()2oRsܷ֏>A~\#ϚM,a/|/ ɴ3f@P&Ër8o[GO9bB'.|7BZWEo>Hˁdpބ{G̓Jf/⊃hRn|6q'b(NTp^fj<Wgj691g#rQ݋pfl{9L\:UHO e9~W*x,})J6n|}]_"? Cw UZ|xݷҎH/] x]w.+M?]R0D8R;ڭk6AY{?cvoQ[GW^aW|; $]ԓ'%l8eo^Tl 2զx#Nn8+*E($[H\-Vk@iF.u}M:r4Fss/g뺞| O!:Dɼ3{92!v}*! =}0G|ѯucE dr,_YGGGzi߭cHw6Ne x!sOMrA)4^ bhP`/#J{]X?ێpY=G^PKLT2NPMJ5 Ԕ"?V@ṛ6sɌ8cn/Gy"GL"B4\8:dKƾF?W L&_h8̹Հ;U߈^%m,r1"ZwpJ-3im 5=]܇6kcqŃxlNk0q#H=|70kW!E'=2F  6\8M`JTTYH>4sNPɤ104Ǒ碽 ( Įaܸ&KZ݂v6-}huf/)aWA[<Ljjԋ1Iy.  KcW- husоO&g;m:+d7c}X TqhO(="bVx;)) xހdG#}qɡڂKMRpͺS8\I_id#UKuXVv^A/#-b%;O'X>⸄`t+0|ŜMMgfͺd ިuF|ƌ8Sb/[Ajzpcl&}:. HyӗpǗ< P]F[hSU_lҘ\ O"lq8Q|3#GSԧQM!;cqi[ZEʵpiw';Ið|͋={xK?!Ǖ9Ĵ,mx:p9%s"hT_t]-EYݼPAi>Rx|MZ~DQ[Ҿ Mt[7wXU锋 ^.óG-ISTq}}S, ϋt"pkFME%F 7Lw!=nB5ːߋ&~u E0xgj`#rR/ F{GqgӨgFwe8qB-AքZx1QbAwrs‡܂ID-ӂ-:z)œK3mfytb !ǧ(()o'v`#!z?ijWE]\(ŇFkTu){]p"<@qם|Qhۑ-8Xwp?^qDnԹʲd!U{ Ri޺& W@*md'4&􋝗K 20eO+9x 2ٟL9IF6us8g)?q_/K$gԖwzY=[bG?-֬fI~{|B-&$!GVCX?VB,讪H@Kbړore{cYS[H Lt>,ii8>Aw;]BuSpKaA4ѿ>6;i^xTzPV%1݇VUlAyr 5;1yAQGdrSr@"J]}]8?Q$r7ddo.1*1AYQ(Yyi"g)R W@<[m-cO.VMnYJFviy&5[>r4O7rK^N[&Ⅸ{zxQi\lT^^*I犾KtZ|ígep /'ْk#3$rå_>Hw$'=i;ٝ?4K)u|Cx +"y伝dds:Hhz 'ULet߉I vR b Un%%>UI]u^6{BXwؑʫBS`[#ݿ_%hK Rm#*x-~t+VH nM~>K#odڧdEW7ʀ(f/~4$8OGh=WΐUiοEC\B4Q!BunT#='T*겿Ժ-a5i.`EZbQ峫= $g>BohF3Ɔ#]擢 Qo1ܪ{CtO2_ݏ,1GT {67̯ wGԘ4~ms Dдc<>WJI0]TdPU$gK̼ApAOlSm8G6jU8\`avI0JF|?,LEiм. ی Dfl{ec^ҜFOîI@ɫ8f\|m[(!f{Qne2 C<]~cPQrT{1H#Qm-ݐ9E`qLvcF\6d&KEF#5B2M- +j|+vH8)hџ[OT33σ[udZy.p5R3<?A/Hʶ HN-#4/}6|ԛ'ٖA 4@aSx$)MoiLߕ˛яlY Lw6HNqo\3m혱n<1Gc-& -N׏Զ]pILD%OhFn|7T_)$}4۟D2ռHvC)p qѝp>L?Y^:opfH bVyi&/u M=G[d_n)Dyb,E[eWi0IT_ {Lt+~v<q zY=p]Ik0mJ(T>Od8Ϲ-<$8Gz.֑'!>mxK n;t Wg?=Km T3c`4)+"yELA#>CGs$"ą% ,R)'ڜpNGD'~Wurd\[o%\;Z!4p ;#OFQOorH _kC6LVl;ԾJ fᮩT!K~7hQ1e.w!RfwSof`>p9\T=𼦺} 6ڣUиZ=ݤ>.D.=5v9%8 OM7Mi5l?E%`zkA#$rT6kFSIoEG3Y!?_(÷k7NԎw)ޛ2&ǻ~DW%ʂ^5y8;Q'{ >YKw*7gF bM|TNL^A\_"#ሁ W}m:SV[Kx=) \(dgF ',Ǫ҆<(qqrHElC7ku׏mnZ{ro|f61Fz$oUGCO~lQBAf!{®fZ.)IAnd|D1` bLݎazߢ$)OJL}e ]k磃Ikph*j2Li+#ݲr,xKʒZFoPY:a n)uAJa>_hɏ# yfŹ#.gs=vѬ.w*.zy"kN\W*7nY9>{ x?ϐdAg׬9fѵlHc|y: T̙Ůۆ,^I\LeQw4O-0K9irknuIq0i3+-Aڠ4*g|̖IC ^o q̡?nS j7# +ofrJ{{D p4Z6 /OFtZXք˖!;ɣiUƨPݔ2M7mt@WrQ<;9u!C}t/NEh/(jV:覂mP|Ws}V8?z1CA8 Fw"(=osnEov@_քt$&|$*4H.B)P77\=@9, \6`|Ra!s(E竀kpgQK!TN>thVp2 3)>yߑpq}pGiYsQ? Δ0}pxd یu 6ЖD'?|]N!xxS3 PMTwaoxPt5Iʱ_f3A" =vd7k':2NyQ0qzsQK>3IzUBpJ=yLQE7(dz4Q33cׂqsG+ZxmmpW3K>z ӯ6ݰ޿7y~PNݥWQldL4x*=䕴}}BdoIa"5 9{_Z_"z~P}mLBo+sVe7l޸^O{Mh\bb5t uߋ6'펾~Iom>ͭd߻M(;' ?ria92r 0ï4L&v'OzKUcM.ZD T6G/L]7^C+%na竵I8L_ }=QCאD҉/eNn?Md)3r?@w &5+_o[TG4ދVTd>G2gPe x(/l9_#vUP9s7SF FdQQ ;Z B+`}@Yբ54^Џ>(B0[섛~W&TmMf]5YKzr/C3|GȓO򷂸Chi!*C!nͦe5Lۛzۧ=Ou&zrŮc|2 Sݷ;ޤEq=[C-YTG&}s^oY}l+0ml=жeO?z MbB_8'z!d !nR /6bD3=92G #H9s S9y78͵P$7+lk%) :w<צ ws##Y^ ]^{MAa0ƎAԊFxNZo})YOpGSN#_B9^\$~JnMzv}! ˉ Y5jXWh[x(Uvr'yM~{#d)L绽jhk6sTaY l 󝔢y܂SW^)lv8oSv>b2RӸaSM([Z)gDv@*}G1CF`NsxE:/hI<7 M͝;̞+MܟXsT>sI8uqڞimVMWF,,aO{0̾]p :g7`-B/Ro.csn'&qpPspA*^?˂j *ieA)H/]lO2h7.b09m\|08wk01'U}Z TK0lܗvW0=叆0u荬)R}d:Adhl^ jͮr{eduEO<8|Pe~e߇jXT>;cgiC$q=f./9<$z녟Ek{Zĉ:%q0 ddnC+kKv:?%cw!w yȧ1MEU##;,;Y6G ^In q5vH>38ק,.8cqBNfڏ"@Tԙ F䨽V' p/>Afj|8>ƉA/6:s"mr_0ykJ7])eWI2QQw5.S`0RϦmdAM2H'K]YZc+۾ 0*}7[RYGy[ o= ~Ԓj< 6#YL&7Lw!c{XT#L&82(mQ]ȣ4y)U:1ܺ~9.@ֱwWbPOk,k{jxM"!3:%cS 'z8v 5'1)jGތ|F=ZV 4W%$Wx.LHCIvadp_F*J뮚#Z4Yyi/=Pyϙ~0}Px8JU5&c lQsD{fb: }eqN7Kvy&_+ug7)Cmimwёqidԯ&5rĮw`@_TwX_IL6غ]@OVuBcbOK!u-ݯUdfD"iod"g.< *@\)+Ef 7:D|<Ҩq2AJy?6XӇ\%19К+>/$~P%]v~TC-st?XSjbw}>S u.r[-L"mGR6w1&L?3]C{X84a(:N ̒TD{kףܑs-%JvuE~qxU#ujN"SYl-)@^^=y)RIA)K<:/5C9tۉ dFH#ѱ@¹Uwȱ<#TGcq@0Շ$DR[FDď= Gni H]MNNUW$hIb{HQVXt܁;kj|f 6+Yףb7vX\i Ԍ*=]mT0N32yѦ.I4ʺՍIWFR6yQoyTPq27Sm,T~"Һ3M#fi>(>'FP~Z7PgN=>׼")^5Eso١ `(0F/+)kH|/+56q_/w IJQnpǘPy/z&W8s 1"@0đxZU"7l&iA:\TG8J 7k[=!Wg6cȻ 8E=5)>o~P~,2.9MUCZ9y?УK MvQMI YD.!5ym/Zj+E F AY^/DY03kt!HjI|OГZcV"7FF%se^`z. '# Z~ ?7?zhץRcۼ9z.\kh{J|1}D{^#Lf\]mJ.Ho5 OL,=|55~%}m$P{ZIBP\9a&WxN$Q= 2pl"XSs Yx!M߷sbQ+O`5)eg8N?z mMu%Ii4& =r A ޠ%?DzR$n<ḇM*| 7׽WS'R Z', 짯OLëY>uD)=yH2l>/Ѥu i57YjaHԩ}C}v{MeHyO 9w3. C_ i~hW$7oF=ZF=FCd" Ƌv tswp5W'XpC., ==2ήh>!LxziN:1̌60Jf1m}82TUc\Pu;n6]\JsGq]W&-IF@!k48>sj{|}e4,])8,m:}x1x JWVCOۇDxG I9WOb[^ KGe@?v>-~jIW|t:~UUD(xm~tA-m s <(R8O]'aJƋJ_M=6 #=bL8eu~κ*L%'Z`)=,%F'e'[J ̏J+j??PXB5La$knSu} Vӕ}՟q_DscXKt/G{* ljG` ֝hл_G@Aq*Za9JF <#yFBozVzXDõC„tpҐC-]QIgyƀĮ6 dK̹q$Ak]//9~e)U .Hy@qT4/LTtN 4qS$ͨr?5=2_ ul{|槫[@ϺQpG{pGP5}?1!亅4d%@$*4܋6:{MH7RpT}6!"I,E=P8ȂCݚ&za70*wC(wdv=Ȃ[LLjp:'~rKP#5an#H꽹UhyO#np&֪tAA6dXۢg`M2ޟH5h\ז ѕq9Q+נx 2Q uPf=Ċ]-Đi$n1 ; fcqJlp[4]1YK0RVaO~ZK]0l97՘FO%T8vrtڮpowȳƻƻƷƷ&&WٻlCd8inۉc;8#؉c;68؆s:Ν8iΝ8܉s;:Ν8܉s;:Ν8>\;qDǵqmNێ;Gkm'c\vƸv2Ƶ1qmgk'c\vƶ̽#q{;G;9Nw#q{;G;9N+ە,\g; <;INNxv(QpLc@yvVv?ޝe߮l/wg )5NxwwgxO3i>ͼ;w{yjۙo{J)>@ۇ0o' 3vbwϳ]^`{8+Yv lvV%xۃ}vٻmppl};׶<,;,vٰm̿6$rmGµ 6$\;pm;n;lXga{mv daafaنrroV $L2q/vxvų/|lgGyam *۶nw/1;Żm*ywǻ3hx݁whxuwGyuwGox mgoGoo7|J۷ہo~ہoyob=c?V?Ͽ~mG߁[w[]l)'f[`7۳`@`;ƀ1 m `@`C Wʈ6(.?FUt? aFR% u>$ߠ: TI ?l?l}xe7?crB4Li p)4'?DM; 7kEui%wkNYOX~ JUyc.Xc5Ua;^z]t[8% jԭUBm獗* lW)%2>Gl?X쾧 ~ނ,3s٪%2p Q \;xoѥy2$yۿf'-sA7!4DNf<:Hz$Ak7x(ٛC:hOv0K=a|?(,2џ6[a1O{ HA3W¾`8ǽF6i1s埸eһ #/%ܯWØ䝛BS.#ouc>8'`I~jy<;o`#TI4muJg 'DLl JxJFCDqHdϗ PʛPwzW7 9eOcoN߲[VAڻeɜ2cF<( "ФfiM9<6SЩh̿xo_*گؿχ w;TTxTlL>`$2]i/m9-9M7)W|l>Y,[7ܿ t2Pg */0ɰh9xS^=6܉ϖq/U/~WH']Jn ι{olOj~*JYjdIV?ʬ/ ȼ!a~-q@IɕSB:`+oÿP2%r ,)/륵0@ gVhpS (,׆cy#sLBm[vf iII'BQ|^ ONx+%Sб=ѧnw] ީ'7`YI;%9qx_&U~Υ딤ZٵHL]BEYD`zҝs/n&> qN V!=^Kur7au`~a#3 ^`vИǣ?W@_׍ tJpBic&'sXFW?6Y00M1y( e rˡ%zIn?@)#ggezY؝?fXÍCB.`񮌧;L|&88>>9<_k4m_{U2o|iAweR?I]SN->_nf]8m7>X">E"I 3PM}8yߓ0֧ZƝ/75lG5^>v +@qI;%65mpb#OV݌Omk_noСRJ!ꩧGL'=fn?$MWƅqru__>#uy~8 om_{ 9$1 ː}4!X9G^xɻ" ðPL6~e&h&uy{ܼoE-}(-<#t()z|Cw{P((\_N3 fN@̩e+%X[;?ir.[VaƖM07o~74Sx 1?z'> ۰>uϑiCΖpCTY#l.Dc\!c)R6ske"qdy]LO,0>{eX<$Oڈ{.Tٿ~ƺ|v>[Jeo^zxnk!U}axk\ؑbx~m4x;L t[L`z8xRY2fUF᰾ŃN}`=[!D]uר.lo~ ݗִ'AB?ָ0 C'4܄ݱpe:.tSk˯n?_hzet+5^a-Nቈ<ே丹#lh'Td-/4ߔBLTϖ_Fu{`x@Mk'.xiI;kb~=ڞvu.dp,;SbOS' ibt)d<74<o4BˆEE1#3hr[6`Fit#8PI7t ]v('ߠlU80ԋ'߿@wC+*֝\bS 꼋eH|;풌mZѹKi)2Ƨ`*hh븶`d/Gk!ȈϏ(1-}Ir4 EtQZRh{B"cD^@NVwIzp7̼ ~!֫Ð{~n sTxKzly3Mu 4wP>:[ij)5J= UpW}5+iT0y"<@ 8!01tO!,v֘;\4m2?O%-rUz I^~hOpԵ-jTA "<ނ\o%h:OgZ /r?[$\n`5?ޣx(ͨh:g"/=KZT$uUw_?v#_Kk&Bͼ}:Őo>}N~.\Gfo,< ,9Tv2oC^,EJm Q4q@k3 R%W?E K^:-C#x)4J(+Dv޽ν,@Ep"D3dɠjx+)hwj>h^R ZOۏ+\[ aJG_`ʠ#D ~:\~}G zCۃ9@:WDb&Xߩ&wx|3i!RClju )"Zu&`%0ATO7| wc,d 7nwg0$+\s@W>7e/''R 2-ye'X߸lQb\(vZJٿLy!WJ4s5x P1DeҸ{5- o1UxE1r'zF\p 鑼=_C"kEهbVl؟sjZƹgdyy9g_p\3K+<{͸ۈ?k fhvhNﲛȷYeo<U\LcmF)od砾dx,v|YWrTv[>`I p+p^4%d'{[xa -B>Ls 'LrHx䟲Kc~Ty6]p||O L?) @S1r>>fHi7ͥAuV0J9WA:zlӦ]p3pn)ҝ*0~'Y? ~s6$G-\>`e}0*:du$=eJ' [_>Vlcκ#[d!#W}qDˬ}!YȳzH.]E+P1vv-#i*{-ujBJc-$أ=iV6 ^}VOxavyR=D)0-~ y£h3.!vyU!VQ 42M\3|544|4=[?Ď*fAc[h0mO7 (>>װ&IyvG輦Ѧ= ^{.wJen1<ŕ iO.29?khy~ܩgqhP# ry_ =!>]߮`}xwMnښlm?s#=rvL1Vum΅xp ZcӄnU-,AYxk_Oҥϣ "Q;YL!U+ĈQJD }.[w~v|* 0kd3i8<W%~=;F|[M}iKtnߞ+BGmݔ`oUHNb_z[Rg> yOIa8q>gIۖw?4.]kbmGW8b}0\WB֟غ뎅B$͂qZB7ԝ>'= MJ߬W.B=1[r ˳WJD r߲5es.=c`5Efg<ԣ*ݯ>ت#;OpaUI”W*ʽV7 WX^j-0~Z g.J:fs(APH:"麷gqugb[{~n˞?sj% mIU$7c n9bB TJH>9 mTI;3a<}&%Ȼi#sTj/"N_}\z.;rx wW*MOJLNuJ,BCZH!x_g]h.ayjDeRH_a%kb}vD:g^9W>HQ's`>u K[" {>SoDYi_v5b?.|$_W+La1s:d-quj?x09 ~nmGZRr0"|xC n;!S̍_,< яt)|zJ@%:>;-0`~껭\/<xO>Yrř\ZgEf y5z_I{y0>h/nR 1B W‹))ooȟxF1-3}NZc/g"ɗ |XrExAwͪ'?VgxB!\PHht|#V:|surs _x TVԗ ԅ`JfP"dO*=$p&ֆ^^} Wk{6v3Z=61hb%,./ -x;gS57BӍ!%2?4gx>i0t'SNo\2t] H?/XF1уM58BƇ_r.i㘬0z&d[Xb#"vP]{S:Ce|W@ڟ,a]px*A -<=`r =~0:2Ni-'Q``+_=v6ZIx$:nTo@]{RJ xZ.!~1?/ zfxZ\LFܷP&q>fHyV{tl1zC6ё jHO?>!eY֧/c}RjI(IN=O^W.%QvxGfɆ](Nv0?2oOBut?x'Jg#.WA|krށdE{b{ߔ p03 =$qom g?&?jg>ٌi. xΎAȑp_-%x, EYO>? 6GC|Lݦ2ɀHU!N\nw vmyZvl̿Ժܓ֯B['agaX12M/ƹkuk5h<bOl 9#_ 9qwbqivB,]'|Ax%wߺ>1NLJ#N`c=M -){O/W>h#D<z@6sm`T`S :7I6> \¸7E'}ݬnF *%oI_E#]=w~0߯c؈l*uw3i z8Ĩo|͎_N>S2}T3l % `[NsmC kչbm*]X; sխCuz얂>)+õ',~QP)uwX]LwA1K Oҳ.!;e\wm^S1C.2twW`s+w\JUcr?k!dq l?櫐{}w!#r[}4W(BA_LP͝aKtkզKc`)pһiFBo!Yr);f/CL:Í {v~ٳGKkOAe zߢE)?Hq".8?ڵPҭ< ^aøI̞y=y5Cux)Hd} T̉:KۡGJhk*ϻ*9KJ[é.oŇ@'<8,)@HLƑ!mR(hRDnQjzp}_(x27C$xAjx/揂CXdU?;䅭zBܣ̉p)fj+7I I^T62Q![_ !kl|v,9&HJoC:!A阜|9R(!n%W|_\_xVOlZXLz>&dh/H Jxk TtKb<+4qyt6\8yt!g0w>1נ'3eYg~/=iϺT98La%,KU_2}!;C_$#fV 7-\)>eknѺ{Ge hz 7Fp]\̽Mk>D T9,r-o\\Ƥq7y{pP/6ZD*/7(CK NkiOu1poTx4XJb٫i~9IG5*c6t ELڮn)ǹ Q<!Ng6 mtοn { 橷!Z;k#uW?ָ4\3|p:z 턿bvE{Ҭא{hsaCuf\a뵳7!ìcE ?s}_TD2TQpOq-38P3-@BmήtPU^'";`QDx߅*1 1e軤{RE΅޸)+Qo!E~?4MDImq:&NC!o2alr/yE}O8AnC5H} /w75AMإ Jxm<1.p/m*rI9^y#y#yyy7呷I?AMKZ"2Obdx-W}-~7"kY,c.x.- 'noπdP㥇6SvgUϯϯ7=[EAC}hH?,o zW]$=~l/<yWE_?:ĻMj%z>k~ϼ~z/͓CAxƺdv9.$вn*WN| G𕪩;2SH!?aY_TB;SUdZ9IBsD0AT[u {2ӧMqHq3q$`mÂكA^H,:C]9~.WB'|_T̤Y@ޗFSFokBR HШu(MT"CeJ JE$3SY_JpO{{k׾Bn.d"su:WY +QJdGb8x,Y^x~Ǽ+x&"Sb<UL]PS 5ǥ?~~k#z8~L 3je z> ‡g n6(w{N" ;QÚ^$zGǘa޾wW3ɀtga:1\_ jz'Nz<5|c~wdj˼jJ&+R5oub>Fϐ_El8XGB/ _Ƨ"ɑW(> ֳ.zˠk697{z5ҹwu*'c?H*Sb ##vd߈|0 &~->i`A!H( [? >qHko|/IJ~M\=S΢XD9-BV%2!-G{>%P1,(}IA /бfGڨ?+ sͧEW7;ЖD\:SXg0ӓ|MRK1IڻZ$O_hӐߩX,wpG?w*piB}Rܭh}VFceLhY UL Q#,3תGy*G,$Qlz(0oj3"T8ŸIFfɈ*^ۼ`1X2/\?+yïVXiAGoBcYC$2tvw(& F.DU?>zn ۸˘ zʢH0f#X͸Fk.&2aGhJԶf,?j U)[|"ᰴ//8O緕[&*m y,r)il1j#_ZZ869XX*=N4+h)_ GekyPNPlAe'Q2Ix-5| ^]%yJ_W|,'"!߮B`R&V1YsK0&֫>ɦPEEk!AРiWr[&`wXq!9zk{OpdJ>DW^*rS\ĹuDCO:ߝ#1} E0|&U21 C\u>>goGo4>6 xO)U1h;rk<%|.9iF#(v#ާQ/윫ʗ^8oNV#j<[4\NOԣ4K][ )rFTii6!6!/ 9rlS~Zg1FyIZ tmV=T-Xap͵P:l=huОY~FW1Jɂ^o>wF̙Ưŷ=c":wXiJR\!Ꝼ00{(y;+isēH<-D4] ^>"%3bebY=ء|j-.5!8Xd;$vcnD `&oey}M*fZخ7LnGR))Yw!tA:̸ Q@-T^IˮAGXJQ@a1>P:}nETZs߯>~(Υ[|$-D q8 n4u4vs[\ 6h7-p!v[YTkl\.+z*qH ID~ kߕW.Mri"vn&zPϮ~U1i~Tق7[Y2o>+D(bň$3zWlQ5-D:n4@RI%FH}Еf?lbjouwOa(807*2ꅛx8Q)W a_Q V :WL@#qKsuOwA$*龍 #A,b,q)TK@dΓ9GM-).G#򽤻9HV~&Ձ'og(E{ki~S[Ĭ@!OBzTG'W|PΣCiH0GPWrǜbW"P^w:>ZG/Z|簻Xŗ tâcoy1SĄ0FcMYj~JP2o Hm1Z˲k.93LGw\9(0LZ5N QO Ұ~WkfE|Zk(V^.V03#8y+u]l*C;^x훼 K\S􌔊u6V?\T6( 6codZ˂:gVd,ʨ*:7R2v[RiyuU@gc4RAԦ|OzUS2[}SyZi C]rBbSSsY}%ZΙ|9IGc4"gHwwl =_nupթSe^%Eد4ub(|XkIB> JE:nkEgQ'F2:l'~G SK0Zk7ۿa?xQgՑ=Hu ~M;L:Q__/ =1wq/y~3qYv4u6BPP(^hu٦7A|qfadנHS3q=bY/Dm(I}3'n7V}qlDxyٙǟUBOb&G1˘\8,y%%~t7m[RgWkuN =Aqˢ7tyIɖR튨ɞPw [oXxn7)C>-/wZOd"gkջ߈@֣p1lR#>G }•~>e|mOʁ==ER8f03@cЋLLwt d8{\7{e_.+ 4@{`x_!v[1ǚi>cPluq#N+|!BOP3vfpq;N~U=63Q#-0>Ks+"~b=O?7nuܺCw%i=4u azӏ (E Wz0iۯ"bN ӝ.S4׭kTKA.XXi@2 SH{67 WALۈ6 DuN~ VrKa J^N\1Tq&3s+*O؟cWQ86M4[)l7W-544D]w 6H+ޕx?oxq߽2ӣ򇡵_5OfyKKXekע0EաUO )oyߏiFٕuиo_b+֮Xx(*^` {;g(7kdAr{cY]d96,P֊ ~,OmH+;8P,"ǒ(Z(%~Ц޾܏dG+"75 :1!'^dv|BBL -V.)a#i~A">J+En+9d#}i%m}CsM|u|L5adBh'ҋ4롰N:/*ݎL\E>nsQ rnw!NUFn"_ZVq9M8Z5cwv@E)M\ dm_64+Fަئˠ0qA۱^^ᘎxPxIQIkݜ>D~ԢZfN೺WHFq.Wkj׵)wIVݖ]3YkN1iO\n'R)Zt0>Xe2~-?y_Jέ4BaH|64wGVB j-h1Dn17l"QH3 ^WM\9P"QqH52'fm'PXE t/tۙl|kycоZ}]ڶ1A7%C-.;en0C\KP@S^w8f́qzC߶Y 'O$۽B.ޕf/fiO7rRGI["Vo]to,1W6SDbWrETHt; ZceX-n yզDirichletMultinomial/data/xval.rda0000644000175200017520000001216214516004340020270 0ustar00biocbuildbiocbuild]bBf#d.2! "d11F"&)b# ?YX!+5 AV#k[d-C#{d#ٌ8 d+8#d;ىBv#{>d?⊸!x!o B|G"ǐ$9!')4 gP$ G"H$C#H4r *r CH@d&Bn#.# yd",$y^r\Hm^%)m&@D/TH\^Nyo g'UE\r\.9jE)fd^du#r̓7 ;+k7g<7\l)3yv`!U7?ږUlps^yi:5<;:v;@O![B˰OH4nrJ" 9.Q [/M2Q"E~5{@3HmETt6Uۀmr]M-Pm}+i W3EͶ[*]%8ܮvoq=@r%N2Qv)wCLO3;F@/]nq[R y܃GEV((|iDM*f"jVۯ +CmұQ?#hGbq9@'$3.28P}+^vs?KC7F*[G8mT74mom=5kw--]mO) V? tF@-=#],Rnw3h_4Vh%Zk/)Ҫ[ mlNӃ)*t T߉SGEOHt_,*k^.Y5GvaT|?T~S) òrAvQptn nS Fγh  S ~NW8~&Jk{ԻrsbX7ce'snjM|5*}+ϮٻGO ϔ6p[h@`Zo7wH OM|j SsϏBq\;23ryEꔛaJg/jco5!H mW *|&S^G*e:.*Ab}G++һCj'Tpg'Oά;4<Cu/cf/;:8W\5(TW ٓB}+fGE;!A/xΒcwaG;UC.R"5hGyr};!@WStTRR*db\=_k>Ws&Vw_v6uNc(h~d>S3fsdCs_s!1%GKIu/ieƞ|c/6D+ܰdc}gk|}/HP\r0Ç!@k#o{֯8TʺgԚbbZd5-~H=2{Uzafqr+dt[И^BU3P@q\}9eмfRj(O8?64;6 Ǘ>#gЪ^Ӈr6;2?9NQ/\OSb3Úya/))#FCW gc\=c #;'96b ]w:ٖ8qu(h<ዊ Ըr"5 H2($˨pmYugwIΉ I3D%ߏ:6v,߶^P8|y+(q+ZWW$B|bUʻ!kN>l[7@MwQo֡7{Լ'{9%ulqP{o1>iz)Ci׹Oڭ肆{B{(wz@+/ʋG`ݽu|+6H,lA񉐎rk:|fݥ/-Y_χU^@=3Zi yT_M5K F^US*ohz9'XW[~c}:ғ}0T0VހtzU@j'zì-_?ڎZYfox+}ڐLG+Ѿ<6+[V na{MC;O 9٪@`kas+"-+n%[X=x tQIqMA.̒ͯS7ZEw@.-y:y -v\y_%08&(2ַ%,i[K0;%uE4kDj$B N^fRZxrn#i÷f gx |&>)̡RhpZ %NrЩS%[C5סnkuxhwqli%IINf}RR~Fcj6qǸW'WnZ9WsLQD^BzD߮B5{oC8srtQp{E RN =yh<;ėb &}(_5n>s|?|&r>˥̸]HNW=¼Fڛ衏OWE@|pK㪬wꜧKվwh{ s"Fㄡh^Ol}]bEw/$yZ᫃!2I,2~ 7᳹i]{:ދ3h|ջ]yP/rǓTA^Ȼm/6Jh>In WOȀs1GЯXߓcy]{Yl衉9p4~S5_~\_>k曺I]lKװ|O->S˖ ]5OʹYG^N)'m}ܟ6mZq9$ w;f] ^ޑ>Y4z{ؾH7Px|xijT)t<<y0JOwn m}70{ W!/{ c78IѠiR<|Iԩn~Ozf3xr3mڇ~P8s&1N%jX\W'.wYmu.; UG,,YGf2?56=&͗IǰA=(eO T\X=ַ_&T- vFK~|ʻ:6Be$?_들y}A :70uRF0$y/+O^UG-=Gm3Ƴsm%1>}pM0s"u(x1qH\/xT 7AMptec>?;C%Tݹ2@/.lCmLol o,)ZǺ[?}OsG@5K!VCV@~x\i{u<Ѯ=:f=3k<zeo=l6`4@󇿎J;'G- 8mXzD(99!ŴiP05a:?E9S_&¿=Gd'o^&\V,IET`1+6vGbp>Q䊘Sɩ9"b:&\b@HD/.#\;s=J 6t61%dH<r\Ĥl!X'2䖄~xx\=E3u 2&U%B!9GF(D8Ip>c4GL4泈e0f,Q  m? @ 7\CGF1 1h+bi\2w bz>}b'=OgXX\Ft1M1i-1JP)DXX\lFc wFab?#Q JI@(&ljz2K6dLsbnȅlpIE&s!،"9L 3hd3O"8ӄd4#0a'M 4F>c.S_S/!ua=y_cN"f HcpqHK&2r]бFx Hqbx\F0;#`/bfVEL b!+mB*Z20Mu8e1Bq0OS 61{1rƝUHG"<.C"J^h5nx#I\ (?{0/bq_NĪb. uÑ]lG0:.ygq#a0݉4~gg~doeo[m6:Kë7 "DirichletMultinomial/inst/0000755000175200017520000000000014516030164016673 5ustar00biocbuildbiocbuildDirichletMultinomial/inst/doc/0000755000175200017520000000000014516030164017440 5ustar00biocbuildbiocbuildDirichletMultinomial/inst/doc/DirichletMultinomial.R0000644000175200017520000001440214516030164023706 0ustar00biocbuildbiocbuild### R code from vignette source 'DirichletMultinomial.Rnw' ################################################### ### code chunk number 1: library ################################################### library(DirichletMultinomial) library(lattice) library(xtable) library(parallel) ################################################### ### code chunk number 2: colors ################################################### options(width=70, digits=2) full <- FALSE .qualitative <- DirichletMultinomial:::.qualitative dev.off <- function(...) invisible(grDevices::dev.off(...)) ################################################### ### code chunk number 3: data-input ################################################### fl <- system.file(package="DirichletMultinomial", "extdata", "Twins.csv") count <- t(as.matrix(read.csv(fl, row.names=1))) count[1:5, 1:3] ################################################### ### code chunk number 4: taxon-counts ################################################### cnts <- log10(colSums(count)) pdf("taxon-counts.pdf") densityplot(cnts, xlim=range(cnts), xlab="Taxon representation (log 10 count)") dev.off() ################################################### ### code chunk number 5: fit ################################################### if (full) { fit <- mclapply(1:7, dmn, count=count, verbose=TRUE) save(fit, file=file.path(tempdir(), "fit.rda")) } else data(fit) fit[[4]] ################################################### ### code chunk number 6: min-laplace ################################################### lplc <- sapply(fit, laplace) pdf("min-laplace.pdf") plot(lplc, type="b", xlab="Number of Dirichlet Components", ylab="Model Fit") dev.off() (best <- fit[[which.min(lplc)]]) ################################################### ### code chunk number 7: mix-weight ################################################### mixturewt(best) head(mixture(best), 3) ################################################### ### code chunk number 8: fitted ################################################### pdf("fitted.pdf") splom(log(fitted(best))) dev.off() ################################################### ### code chunk number 9: isoMDS ################################################### ################################################### ### code chunk number 10: isoMDS-plot ################################################### ################################################### ### code chunk number 11: posterior-mean-diff ################################################### p0 <- fitted(fit[[1]], scale=TRUE) # scale by theta p4 <- fitted(best, scale=TRUE) colnames(p4) <- paste("m", 1:4, sep="") (meandiff <- colSums(abs(p4 - as.vector(p0)))) sum(meandiff) ################################################### ### code chunk number 12: table-1 ################################################### diff <- rowSums(abs(p4 - as.vector(p0))) o <- order(diff, decreasing=TRUE) cdiff <- cumsum(diff[o]) / sum(diff) df <- head(cbind(Mean=p0[o], p4[o,], diff=diff[o], cdiff), 10) ################################################### ### code chunk number 13: xtable ################################################### xtbl <- xtable(df, caption="Taxonomic contributions (10 largest) to Dirichlet components.", label="tab:meandiff", align="lccccccc") print(xtbl, hline.after=0, caption.placement="top") ################################################### ### code chunk number 14: heatmap-similarity ################################################### pdf("heatmap1.pdf") heatmapdmn(count, fit[[1]], best, 30) dev.off() ################################################### ### code chunk number 15: twin-pheno ################################################### fl <- system.file(package="DirichletMultinomial", "extdata", "TwinStudy.t") pheno0 <- scan(fl) lvls <- c("Lean", "Obese", "Overwt") pheno <- factor(lvls[pheno0 + 1], levels=lvls) names(pheno) <- rownames(count) table(pheno) ################################################### ### code chunk number 16: subsets ################################################### counts <- lapply(levels(pheno), csubset, count, pheno) sapply(counts, dim) keep <- c("Lean", "Obese") count <- count[pheno %in% keep,] pheno <- factor(pheno[pheno %in% keep], levels=keep) ################################################### ### code chunk number 17: fit-several- ################################################### if (full) { bestgrp <- dmngroup(count, pheno, k=1:5, verbose=TRUE, mc.preschedule=FALSE) save(bestgrp, file=file.path(tempdir(), "bestgrp.rda")) } else data(bestgrp) ################################################### ### code chunk number 18: best-several ################################################### bestgrp lapply(bestgrp, mixturewt) c(sapply(bestgrp, laplace), `Lean+Obese`=sum(sapply(bestgrp, laplace)), Single=laplace(best)) ################################################### ### code chunk number 19: confusion ################################################### xtabs(~pheno + predict(bestgrp, count, assign=TRUE)) ################################################### ### code chunk number 20: cross-validate ################################################### if (full) { ## full leave-one-out; expensive! xval <- cvdmngroup(nrow(count), count, c(Lean=1, Obese=3), pheno, verbose=TRUE, mc.preschedule=FALSE) save(xval, file=file.path(tempdir(), "xval.rda")) } else data(xval) ################################################### ### code chunk number 21: ROC-dmngroup ################################################### bst <- roc(pheno[rownames(count)] == "Obese", predict(bestgrp, count)[,"Obese"]) bst$Label <- "Single" two <- roc(pheno[rownames(xval)] == "Obese", xval[,"Obese"]) two$Label <- "Two group" both <- rbind(bst, two) pars <- list(superpose.line=list(col=.qualitative[1:2], lwd=2)) pdf("roc.pdf") xyplot(TruePostive ~ FalsePositive, group=Label, both, type="l", par.settings=pars, auto.key=list(lines=TRUE, points=FALSE, x=.6, y=.1), xlab="False Positive", ylab="True Positive") dev.off() ################################################### ### code chunk number 22: sessionInfo ################################################### toLatex(sessionInfo()) DirichletMultinomial/inst/doc/DirichletMultinomial.Rnw0000644000175200017520000002327514516004340024260 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{An introduction to DirichletMultinomial} %\VignetteDepends{} %\VignetteKeywords{Microbial metagenomic clustering and classification} %\VignettePackage{DirichletMultinomial} \documentclass[]{article} \usepackage{authblk} \usepackage{times} \usepackage{hyperref} \newcommand{\Rfunction}[1]{{\texttt{#1}}} \newcommand{\Robject}[1]{{\texttt{#1}}} \newcommand{\Rpackage}[1]{{\textit{#1}}} \newcommand{\Rfunarg}[1]{{\texttt{#1}}} \newcommand{\Rclass}[1]{{\textit{#1}}} \newcommand{\Rcode}[1]{{\texttt{#1}}} \newcommand{\software}[1]{\textsf{#1}} \newcommand{\R}{\software{R}} \newcommand{\DirichletMultinomial}{\Rpackage{DirichletMultinomial}} \title{\Rpackage{DirichletMultinomial} for Clustering and Classification of Microbiome Data} \author{Martin Morgan} \date{Modified: 6 March 2012. Compiled: \today} \begin{document} \maketitle This document illustrates the main features of the \Rpackage{DirichletMultinomial} package, and in the process replicates key tables and figures from \cite{10.1371/journal.pone.0030126}. We start by loading the package, in addition to the packages \Rpackage{lattice} (for visualization) and \Rpackage{parallel} (for use of multiple cores during cross-validation). %% <>= library(DirichletMultinomial) library(lattice) library(xtable) library(parallel) @ %% We set the width of \R{} output to 70 characters, and the number of floating point digits displayed to two. The \Robject{full} flag is set to \Rcode{FALSE}, so that cached values are used instead of re-computing during production of this vignette. The package defines a set of standard colors; we use \Rcode{.qualitative} during visualization. \Rfunction{dev.off} is redefined to return without displaying results %% <>= options(width=70, digits=2) full <- FALSE .qualitative <- DirichletMultinomial:::.qualitative dev.off <- function(...) invisible(grDevices::dev.off(...)) @ \section{Data} The data used in \cite{10.1371/journal.pone.0030126} is included in the package. We read the data in to a matrix \Robject{count} of samples $\times$ taxa. %% <>= fl <- system.file(package="DirichletMultinomial", "extdata", "Twins.csv") count <- t(as.matrix(read.csv(fl, row.names=1))) count[1:5, 1:3] @ %% Figure~\ref{fig:taxon-counts} shows the distribution of reads from each taxon, on a log scale. %% <>= cnts <- log10(colSums(count)) pdf("taxon-counts.pdf") densityplot(cnts, xlim=range(cnts), xlab="Taxon representation (log 10 count)") dev.off() @ \begin{figure} \centering \includegraphics[width=.65\textwidth]{taxon-counts} \caption{Density of taxa, across samples} \label{fig:taxon-counts} \end{figure} \section{Clustering} The \Rfunction{dmn} function fits a Dirichlet-Multinomial model, taking as input the count data and a parameter $k$ representing the number of Dirichlet components to model. Here we fit the count data to values of $k$ from 1 to 7, displaying the result for $k = 4$. A sense of the model return value is provided by the documentation for the \R{} object \Robject{fit}, \Rcode{class ? DMN}. %% <>= if (full) { fit <- mclapply(1:7, dmn, count=count, verbose=TRUE) save(fit, file=file.path(tempdir(), "fit.rda")) } else data(fit) fit[[4]] @ %% The return value can be queried for measures of fit (Laplace, AIC, BIC); these are plotted for different $k$ in Figure~\ref{fig:min-laplace}. The best fit is for $k=4$ distinct Dirichlet components. %% <>= lplc <- sapply(fit, laplace) pdf("min-laplace.pdf") plot(lplc, type="b", xlab="Number of Dirichlet Components", ylab="Model Fit") dev.off() (best <- fit[[which.min(lplc)]]) @ %% In addition to \Rfunction{laplace} goodness of fit can be assessed with the \Rfunction{AIC} and \Rfunction{BIC} functions. \begin{figure} \centering \includegraphics[width=.65\textwidth]{min-laplace} \caption{Model fit as a function of Dirichlet component number} \label{fig:min-laplace} \end{figure} The \Rfunction{mixturewt} function reports the weight $\pi$ and homogeneity $\theta$ (large values are more homogeneous) of the fitted model. \Rfunction{mixture} returns a matrix of sample x estimated Dirichlet components; the argument \Rfunarg{assign} returns a vector of length equal to the number of samples indicating the component with maximum value. %% <>= mixturewt(best) head(mixture(best), 3) @ %% The \Rfunction{fitted} function describes the contribution of each taxonomic group (each point in the panels of Figure~\ref{fig:fitted} to the Dirichlet components; the diagonal nature of the points in a panel suggest that the Dirichlet components are correlated, perhaps reflecting overall numerical abundance. %% <>= pdf("fitted.pdf") splom(log(fitted(best))) dev.off() @ \begin{figure} \centering \includegraphics[width=.65\textwidth]{fitted} \caption{Taxa fitted to Dirichlet components 1-4.} \label{fig:fitted} \end{figure} <>= @ <>= @ The posterior mean difference between the best and single-component Dirichlet multinomial model measures how each component differs from the population average; the sum is a measure of total difference from the mean. %% <>= p0 <- fitted(fit[[1]], scale=TRUE) # scale by theta p4 <- fitted(best, scale=TRUE) colnames(p4) <- paste("m", 1:4, sep="") (meandiff <- colSums(abs(p4 - as.vector(p0)))) sum(meandiff) @ %% Table~\ref{tab:meandiff} summarizes taxonomic contributions to each Dirichlet component. %% <>= diff <- rowSums(abs(p4 - as.vector(p0))) o <- order(diff, decreasing=TRUE) cdiff <- cumsum(diff[o]) / sum(diff) df <- head(cbind(Mean=p0[o], p4[o,], diff=diff[o], cdiff), 10) @ <>= xtbl <- xtable(df, caption="Taxonomic contributions (10 largest) to Dirichlet components.", label="tab:meandiff", align="lccccccc") print(xtbl, hline.after=0, caption.placement="top") @ Figure~\ref{fig:heatmap1} shows samples arranged by Dirichlet component, with samples placed into the component for which they had the largest fitted value. %% <>= pdf("heatmap1.pdf") heatmapdmn(count, fit[[1]], best, 30) dev.off() @ \begin{figure} \centering \includegraphics[width=.65\textwidth]{heatmap1} \caption{Samples arranged by Dirichlet component. Narrow columns are samples, broader columns component averages. Rows are taxonomic groups. Color represents square-root counts, with dark colors corresponding to larger counts.} \label{fig:heatmap1} \end{figure} \section{Generative classifier} The following reads in phenotypic information (`Lean', `Obese', `Overweight') for each sample. %% <>= fl <- system.file(package="DirichletMultinomial", "extdata", "TwinStudy.t") pheno0 <- scan(fl) lvls <- c("Lean", "Obese", "Overwt") pheno <- factor(lvls[pheno0 + 1], levels=lvls) names(pheno) <- rownames(count) table(pheno) @ %% Here we subset the count data into sub-counts, one for each phenotype. We retain only the Lean and Obese groups for subsequent analysis. %% <>= counts <- lapply(levels(pheno), csubset, count, pheno) sapply(counts, dim) keep <- c("Lean", "Obese") count <- count[pheno %in% keep,] pheno <- factor(pheno[pheno %in% keep], levels=keep) @ The \Rfunction{dmngroup} function identifies the best (minimum Laplace score) Dirichlet-multinomial model for each group. %% <>= if (full) { bestgrp <- dmngroup(count, pheno, k=1:5, verbose=TRUE, mc.preschedule=FALSE) save(bestgrp, file=file.path(tempdir(), "bestgrp.rda")) } else data(bestgrp) @ %% The Lean group is described by a model with one component, the Obese group by a model with three components. Three of the four Dirichlet components of the original single group (\Rcode{best}) model are represented in the Obese group, the other in the Lean group. The total Laplace score of the two group model is less than of the single-group model, indicating information gain from considering groups separately. %% <>= bestgrp lapply(bestgrp, mixturewt) c(sapply(bestgrp, laplace), `Lean+Obese`=sum(sapply(bestgrp, laplace)), Single=laplace(best)) @ The \Rfunction{predict} function assigns samples to classes; the confusion matrix shows that the classifier is moderately effective. %% <>= xtabs(~pheno + predict(bestgrp, count, assign=TRUE)) @ %% The \Rfunction{cvdmngroup} function performs cross-validation. This is a computationally expensive step. %% <>= if (full) { ## full leave-one-out; expensive! xval <- cvdmngroup(nrow(count), count, c(Lean=1, Obese=3), pheno, verbose=TRUE, mc.preschedule=FALSE) save(xval, file=file.path(tempdir(), "xval.rda")) } else data(xval) @ %% Figure~\ref{fig:roc} shows an ROC curve for the single and two-group classifier. The single group classifier is performing better than the two-group classifier. %% <>= bst <- roc(pheno[rownames(count)] == "Obese", predict(bestgrp, count)[,"Obese"]) bst$Label <- "Single" two <- roc(pheno[rownames(xval)] == "Obese", xval[,"Obese"]) two$Label <- "Two group" both <- rbind(bst, two) pars <- list(superpose.line=list(col=.qualitative[1:2], lwd=2)) pdf("roc.pdf") xyplot(TruePostive ~ FalsePositive, group=Label, both, type="l", par.settings=pars, auto.key=list(lines=TRUE, points=FALSE, x=.6, y=.1), xlab="False Positive", ylab="True Positive") dev.off() @ \begin{figure} \centering \includegraphics[width=.65\textwidth]{roc} \caption{Receiver-operator curves for the single and two-group classifiers.} \label{fig:roc} \end{figure} <>= toLatex(sessionInfo()) @ \bibliographystyle{abbrv} \bibliography{References} \end{document} DirichletMultinomial/inst/doc/DirichletMultinomial.pdf0000644000175200017520000075226714516030164024300 0ustar00biocbuildbiocbuild%PDF-1.5 % 19 0 obj << /Length 1445 /Filter /FlateDecode >> stream xڍWK6W{5ÇDIn@!@c$DDdû_!-D|7W?b2Y֛4IQٺ}3),jugvoTCBG RFD*gE7Y,yJotc[VʉϖLp">[rF ZB)/Uge{S6ؽwSg,&MÒs%hI^0|8Ϸ "!)HG[y(Z-`eWM)|kGSg*;xrs1 .H!taK`}3-t^ٲC_vmTv8+wA7h? xۆПms џY2 ϳ(xT7շO%+H8f-;] P`9TX7|9 ٚ 82V̈<goƲHҡ;u=][TBmфbFRAÛ??2R@۠7^eRxP (Tq)gvUW9%ߍ^Ъz[@U_"8.tin!Q-Ԏ:ȨA_9H=*TU6eQc~g8*ϓ vc)R‹݆˃@Ʉ!v>LHR )-)1jtUc|vסJ/D vhz#Ow;g-qr;$yZ];#0Rem 3mN*h8Aę{6DPhw DzWБ9'\fAXQd3_~_"wƍ;ĽA<i|GY1٫1O/ 9*=p;6%Ar\/"+.O(Cԓ|K6 \em '\yw37DnSxs;@B[?=ـptPHj;sm}f4h`+u"I1d7vV|7u s煋CKLO_ B1O8Y!S_Y6 |~v endstream endobj 35 0 obj << /Length 995 /Filter /FlateDecode >> stream xڕVYo6~_!I^E['H $@SĵHÉ?!ڴX؜{>,` 9)I3oJ3gNWGuAB-zs1̫Y{bήYN& pKF\/;?0joa8=<\,#tʦpɥuS[`BprsK+{cfǪ5MjhLk腈G7ZzUM#n-`Dϥ1ԭ 1azhKbUR?nmOelc(Ԝ cW 0MgZ QSAh|9/lВǒ2 PCO` jɿ'ܱu4LRWj+`lɄL| _H/giʍYLdΊ<C+Jp\VYR@ԷH/V5 ͞}U%,KSL2M׷0$KA7Jd>+7> /ExtGState << >>/ColorSpace << /sRGB 42 0 R >>>> /Length 10164 /Filter /FlateDecode >> stream x}Kmq39kM< l%Ч$(.MZX,N-X/r}?~oϔߟuY4?\>>g>7?vo駏?o~O?~ݷï`_|9Gio~~c~룏+}?|{?~ڝVGO-Mq}Ǘ'mKnc|orRَ.]9ѥy]>>%_P(גXٲ!!t^ZvG8_t0xvs\OGg}x4fYy}XP?SkK<= ?mgok]/@b.Qg;4:xt >;COzz}% ҆/D%yҖ_A{71+C~9m[+'^SPK!jW><4;lrZՖz+.r]?6Qksw/DeItXhTؽ|%ٖ\~/ٵ(pTueRKn G3&^=:Q_YǵfhjIDu%MgYUsknDw*X+d!hX .bw_Ty-W |g ꪆbjNcō^-}$}7Ty@Lkmc|pTuUCM{Q+ 1_}%u>=pq{(7&Y-p47c? h_#ӿُs'Ds\x4t$+b4_~vw]Hc97;x2,|^/jץ|[p͚~Sgt8!s n?ϨҺ7V܈UW-7fb?:-K.5Tm;^<pTuUnme=F%XqcWK?}Yrg_n : =PNr-ot8AtWJ@]5Ft'^KVj)U TyY|鶼LJkV4v}NGUW5$(;Mt*@]9g`ō^_M_'C߇. ho(˼B\j沀ʦ9é\ Xʋ1C=8qi pn7ԕsV^oj}=0}_bKO- ;gI;9mc֟96EJ]=%aBM=wZ-k}V k_ /rXarclIo!&z^#ء;ԀtBmZ+GGYqwY7$lVHu)3вyO#Ɖ麽]uуnG3&^Y. .;(jêhś-f' Ka o 6bii1)NnghCX:+MZDPl4 SS@2t^%B5*SXs#ח}v7\w* pڋpj %L3*i<٧ƑW;9bP#Xrs'9D4/2"/eoe \4!%-{>2G*cBƠ9 ѐ!F'4Vܘ+sX#@7N;nҟ]- kE hR/fƨ%Ki1k8 FڡK%6j,`p%X&1j %4Vܘ/+}){j@raxT)foi4}jDvcݣ PWXgWGqhLmh(8+<*yoN'`)pTuUCiG3tMCC7>ޯCټ)PסЯ7~ n/ Z }bb\篃TCG@~LVĵGa5g`Ş^ܑ2헺bE{@/Lڂ comU h-6Urz N27OgC;Y.gS~"{Yt'&Rܣ `Wiɫ^A_G+tTZ о^2VzItv) cP(FSXs#W?+> Tv]gCaT`\Lna}΍\gCջ;pd|ɣ PWXrt+/Ƴvѐs&Wk:yb_ Mg~PC˩2=}(i1Gz| gԪW:?y|PAiT˗7T'oJ~W%}JEPJ^Pw{#>^&YJ.:#:HeGp$j+Lw3ُ͎ e9  q>jYt{ :%؏M.UrFtfCh`>MF=lʌ=At<n vG QU7;x5˫ j[@ ν/Y7Db%c&knDw<1*5:rS*O@2ʵN@ 2XntYyDJt՜Ɗ:Rk؏M^yF-߮U% 0[lFit`[1ǜ+НԢF0{pYKAgo؋:t8^.`4G% ibō^_SNO+4ı_Xk|=yrj|8)r#w95~`w6>V2 Q𖏂V𖏂4V֎zշz_$ی+)L%|wܴM,EtJMktyT>t^/0 u44ιUF rk5:3v/%pea7Ta]B $F%Xqcԇ] 6\**]H2Sc"t3,k ӉA9T#ӮXŨRCf&Ě;:UChlq6t8!!oc:=Isۢt'Q]aG.([үvQ7ҏ)nUF. tQNը(N\*P2$eMu@¶wU]StG3bOt'_$w`)o_6b$]mQnV.!n`,*NCs+nLwyل*l~ t ;ե|ԍ`N E1 97;x\CWu^6n3^'K]ͬ(d"t)θUrgjϰFh܇QвЩHS5HtZ+FCE&cŊ1^ZzLEoG_SVGѐ"0P<>TqYS~Fͻs!)*O?xck`F8sw#{>`$RbMw;=[Q}ƒ;x} 5dӓד/qŊ&BQ8ykԞ|so_=^{u },3Ju8sUFyb+@g`WFà :R܈5 "O =Q`[UslՕm ztG3&^",T[gVBls_EtN0řДИꪆɤPűGRY#ur{x*5r{g>̧}3,o }FBxe9ezIabjr[ZvZkFS4#N t1j8ii1]̷Kwjn^ݻA{88O^vIwPU 1hT9WIwjc߯߯D~}ذ潁r971Ĝƃ3;x}NKYOUU:A/p ]G<  ,Z@`!u@%81j`xNc`ƭq}%Ce0w۾҇o;pN@WX{TZV[\@è¹xwG38ancyӝT(uw{]^.jr{7 ŗ=^3xŋiNZϛ"xS:ʊMz)RO'UR/u-I^r%_ EgCODQ15Rח%͟+yq.8W\ nM~j1}I…kh +t7 C)c/KG\1Fʸ t0QZ=wTqA,IU_DFċ@lnnwїK>zܣkܣoqͅ}~}_|EHл,,IIv#AW6GHZ%j n2QkWaܘ5ÝE 7 Sy) }e ,\bw<=:3ܺn3Nqi(GjߋvnUbc|(~q "h9R(+U@YkDwOORt>7Uo76"Ҧ3PCGA7zԼJiq?ߌ0a7x;;%۸0a7{8LGt6x7;_d:M]XKLHER5{I .o,6'=J@յBSh Xkr.۷O8ayZ^|Y[CU*wq &i\`Lj٠LRd ko0y3k|` xghfȮ18Sx#,JmPa^2F5fsƯ|c>y p'hgu&C<~*`fA~Q x T_eR`_~4KHBF!KYZ%`:k*zprQM΂+`F]0=*?rXG1oAoeqUKxzkYzvӊ71,֪E.~Cр3Ǔʥ冊|ȳL(w+p&7+Ÿ2o/xio˄?^ER8N!l]ó6SHV|03ǀjPFMf)|gNoG%ն/$^L`Е6Vj<\Y<&|IM\}u_޷~ R:Ҁ1U5kJғ2>t)_<y2po%Wy^ICyx)[tp<рyS;GW@Y#̐d# Q2Lۀ'9Q`ܬ5xBO%ٴ^߿aTu3^ O\`GxnY򬞯#L5bhC<.ɳjO y~ߋy^ Tx_ZOYh^[$ɳy'Ϩg5,2ϘgS>X~SQSW)y!+i+֧uK/i'QI>w<҇g~C$s~RnGxCyħO*F!aK夐/"I&i=TyT?dỌ~bG+CgLE Ϟ=xqԨAmJMrȳu'(jc9* ^EȻ yT/Zta KjxNj˸us!ϥ%ϪΣ2yTzp/5-~Ζ1<}ߪ(te{mui!O8҇.(mh: ͟+'A,SL:J"2aGZ ^nǫg*N~Pk}=p LE}_xEN!6gz<W5g"fO҇3H>J B\K0ϣҺJcU9V$ac}YGhQ` W/IA%͍Wx>jzx n`L/>4~W9S&K A~.P_|d0S8_;V"WGp#i)Q%  7#7wS p7GRf #G7TE}|}).t&z$]:/񻢐'bP+}B~9 !+ > `eJy:7>:7"?m<;Ok!g"I/7h_a.<#<E;bM.# i̢4fCE/#~;~ɚ2O endstream endobj 44 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 50 0 obj << /Length 1497 /Filter /FlateDecode >> stream xWKs7 Wh|&>ۺ3M̤Rl]Jt٥l^zSiA@۽cr';ӽ6כmԍ#4G;gԩ-ugI1/w*+~<GUBFe_SepFVKfYDNJaќڦ! `QETmU lyYwʰ-V g]V\=\ᥒ7W_Χ!ǞDWSP CrT*~{n4pV<. [S5x x}kYƍib(+DMS֪qiPBhFJ߃C$>isD> Z+p-H@%NI2նːhwd ӭE<6+0bp8c>ph)|/Љڦ3=lh(IDU`sBdCg؜6)'1'Ü g21@nò=sND.tMZ 5Uch0+wWQ@7F(_L'kH ]|<#Es]u,do,(4E ԇ:HeVQq :RUt~=jb+}\5Š^L'tuԅ}x9&L:ɋ>O8X`#+s>.Hs[Q0qE ܌y A^N"F{t'Br ŊrؙyrT)g.+eGKp{'RLdt'#lNUo)08H4,F92'7Sy{Ěs<B>8dmQ 7IpC8( cײZ t}XZ䥩.pxs=*R@B^DQG5,14J&RCSrQ-X)rDJ8χ\{#c=i+MtlpCnUwm&FNca|!ʪ^C[^.$;?ЧI.>0ݛ\M endstream endobj 59 0 obj << /Length 811 /Filter /FlateDecode >> stream xڝUMo0 WbUev-;9(,_?ʒ'KbQH>4q0C$u( z8Z%﫬+dw2]پ&̶ņ7z4(Ib#BB 6E-Dy4,ںBٔrm o;elWl<'E)' JS{e8n-ێ7lVpVii[^9ox=sn.tӶZhjWrVuzHzk(ї]QIQ0UX LqV+R{*β>WWBꨖu_2P0/G"7lߞK6BqL;u!izjluR@Zz=3X˯!7#7 p:v5Wq|2YVLVT{Pvh515-Qx,!? b6֘ EO3hNn/) K闎3;)6{Ւԫi+wտB7yE6[>8Pfvg L 3ܺJCU|\K{Άf6E5E!ٍ0(f#*׋ߪ8EaR&r]3 endstream endobj 46 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpcbBBxo/Rbuild25b66d49398c85/DirichletMultinomial/vignettes/min-laplace.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 61 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 62 0 R>> /ExtGState << >>/ColorSpace << /sRGB 63 0 R >>>> /Length 1022 /Filter /FlateDecode >> stream xWN\G߯%,ckGB%x,(zkY ՗, |\ΐCv-Bj _\\-ya}un@xJs. 8BHյ f\-!gW0T(!J!+R"zwYDt:GB! #% aD>\*Cr(fG@JFK$59q)]"Is-{6N:õ`֬*s꨸QuۀPq ;f S:MhA^l<iZC.U[ 5 -s۸R[2ʙ"z"nCCšxeZ HsڀN [ꔵ[߲Xz@KK 'J j#/6:Ȧ4++ *e:J˚mN7Ok#x:.G[)gD%Q. OR65ĹHsb r3b-Kߺ&$YF4;p&!|]qɫVFilN [quٷ%6c` __IE{fٴ$7-ҨM뫫܂$mToZ >U?^;w4;oU~J}W8ALN-]#( cQDجj]DxM?~cڿwv\`|R|ܨwG8 簻Y~qKoZlmzFіhW{Uhis-x~ȃ~|M™j%-N>A]a69_ORxk54?ZbyD:k# ^ )~\2dmh3~\XOg 4ܞ hvp)pv|{x?w|.?Dd<'ۉw endstream endobj 65 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 70 0 obj << /Length 746 /Filter /FlateDecode >> stream xڍUo0~篈xi.8!=L]UiJuDs(?B!Q!qwwߝx>#Y2yEh2/o&&4".n7wM~g G|rsϰ,7/=c4S-zE A}ʭc(:++)UYuh`u2<0dE'9q3-fPu`oVR =ozYyX8 :ZUgV#RB3FPH*qҚUˮm) 9wVxf6R :ka(a=^QW L0WEc<W _)XiboѴ:4ֆ,}Sj OON}:1@ A]i=F,FP1!MfF%Z3$zQ)6G)Hiwn ^ XZoh;[hy6PEZn0jh=ioEԕ$$v?RZ)r J4Ex/t~ۮMū*5L06uCIi97;U r#ܬ&|_!Mz .뾶 /FV]F ~ g{.)ƹdz<Ԇ^5JiX߂MH 7I`#,F,_ʈ(qc8:gŧ endstream endobj 54 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpcbBBxo/Rbuild25b66d49398c85/DirichletMultinomial/vignettes/fitted.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 72 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 73 0 R>> /ExtGState << >>/ColorSpace << /sRGB 74 0 R >>>> /Length 74361 /Filter /FlateDecode >> stream xK-Kr6_ *_US 2lwC`EwzDFK6ym A{W#22V_믿?߿Oݿp8+wſO2?G_/_U__ǯ???EW~ꏳ~~O^Tc1珳]}/}˯?l_hs|_PCAt?x|v8]~쯪??[G#oc `Ww>S1!?珫?v/\)sR`mߜ"?:`\?J@1<[@͔gTW;TuG?F#Y̛n9ƩQy(]{?U,ifIoxZ_yoJ:~ p3c s_F}].) \|y{ x>qe(#[q*^. l}Jo˾yY~N.7/l/z>m7%_~?{>Q/E]>|9|%wY3NZşJq9#~h[Eᒯ簬7}(.,*~!n}-gyl}V*+qϺE<}JK3Z=?ϤxqPHr[Sj okrqv)x4r'W7fǰ׵^,g$G ~a%m4zD-s=n?3]{Ǩ1.E #wŐ|<־_(U?!KQ#p![-eⲯi =,_ɧgu yG~_k [/*KW8l5Vz#\5ϺyטܾVGCB?:8l5X_ƵDbha{%_@Z~&Ź5hAC^iu Vc }m}q5UH9JoK灹<\k*|zY?CpU|xا[?H4FX 5\\_"\C k!\"xM+k7V!xnY}Bao{IwI@gmr"V\zw{n; c%m4}mk掶!շK=NNNi!MBpB!i+.DsGRpdg|V\"OYlRտq걷SVz#\5}LG}IIȓ9 yy8>&&#O}_-S֣9z4Zp %k6}O7yZ$cMj,6cv4~ۋs3UMִ+ld&g9Xbm7e_=-k57C-l,ONH2m>3Q@0^ECqu*,p1?~".uaG}k{==]:WQ@Ryzʏ[HSVz#\5}]xuq'ʩbp 4} J8 {$gƭ|04ޗUA<V׀~a_$ W8WH4]9|~ Sk+}$.;cұCX|WKC7VkewD!~Jj~CSScMmHk-6R~1fXR`kY_&VHc1}Mvw1}/a,KpHc["ߍNzE>R`mH[v%l5Ȯ+X|\RHF0#(ɣ:VXjBdm7gV+ြl;ߕÊqZ|Ȧ9nD|h|.f^JPǗ%_˒/[>,ǗZ5>, e7%_=\HJVϤ} '7G}G!mP h&QR}v[q=_fi dMi`kYY52T]ۙwh$Ϳf``l_1h;}.~o'&EEv><}+8%az4[b#ep(N =ZVxc\uDOڙFH4<cmjHT4c$Z (HZ}Di$j{$mH+=ְՐbݫV 5h5X9 Vl*4JoK:\Wn; ZoqCk^?$xt|¶B,5:S%j,ݧF灶'~&Ņ8=k k,bԧF{'yF8v5$[Iϝd;~$M1;c#>e7%_??Lӳ5PXg}{fxEU>sq/__Oġ~zU)'IV>+I8bdדt#|'BBK?=ʇ;״9q*G)!6wXϵO2ZVluR+1.o7.l9ƫ)n ;Qe(U(.w!XRO㒯~_Y"èg|5R")8 sG8⪌R1' KEޫs=]o%GXp>(VǫjBunZ8`فdaOy^F(L ɭv/ܧFN5x>ZyOGV1Cp.o:O[g ʊÉZJRJoK~t5 !k}p=k~Iyax0p4cV^OYpWL )13b _sf+~s(L *5.jۙVxc\կ&ŵ>#nk8i5n#}u`RZ8ABx }n;dJ<;!ޑC#%~|W!^<īo߆p x1LaͰ₉qJ/p8z*Vxc\Wo}S>aZ>)|Ô|9L8Ѿ}89Ly_#"0~wi#6SwIzێ ?jxK/]~ P(8hbV4vj*>7=n5й# xj3"|`7%zKQ^`Zq H`R+.=fVl)Nuy~O ~"VI`xyBxx[hg^{O[9-#Fc{y}[F>ظ|Qŋ3)VXY uhxKp[KQRJRԅLz ֢ϷN}u-%kP)hRU0ZuɫG$F/_BVR)ihP-TN_-6k4e~&2祂Dk0#e͌^L6T2'C :V)pEᲯRJ_,,C8w+=뿨n8f8o ]ymJ=ܪK+X0!M.7 1|G9(qf=8YM.[T#|Uzq}+G ;v[C*7wzDJ!/d1rؔoRq:HYqQgFY uH8 hy/P-̭BOYpq;8&[[8Т𱑹Ffy'FfD Ѹxxֲ IPdرR6)8 ZzXiKV N%u2l|bd΍p=[c xQt|JSĜa7%_UW4L|wmh%NQl&JXsOصq) \aSf=;NJ~f6ӐۚvdVR:wf }'G߲/a{-^7ସXAX'sotqv)N>q LQjuĺ]}JoKtm`R+ðR{([;:8 -Cl5ȸOYpWm%t+XjC87hz;W"xGaPOMӳ|1F]atg7]T qÊ (LXq$qϐӢU >/GXpWO8rZltS LQxH`g O*ܩQ \7Sj*>e7%_~3)Qךj3㮁9@ u>XLXIlm"lCMmo婰_E(UrQ.F*9JE%V)|D%o_S:v"K( J*#kbmKYcliR %8 ՛c+ +ʚc)LeM#e#cSE#Fہko?Ÿu?Z}[}߻8dBEs>3ipfTELj;LV)!VzC\Wnrxx+7\y#GHؕg<>*7q(ov*^^}:t~Jȧ-GNEhu\tD$>߸rΙf혚D`a.bTuJm݀a_*!,@{IQv7Ӟ9"GY̗vV7u1SOs‘Bn ikՑpW["׿E}E`Qقo +x8^ SژU}jm E署b},1XY|Y38 A`!(#EZ!?i@|>?ts} +vRQ qtT{Tⲯr>tRR.ʺJ=QEqV1&;LHQV7 |O ,@~WCnx,F^ێ.;zB@T 'h' kHBZ=GTU~dC& nK ,ܷT5J&Dk&X_륻KX'. G!,qpA`>em^K|%yP/+/WmE8 U$qzYjz٧Fk$ڡQ)ԨƌՈb+ ШxcSШU}=vXX̅^Wz_mXT^uANB\(e"É[  )+!."A $x@ H< k,DH1)@n5'kr& +pTLQf"wXV`h4n5,'쫧1,7g(*ځU&HPU!a" f`[\4Iz yC& B  *ZED`*/"48c,¶vXD߲/ai'4Rh8aU% 4!Vd'40$4а4 O[>y9lbAV4n%puD`=ɴuV'!,@*q7l[K m1e_$v ,Bv2(ϺD`֒l; E`Q 0ڎR7ؗ,6EhPlEP c7E+fD>,sh",)*&P϶V3d}BXX1":B޽r'fbkrX8 2vA"n5SVzC\[H\"4tXO.W"huEDQQJ ,Աɸ" ,K?LQ (YpV4޸K,ܧF䫗D'A`!(f4gsw"X[VlY8 4 QZݧVG\52k꛵kL`+Q RB8RTM`>mM/_=_{ X33NNKXk '!,mjXOZ qo.*8ޥD+Y6TJ+SB8 A`aJn5,ܧF~u,NwHQQySjXTޣ7%+p.c0n5VJSVz#\TQR6n9{+T ,PÛB:!] !,B,54V[r+XY s쓳"4 ,* e[~"4(dp~b>D`<˶XIA`PvXD߲6‚"4 F) *Vxoo^ h"4[XTDA`}n}r% +]s&Eu{AXOq(Rq2}{SVzs:\vLV`)(*LˍXG!, pZd} oKEYEQQ׽,pŠ"Q )HD!)*&PᲯ ( QUqܻ,lakE` DƁ­| 'wXX"ekQQvb-z־($juXOYpWOqD d=EQ•$5VDŽuth6C[  I!.-Ώ{,BuxۋbAm&Xc%5$0n{Xo闱.jVL.x]#Xa= G!,qk7SVz#\WhH k+-"-+Z)mw&""\uOLVCkAx]̝87BXXƭ|}=R ꀒOi:3l+3 GǗRR8P}|>e7%_S˝,`jJ)@ɝ,ַKXQ8 A`a!ޭ|\l +@DR^zY\lz$ɊZ^Q +P_8PT pVeV|ȃ륛 P{6ډZJ!,@rPB*e˂"4 1 lT{nƼ˰zI`%EhXdEEA`}n} M`aVY(*6G P2C8 QG ,ԧF޾~hzn\ky=wA`s%M`s-Wu56}WhǕ,*y%l=QK8 9NqX>e7+r,4m +@D/7fS[1G!Qb VF#F?מzXX"x(*VIJ89+ygܹvT8PT p^~>9̙=g"||L3L|KO~D9̙; 6XoƗ*N : VRXFz@ѷK췧dfy; X1Xn`Yqνobp=sV7OYpW Xq9+9]3_Oֵ HQV7}*k1Z"Df=e܎\zl—&O)i\g8[{>e7|9%eJLT>e7%_Ev- խ խ;W:D6ίn"WՍ _zWwᲯ/7fSPGBn ^+MBR7jO\[_y~%Рz2fTJkЮ×R!Ҁ"(bmE-6WŠa'dM`Xk3pӈV \uw"ְ{LQTљLr)nvЕBXXqB pʛ~X=T  kHBWTe7e_ųˑ,:綧 hbžɎ+ٌ pPB} oKz;J,BJA9 *Z/7^WNN4e 7ؗi)t& +%]J7.9ŽPA" HQV7}uzpK5.F*įNN Jhk)C9cIP7]~ ~ Qk5iA`vb8 A`a܅E[  )+!.Ŏ/򔈵/ÈM`cc˾~% +@DE)uE"z A:OQ +://S$1#ΏVjˑ,~Kȏ9Śzk Q{]:/վwosFk??>ooo|\2AŠeSk9ܮD`"GX5Gar0T WV{sa7%_w-2t` Eō,tk_r Q?(*&PᒯD`Ɖ2Ksk";if0PžGtތ5e#,)*&P϶)^֕D23k.w`oҹ4 ,* e/+cXX0XOCdǡ^ HN.!!VǾ>e7e_Sy3XXXVXoW9_^(8 cJ]FF}*o˾D`a )b|WO+V1BXXq2D)*&Pᒯܙ,LQpg"@Ჵ`)Sn8:)*&Pⲯ;rD`a s$ ~"FXYK8 W=VX'ps qWk븚 ,! Eo$hġ&hcWv\X,M`PK ,ܷTwZXD`a-#}E%X`z'ˬ8X'4ZA`>m- o_aXXy]ُ"-ػlơVQ +H+Mqvᒯe&fA`B M`噭XwjF08>  Q.x㒯tXX &}6&PYVEI!,LT;,}MS+B**0_̸1"k*wIR)$N1P"Vzw:7 8.t~Š#NM`V7Uq:OXYډD`V7$Ql +x x*>I$ QH ,ԭtH.|z& +783xr{'(ĉ$N)luXO[.$ژuX7Ъ.u?wcY_ 0YkcV vNjaju_S^ ɾgŨM`az\m%. wg>֒@ֆI )HD!)*&PᲯ߾+RŷJŷMŷ4Ʒ?gs1ҷBToef_-E`!(z9Uӽ0%,tZ\"&;LHQV7 |zM`ak"%9{vV5vCoQ"jwT!ᒻ5$wDPI,:~|XJ"4 f, *&p߶Sa5~ ,EE_MD`~u q W pᒯr$UB$z~YKrA QVF΄_e)*ǗUWY}Jo4$_5MШ q$k<&;4&bf"8;4j<OCV'\ud xM\Xy$ |fX8 q QWWV}:u< BV R<D(<g!@qHr >e7|}=<Š/~HRTgzla >¡[  )+.iA`a(bRŚp!&<%8dEsᒯryTS&CtA/J:jvWkiP+2 "~{ CPm:E"^寭Dm0Zhl 8 pᒯ?KA7h8-;壄ApC8:VV'\UH&~f H(@ OTE<E?Q94(*j  H(Rv i_ľ4} ,Bҷq1uwMT+ZE%eC?aIQ7zUN rQŠwC=)*bqW 덍p"lEe}XuvᒯEzЛI^,8t~% W =ef=|Bϲxʍe7tn ,r; \u/LVbM<Ez,aR8 A`anpV}*o˾~h.zƊN%B/EZ{>(.aT[B +P8$F p6$o__ M`a{\BKM`w{$eƭ|=B Pa#хD`1fha!m +@D!$)*&Pv}f"4,R> e_ľ1tA`Po ]<ߵϵnC._k),B"[v%lۿ 2EhG"Xk3EŽ0"4[XTDA`}n} 95sk~f95 K"ڭE FM`a#[#d!' W9b14G1y9o__{M`ai^'EVBk}* hN!,;EױSPT8vp)p/_SNVb mz&X-: '!,q) PH}Jo˾z Qmm?EQM,{9ŠN8 A`!(#EZSVz#\CjAx ,8yҋdRTe- x*kj,Kn5,ܧF~x)Ώq~|t~}Ϗ"48o_C 5#XL؇֐XTM`m_fJv=ǹ\UD9@D& īzX>GT8PT pvQ%_u VJ:@ή"PD\:@{X+%VwU}"^}HVtfi$Ev$#X0wIQh; ,@QV}JoKj4>@3/F^ ˴jy[Ǘ{<%_-XX5Y,D(H6j5,ܧU5Gj{ ,@b3X`z!AI8 A`aEa SVz#\us`X{]:@\++X`^b TBXX IQv7U'8VHa؉*ue~2tQ""4(hXTDA`}.~LVTN X8D`ֵ cg@A" HQV7u8}}E\Hd"T Fr""'"bHA)XVc$rᒯ +芙c_;+RT1jb /e/p T6juXO[<)p$ +.&D I dD`i b0!=[Xpχ̏3=m7%_DD`P,B,QP^MXIA`Ӂđ[vUUSԻ"b2/  g7s&0n}ñ , q_EgDhW6TL<"BM ,RDhgӱ`dP{'ѼIQÚ46Cf*8 A`!(#EZVxC׽l=XXc.=HQѹ[w6BA" HQV7|ݧ#XX^=U&[9Êuq]*̎pPB}Tz䫿K"D+oOD N]"`Ѕ/ pPB}Z|GNm7e_?.}|]&.;*.88aޥDT'-w9^P[w)p۟+XՋ;_!T Jmak  H("vXD߲_ZYyLEg\BQ}}$u@X u% l-g^+RY30v ,VsG +sT9pP(*jXOY﷯;+L`a I('MPB+i~X m{siR Ҁey# )o)/w8hD`aEZ@786[qWց{Q[6)xqZ&[[6);O%_ӄ ,L.&ԓ ,pDm LYY +**SVzScv{X*{pW qpJ:ĽdM+A{7pб(VmE-{pw:`:$(u|:0U\zQHTp:NSVz#\5EiŠy'N4"-X.ɰu]3 Du%Nh[}:TcV\,f@,NkhVNBXX1M? pN]`?ﱮ}/02D`a`1xW] Y(32DjuXO[&b>͖,SLQc,!WaU8 A`aIƈ#EZ֮%_)55Na&ͮaںĮ KakBMo l0;-$H p֭r>S!ރ}MY~%XX3o3fK!3Z 8 A`aX1V7qpg"b]U@mf"@ɟ;NL?ׄc5 ,ԧtO+,%B]&pXNbR=JbQy$Vz#\Wމ}ȿOv ^X I;T!wZOTHV7EX4="Vd`! XN3g>w+ҜJ)AA" HQV+hlf7e_=>XFu C ,X\m?Wt="42ol]]}e$l; D`aEeiBFhρ#6*p[#ŽPA" HQV7ug3X7;j6b3&XT}=483n{Xoۧ}^,_c#RT+/gq ^)n0_lםdvD`aE%AWi4 b(^~gX/ G!, pPB} oKz>>qVq QTX&oX,к,[8-. 󠍸]ݒ#[)/V̒,xs Yn0G!,q_ [  )+.=E&b!C{ғ_{&X'V錣V u!!.w,ॠU>bLHŠRQ +t8RTM`>m7%_=i A*Bp_5 궣~`%EhC!,)*&P϶. `vz_L`7zXKz}] 6VR:wvXD߲/a)^e{˺]c =VrQ%;88UнV}JoN hE`ޮE=VbŻ7,=P:QL8 cJ]FF}JoKoD`a B_05Xoⲯq'0Bn i+.ihpʍpk ,pMk8 sPq2/'WV7uh S><_@g +X0bK ,H~Rpv.)$ p}E5$," '>q#?4& cIP7] 1ǫ(1GcW-.9^5HD9M`9vNᒯ^zXX: IQ3Xx%tcw uB4]\c4W>AE̠{XXq pE`A`󷍛o +PF8RTM`>mz]; ɔ7Ȝ1ϰVVk)*&Pⲯ)BZ?#5GH!Ҟ#5GHgi!=riG#J>^yWwmǫ{Ğ~u+_| ,,o"K ,nD*L WxkŌ[ wB[<4NBq WnX;Rا+ rޑY5JrB 5u8 wdVtQtVWVyӕLqVt(M?Xj2%(SM'̟'azC{=EOZ qW~cX2,&SmOI(Py _ͭJIYq9" d) je i`oyi7e_>} t0ljH+pjs]:n0JQGА8Қ8rtGHk*/_~Z~5!P_ $rNBVQ6[W}ҚU1m7F`hTm[+Z-p%5,^V%Ui+Ჯ__>1(K_po*Sv[5'vҰ}ײavlg4|^1gvTK9KrRV`q`WGsZЀTqCjξ _ ZT^ Wtʡ#5p}tP1 ph,;CqX8 qi \~1bj\qʛ*% u$ X{6[ѐui~(%É82NBʕc |#ROY qWb;o0a yEbqv^ n˅ mA6d}Ht_S ezd#=M-OQt LYq8 hU 7eKw1gռqWmPF&{EF8_l&'!nXQsVㆀU}=pKRӡ0e ZuĪ~uV%a{|EíOԼh-,з36-h%papj,@87}Bao{qչ}}+s(!ӂ⠊1&]$tB8q(V״VyC\U4RT䱯PԺ,5*HKl-ͅeui5]~D*|9pu+ z֦~y?cKiI(b0j)nMՉelfkZj2A}GIaٟXK563QQ& ۦĶٷKlq3"BPG\q˝9.w@SSqxO וo׵ɾ)8 )ẲVyC\u'qgfY &WɸHdfyơp"3 dX +3ԧ쫦!=%H)e4OyHSԺP8 1%X]8juO VyC\5N{6A,,- /F\@*AGյ$Di+*W}V56곪RظG&N !Q-`.+8l+H,"`PGpjO* q/_űR7iCsǽJ5H@}8?EhN9[bmJV߶˯YWjl =1YiyL9,xO<ڑ=!Ȃ*jV# }ʴ|S۷R^ӷ'tIo |uUF8^߾H׽i4 X:w,հ][;`!^3p"oũ|.Wk]*oN]R`kR0 dO N-VL\ Px3m\v^j[qiOwDD=3%K ',ijoYVwʛ ƸG,fAsBI΋qj^}VU7.S"Zs֟Bn֨b Z*lg&b,'Xi Qm6K]gRi}t8/ ũ8 gC[ v=I!.OahaiR*v|xCa<0= -k C}݋y1;_Vrm \͋8k14{E/\"+,E3)0\ 2 pD~Dg '![8DݪEVyC\5]  n9V^We`zU+J&NUkyw;Ró}mJK{m#6FpZlFF'!o#vP8njFֈ;o#kj5eg.ٯ#=gK>g%=WKJfXMų(:^PViA넗 +0bbb -dCgWl=tHn'k b' Ѩ<ć͗ȏ3%8 y\VwZ=>7|A T $^y &m9w\I 5Z+Py( kg{DϤ>l#at%NB(VIIZS}*o˾ +:?|!삃uaL" G8 QpP~X,\ظ*.|d +Y_u>/up^zGI{ wը>i7e_n-DU &h o{o g ?]R]c}+VRL^7©Z?e=ⲯ(0]#Ŋke.ebr) \t֩}'az.~>,hɯ!lYn }k}s}F:eH+?ܟܮ}sH{c_!|wIGZq[Y\͸:B)aQ]8 qĊJw[$VyC\[ݿQSi?s^#(E4d- )BA lV9D\v7΃OmΫPIƕqAAAg ҇KCVbXɛluF^jxC"k ;<5 _܏ W k axc[ ^&I!.DNf 94ﯯ9<CY%<+v U5ڎ=r-657?V]d{ JADVv q6 }M j;RЭ[mp)|~o7E}¹[Bos;p/_w`sERYׂz2bfB;v#RW0~VCⲻB7 ?bBEo_T}1qθ!K'uL}*o.pԪ;z[ݺQGB[u%E$(vϰ.pޟkʰg8gՠtⲯ"w :/t9yxM9/ Xoz:VT>Wtzwcѝ}Qj ;L qw0a57sCS+p׸c۹'VyC\5Eyo/B G4Ɉzօ`/h\cѪg ]杁w~U}v˔˾~ Q-I蚼 5q$la%/Sqm+:qłå@Z}>i7|ճ;EHƉtN z Vj-+Pɸrvⲯbܿq7[?$NvUqO Vqu=nz>i~xf}i}N[#O[-O[sjyyjVVVZ+fE̺<nޖ'5F͸u_7e_E<\Kӊ[yac/ ]GX/LI\E \5jrU}u0XV#T޶A1ufȺHGk\5t]iMHbڦ=]~ {[;oXA+o]j SM$tB)Q#ۇZ-'OZ qWGQ_ͣnFWQ%~ce g聕TͦZ@ۇ o嗰X aepIlG4V#Z ZhI!.$)"bA:%@˱q^ .G|AR.=&)tO_ɶnqUq;Jbk},twrVW_#? `bF60+b#*WFGHqmU6n}p[}md6uymdo~~[G_>uoKQՑט=xI관:\ GY1ŖZYQeFGOYEH*gE/TUku_'NNa=NBT @FqӲZQ~\}*oeԪc*/EE~E{d>aK Aޥqتc2 V)(Ks=ⲯ^ABҝS+i@f[+JY;ዻOmN4ʼn-r}.~G Ż Yq^yo~ ŠنTpqV^q`*~m\5j x~&E[kŎ\jfG%B5N޺U zgpׅO﷯ s䴢cņ7r񺶂_%'A rFձᲯ1 :haZpp5&:ΔZe㶖,4­J02ZqH&ŭ(p0CaA?:-aqHWjuQTT^jjUyMi5q+WAXI%BS%l1mJkm6+glʱq|̎ ]_+ņF\wЎH'*o_8΋PLyUG-hwH9Yh!EA~(nHyJ a^Dٸk C_g+6;kM9@+dpq?O,?DQ뎥oV U~T;xAϫc5`AןLB'7?;]3 }Z󷣙t7#/e# "ϟH{:O$?g<(H~WTz "+ ?76?1>Ohpގ5AOnϞ_ 52RŠGm'ca_~+w n<> )~ڡ:hYlץaj- | h;xo嗰o~5nuTggaqճ1Y6Rzg_h;Ho/ &D1PhPz}wk~{=%?wPXKA$x~N A;#f: OǜEëpgI^kە#؂ 9vEo}]ޟe׼_~h*QkP]92aqPh`V@j;qSa~X9q AMu~+m2ph0[<}.~X J'$.Р4@k,@Xas 5^# `GXI%e_fR7Ph M^>~e'J Jt~‚6(V[v+6ޗ0*B̪z!Dz5ɪW( ɍ"-+4h;2o嗰8~c kNc`WXlأGߴ/b_~wQQ=&[qu3PTe7~lMXt1m1}.} %m6  3 Ͻʹ$ M"8ZvU㓥9WSРI[vhQu'u;+P +)^*vpE,qp} /}~IlCmbͶ*kSQ vJ "k7d,f*r߶/ciLxѻ_}&w}ZcnJ5zջ҅ӻ/~{q^Pl/^ {)<"R\єFsh8*~z~)_k~)j~)9./5_/%/ }6p%5ub6&0j'&v{ VR$EQG7ؗ,C0qV%Q+,cI*>}(4zXEs}.~Mu7n'z?U0G9xU XKxmFvE߲/b_~57,b{ b?RhPi,B$:WHju4'n+)XB#cɄ7Q8DZR;va y0$5\qO*9(<}K1*-NJvEGĶ$h@%~:oKs)4 OVJj;.SaQEMwD~Ⱥww+"9*44akj>]L]o0f`(y{]oP1a{V%R1 44B[vEoϕ;ޤL֐h`-x~}gi~(c-dka)m^Ѐ^XMmf/eg^S4!)nx`x{8u!Y}\'{C$ff.ɕ0$gw kx*;Ӵ)֓XdIdgj[F,9DAB/M<'?'SvULǒ_RϤ].v眼ߟs~9uN>9G)VRX9']^]_Z>˱|Y\_媟~r}}c,Y>v9X]:ߒ(n«TvO??Wu˖K[r ,Hwr8ile)Y}eS%\#-e}=<,P5BX;MVjxvkzNauqA׫:xR?@L_+Aa|U_BkحVU%cU\6!eI4FFX+Īe'I@$,wR=iliݿwޟzu~A!A4ׇWy|˖,9A",wR?iliuqږWh_q k{}޽5}{{^`"(KF jٯ+'nbOؾo3Byli)ʼnQg./;{?UߗX?G\9/}! .Kw="ڭy,Bh %Lkf.8͙HJgJ]`2%8mlÙgV v[UȒS^OGT?Y):bw&--RI1].vCNrLYdQ>jLJl!O4eI8Q 6)m)M="1pcKyl~91cXeک2/WaS3²eB*Kbn SpRqliuO^*Ku?>Xׅe\2e_0_sQdSv~حrPȔKyBZV4֭w! W3SȩY86gj/s:J_eIdzv*Hc5K KN+-=ڭum"+K*NLqWᲚ>꽧F=lT%vil]o3Zyli[25),ۊ\|sXg&pK l(J%,Ȭwr]ili )]YUJUdJ7]c>eˬW X0[$.b627܄n9y Uı_mG,[f˰H܉ 4W,XawU,ӈE5\.s_ۮ={̇e 2 +mJ, f/nc'kLeI_ZGR_uԡ)X5pG}a29%X;4jw޽*9, ˜y#:#kޖUhz[j)˒ F26ܷɲ<6 [=˒>i@9PSI)[WfQr"cXdӮvgEg*-I޸+/D}ii!$Բ>zSv}'Ɩ]b^-K k:O3ku8 Vo+l]Eɉ,CV]}((j~]~̹dے܌<,GfU+@${bIž WǶv[= ۷= gMZMk@JL5׈$^sr&V-vY‚K}'qƖv؝n$<ʻW-#JEXʻO }b5n}黐sQ]ǧBT[wV,W]K[O߅ޔY|o([wI \x.Yu֌"bȼ$M="ڝ}4= FzPT`ֿ#j ̒26ܷ <6 5gX[U몹o!9b{ܷ{O=:vo/ma"$(\7!"y22RFb}׹}@ w]k6#v_}y׻ߗwX˻ߗw}yKnB^ky!?rQ<6<6zzQe:cgO!|YeaadhMtp?qR-sYŒ_`of1.b]JJ2Yld}aSYLf}ȓ/lL 2LfzEbwُ̒C/]Yf֐-=Ukl IK`wޢ޿#e+}#P8ҚYJTvQKwa5QFFZ5$3D&Z3M!_B`RW~|~wz~Ī~~I~|~~M=v 'f<$  [a@7= ڜ]Ze3KPQ؁Vμ{;SOvK3i[>$8IJ)axJk+%56T}}M="ڝ3`6)$ܗoI{n4%wĢi\h;4jwֆڏʟfI9!#1](T_Y>/jE͒ an;4jw>+tVi qq3#S=?SawF͒PlV&i;Y4jU, 7"ۆʺ j3cr?G,[Y\ `;4jۓj="iIr5Pb2%Af%>oɱ].vZ7 ͚%cϴ֢´6OIl,AE `Iƾ ǖ^v؝ssaj %K ZL)vȖ$`WSI]VK}K|xַ/E U8Wr[荒 %~MmN]8);#bD>OrySs~(걒 jXFͲR=c+v1ڭQ,0YIvQM#Jf~\+}˖,=aMcKOv=&3^baٗ=ٗ=L_0&3blWa>kDmid?M :xjԓБX3OНcx҉Ig[Ӯ]^l_{˱-۲,{U{˲?=Խeg\F[nv~dp)GU4oWO=Īe7KbU0Tne]wxUZwѪAX./E_|m]y'ؼ;;O}'?^KyRz'v?yl@XwuBmJb!Km]pKQ>*]ーlXȒpK ]8j7X &[1)cV/} И!wm.˖DHc8}XcSOvsQyNmH,dI'8?6&k:%ێeb!K"{s&Ӯvwa$$ȁ]M,4Y/BugIĪeb!JHD,w!և].vK.ì \ BX@Z/o/zn/L,D ɁƬiBL,4tV!$&jbIľ Ƕ[3u%$G#3tD@v׉{o\{xϧf<}vq^M="2ؕB9qb1&=ńeB9AM,䱩]V4$XȒ :dNQXL,d/ r&.b, *D)%b_ UDLlᱩ].vs2l(-MaIwM7q7-o(-MatPzli]V%Wܟ܏s -j, dacuߞ=6Wqv*, ~gx$ ˖, or&.bZ+CK3ѣU\϶ TAIJeא%{Ob8}XcSOv|M,dIT$cGH S?P2XL,$ ȁqNb!M="v{}" |_DzUVVJ| Y)䣡n<4Cg$\e)e0XRƱ@Jl{}ٿ֗/_˾/}Y_e/{]_[BAY)O7QS| S?%^7[˺ϱ]VY#w!$ȁtXh[I,4 >h'UB_AM,䱡].vk;?, r6^ UF#Ȁ̳%V- Yaq6Ǧv[ֻ?D0K޸'޸*&sGĨ}D'Rtmmb!M="{_,4'wW!%QHf, o, 뭹xL<4![bz˒ A;4. j>K\ I ^۫ t!IJ I M}׬jɧ@Y$9p^p 6g6҇`XL,dI;Bc8}XcScoibF7(4C{˖2-ҷ2[ g9ռID᥽fH{>vƲeb!K"XB,ı].vc QBr7*BCSW") r bIľ Ƕ s`>9/-yUqil^k+=²K}Kv쪉ݰf߾.bz_F9$%VCt,J*w^Y8R#Ʋeb!K+%w56jWr&$י>_ͻ(MwW/mRSO^6bJb!KHX$R`s_XȒguorV}Y7Y?jXXG,w ilin. Hb!K:b[!Xhؐ ,[&dyZ;46 ߛB9 #tD`rtK2 RI,?Ultzdc}^֗s} SXr}dmM]_^֗kY_eikߧ7ZUBs[86 nɻ VRpjszW!z ˖$9 RI,]V}y$KﻤL.iJ|rr޿}V\z޿_-_I,dIsֿL4ׇB.^CeB9 RI,]Vwi YoÍ[컽 PFM49AM,䱩z[SqJ8g}SqJ1:Nɾq)qJw;S ]bG%@W_n b'([N"A;4ens55%A?W! {_"-_[.acaqN.be$WK]R`ZU<.y^}2Σ NZ&$bX~mb!M=vçdbS+T >%O))- ҼLY6P)>V5ROp^L2'}HԔ}`*s-W|uNReĎ2^@0)dbw/uS 6(bܷ<6bHFLFy+}}ʇb4, PD}g Pbٺ2B˅L#K;,}dǦv[}rC˻/~z˻߿w__gdk2ʒȓOC5@_Pr(oos,<)c#};cSO]g>KW!; uے2cZYĪwXB,ı?ucjwXȒ Xt٣ }D jXȒs6 RI,].vg>rfL,dIT)s|>B,4ƎO,[&d(/6AM,䱩]C8e]I,dIn"֨+r.]%cd֙خcb! v;cR{A\5WtDq}m,[H\Qb 3WTcSOgzZ Yk-Bouƺ&26ʅXcZijwH,$ ȁ}O,|X&rr֤F RI,VW}i=W}-bߒ/uiӮCU!3i)iaX(gUb2%Qpo ylinݧcsN"[ Sѓ9mNXL,dIABzb~,9OXȒ("eHsnXȒ 26ܷ<6+]@[B9P"/ cby9?#- YŒ|b8}XcSOvYlC^ Yrk[nv'|coۜXL,dIql魾/6j/3jps?Uqb^ND{3K,[&ɄEV6ǦZjwܖ/OܿhN߹"6X\Β16Aܷ ylOT9?ei< cS'և%FR;cdkQ<]MRc;F.jWքV] yzbu>O:Īu%j#j{M-v'߹rF#s6gnuq=[=Jߥ]Vj_fXbrgg= ُl-Kqs!'Uɭ`߿WԻKU/.ڱ._.ΥűԻp-]zaf Ir@}ww,BvRߑN,ZI,dɅlL`AXHcS/K]sVb!K  $Kb S%Ʋ A;4j7(BhV9o!VHKE+,‚8H}'Ɩ[J %Q hS _3v%VV'$ B[z1LJ$1[Zr8b⠸Whjy}c(,[W-)9$@6Ǧv[Xg]wtTW)`;^X(_Uco< 6\$b߅Xc[OvrJ,dIf8hL*/ w o˖$9WB[z%l[؁z&@jbT]"/Bؾ$rY09$b߅Xc[OKvg Y؉8(lYpKXz$%QT؊]v\AR, rq'B,4e}eB RI,]VpߪxI(nʰ½o <'3',T.}XcC/]ѕXu{!+&P܈A,d.$re "ڝу,0 L%MҾgyRUBĪ`,mb! v( CX́껸 ir ⻸e"Q}gƦv[?,#(/(Uo&Z\,JyR,zgv s6E,?FгO|X>ec~WOM plt-">?zݵjLhw1M\\7Fq|#fz[wQX[kz?{%^ш?Ř<ભ0@yP0J (^7W{⪭0c13+%wDO܌аW5Q5l]YrDd#Vb=.b,g/)bn(أ7896\#z?m^ј1y[l]L 2bN!Yo\}o*ql8Vȅ%i5h9&j+CQLCtң 'P4ԣXQE86šNFzҘભ 9 8 Qp̹B2!hb Zj7pjtm%h#\8ԫ3&p|Po_(g*۟^NPdž} [._o_cBKk;D߱fW';ՐZLıqj-;Z—^vZZ\)}~1QMBg;F9,jcPfWCd/|m6±l` b%nENܞ޸V;S剓`L.l؟`ݹp=$3@;Bc'AL@^7y4&j+#x bg8I;wPp<7xgܝ džpV8lkn8&jϐn&HN#+J齷ơ Ɯ_^rJ4fdM[b}\\K5/:jN5%VI8yEy15[l :itثS ê}qj4ݞKqӠ^7]kx##zH,$1'z+IR~6Lcc)A! E$zuԘભ4 |s! }t \ }H2OH YłmQH]7.3ǽly5E5w :\;ŃS5#%EEHꂑZZb)< ;Z\=0F}%Ѽ>rǘભD̅ۂt{a:# }WPƥ\ pC)0ZZV H=&O H["l7iK 86r$AL625JZ\5nNׄ o v'ns<=q]ܩ5YøUC!ZZ\U2Q_Q,"Uy+{]Z9A S D껋cSOv{+=Sw܉G+>gl#;joy'KqAܽW>5U[b:)\nc3!e3^V7s޿e3\⪭AlQGqƟLY3=a0sݰ:Rk7{ zb{-'r K0J'p :e >*-*4dž` E15U[}l97#AX-]ضS9F:pltʐݲp7^V15U[?gt1}Fgtq>QgϾ]|_%8}Fٿ{y>Y‘v˳g;jF̜Ξ7LfZWŐD)LB[ԾdZZ\5 vF7I'JCyvMMOo&pllÇC({En5@cqQ WZov؆ .iL.8 JN6Z\pZZ#]+9^;< |3r̰QCt&U~0 dz\.EY\5S6\t6lq!=л%#@H JQ8W4J0`zjipV]Ŀ#:y-wjp庻1gJ{Am-?ǤWm}p}> V~/W9amq Ʃ9Gv5&j+N{-e2ZIȍf:EhZ%=fOnZ5&jkzpkcvm,]amԪEx΄L^8&jODg<\ yUO 7q3ql C$'Ep]la3&po$7Q ݸ\)\"ځ86S pu׽ƄWmêDO ""fo8 6[.kG%[q GY#sLji p֟p_J}ui9n;˫Wʫ{սW7zukSsWWWtR^=#lc)6c#]J5]ZZzɯ^xڜA3։gnDvܭ@E?C0Nje-bYOAsXKHG?EOOTG :.ݍS+F(9 \p]a7ZZVO;׮MSޭ4|71͢Qځp62 (A4OŶhLhi pLH? f{)?Ԋb?4B}xeǒ`6v:xlin3}#(+jM+P8AtAp85ôw;y^όKҚ-ExΌθPFg0C/.et^Ʊq֌Nx?xr~(UYϏw=?ޟǻ֟C}csߧwQsJfP8סQcBKk}ŝ5EGM6HE#^uhKR =chp?⪭?N"9SQ= *\*:oϮLpcQ3N(^|ZZV>tן"cqa=85*Iflo| -i|{qPPn(@2 s^JA^D޽3l5{՘ભ?l{*9S1B=Ԑܕ ƩQ.kNcBKkij> A f-NV$2?y ]: RPlpOkiƋӭH#J.dq+>neD:p V33G(!lEp=3G86 Ʀa#RڰC)Y(s{1 EG+LcBKkʋP޲%šp G -|qb}VR0`~֣v[nh .?Jw`ox=?JG~5 -ښOҹl(Ц{8#zn.e›%Q gzCMqg4-qVgV@tnL#?,?4*r9ᾌsMqLӹu.a֟X_vdjCRyQWi9n5nX;J=^BUk8W6t9yU[ۿo??Q~of37θ1LBũFFJJ Y$5#nO{,<ભi8ݧ]{杽g9{ 5t;qZ_±|1MAt auSLƄWmM\nGR>xG"oASC>aܸ>Jo׍۽AD۬=N+*_[OK2z?w@ NSyeh4EI7٨^whLh>ySq)z:κwuM .Kի/S5&\.N} %Iv+ &aIPEH κ=I2e{- cK}jcSOvsEY&$odR>M)?;N$f؟#/bJ KDXDV R`Yf4/YΒ(j^LnmI?1RCqg˖(, * ce}cSOv<LDaI0Jr}b*\9ٞGAfc2%H'#;)4j7?8UΆn/KKw_>nUO.%_(jeIx cSOvwApOa#'K6[e Kbg,շ*<6j> %_%;84q1eEc2Hk_C aLBcK]g rWXu.&brWfC\UqW]ᱩ].vܟJ^! X(,s@ᯘ~W"$"MN M,v۫0YXs^˱c`.bSscǦ=Wꏹ%1$\$,)Ʀv[.s*&a΋殖n$QtaIdzElRTޒؤONfʋw"ƻ7EEr"V--Nw{liZ_ȁc* K>\0 .fCj ˖wՖMuU{خvk}gbXr鲛 cy00S ̖X̌aKb-OCi ڽygI\: =mbm%q-',nw^ili܏%ş*]&˘;maY@Tq4vqa¶ڽVחZ>֗K/۲xrrܯl>K{z9 5, R6/vf;+Fe=rۉU˅-,lfojxle[`F IȌq#rFk{R 맿*lV Ip&u^{-=-v;/,qNn Ke 5ͦ53żvQ Fظq&Ӯvsf{͛{{r-{ٗ=Liϫa XtF$5bp/_(B,[w]ɛ:N-="ڽIaIjWYzW Ē`l0ļcZ0:bWb ROvN4%O$:H,0H$@"EXbI|Ɔ| zElkN{?dsNn2'uN?9y˵|\g9>2 U%n|7n#"ToQϜ1brlKA Ⱪ]V?X `2{%q5nl\oxlin.`OKq0wӚow= Ye*Kx] b+}McC/]N0XsS$n Rzh=הA@M-Ⱪ]VZ\K")A%f^^FZw),[$"?N-="}?^羽ܽ/ }ؼ{_ܽfe_^r؝{ f%A|w}j3/l%%k";H4T)5'C䆿i}k}эq?WOۅ=6VV<_#އ ,g$sW+S?!-SXrbu$m] v}1s$`3 v=I^g^zV} ĞKPxlvkq3%Ȓ}.'g{yWa2ve2Kc+,jշL<6 \+7)M, Z^&10J=rNeqזD*c#,};cSOv3vڥ JS&Ť5ϻ>U`2%|j{Nr-=w5sgƨu>|]~~cY}]ƨX?<Ϗy$'$03%"n+geK24)nVXr!X@RbZ_: ˺ߕkX|;Qr-[eݿU9wԣ컬C%/(jr~)(ė3Ox((3kSqҕ$j &D+[]qねv}u,yIl:Mp |ƓU+)W, aAuEcCbKڝ+%Ao)vx[Jѫ[-XAac}cvv;oIǝ+qfJ3d|'-XzbF6Ǧv[ !$^̹178%Ϊ*jŒx"ӬMⱩ]Vwek$ęqG,BO1p$iQ!6joӶxlw mL4Wn$*Cߚz>IJeK>9;>96v'm]P$򘼥f斿8S0?*/{-`lQI袱ߔaC{_̱> k5'+%`wy@/HbsA,[ #I( gFcKOv}y7?%A2ä0;< E|$/IJeKIǻM㱩]woYlpņG?IJo-[r>w[bw1ܸ bƠ~5q՟g{샅e11zb's%A$K=mb2%g|*2~]V?w>V}$ҪXZϧ0,W]$?U}VuDSXD;c;t;J"XQf.bݿx' T3g̜K;e@P&Rk5ɻ dm,HewrhleB%Yބ ̌j?L3w◱n}ƒ1v}cS#g|my>c6KƲeIC#,(jw2hla|_B)Iԃ[Uzj3;Fnc2%Pclה @bvu\o %8]]rߦmΛ .y+9['hIC$PgLǦv[=eD % # E j&O you7Dc}e5z|99GǮ^籫cWyy~KPܔyu{0gBzM),[̱}m="ڭu9oʙ1G9]&²uf%~clEq߮Ⱪ]V}XKȳ2Åd5*ּde-FilK]wgXQ.0i.4: ajFǒ uMN-=T㮕.w] |w^C[" [bpliP߯0Xr#2iӿp_Bj9lgzg}jcSOvKIC uv8^=VaUit<=\&Ɍ< B<Ar9!br9wK@,J讱]VAE$ڙ9k*,=sGAj),).M$wN-i8a#$_%^.VGQKkS Gep-%mM="ڝK g[=320V(Dc=O ֝qe4=;Y|4jw"IcIffJL{ft'*˖|,po,zwhliץ=JÈG7"8~TL0mQ?5b艍%}cSQ؝~h?ϟ= OToDnpA?Z[W?خ!?(}wQ49~,xǰ:޹2h}xeL?č`QI]VMgH.ې_ijj9`7M]dI`dM="ڭcɅ-D_s^`x[ON_z2ZKloylin~qL@ +O{L&^CʈĪe& I#,~w2ila=LÌeӖ=Lôe3=Ll-{{aK|ۊF\UȀ"L@zfzev KNE7x"[A[S'a-w.ޯ8hgƧ?AL4@}sF=ѓB!_]Q3'H?aI?1+jybt~Et[󱞶ʗ͒ k5zd)[ϖ)), 6ccM汩]VЏ}SSI0a 'xwܩ?HX͒ Y;4j7>KYL'N$rOD ؂\8n͒x "7m7M= j7Y I<|Ydm.&r1Do󷾻IZ&z$N7-=vwK]'k߅ǩ%wycҮ娿}߅>n/ &zO1m;M6fig%V-YzpDoÉznDoY`1&zSXL& ڄN7-=#v/VYdm>?v,Do%6@F,[&z$ڌ m7M="ڭ߅'#H< FB6ͱX͒H(Dn;4j7?F:gYcK)oq5J극"KW"<= 7*Dos<\g/XLfI 8Do[Y-nO%poiIϝb!m%S]ǙXLfI6ћǦv{3{ DoM\B6I},Ʋe#K"(M污].vuyIfI3@'*DoCS#[Z%T$z.b>9, 6U^6j^`2ћ%lK&zwڭeĽAYeWLxNg9G]""l͒ k36ܷ<6j(L& ڦ7ݦ?8iݰ/"\c l%ћ%A&,wili)ݹo ћ%A6Do o͙NZeT>渍N7-="ڭ剛$z$w7˲m~K1cgߗUa_Doi0KR$8>Ʋe7K%,\];4jQI j׍?NBJ7KpD,Bwil釒[=XiW!|$H[<°i=bٺ{:.ۄ/Zݿ ,c v-к>s<Ӻc,[&zva+Q&z.bѫj9|Do b ,ZuFIX ,T0jw+/N+7`Rc-N۫ũaV-Yr}A+}cC/]gyO DoYxoKSDnL$zgK[DȂl9=ƒ k36Vܷc<6jw'_ڥ`ˆO,I1-sXlO rSI]|ݫO)1Kb.~}z/{3-c\$,)Ɩv[<zB P@1/w-/Ӗ²U_( Vjli;z ћ$ kM$iͻy09S`9:²DoY rSIV?˺s%^Cʲ ǝ~IXy/g{Y{t$ҷbYV %A6ϱADnݥOwI>ab2ћ%Afloyli_PB&Igz|wTyꥏ6WdNVY‚M}'ћƖ[3If -.#Hȡ$zStQXL& ?L]1b-%g%yH |[[Z[bdoɱ][.vg(N@ Hs9YHnDe0KUl^ݎǦTIy؝gȗ1ћ$ kԁl9j錼p%$z$bMcKOKvt&ћ$ kohyLx#PX&(IԯDn;4j~$x&z$f<)#Do|q%,[&z$ڌ "7m7M="ڝw|a7KnۜEU7]-YUt;tB汩]VsK~^$bߍMBm 5V-Y'RX<{O Ǧv>U ћ%2uJ; y>B^!l͒H4vG6ћǦv[Mf> cb8_ ,[&z!c rs&zӮl̫U,y[b5sO,Għ> ?X$z.b?{NLw/?w/~z˻߿}yO7. ٱ'd2.U[ĪE|a3n\cSO]/}8~S%]'~ ôonSx'j͒wM}'ћƖvK? ћ%Q72*cz{gS yi3jjڇL_;ٷ<6 GnIfID rk3D Y#_XΌU3b'GF::3]O`4IfI #"JzEQO}p˖, 6c}cC/]N,vDo@s/; em*f!$z{.}l3=( #=%>e-="]U$Y[Wb=+[lZhZIf-ʼnȆ}'ћƖ]uF ?@}a#x 0 rs&z.b+_MX>vu_%_:_c+bwɱB&-)鈷e]?>,1Ǖx.%Q<%F)c}Bf pMަϷ/Do33~SwPO,w@XzfHi߫AKQ1SONM EU,q .Dov.r/˹.r.˽.2\~w9e|حw)Domqߑoy;to+KX͒ kDn;46<@WRb`rF%Afloyli]淑DoYnnwwV6wG ֝X(SaA䦾McKOvk;0xls&rLS8s&ݱ:V%>Yo=6fq|؝y(VdyQfV| VRMdK  &Dozb7?BfI+\$rqp˖$Y rSI]V0k3=L[0kӖ=X0l-{uaڲ><^In>1({*I6})ۓo6jf~7fI].vg(3JhHŎvgyԽ>W8= UcGCCawT߹.3yco]C72u.W^ǟM$c}Mj_EcC/xGP.dş̵d6O՞le&$ >˔oyli_9#z_+쪋KBٱױ9I!EԀ_>!cgA@d.{H.T<K+S]( RmOI5z5sƄ,U[(q&/_VH'h}O;;cc}`A(^O ZZ\S> _H74/oMy&lytK$P~kO15U[ar!9\`~uኸfioe=mܭ'b/&q^<ᮬ6x@l\Ba٩|~8&4j+C>z a#&ޔ &Q;kS V>J$z &PN1ox- 3" AL4^hLhi p4Շ<]-?+,Rph#A<`pLjipV><(?)QBu>M >>ĝ":EqI@k{ÔHtAGQxM Lb| ݊Nq1WORZZ\ mv=m\Xw" UnZZC_{ȝxB@X9)q>}pw(B;85ٗ N󅋝zf_cӸbYA$fp1{8JWѱ[ eSPGT'B =v*AxzcJHƤAmaxdrLh p/[9XΦUWzg?_Ȧ׺9hA{ql4'nD5515U[iӗ9̟";"Ab:4GyH.I%}`lQCK2!7@ KėOXglig~ԟ'OAt߇> hnf A- ʆĠOha4PމUk%NA྇4M="ڝ[`k]/]V=Z_[l`k}l]g=J\K@k. pj?#K}6C, `jkY0&CɻWmMNE)^Gy Fr*<ܓ(DŽ4V"'%!wH׻5x6BcIډk1,/~1&jo' \n'W}b{o Tcc*vZHk.lRNDŽWm7an J5U]QZN II@?i?$5{y-W7Ѻ] ܥWW׻Zx|-W\ ?Zr-W76Zg\(@SLzIX.[)qߧ=6jp 6'H)=Yu :7c1;޸SA뤠L\c~ڝ1!5l%u$|0jAk:zd>|^_Wc>58Zpn%[u'ne*^m͔j585!ۓSrhhel2:p/[tVWtVuYU:t~TRtۧ+ >B?з$?Rۇ{>W4wki^^҃`qq,OnKVۿ6qGKwā{=|10ظjkdp̓W׹Jp͚"86\sRk\vp'qVD}sWQy+CI{TAϾ 1D{I0aj:n7Zk-="mW:u%vM]F8ܘS >q.PZZ\T%>b?M ʣH4rv?~(7CK龊WmMg2o vD4^WCiıq8p+D"N!gWmq k `bk2/3߱iZĈFTľ#{E'fP.fϹќqĶ_q磹Gj2L>(qDkqLja qVo#Is{4\̉Ilt9Ң qlx•`A\̆ƄWmŃ"}# xġ7721{McRKnndK\\玣ө`~ux ?;F㴖W͵M~)o3NVTyY{~pl,qIY~ FFCDs3&p/[fӇ@ q@>3kN5l-kQmC}?,ez5ƄWm{"e(8K(3?cA t>cc(JC=9ɩCQYS\mk6NmWw шI5E9,؈^y^D#t^*if3$J%A"I}x=1j@+mڂ]t7h X k>xou"1c dž} w.jGcBKk֫:ˎeΏ˹ʎee2Ϗ<ˎ\eΏˎ:ˎ8n>Q-7{;25kAnu%tZvGD 7Ql WsT -#-W@{pL ^ׄbU35&&p/[=7qHjXy֞d:9f$,}\1Z⪭y!N%\Ľȗi F#q,[S%olpC޳Ǧv[f_bb&_+G}Aou nN0!5v,TƄe_ddH~"ȽT03:qj 9DXpAo^ - <4G>]:ijgHG;u~;FG?W}ݝ-ܝL=&yˉF;v*lnD4uwd;F;P:umL4=f"!Ȯ8P6Έjpz9.kGV866;ēC܈Ս7ભv{=vl[ĊpQ;(Jڒ#%@\!q8d15U[ Zؗ@p䯫C{<dž+/\8[ - _'!%cLCZFFhJ ,8ehۿ5U[6"՝kޯ#BmY/;1ZsaOf_!63yWmQ,gn$x;v̚8hnaAMqj4Ppl]+νyXKk>œ6pJpFJk~?ο6yqj > {jLhi p_1[ưU Pah2#$|RčcPې{ #KqONj)ZzWmMz['Aܺ }D(~MDSpjѽ n݄8: -+ M^Kpm{n8v+9y]Hs_.\͸XkSYmUƅ[u|m/32?-lBbպuigB#`oG.`_v5=숟C;K[ڥvk$5;C5E4&jNQ>]ђN&ŭt}! -Wzmط+=zlin{C.oK|n+ݷҖZECe ()VBcBKk擄!&K"qȎh޵id(ơŃ+V"MO:Nka qVg XΪqDTÍ89,gg85sCrC2'^6%j\޶"m/C;mFal=8% fswz=E15SA_?7.&Bpi,k|H` TbݻYl1L\? r ;; GW=ơRH]!~ g,jkAPj>`ߧ] A>K$}nFKИ'U[A !}^:o^tFo?Hǥ4O˖ñ- c 7+J.b0{3bACe1Ј&7E} 8|>oc^dz5U[]BPXM"+HÊLfQu0!P 8qKpG1FW4ܧ4f8t FA%\=~MonH'?Ymf+F)ƤWm4t0mЁ,+k}=r\ZdcYD wpr;ڰWmu0oSw ꮘٿNCCĝ桯 #ҘZ@e+)'}~q6CVL#hrucCfK"U+v7-5Ɩ[ÕW:?yQ#3ʔ+W:w:?{}_ig:͙P.Ao9;".kn:|bcN(`0G+{uBƄv)yiyDA 4uڌ@疨- z?3;p-+Z\ծtT9H_AÏH/@ZN5^ @XkcBKk8碳z.:>EG=\t|z.:<\mxuӣq})yW>^*xʫ{\5˫;`B%~ ha’h۵u{dOle<aq/M5ᱩ]VUo$=̍ J;5D{RHb2%WklKoNxle/YvS-3}#oקk=!-[ѺɻǦv[gyN3%("NgU(sr<[F,[$smF M="ϲ ˽JX;=}Z{wl[HVX|;M*Uxvwo K"d3b3R~ LTaɁy)ʾBcKOv볠nXUX]3)+:AY XZ! '3N -=m7>K?nT]aIOZqW@"[X:cIO n [z#bϋ7G-ɭįD,ZIaaI  ,zY 2'_’h+@N([G,arKKظvߦ.bwIn }oV+R?Kb,Z}YXxX;0-=-%]U8., 7Z){c2Ӆ% alCo]xli_>c9]Pgn?un,[ zw}0X[ 8p CpZ5#w>F?:JOE+ 1,7 Pɉ!j֗3bZÒ`Gcb<G9Ua23%qalP_o3cxli׻_1J3>cxǻ-,[ |wy8jwcIjJ^.elaɖX@[Uʖ 3,)6gǦ~ݯs}92rX_k}9^c}9^K/2r֗wnKko\g{mmn깮˖/%͵Vy筱]VjX}^5"WNZ&԰$H1 mB e|Q0c܈"kƷGW!iVdՐ$1qN^ -=ew_FK$c 5>B׀%ke[.^/ f a5S$WʞoÇiՇˇi?|aˇi?|aˇi>L^>L{0ÇUЙ>Ӈ<#"_Pr}sY(2k%6osxliNz4\8?Go% P8jYocq  N-=O+}٭iaIPnSg Y~c8ªYϒ 06"YcSO}ٝ9>}sTr[ˌ[&Zo2Y8Mlշ ĒtoY1-=e)+!عYBOv변 @,{uco>$@@,|c}cSOv97}$؃0Fĕ glEAD}EcSOv/e֗Z_֏e֗Z_4 ƶ$nu}ڭI"b /?p 氯ş#Uˑ_ u_zs߯8y ڝk%:w7EK/]ڿ4d dr[}~}g9Dg9ckM-cϑ6Ģ%%QZyHAR<zyؼKju.)N zԾ]a;=ӘX27 y9Ydz֙;J" ,q3.`_vZͤ4$^5lIi׻J?XXLaIВ &[zEl;.7%8<-[iM"NIl%$AQbl㾓EcSOv<d#&8L%{.9jk3~ѯl%͉%S#T&;N4ؗ99N, ڒ2'ϳs29CsN{9'_ga-<' HHHBO=nO]rIJeK9 ([zEl[p!qc%'J=љ߻`sKJxH,%w9%BG6)%n}jxk^sX<=Yk}cSy|znI@{OY;w8}=3ĩjK[IbIP V)[V3V!LbILq q:S"^mIcn>ŒDuo3xli׉jX#V *I_bW¬,Xҷ 4Xv[.>jG_Pmi{M%Z޿<_(QJ,[.2nIu=6M՜[2 N~Kw]9cA<<)'e+1IS K}?]V3;> k5'+%`wypo@fj$1LC,[ #IS~{۳}d\*>Zn/ TXD/)f8\y~ dj˖Yb, c }(cSOvRB, u{!ԉMw Jmlgt&NM="ew?g%$JDtt1̾og%8޵~,,[&$2= bm eGc, k;9M|O Z揱$` m M="s|>ʧV>_kSʧs^ke|2u|Zy}حg `S ޘOE5}<²e^I#,cw2hlaw|^w|uw|3{^酪w|y'l;CRX1{.yA9Μ6Uzd ˖ g,9PMXʨ.`_vg $|" *UgvT23/c8XI8r-+plꧪsa~?-zWKH{_$/y~_B=ܟurur_ƒXB BWB'(IP*zEl;`q hE\k8RPaʸqIv @wƍkli_3RX2[4TWd[-Pr(/v6רؐخC󦷉 ䷱Dt[Ts#M̛WieK:2WK&o[Te^O&9]㫐짆_C?P$a1T2V:FXpܨؐ.`vȱREX=Uc3Jqc54̱jYb3ʾKbX9Va/{M9wYtf޸YQ7 s-RNaJGCM`ܙ<.b݊;!s,cwF@2}axF3׷_+`Qɜ]VoDήi4{žw:;bYU:A͡㱩TAjvg}ޖ4:LԒ49q[:*ξM'7XGZѱ+$Agߦ.bsѱ$m\9:O*Ks|a2%uNbM㱩]V(-[>ϪxӜcȱoy#?-7YZ)P`cWNEJK yJ0q-396j˭U<}yrg!N9O"}'rl:Rp>mFM=횊V}..x.r~]ߥ~eߥ~]}"}J.wyc?O;d%lSrbN~}s`Z_|=^.rkR "X# w3N-=ڝU{,|4TZ\{MQ}JXLcIp4=,>zEl;kD։|, 2$(_|:_v@,[6dEs97aX߾L-·bo[+S\"oI ygNJ-!F}؝1Ya沩{"2PK{r U+},]Jp eg~-=-%ڭ%6:ǒ w}g"g}' ²u ({N-=ڝn"sۄ? TwF H}.Ο>8S0a2% {246Ǧv[8VX4>\Os= P/Nd b~ڞҷiRO}>H KHB2AzM˖I|vq#}'.iU,|Y\?,םx1 Ywod5K=rZw?fKB})BcC1Khl{<>PE58Ruz˒ 26v^Bzni IrqHی,qMbOzO; ,ZI,dɅynhk$$ %z9{ 3%A4z$%Xh;(H-,[&q6Ǧv[.s I>'(Ȧg3n֯rVy$sB,!]1-}+IoV^ Bc %Qh{__X(S{XL,dI06ܷ<6 ؗݿp}ܖżE\kK}ͫҟ.ճK}q199.='Rs2}gl[=XȒu+NI4d$X=BG a2%qcglѹo yle/YZjb!Kh4cA4*FH#a2%A$,w ilinK $ȁ;v=_Xh,<Īe I4SỸP-=,T>,bN~B&$8ggѾ o3i,[&$2@mb!M="ڭy I,dĪti_XhE1P4^`rQI@$,w ilBMl[bb!Khyy O HZI&IsN:5Mƾ.[o^[Ηo9^[o9_[o9^-Q,\"$<= ]X19hx"U'9q}ᱡ]>C!V Yn@e[qvxF݌'I3D,[&@‚8H}'Ɩv [w/?Y7oL#YH&ª~2%u̱̾]V5'_ؙXȒ -H4vUb{['Īeb!Kܚ RI,]ZqjK")z`{qޯ_ JcrB%clL Vs'? %'(5a+硙I}T0{=`PqO.7 l[Oi YAt}?I,Ow@c"Z&$ȁx*mb! ew{$ꜜi˜ќƢUdJrN>ꜜisr]?>,Yr?r>\\?>|}Y>-'z^'' k{Q/g}_V/c}/OݿV/}hg&[[9rŊwZ1G(,wn9i_$ |I[z%l/|b!I@BKd!.gK.aJb!Knw ili=*}gBy~~cXH${II$${ ކgB,d mfI,7[`$$ȁzVZiock$9P$*/Y_a~G Y2צi=RPlXz/ RI,]Ve_u'e?su?^uJ7}3SuʻϲA!$ȁsE) P{Ǚ2֭%>~NcSO&jo$݇$9PgAqh!'W$$ȁqNb!-=-%ڭu I,dIDŮbsB,ϨQ²eb!K% r&.bݯsRʒH_!Wl٣q.i,[.neIŭ<6jwPy )όeqP5ZVꑶ),[.doI76 ջo.bݙs!Btd dqPdB,o3(2{_Cr aAXHcKvg >yOb!K92͐>s]lXH B[z%l;`bTd\FJ6h(nbgSƘX$ȁqNb!M!RݚkL,dIf\čߺ P##jXH B[%V5M,dITBt,tn `r%Adl}|ϔGKb!I@ԟ[i߯~J,Æ7V$$ B[zZطݙgё93ϢOe,A9X 乬xȜKF9 RI,.1WE¼s!t-*B7u~a - Y‚8H}'Ɩv[g}?z?z?z?zۇϒBb xI,${²$𩄅.`_vo,{.Y,R(%'Q0Aq㹾 C#UB9NqzEl;}q7%AT*B{HĪeb!K:o yli/~(s=!nHSuU,(3%I3/+Nb!$ew#^, r}r8hGM w.- Yq6Ǧv[8:L,dI'b6f](hbn̢Q*²eb!K"|w&.b,g<$6Fgϯc^>__>amB᳋d$A\cpס}>KyNw!#θHu_&.b_v{>.Ş/z狝QB%_҇pkbO]_|}ٝ;('q*~#((0pRFKw}eB6,w ili_k;* bY 8hnAZ`8/qM>cG)a,G;`56 ؗݿ0cbܿH=aɝx_nK:B²Iw_ ew#Btܬ݈Y{Wab8m[wbEw)Oȱ]ֻ7%AGM߸$PB@L,[7.׮(}gܸƦv[}KVJ,d9* ڑP m_6b#QXL,dɡqNb!Mew_~XȒ8$eD~##BwĪeb!K:P}XcS4o=*p2֚'a/6}<_XHҟ*=lX~ޫތ^w ؗ?|K]厫HRq[< ־.ҷ3xW]bӷ-0^wtFw;r4B,c /^XUܟ Uwzxg$R@{ {²$'Nm8ahlin]I YGt'i5QXh|oUvv'reB9 RI,].~+ $ȁ'3vLK-/m,i#Dlo yli/3Q+B9ЎYv< T?q8:t}U+bqM,䱩je%Jbȓ:Rb}JNىϏ yli ETךʥj T.AYfb!נU|$9 RI,_ߏW Y@ۓ'`_%- Ytqa.M,䱩]V[BJzV&Zw:`gLwW̔²lKXG<ԷBJ#稾eg5]jɇy.ZG]7[>zϾXHcKoZ7 Irx/E=Nx(j$$$܄qNb!M,ew't_)I?yq"eG⨵ R$RXL,$ ȁqNb!-=][B,d@ug  Ym}LZ&$v#Uɱ]3{|b!K(fQ"v<|jfY?XάI@<geO ejBqBh $Q~̸>.FE+O- r aAXHcKOKvaZaʽ=>H+/|Çi/f|Ô{3Y>LaEF$KQ#;@WqF\N|F-Jl׬7W!.b/߲ Ir Vu6CY\_ R2(,w ili)9 Y2QORFܒ=b99>jXȒebo yli/˺sٲL>ϓ6/?]%V- Ir aAXHcK}}bƺCBo;IևC; ~o_~??f-{T?wqh/BKO~Ʌ3o/Sgѻ WmGNܳhn{OvSD'3WA bY V zOGWD=DL^?aBQy5|A@?cā^ h۠s (m7{6˟'&O'},yb_I&4 vb endstream endobj 76 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 80 0 obj << /Length 1652 /Filter /FlateDecode >> stream xڕX[o6~ϯ1[E`,"m<m%i0"vvCÏC_-~|"/ N\{Ӏ aeY|lAlA1r_*TjҪlkwvF adq.lZƶl{jnse/&ABoq{+E9[r0_ gj=#_'OoXa8H8^Z!/7 h{fjᑄ$Ldz?Ϯ&Iyp֯DʺR;QG>& y@&co4kȸK1SקҊ>$NJx !#YI4PfhD": )dӐ lZjtUsz⣞p&e&}U;0fDiܻwLp`d麪%XNG@ uT-BSlFڬT+|ih&[eU6(~v{1A ߀ZKN4u"VIn]gZuD+l*M>Y)\YWR[+ʲjv2"oSVJTe4e()H7&k$̂+ٸM]u;w]0ܗNm/(Fٛo}5mYق#gn?*2o42Zj]{8<̜:^3L lm$AǰV8k񝕻;-<D'PE)#cR4mwh}/ҩ6v3q3^;ZJwێ|1ᄆܞTrRU?۸ KݵÃn0<aF9lɊĒ R@Lu0 }(V}F"!0qkV*tsn.פpM†X 51-U=EغџoVr(LM=tFA>ެ)?_ Wp\.?|z5?+`W&ʬ7_ ~xЖFns@^ vVLFN,3a7l+1أ?GNYxenlBas@fsd[a>vkn4jГR"pD9=zq4jLLPύ~s]몫- ɪVUn ^N- c&Pߜ.#R '9X#)b[ػ1W7npbKWSpŻW\Kw}~5S~šl;Ad?JqnP'E "9L>(]k&=Dx!~h㦜S7!!ϻg $l =l] endstream endobj 84 0 obj << /Length 803 /Filter /FlateDecode >> stream xڍUMo0ȁC6nĠr @ˉ"fIYd)Tx͛- ce9 fq@p"8+c *1#wr` i0Qi?T]/4d'8./ڍ\YyxQU̥j:v@ D~wM{@D<'($ ^+G11|.sL""I'<}0J+ؔ{(UMU:W΅𽪕Oˮr9nnqSwۭz %vLrk]Í %;%016w]pVawT|?h ġ,nN}>WW9a+z7$ŘJJbJ{ax1j ;q1>gNF?|x?k~i~f0(?iQ_q<~@Tfv'>eYbsk^XcI`3q o珁qy[t>ϘPK&\sm <ISLqgXDc AȔr+gcKUU3#zזClZW+p]N c,k haKfծwC_]ގhǕ S1RmZ-2y$!:U^B] ~pg6k egD zDTCqme-D~zv~aM S0Hrhr endstream endobj 67 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpcbBBxo/Rbuild25b66d49398c85/DirichletMultinomial/vignettes/heatmap1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 88 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 89 0 R>> /ExtGState << >>/ColorSpace << /sRGB 90 0 R >>>> /Length 30992 /Filter /FlateDecode >> stream x͎dYVmݏ'0T$ 4->!Dĭ'2*܆ŝJ1ӷ}ְ>fv~??^7ۇ???\˿><>oϿ<|^|~9]>:q7{~;=?ە{|sY>ڧӻg_|O>ڧ}}~|>_DG}|q~<}\r:Z~}ov9?^o0/W ~wk.m@6 e?e(˖?l)[@ʖ?lrR'󝩳.q8PJ tUP Jͤf"rCD%Aϧ?Lۇ#H&u:mu:(:(:!uEV@)q8PJ(%J1]lLeKD8[cN@_GH1I1I13f bJ1R@)f3+W| +|>P ? (N>'"jn[u#BS_^?_ԟ_~S&ͼD3A"0QG#LPn#uE@QPupDID&utn(:M@]oL3@ Puv- 8uD\ƭ_Oog) )0)0)0)|rìR@)|>P (ϕJ;!( bbJ1Ϸ([~wp%S{.|ര tpWA Lt&:0:3E@PtE\9PttBn(:M@ppZ9mY@dID&tq؁` Lt&:0:3E@PtE\9PttBn(:M@PtJ" @oۅNLd*f"1M l0N 0 i!Ԏ v^CBȐhgP[Cmq鑣@B00TN/L fVʿi&c}0@ h`<"@5@AdA* .j,:ۉ>N࿟%T5@M,鄡i-ь:&:Z͘nLF3nO= 3nM7# T@M7P j "B)# ,PԴpȘ,[Afqlfrl*Y@f6YdAff'0E"dh`<"@d5Y@MPdE4Y@MPEGd5Y@M* jZ&:Ԋw5t[pٞ-$c V׿dfhhhx||VP+_/jENO43=NpL:JjRZCԡVP+uzl)uVdR'-v&0@ h`<"@5@MPE4@7Щl{ dL* BʄR3> t[D!Zs>_,8~Z͘X:"jb U@M,P : )jK &,l ɂ& 2,0E"dh`<"@d5Y@MPdEj@MP@ Nv'l]StBlbimLb!̶Jv2BD!@QPt<4BJE!RQH(QR* )s[!RQR:)I!L ifz~K餐643)7ifMtzZ%hb 40KjbX&jb"X&#bX&P t M,dD,RTdqٷP:m{6 t+-h0+@+@+@+u#RZCԡVP+u.:JjRZCCԡRRԥ[_@f XC{gKCKA3[њJrXYZZZ3)@-u:J:=~U3.ijZ:ijZU-@M Pt{N;͘Zi֓ٚ}2^OOv 3-M #ZT-@M P:uP+u.:JjRZCCԡVP+uVduP+RP+uVdR'(aVVVVGJ=PKjRZCԡV\D+u:J#RZjCԡVЭlNJ:=T}& tM d6->(fZ4-M GZizw f&ߤ铱=C3NjnBU7Pͽ~F$̦&2&覦ܤ&2&&2۞k> &jڷ1@?}Ծj_oq{"RQ1=|P~>}A_~CT" GfRH3af=fD!GܖEtl̴$f6YOvl 3Y,M& #TY@MPd5Y@M\Dd5YtzjffL,*ԛ4Md %c 8hP2LK3$tUI($h 4 1PJj&!Ij"&!I3I&!2&Pt^bI͈nJM,PXZұ@7Y:2[Bf#Y"dh4Y0Ej,& j",& ɢ#-o&PTPj% ԊjE *E .R$#[ХPìPPPPj* j BZBPVP+TjgzU'բnd5@MtzzB L&@@ UP5@MP5@MId61Wu5ԊjE '} ct[1@7\ h4 P5@MP5pMPVj:Ԋ:T^ɘ& j꽳Ulku2Z&뭧Ga&@@ xD* j& h&NjBUP{Uګ:ԊjE ZQnnEMf+j2[QvdJQRZQJQJQJQJQJQ"JQJQJQsKKVԥRԥRԥRԥRԥRԥRzKw3RԥS6`VVVVG7Pj ZB|V\D+_/ʷ# ZjB|VP+_/jۻU:&73&7#E]͎`VVVVG7Pj ZB|V\D+_/ʷ# ZjB5u3V+u:tzߗMf6-ښifŵ<f4Y,MGd,& j,& MLߤyLjbXBU,P Pdd}MdM L @BiU лew[޹d' 43}B3&tjI]5@M!֛n$y̦ܤ&2!cjnjz;ّ!hj 45)Pj :u,PS5@M!Q5Bօ@ nZ 3oXzOZ u,dii:Av3-M #ZT-@M PԴ5-@M \DԴ5-tzG1Y@" BLtlf7lbiLb!oMLy&n㹭TtS*)ݔnJE7iߤiEMLO96#‚JEMIM͈J' 53I訣EBLj%t~}1#*ts>ّ,th 4n&Pu5@M7P t5pM7M7d6t*oTRj 5 T7PMzW,XژBfSf6jbXv5@mjEl, Ѳfw63 ~D@Pt<4JE"R@QP*(R?vJQJQCKKKKKK/{x̴=̴hfŎNa&@@ xD* j& h&NjBUP5@MPt@Idf%@3͟ nG0@ h`<"@5@MPE4@MP@G5@M*@J̴=̴=tlٌ1Yjr㬤M,/';XM,&@ X&:͘&!HHM2\Ǵ/p53=ݍ?ퟳ4sW2P률sLG-O"$-AQ]_jFEx+#*;M&@!&Bj:,ɍhrNlrTJ7n jXvo0ILϡ63 5unIXdSf=!2"MMoW˙LM@SSUMPS55AMMPS t5݄j?P:-ҠRzKL+_VUoooo/ ZB|VP+_/-lERJjRRn>yQS h 4 H($T*)5@M,P E4@E,czDPd,JM aLKfD!ӮqO 3u,LK3ӒMA,L&@Eɂ,UPd5Y@MPd5Y@Md5Y,& j=z *8ۥ^5)R)ҭP_Nvt B B B Be>XRb;;&Kd,qKŶ/|=Pl(z#45oxٛ/GU<-ُ(}c't*PA TEL."*"*N"]`XEVU`Aq[q# nYq_oY8P8T8T8T˘AYzZ`-c1X˘e 2kwZ`-`/c턦m#%֒kɃ{[Ƀǒ'4GDP|@.7;HDzU=!\ƽ*J*J:˛.#4}tCL!QGhz㢅<](:BM!v*9h,;i,TBUg3e: ukVEUQ`USVEUQ,v퀵 n.Z#4m`eNB 났d 2Bれ#4jfgPNj'TàL;jvjvNu0```W X;v0Qt;BBz |]_,5=@MPC%zMŦbCiz(6==M`Ci4u JM&bqË7=4!(EpU*PA TEL."O_!xrI:׿;/w߾g??|~|}x|o?^Ο|RǿoK"|y}E%/*=ϡ5p]g3\>tS^)rHUI8PA*!ztYj_*pSjy [?ߠRoc9Rpg}#ׂ|?#[>j%p}98suo?Ax9/򫗃__lvBZAI վb{-^mm!둏zmиאO[?]ltpeC;ŽB޻xz4da`& j`:( TSl)6`M0&^OLؤqLHؤQI(L&bFIxFC4i4ݸ6=4z%!TzU=0(CzzzꡓezXKa提lz(67f]I CCjTmS#Tg(x4mHtfq9EH$wwT}ţZ&9/_n%w]. #4VW+P% UɅI.%VɁUr`X%ފ멽X{+V,X{+j'x!]uAUBH%H:BJZ̀GijG@C!Tz`PPXV=U`XT=U`C'V=ǥWBҋJr =VC&8L`xܯ!4ꁐUPCAB]`XV=~ۏ݅yګJk*Ji; [B*qL0` x qBh\\[?NT턪vBU;ޯ7>xzC3 XIurooHutV(!?[tjF3q/2|~1 hₚ&.K( :ʨMF MF&bQ&65d2:nQɨdVvM0&bL TrHؤQ顡mں@FJ#T`P&UFiRiU`XEV/Ρ~=4*qA485m72o mQ&. -MQPUT**TŠLQ\QQFEREUQ`UXŵWEGE՛`ʵD\wwA&XeQ\T\m( -rNنaHhîG@\J.T%cP&P\XVqU\`S#[NhW'z+V`ފ4B.xkqJ ݕz==\DT%PUIJB~/RU;`XõW퀷G ӛVU;E0VT;Q;TFiљۃ ?tO>:|끸nHn:`vUQPUT*ABkVU;`XTmx{v{ 2)?l?i\%d2wNF. <.:kиx#=2ШL#@Y,Tu:cPPXuVUgI'zU}`UXO:Ek]Xi`zV났7 2FDz6=&j"DPADPl"(6[zZq[q[q%]l]l .ޖH m6d"(6M /"(3Lߨ@A TE"`P&PXEVU`XE5?(4=_ӐJk4" y7yږ2 mKLCih[x;'ihhnhkOzTBUg3e: uUg`XuVUg\QgFRubo/Bn;Eou'XGHGhT_ֺ3Ix~nhQgEہPY,TuƠLg3 :34vvuLug` %:ⱷ"4 < ( <.m ?B{WL &T U0(L `* z`c Ě`* &xoG=* LD U` &VU0` XVp=U0Q0FtbR퀷tBQFTF`x{Ƨ  =PKtuFHuEtCq**T UE1{zEp׋CHuVUg`XuƵW {FX*#@" <.,BEQ0-$ x _"d)wq>No~ U`BU0 zP* J4* J4:Y& JviU`?UQF7GE@h\8y<5=@MPC%zMŦbCiz(6==M`Cx)zL%ŦbqËMӹ mKLoO˛||||<kɃZ`-y eʽ5xiHeV*#ث{B*. |w1$VEQrF2o:{z 4qAMQPSAbNiشSl)6zvM;54d*)CT0&mM0 `M0&8D%&#2=zVUPCAB]`XV=U`SV=U,Cl"{ɃcK|z:!/\_y?o}oߎo7ּ<ϷׇLJv~ۏ?Oߞ_v?~q/2ȗ__b%W  WEFuQyzT^?ꥭ א_k }[T^w?䩼T^}~RMժ۵:d+))+g^*bY?黩K`?|+ou?Oߞ%u|ݽ?pq3ʯ2 U痭BiQqnQKE-ZKz`iQ,-ꁥE=A¾OvXbkg,쁧]#4!i},^O9BxZ>]K)Ti4BU* euiU`XViU\OXq`2U`A",%`-n=BӺ o"O^GhZzx;}5PC!TLzzNz]`X|-pBw?#Zv[x#4ШBSGi|\*@FJ#T`P&PXViU`XTiU`F'ˤViU. J<.. BU`]\􆷞<=`#|Mj"&JDUM&bADPl"(6%"(6*bAuŶ(..>nb)⭸^WⱸWShqjqjqjqjq3(+P/n7X kqs=Z`-N7X o m .CC.Q& ( BU|zk U%PUIAJB]%`U XUVU%`U SUVU%,S XUVJBJJS oz=QMȆF=\>gzU=BU zzvvyL*J]%`U xT Q%T%+!4v%-$ lX-Q%ןǝ@UI$TU*aPPW XUVU%`U XUTk2=U`Czz 4ꁐX;V 4}|RG\Y=BU*P2*"*<ƞk4*`XAh!x)=E Ch\RGU0*PL &TàL0. `* 멂!4 k`*GHsXeDh!x!kZ^ BvvOz 4@M;PԴAvbNiشSl)6zvmSl cD%ŦpqlmSl"8nx?oh{m+Q׿@C!Tz`PP}Ʉ.*Ju0 mq,|~$vcӐʏ4u; }*~~loK*%tzdJ.T% U1(\@`*. *.@`:Y`uX( B4i" o"" 44@F=\Nz T=BUezu=U`XV=U\OXV=tL`XzoiiHEB{Z2vP\khT Q%F|4* UJBU% T*J*J*dJ$x]ܽ!׮5] Xu%Q% !]Gi~~I#PUi4I#ԥViU`XVip=U`X2iU`F* Bڕ+ иKNp54Jzq2PUi4I#ԥViU`XVip=U`X2iU`F/Z=RivQ-MB* ~CnꆶwS7aT;`Xӛ`ihiH9:4U_/T ފAYoXVqkoVq=UF`[uL0` X!K`]Gi~ z o,RSF^"UBU D"*"*"d* Exܙ!4.F3XE7[[@h~&7;3+_‰JBU%PU C5J*J*J:Y* vU%Q%FRDžqaxT !?d s>8oK4i@MPԤA4*bFIؤQl(6iz4M&cDk6}&!L xLC`2oihQH"U mJCvs}Nj'T U0(Nkvjzvje[Rl UVGUBHUeO9`Z4tWqvvШӣSU%PUIAJB]%`U XUVU%`U SUVU%,S XUVJBJJ𨒖B۶kCJJ(]G@FJ#T`P&PXViU`XTiU`F'kzЮ!U XTbvB[RGھ\!uBexWiUǮ(ӛU0*PL A`B]0` XVU0` SVU0M0'yDh!x!;8.CHVL0ృ!4v0Fvzdj'T U0(Nkvjzvje!v0`] bzz zz z"4ШBJ*_]""?F U vB];`XVU;`WYV>E{uEUQ((*(.Br‷jhYkqEhɆ'B>No~Q**TbPPWXVEUQ`UXTEUQ`:YU;qк"]xqK]XY-[dkBcgDhm*ţ^M%PS T5tPTRl*)6JM%bSI,QI:v0ŢOiȖ^ŦbCE©!->%QO=U*PAAB]`XEVU`s^ƆO nHщ5iU`FKl=EXEVU`Aoxx!xE|z{UBU*P2*} 44 M`4*`x4JBJRLFmжhihTQQ׋@UT**TbPPWXVEWkVp=GCHӉ5U;`NkTPC!TLzzNz]`у?!;.; BcAhT !UIT{ BS ҊG=>@zU=BU zzzdB7'rQ%FUBh;z>k:znh` q;Шӓo UEBUQ (* (* }1ӗ4X`Wxv-'kH7y!v`M ^8PS*)`Adt`сEFXdt\vGH&X6д!|w_5&V>MSА,2"Xj=??:qw< _d/?ĿEg_߆ pm6\g>V^m+WknU[y5St{fWRU&:lc9zK|G^VuA}jJu?4| \!onTE|#uĤj/7^[??}|.~WOjb"*nvnz ozz 54Ш<UPCAB]`XV=U`SV=U,XxӐJx["54vT%`UIcZ"54d{0!sCJ.?T* UJBU% T*J*J*dJv`Z`-=mXlź9d+@-P-P-P)MCMK_͓1S!_HH@Z`-yIK%>ƶAh viU`7ӵ `Z&.W"PUI$TUPM%*JwwEN!kvN!ж!ܐ**Eݽ׾-G>!UTκ_4R i/;sPS;J*PW+TŠL\.. z*#ʨe=X{ &%vPU``zOG kWи! khqjqjqjqjq3(+P/n7X kqs=Z`-N7X kqZ`-nwo⭸ iqu!˘wuYjjjj3(+P/c1Xe 2ks=gUڞUmHK-. B&ƧMJ{%ƽB*#WBH& VB㒃иx57~@Y,Tu:cP3~AXuVUg`XuuFh!Y'vQgF%Ш3B:#::#:kN „F%Gh\j$ UɅBUr $G*9J*9(9B:L2 <+U\tI~ GڄTQq6qҥ"x{ЮqIײzԃnj2&JdUMF&bQɨmsLSl@`*6i>P4=qې[sӞQC&b3*J!-ӳ%%%%ϠCZ`-yx= JN>BB$ 䄱+:q)^DW/ Cq)Hl^;o8)j›$Q( FF`DQ0TSedL0&i4|< ep;aL0iןB}%"1ĘTbġ gʮE9ݏs({[e"ߜDsR֙0Lu&:F tȡPg e?OjCf'}FQH@)@:ލwy8e9>S8{7!碮n9wʦlaTgX)O!ܱT c%'L?a::L#upX)aS( 0Na9s/(((PHEY( a0JC!|1=tPvΡ¸BpPX(]we$Lpӕ>eBs(ԎBx )))QH;EY;¨aԎ0jG#DgE9=^;6SBºpz-JPQ a $fPC(px-4hH*.Bq)K!r< Q\EQ\EQ\EQ\j(K%Fq Q\:(.P\ r$K'Y(\ ex! c $N 'dH˯'e8jG!j<Q;EQ;EQ;EQ;ji(kG#FvQ;:a 4͝E*FJ uBa]5¨aT0*8 Ok5 k E5oDEEEQ$$:v e!0JC!бGi4QX0JCQaC(a0@E " PB=(DO!vc tEH$ Q(IMiF!)i@ Pg"H0dȡl2O趺C(プ!$ AgnHvǡ@H}CdMb!>C٭r[P@%B,B,B,BTHEq:eȘ*#cQ\:(.a21jG*#p:P6r(c2*>;Pvס"CٻҘ4 4444(FQ0JC!Fi4tI'B=(ݐvnH)ސDEEEQ$,a0@E "FxQ(wVV( G%  F8(kZŃd$* 2R(ۣPT̷ 7ELAQިeJ1(cPTǠAQx:Eu ud1hǘ1cF A:Nyt Ccx2^M[CEqa\Eø(ca8q |a+`!/CT%="~表|𛱇7z#Fx%7{(a6R(xJ7 Q\EQ\EQ\EQ\j(K%Fq c!'He$2rgQ!0Xc!0@E "I:~T`ȓªD8n.(8(Eyp -[0nO8qphp ]0na8qp 8\(]e!rG7{d1^UCEqp]E(na8qp RE?C(w,@E "("FQ(a0'|&*p^M"PEOv!(((@:cxeW(Fi4Q( {"FcI(aAa0@E "FQ>3(V aE @!EPEPEPEPEFQEP4{o{E "FtQ(a;D "Ffhd(=C( apDJ˃Uyy|6#/V9=쑗,O{*`<8NV=`|xiydG^X˃Uyyj+hyp,{*`˃UyydG^ʞ ^f/&7:_-wr:z~tћߎ~S?l ʦ涅xmb닷g?|luN뫋_jm ӭ!?hk/n|___ŭk~뫳xs%Yk;lUYGLo{Ǎ߿kt|}_]l~nnj9:k_o'}}_ݽzڹ0?#I|= &nAl~bbo3`s~v]0?]gKmngUWvVu/ :wllVĜ tw endstream endobj 92 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 97 0 obj << /Length 1405 /Filter /FlateDecode >> stream xڭW[sF~ϯ06ZIGNˀ:DhU]0#,jw>o]Vgfuy&0X4Q算$j3R<;+BZE/RwOn=`{b`zG Z򒤴`$נp&Nk5yfȍsrI)ج7houo֤/$mAA *]ZZL&WiXƔ z4_)iQ(f$F`E,CWYUr I("FfE%G3^Q I=X@Is2@̫$9'7` ۷]B5Qh Y pM~hKi-k_]"YiNkAl9@ώX 5g%*DP3E$Qb8> 3y&c`f( %,*m2GAPĈaNXi-׼8a z/!G7zX%ezdP8 x|9xM'E.RKc=lFi ˕>1z< GC/^^!yFʲ)5sh =75+&saqxN)Ⱦ=W6.qfmdCgBΤcpz2q0#؝t,+]?> stream xuTMs0Wp"$!d-i6mKPlMrA]pݷZ. 0<$ E Rhj,G#D:Hn,2;xf(sGI/׋@1OB_ᛏ 9,'dq}rkx;Qr5!#|9$zw.șWR (U'mU5[SNtBk[r{;se>tJTOqPcwpd+;(n  [-'jM^(f%}!ć-f8ފrn%hݘo?J>>hd8Çm֊j+k@'2NQugU?@5FG^ˀ8I*z'EiJ>¾$e :#ghuJwcv9 L,pqvS3/iƣw`<)bšgp0HG}-pԖGStpqҘZhΔAx~4#8@<_΃뭹~ YN8.x2ńrԫ|~>j]y7T8hvd endstream endobj 94 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpcbBBxo/Rbuild25b66d49398c85/DirichletMultinomial/vignettes/roc.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 105 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 106 0 R>> /ExtGState << >>/ColorSpace << /sRGB 107 0 R >>>> /Length 2419 /Filter /FlateDecode >> stream xO )t9ڈ, C`o]̮8a|,J% 'g~V_/߾/o_]|`\\Byw˺pkyUE˒ ]w[>,5,on #lBF؄5m!`Rj&En mu!Yw[o\ !5@u0XW hRl SR멤\h } U҂~E|Xs?QWG䪗˽GR*磷{NGq^^YPxVRLMץJGo^t{}2w,;(K;} -G߳4Ksci\w,ͮ,PDɓ<'!zbe!=U> '!}bPS%{]ۺƵ׿R J'PţT]-RSAUJy=ٚ[GNmx]ͥӧ&3ݶ [Mf՛웫&sv]6i$9TMf+o2GZ&3o3cr&3UB1ILM\0ɜS l$}dδNLK6%w!30fF *4r?_}2)t4dd:285¶]S9E *c2xs}W6i8u1ﻆwLm$l~]= OVm~lS%_9-]׾n,kา)Wm~bSej/T|6?j:\YIql~*bS &0Tv槺6?-Tkb+Ol~hS}kkeSn 6?׮}%ʍLeRh9"*oH20\X7VBeRd{?Lz[_3W?pz .9!>07Lz&=OmTO^Eiý̭r}7GaǽQ,X?&z)\VKpG9^#xLl~OoS}Ѝ Qo .~9T{ϤEO2*Wni .I_rJ9ނmUxf;0]IXh9>^S7|A_S.ܰ5p7¾-f#뿲4ʕ<́{=!k޸  n`*#K&@-*m3KJd90a^soLGn]gxk>'gl##ǽP}? X.53{[y pȵof Vs܃a0j0`{0=^X= sif}0>f_X>f  a0`}a5`}0>f0`a5`}0>a0j ͌a0lfp@̔,Ma0` Y:y0` uXưa1_cx 1cc0aa&1Lcx ob &1La0 ` l*ٜa.1\cpͧϙeAY2lP႘l^4l kᅘÙ]cx, eiex!fsf^1aY2PaSlFYbFϬ e^N, e +F1s =30BY~߉e3< 7f,O, en(X0ۃ%cX,~A͸rfF+X0b'A̹s0`6b#9X0Ŭf~f 'f3Ow]?p3}(Fr!Wo}}6Q /?x駟ux7=W -ETZh02'| QR'` bN4 endstream endobj 109 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 110 0 obj << /Length 114 /Filter /FlateDecode >> stream x313T0P0P01P06U05TH1*24 Rɹ\N\ f\@q.}O_T.}g E!P E'?{>.WO@.. endstream endobj 124 0 obj << /Length1 1427 /Length2 6423 /Length3 0 /Length 7402 /Filter /FlateDecode >> stream xڍwT6҄JA@Ih"7IJH EޤR RE)*J/_xZ߷޵yf̞gzi`,䀂PHX$ T 0$ 6Afp BJB:E!Z݀`1 XR|[@w0@'+ B!X2 A89;wn v*1 ԅa71 |WCKxyy Cܱ(< sp'd4a7`ryA0p AᆀX}$4ȿ:+_ 历 }H'# Wy/ "C"Dy!}H_e8G"*0:'8(-&%{0g_῍_jB hH(p^_,a}O 0 wB NP V @Я_+PH7XR_IMO2޽ D%@@0H\ xgO᫉tD/ xLPf5H#|(+;#nn;A}a tQa@7۪A DX\$UCx 8_KokH u@ JFne` #_20TC C9>Q I 'H@_0aL޿ Fp f# h06P(*A#%" 5v!d1p70k֕x5WU+,Dgzkt}MGrg_[c<CoU&- 0em;reLZI:yhA'&FH-7$Rb/^,o.ϴGE2>P3^x ,Vr_^sG[%.L=FI9mG>anQq;|z)qQ^ 7"1gIP&t8@ɞ\1kw" xC9E?PK] 4tj$V?&ԼLn1qeD7qY_񲳿G4 D(-6DWN|n) s殘뵝LKVmvsݕw {^6x>+d{uO ({At+ZeٸwYq=IZV];\"oCۚ2Cۜc:,`V< D} , !yWe3.I-ʹOLC|'bDrK+)W@ܥO:|ufhR]npdp]PlS@S#dت4)ONQ(ӆ?_4A14<)p@Εf:) ̒0'&͜/k> >+m;5?TYᄋb/&_)/NʜZKptXgovfL//~)mލ=s&?g!I2ۓ?pYM+Fbh]Zw)hrZc/'?J۝9wQϰw 3|^UM[Yf0ҐƔ2FQK|G͊7 3(Ha9C5n<"ݘ>[⥒GكWr =c%GuSU X{"nm5?$:ZXiӡV/4r?c vl֏;膛Ć(dFB8l86i˫YrkLu"weF5/lMߋhM9Jz{,Sjhs&&TAyw)_mܚJbSLJМmPG?+$$׊ ?3ZH2?k"GK$6Y9mz}^vk{,׳7|l:vC&Pa W/r^yg$~dN3c1P\jfZ>]A 1)]Y*RkQ\~ٜ jCg֧ud 4ꛓ,y33y1kY18NҒL~!Y8< Hr B0ΤDϼ% M#$[߾QvpWg:5aQ\Ih:y3r:zD k|+ZT]|;`$31 sm?|Rwz!frb&Z-VmugO=sHL)} BʲjQ|ֻq ƒ8p[Khj$QN3&(_ֽ ;8%cM)LEŨ >o7JN{Quf:z&?BVOOf~D<}X3GQIr}GIi×Kk%A'r c\wSD~n˴ Tgߗ`I~ UL9żV ѹlMv-\=y}=jVqή@Tǽz A.#8IYLG :`{*rS)w%ϙmz27GK-)WYՋ.&ͩ|='ԾMCi`~EZ*ѽ'gEǒw.&LlDsI\;z׽p!9Dy솟Vž5,<+ŭi"J_{:Tikȩ+aXe!q~8o1eToo>kWӈq'⛿:W FV7ZAdq]9OӤz3k+Aun7\+2RCECosP˛T,1̴l_3XyuL/xosVP ΓvnA=vxBO-653z'RI1_=|}_l8\E+|(t|<|d9>:tbǕTAzvCGzҎ2ٍQ{.gtD1 93J %X6>V jj#A.'"58lhR̩Ȋ;_|1TR"B£+*d/cج$~hn^dw39OӴ_\օ@ V!a, ~%EU֯Lw$DFQyS% 1߮;4e{bM.|t}'`=Nx\jc4&w}ћJnW(3e7<,mbbDAlrT'=y)م3̰Hv͏l<>1УƢJ%+V [Y\&e29&L\PwIxZT CBT~B0ZG&t9ttę:BoO ̹]5پ!H3drT؛c nI8sT6:k4uĜCWpѬ}ȭa Vً֬iV [6W&zxn^T, -Bq sc8s}P\ޟ~<>hd-tVg D̃ "[ISkZNz}~3)ms~(I6nI.9=/q#־Ax"|[NE s|FPѓiTtC`|$Rw__*~<ų> /7"7\Jx,\"sZ/ԩuftP7ѣ&+ry )JJ;m5i K74?|gYa_:ϋ I5s2W)$,trZzp'FI/;4}ޤ4zPR> i=VR߫ٴ%y(xis6![d4i mqZ׬t+Zu*%DQtD!|!K }7tR^9KMDmn{~iGSH zJgc{klt CA[_BӨOΔYY.&? t`1مJV)Lv 8 :]pSVCb·xzx:W'~zG Ͼ- =\h-gz[F5Əʢc"]Ex;| RQ75VyQw{Z*z)[(U ^6xC;3PL!N.y ϲ+c̣E D0> )cwn|Y2\SGb3GN+kDӃ#ہeWaG=Ӊ=]fG9Ӌo/8E@ N8mK*rJ/|og1ެ&0k7X'I]RKGŰs X(4mɽ-HR̎.j]15Z+#ٵ_!sj2j %z)Aa)#SN,l EOv+wqr%bPe3x9R2{L~=`~\ c=9@ [1fJ{H]ICq%㷼?(/q졁E| y~dky[u95-mf3LMCh.Ler)=d$s+Kc~Ha3π*!&M2a!>x}ԦX䐤58ȟE|.p˯&=D̐pOo_D$@ `~Nn"қ{~`\(,zA}` ߆H`ap$`˟3nh` q ~f3 j 6($D%@ɤp/Lc-j!]P̟jqcW> W|?sp! H{;_Y_$ o3oap߮?Ճ9ý۪℠tE{p/l8ap$Yp/NZNwq/%`8JuD%$( '-w8-:~F0^0Bڨ$yz掃# ]Nh4Nnـ+_چ`N$#('; oo -Zx'8n>~)_YYӮS{JgW뒍ON,֓~_U~|ITi)3<.a-mlOo놹Tm~o۱Q#FKe:/Bfm^ q8fӳa)ȇ)_]j? ^+='h8`W'mzf=@m‚c~/M ^M/![}߃<7?R-$USۣ h0bwa+]T͛]f:/p\iQ+iE<3#Ywd*&*ޓ,ed9cjҩ_4r7be\#OFHtEʭ(~=tOBG7/?CYmLe(!$[NC1wޯ|]Lx[v/6(E(YNfߴ:<9|3y7NuȨ/;DII gPEHw)ýw,`PQq|w꣱.ْUUoޤ+v18(JҒwg_~~WP^<̼{ w7AN&'Z[;I3SŻ OĔT ӳsbᲙ [7aN?Ъ}S#hxGOHuwO,V³+]L/V:S:?4>BcTohd50O^j5 ?+2D|?~]#L7gD:;`$fr}X}͐*荺Z>`;)5;zH?%Y{ ẎYŶ<'N|lp+?ky$2]mL^jvַQI0S*c]duR:zol.SRu6PRU*s#@י(l,Pj{%G}BD'[N}ʑ 42CꕶdLD#h,2Ȓ BS >=gzH濠r!Z]nxd+WsD2 ۬Oމp;k>&t}QBt=*foV(]3WIPa ^6K4e9 g yiLI[C[X 6f 4^;޺C D?vF[-yl $)lWH!WMlmG H-9BTFNʚ:Z<mzxH}jsOJzVEr,2l/ YE*I&M2f9+l8H8ǯ`'yT$R#LϘ?iVJ.ϼ}]*DI BUtGZޙt B0:h!B+Os [>>%R/{ybG6jp!z#}Z'z'ez7KgD=i㛇MkKcಚ; "&yKaaߙ!=h^{̵ i|n ϊL׼mÕ`3քB0oG?Y%ޟ+T[;[s IBbQM05«{g><”<=&-jSVzdkV{#oKݿWٽ+HrX5~yBy8Dz>mdNA9cA$uqd>.lǷU;rR/'QL۱ZiA \(|֊:ezuq`s wf}ل g+@2ڪ6Q[UOz2NCENԒs׵+A7yxS.ܐ}jr rci|ʬ%ѷ*^m嶾 *D8fcХk4#S1+i&$ond8@r(_vZp[=+ŗ浜%.42Χ7]J'y!~K._I]DF{=zB_^P]eBͲ:wg ᦎPY␒1 X$3O_ ]"&DdدƏ20õ(ѻ=*Jey?]}Op@!h)jے(^֓>f CUd<7[߽w )_Jacn&21DY{Z(LГ2Z?\2]PT_{rSWVv~IMV,eL+7L1sW^Ѿ&P󡶞r^~"O IRg⽯6xZB t#˴^45Dj<+[/u=l'}ttu@ZF2-Ŋޘ>y 7ܮ{_asjA,Ƀ^c;>v*wПc|LW^FҔ6 3tk_ݩ{j>A4(zjFެRIE'}S*&2QoY#mo]WL7L/9YMVs}^>LgCZDqӡ);kt &K|Fwf31N[,*c5xhۦV4j+cYZtG4Hι=Z֐[!"+pƙQyN]sa@\q;"Iё 6]OT5AϙqHv-u[g4 E^ cܒFmfX^$F[oH!}Ú6ނtU o< .AS-jkapv&~wm]Gy2z^:#"LqnALI&V+@77zwdk],ln~38k#S0,U_<Ƙ9dCLرP.mgBs myGX/A9:؎ cjg> stream xڍxTT6Rn[A$aaARJA:$QR@ZZAB) }}9oZ{s]s]{fmN6cA%=T@ d]cK @D&04 ꁂ!2P*"]O8 "HȈHʀ@($7!`p8U0'g4߷(A=`0n00FB`P?RqFen(!< C;FP A&D 8P9ho0„x":`Cu6W?ѿ!G } xc[J3P;%(+ f*H77("՟* 컯uE a_c8x "`H\Dtc,+#uO8/z1*Ebo9/B`nB1jPB8a-(r[t/; :X0z`@aDqP,"S C; H s,FjG{Y '߹R37ҡ6ryƪof~}[lV/<*|oʨo>X0,Qu,[̈́_ڢé_Bygـ;ӑ Fvg2]]wpI/9:%TYb^͡XZ)Ƕװ42U7$9iaqEScm  Uw'w6֔Fvf/^,DU}lM?SJ#%p1|uyU_nG)\.x+,>RI8Vlx.^oMGqx|dM!OKxj %fÛf/LrZ0ѰJi^(vieM$~%,GTX2Y'J`4yVAe-7*590X09FzsG -7N$ѫ:pD}>ZViC7>V-n u+OfхLgrQ^=exFo=6C3WLggdKoulxͳJR6i&2ͭ). {"2Fs4T9CKٶG%FJ 8>hw3^Vwun&fעXLȅnwtn#j]2J $w~m\>TLނ'2Qߙy=;[ʁ ۮ K+F{<36 l˫nXcd0 ?ԄQ$,zݤ<X\ڗ|'Yw`wN攅v=R`Ҹɮ!H\d ߺIP.el*fF̗jd#9߲Gw v#@)O7}oZ}){ѪXn }[703h9V\&jx0ߢ Ӽ*2 A<2k|V$:vay.FҳkJ'&zB9@,?Bz`ݔ~ǛR%?]|MBz?e2<({2̐tt0-&Q*A}mIː,|{ұ3Z .{ڧT>.mBx"uϿjUu ህ5"'Gw&,;W𠂟EIc $Cboe8D~)FƧ[TsQ'sb{lÚVP{hh H*_}{. ilLTXn=YÓ?/H1kNBv _7_dz㣒},pF~\dRUz ]PZU&}PUGWe smNi[-zZBӷRnR{^WU~9Ca !QL1(WBkצ`G #hMt28EşI;[ͷb݃dp"/!btFÌIG*EoV ݃mUXU N޻/˦9X𾉛:N<0 < ?#`ЋʖR1])XN\K8Pdڦyf mar&PQ:(w-[JMj1~7٨XWpGi*Hl͐f[!ǡZQmckj+z-Ytw<嬭JU\yY`X͢1[tfDrrXޭ=8^Ԓ+;p 7}b)+~FZf]R?f(Toisޙ q;ZIm}E5L0BoȸIk^Zѹ-Z;EJ&2C\ajŧqSzʁzrI_9)s9js ;b^rkJtҝ,N>@M^Ƭ|Yׇ<;D] )ɻ P,= 5m5x?rmofS^4m#jj'y0\;|QLY?6^wn_0qFWsv).$'Ĕ(/RK01n뾬 ' MgOV-5YER5[l,'HpMT]82cTp?h6XTkP;]8-О7pnxhՂ5lBphB"ϼn&{=\f2atUBIq t3ΩƳdI7_{}j#CUpڐt< i 1`pIdا~N'Xe_xo7^3NK9AnXp:PH~t8}xjRn7 j{y/yzu{ݑ q"j5//Y$cLQf+|7?Ī_jx8Ḧ Kh!x^rc^*?cO ,l} 2^c=foƜ|cPCB#.L[~pnuP͓ IvnPdGfPp(b^mV(H܊➊M2*\T`|9`gjDnJ4i1WUlY=2?H_xH4 .}bj ?p:!RߔQA'AH]DUܬJ>TKʇ_UtbXr=g)%cZ|NoIJ಄##'κ%}m@#ͯ&YG+o}֚'pc y~\2鵣WN)1yc '6 )bߺo5y"q8^h ,ǃ{Kt3]h4p_Ghpk䟝7pcJ wlwDLF3TYG1-QX̩M.m *l>{kN3 9Q\Z1=@>q|"lVRQ^d?q`pȊfZ'ƹ;ޒw).J#gf},jT-gD36F=$&a ,O: ߣL KlX|㝷Ǽ0R&\_|`#ܻv"Z æ,=1nqӃҠzGYwvÎ9W ތnz /veə-+Zt*W*8uynUr<3:sRtBMzru.j)Ͳvd^9o.֚XAfB1.q+Ux1h/O$Z{MS*oҏ|>ZxBޭͪ*1Iڱ,kj'nmV2%1j5Zfk^D~MZ/F@ o\OT/Έg8)}(w\0jC"vWSV ߯z5e!w|%+l\> m+":.uznĞt?@&$GfY*=L : QrF2[7 N&:s*9~Z3殿ىv(w%~zD,-;6>ǻ%n4x𲒝^ɓ(S ,~߷P*wH@]Z5æ}sƓ:c8eK)ŀESJuaL:LtBNIK-r2hXftAtE~H$ju ;Yyۓ0I AZ] U\+ǩ>JRZg5>PG kǤ *\Z%65҉?GLX?oNמxTy9Am8 .Pؖly~aZʹ^0W@:W=cnz]kJQ~a+|; ©yA|nLy޷A8EWz:ʣi1ʏ=.8W{Fo|Rٳ*b"+6 'J2DDcD& ^|2^/9kΤ\ Hd:2PJx_]k^lv&\{2N< flέ/RssOS'd=/xHp#,UhN4.jk걀h &hk+9Va|rG_Cy TP G8u Aq "--SY&n{CSOیVw5* h,1Ehnp endstream endobj 130 0 obj << /Length1 1612 /Length2 15901 /Length3 0 /Length 16733 /Filter /FlateDecode >> stream xڬc]&\ͮ,6lYmVeFlus:|fΏ\";^INB/ljo sgf`[:+]pN@#K{;1# @h XXpQ{O'Ks 5--Z {NgKs;7-/F bY ZR* y5ddPt54Z휁3{'Ϳ{;SJsf% 08;M,nzqNs'#;=pXڙظC_FSwvq6qtpͪ(&o.F.v؛47qY9\.2L-l< d/Ζvɀ47r2:;OwNVv+qtqژ11i7?"egf`f?|n@5ꟙK` 4cw@2 "U -jc#odw}0Y?w'jMGo3 oT`fdSٙl,W3LLŧjaibmOڙWEuFee-m)z+J.RM {7H _03rq-_ w;{fEx/?nW'-?t hlobR?2%3 >P֨Z\Pc]e^4tq Ms8ևeCٛAKJ_II{Ĩ_y}( ~;_E8sD@VAgمVWtzF|H94>:2{OKkzJith ˫,-w̅JkXBx$" 틶HA>QpP.+ķ}}/܅r A[LuR"BHN2TJ'.0|]Z4!9iQ 2&L]~fm^/hV$'-$e נ_ OnhE4nSkw"lNSqnԶםpkaHG.h{)!lQ#F`s3>,~ ~r|yqv.K;BsJŶ3YBa_"H*w=׽ +4y @t,'@D3Lw:X`w*ly$Bη,֥\qآ4[iEvj0bL"XwĪYo>*zٔ)aG5.^sњ /5E:MX[Yn)nVۏ2Z2KD[\R|X@J\$= EU:?<\@t9nN7a?5nz\tC.o2N%:"fK$0Cuлrd:.05 qaJ-"Nok6.뢀87c8{%7 :f!YIV\L0›?2&2WҜ3䅢6d`ı٥ SjNE󻤸QYkp]xFՈIR$[gsd5(*hD1ZW7.r|?f.pS>Ru.Lǖ{y;>_b"Ը.8y_0?T◗# 8^@M7%^,<0JXEPCç,I5i=2} α I6rnOT s@6K>&Ѕ[d^)CclB '"M0n%,-MqHTACe겙֑;Ϳ/B*,@V!Ζ= %'aIW،Iae sd%P+Xc{?tƛ^q1E YCaOշfE(FqW^wY+`~(< g'`ٱ3y'&e_Cu5׮-T=cY("ժٰ<9Tн9t|Ӈ%hS(h)_Gt,eJ_mkyhc҉[2S5ߌŠ{*C 'N 25|׾9c{f% lacBp)M;JnCI`~Uf^__(4m EbORg0PnDŽI=0O Ye@gM+7w-N)~͇+'(șa\aj(CB" ЭЕ? '|BPQ>19"K#V/vK(M<.pEoBL.C1Ɛ:I;SyE6b*A̜rxc}o|j_X-ԐhrlΛ?a~짞y;#OW3Z{;bE 茄4#yd^¾/h(jmda>m&bm )Nj)?Ibe'U[Swd":*(5uY㏜|m} 5nx?P Tz85 6)Z~te(w^ Ր &]YN+/zzwӖ'TUIE/vPҦe^|RG0G6{8w TR+{V\SY4%Ym.1Ao+Pl Ckst6 ]XE5> (#; ԒL~jo3X@{M1X>8$AOԓ,["cYɕwVT'asɑؖ`>׹_\UD3U;7S+̟c|wGg(RCbNjz_!aHWwsǬKSO'pCB-V^E+k_x:lQ;k;q};cz /kDg-}FXZ0hؓzőHqٵ5[aᶷ9#EÃ[ŸZȔ͚,G ;GHPtòV9>F`{Drk{-PB#|cba*>j1u]"DiR@&F>oGEãcZi:iGS[AhꑉQ£]][dјҦeh*B%eӆ Np9ҽ[o}d"wA3]W9! d E1?*DXTPtv ɽ|\I` %R%"(ͨHi"̅Ņk/υJRWh %_ٷɢUU׎p$qP(c?Eh!{S@msa 9Zwpٟ,| OTBy9`Vu=t[XWA͋qLp۶@cO=N <dl ;)( oC~'3KK̰A59~%mN}VU}50#r)eظ4j+17د -o)U{*J)1B@Yh2mĢp`P!D~`߻?9WgVu'qSC {؆ɂY|x7_QZ  * }.|Hvkp{;)45dAR| I%Ո*v0~*A{ɾ:#kC]dFy] VN;d46Y -Lg@bBmqIo\n k.AIch˨* x)JYSoBwJWC fY- 5Ku39ũȅK+@OҼ0XMu*ͺm0ݿ5`l83v;79>.xb30,`Z7UTaWV{-ʳ.MQB`QTbڒ5"UxvP9J{aU\!:G)$ҟM_mʼnfh ÊYY7LGў& H * :,A%pm]y;L O!Q֫iL`&<}{wBH6wM+L f8ZUBαC=ׅxw=G)$ Ŵ§2h>ʭ-"t>l6\~Qox@hy.#J̔$еpp!脮ʡؿv&3cV9F|uעwPƤYH.>TvJE7hx&yһ*-3}0%=cÚ4js,(.kA֚'*]5 }s%C}`E7q%=xeZ97: i/)J A:4WWA:& >"b`1\8U13 )8؂ Y?+PԷ|T_8KB(#_Gv7+}Cpv-ͫ1O@nZ% lXl 8އ{$Umso&eSw4魜D=;Zrse>jacK;Οp|kL,ftu w]|$`6M#2 g)8k Lgm.&4T7DNh0 tVz1P@v|xY#0O7m? fmb0J(z4Ԝ_YBu*f$L&Y25ZHyTR E쒲m/Z1e#̼ ǎ.gVNjo {._D>d/0sepȔ' JOKr]ֈW{[Lhk)PN4N kb)1+ }!e_͍JX> >{=y\Ҙ-@,Yn[EQ!m{o-,yj c%+9KDP|#g;V–?kͫ6T|Bnw9B(ghJ.Q?۫fʤ# 'a"v" !-_1P΋!{}RFj4~jp)B_X\?jB͒[,K8ӮEwtMera-ϼ]1旊wONGApAAYU˹&N>}HVk9oư3AN-c-%D`3zxЄBKݿ5wyFCIoV($TrU7tĎ&N҄YI0#ٳjiYvZ}T4D@b~ir' < n _J9m~l=H cL}ɇ32># ALn.5T{EZW5BI2+Rx8 \ :(h@Vm6 jvP!(b3i]rHut֦`vyA,rLl9dY@s)'õ4HNO8 -m3T.i-ǚܾ^)DczP+wj9/ῑ%vc4N\`Ͱ_)Dp"B Iͧ<!ۧn_ zj~Qɍ5=ſJI.f`KLQ'X}+xa`iGǓs.$ϔ?B4qPVx)'ͺ{"ũ7a*04FЏ/ xb]s)( tD77 0Sm6OVYGبu%EĘ`4J5B|maː+>NKX Ķ5?Vwn7/:ݶsR$дN%~a(HG.va07%ljz|ҏj8ףGe5bO q!U/< } 5h] =E鞭)T^q!ߖ#-"|~V!rҍ"щI7Spug0`C %[!D? L6q7ע{`,< .˴!q_j$Z>«Ω*ǖo d5$0,[$7lEݔK>3\1{Iа)n}aXm]C`%D- ؙPn6mKoqMh So$Q D /+5 OK`)L} {)8-]Wc}WeJ>x;Mٵ0ed)SN1>JUB;kZ6knl|. <V&-n1/4ʡ!9${b2 # ucKkt֦͍nb( j},bf%11v2( \3Ǯz[$~`73SZ15 DQ0H !bݣ0fxΒs"] yd|i忺c;+칽f䘌%¸Ĥ< bKcln!@ըA& N[gf MD'ު!v[6q/_ŭ )9tNE4 WO3EzYfԙYiP|*K7 ~$ W5F[zQ}kx}aؒJ`;,5f0z `k!9Q,[(.y$7Ķz{ ay7`tzG{YberW!_+;ͤ}0|翝2e{.uRnұNioQ^s^@n_.y|f򊫈5>.LX80HWYɖ?L}_ƹXnƔX#ҬO }u:{EE2@674ubwKCoW3nŚtRlӘ {BBkćɏ~-ɣ+(,kyoJw8:>\ݜе ͛\+MVR]%w#lw}AF({KQx8ZU/@E_Q2[LOPyweW%o67 L|I?S)+J BmGZa;7|JT,%XWpֺQۋ{Y y#Ua_ I7 p _Y6{j,b$ TYB1U})Di G z`Wv#ېMt6QdZjYLkfsM_U{i[*vKO##U& 8q%w1fj' Y.t"FVZCʜ>Cs2 4)9-e^{Ǔ ;kux>yɘN5t+r. FuS7hok1nQ&avן7VhP7lZ@Nu΄nƌVu6IKwվ -{q˽m+l&{7G%)YY1dj=Hm!Y{Y41Gm7H[MؐB1^bu[|{ui\mLc$_#|yDRm%1Av`H[:=Z(汤(n" o,Ut1s5 {oxNbGD5Xz"ŭ~8"Iu>\3h !/S5J3 A=NT:,Nw>u7,opO 8a ucE쵤ߖn'*݅D>EM/&a~SR8PbiSգAm/=<xGXۅK )m;67v*yR os>:. 87qh3Mls\ȇm薁 '4@ؿ/h=<1;s<7ˁ%*6@>;D~Дz˒ %.J{(>`Ԓ9[:$dޝAŜ>aB /.&#qYPUI ٛFL`wE/H[U3]8]sӫߕ?;r`1쇤{ ApЃ(eܭ=czn,i=ɐ#oƾΊML Hmf8w1m1BQcMlZ S1+Shl?.[S8"{{jIl-R9ϝ8 !T|u_C 8zZ%2OK⺅BG: g2svWßFA~Tsr[b~0 x ?d<\A2Q^T Uㄜ;\!)wͧrR¬08en'ضpB?]}c$T5tηGM^]JR_cVey"IDԡibmxW_#q`ENY(4|YZ%z dOHEzY.zVzXI.1EvxnC\bwBZڲ}F6[2 iP>.Bb(".y&Vk_U싔3~ww$) HLw+xxE勧xydCtf5* M-:<^0G^ƙTjiP:YȒ)C`gvB6jf7 ya"rWdhct$*q`m,X"u)qlq:r{I |U;RtE( ?=j;Xkm$7'g(eZT[9]Ej'&hZrW%VU>KmsZ&8'aKgކI&kabZA0߄@T)ELeznv|l&$G,, C XD$*u> A@bF! 焉NDY `s-v0A=gmXBҴ*f"݋ ,,rr}f3(~թ6C?{GxPf7dž.kȃB]>TJXl A5y[\Cԁ.|sjzR endstream endobj 132 0 obj << /Length1 1630 /Length2 14684 /Length3 0 /Length 15537 /Filter /FlateDecode >> stream xڭcte]-V̊cۨض;Tl۩ضm|=vcs>hmQ(29%]Xy Vv& y{9/OA! 4vr3v4f1)OupptPh+@z,܀v@{׎@ 0D$Ԓ I=S);8l}:؛YS/0` 9M@g;+3 p6w? ;+!Gg7bɔ@. Sg+GߨJb 0M3SJ/ble09{_i-+z3OwNVǿu?srmYX4ua7w0n_ gfh&al`o03)8 SNGMZV{n=ck g8nvV~Qd]6E0 ,6[$͔\L-ƶ{/W3,Lm쿧W%$)#!Hڰw\<FS?8|x2pXٸ\\nCѰY;@?~uo4fLaO?_-?{ ;~)_utZI1^`ǒ|jߴ `iޏ6S^,[e7M_>&eaA Rfբ6'A6gث'?2|? GGdXNF0ڂ3Gᡞ|X8 >clS$#W7.]>@JHƳ(Q+!&O(fk9eA2,ֱ ʧd+ W5-dXs(|MKn$NA%qB87zB8"WUHZ2B4n6!r^oGTW^y1Z()gϻrSq\[,mu=Idk\^f2or@C2#uYb5br˝tFpnklh\xo{GHvA5@OUy/eq}Ii'ŔKOc[&r!&iUJaD|G-gBG1/wWԘ}K8#Q!P$'08NNg;^#3rTnYBB+~&!XWȟ:}lk7r~"= ymMV{ǥSrI)lM}Ce]|t7-HTp MkDN3nBKjQ` qřiB<8/[,#A,]j8!}"<i?Y0 xOtAZő[q8FuAʆAknq}M{/fjX(fz.W]s #52jHD'2SKDA#-\NwJ`nw,@;hSXwv1$*^n8s=BM}fߵÝĕxH_[f"1wJ`Dk~CQ#^hǩ+pM9iL|!~.|'qxu1iv/ XVK>DOPH"qFEIF^wV }pZAYq.Mgɷ^ԾX#G;k'.:صXH'rn!8<}.N<4u\&,X׼o>XV-x˕%sFL uqz:d6";%RS5%awҋp6CnX7q1]?U=djA+cn|wy!!Y|:ǂ|,VD1~sެbRwIjJ[&k`׍"ztFKoabƊ0g%sT+,tuR'a L )iU <4sc`:J.\3',`yC?/}9.6cpjBj85{p# Ʋ2ro/5_݂~ "Z t+n[úQ~jԸʼndӌ"y3C!:O#jϐ%jS"dVVݶ" R\w?s46_ kAt삃j݇cbӖo4!xufxGS1py z%sdr)cAg[yN8,51I*?SΗ!{~1D´7*B;#}c#ƑK{cܷؐxUxq >6d akM%嫙X$]rY5hjy[ [cjAW2sy# m(VG5؆2[ظx bTZ^w0⟈ᱬKM583ǁWYZ~E6i"UV4OI{ N~IlXMY99DbU%Kr6ϋj/:*8m Rev p=kAW۱L GC.78\Nrɣ&8a#KB[}Vz!=J=!]MEҕ=9%)K򪯘b &U1Ȩuek5K $^'q))vWK|-.Ιw<ټ*kxH~P}3a C;[?1+nkKVo'g,Q9RcQj#/SbT8I }Uי-o ^@Ρr |~ f%FuU';Ɂ ~#+ƍv֘7ey5KlMJ,2vOJ! ~a_ہ4$"6 eHacD?M "^c@{3鷬̑R%1)MG'Z ^7I֛bCme%>ז HȲ>HVYƏ̾a6(!q"tDm#,ϠgN'w܇FhX"!Q~a#;m޾wr܄z2jQ8]/q$qsp?$űs&+32lUA7ȭx`-Νqٶؐ QoX~^ UzߊZ~!>[׍wjHQTT QI@&2rdfŨ?M۴_!nslsأ'I/ c̻R<(99d OV;5Jp\QT&U|^VOĖEDoQm(of 6\ijZX]GqnƄW8@bSSsU˟T52 IYVjܧYgHpQ5UM[U˹rvG$_2:{A>}1ے}iVZ6ud MD촥VMCeC>^[΂g2e.HJl@$ :؁~ҥnLByçMAna:lWuZdQ'WWMd4jj$xs9lGx(Ĕwc$L7,ց,f¸rN0 4(% v-N cI !UDgFN96ITϊM>híV6}}F`c;yVY;Re圻Z33rQ5xd־bB3N,+ކ=2GMM N-f$.34-gY~cr]iMj{7ecjĵ, ĂtXgvl6퍋Ĉ zOɨ6~b)fkMt&2 h=_T=x|,.-jO’Πɦz_( r 0 c^zMdJ1*9ĭztNGQeYjew&A`10/לaJO9 8QP;Emj=,-]muSC"ͧu>al􊰫"b*7{CoLQǓѴbמ, ʲYzkfX T?f8:ΕO#12'QMqX/\-ld/'|:FzH#?&\!lX_=ɟ9l3eb"1`PgL9-6AHEat'PP|4G] |0cK9G_IQr: 1IF^EFBq]Z8S,5g#4rAкZn氖, llKLEUK4F?R*Rd)֚#2zJW (߷1~™[_HHvy^N1DձrW+ &52TVX:M,)$9!UjGFxd(UƜ&B=do/ט6X tԥz)!=4Z>f`%Ox7X'vy,,.0w* jc +/7UIt͛+g܏ Yܢ`{.K}^{D<+l4QA+zhC6zgM"\e[/%s6z : FP(8 FH=o1eh>dg:$BƼyO1."c}|?oőc쪪N/a6/Aϼ\6ڻE s 4 ːbH|fU9V!n/4rFVSfDQou(](ԆG#kQݵ1ڛc o2nE:#5rK+|$XBeAGuk(8zp_3Dac{zH$~$, L=C z}E<`ꓯ.6('P4ZZ%/INzε&ʘ**!Z\ƃoPi)7a%k)/Ԝd0 *61(C陟} RЃ^69m1~G}Bdui\A#rb严eG= K)mb^(4ѦspAIxB4ccS]&UT#U~P9< "+e0AS8vRATMqbG9-Mt#|Ce}B0p2w[j럺SLVdy=K@,@{B/&(ߩeSv|Obp9JN&p6bk H6{2%[~>~;寧Lw˾:SK&pg'js݅Z"%z%ttyq\K${9֝,z-hTt ̹:V7̔Qϥڧ{ӡL{C1e+]N4 mH.P9DP+퉶!;po{9XSZ(\ D'i3ɪ_W:V{p $ھ0u}k=E-~H_ysLZqlrmjoL ,DtUƧ@GL"#=켜"ZnU}ZL 8[&JåQvuК-9V Ry'Tsb.OlgeRR=zNϰK[*Ĵ(S*n1:$~`~{j࿺Á$}#,0ˋ,MPgٛz5PRWG7 u%z[gg\yp%֞&l2Ԁ29ierf]u kb o瞂ɗPE۠Lj%cԐQ4JCw|g:sNd.U#ԙ]]>Sxmt ñG7@ 3L<}US&Q"#UJQ"` }[S ٌKN< Nh[կ7|W',RxϑnQ#LZY4|3^j-piAZo4|)~'l#qԑadD/b  Hg80SLş#RуtRe ;^76.^xDM3?zU1s.hHaf0WMTS{Bݡ'H+ҘR&j< t;oFZQE؞ş9$3%g* G} ߫D"4k'~Cm~e+iMqf2kQM?/)rm"ߴ]QA*)N[yhfw7+X93(k^U_9&<h1i40ͯxmH- Ă6*nhMI;X^!N'Y{`&*2a ,Nl Dl!Tǁq JQ: E{7Ue'J["(ln 0:ÚG;ob (M YѻvQrh6z}TgQJ>A/F,%qU0Zr"ȯl3 oeEU[ɼCDALu?)b2fǡEҰ嫆6ڜɞ:Z]&$Ǝ^ADuYm! ol$$~6[JNv8-Nk5#TM{G-Z(w"iAC{Cͧ%άkb֢dgaֳڣ)Fg%BSJ_+lb6^5ᓸ QK-qS(id{ Tg|6:ZHEx'aD$mE5ud\UH;*,q # ,߳[m-?O֭??:nzFpn<-a@pL7!ω/VܐgfY 9J%SFtNO)wc0c )|,xPZ*Tz9ʃ)~ z5 ma瘫+,p8##;n),roԙ6%3IWw`πaw1S|Aז)K-ƣILqነjضTe6cq uߪ5_1RΘ5Qgpn<_vI0V MQbd^_=%bᇾbyYo\B"a:{qP72A0ԥZCf⺣.*+[ #'ѭVǮ t-Z4mMey"t7#1NexOWԢ*aaɛw\2Xc^o` %ⱱ p ]K_ߢ`6$%qZ}S斄[ҳ#g-!w120M(dь>p봐_Th6dV%ھ@yDys#al>lLqs>:>š[kʞAC80?pBE{|ry-Eӗl“q޺AYMT3|mA>)nA4F_Seװ] "RӲeBv`p'yMS;f7V(dRw*` تq*gu"V—5Qƭ):N":ТMZcג{GxwYfy]_ho$-"lb9F2GR@ Ar%`,NxZN( AQD,__2YltG.=/ URu8&ni3[1- ޚ_&YՁY1#-mL\(`]E~VѮ=b`.s&.I2=;"DOAq/)JT*fp*j8WwPoo_w">CS-;-&,^%oE0ԟMa'6:O y^u[N0h~Wd%Sj) gM߮iy6 M^Y 3ꮸ ;"! й =1A{[z[5BS{aI) w5fG )a5I BZrZ>7kGxХ{攎M@w0<ު?@c" L8oMaP4#9It釔[ *s#YXq? (eI#!wl.]}i)/L{-538rT\sF#J_xPeZkښwEhOA#ˑ-2YOq*np|=lrnAڍiBד LT^N8OԿ):QW9oS|s\GdĢ&w>cXnD~"ڔ0x!QޑCɫY +@ :Q;^Qv!VW&Rdׅd%@N8\#+c;ŎH̊rӜrRիz1{m+!.އLI싐n龸zC+ݻgM}/}1!6vFZL's5➅?(!ϕU2%hC=#Ft:܆țP 6d|svgs,C2=!ɐnB@{~(^(eByo e& AQ)dScTBeQ6DQJ9DRdXT':.~J|0'JpT؄F)g&{)7d^_Ll1ѝw#n1%TPx+d`OM0N>WaĪKm ѧS*ގLR@c 6f\Z1DO'C$6S~ztKx$l&(cI?uK^Z[#wћ"?ӷrr!q+۵v4(#0 =<3ԄAz5;N6).m#}r*b '^lv \^SdLNqg]Ƹfɔm;@p?uoLc/;QäY)  _*ٗ_p%Uݛ#Ji-9 ?]K Ew?20}hgEͨ} da9ŠB<ȹ7/7ANXr%P,rEzI I B%c(`^ yQA9z2i{wյq+=Hܐ8^ոcI݄S bY[,DLDtBN}p h)-v]3m? /pqs}^6^"^ &Ԭ13ptɧI:rtQ@kr\C\7W7Ú4[U~f}M.١P~\",L/je5ƍgRrms"l!qRprDv!k*qhPMn[Z. J~L&26:O͒1ݥ#HM0^Kg1F+p4꯭74a't]^ܜ+h6' ڳPΕ|&6Uk. KkP*Y*V\Ƅk`pC}3 k A I6єlڒч@%*N=cY}{f.hqV'p(n ?M5krJ TEy,T 3LR֚Bk5_(wm,a3;-$A61ӈW"t^Uش󰓛A]<ý ;n|D@&ՄkJ?3w3*Z)TH@]~oMR:9D^L%vIlF\|P #˜'*'ԖN@y-«NǽŒ6ж#G6m^S'9lO9b|2N1 H'yۘ?a7n|܋~*?8:*QǨ]ex[ʒ. )nZ>BP/c')UJDk<&Q {c?5 te% 'ZhM9D> 4|'\T)_ \$pBHb]ɵ3~;f9n8 3.iRv/j^\bjȇ;m_qpdݱDӭ0E9#! Uo {$6%T9#8&y"@q'ϳ#@|PSć%ܛpPy!ea:۴b$WG㻸c*Rf^-JSߠn}u߽PAߤfari3PeHL"zZ A3ct=8$((9^~ݻsRҪV 7ߡڪ(QRqR9-rKIj~7 n`T ޳ulj3#IzT"s#ʸV?rW8;E?N~_G΃qir\T!;|K5'OYRE.;-^_j[-#W([K.ZPc 0|,f7[<v6|4֦40 1f}'im;>3E+V i }z 1>PP ꖾyN_"s%X&\yزc+Yݩ@JkM6bJb'vFoaYe8?S%5AHnT td5+J2Af+W,+0@hY;vS=k`魿П(@~¹+{5K[htxvxX,K Ю$bNvgK ;-33c.njTrmՇx\Nl,acHPguGU@C> :[ec-"KwfO8 Zޢ J-XTtDT;2mHB<##3q9XKe*43Op"*uڌ |h`-B13'k5|1+.,^ =P1}[\P6+/]QφRLexPt)b U_y,Aضʝ-X>z']O(jjS|`B`涃Zia*, ҏ,1W^Z\A ;0F4]_5MѕDphb J?L endstream endobj 134 0 obj << /Length1 1144 /Length2 1528 /Length3 0 /Length 2250 /Filter /FlateDecode >> stream xuSyQa"AXHx\dDg"B+1+|&WY#]AĆ#t rt&TA>Z4s:¢gBvP#X4L,SB ]3i̜!>@͝[q?,fδ6Ptw'alPXp+c62@gH4Lx`Ѹp;џb B;E`B !@5|SGa5 V ku^(o>H0fn_T06x)"o1WB;Blľ  îWALd3Ep?5wO-47˝dq\xӽsiiWsYw! 10uL 2)5,fμ87 `px.1"`P @7C0sN0aB0 Q̯4xf.=eςAp+P/AIg'ϐc0nYXm,Zn+t^fD6r)m`9o9L{c" j湥i0=gCT~Ф5EkcϝWFWO;T&#񺓛Qz|%1͏(u#%[҅S.x^Ѡ[ꨂJvU}E*&6޼d(۴dzt̬]ӣ뫻5S^ّX}Dkm60dx0t~zli^Kɚv󶞆{k'֩#%ILf=?x$6wjVurhu(237k<]iu4Mтָ'" ^&?S^PZo#fn=q-ޞ'IS 6Ɖg'v5+:+E-%F#/7삯O$1w_H\W8PAݓҨ@BT9>2hZJ?U7[qf*L&\꺪#oXl-Aih\Fѹw)}ʭDءx5{b 2+: M%w:~uxe[ؤ=j*/ާ z:V]q[e"Y)sa@&YDtd[~Lwp[:eMY1uX|ƹڪ~9qluL,a$+o[{$mr>[4|x~p7>Qi\XZT< 0\8e@<2}llDUޭ\Q=D-)p#1ve9k|U\3)J)}AؾގWuЉ<گ4kli3[}!FW7=81&A[%E R9etI犓%?Hd)g֍{}:drވ>~s@ҞhReQ? {#nq69WxKKԇn7r겜p=*VmI.xu$ #c|?M>ՙe:Y`{Yt2C eͺiۍ{6i8U捞5 K֭^]%+ ڍ#VE\~E"Pk~%lLs+ęyoj UVHF`iͶ8QO 6kKZ$M sSC] ąhv~B1Ja:`:>LcKRa-4&w([nR(UK}5*a㧬'R4>o R:`4V̷(2語rnxjo \s͓T҅ اPPhy`#qRãvEjA fR[SiNuC%eNy՝թsG9޷h{cdE>!Gm,)hi|-M7Q21dՈDZêhEm 쩒\h endstream endobj 136 0 obj << /Length1 1626 /Length2 8695 /Length3 0 /Length 9531 /Filter /FlateDecode >> stream xڭweT\6qm\ <4H74k $Ip NpN0䜹sgo?3^kOSouma`E4!./`.01ux 03V *o`[<a\}{M!;''?%L>W\h$Eʺ\x|TrCꚢAM/A~U@{ۿu3*+]UK;vwH@:b5o~_I~đWցBwRi- 7bhiǯ1 >I`E)4xM/YaȜųEX .AѝyGla4IRѹ}pAa&{z`L"?VA _uCD(McT"i*%79% 9evRVCP 2MC/畇dz uVmt|F EU\_8H!؃V[;nja8N2~elч13e/ⱎQܥ*n.;Bpb"b3;mߥ&;˗Hf_Fg~^Q \)J=yfۮ5l%BdKy5)xM?oa]ċK0lY7a\0XvKbxG*Ii/yJ&6Yy],עV 91 K$]ddt1#XSɯ*N6s|ۀ8ٰA2/CBuh["Վ9|~mFemgoaH }3X4mt!A{碄 \qyS'wO=~3Dg/m1լ݅Ek9+<7>k&>bf,:n95$FK FXO6;3{V%pLy|&܋ GeujIef*&8WHG~L }pc,7o&y\+nD)1[ĭiY @6}RVzF)D SU8\ҙoFp@Fvsq R8/]RQQb=aN$|h!tIE2r3+VZfyxC$!!<&R^R6XxAFh-n*C־H:W=Y@ƳV˂)m\%ѯoa .P,9E!HSx,? a* b!Db+V~Fx8FAm^(w4nJq< edTFp_߂IsEo%3g4= a# i~GQrtu]Gbom LK.t .Y!bTPS}'qŬ:򞕻j@,fѨ7\mNx3;!T zfrU%+779ƺ.58JpzL1A=XjyBv}sۄw}h|B/վOhx + ^|O5-y5lxc͚69 ]_$NIYkJ,LHǧABf'rwoJMx-eՈ掎ĤLvqE/+^Yr tsLAOel4/e0oU!((e/>IGL68LPc!tιcH[KB^FgB\sփ%w" 40<5۟007XaC唶zy(Sr톽g! x7Y0DglԺ| jkPfGn\ }iYO5g¤bz](<>DxT׃”1 uV֪pϗÁ 8|~ w'xQï-"gLyZ Yw&ҧU 6&Ǖ0%>^cii8ܸz(F ϝO"[PRЬ`~NUaۉoPN\b}b*3&pO"/YIS%lj":^ohl&en1ɧ/˩ Nj /;!x?)6|wn;<K.T&8r Y䰎5nl#^y]RCSS;dJq)|ԼrxisTz!?٬тGmŮ:'4x^.w߀_{^-J"56+Y__5ñSKmB=o19$D8z3$\s? 3q_HʀF ՉG[m̀v)zOlwH wlָ~قy04 n2BE9co"Z}*ʆc!f=SZ)퀝!>o%DA=4|W19tZgKB*[N/wSYFOhh2Yc&R|QKxa!Ό"dCcNhOI2줪͛ⵉHήWۗэI~)%R u\Ξz=hd%tv)䁙DƊ4"o=EyH\G]M\7PM:TO6TK13*3$wVq)4ɀ>:HOVd8^&fO3#6"9#J5ed yh%15l$} 'WȆB]jp }<|3Cl*0{@eHJ3J7΀v 3xJcޢ?㬀4[^1f xm%A TlutWb얕k%i緣SQ=FR +Km%[Q&)O@9i5-{(Œw5脏Hnvi%da5+,JRe}LT;>  HLr~[Bl7$CTbljQX͖}QೲܱEޭWMpBO_wίD O}SN~89Dt%ϛL͝5mQf4BGsL=(<&fH HHˢ(ȝw$Ҥ7 K 5GF]`fRzM M]C#g&:^fETE>o0GwEp 57pkW5Ay@ A~_tB-i6]P?Lm.p3?)Iӽϖ|%jg~X_/֎j\SgD@ F el\P7Ǫ}ѱ 3h"m| t۱v6e8ԠZØζ3'65_}m~]5_׮۬]oR(z䟍26X [{|ZiLES#hN>✈($3-pJw^dmܡgLc,lGYF/b@pKLр\'4 $#qct1cDoHg^IH43[-"4B ^ŸY2w4ӾnQZ,-~֫ ͻk:Z:E ,L,뀫m,7jb,gwӘeb5)I0BJ%Ilat jƚص~i;t)~#btGL88DfUoVꙹ-FrbJ&s]:9Pu. )-yF|E!ڼxlj\o*gwNWUaD+2E|K@ "%;3g>WxĈR9#A;4ILFojXZXVg}R*,9/2VbE&1WbHjƐ&h-u߄8»P̢̳j DZ>/-vp|D;WL|u Ýyp#9~2*/"< 8D3}8fwۃ12,Ck_eDo"Z%2E4KzCM[ޤ|d.B.2f9#nnu/-4<fs+jM2dG.s?w Լ[4rZ֢8 q6Gܜ;i!^qy9M-R"or:|C:򊮡ثOq `T,͎\t]=-EJҗ/I߄UpUΓmu_W%MES'tA;Snh,Ę -`%> һU{e K?||$!zp}۠Bf6P4w"75UI\]$I \)C/;{t~ hs"~z)o>l3%}:r!Tg+QDW$cDx)/YaF?NB"ً2sS5!l@ȼqNUNK]:l^M *y;E㗅R&ฏO$^^.Pf|paO > ]}k=uhSr6^P}Ҟ {ɘW yVzZXS\kf{T,[ uJZ"φ[wt>X۳fQS%Y20ޔ㢥Ӿ೸ ?83t.,*$HMn]=nM;U(2^ւ4"}Ӌoi՛imz}ap93X8B!OHGQ#,W5RziFOh4XJDZKΎRRh\곛la.2 Z&lJD[YiSJ,MIwVi pJ,?J}ƦXBw8M2.J0+闖`-}xJ82K!%fЧ]O %Q2^_Xʜ֨vVKcgl3ވ݄2A)b3@K))^8ZV;^>"jS|ĺBQxMb_Y ti> stream xڬcmݶ%m۶m۶mg4vڶmΝmu+Sü9:ZGNJ1I iML\h,m\m9ehL] YHIL ],D ]LMMDL 999H <,-\(T)iS hz:[}q3w5s ljJbaJ`ficJ ,))'N@!.J njgdhCjdciL ciljlJI`fD`?9t&0$pv05fal;3X۸_rpkaWLoTbaOlg˿j{&Ʈ/_ZCK;gSbX:;z_i:[ڙg4NN&6abӝ_9X8ژA12i7?"igfOoL fo&v6&fPr.CP߱LG-FBKЎ!!g:| m-m:0hZQ]D?+`l5 UL[U-5v#ֺK_2cBزm犖%}yHkIe ]7=h.كlє(䋕cIֺ[2njю:٭JdO$xaA'sWO 󈴆[C|ҧ7g9рl Ԋ6kx͏3ZRJtkw"#u8qs\˭F%>[ qkNDל/qhLw؜uH(23UODVVl.uP~R7!U7!h(fE +wVCxvv@a|*P`P h|@*R&Bd4QW2ɓ[iz-OW&rxboaƲ-yaoE wXdԟ/jW 8.s&v$r~bC$E:lec?FAboi޲_3J#3lN"tz2_ m2pǎX_G&[X~-"bӽH<;a;nvCXiK该=)N֋{y~ VOq^Vs QC?hAJN ol #SP>@9@\RgpQi$ùr5UFL6g^Rg.Izׅ-UMdArECNx'E);G.>|&@ )Ў%/UJ7 FY{I=JNJu-Kػ`O/# 1ϙǢWlK&A%it ޺`X? .b txnﭒNn61/RuՏZ^RmG/ Aó2d\}}i Q 9khݱ1A4;%E!!2@i8_ᡧÇ*jG uMlXFJ_>o2e)?E%/} n nXZOȚ{I?I%8w_3EO:7k@ Th^cAw `K51MokͪiҜqQ (h[NH>~CcUy56_h^]'h@eQDY?p&:*iTIV$n `pg:d&b ݖ'_@8&fKtZCܖZC9ft~2oٚ8K:a*#%ֈpۡ`eXw9gc5DtpN{ETU MX\-/T9l4vCT]ieuS,lvK S EVXiY]qLnVgc%1GT0<+oDOFQLʄk`+K4 90Q_ELkuX;SYjVqʇ혥 E 5czh88[R%crjvc'8QXOS3|/Ai&VZ.&Lg8%&|z.޳t13+i8SV-i*NWK~ XV;u !g,ǔ]'qWDz '(YZD$s&muw9eh3^;8j,f HF:at5%_;-"B`m<#ܒdh;,qyiܰy 7ڇIT-&hJom@Wqg̟C(cV2sxOR͛?cً0*V5Fl' gCL1;e 24 v" vC|~A} ASz֭'uT+YIO؎o~'@b KqaNl]6*.hҚ-Nr gGW}!>!O;"'lj`ױhk?+Q/@Wɇĸ{,iL˪}i@5{q2&z1mn*M(ʘdLl)2װ윏3/_& V }yڶោsR1i: !C9֓5uog}B'MKh]5 km(À9]'.jtDڗE ߁"f ~5?z{5SIp8RL-þ+Zw[[WQAjE~/鰉 mqJ'4Cb b 3^oƙ:u>=vΜઓ}8cJMÇF$2&.HVc6j@ȸ/yR:c!>OcPekQvueA\`6F/ݪtm^0MLѥSJKR6Af(k Mp WO_=gD--ęK(*{w.;Rg޽⿦d~e2j?DKЋ+o>CMZ7*1d*h).NJLiI|vVKImD>oID ^Trcv>_rsJ* $ZNpW~y-S-1+WD`dKQ7vuR;sv+!uˌIX0fcZ?%κWO.un)рU+' _!nu.OynZlD <E*yH4 ,Ͽk_Cj[ҘOs+,J:5\؊:!fnX$Cv)$v;8>% ZJNV\.vNZgwd( 9Ź5'[=БMX@QNq}#o` 6k~`8I6K}t-xX x })HpȊn֙xn^BA ^_g=Rnjl  D/ 7"s윳ʂ, c&ש㼰 q:AU^Ky~MtT cKKt)Q{8!\2Uq!_s'5M?_nJ+dmQZA:|0RrP(/OAF1Xb Cq~!ّ֩97@~|e{}hv^(i:a==| 9`0jJj9Fm*WJK|Q2xϧ†Og3^R}/6u:ߴ~ڞ֭S(b97&w~Q35=-^M. 1RaOc6'GTsF\s*fX,)A ȭ3@AGx$XqX„q@W≶ꦜYä]}.9]NjXq㦼P Q/C 5=t%Kզ!304\+p .HĊvu&NXYtHl\8<9vpV o?Fd5klgmKT@Ws;dڟZ!@?CxK:nYEaNP+`fPyDa&5d9v1_"t/C @*f ,qƥco*dLd *æ -Ua ?k]p%dI?9Ar4orcpoT`9 =l7Ĉب4S覎)jIF8}#o*-Fx8e]Ct :(YsM@ܜ/w@:?4@,38uG|ubyN޷xH<&p7Ig}q8jv.p!6#.ϒݳMtYN7ך;ra&3.84lYTrrF`UsLW j񃳼%c]#Jzp?uX13ʓWbi4Z,=/^IfL<&Ɂ. *bW 97*"q s|}X,1M} lYմqD%Tޗ +4@oI)DFS vҹkm6A 0Xد<3YQDsv*30sjsTME9Ԓ^ |q2嫉{/$M*C$ƻ/+!ncTׅݻT)ך,n)ٮS e'Vba4_ly%0]+)^J\F&nN H~{h*/]V;S/R#ʎG-@Za#GM|w᷎Op A{' ̣ %M(2xe/S`Z*a *Ҍ+w-<*/w:2z%vGnZ!hlc 6+'\p>1̀tpeŜ7w¾ֽgPnx&,\)UVLٴXjOzH"AG0c9KK8S&nXe){wu<\V.XEN++%{nNR{kjeP;PiT_Wppv,ÏkSx4'ib_pܥ5mt8)ܶO[u!H&k+@򜍡\;XQjkpǁI-g5:hN{! -|KH,}[WLa8ρP85h gM "Tҫkqi5lWtWg=%GO炂c\|yfx$[o"ggԒhڻj>ѷkJ>dnץ}kxNCӔɔ=֗X||;tC NǙ3Xቭ.0j[iJB1"n` ޠ<upy,j6={6ڥYY^GOL@ګ^a,dɚ `HW 'tc Gc_Odȇx7@[_;Ɔwp G6ذiDoHMtѪVBW R٧Z=vdr&-Y) @.`7Z2l#RkoWA_ox^kI &:(UFtvu-,G)T!AQ7} jos Jђ)X3nMALÍmuRlGz;;)T0hu_u]8; LV_Ѡ?F+&>&ajh(D;I* 76ʻHȂqTƻ5W$iL8NX[Za{%\yE \` ؟H8o:Ϫ+~dָ2~fI1ւ GsiOoRfl E vLFcj[E@MFв@iXνJ?3&&BZGeO #3q{׽R3•98LV6γvஹ,ǔń,blɰz #)(6o0>.LjYMbufFf(xnI 64DUjEB6c?@w4hImi u^h|i.*~G<] ~TK#\[W'=7󓇄<݁B<(9PĘr'%3b@,9y9J_d݆QE8,7fѲm%SH ҌpDXBjMBS7.`*XMG[(6q/oԙPTM yᙎljonCE"9'mwqU&AǠDNO+P3>PU-Zm+yv  oTTe^` fLN, xm+/ ŽS䞖Xmb<'lw`Iz<(y{#XyP Gޓ`o%?1OV>~=r_6CRsz's@_wv-ᐕ>nl W98"2@&3t ֗"e=5JҰ]$#B:Pą5 ~PϐfwJYo<  ]b#࣊u0B2e~C(A؆J t* ,X)>?D}{}_3T%@cbajnu!Ig4uYP^{5 ]->Wo7xwөfi`Duyj.9oFD($>/Y& 7Ye/1Gq=ag懆oN$É3-k5EP:Hx{cã62aŀ*z섎`;΁,[o1Kڪ/˓%mcTz!bN󁘮W\vq9p}?y!;Kyޑ᜾͟۷/*UXTGՊC C`zO&G /Ī=\?ԍ@r' lJmcy{dS\2 ~^W3D9%sn6~$`C) ' 5S"a*oB$# }[/e!5XoBx 嬢!!A<7tOyա F3AjA侫,<ɟhtR69qWwO7GѤtF}6#lO$˧eJfQZb# vT_Axe@ؤBPQc"?b갏hdDqnWbUaZZ;#wIu݉x+tYyj^JR-#ql-8 73EܱV6)ڀַr>)Jhe {TNrk]o6g6h1yFl^y92y &ێXRS|]>Wf.,JMhgc[V9+|Cgc).u$q,T%wEҨ9)1۽ ZT#"{dfSw* X-e|nsӳ*zZ?}  @OH깃"!רa@zX]1[UTښ 8PV06 t&jNw!uwVd*, c+nGg=ךE݀E`G xc6KKTIrCv"=FihWM,8i˘6 ;048s]]?^IHRk $I*\uz|#Q+y)vq۔oyzb Vj;DʱGì׸`KKi􈐂 aQ8w{EJƊKLu^y6Y.؄?hSli ӟ~/x]C^jHy%`쬥 }2`ɼs֭@\BΔ j-/u[ٝhdMQd9˴iG<{շ9Ho//9AJAUcG~-Db{C FԖC; -T̢u#|N( {% /mTvf/O9_q [0u[2QwD*fay=g39-`Z9 [Dײ$܈gj:Z<16ǁ~}/x2\gGx]g Ɇa62{6*^P՗[\oBW<"(>+%SzTJTnl>+wLv"wS~? C^Q@_[5&9S,w3j}.+biQ(7pwO;YK29qəmFUm!bÆ@s,8urg"!ʧ[7G@<_H~\T̪σE 1rp`uT m 0>RJ _™7߉ x(/IrxM]̈}:+$!&y2cd)ȼrE#r)نb,!pB$&უ~+$Y}WO㩾Apc_.xl4-9)'2vJ  hu%A |mV1160}l_ژH5%samٔx¼@i&"ZXރ$-T̩3nC|&Eb5$"aBEAA?(n Z6\k 8K`mcR\o6MhvV !&x8q>k< ]`1 "Seqol  ,bfĀls\J Got%a.7fЩ"B 2ʅ k[M{I 7鈍\Zt@Ɵ QRE賸r%OCC7gߢuLʹ!I@^:_; y_r;I"q>lq̛UzE׎Z1 Sq?p9I9iڟ~Amu҄hhwD` ,``00y9[2RIE"! #Kki=ˡ>"?au~䑂ָn O`m4Vww~30CKWNMj748 ѦϾU}r2kf)A[&]8~V㯢;<3(GBELGk ޶U:ꎥGL7 U|#X'M1{G2 Ъ(pD?.1ԏMq:0lVOKZ&ş>1'펁hş~ #RϕO{,,JHӂr>Fe`XQ?c8pŋ/@Ty<>˰rYcA(O`-;_j6ʭO{\ ǕE0z39`t6z/;V0#FUHlEf kT zAYR# j+.r`D8.$Ӡ,P1-7 RETBDn(j@5oOR]׵ jIXXfU+w\uJ"_s6vE[E%_p/8[9]rA8=Ew:E-fQ{u!GA]6,2`wq?žUN_7J#(ዠIŞuQPȽ< [TE&z+@k1h ·e=mL\B}UĴZ,8^a 5 PRR19h%a p߉;Y!YGڠ\Ae=~^pml&A?ɑqx@%lN,:" 8 I0#bDn[\;4:F"GpL( H?Y_99hF.y:@|K{kJ]il:x%oDD#5‘z m]VQ8?όGEݨz~6-t=r<ٳZ%b9kX2۠r8ӳ\J(7[?-XB0)YFۻtM$x*_IK|~ &n~c@uEFMgG|DCu$C3"F=A7}C(x07Lcw Gn)b@6U[T@kmp-vYM`-`x?g,fX ^%OŮ2ax:$L U1$7GbQ]1/SoޘP0 mgqzI +D1ewQ &'JCy{BbX?LUZ zdG.&QL+" /(XIglϲĂs~-:󞿻L|LS).OQl9oe;T=Pk 5-[qoQx* UecL$D* .~sKVIuu9Ex -WNӫ,Gŷw!_D+PTKSN3L6VOhij`a=<(D ]9ir|?qyuH Y5+,8svMC%JV0A2-Z"M$0-ˁ͛T=[DDSP4poK{ِ킱ERLJhqهF{z~/AumK=<` ˧1 Ee֮R ;>_-iw-$K{% *'bO/2y[b? q$ߕhpn[.|?$\S5gz+m BWn9*J]*eB:KuS"Zѧ1=s5lgJ~d̪/";%gZf1oFP^lhq8:7? ;if~[ZI{9"CI3¤s1pN1#tYLrŁL^MڹZMζQ| Ȱ}@h} &8NX0N*V.; [ NXNuinoCJ[%Ax`{G[lovϠ[R:W8U{­t.O?7Yy iJ5k+BDŽUu D1eע|}GS ϵ!1betnϘ'&.uZy:#[ǖ8;m= GA!m}00Zwxjb(JewJ~m8VϺDtK1` Zz*tU 9Sw{&2ؠT1s[TԨIƚKk}ɉ쩲, G`=3<s0ŀ֞\N<̴0M7 UUÓlotDJOz{=n_=q1S[70 \)vLaTZ.acJuJ;~=dbE)6I[\%()pg;KtnW|\:F 좨;೫5p_P QM q1!PZZwGh[ҹħGIEjlfSwV=+x\>h ݍ0_Kջ|ۺs 4]|1,Oى&Ztt)6^Nr0#GaT1RpY\ǀ1;8%? a[li@ %U`{`gxC ;,w?h%vK9$QM85jg LMQV ,Vs(E_uLa}>JN7|njh9-rFT-fvDGuOSH@4JzEۭ{Ɇ9>B7" }yuZ(8doKܲ4A0L|ܣƾ}"GC>";!3 OL/T5i6D%׾n f&x ;3sWN~:Lh@3ƍT H̫267[j^x=RxbOJ*^zCi,:Q=6jLA Z.6V+=x/~oOGY)b]B4;?N]05g) -?k( r@&NvNok x5ke{3_'a$geE9ҁ?ec~вw]CXW g04cI'puyF^iwݟ ncp-P0DKϡO.dž{TXi ݪ$` BZUچލ$9@ps ~WN- bv%卧+@sjaZ?a1vWQdBؖaRɃ1+)|(H(ʞr]U72cJSRKD I8\DzͼSP^u@&"+U)l>NHH{ufI[i*8/D6xon% Ġ<(smP[`K uԜDN߼v#;R:/ى##j]ųLr Y#5XM M2)5(0L(u/Rl( PvɵPNWS\EbP7^e 8`-0 $ ^ixהC:B-R~!/X+Z9tga*-D2o^IB{,toQW~IN,}0T2fHC3.ҏڸǞ(Ҍ5Hp[{kz-2|V*4(Q^ܭ'-üɑH0 !$w5c,y`[OC&@ͪ0|ת3 G33ʯ^g=m]WȍF%LrBR:'\Vbā.f3.LD&`_7#CMcTӄK)Nrn!yP9gq_*G1fA(o%W>{ݟJKߣ 18`Cj~1tDJ?}0:jG˴&u0T ּ~Ƙ&[jxnpK w;U[k J[>5cV}9lX&"=RG$1ud^%?v#]@rX_)qdoH9ְ}v'H܊7 TFl/V~uo?~]j;wH?PluJaŐ Q:WcLk PA "(]*͊3 +L08d'Xp!C6ΎhznBnk߻4vֽpQY2g [4-?ץ@k,S:.IS3,zR^tlM1&VEN!v"Csz,tͷr5T7FSng7rR=v~(qyOhH+5 5\KsgNjN$umGXA?h(jNz9ip1"BavܵzT XB|yծdT=](lU,c) _/ۜr?kA@ʟC[r&]ФlH#i:L=4iA^~$7E$l9i?aS_`HsZ0Xr֩l0v^ 5Xs [5Gь ?עE݂{y}):l^)Gr\prs,2f@3fu0:rZ,ե69%&h:1D4`zrE n6~=鬈sGIC&pSepAz6 tB m0Gp\}JWq񣮸y-iXQz!tPB8Puޣmf1q.<èP }֯b7gImAU) endstream endobj 140 0 obj << /Length1 1647 /Length2 7868 /Length3 0 /Length 8712 /Filter /FlateDecode >> stream xڭTeTے`иk;ݚF 5@p;` n 2$w{y?wjW:NSkKZ,r08;7@ bo W k]@(Šv -2`-((A9z:Cm&M=fVVY~,<{#O4?k]P+ nǜ cnkyQt[:s; 3XX08`ǔ> [G}sBՀמ<.qT  p  @={?9BQ!vn^޿9Rcq;C!Gc0mA`˿۟8 ^/T=̤ 7O ϫC?D:7LF#Y#-8qi \ ;#= yH86%=^I?*cɍXT )Xj~[Q;.t9xEegؑC񖖹+ou'Ӵ+@/Ѭ!֨i-*xKGW~n~t>hVZy WC}'(]_Y3酁> pOs=O7~WLw7w4)0*?qcd%Z.siQZ@(Em\%{P1n .uV%67}$,o9Nil=+ae&tLK)W]_2hdGUErWM,c8ܡ "]Bo/AϽb~\:Ki~ҲۯZ*,]؊jA"zFN[XH2?H^l~hd>SdLzAHϴE!lh+\ݮ\y#;qޮOOߞ;.pQy/VJu i=ht㒥5CgnTÔH4NH;jT ?,x:Ub7*^Gv;%v3ǾIP{ rHPδLl|SFqo'̕;;>߾7ǗMH<<7ha>adR~Y-X;ltNF٥jZ&B,kSqCuqtՑb$'S  X9.ܲm23s57̨ݤK5ps!CϩeHX(#VqR$<29ßsm0}f բ85|ԗ&ZU> k2,ZzhzA.Znlm蟽`B4*am[$+>P}5WKF y/|ڂ|!wAH,7(VL҆S\b..+_pU/hT:n>N(3J U圏T`sZ>-^)Xs*c`Q3tlg_);-6=T@ y̯bF"(Usg&a2Ff,&d?T H_hݱ+L |7?hbZq V \G\z, qw?q!ßZ#Bޟ 錜& }v ni^5|%&fGe&j}춘fv+^pYm!6U=%.%l갮g$B"y?NɆEmj`Ɋ-Ym.3~};Ott}Lp-4AMbWuKeO*9F0dRIo%X8iuygE3Thz5#`:ϞFaȩ9 -/a)u<}Y6W_@$)wu8"C+/*~.Z3a'Օ;W[Tllc>v1 e%>.0w6\,az;"6v' KzÌ8 }AԀ?{53bf>>76ט4FOMf ")j:i7w[7J$u'O8jR@\ia5?Ig1r㦚6_F3~WN"?VDA lxQM-s1yf./[l,t('a<=4,~PY'BGը*xz_!!*QQ9®*2c cQX)aYm6Y6;RBi]~BGpVB3qlض;Gc'OD Mg"*؎'agP(/W |+؟-:ώk;!ՑQs% Z*Y~Z L$k2ʛ|SL_gM=1Ɏj)WU`~';A_d$c8}61|!qLNSBCdJuCf/MȀcP@F@zuH!-H}6<'fjW+E(;NFn ?71U_Թr2{|$. 2l=mlFݨENdZ-iAA{Ơ̗ øW.l3f7Jo$o9C :mփ<.皗1CrX0 | 5>m9A.Na\9ڇuxR_x>l3xh]p!O>oL2%peQNEtCrQi+E(y6'$: L<r [tuHL$E9Aps$vkШXKd*0SdD#tJs&tw&R*z3X K%6Jd9U#oGfˋ^Sf.v' 6adtj5c+./t''XЪZx~LfkDkوFaR^JKie޻~)(x@oњIN+zGFi=5gQUǔ '-j*UocG֬JfR$2;{&iG9z|k+d{(krw2ZӶ>/By$)~.ˑ6ꆜn]s@<+=1NcA@Af bCT@B"S(>(_pa_#Ģ"lX~*4`GgƄ%ҊHiSӫ=O*!t`ޡKOx8_~%<Ť;Kxj[ I'V~+D: mhVk$KGhBa<*| g懴_kEm@$#K tϊryEn8M};Aq^韤T/m3Rk<NK1LZF@/Xmq҃ڡ[u>@}à$Ғ_鲽LS#l{WYۀ\,=Kxvu}&Fϧ]B C3HUVsB~ u#Я eO8LUd?$s\}Oi (XYAυI[zWy)ڃsJ!壱C GEji#@DK_T{{eaڠ: ⳨K (L5U;k:|%7M[,_XCACIq-%CC"S]"o^w,UpcɿgХ p8Y_ 7xG{t{ *ӪȚc?|H(iqϗFux7x/m &Qqp|[›4xRNELY-;`\(ݵ;UIWІ:vXyZYU_JT\l*!9JJW.1)3<99Z f4V+UAieybhs+P*W5$(t]c4"oGM1ͯ]4A Ɍ?xό# 8|LY|D=VdR3T'T{ʽƵ1a棢+x|v`!"s8Ž n=bIߋDk]^:BC)UJw/,tjXxʕ)03O Hߝ[u]mτ$]޼gG}A,y/K\-]l=}s5/ؠ+=䣜+I+ǑW^@7/㗝et޽-yn `TZs6,E,;|)p FSM*KYB3܎.DгT9պp\0y }3ZbpjLPcMm-5,(ѐ7`4ҋE%uQszN9a~'2Ȑv.tIE_iͮu8LuVY#E[rMCד=,6^)Uc.bh[m6.Gg=;F❹Ӿywt=C%o{7jF }_V+vP#^D\::oTy,S]F3qD`V,BVPѫQBR+ww>wX^87 =c|MXv>M {2|:+v_)gђeɚ{P#JaXcg 54 z# sO;52ޣ%=MagbNg?U{b +\g`q~u9JSҙ_[{^GHXlصO>D:ΎK= E>6,TՑoՆݹyj>?Q6X_M0͚CaQ5qZ$f`I xs`Yc$UJAAdQqy 1bX3*M I?B's YTƊo"HCݛ*c(9NI;i>?i>tS? NC*A5@xg7 9a lF6Qё^ϒK4pԪg_K#0e34s`&'bp[c6#YW8η uwf.69E?h>MYY Fv}G4$oNɉ4bMZ>è#SD^yդ6$ scyU UTԷ2ɩ1z$g/^ pTo8Kr6bEef~N(.\vՖb6UrƷ\r V{w򝟲{ 9ΨxJJ}fnȶ j%}KѾ-l_X* _īD]y[ 41CD,!fn"ݺLc̬A@wu5b;*Kaȇ""+pA;c=c 1ۙ9ZπN9lI=Q]2/ԁ|᥃Jlf@{ѦqQH#46U>כ13蝢97^{/>sdrF]fky{[2RVnpq i:ʌ z}"똈Ȝx!4fm6f\e`[7G6 93"Nf+ҭYεytsy=[#cYC匨8l8$E 3@1hg,x~J~r96梺bi[!Z̯M!Sй<=z;$& FR$p C"#o4rѹ oo7β01ħ<_V:ˤᅏ$)͟zc>c=]Ѐ))>uo%fZ8H![,יw9ލ ^yۖx+ӝAO/K@&1KAY)`mg%zX‡#J0(Le6UIr1HSQV~?(-[#̵ Q^k]BR;@|yAgql endstream endobj 142 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS >_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZKq endstream endobj 143 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw%g43>\ 6 EJ78 1{~`W(-;]%=xe_,b+-O;q\L}UI--=BKE1p[! Mߊyu>.N5K)Wb٬8i[_uʕMzQ)V(Txޢjy!Z2P="Zd0\ÃGR\).2*Шa!U,H`+j.5Nα@VK-x%3%AYӀzΚ>kP#5m0Woþj.ZT$X/)n)#Wo(oRZ $Kp4Z-b\1ܰJ P"GXQi/8k^Zq:Zs9dB )sL-7xJ`aɽ)f$1 dъcCZC<73JgznHȰYɚTa,_-O87}KԴܗLloK+gJ.GZyVc48Wt]:P~`rZq.n1] S/Pu7Ue:?&?!d&1yHn5)yғBx#1ޞ]Go׏M?X endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 815 /Length 3511 /Filter /FlateDecode >> stream x[nG}G Vۅ1DeڔKJ%f,Z#YKWo&i!*+XNDFf$2-cNȢdR0iɀA+*I1c[ `E$ R1͂uâLQ bR{f0H9 6-@HG9=.0MbT f"br̦@30xQ:l``8@rR)`#*,, sTanȫzL4T(z59 Q)aZz] VfM|qYrۀήY//wC2qA +I;&,S gz9[7ȰL WH5GtRdB * K)y ʬOggʟ?|3,la3b4UL"$W9ǀJ>WM޴e-RkXE|SV˩)2ͣc_uVuj8"pVGyUoG KB#y W;ޖ-g,-sfQ-gIȫŰQ4X3הJK*倿Ԧ|^$ї*k2^ZIFPOVBMuOd^.#5d1gϋiU )K~3˿<.p1_yU >·_ |8aU)g0Uqga(*o|Eŧ70'z|X<:N-se* `CQȊVέN}],fE6-L}U99}};wwW})yݿw~s+錦8K)nmź[GEf] W0Pcps+gg2eՃzw3vYM[;X*f%yQ&4-uRhc}$Y:Û_tټ:g׀潏ʫvnؒg/!/D}.Z/0:C+: :cR)ﳰ.fM3Pub6L3U.eȩ&6out%9|9KN)0ΥV *d2ۚ,LG]#(,KVcl^bojuGH{%FG!!? PH5ѩe2 ;'uҦ!ShLݥ갗 Y\y.b9Mv+QT"iR} N颷6ij|jn-8~*9nHeBi& ?QiG_ۮl32IoR#hЛk?G #n^}< G"}GGPRNO:1dXb~ _ߍiʡ)\v;[߈Jp-Q)[S۾QIe sGO#R4?3"MQPH'{r)(Iٵu׏IX߻b&w'sI)MC2Ȟ%)I -|}&īm4I@+]ЬimN,k%ikZ͵}tbR$_jb-=*YyVֹoի)0oT[7JsiB?B™}W7 dQHj@*>fѲZ)J^UXLߤ:;|yzR y#OJ"S"k"tҼHvɤ";~@Gv)|)x1ʻ2Ǔ_.毦Ӄf]8I(Դ@\g/eY^F$S/s#/~_#Sos~|>hߖgDp:–|8s~M>3^4a~]~)0 巿^F|'|RN >;~G5iT+fߍs^s:3> ˯|>緼W͊W_L|8 7)fcjco֍rTn7A7O1(љTc֠ی|>,pjٴ5S'#_|f:*f6%SL: Uqu9j`0.kn' ]?P%!$VYua@Ié]"*G٪PZN}F4С\`:@D/.>rC.J&`s H8JiCX& ݻ4qI*P V4a劅6iUm{x\FŦc;і)r][wZ߾x[lKe_/g_z=.7 = S_mB;)| =ϠŊ̖elJ!%ovK{!Me:X\CJc:RȨyRNբGZ<5]^|޵ )",D8>¢^q~D00uK>71nɥ_v 3 ׼hyEY?H]ޱw};}7W;8Z۟3ɏ~8?뛋u:C}~TNJ endstream endobj 145 0 obj << /Length 664 /Filter /FlateDecode >> stream xmTMo0WxNB+8l[+ML7RI";onDo3ތ?n~<&yݽIr/ŋ=wWIG77eW]Nm=ij몝m-m3Q/oMq'}vIֿ/ ˺sӵBK)ɱn;A9n1vAxHŢn!XN4$>΃=mc-bB}hjM^Uwww BF˥푊QM]1ʫڞCeݡ}BʥXl6ȶ5R^clFrJՒk ;%9& }8K|y091x&GϹPT#Z%)&!lRvDr䨑\#G|bǚHUʸ4'22| ^Dm=^sS<cLUي_3;S}Ш2?}LN=8g,u..Q/)87l _??q Zqб<4 4谡Цg~ѧ,I 4sY^y?4hv5O#ܵy7S4 &*s0P.9S0׬p~ne8|p\ouqn6|kq_^~& am endstream endobj 147 0 obj << /Length 665 /Filter /FlateDecode >> stream xmTn0CB*D rضj^SpH ;olvR3ތm~<&yݽIr+œG۞m=ģ몝=b[ntC۶z;vʾ6%:svI>77 N!._ M u+$bEw!y1 vxHŢnSX: {Nm]XNDW[״bݹ,,-FVL"~C۷6ZHfٶ )/16X9CjIxļ$Bi#cΓ@l MDϹPT#ZC%)&!lR&TG5k䨑}WLԌ]Uz@K~bo#?қHљ<-+`q}ʂbI2_́Y_%X?Na~ZjGcrj59c+ϳEHDܰ%~WLz9ܓ2ƛFϲ`'I&se?zyxмj5F̹k#niM7>T20P-9SA˰֬p~ne8|p99[ڴw=ߣ& c endstream endobj 148 0 obj << /Length 665 /Filter /FlateDecode >> stream xmTMk0WhFG*! miʲVZCcYy#9햅ļ{3񸟤e&Oo]&C]]Mq>zwt߉Ǯ)n.pCx?nڽVgx=itO"i [\l\WM}'ԭ̚t4pXeȉeU oq yM\-CnCW_Ey}wP dZz891euB)] W-\v\]~[S!8&+Zce"'2Ɍ5I@|"B2AQhSlLء28a}ɑFq5ҍnnbfǮCG= Wܢe$g;A,:sx l=NOTƘ$0_س/vЧQ%~Zx pX2]$^qnaK??q FqMyc0=) &l(mi,3|d &\c ]͹&ӈ9w{d-tx\ \cΜekqLJs?<@>qhx .׷8wl~1V<*m"mmDa endstream endobj 149 0 obj << /Length 664 /Filter /FlateDecode >> stream xmTMo0WxvB+8l[jWHL7RI;onDo3ތ?n~<&Y$ŝK_IsE77E[^N\5sߖ;7|[lzmS_*7F?h3΃;mc-bB`ew\_7oK׽;(2Z.ETz}ܟ~o9V^MVK7-\f\S}[S!pcSs|TXo1/ȡ aeuC> stream xmTMo0WxvB+8l[+ML7RI;onDo3ތ?n~<&YվI|/ŋ;t硋nn\3<:Wj\=?-wn6pGۦ|Tnʽgxté7~qzxKlqrnX7UޞMjuSAxHiQ,'wͱ 1}hW7q{UEݥ-rG*F>NNL7u]tNhWS;wE )b,#TTHy=)9>*QKr7P:MȡQ^s$LD6aȑ*s.$S56`>ƄmÁ#TL 5kd}WXssc*zRh/#? bE$L|ږ8^y>eSQc̯bV̯cNa'_OAJ195kd3EH@8ܰ%~As*=F 0`{RLPh33Y$LƹǬ oqMsȼ tx\ \cΜ-eksL ?"@>qhx ׷=l~1֍>*]!MBa endstream endobj 151 0 obj << /Length 665 /Filter /FlateDecode >> stream xmTn0C6U@"mTt@;olvR3ތm~<&YվI|+œ;t羋<]3;Wj|{}[ mmᆂMv{Kt=c_~B?zxoBS6wBJ)X7UaMuSxHiQV,4$O;nC-bD/OCnC_n^ѻs׽9X2Z.ET~{~ʶrn_~߼h!R,6ew*ؔb%k e+Kӄ$a"1x*s.$S56P>Ƅm„A Fs 5577vرϾ+uaя6R:!,əCxg+ѧy*JcL|*m:fvuiWUꧏɩ\g%<Ϛ"sÖ0_:3x0kjhyIYx0aCnOg3$cx0<<v5O#ܵu7A 6*sZ ZcΜ-ܠeYksL ?"@>qh|tngk;dGGM@c endstream endobj 161 0 obj << /Producer (pdfTeX-1.40.22) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() /CreationDate (D:20231024170036-04'00') /ModDate (D:20231024170036-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) kpathsea version 6.3.4/dev) >> endobj 146 0 obj << /Type /ObjStm /N 20 /First 159 /Length 795 /Filter /FlateDecode >> stream xڝ_o0)l*8vRi׍BEKvCf%aھNI ] (Q)N | { PF8AC_!]_Ch[28HA}C1ٙe?Y*(83VO_bJw:TeT:Ie'FCԇI] 0ϲ{A!Q-ŃhOhkQRSonMxf[m)9X{t &X-YCX񬣛^`Ƌ~NtWmEJK \?p_ wuJu9y|ہ͂6nXT!d>Բ/b;Q6wkkIga={ѥ3 qȿ"'sKcaLSar+lu*jy(n] <2545AB40822835C7650F76D40AFA290F>] /Length 444 /Filter /FlateDecode >> stream x%oa{*3UmŠZLZպխ{څ5 <XtR"H$M,-}sy13̂)}`D 2R5ZibXK!'_s, GDGGFoCUǡIVW!/Jh0 V@sʇF^xZ uv*^k6Ȇڼ ZU6Z>3O$x `;K3߽ Gz8鵽%! K!s} =CB?0# Ū7 !Ps48  0a.)tu .+LO{੢0Uekה5W<]W֓tCY^Kj&mlbn*ic5nXKwӘ #include "dirichlet_fit.h" static const R_CallMethodDef callMethods[] = { { ".dirichlet_fit", (DL_FUNC) &dirichlet_fit, 4}, {NULL, NULL, 0} }; void R_init_DirichletMultinomial(DllInfo * info) { R_registerRoutines(info, NULL, callMethods, NULL, NULL); } DirichletMultinomial/src/dirichlet_fit.c0000644000175200017520000000564414516004340021470 0ustar00biocbuildbiocbuild#include "dirichlet_fit_main.h" #include "dirichlet_fit.h" SEXP dirichlet_fit(SEXP counts, SEXP n_components, SEXP verbose, SEXP seed) { /* counts: N communities x S taxa */ struct data_t *data = (struct data_t *) R_alloc(1, sizeof(struct data_t)); /* inputs */ SEXP dim = Rf_getAttrib(counts, R_DimSymbol), dimnames = Rf_getAttrib(counts, R_DimNamesSymbol); data->verbose = LOGICAL(verbose)[0]; data->N = INTEGER(dim)[0]; data->S = INTEGER(dim)[1]; data->K = INTEGER(n_components)[0]; data->aanX = INTEGER(counts); /* results */ SEXP result, elt, sxp, nms; PROTECT(result = Rf_allocVector(VECSXP, 4)); nms = Rf_allocVector(STRSXP, 4); Rf_namesgets(result, nms); SET_STRING_ELT(nms, 0, mkChar("GoodnessOfFit")); SET_STRING_ELT(nms, 1, mkChar("Group")); SET_STRING_ELT(nms, 2, mkChar("Mixture")); SET_STRING_ELT(nms, 3, mkChar("Fit")); sxp = Rf_allocVector(REALSXP, 5); /* GoodnessOfFit */ SET_VECTOR_ELT(result, 0, sxp); nms = Rf_allocVector(STRSXP, 5); Rf_namesgets(sxp, nms); SET_STRING_ELT(nms, 0, mkChar("NLE")); SET_STRING_ELT(nms, 1, mkChar("LogDet")); SET_STRING_ELT(nms, 2, mkChar("Laplace")); SET_STRING_ELT(nms, 3, mkChar("BIC")); SET_STRING_ELT(nms, 4, mkChar("AIC")); sxp = Rf_allocMatrix(REALSXP, data->N, data->K); /* Group */ SET_VECTOR_ELT(result, 1, sxp); nms = Rf_allocVector(VECSXP, 2); Rf_dimnamesgets(sxp, nms); SET_VECTOR_ELT(nms, 0, VECTOR_ELT(dimnames, 0)); SET_VECTOR_ELT(nms, 1, R_NilValue); data->group = REAL(sxp); elt = Rf_allocVector(VECSXP, 1); /* Mixture */ SET_VECTOR_ELT(result, 2, elt); nms = Rf_allocVector(STRSXP, 1); Rf_namesgets(elt, nms); SET_STRING_ELT(nms, 0, mkChar("Weight")); sxp = Rf_allocVector(REALSXP, data->K); SET_VECTOR_ELT(elt, 0, sxp); data->mixture_wt = REAL(sxp); elt = Rf_allocVector(VECSXP, 3); /* Fit */ SET_VECTOR_ELT(result, 3, elt); nms = Rf_allocVector(STRSXP, 3); Rf_namesgets(elt, nms); SET_STRING_ELT(nms, 0, mkChar("Lower")); SET_STRING_ELT(nms, 1, mkChar("Estimate")); SET_STRING_ELT(nms, 2, mkChar("Upper")); PROTECT(nms = Rf_allocVector(VECSXP, 2)); SET_VECTOR_ELT(nms, 0, VECTOR_ELT(dimnames, 1)); SET_VECTOR_ELT(nms, 1, R_NilValue); for (int i = 0; i < 3; ++i) { sxp = Rf_allocMatrix(REALSXP, data->S, data->K); SET_VECTOR_ELT(elt, i, sxp); Rf_dimnamesgets(sxp, nms); } UNPROTECT(1); data->fit_lower = REAL(VECTOR_ELT(elt, 0)); data->fit_mpe = REAL(VECTOR_ELT(elt, 1)); data->fit_upper = REAL(VECTOR_ELT(elt, 2)); dirichlet_fit_main(data, INTEGER(seed)[0]); elt = VECTOR_ELT(result , 0); REAL(elt)[0] = data->NLE; REAL(elt)[1] = data->LogDet; REAL(elt)[2] = data->fit_laplace; REAL(elt)[3] = data->fit_bic; REAL(elt)[4] = data->fit_aic; UNPROTECT(1); return result; } DirichletMultinomial/src/dirichlet_fit.h0000644000175200017520000000026414516004340021466 0ustar00biocbuildbiocbuild#ifndef _DIRICHLET_FIT_H_ #define _DIRICHLET_FIT_H_ #include SEXP dirichlet_fit(SEXP counts, SEXP n_components, SEXP verbose, SEXP seed); #endif DirichletMultinomial/src/dirichlet_fit_main.c0000644000175200017520000004364214516004340022474 0ustar00biocbuildbiocbuild#include #include #include #include #include #include #include #include "dirichlet_fit_main.h" /* re-map to R transient memory allocation */ #define calloc(_nelm, _elsize) R_alloc(_nelm, _elsize) #define free(_ptr) (void) _ptr const double BIG_DBL = 1.0e9; const double K_MEANS_THRESH = 1.0e-6; const double SOFT_BETA = 50.0; const double GAMMA_ITA = 0.1; const double GAMMA_NU = 0.1; const int MAX_ITER = 1000; const size_t MAX_GRAD_ITER = 1000; static void kmeans(struct data_t *data, gsl_rng *ptGSLRNG, double* adW, double **aadZ, double **aadMu) { const int S = data->S, N = data->N, K = data->K, *aanX = data->aanX; int i, j, k, iter = 0; double *aadY, *adMu; double dMaxChange = BIG_DBL; if (data->verbose) Rprintf(" Soft kmeans\n"); aadY = (double *) calloc(N * S, sizeof(double)); adMu = (double *) calloc(S, sizeof(double)); for (i = 0; i < N; i++) { double dTotal = 0.0; for (j = 0; j < S; j++) dTotal += aanX[j * N + i]; for (j = 0; j < S; j++) aadY[j * N + i] = (aanX[j * N + i]) / dTotal; } /* initialise */ for (i = 0; i < N; i++) { k = gsl_rng_uniform_int (ptGSLRNG, K); for (j = 0; j < K; j++) aadZ[j][i] = 0.0; aadZ[k][i] = 1.0; } while (dMaxChange > K_MEANS_THRESH && iter < MAX_ITER) { /* update mu */ dMaxChange = 0.0; for (i = 0; i < K; i++){ double dNormChange = 0.0; adW[i] = 0.0; for (j = 0; j < N; j++) adW[i] += aadZ[i][j]; for (j = 0; j < S; j++) { adMu[j] = 0.0; for (k = 0; k < N; k++) adMu[j] += aadZ[i][k] * aadY[j * N + k]; } for (j = 0; j < S; j++) { double dDiff = 0.0; adMu[j] /= adW[i]; dDiff = (adMu[j] - aadMu[i][j]); dNormChange += dDiff * dDiff; aadMu[i][j] = adMu[j]; } dNormChange = sqrt(dNormChange); if (dNormChange > dMaxChange) dMaxChange = dNormChange; } /* calc distances and update Z */ for (i = 0; i < N; i++) { double dNorm = 0.0, adDist[K]; for (k = 0; k < K; k++) { adDist[k] = 0.0; for (j = 0; j < S; j++) { const double dDiff = aadMu[k][j] - aadY[j * N + i]; adDist[k] += dDiff * dDiff; } adDist[k] = sqrt(adDist[k]); dNorm += exp(-SOFT_BETA * adDist[k]); } for (k = 0; k < K; k++) aadZ[k][i] = exp(-SOFT_BETA * adDist[k]) / dNorm; } iter++; if (data->verbose && (iter % 10 == 0)) Rprintf(" iteration %d change %f\n", iter, dMaxChange); } free(aadY); free(adMu); } static double neg_log_evidence_lambda_pi(const gsl_vector *lambda, void *params) { int i, j; const struct data_t *data = (const struct data_t *) params; const int S = data->S, N = data->N, *aanX = data->aanX; const double *adPi = data->adPi; double dLogE = 0.0, dLogEAlpha = 0.0, dSumAlpha = 0.0, dSumLambda = 0.0; double adSumAlphaN[N], dWeight = 0.0; for (i = 0; i < N; i++) { adSumAlphaN[i] = 0.0; dWeight += adPi[i]; } for (j = 0; j < S; j++) { const double dLambda = gsl_vector_get(lambda, j); const double dAlpha = exp(dLambda); dLogEAlpha += gsl_sf_lngamma(dAlpha); dSumLambda += dLambda; dSumAlpha += dAlpha; const double lngammaAlpha0 = gsl_sf_lngamma(dAlpha); for (i = 0; i < N; i++) { const double dN = aanX[j * N + i]; const double dAlphaN = dAlpha + dN; const double lngammaAlphaN = dN ? gsl_sf_lngamma(dAlphaN) : lngammaAlpha0; adSumAlphaN[i] += dAlphaN; /*weight by pi*/ dLogE -= adPi[i] * lngammaAlphaN; /*weight by pi*/ } } dLogEAlpha -= gsl_sf_lngamma(dSumAlpha); for(i = 0; i < N; i++) dLogE += adPi[i] * gsl_sf_lngamma(adSumAlphaN[i]); return dLogE + dWeight*dLogEAlpha + GAMMA_NU*dSumAlpha - GAMMA_ITA * dSumLambda; } static void neg_log_derive_evidence_lambda_pi(const gsl_vector *ptLambda, void *params, gsl_vector* g) { const struct data_t *data = (const struct data_t *) params; const int S = data->S, N = data->N, *aanX = data->aanX; const double *adPi = data->adPi; int i, j; double adDeriv[S], adStore[N], adAlpha[S]; double dSumStore = 0.0, dStore = 0.0; double dWeight = 0; for (i = 0; i < N; i++) { adStore[i] = 0.0; dWeight += adPi[i]; } for (j = 0; j < S; j++) { adAlpha[j] = exp(gsl_vector_get(ptLambda, j)); dStore += adAlpha[j]; adDeriv[j] = dWeight* gsl_sf_psi(adAlpha[j]); double alphaS0 = gsl_sf_psi(adAlpha[j]); for (i = 0; i < N; i++) { int dN = aanX[j * N + i]; double dAlphaN = adAlpha[j] + dN; double psiAlphaN = dN ? gsl_sf_psi(dAlphaN) : alphaS0; adDeriv[j] -= adPi[i] * psiAlphaN; adStore[i] += dAlphaN; } } for (i = 0; i < N; i++) dSumStore += adPi[i] * gsl_sf_psi(adStore[i]); dStore = dWeight * gsl_sf_psi(dStore); for (j = 0; j < S; j++) { double value = adAlpha[j] * (GAMMA_NU + adDeriv[j] - dStore + dSumStore) - GAMMA_ITA; gsl_vector_set(g, j, value); } } static void neg_log_FDF_lamba_pi(const gsl_vector *x, void *params, double *f, gsl_vector *g) { *f = neg_log_evidence_lambda_pi(x, params); neg_log_derive_evidence_lambda_pi(x, params, g); } static void optimise_lambda_k(double *adLambdaK, struct data_t *data, double *adZ) { const int S = data->S; int i, status; size_t iter = 0; const gsl_multimin_fdfminimizer_type *T; gsl_multimin_fdfminimizer *s; gsl_multimin_function_fdf fdf; gsl_vector *ptLambda; /*initialise vector*/ ptLambda = gsl_vector_alloc(S); for (i = 0; i < S; i++) gsl_vector_set(ptLambda, i, adLambdaK[i]); /*initialise function to be solved*/ data->adPi = adZ; fdf.n = S; fdf.f = neg_log_evidence_lambda_pi; fdf.df = neg_log_derive_evidence_lambda_pi; fdf.fdf = neg_log_FDF_lamba_pi; fdf.params = data; T = gsl_multimin_fdfminimizer_vector_bfgs2; s = gsl_multimin_fdfminimizer_alloc(T, S); gsl_multimin_fdfminimizer_set(s, &fdf, ptLambda, 1.0e-6, 0.1); do { iter++; status = gsl_multimin_fdfminimizer_iterate(s); if (status) break; status = gsl_multimin_test_gradient(s->gradient, 1e-3); } while (status == GSL_CONTINUE && iter < MAX_GRAD_ITER); for (i = 0; i < S; i++) adLambdaK[i] = gsl_vector_get(s->x, i); gsl_vector_free(ptLambda); gsl_multimin_fdfminimizer_free(s); } static double neg_log_evidence_i(const struct data_t *data, const int *anX, const double* adLambda, const double* aadLnGammaLambda0) { int j; const int S = data->S, N = data->N; double dLogE = 0.0, dLogEAlpha = 0.0, dSumAlpha = 0.0, dSumAlphaN = 0.0; for (j = 0; j < S; j++) { const double n = anX[j * N]; const double dAlpha = exp(adLambda[j]); const double dAlphaN = n + dAlpha; dLogEAlpha += aadLnGammaLambda0[j]; dSumAlpha += dAlpha; dSumAlphaN += dAlphaN; dLogE -= n ? gsl_sf_lngamma(dAlphaN) : aadLnGammaLambda0[j] ; } dLogEAlpha -= gsl_sf_lngamma(dSumAlpha); dLogE += gsl_sf_lngamma(dSumAlphaN); return dLogE + dLogEAlpha; } static void calc_z(double **aadZ, const struct data_t *data, const double *adW, double **aadLambda) { int i, k, j; const int N = data->N, K = data->K, S = data->S; double adStore[K]; double *aadLngammaLambda0 = (double*)calloc(S*K,sizeof(double)); for(k = 0; k < K; k++) { for(j = 0; j < S; j++) { const double dAlpha = exp(aadLambda[k][j]); aadLngammaLambda0[k*S +j] = gsl_sf_lngamma(dAlpha); } } for (i = 0; i < N; i ++) { double dSum = 0.0; double dOffset = BIG_DBL; for (k = 0; k < K; k++) { double dNegLogEviI = neg_log_evidence_i(data, data->aanX + i, aadLambda[k], aadLngammaLambda0 + k*S); if (dNegLogEviI < dOffset) dOffset = dNegLogEviI; adStore[k] = dNegLogEviI; } for (k = 0; k < K; k++) { aadZ[k][i] = adW[k] * exp(-(adStore[k] - dOffset)); dSum += aadZ[k][i]; } for (k = 0; k < K; k++) aadZ[k][i] /= dSum; } } static double neg_log_likelihood(double *adW, double** aadLambda, const struct data_t *data) { const int S = data->S, N = data->N, K = data->K, *aanX = data->aanX; int i, j, k; double adPi[K], adLogBAlpha[K]; double dRet = 0.0, dL5 = 0.0, dL6 = 0.0, dL7 = 0.0, dL8 = 0.0; double dK = K, dN = N, dS = S; double *aadLngammaLambda0 = (double*)calloc(S*K,sizeof(double)); for (k = 0; k < K; k++){ double dSumAlphaK = 0.0; adLogBAlpha[k] = 0.0; adPi[k] = adW[k]/dN; for (j = 0; j < S; j++){ double dAlpha = exp(aadLambda[k][j]); double lngammaAlpha = gsl_sf_lngamma(dAlpha); aadLngammaLambda0[k * S + j] = lngammaAlpha; dSumAlphaK += dAlpha; adLogBAlpha[k] += lngammaAlpha; } adLogBAlpha[k] -= gsl_sf_lngamma(dSumAlphaK); } for (i = 0; i < N; i++) { double dProb = 0.0, dFactor = 0.0, dSum = 0.0, adLogStore[K], dOffset = -BIG_DBL; for (j = 0; j < S; j++) { dSum += aanX[j * N + i]; dFactor += gsl_sf_lngamma(aanX[j * N + i] + 1.0); } dFactor -= gsl_sf_lngamma(dSum + 1.0); for (k = 0; k < K; k++) { double dSumAlphaKN = 0.0, dLogBAlphaN = 0.0; for (j = 0; j < S; j++) { int countN = aanX[j * N + i]; double dAlphaN = exp(aadLambda[k][j]) + countN; dSumAlphaKN += dAlphaN; dLogBAlphaN += countN ? gsl_sf_lngamma(dAlphaN) : aadLngammaLambda0[k * S + j]; } dLogBAlphaN -= gsl_sf_lngamma(dSumAlphaKN); adLogStore[k] = dLogBAlphaN - adLogBAlpha[k] - dFactor; if (adLogStore[k] > dOffset) dOffset = adLogStore[k]; } for (k = 0; k < K; k++) dProb += adPi[k]*exp(-dOffset + adLogStore[k]); dRet += log(dProb)+dOffset; } dL5 = -dS * dK * gsl_sf_lngamma(GAMMA_ITA); dL6 = GAMMA_ITA * dK * dS * log(GAMMA_NU); for (i = 0; i < K; i++) for (j = 0; j < S; j++) { dL7 += exp(aadLambda[i][j]); dL8 += aadLambda[i][j]; } dL7 *= -GAMMA_NU; dL8 *= GAMMA_ITA; return -dRet -dL5 - dL6 -dL7 -dL8; } static void hessian(gsl_matrix* ptHessian, const double* adLambda, const struct data_t *data) { const int S = data->S, N = data->N, *aanX = data->aanX; const double *adPi = data->adPi; int i = 0, j = 0; double adAlpha[S], adAJK[S], adCJK[S], adAJK0[S], adCJK0[S]; double dCK0 = 0.0, dAK0; double dCSum, dAlphaSum = 0.0, dW = 0.0, dCK = 0.0, dAK; for (j = 0; j < S; j++) { adAlpha[j] = exp(adLambda[j]); dAlphaSum += adAlpha[j]; adAJK0[j] = adAJK[j] = adCJK0[j] = adCJK[j] = 0.0; const double dPsiAlpha = gsl_sf_psi(adAlpha[j]); const double dPsi1Alpha = gsl_sf_psi_1(adAlpha[j]); for (i = 0; i < N; i++) { const int n = aanX[j * N + i]; adCJK0[j] += adPi[i] * n ? gsl_sf_psi(adAlpha[j] + n) : dPsiAlpha; adAJK0[j] += adPi[i] * dPsiAlpha; adCJK[j] += adPi[i] * n ? gsl_sf_psi_1(adAlpha[j] + n): dPsi1Alpha; adAJK[j] += adPi[i] * dPsi1Alpha; } } for (i = 0; i < N; i++) { dW += adPi[i]; dCSum = 0.0; for (j = 0; j < S; j++) dCSum += adAlpha[j] + aanX[j * N + i]; dCK += adPi[i]*gsl_sf_psi_1(dCSum); dCK0 += adPi[i]*gsl_sf_psi(dCSum); } dAK = dW * gsl_sf_psi_1(dAlphaSum); dAK0 = dW * gsl_sf_psi(dAlphaSum); for (i = 0; i < S; i++) for (j = 0; j < S; j++) { double dVal = 0.0; if (i == j) { double dG1 = -adAlpha[i] * (dAK0 - dCK0 + adCJK0[i] - adAJK0[i]); double dG2 = -adAlpha[i] * adAlpha[i]*(dAK - dCK + adCJK[i] - adAJK[i]); double dG3 = adAlpha[i]*GAMMA_NU; dVal = dG1 + dG2 + dG3; } else dVal = -adAlpha[i] * adAlpha[j] * (dAK - dCK); gsl_matrix_set(ptHessian, i, j, dVal); } } static void group_output(struct data_t *data, double** aadZ) { const int N = data->N, K = data->K; int i, k; for(k = 0; k < K; k++) for (i = 0; i < N; i++) data->group[k * N + i] = aadZ[k][i]; } static void mixture_output(struct data_t *data, double *adW, double** aadLambda, double **aadErr) { const int N = data->N, S = data->S; int i, k; for (k = 0; k < data->K; k++) data->mixture_wt[k] = adW[k] / N; for (i = 0; i < data->S; i++) { for (k = 0; k < data->K; k++) { double dErr = aadErr[k][i], dL = 0.0, dU = 0.0; int bIll = FALSE; if (dErr >= 0.0) { dErr = sqrt(dErr); if (dErr < 100.0) { dL = exp(aadLambda[k][i] - 2.0*dErr); dU = exp(aadLambda[k][i] + 2.0*dErr); } else bIll = TRUE; } else bIll = TRUE; if (bIll) dL = dU = R_NaN; data->fit_lower[k * S + i] = dL; data->fit_mpe[k * S + i] = exp(aadLambda[k][i]); data->fit_upper[k * S + i] = dU; } } } void dirichlet_fit_main(struct data_t *data, int rseed) { const int N = data->N, S = data->S, K = data->K; int i, j, k; gsl_rng *ptGSLRNG; gsl_rng_env_setup(); gsl_set_error_handler_off(); ptGSLRNG = gsl_rng_alloc(gsl_rng_default); gsl_set_error_handler_off(); gsl_rng_set(ptGSLRNG, rseed); /* allocate matrices */ double **aadZ, **aadLambda, **aadErr, *adW; adW = (double *) calloc(K, sizeof(double)); aadZ = (double **) calloc(K, sizeof(double *)); aadLambda = (double **) calloc(K, sizeof(double *)); aadErr = (double **) calloc(K, sizeof(double*)); aadZ[0] = (double *) calloc(K * N, sizeof(double)); aadLambda[0] = (double *) calloc(K * S, sizeof(double)); aadErr[0] = (double *) calloc(K * S, sizeof(double)); for (k = 1; k < K; k++) { aadZ[k] = aadZ[0] + k * N; aadLambda[k] = aadLambda[0] + k * S; aadErr[k] = aadErr[0] + k * S; } /* soft k means initialiser */ kmeans(data, ptGSLRNG, adW, aadZ, aadLambda); for (k = 0; k < K; k++) { adW[k] = 0.0; for (i = 0; i < N; i++) adW[k] += aadZ[k][i]; } if (data->verbose) Rprintf(" Expectation Maximization setup\n"); for (k = 0; k < K; k++) { for (j = 0; j < S; j++) { const double x = aadLambda[k][j]; aadLambda[k][j] = (x > 0.0) ? log(x) : -10; } optimise_lambda_k(aadLambda[k], data, aadZ[k]); } /* simple EM algorithm */ int iter = 0; double dNLL = 0.0, dNew, dChange = BIG_DBL; if (data->verbose) Rprintf(" Expectation Maximization\n"); while (dChange > 1.0e-6 && iter < 100) { calc_z(aadZ, data, adW, aadLambda); /* latent var expectation */ for (k = 0; k < K; k++) /* mixture components, given pi */ optimise_lambda_k(aadLambda[k], data, aadZ[k]); for (k = 0; k < K; k++) { /* current likelihood & weights */ adW[k] = 0.0; for(i = 0; i < N; i++) adW[k] += aadZ[k][i]; } dNew = neg_log_likelihood(adW, aadLambda, data); dChange = fabs(dNLL - dNew); dNLL = dNew; iter++; R_CheckUserInterrupt(); if (data->verbose && (iter % 10) == 0) Rprintf(" iteration %d change %f\n", iter, dChange); } /* hessian */ if (data->verbose) Rprintf(" Hessian\n"); gsl_matrix *ptHessian = gsl_matrix_alloc(S, S), *ptInverseHessian = gsl_matrix_alloc(S, S); gsl_permutation *p = gsl_permutation_alloc(S); double dLogDet = 0., dTemp; int signum, status; for (k = 0; k < K; k++) { data->adPi = aadZ[k]; if (k > 0) dLogDet += 2.0 * log(N) - log(adW[k]); hessian(ptHessian, aadLambda[k], data); status = gsl_linalg_LU_decomp(ptHessian, p, &signum); gsl_linalg_LU_invert(ptHessian, p, ptInverseHessian); for (j = 0; j < S; j++) { aadErr[k][j] = gsl_matrix_get(ptInverseHessian, j, j); dTemp = gsl_matrix_get(ptHessian, j, j); dLogDet += log(fabs(dTemp)); } } gsl_matrix_free(ptHessian); gsl_matrix_free(ptInverseHessian); gsl_permutation_free(p); /* results */ double dP = K * S + K - 1; data->NLE = dNLL; data->LogDet = dLogDet; data->fit_laplace = dNLL + 0.5 * dLogDet - 0.5 * dP * log(2. * M_PI); data->fit_bic = dNLL + 0.5 * log(N) * dP; data->fit_aic = dNLL + dP; group_output(data, aadZ); mixture_output(data, adW, aadLambda, aadErr); free(aadErr[0]); free(aadErr); free(aadLambda[0]); free(aadLambda); free(aadZ[0]); free(aadZ); free(adW); } DirichletMultinomial/src/dirichlet_fit_main.h0000644000175200017520000000064614516004340022476 0ustar00biocbuildbiocbuild#ifndef _DIRICHLET_FIT_MAIN_H_ #define _DIRICHLET_FIT_MAIN_H_ #include struct data_t { Rboolean verbose; int N, S, K; const int *aanX; double* adPi; /* result */ double NLE, LogDet; double *group; double *mixture_wt; double fit_laplace, fit_bic, fit_aic, *fit_lower, *fit_mpe, *fit_upper; }; void dirichlet_fit_main(struct data_t *data, int rseed); #endif DirichletMultinomial/vignettes/0000755000175200017520000000000014516030164017726 5ustar00biocbuildbiocbuildDirichletMultinomial/vignettes/DirichletMultinomial.Rnw0000644000175200017520000002327514516004340024546 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{An introduction to DirichletMultinomial} %\VignetteDepends{} %\VignetteKeywords{Microbial metagenomic clustering and classification} %\VignettePackage{DirichletMultinomial} \documentclass[]{article} \usepackage{authblk} \usepackage{times} \usepackage{hyperref} \newcommand{\Rfunction}[1]{{\texttt{#1}}} \newcommand{\Robject}[1]{{\texttt{#1}}} \newcommand{\Rpackage}[1]{{\textit{#1}}} \newcommand{\Rfunarg}[1]{{\texttt{#1}}} \newcommand{\Rclass}[1]{{\textit{#1}}} \newcommand{\Rcode}[1]{{\texttt{#1}}} \newcommand{\software}[1]{\textsf{#1}} \newcommand{\R}{\software{R}} \newcommand{\DirichletMultinomial}{\Rpackage{DirichletMultinomial}} \title{\Rpackage{DirichletMultinomial} for Clustering and Classification of Microbiome Data} \author{Martin Morgan} \date{Modified: 6 March 2012. Compiled: \today} \begin{document} \maketitle This document illustrates the main features of the \Rpackage{DirichletMultinomial} package, and in the process replicates key tables and figures from \cite{10.1371/journal.pone.0030126}. We start by loading the package, in addition to the packages \Rpackage{lattice} (for visualization) and \Rpackage{parallel} (for use of multiple cores during cross-validation). %% <>= library(DirichletMultinomial) library(lattice) library(xtable) library(parallel) @ %% We set the width of \R{} output to 70 characters, and the number of floating point digits displayed to two. The \Robject{full} flag is set to \Rcode{FALSE}, so that cached values are used instead of re-computing during production of this vignette. The package defines a set of standard colors; we use \Rcode{.qualitative} during visualization. \Rfunction{dev.off} is redefined to return without displaying results %% <>= options(width=70, digits=2) full <- FALSE .qualitative <- DirichletMultinomial:::.qualitative dev.off <- function(...) invisible(grDevices::dev.off(...)) @ \section{Data} The data used in \cite{10.1371/journal.pone.0030126} is included in the package. We read the data in to a matrix \Robject{count} of samples $\times$ taxa. %% <>= fl <- system.file(package="DirichletMultinomial", "extdata", "Twins.csv") count <- t(as.matrix(read.csv(fl, row.names=1))) count[1:5, 1:3] @ %% Figure~\ref{fig:taxon-counts} shows the distribution of reads from each taxon, on a log scale. %% <>= cnts <- log10(colSums(count)) pdf("taxon-counts.pdf") densityplot(cnts, xlim=range(cnts), xlab="Taxon representation (log 10 count)") dev.off() @ \begin{figure} \centering \includegraphics[width=.65\textwidth]{taxon-counts} \caption{Density of taxa, across samples} \label{fig:taxon-counts} \end{figure} \section{Clustering} The \Rfunction{dmn} function fits a Dirichlet-Multinomial model, taking as input the count data and a parameter $k$ representing the number of Dirichlet components to model. Here we fit the count data to values of $k$ from 1 to 7, displaying the result for $k = 4$. A sense of the model return value is provided by the documentation for the \R{} object \Robject{fit}, \Rcode{class ? DMN}. %% <>= if (full) { fit <- mclapply(1:7, dmn, count=count, verbose=TRUE) save(fit, file=file.path(tempdir(), "fit.rda")) } else data(fit) fit[[4]] @ %% The return value can be queried for measures of fit (Laplace, AIC, BIC); these are plotted for different $k$ in Figure~\ref{fig:min-laplace}. The best fit is for $k=4$ distinct Dirichlet components. %% <>= lplc <- sapply(fit, laplace) pdf("min-laplace.pdf") plot(lplc, type="b", xlab="Number of Dirichlet Components", ylab="Model Fit") dev.off() (best <- fit[[which.min(lplc)]]) @ %% In addition to \Rfunction{laplace} goodness of fit can be assessed with the \Rfunction{AIC} and \Rfunction{BIC} functions. \begin{figure} \centering \includegraphics[width=.65\textwidth]{min-laplace} \caption{Model fit as a function of Dirichlet component number} \label{fig:min-laplace} \end{figure} The \Rfunction{mixturewt} function reports the weight $\pi$ and homogeneity $\theta$ (large values are more homogeneous) of the fitted model. \Rfunction{mixture} returns a matrix of sample x estimated Dirichlet components; the argument \Rfunarg{assign} returns a vector of length equal to the number of samples indicating the component with maximum value. %% <>= mixturewt(best) head(mixture(best), 3) @ %% The \Rfunction{fitted} function describes the contribution of each taxonomic group (each point in the panels of Figure~\ref{fig:fitted} to the Dirichlet components; the diagonal nature of the points in a panel suggest that the Dirichlet components are correlated, perhaps reflecting overall numerical abundance. %% <>= pdf("fitted.pdf") splom(log(fitted(best))) dev.off() @ \begin{figure} \centering \includegraphics[width=.65\textwidth]{fitted} \caption{Taxa fitted to Dirichlet components 1-4.} \label{fig:fitted} \end{figure} <>= @ <>= @ The posterior mean difference between the best and single-component Dirichlet multinomial model measures how each component differs from the population average; the sum is a measure of total difference from the mean. %% <>= p0 <- fitted(fit[[1]], scale=TRUE) # scale by theta p4 <- fitted(best, scale=TRUE) colnames(p4) <- paste("m", 1:4, sep="") (meandiff <- colSums(abs(p4 - as.vector(p0)))) sum(meandiff) @ %% Table~\ref{tab:meandiff} summarizes taxonomic contributions to each Dirichlet component. %% <>= diff <- rowSums(abs(p4 - as.vector(p0))) o <- order(diff, decreasing=TRUE) cdiff <- cumsum(diff[o]) / sum(diff) df <- head(cbind(Mean=p0[o], p4[o,], diff=diff[o], cdiff), 10) @ <>= xtbl <- xtable(df, caption="Taxonomic contributions (10 largest) to Dirichlet components.", label="tab:meandiff", align="lccccccc") print(xtbl, hline.after=0, caption.placement="top") @ Figure~\ref{fig:heatmap1} shows samples arranged by Dirichlet component, with samples placed into the component for which they had the largest fitted value. %% <>= pdf("heatmap1.pdf") heatmapdmn(count, fit[[1]], best, 30) dev.off() @ \begin{figure} \centering \includegraphics[width=.65\textwidth]{heatmap1} \caption{Samples arranged by Dirichlet component. Narrow columns are samples, broader columns component averages. Rows are taxonomic groups. Color represents square-root counts, with dark colors corresponding to larger counts.} \label{fig:heatmap1} \end{figure} \section{Generative classifier} The following reads in phenotypic information (`Lean', `Obese', `Overweight') for each sample. %% <>= fl <- system.file(package="DirichletMultinomial", "extdata", "TwinStudy.t") pheno0 <- scan(fl) lvls <- c("Lean", "Obese", "Overwt") pheno <- factor(lvls[pheno0 + 1], levels=lvls) names(pheno) <- rownames(count) table(pheno) @ %% Here we subset the count data into sub-counts, one for each phenotype. We retain only the Lean and Obese groups for subsequent analysis. %% <>= counts <- lapply(levels(pheno), csubset, count, pheno) sapply(counts, dim) keep <- c("Lean", "Obese") count <- count[pheno %in% keep,] pheno <- factor(pheno[pheno %in% keep], levels=keep) @ The \Rfunction{dmngroup} function identifies the best (minimum Laplace score) Dirichlet-multinomial model for each group. %% <>= if (full) { bestgrp <- dmngroup(count, pheno, k=1:5, verbose=TRUE, mc.preschedule=FALSE) save(bestgrp, file=file.path(tempdir(), "bestgrp.rda")) } else data(bestgrp) @ %% The Lean group is described by a model with one component, the Obese group by a model with three components. Three of the four Dirichlet components of the original single group (\Rcode{best}) model are represented in the Obese group, the other in the Lean group. The total Laplace score of the two group model is less than of the single-group model, indicating information gain from considering groups separately. %% <>= bestgrp lapply(bestgrp, mixturewt) c(sapply(bestgrp, laplace), `Lean+Obese`=sum(sapply(bestgrp, laplace)), Single=laplace(best)) @ The \Rfunction{predict} function assigns samples to classes; the confusion matrix shows that the classifier is moderately effective. %% <>= xtabs(~pheno + predict(bestgrp, count, assign=TRUE)) @ %% The \Rfunction{cvdmngroup} function performs cross-validation. This is a computationally expensive step. %% <>= if (full) { ## full leave-one-out; expensive! xval <- cvdmngroup(nrow(count), count, c(Lean=1, Obese=3), pheno, verbose=TRUE, mc.preschedule=FALSE) save(xval, file=file.path(tempdir(), "xval.rda")) } else data(xval) @ %% Figure~\ref{fig:roc} shows an ROC curve for the single and two-group classifier. The single group classifier is performing better than the two-group classifier. %% <>= bst <- roc(pheno[rownames(count)] == "Obese", predict(bestgrp, count)[,"Obese"]) bst$Label <- "Single" two <- roc(pheno[rownames(xval)] == "Obese", xval[,"Obese"]) two$Label <- "Two group" both <- rbind(bst, two) pars <- list(superpose.line=list(col=.qualitative[1:2], lwd=2)) pdf("roc.pdf") xyplot(TruePostive ~ FalsePositive, group=Label, both, type="l", par.settings=pars, auto.key=list(lines=TRUE, points=FALSE, x=.6, y=.1), xlab="False Positive", ylab="True Positive") dev.off() @ \begin{figure} \centering \includegraphics[width=.65\textwidth]{roc} \caption{Receiver-operator curves for the single and two-group classifiers.} \label{fig:roc} \end{figure} <>= toLatex(sessionInfo()) @ \bibliographystyle{abbrv} \bibliography{References} \end{document} DirichletMultinomial/vignettes/References.bib0000644000175200017520000000520014516004340022457 0ustar00biocbuildbiocbuild@article{10.1371/journal.pone.0030126, author = {Holmes, , Ian AND Harris, , Keith AND Quince, , Christopher}, journal = {PLoS ONE}, publisher = {Public Library of Science}, title = {Dirichlet Multinomial Mixtures: Generative Models for Microbial Metagenomics}, year = {2012}, month = {02}, volume = {7}, url = {http://dx.doi.org/10.1371%2Fjournal.pone.0030126}, pages = {e30126}, abstract = {

We introduce Dirichlet multinomial mixtures (DMM) for the probabilistic modelling of microbial metagenomics data. This data can be represented as a frequency matrix giving the number of times each taxa is observed in each sample. The samples have different size, and the matrix is sparse, as communities are diverse and skewed to rare taxa. Most methods used previously to classify or cluster samples have ignored these features. We describe each community by a vector of taxa probabilities. These vectors are generated from one of a finite number of Dirichlet mixture components each with different hyperparameters. Observed samples are generated through multinomial sampling. The mixture components cluster communities into distinct ‘metacommunities’, and, hence, determine envirotypes or enterotypes, groups of communities with a similar composition. The model can also deduce the impact of a treatment and be used for classification. We wrote software for the fitting of DMM models using the ‘evidence framework’ (http://code.google.com/p/microbedmm/). This includes the Laplace approximation of the model evidence. We applied the DMM model to human gut microbe genera frequencies from Obese and Lean twins. From the model evidence four clusters fit this data best. Two clusters were dominated by Bacteroides and were homogenous; two had a more variable community composition. We could not find a significant impact of body mass on community structure. However, Obese twins were more likely to derive from the high variance clusters. We propose that obesity is not associated with a distinct microbiota but increases the chance that an individual derives from a disturbed enterotype. This is an example of the ‘Anna Karenina principle (AKP)’ applied to microbial communities: disturbed states having many more configurations than undisturbed. We verify this by showing that in a study of inflammatory bowel disease (IBD) phenotypes, ileal Crohn's disease (ICD) is associated with a more variable community.

}, number = {2}, doi = {10.1371/journal.pone.0030126} }