From 0a071fe5232d98ecc178a3fb63ec66c9022072d9 Mon Sep 17 00:00:00 2001
From: Kris Sankaran We can look at the effects which have the strongest indirect effects.
-These make sense. For example, genus Copromorpha seems to have a
-negative relationship with C18_eg_Clser_0930holae. Maybe that metabolite
-is produced by a competitor? Or maybe the microbe eats the metabolite.
-In any case, IBD seems to decrease the abundance of Copromorpha, which
-consequently increases the abundance of the metabolite.Lasso Approach) |>
map_dfr(effect_summary, N = 12, .id = "treatment")
-save.image("~/Downloads/ibd.RData")
+exper2 <- exper exper2@outcomes <- exp(exper2@outcomes[, 1:50]) - 1 exper2@mediators <- exper2@mediators[, 1:50] @@ -393,7 +391,7 @@
Hurdle-Lognormal Approach -
+@@ -407,7 +405,7 @@indirect_sorted <- indirect_pathwise(model, exper2) |> effect_summary() plot_mediators(indirect_sorted, exper2, treatment = "Study.Group")
Hurdle-Lognormal Approach -
+profile <- setup_profile(model, exper@treatments, exper@treatments) samples <- sample(model, profile = profile, pretreatment = exper@pretreatments) colnames(samples@outcomes) <- colnames(exper2@outcomes) @@ -418,7 +416,7 @@
Hurdle-Lognormal Approach -
++#> Finished in 16.5 seconds.direct <- direct_effect(model, exper) |> effect_summary() diff --git a/docs/articles/mindfulness.html b/docs/articles/mindfulness.html index b7a0de4..c2809d4 100644 --- a/docs/articles/mindfulness.html +++ b/docs/articles/mindfulness.html @@ -106,8 +106,7 @@
The Mindfulness Study
mediation analysis is to provide evidence for one or the other of these possibilities.@@ -271,8 +270,8 @@-+#> Finished in 16.6 seconds.library(compositions) -library(ggdist) +
library(ggdist) library(ggrepel) library(phyloseq) library(tidyverse) @@ -161,8 +160,8 @@
The Mindfulness Study
#> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.007795 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 77.95 seconds. +#> Gradient evaluation took 0.008221 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 82.21 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -186,7 +185,7 @@The Mindfulness Study
#> 1100 -83487.854 0.163 0.010 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 16.8 seconds.Evaluating Effects
@@ -250,7 +249,7 @@Evaluating Effects
exper_rela <- exper -exper_rela@outcomes <- normalize(exper@outcomes) +exper_rela@outcomes <- normalize(exper@outcomes) plot_mediators(indirect, exper_rela)
Model Alterations#> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.008024 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 80.24 seconds. +#> Gradient evaluation took 0.007883 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 78.83 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -296,7 +295,7 @@
Model Alterations#> 1100 -83487.854 0.163 0.010 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 16.4 seconds.
These modified models can be used to simulate synthetic null data that help contextualize the effects seen in real data. For example, we can compare imaginary cohort drawn from the original and the altered @@ -346,8 +345,8 @@
Model Alterations#> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.007893 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 78.93 seconds. +#> Gradient evaluation took 0.007752 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 77.52 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -372,7 +371,7 @@
Model Alterations#> 1200 -83880.348 0.023 0.008 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 17.2 seconds. +#> Finished in 17.1 seconds.
+#> Finished in 16.8 seconds.altered_indirect <- model |> @@ -383,8 +382,8 @@
Model Alterations#> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.007576 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 75.76 seconds. +#> Gradient evaluation took 0.007383 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 73.83 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -409,7 +408,7 @@
Model Alterations#> 1200 -83137.414 0.023 0.010 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 16.6 seconds.
profile <- setup_profile(model, exper@treatments, exper@treatments) @@ -417,7 +416,7 @@
Model Alterationsy2 <- sample(altered_direct, profile = profile, pretreatment = exper@pretreatments) y3 <- sample(altered_indirect, profile = profile, pretreatment = exper@pretreatments)
-+#> Finished in 19.1 seconds.taxa_order <- normalize(exper@outcomes) |> +
taxa_order <- normalize(exper@outcomes) |> log() |> apply(2, \(x) { x[is.infinite(x)] <- NA @@ -426,10 +425,10 @@
Model Alterationsorder() combined_samples <- list( - "Original Data" = normalize(exper@outcomes), - "Full Model" = normalize(y1@outcomes), - "No Direct Effect" = normalize(y2@outcomes), - "No Indirect Effect" = normalize(y3@outcomes) + "Original Data" = normalize(exper@outcomes), + "Full Model" = normalize(y1@outcomes), + "No Direct Effect" = normalize(y2@outcomes), + "No Indirect Effect" = normalize(y3@outcomes) ) |> bind_rows(.id = "source") |> mutate(treatment = rep(exper@treatments$treatment, 4)) |> @@ -494,8 +493,8 @@
Synthetic Null Testing#> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.00774 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 77.4 seconds. +#> Gradient evaluation took 0.007991 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 79.91 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -520,14 +519,14 @@
Synthetic Null Testing#> 1200 -83880.348 0.023 0.008 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 17.0 seconds. +#> Finished in 19.0 seconds. #> ------------------------------------------------------------ #> EXPERIMENTAL ALGORITHM: #> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.007799 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 77.99 seconds. +#> Gradient evaluation took 0.008081 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 80.81 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -553,7 +552,7 @@
Synthetic Null Testing#> 1300 -93377.218 0.010 0.004 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 18.0 seconds.
@@ -568,8 +567,8 @@fdr_direct <- fdr_summary(contrast, "direct_effect") |> rename(effect = direct_effect)
Synthetic Null Testing#> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.007599 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 75.99 seconds. +#> Gradient evaluation took 0.008019 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 80.19 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -594,14 +593,14 @@
Synthetic Null Testing#> 1200 -83137.414 0.023 0.010 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 16.6 seconds. +#> Finished in 17.9 seconds. #> ------------------------------------------------------------ #> EXPERIMENTAL ALGORITHM: #> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.007953 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 79.53 seconds. +#> Gradient evaluation took 0.008208 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 82.08 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -626,7 +625,7 @@
Synthetic Null Testing#> 1200 -93186.795 0.030 0.008 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 17.2 seconds. +#> Finished in 18.0 seconds.
@@ -648,10 +647,7 @@fdr_indirect <- fdr_summary(contrast, "indirect_overall") |> rename(effect = indirect_effect)
Synthetic Null Testing )
-+#> Finished in 17.9 seconds.exper_clr <- exper -exper_clr@outcomes <- normalize(exper@outcomes) - -bind_mediation(exper_clr) |> +
bind_mediation(exper_rela) |> select(subject, starts_with("mediator"), treatment, Roseburia, Blautia, Faecalibacterium) |> pivot_longer(starts_with("mediator"), names_to = "mediator") |> mutate(mediator = str_remove(mediator, "mediator.")) |> @@ -680,8 +676,8 @@
Synthetic Null Testing#> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.007665 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 76.65 seconds. +#> Gradient evaluation took 0.00786 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 78.6 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -706,14 +702,14 @@
Synthetic Null Testing#> 1200 -83137.414 0.023 0.010 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 16.6 seconds. +#> Finished in 17.4 seconds. #> ------------------------------------------------------------ #> EXPERIMENTAL ALGORITHM: #> This procedure has not been thoroughly tested and may be unstable #> or buggy. The interface is subject to change. #> ------------------------------------------------------------ -#> Gradient evaluation took 0.00793 seconds -#> 1000 transitions using 10 leapfrog steps per transition would take 79.3 seconds. +#> Gradient evaluation took 0.008226 seconds +#> 1000 transitions using 10 leapfrog steps per transition would take 82.26 seconds. #> Adjust your expectations accordingly! #> Begin eta adaptation. #> Iteration: 1 / 250 [ 0%] (Adaptation) @@ -738,7 +734,7 @@
Synthetic Null Testing#> 1200 -93725.424 0.031 0.009 MEDIAN ELBO CONVERGED #> Drawing a sample of size 1000 from the approximate posterior... #> COMPLETED. -#> Finished in 17.3 seconds.
fdr <- fdr_summary(contrast, "indirect_pathwise") ggplot(fdr, aes(indirect_effect, fdr_hat)) + @@ -755,29 +751,26 @@
Random ForestsThe LNM makes relatively strong assumptions on the outcome model: The effects must enter linearly through a multinomial likelihood. As a nonparametric alternative, we can fit separate random forest models to -each microbe’s abundance. Since the models will use mean squared error -to define splits, it will help to transform the response. We’ll use a -centered log ratio, exported from the
compositions
-package. +each microbe’s abundance. Since this model doesn’t directly account for +compositions, it will help to transform the response to relative +abundances.+ estimate(exper_rela)-exper_clr <- exper -exper_clr@outcomes <- normalize(exper@outcomes) -model <- multimedia( - exper_clr, +
model <- multimedia( + exper_rela, rf_model(num.trees = 50), glmnet_model(lambda = 0.5, alpha = 0) ) |> - estimate(exper_clr)
We can compute direct and indirect effects from the estimated model.
-direct <- direct_effect(model, exper_clr) +
direct <- direct_effect(model, exper_rela) direct_sorted <- direct |> group_by(outcome, contrast) |> summarise(direct_effect = mean(direct_effect)) |> arrange(-direct_effect) -indirect_sorted <- indirect_pathwise(model, exper_clr) |> +indirect_sorted <- indirect_pathwise(model, exper_rela) |> group_by(outcome, mediator, contrast) |> summarise(indirect_effect = mean(indirect_effect)) |> arrange(-abs(indirect_effect)) @@ -785,42 +778,42 @@
Random Forestsdirect_sorted
#> # A tibble: 55 × 3 #> # Groups: outcome [55] -#> outcome contrast direct_effect -#> -#> 1 Parabacteroides Control - Treatment 0.362 -#> 2 Dorea Control - Treatment 0.345 -#> 3 Coprococcus Control - Treatment 0.317 -#> 4 Ruminococcus Control - Treatment 0.314 -#> 5 Clostridium_XVIII Control - Treatment 0.267 -#> 6 Bilophila Control - Treatment 0.251 -#> 7 Gemmiger Control - Treatment 0.247 -#> 8 Clostridium_XlVa Control - Treatment 0.242 -#> 9 Roseburia Control - Treatment 0.220 -#> 10 Phascolarctobacterium Control - Treatment 0.214 +#> outcome contrast direct_effect +#> +#> 1 Ruminococcus Control - Treatment 0.00479 +#> 2 Faecalibacterium Control - Treatment 0.00418 +#> 3 Roseburia Control - Treatment 0.00329 +#> 4 Parabacteroides Control - Treatment 0.00129 +#> 5 Coprococcus Control - Treatment 0.00125 +#> 6 Streptococcus Control - Treatment 0.000515 +#> 7 Dorea Control - Treatment 0.000503 +#> 8 Clostridium_XVIII Control - Treatment 0.000488 +#> 9 Clostridium_XlVa Control - Treatment 0.000148 +#> 10 Butyricicoccus Control - Treatment 0.000131 #> # ℹ 45 more rows
indirect_sorted
#> # A tibble: 220 × 4 #> # Groups: outcome, mediator [220] -#> outcome mediator contrast indirect_effect +#> outcome mediator contrast indirect_effect #> -#> 1 Clostridium_IV mediator.Cold.cereal Control - Treatme… -0.309 -#> 2 Bifidobacterium mediator.Cold.cereal Control - Treatme… 0.156 -#> 3 Coprococcus mediator.Cold.cereal Control - Treatme… 0.133 -#> 4 Lactococcus mediator.Cold.cereal Control - Treatme… -0.122 -#> 5 Oscillibacter mediator.Cold.cereal Control - Treatme… -0.119 -#> 6 Collinsella mediator.Cold.cereal Control - Treatme… 0.118 -#> 7 Ruminococcus mediator.Cold.cereal Control - Treatme… -0.114 -#> 8 Sporobacter mediator.Cold.cereal Control - Treatme… -0.114 -#> 9 Phascolarctobacterium mediator.Cold.cereal Control - Treatme… -0.0879 -#> 10 Actinomyces mediator.Cold.cereal Control - Treatme… -0.0811 +#> 1 Ruminococcus mediator.Cold.cereal Control - Treat… -0.00988 +#> 2 Blautia mediator.sleepDistRaw Control - Treat… 0.00765 +#> 3 Clostridium_IV mediator.Cold.cereal Control - Treat… -0.00552 +#> 4 Prevotella mediator.Fruit..not.juices. Control - Treat… -0.00451 +#> 5 Faecalibacterium mediator.Fruit..not.juices. Control - Treat… 0.00390 +#> 6 Blautia mediator.Cold.cereal Control - Treat… 0.00383 +#> 7 Faecalibacterium mediator.sleepDistRaw Control - Treat… -0.00370 +#> 8 Bacteroides mediator.fatigueRaw Control - Treat… -0.00313 +#> 9 Prevotella mediator.Cold.cereal Control - Treat… 0.00313 +#> 10 Prevotella mediator.sleepDistRaw Control - Treat… -0.00307 #> # ℹ 210 more rows
We can visualize some of the features with the largest direct and indirect effects. Nonlinearity seems to have helped uncover a few mediator to microbe relationships, for example, the relationships between sleep disturbance/Ruminococcus2 and cereal/Faecalibacterium.
+-plot_mediators(indirect_sorted, exper_clr)
plot_mediators(indirect_sorted, exper_rela)
@@ -834,7 +827,7 @@+inference <- bootstrap(model, exper_rela, funs, B = 1e3)Bootstrap
funs <- list(direct = direct_effect, indirect = indirect_overall) -inference <- bootstrap(model, exper_clr, funs, B = 1e3)
We can now visualize the bootstrap confidence intervals associated with the estimated effects. The largest interval corresponds to a 90% bootstrap confidence interval. The inner interval covers the median +/- @@ -854,7 +847,7 @@
Bootstrapaes(indirect_effect, reorder(outcome, indirect_effect, median)), .width = c(.66, .95) ) + - labs(title = "Indirect Effects", y = "Taxon", x = "Effect (CLR Scale)") + labs(title = "Indirect Effects", y = "Taxon", x = "Effect (Rel. Abund Scale)") p2 <- ggplot(inference$direct) + geom_vline(xintercept = 0) + @@ -862,7 +855,7 @@
Bootstrapaes(direct_effect, reorder(outcome, direct_effect, median)), .width = c(.66, .95) ) + - labs(title = "Direct Effects", y = "Taxon", x = "Effect (CLR Scale)") + labs(title = "Direct Effects", y = "Taxon", x = "Effect (Rel. Abund Scale)") p1 | p2
diff --git a/docs/articles/mindfulness_files/figure-html/alteration_plot-1.png b/docs/articles/mindfulness_files/figure-html/alteration_plot-1.png index 5c7594f0a31988f099e721004e312ef4a7c1ec37..0abe1360ca753757f7bdf137235edd926cf4a418 100644 GIT binary patch literal 424480 zcmdSAWmJ@3+cv(3RFN2vP6q^)66r=61QkSqp-Wnj66qR~p&d~KB&1;|0qGilNQr>7 zG)hUAw7|Q$pXa%s`~T(t<^A+tYq^Fc!?o*-<2;UYhu*!TPJM>$3;=-orUqIE01Egc zxyq@Nk0|q)1o%N=bz2<`KjE{dS`!REPP=Isc>ur}a`F!mJ+p2L01vo{zNY7sxHRVL z!(k9FvbK}Ap!Iqt5N~{IiRFTqRpO6@SWdUs?i$yd&zF!!Xc$sZki_4QN03wr-6y&= zsu+sOKLO%Gh#RDQuS4kcNyYeMZ3Or`7k-2am)Xdhmz7oLb$TEFcFY{pcY07(R^Kq! z&6``@nX7BtKd0*{g~k0p@iZq#cq4E){wGwxRB8MLPuc@}L9G3T#vJKd);~-ya1I)j zh`(}Op9X
&*_zGfIr(?cfcDwc; zd*(p07WuEK#UCL4-mj&)hSnXB95+b)M7nE**yKfh{RD{4 -tn9opwYaW>L7)4^*UYm8_e^6qyPtrH4`#Pk@>?KHJCuGp`UE> zp>EZje&Gy$Pz;peelM|kl7ei2`rjwv=?|cS{`Vt6UX1vU^L0351(*Ntr~BL&ivRfI zv`e^?N&NfKrDF&GvCJ$UDM0t{zeQ?YdkA>`e+J%bt~q%bD<22VPNe1WyC$n*%1zn3 zYHCe_dRxq392wrU(plzweU(&}w>EH5uB%bD16^72M* z;+m|U{OJm35;p$5xu;Y_U n;|GLpr+$--0 zUoS@SnsW`%jlBHUcyKv4KR=)A;T$;?(>JiT!}_3e|G1Ih=- (|(`B{g6z92a~xELJdzT+j0owu0T7>vTxtL?e;&u~5XlZ!Dn%0>M&- dUF099cUTb5m0` Zt}`jV<@^~&i)QgVGn=E5!_~7m zF?~%D4g|D3hSyUvwjs3KN)qEUELnV@L2OnFcufztt?p#|Z*GB$T;WfVTDl@&q$Ho4 zq>=+0<>3oJQ&UrFo&S#A_PH{6s`l*GQixrCZ19 eP}5r2Jz+T}=s zruQ`Q8hmz2$A34Ics0Fbfnh9WXn1&7Dq`9C!s?<*Z}anr+fz@(md`SX6^dou`;5`o zXSzTiY6fD@Zz=q7vHljw$;qjX;NhU@V#FKdEDWM;0xzEPvx7^YQ$AQK6?o|%alPr? zX|C)?Un>e_&qOfBe0lEZE`UPa+T06R@p*T@Qg2Hd41-#7tYT}S>t=oMTt0J{gP%V= z(H`VOvphIh7tu7n!tyQXr@gU>Ni;P6RaR>_{L_zxa1X=WFOJ8RI*&}hFE1;TlzP34 zW+1{j>&c{tJ^;|J0ttT1I- q9snD9%)-xOjK+xeZC=a-!Qgp zh-K5Oy(H)^27|%(vpZ_+jfSMdan~P0_v0jHBLbL+!+-2aJ5=8%bL(TABE@KpW4BHt zee-apBLf55gO7&;RyH>_HkyFaMbvxn4Sb{`($0R1-#k?G-{z~m8km=zJtu7by2MQ; zQRe+-Y)IqJE>I~swZo?)diH2SWu$cOYx3p6C;SzmT<>~{DTwV~+uOMvU0s9au_hof zn;;KHhsMW`@;DxZn9<(XTx_86Z7Iur%<15FQB>3-pKyE%5d1uyoED2s56a8Sx$<&y ze5wdarzeNujtDV@E1o{fDM<0YrXelu7d_@s2Kx>nb86BF8m$Q VHgP-!2}P{V}buU)&8EDL NSXXZ4pucz+iau22MfR#IB=!5Y*ZF=C zkGAKPR9?Z3i1*&fTvUk};ltf#(%I?%wY|OF0CwqX{coTL!dnlaA!i}JO7-})eu{pe za^&tzFr!T15^DEL- z`t|GAT_L7Yj+RRdcy1swIJbEyCVmWEijlA{o8cFc+502b)(nNZ4_rHx?!df(7qg?p z4uSDl7|NQh#01Zs>0rV~lf*qR8n6)Oq6p>Bgd5_IkRbhGYGh<2mM8&z=f$rA{~qd- zXnFf({8G4v*0pjOrf?%?XXlY8e^)$Q-Fy6D40h3MVF2NXhom2Cp?5d~y6`5Kav{OG z*tVaBLj2G)OS;XTjKVFPU=DBUDem2h5~wQA?$s)Tr!irJyN%kg0AXkwBe N&=93KiztL)~N}8TY#IEMUX=0-aU5& zwg$nc=c(%J>&wFwz9-afEQk`NSS#X{eTV L#OLfp(#E`-i2JAO6<5IL_8+Kq15L z*E_kW%}hK;u*9Q&Np<7S&sI%ndHY-UPcVy?9_LRt8T?`%+)~F{s<_W29|-%5AQc7& zOgy)UQ3+oLp@?Ly=JQMWuvYt5Uw=o!g=UZU0l(d~pQ><&TuDB15=+9u!WtHpKiZDX zXVzWfjeOwjJVrg4Ny^y*1K%q@w*V&?Zbt-TRz@mTZA?r?j>*>)L1tZD-QaYf8jhcW z5kE+Z6`NHKiQ!2(`1pZbe~c6qF49!kzagDWFck6vtl?p^9x2&Vr?K8Jv>$rQCBvXi z+8k%#mok<(u6*uH=3Gsu)40<}xi$^cT%BRc-cyOdprMxbvOpbE$^ %Dnw #iDwx~BtsJOO{CTsE!LT?y-E9lHezfS5y z4IsLB!c?OJyh*Txagf2r1ZqiCN(u^==Y~$hbbSp3w~nt+zkOkAv~yOEsl8-n1E%`I z4SFr6@x~zogsIuRdt$#inorD{AJtO3`XqIGYx|(fP-sA$xQ!f}i=TsIHl)-AtE;yl zi@XOH?k9hBJIgqCNRT5KD&H(5)e?{45ec-#(oo&NaFb!j$H#|Mj<#NXzLG`l^4gR# ztrv~LA8n}zDouQx3o_{cGwiH3lrj^>NV?|BS*!`MrR{bIM1RqwKg36``o3i3MSLhL z^UU*(9!pAUdkVprk1|t$-n=CR!HKCP@nmbl0Rys|Y)0lzyfoUq#{n7-J52~}-hwa~ zr!10wP8dH6K3lF0R`rxuRAkS!9^Ni|@mHvQ*g67%#em6bmuluA8sHL@UqSLaxC$mk z#-;grS!NI+mIR|+#JE{A3p+q(C>Z#L^2gX*-8 JO;^o 7al{S?vLLU=7JFdriJWbmC)Pg)Qob!7D z^`?xU0wVf<* `79z@$tk z2e{k6eeLUG)FyL_`&Iw%(+jzFzI(~#SI%|Y%+&qyVaJw0d)}EI7KM&SBpZK*pICL} zyhDQVg!|x|(zR8uoUHwM^Zv-TQIfe;3G}68ejn3?j^e{l{!%G^t#?^^AH5eEeBuBo zh(U0y3yoSfBVLjK*Qz>{LVZq<;+M>w+;=UORJ7dOF7XPDVR$YJ8IGfBvDu5*0}x=0 z9zXTr7TSgVr#sbo1GCasGl>p!nv lk{-D2^yukptq z#qA72;P{U0v!zlE^asNHna4#qqKS>DLBb1^XoS@2%8J+DBRzjy1#$GQhaJ7vX&ABu zpd~Z{rBa9Pv|~1hlz^4S>ktLM1=qp1e_l}0awz!R2&uRaGqQ9uUoH3TO}XD>Ulvsu z#>k>>Hxk&Vb!pouS7*+dQzlHaA^yI%HG(m* k+94vD9l` z^7hY%Xb$#ZT{A&5xeTI6eh8sx363xX%AX;^K~uPY7OP+Q_hK*o3*YO$BqVo#tg~r* zZNyT81P)G4{%piea72!^jqqiFP<)GMIsf#trC)WrAl^EVw7o=x()>3$!znVWadpwH zSs%{U2UL4pvX3&@RY(AnsJW?><(ahHw#q_(2JoZ&a9M@NtvN8ZE6~u=b-VtUZ%~iB z5#JTab>@X!Eq6N0hnVkaYT>tP)r7ofO$v*fVag)HlqEa!9}Dk^Ok6dtemtL_>Lns5 zn1}etq0++= fi_TqQLMd`K@TGD(AI>djobxq1kpVaQKSW-aECw3sDxpB zDF1ua5E{iZlm0-ey6~WUscW-}mMRlMOA^3M3aq~gsK<}tRy|fncYJJRtr2eRCFYbw zQIs;f?NBp)5vi6BgRBVkg)To0B_Gl3HM#E@jNwgQBtIyKVJ%b2oEhD8x8I2**&69r z4;~-Ta?153t-9|lk9eOU-Up@aU%!fcJ*tH$@C>le(|tqj>R1kwt9aI}&4WYf L=npZc&;&n>{^MQ^gWDde~Zjv0ZrUFx}F6)EwcqM(v3$)it=;-U0|HHB=0POYR zoJZ;#Z*RVU89P|RfC!6Dd2tS!V?k^ekWsSlOgz|>4@?Uc v{t##QuL}$ z&b?^-Sz65hPtLmBcbhBSzj`$O! @LFsNcQVr$|+PoHXOz M*k1mcJ-AX)xRV zB-e)%*DNj)sSk5hfaXj8c(F(aw-Xk@CL)()jSg!IxK5FgWdHN?qupQ52`bC;SnZ06 zib1Q%7oO^TOyOhXlNI1HLV=4W1iI55!h$Q}?+tX2%&_$|3gx;L^w&pQTU&wGE0~_h zXkNACCbI tVh`J)^`Mi8Cdi?9$lE z`H@ao4Q;X-%v%V364g6Aynh=h+ahRBiRHrz=xsHIqSFEt{E+mKZw-aE6*H{V3cJ(; zxM^Y{`&4!IsUX1+pp9{YSn55#I)n<9a!^}Wcc?F#{Fg0vQ|U5F`LUU|E%YFj@Hh2r z=Gvl2)_Fg{p+Vlk!5qz}iz*Vy?hpDlazm!A=||fm9-vi!|NbpQAKql1Mvw&cPx~g~ z!}}akClI?IAY%hFkLpEYdvG*6`~uA+|0-*@+U4<}i%j8%&j_&qJ0(ND`nPXjpqx`h zQfJ4Uo`?Y6)rIUZbdG@9k&%JOe YanMSN95zqw6ij+4INJL|4{gX=w& zt`M6j%!Ut&-t8NDv+=S;jjUa-t&*M4lp%p-*?&J-Zy`{7gUGo~xSwO0ekGKj?LSz` z?l%lHA;GH!;%l)HO^(Yj0=*4tIMxOq2q|nWDEcJN`gM{2 >uC#1 z2=d&${?II;sQ+b1(=N@o;(0m2QPGZ?#IhUN{|<}%zocRRwT5oK%^+|ral(sVa=P|p zv*r|Wio7!hcTw1fY2)t&Y<=k~Q6v&18chBjC!cI4nY)R8BUMBfe^TK(*v$G{pwThc z0C8hogbdkz>fHVe2eNxef|lIxnmYP%x!allV0s} VhQaoXX+3H6SkE6WL;~c&UA|TU{V88#knw#{8`73%Pl6obHymjglun<;J zg0y g8-Vn79kXh?K+jtHGPB-$6N_r_n#}wxpAA-3cbv} z^R6O>(8efs0JiyFMguL;l}e8Zm6lq|np>@NGkM;1qsPNp2E|5|9#jvxv$RW&Q_YbW z!u}7Q8V<^j7lo%LGT~yFR@I`gX48@T<`TxU)tNM+)!u2UugW zX2y5o$y=cx%5+{k@+{C~w)s11g8hqgSg1UwGJmnh;MWUJE^e+scYaFfQCfl85>ish z19H{An|6yoL%5S4L{u4Jl(PxkRV&qtD@QY;!F!`VjE_JNMp5{Nq?FVVORj7|C~m`U z1R>2~K12cP>awqQDIfp24h&s(CZF$rzfY3A%)RdUkHGNaGp?Ji2e%&$R3&2ZxK4g# z_t&or&%pQbql%AHd;#IhGE5ru;QOy{Si5|31G}18Q$d>aW_liXBG~~=Jkf#c6&wg< z_5SNuOab_?U|di@Yd}JLQP1^;NDe;9WM*sG)qTIUP^E85ra|%L6Svq=TK4EKa%&4e zRKnS?FP4}q^ENIXqZtK+*Vq?ho%7-W!sQIrD*IoU9ye)zm;Fs)7yaN#3oFbISxPZ= z_cv!dD2S&)N>M>UAS-t9;Yd9N@p=482=4d8)4Qsnc}2BbNZ?~PVZn4X|5=Ze$aoav z(<3aGj `^`p(c8=e5NC4y_YJGY_2^`qy~29 zB}KOtQI8B%RaNb0>&wc@T*=owL6P&rhkuQ{py*f@P3m*+;<*G2B!p|+r %W>P7Zw-CzA1oj9%dC~nVFdaEyekgP6K+m3$kFF#X73Gu;vyz z3}T cN=cWPcO;p!Yzdsx)r}gsoeg`SPO^hV?V2DY1%#p1~cM2l7d)5)p zucuxe^epgE7_ax=S>XjGlm~`RgN1?kDH%yZwJXG+TEqvdAE9XXDd^D8!rOa?t;Icd zr2Md!z(qwyBD~k lcJ4<0bQtsTo zr*JM5Z5OIxbn)CmWXqHqL;{{WD`R8n@~Wr=8vT4j iC73j6NnRaj6^2dh5+ zf!ThbpSPec?J` k43DmxP)R*w6@nsU&aGG|O`nPH1c`)O3? z=lKINnD51AFJlx9&~V$5AbpG_7?(S 6=KM?GN}2!Ysl%JiXVZ!N73 z@AnA_Qr1|!78)H7H?Zu>+-4m+@ywv-ZL`6GwS&V bUXa I~W(z<_3>urg{c-@w|5sF4_s!f{_{1~yBZ8ld=Q0h>r z{c2ur?z~< y1+qz=5XIpaf)N4! zXBs~7rrpcQ%PZYkov@&s tExq;ctl*eMx0BqQF3kA6>I$FRone|iC6 z1}KQT-sRrk-;as4tsC(in^8*XQiiZx7p^JT?pvID*Fb?uQmO}w3Cy(#SuT}7Uk)|L zRroVDFXtH)9W4g#j7d8rKq7w+xTrhse|YEZ<+U m5Y-W#nDzAZ?4VfV1`_n4`Hwl~Y5)`OmJap2q)LzI zJot8{`LB}%TUo;U_sUmazI%$}XI;%4u-Eg8Jgim0a6IDCb3&(2?+@?T3T9>Qy$G|2_tBTixFZI zDg-6I@%CUJ&-{;s`mS)%6b_-36Db1s*8+1Wk2HGS?Q2DWy@k;t`K{Z}i_$r3c};;U zg>teHJcg@A40 EH7cJ%*@Qx zzzW+0eewz0sym@JE+O}T35<9isOKF+fiU1%g$VJ3-d2-2PeVa*aq*?P!zYwnGWrGv zJ9r<3qidMJJqN1M{(jp4CGIN`13$07&8@E9-$Ior_#gai3~5YCN|JH^^`-UBQ-{}7 z6wltHr%}KI{UyhdLq!aW%}Unn_rFh(!DT6ooY(C)N1o0h2%-dEg~^6MvT}KO$)G =( z3AO1nm=}a%V-xOVD$t_Ml_-|D_>-_3ofquVob|Y|WkNl@dyVHNZCESR_#U-HajH`e zMdQwV@f;fjl`81h8clDOWHYF1DfPgb`EM#6(JE6=hx%pEj{;CVV1sHE{%#r}>RpJ> zK?iVCho|1@Kk9@vl>4Tev#oPePM=kh*VqGnzWfQ}Mo>Wn3_uDRLvq6Heo{^&-Ltc^ z0_u-6QEajDuL# ezezx+tA#POD4UMJGqcZBm~z zKyS-5Bg?qsCOU0gcB`c*gQ0@*c1#EEM@zr5bgI5znDK 5uMM)DDd;u)?qYR>7fAfjGi3x0u^M+VcYPNbMC(9FqIsWcHGpq8{W#JwTn5Aa2 zxC$v(0kc6ZpaC=A9ZZ)xp>sFGpzsw=$e`Z<=8w_AzP>)OghxzlCjchoGs!dt>faW5 zd3pW@Fq&DtI{awc9$P@9!e7;eDUD>L{E41xwU} n zV#ZgkvHhwI(WA;`KAxx4Up0#h+u7hkynfKqYBxwVLsu8m`(+r>pm>;dVU9gEtSl3fXTCyOhl;t(>EN zGs{_ZxjMcD({Dh!yQdL#6YXn4VOdU4I**!b^q*}D6O1Rz{b2_TVYu)?xFip vx_` z!3|*^FA2Pv7h(>@OF5bFDgM2jiV5QvQSKN;8q2K3>N(OAdNMLsfQ_A9^xH5$jJ~P$ z_4QD7RK*0om*)G^-`KV`>{OJ*ewIR1x1UOF8ig@CJ^A|Sy8tqNt9TrLRR$r;zjE7q zi}FrUpD%5Z2JL;y{g41QAJP8WkfCo9u{&wPRgdR&N`sGs1jLK-8 ?}J>cRGWf5McHTTI_v&(XiVjN;CJ>;c$PezNe>0l+?#x?t}k? zJZ4J@xfj4S!`{DEaQ*E~v{D{H`Rn-6s7Ke>(8!4YxWiWs3D(e7UO (6l{Q3=ghf_lok>O%SHw8w>u6oKObR)Fpl89c9))8x1PEvn`>O%RjBC!CuV zhg&NNsT-FWch+9ikHoYyxJh*Q5Xu)31u!zzya(MM^J?hV%{dG3n4YP!LsNGM6%lzn=PP zY;chI>y|HnN|%At$aaPE$ZG9uzr_JH_?!0gaB*r~S4}l@Svff_=Db)7LJ0A(tf*); z%k*IXFbHC!JM2*nmY<)V-kH25F$9rboitmdQYv9njn6FjYvNVjy4W5hRH=3?eOax& z!do}ZlP;hBa7x8g*9pObT=(577Rgw!n?Y@y!;S&ieZ@=IuO)~8Iyz*7G=1rpb^(NC zwAgH2DEb#GfCQgfo6V!|^Q{m;QKL4rQbgnO{re4qs6ePq^s0S>PnTq4-JSDsy37au z<%&g5)HJk0nN}AUO 3&A5E? zxDM7QbAVXB+$A67A&aHLvn7uozwTt0ySpGsmPm)!UKy{Gw@>`q^LFpH1e@Ypu3Wk^ zZ)Jex!P7=R!*fse-R!h!kh1H))1$fA?0j(!XLk>ej$v2IJ5n6DxWgvKDEh5RnAQD; zxK+%uB*~i`0@WlPmcL=b!Zjj(PNs7ry!C?l5|y7X3uxhJsq*YfRx~4hmow4!^NliF zWO8d1hP2aD<`hCNqruzlse71%)kmSl3DdztMXW3
d08IVCQD{`~IXsU}@AJJ^ z339?_gTC}ChcHocwaF~q6{CSj*~aT{$&F7>Z-&t}BOUzYxNXn!CdhcLj*meAb|~Cl zVi(%#i=zLt;!o|3?VqQ>9i??!2nm%>zqr1Lwt1U1 zU@d086v#&O<__BZd0IL|0tTm3!0v>Lf403%kN*?4+z%NV$`U26PX-AFxe6WB(xX?} zJ;&}v0v4@!+{KCllL|RlAT$#8Z(! 1JOf^c zT^j5&_$^?-BRRNq4eUrsOHZUI4XDy8_8IHyZr%bZSDW)y9o=iWGT2y2G$b#7BH4|G zMwJpdhT%zTb2!*uu7f$w-$H>am 5_C!DN;ba!I2 zQ+{ ymN_5T0jJtK9tW5$ z0a)45MtSd1!16flfeT~;!}YdMC;E@}%y3a*VP{m!R1>&sZa$uT=&QihAg10k1t!bF zl9|>xTdFSk`~1*|NYg}1oQ3aE1ofvU3t=fiT zb~v-=Z^x#@v6IG*V*re|HJ0eqz^Z`U`J#SeE70m__|lzDkbr0p>DOAEwbPv{9x zBK%^?p#BR0q)T4I$9y&Z(bsjqy b`aXPSW zhP}53EZA_^dZhg6e&b8|)rRAv`u{3YVa2G?;m swmpyE*&k6=4jL$g5+O?$&{j zVrmzz82xq9)k{N^ezh=TlIWYyDsJbXz(tAmg _M>qaiQg|tM7fvEP;{2?+D#=_Le_FtUX3}`OTFb>~_4wikWbTfJ zy?b=XnP2_xQOrDfM{@cDR5|zi>#)pL+!jX+-5Rz{oH6$X6GWUo%%g+%Xd!v-AXk}F zUM?liVzllv+PNE;Hzl*mc9|Cwn1}mIPHcg_CoN7+2ZPlfurvb4g@nQKPoF9WErJip zVb$$hotpYH7p{K-QF#mV9#Ui7 zF{>S$CMv7~tv-@Cp76HRa|1$|G-I zT<*OK>3dz1+9JW-O@G%K4!|KWu1q~t7rOVmUtEAtmsi2Tbj1MM-aBHd!6iOSkEBkS z;tQNN>>nKDB*PZ88TGu;EbxCfc6GRKhDmWum&}0$+|p)wuX~=pyV5PO{%Dsx?&$nP z!|(UeSm`Y GA?3w?Usb%ZfX6)45p657r2KwG|FHs`1nwDd;3R;ZMzpTmtxHc z+ys o#e0%CEv?ZH8pdFH~kLoPpM}ov%VhIq@&dO9!w;&&u(b`L_|wyUFs?Rn&Sk8 z_bJu9(`o%=_&N! #_^ht<1y*$y|+=K%lvN5M* W zFe79XqHNDY7O1c=3fJlxKcWX~q;`+YwlxK;dZ{!FxxFxEPMa!U(Dp!ZkgxfHooRgi zsa%S#3RD@LI8qCBQgODH p~aG)v#A6#)axqCC%rvA8@W#zug-LUdMZl_9nPj3 z3;Y=a6((3cPCTwzLxSzFgizQjU5ERkw{-~$#Hug=|JDC_%X?sLFADct$myD+7(4k# zH(X#S?#z7=9kDr2-z?FMo(a>B|B`kPATnJem>WC6l=H7U6XH6anE~poqtlrw7AN1B zky@COzk`5k#Q!`J ABUq?uJC?>zcUa32&suGcU1_r@~X!G~Qxg2}Z&8)8pT#R^mV`Jlb-|{FiRu~O7 z#FmbCBgJ%Gl1^h7K@f627`GXu $3wI1ID~j3r;eZiU?n0uN3=L9CwDeV&b@sgu^AhjA>tNP6 zw#i!u-K#B2ffKh6$LaBunYVmuw!H1jfG>eBR-H173jI)AyxyWAOd?^li}BQ4Ilk%R zjB|LpzIVNiO0;r+KD{O7J*N|FX1Ms>;2TbW;`UT!RMKO5C9tb%CH0Gy(^W8_(8%PC zrrpZ1=0EnzJ#*G|CyH+3*VZRP;_Wp(4a(cor0u5C57brLrmKPmZB|nr)7Lw%qYeyj zP>vYIcIVxq&u)@y@m!kt!*t;H_V6;ity1jV;NM;1l%jcj^rg2U?-sv5DKjN!_T|aS z`Q@7eKRrxa?i?RQu>Yg$vi`ugE-gb8`AJ9k6#R|+Y)+l9tkc;}$QPEpc>UYYXl?ol zS6SE1%eMl{yS5HU?i3!TXzVVx>@W2u4;IoSV!0`TEQsqvO46I97T)9}W{z4pG*wff zwAF8 uS`bPL&-)56DWX{1~S@cF6rh` zYomb*kIWObkLe(wo|dq{55&O|$=b8K7ylgY@9&HIMb7FLYN~d491{%c2&3+a(RmBX z;5P%_A1W3CC%JyW)OS`lE49-fLa+&){tBO(cl`qc{NN#U_}Z)DDR|S(KMALrH-$+ECY}BS;!$fc%;fM-r zh1^rZcEEg+1e0wbIaV9jDv0=k7-cx~LTYeu(A$ Do6%4I9pzG78PaG@{ zkKYO!bY8lA*?2{!Q>eWJjjl!{l3cls@qhMtati7;^2@8PCoBULLu|p<2r*{}_5!Qx z>yILu+hBd?zdBym9-w4VH6^nQuRLhee3~Fb;Wcb>2_ogr2ZlFqwlSDgxF}A&xK|!7 zT3`94e3?qP{c@R*ldG<7@8_ie$Q^cin0dEpY+OiqI8bE4y|A!Q{hdX;rF_{QN+jE) z7kB@XlfHriLLbYf&PaJUVrgM{InW1IU7?V|dm9@YYaZTbx~7icI1y&(zoegjusmEQ z4pA%}WPTxlzGnUHKG24X J;K LB6G5rL!rIwLpCq>d zGr}@u9LuQJKLG2AY(%2izVkU7SOH*Qr-vydiT-SDDHhvzC0|pg)Rur}QI8WM1(?7d z6RJi+Zf=zxW-!Mwg~0U*o(~V5&wzWP2ej5E!Z7T^PbXBv25BLb2ik@Lo3U7Zy1m3t zZ|f&C&QD!)HO6TDALV1P8Mq23gz0ZAcb;&K*b9VPaP3OHHv2>HK}^@g#2?-@*v{|B zL*(oCM??M1-4}vcq0Pp{qK2aY%oxJb%kMqm2AVI8z&-NmLGSIAn$`N2lBm+t#5$wR zbLNQ2Fv$1ULxn%T`uOPJ;OaKFdsPXwR97AD;Vu4{6f(M2nULW1y?~07O!*ZCe`VY3 zwrtHtSy$@_VU$<%T#!w{{FNT3WOIhkCHb~co)f{CB^Cz~op@2P1e$UYtZ0qte1KkA z&)lZ7L4QB1Z6za7l3m&*;2A;c{FE`N&q?j5W@a`PzW3C233gPsqo>WFAdA{s9byed z2T@H5o>WCfHMgOTCy3cfF&%{5#Z?R=#uJTx es1Gdi)5cth0Q%3ZOCm;bCE1&|Vu5YenGetArgxJxQ05?Wu#E)nJFT z=Je3ZY>_T*W;;yC+`Ij^kf+(K R5+08YHXi}&%8icjV>y>d}yFABq zAt7J@afn5i%bRF4$_Y_xg6>2jm36jqm0w;@6}9yaW0{mGg*Q(s#AeSx<|4W#^Y zMI1#od5&GhB-tD3x8}`lD~rNDpt$7ZWNrAu+0LeL=HT;(qx6wCq`|H|po$QS#U+N_ zNT-H3AtsU^iYh$#1*hMH+PH(MqabQpN5J;pVHmvXhx_{ew0!P?LY2j0^@=cHVzmw^ zcYc>c5Jm+Oj73mE*5AZH0bU~mUN7u|4(=II{td!gb4U#qfPtKav&eaPqiNU#k{f#` z+EaQ*@L3H{guDv?qYQ?>LU=8|gcwKQajY1mj Qn2L7U-w3wxI-LlvVgC zz5XJCesc{o4wpx`!$bEGPjEGEW?3zkD~l!!7{z+Z(1!*{LK)h 2EdoW)Zs*SRG*TRa4i%z<>`m&)n_GfRBgCNFR1J2&1^w7L;=u zTz-5!A9u&2ky=^^;a0S>7#TJ79EHbGTZ& 8x<&QEq7 z2~;2ejS agJv*8IYMvASHe54>&ort$kmo$&gc>!WUPO;G9A=IAn zo{Ix-2@7_}sxvB?1d6&(qTXgZ6DM?s`8aGwaHeo8Bj^(x?_vZIrp_bVEw$#J452XI z2C86+nDNZHjv8pD&{o^#xDI&Y0UyvX`c^rQ!0W05cBY%Qs0~M?uK+mFqC+*DZ`8w7 zXiPb2{m%5!&8E2I3*AN~P?5WZ96CFB6>0Q=a2}(`O}vrPwG)(B*JPxIcG2yZM&ztT zvD4vYK_L^q3mB#mE)X1f`>z R;SA+dve$+ zZl^?}(~V vSV@43UDLtl6$NB a#a;g zK#anRX};#c% $5vG)u#W=FJIv(ihTSz0=Y-t~rbsP$5zUn)dwnP9kv19ly&E$3D-cy|E zc~tKtg_5xwDf`?%htxTAc>33w$w4%}QNZtI@T=zo!z6Ui+3D @Q}z+|2HM zKj{)uar3An+=i#E6qsId9{wbVP~bzk-o2HyI3^HW@jV`NlAbUY(Z{;1Z15&Ob6D#I zw_YwqwW~Xdie_l0My=D^NvL=AYG|g{4=G=@%ht8`3Jk(a5aqydUhAU&0VBQ_2yMd) z1|+*FR#zcr9?N)>uu@l7YxsWsACu{S+^^ObXg4t}jUD`r2(2vASs;bkE$f<%f0T`D zkn3w+y|(ah4B9f*9Ihs|rt>fx_5Y2}F2q4{U8`PHw(w(++oEfw$xBNh@Qg&jBM) z)jIkL_lEQ?A19z0b;uVo<;+IgoN3!s2(f#ZZ!6zThljg@Y*TfMyibFr>2g0?Igcg0 z(eZ{LLF;f!wP$XAq&Suqd~_NdFftpXyk6H*#uZJ>t58SbueI=?YHqr)=R^+d&qFNU z(sD;aRZL@?#1b9>D*nA`IjP}|jcVA2TmzZVos;Wynj2?95sAaj0A-PnvjyZI4#RyE z>g#?4DkMFYZPNt`r&YpRSqo3`jV5WtW(&51yO(Bgt(uijq`DY?cfExX^+f7&H0Ans z`nk@6@UIozxZ0x>oDd_Dd}k m$x6n?|8EjX9VKFMFEGT^Lq7oU80n6qotOp3V z!a+l+kyWR}^g2 {+hRaBLD8O{Nw1Yx=`=@1`l6nyO?~);+K~Vh--AR zc72{}?P%cmFwMwm`f7k `ab3jh-doLc?#!6kl3Zq=ciBKicq=1FfIwy072X{W_wLZ98Y!}9 z2(m~$%Zqm+%fGf>>j+oOh?Sd`1uq4AHJZn`8v|#_vx5~7&B0*zTF@B*cpZotV5f^7 zH6JTHqNo}o^}LLFM^c%(w%eDhdw- (Umtk9(c(~%9{`1C_j7c{C&Ob~Yx*98;HAO@-KJ6Fpt>p#U&w+!DbT0HX z24oW>b!6>Y73E(aY(^Z@;SFwzFyfD xcCXW$rsCGzO5kMKx7MmR%FRuL`w%$9Q>OPDg{vOB5KFZ!F zJ6qYS9GM{vBdfB?7TKJVm24$hr6gsPO~#SCbdZtkot+sWba*bm@jTD(c|G?(_kDY% zbH3yA`CQj~UC$b2jd*L !zy-dZ#E95#z9KqC3e~=iF$yy|iarK;KFvE2|yi`|U&2TVFzSmi`ez%c>g`eIH zC?q94XfypRhg-cMnB 2!cAm>+Hw5A(i&$81dqP&<^ z6DB_+4^ _sFoy4I>kM;iDq(SU&jGOJeU(Ae}AIHSXoO>6pQMLDPDNJ@0VuAFxs@w zPrNHVdHvY=DFpxVRN<# 4Kn@%&d-xl7Oq4_a!}ZhT-=yorQ&kyNgluT#wKMuZ?p) z#(*K@G+%4{QaNC&dXk;aRth_xqShrZ&a)M{W7Z*o;4h2!U34qBS6z8baGs0+OsP{a zjr)!lZ6m{#l4S5;PCVoh8JfGW_mHzcO1#(QOLmuDP9TajC(LJvn;~MO@AS|}pUC+d zM 3qawWtYT`!1rr!cpq?) z(zb-tcB>f)@r~*!sgVw>r5E0gG7#}G4(gVP91!dAlX&Hsrj&^-m&fJti%Du&51e 9vF&C^sl{*T)E&@Z3R-P00Tx330S ; zU+jE7GrP}wlCtj#@0j-A2Kn&t;|TGj*BzC8{q3HM>)fcoR+aT(Ymo^hwg*cKoD1^b z7C(sv?sNtP=}jK2%=ogPlybEBcN%_?J~AtQyCKps@ij?wgTr|P`!YBi*`=)iCu*}+ zBZ=MDGp1nrGgr3z7f}*q3_5S#Jw|aw!D`noGx*~D=8f^^?=HWUr+!q+fF2w3CK0j7 zUb*6 Z_Fuc(3Q=xzwP+ke>W$G z+wXAt0tk^ioXR e_g)%v2T(=bCdxF!9JuKi1(+I4Ou3X_`YMi=?)8K)iC`V>*4$!tTAcZJ=! zm}2+M6AX8T+y&M9D1S~u{G)r0mhu(-$a+Tr@eDKBJ*|r`O=Z}P^3BAaYY`dDUnf8M z$QKwz>ev*sc>3r`7<~vu&c>%Zk*U)HFDnn8oBfiHY|Rbb9 -~iCIqc_8zBTVokOb+=
&c)H!QHyTvIfg=5wAyVt_QHVWr (`;)*tP$@TNS7mAZd`qJbNEOI ` zQF>|M7jw>*XT6%`cv$9pC*2d} 8PlU}-Te0$TbaXS9y z3gJYuY6@{?_``Cq%<6xr2MwZwJUN>Om)AW1e!eXJn6Iblm Pm{-mK? zKwnDgBz?XR|AE%yLW-pzBeL+qRXtC!lm_+Y`A6Dvv =lRcwl(~T y~sxlcwHNDa(FbAZmEsko5C9dPQ{wW&q zenHtkWzq}l*!R2wmC6LIar%iWPdB$^z!f==dx{N<7w)Xq&gX15uVUyZ{ev-E$#8&7 zKz*}^dj&|%TM2eLUh?(J60GkyW35j%duNrK3Q7YI-=2T4nEKJHMlRlA^fNnAo=@_p z2gPzryyCc0pLbTQ-tX(|B7pG8wLg*E#{mWN&5Nz(5>o#>ZO`w+4L^Xo)x3rr(;K8y ziS<`TM?>Zb*?*Q_W`3HZ#+z66UjvnHDX4lFj|}df=2xz$zf7y6Ay{Jqb;K$g-}74l z-oFD6IOmFi4edZ}g`q3S9)9$4`k&}|oEq<8D7eKb2p0s|$OaiFKj_4 Y c(w~~GS zJ0_V&@X%m`@pnMT>0K`qakv*MV1Wmm#8bfXnBuQey49b7(QGXHx< WN*4v1} zh`T)?_jl7w_!omh9@`m@w3!TBtG*LR?mYWdK}MB?a$B4RAhO#i!p%hWemJ`{sVA@2 z6xxIERdH?2alj$I$Lr^NP!0X}kmc0)no{Srdj33yVn4ZTV?~dVD#_jnKk%k!gS`Hq zy-Idt __1L<-+HcTMKR zRz8CF`pCraaNW{ ZVgkqMM?(XHt4ax**Ykg1i~XoQevQ gp z<~zQ9qGy%dyqjbE;$s}0m;Zo2* Q#emeV=DFVkr_e%}+Q9XY+rUaJTMyV3P+G zlubU#^srOmuaDkxad~f6cv%eT$X4AEed#0qxGw*z EmdYOGsF7R1g!-Y?rhr+NA92u(1lKW#fLHAyMd4iIux$# zuO G2a$n8N&Wv9KN zicIe8hbwW`M$r=Afg(Ko%<0oc6r(Z!fS)QwYEm5JSmU-1yyDNj7D)V9U#~VFqa?%` zzg?&)^T}C*xhkk@PJ3$$yrR|(L6snv9iJqQsJ9)^Q${q~%dpe^uYX0Q@|GV}1~Fe% z^$%DG^Pnl4f7#=*nx?%00#Hn{Ybx;-P!#@G@7&qk{Pyiz>5slX8 ;D4U)dyZOGH%(;g8yGlVKJNvd3&JEihD*r8SE3nfc z!^ G9GER-2P;HU>tRijAxV2W)nr-9qF_D?a6#@`_o-BzK&iQBWk#z zT>4j0f6;ged=t8+eSY&B5M4oZ1geIcHecfoJUl$YKz+T7G}0?7I Q6sO){;ixa z_KxejsdgBP@rg45m$~+zcCp` Ha7yX6Yc<@nh~ zh6u%sGRH~fr i<)`h1m2~gR5+c0Nrg;%(mZSZ=s@-kWotQc3qOM=E zw5&B1tIQh|!yIE#*1+oVlC2x*=;*k$M9~+1_~p+&%1~W(PI;72H|29`wC-B@ 1Sf^Fj1wXwZ6ptAtaiGhF+$5wpiLVU$d8ilZ!C2bKKf zudI>t0im(}B-JlQSXg@OPpMG JH5cca+Nus3=;D@-g`d3$ zKi|+OAFTKPS*%BERtY7mgQurVgiRnHE7$$xc?6=6^zU_g+(eQt5b2VF;lkKzMMcHK z8*c_+A1TEon~*7~vc|2j>tg6BTgZV7VML2c%s5=ny2SJ_M!4|KT4jH7e}BKom(3i? zh^fCK+zd^ZaQ!LA?OuHEy~YEkiQ&m&_#!W)0fOI5Gm{ST6#3qH(rc*}h3Fl~ChPrR z=pMJ1;iiHfBs6U%-Dgb)m#oHm|7%m0k?>lUn?QnYLL_6Cy^?UZ)p3urqX)L-sCpe7 zZ*ghq;ZIz<`L%0Y;HAre>q!^h8`o~$mt9Ys)NLl4+{tNz%l)v<5*WYlKh~?gyK|bI zF6t}>V;uFHZ{cP2(Ysi0r%vIp9@gk#DHx*dYO_Dav3 zAx))rm#V+W@@19VkerSyi2<`~g4zA!H(;|vqT&sh{CuFoA@UFFV-)5Ie^z>m^_(1h zltz}{+)}QlU;hvliobStpuO%R;}aXRpAK&gv)!(bq$N$LPOg=^KL0)u>($-)gxpXb zJyxJP#?mp&VHdM^#c(En?bX~Bh97Wu*!QOMk~(cIofzNTp&9y~ACdU#T I=j_ zSwEv!*PeB*o)j8!ZwgXU^?Q}aNk^%Daa=_RQY@uOzj8z5hSHiudXIl?m~b#@o>)#9 z-( pvr}UyGn8V@2g;+aV_CvIbX3r-MI?9&cU&IQsyaN`$pV~$U$4!b=X%S=EUAc4< zdiYlAKV$aBQDdzrnN&*&>7F4=7NKnPnDfq5%hdwkeJ9ZZ=VxU*p(1BIC8Dp(up49N z$cvU|FOkr{vd(QgtAy%p+1S}!=3P)e>A*9)-0?f5K{|=GxZ9KVX!&ro7d)uzq9*Vf zj6{qrekU3Gm!c; *=4;oJfzXC&BKWi#Nobmdb&2(e2#f?*XA6yOVga$`n#G~!g zpk`{83E@S1@!%hRI<7eC)$$oA1au9Ca2W|ldnppv6hLZlVrjW 8 zrkR9hXrTZYK8_ j&`Tfw->?R!c4lnW3jo(1f1FjYB3Z?Dt9t9KYGG)AruSjFL}YhUBlmQ=_$a!jH&o z4a2_X+sF?n9fYxbRHo?3D=C_7PUUushq8>GYDjl?w`q!T!Nf_dCzY2l{w}hlcc2Tc zQpvqlN0~<~K*- Zp+?QZ}4f8liha zR!hL3FeO)*-B!d)Lcg#-qwfJ*rf##BQb?oOFSRw&btFGwIt}s#tkrl;kk9dEu)^Ie z8$)(a=l}S8q)grN;b$5=ow8+g fA3A$W<(OP2Uqka4&w z+YKnwo4Ozk$| 1 z(d8;4c(dD=4w_v~@0D6DnXpt8lbecRb78mAEa;}@i9hd&c;)KlPUL|sA;TbF!wlS6 zAwZ|zDz4O#)6Bh5B6U_83=+-{zd9iepQmwxMsgC^+>cXHTvto3Rj)4A-yxqgH^}Cp zqii~brQJ-J=O+I~QC3X;z6|1* @l2?4h~Z_2*T45W#V!@@ZT1-+=Q zu%&gx)PvVRmRaF6$n2A29#r&?LFpI?Z;3fH20k%kGJwiZdX>jykr6 DrLLpi2bfDb$PYNzLy74iWlPdJ?B2TAm=FyWe zF?YG0yFfjb30-TGa4OMUcQb@8s^`W-5jgN?zHoVFUA40d7s0 !M9m*+(oXVq zv6@@=uloA>{)K$mHV3%^ ~MztytWdzM)VAo zjzewCUz9KU>9I*aL}OJa?NQ8Zd%6kQON3}xAM2=ymrF^91!|d+yP4 M3mTU1E$ <9 zLx9j-zl*>|btfnNhDbD-y|VFINwMa)Y}M-iceDty9!8E#zWiVzk)wJr8NtZw;^Okx zSN!qbgP5YWCXluI2OfrcLRn3Z6xlWLA_ul0%}VW>AEBM(K^iF#5CaX*Z=!T=pLo@~ z*yj~Ly9TLunqPSUy;7r_jO%gn#o$MvEjxoeqm`=Gw>=*BIf%B_;>lyfZ<|%1O0}C$ z2*w X3g$u+a!(Y74;x)W5g2w8L^-4#p82CoIt>7W6I(Q891>pC=rVbltS1*Q!gT zmX=_ 8Wh*hLob;gQ8h~_3P5UQB9OWj2>l47 pAbl`Mi~?T$fVE(jj3v%M3? z;kHvk&f`=-HOqE>B)8eCerjjmb&_-YBeMKwPGi5`=0O~8h7V=Uk3EZ=GmHHyP!lBf zD$PetWYGrX3wnWtB2O(TRQW`nrNBOLYu)LjFvGwbG6eE(>`oW{q!T#>D(-&p73Lvx zabJ4{yU6WhzhY8^ux186wD?W^Mh& }`cUFq1n+F$3q@E{tqq`&{?NQ9U^&0FsYV2QGBD+~ z{8)2{sa%^akm&dTqRl%~PM)Hu_0z=B^g=2^NXo?&M{F5Fh{O8C%vhJkuTZF1ctMJl z8G7NtHTLNfm|EyW>Zv^5I~(^eVtuA$`1){i<~aWQlbgoGK(ULu`Gg!gy@Lsmpv!kw z50UdzAXZC9VB*Q?kfvkJN(f!lPr4I@!F{V^9}f#ao)lWkO*-mDyAyS*-@S8v;%JF< zb4fM =|V+F+>AfmErT_& zWB%ELYT!*c->4N8G&$fDI){`{B|!tBdtne_Wp>N}BA}(ATRX|!WsA&%W^x|9j+&3{ zUOtBqoC_r4(^j&Y mhfh>GpEq-Oe2KF5^Lx*{6rbA2vh^=M(z|bzU))G|Dm{E&5c% zEUBO~c3sJ8 Gvh7bePpQJ1r#jjd=DppJQewCdFt20xd`1nLIma++?okhr7DkYOS z`b{Dn6VA=?+g(XUEqyi*9VoS!N{as@>lVO*yrdTp&u!o5%`GU>enoh!WJA-jORZ-U zi}6eKry20aPhc!3SL%jrynZp^Z&@wvMr=(fZ?OiTOl)eWK`dk=Xoz$~Uz>lKwCm+B z$=fD>FuxjJ=if+IlB0wJ(q9AQM0hGqeV1Z=Gf1#&VGdYp*LlTS;x4E-cQ&_O7KIrt zAQ=i@d!z fY5Eyvo*KUfsWltsY1{sQ!8Mz}C3?3zKoSpia` z+|=`bF#0AqDa7mI6g?D_XGX3mt##_WOFSV>-${n(<(u&Uy7h*K%*vG(*{J`q`-d3U z1lo6Huu_IgO8m);aLC-bSrx)R^!h^P-DlNzZan{_$dxpYurCGx3Yp|+S&ZH2fjrRg z5 O~IZh)P-r3=QV=o``RUEZ$ z#B*IZ{p;s7tWVO6aq-rRo^3}N?! h?@wIz98pUZrmbgw~%NJu;-oqMkoeibx z^@< zY(@?~c0p2%E*MM8)!o&f|}7e|xmX6VSmO zXVbs&)GN&_xU&CNN z~7s<;XMo(qbMb837!eM^Z{C z?
dXJ$h~wsQ 2|PZ!f~Rb;SChb+ z2h(Z`VZ{)6y(pZ6vqC11x2$dckDH)!BpZ0K5Ti#$^htphOG!V;n#{i1zl4myjTw5I zR(BGTeNQWBbMpdjM60z}wpkj!npIxnL4}_f+mSZsR{pM0Li>Y8Wq Y8R513itml?PPPA|8!W&*&$`MykRK)2x2#KoZ5oYr=(sL7?=%WeXmvLh0*c zMs?`{P?rA5)~c~sU!Z3$3I9HzY|+;SjUGhttNmPYQ#tPO-}>p4OX?AJBBST#)RCNk zpRpo$Q8fX~I=o3xSqB;vnhWnWYUusK+6{c!mzRIi9BRu2YO}Y^CGzYW-rVz;lxjq& zOa8TgN){F?ukS&0D(8y+o*1KMv|*j%j0(`laU*y1?~=KUfor@6Uj!}%jXs!^LPiX< zeU?k|@+XtzueEW7s2)p4tED&{hr;yNZ;r1fur)cSZ3hp;0O{~*ltsTzU!xqn*(MB3 zCjvW;m=cD`_6NRpGfTrYhE(%wzW33Tcw=&_B~S1nhlG^PD)GXO8*%;VsQ*N0G(1fw z mCEgyr_ nTq4GH`_-_+a=%f;Z_>FTi*kS0!$b6UmC`r|9bSOCtEIh~3fs z86c?t>4GiH7F-(#e3)Hi)cuY8 w zxpOMpc*4fYDk!0UPfl8?naoQMH(b#_p`|%74VIo)Q01CWo!^!Iodvqo5#%(~DE}xB z$YttcOLkQcrk;A;a|!#MLNWg-wy-`s(F)R{0tVr%<1zUX-Vz(@4HfUnm*D _{Df-D8$TlA(U_ zg6Fe45YJ3^!d+7orji7!4cRj8=&ros)0f`Sz&Q}eOstk{48)S^eYbw~9fX q{9U+B+0Z-x}O6#GM-$X2F;`>_0Q zC-9PM(8FyCmPV<{dYBuK#CQ`mL2Z*R9o}D7^loZSXH*Cq?sn_ekizi(5yGYc%;G&* zoAYWmr%iCfkn-0%_boFQjR!Ck2O`v9 Ou|Ga>NKE9bTGky zQTkfdvbK