From 5ddf55ab5253033d0c17829dc7f259bc4a9265b7 Mon Sep 17 00:00:00 2001 From: cmaceves <44014693+cmaceves@users.noreply.github.com> Date: Tue, 16 Jul 2019 10:52:15 -0700 Subject: [PATCH 1/4] Update views.py --- code/views.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/views.py b/code/views.py index ffe0d10..c4a0447 100644 --- a/code/views.py +++ b/code/views.py @@ -690,7 +690,6 @@ def processcomparemultivariate(): with open(new_analysis_filename, 'wb') as f: f.write(r.content) - #output_png = os.path.join("./tempuploads", str(uuid.uuid4())) - output_png = ("./tempuploads") + output_png = os.path.join("./tempuploads", task_id) redu_pca.project_new_data(new_analysis_filename, output_png) - return send_file("./tempuploads/index.html") + return send_file("./tempuploads/%s/index.html" %(task_id)) From f9e59a06b1c00b793e2d9e9aa69f1e79c48a8048 Mon Sep 17 00:00:00 2001 From: cmaceves <44014693+cmaceves@users.noreply.github.com> Date: Wed, 24 Jul 2019 13:41:02 -0700 Subject: [PATCH 2/4] Add files via upload --- code/redu_pca.py | 49 ++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/code/redu_pca.py b/code/redu_pca.py index 51febd5..abfe7cf 100644 --- a/code/redu_pca.py +++ b/code/redu_pca.py @@ -10,19 +10,14 @@ from skbio.stats.ordination import OrdinationResults from emperor import Emperor import scipy.sparse as sps - - -PATH_TO_COMPONENT_MATRIX = "./component_matrix.csv" #eigenvectors output by calculate_master_projection -PATH_TO_ORIGINAL_PCA = "./original_pca.csv" #original PCA matrix of the original files -PATH_TO_ORIGINAL_MAPPING_FILE = "./all_sampleinformation.tsv" #global ReDU metadata - +import config ### Given a file input occurrence table, creates the eigen vectors file defined above PATH_TO_COMPONENT_MATRIX, and PCA project of these files PATH_TO_ORIGINAL_PCA def calculate_master_projection(input_file_occurrences_table, components = 5): print("made it to original projection function") #load data from master GNPS occurance table into memory df_temp = pd.read_csv(input_file_occurrences_table, sep = "\t") - + all_compound_occurances = df_temp["Compound_Name"] all_file_occurances = df_temp["full_CCMS_path"] @@ -49,14 +44,21 @@ def calculate_master_projection(input_file_occurrences_table, components = 5): #convert it into the correct format for the return sparse_occ_matrix = pd.DataFrame(index = list(unique_compounds), columns = list(unique_sample), data = matrix) - - #separate the sparse matrix into a compound list, value matrix, and samples names - compound_list = list(sparse_occ_matrix.index) - sample_list = list(sparse_occ_matrix.columns) - new_matrix = sparse_occ_matrix.values.T #align so that the "features" are column headers - - #format the sample list so it can be merged later with metadata - sample_list = [("f." + item) for item in sample_list] + print(sparse_occ_matrix.shape) + + #bring in metadata + master_metadata_file = pd.read_csv(config.PATH_TO_ORIGINAL_MAPPING_FILE, "\t") + master_sample_list = master_metadata_file["filename"].tolist() + + #reformatting the sample names for comparison + sample_list = ["f." + item for item in list(sparse_occ_matrix.columns)] + sparse_occ_matrix.columns = sample_list + + #fitlering out samples thta are not contained within the metadata + sparse_occ_matrix = sparse_occ_matrix.loc[:, sparse_occ_matrix.columns.isin(master_sample_list)] + new_sample_list = sparse_occ_matrix.columns + compound_list = list(sparse_occ_matrix.index) + new_matrix = sparse_occ_matrix.T.values #align so that the "features" are column headers #bring sklearn components into play pca = PCA(n_components = components) #creating the instance @@ -71,20 +73,20 @@ def calculate_master_projection(input_file_occurrences_table, components = 5): #place eigenvalues and percent variance on the end of this file so it can be used for emperor projection df_temp.loc[len(compound_list)] = eigenvalues df_temp.loc[len(compound_list)+1] = percent_variance - df_temp.to_csv("./component_matrix.csv") + df_temp.to_csv(config.PATH_TO_COMPONENT_MATRIX) sklearn_output = pca.transform(new_matrix) #using sklearn to transform the output #saving the "master pca" calculated by this function as a csv - df_temp = pd.DataFrame(data = sklearn_output, index = sample_list) - df_temp.to_csv("./original_pca.csv") + df_temp = pd.DataFrame(data = sklearn_output, index = new_sample_list) + df_temp.to_csv(config.PATH_TO_ORIGINAL_PCA) ### Given a new file occurrence table, creates a projection of the new data along with the old data and saves as a png output def project_new_data(new_file_occurrence_table, output_file): new_matrix = np.array([]) file_list = [] - component_matrix = pd.read_csv(PATH_TO_COMPONENT_MATRIX, sep = ",") #read in the eigenvectors + component_matrix = pd.read_csv(config.PATH_TO_COMPONENT_MATRIX, sep = ",") #read in the eigenvectors #grab the eigenvalues, percent explained variance values, and then drop them from the dataframe eigenvalues = list(component_matrix.iloc[-2,:])[1:] @@ -134,7 +136,7 @@ def project_new_data(new_file_occurrence_table, output_file): new_pca_df["type"] = "new" #load and format the original pca - original_pca_df = pd.read_csv(PATH_TO_ORIGINAL_PCA, sep = ",") + original_pca_df = pd.read_csv(config.PATH_TO_ORIGINAL_PCA, sep = ",") original_pca_df.rename(columns = {'Unnamed: 0': 'SampleID'}, inplace = True) original_pca_df.set_index(['SampleID'], inplace=True) original_pca_df["type"] = "OG" @@ -159,17 +161,20 @@ def emperor_output(sklearn_output, full_file_list, eigenvalues, percent_variance ores = OrdinationResults(long_method_name = "principal component analysis", short_method_name = "pcoa", eigvals = eigvals, samples = samples, proportion_explained = p_explained) #this first part is for the global metadata file - global_metadata = pd.read_csv(PATH_TO_ORIGINAL_MAPPING_FILE, sep = "\t") + global_metadata = pd.read_csv(config.PATH_TO_ORIGINAL_MAPPING_FILE, sep = "\t") + global_metadata_headers = global_metadata.columns.tolist() global_metadata.rename(columns = {'filename': 'SampleID'}, inplace = True) global_metadata["type"] = "Global Data" global_metadata.set_index("SampleID", inplace = True) - #this part is for the user uploaded metadata file metadata_uploaded = pd.DataFrame({"SampleID": new_files, "type":["Your Data"] * len(new_files)}) + for item in global_metadata_headers: + metadata_uploaded[item] = ["Your Data"] * len(new_files) metadata_uploaded.set_index("SampleID", inplace = True) common = pd.concat([global_metadata, metadata_uploaded]) + #so you need to align the metadata and the files contained within the ordination file BEFORE feeding it into the Emperor thing otherwise it doesn't like to output results final_metadata, unused = common.align(samples, join = "right", axis = 0) From bda36fa57430d20b94ea8e74db72c7217ba30e42 Mon Sep 17 00:00:00 2001 From: cmaceves <44014693+cmaceves@users.noreply.github.com> Date: Wed, 21 Aug 2019 13:29:06 -0700 Subject: [PATCH 3/4] placing the redu gif logo on the homepage --- code/templates/homepage.html | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/code/templates/homepage.html b/code/templates/homepage.html index 9447c54..df95e8c 100644 --- a/code/templates/homepage.html +++ b/code/templates/homepage.html @@ -6,7 +6,7 @@
Chemicals were annotated via GNPS library matching (default parameters) in all samples. This options provides the ability to see how many times a chemical annotation was observed, the files in which in which it was observed, and a link to the sample information associated with the chemical annotation.
++ ((total_compounds)) total unique chemicals were annotated in all files across ReDU. + This encompasses ((total_identifications)) MS2 identifications were annotated via GNPS library matching (default parameters) in all samples with repeated identifications per file removed. + This options provides the ability to see how many times a chemical annotation was observed, the files in which in which it was observed, and a link to the sample information associated with the chemical annotation.
@@ -117,7 +120,7 @@(Yfl$M5XN|sl6T7cV43! zwOap@x9*$14c)Tv&9@AmT1I*#nj93>0y!cOSy3(u!~@dC$XQ2gC~s+3k2}Z>pkv%$ z=!)kDgm1lm(WYey<+ptQNHDv*f}0fnTY4}Cl>FiwofHF=<7|+-T|}^Kt%Fit{5o4O zuGX#jUKGjG_pJ4^if`+6mW)(OJvKrVUGDsHCpwUy{c$useH!}ukGnq&6XxS>Y~e?x zvF9JQTP0>5*XNo|d)lsAJ$I&fW6`gFc6U4lo=#@Tj%6&Wo_z$;w3zXu78gVLKiZ@p zv`0%vO}`h&f&wc1Z5_kjdeA=|;CsBxyo#!fL6*mFe%YTn4Fid8eCebyXNX zy>~@z$p4}Krxag9wpf2!wpVI{B(wp4sKlR80jaTjk_JriWakg5KRZXvCrN`x)%r
(Koeu?pu7 zqhrie#oMCz62>3Yla-q?y@(M|pk(GOz~#nT CgI*uLty}@TO~~--?y{cP5gHD*#TMj9q{gMIk^BJ&Qoc7-|-^1mb3# zUo>7o%GiTucoRg3R8xO Ko2%%@T$Yj%P5h)f!(3s&iNcKZw#OnMG@FG zMDV_Vo}}rsR+*6?N)SEEc?DOH92PU8KFY78W$3i2f1TR%@r}Fs%#m88Y&G_WxAi=B zI%J+#6NEbbbkPV>wlmpkHOueQO|y{{#xNj5%rSu9nTR0XNrtlf5MxL~$ha^X>_=1o zZ-kKW8yOMF7Nz%JgfJ|Uh={O%X>#+jpb(<4P(90Jg4FJx1_5%^zBH=2G&M6Zsfo7G zfC@wD&8qtcV%Z|<@n2lX{z~mrYE11kP*hak;BvKIIKbREy}h&ZOLPuJAG7i&UJnI< zZv6(srszqHFreU`)hCj;Yo3&3C6o!OBA%sWfUH4GtMIRw4{%O>7OC)O%I{c{gI9Ni zQJv9rTI%;=c4_WFnvB;n5Gu+5RhjLp$5O`Fjzm>rE~+ujoUC}2NOj7Uaw4s4AAUF# z{xWaOU4t}e7WYs$C++FiJWjNr^^Yjva;PXVU#rbm Stzl}5UztY`0Uf^|?euNW?F zoTd)XhjafZ=?uaxt#%&udEai_;ZP9sAIDGMe)@BX3>^P)Z85sz!#S1Ym=3NcIt6Pt z@(M@lB9ESW>gRow;`98sWd{P{j7}i=MW-<9i+bb3&d!u28SlrRwvzUM8itz)%4;=A zLE<}o)2*2eggZXmzQ|z=`q*HVacMn3S({ {o2seweNwLj0@JWl>BCtwAk*2zAvJgk%a zUtPB%-4r`{82iy GxqDLA#)+@yLcc|?7K1r`ra9&@l@qgE{Rm+6W^Cvw| zA}>MptlI5x{XUtrX8Gh=Hgs7~u~pv>5G|{t)DsN=!8}@;l7xbwixmNZlvh2g?ft6k z+d1oMZ#B@@8S3IY2fal-TOKsN?Nhhr3JABW!~~SaIf!Jqb^R8JqPEw#!}C(>0g=P( zh=S*1w*kf|Vs+Bzmrw+tdc%8+ Xh@;%103i;s(=2%`IwcM~L_1-o$wbI|=d z0n3@Y7 _tLC~~!|(QVvo`)~ zQO##0y`(eeN55Wtm1o*&@iP1}KDIY;m1m>+4hG7q`>}Bj)Tg70{O^3)<^NPl{^iVh zTY8zHAV4g0d_pXMLPZdqxqwd}>4~7sAethz5}~qk0zMRim=%anW|?2{Sy%|Puu4dU z;jc5-jV5CPf$G_s#+q6{OfG1}zM0uxMIq5zV03&fgbkP^L(lE*bt_T~K_Tm>er!-0 zHN?Agm9U@T5E^lcomQvBuViEqbP1{hKfRw)Fn<=kLE;&NqgAA@Kr1CH>j7MDG@Y&s zfn-qWgrEfzMQSI37u2#j!t ekC>0M_PGcI^`ks;BB3e@t&QLw3( zrn2G9eKsNKE4#|f&q{ avG9mv||FI zZ^7vmQYqp*ix>iRPQU?G5$L6tvaPZyka{zhG1N=5B;nKh++#n^JElC0u#(t&pQGcN zlrsX&MfDBCZ3KNWH`%KUW8k8#+*T%_6|?2U_fkjgN$ p?7(zibx-wT|L>(FN{u8`J z4(xTl%-WiMpAL8{6<*17ko4NdTcKXZc2mFr;1!OzXCgnSAn;w@CRHO>vr|I@xCe)C zr)EiQ+VRczEDHqc1ut`0*Sb3pq0Q1Q4Po$s;u10(oqq+xjV?@OgzDh$Oce}&KnIjN z&bu>RPM_ELs>aYgYM$!a-4~gv>`w-sr6F$!-{b^VsbuS(1VD2+VK@86aXV$vkN7%6 zM{!j@4%8k8s$|&_d1$@5uPTuv2D0rp_pG>i|5)Lno}E&Lp&Z*ihC#D)dAz>Ejb$cj zPi9o}otO8c< OvftTOjR>vf8?%Qf9CawRCrhE zlKbs~>LMI%i#^ Occ&B*i?8fZ`=l?}Ud z&NzVi@1&y~ n?X66V&)@_zV zNE_l(|1uHshkyP3CKv++jRH_cU)w(rUk_4afVGbQXn~<=pk;c4bAx&iD2R-FY+_^c zAxz~bQOx{7f*uhwlgj$m#U?pnry|onfAR9!aZm+sBrAU00Rw2<&P>cZifguK3@)av zE=yuY 5RF1Zh1aXTpse3$PC^nLWrl$jcXAC*Um3#;;06_yawT>3iFQO)2c>sx6# z!sBlUz#1@qtBX$too2qZ9a7&?JrXi)@nQ(ousixa-*hMob+P}m3n`y#LwYn-y_g{e zDdCvIGAdT_DsT^svN3pk>@y7zw$b^`x2r~mZvZ%<2ZoxS3&Fva_ctdy1=7bi)x>sI zvMh48S|)BDej|tHd|zM(_P1*Tt-xWx`< _|%0VEa0q0Ega9_EDhUuHrx z?oc}-l5F554k@gMt+DaLL1{clXKmJ~T&H}R$V8s7n?c!;etvY;P#=!N=-F$`S;ui6 zK1kuTKuqUAf)o9a#~3lmXjZxn3~oGd?d05=DF_QVCtim8X#sR#DN&wL^8Fs}ObhY{ zjQFU}gEufFMz_V~1RxkjOJj0hB7n#$%^wq&P`UaU4C*0~OK=Uin@uqJUymg56HI M^6#YR!9vu4F!WZ+{yx|PUhCw<6a%)R||hduCK zT2~)=KJO~8np=p p(aOyNJ0%L84Rj_!__O zr^Yp8D}m7B(Ti^8FIRlyy_@{MTW+P1_tbY@BJ2b;xLX2nb%p6da7?6tg*N{(vFZd? zB)-V;EGUP_Jq{B#pnL2RKP+G$$oM?2hokHFtrz!LZm-wiNm$Ci&!xJV@@bQ%i=6)m zi@lqe4ZdHz;5lMts`Wzq$@O+lqvs4aAKE=)qukIx9&cNq>PdVE1$|x3!8rcx5&(nA zXdRe-NOzz65ff>`_b?R50ni9Gx#OreG4-?Fe4K%t1nfg~r5v?Rux2e6D+L@s`*EF1 zVJ7)2pY&4Z9iKOA0m7!*Iy0R!(i?*wNH72@Df&YWHQ1HjO2)y}0XvbCK4LYfi9c}= z&7Bb1U^xCQcodqBC;0nc&t-(HXWsFUvdIbEnhZu<^M`{f2>w14F!m>1RQcFArKf5F zIw$!1@)w8cM#z8Du!D%oLC*gtdSET-*;qqS;Sp>hgpB1M)j VK!p6 ELR2@Q!|+&qM?-DznlFS1-MH`_Bp1PZ)9WG- z-Mpx+#9(nq)8)qO%R#ilD!}1`hXiYtm&st|mcPr>10492N`9HN=ftn&@W#16s_~aY znrP{ln^ZL(m4&Jb_#FBA*F-dvlaDxzn{d~54`jBSO %DH%qlBz7L! zEo2MrjEbE|>`#g6o7p;?NYC*SaWF? jdQa|VSGR~6Wj)f&!aPGr>bBi8ead-zNHxk_*(3eULw ;#d&^1Ay{p-Y7)#ETWS`G3(W(BhO6&B;i@B%_-zz&Rv7f{%v6-xzVLbQEYz-H) z a3^Hr;eVn V zDTBQi);8_{{P~&i;krm=Pj5J2S~bCekExh(yuaxIWqFbhKJI<&D6WaxU9WF4mcvwf z(@qwY3&}~UX74*P{kmobFWD}laE^!KXJGI8feKVSra9m&&+#(t;Z!#n$c{uN`ztPt zVZKPwSbq}2&~E4xm>ARKQkZ
*>g+@ygB* ;m|(P>Vfe(Pi&J5YL`?)3($4}hP0-EWXzJq^ z!~nx8FOf>UbVYc%2R4k X;>r6fAGI10J<=|L zD)cN&!-RmXTCN%h-reHERb%<(Yz9*hNc|j#CDaKy;u!VZ@cK)yAA+K2YuA%-wB`BF zJXFB`NaDq|YI`yeh^6$MINyVC0L&V6?;SynoNW>ZKn>2pB82LoMiB%{xHsG?6m;wO zz+?MMHxX2%iBKJM6(jpm*b7+AmH|y%eQp`{>kQ2BZ^rNc2qj(w*OwrE5R6~8|ALZG z0%RzF$b`_ahj|ZSWJSyhk Ag;(5EsBA=F!c zOtc^$ssTNHgY*4nb KR0z8y_<_^}Em?jPs{>SX(nEC&DX`Ayizy>H ro$taH5zzqcM`x>U;i?#LnPS5TU%ZO?wW@r@md`AQwpEZW* z#*9L)$B`)bdfCUM*<4a8U~oc9J_=fkBP+2$%j*=+kR-~1IV!owhp9+Z#yyTpa|+qJ zz#R>0RrvdRw?8-Q>)Gornpv^eWSRmogH7bmxwu+xB}VZW07u5zT+hf<*|G6Xbq82N zwIR=F;)}IE^vSPJa%oerA$P4)AN?j{NmFb60rCstt!&~pSC0E0%f?}Cqhn%OYolYe zc)Y3s&fx;Pri*4^lu*WDYpO1=Ay9a+X^Z9KJEId}VOU(A-5tIHiTUDlmV3k3SX1Qe zWvZ{3$^+d+^CW>@6!51NtwzrL5f!EynnB(kYn#GgT@5IxD1@1UX!6QjdL2K8fKl;- z26i9(Jyr$Y?NaF#R})*NZI_)*5CPstOfgPHU$dOKxQX~r*1Qu9N<1&W;Pf5^LZh B5>i2J{4drX@nV&BAC1wVGV4&{E*jRwf2}-|t8n4^jU>svyUuoYblE zfRhvp=1we>LP^>POPD7oFC4AJ#LR*~ApV&N8%29$^ICxu%1QwtEI7Ihe~EmvmG};; zL;djhN+duI36=T1xS)W6lktb`>OG`L1xZH9eLO}4%YiW{I8DrM^PiQkVRC>11wM#a zFJ|`EzFCk-=lSsyy~{H! jT~v)F*((4%fmneKn8}F z2F*~TFp24{?N(bPfrYRwA19bWm{lAncEHU<*O4GFRn;yJM}^Zj>?`nfn7NA*wAtrR z&(2$PshJWdos6;A7^n$O&vsuK@*50fh1axEsD>$IYIz##Ya)T+`+k%#-)R |9*z#{?|~&y 9RQ-Bh6#2Ea!v^fHra`zrI|rbP+pv~gJHJ=#G4RUIQ;o#c mw6ENU#pNSydO%sV>L0j=O+E}rE{i{cNnG$S*R!^51|+T=)yy!E-ClH wo)U0<8T`{e`KPe4Shj$Tja_l-bx3051l^X{N~sarYBEC1v(N`t zBHw%Lh9vs_5(Z4E>YHh0jgCJQ@EX!ws;Ja+q7vXl*v!y ms0x(%))5L(GuB^RI?G6aUDVwE%SMp9J mYWq2ZUXZgUwmJg z9e;5qr3c4gD9F$DXo>l}i7?P?9j7Z&@r^B|cvv;*0trd6BvIq>Lmz28Ix}S;08FS) z#)Bz1ggxQqaL OsP3 z2w1|$2bLhHA$$Zlp YXk;}tK1M_1A{%LdFJji zmpfnfmkl^qWI}0w%&iG1v&&C=x$kYUQVa-n;Js-WE;O!`&b7Q}RHSK=+c9gVjVKtg zU?=nGjyBAR66XTQ2U3WUVZL&J;rD>o=&*o5JT{_)Cej#b80iBMeet}J3OPmsZ#F4L zI0s^|W1ZLH5ksc~2+F4Pt3rKbc-Ur%Mc}x(C&+OpV5DQ510wZi9ASNJ%^7lX+HNam zZu|a@` qUo^G~>_9^?KKG1Y6OAK9_duDhl2M4tF-c>qFtk|YjB;4C0JrKT@Pl0n z0nI;8^^6P+hmI0IXgh4ahBA(|Fh!q<;N727SILn=KT8?Vp`b2tac^6zn<$;Pq7*pX zMj4}-p*@5n5AT=$SQ)-MkwT|>vIXR%21q~5NePCvW`~DMN0A7b>oa}NG_&RX1P >?=x2j{m2o%rlx< 6Sv>V@YcGY+_E Ji7nP0K67FRiTCF!J z@mIx6(&sBv2Oz_m>+8WCa*Y)cc-ya+uFNGUy_iP=WM_^MOJ#?SqRN-lp9d$}s%38- zt-C3`ah)m#12cMHM!N}R|Jw1ajT9~xDpx^hfm}(FYzF%;fy^(4xwZ?cvxb>zBlAt< zJY#B}B=Pc!c;c;#+R2^+S=O5g94Wd_#q`Hw4@TML3%L-Fb?)NHlPz8=QX4ZDg2*Mf zJG_`_#HNQ3%tklU$q-6^9 b%E?;XOeFqx=rqPtr6N)pbJNl2DLomO zUsz}R&;uh!Jx0+;b(NO37zCtUcM=0=Qc~n#5^hDoOcKx(K#ZstYWHQK0TKp*kv}L^ zfH}4ZeLUka)@=o&JHUX(^3j&(bwCaSkfP-PxEy3j=K23!7%?Mg9n2sXGD0;5GX(M< z)fh=^KsW=856sUm!9l3T;0J?YDrC`S$pl&w2LYiU@<`aqn*4*7aB&nrq) N}0pn>7VL3${9{M+>AR;L6X1+a9GNDqP`CkQ~oDF|E$5GkMWrh-yTCYs1oZUm`pI=O0ysQ}* zcX>ulf%?d_rx3i@Z-Um0p_gM{>35V~0wZU(R~uyWIF`Pf$S;nCGA;ysqmx)+W_Bz+ zJb%+_uVjX%xuZ4blMV2H{z@W(c||ui1d6Z0t0``8q!{KXbAXAC$7JcPdEZ}D9xKt) zR;U!S4f?L^>3HedSVIrbqB)&A05D*XK }zoE+Fi}Cjy}#m_(hwUTxToVtv#Sc<6JbPsK8guB;;pwbMj1cS=p*UHrr%d ziC;pXz*U%i^H#;SBWk;J&9%(arY>TV%)9oA`T{o*LL(m#{Se_DlcuM;Ccwt8>wK9& zy6jq*$tRXT{x+hKfzrxti>xhl=mCpubpPmeESQ13Ho9yPC{gGU+QoRbAB+c;`^h4f z!~4xh-X};Y>8K44-nucGVXW0!C)asB&jr$} }Ly3s~nYyqlsF8!!C1^QvxMcJ5b2w;e)%ggihh7rl zXk{!xwcyW|{Ri1-lP%_l(Ln0^2jT!BumneQ`;Uos0wAdM4bJtm(%49FO|GrCb4kDy z=64fV$&j|=8z(2SwqTm-B{Gf&SC#7CLuukvLC!O>Jfc%9nyOT@&A^pb2Lt)EG?f63 zJmapI{BKmSYxlVp uyv3f!=y9F zonkye74g&4lT`!?8WO2tAoqd*z628i*+G6_a!hx%Uw&!!nGm%37w*kNsu4=`+RJYN z0;6}EuhHaCnZ1H&%KZ#}9t&VRWz$-{;Q7Qn8R&4vT-wX4;T*Z ~o%^gro6zH1Ss z@zkI5(_KeK+N)~LD~r* rz2;u#j&Yqr8`Xe!3)5ttb; zPrIB6REJz|vC{jgTO_N{!f4K1?LS-+0skf@QW8qH&C!x{9R~j`2gwK%ddEjgF=F;Z zyWPu6myx=?;QU_6({7+nq|8xjuxFSm@Pie$PTC5K*W}GEbsmuI9Eft1tr1}vN>ptE zh R*xe;LAHvha` z5uy)g=`0%q2XJ2kHG^eKWwgS4Bm-9E*}OMd=t!We7-hou-ns#;+W+j2X^8$7h5Qk9~{BqQA>XJ&9>fET$BIR=edo5>q1IPv`i{ zi@tN;=26gH`~6grT<+Ha7P+wTR+)|U`I`I5LHvap^7ds1i0t_PBksK7n(DfBzY;=7 zp@bfK2uPKVNK->mic%FtL=9DnB1n-c2{rW4JA~dl($P>vx-^j{0@AS{Sir`~`|Z7d z``hQ7i*t8Y?$+hXnsYsKjA#6x8`)s6;!_Zmp7#Y10{_{J4`o(_*%+}H>lcJ^#b2|D z;I$nTzQmaG!{!nUqKb_Y%Y#h DX|b-%y#SN+sS@H_X(b6$uS zB5C5Mu vEdeuDld_{fxw2vT*~{lo>8gq zryqSk&vsE5>&qjGj5bws%nT mlR&;O9vP(AxtYjw9lUw*7Lg8TQTOg|KZ{2oe@jUK4+;~ET83# zOdu_ 5e9$K6m{(SlotSti!ds!F) qn|}siN;tr2f_bz7m`pxyj(-MV3>oQY129>9$RgUPR|Pk1)T ?y4Wyn7AItPoSje3bO*37Pi%`L7kEw9dUac_KB^4K0W===C}!Z2gM4h#PFXMy|O z!Gol&I*c-62qM-<=%MI1!8x$Jz*@lzTLjqfcPM`OMM8Os6Nf6Oc<7cG+orT% j1bdIQ}$edL@JeyXS`N9;x`=bAGD;?WGfk3E0;z-NRzeLuPT@+QS?96F6CWT zRcu|-NU%_-zQ$48lGTmyN~SMyJqbc=r^tMI4P-;-HVkdppLgFlW3LTlJS^=9FF{-q z#WvXJ?(yH{41v|I=b)LtbzS*dZZUpYgsl %QakA+apEmo3|k Mv9)nY lnrUODTaG;)_=E3#04d6Fpr)uRcz)xCtMUl zDqo+z=N){oo_8ZHEz(&vd96iKoqYw)i+mutUhYA5Q`RpSu;?kT3?Wx!!9#m_3FWSd z2v@A&2TL@f?vuYh@QOo>VAy*Q4X#x-Ljl=Cj%!*Jb2Exo{iK^Vwej_x><4m!gVYcc zY0Y0B6@iIIY)E*&U+o!yB44W|Rz2~llg$qUL7+LR;sAsw05l) J7%l|Sx*uK{~fRCEUvSA8?7P=ST&J9Q2JA>TCb zh1Ux;sgzUFxmUtNe7)r>O`$buR_Ay ~3cs{fl$3!8_ zksYN`T2_~*MKQ2CmsEqQXV?9-Chlk1?JVCp*8A}(DH#3xx*G1tJqe~F^s;UB<3TKA z&V_Vzkh<5-EbH}Gf*u-=Kh8aWcPJ|;ME7Q6RaidnFKyQR2znF|{E5Z+=jOuSo?y2R zLi4{ZLSGAQ(@QW~1s6N6C|1w6Vw8Tu59UKtNVB}*Js-SzB2whnL6Oav>!e4ROO5Fm zrPMiL8!1Cu8{rR6Rnd24BFuQO^tQgX!jNXP4OUIIO(c&0ZyOws9-n*FAGUw|V<_Tl z<^)D!b@D7m8X|w3n_PpF%uDHn9KR(~d;z@QQ=Vjp0P6#As_%J&_Z#kb7p1KS#!u~U z=lPs}S*FVFq{aigJ$bl!-$SK&EHkIOTtZmi))AbU@V9|Tv0=5UxFI_0y-}KdAH`t} zz5;i-z=*G8qle{Lm1fA9;VP fCwLt-7nw5mD;m8cRtL{wx&kK CBD4O(-X(cfw7?DFm+K^M|ipwjCQ^1wAbxEPH`sSz6p_G=6 z<`78d^STgjYJYi1`ir5QVD{nhtYGx3=|sVqH}PY0i&0Zc?`#HF{-2RHUJkaxMb^yh z&M~Ax-ix}EvVuRGwB8qAU^;`aU1_*spoJ1)KJZR79}Z8ktSnZ(zlmWHw(-v@pGc-$ zS3k!(=x0hW(b7a_Vca=R^}>y$iSoX}yM~28oRxqw;Cg}UN-MMB@GA&`*}Omg&pmB@ z1{U*?f%1zBbsujbJ+`K3Mx{^~i|@-=g`)J#8-AyMKTBmxcVE45`(pzdv*u>qo=`H? zhr{*LXf;aHvG+ni#Bl+f2G=>KzE#h&VvIPZBSqJI!LEv{0N!U~A>_up(q sMN%8;~ zB}N4Zl8&1KAhAc=HgT@umV; nmyDArUp7lH!mR#UajE9(BzvvU#V}lo1>9CP%}d45sb-sd*tU=w~}D zpV;{I9yW|ieX4*YTDg5GR&Z^*i0z`wU~!6+y|ZwJBkx3MnEg(LuJ?di<)so{>{bP$ z#~B8$zSKXI+yI>s5Pu5Q-NfGB++{8gC+)hb`O9i=)Nfcvi8gL5Ex>P#{+vn^@4d7) zl9(g!AR~8PY^|qd)DkwFyHXkQK-?^~)37xLhy2uBP+jSUuJF;Oc9l6fUVgfmhaB$S zRqw3p_#1JxmfAYk^q{-hcg3xyQ?TekjhKYA(Meeu*cAz43E)*Y!yaJOp!wV1YF}CK z>#k(RZ}-4TKCatok}PLQc(Xy@N-YqSYw3z4oMVaF3%)FA2u5p%VsPM#Km5EVFvay? zsP^gC9*LS{O4EcJ?Rd?J1XdD9?>N>#r%royYx5$l_qElzN~~4jdaXU$GgqbSsjPBN zrWqFzN<*P=D~1|f1Q-u|M=^?0h$y=p4(jX8Ox)3|bHLbldI?c-KZK9;F_D4pgT4(< z=yY7ml%E`-7nx5}NnozSrab7z>Ps+7C_8h+D#?!WgEejhMTNoud7$$hhC4lm+f c2Ao8BtFFo;;@Of ^*b|`nr*5h2Xlxn6bYTFesj&zkniu*H$V`V8UUs zo=ac0%Pw+MnsNyq7t%`|@pf85LG1Nm7#X4_|FSLk!J+UrlwFr~j#XN9vWUU-DEZ=* z74Hkh@3}0t_2llnunkYO4&$h|(>$%dpD4|^A!L bd}_2%B$A|eqqZ@oMK_E= zMP7s5tud{gaTCkCdifgSFe7H0aN2C%z#iK~r`=_zlp8hLh}(~!85P5RmoR$Zf2d9V zU8>4AGlT>F`*Z$?t^||@r2lW*E{zly WOB!09Q!B7of%eY2?8csv(L{3yq_4lDX7JhA+&s;wNjEXo-qF>) zurcNc1Aw>h`c_|;Y#vY{eA=*`50jq+*NP7TXZj2jRq&bj@^_=@Gh&p!tB@q84BQ0% zS=frE=F*XKZw$mk?0VN@R;y-a{;O68?yIoq1Yt=o(I`|FM=HxX%p8@_Ll44*ezzwi zm;&@jSw^iMpm;Eo;mvA_9=_Lv-KLR7inEZW2Qgm9mxo-Fyh=8(w-S{ ;dDq>iA(k=4sRJzk)Rs3*4xzhD4e#W{Gh+f!yX3wy-3hn>dR0{M%A}@goxf3 ze}$!WT6U&2Q!uZyDFsf~icLl?)u=lY-jrF6FUKv6fmz$MUI>qNsyd#5g*?V$sBNCp z+{#jA%D>yaM>(KZ64pU|-#%x&zkg2|fE*o0aO$5p45Y|F`X@&|BW#0YjLfYjv*e$j zShFv@p1Siy& q zC}(scG6*pPRAZ1683*QD(lww}M^tSkjxNq&0byfuKT_{>8sMIIpZxwL>1HNAUtFqj z4jZc|O6a9W7SkGN+`z;j@I@iYCP-6Tq98^CZm v2vY{UFIa zi8~?r`La+o`$P*A0*vJF`srML6HeyOC|iSTi>Ev}T7xQBMU|vUN_aRGQVyt`^pC#} zi_&F$_1&y@;hNvf_E=b`ZeDSDS|l3S7>y$n1*P{I^CEWdx2+)X@Dg?_7l+cNN4q<% z`w^X5r>gGk?PfJ_8CJEneMidDr+-yr1od$RIAq_Fig7yW{4B*-TbvfVs@2VBAM?2s zcCXr_j`4;xm`ryHQ=S&yxL7?To A=_y;XAp<*X;;`n5os45qz9kBW810Z&X _Ob93)-z~A=TsN z9?2Q_ND0d0w3k(sl(d=&+2!I&bR6Tw@Ue`_qoiW+)rI$J%Z#ypDcQatrOYjfhw?D5 zCu`Er!(`PXiWhsSJ7_RvNUo}BoPw%bJShM0m) s`K+9D1oxy|Kr|o zxjymW<%1UG&%Yl}9G*Yt|5_yYobUWA?4R%B-gUz#>npePetl``zw_5~tMAz}@7kie z=$+4e>HacNZ|?Hb|9Ddv?2(UzZvGYLbCC%RgeZ?aPg`w+WQjd`KA2C}5E@5g&dNsG zLBVpW+#~dKdi*IP%Py-#)YL`S`L sk+$=8qQn9Zs*4(R082bGXSg6m%zpvm?_k zl>ff4icec_!4MsZnZs6vG^iyq{vIqmDvZ;V@B2wVA&i;Hhhxy>&)u&G{K7cS*2fp) z?O6kF-AA(3mG$Q^q5`wCW6>j9(4~Es0O!Clo+v%Bb7^(4g!!V+E~-3QYqbyj`HMa* zlqYEz%UL9Uq4Fi`fn~wa=r?;JZeoPiX%O3qydH&s)ex6jBH`d3<~lqsK6J}%((pP1 zZNv(PIGb0J0ml)ym>GMe$z+9$IpHS4k+aOqmIO|_C34%}8O*kXx0am8ah5_k&W`Sy z4t!uyWD+)*Zri&WZQFC#9ZUb9gqYQ&yHRjIQ-tyKKFX(e^lUa9ide!hy}tqno8pyK za+6K_Vy7E%8$zi5o}_U1bwxkG_{>}~y&H~bIDip>T01LDi>3fz|4<$8U2w8;JY3%0 z)L`PF?5HTQ(2WX4!SM9;>w`d83V~aG1!ifEyHw>jrqXXF&PWAT }m_TtB_kE4yxAvJVGCQmS z?UY_mLqw=7Q7de T=iX4RJfQQNaQZR$Yup zd!}58L_e?syR!gzF20}xvQKBvZCk&y%yRXzI92$#|1u74B7n5Z!iI*dhXN|Y5z^O1 z?>e=S+Ny)LPOimIj4t+i(?3de1B=-vcz@_?{?NlhjQ&!;>eJfr;3m~@40*e_%f9>L zH>kqF5F>LO_JZ_qZK#mO>mf@VV8m4KBye@5$={dv=TJl(_Y#Z1L+%%ZV+A*b9FApU z>YySQQFW TJS26i8l4%QldWC6-Q{zvC-r zK%R&dLJ#?G4xZ8d6R9w|K4_Jv?0)ktS8k3vcUQ)ln#C!QCZGSC;o~`Z#u``rq5nXg zL`%aWdt;%2T!6-V)9+1-y_?Pt^%nm9cxFqN0BQxM{!g6{Ph)!h7g09G(ate3>t96K zG`q6Al7EP@spe(5`L(p;S+SjYeM3_#jVK#q&ehS7+cP-S!zI|?Sw1{DRW0~>e4u-J zVKG%eVD?4V();x|0qnc6)rpOdpF*~_S6;pR{C!CPf<4&XoBsi%vrfExHQz)7Rm}1# zk@4!GYaE8n7x7eT5R11!&Y(vs4*) 09yr zM`OKbe3V0FcQJO_gluigh^467tyliqMO+JHjKO3PU(#;iPR;z)Fmp3Qt)7*OudDQ) z%5Ln=2+h^AorIrmb1%Mc!E|X_%3Ccq( 4%bdU?|h$1Dg&B4kcy+;AM|Ijcen%&8y_{njO|AsJS{2H`iovt0hR( z`?W&nYDWRC=dAlep9%LnvgT v(%R-(_( zLU_%5pMk7k&ecgkz)6Py *>0`=}~8!C2UbX4wI=@#@hJS102@gJb}~eVQCr-^>VrpKd3WQ=1l0uBU7HPXFp< z4Y$Ei!GE8I0A)LcNO0$5tklJd7QyTf5RdIP9IrGC=w*_0BHK%{e|1$ji4Y@KF}6Hi z9 saI0rvyUV`&(pvS=UHN*WH262VYU<+kNnxx6G7GiM@t27vqeO|2~ z&+m$S2w*}x_YpKn^N&u#hY-*q1aUDMZ?;+S6BlD$*H OP<-lV;O^hF3_}awhXW!cB}h)IvQ3p2>ix= zI(SYU{OvY&cI$)uD;GN^G5T8~Ydtx6uX4-f3>G`Qrnxhip3YpmRnw6r))ho*ZV*}i zDPzYW{XNb;=8E5L$h3i~um^{b#wgX&)O~qajN<-|<%eL~Nj|uFp#57zXVeu2- *pDi{5XQr(N~_&wQ_4}A1$zDvT>txO3F{oU*YnD>dUY*b}Uc_Mv| z%##bA7|7Y9lE8~P2#~(c5wL|}&T{vDKZoO_JnrSP+VNcg2!66#y}T_o0$4N{et%Gh zt%uAfNYdf+chW&D+0j*FZINfT;z9ccQT+Wl?X?*-iNc2-pD36Q)lTPJjUZ9h&3Qjn z&CBKenPWg-0J=)20k1z~5%xJ-zR5EhS&aC2E+wLAW#r2zoS#HZK8SQIt0sEF*=}>g zhJ~k3^<-l3iQ9-f{IS?D^0tmZm&;2LVFMZH6~z-EwV4EycTN!Ycw~h eGI9BOZ?9kvhhrJZV94q(?SWhqE6#u$ z-dkqNnEJ|b=7#f#ovl)K;zH?}Zn%+qL{r9FuTyG;&c+&1)9G(c-_v0FW^7mK$xqBF z%XOT;;+xbYP(O1o_vofk@NzOAh*KileBLBr!7dq5k}S@bWgM`iP *8EbhP-ts;hE#K@kuoQR;}FaJO6x5p<$@t{^^FYk{8#x>V$1wPoKFZ z#sq6>l2)(A=-d)+ZrO*Du^*%D1GEvQk!?ZR5A0VKv}akhTWxGVhLo%0wzztqMwnZN zYu5KM+2TsVeBTy0T^8KsVu5%NWQ4CRiWenCb_R6-cES!|#^M`nsBi2KPaTFF3mc+T zY-xs~axu_oBf%py<&kqCl&JyU;+su9Nf7%jl2e|}Hu#j?*DqP? 4kfp$r1(R$%LRiFR%hq?FyS4@*$_%6Lv$Ryc7 +&>-UTYPTON1Te|Bm58Ufnr_j^r6-?PnX=P&X*%^$7-w)Pj zs5Gx8cVU>&PL_xz3PjBH<%la%>HJ=^FxwK)!!As<;UL^Q_j&Y{acx5Ml R z(>eEUzEOW?F<9{w35j?I(`540(gK^8kOTRVH&o27H`>X3y2ubGCiC}kLC-`4Uwx-y zgjz3B%+HjcSy!~pT(vv%1z;i#+j!gETpv9BX`hh@f=>Xh(5Fn2{qHy7TU_1mF?%8~ zVJW&fn|f*E`&0PeU|y46NF(@G`IS%}NYm>Y+%tE_Q `tkZZX@r#ON@dL{(M_+GY{- b^tNn$zlAP7$dNJjlM8w`6SInH} zlaGB{BznjMzYmi77D@Kw7fVRC`fkr%D0RMO%}oB;bH{sNan&iayM7_~sSh6se>U@( ze>P2R?sb=mf_ dCc+Z%t0)yJHQAYbudMv|ZMD#2U<8re#qa|-r*#AZk4s(eF`9( ^&E*PKNp5j2;)v9 z;)KJWT?(Cx42ORSyG-NCN=TeXhuiqF+(8G{ d<;iI7`T`w&7?z9Q-Cd~5ghk0kSsC94je;(oTHktDG!!f- z2HA%t6%H~F59j90%M%z=1;bH{Q7AE`EZh#0K6!m}m`PpydUNR&!-=wOwl0i|@|JP> zISos~utgSGgt1g?lJdyGJnvIS P-gJVPwnOw zo6fEKVs#xKL{8V2P29QoWf$V{>~M4bs!i9yru2>W#O1M{iyytuS_F=bMOp;?&PmR< z;i`703*Mb?>Gk= 8PJ{EYQVR6=gP#?Z5T{~_c8x`P*v@DMdyiD38EAE%kY zMGZ(KOALS()!xnzLl?JU17$ !7lrjwqeqg^7&}FX3N)ldhu^Y zy}o9EY?C8S $x(w4jvUET!LE7RVs|ag!`aj8 z;@GdMotZiulJmzZ5&+SoOh?MV&31H7gdja{Zp;GDCfeL`|5h=n7_VL8lt$X|0DXVq zY!> %($-s{$7igG&bHbX9O8dD(xVLZ!+qq~OJj$v2WgC4&HI#Z{PnpBh@< zXSDzge(9KH ky0X<4e>m1)CZ0 1X_ zW*4v#)%@JD#CEx-bzoCk)-5}g4}D@!=jAS5QF>j6Ft9I6-XBE1*^}>I6|2gz(`LlW z<2tWjrUJ8f_Id_YBOB!Vz86L*`mi7V(guJlX^G9x2d}Vpd93Fgjx!+(w7`otC=U+{ z_fj?xC_n7pOQrX8a`eVD5d&^ws#XSI)-kwwcey1W=ew ^qOah XUmrHD Gg1PUQ;U6|!z|#H;g<*1VF3k46&~MRkgke+fpw)2>GN&4upWQP0ek zt|NSeL>l??Prq*?9*D3|R8L-hj0pX)2QQBofv!Y?LOymm3I?&sl|RRTK1NP -i62A z2xgi$WKJ-G&`3mHlM9w-e0MbGt@X74AIvgO0G~(q3C4d25{ni3Dt{CrGAD ;X+1!Xr&Vv}2$NG zTh9H&`!863p|aav>%B^lK{ mE$*KfkJW@k!Ggtr#1Wf-6TJ5?e#CIn;t2`duh ztPnjZS;dxZrUhR*C^L%_rbkaqp1b|68cUDR9g{SR4xy&tgYK~yQGiUvwSapUU2hgS z^bEAi65Qq; Ir#IIEzM#cZD?Tbq8jZ yG5a{FY!Uh=uq83II{?iRsR5dS{Qxf|<$0 zRyLUX1OF{oeUP$!{{1HDQwwdDKYyN$sF``)Jj*qB#TUc;_D@}i*^SQNdN)V8>HZT4 zzI_GpO15Rn*OAD&dkGn!dXFhjFW`+Y0&GorF4Q6)k#E-89lb_{8#e^& X_MGkV9nt!PY!pR683MG zwHDu+R~U4wat4P*&55b$`4VH!g8>iaaDy2wuR^=_?MoN@L5X?FTBkpPJTvq{vagG= zjIZx-;;g3FDasW_w*{`1StaK_BNp9ea 5!QKRVk_76;`{gcVIbY*sx-@y@Aycqa#I z+?)ToR2CTibg}Padj22eC6FH-;h65plQ({xmq2grf>U&!Y%utKEg?K_3|P_8T8bq6 zO}!LFy?Ji^$v6Yil8d2P9Ja=w^KdH=4Li?`BZ@_WurSv1VZmh#A>~)Kq5S|FIB{?n z0T3vLy)!{Z>w(K>6>n^*vajIuw{b!WA!HokqlkA|dQhZDXg8G*`JPZ+7V6#?*5Up{ zEdB9gvG738kSQurVV#&%7VgmG*JT=VtP_zS9-)!JtgNS9P!>^9#QaEK4T_fZx#9J7 zC2WN*{C2v3WM9Nfe0X4J`0X2! hM93y7&(3dmCE_Dp zWQZ8h;cdgb8ud&kJX>DOln5LaYEtxB0(@07Bwzyg^Ri}4qbt!$4FKJ#8!hFmA?2E3 zb1(=7GQ|!UB(hM`q_u>>vmCKy+saKxEYYyDv28Gb0(!#Apjgk=t##tkLv|PU0GZNX z>m@0*`Z6YETo5(A4%r7U3QNOrTq&Ee*ohcJMRqI>lzdHcsZriRCyF;Q#5~m`#epx= z0~EK49aW8gHJ6}71hat2J<4&AD5a` +u|ZZ07h&fhk}&3M6qRMcFUeBr#4^NlpwehM$1Gv`ykZ zo6 l}uhR$#(ACyzbS*2U@6k8}rd 21{UtwA=h&yN~ I!{8kfJ=%F-H{VGnT`e&Q-mL5q)r|j94B)Fnc~ASRYRQSC}xfxl?1zjb?3Z} zW}se&ml8#JelyFtKDB=*b#}kV+UBe_@1@^rAl{Yyx^|<+Rgfr7@r^ VVP`084syqc42-&cRF%bYS*QT??Y#LLDlu@)%l1B zEf0{fe tUbE)W(a!`7xtZt6olO-MObb>s_1+szXor4 z%53>eL+uEL-^0BoiMQnIP%40{S&mkIisHAmD)ly?joh$90@PYC{Kbg;py*4%!$mOD zs%KcS0YmT?-U?IytOhZNwSMptuJY|cc4q|N!h)jMB5F|mG&cHDCvW`wZ;hZtnLcdY zVHEh=G3%%3rg!yVjjBfELgSHC^IHs<<5n$WK&|wbJBF884C F?cPwnZu z6==-&Vk@5d{^QU)NG2?%$x*#fyrL2|@$}vZlLcR)Xm5sP)zdYn7LNc%3sk=FNVUE~ zeLxj+kZp6h)kU|e*3io*jQ;9Pj3c=!mr(|tZ37gLW@q*Jn1t@hnv~0o68N_HthQ5& z?VV((@nVbE0$=jwj&78Jnt#K0^?3J@ju(__V6O=rfXcbt*$x26#TIMH#4c$j0N)xP z)xc8O(07Xw*l*3$XiQV@9H~O`qH;)lT|<1$)7eNxToVP_9@5ddxQAe`uhyEcJ}>p` zeGGyf)zQ-#W5imp7k~f}I<~XACKR7{qkx++T|X+G{k(;c3G2LS#cDNK3i^$JOw_Xt zl}ct&YstEBRQr)@3F FEmfTu>OF!^ZNyUl ZE2B-xo47Nu0vtTipI`81 YF zivVQi^~<68(Pdf)V;Y1GvN|)n@obM4!Wd5D{(ahi|7Lg}&cDq>> j^EIWl_)HM?$RfR-RsZCva(4SKHa6zBgs+@yEEcfs_;?Q%?RJLr%H?h3^{mO zWX3qrCj)8cMl5Q`o^FS192mfjw-Gt&X2drcy4=T9RlKsty&o `qQ}6 zpJG-Y-W+sdwG`}*?_uJ~JbU(U^) S!%f@7RM^ z#Ir|tmSZ7ND;yH2v*Ythh|Rgs8u?XPLv;E@f;2$x4y@r8n|jP3@*C>A>t2_gU*`g_ z2=26BxOZ|+De&Mcz0)w$kJYl}Cm*}hwK>5mM?>`V%jrUoduUh@MrI$|2#G@`)Fm`4 zuP?^ylLHhVkx4oj4#Wh)Y{S@Vf80iJQAk4(=9Vj3mo|)6)*^)m+VZ{7Gx{SDzQmHk z6M6v>)z0U^Z )H`)-`Exf7+Ri!OW=p1VCIru&IOsXVNPX0ATJd?FN|}^Oh|Iq0dl+uR9%r5>r#pt z3-hMw=I#s3|1{5tkLGXJOV o z{%5T*{UX@=WWXwk9^+P(hP~xvD5YLy(#$UUr5Cy3hpy|w?v`ERg+l Q_&) z_K|uJ$2_p&9*<~N-&;l@H}%60b+3RJJlb%Sm$9bVgVv@5J1^bJ1B^6+N@J%Ca+_Xi zgf4mNn}-jZbzFRi0y-s5Q*hRse)290@wMmdgI6umZ!H;wb*1Uktr*s)M?DGhnzE?I z5Q;xD8~auq*50#Odtzbsbm^Rt=+{fNgKGC`{11bOVCQObNZ V8a zOPVH&GI}*P+?sn0PGo4FDE{X;3}_noWE+P4G+ &+71de5XFVn``|p=EAk6-H?&icW7Thq+2}zGNMAhBnyo-zwG8L){>pU4x^s4)h4iYZg>UXLrMWA9Q^#n;Q;vMpqsu%&{7y zFH!XKt(*6+k;M%_g33oALTDIU22{BYeO|QgSxeAX NeE59LiQq(Nb`= zE%N`C!-toUt5#f~4S}B%Ny40C8ZJO1&&qL$QbR2o2pb$KVaUdZp?X(dji@WXq!CN$ z+0kPicaF|3GSx>sT-Rb-zA@-aTmk!3F#=SF9w|uuNgPp`mPLdUV!766CPu~aFMZ<$ zL+}o}Rkslf3 zxW4V#%|{AJKN{}&cpbOb?0BM1i(n<*Wf&7}8M2&{H?`njLR=d^=kLJFb<*D(^%6Y` zWu&*%l!ilvQX_MXJhyZiY(S$!$@E|CX(^2hd{>{y=1X%zK#fisR)tMCS#wEGSe6Pq z+N%UG-Bxt4GUrxHRzp3=()Iiq$#moq^YrBYc4XdeHq!^=@M}gPhojEAXUNwKi|viS z!5F}m2yMiT+ -zWl1+3Iz+DJJOehAWhzTBX(De_b_agB1eGu_X*u875e{I0` zt#@yhTuZjQg9EPI-?DkV-(InK4Z%Huy(_*~*ivXu$4%OmtfQaJ0pqJjl&h}aUZ0P+ zj{{}i{@8bA?>YzGwDyWjvMaAP04=}X%F-uo0k6LiJATa&d{m_lBbcwN)HHO*Rr48C zi6gG8lrK|iy=!hPMq%+mmKV3~n+*|cwfpF1dF#GeX-q2cgIXLm+`7!$;#AkKKf9Rv zNkbfUBV+u`18`e`JdB_Mi0^|}m}tYQzF8qWvj^>Ahi+l6t9Kdp$l$L}%@}@`zNNeM z3c~IFS*m<%Rc+RyAHH4Wq|mW^B#EPz0yZ(o3IbEQBC{|P=BCk-E=Yo#6L$1D-WvuM z+A^lo@2rH{Ro+!F$1oeu>Y~%F_1VMPG+zhWT#)%aUAoKlLTbD}t$k@jPH8KH>$Hda zMhu8w&vxv-Ta(`ajl=xnpz!94dT%Xv`^zh8ulxt%VO$2b!k1eH4oU#J#vGE4i27uA z0|5GtcDN6IG=5oy2%d_C)!p&$nmaY7tTN_=NN%r7uk{pxQr55LHx8u<=O3u@IH-B1 zgRyvA&C9*p7pWt&2Qm*W5hs_lE*vU%17|$ZRCVI};Wv=v^ZizdGVioQ=^y^YH=DO= z+ Cq58BTO28aILdlVzktPUgM7*bI8vZ;gnDHHGFR`Omw_u-u&2lYYXI3ukI6@ zvQhQ4@`JW7we4~|Gxc1~^;4(nf_1)n>mZLv@Ij9?%*ifQGF>t3i{}70v&2ggBH=;g z?~SncE@o6F4STU`??Epfi+*J~%p1AVqZ9R`Y4hV0;}i8F(fyWFnkWX>U%z*3P_ zw|%Z8r3g-1m3=uV3QpnM#oy>KByqXju`|wGH>N95AQE;%1UAj<4Bm|1JGk(RJqeHc zCGOMlxz+R5XTE}V-iPtuPeiVR5=!tL(|_Fd+7fctb<(+nO1gTUytk#hdr!0V;|ElV zz*4xDPcc9^6ANm)eMlN07!BSzG=|nAaChtL%^vR2dV+cz(#O)r6$FU;ZM0yy%1723 z&p6m}@Xj; h#8?6QM!~h9CovBmvMh~M7 _kCijDb3Jm3rwX#;Z} zfw_;^CE7&zRZq-hwnJv=L(j?+6)i)QeM45sA!@#+vM)nBHbQZ#p=UCP7fGSg8N!)m zVP*YcqD~ lRMo;bGxg<>97n#H-twyRZmb(FkMxFvsn1m$tAYR^o+>aGkdB zhx!)I=tyjTg!WO`*|~84!N?n`kyy(}JKsnLr?7i-m;im!?E6T2G)b@ABmowcFA^24 z9~CEo`5hV6SrkPW3{O2W)__IBMWfvYNp9ZJ<>;sgbm#+8WVOD9;8An|I) 0d=>$oQ!q8 zPj^fl_Dv$M#2Y$+7YCDK-J^tHaf(CCl77L`e#tUJk@7>yQ|L&3cnXQ4aov)j+YX12 zlbg4o2J`Tf&5#SnDcLJYdy%f!DjW>kl5fs?7+R8V&&L~D2HMPfT&eKWxtSJ*N@d=5 zaPfm*nom &o4@PixK=ucbvt!C>>g%UtQ5$u8MyuoSpE+B7cM{r+rddeJdM?vNv<-Y}M$ z)@heeb2BT<6ErqxS*e^J>K-#WlU3WU!NzIHNC3s?Nr5SV$9_OGKJ^PWQ`0X^D9JHT z5kyMOC4FOmHV-2ksFw4jO;m`7+(c$X8IB*P3>iqhRYOva)e0-p-rp2!Ili;!CsTbh z?MH>USQN7PSnZo+UgvarACSZPE$!FNjUD;?Vr(vSCjr*N{4P^vRWez5DF2o_}Gc zi8JMmHs#fRUMxKs>Q~^fMrosDbtdO4?i6&gB`xpghp|(*{BO{$o)ofN%}d9lI6Q*D zAw_ZEBBYeIggT6lkQ %p7P5 zDhHPcICqXKeBPM1punNGAkO_(UuiL|yp!3(WA6cxn_vUsPD2R3kv*kC=EY-}!i!IR zO5Z$wBqd;2k4EFTbja+A1R|#y6PJ8RT4L#&i-m6q+0wiAckby!4@yLxxZoI`3knrh zO~|xpG~s8ggm96wPEkTC +49P&O70q$WWF9sT#`QHCDo@3Cn|Us_1 &yA~%E?j{udSMk zY(Oq3VWZ?G=AN1r-bxvbN;{XzZ9}GAt7tb5TuWH9Lt(RPbOZiYo%b#dL8;Qd)gpOR zl?DPcK5dyQ6}PTprO%FLkS4|s*H0NfWpO=uTEq(ACoTq6JzdY_=0?Vxmae^-q0Uf1 zq&@IrVc-E(Yxkmg$ZS60Vy+!WYZ(zFR}Z421_o1+9V>Np4IsmP{e(UKW8wB&;b@I) zl}A?e>?=iaI7D3mns;5Wu&T3o@mi@X`;}i$p)@8tu1g{W$U4* B4B%jdl%WmzfOK2{Jawj zaPnca$@0HKz=9vn3NJlx4LG5Dfb)-R$bQrKXnPCvzvz0au&Ca^U3<*{!!Sb(-7p|M zphJk12nf;$2+~Rj(juTV4&B`)-JQ}5-AGGIw@OGVvibe@{;q2u?C)CVbFfb4UHAJu z_v0=I5{Slquq1!g(s45kMk-OvB@3S~qPtJJ>5x5ySy*Z +ly%_MD+lhPU4< zuiq`E&z-e2k{wS~fYVtMl?m>BA1%pcEF2__z3+&FIz) hN{F?+Gu?i)kv3(3itdc+K$OukrqhvM27OWhC9I!*lG#W$?zO0SIX$ zcXiLPY5y;_kuQcLUMe-*+1=)`J&{`@B}%L$ZXm;bDf`s5s-{d0U5E2CAX-E>Os5 znk``>e`8Bm? m;l{dMKJB&$QA?D3YVb2ZFH9e-HybwLf*(p6>`cl&U4;$F8*O; zECd!oChEo<_j{Zk)cQ+#g3hPwfxsu48^ql=B=7hH6H&<}3zl^mVP(r>?=krm(LNsw z@Twv>O7qZ+Q(*onV}mJSFA|V)Wk}Q1@= )!_9JO4GJ&L~OJb zrjG-imWlYER(?_XVqwze#z@GtUN<&WHNr4gEOiV1I11jNqY(vt4Q?Z_%4!aeD1ER< zhGCp #A)+g |eA|vdGa7O!wz$AZ!6?=8OBD{nR=JC Pp@J9mQe8 zF#z#{B>tbYEGEVxJ~r`xPe}h)L`yWwHB0!fi1uH=Jj;SgQ!_8W;%?I9E{YSv)Lvbi zXVLnfdv73^>8_F1QB&7FI5j;pn`VZKJ2LvUGk5aa`o`wByH47|(ijtVV(aMmq=5+v z1$OsG4u5u?-U2wLGF8&Sk3IK(ANvU_WpxK32=tQCEK;3*mvwdrvuZDUqL4dw!EydM za()*AJii}u w-4+PNKBbt33Zw2j6T|MsRKir z?GWc%v0Upm^)myFtlH@J!>v*W=QtP 0Kg*x+^lw)D<(LZ}|GPXBU_r0zif36ICddY7BZakXkd1q!E-FiJtDUtk$M3TPQ z>X9?2F7s^+Zq(^Q#@7OMdjGWL%?*4)r*?1mpA>U(A5k5*t!Q92h{0->rl`X==YiZ(l!6>p8IE6G`3!)L|2M4jSp00(kBo?vqb2iMahN8D8*Tc`; z)K&TTUq0H1lt4P%6A@*_?}`)*l_z>C(roeU_9+ic>P;A2T`&;uhK*pJ>kg~==+M79 z+6=K%-|!LCV%?)QR<;o35R_1*=}+S9av70)^U{sOP*;E42fB0TeM OrUqMu^ee=W7mTu9 zj~clBoadA#XM3Lzal@a*g8?((VC4X$e^J4>|CUuQ4iYH~2(V$Xc<=$y6`-R+e?%6P z{<}nSS$(khdA%>sKBTD~)Ae6bPWBVU8v|~B5L>pi+zM6clvt~G{U(hj8jh_c@9D%M z?n-vPKw008dBgObj09%AyvTQ})@MKcKx;TvyaYm! ^6-dKv-8%j$OYwj^nkT_@1o{*mWc1s^Ql$UsHa*!Nh6fs{mEp8z<;@ma-X3b zyHI&qJwy~mCV3yo%NQU~<;oMVz1joB>BzZ~-Sa##13R0d#{Fx-LHjBPoI9J=c-4pF zitq-MA7$UU*1Ok~{cQ>a@AseILOd_9kLgv)yTBNrfzGGY#O_^ts@ElteDwC`_2lIl zSJh}7_4-t%cT&~^ho =q^^AZ5w@J{J6SfWy3hR z(IRz(J_i4=l^1!W`|8h7mk5OlF>g>8eREC!qZPcL9ufe80CGty9r1vWgT{aZ;ehjJ z3Eu~1%Y^ftGTGL+!gy+3e@D`#^B)L`v*9*}-!0`s;NU#SQPAf`|?|!c}lj3xbrSsP$ffF`lzWICTHaHxsYiY3cMc z5w%d|ei3gN6&ZlTfdMWN7$hMAL(tBK#3^~;6Suc+CJ~Jr!!2d k;^ {lXcoM^K zq0MYcPu}>7^jL!W|C0HNENH;ctJ(kNrPMO(G{wi9rNMKBp*+7)X+!b}TzH*$;nZx> zNAU`zx60eHsu&*;_4*RO@wF^p%FIXRHf%nJOWb>oAP91`)R@m-k5lgDiT```jc^-I z2@x)>mqC?rJSDIAq%pR=_$4JL2gZUXbI0iV;; b{O<$6y z$`Kpmv(J5%VXbSEKFp)ASx}%j*O_%ID@k8iP!2y=Ec>8pj-Ow*U@B8!#%|akabTbr zOsV$a$0+1w;@G;dX_CW`^}Ee0RI->3Sq&qFo!jZcYwok=P~D%EO7K|sJ8|7qPMG^y z@GB2Qj&sRApDRoDg7lgHU7ibr+{%}KNa)fYjkfw=R0BdY&B%=69kF1-zD3<(I?l)F zTTEH$>NAIP{*8Q&gEo=ZN^>$Nc-5?8OFGP5egKDLbwF_G`qRT% zTMlEuFmCOREs3Z-{3+*OTZF+qWhH+4k6%@h&~(2h)?@$)I44Nl13~mEP7l}2pZmPw zxtJL^ZQGDgMb8-aObtg9odB^C&+*Xn TYvN21Kqwpj=;%a z?lhL{ryfa`0|;7Gwi(~%j0Z{zxxP~|Cv0sZjgG9#^Fo=cKELcvKL1UuirGc-8&Bjw zqMzg61gR9dYv%ns#8tYqra)mQf)Ve^`;$zo^pOO-h`ow;mlonA9-iLMh!e|h>w+KN z&&syQ#oWz3S~{Jplj=&G<6DiS4V8z`n_0&R18ARnWm2*C8JRtQx~($ce;r(4VlHBw zsy4_z2+8K cJ)If( z=RO#k+nfIPBx1F}Oyx8(0(*bSg=1s}{!3)7N6A~Qa=)!NpA*+7nUfsk?kxwfrMH z({l5G jndbcoB@ui>ap{~cvt*A&hg9gj6?v4QbIn{sO_Kf#6cd>gP z@Z{2JU(6Y9nQj4|XGy9I-(;?XfD|Wm<2Ua(S+G0BCk+lSyi4hA`TML$9=fdi@Msrq zv?J;W{NU&%bGGA#j*lPMTW6c#caZO5gKsm^;(nt52jJI)b`TV~4OWPzwA `%CIGPGUACm(O z1_D*jgUBg^{agcGiUMpJgOJ-Up^Zx6mVqCF16^H%V|7j9bwiS!L;Q PY zYJ3r$f$?i;^rI*yxV;RoO^Qi%@O7ATW@;iJy$a$HiS 4wlZ3hW(v2js4iSOMK6^asF zLSWigA9b3NOb4U0 wnp?89ivGBHL(j^2wg%r~qj9VK&7OpyZR;*YuQJFCBi(((VSIDwZP%O~GAYrP+rq zr3h_XB{EvG{0br5v=TurB(S@)8V}yWeq5m*l%(;6YHeg?zCOv0(#vIb%&i#D<($lV z;TGqNM=~tRMX!`%uP1km$k`OkF(Jsq<00YJcMycdy=X=%DUrwydAt^j)put#6eSWZ zaV@1S00aseqYG|}VdoBoY(=KdO5DUgd5t{;ILK`0V|EJTEc*`yP=O4`k~?h!r^X$A zLn!FUg5XF@W`2T0O~JZxK2j@#gd_9yIz$mreV<=MI+1^jr#^vS;$X^*8mDs)D1JR@ zLk#*nFO%krkiB^$!v;Wj(Iv(YGaR@Pc4FM(3%+-M2<-!4`y()8^t~D-jbJ50l~g|e zD|~wOg1t+mahBMJ7zjw}_Awi48G5adij^s2R-@G#StuP`^MbVj##sj=OQ(aJrSjp_ zl&w~S)#9iLsz6iMRR2WpbzhSTa9dyT(68*@byle#sNeCxk{i;>TDq!!Oi4^bg@)@h zXII<@2z-T@LIQy*KGr<2bhT$+>DoZqi@8dn<6zojsp_*Vb&WF1#H!_?nz0Sxm(XgN zth=g9?VxlGr)dp|M!91{g`F||8-7ZrgW5;60S2thTz}X&VWiv5rB~KSC3PBe7K#UH z0kov|YZ1)e)^()sD;M(0P%V{K*jgPC5FUR6>o}>30Mh~tsbf>cU0T-GT-7AauP)v& z1`z#%(!TveO(TA5aS$LxhYEgmP)CTs7eF?+S$>iEL+3UufYGQ=mIdL50t~VUo7~C| z6O|vizGw^+CVMnStra%u)s`u-fvY~pB5~zcA({hK#Nv%fHjT&CP0#j?OE+J5ctD|O zT*g1uEXs|^HVr89me ??c Kw9484nudzNzZZbxEHMwWAh~zj%Xm7I5riaV&meEQ#x7{4 z)ABSYZ@Z%2gRt3*XhSwG!VWH4I%7bL`i=5aZNEtV?)yWrT+vd?_j<%eI`QCCY04mY zt1fF+i}w^nRia0>Oj=uocsn#7nFz3NK$NOHrPI6fr=Mv2rMz71lb8d+YS9WikBsB` zo_aFTZ_-TAb@MiX9)3aR2nngA_d$Mxnf|u%ib4!>fk63wT~8c+LJ=PvNGAmiMY=qi z0ND3MAI3uN>Gb8l@6W20^(-6U5``4?0|uvqidq8xp8aHhsF+*xc}0Q8xuExGa(OAf zNQNQ5!$%pLH28nmcx?48&^#0|xCB}E+x`w_r-LmdhTlmiJqwRzMDj#U3JPFHGE{CU zqbP=g|I*N3v3=W*`67d85CqX-N6J+Aq;k>I3{>@mZ@9Se7BIvMw&IWDa9c)zuVsMZ zD(zq87w9HV&q>ZdBcm(f;5Lb`CZq-8CDEsT<5vtk@X@gqUYtznq#i4Oy&QHbFYcV2 zu_gw51S8e_ddD|BwDpM{b;iW?AId{`Tpkk6de`vz!ApNs_L-$U)!jVaVahsZiiWT6 zF-!ZTjsNZXq!xH8$#F2+r-%GUjB3PGJ9@Ixr^i7hM#pH{gSA57FUsi0jO@+y>%Sz1 z%L%XTKq-HyZ5R_(Z)P1-XWuum4M@-YRh;Umnf4$emAd)%Tw}`j2L;M#?#bHiMDP!C zvbMR$8sl8sb6f6nv5aI}Dr`H3^9YmCR7SGik*tgx(zCxT-i!+y *DEn_EqRKwhhjnTFJHwX*OEgKv&VxOO6;3 ze-@X;t*J3*T<*nu7C9*A^ ^ICajiwMS0zby8r!Hs|M zhZh`^U#HU2s#pbbHu~O}^)za+o)6wYpxz|2I`z-1`i|e&rmg%5ZGJEQg*#)l0>d|u zQQJb_NMb+=i6J#rU2BTQHE5|$-mQ+eX$qSAj{FR>QeP(aZni(IDH*P4GiqFKF$QsC z88M4hzQb!?S{=By8%0R)r`l@O7Jy@=6>Qrf!{q0kyP_tDyU^17;Q*_8pMUaixq|_j zQyBN2O}Ea!yPGZ9>mM6q!w3^KLR@t`4K?zFmNsQ#Hmfl>?%n9* sHlpPYFpdx91)$dW~{x84UNquT_gVm-r}fmaBy+^2AVXBElMZ8udc0Eu-=KJ zrf28AEG(^T+#$TvK-{}!^zGf5Z>;@?L(LQP3RTEj5FH0@W703fX7AfryO!T$S-oL2 z;zX`7NX4#z%ioWAw@FrejA&n!7^W!n1l;2ian~A9XL}OcV9#yPS5x>rjFAfJMO(Yk zpSt~w?lkL^?Q5obZlD2%MKvKCZO%lL@_Sn|BQY >#t1C<$HoA2K7S{}m!DH@ z6aV^n*_zG{f)Gcmovm&^C&y8xed>6i^V1zX+wUtk=NHRGc*emI?UIgQlatDwm1WV( zL8V3z#tV0{LCPEY^V{c7Eq3F|a(K@!!|>UVmf5~HUj5hy&lPvqc*%9SOlfF@IRW&N zXAvteO}L0@2oA1OtQ2Y%8j62^yYV||SF*r8e_;r%VzB7Gf-nAv!e-=cw92y_sTeu? zfe{)GzWL3BP<6mO@;5)ZhB&t=_crp 8KOWC4$VxRVe5SS)BH%?b;H+!f@QG=%y&dFU zuxz<6M2Oq>vXL>OMOp!%aan4szbo7U0NadoVHqo}D&6Ll2j~_%sfqIMsZB8n#be@9 zk?N+$&5{NasGzgb%0gkIdRF-+{C(hW%8PAO&ROVg=xXYJA}$AQvd<<2;39I_JK>|Z zp2acg5nY0i9aCoPQ5O_SiXptS{oG~U?rsI3u(FZOJC7k^6qomK#(Ctqe0k@4ZNFB* zL2|Yj00!r}TMPdmjz`mIyMed-tX7IXu8GJ=`~CCB^j%^P2r;wdJ;z-LnMx!8eWacR zA>b%mwT^gSsPg3gsk+n9OP7J!Xxoz&>Px G(^M4!#x z(Yy1x?5LkN7gwZ}tPAmE%xGEc=hFm;q^GDdo&7oglJ AJH5aTIde4h6;IW_axM6bJk3ode zi#n2ZUGw5s*gZM+W+E%9aen6Bcix7lbaOqBr#D7b3f3qDv6E%DE@JhCSm-?hFuLgh z-Gn>YUxQU1Xs<{wi;TQk0zoKsn2OBcZO{nlDYf*|rWTX?#Jo!zJ0~uEBKgM>vZjN2bg^73@ky0;YL9 1FfMze1v*Hq2yH5I5_JH_ynln)r5r< Z0dY>XMPm`RCs$&>MIQrkX3v5 XullQk^ACil&hXp& ztjYr(+rH@))f-|G2*R9MJ${55`=}}W;mujJp(31z&_D5|LPVT0yAbG0&8&)D-XU^q zzwq0u!mKY5Q&Jy1g6C30iq0l%9Y{Cz*I9kPSSYOoNf<9~1^R#^Km24)mg8>mhBkLT z1S!?01<&*;$_=se;nA!b{D28-%=boWC82<}*d)Y~>a;8T&B}o9Dp 6Ff$G5~69%c-FB~mPES{@#)Aq<&8cg6<(7&(*8gSxrr$3~8v zskV%CPY3%nA#&m5^<|82X?tHvJdX|#-+Z79Zj}o?`VdX1AQ-pa`Cik>aV3q*zImQJ zF(B3_PEh}e+r`);Q_85g+AZ06>hahtr}Uh3G7{Svo3|m(+O$}cZvMoPU`Rkh7%nAP zWfg41XsbPg SB5<5m#38@QqX1qt0!H(I2e1#!{7j z9=k?@>w^f3-;bcTRaQE$r{_{>&J*79kXW=Vs1yV?-0S02hq&s}Fkw#Xop5dJ9 VRhEy{G?Bvg7%>{P;lrdp)b=kGsqLO$-NjIIjno9l0D)TMoYXLONJ5_tdh z2z50F;P7BK#NmNF>@86y-YdUSz}y4eNclAz47;DbIMKWIGt$=UwGSpf$WytX?ar|B z%u&tObBQAO=_n)rK@wbNjmLePz~$Udy-s42^ucwsC-L-{aB*;=pnRVki-R}y82RJ3 z&6(-<^HL1dY(SP4T))ddz REKaJ(F{yYpegk#63JAtGi&o*(LKMV6rY?V)r z-pV&h0k(Z1w*(4{J2KkWNQyR>v9S#6{J+gG4XX~JR;lBlBPj;rj`LE%_3a3J>k;Ml z;i9C&H!*+N;V+|sEb^|YGYB`Hth$TNuomePBClo}3b#NL;-k5{$w4mcV|3Xnp5i#A zm-F2mhB4+eUMyoRV|3+dMchoQLC5WPR*=z7P);AF}DI{>64O(4WXMu#oPDLxbtF z*< rL_(~}MAr-U?m*B8(c3l{<1kC%xIn!vMJa-p+tJ~tG4tTP0uk9_0?-sx_u zy$cdO%T@A{6+6gc>H0)(-et=vBv0 U?{4d}7T5 *NKz#+DCv>pzQYPld<9FMR#clZZ= zF-AsIgp7VY>y0 r6KjQv0acK0k}LRgK)04i9DIg{19ufP*B z(OBg`TlOo*ztUi1H0^;O2v%isH*q0@A^wJp?dyx>(|iAbHjWn^_izw+loB_C1WPp8 zB%Q~xP{#{!Gt0TfixtOnTiL4a#Y6EEo^mG$7b6s!;&hs9_=^%Y`VwTX5=8V8lxb~p zEE8t~5?@)x8xJO$?Ik+wIXNoES<@!IY>H_)PjquL@DNS-kP>g_X6-AQoTq)8>}8dN z2}ufXN*HB{w^B^92}yP-PL5Md`C^jdq?nLOo02}C@@qRec`qp>#VX7y)hi%1hdVJZ z#fow-)fq1>h&zpZ&qB{CEiE7|r8td8@lD%aS} ;rs!=e7LqHPl@LqZ`SgTKI6<-9 z1vCk1nR#$!UZ0Xgvj_V_W8?lPd2axAlVW}~lU{3Szp9=XN1H_qgNN^=;)`XMM`!Xi zWzx_Q_KGHN&ShWCrY~~kj2~sPb7ynx!vcg;&YE(%FgZlUIq2rFimTh4hjfJNkR+DW z+!~C%UsHzU0wG>#ROrLJ_3_jluFnb!gqh}vG7EXK)`{{w`RmBs0EOI_`>^PlSY%WF z`cWR$9>kc31hCBerB~3dp7%z?-MU$roi_j75TUJp0E1W|R=rSeH{4aJkdDVsf1wcf ztdL^hgYPw=k$$wcd(n7R?#OOII1eG6af~BfaVsXD&9yM`8phZBaSf{J*<4(`S|lkC zB9 DClMJROZIzWfl-(m!h}`zn;<`hjxA-PBzG%v#Icw-AI^z>T zQ2cDg&mmwYwjcyk^4|CJ4vfIPq )k#IRKvko0tPfw1dZmD;@m zSj??*D2R`(f($!}Y87LR%jaHJ#~oE2WffAHR+Q*x8~9dtNmcguR!3#!LBZ8+Kq<>i z p(7$o %MAM&~@H*KRE7CDFapAML@plFr2G}{oML4iKs0l2Z9+#RL>T_N+Uy~N<)op zhV^v@^* z4>-+(;Orr3q-+PAubV-@fzHe~v$#Lx$S|bh(~tU`uO2ltTAVcTfND*QThiD80ebEQ z9@h9UQiND&b_s7ySfeRD(WkH|utO`)WD8YJB}AjOeE`S0szryjO`Ww0$D}E)kx4_r za4ZZt?m?Pu5R4}aW|!5QGhkaVK$I@J?kLkW&rD&@>J^ulz{~k82+SSN*Ud?WD(C zrP1%j-QB0~o*mE(D(iC~tsWV$9j8g&)%p~VP)vVl4;CBNLIF&@wuCrVh5-DDU#ldi zkONM+6!yY{p1_r!6KPAQv`Q`11jrlTwvjq^W^1%BlQpGdA~Ju+S|d9x-&0b@;gZyH za;VU+8L)lXC)kF{k4n?E`cMft@efb~FI {14c|NFVD= z_J#`3KS61XctD5akW#!oD5;)jDTo=e{_N^HD|*Ve2Tk|I2`H#LvYO~_CrOP%v`xGE zzV-H^>sxKy+l{dzDsfakCVf3!w7bZU(lvFjRY*v9SvTM?901~|g*|ys`82veJw0B} zRzlRjUZXSGfNUu0KU;l|M#unl?!aYMocKH&NP@MIfrQqOt^Y5SstWufd=QQxPg_DL zTEVLsSTcrtYO8z7;6zl&TY#T8LC7{<;ArR@hR|Q<-WwGC;L^Kch@fov-8=4AoFFkK zWt&gGhfhnlG*Y&P21+&JCR+!zt>72MW1_!X%s^EX*!~OzkmA|rpz)QRCFYwg^Hq2) zF&_!irn@>C5LW!EeU*e$qEGOcUb%F9m4iIYlbq3bqT7v;R`n@8BZ(j%YaIh2P&GKC zId1%Z;=FT|hmW%1kkxMlj+CC*HJl`qVZn&g=X!R%A{%*hJjL(Dxb!za^ZgW+<8<3N zTGDI$;rcYOD7_pXtL8Ex>*^F0AKQafU-oD8y$m&wn0U5~tev} 6CXw4Kv^xpW;pi R9 z<(|SPA$-d`6TPBFxxRCcC^ke#%5ld=A1~K}2Pb;J+vSjB!0AuF?_@0d)-E@$t?-bx zH}K`x&plk_6vDG#jg|IfANralFfAGixWxevuz=6EN81rA_Si)`tim8^I~{Q@lez#o z633lfnx*0vIJ;54Yop&XQu3@6p4`K|UjgF3zbYfWf%h5w$(CANvd|1G`1o|=J+Sur z-Wtky!8B&`X)3HR3+|^%M6|KNGrh(vxv}NLNEn&-b@Lw5iLlq0h;VA_KJfVw?kgf9bw`8M|%Mj#hakz>^1hPCT7Sx?*6x>sGO2 z>rJe;vCi{?d77vo{`0n2?N0K~4SHZNOJm9UdM~(rN9E@?Q;kKZ>pd0HecLhg;3!QI zW2qO `Qc=sEi(T DuEQ#AYh%hQ?{Vk?6aV~ZuV0~23W;Ky}qM|~>Cwa4v!5yzVRLtlrF zv(^T*%#V<_L`^?g*^Yj)N0Gi8;ekt?puQ7EWN 1 z5kbQ9X_dJ*@2-#4)e|0!smB3Z=@ NG4od zoT|H+W=i_!tn!xs&3;>%0GYcy=3Na7x9*MsYi62dcg=pAn_pOr!~qGAgXrn|28V0w z#~Y_+mVW-aW51CA0pSAz#ntuAfuWJH>8%{$%B)U5s2fpZm2oE?#l^`FdYzxl&2Q6Y z_ml>zbNizLWV3XASR#A_sUu}oa#+$ELw8d1hegI!#G^%=_Ujs?rC=biLaJ;r8MAWI z%?K#nO8Q=Xns}~KhW=oeFFmg==90E 6$;*`a0lfJ(y@Wjp;HJbDfg%4S5=t z_{b+HWGaIBMV5n$qj_c0jkWObeB#@BdijGD#xkL(?}e&)1;ccu2Nh2{O(m5Ym}_ds z?7f6XTAI%^$h-WnMju}~G(QS|@$41*$8Co(zM;cIir;4!M=a*wDl)_!rXxEs)VE@) zZd*0kZ%3T!6@$_|j@gS=kvQW!s~^wZlD>QEHyy{RYp3^6OTMpTTjk%M=vr}xCqkJ) z91@pVUIlI!Gy!o&x|)Fi$M_m9GZ{2Yr9rMcGDPYp#5Yv7h9=$Nin4I#R#95pvLewSSz%$ld;y)vWO$OZW&n`vN@oRz zD+VJ%C;+xjsWi0$>YQ}V>Ea?aCUwkC?$R>4lMB}pZOL$*^#v3hbUrtjljYun&CQFA z?%~FnGn d06fl}uO%24Jm9d3zR> zWT ;B0iz`0}vKV3RsSo-1}iF)v$F7*Hj#v;ZM zx~Q9kcsZ&O)DaJCPMNvkiX%z0qgGG!sJp;5I;WG`@E-21?cbsEiYIF_hsSKE^KcpA zdnT aCD560^Bj?0>|Q&uJ#hG)GCw&>614+W?(_~M*i3InsL znBT%E2KnEE@)^ayXM8Da-_