From 1dc807bf7395458e71d9027f1a38943d4692e47a Mon Sep 17 00:00:00 2001 From: Francisco Moraleda Date: Wed, 4 Dec 2024 09:22:38 +0100 Subject: [PATCH] [AUTOGEN] Render the updated docs --- site/images/mercury_graph.png | Bin 0 -> 481386 bytes site/reference/embeddings/index.html | 49 ++++---- site/reference/ml/index.html | 39 ++++--- site/reference/viz/index.html | 163 ++++++++++++++++----------- site/search/search_index.json | 2 +- site/sitemap.xml.gz | Bin 127 -> 127 bytes 6 files changed, 143 insertions(+), 110 deletions(-) create mode 100644 site/images/mercury_graph.png diff --git a/site/images/mercury_graph.png b/site/images/mercury_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a3dc2d92bd4cfcd13311d89559b9f1f60bc46445 GIT binary patch literal 481386 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

8f!K5G(TR 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

)r@r4jaowK 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

_%323 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�k!pEc{7K#@;nGI2u(DBK}pjt$MXnEdRq z2As9|pWZL}@{SAC#b)K4TtI~k4RZh#a3s;LvspcZ?(XhxPwem8_+HEuDLgIz@{;&2sTscLOb3s7kkCR-X)6 z5j%O6QC?6O%)KH{ViFjh_3M|sbKu#ZUMH)LhR2qFIlz#z0(^8-s<}G*)$V627LpWp z4f^zjg>8D$l|fU3Bk%4%Dya#v5{dF;C_CHS?KHJkt2SDY;LIIHc}9dq9dYB@y;HKR zNOcktBRYC`wds9d9EADCna5`>A;r$;-CG)t^kNhgM6V`#R4nu?Rb{OgoLSzSL3dte zfKF*LZe2NpK3KfKPURlEsu*-kOuAM46|-qsn2hNn3YbHWv~h3wE940I2#Wh{#}~f<1i(6u&ba_WbL_( zI=E?*t}B?^yiU<`+8)h0*X0gz=i&u8e%BSu=)}bQ%(v}Kq1VcwI_T7+0(^(c$5+gK z`2>9OGg?y#rAKdN2vi?vFpi6g`ud~-s4rh`e=(Plky!(goF5mzY$*S0+%03O%dTRy zcY;=bw!^EfLN2eDN$2GnvH6D6F9h?NFPS8L&35midU}Ffv9$Rl=v_v%wH(+uAO*KW zukp%M2HO(6XXC2|S5G(d4Mk-Ts!4Ye!UqS=4x1Rqd~eh=@*6S{4R;OMIa@AX^CP~* zKmMXCgRm#BgWKa9CpwQiiMYb)@s6oqM&W7U0OcG)@@i(iIk(zdVX-U>#&0Smu*R)A@eO#U`GATNL%BHq1RwX;mt^iyB*iBIX zP8vLWUttMdZjGt2HfQNSe-J}#J(x$GQwl^fhS(Ll#5?;YsNP6dQkRhPZls*C{^RX0BC1PMZ`ja>y1e z&-Vc?DeGUIrrql6ttqb4bJP&7qrZgz)CVtgm(~*~Pwb*9aonig?g3=<)d>ZQo&rM~QR>~D@_#^74fE__bZw6QI+a#igg~*xE8}PTbshp3q@dGI1tq6k6cp<4*z$ zLgdNV=3w%eq(YYCqj^S;5ulKS1HiDas;U|*7#e;V!FYcizc1ZN?jB2{$iK*TAyvSu{f{P zL0DK^M*DUR*QZ6hP$PgpqinDt5Q(5>Ux1R=tv?(Xl?;z)DEY8l^9#Q)?-QeHIWy}A zu^<2B5^`^9hiJ0A6x_%NQu|TPB+l_{V6_zjXXnJE4^{KZi!WNk$OXT`Kcizh9l9*a=I$h+1J^tz_N-1&qaykH$ z@ZjJe2U7{qALHz^%%c?OKqmZjsSf%i8Ewzhx~8)YA0}&YP7W(8cWp^Y%64z(E*wKI zgtD>0OG2Xe0#ExT`xP)Y{k4T-{NQTQ8DaNnGmX4k?|wr#^~?dhS6dmwxZq0fpPOK& zdn}ABgZgX-Wj7#K+yc!T-f!8$22d2-+}ub=NWj9RASG2?va{ZM`0?Y%C2wUF6>N{E z6F?_PNK6E)2jnyP8hvhEEiEk_je#6EX)~C_2rLf)a74VWkxp)46@b*8y;afG)z!H! zZG?N|t6=zNAI*4O_ZtA+Zf{?im9?Bmuc2ttD3i>jghN=~`7Unw(}%{3o%Qtq30re> z$?Lw(&Zj>46&3O(Qb5@8zXx-wrnEE&0!PJjhso;dW|WoDJ3Ixe?W?P+`>U&1{v$QR za`YCOO7|_H%4rKu%WXgBDU}95+1f^`RThZ%?)Xm3J|56=mLgx0ljCr^nc2wOMk}bw zU$mWDNhbSnDcd+(U|!Tc$b6RcxL3Efw7B&(QUz6Hs8#tAJv?-8IX2Ujv%K23qaOX{|pTS-GlW+9gu^c?#TVl=Szp1@0EYL z6GbojhZ0>r5dWltyH!V;k?_?UqhFYhrax8>1ErRF#>XDJ(z0B0mjD)Z?iHkX0K)*k4jlADBu>WGwaGOKNyYnieSM-}s zZ9T~uzL^0xtX#SRD7Jv?m7k1${N zVZ8-6eE!D{NN^Ow2L%W3?(9HiWb9_E{>pfj*}(6!zCJN`qs3uJ4MX%2bU)4x4D61h zkjx(0-nOV{niwAkazBPS|5>HovVhu@K&GpK6d4&A%L@yX^|*utKJTl_IPhq&5qSYs zjqqW(!AK_m;o+fJz}eXuF|Vs4Ax6i2WK>i?sj$Z7(K5t;C2p0_?`VIvI-OBTkd~G< z{XmlX-@_p)tXszGxEPiwZ)Xx8>i7tene4K;4t*>ZB+Y|uXQ(Y-MoT^cCYD;~O1rwe zEQnvxVE`RfqFnsO@8ryk&L#p{l2>Iv>ZFfKdrB7^4M(qi=<9N#JSe_91|ueqx@PTA z(+bezNm(?-1%PQIidX&o9JO<4Oi`71CxwIH)L&2?IiCyjDj%5huioB24G5}_z7Y?qD!#xN1?~&WJcf zp$1^W{r3z0_K^B>OXsjZ<2*=w3jsl^G)Dy8BG(lH{^tR zj2I!jCF!ebRz%|NBOP1Qc*(u@@$gz=VE9h#J4GVNLCtEFq^=&RWy*LwcEXqYtx~5r zwaV)*b4(vnat zrd^Ld^--#x;mx#8B+3BV?P%pE1*#)YfoUP@qmnsqv+2O4rMcg4eQM0j@43!yq0Pt@ zvbIOU)$iZcWMDM99JK}y7wqm5p3r5;U!uO8Yc_r?4;loy%%I;*!1Y&VxyO8WYDa@q zn(E@he|nL5{i0o6li6{cjqQ?{o7L;j$+CKdN}Gj{ZPyfp^X=PLdYt;T4tqcKlkZzS z^Oh2=hlcoL+Clpn{Sq|w3@^fEe*9*{1#9$FFJ+y%%4v0CKfO7i%KZ1;#a8%vd?DA7 z{X;J{76~n|k=~j5b*NV^SB6e^3SvkS5@1n(lOcRjX){Fq%vgn-s6MJCZ(oz@?3TF3 z+3_H3A~r1<-TX;3W}Oy&<0+7@hq2QV;*q?vfMX#S*Shu$WwpWmHvemus%8X33 z1^fK0+%At}u+b+HUc!%#GBU_S%r=9wjvMWLU-8Rr`%!6khf|!dqPi9wkiDl9Wp*QEj!DIW5_AH(z zQ=p+N>lfi=~uFTYfE+!QTZv zys;Lnovvf62-cA0l<&zo2t=Ur!_sQ;9=ba~?|s;Uh5c31%O92{v*raIQm*&d-aj18 zK_h0;L;D^0;^wKh8Eh*2xt;yxY920X-CWf-E*dfuZgc zVh}Yb-FRG4BJPjqDw(hEZ;KElYlU^w_T%h?=t2CYbWzRHXh5hY7fZ?{|7IxGRRsq< z@HcFr6Kf31C0R8QatGs>P)95xo;R`31!iiX2XwrI|KC@S!r9g0Ih5SUsPeHT)t;HW z(9$^%?EH=^(J{f1CFfO;pog1GJti~*eGOzl>new z49r*tP0;)fhJ=4&HE*tW?0?Fx-(&lR4G~wSCu4i*4FfeC&q%Qi?@f(Cg6q>FXsUIl zFLNtlNF6o~kOF{n2EAqn3lTlEOP8j%hleFaLEG zk3g{HY~OQmadpLl1QICZ=oYSfOFolMP|H~$Ee9J~zt#~BE5V9aZhiECbF_K(2P#p> zW#BSmI9o`4f&Sdy0@OF5p-#ca-=6VdN2cHuzH3p0CF?&4d6syLX{Dm0jFcC2YT&xZ zQDbwr*H!k>;nH>$G*JBISE2aB^r!-x`nk5cv2cYbzb!54tjvLS{kfqHAXw*oob|Cj$LL zL*QX3IcaGugRJZ8Yrr4+`uaZISNRC^-h)H;t`(WWbr^2nv7QY^eMA`CCDtg%`GQ*8wQf|Ia z(kZZ$7Ghd^U~N{Vv);{C8@_`Avqvx?Bfsd0`tu-h;4iuZj)bw&!V0nzla05labtF< zGhk1Q=qPUEkVHufFjJYc%-HEUo)aVmg4di5#A>W z-cFzRCq*;|iV@UiIEc#BF84vhJ=?I)s0X>%JfBf|eWFw)WO zF6WSOaB#R^ik0@;N4IdJUw#X)6)Z7wjpT5 z{ux%5mfYOusk(1DIdK_@1bvBaDTRTX<)6VNl&VN%waVxmR$$H#)n$G0RU+;P@5dgb>?Ubt)K$d4Ou=*aP@E%sVn^}x z@H2DlH=(O51d+|cgWFNM6TEOMt%PBqe_#J9qjAES`UXh%asfwoky$b5!PCj*`fo>+ z*OVN7q0M_B;22x4JT@-gu?NrvM#o9QY@4#Dt*z|?C`rI#QBY6u+;+)SCS%=kYm}}? zf$(wBxtI(gLR9E=@dz_m3}R~iwxgpaZnq^9xN8MJqpCf67}Ds(N?CbCR{$4f6` zfjS`RdE&$tvv}EGf8CUMD_lZF>t`P1+kAOAIVCFvnk*mHV|ExY*Y8QO?2DkV!<6ZQ zGT6gV050<*j!%idvXY34STTu5u2LyOUFbje+ipm03`{U92-SUxSjqC5PV8dHh~@KN zuH>&(2=h~+b*W}MvJofsSF>-zA1frkXKMU*mdgTa|4soabA-_&>&+_ZkWz88wS4BXh%l}(B935(|5kW zXILew+u;H-_s*%k()aTcWz$nFCN2g(bJ ziX)-q#D&Y}Fzzs&-y}$Zne5GuJw6Em$d@1O-!Tf72;gSR`WxlChw_U<=V3&16;aXp zad_l_|8le<9D8z|@31UOVTX%Bgp>#Zin(eVjIr?KPQs6DlVuh=u8zggAa9y?4FxTv z-}IM=Yf|AUAwIAEbv`SsF#c9dz!JnBH>6QBWE3rJT&qu~?p_nH6qwThTjcRYi1GZ~ zTmy;aR+*+sm3iVQT@Pexnk)O*A)R00%J+q#>EAS2lA-p%tPo<#i#3>q<}3(RB68P( z9F%RqWab`T5{=dya4^|gJVF-C4VC_A>w1)q?sBpJj(dFe=E{2F?LLfW7ESbtN<#b{ zQXngLSh_eZf40!10BwOk)f~>V^60k@E}^+<9}OrLF{Q&8W1SaAcY$RfW@S4mhjcEw z+L`T@j~^8QikbbtRU5NI{LU!J7)T|M-ez_}3ef?$adfSxLR8M#JgoK2?fq~tcj8 zRtwMyRn^r&JbA<9;-j&V(d5(=_(vxvC!q8JA_o-(#Q=uStOtN_FRmTcYHEW6Gt2{I zS(8gk6-7k|^PTcJBsU?SI#_I%TYb)V)!qk>fxwHGmsc0{hNsaH2O(-tVSvNH;Gn3T z{Ywykl$G&1$cZ?HwufOuIy*a8w(CC3ztF9%tLsehzB(qep@%>aAYZBnAsrTm$Gy?S z0hu|!AMS5KU$-{`V8n}80tIX{`QPEB87K{~9w2S!E1} z=9}83IZE9J0byL&f_av}4!|SteIKj8He8@QH+5g*8y{}AUWCIU~VY>aa?*0BAU&-zmX}E4B)Iri*$VA0fKVO!pRD3eJP(6=%{I!1CxA6Wi zNvR+uZMqv~d?3;N8Fg@c0= zd-u*CNS2i>7k6|Za{;skRZV^UHak+@a`=58zzy{|l0`WmE%8&@gkD2Ibplx(;W!N2 zB@;oNgT9b#5gPqE`-J;O`x~%fE2dLo|NSfpnaYs()CxDHNck zV$4{By_}nyy9*GBPFKDH`ccSRkcZB=KY;=t_LH*XAmtnVR#y;3UmQ(2OBnbxlf36P z9%vq~_^oOfBSjVjRlm*kuzLjQWp>4&l?*{~Goh&^KQm8p@QCSM_b8e>b0cUVcrOC} z&oD%b^Q(qHVDN6wst>M=Km@IyFEp)U=fg_k*z8hY4`lXW7r2db5msO;vpXC8u)4as zJ_rz$06jPFoKsP;1d=sZlz0)(N!8TVJ0*K#NJoZ;gTJh>2K1ZQ&eb6D+o@`394$0f zpPqlT1NPp^Fn|B2=I^=P+}x0nk?HB_ot#eZZ!akr#TxLQP;u>UZ+|37PfrJRLsv(K zM?c05VO>F1_Ge$;OEk1#HBgkq#d~67G0tcW!)VUo(*U_BBzT|9aJDFs_)L{jNV z;^+P(C{1;BXpGoO4=-0rPudjG^M_Z(#sSoc^ZhqAZxa%;l%gmQ02- zTTjOiIHn-ti;+WL#RW>5bH0o$y%QEd>>D0Vij7rNQ4tkDloKI;Ze4MB#RL@lZKkXmGCKUszawoBmcVMCJZtxt02is$LqY$L*-Y!VTO4zK1 z{oLZ>;x~mg(tkaHaO9b|mBwF({3ubfHUw9BwC&PgVq7XAB@3vS#nUpH3sy^|bAgPV zCv_Vk4;Kd;?ox+Q-^)?RJzy`Sh{^VeGICC~#Qn0>!gqzVEbiPU2I)PkTDLawz29E< zx=AR|(3uG`pN&A^z*d_eHGujz-h%m4(PKZ-$WC&ue-*}N$=nz6q}XCdWN3Ft8OW+B z#tSXpOAq$@3T=16>Xw?bkC$Uxz#LGJUjw-ah|Xa}QkYItsPbETnl-G|5P6k_iS~G# zg&(^Gk-M=(EC2BW63eAiZOW^ftLO!y*R+;9kA$4Izy=+6$^!PZ z*`P!*EB@DZjwvUh>E=n<^jYKrhiYPWkqv6MCc}KO_;}c)bX@W?pyAf=SVBcKhceo($KIxU6hKeEb~ni`x`OeY^OWms^y?(cv8Ot7I#BLE0= zT4rXu$A^0mNERCr7Z<1T!0H5J$N=ueI!2N8x0)L7n={(-&Zk8RrJ$m;cmWSPrJi9EZE8=gzi%(S#^g1QSKtbaZA21PKCmZ&0#u$l7pt+U$2qEzs~N z-e;YGofQVxndflj3+?Mn$i{8wF^+n$uSf+G12}ayJH!P z7sM+FQkJe94%fKb?h*Nc;ny?Zg?-ZBl}?em^_4m;nn+e)=|cFOx*)ie%EGU#s1?$z z-KWwC7~>_dS(!)tvSfD>)OKQYVt@Whsr; zb%gHS%RH9Se@@Bvzo#TFI?0+&S-Jvh!~KWtynnF#kYz7bmvpFQJ57Hv3!4B3hY|w8 zCnb$hSDNHa=;;NuKv;McL}_hp_j?gR=;|u;vzGJ2oyXbLm)zX(xw&vUFlT}xk(A%l z#K1sNSvfvAx!w&tmabH&{0)&{k6myXbOWoKu9=L#B{jLcvfmt80I=;u>{ z+dov%82?S5Qc;W{)&rl~vXB7JnCd~w<2D_Gd#Qv*?sz(j-8oECg4hKq7#K307tWyf ziFrox63i6NC{cd8tuKbGg-Kq@r3!;R9^0Bqa(j!c`WR`E_cxGgZT=iIut@JCV7sgF zm?%7ht8Diw0MovNMkM?P`q96Xdd~anPX|>MJta5<`9lw|*XQnOK>vL^`!Ki5!J{`D zCg*NyA+W9v-f?O1&^Kv?5KeEOl`gdNfxjQs4>$- zzy}L##7+XZN+=R9I2>i+w0mPog7>MRI>+Tm_d@jmhU)_*@9R`WQ><#6N)yh)WRnY8 zaUyT>rt+8w``?gnk0dPz6t0&Pk)691xR+d!9R^DT|Mns0U2Pt`*YIx&D6O&WaO3bZ zwAas?uYg%y^_t_G*n%+;4sevVWBYGkz9uA0g~2A=cz-_mzsoOJjaESmR=WL7+-m)S z=RyA-=N-)OJ24Xl^fG3I1wcVCo`N+ID{p%Na1|pB(H@tWc70}pMq(EH7D{UO%_00=- z557}IM*1x$eK4hrefwjZxx{j^G}o@_KY`p7oQdG5g9D1EVGVeAz@nzF9FtuT>9JRGB=K&Jb9TJ!LuOgyyf1$sJy&9C+AZ<7L?;Q$Q-~cddwp? z`2TzsLSFRi#GDtVR9p9hPcNZPXwQX5G&`;&r%0sfOIOlu1nihV-6U&E$`IU{b8#T0 z`i;86gZ_e@^7s#W0ypi^?;W`c@R*c`+fV!~`5R%KJi=xc&B#bD`TPXT_cYz^ZXvUN zPNLy~WH5pnLiG>=J^4+zyw+R=<~3|W8CgoKyE{tL3;pwuPe#*#;w-;NYHfQ0ESy*W z>W77CAAcfwgmmNn=s0z`&;Md1dsj`UwX;StnJol1RD+U2W06V2%F5d4yrb;uS{HiB z`+o_N?z`$$drgn4F8+>z{BraPq54O)XluLII)cSv$-8r&?-+qpj}xp=rMiHakp}b6 zG<+cla?iS8gNWiu{z9|2s*1Yar*Ssg5{Lfy2*cX(oqk+9Ix{m;@y2Ko_zb?VMKWh5 zoD@}__eKkGhP9mMJL2R#k=58-N%=8D?h=0z0rTSMgcgV{~!JS z()ixJp}aiKllpyD{+~2{=cYfhpBrNA?1hWiAIk9fwHRdy1a=bQU!*&6ZRt7vGEbkTH+FHjZ&krjJ=a(mkq)NmQjl;(yD+oNb6DXcr z$8Ybbl_v?`#4|}54G6otUNq$`D==9OkE@Um%770_>FL}08fat|pwRJg~HyFR0A?=0?_ z?PdK;27IS~1H&u?Kc)Up;^L?Qsz#N2R$I3B`0Qr%=xWu3yCW7plYohKR$Ic+OLb~) zI-6iyhy{Ga?G?ayh3N0q80|JJDOJgX;sh;Q;@hbqtmCEckK5mF8*->$(n{44c)Yo! zFi4p^cgsnNm_dzwg4{w`4GX(xeZe01KbH*PI$!PlhZ=>wRC*KGG3_13?x$Q=*!qpf z8Mk+R5*s47*&Ik`4f0E?j3TvY(#g@UYoDG$oz#f36}oN}dVIVAaW=vAbAU@x+9Ri@ z`a1}a)iuAQ!-AUBzzhh z+JF<5{muVEtN_7E@cbvXQ;!y5=;{--wy|TR;DAN{1kYXbc{2t_dVFL9@Ehk3?ZY2b z>#!1JJ@Xq-d5H2zmd4rO^(J)RIS8JX}ccQdmG#q&iW9(P8&{FxxI=w zTDq}kpaWLiH87k5X-b4pP{WlpJ}B>FN2p^Ffnk@`VRn)F39X&0wZw?GX~2sW*i4#C zi8$&cWq~T&U>dKcsIeB-D~S)5S%s8f&!$=|51fgTzr5mEvv!4{QL@lehM&KA9Q;zi zMbG{pLyvg+xW9!1@wO#eNp_OilyvDQsPW45;GHr$8Ny0^+24l^;jGWRK6 zXsG|k(CpANa&ju6ZQ5A)cp<5y#!ZhU!B?Ntx!K*=8oB!A4!s3OJiL$VerE7)rk|#9 zBOLRdP(FFG&vOZVJIvO?e8(1Uc!=ihahn0VOW=PttRp1kywxlR7T!jO!(A&gp;xLCJoNG4DvBi-$CukA20 z=r@M|G}Sl|O02K@h7?!kGtN&sOZsOEvq7Z;&4E-$-uz8rg>tC|k!hFp0G62ZVUo@o=NBNLZo7;Xw=Gmt;Ba3D>6^(dVH}y-89(q^)O@?p^WHrF5e%*7 z(f7J~&0ZG*wR>owrDtE#fBq#Dytj6=uCTA*bJlO~vAbd{|K~~xlIaxJ?E5?2V{W~} z;5fI;HlZjO^EvrA z^oI|3S?gNYsyEW7^>w9H*S&e&?59U2;S3v3J6rhLj&KCv-h(XTjB&y z{nmCiqsx!?#gJQ(Ua_!wW(tRG(iy8G;&HJ9m^I-a5nD`3>SL?8fG-)fQE0zGmjx>r zMI})IZyg(N)a?7b&6ul=sKTAD(ykvSU{pUPr#Kv7PAJcGP>`U0JZuBdHhxoot@UfJMX#Sbo=fzw1=6tgiB-<7$V9 z{KeQ(hU>B23+g%EbF{|h!QIuxtP9Hn=?eIOXeQ2R)|0GF`jx}g(kfA~=FsGeb=H+W z-j;*lzp<;Ir@Ur0YF*T3X8q@EK;` z!gw7qRf1Kh6nAkLv24NWWHUr&xeRPE4VkIz8}IZ-jA*L%CITH4l}!{K7$M!vE#>6M zZ@r#OimYq}1rGf1xV+e&L24MT4KhM_!3VQJZ7RD% z#+4@Z%I3`4P!bl*b$GPtaD_RAMO=Xr8w^)(-E)rGYzw{jjhG#{6yN9GfIYm)D=+`E zB(dUXjWfS9%B;~g)!uB&&+rm)IYztqk`O)BR+hHBw#uPX) zR>)(?4k54aS+7u5EvNBz)fRlRv-luJZJBwXe96a&nu+4euEV@ z+5uLUu|M>&XI1eSt!xvmK%!r!gL9e=zn&v&z<` zIrt8ZcC2EL{|)fzZ$7}8)6i&W#4m$u7{VW@XZdXabYvCRo)YaEksRuMLR@B zYSq-pBqt@wx7M#UwJd%8W%xGRfQ8NoSGtHxkoj!<`1ZYgeEcwfy}qclu`TS@Otcz$ z$t8ct(52`U=-hZ9*BJ()3N@7N!|^^?xjXZi{cTmwk5e>lqa` zQ$s`S@y~@AWul_jc%J2vN?fsJ;1;Ay#toOrJG9Yw^1Qu~UNuT_mHU!PZi_1>)q}h@ zo5htJ9Lpl5b{yClo+2m?2-}mVPZyQI>Dvni`@0#l{=IEOjeEW6Z0ADH<}r)RUfV4x zqNLz5p*K1+X#ctLKdm!OTpU}nU}3qbsCeu5&S` zdKf!Z+o21n*nHNMUe2koer8}Y&*4!k9eal0J0X>!xRcqV54^@mleJBk(^U*`*J%G| zW9eE|w*}`^m_qCy{kx)EQ6Vw0*22Np^q0T4h-h&95xVGs#Dj~6!*5@SHGKCYB6{?L z=74W4AyhIw2NQ?dW*k0!*gd%DyS~b-z~NP@=sQX8;5wP=)I8dq7{!d=9bS0&Cfc`t zh)O=akLNl%$5y%THX7S0s!f(#XwATsozMwp2F~jiXA8%!1Gi3w=jDB`s#gTf09=FI zom1KLmF2~ydy);RLY`B~kc6?>G@5^Y^Q=WHT3XtC_1GXHdVX~krv+>IIDNkWA~(?AD{W=J2m%zXQa#&mE?~+sg5$_7XBP`z8_$o8 zmjg`|9_4b9R+ExjR;N;|B)INu#E?@3A%i`$q_+#aqS7?64XQmKT`k$|aeUWDeq(45 z${AbQw9)7?Vc`Q|Zr4@kqzuU5B@ge5iZv=a4Q9&4w<4S<1nfZlq~p>rI!Qy*0US~j z^}f2>z)KQ;P$_prz?`I*y~7o7Kae*c-nLYIjOwVE1IE47s}ZbnP% z$Nkd7V-v`ASq1GcHHcV-S@$Ql9uUfw&7@Hl|9l?i$LJ za)Aff2hDz(0f-E6vi@tx`fS*8n%it+k6`!dX}t9^h}3q{x>>(yG27%5yjqyzx3exp zIv@UE$4BZG*tyl+d4|zQU!S+{u#??gad*b6ra$tUsGe0?Muvj#&u9DcLnug^?yx5{g z^Uu{k#{|p=mAsqW#T~5pzFvib(I?LVCt`GbwAsZ?YT2D5dZ#P+RBWaL6)eDui`FMc zyY3EN15y*NQ#Gp8eu+WZhuLg*tRH!L*2F^*gDNM7QZD0;?sv8d0C{u${F*+3(>ryi zVhpS@8?JZ$-m0~VrrxlazBHgo zs@kT@!h1?JutkKZKx(!L-t;H66bCVl%|~z_6YKHP4LbjD{c^T}ABD4L&~j_vxd>lG zANOh{O8rg3)7*>X`By0pzsIX{-QjutL#S4r1GUlCN_RZi5K*E1%%xZCtTeGEQd081t05Yw*dMz;Oc}a(Z$jA zCUoaWpDvzuZ)*WM$HZHUa$FGD>o(EG6kjO}EMWYy`|gCy1@ojW+5m zX>@Fi-CU49_802|e)LQ7_%=T31bi--q0HaYZZ=j4fvf#%LiWD`x&Yym9BG-=Fo{t< z_|dY1TLU!6wBbeWLZ4bRo0Qk`V@f>WYym>R4(seq7RDAwC8=_Fd|?6-r38JT8bT(! zakG;h+clsFGWYD^|M>AEf!pt3wK%%?fU;KHD*Rp%k=D8joMZj-hev-k*BlmSdcNO} z-T*G){rmG0hop$f|uT)=RDB5;2))MzOn1k=f>0(4v% zaK{2SSmb^%>w|Z4XT4+ndeZJkD}WvTx{-TV$x|gh=#L0sy?;o0>)+?YquzPDwNQ+x zwLn*53U0=;Pn6)&pJX@u;ePbd8h}+X`w{Uq>i{G7T@y5I2y}v8v@nSHf`}>z@z`Q=ntEKpD^7~@C?#C zArsQ@$1Yg^GKedZ=-BS=Zbt_%;M--Dcl57$UA*Cw`@|8bhyogKg^kK@lZsboo9YkP zcuC2* z3&0T=7EGW?&3)o+%@(ueI%Qdk+rtk#&E7{wMo;V#rzd zk~Y$Ffon(7KQ$?Z>-!+zC;V@Jx((VdDzd|Dkw;4{~v$tR9zw((})fC6=bY`X8NstMX^Tz$@4=Ue(mQ zcJHae`F)ANY%GU>WAub&ll=f21<~89nUb`W?o#n?JB>=L&uRV!0O(zACq|ea29H9J z3&wO5w7EXczhP%P6!Qjl%&Qh9OKRSVicOYkw*LD5rm|rBAIbb%x2jHBMrvadd^rLX zp0UtkdJ1*zH>a@b&y*W``!|5!(!0iLDS{TTrDXD}hnJL4<>in4doP4?=)-MdmBu&E z04eckpO&AW8Fpgd+hkv%$UsUJS8*z^}!P{-}G)VnJ} zv|9CF{liZ?s{WQOZooEpMZK_|Y48vej}!wR9Fc;#h3@VHRt30=+~|IL7DeBx&2`|J z!hSllhyVFQfZ3JcGH-n86lT@+6;J~~ZclQLU>EtuyHEhdL+XT+hC48PJN0L1PGv|29qYM7f3<7O#r&i@`DqYw}A@Y z=76ptl*fXaL@I0{S_V^(dZQ>raK{YDQJtX&ml_;2BB<0xW z=ePFY{XQ$6LXlm3a2xO*@$QWNoabkHK^7VO+YGlxP}50~)FMbXcub%_@m2dbK+x=u zpOV9X&sF~-NggL@jWoaP18>c1!JL2^5hAcLfl5g(MIvepmD!W?=cIq$VkwzT;Mxr+ zVXEhcSh9=cV=r9i`K@KKo}QkTffOvjt#Y#l#G2MUM?r$K!6!$6r)7j6eb)O=MI;0e zTt&**pyF0Pcktnz=B*&MuB4@QI&Kj$v7qno1b3z!xVNGK&)~;gOH<(O`tdkH)g$eU z+u*xV+$zVVWfgbxM8;0halF6>?jp@Uj{0ifyy6Ei=%_mf1`&WO2Y@nA@Pheve)G(~ zWSxeF?Z%b!u6^(QpDYRiZs_-W|(=7uiS4gRM!{EzAW z3V9RvZ*1%>drFgc2>cNcU;Sm5uRJicLw{Ub$Y!6?x~?Me1p=aJ{%z>~mRSTj^8dMz zw|cjSOFLW32DBKAu5|eq(l~1UmZ2|l+^2lkV0RFzlYz1F$RjuQjix{K$&ABmpgJN^69 zzoVnTZw-q)$bF)1_(8VPehVkSIwAHnox2nfwOfBW?#b_M{SH9?I-pu0o`uG?lk;#$ z_U3aMFsD$+RC|JGZmAy3zqySj?!B^sLG-(3DrdhOT0d;|Y0L;nQiQu{L_ zy4+uiIMD*R9{DeRHl>&g_-S@Tl1pEm1lzA#7;FQnblesb$mTyTG8QThlYA z^BL1nbtUZwUIlu(iQkMFHNv!JDVk;M69I2Gi5~Nl*$Ft`f(Zxa30XIGWK}L3KF08~0pc^U81D+_K-5 zDuOFDinKs%(WeJy5N_dy z=WDgNTE9`eJk6XA$}oF|x-k(@H|Kw3A}q($*nC+niV?o-NRq7AAR;gj!iVz94&IF z_HlI;5AFD!bcu82HNltyG(5#Z-qvD0QayX|VWl?3?}FUo>{7fNFoYu=q19L_{c`qp zz`Cli8a+1QtFNjuKW)ZT#!Pl@cL>$yZa;AT$q#>WYMeBoYo z=<-<&I)ui*$vjHreO0+UFIJUbS4!%6Te$xYf*4B3da!_bKu?m)bVsA7g5! zIJSI^<=tz=o^b!LrCbkojKjqA#y3!b;_5rnT~4cDSMHU_>lr|}`RC6c7R^C1hGw^- z?}sE3#G)8X>E1;p31)4)q|f>x=^eJP)|1Hgvg4o@@)v&(Q-IL?%8&oyCdjF` zi>DzuEvs7w`>kFwNn&#b$4BXTDaEexKeFry3_C=)Yg=`GvP-Dq>ZKN=%#(RGq^!47 z&jQ45bnk3mA{T3$?vebE_P9c~8+WqXNy|DT4N`bKnx#^|&5(chrNy8Z}lH4yQJ%<+y$nPRirUN7VSw>GFk4X;j+H)1h_*bH1qndyg z#I>L&GMn|w*Nl2olZ=!GgBZMq65ZI-yuS*rMUg|sLUNG!B+A!#Q~rUMkuSoIVpnOg z0P>KJ4`pMyW`3RGBFU;q3#led_p%-(wL@sc9J2|*>>$^#zYE8l#aMuw3J~pzJx4?& z&?k4-ENeyH&<7ieK+nH2d!BuzGUwso!ZJB{Z_S8kA_~^a*pFeft<@<+z91KzLo8UL za+ia>c>j$%{|Eom5mGur51Hi*7-g;*<_u4aD(#MM3pCuw=SSbm-X0WLnXVgUD0M$j zG*q}~u`7h$Gcg=n|3i3*OL=h-C zOI984u~?LWX1-b@roq{laXwmZX0@lJ)Uz=@me~hsS)FcGq>yCv4T#z&7iBYUYK{)e z22Ag?@Ac1LF`xnOTGPurDs@rP^`A6+b3_J>>p@Q0U;N*h=AYXtsMBx(&z5GkGC)p6 znI=w%opuR_>6srUn5gupOFn%M@mX?)B{Y6+GegR3lY5Uc)XID0?Xp#7d&>5XEq}j; z_(;WK0*NR1LC}=4*H%$+GDf<_#X{PEGWe#YQB3NjqFek@DtJ~guhj!OVa!U1=mu$9 z2%c~xGQ~WDxqVIPJ8z5ZJ>54x>TWq#fL4tc(~05-m(suXEN8D;u!^r#2{N3gZq;{_ zn-zq8CKDj>%ktNjr0!GB4CLq;H3cy3pM_#`tCh`aw2y$t69|fQHLfSY9JX?yI@-uK zGqF(}zKD1*v-_I7(n?F?nYXy)zdakJ^|+EC50&=;($PIg&B>95=A`jvsC(*s39DPU z(^e`iX|Ec}K~G0)W~pme1jQ)gil)DL7pl_6yTOxVaay2oyROP|BSK%z0I0(+TFRWyED!7Ws&`e&-FKhXXg@sgdcJcqAxlyng@1<7!u&$HjmGl z@X5`v3Zm{=TO&MKtlDR&C`c!VH+a12pkbXUh9SS=8gw9I zQRH^pMyuKs%9b~N)+&f;pW<@*;NsPV(+UYlT|$p%jX#92Q@i!!YWT;BummYXEbY4j zU6|fWx_LEhulZnAO-W5;i;{%HV$JDY?OF5Ed98X@YEh=8ol0`LZGl!iW~}VWLV@Us z)Uk1fyoNKbb72{H=vir$J3%7S<5k>|PAR`jU1L^4`p><}5uCnfv((8^N24|I>++0m z@DKEZTUQC}yquEh)So|U_Eit$P)5Z^?|J;c&iNy$7x^h4SJp028BmI#@iy4i*)kQ# zsHF(|yM0ZQP)oMjd9@9fIWrFJQMLrD`-FN=os_K2=tf+;t9^{1l~AaN` zQZARY^TgTI^j)CuTBM4lFfv9X*n05IsIamL^Qwj?ws>uz^>*U8i4dbAVpM4da+GRs zU)=1UU10H3Of}t*u|l2%OK8{6`r zq9NA2?rFa;gn!6zxkhi=xCWFebAxjNh*h11WKF7r6PCM*BkQNsXYTgSx%2ml+nvbe z4JN+IB|hvbAt?c-%(TtH^gbmpUjn83If`7|?oy}=vC_qn%kf6Z#zy|DaR=xLfpbgl z=mV2jxgA9F;~M{TI!mDiV{Dt=^t(6WvjR;$9SbrWZb!MhMEDHUPY12fE^97BLbBW|GZO^ra_2Zw~b8QW1W0b%NqMGd6q}Z@=Nm;hXUGZ?FlAxzmwn#xE zp(fI$zZeC~cB+zZ`EXE^d%&~@@C%M$Hc~Oy!z&6OZZvMax*roQxHA^}!1Iwswiy%U z5VX_rs$8Dxmk8c-%vJsrBg9`xzBTc&kD@`fkW2QIN5 z9E5xM!@rM{`JSZ+UX?f>?GY-aKh9jXLW`c+hB+6sKeMT9yuK+3Fc8dr*+$c}Bd~1t z^Ccp{a^7PmRGc93-nws17Ndl^c>JZ;C!fWiG_KcydJ)5Yz8A{s4CdJ9llUMlm2hVH zq9@v(hdu@9;#T7~e{!b=v4KGfsxig{b|Or#kAo}UF-X}}iL9k0+TrIBC9PW) zK%0V#(X6wjq$FF79kYpo6V9#EDirIrk`tl0$ijCHVqpR42WtM=7(UVKDc97akh!>L zdkf)av81)zCvcJJh0Av(BAq`QnMz?jy3M6LwQ4w<3jE5I6;wRY11kR&=0V%5Q)*^p zw!EAry;K4FCz-=xCZrZ^l8p|2g&FdW{dujn+rb$t>mP3EV(QzI*jgPE3b$p)izEQ0 zLZ;X5&frwpXD2RA%iE!rBTQq~Kk^{&Rklx@eXtvVRF}1v+YQ6wk{x#xSL@fw8e88> zb8Jq=aPEQ>s@6G$9QBK&YM!Qs<<9wo)KGgTOaKe%X`61&M@k!%^pRq52v8)OCmx zO)NP6+0R!Wo4~{VVo2_yVLnTln1%*W_aa6&|HIi1m%~CfYgPJ7CQ`9*?zBr>bX$9y zKVYeG(NzOkf{bQ0ket7a<5E>`HSTD&TdN$a=b?)i6Ni9tw?(6CZ%jH%lapQNU^4*E zGSI=uIK%WJIe*FKHKTKjj+GGlX&s2k9IB<=9rrLIhW}jeRpOUR(=ucP0ZGkn?UD}+hk*cTML!z)KdxxN5a+vS_5;0 zB}l89hr#r2+p@;0_A)6MJFbLl*or#!c^_3_awEwTe*R7Or<>W$p;lsEO-b!bn9G!l zEPb%&y$9C2^^SBqC0hk!Y^Lr6#t+u|pn)5tM$Z0Ar0NHZvOsCkVnacUm#^muQRZ=< z(9^Y#kymsLuy1%~AAd+T_TGVavJ7>%zKDWO!B+_RgxQnmCBG|Bq;poP*istEM7!pb z0M(uwG3nkNQ%!jF`ifTeqUYZ+jYdUB@6KKFA(@(;0w|Kwv4yA?WL$A|t8iLT3@gez zielQgRy=MR#_3CpX$?&K6uhZ4dcPEgc&-L@jHW1;o%3lJxYY*wlTtIwCuPmp3jU$!6@4luyDg|~fy%whx$x9f2 z;spKKd_UW{+27kj-i$u4zzv}+%&14zNG60QkBZe~B7J@?xM(z%{^e<{UL}NybF*OVE6TD`iUMqA9NwCTE-( zY_87-ow+!^Q5@QavFbt^{vdvBdC(@-rpa(?%SLLXO7oKSMmK5^ZLt3Wu*QBSoFujWlDUdzc$g^_+-=(1FiGKxPpw>lo@ zx+|u2a%^`nE#cLuGc@AaThLg9Xk6UE>p1^B+0}m2Y=Mg)X36U<^(jl;sqI4z>}1?N zuKzSo2vR3gxpMpM__2OlLK0gFg%u2*sdqb~19%staC|M5+E{n<+YwQ>HM`3}DxxvBs$OP((qAwE-WUaAk zHkR3M2i#innu~w^c-Fjcf4zHNd}BdQhU;ogeC7JxE2U~K(`BmOD^xXy?#(feN=)h#t>i4?XVGM4JH3+Kl!Db+j!{K?@W7D>%3uu*jeQ7y+JWw17i zBZxPvvT2}u1U{cWG~O2`4xTCqkMZ1*0Gl3CW=XDhQV&$i4z$g_^) zp{=2dOlu!Zllb96ml5=S-g|y<4fED@4k)sJ6Wo3ACf#EM;@IZ#8}Bz#Z>Z7;rS2N{ z-gb#fSL&DBQ(vXX-jwKw-KV)~0x^u&oHSYdOT1H)w_a`fVh5Y@%}-yDvvu+j=n2~G z-ixl8?#&&Yo34l+|9fE*AFc#uBbyy{elWV!A9{8tNcdxo^kRY_dU1ZlZp$ln*Y+x6 zNE3OlE{=A5Eqc*$^(g)0tM?%Xa~cxOxUB*yvo#l^qh;*L1|g}sW};yQq>VjY!@R55 zqvg__t$XD3({#$M@a}a87>O0S`VU&U2uqLEde8x#jyhQH&#@}7al&WrOy&FCFqz?$9xdCAb z2K$RYS|69aQ#+z`)akJ9s}aHp8Jf5PvM_s> zM?p<5X3c8|b=|+|VXDv1A zR2jK%tzK+u7oGDIeq)r(qH5G6Ich7B+E8@!{pQpMw%P}zI5hK=useI2z?wN^Dt%oc zJ`;jv+DUP(ko}C)4tAfdgZN@_O!@rsHBAUkFyKRj+KF9y5^=e$kWdUfrxCd}QtBJEx`Zg@1ZV3N#-?9gRzST7HyxDSbS8)v$q|xz4}VS zcG`^r2NT&u3uXE`Hib z5R`h(&~1LfKa#g`JZ@dUzu}w?V!9L+X@#9;q%(Cv&N?iYkg(@iUX~9xuDnqGue>WF zd0NlNrL9~<@8kDG=uZ1n6v0!_Y^Bv;20id;y(nJ(yJ1d6O03lTz>U0URk(ADyjMue zgOmOOkuLTq6o3D%ijktY~&SdF8KM^Yx*R`bT32U@g9!5+T(r7>& zEPgTjHIR^b69m|BHkYCF1!Zy(+UXXf%9aqZzRC8dDX|3yJu<~wagrbOBCQ%IKo{i4 zn^E_Bu-R4%87cd)?O>A2nIUUJTcE&lC{IuQnMj>KeJteA^J9F#i5dSf6o~<|Z z$#AjmmDB~-?)EP;MkIYtfiX}oM9kqrRaAN&r>-3pH53N1`V3?q4!o0>?&|IDre2L! zZs~0mVh;%OVqjf*-71WJ4*py>KwUf*CNf`kd`GoP4vXs22V)eTiLB5fg9kh^If&cL zfZ@n#Fw@C*t{h-eT63qt`t90Aj@GS|;^L%3^lY~HOmYa*vBX5{}90W zI3j8>0C`l@W+MLbiQvv#{%j^f)+ztCSBW2~q`T$B)?N@2=8*kM* zHtDXKPZDFID^~kL#3pbM?4H@Yv-K4%Aa--BQ?Y0BI)@hWG4-UPmNs(7O|>f^Pq>VW zIstmye$oAc4j_mC%-wKk0)9qigy& z#uUDKh&0KKtF7s`<~;bX{J&ntbtzMXCXVi2Z3=)#MYHf+!;}?S#pr3g8Geo# zR609avbV+zFEh6w^C9$&riwbC<_{nr&Jb%nV%ahT(ImKH;~nEPsXa=^_Cl{F9uq+RpQ0~Kut-}Vap^wBB`p=5z6vYCGFveBY?y#En&Gk4w7~o%J6Qr29Vk*_XJUSjOupRj-G{OZr+47oFURwZ8>9A6>G= z*M+xe={B}-!kJICtPpOb?F}F711&RiS$3k(c$ab zIigcLK$bSYMAtD2rdKHkBh(TK*$Jw^Tdm?8J@7hv7pyu%eeboxAXlJz&J=IXU7T~* zH6za)siAHGy?;8AAMA-ZQ6TFHj~&0Z5!Gl~=u&LyO*74qb04ah9vZ2s73mf8Q5lrc z&o21-DPF8&w4y=Jf9{WH0-~n!qdHJ8Dg_~E$LszgN2N#Ci-W60Muk)T{Wwm6(6u~e zecR_G{h7&)n5!W#UMqq)H>98|-gbi*Y#&|MopHFV`mdvD;iA!WT8~}eOMz&vNZo#t zUl)I*~xc_4R>^xEh)xr!pX-Uv|br995yMiL%5}%mlVRBkL}%wDyGK9Q5oKUtyw43%c0QG%$WVVLSz5 z88`RM9KV5lG}Vc5U{4l&ry?|lwLIM1;gY93Q1x;YLZ30fRRF;)skb$kh9I{p>2;o3 z@R_}J^<7~!CCYLd=%HWn8 zKVY?Pa(rgT342Kp^p3%pla)oH#1P05!8`N>}QJuixsy;Rv5taS3L#NRh6W7dB40-!7OKz=enU)zGX!&?WD8Z2Wm|W@0eYgcP4Xj8krA5 z@y?ikaaDD4d=okM`bys>KFcP18;<~z+iX5Qi05xSDz*WP{4_t}zcqFTe5>TI!`zgP z3$Jve&i||z7p1iD*G<1*jDd|_u{-Q!f*x_1e5D8q>6+Cdy$(QQ!yWC=Gq1+s?wRaB3k&COs=}{DW zq{AC*JbDt%H@JO<5)*jLg^4;YCo^|>v^kp}yhn}yN@W_o-Kj5{e&hXaV=cl$;rK#4 z5Vw1$#4{@NTGwuylW)9I(rQWd+43SHX4n8 zQ)c%bNUVA9661NE9>e2bvFN%8{ zUP`+-`u%O56dxv@ix;Z@7sML`y<^+2M5js=G5iJc1 z0X8@}Su37v^Gk8G`7dsUFdzk=w3z&-7U0Mx=VYu3$@5{rz&7fDlR9y!Ygj0M;EYG* z*t*bjv&4@6#B25@a~n!v+^9UDZg0G%ns?{q0`Mwbn9B1MYnW33<%!xud1~s zz}oH=E9#UVaxIr0pjAV->z7Q2%De6cuN+!h%3mCwS*$_~v?ms9`#CC%0973%%EQU*c8x_e+I3_fT{$iQ*&*}V4$ed zLIjqeb)-TtHHm^Hbc)KHory@nft~nT{hmZp6tu=~f3NFFNb1p`O zA_nH452!_GY2C1lP>=5F9Ua3vI5EHi@JTl->PF6a>#t1f%PoVRFRdulZ&V!~E^;~; zN`wLQAss;$|D;+rG#boif)a0a?WBXe`fTqYIBka+GY>YGDT_tb|TP)wRy{C!$W>sd)d>+XDsNE5EnKLec>qp1W1HL0i~i!O3K4X>S=TAo@32 zbbgZlc-C2KHx2cHi>2wlsTFY3ox=pe5*$>$1Oix5$!s&Z$NEVAK4l6hDlins#v1fj zA9p9FCzo4NCf8*B)9weUi^fTJjSYL}X=qPT)y!gomX%m>h0RMj#&lcLuQljp%r6mT@yTjaCt3)sxiIRLx~sCRHXt}mX4OT3{s|!G40#wLg3K~ z-5+-cU?DTmeI_$HK)BvrKG-NZG~XLZA0>Q%6^~FAgb8Az;l7+)QkJ*0a2O+dUH8(R zA4V>dIULXT&>BDu1QaCI!NES$Y|_gQbbMZmyY+tj$)x;tBPNnZ+q*DY7ZKe{U1+qX zOeHmIqC0sEAEgXFMh<#cjF}7>|IRLl$v!Dm<)gA98wp62A+;y4{x$ zzO^J=b->Y!3t4vo+kk`eBh9-^DpA6%Kx^Jyg%O^&CD10m5afLj^7bJV{UV$1_)bw! z;*&1E5w&}I?jBF5!ol9@FP3(6;qwWt^|UA(W7D7*fHK=i`1%(uanU-7G8>%5_#i|} z7ItF)q1eDQ}wBzW?we@yXqZ5}JJVj}huj6+lQL*akdOP)&0@>HOCfXI3Kj@t_y$2l z9AHhlq>$=NW)yUd<^5ySoa`uoL;k%-S$f$S>s6x%gSF=V^T0#_xcw^UmL;ao5#@i1 z7^r86z5$CahvaXkS_F@}CmeS*CEY7q=zh6R>_1VeqTYqv5+RoUHN{-xnq@NdxW;^I z?w25e_uXFi#>xxlCRM^G+(j2bRW31#LU2v64yXt*pFmlUHB9GK-Uc4k`InXRo# zbUmkj_6)<9IpSKD*Bi`x{)iIbKWdMgzAV6c)=<8SLMH#23dXub z9Srm(zG>TUlW7>Y!KRfY@K}9W<^CNV#8t5}iKRHkkc08IU#M$&AL9hkrWslyl#CYh z%FD)O+MsbQZ8U+rl}H(^e4>HB@P?H6#$wH*N<8G6pA;zDwttD#BRAE$xA z55#l<=M3-Yj1^Yj zQYq67dTNY+0c_pKRM4Qfn#nyzq~d((?oFVs@Tjhs_=woVKTSu(RIn)Jl45j(kwe{F zB|uRtHhwIf5A0{VV)&O1VOkN~yX;n6grCe@gO$%?aTY&}Y37$)|{7-+of!oW$#9 zo7#)-+mo{SU(0}g2*{fp-N*1%aR(@*D(_B1%0uOZKtS!Jzuiy?w!-{!SQ|Jd<+Hjh zIjW(%y*Lqi5LB-A?7K=*N1$V->0oHiLFftLxiEo^RsS@bF*TKg)M@!onc;FT$ARKA zjV!46c$Xrk@p9op?%zRY9n0C#$oY*cLwgezX@O{uT~`8&4pAEaNlV=YlcnCv#Dvdgj6)Cz?Y$MVX&jHTw+K5b~YXPmk180V|vSCYop zI5SiOL{VtV(KTDnbOFXTbcrL52YcG^Uh_ytrh)j*=EopHr~JMDiqj$WE&cP=cRO5e6GzxO;Ius7_F1rWUyLD zTrQJHm^+DE*F_4zsHqGgPx4V67`~dwLK062S?~<#e>rb5#3X74ocEP4&UUA>3C2gL z3*HWo$Mr>(%+SLrmGm9w?j()hyx+G*bez`9f%?eEE|>W#NiR3X@N#hakUCnrsDe|K zRTQVZ>BOnqJd@K2499GS#8^J4+-I*hja#OzpLU09OyW97QIwYe7|1!%?YEE^n_6E? z{7T9^iKE&z;*w-qpW51?mI)HfAka7aJCJ{*;16rcrr$~2&3(=KDIsMIQ_ni@WUP6> z-!NQ#FgA+z>be$sD7&NDaSwKx_1WXbNx!?l9?*UPc1zRh3j^_@W$c{2sbBRDng~ayXA2VL%Jb$_I!@=E z$UdjJ-Q$x2gN*XqK3uY$b2b4Bf@48xc zsl}|0Cm|Ctb#5i(pR^ZCse7~DD)lkSR^+hS;kRoaXG38t@Wo9e#Q8aq87pJQG7FmO zHSZ#>bg`L{XSQapCj0UBmLm06sJz_gK-PS+NFBUKk{Wgh zw#g3R7sy0B&0f6=-h%2w3+lAh*IO_*1UpS*tm5NTA}48jL|pwu?&r>YwoRa$oW&YWRUrQH> z&ie}x2NUc@lEy=UZs&L9H zyAnx=#sdu=XU6*LH`eA)%Q@X|Vxi=-D+?Ui&-v=1Ism0cMI)ZG+kZ&QCO=W+oGW6K z%}!>5Cn7k%cj?mWU}75VFcR}N3ZH6vkDx#3RYC2t_^mZT^tk-dn59I&?iQGU4j2n6 z9Zp1Y@Zf!-n`Mm)q;QvU;Zy>KVc$5+=z~Tl@Bu~Y@|a-qa%Y^Tq#Z@Mq<>0y(j-63 z{pbBwv0}9=Z3oOmiIn#Hh}0+<`~#fd$-nn>*wpK~N94i6RqX~Cxn@VUhmmx1W^qz= zCj4qN>84(^?Dk3UDOcDE?c((@&XhO&nmzb%?$0pI#;H&={_?x(0#&AJzFd)cr4CD5 z{S|M8%)|b;i>X&j6wrs}^IDTkiz$REAs%zE=cu@#+zQzV99)e$-aDqgpLD=Grz-6# zSqs(E@QWbvG_5p+gw|wT=ZPea{h<6H`#nFo$n@?at)@3k=P{BzcFexKX9`eypS~G8 z*5tp4(y1SwmbBaT`4I{`cZ&Mopr0|wcv7ihtGy{xT!ZA#t)k=JP^$=g+eK$8Q2UJL z^j;{XDuHRtbyUgCO&QZ;g(S*egJ}M4?xUO_r9l{C{hhM1MsTGF(6{Q?WEbA?7T#Ds z)4IM{j$zYOm;7CqWa|!(i@#&osfSnd!_6%h zmq@bVIudq}MljJqEjg?!$<9)x+1bbmR6}!0d{cqP10-|_Y7+ZbEODec8Af`qDohuE zfY7vo;V?6C%eDz~5b4A=-=2yFi(g%-g4ksU z-48h`H4WKm9h~!(^<8ElnjAG{O}l8{(&wV%1NCNEkd#_%N%wKP>n)wCQ#yrvO}(K$ zu8n=}6ox`nPp=o{x;u;`HrN3DPt-8GhOI{01|3)97KBGSka`EP}mtn>m2-G)ac`jd@hG|RX0>bL+p2UDnDiyS?A9|DD= zMbv)$_2uG;w>vcOzL7wWLOG-wBt08*|H%ZrH6oF`&YZrh^g!5Ih+w`X7Xr{a@sBRMic+>sU@!h4A zhnwY$tq99H>={zQOR?b$&r0#a8a?AkCg_lQA*T+`d@#BW-!K_+I@n(rEVV zYo)I_3QD|En_~r>#Tci0_d+9xIpvi?p3R(VB^#(cKgEMe9j=l8S>EwrDy$E2*j&MB2)4iI35&$2Fw zgmN3kvgglNP^S<4b7tgT7gh44D_#MaiU5wnELz_+i&l5|-aXReb+;9VlbN9@V1Dt; zTbO}LnD#Snkog*fl9#F4jNS^@JDS1ouEa{mwoYNB0UgqN4Yp^>0+Yc8meXKA5;LQn z?&&D8LYURgZLYxNxv@dEy9xOQPCTJF8m|e|ABXpo{7UD+;$7@Rwzq#2*T`7xXIl4) zMmH#vY^zNTCcqk9LfORfpUEtCGTiYeVOjGNV~Ar)oo!Y&4kVD)d8M7@I*B?lB@I_W zlG}Po8=4$ZTr9NGQNm1w=ck7yL18;W1L`}; zf?Zm(Bowq@MNsE(RBM3r=Dm8nQMOXn?eF=MImFwo640-xkP})(MFgrl|5!BZ-g&78 zq-RK_J?8hH`qgaaa(6Evf}ip~|BE_;lI7k3M~ecsMiJdUqPpsv(ep-~o!^tliE53? zs%hVf!^dL4F|qRr=Pg)e#2UG~{@9|(45HJPlsUO@-H+-rif0Zrcp09{+c~WkXu&h< zhh3ly+`lwqMwwNJx*l8^*Q`NUD!O&YdmB_w(kw~=^q{TqO6zAMP9LJ(itK6am1c6l zI#$E!SX8?mF@VY(J;fpxHxm6Q&hshcqN!niE-V@F`X$O9ovI5&>(|}W$d3+XmTM4G zAs2_GPMda)&9#Q7f;{^E-c}pj`1QO-n%p_gAC29`H57$Op=zIO`hn<52PT7&Aw*JB zSK}_H#pU#5;c2%7Rk0oA_fG_h26e7ia}V0c*OZNeb9Jw~VM05stv}kF5ygLAtM8Bx zAr?#vBIE)*2IXvBULUIKJS*5@yJg6y6mVHzEa~M^uleTkL6Pa&JIOUwjz1_0Fm7NC z6YLXgxVk2t4^<(Hf9u<0<g&W)8czunDgY9!lZ?I z;?}1e0Vpirkru?@s;!vH6d>SWCs%N7oiJpVzB;bz!uyX$)kkh2(^d{F;Te29MY_!S z1%nTwHCL;QjL53|KERtX;)q=>7v-4&d0@Q=EU{Umv4hkyb>7RE_Tpej?HkqK$4Jkf zF&NDC+|X|?bI1+NzEgL_m03j9d(Sof?=nAO5G;w*O#jW{{DOrO?I`gzoP$&gu)F^G zP9X6O<4Ic7mvPpn0l;Y(SKdZULYH$VxF{Xk9PvJTrXc}$gH!K@Ej9->r1TzMb)G}A zt>PG)y#FF;LKMU8-#0E$=wuGDG~J{x@pk}S^N%Z+5+*RY0XRm@QugTCu8#ajhP~@U z)cc9IB3MVg?@T!X9|>%Bh=K9lpV;4$i@}!H63$k{WihTn*@qvossk3%@c#XZh%6GR z5k&B#5&!3puG*qyt89jKQ|ybadH(EcD*Mg8!08WG%6!5F|5ZWb3c39S-A-|f(ar2* zwFEh^WeBvMJSkWeX}^3Uu=~Pen7Ylo!vFDFD+3;dS)nBDz@^qjw+aNi1|K&%sS1S}W+ zc!rYj2eOj|x%89Q?&iMi97X|(_?2mhB2fCQ)CT~cT2rul1(x(y&sYH@vZoGe6cx`+ z0(t#XS^2Mhg3wnrVktkF2IbbZng-wreq{6_xo74E?Xdm%&o&H1@H|3uQ&Fryyv zm(6p)`&&KR#+LYmgFFqx!DicEH?{w+pd;iq`$m+tltCK!|Cecm2j7I@9&E5C8n`e2 zmo)`i?4@r6aUPZ5Wy>eC|Ls8$vLv@5TVZbSi6{dYZvJoE3Bm?(jM{H$ZDo-E+dE>8 zjn&;S{1w8Je?-18XBs;Xl5(;I;qwVEpS${PeE>_+|XpmE^y^8vlBUJiX~Z{u_V&NE*-( zJ<+ZP|1l@S{=4J!?{_2_qbJM9D+oP(#uVl667ye|_or9>r?W`YVAUa<&&*M%dXnq4 zjZ*cJ-)>>mamAz4S$3$ptF*E*&Y`Z!>B4&kg^8WYMe(3Zw>=uC1!~}eyqbs?RC674 z3*1-1K{fpA#qys&Nz%UX@TcuQstp-=M`kAH5ov^_~jnV!XLGn=U@0^J<#k}4HuZSF#J97|5~y9B*k@>2e%yC>Q2}q-Ti1&LCsx!0o%uoB z*VY4>TJP$4IZ6{*HYpO1$JjU|U%h_&wp0t2AH}-K_G6-rp^!HZkh#TiP> z&S_mmjcAw(PH`@FdJgcfo|S`f@qnB;cQHg#H0X5JPU7v_=bB&b%OV;y428PUYGozi zAK=|SkfWuMbSDXke}d zU);?fk>v8ca-^h3k6xL?;IX1)-i@dqR!XA(@!Z~4vA$~G{bC(m;Fi1l5}V2CxM!1E z-5RlLQK%E6aOq-M$uX7WfRQUMGSU-9w6CvI>^E{{A=?j%i0`LIEkCM|M2wa5st3&p zGWwORP7Cl1?Fqn~0XusSx_q)$Od(Q>TG2@d>B~WFoE*}UkhJ%wh zTgfg^f`)L4Xf>u{@S(i>6jL4#+~dd8{gA)k2EgWo{!6~p z*@b*LoM|3@_uD2WVQj1{S(`-LApMciND)#eDP4O$Yxh2et{(OgCDsWApPMpAE}Tih zr7uG9#jj_*8bZm^n^a6j^Dx0$5yX$;&->ZV+Y)w^C@oV(lA4bZ5Jd0o4}#0f{%B$% z!pB*j?6qq#oD5m|3$Kj2noYgvZS^HZY4+V?mcpQ#hHs}E@A4gGY+HAFi93=VO~n9Z z`xrxux~?DbCx*fGI*G^dIGk!)C10hMR)=Sk!EE*|618G^;&9R7f-5vjuiPWdmitN~e>!It{*VotdM?>5^sVmDM?k!&y&i`lp(w(Ihs-xfDF}(;fyPFK@R!M7o zX9fEbXLa{cl2p!26zi7X^FLaEzCPEi=`5Q{PVk^N1=#es_r`{J?2cibtK32H-twCZ z?h-mJbfm>&h7%}aWz6Q+ck8=*dnTlF;1ZC3F1ECkprByay17dap|@VPVn23|hugD# z|EH58+VaP7PKNDn5;lV%e@<55T*W8@5s@sZ+Nn&fp>kJSIuC7eu~UC=%R!RsJ^EX` z@X*lbv5%^aFf8}pL3(HTf0ja`R2{iDqyO6_iE(ZA}U$&Fshq+M`&W(6CJsXmmB;PyeLHyb8Jc%C>wXQ4=TGu_n;9vNvfBBA#CTXvzy;tezb#4HC8afpSAOfOGT` z&WQEW=i7+cA&G>ppPo{SjrSShKe+=w1@lkhScyns`^|1lnZq&5P`=(3oQkg(j!}?{r zaOw2WZuv+T!97v=@`(=7Hdryiov!xsy;d~soM{F)^TNdZMr&i${?ob>kJ`^-m65+$ z$kVxmJ>2vMEVUI)H^I}1s~5GXc0c3CtEvj!`hdf}k1BZZ5hS>h+~3s}*Wg?&50kr!fHXIhY+z}|Yqp0! z!`m9;naN|AtML}5j`iRYmu(%1rnYkc1I%tJa)c5)#k*x2jHe~@c7a2iIBN(CiWzF=V~;i|G( ztgEuD!qapXr_vH(;C%LyaFzURd8pkUeo1cvtKDl1!sUXrL_!F7q@oYPD1!pZCCE@e zI3F`%`@uPakESZdy1G>$^*Y#-5Ff!}2#|(-OHgsi1*>9DSnWtgL{x56pAlzMR$PlX z9-em6w@tL;%FpWm0Y2r8LcJvtiUP6T#-8Q!Y4nFP2}IPUFI0!IKUmHQzjyZJ8AZbV z`ua@!SHRGBL~bh+sYD+)5f9C0viAM$t=Ic(RnC}Q7V=hnt8e~)uM9SwUKpr_duKxn zzkJ)QLC$~IvCgJ?`@pI@@X7YZ`A+7H+PnQoT2;sZb5jX(v}=JoEqbYwxc4Kx)RGKpE&S;@A%x4r)MXp$ z+Vc1~EHkORj-s04<@O)?XDAMiw?d|gGKnnpb4CVq4i`MXxm$Ob%!4n5o{EJovP|tq z#aXpzcJf#79pXtyf^0i4`vwL&MAx?=>F%t%5L~}6yeThu9mDQ?pU&YJ-c#`=#aP?e z5a1JVu)qHCfY#=rLjo$fj8DK7qzN3B)~Q6{_hI<{EWy{>RrpazD$H^u?f3YDP)*t5o6EH@(dcO*r)R z+<}M{ChV4P{X}1`J;P!Le*=Lu{T9ddIUy*qQwL)r@+FmDOzAy%Z~KA~PS4Y({pGEC zx`x7ok~mSl7#YjR^#nbhvAz4r1=JwDvY=uxHU`NkDyYxnRT}H{n#6u9-^6F)=n1tf=d0-I069$ z!IOkZ<^|LNIDSO#YcMe0O$zh|SIkw$S(_)WlZZ916ig+!YLGpMo0(wAK-EE*)#%|S zNQMKgirc#8&|>}L5IB7`=eNi^-o-K2@xh7g?&!(0jnJ^v%J&!yXf>Aei?c(ql;Byq zI|a^gpr1mZd`glg+5x<_MDOR=HD+fnSOX@vG+xnJ9w5~|Yjy7w*QZdJkhUW|JMt@! zx3GnAzvGgg208m0{prePv89o`hL-H`4e;}tbWT|BtfGT!4W_46`SmljRBu$SN-G^3 zd9mU4PtH~qT?mPi36=>H_p7%rryWN?S7#A1tTAz4kIYrjT~PWbdvV|C!u!V=4}q-s z4y^@z=}!p0m9_OeN4?#_ba2av+G#40iB7U3S`SO@1)j$yeR#F)Y2(Q*1RRPYRn^>d zop6cz(wa|J5i&11ws-p3EDXTC3iHM;+k^I|A$10yWO#=7eVZQhCaPOhRP?F*_>>4( zS@nQshkTO2tq)#2$}skG|YZdJkdo*VlQu-c~_ zFF;|hblKwBz_$GKbd%mSa|Q>x_!)@{8fSMjs7|t2r0NirWIa67@1}lBn9skwz-S>u zid4`>gsUSBr&1}=GjE5-f~2O+6fe*!oPMX6o%Tj%0-&ZXK;uWsR4Gt;)9Bo|#|8t<2DGiZX1CO$eh5 z=PEwO_$h2iH(^Y9_RV~oETyY zX{vblHGL$~|EM0xJoYa%H9if}v!0sT*GOBCzf>@jjD4`IOA{qCPxo+KIl6;^wegm> zPIxv2LPW_-gODb9_^tnSv9yG1U`M`JKN?*ez_m5@@*# z{+2)^l&rbTH8GMiTgTy28FuqhrAUi$^Az2xdxLx|c$k_A2a_ABh2YaPOrB|Bt1taK ziqA#_{%Itho`Owgvj@&BjM`Hqpmu0B6m-P8prGD8U7v^OCJoKvGr}!&OnuEJUGa5T zHP%K?={UO`MTt}9uhiVn2hz^L84pk7BaJG=V$q=cxqL*T+cISmOp|d zk(D+1S<_WXIAVaH#LL8_D*r)Op zt5++s-}WaoKGS|ed`fEd8-k2&$q#=*nX8`*VkJoZ%n|2lnOt`D(YnpQb;3!654Oxg z4=8*BZpb{^3(gj;hPb$kr9NLj{Ja4+rS^TF}x=CSNY78c!w5?SnP z6mw4yXG2_=%&*9QZ7k;)4E%Ij>4O=&Td1u;YCjnXWV7Y^Vj@{>tKAoRs!vY+KYGEG zGlXv|+lxrX6@$vwwV!V@b)4cY>@vi0X{ zX%LeWY*|VSXg=w6#TAr5z(H?AJi_2bR%Y#8=2zdCuDw$H>c_fTNh8wJ*j$r4)A;7J?$<)fbAMxoSpxMyLTY*508R&+$>_ z7spRJEvSJkpgsbaIEvf2K`I8I&~J;7E|Xmid!;2PQ^TwEx~T(7CbL`rsvSxo82#^pEWzAr_q@;jz)|KZeFwWPFlRt+xXpeN*{^w zZ$6U2l`6Gz3%}x|RXqGe$DT^Z<=QXY6~fr<_Tkk?xX%b*2!Vn-sD+eMEFvqhyCASnRcer;VLc~8s ze3g>Bh`l`a5^sbERw270({66twTw`8X5A)*SsPS`IT9#~x0qWfnKop@V+snE23>%f zNHL&%K+iQHssCXuAciK;GRFOVe9oBZNJ?oCC=#1_dCM%p;-yy}&=k@`^cDkX&d8Qi ziTPf{7N73;4;eruYkN_+Sal~+D*2S%p;;_9S`>SGMIPs#)jk@Jot#GhNnw%#d2ulY zL|vI-d~$9r$=Z_W4mfi&3st6urbwn&#ZhvVE{)517Mbz`JjVg&!Yf48;KFKGp$zo5 z{G4*#GU(dQW*fVkA~X1y!)TEy>g1P60{V+F^WoQsqA|4Zb2z@wy})_-rPn|M#2aYq zjeMMu_ql%Db>OjWaa0+U2623VGrKs0`P|*50R0j5KoW~1_*(XX>ALT2SjN07BQWJMW+jp)Q~Kv<<0p zgjfZ>emN?;%jg*my=URzl5z6lFIVMbCB7uT5Mup&-0mGSN9O+XB%B7RcQt6xJdS9R ztUp;Q_YGxiQq8fY*7xZ$-ua;xo3teBLw%Aqh)Z@nzL<-AkKlR^l{PK3dc~H^8y| z9O88?g-(dxnRU5*CNAV0norVfEycUXv$>UBD!M@wpSx#o53ZAHsp02aZjblze=yk_ zVzivk1zMmI$iNMO4j%1?6{uQ)Ll1b}Nik5|+q7EdkeP^`mxTb@AuGN2z0*R|j%WdR zM>-Q4?O8{UZ-xLqlBQHyNr<%3kf5o_(dHyGo6*aXv|xryp7I`?OV8E#p_8+7ziV;P zx3#hj`C0hb`KvKlH^)+>qE@latex(iYANK-BC2A~GCRE}@n8NFlYv*WO2zp|@F|tK z-7DyKUbEja30Th4)m5!`*c@zpz@pcc191~0Ay9Ho*!?={p3wUjtUl(F#5sU+O9(0< zac*zYNQwoGG#i5DihMm*xZwn$4PKHMR_?-j<8wF=pDV#^L-wBI{TkLUydI84if+Y( zwvp?3@5SsG79fDwu4c=)Yq07|Gt`RdxIdwKAud74v7NWBI|a)odD6hT_3|h0R*ghr zQg+?fzkn18S3CHVFIqs(2eWk+o#009ONooj^{9nz^F?G z2}8i3tR85@PuYq8ApDlbo1u-$d5vowa3L=blyV_B2?B720Ja4Pdh!rttcWt$TDjbc zNyR+>48IH4n|&%8ux>+E!idB3`I)cqJ4X^7qT^@RZD*ksT?tgWNH*>u6_NZ}&0RqNSr^UI+J zKsHGZ)3)b6pSc(t_LYW`!NGi!7ekD;)AlC*PYc5n0fN`0jfU~d)c5BxWEcQK(D--zrIFxqIpbHzKY?QP zAt7ey)v6+BbmpE9|MHNGi3)GI@ zrxYhjCw8RJwX9%g@ot94|9o;e&yKRs6tw(G42UEV}p#J!Jn z6l@;~2M=f&{u##6%Z=u6mPY-nS)*BY(#T=<;Q1^T6xAkWPGZ~9x$(+)yq$#~{&)Bs zWB!rwrSHhaUzECgaLV@D?r=VEKsW$a=Br+F<`b|Xu)CxCJoxf=&nF1kVW83cJ-qCf zBvR!N04#7im&(YmjRSh{&NphY(&5*mA++IB<1Lg;fld1&j{6_Re%-zgM^^kC=ofu57?_fN6TpOQ~@@vjR!1oQ97neZLAjL6y*rhc$U%oC(Z;UOjmOmu*~mP~s2c?eU-> zk_+-lfK3xEw1g^ru#ZlXuH{0Bha(y$ymscmhK#YP6CPrpLXqeW9{9;GEc9?zKPG6- zij4yHw<#vfk<#Ie@D3p=Pic_zH3h+08cAc~+QBxmYVqJ5W+uMMrU#M(0Cn7ja%gPz z8nx&c8=YPz3)v(GVToypfXPa^3mxb+G}vi|=jXTg?@=Z^u$`)A=NN|91w)i%nI@~- z?pLnaEB=t{ZoKzeu;SaTl}bmmSqOkl_`&&}qY>hm)Fkn0YwPQPPc|q9P^%n8wYr^D zVnmp54VaEn$+U*0B_$U7ujv`l@_&P7E+LHh`nA7h90y?gRlc{gz|5a1D$VwoK}jCl zqsJvS)@1#WfbffS45pydl^`|JaCdn;(QQ8&ZC?{r;Keu?exgsS30403V^~i9)!W3m zxj6vd7K(8ycJ2TfdiyH4lb064yB8nV-N}uZhfvX1q~MCDQ!rf?+08vT6`<)xg$}?K zJxof9_KfYJG7kqrJ%xo^-NC=eB*L+mRO<-|h7$xQdZ^MGjl3+Xj-j(f-TyppFjal| zAsYj2L-~E>!Mwf|p|^d}H^S)Wzc|uAQo4Y;1;_^jpH>wj64z661l5^8x|u!YIIF15 z*=wtrgGIC2OCfGGFO=G8Z=hd17jt0Xu)wqy5|Pj%300d!6;8u@ z2PLo*M6hY)m~bF4;&d|~VMc>{5SBK20g&$~M&1$+Z>N~qd_F3=QdBAlU^_Pxe7G~4 z*1}DgSkEv4y+sm401ZKnS* zs!*H;nwvCgh)~T1emtx|v`0K;#w$_QqKG!-MM%g|dEtW4k5POYlfDjDcW)9^MW?<+WP?6~fui0I)%yYp}2KgcfPCVzjJHUm8vETQk$56^N7 zZ=cnN4AB6}7r7XfwOdPrqWR;Q%ZE*zMsVBvNU|N#YJy3<65C?E4$pe3)%;OHPzA6t zg+OZzUHUE+VtGb*@tq6$pQ9Sq-$51&^qsR=MA?MqsA;V!zSxbN~>Pn5Tk?0>s3`Pt^HK(u^E(oA|tiDo;geB1ME5-;gJQ z$mqHHWAN7Qi&0cYoNoYmKy7_WBgxhWJSVBXL9C-u6ay?I@s&+y@a}6L32`u=j}Xjk z(gDJyKtB z7~U4t7uB}vyw5}%vjU@@DNNAuGwDq>xNFSO#TtKk{G3g){H<6K5UPPM?&g1)!q$e# z(IzJ@tq`^otE7CNVv!sFA_#`r5!#=mq5aen2*tE)at0x;vWxE}1z!Kt4+8!!sX@c$ z{-VC=4^PU)$@LF_ZZ%Y{Zd@ajo-M2aR=ae5#rXkE=W=M_xc#%eh(6WM_C7j}e9HQ~ z2BHJ#5Je8AI6P*iG!>CP(UG&Ve+t7xk`r5^sOmATg|nDEQ6XhxV`C;P8^VFMK0L>X zc0$FcM>+Vp6{7&6(6&gyK}hK8rf++_zt&b9?>8diUK?x=Xk2J^1Jhn~VBcA2I0^7~ zzR9LtM;ZxV69-9c9l^e^=aE9W=DV^37mpnC zPzfpxmn9RnY!UsYvLQUGIEo5@1N*oO;Rn?l^e~`|^KC~fLQppnB*4elS_>Aod=rE% zdhk<8G)0Lo@)(MymF#w($Os2p)7r~*nV^SG7RM1VF>a-T62P;4!CJV);MD9lj*Uje z=CMLr1$wc1O9yJgG1$yM3^0y0w=R)kr0GXOhfjkYzwVLQ`sQ2}-c+4WhPoE%7i%6(J<(kSJZFSi?<-hlB3J$8 zBO5M@7r>l$FNNOhX&}2r&h3@>2J0;{i%oo`{$QBX_FV-S5r#RU&2c&j5X$%$kfbrq zE;PTspKot-QRYO$MFWM21azjNU(j}*#rXG(gtv)A>~UqjS%BwJWifWZf~shyHv+`> zZ#9xvCqF z9LK4Y$(~KCkrM%w(L>epPKOh!O5NRifzJIeIx@)*2ScGZSKHR6=5rNg6~8M@#zAVK z(KxI!v_6{syaPd2vUOu>x&WgvV=hJC7~qQx!KEYQ<|?3BSz=WcN*|Hpsb50y5H7-N z5LwM@$hx5dLD_@*-=N$_y&>Isi-^HOq(35T?si7Vqc}FRJ}~0)=JyHTaf>Pw`rBt< zRz3U;mn|@XS#?Cw0gQP7&)||Z?L#(kJGqRn#wq$7XqSGDN9I0-7!`x%#*3#mPt#@Z z%{w7+ac?A9z-L*vzO(2$Yg*&7dAKcF#xF+m>wk$1)&utnFpwn7(m(P!7KIoj z&+|HE;CJgGLAyN>Bx4BDAd3Ud!RMJn?g(ouE6+ZjPefagPk~0k(q%b^VWg=hQzg#( z8?Kf(_{nDYYB{E;?k~;>1BQZrb@tLFd~iM4f(T^j&Ft5JrpDXSsQ7^u1o%JK#z%ax z!$G^}bvU0FB$~h_r$NN+gAd)m>MNfUzEzIII7DRO*cgyMo-z;xIJxqB1pdD*LUm!2 z&IlP>#^+Ca#&G~yUAWjlGRvZDqB6Id8FY!ye)0I`&lvHseO>f``Qa2tTUT+`v4U!K z4;4E0yN9jr(##;S?r#30XHma@?;mVC1L;%rWkFG3EE!ogxTuDPbC;~72&VS82T;;d zOcJPPgP>e4*49LaMn2~={M7Y&8zRs%9B$Dceq2f_yGSG{5L<4*4`>&ZBp3UWXV&+p!_#t7y~)pTo@7A;^IaZG@u+Vt)JJ3kBD_{G1@Ml z7J5_EV3jO$UnOGDqWm)2JO)>Y2SVD7(&y?k{7HmI*Tch$QoZzeX*fLLZlMunGHZBf zHk!B|O*f8$yCBSsq_}<|`-aMw4zb`Nq269sPmj1Dtjx}W-En6RCEOVdtVD||4>`XM zB(J{Pvo>ESckcs8Qgqhu929>QcwFDfh?)rj0wi)to8Kl?sU zqE6=>9cmIY@+{zGruN%(%S|}CM`kWAkELy3k>gqIj_(D_6QPJ9~!*QRc$Zmg4UcRBGR!TL<RnDuA$%pqecOm_FKv4HsRS|23K4@AU%9aT7XdqAeuY6eE*%bF-SK&BV8ybgpf zKqu#!`?Xu?+su+njsgiNhk$2%lUS1TA^+kpuGZ1pgAZT*kyL zsik(d$anaKly2QQ`{I0iU<)FVkA9D+CLp-dl89U3=p2*L@&DP8`~0LmAxdUw+;n(! zT{e$npvL0k{^9#@7rnoJ(?PBC-6Rt4{aKJ2o0cmjA(hbhKIN!NwIdW1LHYhdB@kSU zmn*I4GwV7{5%`3)_R8Jdr2SqyEFguq@<@iT7jE^TzQ#Hv7(o)Y7^7z;AeRl1US3!< zEtuDFYyEg+z)!R~QGXkQj)MUwt_sFpmX~d@NTg+Tb~YG(>*?T*xtL9*SnYSj5cExk z?=Tp{wS&12r|UHU_S{UjORql zH%~!6+x^?mJz`cB+@#)#5s43~Y{}-H*N$Oc3fiR=^@*{u2*_31m#=OR3%c4c2z|n| zFKM#}FW-@7G-TeH-x9%)9LF5K^{f2Q=DHhapHqX{gN}eTZG7l$?C(z9B{W`9d(L%! zoFlIl^`|9JN*B$3qm{WOAWWF&!>hdMvT`7(qY-X!zU0oHB>zT7NB8HlLo_yh$18&J z-{D*Y$%ZRW1?06eQ#Ks z@#XJg(M{*e!bayNQCng{OPfoTyhbs*t10!HT~Otn3$G{3gN^E83{+M@RZUbX!ejHtJ5ljbT6YeV70 zgKAx6zn1HB*>on%heHwg2=(s>$HFrPRQuNWI@`49ryh0(RO+BvO5f#&G$MmRo78Og z7Q}+}whicac{f%w7aayc@M=G@tY0EM52L=mRpZ;l+3OMBN4d$lIp{^+8dDA=b8rO2zjuupPNg-0w9O$Tx zQxvj`ztDgdTmtResmgcqVeCA6>$1q^>dnfX{XXSzhV`poB&au!jhEPTBdTom7fuIS z*V+1r#X2C{2a}F3;-&Ex>QeT8z;r`%aNr4*!Gaj|P@`_<)Li@V*^4WSojt_Bh zgi^Eld}%{(;izKzd(xNNbC==3SGr2CQpBG(CMJ)sSvAAEeBz?AayGcB`1U!{KX6RH zig3VuksHz&oD?yG`CZ6qIV@1BQ0fNU05HV)3mv`M`b;pxT!$x~}P3y6BRx3^a_`mdAq2wvii6$mzVnAWc3D3Zc@Zc+?K=ViJNJYxnr z_NQD3(qIYFA7kcjR0}}t>Yb$lU1>=x5;r1J@YNj=JX4(Q7L|kKSPkeE+-q@v!=~=i z`bvJ65I;G&*3&R#jqXVrIBQjrOz0?8{|=9tk$OTM?poe_A+(NE@)-Wk zuVG`3Vu5U-^&|V4Emv^V*?0Ny@;e}b2VyH2butRgm5~)H&^V0iT@e_ z$Ny|nYZ>sbtp`0e@r1kEU^vXYcA~a6p`1hgAxkAEk-_O$SO7fX{;ULYt3E|W&f3vA z_#W~5PWoqu;cv4qmxnk{wX1rE4FL{rD?l{=7E?$9^8-a^hfGF1tQ47OIGm8HAT%*e z?uU=i<8)VjMzNFi|3lVWhGo^Y(b`Iggfs$D(%m85b<^G5As`{$2uMh$beD8@r=&DW zcX!vGy!(B>V;{%&^ZDn)z1E!9HO4u{Vzm?N)w=pV#N_mS&s)ZwYR4+b_L=q0EH}fA z@lWL&Ezc>Hh~GTXHdTxC6t%*QNUEIR38o)uIcqL)UC>+7Txal7yj-LT1R&Kh)4cid zN>XZSl}*8}uc5KQg8%w7M+!S|7E3?~!daDnGtRs7V%~RKyoKi0LAHHg*5z6i?>-yo{Be?%spam@ z=LJctK?t>3u1##MN#xrQTK6FmP&FT~0B#dtPDP!oX*vG4m~g*8UP}q_68DPrN0MgK zhFe^;_5Q^W7JGC4i zE8Xqkz@OL%JzsQN3mQdBn7o~+nP%X9;az%YP+}zG9A)YhSb0J2rR=%?)j>zL+Rd#r zs)p2yeUqO&YrEjQI>av2nfGb+RX{(B9~&U?$xO}ux|3(0{2sY)bGz^S0neKvM?<{bEPlwSF{@bb_U6ry5F@WpN>0@fSy1`YdKzpfe$P< z?Dv_J?*LfFa!AlH;VUkaM8V^YzQ+vaH7UZM+%C-cRZR|9E@7AgMUw6@sWwr?ly3KT z;Gn}Cs_uxR@Mz@_2=#Rl0B0C^(Vmy zvD~X-Qd3ib2G%{1fmgS~{6(@ruSsJJkaUAdu5dvbfSS(2aZ*V$JERHWfk`}P(Ivht zLp&7BH?KQhK$JDw3rO@Oo<+)Iwe|)BQ%r|F#uO_4J^)qT+wodJdR;v2`#O z@J|e%<0d~tc^R=hpGys)`0Z#-RpQ6TBX3z@aurQ`A3r2cpp)6R%Qm5F+*}S3gBdL} zFfq;gl!5Ru%Z2-!GFsSG19Ig4&8qWpPAv6A4<3zq%5Dr z_EZ0zk(C6DbXWS%!6Ov_X=+eEB{IY3FyCgi2e5Df)8I@R0zoIRn8Dacrs8QJWS$1R z!4krZck&($kRNQu&-sB*Qa|V8C|@vlu_0YtY*!;woxFep>yBe6!i-Ghpw!8ej5Fx<&4P z>eBL~Zp$ZZohdTLW^HF>>(a@Fuj8*DHm#j0coXcMZqRYUxrQcVH$Hb4Ig;>MP6xHm zn*vl9j6GCwDQzK#BVKENU~666*w`+^<;Q{!Nv2P@$!ylUzl^#dQPloBZru?-F^w!| zw)8K@o&UT|t8C*xN0fnA=|s`{0j)VBQIfLcBplop$`7lO#75}e(v5p*xqE+=m*e!UFe`J2U9#0e1djmdt*6g3ioW-7uuj zy*+&(&4yt5^st{%xRVqfj%4`cs#u`eY`C8PvL0d6+xImDNXU2Dg2zhnT~`P;Qw=$p z^zkoi150VvBP3`~4~ z78K;on2wbQ7npTK4ip-2%2Heu2*| zb*66Ckm{S-Vx`AhbIX~Dh%oh*?lFhg|HZFZ;9A7yT`3$W&X9PBR^Hzpy6Cu3(mgAn zwf$N1KLz0DshB44pk+!R^KTZi)TEba9a&etdnELGTn04lp5|JMJm^SbWvT_L=)tLmuZ%HZ(sz3 zag_Inayen)F)qZtD`@MhagEaIS)_<$oMf2B10X|~pPI7r0)z3gz;ca2Da)p1<4*Tq zxYevqQuQ`92DE#mS=h(Wt?(_gD>0`Z&B5;tQ$O1tmo2viTS-m3%i=~G_xYQG^$;c* za9JG;ytWJYR4u?wrjYoEy7MFbZE`*wvT=k8->z~;A~-9iZI;p>ANqG>!Gds)5>`_N zvJ9_h!OP3O@GhB@QqJ5Vu9$Lg^36*YC)Z#rsC#Y#ICv51-yFMfp9R3*(#5VpV!z34z6ynz8Idd2Gpv)m&k&~PHEQ!_ z3P}PRCMUJ5iYlqHRw`N8I9WOi1(a}o;xqFekAi&hg%=WU9Jl*3cWNs`0kEv1;6+f5 zoR9e4_I<2dXU_!os59;$dp@ULhe*0Et9f{U2uBPhJLIcZ*|%ae90%w>Jn# z&&D5kSV>8t5#LoFtJTT3Y;0hr;&e{L za=OsV!x@d$>@B3w`*vpjnigl{&UxzJfsFq>Coe7d5S>l$Tr6ipu+&m{p_hr8?b(7TcA* zWpa<%$oln*&MCgbS&$eSX;BgI{Da25GF(2hvRUUL5wCldGNbMe(T*N) z65inmcpW`;XGgjKM-je%si&52N7=aGel3N#i1(=JoOHA@VARw7hPv@OgctGjsow;& zxw(p))3stjVM(<$Ss$KGwd2uTTKBOZi{@*jK=bRf<|fVWe3kW6jO&PSy-5CN`rBw{ z{*}ExwUUysK4S`@Dpk2lA*KCRY*vjO&{cRa%+nh^-tTCUa#Oq~$ET>!2fDTdehmIP zphLmF7zq7sgGLp3=P^D9`ZWmheI$BXv(0jkAu}+~Lez{<={7KE31%gQNv;;vSCWq* z4k3;q_|8{7-|=190gOLUk&5{^eDEA|rtg1gly;t#m;8V0F>Qx+!qINz0a4j8ph;IFoa@+T7oQ8!-;DN|FYQRbcrj3a^~@ z&ZWu}o9)y+I7>>#?4*qTvnD>+R+8^X?5hXg29OfQE?+(Xle3LSn({{~PMEXEbZ*4IfE^HA1;{s~^u^u+ z5vpNVA|wBP|J}>}a5rFC_{n~~^T%4>^z%Om3Lfh3i&J$gP08dm38w_E3lps@o~fd6S2iU%_1+WxaW;KkX`T9cl@4OinP zJs07H@Fx~rYry>vN0ugj)R0C@uLLd?W-%pvFGk@ugKi+d8`I^}*M{Ikl;&{2wQ~J6 zxE?2@>^0sKaB`Bg&;VyD$PWQqfmufsgmC~6KLve0o6RU@{HyK3TZjw~sr`hDCs;dk z2zlbZ?r2wD+BQ^gWp*JDOC_bYU;XL>DaG{sCiAm<#b;uKVK};f2KDBG{ud!{cUw}M zntP6)$q{pVJkjTqh%!Q=q@0QciAQzG?(|i(Vb3r9-O)8L4rG8aK{8~QLm^0UXC-2A z;-7f+LVKd-FP3TNJ-~g5t#{!sTIoW9b1BD|YcsvPo}Sjq`_%nkl>N62YxFrD$#d zs8XgohB*U+7{k{!DxD<4>K;+HOSQ36u^^|Q1kO;-ML@S0U7#xx`?*M77lweG+5bpDDw^h2p5L~$Ny*Qr4KYGzPz;qT^_@&dAYXCJ zTokznrmvV7Ha&%uk+o9mLPkpsgA=UO(E%qZHnhO^%sn;&@4>K{cXZ2#PHrJ>v(MV}ZU zKnLIMYaqoBK@8N>A5l?YH!Q;k&v%MAguLym4y@bfepwlLNmt*jdY;Kd>dVJ^1PE)m z2nZ`@A$DmjE9qn{Bw`Kda<%1+>9xe9QAegbZEPfi%|isarRn!3>200OO0ApC#pK#8NO1 zQ|0rE1J0A7fdbQb@3HD{mU0Z<+0_b-QL?a$L?F^>A5j|DVTuQ{D~`wE9>~+A`OxOlR%|VpvfbD+=9Ca zoJ*jjn16)_k|;K(e04VuV(%x!_pGAnS|;9Fl%h2YjAEoJGU(bq)t>`YyuuK2T;2bG zP#f@zPmFv3t*U+ChwTx#0|9zU!`|CrxH=}%c<>;IBwv^PTWRQ*&j@}HyR){hSKuoe zVf4y;l|*x}sqn(_h{$(AJPv9H-tO_ST##|`RAf#Mf;>`hP3Q&L|5E%4?@q2bjxw@2xLmY~v6zQ0$_Y8fx z8T=XF3^_Un57r7dw2;0PcKhr>6582vEVlHs#k5{DmT}A*wUogNGwR=#Z{)4@kr6Bz zhit{By{IlmnRZ-6uqR3jc<$dnO8SxIZhOXZpV566hLTk0FfglV{JmFR-3B~+10j{t*{Q#?<(b-o z_PqmB;jxidqi!WFnT=JKxgeIpxlre!FZTp^4AUKm0v`S}9$$2<0HD<8fhGe^1?W!$ z)IqU$*OTGW z&4#skEcc+8^04@yUtcQ9)6?(|-=m^crfv}@Og3;T-du6Ewod-Ci%_J5N|3Jfmqiso9EAjH|bI#O^f3z`39wGS72XR>x zT@i8r)D54A?HKjj_s^o@DvweS0l`#kT@23Ru~BoyPhPR;EE|_-cPyMXl)pC#s&xiY zr%6wV&4keN9~q5lOe`SeekI@I68S|{{`-D+l=HgA+O_o4a!Iodc97CQFYTK>V8i^i z6P`5inD}8ZN^Lm!!0v3=ApAXzLLc5!r70GkgZFKD(_>0(fM?@C>zRv>F1uy~YR$E4 z>$@Dd9G$lgpv2)P9(-f$&a(VS8rF7vEqKS{OFkKRyo3g!fX{2~N%YhY#L$B>fch$n z6Y}kXu-zOiA~}oHMh^NW3D^%fky~*={uBDVz&k7gEqWQr#sf~`;;2Id0x;)>_xPnC zR?8E#FTGuFkOeaK9V;)bH&h*>8L;^JEnSk5|2YFtJ@SD^Kt(|OQcRM}_XfFB7bI%c zUF7G?#tuv7{wF~30ktHBNUTD?*XsCe?vxFEHYE{;>8!G=d-TsXMiG5q#6&oziV+{= zqF&gW?L}q5boG3Ed|XFVzRqdeF=#E^Sw_5{S4eNPD{Ga%=`T?3$R%Og%B6QoOBCS& zkLjIxz0hVdE*ijJ8U^`^fC+2xhG}=9v>D})V0_%@9K?1qnQ#;v?xlVBm@L7bfLP4? z>C^1*er%+q2yW zkZGhtnK8Ea_+I$7Cm;S7UxO5S3+{ruSD=VkDScXo=UFLNw#D7?{B_!DRn2;yic zvNZDcw8`FP|Ek`zrE2+I+D7RvJvf5(WU|9C#KQQGk1|eCP+9}*2_XF6z+iy_G9NWRaTc(0D?Gq5KqxCGX9>RNx$$|qwm!4D z;{)Iom|56)%uQQCXx~C6?^t~sbMIKre4L4j$@@+RNDcI*HULeA6_)}*!>p5lvR?8= z?|VIRd!$^SI=qbfrYiUK1i+*UZV$}FZX5`T%ilE`BF+Wf&4PUYOYDi2uxoQF_J!we z20jtP&J``rf46k001*EskSDc1zN_PH>65!2i6mLWyoh$%xqbC(hCaq@*|R?kb%Kp{ zgyfBNG%@vQTyva0J8)qJKE@|@yLlS!{b%xJE-;y30XB0j&(7plraYjc2!_3CuHEao zRvv#V3h0JKo|gsdTvA6Ui6QZO5_o6Msb9urQR3=q!N(UAcq?A&4h4dSix^+#K2Gr) z%oEtUPJY9PzP?_N9Ir56Vt#Q85j$`61lK94LwGEK2@Fov3IZ&GfS~ueK#z_5$p-x^ z4a9sPdk}nStRF;@z`uuuMtVnFfwOstnGF>kMclBP(r~VcDREGFCHY;7egejW8E`rWNitd40L6J=esW|LK0Bp=4&o(`#S-D)($l z#T}fO8v8RUx|A^?jnfhwDXP>E{9k++=JRjf)!fWoR%Bf1mESeDY9-zJqA?$M`gTrA z-q9!_#jy0c$N0CUO5P`sI7nsv_fhiYaYg}YgJDiCphpkTnkNDoe?^p;7n?5P1zYy} z54OAm0ez}M>*R@8Bj}4m;B38Fgxlpq2?Ub*HyUILPzlCawgfc;cfUh&En{w0A!!TZY-7a|3&Sh+-J|6K3;`~B)fs!e{zfg^E_XT`5tvldXFZW zs^5Qank*fbo5p;(iAxtB$0L=Iahu!2r~%ACddI;*EH!M#55Dc>4|Uq71A}O4s{b%k zz%&IiDtTc0CdP90BycDA>l%r@Eg%eZ2cU?B+3EP`De!`Ildw=hJ(~umnR;U41wEGbRkpjnZwZ? zB`%Lcd~P+-T6ZkgNzg3?U0PA~#_t{YH=BD9G$2925MyUxRNZ}l*Rjyd8;+mt(Ec3s z>iGF!3_CmqGb$=C`)UYE_sX#8IokggD9&pG0 z3RluLf@v42rC0^98(;@muJqVBTf#cXG@5#4-ss^Tu-R2cOin)C{Tt3!tuKU^@Hp>W zyMfIac25v!>O*ZhSp)-W3p$H@c7OR?*U#Eq>)(JG$^_8Gy*%~*g#K?(QCRb&%2B?t zhyByJnfG@Zo_|}q$`2km=d#Y=CGMTkVcvo?8 zOtwfGAqOlw^tyz6MW9II-{s|Vp{7K$(vP4BM!i9|6wyYCvS(gzk1hcl07Zv0_?CwC38o*ir;DaPmBv_zqI99r29u}! zDFk(BtHJb{4*cbwzbI*o)4v&h22?KbZffV^>^P;`)ogUL*60cw<~Sqy`A^s4DLKcY;a z1hWK$dl$Xn3&eXltfd5#QJ7E>l_;)-a~FCSGGub}NA<)N1(C587mHD^-H-MI&M|c@ zExOh3f}3Ax*aD7A&%^}>^0)r>p_UbPpEd1lG%0u_3X5uPAo2BK_gL(Tf(@Vfh5LgE%LmvWc{$K6{(w>)31B@=Z@UG8?A1$s%{LNo3op1j2=pSq zI1fcV83t$Zf-OcPb z6lL)ge7fmh5dB}`0>@(^(7gv>`*-hEN-1oZvXwxw39$rKeR^DU^aL<<24DgTTnWVD z>|wZsx5wG4v6=D7cgOcNT)R~o@QD%`3>bv=buq&{RDyuKR;Ul?g=p%5#G?9(tjbhD#UHAM>~R>DgFY6?|dd-R*u-IN!lYe37V>RQTY>K^{`h za;}*5uNN0|5;-VuGwEtF0t?*;cq&*~+PwOD?IOTu#{Ct0F!xJ7odG#OCi&vR2{V~V zwPYEIj%Z*Cmko(@9$|AP))&M?j2m>-uS0RS-Lz9q0CN$c7QuBH9+lW)- zkO2dx*zy+U(DpaFJnrUuOm+UACx;-=x9)eJGTelcc zoAL}Rtw3B`g!SKf3e$I^V6Khwkq9;}s1hx1pquuJdsQDHk(Tir#i_Wax7jm(B(#!u z*Di>$S_2 zUvx)sI%dc`k^LS|XP1ljk)DqNQl*EW(5*T63Y@%o`CD!e*l%F~N&w0e5t@jzTVhgZ zFCqqc_l8wthV^gUZ z#!x%U?*ctlKb2bGaEUS>s(;lU;ya1xv=Bg$J-Q+2BTsFUK^IL9`fp4lBMNn8gdF~UwFWHZ?gYQNo4%XSmDZ5N85IB zA#hol9VBb?67f9^8B8_nW+yE<_>$sM%I1I6MT%Ii;Z@*~uhbr1Ox}E)8rXK|xDpE0 zOC}$DWnm~T)~#U@eSN##Y;xvx zcb{M~r20L7jmrwAq^v9}kCSK5H%o;TkOP!K!IzVNHrocVGy;lyKqbbdqrPyi>=;@#t$ULe>HhlHBgFQFHszl8xoB|?Cb14Tb+_@$GPi-^~o z+qkm|7)$r>aKRUXDddl#TDd?Bt7{j`5ml_$KZycmT;%O2C_&$j!>Fbvq9#c5Txw= zIw2yBrRp&NPF`-8Ul8SP8zki|EiXE=c!?Y7EWzYqw+Z8+#<732&9!gcG$uW5Lwya# zuVR|cO#*k%BJ;JZy?fHP*{J{JSTQjMC%S#609yx4pGhrc)2UKWjCa2QuJ0E||8WR+OIbNa8-l zGIFk>Wa(|7s#0bPoQ5CG9|hiYdGhUovR^RF1^xhBd;e937oY1x92cyu=g!=q#`N=t z+Me&20O)V`y7pUSeGCe}1K8(#?dDs3-WuTF**AyAckcqkE9%tx!!h5hUJ&vr1jHOD z;O)RNtOv#lbLHkBtLgp;9HmRN@CjyC4f1rx0|E zPWO5YdUuNNRmlJ46G$+kqS%iYTr!MOQrt2eLTCeVb7Gvh4#I4{OO@_~Ss-*%QmiND zcn?Ri+)5cZ6+1O^6Z4s8e>M1;1Euf2m+bo4GgExO6-1(m0K#H@*yYW!#@$Qk%-=y@ zbs-)qBZPeZcJYie`vl`V$(fHOBSAXjG^T{2lvA0i1M}eC7H47UX_@&Tb!TxKS6&5( zTzV^%Xq6YGNIA^?HVYFGQ}dho?x|oyMQ>MD?JVrKNg3gVYKWfvbV3rF zUl{s(%EtJ^UI?h|fRpb9_uKZy_a|mb%7S6-Is}KhgSkLhouy_F+usM3ozKnQh(myW z({FSa0o7W$nJcJSu7R?EQu;Ckat{-v78)6usRiY6+iuNyae>46jk?;ZdpXMZc!dgJryn~*UVP874%sY<9)8p4C#?Zorq4)s zYJuKN%&fuQzI7ml!@{TB3`%u%+RWAonuGm>vM2uS4XF+Q_UACG75V~8#rtq(5x_Pb z^fxyUmpnoMR<>haAXTH&l9PW0#gGb-ey8bO&(x?iy)(4Y)pVBs@)##JA6TL0F2lKU z_Ucq%SYR8cd!q}mYDM9@-&q_N4WPk*dCvFs8VD1R({*owBTFGYy(DiKBu6s;a!Dsl z1M~Agz^~XxmcVx42eWtEd1?F97XbS7jXt{{(fVZdY0BpmXxJt-1q`{Sp6NNzJde*I zH&kCnMNYdtvAyAwA$nvV+IY>}`-y{=Dmt+!TVFXaDm@pO%*^chk;?zpu8VAOk|+Z% z{tC&dzr#*|sI*jtsqx`CZ0_lK>G{To$Xm;K2FBfWAgdaXF(3jmjd?5lVDQ|hGhJUm z2NpFEGw?tPM?|25o=LiPB?8z!8>gaH4116-KqZeXf?;@CDXcw)l2`TNzEb+gy7`TO2Omm@w#9EAG*+ z2rsqQ9T}J}`CP!TnA2+!Ut(s{y@DPg+duX!VVl!!OC)E$s2>P3Zaoq2O+8n+n{%hk zdaL392`O5&(GYv0fR7Y)eUmLe5ff*aGkSX7)%7gkG5h*`@97nDWe-{1oV4hVN(tjI z@gL-U=+Xz3crX7I{^7C2H}gA|3W-K%kda8Qo&sjYxW_Sm>+)-te`(9tORX;5RW2P+ z>V`gJyu8ib2Q`6dZrj%hq8dI$3C&he2i%#&#RzXpFbB>c!x+CQD-FJ}l^ICy=FH`r zwTa8e*3h;@`(FLFI^Ck?iWE2pZHo=Zl`9=_QWh2qZPNX4^j7xcmI?C3^8>W#M;^)l z{LxjAFj}sIR~xl<(cx3Imj_bb5td0|ihI8OAn5ur%P#Thp1?5OhsRRQl!balbJp2R zJ}V~2<=WcAl}=-d%>)~B8EJ^*X>%jQaaw>ipdig|z395CLH0{lJo1#v2Il*F2UqgS z2y{0ZvRJ42NrLRzOtd#Yv>tEA>Y|v)-@w4a!e0KYEtxD-m6I#7fyjLR2MZ^Wd%I1q z3(v0O+#=-Ryg#}aW#_Y7oYeJmoP>4c(FWE;ulZ}iuOpD7LqMoG`jfJ;5`s?ei*cDW zI6Wc~oro^|dg+^iH=aw30!~*>%~z zi;}Fj!etigCq8tZpuPVPr2W}@gjJfvqFSC}9fwc$kF&lNvf6S;EQYX?X%9`Vt~}QQ zVU&C4H(Cdu^P?V1o-JZ6Yt{^y>Tmp7(~GEDT*{CARi5a-DVgQzGE`Wj6Byq@XfI^e zT0=*CGI|gpv{EDGYeCc{nK*S6vLl{@o*WB@)tiP!Kao@YY(3(>>sEQGOUGvtNo>^A zQ_bU-w-Km+EKL0x9cb-9pCQ8hn{rwQ6Dy2vQOOdDEH^zt2-#bc1$QtU3=#noEo}$bs%E|QAo4bv&+TC^N{YTIH&3KDflZ}+TSbR8Rpm4*w)xfkoVonsc`r)Hz` z*Fw2W+O2sMYtU=({9&X%QAA)5Cn2V&II(TR{dH$ao~|I`$-L^iH4z0q$!T}*YeOBE zaq#9TFIo_!WV@s-fS9P%U}CFi%!SmF^?Y(_eg`IU7|A9GJUQ!ymMFr)?kI;Dn6Gb{ zlJ_|tc`Roh^a8{U9>@~p|7ad~B+JA@X&qfok~UH^C!#EK-weeYGfD?JFH~QJp6_*h zk2Rdmi8et?@@_>hJ~VpK2Tz5w|b13s(WgT z@GQDO5j72Gn%YlPc)H>`|osnd%P zAdCZKqF*fLwg~#Xf+L;^?X7c(7Cfi%yvAD{d;-EHxgvAS>*{pxajrgOCNXuvR8br@ zU*_>iZ^nv}prsQDSxq<24#2nn(s>@EZbp>4C0htVXP>;=&}`6qoHgq$LndS=^u8q9 z%4~xKY^Nzm3_3R-~f$H$IJxeRu*5)n`hDK$Axe7v zW;78#>a=A0_F-ykGbVTC?gWB({uuDy-z}4Q|%BWwZnk&C)>Jmflw;%HIZHp-@SgDGbI;wQBf2$H4jg)iTnMX$f$B+ zq7gy{CI%jyHG=1uPb%;EvTlBIGP#5dN(OK68C(AX3ZXy%<3ncj`U=|3lX7X|z;(v& z&7Vm`H{J(ik~J)*S*ccNex1bD9JaVDW=7Ae0;8HO_zT%j9Bgz@O?NlR(sFV~5sO>n z48N?kU5-Y_67lH-d~U7!9`crv@mRf<>{KZ73k%<-`$K%i4jT@WCj{h!S*o!gBM|vs z|LRo;uWJ$Z`G|4o#HiaEVGmYq>w;ewb>0fU!Wd%H(RF*01nHKkqq%u)}l~1w#J{2=P$UxXPW~D8SbIv+{vMX;T6xXmfJQ zMyntCH73K5$7yZS2@*lfyku_A%$9eT*85XRmYgUlKbe|H$V`lB zdVD-r^L%Ndh z0f&u&CFkIX5Y~z*6Olw#C>xgld0NQKEMa}*FGl`zD4nFCVODv&!#x>)Mn*z<1e^x= z1))s|1soOC@{nY1a?caV?UUS5o;v#(eK7}yhRWzNU}`%rYL zTsjS>gGMgfEl~6=2T~gib|rpjo11St9kG5NDq&uYeOhROK1`+IVXb%)-a4_5{q3fJ z27V&n0yDTvs*IV0Cn{8-&wDU=}yL=H+^E8;H5tehRlRZD_S4*Jbosc zSkTE|zwa)p@EkgG;^9m|Vj`0b9<{na?iH>?33lmYHC|l2A?C;;Gr584$FaKkVo4LG zaaJS^pET7ma35Eohv05Ls^3+PKPYrXfUf%a_B_L;N0s^vvj530SnM4Gzuja}gpLgf zKQY?x$?no<`S=038ZsEPl9 z=9e1X4~g%p?3T}1zgjeK(n(ICDt85D9v6)}nCOB`#h-Zz5||1x&@bRvBhxtp&MS1U?a${8ZO8gx>E$s8=@odY>FJ z_TwY@gP$N3|F)R=UdB2qR#LX3)K9X^$Kl_#zj4l6+&m9iA#Z7~W3XtrOL(m^#KfqcqFSDxdH3Th zgwo#$t6Gb#V&)}ByPPwA%kW9tM}pZHV0$XJkRJ*T}TKX^@%|6qft7# z3tzE6w~h#vm?mX7cZ8d?x?Iu|ZH7MAPrs|U^oZ82EDb7$$ln5)9b{>)Df!A~g4muc z6~+m+MGHq^-q1^~CgQ~LPp9iAXQ6Qtx>%t-t9gitBnjwo3bMqQq?C)nk@_7Q^N3eO zTyi6rA)-6j3}kdI6&0u`Ax7(KMW$B-{0PbYHe(%^b|p{W_MsDIYK9m&IbY_D$ok{n z;Ty7+d}?-MvMi}n2z&_SYi_~k8Vy+s>*-4K=PEN&e&Pwi4>N_^9jgN28KKD*hfc#= zY!CmcCcj~tby3diwm{7?b=R=iEqint6h-G*uwr1~nScC>B6)6|7#rK{dDwT@=Mi^B zloGV6%oYuGDo&Ok5)^>>x_c;o-yJ8qDGs#_&WYcto*X z4GaAYm-xFEYVi(5Ob@R8Im)2a>D-kT6T#5q`Itd@;MRFAsft_Qu(s{V4@~s|?6a#2 zvL;3!;k*$|=}K)X(Ldki^p)Nt6A<9g-G2I}ivAw)U~K5}xuYvsT=EOZV5yU7NoMj7 zbnXNwY;6&2i`(#Ydp5PZ1;?uoycED1f9rZp+UF3XJWhecJzinjf2Us~;J${5gwO{C zEh>hg;ad^Y-7nX1xQ1nYng>V#9o30r+IJ_~h4}PAj66%e*7&dt7hiL=K3G&@Vxr%f zM%op9CZWl%xxd51p_qa`-drf;K*@?vc{o$(KJ`HcCEVoNH&evuKku zdJN&RdFm28>_|N-Gm5%8I!TTe_`^K;A=+Gvi41JOo9RW6*cJSZ798u@d$L(C!;Fz5 z*s;I?(>?SGT86-b3Du$F?9}k=PSNOYQmjwY)%z##4D;tu9f_QrD49WCxAwI7B4jvT zxiiggNpY2!v_sE2>n>vBxz~aR26a`EA zRt!B*U%Fo9L#)#<-?Tt-K`*DXROPbjd)^`|{%@Ke&q6~VIrCcP#LO_?t8d7>dcVIi z1vM7>ImTZJ(aA=$9Cd=Z@4DLtInKgdy=rGkJEqlGwTDLdG8C=&6D3c6A22?|Z^pg?aU-^< zU|Zo1N|%eVN#ec z^_08+TFipL>BF&yx{$}KRSfTg>OwD&CV z%^%DAu&JR){CdA(uCT;)n?TPP4b2BKoqpM26orh?FnM2H(d*aC>xTzo?IO6JB9*+i z^G9@{N{FXxzK2$=QBEXOFWw^yQz%wgYHEe$1M?trn8P&whJ zc^=bl%WzRm`W=!Yyaqp{e0796$(`8$Dg=7o;CFWqTN%TXDhBlUf|+)al*!`5%3=*> zGG?_DT`|n*M|6aSe?4AfP``Ab50~G#^?lpe403Q3xoyFzEX;R9EE@4dM?56?n75L| zlLo1BlD?E%+siC4l4Hnl`V-t8BvXPQN)pXRrUVZSbIjcuW6j*I5vTj{``}vt_DQV6 zZDU}sP8(_rAubv9+II5!%H+jmy~ywtQC+j^rf=TYav{<}N=8VkiHS0(h4?ab)RmR< z{B@5H)ppkAE>WfG%k2kf%kdm=G>@jX!w5`NqfUjuCY?a)(}*(pFNJ9L@#@pAiMXCr zmpk>ZZr(fa+y2?wXgnXV1G5oeJG61Gd{ZqQ6X()v!FQPmn2hND30G!kpG6$kAN~6g zY^$>OcCfndut{M=DftBQD*RccT(kM*_m?+N*vYkcsNpK~)|(l=xr57=$kg9r2zt`a z;6;qgTwsr{&sjURY0iAr(&mVbU$*qczmg41DB>!63&%XUXYzWQzPhZ_ zddpC*eu%v;nlj2SFdg6fYhQQ#=QwZ+-#ZP8OJY&_iPKysh9Cr~5`Nmq?h+H8%QMg1 z6x=&rM!$IHN(HGResA4VV7ofHrbA$lG2F_H8mr4iQEK0@^WuD2VAa(&R-^|jHFg^a zCVtQR9qTux1^d1#@G9khpBHGhuGo-%G=A?{0qy=$VCrgXR>gKQ5LXa8+VU!ivmSJp03rVR}pja zy)ZLsd|B;r-sdKgv`=>4)J%vz=K}v73yOwTWClmU@%RLo6Id<@X*wH|DZN7$xua}J6`lqJMAjWD04=MNJzU0!JuKXNXXs5_VL^I=>UJQ zs6TP4GK0?tx9>Z%-Mn&_6fsHl&PFpExR^TFd-)=?v(iHAPWYpxn~GER-f~A|8!3LV zdOe-`*0$t*9aBL?l1fau-HfDEbbLIY-L6zPvv1K8_Tlq`Io{ud7EP>{O$i9XM0W}_GMifY9Ju|_Tnt?aXs0a_A zH-OYDz1r1HTpTtCDhBD6ta9p@Xb;1{e`wZjNp7ar;euw# z&Ar>-NHB!>b(pl~>*3x%q^v4-pQ3^z=4uw-vP4VgEVx#VGeIdMAW^Soq$J(xArAa; zE+~c_6Fr(jjNU+frJRu?)EG#v->av_a?BD|CT3k;;Et420D1SLwV4n(bsd%O%qfW% zsqwnNf!}h!JJb~B%sD*6o^9Ox-7Aji6CrJ&X=%t2@Of`Jj1Mgc5;E;Ze)YkVe5^Hc z+Xxk;%2e}TlJ!7&^3!^AOE%Zh%}y7#dGWgaxkgOr*TKEKf?@5)0UXJZKrEkH2Vm)) z8AwW{i1Y6PNz#g9Kp|@PkhT)JCs3R^>&!luFdmlieu`45`aKNgjc6oZ&Dh>|Q~z-|Y6m%V+v4NX*MoT?>-!d2%9dAdkvn(M z->az11aW!a*vuDgw+72I(b2PfiZWx+kRnhIe63YEmj6EZL;b$+p&$@66%LPl^Vlyf z#wuoCd7=^uSr+&E8iJKPfWUWNklrCro;qT2RshwMeur=%mTKkQ2QCIy)-aAM*!J>1 z5lB=-h1_~;UW-hHLg+XAC(AJ>pbo75T>B8K&u%4T?90b=X_SMZcxba0`e**T`+>I#9bQ3aHe%2S-Lc zE~Z`v;Nw=$;?H5pKNH?~x!!DWQE~;E1WAYr?W-2PBmBlcX*J0U1J!ALT_5quuDQuA zN}gNf2JVfnOA{h!<;v*D^#sQX(mWV3=x}qtw)=LR$scJHqKxG@Kzt1)b&+9r3~siI ziAyr)xY+K;_c3G5@uNr!F?kXh$wZcpi$|W@KKQE2*|YUp%P^f|@&CQ7IN&`*38fWo z4FZy#?HmE=YUx4+E(``k;{M@2O3G?`{UN$Egka7u_Dm|EE1{b*`B31q!on+cwBbwm zw=};vm^fh&F7P>ZPSsOfaJtKx{$%~h$326DR;C%SD1HNG}!LU@a$!ut%-Ns6p92zI$nfHkVh?>(77ZgOs9pxdT{X(#eDBpSu0 zw&Zh{IUbIij|<60s(MfvO*oBTDQ{oCTHFwOP*@u-{q@~+Y&*red8(1>@2NxjhyCe0 zP6i+z3g>R-YX~&9-TccF3QjBJ`}UXIIdMf@Ayezp5f(3XT|o7F5_dnb6yrwUbiHX+ z=u}+!^ z9u-~nl#79u!o<(atg(Z?=2+|Z%|i)&@jRS?M(x9TXuMNf5AR64zSm`t{#Xd2{D4IZ zOFvdH-5S!?!4YeH_Qv)oVtrwZ7q2SR_=LT8Q*SQ5e|Ijw`)QhH2@Sj(kL))ds+s!U zhf*;RL}5KGO&A`tF}+m`IvtEOqvyn&_8a?qj_G;nPn|O z@FLQ0-z|dYg&~A(w5v=z<+tm@r$$F)gsc7DMs{KCbfAztXyW1HFENwT;;M5zBys2R zgj4s*V{O^I-2DmjuF7L^kBU5EC@ho@d#EIjWUwI*uYHR(cPHzD4KZgc`+6bc7HNa0 z(&|qcs#a2PX*V_JF6YVG@IpmhRx6O=Dte)a&QOsU`Vz|!@3?Q2Onhk6ze{9pa@Xq2 z2fM*V(9wWhDc+mmV$#TF0QgxD-G7?^@4T`qyz@ z6<^_FUfi^}z)Hb`DdMRcv1-d%I;5;r+0A(1Py;Mq^=9Xw@7G7=6z_NsFP~D_r)euh}xHA^V<& zjyvWJ$K5x5KGQAHvUbphzF}-yEf3BUr_X}xLZgpKj|;y?{}syhE-bm-2ER5A+`^PH zXz}szYHnm!FA?cqrn(1GbtX%56lP$f1PdZ!Ad13gjDp=(RY6AM$C6kzbuj`T@kw@| zD_b>G+3Xg^!krS=-h>BC*dIpq&p|F1A@TkJ=9gZWS&HUwPw3}nComDh$i4uj)uQrz zbgH?uGGZeqY@)nramCT(kSxiBcG0*E$V-TBK0X%{t>v2L@$gp8(dUu>&>0|+*g1eZ-0<=uCE!Q$ zlk&xM0aKFoACo3d=}h z$;y@_+;FbcF~{$y`t4B3y;poetj~h!eq>^~I7(#e(+PhkV7r!?V(!lY|~Miab8SpK&V{=?Z4P*(aS%?p05fKEg! z2?6(4iWpSk*3N!9h9V~-5t`sG$P4C4GAYji03&}5%y!E7 z=9di37sVYAL(S4>AI|pxWW$rn7aA7aqbEbok(jc21S-Ab+KiIRsQ2X-GJb8w=eC`C zYQbB1i6p`z)Rfz=XN;D8ef)0M#SuGyAVuLJ$-ydVdOH2hSmLiBI=@y4tb3KWGFRt- zjJBB{_RayTTk~j@kcqSHXfwpeNWTtr)*<}m&gz2yo7r%=C%e}@BC9Wbw|{YW^ZuA3 z{?@~LqAh8FdA-h)I#Q725W8HVz;{Pi)Ti-hp0wOad70a~!2R-6F_=4RMRZGHd>7u% z%VdC;YJL<`3ff=flO4*qAk69s2Vt>nK%&hbOR*B~o!turCst=pdH4%-(YhSL0O-jB zRy}+b9(*ftEgR4M1g+@;#Riy8*EArdUBi!6b@Cm*M!yloJ1%#Ay9urh*bA z{4R?kls}oEg2?+Nv88rqd!0^>z)@>@A<4ah7gv21{6(7GmqAW>v0wA&gTt}F;dKCLFfZdxg*i{=<^2)|jG`Kk1ck`;gIf+{EAdiJRU~W7&=y zcJwmNNZn{0+JhN61dh8HCaWh``wI-0Qx_|Rc`Q5KsBH41HLo1Udi=OZI9w7l6Vtuh zEKz@p>lN8%>7zBr-^ZJ=H_BmtAF%j(UU}n$tE$d;%-;6Aa4sSa8pR}=v79ajY=OJ= zto0}8UQ4*=X`dpVr{_C#p4cQe8>|rWCl*FoW(=jF?Cvuzl6t!TqkJ%?Cg0+`Dda;o zX7#ZWgEYCm=#if2coM5wAjE%5jYIC8IH^d6pI?-6XF?0fh*mXVY{CR~Eru?P zu1;Fh2ktK{r8${*jB*n8B>Q~r1Vi0{$L_p|f$5faEUm9-8d&m0pMqOHt4H)^YM)Rr zNjAfUWQz7YVYTl(EzZz`$0vkaU{H81YL?xGQPxwXJP1+h&Z5c^M?HMF-(ZBbymqmo zk%CdG^jZ?_NBr})w4*3HV+3rH7Hq0)6gO{PahysycOOpk#VUM@@wl%0S zS+F1zPo$3j;hgHJ9vn25p#%*(e|?Dj(5vU(JjO?;lp$|;z}b=kRWTE+M!Ov zroRCbiX7v{8Vg0GJ;`ry~7%b-Bki;3q$}ar{gT>8rCNasTamGH! z8116IV9~nsV#kR@zCQ0L$~zVe5dieFN+cpjw;5$W^8UOxgF0g&F6-TQmMEblGD%O{nzBZ^*lIs z$8)${o6^Yz-o$wF7~EZ{Z?DKt`53tDhp5P1=l=cM!l$fK0G5>Q$EJwHE27tE&8=72 z8$hrdnz8GN#i<)x?Pq)0FZ{$IfBh#!-=g5VH!&u*)CgwFEUPOLxOrV1FoYP+$Wd>d zK;|T4l1>-GV*0;yg_D;cd~Pnd(fIyrE+#5)Bfj{{n!*o5#CN2;xO;Oy#Mr}f3kgZz zX=nDD=iv0F22%k%0708dS>>N8%yakQ=lTmoNy^%?>Gm`A$N<7)N(&MC>fCJTRWUW0 zAqvj8cE)R>;tI16MX*ZikA`oki?v_C+)%qHh_0!Q)98VDC*h}}+AY#IF`+QSPwKSn z1)BaZR;dfTIZW_SDl_iTV4%T+TPaZX#(AfqjOVIYlg4T7t7S~MN0OB=!1%73dM%uX zI#2(oUj=$_brK&bXzcsxu)*ZZZAWlX%irAFOB&g2M}dylzYE6Z7Kai zhc4uICrC-_WWvBoiI=;wt};}=;n`*3y^R=PaEctzStb(Pb4qZwa0^yA@QxFI_-@rW zbA;Zz1J7$`)jXCpu={TCt#Xs&q)Ij?o7F0(m04fr1OBfraAJn##lg$aBoo&je8IrP zQd^6EwiGXh>%hrM&SfVzh(^piI@8``tirVh`IA}ul-rx6=}cN=V0VpwL4WpEo#@kV z5n_DHfk9WgC2S$&3Xf1Wf=^3E82zjiP;o+Ucllk;0UEH59V=yGyBmZ za8AdI9%?^v5R>lP7hqvf{10bTELb`D+E;)P^|$t!4Wn8FX3_7btv@lR1s`tn; z%we!r27&St3=y0^vU4i0&fhBm^Qe9HRYdh3o-S=(&jzZwKFbDe<$P>M|0Ken8ws)G zdjKPBwGhdbno}iB|7^-G!~>dkeR+HQnGcr3>6x0F%~0;#bWM$Xwr5I@pVmhjACpR zhb~rtz+zh{%oUkXSVVcUB?}8nR9Ix-pTdec+?6vo*XwsV{RzDwdt#=v(#5#de)F6c64#2+(%l{xKyLuvR}zK zq(5&DQ?XN(X)^A@H%N4KB*1`uCsn~oKb-<2laK`4(qE=d{8ke@hjgCM3P%ZT~M zw`8ca8|L~^GNV&}8_^uEY7UfAtgvgLfnlk&j=z3c5kmyAt-EXHGr`GkAF~Z9_SF8H z=E(Ntl6-pZ@7SPVt+KzGD?!i83jL8PK$M;83SYa?NzevI;hrU0yQ-1TuU9$?b4*AkE1DYgy8hdr{LI)v%;s@smf@Kciy%ZPPKu2ONuo|CD#97ry1so34@xd5{05UOo zw>sI*Zvf-uoT8F~0zX@~~=G)d-APiFAB2%;c;F&3@dTT@dCr@tJJ367g~+)X-848$YHK4s{JN zS~YHr8qT+E&CSJ;1f!prZB}TtICz*96qCcmcNCRDoeLdbmEdQ}-J3Fx_VHY@F%XQ$Ezs16%+qzQY zx^+l<(BAb~M(@rCkyj>5`6W`_;%3Prc(Xt31N6s!yyYz^ic;>3w=%G6HoKH4vrL$x z!9c#seU$7~?1%2e0>`tJ81CXx_kr5sVsnVWK zVYH-~PWA@F^8R2bZC5jbuU}ux&tGXed`Cu-Oey1W9U9~jRt4`_U0O~K)I;z)Zq zYFXF%JUoW=_{*0(?BKpFEutD@0xr|E(RAV5if3OlXaRIW5nZ$UcMl+iPGr~|Yw?@s-RdbEA>pu)Y5M}eQ%Y;=CajJ>Mz^_^LJL1Jw zR~Ou>U!}^yTu=F@r% zVdd=;jMR7J-I{<&$-*Foe<(H-0`=MDfO9`;)i6|kl)o$$jQF>JWC^NbH& zn2>H&1zKtNgSxx(P0m1MaA0isSrj3#ZL(T77;PUc+c;gTP+;Y>_asetOtbe1QcHFK z@<1o;j*IiM4Oh7;^(cGxjUllsACvSiQS!9p!Gte4ybXd!@r{eTzKJS-CrQ{S9EY1; z29qr`lOnf_A!ruo&@nK~Rc!cCys&J3#Z>(NZTBbhk(xW(#Y8<-CWy3K93L{g@Y4(& zyXO#)Ey^XhJGJ1uX!Co-vQmoL(w%Q_9hTQVrvvC@U8BUl4;-kW$>58s;eKD$`LbVu zMI>W5?;7SfX%87um7q1${!oostmm;q;Ha+HE%LbM+F7R@8sobXIAabBmSi=fSlV<8 zIX?0*dz0A#MRd*rT1AEP7VrD?^dqkp9|PUt&ru`)*Ibb5pi~p3f!6jA&^J*Po(NIprw#T^2qKC zNuujJE#U#~wo<+~zL!8xNHy~}>?}S_u{(9~$o=)fQP27dNe_-+uvT7g=a!jHazfoy zWu}&{O4``Wz&)VpKYN*xiajDmwm3f^x`%gOzMOSqZwYE|S>W-uBLQK_lc8xO%&8ZbV3sZq}WwhPEsa9fQvNPURj>7)910Dj zej>diEBw`)QiqkHhLf+>T$jifwAzBHget=(y(rhK#m)8m5nLCp-+dM@j{cx^>7JgRuB_fw#{P0lUEKMe126^HMRXhS*=2yOTPqmxFMcPNZsyw`KE$kW?E{>q^O31}Li-#N2h;~g zM;}4J{ui16RERn1B_mV9jcHZ8iz_e|Cme8P^c@`V7)yo5p-Y42V$K5lVs`cn2AN3S zRoaY%9KBQ67QXKT&YADQqk5(N3bsrEHazj;5nE3;j>RTXL~&#XH_VU2&%iyEt1pcom4FND-wOemadz!F zR!ebd$hp?Q;?VI2DCYJJ{dPYx>h0{08b{P*moeJ~7G!=rv1QWufuDab?EE^?JQlzE z++f4pr$~92X>pirO`<6j#;fd1ErjE>-(056j;z8Op`*x~RPcANM!$QMKd^;~c}{&7 z>vYNQcuzT87KMz3C49<+@bfFz);b~pFcQGI>A$er05wY*5i;e!9R**LgnAsSq3ik- zf1398Ck&Q8m0j=MIv(OR(cp#a!V!`-CQvHw%J9NmNo!dhlWRqMf+EbSJyez4)p))Y zMrSs~82$OfyPbQ!Mr+IGaull12MC+vQ~HxXy&Fz`M8fzBPQG)4SXS4Cj(dUXzd42I z0pbY~CYoQ|PlJ9>aSWnCzE95==hZU1)JD}Xm#+5>a0H7DbZ*VkR~NF#LS&!RD&qiF z*UdaKjsJphJqt_6Efp&(4-kP|F?H8VMb0&CDcUce$zfM<+vZE@)dZf4)ALJU0Yl`O z=${e!S;NW%!IHI9zco zRfuSp=C*A$YYnBo=)8PfTAFJ4S4->Dy$&gIQ`dBlEc|fzLG$^TEVZCb<;+n{!69D| zWWU$FnV3ufd1W~XK9JP;og3VF`Sd{e`-GrU!5bEzc59R**1M&x6A3SUYHp6Ryhq!P z17MPzp;yKh6^%H4R=0lpYjCxRgcPKFOwHjU#I$X4$09q;>Bj@;wKOI@T> zy@ghNHGdp#E5>}fw5n41f#vw8r$2j8#}GMmMv9v=3K5a5^TL@%y%y3wXyWo5GB8=m53X5`!X>xAMYU6s|y2IVgiDz>qXr;r}%#2{Y!NL4dX}7wbscxVtzKyyVsFt!86(%g#MCG0TGCb%>Sc@Vz?7dsW z=ZD>!|&OS1pAro$*){0+D>o$Ze)8sc171 z<-K%*o#5(h=>F*kgJ2&epVF_1I6SsPUAQ;g6K(3Ry?3F!y$l8CyvA|tK_%JB*%fpc`Jk^rhu=4u*O2C2zMFcheWC|$TUzN z$TOzK=wsO?ncviKp!5w~hH!XzmzKb7>(GAj`MOnuIkh#gi9%avCj2gl#br6`GbQ3@tzePL%l-9twEe7|aZ} zpWlMx^Ep|eZMN3VA6wBmkFo{!<4{*eD`2kz%J0q?V`pbw^z6 zqXPHSQJSFZkM*M(@~Y(N8Q`yZ7+Da9T{ppu5aPPBe>1c}_+70;Y(xNPq2vBn`s}@q znyV8Ks|#y&^=q3uhnO6QOI8?plu!)%C=ly-{30yIcv z_NhgCjsK107cL4^aB@gRN<<8?W(kNgiy6i5&_G>EsIy^o1)GNObqxd1JQQ$IYs|1d zJ<9G%tC80JLL^{PMRIj-`c6Y;V9xYg4UQZm`U{JY&Y0LmA(nI_i~>shdScJ}-mb&m=hpYGuS)2fi zYiQkf4^+4LFD5%F&#)11$1j}ywUXBu@j0XzQU7Zz9>iFen}C8+GwRR?ZhiniHOH!* z1MJMVugJ)#k}AwCq-=ITo2UAepOXW;^UrzMIpcd2Wo7@RVORKQxN4)O4;BF==uqbJ z&7v?yVVBDSZv7tEa@()tQLIT+X~Y@jT=VSiOI}TOabsB#xv}HfU$w+ET(@n%U&;qz zgdc1kFSNNb(mh2tjdE)n4SMseu_hZ}000N(kOlPEo0#>};64H6cA=M2cU~4|n_eQ- zLN`*(mR5*k0(r|z z8xH)Np{;wi7Kan9hP%u0hrCZviFYBo6T_OEAv&U3>vEPub;?6nC&E2XXMRU}2`zSG zA>_(WQ%2D!a8#$tHcLA{{JaU6lHZoe;>4-_CGLYPppSGyA9}==@*ie!A^TR+ah3t- z;8Oz34|T0{S$*UzRYf^x*htvtkA)^poVM@s6P->?(hQAsZCEegg7B;M3!szDF^6ra z^MivcP<=C_fICrPSNLACMj?Qp2>GEdal=fGK5LzvNSrzFtAh2@V)*ki8UKkCKGB3y z1a4bB?jXKq=A5dn;4SvepOX%6u?w%$)DK2pj4DxT&;^)u?@~zEXH?~hzT!Z%X6ymc(aGe6F zRh!Yq=S7{f@7I(5++qY>&#g_DR^u33`>%qbg7UZAn1!blM zR_fQAhU-0+jB$hpUa>4q2dfMjt7;H%3Kdm-=!Z;X3kgZjWUnnuk^Xz4aKS;AOgrk{ zy;+ZoOvR+}n2E=wtU#}FD(^W-@ssHc*Qtz@d;dqc_Rkh#b0H7pQHAQgG}@mpOOi) zN82>e(#eHZye7U>-pMf!*b|w%Yq%DybRSr zi0H^PJHu8yi+&@*46yc9=hURO)8uz1$RZVr=WCeRE|tOOqq)WW%?y0YYH}Rg6RsP) zPVaj`lAi4nCtvhcpM*r;>lE%@-p=6>{x2W}^q{o%ThlPD+*8K#LVc&d)YId0Y~-oGL`G%;93@Ko$5fUx_>M+9XwV^ic@t#VXb;h>93r=-$M z{`LC}hAL9ldO#kx5jy5IH`hgChT;nkA1kKH7rUNxA6lJZuu(i{4`OmF)C+6*D0AL7u*Vp$L67PFz0?i*RC~mmbG~qso;6N z-Z+u@khw@B?*r(5zy%B4ZtWaLX0V&*Ec7yp!+sd^fAt)3?F)@gLsI~s$BHNZ;2MbN zr*mNr(zcr$8&kzJ-G5NUXl?{YQ5 zLHuDD+l3CLYi?>vh>zddoAW&nkIrx-U^o`n*Pl{0ooxoptU~S6?SY`XfQ|wS3HU!_ z0OAYpbO$5z+r$VbMfs6R$CH{vLw7L(nSXVNUoTDYk+uvXZ@fQx=pPAjU8cCvv)9V7 zFnzEU+KiP!rGQH-PD!H5dbepQa!Cz+U=MG(wQs+W;SLyr$*eh7GPFdEIhV}~lZ|4IP@0#`GS6fpWis3bCp0ZZ=x*NM0ly+lb zvR3z@i*3-IUD>b?Pw~)&SUyH)-#8k2EoT&anIQvTfFI*;VJ)XbE}zN&1da>6qJ$=4Z z|Ik|yIM)55{&QrFIZ@#jU?>fFq)uu`ktfpq>6BS6dxwH~uNd0xk%+UV_lL?8=OCTu zW~S0DA0BF55%I3G1{P5Y0w~_FEMAuSL_>EkcLHU^c#=EM8|VK-bcfZ0CH-rmt&HMK zqz54n4h*H4)9;_e?~tz1nlyg$!I9ncXcG7%?@)Q!-(Ie{+O+AE=8kgy5NEdhnMc>_ zIgM_FIAu|9*GS|+kjTGbq^hD~pqkEnL~T-_VeQ<$WY>d`uYUNnYA1E6*{CY<9+mWa zEy+QeqV7Y~&~@%ByQ0^!+QNi-5x<)vi1kD?-A#aNALC;G_s0;3`1(y$&I80@qer3X z(4`(g_e#Mq%A`BhfEe>{e<*c@d?OHPX);8AW4`YY8~|q>G{V^XLro&3`t{m+ikM*v!<&tnFZ?K0Mz4;ZV-?TJb`b&#}B&_71kqK8_VshEvBrI9B7+Exkw#!fs)99u<**3<=fk3-FsrO{N zo1f^0qqH5EAIyMKhLdWbQ9LTGEVq6qcGYcf4ZBy1x?` zmp&L}=$@ZxkK!c0$6N!IPM&)63q=GXUtv>1<4ct=uWwPo-f!jN0oiyB*G24#gp;Wx zg&^f@m1~V8#~Nh&hFw~9a9qo;kr`8PF+kT1!$-a-^iq9Pkqo z`RLK)FXlo=#AGt6f8MM~W@>f14`1Wo?sEh`6@V#Lo((l}rT}(7=J4cU5?guidzfso zRN_!6>aO4~k%e&A!wupk${R&?FEY;owk6L;-nhiIVe1VK5$hA6hDZUbFehg~aemw> zJsVWsgtG4){w#5iB3h0RY~!in#h6I7Z)M`SHm{HQC_4!8kRFruUN2A6m0C<-Qtp;N zl1IEJf48o#d9x6+|EqqDj|@rCyWRHc=EyU(XF|V2IKZI1e-#3Bl$T{Z&lAsz|0npU z3BM(U*+(Aio(`n~8t(!}Ta0|hK9CYb%WX5n#fe{j!%O1|Mm;HPaJ*i7`+|`wa^BTr z;}O9R)f&aq4QQW@n#4HIm=LVxtT5I~cLB1ZoIgnh-9{!}zd-`Bes$FdY#zBF68#N9 zN7ZHc+R~X~3&hncWkC*5gyPe?f)PCuKe*<(gz;{ZL&}(o<=aV)O(}|-~7gm@h3u<3kyi;N-{4YHYj{;A1&J6P6(Z#D| zomIByoI67gkJCl}j!(jQ+P>d78oCnY9YYZB_vkfYav~cOzrv7=x_wqY_<3cS`zFya ztQj(EVqHnn1oeDO6yk+_=33cCc0HCB*3JkRtadWy;vg95pebIL+o>|B-M=5El(aJv z_T#m~2b5CRmFwE5LdK;~hh*J?15=(v=F?-KL6WkG@-`2fu$FbVN=IPD%Ts-;Wal%E zEmr@U3X=^!+mGV#&-R7rVUrx`Ky_jqq5yIYqQgVq)ThN1D7VajoY` zvA9IhKlxYm^-P2@J%>+wMeQu#-UQ`NFDtF34C`2E!u|E-w?SKc*Vof!8+!QQfraCP_la??0qO-4~Fw_KXuc_ z5*YvMdXh?_4dpie^SHu#Iy&(Aqzg8W9~1op6u#vyGKB?Hc?>UO-7Z+d{zu!@&Z6r< zJ4BoH_LzzD7PGr>HI3Iuyq?ixR^!dmu5w&C7g-(#c z(N%~1>V()X8h)`_22rSe7X2IJg{9|ejZ;-2a0kHB!+Bu;SeaK_2BgVC*u}#=dnEFo zK?)2kEFil{u>K4SP8&P_w43g+bl?Ya$Tw$nE)jVUCsVhbwekAx`xLvjJ%phxo+Qf4 z+vu*#V>bEaRiAD4*b~Q}2;4)51KN0xp^*^)AcMXeQ7UxavhsFPn0QQlvWl8RE{h;h zuCAe(*QHIQ20oNc>F2FwJuE%^Vdfi|d}mIoL#-|v#?#Xv58}CX&3)n$Nfj$KoLE9A zfReOLmQ%m`DIvgdi|Y6f7)l8YB9Kcn5o~`Q&$Pzz%5LrU%-mh+IJ#F+atRbqdq_#o z+P`mXdfg(#K{)z+ERlhf-vhh$mhN;^ef)!mY(;#-s;(F0M@ovli5dL_D|K1Ln*XPr zIfwW{6`)d!6cq*#)PtTQ%~!ip8I7dXymG&?vcEA2?SS^5X(R9#62)eJQqf~DT^Y)> zbUlQSlb9t)URk8hLF>laKkGoE4`{Qm=}39HQ?-P`DF0E&a_3+;2SaKOVzrIRJ9n?I z9)bw+u52rm<{x?3qW1<^Y~Ga(Z%B@H72xtVvdM@lCA(E#c52(}XVj`p6l=4@1R z2QNbDJMG*Wizxi#p~G3O-WCJ!DM7ecdq0E)0AvioS+;f}5d;`RszZ>2)_X)%{^?zz z`~8ZgrEN=`ZiUdOK!+OxQj}>ogM?RX9BpaAJ;U22tyf*Td}=ETfArHLjdhKVt|?t~ ziCom4?N*biPM$2JH^>)t6wuocXxD4JM*LmGc5zW$Sc*d+wpQh|5aS zB(*LCKto(l-LoNh)k>Xv0QQB`v!QvW*y9RT{YKFnU`AAN|KLRM>TaLpd-tB0qSOo^Z>*>v|u2(r6 z<9`dorbN(i-{a4YfvC6`p$UtAr8?VXNZYG+DLTxYTq9hX6uIFulU)5ph?8p{w|1fu zQ$pdlHK?PI-NKzuk}qc(PG#ei?RG@n?L=hg$v3A)m_Y)GlP5EamMgix2 zyF01ZC3g%WhsA8w8Vd)iwhJ72JJfYe9Q&~}8Vd45gER?47MwvZGrt@$=aEQw?Y~$B zUlE2-*w98-;a>mUu_a?ScvFTkwUj{0m9rntla30R08f*2u$Vv;z!%CR)|!g1#o=f* zKN%Ulm*yO22}^-S&bN5jJQ!C{rl6p^24ityhNazX#%~wiGup4!76?vh%cZ6J;DYko zcJ8aH=2OI_-(z*;1yc}|p#i*@%b&Q~R&G7wQ<+t*ro7PxykFmJ?21B7v6wQHQe;%y z*gfL5C!!uxK=Qms=k`M8yczBXfpB^c_wY6cpW#~7BCnF0kcvb#2YJd-v!4E?z82AA zaVh7G_qyfSd4f0TLQS*)^WJ?;M4bIj2~k+#B4`EL>-K*r3-r=~U&&JRd3DrGDYIW` zg}=NfS4hl&p{bqJ3klnJ!-t?uK%NVQMWf&5R-ml`{?LC}#8!enD|egH`>HJv;grW4 z$UneqM6Ab-ou~C*>fi)-;c>r3!roK68ss3Rp#IzZ#PMlPP;dnn1?%DnW3*{ zk*uvgE~rJldsAgt=5|`#JjLHEk~XRakQ^?hFP?A!(8AM45C|pENp4$jyHQm$QT}na zHS)1N$g2J6i1cELZB2Ro`)6G}r*0KqBnc{<&#r$Wlf%i!d7M0WEmEePvs4E62-JK5 zRT1@-xnazYHU-QepCer5{jfx9Nf;GlNi@+Z`1#GZqlHPN7OVn~LDPz4gPq}Q_fQ`u zsv_nLMGAS9vUYS)FD0zymppKA`+(aA!9lcw&CMQnwZU^x_()svrU7hwZ`{RLv*R>MwDLafQ z@^-qSiC^w2=d2KPW-K%LOs)=bAGyTtmtugQwIuF+4a&>>&M`d&nF-ZR*0_wf&MxA- zO;(@BHse>Ww{s1+w(*g}RDI6azne=F`mmcghT$|8HF;7)zHS!|xR)QhWMEjS`5*;% zUFi$Sk6r=)B&mD*?iO*;&3F0a(ucRQ!P)tYOwhFvbQ7v-DrR#5e_Lo}C4NgmPhZ)m zjlN6x^>)*g-uCN+a(QQvu2n>qmDidG`zIV*;ndjVq4+?mgiS(->C@(Vm6_J3qiqAB z1zlTFQDMvs42G|=HU0_YzS#69cnp`=db@opPc!LKG;L9@a3kkM>lEFPC*O{z_En)} z1=20wA~&>5uQdbOz-|Y|xM^o4c&<$?&GxpFh66Fm8}K9K4gMOvH}WI%Ec2PNWxR6X zB~e`n#J<+@OPZOj#;!5o;yTOlqCue*C{X<9Gf5RP+iz36sUP+;-7AOJcr=KcE%Bih zEWObB8>XsNcO@>ek~cQ$gOD6OOD%7l<$*K8_ZsB|#YUgbvGJL4D~DF&Ewo{t&m|a( z3{fHE9>hGZ2*xo8AUJXD@FkeH5ThymCQEPJhs3)B5kk1Cy>Z_DtHstL0czSoY}I-C z2lWQ_n4Xj1CP%z-zJN~@0_m015JUFSB#sk&B)HL+=9-o&7r;LLn!p)kp=%>aJ!|ii z{;m+})7C6I|7u%6>cVM?4nLWWi>>6tOo<)VM+Jf(e0bC1j9>~FG)hjy|q?u|2w{^(HQ4-(Y?#G zBed#8(ZoE=m>W6hXqXzBKK=!71L`)9;D6JDkr@Zf1H4i&xaPwWwE5ZDP0sI1tC=A6&6xQxjl%N!+bKb}Wh1-u>=2VgqI+HB#sE z>BaW~768URNk_1TVekxEf=ig7$7R4ZT-dD`C`ARXG9|8Wu&LsAa)x%dJ$WUiSSjjf zZ3ZYVg}d_CxhSCuwswd1jN^Dv#Zv*J71 z*5Q-h{N*lwf-W+&Uk_CW= z3WJZB3-L0nIu>Sdq+l(Vp~|%PljZhgLB#BK{;C^oX_cR@nd-(i$R>hpypEmJJ}AA~ zgElzaQi_~p3i}ivR_HdVDDC$*oF-$s$@ak`OZLxw2?fPhOlBLmG#}sBnh#ZLlwa2D zXLg8#BzmdjLM+F9vb9N49~CRFvQ2M*aAu?10%Xo}quaA#k7O;<|9R_2u1o&Z<)lZ4U|z*h*72;)y_K!2kL+C1%}O{hMA*KutCT zw6eyrUD8TN%K51C_1+E%VxR`Cs&6)=l!WKw98ySTqLr!kdB>yLEasQBk3&{&U4nnx+hPmW_inf6cjKj5 z$uRKw40Z&jwboUh9hZ zh7%Tm`~8P+hSU=;@WQ!48=%Yu(}eZ-=Vy00_{9@wPo#T6Ko(X{R{-izql?*(*1gHu zLmxO_*h_*gJ3DYSdRK;+C({LCdnxn=G=8X!yo8tEjS-dSh(S1@vu?SKs3yYQE*kzJ zMI#WjPIxGvic%LE-9GXpzJ5P|v7NQ=;Y90twyYfxUPB;g!GNHNI1_&&&2UD!yew#eE}`w>8B;EdOEaCk;9B2lGfS4I5a7+n0E-#wPD85gJ6 zci9uhJDq@s31R&i!BwnjB!%d$#_bJ9{HU?$buv ziOUAuKm~4d4sZPa&gIZ6h2SnSyH@7_8(5{XhtR9mic>eTKk&VvLoYJR@n;sQy?O`> zPA+YJn_|aw@EQ2oica$b{pzUe;!(bww}PP?Ov?2hX|&^$C#a5Bxoo~l=HQN@)=@_? zld}N&cww?!%P?S9u1a-`ak&evo*o!;pVRo7zCZK&5#Gr>`rMLZ*7+o1h-HU_>cTTM zV+Z=!*&afsTRB=@Kv>@{y~&&}W#F&w;?An!_JVQMzsTlCALr`e`&^!1ucp|W=L%am zBDv<@qa07cz^y`=m5UUUIzEm_9a%M)?S8g=Qhiz?BQI_HtC27P4FkRVWx~|sVqJtb z6R7cGzw_qC`Eldz`@lNqH{HNBlFC5)CTb8YskX^Y5tCq9D^7ZU5hz|ceivpxo?9e; zMUdIo3Z@P^nW7dB=jWNNX;E13I+UoqKiqnW*glM8szm34b*E=q?INhS#hDG7FV)Tw z@R7O-q||>_YUS4;c8G6(4d8skcysxZbf|{W7C4;c{>NJW$@SQWe|DD0K3s ztaMor)P~gJpIy%|R*e(`{Z8fRJ&fNXn(|?blCeYBfJSTq|Lwd@#Smj)i9!=S+;Nlx z1?XX@T_Ds8RixVozWIJPxsZoEyI~SWl?XT*=f+b_aDnatXTtqilb4LyA;Lt#_gM%&sv=i$}(?tSzsW2v)&JJJOwi}d;~F4(F{L5 zi4r=gT$lMv&oXwBspQgc;7DobB`%%)3%X6qjW|hh&p+!7Nxzm19Ez_W1THE0DGyyCaZks=jXBcbMTdd_vEv=x} z$N~qbUV{Szwr6Vg4Wt~FKV#S4xDl4$kD1s5K{;j(2p(T0kNz<8Uj*?@{P@h91*hQ8 z2{!}wFcI@zE^EXc(4@x{pZfLElJPC9B@>nV@o^-9K$O*q_0% z6X{$iw4R>(j+C<`hiTW`6-((9&@O>y4Z2)I{?mvF`;k*6b!%(fivz{{x6?HcGMBF^ z5)LJb%?|^0@%AN`s2%jaoqZtWxeya)bZ&Pd^Zz}=-BCy`Uuw4!VlkNj(_QsLfqv-L(M4MHXb~KQc)Vig>}I?jd#F=W|<*I@=z^!JM&w z3L2B=bwn;^D4_JM-1hu%Ia@vW3xSdxR84ZeaR^ynN0x%PzLrS|i-&dDua7qa{qy7E z$TY*Vco}tfFWi&~xCp;W*j@$GkE8a0TEQCcXB(ViYZ)}_;Xrsd02Lf_vGdn_8~}r& zNYDeJ$XVjJ_EDKUYW3h#6^Jivjtfsvlgjp6?3o5ur3dGVAZP2q-hFfsN`)?;3c1h zp;;*zE{!|u9GQU!R#=Y|t*G)jXKw&}M5_PWaurh>ar`l86NQnFxqZb-$olWLl#DDqS4xMf4kHErA6M_-Ug!6O{kE}1OL<2 zGZ0%(B-0iWNu>lb`uafSVpVWY^;!5r`j9ppY^B9b!bC_Qi#?f!Fk*<#j}_2>wpi$3 zj-BZJdEI_=&aPMz`f5E>_=&D}E?1V&YI6mc9Je(53r<@|WnwGQk*EnXf0o43k{Zqt zCtyW@AWnx9Qvnj+UsSZ|y>;xrcz#3B(pU&Rn@wbtfuiU77<$aSw?x$53@>p3yKL*m zf!kbmY)xqU`qNMeKDohI*8b{Q8TI#+1`DXV1sS!)+pXE|fl5kNeo58}%@K%YRl|FS zl$8>H;!Z2*SPCH&ZpbqyeI^M$`UAA&@OFylL*BOryAUX#t6YR1wflDq2z4hxNojhF z_Xh6IPV|I#cI96z)0x0x)J?!;0!?K@^TcYviRG&4J{f|f$4-@jZfgj++nO>>7pwRu zwV_SvlTSV}ObIv?O^w5!O6CuXzZY`1G9Zi@5{$G|h%AROirdzF7O3v1meJ_hJ0OGl zAyQD;NW)Zw2*sl!RvasSA&o=VT4f)@EL#!6jw*U` zV6Kl#ch!oT@FA3{hMBrW!iq8d0w(7#p2k#IoU0&YW$YTy<$$RCZwMi3cfyQg&BrHJ z@4Q_v%Y33~-8>wM?AVBC)w=P}aI22FV=*=kim#KBsQ+6xH(2jJOp2tZ-$MnuQ7I zfDK`Vv~GAyl$Y7%JfZ*2Oeo`e78@HTx?uI!JhXaZED0-vC~JBt+usx*!OY4Lt|yu{ zPFeKRIo;fF?YUFGqm7<(=BBIH&}2;;BLR`Pdn0#6-|tT?Uw&ZndDozl9U2>dMvbgp zWd%;o5AMgwmYr3FnfMC%U!apJhAv+}{xOWRw^ix8Z)Ta?5i;GM>V42T-F0}>_wSqS zujygO=?r8vH&Zv0bpSdq+;w@Re;RWjPhN@I@C1e(^V*a#{YpBSA75l_ptUS&MOJm+ zn9?cdK36^WqQqgW2m8T;Z0D>&0O{eVeJz;zXeR;An-dSouS|SY3^YL4OG~cXG`8f5 z5fLVqvnnd_B@_%r=F%MkehxDQpyX7{P1@oG?{F{$MZ=%T@=q|k>1qTNEYc$7myVKeV?HR`rqb~cH9Ad648+L#ADF(NK{h$cE5-*e61Hvc z%xiue(}zI%jv~Wc3XH=#uIgUJbk8NR4r77^JAD}G^QI4W`>Mx&g5h0d_#nh|N5*#}(_+=u0-;v{l6GOA%{>K80Ip-~X&mnMG#cz5w zdrV1&-GE#8zO8n?)=-FD4|0cRk{v@N)W1L9>7z1Lt@6kTm~aeJ!(Ty@Sb*PAKbQ`} zcfIQ^vp77=#L3JP*yqtKP1n`_8L~m+vT_GmtU~VKeXANfAibaLJLGu>5>-cU(!}y+6>1IB`U@YSryF`1{o8TSuz7#6GDO|*NM#RR@W6XKPQ4k zU?!e%twZ~cqtn$s2ugp>+&*?hWfsh=^V2u}jX=7~{1iO+e}8klBzJ%*p%9rn$w(to z3MLAV6#6uMnS!jTdA5|?#GVcki;9$)5D3D^Npdu?i&#aRg!nNgc(3w$jJ9p~i|$ZS zb;%Df!*lSocKcI)A2lUWM0Fr#By++4a@Ypf$#BinYzG@iSqB7 z957Yodo*DPi;XokcCG93^bekC9tQ6Cx6Giz=%WBI1KJ@%QU#Csw`08$s8?FHu1Pfp z`=zJVr4z5(>88eXmcXP(7qm^B2PW^NIkFuCp*CY z1ecVtf11`y2qt43%K3n3lCC+QZoW$;Si#R%gxK}%!e>1`P>uexrwNAzLC%oEiHfXc^e>NACSv%c9jpqCN|pEig+a!BsLQkcBmaFQjio=&+m~ zD1M?dmINlLihKco=rc*1)1co;JX#fJwFwk)(m<;~+CD%nEtG30+BETw=iSjEKQ8Mg z_|+-*ce*xwUG4{1MbQLL$rT zB5*!G@@<2Y3Yi>p9KDl)bt_Vmttb9DaM^Vfg~{MKcu2*I)6wTwodNVP^> z6OqjpRDckq*RO|dE+@QB@k`KbM-r^jtyrT8& z2{VS>>FV;p;bPt+{ZVRSFi=h4*0(%IpZ5R+OJQIh`T*DV=o|3xpk_1V;|nV{6t@1{ z87YGYHh&hD!m}>6*4l%Plc6ymdgec;TiKK@FYbG}O}>!!tOm!Uye8mG?<8C@0_%)( z_NiVrq5$|>H9PBkcVjICg+D=%tHijrk_b;aJn;JEBr;hu>0U|mSD}}*X$=c?LxWP^ zaH|`)*+ARzXD+H$Q{K~<<-N?(HV#Of6bh8$gs5Ug4YenULe0(9GThhti1LE{7_i9f zYWQa!RsPv|jji|lJ;qi2cF3?uIJHoHw8fcppkjI`$s1O?B2mrfJOSQ$56>UCj`xpK(~`cel>^Vie^17JeYOlZZhm6F z)~Ab~uW{){Fv|7e1Z!i$|4wy1{tg<<8}-vuc)+8bj>^PQS2$W+<*FJ5ZbqT5dv4tL znET+XY*b2|&+j5=QAUgSF@Ld4xE|k`uZDjbqMsg?U}&qgY88cI<2S!bRUl$dbHA5m zjs9jV{nSUBX8th`E13mJs$w#;gU=)r$EG_Tv*vrq1J%}H8^OEi@#Hb|`O62$n_s7? zb^D9O^Gvb+r}`?vp`CbK{i!Jq*OU66{7#_6lm^Jn>=9S!8p!<`=MXV>HZI`wep$cO zs;3B18Q8YB;W!5Ecnszts!V9g>4RWJ^i|i^r?DC{=Y7@orM7}I07;W!{Bmx5XZz&7 zSz9sZ3;#RmY{a``fRPI#=s9)mFunU+>8-AUqT3!MJybjyhbs7t(ih7R0CeykAEJ4O z{JNO#cr=|8q%TH2&wT$W8!pw_&vc>Uzy;Y26>TJ{_*MrZUTj)?V&|< z7Q}8ysTK6oiHD%hwzLJEK_N-dN_X#jEa6z0G1kM zEUmb)m=gwcuH&mFKdP9&=@P#^_!|B$H5N=5P5IJr-9_8x!wJQ})nR8FXjc*vJF3;D zcyDvOtB_>?xu;1oZuhq?DheO!Q?*m7vWK2i?l*jhbCPS$g%SY9zfO03wLg}ly zDenyC7&W2PLX|FGDME;PkOVnv_`-K7nkByMGa! zwnuQL{v?=R)EMYrZ&kD?_)G}*@ZAtXk!F1{PquDEvC0mZ2K@4n+<0p0d?GaS%h89y zlS99aOre+aCf$lVy^!J~d#DC@>Lbd5iz3hEOA&#OpA8upAbn%dJI?zY2z{#owH`}o zienQbQA2KmFSlJk!-_sIaNLyk0g-8VPTnPyJ&J8U!L_ZbJjwQDS#BV~BOEcXi*W-% zXqk+eP09hA`q(Hj?=)-iq~jVw3Dp9u^T9Q|6ZxH+=2(87n}F5EwjH@W5+QvVagd4b zsP$9!qgpRsWO8r-l2o#$=gW5bY(INWi_6R)w!?IKf|?%qWr5GSLvZ@SC7ZTwTimlx z5Z%dngnagE{A;ku=jyE%^q8T2(ff)2|I3GYPiI>$8}6XZJ_C~A;zKWvn+C7a;9u*h z)0rW=KAJU<+sHjF_35CnSQRb#&f90A(9hqHnFp9Zq7>$NFc%Z@b4-Nbnsc2?y`Vz> zyKY77Tr`jgG85}pW5IAkNO@U*3OBdSV}9&nnaBGK?O2gePSxx~myvcyt=v6iwlwK{ z4X3`|2xW6UHN$H7Rl#z<_SebHx>LG{*|}VP=~{mj{w=6o+y?BTQA!?iD(n>=zWy3pvr8}Ie9t*NdaGtVe00@A^}8>@-YbV^|F_TQCN+doYc zVKsZ2Oh2TkJc%WMYm<|1Yac?8M1CQy2Wq!pue69sbSQSLRjQ zrMZCSuTKMN$?&k+v8A&5D zVDid^KyMHxPEDz9kuqxjPO)&4q;wC)cluf(Rw4OyXD;cFA|Ed*iL+=PBZ01qrcu&%g?q^`8lh1x~2a zE3ker;0o>e=t29TD_DsPN0Mzp-Y^JBGgfvZ=o%7jMVxACXSwe#&mlR?p6Tw@a}sbZ zLf?fzi|0UEr~-sHZx-Em9C=rkOPocU1Bz^`6e#Ry*+i{Tafp(fo$^Kk(10&Cx_mK5 zGWa~O`L21n_C~$2wzi(~$I$4o-D=g`Bpdc5br?96-HTjD@9Lat)yQR^wVF*N`6pjk zSX7UxJHOrtv-g_S95K&w4+QJaloZoV8hi?nM#R`1@JJas;(T}x*VsM3n2zQ7_F!d% z?1e(4r=xRp`hgcMMVQ>hPN&xKWv>RW2s}GD02ayR^}3j&_?|O4HA_g2-SQ-gfEwdB zTK*!qZqMy5m-Y1LS}O)$&?fn(o;R;4O;vrnsHCu&QGDDDdm6VHH*NMp%S(HxV>ugb zo#=#nzP5Zpa(=&Cs#dAEBtcRzxDkHL%;F3jr z^0!`&u4dA412BK`@=LFrX*S^eViA!`)>pB_wJGpew>kFlq7bDgp z&`=-E;alW}Ru&QbSE=BvHI7&yZUsmCrStI4&yMe;n{aX5TSQ{=8A#{VH zi{Uc zH{f92og7?VAwI*jx1?kK$X$m|icecM&J;{saBxWO*NKRkNJRS~tPo}$+hE5_>0sj4 z!22|D*f?ZWM_#S&av6W9!`Gp}Wzj!RIp-`(Lw%3#XJwex$UjYePn@5cM#skZF$IYV z7Rj@_&z>OJNlq{@Jaw>i`-v)1Q*b1yP&685SK#Y!I%Q|O`v@?aqh8^d57wHOfDBh$ zXT1ezy1$U#an(s%J8S~|EOOO!96)jvEPJO(%)pMK*@2LaA=JK~3!98pphQhlR> zfN5$I`vB%R^Dl4-tvsY$wrJbtCNfMMp?eBC%yYnYKS1>wGMif%0*b7mE9uF1N_Eh| zzEBTA;^LdB(-cKfeI=AK=4Pgpj#5msH)-MzI=o+g~Xrr&~k?iY}K9Ko&us!;*a>g)iC|>fNr0dm%h)&>}HoJM*hB^&_#AZ zX_URA(j3%o;$ok17p6Ji*HCA)o#<^7loC+HeK3KajgTcA32jo3A9Kdw(xRwr;4BO( zpUQ$^`}y-m=hWlH`i{y;UOIcIdmBT#1As+bHNN5WReBtHxq)A`nw{rRJSka-3(q243H1NwCJ+fr6 z{9z(!AW!peJk61^Qi0zL1!miAOE!S*Bj{QkJG7>-&V#foty`$xOpMdtFxaQKJEZ^1 ze-(9daI?D>93}=qn}7zxKHY^WbZ`8*tYeMJy)PM6kR(DfD~QMT>UZQX$Lgi#j^_^+ zNAzr^72lxMbAQP`ow}Nd3LJd40`B3B&K$$dY~G3X*ULv3DL)`{kkwHZVoi7x@AU2K zJEtHjVk+c5@+Qn&sIM~Oc1(IWfMf!@(!p^{Uq0q_BKA}a8 z5wu%LM0F83m=`*$T%fJuz)o%u+=or$s4=G_X|7#KM}=qE9on->Uz&)YsOTY3a$iY- z?vrQo!Za78cFkEwQCt+h&q~IbmX8iXe3-nFEn(de(1W~(zmS#=Dkx3NVkFxQut25! z5&R&$5xwrDsmW7Kp;f=Dt#l}0LIt^5|D)`%;zTEQJD9l)I0Jxz6n9Tm6ry4?DQQgJ zkyWXn9O~0~67_58v zNvG*_^daH_7WNQ5OM@pfG4^Mq6Grl1w|%;YrH1EfY$I^V-#^MS0h+S*d9T&7nP{eJ0h{125P=d^V7p%7J@Nlf0l)6UCI^7K_K)Eyd` z%!{iaU%TJa)@-Sn5|X!&u?B! z|2#;aQ;>Llyz)!s-le3eL^8cTr`6>3X5L(V~XLvyUKO#}v+QUm&o>v3v&D zy8$6ys7s}jY0q%8%UQ&*=NZCSZ_+^l?@*|}+c8?gw1uFpJy_4o%m16uL1g8m>M{B_ zHfXXq_Ln+4spalfW8 z9`cTf;4VA=`p$m{8X8c~`6JXK`(8iW0uN~*a5F)Uz+8Ve@`Pv^-OR*Hha8IiWFW47&hgkq%DTTFbLPnAC?v zz>>ENbHB7ZhvFW|>@ubwoL*x>U53oBchb@c!D1o+a_y|g4!yT@Um>z$YK8Uc(kCEM z$#&EbRx4YA9F?R0@x*1JW-YB)yTryx<9BMG&F-OlM_$DzDgR42IWJ5Au-Dt$JR~=1 zdS_o~nCgmbV-Y95-{6B{mm8omK)&xExXZKoRbu?|>sDHKN;iZP%*F$Z09o+zbJ6r? zm=72hJRkG_X*1PFq$b6Y8$kV$p`@b1MANDhCj}T!CnK;U*+G*Z+$Q+)tg^dk$1^h7 zd=~&oXyc>(|Xy+5(D8ArNiG9Sn2xYvAaP12&Lvqyc*az zxq3H|13K;aal z5m?}KcINDwCbmCl8Qok;=jWRaf{IIIk}4%kth1;t-6WBO0ryAS`84-^Ca3+jhEfU< z9QISoRpSn9=3a#cHF|d(G1Du)XT2jkiqL4#T4)9$+oV{ z9KFvs)Lp_}wd^=HfdBDn78;okkM8f0Laly$V5hY?Zq;cpLx!AhCoN(``5~84REA%{ z<3z!@9`NpQs@9+0GE>}#vF%NAo~}D1()eE6N{0njMn)D;%1#3h;0-Y^(%43(d`ejE zPWGc0DoK_5EZnv$Zj!(A^|q#tAd^xJzAtKuZS&n5pjV;`rUZrqj~-e`g{bZPdC$aP zkY$VBS+-|zbV_VmG8poU_aXsfAYl6Oli&hzDfR<8v^cdGQzHK%@%v@{#IhKoZ3XSeaqG6Su;ff8SH~MipwqEdC_X3O%OLKk)wOeVjOW6}ahUp$Cu1llprGFW$en)24Ig`#F1p zW&+L3h=eEi@tWb_4#d!h2&F#Sv})8jAP;70pq`_mp`6pT_F#U5Z@w)FIJY*8{8YYv7pe(rq5*0jy? zsKNq@cI!3=N{FsGCOfwl0v;dEnJ(7%dZxu6eb2Cp1GQ~FK&pAwi^$ICAPsNcNfeSReJEp`0&FmViiRT z3zJ1naiKLY;&6GDP2t*KjDepXx0|a{6c25&y&1$Vmj;%0@pd_LY>&hSV8+0NheXF> zS*C8O%2;e~VwFlOfA=hLCx1piQCgx5$>JmQO-jb@e};e;-*er^!1G90`u*rs78nho zyZi-+?=EwNfRbt8iSG085m$8Dz0gM#E}G~FcnAuVfA%vnYMw>i*QRjtlOQd^AHkNP z#nu3UWb_hR)OfcJ^fYYRb0_Pr7z%t3*_=Ij99vQ_d%mtvcqb^N&4yqtLzSM4%o(2l$nFFp`Li;P;h*0B zNR#Gsa8kM?OPd+Y*Kl)7+{(jTIF!0VT6_mt?r!iz@2u1%gIu?D15@M91+0z{YxXBM z_7a!^ceI>uz1vmhy79+7aHRQZmiSlLCx?-BpEy{7rz&ebS!IqD1F)8&RzBvxdlnvMO$@CXheBLk~UP=*u5vpA= z;!n_-g7+$0?a!_b_$pJzYaF}*?_EIh^zaAioTWl&+eak}iw5PgNLEw5PEkzT6+hf5 zAE@$Z!h-0+!BcQ-9z=2?RF*hGgRFp9OY(oz&ZYen%L3)LZ=1{rC8(yAv(6@N>zd_G z?&P%$<$lVF`89NCWYd2gMN;FX2Q4$aW0~~4eW*#7-fbl64DO^#ur}ETm)VXYg@fbY zT@X0^D5K(?xVZ4XS8F*10ES3rX{V=@EBuX1AbqGxBWuJz@V4%xC66*LBN;cVk%WAK zWe4yDg>e9MS-<>t_0ot1>~;Y}aj{P}LATN`AyNLLljpqA<{etiNbGT>f>kp;@dKY& zj996#X0{X1NRutn!6|JRi@_X!=DP=rK46D~*&R%z5C|7q+km8fPaRS0=-b~CE^l`x z*RG_*7F8pBtz4Z4S4T}G9JLDfFcZpxL-}oEiUS@Mk;77-YU^sqa;U23t0&^ck}N0e z-zkwe_g=)Ip%|~)(N|~>kk}UuxXuoA0$p^8mn(&C63jQ~^lrJ4dhM_4#jo8vrM-|R zWwh8PqZKpfumXp97vmbjPCySPciQd7?Iko!5xV6KW$eD;Ytc!l@ZAYM`?K?x*te5< zsBoFoi;4VdSsdSp&>)>+eEYmHBY>(}NJk{6ksR0xrua;?kG$O}66rJ<|JdUSYo|L) z^uB8GB0B1Kc4n zn|OOxVh$|gigHrLnYPzg*SyT0!;RfR>Pq(hG#}&94)V3jsc-Kb z@eAe3^`lZibQ!O8fSqp&QP2^LA$nlvt1DZcrs?1Oyh$QTmSJwkOPyq#t@_?hKz%?e zdEX*Ds(nwB0`pY*abHZD@Pr`$iL_X4j3LGuS0&0@;Wg@Kd@NHKb<}HFlMVD`j3LJm!fxxy;58bU$!;hF^HxvJwQMu9)OXACZ8Pri~9-ybOwW>;UG%Dz56}R%1Cz0HKv&E;=CRM}&)+1jI^KH{h#^^jP=~zh7+HPK(+%?<%Cth0>DWzZ(kgt7DowQNkm1`(>Zu+wdmT1hc!1L#xv{?Z` zie~H@fXeM-eck#$5*ml`E4v34!g);J`@xWoMjwqDjWXV?gp{O}vVNBm5&I?`ldJ%9 zgBduLPnd&N@VL|Q;O67Q=pP)v0xWPJvSbcp{4{Jq(k^obJ0c%R^4RZQNJL-zNqvQr zkshd~Ms%Atyarnxo|qv%$8SUn{Bb2gFA}0ar{s%t9|mbKYW7Fi{|@{|*|_P4HqJK{ z$6s788}9ZeODVq8LHUD8&(kyEP0T|tCpp?FvZ`YF#Zlrg+oMgto+)%4D&b>A?jATC zcD{1_!df@av`Htb$nrj%xT`+$HK7EuJ%SIjJi9-`G1T)3T6k^@>S`DxD@T4m@a`o5 zE|$nx+pS=EIX20`?>D1hwL;q>W^VPd_g(Wsl3sV+q%Ob?h?9lgYxFH~x6du>Zr?Tm zRdu~Q&J|S41bfMoMhmcB$@}~m)EH1vADYpZYK$~zX5OVaUP0FbM6H9oo)2hSh~d-k z+0uM*2~o6LsQ3EB{16neiny(IfDCxuwdIpyjz8Q<5OS{Nwtx>S%ErUMf$APLS2mBy z;3S4&jTg$N;AcUEfJkAoD}Ize0*C>94gP6;HO+&9$c1tCPhX++>d$K;RsR<}D3&Wm z)q>htJ79a~c~P+=3|xYn&6}u$f%?oEXw_qvb!n#p?qbbttM2t*vC%3_;MmT){#^^7 zOznJJ4ke3rW07Cc_%LPj%x|AKSORfDQVbEF)_*vlZd1yW;bbCzN{khaA+#w9B-%+w z8dA2Xo4^h=AVDh~Vfgcb$rf^LiP&BVP>*J5vG^bXAZwFmN`J%ut+N)1;r+fqlK(0K zx9YP!G8?-X5RecEY5o3kp=hRXk>4W(OD+Z=-#6?(erq^;?-sZFFn=EisJ1;Z0ql%_ zZD|-37`Fk&JubhFI2y};>K8Sm(}y|-WsFSc`^I_*R#sUV1jrdFfzbz?MVl zD4hED9`1+HMGhVf>oUW!xz0W-#=&z7Wv*(N+NgcN0*5}c$EvJ8va$iqx5 zTqqjHEi-7_0`E`y>=8GdS%j-e$C|7bPg^4GH#D7)CI)->^cSX%Y|u2j%3YDOdJgxA3-mNC@Wy0ex}! zZ~%{|(lNbdA4+84+CvsTnka(uCH9_bzAfRfir4wW5R}pH2dYM5stBM&BZq=h6Sbf! ziyW2!r(#)l#X5>t>yta_Lq_ z(fDgi^NjW=SL&<0j{LEPrTJK18IXuw45#X1%q$E!UG(NAD{hch=xwMJYncmIKMwJg zCW)s5nxuKGZj__Ze4zy6v_S^jM@yLMp;$R{lLe*A(#U$SXv$^(R&0Yls7RWYzwSSWA##6!8)EUo-YSd-Aym zlWs0a`0gO=%w6Bozq2y2s+oQ(**^YbKIXAdZN6&Y_q)vd%!4i;pei=k9+`leN5e-CDQE+dunA3CKD5Tl#K;+%QM1{EkLylh9y zA50Ze-|G7GJ~EjjF$Stjw?=#j`P`Ow2ymi+lnw4+5{kwEoH25JXq4_O%4>T#o{}H8 zLiK;lrebIHe(Y?OaUg0B9jZ}%$`TY}X zMq43{d5jv!WWIo5efazBcj{v%JX`=mK>caYfKNMsfXZ6809;qnUP5RN1{8(v?J*zK z-&8PEXG5&VSdX%fF_wu>r`p0kP)!-tJy6Z+ispO;E;ga@Ng#Q+?6%j62ZP{sst zMkih30;$*fYBI@pK3D&w@!(kPuL*q=CGro=ua^?ynb2T^z$@q@bh|uZk;F)iA}>Wr z4g~S;T=Zo=4Y&>8-vh-Vgh7$l+CrRo$ur?0b!TLdzW441Bv<&c- zc^+_7Rk{A*E_*ld$M&?5k6y`-~0;Vx-$n>@S`+xFae@F%I#xpl_qC`AHqN0UxK;0&W6APIL(?Yu~Z z=KnEDY4VVYm7N$A`zt?R^-loOUHR4>0K5swF=v3d@Q***A#mAT`0_OmSKZKzLWH@# zNjf`6hVF&@Ncu**8J3+Z`;!8utUUu&N5718HzB#3Ypk)q6UiKwEFja*&c!hAAQ(9g z2`7;i1{y0U75)SGOJ;OGloSL{@BIRd84kAMXi;?_7^pr6N%&V+U!IsJa6>LO)qvzqthLsC=YUaiMTAg6-rz|kZ6m&X?s=bItw8e!L zjR$+%QXEaJ?nVdfFb|ar{Wl}l9NVlvdmk|`D%Wo5(sWxM zmR|=tfYK$DHm{`p>7c=k_tK5F+<`PiE<%Bu+T$u0F6w_-pAcMcy$r*o0_b3<=H2~s z-!Jhzb|Ckm2MtATCaBN=jc11+oW;!Uf2kG>u=0=7kkM6den94O4Y~gJcJRN->QQYaSP=L2JC@~=Xr*)nWB!FtfwAmM=}~Bs zGT@HMJtS+Py9%v%$}`RwHVe*p%CvK6!oWDm7vAwFz}+I+l*UElk%2dyU^V0uBI%!~ zLsTd+w{^}ED&|Ibh>aNlsDyvaKN;!H_Rby`C5#{O?ZGzSNK0P_!{6H++Rz1nasO?L z#fgQN3YPTi$^`{Ly}tMF9knLOh;7r&4WIMO98beyKVu>Bmzwb}6(9ob-OAXNdo(L~#@1c!<8p#s385`y#&_{3 z9|KO#n+?{cbpTdY4V+@Ghub>-SL}AEVq21Zs7y)Zy?XXHEAOmG#?FbIb9#`ps0Jwy znlgc0rTZ{yu6Pbd`jbyg)KY!0QFmk$15OXUf>5QG;?ZTansE$N%|d-k3V>(YwI@07 za|`m$O%79BL&`Oy$fHT(1N$wki_3kR(4Hvpb)@|r6!vH2L%2zFxHrXYkas>=+R782 z#ja3aaqM3s+7auawwHkpw`6Y}*_V^KZ&gLG!V$qKo*nelSXJctAS%U3h;N;pAd=wJJ zH8l2_Jwmh5kr*-#uo)9%Zn1}&bq*2ynb*^2zL+DSVmSZ_6$07567u>d7hV%_wz@R9 zanw|&xgCGL81Z2E|0F#5rE|Dg{1qZST(&Pa)unvRHguUPYHF)FPMNoD@bN}W3z?2U z;mQ#XR!RZH_~I?e3OP=hWQ#|~>O|FkLKg-!f&3BwL32wuULIV8K41PK7Yn|91c9mb zC#fD$I+r)2g3>MAAvEsgTJV$0yMKqarOyHP!+)u0)K0v?IY}Lxn%4oF` z!`=R6W#v=&g8gYuM5BZ#hGRRR+ibI$Cd!mxO zCza>bAzRIe{fUx7)*oA9TBR`wcWkC>2&6N&3q=0x3h{|&ck`r|RlkB4fd)ZYrmb~n zX}xv|5rRyy&GIkL=T0@Loi$edHMZ6E5eyQefnSB7f2k3W^x0(lpdFY<=SbUnLa^W> zXqk49kTkz9Ba!5NmjUTmeVeAl3Hx6aUrFR@#WwdYIIr(m3pCW}TKWyk0N5Gn0XJ%P z;@JjI`iM>#pyPS^Jl8${)tdF=961iGvH$+%DS);E@;MwqX5NHL$!}8_$NK^%|JbLA zo?nHFfnE<2 zK0J3L?b1*+yxOq__9@wtM#!H6Z31OxszcYW3p&_pNNt;T@HwGT&p<|rX(_gzepM2s zUFmDdocwgrYdMBMGLLg9UD0FlP5MP07!D8urdoPpehJC>&0S9VWp!SYF>Q?GVgYCH z`uY-cPKq~u&AX$dr?M=I9gyR0+ zN!V87jxWmtDFLO$UGp15&5g+JnY^I9rebV|k1Lz8yln40pzlj&Mr&`TJ}$i+103q= zMLuAEq}>G%o&!>6Z##Nj;Q;$WLl80DFwibx@$zqH>ad62JE z@te1y+B>OF>0VDudy+Yr@I+spBP*R_aS5Eta|YnofEFc1zfqcBYR?9A+K->{STyF> zr6)ujv9!EeF65tS!<0kKt`)Dv0*?}p$1X%8E$dYgyFg_3xUbIV><>0Rr0ws@)wrqp zoy*#{fJ@2&Z~swSAc@^FcOg9A0Fdp@y$JQ?b%#kush@yhnyI3v=l{LlZslTNjBmA( z&9GLAil}aXIb?fOh~y^ve=qtw*4KU0mr8GZ1pWHkLeK{eOh+@oU1$z)3wLNK!fl+IAGNPzPCcp8%1 zH#ILsHc_d;q-DZsGwl21RiV)=O#4V7=y1y)o{H=^IL~7Cd!ZHA5wIT>STbSQhXAW1 z76S0UTRTUrI^>R`f0~zCkOJC8L@txqFXBUiIsTY8yR2D~v1fXe7&OL9L<2#XBUdhGHVAdX1zfWfH}qevt^ zlY|wcV*XID#G6tEzeif^i%0mx_98*V=4CXv)%RxXXBW--d9fWWakN_iRyMe|lokc_ z3u(kT-0>YpTt`>j{KW4vNp=XzClZ!*T8z;HKvJ{{s*vuvoNH=IU&r9%_7tBbzJX6H&uWuNK0`oNQV&lXZU}pvG7JmUJ1y~$x zDzvZBb|7i=0#tmVCL)OScR&LfP$f&9ogCe)ZG7>w@MCgR`2OSR9+Y^7)~qr{`yOa> z5xOY@Ac`t|z@JzyqY006$VBbaC1g@YS!HjQ+bA!nFb7m?ry`||)5L4y3^8u2xnN-#FC&kT( zjd(Qk{Vvdr82SBh^o0E>Z_>=D{U9~0%+)mr)3r@Nea}QmTuQsBsRlQnok^Z;%v0aQO2j#=OaSGhfH@Sgy}t!rz@qIGHY4mjets$5FMAj_q1 zz9K0-1K@;zEn#B_n4YNpw8aDy_4HdB3ZTt|@esTj{Y7^R%kmh}W-XBAebxLU;YC62 zFUGvRxBv$6o$8yaI6yu!)TT>Um-mMX;`$(#?Dob#DxA^+skxD)ok7mK&f)?|$K&Zq zv#Fh-#N0!jo^Mt4o}OJ*V4oF+ezGuRMobH2?zoW)VYgF!jAxq&!NVftcz_rIiWAjs zDBs@ZCKgbVojwVeu@d4L{TMS7L`S*3yzs{T$c#a^LXw!6_^(fiB)ih5k&S|3_p}YZ zS7vyGks|jXDQO#9mku$;>w#CUZ)*mo7AfyjPN_iW;#vLY|A(h<@XIso`(7=Z%eGs! zW%J5zi_5mXtYzD_?UrrZw(*{O?)!fG3;JBgasKet5qr~94sI6lo2#hN9B|12y#nSN zpoO8`UNCz-+)S(#OcTMFYSd^vsd^U!0|qYse+OPIBfyADO&~_u=+V=+(|PSin`rGp zA^c<`c|@Udw=oa%b?Pgi%B$T1^-uvG=JiE_X~0fA#6jJma&ld0QV5(&fK%X zv3Qs!XV=Oqu2>seTHR_w3o}}TeIPJ@cjCl+Z1O7uDLn()xTb)ULNMh#E>5$r`~zwS zOo7H}fSm6fSnT~-fY(}Xon8nBWVwa*+o2)6p4gc*>XpOi-^ynk=Ov6Z(nvj;7ZW^am6eHYE8; z_q)gej{l+GNRFmYb1MMTUillF++u!|J&&Y7mm& z&Jvdws4qxao?3lAYLT3=PFpa7ntbl^<tOcU!Lt4j(JBsxARK z4n^l0;D&}BY+^X155KvHoLF7dEU{pEi7Wy-gFqK<(j0)t`Gic!D;m*bOTGwVJrErK zrwcawSkzyVJ~r0WO@{+JJN-9cLq&Eab0Saz8vAkS)YCYA< zLsxvoEXo{AWieCC$|=HW8esu>7-{DpQeA9dH{aRp0Bp)ZyVhuJVtD*#ot-CudqjuL zihT{lK=_jjk?71^y6NG-(R42M40v$M=}iFRXQu1VC`%OnSNlqGsV^97Op1fh(i|r; zAyKo$D4uvJAboLN?eZGQreQ5H4nPfDYIt}q^u_xEeII&24^t8)>KQ-ueG_|)rYss# zniMFq!4gsvz(c!Y(W;hbasY<{)pPn+hb&#_bPqf)8-SX9nr53c=Z+wNv$Vcqi%2&)MlTCms$RweVRIZKLYvC9xf`o`}9hhUqVw9fvIC zFei77jiDyS0kXn%oS^7eOLNc;J6Jjbuu^?_mwFTus}Q+kchXSS_3^_)xPD3Z;k>=%Zqw(n0y=3FqzPqt61S4glTcI{6YHcK14TOwD4e4XZ4 zZya;Gs~h2|-=UlP`|sHS!(=c8Y5yRQ8-Xf#{ldQwSm2DAG@tdxNt;gIrgpM-0ZMoW zo#L4km}k2H#EQgtJMkup0~JTcyD+E^?-B69MWj3Nc#gZy=U@&pxM+7+c&Y^f@x<*1 z?Q0#-Y)AjeB!CQoyb|~aMkh}FkrQ%ecywd9E-Wm_wfTox8FqE(b@HQMf!1LQ1{+B8 zr10?r%$v6q8X%ADvOv&siclT$ajJ@4_+;Wbs`}qHaE|2z~&mQ>D1ZruFg3h76A)~nI>!iJ08$c<|oY8DnwW) zT56GFNB%1EF0VymQ=`c_R3Oz+JPO&$iy2B2Qgy~KRo-JHDVP?pCp!B@PS#s{lZgtr zi6WnH>GdESO- z296O^3us@Y5F~Gn$QVgb{}vx}nsC6Vu0eSO_f6n6Uf{NxihcSII2z&$G1yL@w^E(* zvf-~a%K@F7?E2z~`XIwG&Y7Dg?f}<#s&1AHWQbxTBnz4d79#*$1mRi4}s7u@R0g{LI_A*b8#{ua*#sL0k0pntuXk+Jl;e@ z$c~;1$#!f6WO9xbN}zPOX(XfE$)vx{X7YHOK&R{Gr6^EUVmK8z{L)qW(P2(><9}Vi zQJ8a*Q}lzf4TeM0<-1&2E#jqP;h)^zoF_{FsAwwxT^1V{bbf){PCwcNo$p>Y^)cj8 zv{Lr56`8sCxNw3Bt|0xpgh->C0J-__iD^}7+Gf&Z3+43XQQ|V!*6(DS$!PW1=P&zp zfT%lHZeXkVrLwqhje9eo#iq!+d?)>1Zz69Z)bi~=1~8p5GYQ6R zr20h5LN|g?q;IasBr4!jJ#_Vejh-knoXLc(V_8?@l_OuT*c^@q?an3Wu{8Rx#Nv6I zjvGv?_-9E_!`I`s&SH~&Ku|H&l`|J8KU~Z1WUjo0N2P{+pknNZE_&3$W~W&B_HI}< z{hYa0_g{M&n@oL8mSt-yY)oE{#&|oUnMP26qA^k#!)GNOJx`B#)0~W*|cN7!A~sDS5wjdt9A*vI(vJF zPQOY!T^g)E0k4PaB|1aW&&;(jY{5)z{jwj!G?4%aQ99N}usBWNf(HHrxinBzob^Gu?|(qrZWu|^5)CI8>~do{({iOU><7Nmf4L$eg1%@GpTg&e z!%qtYM^79j_64nqc-Q*K()53qxj%{$78v~6IMVNt)k4{nAwV4Moh6V2x(pCeLztj6 zP{vIe8P+l{fc^qw(6Oe+bfyxa>a-mW11JR9f<@+{Jq_rkwk`A<#W3xpurGeTbOYj9 zol=Tqj2i=HH}lqWh_=z31gd(Jl-?9OzGya``r6RNw_w3gDDPNp+StYi6R(cde&1zI zd6VN`2{+7{7<$XB@%j9<`*AWaxm-(mU@yW>v45np!TvkVVWf{R#^jRBNS5G=k)?mSr9YdCW}6KoSzt zf#Sg9-QkQxJZ^A_KtlxX79gAD=7C&(1!$jam7-4$h;YOQr61~qBEmA;u{>6;*^%%t$L>ROZg)pP+;1pui>*xGf4DoYtrSvlEfV1-adPvYy?7ScVzyU_sW!hB|M0V(peh( z&Mv2P(zH?U(KAcG+uDJeKCom*^%?n_SDyc1(Sum5;|t zKT8iy*^p@SEVlE`2wS>`FwRi+8v4|#EP_sihM?RBKXS*814W?E}z@9gDoOfjm;ic zlgKzffT#zMw&>mvSI0di@mbT@4L->tgZz0OCp#Xx5-WRcaCRwYcM`Blbb+8f>W@g? zgu{MdAk41ZyazN>v=$#H%(zp?4VRz}3`)T9}4J|F<%U^o75`t$0p*w_U6ALfF@{c;Gc5t{BAw^UyxuXMN z3Os-}&#IBcP9J%iqEjLozyP|y%#OwMj|Q+0qAu6BlHP;#pO-`%>to7j220n2 z(WlQ!DIC zbTnoCIP~o8d1j+W>g5T5s85fB$edXhNFiv@4LEs|YTDkgCT1capksMqas zQQRm{wH!1e$02;<1oz4M3MFo52k?(6!%7>DfAz#i9>36LH^I--9ngP^8D3G(ma-%( z<Sk2qMYFS@-No2V1HNj4RN~Tk;*$->-1M@Pyv&Iw`dBdsR?8XRMA{x=&;_?*N)uavKl7y|@X^;JynP-y7zXQzAlgRW@( z>J|1rD#v4XgZ@{;1s)#L=&7h9I~g>m3IO8jK+e2;@+f-kKWo)`Mz&n9#)`h}`OPxA z+9pc3(5od6>+uB!B3MpnH>&hS#wACB{QCMT01BX#wd8*kd69wS2dTOlZW1cThZCA| zBqs*(0T#ocM@_GoPR#@j4jD;jZ+~w@Ee9!6Sw-b;iz=4b_@;p%_|az|8&A!0RmcL5 zZ6DYqbUKjy7=v;w-_zG&uw+q3|sa`3kAk zt#oB)-8o8}LWn-iU46XewT8xIm8f!~-*ljFvp2}&LNJ}YxtFD?Uc$T7-J%Qra$I@ zef5Lut8BBtJ)ek=(2O8NY`E4sMREq+PMTfDS{To2Pnd4NOnS^H+Z7Fl&)O_~dqRvx zH@B*OQb3H3oh$k(t|2-stqR~s=mbH z)_A#E(6R~P$w=gEcf*@cnCY-*Y_V~=sZ=PhYz@l4d%fCuMrdK=Q8^q0} z-c9BYc#@9%WSf3vgeP>a)R;CHWcsgW4fU}Gd35&o6x|0hC?AC^UB?wn2t`0H!STwm zCS9<-B+w3>%>8^Bzc8bBBNHscE(l?yoFfnFn;oasTUjfMgtfZj(K91Z?ie*98&gk* zK^-&n?p@0%rfv@ZxAWTj&^c&U8U)SK@Yj40aAtJanJ)381Cg6fxSJWUw7KIk|=Io={p z7coxIZNTI#b!JuGr3Ls}f`L6BtGE6d;f6H#8t;M4A})LyAOHaY;4+8j`(LWoNEruv z(T)qQv&hB6Akj@)DOl-BhK1pR3naP<8qx|t9a)~ND zb|)soqB4W})9FT_$Q@q4WO}oo%)SiO{x&*mxp*{39>xdaOb(nk0NK-ui-5E1tv21xYe*0Ut<+;Wm0Kv3;Mhl1;?D$27p7MuB}P=Jh_W_I(|x zIB!}8yeLt_08NkInX;xjzvvVS!$h<}XGQ42r?aCbAV|f5n-oOlYRI?c7#z1P9+4tC?t!)Rs=8A4xPy!R=Ru5DEMcN-u**lOGHg7O3>7JdNdkW+ zsY$l({iXhR9a{-LFN$nLST1f!ajL<@E)1gYy2R8nQm%zF&BVWF{z|dE zlUeY3w>F*l512J_+h;s`IgPjn?u74sQS(Z3ItBLInhz~TIY${8GE^J=+9k^9d{A>qXQdP~7Yin^fn8}q-gLBY4?`8j;c36@(V6Wz0e zCMf0=HPc3?z$*sLy_VnTUlO@PNCThy&#TD5|;$|f=1ds3eA9r)W=AW`C zxstJBRhZ0IxZ6pl{E#G&N#T?uM){Y_1SvhN%e=J`kJlj{fNEN8G1izT`7dktI-0JT z!23+l9}a_za#zg~=;DW894`ME;OPVtc!7vTsx_FQG9_yZ12SZw=q0`zh-Ly2XqJ@W zi+TTP!|4u90`#%*>3*bmTli;B+}Sj;u+bCI@lTaY6M8kiFwwOccP7@c|@ z68^DUPyFVOL;k2a7*mAq_BUSl#Bq*RlqKwlcMI5-OK$oAhUcH$^7vdl+MN5_+PT6c z6tL79#POHsTf)hZDcT;jA6L!Smxtm|Rt(25#g9tAo)6CfF=V9~oCj&m=jiVeOSx!p z9K8_(Xd_Bnak!yCLZFfRP+kY4h#*^X(1Dtn6}F_0P;P%N#%M9~hzwa>p0^of^!`;S zoyy@KBm*Dqph2JcT_x{UY|QU_w>;xuAL`qoaD{nbieZ={%F`;LY&hr?fY=-eTm=e! zLTVy1k(0*Hu>1%spn&A&6>nJJwaAPVw5riC<4KChW zzXZ~-a_lGy!RRw=+Vsou*rNz0!5|^$sDE7{^NpM-p*MWFzxRYG>Af7LloVHKG>G{* z_H`;4y}F<9cYpZrtSBIP{KMk-bSk!>cl3`(KN<-N3}b5xlU6$_+@CkSc>p7}Ub{nu z8+uVm0v;tH$oTF&G-#{Sh41y8#>#^AWkKsSi}ulJbQcFmFK>AeD87sk{J-42NWd)K zHM2EU<-1v#(GJ7H|La9I5^O9l8~tGkKf3enclsOPGtchIOTNis4*eaR=y>=7sQb>{O{c@WrAlXhU7R7arz?h=0DLy!cuKmX!bjtXT!Z} zSQ&vjNTDr+U!18ZxSK-NK6rliW6E#E)pf7Z4H>y@#*%|dM6Vu%1FKt$urR)0`b=JX z-;aN$56unVF%!{0ZSVhr9!?>aJGJN@!q8x1QQe2D@dr0tGMZG6M0Cd zu*3y%JAQj&>(2RW$HRGm;SzTQsC}7bHUOK*(xE7r1G@0sp zcpfrVP$n`Q2(^^&gO6@Wba#Zt`%TcyDm%csr9*$aqwq?D=&wap#JV9?;T_8s|H7`b zqK^9X4LtM=&!;yV#-f}Po@h#AX zzl&Sr#S=rHIq-OGnUdV-O=5m$?x~2QQbo@`FX z2!xYTg=3n0HRE0oN}-b_=S=kOi=KJmm?>dOX&~#3Fbg~c(H?l~-h}qyO(c-Uze7J_ z6oMYSZfW%DC4d(r8Ep%dF_(|yYrATv!4m0^IPrdXk(d#~rimoE-x55>mcaLXSq1yV zS{lMX@qkS31XBt;7BV?WgX$RP{$9ei(t{Oj%J{pJl(Ysxwx1f zbGinqQOU%7_JsOaG~cWO6kF_OGvAox=sSAMOEUUcfIpM|FIa!sl^Ht7|C{Ls0Tf>0xX$?4SO9qE$7YB*{==Aec>@g`f;ed)V zZZwV?!42Jq?l*jE+4o2+->Fe83LblTqi4jl&@`UT$g!6{Nom z!}5tbx+fbin~-zaY9F>U2a3_@1V{(P|I-4zAe>&`5eF~Ka!ZQVpfXI)u%NDM1C<_Oi*7sK!J6#SreibO9R%E+LqHT8cci&FD-W-#xsHj8O)f_kG>7~$5{KfN z$Vkx2zGPIgg1&nI_-(r91@4>kdyDN`l>HxSV?6VK%e~zPE>$z$qN!9x-W}eLoVlWh zxcwFyF29AfqC5oFvEJeKJ=Y&!T2R%EaK4U{=S3GBmi32wQINk6gI0pKNu(dM0{l0tTT^E0Ya*3QFuXjHe||0+rg;2UU10@ick+wIR;9Y z7=FN6b9nej2&2-G55sI9Ip+!!mQ>^`7TLPRNQa3*814`zN`+8=EqQdxjO*p!i;;-$ z9;8uF*%x?2zlr3q3+AS{-?f396(gkxh&0tyS*U?=`L@MQ)8bHPaYp$kFZIxXO#Kt! zViAAg0l3``6CmQK$Yh82~!T0z2*|GQ($Xg%D9GsKg_l>ynEefqX-iy?!- zXcw!80k8b$lS{?XpC*)1?8OJJ{l*c-d5V@n@IKc@14CKTzAb;&Cng=;N&i!JVKJ6% zdwYAly2F2!yT*#1nz}2IfdVN!nM*_6-nU{GXm)NAIk)5-S%uvU`w}O5h zf;{-VCj>32NmQ1BhM3v>qsA-vO%CWDdLtD&3QxC({BbOm{>s}_#MCHeFpW31WkM{o z-ecL32<`+o`a6Um*GG!|#+irg;o4OeAtM&6?90{}y+o-(%~0iVXs{!j=f-xu6wxux z+nmAcEwzES?BR+jY2oeXh{sym^&YUhCy5(F-_aV>-CvgG&==A!XH1$Mfv9Zi&cz#T zpABW$zS0~`$D5mfx6WiU7rYSc-J;d6RY*PG=%R73G315kZf)RwX4%f?<_@ijM74o+ zlRlEdYj{IUluhsaQy4!V>+$yaa40J?V35K43=>5EsLM{Z#?eIdJanUG$Q#iGl|xmH zEFxE8FZ~@}MIM^wy)n6=u!Js8(~E;n0k?#*Q&;0#!t09mhH;~3*>hO|d2nz>9-&9* zx^^3TQAV&%I35vv58u-*BWi5ha){l!+Q!Vt?Oxb;V&I>UjHnGGg? z)j3=~x?|sV&VTaz;va+P;RUp{d znr)0OD0CJ|w>kbS+=&dhq=qG{9zghaMChlwR&YsmKPb{$unPumTDet1us1(}w z+pWj>e9Op=s2bhU@y~&gT2&VH4L(ynd*+93Xt;d&`1GJ&uPX>hE^+^#fw%c<&~=;t z62C9&rrpr=lVP;vLc_y=U$;tGb!TyzpYFsK;yVg&h$pd|VtTGtv^`Qlc~8+=rb&t! zO+ma3UVXJxO;5TnS_#rr?5uCy3q_8sy5p1hkn6`#sn(Far&}1@aHEj6C5p48h5Y?{ zUZ7bgzvrD^oTa z58OEYyet~rV)J_iSH%?PC5L2f^{osYM$r_^FbPkpHqW*!h;pu)pGH*co(dHP;%+N3 zb&Deu&x5im^k;cPXdW`WLIY@oZdCcR``sk^)X4WC`Z!%tB6y-yn)8fJv}NxVQH%(^ zxK@5p4QcYJTnPjqVhqfFIV`T-rRq)3Z4sB-Tm@U|IM8Xy@E4QGf1si$%*!h@4yMhg z>Tb6w{#lqYooIu)UayhhQi8xsLq>-FK(%EMo@MjjU1@wu1f4&Mrfgxi)QdWwo&}@n zREs5p<1J!wLPZ?-hQD0S@Ozpl=bea@l|)b(@x0$=gF=!pF8zWFoj!y^xby7e3=2^mF;^k$je{4D2MEpDH+G1nJECav`?C};$xB2NQc-0)e2N(%DDflzZfrg%D*%G%^8~% z$zs%nf8eSK>l(%NA$A;u@Z7*ds0iMYf7|lz-U*u}$Rw2X{!w#8^#Dbor#OfZEg<6# z2dtW!alDuor6>8vvLeLHOmeL`|EV$1)&2aL;rxV2{Sn$<|U zC}8KEPPCF?6kOi&c@|iu8KTN$QU<>0LxgEOG#H4lmnBcfO&=xh(UZpMxt=I}Uu%u3 z>C$U75ka-1EWUiW{`kapu`&+&GIEd3r-s!$GY9_OO(kcGD**=IXK0=pK8K?usNZ7p zeXF#YEEYJPZo}K+TvZI4X1Rtp2Hqi?gKX@X)16UqwB!FY$3cO^iDK;D+xlI4x-@f2 z$+-LQt!m5Gjhqp6rOh50e}Kwnvq|Q``f$Zzy{SzY*>$#R<91nw^j)=t61-i_4mig*1TiQO|(r{dSWV-QF6GJx@5_KL~%Km!Ty{#NDP z^Y1vLoqz*QX}%VQ{{K&J;4cyw>Som$0A7Q#plmy`{!ta7>X;70LhKfka!J$u8_h-J zN#&cI!uK9I+mu;9@|A4WF#i&EKSt<(x7(6J6)ax=O_PV8$d=^CoCFj zO%_+y!zaeP&2YXR^awekxx9vho(i)RSFf%V;dl1EPK1RoPBgzq z%LGQjdI~&dN-1nCs4uv$BVI{>h%w%tsG%6|c#kUWoFy;$PCfb(X)U2Y69som{e%R6 zTS((46#4l)bZPk|qd&kY)#;l>q82^dRF4Ln4ZDh8@c1UJC6q$l{c=$5c`x=|-^xO# z=|INe=eftzzqN^@Hl9BcE1?y_<^UTI!dH7QE!%)GD`I?z5)EyGL`|UmE zI~33>_;$&+;2;miBy9qIeZsV!cItj*Svg;KaoH4D*uXy-4%edrVMhBm-WrI7<(;o7 ze6h4@a&C{0u;eBiH!DD2oPtFk6kploxiN z7U**mn?#1kprY-pjJ|!_!5g(oHS6X1w-plV0|D&sR%R|Dd86uGJaA|d)fOnijp>HS}M+9ovKv8=3Hw?JCiITZSWRXA2(x5_UJLSuf>!*STJGH zTQLLeZ0+y<{I)5KkH9bFHn``s%ffzZ^K)^9f&C2AUQ>Hs7p=rpyk6!m$VP)>#fu#; z0z?mLFrdCLGz7~lwl99>HQI=!V3?F17-95p&g39T?L5{d7Y>x0VCus+c79z z^ws$`12n5Jn#BM#FH3WWK|hP16>Q9R0uQCiN$oD2hLT7yaIpDQhl}pNkLpvI7X)(c zXZxs_n5^ICwKD5ZMe^}k9i0r6r?@VLk3gg$SM2~^BFI!bD?PBXkeN}S$s01VC!~9M zPq*+FDR1czL^|}$=|CqHa3Lm3Jg$ccJ{7wNokKOp*&>lpL2ZK>2+Y4CZD`j;7a?%4 zof@LWEwT_ez%H(Z0>|&_%%JEdR6xh~(ep=6a7QvO4>??9s36okl!fFxj{29I5mCyw zmy|^@=n4syC`-kCW%-?`ATEuMe=xB$$@|=VVr>7=Qhf$}Wy5%dl>@Ko>TR>l^Y9fS z*;3w5cTRPFMVf;CvD)|ERWq4YoP5+C*_ zk0iZqxWa1_7fq1&bhC)GuYL=3FfLecdQ8RV0kVn+Spk3nKt9e)x*$wE!H>`7;T_^8 zseGMAf$?wgaksFtPg!a-S{600+Sf!bBu%Vlb`oFm?zO3{YiALrLJ|?ey(JlAz}Oa< zX4Sr{%$;rPLB;Yt3ShsH$fx>2rqJ22)Gx7-I)a{cobY3YYlBwtmOx-D76ugf7XCKE z1SZG`U_uXNM7*9`Cw%jh;%#BAI+qtfkc`Rp&c} zUW_=rLV_RZO(kP6cRsM0>K~9l<4VJv-FdRb5z`1_yU+^EeM^9T7D)Mr#}XE(n6qC9 zJk&C0KLe<_4EMbOhY9chLHuXDMV|}RpT%z3AR!@vy`=D#{Ci}pl`bqSc8Q#(2l(pZ zQ7IUUd9~LGV^fLcufAY$RyU&stF2-W-jIBKZK3?^+l&+K;=RHOnCK(T7Bu^FEyV=f zuqL}Gr@~uiYGL_A%Ewh9T?eQM)((+tSE5pp50GQY1sMv=-oL?y&)>X^;yc^4a;t=a zS^i17{Q7?C6MOFw=Z|L=;~#B8TXI-`Q^rDDQJbtB_>f_H8xMSQ$X+_6e zs0KityxUSr5eNp4IJMSRN$egUOK1{0MIj$Vv0Px6KeI{=RG|4Fa0dBRn}%8S7UEaH3K zmxt9Q@IvyW;^}C`B%0_9m0yCS=tXtt<*t`#uYyD%5AO^pr3UxC>6UQ#51z$c{#w?A z1nMuCe8Ua;xFQbKj{bMNrEEagP|$w?1}>4ANx?#JUBamY|BuW_J-cH8Yl^XlLW%|= zj3#QCm^rlp^GkzRfq$st|1EJ^c`FKRu4?g&wS#c-CX(S_Ep<3k%v4%J0H`Wv9!Wy+ z&z4-dJwMo8n8LjVW>anN4DbAznPsG zmaJY1giFg$|$B`fj!1IW_uvIK*nAX|>$; zH*U{AX|V}d+yr-lgzwRcwdwE7$E(J_fGPXC$yD@o>~8?95>CnZ?8VH&=iYrw>qaQ# z+*CwW?W$>Hq*_?nx8Fnc&hxRG46kOr`mUxy1O$mZc>Szjtk*$jXBJ$Nu3YnvVY6B( z_cHC>+gonc-$_c8Hw7v@bvQYx%-3H2#6!)N6%wfpHb`0(+Pw27CEty(*s&X_xNK}l zDy*zTqz-{cL0C6MGgB;Le=}mASP7i~d030HOc{VEGg~NDjQ0BC#5NhG(mMl7Yw&js z<_L8y7{2>@Oz`bM@fbcvOJcwDlAb8Sg3c+;;vHf}p7x4gZYNGLmiE^s(AW=7(BBE! z!aOEdzAs!I|JvNaR_I_aPC=4J_v*N>jxJcNkp+6I@HkWiD{Qj;+m78xFyi;A%avre zydD)qNJ|CU@xI<{q&fy4`IrCJ#FpRy>p&NR2f@f;r)2G>eZAHEUn**%N75|t<;v(o z*eYxb#bX@>W^4e6NcVog-z4#JMO60tbo$)md9p}E8V;9=Hm-fKic;}pjfUdj+EJUr zgXZVwZkU-0e?GYJJa62=eYg~Jtfj=FV|R_|fqK5vu~L#ux=M{7IRk14;VVun4es7n zR>j?siIGIKblA^GZ#2ZzkHDsQr~?HL5AS@oFl({~Iny-m8>=2UsYN zGrO5bvU)4`hjbt48S>P#{6?z))p(r1sDrHM(#@bIrw8DO@|-nr5OHGHullN(_I@92 z-~ZxeFfRtN@CGfIn6-1~^JEaSq@Unq4n(=~Y~PShH`~N#a8M-b7~EAHH(Zc&`sc@B zs?%m2yG^^smPYli`*Fe1W4;)p@)k#Q(P7B8D-J^|lF3Ze#F0Qeles+)bSFoF+&zh~ zeFGD#y};eRo^&B-1^FkcoTJ3|$y~7YKi;3V#vmSE=-IVkKYL}LsrVU1FYW_G(P8_3 zUbVL3ul;EC^TEs-`yZm9kQBdDuN)^dGGMF%_@w_EJ`|qu9}4-BRT$Z(ZcE@*M?S~G zg)$tgb_d4frL*&wAZn1BQT#hAzQ5-T(_X75Dvo5R2julDpfue@Qpgtr#m{D?-1*41 zuBGLqG_eoLCbo;_z?LOnbGmWWU@aEyEO6x;GTc`8cSd4J8HJEQDfb@z^69ma(JJA= zGA&JOW_p-y;r#5xTHpNQc%O0Lh;H@$b=#&7y+u#}M5$j5s;f=?kZ(+GVNTr1j&|P)fO1KNvnurBtA78tzv~|Bm{Ful#{FLQ5TC5(i$+ zTqvY_VV1|eF)Mm=h53DfB(GdJPi0V{8CS01-$rmg05&e!kwMxE_g>e5;D@6O@vQ29 zag&Ic6gm@yUEdrbqO~@*(DL0Sh`AEOJUeVBq`!fZEqh%mv^pk$Rgm{{Jt8pCWBsg@ z#K?-HiysxCe#K~i^LF@3`UAvukbZD>1)uA?q|$|n$qyF+`O6EuMkFAWb#!(q$N`a+MUqlS zlM!n=i%n0@OCO*C#pN=(rNDhQ_tV|s6Uqbe034y(^5MP6WPiY6Q1T<`3Sfkw!?BT* zD_3e_SC2=>D8;}hn7^-<$R5kH`;1}2Iw+B2x8s(2_W<%CG{Co zLqEe31d(zJ$9;Qd8rzq7J*#&g?tW~BuQ5c@Q+(zs>uUc#33D&}GyK79;j~ER_A|Sg;s_nG0iki|t zDd(~Pi3%OtJ1#!VW;vi8aV9BnEA_f@! zHfXU%qdJO~=0mW@at2)1AGJ*ck@}4*{fBLmla3OwI)qv%AA#kC~+fTlo*^3bBv^+0=i8p9X1 z$Y!r4K%!>HawcL8dj^>2<$rRRESA)I5J}jj);%f zR_QjLtw+k4&KDPXZZ?0drsyv&v#`h(LqS#vY|%&REMJm1JMje2hCTr+WpsdN8+k|m zou%9}(~M`41CUJSLI>&35$U+d=hKtX*ZHG87i0$hSbN-l0%fbqQLau5nWX z1BKLNa(}2cm6!`eK?78QKe%>B`M^#6f)x_4Q{n1|j@B(cBR{WN(i0RVLB1W$=pzPO z#XnM0BF;%%6tl$2tcW{bZEFeMIzUPzC(3$RmJb-I7N}mo9a``BNq0&jDv0^6mpA$O z?SxR0wDl}EM}{K;jF{GcMo*}4><#NfYKJ^Fr{%P^wv^i`|15+UyGPacBQa~V2mbKf zi-u?t3PRyeR;rbK7Avabui1}rpT6$OHspCww-ah9@>Hf zM#;Q-Qce~$e}J306bV>RpcvJvLDMcbW=hWHi%w3iw|n~%yi`~m1}lGWGMTeuZT`KW zAQajKHmxsUWI_5|cGXkhw9&LqKKF_VmBAJDW6;F_-YA*}It8H3qP@+7wzxHNSh3=c) zgL~3`-_eZ?T!6TF4p2~UA<;crMnkD6DR44)5Mkd}?~rF<+!O2*D+LfRkO|3S2BiS) zgO0=DRF#VHpXj0O_>-z{+vpsmAvO8=)(~IUIthHa+YR{O=^%9hjIGHIJjMA~vpVws zv2_-1Rkhu>HV6Tw8>FOBkdg*zHnmA7T`+|ToZxi4XQ@Dl+PFg;JP?=hW5et3V}AUJO}DjR zcmd`cyzX0H1h54CtJ_xJHegL_59aE+qI}f7oD>^$PZw?LJ^Xbr2&ZtA$rL?f-G+yq zPx$`r?Nx${_n?mk%uFCB2C?4dW~ifs5OdafgnGq;(^bkUkcit>NkL-Mxg*hU*MpeB z6R8Ky@P5r`*g3jsPoLeS18L2EoHZKuJ^CJI{#`j=D;n(?OMkoIr1T8wN7zJeGP(AMkQM?r$)yDAt z(eNpP5)0RKnbZ$9$&Yx+@5?5BpCVSnHhh=O#(X5ybT?W*kAv6&p1uDP#v zl3Dus(Z}FG8S#AjN-ZGVx{7DlkDbu=cD>o$yRm`@U&ycHm-dGTgFr zzrL)l3HDri;vsKOs^o@3_sGuWe`pz!h060v?a2|@IvtJ1M?{txvGd>k2-c75erk|( zka%EN7ZLB|fRmxdx!YG3Ub0C@EuoSjHq$zymenX+?<~)xlzt_hFVrK|yN^*|RQ)^n z4#vZf6F>u6J7ivS8?g{;)){th^v+rd<)O409N*hRMuci4Fe&RSF+A;}f zE{E)wy{`T(Q_?BULTfU!(NYcwlW$VS*R#-;1J@_1vzxTSy+Ch~*(uW57M8+o4t9V` zNSS!a*H+pFamt_4+@9=DmhYaocSOlSebS7T%AWJkbLR+t3$t`THS8kVsoM96!gW4a zF$JGN<~N@Xw&Fv(v~6*az{0$ir<_h2tI&r^w7!qxuw2lqO@Z@-OX9Ap9Ukq|C^G|< zkRjJ!{Yy3Z6&|BB3L+vWEKYCdvW4bTu2wC5QY!TW??ctNg~H5?K;nIG$uY-(Bo-DCqO<%C zjuOgg?|a@a9mH&UyrsP4KyQ8I4k)l~Hw`^X^cz`ZY6VHTZZ(Hy^J*7D`ICIksn(WYwnd8&!&z-0|1?@mEgcHl&Vt3$cH-Y%L0!1v!8v3BUW$)lHbv4 zcGPrev0sRC9Xx8afJ&$fIlfiWV#Sdoca}`D;Fo@Ii**`jU~oBQJLXxA%R{dsB^|A< z+tW8K8I6#WA9b<-qlZ0rT!CXf8zMgIZtmcSG+Vhj&fd3g77Opho<0*)hNHquljo`Z zq-2#=K~?wT?awJ9C&p+bKO*h?k<^gwXE=7b*pc1kr&1gat6kPk$+1Wq^ATE^_Vj<$ zf*_v+VVz?>XbKs!RMNB2-{fee`&R;Uuw62!8m1JUrr^g>F2E~ia=>+E0l@w&!FlTX zqA~4)KLiOltL>^|o@IejXynxy(24`Q&NQ5vtt#BFpDn}A%R<^9 z(%VCY0$E5eajl1KY}~$eoZ@#EFI3A+Mt(S$d!8F<%;d3h999NTLmJSrvbu|$3-qZL ziJ0i<`D#lJAki2kkaJtO5cl^pFQ+!zq%jB^Zb3qc-ehLj(%`0K&m`>E%$+=enb*3%h!UKBsPvSAl@DEd8(|q2SxUWF&2q_hTDCIrNK#lg--`& zjIj&3L;a0{Qzw+DDlQ)dfNHrp0!rewjT07L^YibAp8^{Q5T4+t2j^^bp)}`^D)f3n z=8hpdR!VGCr6@m36D)gMO{yK5Wp2O1i(#aicQa7(mZsW1$$bBQS6qWbL-*#J`Ku`H(j9aBB5sKFeG!^8#pFg3s}3R`sPH&=TLztwj4f1hyb-Di}KD z(8KgyC<#B{O_(TaUj0*@W2R%nd+2)LKIjup21b%bX`;tB7xCmssFuyphgiiz^u)TK zi{qa*)#`5eX6$Th7ZZZYMoCJ6+PJOzM(*3XI^+7qMpPl?u4dqTj@HjMc0>1kUsZ#PB%m#Ab#F8dmJqg z&W~Hl=Y^Qog*;PS6AFHX#S%k}-qX%Q9!`!?ii(uy^S22PJYA;g-`dBT8g!G%nDxoK zLS?9mEF?uorW(zZ?`|_F?^|wGSCb_7sr^*+6i^ohm~~2X_Fk}*)?52dh}f3&J!0>k zhd)@vXy{}3`m9-s&bEoU5RM+qcD{w2Wq}%f1Z($pgG}-bN^D7bAe}ufbKej=96V79 zZ-c{G066a)uiWJB^aOzrbh9kH=WztIs{k0 z!1P5iXMOWVmkOEMJrLb;`m+wo3Z`?6ZQtMV5v%(Vz?o2E|_s`n@0|$JmKNtPEHJ5HIrRI`Wr>K5IM))T~ zuU+EaPL@eh!^eAat|YE}`k%>1M;nfBhV(4JS^QV1a3eA4iz&Nb+=MhRa`{a<7DfaS zJ4?Rr;@#5RHQa`0^YXc^%%&Oo59`isZT!z{LNR8GOEkXnjRY1xaoNq63FkL70Jg(8 zi<8xP<#L_TCB)Q20zem|Ie)j2=2mf$b~lAd>&8qP)ha`p>$5F@E;+<;J2O-BINsZ} zeo7`c91Y_O1RR*hyiriIwG&uQAcQ9;1)C68b~5tIY83XHm2xn%x16ga`UHnc`^|pj zJ%4v{g8@P=V3K2Gk>Gu$z?^9Wd|`UwHG{dBhm{p$oA+>fV4rbt2+{fR_|9qFrkjF= zCNE)G@`uqNe9Mby$bbnHfwLe=#7z2X*tx7u}?;%~gt5`8^p zc5W($Ppk^|L{;kTs-MLvI@SYJ|7U1SwE-^u8Wd`MjEpDvAfR^-BIi>C=BS z!1Uk8%W@*aaOA-Fr$O#+#Ns3xP;A=T2mqWLQ=|D8m{RVo3jxCUl>4ow5_u5~5}Xe} zwcn{$5|+5`xq} zP5@FywgE_fp=SPo*cB1q!3`ZY)>J@NtRf{JKYjiD`WUtAyLKEfBN(oMO6#b^Gq6K8 zk=3Nlh4EPatET(Bj4A% zvS81`evKP7cY>IEMaTXzf8La(su6ophg`NbNfTRX_!#>SysMCDk=I`QFZyG9J2{w1 z*Dc6YNyG)KsLlrSPr2q2{QVHYf$BX{SZN|YePiJTkA0QhX zZMN;V+#rd>I9&EBiKXi;x?ix&EORm?-Q(YQJ2Eoz?qK%OCo}eSs3cr^T3BfpVXMAd zS)RacB&-23@0GOS5i_p>;NFdr-2nYJ{C(`zz3H=TnskC%@SK_V9i1HYHzC+^$FU{J zU?6g*)+_sCef|cGC3RrPC2ijZe4O2GD{9Z(3ndnC+5XF(5MNi|PXXzkd!se(sPOc|SAr1@*MMY(ctX}tL^x`k ziXT%w`o`*V0dA8LqoXakNjbnoB$c{w44-i~xD48+r3+m9!Le*-3P4o7lAxcNi2teM z(!pNi`}L*N3@C!?vEuZ@O;x^yQb{)v=KL`FRsI=zy5hHW$lrDbH@2_w?hcd5K`7k@ zNF-y+NSnJ$X@HV==`3;?67VFRZEp$-6^NXP=`_t)H2vydy2)Ny6WA;CZ84EAp)K+L^vT1|HE*BRA< zg|H>%lvMw~pnd&49p^x_(bIW;u{^#wVUgvwdV71ztY|DuNx8$dgy`XRGSIN#efV}K z@XLTXs9S!#>=`OLSOTL(50fRQ?2uM0iIHBe_6kI|~R_8{hrs9e?zvdA)!Vm4QJ9`U?<7aG_Eh!AM zv8cZ`g!QUcs{{`{G<_)>BhyYF8e#IBTl>6KS1<}z6oMfCU_K7g^eu(H`LEa1-6%{U ze%TkL1|PMN19+%hR7jncu&Y$LW+M!wB=cZ6bwv@7^p9QL>sJ_~PV_Ckoz~!Z08(wb zII_Rctw8`u^kE`l>nqG?1UvNTbeeSUH(jYmavaX#e-fRS)DIqgK}Pd2$)SD2DMZ^4 zF0Pu?s+%$Z*lcZO|58k;F_GMY0LB%xGdf3|xExBH_h?90AxDOZ{QW>MU#R5`QhdQchuy*Fadb16jJ z4C|dOOPO(Ph+N7ou$LLyUhs!^uAE$5?gLfPT+;04_fw#Eq)i>{!>A%oIsXs60|Tc? zMZ^2*Y#tGU?8t zNGEO90B#rCW;nvPqKpagt)r!WYYP!^Q3fu@Y)SVuJEXJ_?G)AYw(s>oD$FV%z##DF z>q0>k=k&jShGz^uH%_oG)anNG6FEAQB*hJ;jrDaQ_Vl_duQ3q`1kn}`*(CmOPlD5S zitdg~Pzr5Fe^BrJ3=ZfYpF3`;HgC}qgrpW<)XDE^kB*Fh6|5M4bxOpIJR(;Yo0cga z=&zsKuX~0l&+yNLkn-7Axk(@;OI~&%ndht_`+HmPREFqb2KY|i`^|BacqK>lo0&Q# zFDtv?)+!QGUzr=bh!%{^X(Y7ESmlRVvr2##B zdXA#uqb|@<(4Wsgy({KJ{6l^W3#xx>EkBDiF>q7kB0N!A4Edmy-}o}V z$^ge<&EKCTzzk>~XOxZ4%cZ=ZH}6N6ebgv^pxj&|Z${J49eR`A>fZ%sw)8v2GoT-O zoN{6S<_PfNN-cyZL~_S#crURjsCDsO#*mMB&Ag%G(Td_=S**ykhCCS23jpgg&FPT4 zR)zMiu;zkUVOP#f8#pLgz(U&==GO^IjO;m^Qv?HBiPaZSnlNMo^e9c6CD)`%A2?q6 z$RQSg^$^S3T&W?$6nQr(H_B7}O`A9hZp3E#jV8AM1o@r*hX~s(_Vkt9MfN zGzk)zO`pM9ja=p+jwafw!bCS~;utbo40(s@&cO>Ri4R|F4qZX2#~7+7^=l;&b14?n zjIAwsCvzfByIP_vF0uC)XnZew;+)@T8dU;5X#TL+m35i$RW=Rtc^u=FC!YxD8Re8L zK1Qc2Jh4HU>FfpeNyg{boGyhcVZ&+BX!}fO2SWDCO zsaxBGH@Zse>+5gOEZNV(I@-S_D=CsV!=~D9JHQl))?EgaV*n4;MPN5+y98y&<49DO z?nREb4O8l1;MD?f9XuB4m^!s~-y6Hau6Ys5B`u$40^RJTF4$~idago$j%Ya*Br$Oe40#|Dq;f06e=CL4Yf zAGnt?c;H@YHC=@@Zsoq^gHV>5Oak_ByQ9Oh&T_VaRJ%y&8IgwjT#qm8MjmUiwpwkW zN^lWvEbu)OsentNV)s9!2L6bgTLhRPOge&+X?wVyr7x}t&K(#nRD7(+w{hyyo{(v5 zI_D7+R%}+gtZ{c7+nc80g2{l;{CJkY@aDb#vo5O_p`DHm}!-l>U}jDcn_?T!MN zXbaY2iAdQ)s%mK8r#-DYqHZoI)^UvN#lmlZXu8qpwfTRJCxPgIi}TZ9;z?)k zq-9Lw>+jXqmsbD-@4J{IIs;;rfwDK=oeckrD2>ZRoM^$H?;Ptq(xb z7#FVskbjQsePo)2&|?lt5%K8* zEZjfWu)>-CwhdYc-^rL7dWX#*t zI>IjnmMW61cLgh+-jd(eA9C=ghMOLq5KG4oiHJp>&mZYCMD^^`$p;liuUKP6=hAG| zOOk2eWXp>sW^$h`>&HlsI-QnK!bSf`NI35~>c0!DWFjUeunO5M3k-}6|5KD)m{=#x zz+w2b6G*7R)rtB@jN%A7qj3fm(j;G)0&Wthu~ zCo|kQga|zVE&>j~*`?Dw8dWHCopklh!xeu4216JS_3nAmXHXqZHnY)3kG(=KOdjfU z3k9Xm4_EVX|_2I{=T=T$41r_5(H-exaL=Y$74G7Jw5k208G@GlWRWb=S>YP zbhF}3EmA~e(|DfE+XM~sxlu5cv{|g2^F8zoN3yW6*m_40n-{+XcawIblg~7+6&ZjF zd>s;iz0zN*^IpF|=KiZ7IvN&ty#LSjnRiliMN${@aVaUlzZ30!tvLICYyR(7{fR1!w75R^LyaMn}P~fyFfAk#V0h zXm$iFUiR4x1@g9sW910<{20oxhRdU2eyio;b|YkvTY|7uW;+)7Ib;od{VyAKMr%94k)Vi^~inc3u%QTh8pK$zJTc);FrG;bY)+T-`=6W*$HUY8P^*z7VzO zvAD{GQdPBrW4sH(yC%8GUQ)qJvNbRU|KUG^Tj;8W(_IKme+wA(Bu0UG!6jrJlG@;q zmirYV$d~YtRmfr0dh|=Q7eCzI{^AQw!eafK2vrY%xReOUnt*Eqwul3$ej zHwj6okZ?W-*XW|{1~u2}CgcgB-Di9R#7CnQ4)E(Eqo5cwX*Vv1zYB%)zP-Yma{ZZ+2^75)+x>5W@NkHB5NCFq&H{!>6CV7!2r zTTi(@N5+dJqvWaj+P9I)le?{6fS1V_A~QlaG4&du!jt(}=tn`JL>@0_y3#G2MzO;I z(fCosniw8RL5USfXJlw4>N5m9Ii;e0@#6F}iBo?Rd8U8^BG{9Qb3Qj;ifZZP>QNQ^ z37pZb_~qtROV~M-QT@uCm##2tpw{#8WrAt_S)#KGu(I`p^sX(7AiQeSs#C`U`u}||u%jBeb&O7HdSR%~lX&R+4~pPne9KYKyQ9^mr|m9}uT;76 zC(C1KKn#BO!7sp{bvgIpm_Zl{K;yL2J#do*&_F>3lEa63ZH44Ut?_!OR7b)#Rw zY@q>pP{Hvz`f9TRG$bhWG5Vkl44=0%;%mTH0l=rrI}8n?NC5NyndIqDAR_Qu+noWj z15D;06>x60jN9#W9@2jZ>sM;8`CJiRjmjie;lCmQ_C?2QvnTtL;5$?;K>d9HEp4vG zTtjMN;*Dq^Nz@-pk^6UX2pe?&bRRK+v1o0dan^5Zm&2m}T=nw+Ip+#o8G>&*GHnF_ z06`IK*>H^+2myN#C?qd5UZU`V{`5}2gL<6lgkc!yeQ+jIuIs9H$wujuPLqZS8N>A1_?Q^_<~|# zYJ@$dHXrZ8KwimVMZ0cE4F`XUvsBo?kGtWdG^^iZks=Z8#(SDjsc({AED`Wbnejor~IcBjA zjie{(xT^*pW>;hK6AgUT0v8<%8H9i`69(QVc7RNG!tDPWup7G zxV9`xH+FIl4!dUq0qE&+d6u8Y>g}1_5(rLW+uD2G*{7#wGS36jfdmHVPh zAm!xIqR%xJyXg&r9X7E;_{$6D|F72pJ8ox~rzT9Kg+R>;S0qj;xu3Bqrzd6mM=Yh= z4hc(y#!sqt$fTk~`l*Cj;~(W+bPY%H2Z)>f6D(z}!E+r7zoGJy58`%w-v8sL5(~g& zkQ#%pqEOR+?XmD1cq<@DI;m3KzlPTR_;U{TEIsD;1Hm>#l3-|=k@$IT+i|bFarH`U zamAJ|&CHO70Y+*6hjoZa^3=6l=hvDqMR(;igF3@!gL)Cq9Q(rGa6?{ z*RNj|AQ{CCHaf~mL6Nx`b0mUUrSPHh{QXzt7s$9h38EVt8+Elc!akkQ6!Ffs7-b`F zx%bX!Ox5kpTSZ9|kx&IY7B>DB4j)oRUWzh1f(g!l)#g0rk5H^z=57DTS-#m=j-p-C zsU|1e3kc+m*NXz=;mCq`Awlve*Do+ns+qc*LCwcwCPXHc!O&D!o^w;4mbQr!?#$po zFxjo2$7G9W_>C@!zf;xPCS>y6TXH)f2A@i77Sww1NvK0>4NXO%2#T4&Wp6fmN0bze z!3U9f0eL64;6zZdZKTzyncPc59huvA2U)h+eRcIg@^Sr($p(X$lVvmU{Uw*=dq=3e zlkZ^Tz5MteO5io4_}@R{=_;Ph!4&Uo{XthqQDBzug11qMS91ZQ{uL#4ZqY*iE7&fM zlyYn~Hi)G#@)IJDs+rdnHw=RO4AUY%$&MY!uZ=PD8@Zr)jlBbTRwj_&v5bd4l_uH= z@;hj#XcT_}xy5AeV_1qq?+9{{-{_m~p@TiAsi$BKZEaBrwE#GHE6g%DC5yUEa`jbq zz=rNLI41}(V%tYQB|K2}owsQKFQ5fzUSRLs4i7QTt5(<6n%@BrWl@N!86Rlx(=j&r z`;g2~dx%~|my01^&|uJbJ6O5o(m^3DzgJQ1AGp5)M-=jZ2^aLSuIim#Kh#xgPz<~}*9NeZ53Z5#iU*PwL@5{CNkKw>6F$&B~hb3y#mnUJf! z^{WbQq22j$8xVG%w%P1Iv)OU{`v97aQ&Axgy zy~maJ8XJ?Iej*ZV+L_FUAz-+WDVf*&ZNa`C6Oj<2_V{wUR*<5rRm397(P*HL3rE53 zN~xEYPSYb*(~IkcnY3DoI9Jr#XhsHj1c0WLxu}+v^PXEiW{cV!5Wg)k=H1GYbiq!_ zPd9k(n@A#7SQ`TeI$OAZWk0j;&L1}unjGW;)c$DgL~ZSHSZNFD{=^uz<$szUp2GF| zJueg@i5RX8zM-Mw__G&?1jsMhwV)u*f*N~vNbh^gS=J&WzRYMK-%zdkpk9y_w&O_!8P%4}pYiGDK|mWfUlO zqU~-Yjwn*q$&y!Kb_FDNC4OM8AU)N#kE+lY+wtd|_26d?Qxn2fNh<=sXgwvrpqMIM z5*Rc8)Dku}vfzh)idX0ny~{S5%#gpF@jn{vw7 z_9|q4cBxdaJ*%y1&xSrOO0AVpWZHr4P`)5#Y%Qn+l$UZ(Oii~2bs8%Fcn2`5$|KTG zB3j7G7MB;!zNyQN`pWYqGH#U=zis0r-$SUirABjqhhqSZQ~>Ek!P5`wJ8!8;6{2!2 z@i7H9vgxpcDx!=JWGNJ<{f)o|^Vws z^%HnQ0rqDO1})+GFnQv3?njT8`b^%9Kh!K4N}{GW{E4pjf!lptmZhS9a4 zE3tWl{dsyureu**rGg;cMa~}-)UBE1#xC4rN@TRtLM@HSp0~G?77M6am~07^UooO8 zHTmcm7&I<6gX2+RTA-{)8&@_jnQ_dBeOkEo5`Lw_p;&NAe6U&0tMxJySA0i&$lxIy zSKSYD?(1Swa>PLbH|C3fj;I3EW0Y#E#JY<7Jq#yY-h8wFbTDD0BDFy^}l7M=V{C(yDPxYX1ke|_(rJ5@{ zMF@Q^tgOZL=XsGbZR<6cY|{avL0)Z$U(d?%J|FjE8Qp>}t2Y7&Yce}<`4wzHPqPRS zrL)@<{FXz1n?l+!wF2Sv#3cwB9$s2z$JhIQP;tE5W~@6mZz(+Z4Licsa%&YVm*pFt zG2Y;RzJeu*00YxPFfPSh29aQwpm>g3uVN>n>lT?Irk(RyhY*2Nwroem=Do*lg($;> zq)P9hRejI4g z>kL*E$~yqE^5Hg+*_2Q|f;tb)5(KaiPcl{d_F$U$Z8hB@a|rc%2$(Hb350eC4QQ1` zxN+Y&b%^=0e3slyj47FYD-K0Qx(hn994|ssda6zomi`i4g8C_TM1g59ZDt!<0{{Fd zDlpFp3$4ZfmF_2M`U;YW1=4JM|DpM@2MJiEd`DGE7R!BCTx5^CrK&#RSQD!?X&hAc zv)<02W=hw^4$PwB%MVze6D6IY(w?xIn7QTT`}e2bgez>R9E=6@85TT4OXU(IAp5K6 z!h8RUf#B!Z zs(1Br98}#iFxC%1B56>IUAE#^>dLln@~V+Z_yrBKb^n%eJMen=oMl%CN0PKWVE8eM!$uIOD{Q7Ug;xuM*AV^Z7yz}+94}5lEwJ0oK>&ooo z8>I={6y#J_VUg6QpSTU(h|J{EKPkKbXB`gf;9@|_!TZ@vbUxFJQl!-ni>K)Yh1oe3 zqbHxLt`{K9u3G4uqnR$9g^_IKv4Q@<^>&qu@{7Sb$H61a5uwXZ(Je+>z4mYX zCfqdNIp`7URE0N&h9xb z2En-fUo>DRK;ED%TAG7f@3elOds z0NIAjC^d)irh}Z;7xAeYtu?KPLQ68ok93*O?YN2)7-@gDkbkuJtm4fXU}bJ!V<-iH z0a@G|;9^9Es@#^s%jPp?<~*6l!gdEeegUII{9g-H$;*?LMJ25t2~YniV(3Vsf*fQM zE)fGuX0xRpxS_7qbl5LKnHD1&;b7krL(%N5wC`zOKmr%5%xkJyV;z&~-0(_pZE9*e za+Cl~j*U-PsvF+e#|t)v*8$GQ>^`O?JzgbAqv+R30-t@1OBNyG*9iVPYJH((Ul)MfDxHZfu)=oovMSh1;7JuQ16hSfVU#o66VwbnN)YUK$)OL zWj>|sFiHc~z>lk=c&MjrAZB5BG>O;#DMjpUBMB7mEy#HR#M_qX9A7q&PSWM4D`*9>0)y%u)(BI|OpRR_t%x!< zR(7{PL5ox1a4diX!-wESNGlM944q~}6@=V+@JW|us&&Z$6iWvo1^Gus^s_43VD@^W z8EwsI0$TDsl7RN%ZB6e=K+S^Fyr(dVfE)qj4by%YH!LJ?)6)BI#06!$uVkxiKNb;{ z2H#6r9aq@u`t8E(Y7G0?@NJrbZ`Vu{>SDe1!SepeWxIx%duOdy?KD?5^6qPNNl({K zKE7g-Mkul7tHHPu+68|sLJXNE|B*;qA`^{s0+RQ&Gwd(PUi}tLvo1VJhKCx`vqPLgRwP zbFL!!GV3vwU>|7TlRGgbJCoj{tyGcnc1-E|HvO77l2Y$v)Fr%(hS^3fC z37x+y)hG!;z@o+3XkllFnoGlXcYq3ZfBQ6Rxb|1^egAZ!b2_eV(rO$hDs~Fyn<|p` z85-tU$8AlsV54c(9{t@)rnzO-;CE~MqiQjm?HSQH`mNTyGkrx4!K851$XT1Ku2l;4h#Qp;a?N=3(7oQye zynypjcz^YS;uE#D5@h4A77Lg;)C*BqL_zpD77LLD(e7tX3bA87?~b45EBcH%+}3t8pj}_+2Ej zhfU_GII70lSOICV48{{=n6r6HAc(jDcvlDr`qn(bXgec|?kx$+C*OLY zCZNZgL641%EuB~u#~58|x&d-Izbb+xLi`%or(AGO-nVxA9S6f<-?^-kG7Dm#W4X59 zm0dJ)&^J2DlVU|jP) z-GgrYzldhUa{7U0sk>Uw)~02m@mThE_g8u*2tzI&{8V&YoZe~6DAk(VJGX^Z`=Q1S zwkH{I^lrS_G_Wf7rnKdb$U2{e4X&K{B(*)n!jcWVmO)12zJuEJGeu2m@q7iqT-eUd2 zklJMqrklWLr)D;jW=<#`775kLEWMDlrbzpOj0-11L8eNJ`-4JMeyhPbjAzNjnOJ4X z^`s}=p73ex+=QS!B2mGUZe^#xj9*i^`Tey)C!=`o+Ow!?W9(Zw>^z!OtNdvl5?|DN z$dREjTr)^j$1Gh7yFwUl=RtjVKgy9^z`<9yWd4eN$KHRK)Ndtl0LsVwCyP+=hMD2q zq^s02Zp^~v(*Q#1#|2SRrtZRDinOAWqgE9cTP&Jv8=FI>xlJj!OlpL<_nWy*b7gy% zro&%n?!DUC=};f`gM-uMdw931vAosSX{s|%UQ!K4qH80jS+q}Um4 zy$c_ZS5i`9Gv2>7nM@to5jl8X>3x3HhO6y$_Pv|IVy0s2*9lW-hq?~mW{|ztMQ+Et zR9gG@Sc@UMyBpfuUj6-5soukjEtcV^o$78W*!BW}8Tvyqsay--fL$g*3C5Q5RQdOUSnme9#Q^y&Ue>V zzBJsi3mBA4-ue|KgZ*fgp)tExyj!D?QAI`;@1wF!jf)Si^lKWrkr@rK#dUR%%VER& zHoh9JbR(!^Frxy1Vuts=4|qAOS-y%0cZEtX;CtDfHQ)AbrH2 z$7XpDj$*c9cHm=`#cPpxVP)ZGCT&_ypkm6PrR9CxfpAzUMlisdw zWLwWSgtNU|bgS3u9MOo&`~Ca3`{06izH?M2kgE z#NMxHy4%?nd#CV8?` z#BSO%W^UDZN7Gclw2Q)sJh%#^0=ko|0j*kglk>|0<-*9OxAgRc{C219vD&s<(UVlg zX7@h+Fw=9qrW#IOE**#NCb#;T+|zIr=y28i&CsCNUEuElod?&m*@Fhscckn_7S%J> z#CFn`!)P343&r}mZK5r`iwq6gC`@d*_qVsKgEyYlE)}shb}+{x;aof~&!a`?{d7(2 zSkt-hFli1ev}d5Z=3%(QIN4jb`s$%(Wx?jp3XLpkBE|>m`;Gv-Wvi0YkPlnAP1lyH z3kO9{sUS3h-o}SRHqD2raHB?j_1ifbt!6MQ*I%ZEtFMhCA0o*#XW_l;DY+}J{yO(u z8Z`Aqju@vXT~XzrcHh{G;8@U0?MqDFvd!FBJ)(ukc;YM;Ush;GSdAlC@urt#AhKt+b^WW+>r9-8i&5nMxbn2V zdEcJG3=ZS9ZT2&8dKcC2c$~~*40C%TdO0CddzC91$JokE&fmyHt4zLjH*xf;*=@3! z;Zr%ks-h4U^GZ@>1?Mz(>a1$VqBZO*_x4J#ekb(Z2_n_Gw&a2(qiwRv!UWmcVQ8?r z!zN)-L{pieG$d$6@R=2WS5h;lmo^vQtfqVY}C@|Bn`!hOb4 zW=S-cSkLS7#X{@bd$iXnVW0SO)`EVXcp%q3<2%1UX0jxu+Z(_T!t@rtuPn?&k^Ga9 zelo#9Qp-DYMCC=Au;=^Z_0DOM(walW78GZVDg zwIu!igg?Xgki-w|o?eWG>h=Q%_t=fZ+A9iY`)#Q?zsen^kK2y+?LHO1 ze7Ijv?~Ga~klNNEY8-DcJ{ZwZt?f_bfX1<9+xF6AG%FN3z1Fj`wp-+4NzL5&mjy80 z8BmoWwN6ZZm~O_gYC3?03`9OIt=8CshE%sFwVOk(TOQnAXWMf&O`<$s{Wav}d233 zXZMe0-S*A;7Zc|}&+UoXi^G)`0k7j;l;Z0B^|%unQJnyq1*Sc3)yvLq0Ui!pWu2Re zpTmV4592)C38xPy35gN8Z?$SKLK$&BUG{uk44W_=y^lXEnt<{rUwQ~9Tc&OVF=A?C zWyTIK5d{*L4_12n$=q$O3@*U+_V#`QANtU;uNKuMN^#lVx^x}sQ?t*|pACp^?d{~B zJtt`dJ4Y8X6&FWDWF>!^f#o$pXPkQBn|jMT<9-Q^)r!Bw_dG?uR2}`Ko7{F5NY#0N zc}gV}OJ${gnhG~LZ)bdZ6_5Q=oc#?G*PowM=oG*MFub+X8@-4%f zPhmoE5SOWchF^TE*7L8nrh?s`mdv&_4;1PuP@I>?$!!e%hRQ^ROT7*mH6CR0{MlCX z?f7_frr92C19FED?RmIawQ!Txm#$L9|2$(YGAG+n!Y^bYX_zMfm)SnKz4z1DqOE3K zTgxVg`}p1~Darn4&Nq*D&FQQc@85H#mvDs>QQG87oii`?2^F%+53h`xK@1 zH(UjiVVOMCBsjrR>=q}Q@pxAzb5SGu^$kB<6{1Z~P+Awcv$}t`?OiL^;W2qvj$1PE z4=t@FT6@8MN~M_E8zrh>F7o|8%0s*kSBp-qEl+b&JIFV0oUpkeUD)#OIFy3C$&-5E z5E$hU8d)%(&xtVZT&G0!sPg>Hwpxy)*prk$9`x&~rf#8KGkb^QU6rmLX~}80ZI%8# z_WqT!t2S<-$W|X$#>s_Y4eD zPW?U6x(B);+PR&Do*7kz8BCdP+Fy~@jFQi_8eRx2U;g&kuZPdBdcWN$PNW46Xv_m+ z(T0(oKfl)vRp#aH=VRP-UV9%C(DgDkU3Y+e(Q-%NiOuJl+|tsrS?yyu5J@eafLSSE zNSX=unfF6Qs{c0;#C@raf#C(y^B$Q+Q&uWhnm8st!h2?`*`w(W%bU(iOQ}kp;{GUz z+SWcz?kb~;sZ&pK`~oQkR%87hMJGRV`!Kw@MsJMqIN$Enq1|Yfa^mKx1PtlCE;orl zhJSej@^~5Q=-ghUG~9%xR-cuxup0MYT{nw+uKl&H0`(aHR}Yhjwa;X^Zt8yCsUHrIg8X=`c{Gv2Q~M@3s_QpIQd!)xB&+<8l;Y0%sv8m#gc+;e^z$(9?`nl)xO%#khU;t$jB4W@!tWsoP&2hFV{ zHN7kF4h|mN)GB0`qe5;-yfj^KP&sHU#uJ|}pvEF!Kn8lEHKL;aThN(o+uSwuOL{Xf zL(MKl2o7>%Q)sBpvua=qMwZ-Xw1djCsBfKi-lX1X{fwi@-n}k2oK-W+u%17bD`c}C z2G>ml9`(hvmry_d%@1`Kvv2!);ZiMsvMH0= zlJ)umvHos>-*M;e@Ki@cCr8>mM>_Ey?3H}5Z6Y^5epjyuTX- z1`dp`ZE|0G^r1CYJm?Om`;FAtS8%u=jVcSc8g)z(M%C@~sSt$< zXwg zq+vyo9lUhBvD8fr_zfZcvGuEk>J=^!7j;=_hYYNhKPKg)rtDUA7wNwbyK{NOb#jsf zOko-AF#of(%%)V%8EqvOPiYHXZS4gPR4(fJs4QYQrkTM%^{yi~;G$qSEnct$E{i^ba_ANho&m!evO6hr(*WG~z zx6NQJtaB#IwN7Z>4Q=YX>&QfA**OV%|DeL$?dM)`(gSQ(s9V0u!|{i8-|!Ccol`G! zn*8dZp#&I5QA3LakRD`^Dn+^hLL3W-AZq9(pb&bM z7D^zBg3_gz02!o)0D**>Le3j>_FiZIJU`F1xcHGP<$2%lsrPd~UzvX4=fyuir)I;) z`x}xdD6#^R~A;Gww5=cxji^&vXIsFq|l&&gD%? zU!}*T4_;+NNwKmrD#MsGW5vMdI+2q2Lz$T@!rmC}GRTK(0Ge;*yQI^Hx0_?JfnIIr z31wv~f}Xaz%0KL(*2>*4s`Fl$fqy|>XjzXT4uOSI(jGjUSA2HVK>=c zhWDH8dNCMjobJ;j%RkG|fh~!Xh0k$UrPo8&FS z${;Qdm(o9r8oLdYT={Ao6?pM1<9?9%&JuHFT+n{^eWC;|t-99`vG>`EO}MfV8dan1 zh6cKss>iE;n&y5{#8O}3RckFudrE(#{zGXa-i0fHc4}0be0h1)`t+Ace zyj|aj8u-}Nu%b8_>GP%j3Nqn({piQ;*k9(fpFIT*X(mTVw)<0)@aY-3J*~v6YO~zlqPZn=Hgkd7WZ{rKvUtB z4j8RRPT@n4w8xiAPH6ukGRSgm&lT)0U%q^)QGfetGvC{YH~3|-t% zt)S~@(kV^EY;0Pme$VszX%GcV(s^qpHR3onn@U-2gJF?0G;*VDX>Srm8gr`Crm`K~ z`^6+pthbfV31HSu*gq=^bd{ zI`6_ED~-ZmuHdWaeY`a9RAcQx02XXtghgho-;Bz&U)-M6`p^=cq3j3xY*5)D!UmSJ zFxt$}zIdXNgG6QkTjY51Yyzk-rD`3ql|cuwKcRYDE;k$zbqxHM)@$0w_7DZjWy?8S zrFd#aJuTbkT>=te zQfUxhwgx#_eY@htOnlG|A!=v&Hnw zsj#&_HZ5j5?SI0QbENr=Iy_D-XwCoplpDvo}E^B=dgy$wb;v{+3&ZcbybTy^A-)g^OdbG)n@4U-D+dH zUeDac+Zp&$D2#fo)D%npnsT`3y#e(o%)d7-e^NR^ia)hwq@N5K-+q@BP%ZWO!i>A( z)|4!G`A@~7zKS5~N4l}EG*(l`IsLHIHN_dRv;CQ!rrC4wR;b!pu6UE5Vt|N+?~Wc; z3$#UYs7(Mp#!+x>*PBxbi2f0uxS{!(9YNwQH)djgIrHj&+)OqmGtjawNwO+=pf-=a0HVhx(VKBsNb3N_>Q3rQ6P zC%Sd^)~Bz^UB1*%CBp{fX2N@>)crC>Xz!wC-5)FEg&?3hP(k zaJW{}+y>PZ{5`syQL;5Vr^6e3!p=c)9W0r zJmI&95HF3n?WG=-9CxEtx(_V8Iel#-g0cD{@D4ja8oIYa(O*Fup+E9A;A5WBekmTW zj0^atjjW6vrZ>N?&Lj$4NKggnn<0*fVeO7<`kHHOf=w^yY2+`-knC<)KC|#68oA}Y zOeabOEEQ-S6FU;m3zpnb!HgE6FEfR;LESC3*_s!nkn4*U`8Y5B*Fp!5cUaj>%fsS` zLgS9u<9EkvJJz)VX$>JP!n})Kp@RKe-!5)*4|%`vQ8B+)+9dG2vd9$efou|8Qj;Ak z#i537^h>f*$Cs#PhLJ4T_)sOrq^BgPTY7bJ>!a5-5dQlbbT!$_5{w@eS?=}{7iGY~ zs%+n#*vWRqm-%YilsCijPj!F?wBp=t7!A6MEtF-N?)>=llfqlYI}4YuhtlUom8;C_ z$G!QXZeL{E0xo+WxY9*PJCoYBhozRu$atK*#^pi7}@&~hCd zKoOgr!v+?8rZ7Tk)?oQ-q_dhV)5;Vy@`*A+KLd@Nv4~_5Zc^q@@R8Qj*=`lHdguJ< z+9%##1o4p{LY=QKJ#<4m+|892PAXh>J=_?Atq`U_>s>j{RDkJw>2ovQq~+zDdTqop zsN1zl&<{pG?eY-tt-eEMf4!3uYtTrAdK-gIAg_o6DOv&PJxk2F!|J8waiD8(kG1@y z!MPd82K1Rmk!}C8w1J)j86fKQ(~Js8S$shg+yTocaW00;EX+SP6uCrCnoaOfLKOUq z1@uf99ZY(mQ&O=s4QGj;k50H#{CS6GuP7wMz*hP=6N@voS1et4$#4<9}(#n3;`+v>NTtMs7goL>aU zWWF7gQGa1VFN7rlV(wm5PtUZP$7i7-?(-`#@DUSLTNjX_HTU+_itosRvYSRp0^jc+ zoI>cFo_UyPk8uQrvn@G8&3i(!8gf44qFdV$7U7_CdYlf6&{pa@2anC^j5#tf^4gQe zn)mqJjx9rfa(#jp($#9b%!SDpC98iNVJ^nYQ;ilc#;NC;oKYH1(g_J;woT?QBzu+0 zUK6TULY%#DVW)eqLYB7OviqY-7F6fqd;Wjsuf3b75)Z!E|w zbLJuU*Hg+1(Y?#OoN5nB>6tncP?M1t;z{i$Lnt0pEXT`TKp|#%QUEFyn6;78fLJgt ze-rj7T&|=70By%&E%8Ne(CzzXm0=q*y<`lFpnoSF*u_jJ%2;a+^tZYIa^dfdj`SQ5 z3)`mX%3&YZTE|r=uZuw8$U}F(cOQFSuu;sD=7J^{e=zTN79m1HRYVBOA8N;SJ3{|j z+T6&uVMOHePqE8))`^b;1VHoS!E+YH?2S!h{l@AKF?^pbUjbd0SX+Cy5k0RosUQAA z5?|AwW0cw?bl0-jf(p%)wU{VdPZ1!ax5k0S#{Qk4Wq$VTS*94S6g|8@Yhxsk;y4SR zY&>YtgiqkUiUP@w4T3f<9U|!KuV-cD&3_5aO~atpvi~i3YFUIYrixre>oAKCfmyoA zl_$OF83%tzJ*ayOI4{S>a0j+S zeNhJUjX!uFe_mR?U(~rJukrywC81edJp+pNkcxE;1w<$?NvzAsto9KT=MAo2WWcSN zlJVG7QzQ~Myfpjf2qMC!(#P?#iOFh{Y3f;m2^K57>uGFhLp@4FbuS{dd({LnBc;EiFr^8(|zB%?CEWSLD_a7EhG7 zqmjcnHGJ@*Kb{CR3YB#iJHP&6;wN@IxHcL~jN4gYzJeS`i2Vn~TaBbl$~0soOO z;gGlH4$3UxC%>cw(4}1mm9|f{?qEVbycNyKvAqN8{P>oU=g0s|p4&W}%YVtNR+-G< z*cc`&5%co4QtFRcxTaUix>^1@ZUMm8>}Y+;Rr?8QC2wtn6-$;_vW>6l`eYr{IP>OK zwzSwfQA$e5XO?h@_z@E-#HpJ`u;`C0;dhsP~V8CdJFcNTqd|b%<(2mBgF&=duS{)3XkI%{}!Q7Lwj5(v|oePbH04mVP{}fes$py?(euP3md0v>P*!=T4M$spqY#TO^ zWn>+Wt)vgj&$e_WsdA<>@ToOs!`0&TkRUs4 zYAV;*tRolXwI8^RyrnOURjJIL9|k6xPj5k7I~TMtK_mtIF$)LXQniN!pTr$~_i+b$ z;Q1&l!}msAo?TaLwHX&$>VPA+tQ6NmPy4jwyH*_pZJZi;nAJIL za#KLg1(Q|PQ`vK^k1re|a8LZ5sDXhB!a&m8CnBY@ zf`1Pn>f)rif>qsO=Rds3O1HmM9#zRYJs;--tH|Sl}Pa^wVx<<<#h5JF+ zZyAV*i-XC?O!1$LXx<&$t)R+_9)80Q4oNV78DfPFC4L|a*sJB2W#*BpRTAIgL(|;S z@{-R&QBe4E8r0Qwi`v>Z7Y82KxF*!CYU)* zg+$oU3bcQn^xZaYjbiQAs3&%VZOSH4+SMsUct6<3qV9S%H&Ag zOl}4%RWpEYl&ppkDb+=%6ZBhmL#Qnjpr@Fwcm9YhNIU1=p9N<1V|{tSPJ)~Y{t5bS zeK|&ev>g*Z|fI9S6L8+@Os;z&o)!fdqBHtAdD;=%LXZt1g?i&xIegGBq z{!roBhTSP9p`+3ty>YrY-IHgyNjdH&Wh94^SP9F4>eB!+^7)=U;JxYJ*UxD-sL1^D z>h$|rDX7>H=isb3ufNwPG}xP%m;j>v0+%ua!3QjBkU8Lb6q`G9(=w$$HBw%WOgU6J zNJq0dVndGy1UyXfXuz2>XFm6<8Q^4^|6X9=?jVS+b+CX$6}oZL<`Hyy#w9q)?9agx z$`^oz|7!SI+9}xP?8#l-xg{1`RcrvRs>qZ$A>gu}GBUV=9L3)ObtF3VqWs$~L>T(A z<<@i`ely=jaf=*$eP|?b<0(s#Z3BnH_d!u0JCb&lA(LPIO_NLI2BoAD$XnNUno^)EB*Eri154xpho-l^s6XiO&KTCIv|8(j@6LDW-Y-@3%4E!u) zcj^T%SW1QnOuTB8u2~EO?mxcXuug}{D3Z5&&owc@%uWh(v@`ZXKGu_|8Kkq~YPogu zgL8` zs>|l`{*B&heVmNB%>UYhozHkDDDEL|Y+l68fGl&Bqo8MhjYR-Wu52lb$q$ZrLL3X= zqegE5mwa|-*W=(-+PjLDZv+EXn_RC36oz`kDm^h#Jb`cDkd>vFh3;L{VBv<85a2M) zHU8I<Y!IEF|b4?Qvc%9SdbpbPR%{~Qah2Z|}1QnTqjoo-8Yz1#D3zlH*tPI7? zfN88mf<36=J&A(j&mRS6bbt`}pACVVodti|DFa$%{CGUYvIfk6T_*uMdCj0V8KQtH zuM8qXISs0}y*=w?;7HruAjFwbR0JEv1&+{p`vp8^WAK-s`3;;uLH+5inGqFGFdzkt z2X{Y;3;=R?r3muM3?R3iOT8L^7>(T=2uFH$!vuEK&xP(MVfsaki%p5BY5IQYbubx~ zm6eSY6C4tQ~ zUo5bHamXrxt3%mx`r#;+UfQON07fm0VG$fyEF5vWF(|?L-@XiOczb3WQ{8$F%%}ca zY}Sz(h&PLDZ}XBCVj}Pc892{~XR~L|Pqpx?m(2>oc(tF#rZ-1&oKhk2?J!{NQq8Vd z9qV!>bSiczATWoaC-@C;N_N1lT>OMYTCKZj3zc114y-<~Q7{E_3+~F9_SDIqsx+iV zeOm#!POnij#Zg^stfeL-It~k5xnV&aaZu5tl@fZtur;|+97H`3OIWaArh2?z;C7JL zEu3~811Jsol8H=gcyp#Ni11AlX84r!iaxk(jF-0TlsDVlN!2gC-?`sdpot+Dwu5~B zLZEMiTWj~P?S-u{T5h)?Vq!6|rMPWPO8(pS&2!Tw8~V;nij2?R;Tn+(ik!P*HN%o( zxhL)i_-Y$kW1+193Y0)ZP>kb z+7u~P++Kq>CI&iX0O#FjKqZZ3#$A~JQ%c>w&Ajhs9SHI6GR{!e&9e&7bT`TA2QwFD zK>l1$+u9=_V5#~aT1$hY{`YUSWV}B+{dL(7N93o?xj3_r$A1%05Da02o{FTf6{a>vvkB!kbQ_f+7cQ;v_kEocFO_wqFSYmKzpwA5h_J*n z6Gkf+jgDfoN*4;>vIuOZB@@#(FfR}$DQ?&VLch~1F zzag)Al>oaovm*MId2-|3??x%Gq?nvTP8g;pIn5C&`-joJx$Vdxt)%n{r9KfexOt&a zU59a4LXF?;0ByqspkqYxYwz=;X|xcF@4jVStZ+u7Y~~9pT*j%GyDF+v-PR#rap^21N{A9;{ffr1{Jxp9 z+T4lqIOvxqTr|1Z;(7lxD4pg{Z7U3P-vX+h8adkf0vD@g*uIu!fefc#QiIH_J2o*NM(bLc zC-h|`r~A^IaAMa0WD)4P0Mpq$z6P8rn`9TL#{h96TB=#F%_8WS4rRk`)kWLH(>|3E zqT?+raZL1MgW#_AEfsUwl=`~)VKq}^`eux`mMSUGncWC*m_XzP%JIld{DcY(oYM#b zK#JsEFxwqFn82>wnJkv`9yY_#u9p)!)>cB=k*MG0it{wIAbN66Vv@b5*5j37>qdbW zzWJlfKn&^_v0zOj7MMApXY^|{8Dn8I@C@C%vYkIST0nIP%aQKDDSvtTL;jpueK8*w zt$Q7F{F*|WE|`YJNz{AC9$32O;=)cm@y)3)jpIu9d}t26Cl%z3Ittt}&Qnv}n_==> z7L09q5xm@o1Q+&61-DYQyH4-_>zboYFUmb2Y<1N$HwSjWpMBrF zB?GTxA+0cR-?hDeFI7+LYykHnq>n86-S3q{X0y^xOJ~@!$IBR%c+Jzf7pJ@j&4a3( z(hslUt4r2C%=cw)Cx<;Y7?t30Ym?>qn|!eSqgd3a5Lgb9t*jm_xYk!@Q zm&z?}UsLHtiF(o2OBK(v1}>==tj7UtFfEpFhfVxuYZ>zzRIDGu!+zsa{-cNqn}pS% zIrr#MRm8yy^SI#Yk6G4;l zCV%_3hM9RvMZxWP(mDV+8x>tnq^ZOruc-rv!q1m#Ux$p|bsvYxC+&K=(~kAY-TiyW~PDaIRS}QiJK`{%7frD~l ziaRUzl>*|8=ug*$sQY;tzr zm4pFL+ZHc4)dTh>s93kdj${(WWMExJz*zw#;%2GS*Y#4 z4wJVey0v2`Y%M2FGsB0(ONMX8(V(reOLYJ)X%++=bul<->v$3=ZbJZ^1JayU@@ zuW?qho)A+GBV;`#QdP3ea*JY1laruq6W<9&CEz0lPt&WXlCZ7|^b@u)* zAo@YW?b)^_jl!teQhDq0YW0v0v(aReaCC2=-z{*mL_B(?K^AknA`%;lHU>4bMKS0n zm^`a^_~zQe^cbI1JHH>1pas_iu3d_-PhFimBG~VPWA9*Y5KK;qHgmOgwZ31f-{Y%& zaEGVTsY1@<0YTORJ%lXUxUFTF?P5i@6i-tX=gr>|5ci(7!)3NZ}WAw zRiJ@jlY8=HX5sm_JkFs1!aIp+dre*LluPe-V51eg{_AY}2;SwmU6=f;Ke!-EWLyZS zmf77y+nsc?>H}6kK*_cDv2&Rb3sc++6)61IJwbwx_r!O@Q0)RyF zOn1R;!8L0bDmRlV*QJG28)19S$GPt$sRMjam|zOW)GO?8Xx zic?KTBb)Dd4|BT~NgIy0CRAN%PNiMlTL+w9Z`9;*(o!cZ`~58k&&3XQb%Kmk@ejeT zep_-#|L5+{f0JbG?t0H2fMa$)+w;>W*n!>89;na4cVF!JsD#*6$DR{0=wH6Q<

Create an embedding mapping the nodes of a graph.

+

Includes contributions by David Muelas Recuenco.

Parameters:

@@ -1576,9 +1577,7 @@

Source code in mercury/graph/embeddings/graphembeddings.py -
 88
- 89
- 90
+                    
 90
  91
  92
  93
@@ -1600,7 +1599,9 @@ 

109 110 111 -112

def __init__(
+112
+113
+114
def __init__(
     self,
     dimension=None,
     n_jumps=None,
@@ -1709,9 +1710,7 @@ 

Source code in mercury/graph/embeddings/graphembeddings.py -
114
-115
-116
+              
116
 117
 118
 119
@@ -1720,7 +1719,9 @@ 

122 123 124 -125

def __getitem__(self, arg):
+125
+126
+127
def __getitem__(self, arg):
     """
     Method to access rows in the embedding by ID.
 
@@ -1776,9 +1777,7 @@ 

Source code in mercury/graph/embeddings/graphembeddings.py -
203
-204
-205
+              
205
 206
 207
 208
@@ -1786,7 +1785,9 @@ 

210 211 212 -213

def embedding(self):
+213
+214
+215
def embedding(self):
     """
     Return the internal Embeddings object.
 
@@ -1879,9 +1880,7 @@ 

Source code in mercury/graph/embeddings/graphembeddings.py -
127
-128
-129
+              
129
 130
 131
 132
@@ -1953,7 +1952,9 @@ 

198 199 200 -201

def fit(self, g: Graph):
+201
+202
+203
def fit(self, g: Graph):
     """
     Train the embedding by doing random walks.
 
@@ -2161,9 +2162,7 @@ 

Source code in mercury/graph/embeddings/graphembeddings.py -
215
-216
-217
+              
217
 218
 219
 220
@@ -2188,7 +2187,9 @@ 

239 240 241 -242

def get_most_similar_nodes(
+242
+243
+244
def get_most_similar_nodes(
     self, node_id, k=5, metric="cosine", return_as_indices=False
 ):
     """
@@ -2287,9 +2288,7 @@ 

Source code in mercury/graph/embeddings/graphembeddings.py -
244
-245
-246
+              
246
 247
 248
 249
@@ -2316,7 +2315,9 @@ 

270 271 272 -273

def save(self, file_name, save_embedding=False):
+273
+274
+275
def save(self, file_name, save_embedding=False):
     """
     Saves a GraphEmbedding to a compressed binary file with or without the embedding itself. It saves the graph's node names
     and the adjacency matrix as a sparse matrix.
diff --git a/site/reference/ml/index.html b/site/reference/ml/index.html
index c1e9932..f6ba05b 100644
--- a/site/reference/ml/index.html
+++ b/site/reference/ml/index.html
@@ -774,6 +774,8 @@ 

all nodes are reassigned at the same time and conflicts (i.e., 1 -> C2 and 2 -> C1) are resolved with a simple tie-breaking rule. This version also introduces the resolution parameter gamma, as in 2.

+

Contributed by Arturo Soberon Cedillo, Jose Antonio Guzman Vazquez and +Isaac Dodanim Hernandez Garcia.


    @@ -916,10 +918,7 @@

    Source code in mercury/graph/ml/louvain.py -
    67
    -68
    -69
    -70
    +                    
    70
     71
     72
     73
    @@ -935,7 +934,10 @@ 

    83 84 85 -86

    def __init__(
    +86
    +87
    +88
    +89
    def __init__(
         self,
         min_modularity_gain=1e-03,
         max_pass=2,
    @@ -1038,10 +1040,7 @@ 

    Source code in mercury/graph/ml/louvain.py -
    102
    -103
    -104
    -105
    +              
    105
     106
     107
     108
    @@ -1157,7 +1156,10 @@ 

    218 219 220 -221

    def fit(self, g: Graph):
    +221
    +222
    +223
    +224
    def fit(self, g: Graph):
         """
         Args:
             g (Graph): A mercury graph structure.
    @@ -1940,6 +1942,7 @@ 

    Implementation of the spectral clustering algorithm which detect communities inside a graph.

    +

    Contributed by Gibran Gabriel Otazo Sanchez.

    Parameters:

    @@ -2028,16 +2031,16 @@

    Source code in mercury/graph/ml/spectral.py -
    24
    -25
    -26
    +                    
    26
     27
     28
     29
     30
     31
     32
    -33
    def __init__(
    +33
    +34
    +35
    def __init__(
         self, n_clusters=2, mode="networkx", max_iterations=10, random_state=0
     ):
         self.n_clusters = n_clusters
    @@ -2132,9 +2135,7 @@ 

    Source code in mercury/graph/ml/spectral.py -
    49
    -50
    -51
    +              
    51
     52
     53
     54
    @@ -2149,7 +2150,9 @@ 

    63 64 65 -66

    def fit(self, graph: Graph):
    +66
    +67
    +68
    def fit(self, graph: Graph):
         """
         Find the optimal clusters of a given graph. The function returns nothing, but saves the clusters and
         the modularity in the object self.
    diff --git a/site/reference/viz/index.html b/site/reference/viz/index.html
    index 8fbf8fa..58b271d 100644
    --- a/site/reference/viz/index.html
    +++ b/site/reference/viz/index.html
    @@ -681,6 +681,11 @@ 

    Moebius class for visualizing graphs using JavaScript and HTML.

    +
    + Note +

    Moebius is currently only compatible with Google Colab and Jupyter Notebooks Classic (prior to v7).

    +
    +
    Usage
    from mercury.graph.viz import Moebius
    @@ -766,15 +771,27 @@ 

    Source code in mercury/graph/viz/moebius.py -
    34
    -35
    -36
    -37
    +                    
    37
     38
     39
     40
     41
    -42
    def __init__(self, G):
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    def __init__(self, G):
     
         if HTML is None:
             raise ImportError('IPython is not installed')
    @@ -783,6 +800,18 @@ 

    self.use_spark = self.G._as_networkx is None self.front_pat = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + '/frontend' self._int_id_map = {node['id'] : i for i, node in enumerate(self.G.nodes)} + + # Define callback for JS interactions within Google Colab + if importlib.util.find_spec('google') is not None and importlib.util.find_spec('google.colab') is not None: + from google.colab import output + from IPython import get_ipython + + def colab_execute_python(code): + # Use get_ipython() to access the Moebius object defined by the user in a Colab cell + get_ipython().run_cell(f"_temp_colab_execute_python_result = {code}") + return get_ipython().user_ns["_temp_colab_execute_python_result"] + + output.register_callback("notebook.colab_execute_python", colab_execute_python)

    @@ -834,12 +863,12 @@

    Source code in mercury/graph/viz/moebius.py -
    86
    -87
    -88
    -89
    -90
    -91
    def FHT(self, fn):
    +              
    100
    +101
    +102
    +103
    +104
    +105
    def FHT(self, fn):
         """
         Syntactic sugar for display(HTML(filename = fn))
         """
    @@ -866,12 +895,12 @@ 

    Source code in mercury/graph/viz/moebius.py -
    78
    -79
    -80
    -81
    -82
    -83
    def FJS(self, fn):
    +              
    92
    +93
    +94
    +95
    +96
    +97
    def FJS(self, fn):
         """
         Syntactic sugar for display(Javascript(filename = fn))
         """
    @@ -898,12 +927,12 @@ 

    Source code in mercury/graph/viz/moebius.py -
    70
    -71
    -72
    -73
    -74
    -75
    def JS(self, s):
    +              
    84
    +85
    +86
    +87
    +88
    +89
    def JS(self, s):
         """
         Syntactic sugar for display(Javascript())
         """
    @@ -930,12 +959,12 @@ 

    Source code in mercury/graph/viz/moebius.py -
    53
    -54
    -55
    -56
    -57
    -58
    def __getitem__(self, item):
    +              
    67
    +68
    +69
    +70
    +71
    +72
    def __getitem__(self, item):
         """
         Add support for the [] operator.
         """
    @@ -962,12 +991,12 @@ 

    Source code in mercury/graph/viz/moebius.py -
    45
    -46
    -47
    -48
    -49
    -50
    def __str__(self):
    +              
    59
    +60
    +61
    +62
    +63
    +64
    def __str__(self):
         """
         Convert the object via str()
         """
    @@ -1138,21 +1167,7 @@ 

    Source code in mercury/graph/viz/moebius.py -
     94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    +              
    108
     109
     110
     111
    @@ -1193,7 +1208,21 @@ 

    146 147 148 -149

    def node_or_edge_config(self, text_is = None, color_is = None, colors = None, size_is = None, size_range = None, size_scale = 'linear'):
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    def node_or_edge_config(self, text_is = None, color_is = None, colors = None, size_is = None, size_range = None, size_scale = 'linear'):
         """
         Create a `node_config` or `edge_config` configuration dictionary for `show()` in an understandable way.
     
    @@ -1349,21 +1378,7 @@ 

    Source code in mercury/graph/viz/moebius.py -
    152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    +              
    166
     167
     168
     169
    @@ -1371,7 +1386,21 @@ 

    171 172 173 -174

    def show(self, initial_id = None, initial_depth = 1, node_config = None, edge_config = None):
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    def show(self, initial_id = None, initial_depth = 1, node_config = None, edge_config = None):
         """
         Start the interactive graph visualization in a Jupyter notebook.
     
    diff --git a/site/search/search_index.json b/site/search/search_index.json
    index 4959885..e5619b2 100644
    --- a/site/search/search_index.json
    +++ b/site/search/search_index.json
    @@ -1 +1 @@
    -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"mercury-graph","text":"

    mercury-graph is a Python library that offers graph analytics capabilities with a technology-agnostic API, enabling users to apply a curated range of performant and scalable algorithms and utilities regardless of the underlying data framework. The consistent, scikit-like interface abstracts away the complexities of internal transformations, allowing users to effortlessly switch between different graph representations to leverage optimized algorithms implemented using pure Python, numba, networkx and PySpark GraphFrames.

    Currently implemented submodules in mercury.graph include:

    • mercury.graph.core, with the main classes of the library that create and store the graphs' data and properties.

    • mercury.graph.ml, with graph theory and machine learning algorithms such as Louvain community detection, spectral clustering, Markov chains, spreading activation-based diffusion models and graph random walkers.

    • mercury.graph.embeddings, with classes that calculate graph embeddings in different ways, such as following the Node2Vec algorithm.

    • mercury.graph.viz, with capabilities for graph visualization.

    "},{"location":"#repository","title":"Repository","text":"

    The website for the GitHub repository can be found here.

    "},{"location":"reference/core/","title":"mercury.graph.core","text":""},{"location":"reference/core/#mercury.graph.core.Graph","title":"mercury.graph.core.Graph(data=None, keys=None, nodes=None)","text":"

    This is the main class in mercury.graph.

    This class seamlessly abstracts the underlying technology used to represent the graph. You can create a graph passing the following objects to the constructor:

    • A pandas DataFrame containing edges (with a keys dictionary to specify the columns and possibly a nodes DataFrame)
    • A pyspark DataFrame containing edges (with a keys dictionary to specify the columns and possibly a nodes DataFrame)
    • A networkx graph
    • A graphframes graph

    Bear in mind that the graph object is immutable. This means that you can't modify the graph object once it has been created. If you want to modify it, you have to create a new graph object.

    The graph object provides:

    • Properties to access the graph in different formats (networkx, graphframes, dgl)
    • Properties with metrics and summary information that are calculated on demand and technology independent.
    • It is inherited by other graph classes in mercury-graph providing ML algorithms such as graph embedding, visualization, etc.

    Using this class from the other classes in mercury-graph:

    The other classes in mercury-graph define models or functionalities that are based on graphs. They use a Scikit-learn-like API to interact with the graph object. This means that the graph object is passed to the class constructor and the class follow the Scikit-learn conventions. It is recommended to follow the same conventions when creating your own classes to work with mercury-graph.

    The conventions can be found here:

    • Scikit API
    • On scikit conventions

    Parameters:

    Name Type Description Default data (DataFrame, Graph or DataFrame)

    The data to create the graph from. It can be a pandas DataFrame, a networkx Graph, a pyspark DataFrame, or a Graphframe. In case it already contains a graph (networkx or graphframes), the keys and nodes arguments are ignored.

    None keys dict

    A dictionary with keys to specify the columns in the data DataFrame. The keys are:

    • 'src': The name of the column with the source node.
    • 'dst': The name of the column with the destination node.
    • 'id': The name of the column with the node id.
    • 'weight': The name of the column with the edge weight.
    • 'directed': A boolean to specify if the graph is directed. (Only for pyspark DataFrames)

    When the keys argument is not provided or the key is missing, the default values are:

    • 'src': 'src'
    • 'dst': 'dst'
    • 'id': 'id'
    • 'weight': 'weight'
    • 'directed': True
    None nodes DataFrame

    A pandas DataFrame or a pyspark DataFrame with the nodes data. (Only when data is pandas or pyspark DataFrame and with the same type as data) If not given, the nodes are inferred from the edges DataFrame.

    None Source code in mercury/graph/core/graph.py
    def __init__(self, data = None, keys = None, nodes = None):\n    self._as_networkx = None\n    self._as_graphframe = None\n    self._as_dgl = None\n    self._degree = None\n    self._in_degree = None\n    self._out_degree = None\n    self._closeness_centrality = None\n    self._betweenness_centrality = None\n    self._pagerank = None\n    self._connected_components = None\n    self._nodes_colnames = None\n    self._edges_colnames = None\n\n    self._number_of_nodes = 0\n    self._number_of_edges = 0\n    self._node_ix = 0\n    self._is_directed = False\n    self._is_weighted = False\n\n    self._init_values = {k: v for k, v in locals().items() if k in inspect.signature(self.__init__).parameters}\n\n    if type(data) == pd.core.frame.DataFrame:\n        self._from_pandas(data, nodes, keys)\n        return\n\n    if isinstance(data, nx.Graph):      # This is the most general case, including: ...Graph, ...DiGraph and ...MultiGraph\n        self._from_networkx(data)\n        return\n\n    spark_int = SparkInterface()\n\n    if pyspark_installed and graphframes_installed:\n        if type(data) == spark_int.type_spark_dataframe:\n            self._from_dataframe(data, nodes, keys)\n            return\n\n        if type(data) == spark_int.type_graphframe:\n            self._from_graphframes(data)\n            return\n\n    raise ValueError('Invalid input data. (Expected: pandas DataFrame, a networkx Graph, a pyspark DataFrame, a graphframes Graph.)')\n
    "},{"location":"reference/core/#mercury.graph.core.Graph.betweenness_centrality","title":"betweenness_centrality property","text":"

    Returns the betweenness centrality of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.closeness_centrality","title":"closeness_centrality property","text":"

    Returns the closeness centrality of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.connected_components","title":"connected_components property","text":"

    Returns the connected components of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.degree","title":"degree property","text":"

    Returns the degree of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.dgl","title":"dgl property","text":"

    Returns the graph as a DGL graph.

    If the graph has not been converted to a DGL graph yet, it will be converted and cached for future use.

    Returns:

    Type Description DGLGraph

    The graph represented as a DGL graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.edges","title":"edges property","text":"

    Returns an iterator over the edges in the graph.

    Returns:

    Type Description EdgeIterator

    An iterator object that allows iterating over the edges in the graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.edges_colnames","title":"edges_colnames property","text":"

    Returns the column names of the edges DataFrame.

    "},{"location":"reference/core/#mercury.graph.core.Graph.graphframe","title":"graphframe property","text":"

    Returns the graph as a GraphFrame.

    If the graph has not been converted to a GraphFrame yet, it will be converted and cached for future use.

    Returns:

    Type Description GraphFrame

    The graph represented as a GraphFrame.

    "},{"location":"reference/core/#mercury.graph.core.Graph.in_degree","title":"in_degree property","text":"

    Returns the in-degree of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.is_directed","title":"is_directed property","text":"

    Returns True if the graph is directed, False otherwise.

    Note

    Graphs created using graphframes are always directed. The way around it is to add the reverse edges to the graph. This can be done by creating the Graph with pyspark DataFrame() and defining a key 'directed' set as False in the dict argument. Otherwise, the graph will be considered directed even if these reversed edges have been created by other means this class cannot be aware of.

    "},{"location":"reference/core/#mercury.graph.core.Graph.is_weighted","title":"is_weighted property","text":"

    Returns True if the graph is weighted, False otherwise.

    A graph is considered weight if it has a column named 'weight' in the edges DataFrame or the column has a different name and that name is passed in the dict argument as the 'weight' key.

    "},{"location":"reference/core/#mercury.graph.core.Graph.networkx","title":"networkx property","text":"

    Returns the graph representation as a NetworkX graph.

    If the graph has not been converted to NetworkX format yet, it will be converted and cached for future use.

    Returns:

    Type Description Graph

    The graph representation as a NetworkX graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.nodes","title":"nodes property","text":"

    Returns an iterator over all the nodes in the graph.

    Returns:

    Type Description NodeIterator

    An iterator that yields each node in the graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.nodes_colnames","title":"nodes_colnames property","text":"

    Returns the column names of the nodes DataFrame.

    "},{"location":"reference/core/#mercury.graph.core.Graph.number_of_edges","title":"number_of_edges property","text":"

    Returns the number of edges in the graph.

    Returns:

    Type Description int

    The number of edges in the graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.number_of_nodes","title":"number_of_nodes property","text":"

    Returns the number of nodes in the graph.

    Returns:

    Type Description int

    The number of nodes in the graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.out_degree","title":"out_degree property","text":"

    Returns the out-degree of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.pagerank","title":"pagerank property","text":"

    Returns the PageRank of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.edges_as_dataframe","title":"edges_as_dataframe()","text":"

    Returns the edges as a pyspark DataFrame.

    If the graph is represented as a graphframes graph, the edges are extracted from it. Otherwise, the edges are converted from the pandas DataFrame representation. The columns used as the source and destination nodes are always named 'src' and 'dst', respectively, regardless of the original column names passed to the constructor.

    Source code in mercury/graph/core/graph.py
    def edges_as_dataframe(self):\n    \"\"\"\n    Returns the edges as a pyspark DataFrame.\n\n    If the graph is represented as a graphframes graph, the edges are extracted from it. Otherwise, the edges are converted from the\n    pandas DataFrame representation. The columns used as the source and destination nodes are always named 'src' and 'dst',\n    respectively, regardless of the original column names passed to the constructor.\n    \"\"\"\n    if self._as_graphframe is not None:\n        return self._as_graphframe.edges\n\n    return SparkInterface().spark.createDataFrame(self.edges_as_pandas())\n
    "},{"location":"reference/core/#mercury.graph.core.Graph.edges_as_pandas","title":"edges_as_pandas()","text":"

    Returns the edges as a pandas DataFrame.

    If the graph is represented as a networkx graph, the edges are extracted from it. Otherwise, the graphframes graph will be used. This dataset may differ from possible pandas DataFrame passed to the constructor in the column names and order. The columns used as the source and destination nodes are always named 'src' and 'dst', respectively.

    Source code in mercury/graph/core/graph.py
    def edges_as_pandas(self):\n    \"\"\"\n    Returns the edges as a pandas DataFrame.\n\n    If the graph is represented as a networkx graph, the edges are extracted from it. Otherwise, the graphframes graph will be used.\n    This dataset may differ from possible pandas DataFrame passed to the constructor in the column names and order. The columns used\n    as the source and destination nodes are always named 'src' and 'dst', respectively.\n    \"\"\"\n    if self._as_networkx is not None:\n        edges_data = self._as_networkx.edges(data = True)\n        edges_df   = pd.DataFrame([(src, dst, attr) for src, dst, attr in edges_data], columns = ['src', 'dst', 'attributes'])\n\n        attrs_df   = pd.json_normalize(edges_df['attributes'])\n\n        return pd.concat([edges_df.drop('attributes', axis = 1), attrs_df], axis = 1)\n\n    return self.graphframe.edges.toPandas()\n
    "},{"location":"reference/core/#mercury.graph.core.Graph.nodes_as_dataframe","title":"nodes_as_dataframe()","text":"

    Returns the nodes as a pyspark DataFrame.

    If the graph is represented as a graphframes graph, the nodes are extracted from it. Otherwise, the nodes are converted from the pandas DataFrame representation. The column used as the node id is always named 'id', regardless of the original column name passed to the constructor.

    Source code in mercury/graph/core/graph.py
    def nodes_as_dataframe(self):\n    \"\"\"\n    Returns the nodes as a pyspark DataFrame.\n\n    If the graph is represented as a graphframes graph, the nodes are extracted from it. Otherwise, the nodes are converted from the\n    pandas DataFrame representation. The column used as the node id is always named 'id', regardless of the original column name passed\n    to the constructor.\n    \"\"\"\n    if self._as_graphframe is not None:\n        return self._as_graphframe.vertices\n\n    return SparkInterface().spark.createDataFrame(self.nodes_as_pandas())\n
    "},{"location":"reference/core/#mercury.graph.core.Graph.nodes_as_pandas","title":"nodes_as_pandas()","text":"

    Returns the nodes as a pandas DataFrame.

    If the graph is represented as a networkx graph, the nodes are extracted from it. Otherwise, the graphframes graph will be used. This dataset may differ from possible pandas DataFrame passed to the constructor in the column names and order. The column used as the node id is always named 'id'.

    Source code in mercury/graph/core/graph.py
    def nodes_as_pandas(self):\n    \"\"\"\n    Returns the nodes as a pandas DataFrame.\n\n    If the graph is represented as a networkx graph, the nodes are extracted from it. Otherwise, the graphframes graph will be used.\n    This dataset may differ from possible pandas DataFrame passed to the constructor in the column names and order. The column used\n    as the node id is always named 'id'.\n    \"\"\"\n    if self._as_networkx is not None:\n        nodes_data = self._as_networkx.nodes(data = True)\n        nodes_df   = pd.DataFrame([(node, attr) for node, attr in nodes_data], columns = ['id', 'attributes'])\n\n        attrs_df = pd.json_normalize(nodes_df['attributes'])\n\n        return pd.concat([nodes_df.drop('attributes', axis = 1), attrs_df], axis = 1)\n\n    return self.graphframe.vertices.toPandas()\n
    "},{"location":"reference/core/#mercury.graph.core.SparkInterface","title":"mercury.graph.core.SparkInterface(config=None, session=None)","text":"

    A class that provides an interface for interacting with Apache Spark, graphframes and dgl.

    Attributes:

    Name Type Description _spark_session SparkSession

    The shared Spark session.

    _graphframes module

    The shared graphframes namespace.

    Methods:

    Name Description _create_spark_session

    Creates a Spark session.

    spark

    Property that returns the shared Spark session.

    pyspark

    Property that returns the pyspark namespace.

    graphframes

    Property that returns the shared graphframes namespace.

    dgl

    Property that returns the shared dgl namespace.

    read_csv

    Reads a CSV file into a DataFrame.

    read_parquet

    Reads a Parquet file into a DataFrame.

    read_json

    Reads a JSON file into a DataFrame.

    read_text

    Reads a text file into a DataFrame.

    read

    Reads a file into a DataFrame.

    sql

    Executes a SQL query.

    udf

    Registers a user-defined function (UDF).

    stop

    Stops the Spark session.

    Parameters:

    Name Type Description Default config dict

    A dictionary of Spark configuration options. If not provided, the configuration in the global variable default_spark_config will be used.

    None Source code in mercury/graph/core/spark_interface.py
    def __init__(self, config=None, session=None):\n    if SparkInterface._spark_session is None:\n        if session is not None:\n            SparkInterface._spark_session = session\n        else:\n            SparkInterface._spark_session = self._create_spark_session(config)\n            # Set checkpoint directory\n            SparkInterface._spark_session.sparkContext.setCheckpointDir(\".checkpoint\")\n\n    if SparkInterface._graphframes is None and graphframes_installed:\n        SparkInterface._graphframes = gf\n\n    if SparkInterface._dgl is None and dgl_installed:\n        SparkInterface._dgl = dgl\n
    "},{"location":"reference/embeddings/","title":"mercury.graph.embeddings","text":""},{"location":"reference/embeddings/#mercury.graph.embeddings.Embeddings","title":"mercury.graph.embeddings.Embeddings(dimension, num_elements=0, mean=0, sd=1, learn_step=3, bidirectional=False)","text":"

    Bases: BaseClass

    This class holds a matrix object that is interpreted as the embeddings for any list of objects, not only the nodes of a graph. You can see this class as the internal object holding the embedding for other classes such as class GraphEmbedding.

    Parameters:

    Name Type Description Default dimension int

    The number of columns in the embedding. See note below.

    required num_elements int

    The number of rows in the embedding. You can leave this empty on creation and then use initialize_as() to automatically match the nodes in a graph.

    0 mean float

    The (expected) mean of the initial values.

    0 sd float

    The (expected) standard deviation of the initial values.

    1 learn_step float

    The size of the learning step elements get approached or moved away. Units are hexadecimal degrees in along an ellipse.

    3 bidirectional bool

    Should the changes apply only to the elements of first column (False) or to both.

    False Note

    On dimension: Embeddings cannot be zero (that is against the whole concept). Smaller dimension embeddings can only hold few elements without introducing spurious correlations by some form of 'birthday attack' phenomenon as elements increase. Later it is very hard to get rid of that spurious 'knowledge'.

    Solution: With may elements, you have to go to high enough dimension even if the structure is simple. Pretending to fit many embeddings in low dimension without them being correlated is like pretending to plot a trillion random points in a square centimeter while keeping them 1 mm apart from each other: It's simply impossible!

    Source code in mercury/graph/embeddings/embeddings.py
    def __init__(\n    self, dimension, num_elements=0, mean=0, sd=1, learn_step=3, bidirectional=False\n):\n    self.dimension = dimension\n    self.num_elements = num_elements\n    self.mean = mean\n    self.sd = sd\n    self.learn_step = learn_step\n    self.bidirectional = bidirectional\n\n    if self.num_elements > 0:\n        self.embeddings_matrix_ = np.random.normal(\n            self.mean, self.sd, (self.num_elements, self.dimension)\n        )\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.Embeddings.as_numpy","title":"as_numpy()","text":"

    Return the embedding as a numpy matrix where each row is an embedding.

    Source code in mercury/graph/embeddings/embeddings.py
    def as_numpy(self):\n    \"\"\"\n    Return the embedding as a numpy matrix where each row is an embedding.\n    \"\"\"\n    if not hasattr(self, \"embeddings_matrix_\"):\n        return\n\n    return self.embeddings_matrix_\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.Embeddings.fit","title":"fit(converge=None, diverge=None)","text":"

    Apply a learning step to the embedding.

    Parameters:

    Name Type Description Default converge numpy matrix of two columns

    A matrix of indices to elements meaning (first column) should be approached to (second column).

    None diverge numpy matrix of two columns

    A matrix of indices to elements meaning (first column) should be moved away from (second column).

    None

    Returns:

    Type Description self

    Fitted self (or raises an error)

    Note

    Embeddings start being randomly distributed and hold no structure other than spurious correlations. Each time you apply a learning step by calling this method, you are tweaking the embedding to approach some rows and/or move others away. You can use both converge and diverge or just one of them and call this as many times you want with varying learning step. A proxy of how much an embedding can learn can be estimated by measuring how row correlations are converging towards some asymptotic values.

    Source code in mercury/graph/embeddings/embeddings.py
    def fit(self, converge=None, diverge=None):\n    \"\"\"\n    Apply a learning step to the embedding.\n\n    Args:\n        converge (numpy matrix of two columns): A matrix of indices to elements meaning (first column) should be approached to\n            (second column).\n        diverge (numpy matrix of two columns): A matrix of indices to elements meaning (first column) should be moved away from\n            (second column).\n\n    Returns:\n        (self): Fitted self (or raises an error)\n\n    Note:\n        Embeddings start being randomly distributed and hold no structure other than spurious correlations. Each time you apply a\n        learning step by calling this method, you are tweaking the embedding to approach some rows and/or move others away. You can use\n        both converge and diverge or just one of them and call this as many times you want with varying learning step. A proxy of how\n        much an embedding can learn can be estimated by measuring how row correlations are converging towards some asymptotic values.\n    \"\"\"\n\n    w = self.learn_step * np.pi / 180\n\n    cos_w = np.cos(w)\n    sin_w = np.sin(w)\n\n    if converge is not None:\n        self.embeddings_matrix_ = _elliptic_rotate(\n            self.embeddings_matrix_, converge[:, 0], converge[:, 1], cos_w, sin_w\n        )\n\n        if self.bidirectional:\n            self.embeddings_matrix_ = _elliptic_rotate(\n                self.embeddings_matrix_,\n                converge[:, 1],\n                converge[:, 0],\n                cos_w,\n                sin_w,\n            )\n\n    if diverge is not None:\n        self.embeddings_matrix_ = _elliptic_rotate(\n            self.embeddings_matrix_, diverge[:, 0], diverge[:, 1], cos_w, -sin_w\n        )\n\n        if self.bidirectional:\n            self.embeddings_matrix_ = _elliptic_rotate(\n                self.embeddings_matrix_, diverge[:, 1], diverge[:, 0], cos_w, -sin_w\n            )\n\n    return self\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.Embeddings.get_most_similar_embeddings","title":"get_most_similar_embeddings(index, k=5, metric='cosine')","text":"

    Given an index of a vector in the embedding matrix, returns the k most similar embeddings in the matrix

    Parameters:

    Name Type Description Default index int

    index of the vector in the matrix that we want to compute the similar embeddings

    required k int

    Number of most similar embeddings to return

    5 metric str

    metric to use as a similarity.

    'cosine'

    Returns:

    Type Description list

    list of k most similar nodes as indices and list of similarities of the most similar nodes

    Source code in mercury/graph/embeddings/embeddings.py
    def get_most_similar_embeddings(self, index, k=5, metric=\"cosine\"):\n    \"\"\"\n    Given an index of a vector in the embedding matrix, returns the k most similar embeddings in the matrix\n\n    Args:\n        index (int): index of the vector in the matrix that we want to compute the similar embeddings\n        k (int): Number of most similar embeddings to return\n        metric (str): metric to use as a similarity.\n\n    Returns:\n        (list): list of k most similar nodes as indices and list of similarities of the most similar nodes\n    \"\"\"\n    if metric == \"cosine\":\n        similarities = (\n            1\n            - cdist(\n                np.expand_dims(self.as_numpy()[index], axis=0),\n                self.as_numpy(),\n                \"cosine\",\n            )[0]\n        )\n\n    elif metric == \"euclidean\":\n        similarities = 1 / (\n            1\n            + cdist(\n                np.expand_dims(self.as_numpy()[index], axis=0),\n                self.as_numpy(),\n                \"euclidean\",\n            )[0]\n        )\n\n    else:\n        raise ValueError(\"Unknown Distance Metric: %s\" % metric)\n\n    ordered_indices = np.argsort(similarities)[::-1][1 : (k + 1)]\n    ordered_similarities = similarities[ordered_indices]\n\n    return ordered_indices, ordered_similarities\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding","title":"mercury.graph.embeddings.GraphEmbedding(dimension=None, n_jumps=None, max_per_epoch=None, learn_step=3, bidirectional=False, load_file=None)","text":"

    Bases: BaseClass

    Create an embedding mapping the nodes of a graph.

    Parameters:

    Name Type Description Default dimension int

    The number of columns in the embedding. See note the notes in Embeddings for details. (This parameter will be ignored when load_file is used.)

    None n_jumps int

    Number of random jumps from node to node.

    None max_per_epoch int

    Maximum number Number of consecutive random jumps without randomly jumping outside the edges. Note that normal random jumps are not going to explore outside a connected component.

    None learn_step float

    The size of the learning step elements get approached or moved away. Units are hexadecimal degrees in along an ellipse.

    3 bidirectional bool

    Should the changes apply only to the elements of first column (False) or to both.

    False load_file str

    (optional) The full path to a binary file containing a serialized GraphEmbedding object. This file must be created using GraphEmbedding.save().

    None

    GraphEmbedding class constructor

    Source code in mercury/graph/embeddings/graphembeddings.py
    def __init__(\n    self,\n    dimension=None,\n    n_jumps=None,\n    max_per_epoch=None,\n    learn_step=3,\n    bidirectional=False,\n    load_file=None,\n):\n    \"\"\"GraphEmbedding class constructor\"\"\"\n    if load_file is None and (dimension is None or n_jumps is None):\n        raise ValueError(\n            \"Parameters dimension and n_jumps are required when load_file is None\"\n        )\n\n    self.dimension = dimension\n    self.n_jumps = n_jumps\n    self.max_per_epoch = max_per_epoch\n    self.learn_step = learn_step\n    self.bidirectional = bidirectional\n    self.load_file = load_file\n\n    if self.load_file is not None:\n        self._load(self.load_file)\n        return\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.__getitem__","title":"__getitem__(arg)","text":"

    Method to access rows in the embedding by ID.

    Parameters:

    Name Type Description Default arg same as node ids in the graph

    A node ID in the graph

    required

    Returns:

    Type Description matrix

    A numpy matrix of one row

    Source code in mercury/graph/embeddings/graphembeddings.py
    def __getitem__(self, arg):\n    \"\"\"\n    Method to access rows in the embedding by ID.\n\n    Args:\n        arg (same as node ids in the graph): A node ID in the graph\n\n    Returns:\n        (numpy.matrix): A numpy matrix of one row\n\n    \"\"\"\n    return self.embeddings_.embeddings_matrix_[self.node_ids.index(arg)]\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.embedding","title":"embedding()","text":"

    Return the internal Embeddings object.

    Returns:

    Type Description Embeddings

    The embedding which is a dense matrix of float that can be used with numpy functions.

    Source code in mercury/graph/embeddings/graphembeddings.py
    def embedding(self):\n    \"\"\"\n    Return the internal Embeddings object.\n\n    Returns:\n        (mercury.graph.embeddings.Embeddings): The embedding which is a dense matrix of `float` that can be used with `numpy` functions.\n    \"\"\"\n    if not hasattr(self, \"embeddings_\"):\n        return\n\n    return self.embeddings_\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.fit","title":"fit(g)","text":"

    Train the embedding by doing random walks.

    Parameters:

    Name Type Description Default g mercury.graph Graph asset

    A mercury.graph Graph object. The embedding will be created so that each row in the embedding maps a node ID in g.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error)

    This does a number of random walks starting from a random node and selecting the edges with a probability that is proportional to the weight of the edge. If the destination node also has outgoing edges, the next step will start from it, otherwise, a new random node will be selected. The edges visited (concordant pairs) will get some reinforcement in the embedding while a randomly selected non-existent edges will get divergence instead (discordant pairs).

    Internally, this stores the node IDS of the node visited and calls Embeddings.fit() to transfer the structure to the embedding. Of course, it can be called many times on the same GraphEmbedding.

    Source code in mercury/graph/embeddings/graphembeddings.py
    def fit(self, g: Graph):\n    \"\"\"\n    Train the embedding by doing random walks.\n\n    Args:\n        g (mercury.graph Graph asset): A `mercury.graph` Graph object. The embedding will be created so that each row in the embedding maps\n            a node ID in g.\n\n    Returns:\n        (self): Fitted self (or raises an error)\n\n    This does a number of random walks starting from a random node and selecting the edges with a probability that is proportional to\n    the weight of the edge. If the destination node also has outgoing edges, the next step will start from it, otherwise, a new random\n    node will be selected. The edges visited (concordant pairs) will get some reinforcement in the embedding while a randomly selected\n    non-existent edges will get divergence instead (discordant pairs).\n\n    Internally, this stores the node IDS of the node visited and calls Embeddings.fit() to transfer the structure to the embedding.\n    Of course, it can be called many times on the same GraphEmbedding.\n\n    \"\"\"\n\n    self.node_ids = list(g.networkx.nodes)\n\n    j_matrix = nx.adjacency_matrix(g.networkx)\n\n    N = j_matrix.shape[1]\n    M = j_matrix.nnz\n\n    self.r_ini = np.zeros(N, dtype=int)\n    self.r_len = np.zeros(N, dtype=int)\n    self.r_sum = np.zeros(N, dtype=float)\n    self.r_col = np.zeros(M, dtype=int)\n    self.r_wgt = np.zeros(M, dtype=float)\n\n    i = 0\n    for r in range(N):\n        self.r_ini[r] = i\n\n        i_col = j_matrix[[r], :].nonzero()[1]\n        L = len(i_col)\n\n        self.r_len[r] = L\n\n        for k in range(L):\n            c = i_col[k]\n            w = j_matrix[r, c]\n\n            self.r_sum[r] += w\n            self.r_col[i] = c\n            self.r_wgt[i] = w\n\n            i += 1\n\n    self.TotW = sum(self.r_sum)\n\n    converge, diverge = _random_walks(\n        self.r_ini,\n        self.r_len,\n        self.r_sum,\n        self.r_col,\n        self.r_wgt,\n        self.TotW,\n        self.n_jumps,\n        self.max_per_epoch if self.max_per_epoch is not None else self.n_jumps,\n    )\n\n    self.embeddings_ = Embeddings(\n        dimension=self.dimension,\n        num_elements=len(self.node_ids),\n        learn_step=self.learn_step,\n        bidirectional=self.bidirectional,\n    )\n    self.embeddings_.fit(converge, diverge)\n\n    return self\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.get_most_similar_nodes","title":"get_most_similar_nodes(node_id, k=5, metric='cosine', return_as_indices=False)","text":"

    Returns the k most similar nodes and the similarities

    Parameters:

    Name Type Description Default node_id object

    Id of the node that we want to search the similar nodes.

    required k int

    Number of most similar nodes to return

    5 metric str

    metric to use as a similarity.

    'cosine' return_as_indices bool

    if return the nodes as indices (False), or as node ids (True)

    False

    Returns:

    Type Description list

    list of k most similar nodes and list of similarities of the most similar nodes

    DataFrame

    A list of k most similar nodes as a pd.DataFrame[word: string, similarity: double]

    Source code in mercury/graph/embeddings/graphembeddings.py
    def get_most_similar_nodes(\n    self, node_id, k=5, metric=\"cosine\", return_as_indices=False\n):\n    \"\"\"\n    Returns the k most similar nodes and the similarities\n\n    Args:\n        node_id (object): Id of the node that we want to search the similar nodes.\n        k (int): Number of most similar nodes to return\n        metric (str): metric to use as a similarity.\n        return_as_indices (bool): if return the nodes as indices (False), or as node ids (True)\n\n    Returns:\n        (list): list of k most similar nodes and list of similarities of the most similar nodes\n        (DataFrame): A list of k most similar nodes as a `pd.DataFrame[word: string, similarity: double]`\n    \"\"\"\n    node_index = self.node_ids.index(node_id)\n\n    ordered_indices, ordered_similarities = (\n        self.embeddings_.get_most_similar_embeddings(node_index, k, metric)\n    )\n\n    if not return_as_indices:\n        nodes = list(np.array(self.node_ids)[ordered_indices])\n    else:\n        nodes = list(ordered_indices)\n\n    return pd.DataFrame({\"word\": nodes, \"similarity\": ordered_similarities})\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.save","title":"save(file_name, save_embedding=False)","text":"

    Saves a GraphEmbedding to a compressed binary file with or without the embedding itself. It saves the graph's node names and the adjacency matrix as a sparse matrix.

    Parameters:

    Name Type Description Default file_name str

    The name of the file to which the GraphEmbedding will be saved.

    required save_embedding bool

    Since the embedding can be big and, if not trained, it is just a matrix of uniform random numbers it is possible avoiding saving it. In case it is not saved, loading the file will create a new random embedding. This parameter controls if the embedding is saved or not (the default value).

    False Source code in mercury/graph/embeddings/graphembeddings.py
    def save(self, file_name, save_embedding=False):\n    \"\"\"\n    Saves a GraphEmbedding to a compressed binary file with or without the embedding itself. It saves the graph's node names\n    and the adjacency matrix as a sparse matrix.\n\n    Args:\n        file_name (str): The name of the file to which the GraphEmbedding will be saved.\n        save_embedding (bool): Since the embedding can be big and, if not trained, it is just a matrix of uniform random numbers it is\n            possible avoiding saving it. In case it is not saved, loading the file will create a new random embedding. This parameter\n            controls if the embedding is saved or not (the default value).\n    \"\"\"\n    with bz2.BZ2File(file_name, \"w\") as f:\n        pickle.dump(GraphEmbedding.FILE_HEAD, f)\n        pickle.dump(save_embedding, f)\n        pickle.dump(self.embeddings_.dimension, f)\n\n        pickle.dump(self.node_ids, f)\n\n        np.save(f, self.r_ini)\n        np.save(f, self.r_len)\n        np.save(f, self.r_sum)\n        np.save(f, self.r_col)\n        np.save(f, self.r_wgt)\n\n        pickle.dump(self.TotW, f)\n\n        if save_embedding:\n            np.save(f, self.embeddings_.embeddings_matrix_)\n\n        pickle.dump(GraphEmbedding.FILE_END, f)\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec","title":"mercury.graph.embeddings.SparkNode2Vec(dimension=None, sampling_ratio=1.0, num_epochs=10, num_paths_per_node=1, batch_size=1000000, w2v_max_iter=1, w2v_num_partitions=1, w2v_step_size=0.025, w2v_min_count=5, path_cache=None, use_cached_rw=False, n_partitions_cache=10, load_file=None)","text":"

    Bases: BaseClass

    Create or reload a SparkNode2Vec embedding mapping the nodes of a graph.

    Parameters:

    Name Type Description Default dimension int

    The number of columns in the embedding. See note the notes in Embeddings for details. (This parameter will be ignored when load_file is used.)

    None sampling_ratio float

    The proportion from the total number of nodes to be used in parallel at each step (whenever possible).

    1.0 num_epochs int

    Number of epochs. This is the total number of steps the iteration goes through. At each step, sampling_ratio times the total number of nodes paths will be computed in parallel.

    10 num_paths_per_node int

    The amount of random walks to source from each node.

    1 batch_size int

    This forces caching the random walks computed so far and breaks planning each time this number of epochs is reached. The default value is a high number to avoid this entering at all. In really large jobs, you may want to set this parameter to avoid possible overflows even if it can add some extra time to the process. Note that with a high number of epochs and nodes resource requirements for the active part of your random walks can be high. This allows to \"cache a continue\" so to say.

    1000000 w2v_max_iter int

    This is the Spark Word2Vec parameter maxIter, the default value is the original default value.

    1 w2v_num_partitions int

    This is the Spark Word2Vec parameter numPartitions, the default value is the original default value.

    1 w2v_step_size float

    This is the Spark Word2Vec parameter stepSize, the default value is the original default value.

    0.025 w2v_min_count int

    This is the Spark Word2Vec parameter minCount, the default value is the original default value (5). Is the minimum number of times that a node has to appear to generate an embedding.

    5 path_cache str

    Folder where random walks will be stored, the default value is None which entails that random walks will not be stored.

    None use_cached_rw bool

    Flag that indicates if random walks should be read from disk (hence, they will not be computed again). Setting this parameter to True requires a valid path_cache.

    False n_partitions_cache int

    Number of partitions that will be used when storing the random walks, to optimize read access. The default value is 10.

    10 load_file str

    (optional) The full path to a parquet file containing a serialized SparkNode2Vec object. This file must be created using SparkNode2Vec.save().

    None Source code in mercury/graph/embeddings/spark_node2vec.py
    def __init__(\n    self,\n    dimension=None,\n    sampling_ratio=1.0,\n    num_epochs=10,\n    num_paths_per_node=1,\n    batch_size=1000000,\n    w2v_max_iter=1,\n    w2v_num_partitions=1,\n    w2v_step_size=0.025,\n    w2v_min_count=5,\n    path_cache=None,\n    use_cached_rw=False,\n    n_partitions_cache=10,\n    load_file=None,\n):\n    \"\"\"\n    Create or reload a SparkNode2Vec embedding mapping the nodes of a graph.\n\n    Args:\n        dimension (int): The number of columns in the embedding. See note the notes in `Embeddings` for details. (This parameter will be\n            ignored when `load_file` is used.)\n        sampling_ratio (float): The proportion from the total number of nodes to be used in parallel at each step (whenever possible).\n        num_epochs (int): Number of epochs. This is the total number of steps the iteration goes through. At each step, sampling_ratio\n            times the total number of nodes paths will be computed in parallel.\n        num_paths_per_node (int): The amount of random walks to source from each node.\n        batch_size (int): This forces caching the random walks computed so far and breaks planning each time this number of epochs\n            is reached. The default value is a high number to avoid this entering at all. In really large jobs, you may want to\n            set this parameter to avoid possible overflows even if it can add some extra time to the process. Note that with a high\n            number of epochs and nodes resource requirements for the active part of your random walks can be high. This allows to\n            \"cache a continue\" so to say.\n        w2v_max_iter (int): This is the Spark Word2Vec parameter maxIter, the default value is the original default value.\n        w2v_num_partitions (int): This is the Spark Word2Vec parameter numPartitions, the default value is the original default value.\n        w2v_step_size (float): This is the Spark Word2Vec parameter stepSize, the default value is the original default value.\n        w2v_min_count (int): This is the Spark Word2Vec parameter minCount, the default value is the original default value (5). Is the\n            minimum number of times that a node has to appear to generate an embedding.\n        path_cache (str): Folder where random walks will be stored, the default value is None which entails that random walks will not\n            be stored.\n        use_cached_rw (bool): Flag that indicates if random walks should be read from disk (hence, they will not be computed again).\n            Setting this parameter to True requires a valid path_cache.\n        n_partitions_cache (int): Number of partitions that will be used when storing the random walks, to optimize read access.\n            The default value is 10.\n        load_file (str): (optional) The full path to a parquet file containing a serialized SparkNode2Vec object. This file must be created\n            using SparkNode2Vec.save().\n    \"\"\"\n    self.dimension = dimension\n    self.sampling_ratio = sampling_ratio\n    self.num_epochs = num_epochs\n    self.num_paths_per_node = num_paths_per_node\n    self.batch_size = batch_size\n    self.w2v_max_iter = w2v_max_iter\n    self.w2v_num_partitions = w2v_num_partitions\n    self.w2v_step_size = w2v_step_size\n    self.w2v_min_count = w2v_min_count\n    self.path_cache = path_cache\n    self.use_cached_rw = use_cached_rw\n    self.n_partitions_cache = n_partitions_cache\n    self.load_file = load_file\n\n    if self.load_file is not None:\n        self._load(self.load_file)\n        return\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.embedding","title":"embedding()","text":"

    Return all embeddings.

    Returns:

    Type Description DataFrame

    All embeddings as a DataFrame[word: string, vector: vector].

    Source code in mercury/graph/embeddings/spark_node2vec.py
    def embedding(self):\n    \"\"\"\n    Return all embeddings.\n\n    Returns:\n        (DataFrame): All embeddings as a `DataFrame[word: string, vector: vector]`.\n    \"\"\"\n    if not hasattr(self, \"node2vec_\"):\n        return\n\n    return self.node2vec_.getVectors()\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.fit","title":"fit(G)","text":"

    Train the embedding by doing random walks.

    Random walk paths are available in attribute paths_.

    Parameters:

    Name Type Description Default G Graph

    A mercury.graph Graph object. The embedding will be created so that each row in the embedding maps a node ID in G. (This parameter will be ignored when load_file is used.)

    required

    Returns:

    Type Description self

    Fitted self (or raises an error)

    Source code in mercury/graph/embeddings/spark_node2vec.py
    def fit(self, G: Graph):\n    \"\"\"\n    Train the embedding by doing random walks.\n\n    Random walk paths are available in attribute `paths_`.\n\n    Args:\n        G (mercury.graph.core.Graph): A `mercury.graph` Graph object. The embedding will be created so that each row in the embedding maps\n            a node ID in G. (This parameter will be ignored when `load_file` is used.)\n\n    Returns:\n        (self): Fitted self (or raises an error)\n    \"\"\"\n\n    if self.path_cache is None:\n        if self.use_cached_rw:\n            logging.warning(\n                \"Wrong options (use_cached_rw and no path_cache). \"\n                \"Paths will be recomputed.\"\n            )\n        self.use_cached_rw = False\n\n    if not self.use_cached_rw:\n        paths = (\n            self._run_rw(G)\n            .withColumn(\"size\", f.size(\"random_walks\"))\n            .where(f.col(\"size\") > 1)\n            .drop(\"size\")\n        )\n\n        if self.path_cache is not None:\n            (\n                paths.repartition(self.n_partitions_cache)\n                .write.mode(\"overwrite\")\n                .parquet(\"%s/block=0\" % self.path_cache)\n            )\n\n        if self.num_paths_per_node > 1:\n            for block_id in range(1, self.num_paths_per_node):\n                new_paths = (\n                    self._run_rw(G)\n                    .withColumn(\"size\", f.size(\"random_walks\"))\n                    .where(f.col(\"size\") > 1)\n                    .drop(\"size\")\n                )\n                if self.path_cache is None:\n                    paths = paths.unionByName(new_paths)\n                else:\n                    (\n                        new_paths.repartition(self.n_partitions_cache)\n                        .write.mode(\"overwrite\")\n                        .parquet(\"%s/block=%d\" % (self.path_cache, block_id))\n                    )\n                    # With this, we clear the persisted dataframe\n                    new_paths.unpersist()\n\n    if self.path_cache is None:\n        self.paths_ = paths.persist()\n    else:\n        self.paths_ = (\n            SparkInterface()\n            .read_parquet(self.path_cache)\n            .drop(\"block\")\n            .repartition(self.n_partitions_cache)\n            .persist()\n        )\n\n    w2v = Word2Vec(\n        vectorSize=self.dimension,\n        maxIter=self.w2v_max_iter,\n        numPartitions=self.w2v_num_partitions,\n        stepSize=self.w2v_step_size,\n        inputCol=\"random_walks\",\n        outputCol=\"model\",\n        minCount=self.w2v_min_count,\n    )\n\n    self.node2vec_ = w2v.fit(self.paths_)\n\n    return self\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.get_most_similar_nodes","title":"get_most_similar_nodes(node_id, k=5)","text":"

    Returns the k most similar nodes and a similarity measure.

    Parameters:

    Name Type Description Default node_id str

    Id of the node we want to search.

    required k int

    Number of most similar nodes to return

    5

    Returns:

    Type Description DataFrame

    A list of k most similar nodes (using cosine similarity) as a DataFrame[word: string, similarity: double]

    Source code in mercury/graph/embeddings/spark_node2vec.py
    def get_most_similar_nodes(self, node_id, k=5):\n    \"\"\"\n    Returns the k most similar nodes and a similarity measure.\n\n    Args:\n        node_id (str): Id of the node we want to search.\n        k (int): Number of most similar nodes to return\n\n    Returns:\n        (DataFrame): A list of k most similar nodes (using cosine similarity) as a `DataFrame[word: string, similarity: double]`\n    \"\"\"\n    if not hasattr(self, \"node2vec_\"):\n        return\n\n    return self.node2vec_.findSynonyms(node_id, k)\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.model","title":"model()","text":"

    Returns the Spark Word2VecModel object.

    Returns:

    Type Description Word2VecModel

    The Spark Word2VecModel of the embedding to use its API directly.

    Source code in mercury/graph/embeddings/spark_node2vec.py
    def model(self):\n    \"\"\"\n    Returns the Spark Word2VecModel object.\n\n    Returns:\n        (pyspark.ml.feature.Word2VecModel): The Spark Word2VecModel of the embedding to use its API directly.\n    \"\"\"\n    if not hasattr(self, \"node2vec_\"):\n        return\n\n    return self.node2vec_\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.save","title":"save(file_name)","text":"

    Saves the internal Word2VecModel to a human-readable (JSON) model metadata as a Parquet formatted data file.

    The model may be loaded using SparkNode2Vec(load_file='path/file')

    Parameters:

    Name Type Description Default file_name str

    The name of the file to which the Word2VecModel will be saved.

    required Source code in mercury/graph/embeddings/spark_node2vec.py
    def save(self, file_name):\n    \"\"\"\n    Saves the internal Word2VecModel to a human-readable (JSON) model metadata as a Parquet formatted data file.\n\n    The model may be loaded using SparkNode2Vec(load_file='path/file')\n\n    Args:\n        file_name (str): The name of the file to which the Word2VecModel will be saved.\n    \"\"\"\n    if not hasattr(self, \"node2vec_\"):\n        return\n\n    return self.node2vec_.save(file_name)\n
    "},{"location":"reference/ml/","title":"mercury.graph.ml","text":""},{"location":"reference/ml/#mercury.graph.ml.LouvainCommunities","title":"mercury.graph.ml.LouvainCommunities(min_modularity_gain=0.001, max_pass=2, max_iter=10, resolution=1, all_partitions=True, verbose=True)","text":"

    Bases: BaseClass

    Class that defines the functions that run a PySpark implementation of the Louvain algorithm to find the partition that maximizes the modularity of an undirected graph (as in 1).

    This version of the algorithm differs from 1 in that the reassignment of nodes to new communities is calculated in parallel, not sequentially. That is, all nodes are reassigned at the same time and conflicts (i.e., 1 -> C2 and 2 -> C1) are resolved with a simple tie-breaking rule. This version also introduces the resolution parameter gamma, as in 2.

    1. Blondel V D, Guillaume J-L, Lambiotte R and Lefebvre E (2008). Fast unfolding of communities in large networks. Journal of Statistical Mechanics: Theory and Experiment, 2008. https://doi.org/10.1088/1742-5468/2008/10/p10008 \u21a9\u21a9

    2. Aynaud T, Blondel V D, Guillaume J-L and Lambiotte R (2013). Multilevel local optimization of modularity. Graph Partitioning (315--345), 2013.\u00a0\u21a9

    Parameters:

    Name Type Description Default min_modularity_gain float

    Modularity gain threshold between each pass. The algorithm stops if the gain in modularity between the current pass and the previous one is less than the given threshold.

    0.001 max_pass int

    Maximum number of passes.

    2 max_iter int

    Maximum number of iterations within each pass.

    10 resolution float

    The resolution parameter gamma. Its value must be greater or equal to zero. If resolution is less than 1, modularity favors larger communities, while values greater than 1 favor smaller communities.

    1 all_partitions bool

    If True, the function will return all the partitions found at each step of the algorithm (i.e., pass0, pass1, pass2, ..., pass20). If False, only the last (and best) partition will be returned.

    True verbose bool

    If True, print progress information during the Louvain algorithm execution. Defaults to True.

    True Source code in mercury/graph/ml/louvain.py
    def __init__(\n    self,\n    min_modularity_gain=1e-03,\n    max_pass=2,\n    max_iter=10,\n    resolution: Union[float, int] = 1,\n    all_partitions=True,\n    verbose=True,\n):\n    self.min_modularity_gain = min_modularity_gain\n    self.max_pass = max_pass\n    self.max_iter = max_iter\n    self.resolution = resolution\n    self.all_partitions = all_partitions\n    self.verbose = verbose\n\n    # Check resolution\n    if resolution < 0:\n        exceptionMsg = f\"Resolution value is {resolution} and cannot be < 0.\"\n        raise ValueError(exceptionMsg)\n
    "},{"location":"reference/ml/#mercury.graph.ml.LouvainCommunities.fit","title":"fit(g)","text":"

    Parameters:

    Name Type Description Default g Graph

    A mercury graph structure.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error).

    Source code in mercury/graph/ml/louvain.py
    def fit(self, g: Graph):\n    \"\"\"\n    Args:\n        g (Graph): A mercury graph structure.\n\n    Returns:\n        (self): Fitted self (or raises an error).\n    \"\"\"\n    edges = g.graphframe.edges\n\n    # Verify edges input\n    self._verify_data(\n        df=edges,\n        expected_cols_grouping=[\"src\", \"dst\"],\n        expected_cols_others=[\"weight\"],\n    )\n\n    # Init dataframe to be returned\n    ret = (\n        edges.selectExpr(\"src as id\")\n        .unionByName(edges.selectExpr(\"dst as id\"))\n        .distinct()\n        .withColumn(\"pass0\", F.row_number().over(Window.orderBy(\"id\")))\n    ).checkpoint()\n\n    # Convert edges to anonymized src's and dst's\n    edges = (\n        edges.selectExpr(\"src as src0\", \"dst as dst0\", \"weight\")\n        .join(other=ret.selectExpr(\"id as src0\", \"pass0 as src\"), on=\"src0\")\n        .join(other=ret.selectExpr(\"id as dst0\", \"pass0 as dst\"), on=\"dst0\")\n        .select(\"src\", \"dst\", \"weight\")\n    ).checkpoint()\n\n    # Calculate m and initialize modularity\n    m = self._calculate_m(edges)\n    modularity0 = -1.0\n\n    # Begin pass\n    canPass, _pass = True, 0\n    while canPass:\n\n        # Declare naive partition\n        p1 = (\n            edges.selectExpr(\"src as id\")\n            .unionByName(edges.selectExpr(\"dst as id\"))\n            .distinct()\n            .withColumn(\"c\", F.col(\"id\"))\n        )\n\n        # Begin iterations within pass\n        canIter, _iter = True, 0\n        # Carry reference to previously cached p2 to call unpersist()\n        prev_p2 = None\n        while canIter:\n\n            if _iter >= self.max_iter:\n                break\n\n            # Print progress\n            if self.verbose:\n                print(f\"Starting Pass {_pass} Iteration {_iter}.\")\n\n            # Create new partition and check if movements were made\n            p2 = self._reassign_all(edges, p1)\n            # Break complex lineage caused by loops first\n            p2 = p2.checkpoint()\n            p2.cache()\n\n            canIter = len(p2.where(\"cx != cj\").take(1)) > 0\n            if canIter:\n                p1 = p2.selectExpr(\"id\", \"cj as c\")\n            if prev_p2 is not None:\n                prev_p2.unpersist()\n            prev_p2 = p2\n            _iter += 1\n\n        # Calculate new modularity and update pass counter\n        modularity1 = self._calculate_modularity(edges=edges, partition=p1, m=m)\n\n        # Declare stopping criterion and update old modularity\n        canPass = (modularity1 - modularity0 > self.min_modularity_gain) and (\n            _pass < self.max_pass\n        )\n        modularity0 = modularity1\n\n        self.modularity_ = modularity0\n\n        # Update ret and compress graph\n        if canPass:\n            ret = ret.join(\n                other=p1.selectExpr(f\"id as pass{_pass}\", f\"c as pass{_pass + 1}\"),\n                on=f\"pass{_pass}\",\n            ).checkpoint()\n\n            edges = (\n                self._label_edges(edges, p1)\n                .select(\"cSrc\", \"cDst\", \"weight\")\n                .groupBy(\"cSrc\", \"cDst\")\n                .agg(F.sum(\"weight\").alias(\"weight\"))\n                .selectExpr(\"cSrc as src\", \"cDst as dst\", \"weight\")\n            ).checkpoint()\n\n        prev_p2.unpersist()\n        _pass += 1\n\n    # Return final dataframe with sorted columns\n    if self.all_partitions:\n\n        # Return sorted columns\n        cols = self._sort_passes(ret)\n        ret = ret.select(cols)\n\n    # Return final dataframe with id & community\n    else:\n        _last = self._last_pass(ret)\n        ret = ret.selectExpr(\"id as node_id\", f\"{_last} as cluster\")\n\n    self.labels_ = ret\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.SparkRandomWalker","title":"mercury.graph.ml.SparkRandomWalker(num_epochs=10, batch_size=1, n_sampling_edges=None)","text":"

    Bases: BaseClass

    Class to perform random walks from a specific source_id node within a given Graph

    Parameters:

    Name Type Description Default num_epochs int

    Number of epochs. This is the total number of steps the iteration goes through.

    10 batch_size int

    This forces caching the random walks computed so far and breaks planning each time this number of epochs is reached. The default value is a high number to avoid this entering at all. In really large jobs, you may want to set this parameter to avoid possible overflows even if it can add some extra time to the process. Note that with a high number of epochs and nodes resource requirements for the active part of your random walks can be high. This allows to \"cache a continue\" so to say.

    1 n_sampling_edges int

    by setting this parameter you can limit at each timestep the number of new paths opened from each node. This is useful when the graph contains nodes with very high out-degree, where running the algorithm several epochs is not feasible. When using this parameter, the graph will consider only at most edge_sampling outgoing edges at each epoch for each path. If the last node of the path contains more than edge_sampling the selected edges are sampled using its weight.

    None Source code in mercury/graph/ml/spark_randomwalker.py
    def __init__(self, num_epochs=10, batch_size=1, n_sampling_edges=None):\n    \"\"\"\n    Class to perform random walks from a specific source_id node within a given Graph\n\n    Args:\n        num_epochs (int): Number of epochs. This is the total number of steps the iteration goes through.\n        batch_size (int): This forces caching the random walks computed so far and breaks planning each time this number of epochs\n            is reached. The default value is a high number to avoid this entering at all. In really large jobs, you may want to\n            set this parameter to avoid possible overflows even if it can add some extra time to the process. Note that with a high\n            number of epochs and nodes resource requirements for the active part of your random walks can be high. This allows to\n            \"cache a continue\" so to say.\n        n_sampling_edges (int): by setting this parameter you can limit at each timestep the number of new paths opened from each node.\n            This is useful when the graph contains nodes with very high out-degree, where running the algorithm several epochs is\n            not feasible. When using this parameter, the graph will consider only at most `edge_sampling` outgoing edges at each\n            epoch for each path. If the last node of the path contains more than `edge_sampling` the selected edges are sampled\n            using its weight.\n    \"\"\"\n    self.num_epochs = num_epochs\n    self.batch_size = batch_size\n    self.n_sampling_edges = n_sampling_edges\n
    "},{"location":"reference/ml/#mercury.graph.ml.SparkRandomWalker.fit","title":"fit(G, source_id)","text":"

    Perform random walks from a specific source_id node within a given Graph

    Parameters:

    Name Type Description Default G mercury.graph Graph asset

    A mercury.graph Graph

    required source_id int / str / list

    the source vertex or list for vertices to start the random walks.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error)

    Attribute paths_ contains a Spark Dataframe with a columns random_walks containing an array of the elements of the path walked and another column with the corresponding weights. The weights represent the probability of following that specific path starting from source_id.

    Source code in mercury/graph/ml/spark_randomwalker.py
    def fit(self, G: Graph, source_id):\n    \"\"\"\n    Perform random walks from a specific source_id node within a given Graph\n\n    Args:\n        G (mercury.graph Graph asset): A `mercury.graph` Graph\n        source_id (int/str/list): the source vertex or list for vertices to start the random walks.\n\n    Returns:\n        (self): Fitted self (or raises an error)\n\n    Attribute `paths_` contains a Spark Dataframe with a columns `random_walks` containing an array of the elements\n    of the path walked and another column with the corresponding weights. The weights represent the probability of\n    following that specific path starting from source_id.\n    \"\"\"\n    self.paths_ = self._run_rw(G, source_id)\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.SparkSpreadingActivation","title":"mercury.graph.ml.SparkSpreadingActivation(attribute='influence', spreading_factor=0.2, transfer_function='weighted', steps=1, influenced_by=False)","text":"

    Bases: BaseClass

    This class is a model that represents a \u201cword-of-mouth\u201d scenario where a node influences his neighbors, from where the influence spreads to other neighbors, and so on.

    At the end of the diffusion process, we inspect the amount of influence received by each node. Using a threshold-based technique, a node that is currently not influenced can be declared to be a potential future one, based on the influence that has been accumulated.

    The diffusion model is based on Spreading Activation (SPA) techniques proposed in cognitive psychology and later used for trust metric computations. For more details, please see paper entitled \"Social Ties and their Relevance to Churn in Mobile Telecom Networks\"

    Parameters:

    Name Type Description Default attribute str

    Column name which will store the amount of influence spread

    'influence' spreading_factor float

    Percentage of influence to distribute. Low values favor influence proximity to the source of injection, while high values allow the influence to also reach nodes which are further away. It must be a value in the range (0,1). Default value is 0.2

    0.2 transfer_function str

    Allowed values: \"weighted\" or \"unweighted\". Once a node decides what fraction of energy to distribute, the next step is to decide what fraction of the energy is transferred to each neighbor. This is controlled by the Transfer Function. If \"weighted\" then the energy distributed along the directed edge depends on its relatively weight compared to the sum of weights of all outgoing edges of X. If \"unweighted\", then the energy distributed along the edge is independent of its relatively weight. 'weighted' steps int

    Number of steps to perform

    1 influenced_by bool

    if True, and extra column \"influenced_by\" is calculated which contains the seed nodes that have spread some influence to a given node. When True, the ids of the nodes cannot contain commas \",\". Note that seed_nodes will have at least their own (remaining) influence

    False Source code in mercury/graph/ml/spark_spreadactivation.py
    def __init__(\n    self,\n    attribute: str = \"influence\",\n    spreading_factor: float = 0.2,\n    transfer_function: str = \"weighted\",\n    steps: int = 1,\n    influenced_by: bool = False,\n):\n    self.attribute = attribute\n    self.spreading_factor = spreading_factor\n    self.transfer_function = transfer_function\n    self.steps = steps\n    self.influenced_by = influenced_by\n
    "},{"location":"reference/ml/#mercury.graph.ml.SparkSpreadingActivation.fit","title":"fit(g, seed_nodes)","text":"

    Perform all iterations of spread_activation

    Parameters:

    Name Type Description Default g Graph

    A mercury.graph Graph object.

    required seed_nodes Union[List, DataFrame]

    Collection of nodes that are the \"seed\" or are the source to spread the influence. It must be pyspark dataframe with column 'id' or python list

    required

    Returns:

    Type Description self

    Fitted self

    Source code in mercury/graph/ml/spark_spreadactivation.py
    def fit(\n    self,\n    g: Graph,\n    seed_nodes: Union[List, \"pyspark.sql.DataFrame\"],\n):\n    \"\"\"\n    Perform all iterations of spread_activation\n\n    Args:\n        g (mercury.graph.core.Graph): A `mercury.graph` Graph object.\n        seed_nodes (Union[List, pyspark.sql.DataFrame]): Collection of nodes that are the \"seed\" or are the source to spread\n            the influence. It must be pyspark dataframe with column 'id' or python list\n\n    Returns:\n        (self): Fitted self\n    \"\"\"\n\n    # Set seed nodes which are the source of influence\n    g = self._set_seed_nodes(g, seed_nodes)\n\n    # Compute degrees\n    g = self._compute_degrees(g)\n\n    # Number of iterations specified for spread activation\n    for _ in range(0, self.steps, 1):\n        g = self._spread_activation_step(\n            g,\n        )\n\n    # Graph with updated attributes\n    self.fitted_graph_ = g\n    # Influences as DataFrame\n    self.influences_ = self.fitted_graph_.nodes_as_dataframe().select(\n        \"id\", \"influence\"\n    )\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.SpectralClustering","title":"mercury.graph.ml.SpectralClustering(n_clusters=2, mode='networkx', max_iterations=10, random_state=0)","text":"

    Bases: BaseClass

    Implementation of the spectral clustering algorithm which detect communities inside a graph.

    Parameters:

    Name Type Description Default n_clusters int

    The number of clusters that you want to detect.

    2 random_state int

    Seed for reproducibility

    0 mode str

    Calculation mode. Pass 'networkx' for using pandas + networkx or 'spark' for spark + graphframes

    'networkx' max_iterations int

    Max iterations parameter (only used if mode==spark)

    10 Source code in mercury/graph/ml/spectral.py
    def __init__(\n    self, n_clusters=2, mode=\"networkx\", max_iterations=10, random_state=0\n):\n    self.n_clusters = n_clusters\n    self.mode = mode\n    self.max_iterations = max_iterations\n    self.random_state = random_state\n\n    if self.mode not in (\"networkx\", \"spark\"):\n        raise ValueError(\"Error: Mode must be either 'networkx' or 'spark'\")\n
    "},{"location":"reference/ml/#mercury.graph.ml.SpectralClustering.fit","title":"fit(graph)","text":"

    Find the optimal clusters of a given graph. The function returns nothing, but saves the clusters and the modularity in the object self.

    Parameters:

    Name Type Description Default graph Graph

    A mercury graph structure.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error)

    Source code in mercury/graph/ml/spectral.py
    def fit(self, graph: Graph):\n    \"\"\"\n    Find the optimal clusters of a given graph. The function returns nothing, but saves the clusters and\n    the modularity in the object self.\n\n    Args:\n        graph (Graph): A mercury graph structure.\n\n    Returns:\n        (self): Fitted self (or raises an error)\n\n    \"\"\"\n    if self.mode == \"networkx\":\n        self._fit_networkx(graph)\n    else:\n        self._fit_spark(graph)\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.Transition","title":"mercury.graph.ml.Transition()","text":"

    Bases: BaseClass

    Create an interface class to manage the adjacency matrix of a directed graph as a transition matrix. This enables computing distributions of probabilities over the nodes after a given number of iterations.

    Source code in mercury/graph/ml/transition.py
    def __init__(self):\n    self.fitted_graph_ = None\n
    "},{"location":"reference/ml/#mercury.graph.ml.Transition.fit","title":"fit(G)","text":"

    Converts the adjacency matrix into a transition matrix. Transition matrices are used to compute the distribution of probability of being in each of the nodes (or states) of a directed graph (or Markov process). The distribution for state s is:

    • \\(s_t = T*s_{t-1}\\)

    Where:

    T is the transition matrix. After calling.fit(), the adjacency matrix is the transition matrix. You can use .to_pandas() to see it. \\(s_{t-1}\\) is the previous state.

    What .fit() does is scaling the non-zero rows to make them sum 1 as they are probability distributions and make the zero rows recurrent states. A recurrent state is a final state, a state whose next state is itself.

    Parameters:

    Name Type Description Default G Graph

    A mercury.graph Graph.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error).

    Note

    If created using NetworkX directly, the name of the weight must be 'weight' and must be positive. The recommended way to create the graph is using .set_row() which will always name the weight as 'weight' but does not check the value.

    Source code in mercury/graph/ml/transition.py
    def fit(self, G: Graph):\n    \"\"\"\n    Converts the adjacency matrix into a transition matrix. Transition matrices are used to compute the distribution of probability\n    of being in each of the nodes (or states) of a directed graph (or Markov process). The distribution for state s is:\n\n    * $s_t = T*s_{t-1}$\n\n    Where:\n\n    T is the transition matrix. After calling.fit(), the adjacency matrix is the transition matrix. You can use .to_pandas() to see it.\n    $s_{t-1}$ is the previous state.\n\n    What .fit() does is scaling the non-zero rows to make them sum 1 as they are probability distributions and make the zero rows\n    recurrent states. A recurrent state is a final state, a state whose next state is itself.\n\n    Args:\n        G (Graph): A `mercury.graph` Graph.\n\n    Returns:\n        (self): Fitted self (or raises an error).\n\n    Note:\n        If created using NetworkX directly, the name of the weight must be 'weight' and must be positive. The recommended way\n        to create the graph is using .set_row() which will always name the weight as 'weight' but does not check the value.\n\n    \"\"\"\n    names = list(G.networkx.nodes)\n    adj_m = nx.adjacency_matrix(G.networkx, weight=\"weight\", dtype=float)\n\n    with warnings.catch_warnings():\n        warnings.simplefilter(\"ignore\")\n\n        for i in range(adj_m.shape[0]):\n            row = adj_m[[i], :]\n            tot = row.sum()\n\n            if tot == 0:\n                row[0, i] = 1\n            else:\n                row = row / tot\n\n            adj_m[[i], :] = row\n\n    df = pd.DataFrame(adj_m.todense(), index=names, columns=names)\n    self.fitted_graph_ = Graph(nx.from_pandas_adjacency(df, create_using=nx.DiGraph))\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.Transition.to_pandas","title":"to_pandas(num_iterations=1)","text":"

    Returns the adjacency (which is the transition matrix after fit() was called) for a given number of iterations as a pandas dataframe with labeled rows and columns.

    Parameters:

    Name Type Description Default num_iterations int

    If you want to compute the matrix for a different number of iterations, k, you can use this argument to raise the matrix to any non negative integer, since \\(s_{t+k} = T^k*s_t\\)

    1

    Returns:

    Type Description DataFrame

    The transition matrix for num_iterations.

    Note

    This method does not automatically call fit(). This allows inspecting the adjacency matrix as a pandas dataframe. The result of computing num_iterations will not make sense if fit() has not been called before to_pandas().

    Source code in mercury/graph/ml/transition.py
    def to_pandas(self, num_iterations=1):\n    \"\"\"\n    Returns the adjacency (which is the transition matrix after `fit()` was called) for a given number of iterations as a pandas\n    dataframe with labeled rows and columns.\n\n    Args:\n        num_iterations (int): If you want to compute the matrix for a different number of iterations, k, you can use this argument to\n            raise the matrix to any non negative integer, since $s_{t+k} = T^k*s_t$\n\n    Returns:\n        (pd.DataFrame): The transition matrix for num_iterations.\n\n    Note:\n        This method does not automatically call `fit()`. This allows inspecting the adjacency matrix as a pandas dataframe.\n        The result of computing num_iterations will not make sense if `fit()` has not been called before `to_pandas()`.\n\n    \"\"\"\n    if self.fitted_graph_ is None:\n        raise ValueError(\"Error: fit() must be called first.\")\n\n    names = list(self.fitted_graph_.networkx.nodes)\n    adj_m = nx.adjacency_matrix(self.fitted_graph_.networkx, weight=\"weight\").todense()\n\n    if num_iterations != 1:\n        adj_m = matrix_power(adj_m, num_iterations)\n\n    return pd.DataFrame(adj_m, index=names, columns=names)\n
    "},{"location":"reference/viz/","title":"mercury.graph.viz","text":""},{"location":"reference/viz/#mercury.graph.viz.Moebius","title":"mercury.graph.viz.Moebius(G)","text":"

    Moebius class for visualizing graphs using JavaScript and HTML.

    Usage
    from mercury.graph.viz import Moebius\n\nG = ... # A graph object\nmoebius = Moebius(G)\nmoebius.show()\n

    Attributes:

    Name Type Description G Graph

    The graph to be visualized.

    use_spark bool

    Flag indicating if Spark is used.

    front_pat str

    Path to the frontend resources.

    _int_id_map dict

    A dictionary mapping node IDs to integer IDs.

    name() dict

    The instance name of the object required by the JS callback mechanism.

    Source code in mercury/graph/viz/moebius.py
    def __init__(self, G):\n\n    if HTML is None:\n        raise ImportError('IPython is not installed')\n\n    self.G = G\n    self.use_spark = self.G._as_networkx is None\n    self.front_pat = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + '/frontend'\n    self._int_id_map = {node['id'] : i for i, node in enumerate(self.G.nodes)}\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.name","title":"name property","text":"

    Get the instance name of the object which is required by the JS callback mechanism.

    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.FHT","title":"FHT(fn)","text":"

    Syntactic sugar for display(HTML(filename = fn))

    Source code in mercury/graph/viz/moebius.py
    def FHT(self, fn):\n    \"\"\"\n    Syntactic sugar for display(HTML(filename = fn))\n    \"\"\"\n\n    display(HTML(filename = fn))\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.FJS","title":"FJS(fn)","text":"

    Syntactic sugar for display(Javascript(filename = fn))

    Source code in mercury/graph/viz/moebius.py
    def FJS(self, fn):\n    \"\"\"\n    Syntactic sugar for display(Javascript(filename = fn))\n    \"\"\"\n\n    display(Javascript(filename = fn))\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.JS","title":"JS(s)","text":"

    Syntactic sugar for display(Javascript())

    Source code in mercury/graph/viz/moebius.py
    def JS(self, s):\n    \"\"\"\n    Syntactic sugar for display(Javascript())\n    \"\"\"\n\n    display(Javascript(s))\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.__getitem__","title":"__getitem__(item)","text":"

    Add support for the [] operator.

    Source code in mercury/graph/viz/moebius.py
    def __getitem__(self, item):\n    \"\"\"\n    Add support for the [] operator.\n    \"\"\"\n\n    return self._get_adjacent_nodes_moebius(item)\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.__str__","title":"__str__()","text":"

    Convert the object via str()

    Source code in mercury/graph/viz/moebius.py
    def __str__(self):\n    \"\"\"\n    Convert the object via str()\n    \"\"\"\n\n    return 'Moebius(%s)' % str(self.G)\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.node_or_edge_config","title":"node_or_edge_config(text_is=None, color_is=None, colors=None, size_is=None, size_range=None, size_scale='linear')","text":"

    Create a node_config or edge_config configuration dictionary for show() in an understandable way.

    Parameters:

    Name Type Description Default text_is str

    The node/edge attribute to be displayed as text. Use the string \u00ecd to draw the node id (regardless of the column having another name) or any valid node attribute name.

    None color_is str

    A categorical node/edge attribute that can be represented as a color. This will also enable a legend interface where categories can be individually shown or hidden.

    None colors dict

    The colors for each category defined as a dictionary. The keys are possible outcomes of category. The values are html RGB strings. E.g., .draw(category = 'size', colors = {'big' : '#c0a080', 'small' : '#a0c080'}) where 'big' and 'small' are possible values of the category 'size'.

    None size_is str

    The node attribute to be displayed as the size of the nodes. Use the string id to set the node id (regardless of the column having another name) or any valid node attribute name. See the options in the Moebius configuration menu to set minimum, maximum sizes, linear or logarithmic scale, etc.

    None size_range List of two numbers

    Combined with edge_label, this parameter controls the values in the variable that correspond to the minimum and maximum displayed sizes. The values below or equal the first value will be displayed with the base radius (that depends on the zoom) and the values above or equal to the second value will be shown with the maximum radius.

    None size_scale (linear, power, sqrt or log)

    Combined with edge_label, the scale used to convert the value in the variable to the displayed radius.

    'linear'

    Returns:

    Type Description dict

    The node configuration dictionary

    Source code in mercury/graph/viz/moebius.py
    def node_or_edge_config(self, text_is = None, color_is = None, colors = None, size_is = None, size_range = None, size_scale = 'linear'):\n    \"\"\"\n    Create a `node_config` or `edge_config` configuration dictionary for `show()` in an understandable way.\n\n    Args:\n        text_is (str): The node/edge attribute to be displayed as text. Use the string `\u00ecd` to draw the node id (regardless of the\n            column having another name) or any valid node attribute name.\n        color_is (str): A categorical node/edge attribute that can be represented as a color. This will also enable a legend interface\n            where categories can be individually shown or hidden.\n        colors (dict): The colors for each category defined as a dictionary. The keys are possible outcomes of category.\n            The values are html RGB strings. E.g., .draw(category = 'size', colors = {'big' : '#c0a080', 'small' : '#a0c080'})\n            where 'big' and 'small' are possible values of the category 'size'.\n        size_is (str): The node attribute to be displayed as the size of the nodes. Use the string `id` to set the node id (regardless\n            of the column having another name) or any valid node attribute name. See the options in the Moebius configuration menu to\n            set minimum, maximum sizes, linear or logarithmic scale, etc.\n        size_range (List of two numbers): Combined with edge_label, this parameter controls the values in the variable that\n            correspond to the minimum and maximum displayed sizes. The values below or equal the first value will be displayed with the\n            base radius (that depends on the zoom) and the values above or equal to the second value will be shown with the maximum\n            radius.\n        size_scale ('linear', 'power', 'sqrt' or 'log'): Combined with edge_label, the scale used to convert the value in the variable\n            to the displayed radius.\n\n    Returns:\n        (dict): The node configuration dictionary\n    \"\"\"\n\n    config = {}\n\n    if text_is is not None:\n        config['label'] = text_is\n\n    if color_is is not None:\n        config['color'] = color_is\n\n    if colors is not None:\n        config['color_palette'] = colors\n    else:\n        config['color_palette'] = {}\n\n    if size_is is None:\n        config['size_thresholds'] = []\n    else:\n        config['size'] = size_is\n\n        if size_range is None:\n            config['size_thresholds'] = []\n        else:\n            assert type(size_range) == list and len(size_range) == 2\n            config['size_thresholds'] = size_range\n\n        if size_scale != 'linear':\n            assert size_scale in {'power', 'sqrt', 'log'}\n\n        config['scale'] = size_scale\n\n    return config\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.show","title":"show(initial_id=None, initial_depth=1, node_config=None, edge_config=None)","text":"

    Start the interactive graph visualization in a Jupyter notebook.

    Parameters:

    Name Type Description Default initial_id str

    The id of the node to start the visualization.

    None initial_depth int

    The initial depth of the graph (starting with initial_id as 0) to be shown.

    1 node_config dict

    A node configuration dictionary created by node_config().

    None edge_config dict

    An edge configuration dictionary created by edge_config().

    None Source code in mercury/graph/viz/moebius.py
    def show(self, initial_id = None, initial_depth = 1, node_config = None, edge_config = None):\n    \"\"\"\n    Start the interactive graph visualization in a Jupyter notebook.\n\n    Args:\n        initial_id (str): The id of the node to start the visualization.\n        initial_depth (int): The initial depth of the graph (starting with `initial_id` as 0) to be shown.\n        node_config (dict): A node configuration dictionary created by `node_config()`.\n        edge_config (dict): An edge configuration dictionary created by `edge_config()`.\n    \"\"\"\n\n    if initial_id is None:\n        initial_id = next(iter(self._int_id_map))\n\n    initial_json = self._get_adjacent_nodes_moebius(initial_id, depth = initial_depth)\n\n    if node_config is None:\n        node_config = self.node_or_edge_config()\n\n    if edge_config is None:\n        edge_config = self.node_or_edge_config()\n\n    self._load_moebius_js(initial_json, self.name, node_config, edge_config)\n
    "}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"mercury-graph","text":"

    mercury-graph is a Python library that offers graph analytics capabilities with a technology-agnostic API, enabling users to apply a curated range of performant and scalable algorithms and utilities regardless of the underlying data framework. The consistent, scikit-like interface abstracts away the complexities of internal transformations, allowing users to effortlessly switch between different graph representations to leverage optimized algorithms implemented using pure Python, numba, networkx and PySpark GraphFrames.

    Currently implemented submodules in mercury.graph include:

    • mercury.graph.core, with the main classes of the library that create and store the graphs' data and properties.

    • mercury.graph.ml, with graph theory and machine learning algorithms such as Louvain community detection, spectral clustering, Markov chains, spreading activation-based diffusion models and graph random walkers.

    • mercury.graph.embeddings, with classes that calculate graph embeddings in different ways, such as following the Node2Vec algorithm.

    • mercury.graph.viz, with capabilities for graph visualization.

    "},{"location":"#repository","title":"Repository","text":"

    The website for the GitHub repository can be found here.

    "},{"location":"reference/core/","title":"mercury.graph.core","text":""},{"location":"reference/core/#mercury.graph.core.Graph","title":"mercury.graph.core.Graph(data=None, keys=None, nodes=None)","text":"

    This is the main class in mercury.graph.

    This class seamlessly abstracts the underlying technology used to represent the graph. You can create a graph passing the following objects to the constructor:

    • A pandas DataFrame containing edges (with a keys dictionary to specify the columns and possibly a nodes DataFrame)
    • A pyspark DataFrame containing edges (with a keys dictionary to specify the columns and possibly a nodes DataFrame)
    • A networkx graph
    • A graphframes graph

    Bear in mind that the graph object is immutable. This means that you can't modify the graph object once it has been created. If you want to modify it, you have to create a new graph object.

    The graph object provides:

    • Properties to access the graph in different formats (networkx, graphframes, dgl)
    • Properties with metrics and summary information that are calculated on demand and technology independent.
    • It is inherited by other graph classes in mercury-graph providing ML algorithms such as graph embedding, visualization, etc.

    Using this class from the other classes in mercury-graph:

    The other classes in mercury-graph define models or functionalities that are based on graphs. They use a Scikit-learn-like API to interact with the graph object. This means that the graph object is passed to the class constructor and the class follow the Scikit-learn conventions. It is recommended to follow the same conventions when creating your own classes to work with mercury-graph.

    The conventions can be found here:

    • Scikit API
    • On scikit conventions

    Parameters:

    Name Type Description Default data (DataFrame, Graph or DataFrame)

    The data to create the graph from. It can be a pandas DataFrame, a networkx Graph, a pyspark DataFrame, or a Graphframe. In case it already contains a graph (networkx or graphframes), the keys and nodes arguments are ignored.

    None keys dict

    A dictionary with keys to specify the columns in the data DataFrame. The keys are:

    • 'src': The name of the column with the source node.
    • 'dst': The name of the column with the destination node.
    • 'id': The name of the column with the node id.
    • 'weight': The name of the column with the edge weight.
    • 'directed': A boolean to specify if the graph is directed. (Only for pyspark DataFrames)

    When the keys argument is not provided or the key is missing, the default values are:

    • 'src': 'src'
    • 'dst': 'dst'
    • 'id': 'id'
    • 'weight': 'weight'
    • 'directed': True
    None nodes DataFrame

    A pandas DataFrame or a pyspark DataFrame with the nodes data. (Only when data is pandas or pyspark DataFrame and with the same type as data) If not given, the nodes are inferred from the edges DataFrame.

    None Source code in mercury/graph/core/graph.py
    def __init__(self, data = None, keys = None, nodes = None):\n    self._as_networkx = None\n    self._as_graphframe = None\n    self._as_dgl = None\n    self._degree = None\n    self._in_degree = None\n    self._out_degree = None\n    self._closeness_centrality = None\n    self._betweenness_centrality = None\n    self._pagerank = None\n    self._connected_components = None\n    self._nodes_colnames = None\n    self._edges_colnames = None\n\n    self._number_of_nodes = 0\n    self._number_of_edges = 0\n    self._node_ix = 0\n    self._is_directed = False\n    self._is_weighted = False\n\n    self._init_values = {k: v for k, v in locals().items() if k in inspect.signature(self.__init__).parameters}\n\n    if type(data) == pd.core.frame.DataFrame:\n        self._from_pandas(data, nodes, keys)\n        return\n\n    if isinstance(data, nx.Graph):      # This is the most general case, including: ...Graph, ...DiGraph and ...MultiGraph\n        self._from_networkx(data)\n        return\n\n    spark_int = SparkInterface()\n\n    if pyspark_installed and graphframes_installed:\n        if type(data) == spark_int.type_spark_dataframe:\n            self._from_dataframe(data, nodes, keys)\n            return\n\n        if type(data) == spark_int.type_graphframe:\n            self._from_graphframes(data)\n            return\n\n    raise ValueError('Invalid input data. (Expected: pandas DataFrame, a networkx Graph, a pyspark DataFrame, a graphframes Graph.)')\n
    "},{"location":"reference/core/#mercury.graph.core.Graph.betweenness_centrality","title":"betweenness_centrality property","text":"

    Returns the betweenness centrality of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.closeness_centrality","title":"closeness_centrality property","text":"

    Returns the closeness centrality of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.connected_components","title":"connected_components property","text":"

    Returns the connected components of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.degree","title":"degree property","text":"

    Returns the degree of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.dgl","title":"dgl property","text":"

    Returns the graph as a DGL graph.

    If the graph has not been converted to a DGL graph yet, it will be converted and cached for future use.

    Returns:

    Type Description DGLGraph

    The graph represented as a DGL graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.edges","title":"edges property","text":"

    Returns an iterator over the edges in the graph.

    Returns:

    Type Description EdgeIterator

    An iterator object that allows iterating over the edges in the graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.edges_colnames","title":"edges_colnames property","text":"

    Returns the column names of the edges DataFrame.

    "},{"location":"reference/core/#mercury.graph.core.Graph.graphframe","title":"graphframe property","text":"

    Returns the graph as a GraphFrame.

    If the graph has not been converted to a GraphFrame yet, it will be converted and cached for future use.

    Returns:

    Type Description GraphFrame

    The graph represented as a GraphFrame.

    "},{"location":"reference/core/#mercury.graph.core.Graph.in_degree","title":"in_degree property","text":"

    Returns the in-degree of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.is_directed","title":"is_directed property","text":"

    Returns True if the graph is directed, False otherwise.

    Note

    Graphs created using graphframes are always directed. The way around it is to add the reverse edges to the graph. This can be done by creating the Graph with pyspark DataFrame() and defining a key 'directed' set as False in the dict argument. Otherwise, the graph will be considered directed even if these reversed edges have been created by other means this class cannot be aware of.

    "},{"location":"reference/core/#mercury.graph.core.Graph.is_weighted","title":"is_weighted property","text":"

    Returns True if the graph is weighted, False otherwise.

    A graph is considered weight if it has a column named 'weight' in the edges DataFrame or the column has a different name and that name is passed in the dict argument as the 'weight' key.

    "},{"location":"reference/core/#mercury.graph.core.Graph.networkx","title":"networkx property","text":"

    Returns the graph representation as a NetworkX graph.

    If the graph has not been converted to NetworkX format yet, it will be converted and cached for future use.

    Returns:

    Type Description Graph

    The graph representation as a NetworkX graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.nodes","title":"nodes property","text":"

    Returns an iterator over all the nodes in the graph.

    Returns:

    Type Description NodeIterator

    An iterator that yields each node in the graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.nodes_colnames","title":"nodes_colnames property","text":"

    Returns the column names of the nodes DataFrame.

    "},{"location":"reference/core/#mercury.graph.core.Graph.number_of_edges","title":"number_of_edges property","text":"

    Returns the number of edges in the graph.

    Returns:

    Type Description int

    The number of edges in the graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.number_of_nodes","title":"number_of_nodes property","text":"

    Returns the number of nodes in the graph.

    Returns:

    Type Description int

    The number of nodes in the graph.

    "},{"location":"reference/core/#mercury.graph.core.Graph.out_degree","title":"out_degree property","text":"

    Returns the out-degree of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.pagerank","title":"pagerank property","text":"

    Returns the PageRank of each node in the graph as a Python dictionary.

    "},{"location":"reference/core/#mercury.graph.core.Graph.edges_as_dataframe","title":"edges_as_dataframe()","text":"

    Returns the edges as a pyspark DataFrame.

    If the graph is represented as a graphframes graph, the edges are extracted from it. Otherwise, the edges are converted from the pandas DataFrame representation. The columns used as the source and destination nodes are always named 'src' and 'dst', respectively, regardless of the original column names passed to the constructor.

    Source code in mercury/graph/core/graph.py
    def edges_as_dataframe(self):\n    \"\"\"\n    Returns the edges as a pyspark DataFrame.\n\n    If the graph is represented as a graphframes graph, the edges are extracted from it. Otherwise, the edges are converted from the\n    pandas DataFrame representation. The columns used as the source and destination nodes are always named 'src' and 'dst',\n    respectively, regardless of the original column names passed to the constructor.\n    \"\"\"\n    if self._as_graphframe is not None:\n        return self._as_graphframe.edges\n\n    return SparkInterface().spark.createDataFrame(self.edges_as_pandas())\n
    "},{"location":"reference/core/#mercury.graph.core.Graph.edges_as_pandas","title":"edges_as_pandas()","text":"

    Returns the edges as a pandas DataFrame.

    If the graph is represented as a networkx graph, the edges are extracted from it. Otherwise, the graphframes graph will be used. This dataset may differ from possible pandas DataFrame passed to the constructor in the column names and order. The columns used as the source and destination nodes are always named 'src' and 'dst', respectively.

    Source code in mercury/graph/core/graph.py
    def edges_as_pandas(self):\n    \"\"\"\n    Returns the edges as a pandas DataFrame.\n\n    If the graph is represented as a networkx graph, the edges are extracted from it. Otherwise, the graphframes graph will be used.\n    This dataset may differ from possible pandas DataFrame passed to the constructor in the column names and order. The columns used\n    as the source and destination nodes are always named 'src' and 'dst', respectively.\n    \"\"\"\n    if self._as_networkx is not None:\n        edges_data = self._as_networkx.edges(data = True)\n        edges_df   = pd.DataFrame([(src, dst, attr) for src, dst, attr in edges_data], columns = ['src', 'dst', 'attributes'])\n\n        attrs_df   = pd.json_normalize(edges_df['attributes'])\n\n        return pd.concat([edges_df.drop('attributes', axis = 1), attrs_df], axis = 1)\n\n    return self.graphframe.edges.toPandas()\n
    "},{"location":"reference/core/#mercury.graph.core.Graph.nodes_as_dataframe","title":"nodes_as_dataframe()","text":"

    Returns the nodes as a pyspark DataFrame.

    If the graph is represented as a graphframes graph, the nodes are extracted from it. Otherwise, the nodes are converted from the pandas DataFrame representation. The column used as the node id is always named 'id', regardless of the original column name passed to the constructor.

    Source code in mercury/graph/core/graph.py
    def nodes_as_dataframe(self):\n    \"\"\"\n    Returns the nodes as a pyspark DataFrame.\n\n    If the graph is represented as a graphframes graph, the nodes are extracted from it. Otherwise, the nodes are converted from the\n    pandas DataFrame representation. The column used as the node id is always named 'id', regardless of the original column name passed\n    to the constructor.\n    \"\"\"\n    if self._as_graphframe is not None:\n        return self._as_graphframe.vertices\n\n    return SparkInterface().spark.createDataFrame(self.nodes_as_pandas())\n
    "},{"location":"reference/core/#mercury.graph.core.Graph.nodes_as_pandas","title":"nodes_as_pandas()","text":"

    Returns the nodes as a pandas DataFrame.

    If the graph is represented as a networkx graph, the nodes are extracted from it. Otherwise, the graphframes graph will be used. This dataset may differ from possible pandas DataFrame passed to the constructor in the column names and order. The column used as the node id is always named 'id'.

    Source code in mercury/graph/core/graph.py
    def nodes_as_pandas(self):\n    \"\"\"\n    Returns the nodes as a pandas DataFrame.\n\n    If the graph is represented as a networkx graph, the nodes are extracted from it. Otherwise, the graphframes graph will be used.\n    This dataset may differ from possible pandas DataFrame passed to the constructor in the column names and order. The column used\n    as the node id is always named 'id'.\n    \"\"\"\n    if self._as_networkx is not None:\n        nodes_data = self._as_networkx.nodes(data = True)\n        nodes_df   = pd.DataFrame([(node, attr) for node, attr in nodes_data], columns = ['id', 'attributes'])\n\n        attrs_df = pd.json_normalize(nodes_df['attributes'])\n\n        return pd.concat([nodes_df.drop('attributes', axis = 1), attrs_df], axis = 1)\n\n    return self.graphframe.vertices.toPandas()\n
    "},{"location":"reference/core/#mercury.graph.core.SparkInterface","title":"mercury.graph.core.SparkInterface(config=None, session=None)","text":"

    A class that provides an interface for interacting with Apache Spark, graphframes and dgl.

    Attributes:

    Name Type Description _spark_session SparkSession

    The shared Spark session.

    _graphframes module

    The shared graphframes namespace.

    Methods:

    Name Description _create_spark_session

    Creates a Spark session.

    spark

    Property that returns the shared Spark session.

    pyspark

    Property that returns the pyspark namespace.

    graphframes

    Property that returns the shared graphframes namespace.

    dgl

    Property that returns the shared dgl namespace.

    read_csv

    Reads a CSV file into a DataFrame.

    read_parquet

    Reads a Parquet file into a DataFrame.

    read_json

    Reads a JSON file into a DataFrame.

    read_text

    Reads a text file into a DataFrame.

    read

    Reads a file into a DataFrame.

    sql

    Executes a SQL query.

    udf

    Registers a user-defined function (UDF).

    stop

    Stops the Spark session.

    Parameters:

    Name Type Description Default config dict

    A dictionary of Spark configuration options. If not provided, the configuration in the global variable default_spark_config will be used.

    None Source code in mercury/graph/core/spark_interface.py
    def __init__(self, config=None, session=None):\n    if SparkInterface._spark_session is None:\n        if session is not None:\n            SparkInterface._spark_session = session\n        else:\n            SparkInterface._spark_session = self._create_spark_session(config)\n            # Set checkpoint directory\n            SparkInterface._spark_session.sparkContext.setCheckpointDir(\".checkpoint\")\n\n    if SparkInterface._graphframes is None and graphframes_installed:\n        SparkInterface._graphframes = gf\n\n    if SparkInterface._dgl is None and dgl_installed:\n        SparkInterface._dgl = dgl\n
    "},{"location":"reference/embeddings/","title":"mercury.graph.embeddings","text":""},{"location":"reference/embeddings/#mercury.graph.embeddings.Embeddings","title":"mercury.graph.embeddings.Embeddings(dimension, num_elements=0, mean=0, sd=1, learn_step=3, bidirectional=False)","text":"

    Bases: BaseClass

    This class holds a matrix object that is interpreted as the embeddings for any list of objects, not only the nodes of a graph. You can see this class as the internal object holding the embedding for other classes such as class GraphEmbedding.

    Parameters:

    Name Type Description Default dimension int

    The number of columns in the embedding. See note below.

    required num_elements int

    The number of rows in the embedding. You can leave this empty on creation and then use initialize_as() to automatically match the nodes in a graph.

    0 mean float

    The (expected) mean of the initial values.

    0 sd float

    The (expected) standard deviation of the initial values.

    1 learn_step float

    The size of the learning step elements get approached or moved away. Units are hexadecimal degrees in along an ellipse.

    3 bidirectional bool

    Should the changes apply only to the elements of first column (False) or to both.

    False Note

    On dimension: Embeddings cannot be zero (that is against the whole concept). Smaller dimension embeddings can only hold few elements without introducing spurious correlations by some form of 'birthday attack' phenomenon as elements increase. Later it is very hard to get rid of that spurious 'knowledge'.

    Solution: With may elements, you have to go to high enough dimension even if the structure is simple. Pretending to fit many embeddings in low dimension without them being correlated is like pretending to plot a trillion random points in a square centimeter while keeping them 1 mm apart from each other: It's simply impossible!

    Source code in mercury/graph/embeddings/embeddings.py
    def __init__(\n    self, dimension, num_elements=0, mean=0, sd=1, learn_step=3, bidirectional=False\n):\n    self.dimension = dimension\n    self.num_elements = num_elements\n    self.mean = mean\n    self.sd = sd\n    self.learn_step = learn_step\n    self.bidirectional = bidirectional\n\n    if self.num_elements > 0:\n        self.embeddings_matrix_ = np.random.normal(\n            self.mean, self.sd, (self.num_elements, self.dimension)\n        )\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.Embeddings.as_numpy","title":"as_numpy()","text":"

    Return the embedding as a numpy matrix where each row is an embedding.

    Source code in mercury/graph/embeddings/embeddings.py
    def as_numpy(self):\n    \"\"\"\n    Return the embedding as a numpy matrix where each row is an embedding.\n    \"\"\"\n    if not hasattr(self, \"embeddings_matrix_\"):\n        return\n\n    return self.embeddings_matrix_\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.Embeddings.fit","title":"fit(converge=None, diverge=None)","text":"

    Apply a learning step to the embedding.

    Parameters:

    Name Type Description Default converge numpy matrix of two columns

    A matrix of indices to elements meaning (first column) should be approached to (second column).

    None diverge numpy matrix of two columns

    A matrix of indices to elements meaning (first column) should be moved away from (second column).

    None

    Returns:

    Type Description self

    Fitted self (or raises an error)

    Note

    Embeddings start being randomly distributed and hold no structure other than spurious correlations. Each time you apply a learning step by calling this method, you are tweaking the embedding to approach some rows and/or move others away. You can use both converge and diverge or just one of them and call this as many times you want with varying learning step. A proxy of how much an embedding can learn can be estimated by measuring how row correlations are converging towards some asymptotic values.

    Source code in mercury/graph/embeddings/embeddings.py
    def fit(self, converge=None, diverge=None):\n    \"\"\"\n    Apply a learning step to the embedding.\n\n    Args:\n        converge (numpy matrix of two columns): A matrix of indices to elements meaning (first column) should be approached to\n            (second column).\n        diverge (numpy matrix of two columns): A matrix of indices to elements meaning (first column) should be moved away from\n            (second column).\n\n    Returns:\n        (self): Fitted self (or raises an error)\n\n    Note:\n        Embeddings start being randomly distributed and hold no structure other than spurious correlations. Each time you apply a\n        learning step by calling this method, you are tweaking the embedding to approach some rows and/or move others away. You can use\n        both converge and diverge or just one of them and call this as many times you want with varying learning step. A proxy of how\n        much an embedding can learn can be estimated by measuring how row correlations are converging towards some asymptotic values.\n    \"\"\"\n\n    w = self.learn_step * np.pi / 180\n\n    cos_w = np.cos(w)\n    sin_w = np.sin(w)\n\n    if converge is not None:\n        self.embeddings_matrix_ = _elliptic_rotate(\n            self.embeddings_matrix_, converge[:, 0], converge[:, 1], cos_w, sin_w\n        )\n\n        if self.bidirectional:\n            self.embeddings_matrix_ = _elliptic_rotate(\n                self.embeddings_matrix_,\n                converge[:, 1],\n                converge[:, 0],\n                cos_w,\n                sin_w,\n            )\n\n    if diverge is not None:\n        self.embeddings_matrix_ = _elliptic_rotate(\n            self.embeddings_matrix_, diverge[:, 0], diverge[:, 1], cos_w, -sin_w\n        )\n\n        if self.bidirectional:\n            self.embeddings_matrix_ = _elliptic_rotate(\n                self.embeddings_matrix_, diverge[:, 1], diverge[:, 0], cos_w, -sin_w\n            )\n\n    return self\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.Embeddings.get_most_similar_embeddings","title":"get_most_similar_embeddings(index, k=5, metric='cosine')","text":"

    Given an index of a vector in the embedding matrix, returns the k most similar embeddings in the matrix

    Parameters:

    Name Type Description Default index int

    index of the vector in the matrix that we want to compute the similar embeddings

    required k int

    Number of most similar embeddings to return

    5 metric str

    metric to use as a similarity.

    'cosine'

    Returns:

    Type Description list

    list of k most similar nodes as indices and list of similarities of the most similar nodes

    Source code in mercury/graph/embeddings/embeddings.py
    def get_most_similar_embeddings(self, index, k=5, metric=\"cosine\"):\n    \"\"\"\n    Given an index of a vector in the embedding matrix, returns the k most similar embeddings in the matrix\n\n    Args:\n        index (int): index of the vector in the matrix that we want to compute the similar embeddings\n        k (int): Number of most similar embeddings to return\n        metric (str): metric to use as a similarity.\n\n    Returns:\n        (list): list of k most similar nodes as indices and list of similarities of the most similar nodes\n    \"\"\"\n    if metric == \"cosine\":\n        similarities = (\n            1\n            - cdist(\n                np.expand_dims(self.as_numpy()[index], axis=0),\n                self.as_numpy(),\n                \"cosine\",\n            )[0]\n        )\n\n    elif metric == \"euclidean\":\n        similarities = 1 / (\n            1\n            + cdist(\n                np.expand_dims(self.as_numpy()[index], axis=0),\n                self.as_numpy(),\n                \"euclidean\",\n            )[0]\n        )\n\n    else:\n        raise ValueError(\"Unknown Distance Metric: %s\" % metric)\n\n    ordered_indices = np.argsort(similarities)[::-1][1 : (k + 1)]\n    ordered_similarities = similarities[ordered_indices]\n\n    return ordered_indices, ordered_similarities\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding","title":"mercury.graph.embeddings.GraphEmbedding(dimension=None, n_jumps=None, max_per_epoch=None, learn_step=3, bidirectional=False, load_file=None)","text":"

    Bases: BaseClass

    Create an embedding mapping the nodes of a graph.

    Includes contributions by David Muelas Recuenco.

    Parameters:

    Name Type Description Default dimension int

    The number of columns in the embedding. See note the notes in Embeddings for details. (This parameter will be ignored when load_file is used.)

    None n_jumps int

    Number of random jumps from node to node.

    None max_per_epoch int

    Maximum number Number of consecutive random jumps without randomly jumping outside the edges. Note that normal random jumps are not going to explore outside a connected component.

    None learn_step float

    The size of the learning step elements get approached or moved away. Units are hexadecimal degrees in along an ellipse.

    3 bidirectional bool

    Should the changes apply only to the elements of first column (False) or to both.

    False load_file str

    (optional) The full path to a binary file containing a serialized GraphEmbedding object. This file must be created using GraphEmbedding.save().

    None

    GraphEmbedding class constructor

    Source code in mercury/graph/embeddings/graphembeddings.py
    def __init__(\n    self,\n    dimension=None,\n    n_jumps=None,\n    max_per_epoch=None,\n    learn_step=3,\n    bidirectional=False,\n    load_file=None,\n):\n    \"\"\"GraphEmbedding class constructor\"\"\"\n    if load_file is None and (dimension is None or n_jumps is None):\n        raise ValueError(\n            \"Parameters dimension and n_jumps are required when load_file is None\"\n        )\n\n    self.dimension = dimension\n    self.n_jumps = n_jumps\n    self.max_per_epoch = max_per_epoch\n    self.learn_step = learn_step\n    self.bidirectional = bidirectional\n    self.load_file = load_file\n\n    if self.load_file is not None:\n        self._load(self.load_file)\n        return\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.__getitem__","title":"__getitem__(arg)","text":"

    Method to access rows in the embedding by ID.

    Parameters:

    Name Type Description Default arg same as node ids in the graph

    A node ID in the graph

    required

    Returns:

    Type Description matrix

    A numpy matrix of one row

    Source code in mercury/graph/embeddings/graphembeddings.py
    def __getitem__(self, arg):\n    \"\"\"\n    Method to access rows in the embedding by ID.\n\n    Args:\n        arg (same as node ids in the graph): A node ID in the graph\n\n    Returns:\n        (numpy.matrix): A numpy matrix of one row\n\n    \"\"\"\n    return self.embeddings_.embeddings_matrix_[self.node_ids.index(arg)]\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.embedding","title":"embedding()","text":"

    Return the internal Embeddings object.

    Returns:

    Type Description Embeddings

    The embedding which is a dense matrix of float that can be used with numpy functions.

    Source code in mercury/graph/embeddings/graphembeddings.py
    def embedding(self):\n    \"\"\"\n    Return the internal Embeddings object.\n\n    Returns:\n        (mercury.graph.embeddings.Embeddings): The embedding which is a dense matrix of `float` that can be used with `numpy` functions.\n    \"\"\"\n    if not hasattr(self, \"embeddings_\"):\n        return\n\n    return self.embeddings_\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.fit","title":"fit(g)","text":"

    Train the embedding by doing random walks.

    Parameters:

    Name Type Description Default g mercury.graph Graph asset

    A mercury.graph Graph object. The embedding will be created so that each row in the embedding maps a node ID in g.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error)

    This does a number of random walks starting from a random node and selecting the edges with a probability that is proportional to the weight of the edge. If the destination node also has outgoing edges, the next step will start from it, otherwise, a new random node will be selected. The edges visited (concordant pairs) will get some reinforcement in the embedding while a randomly selected non-existent edges will get divergence instead (discordant pairs).

    Internally, this stores the node IDS of the node visited and calls Embeddings.fit() to transfer the structure to the embedding. Of course, it can be called many times on the same GraphEmbedding.

    Source code in mercury/graph/embeddings/graphembeddings.py
    def fit(self, g: Graph):\n    \"\"\"\n    Train the embedding by doing random walks.\n\n    Args:\n        g (mercury.graph Graph asset): A `mercury.graph` Graph object. The embedding will be created so that each row in the embedding maps\n            a node ID in g.\n\n    Returns:\n        (self): Fitted self (or raises an error)\n\n    This does a number of random walks starting from a random node and selecting the edges with a probability that is proportional to\n    the weight of the edge. If the destination node also has outgoing edges, the next step will start from it, otherwise, a new random\n    node will be selected. The edges visited (concordant pairs) will get some reinforcement in the embedding while a randomly selected\n    non-existent edges will get divergence instead (discordant pairs).\n\n    Internally, this stores the node IDS of the node visited and calls Embeddings.fit() to transfer the structure to the embedding.\n    Of course, it can be called many times on the same GraphEmbedding.\n\n    \"\"\"\n\n    self.node_ids = list(g.networkx.nodes)\n\n    j_matrix = nx.adjacency_matrix(g.networkx)\n\n    N = j_matrix.shape[1]\n    M = j_matrix.nnz\n\n    self.r_ini = np.zeros(N, dtype=int)\n    self.r_len = np.zeros(N, dtype=int)\n    self.r_sum = np.zeros(N, dtype=float)\n    self.r_col = np.zeros(M, dtype=int)\n    self.r_wgt = np.zeros(M, dtype=float)\n\n    i = 0\n    for r in range(N):\n        self.r_ini[r] = i\n\n        i_col = j_matrix[[r], :].nonzero()[1]\n        L = len(i_col)\n\n        self.r_len[r] = L\n\n        for k in range(L):\n            c = i_col[k]\n            w = j_matrix[r, c]\n\n            self.r_sum[r] += w\n            self.r_col[i] = c\n            self.r_wgt[i] = w\n\n            i += 1\n\n    self.TotW = sum(self.r_sum)\n\n    converge, diverge = _random_walks(\n        self.r_ini,\n        self.r_len,\n        self.r_sum,\n        self.r_col,\n        self.r_wgt,\n        self.TotW,\n        self.n_jumps,\n        self.max_per_epoch if self.max_per_epoch is not None else self.n_jumps,\n    )\n\n    self.embeddings_ = Embeddings(\n        dimension=self.dimension,\n        num_elements=len(self.node_ids),\n        learn_step=self.learn_step,\n        bidirectional=self.bidirectional,\n    )\n    self.embeddings_.fit(converge, diverge)\n\n    return self\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.get_most_similar_nodes","title":"get_most_similar_nodes(node_id, k=5, metric='cosine', return_as_indices=False)","text":"

    Returns the k most similar nodes and the similarities

    Parameters:

    Name Type Description Default node_id object

    Id of the node that we want to search the similar nodes.

    required k int

    Number of most similar nodes to return

    5 metric str

    metric to use as a similarity.

    'cosine' return_as_indices bool

    if return the nodes as indices (False), or as node ids (True)

    False

    Returns:

    Type Description list

    list of k most similar nodes and list of similarities of the most similar nodes

    DataFrame

    A list of k most similar nodes as a pd.DataFrame[word: string, similarity: double]

    Source code in mercury/graph/embeddings/graphembeddings.py
    def get_most_similar_nodes(\n    self, node_id, k=5, metric=\"cosine\", return_as_indices=False\n):\n    \"\"\"\n    Returns the k most similar nodes and the similarities\n\n    Args:\n        node_id (object): Id of the node that we want to search the similar nodes.\n        k (int): Number of most similar nodes to return\n        metric (str): metric to use as a similarity.\n        return_as_indices (bool): if return the nodes as indices (False), or as node ids (True)\n\n    Returns:\n        (list): list of k most similar nodes and list of similarities of the most similar nodes\n        (DataFrame): A list of k most similar nodes as a `pd.DataFrame[word: string, similarity: double]`\n    \"\"\"\n    node_index = self.node_ids.index(node_id)\n\n    ordered_indices, ordered_similarities = (\n        self.embeddings_.get_most_similar_embeddings(node_index, k, metric)\n    )\n\n    if not return_as_indices:\n        nodes = list(np.array(self.node_ids)[ordered_indices])\n    else:\n        nodes = list(ordered_indices)\n\n    return pd.DataFrame({\"word\": nodes, \"similarity\": ordered_similarities})\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.GraphEmbedding.save","title":"save(file_name, save_embedding=False)","text":"

    Saves a GraphEmbedding to a compressed binary file with or without the embedding itself. It saves the graph's node names and the adjacency matrix as a sparse matrix.

    Parameters:

    Name Type Description Default file_name str

    The name of the file to which the GraphEmbedding will be saved.

    required save_embedding bool

    Since the embedding can be big and, if not trained, it is just a matrix of uniform random numbers it is possible avoiding saving it. In case it is not saved, loading the file will create a new random embedding. This parameter controls if the embedding is saved or not (the default value).

    False Source code in mercury/graph/embeddings/graphembeddings.py
    def save(self, file_name, save_embedding=False):\n    \"\"\"\n    Saves a GraphEmbedding to a compressed binary file with or without the embedding itself. It saves the graph's node names\n    and the adjacency matrix as a sparse matrix.\n\n    Args:\n        file_name (str): The name of the file to which the GraphEmbedding will be saved.\n        save_embedding (bool): Since the embedding can be big and, if not trained, it is just a matrix of uniform random numbers it is\n            possible avoiding saving it. In case it is not saved, loading the file will create a new random embedding. This parameter\n            controls if the embedding is saved or not (the default value).\n    \"\"\"\n    with bz2.BZ2File(file_name, \"w\") as f:\n        pickle.dump(GraphEmbedding.FILE_HEAD, f)\n        pickle.dump(save_embedding, f)\n        pickle.dump(self.embeddings_.dimension, f)\n\n        pickle.dump(self.node_ids, f)\n\n        np.save(f, self.r_ini)\n        np.save(f, self.r_len)\n        np.save(f, self.r_sum)\n        np.save(f, self.r_col)\n        np.save(f, self.r_wgt)\n\n        pickle.dump(self.TotW, f)\n\n        if save_embedding:\n            np.save(f, self.embeddings_.embeddings_matrix_)\n\n        pickle.dump(GraphEmbedding.FILE_END, f)\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec","title":"mercury.graph.embeddings.SparkNode2Vec(dimension=None, sampling_ratio=1.0, num_epochs=10, num_paths_per_node=1, batch_size=1000000, w2v_max_iter=1, w2v_num_partitions=1, w2v_step_size=0.025, w2v_min_count=5, path_cache=None, use_cached_rw=False, n_partitions_cache=10, load_file=None)","text":"

    Bases: BaseClass

    Create or reload a SparkNode2Vec embedding mapping the nodes of a graph.

    Parameters:

    Name Type Description Default dimension int

    The number of columns in the embedding. See note the notes in Embeddings for details. (This parameter will be ignored when load_file is used.)

    None sampling_ratio float

    The proportion from the total number of nodes to be used in parallel at each step (whenever possible).

    1.0 num_epochs int

    Number of epochs. This is the total number of steps the iteration goes through. At each step, sampling_ratio times the total number of nodes paths will be computed in parallel.

    10 num_paths_per_node int

    The amount of random walks to source from each node.

    1 batch_size int

    This forces caching the random walks computed so far and breaks planning each time this number of epochs is reached. The default value is a high number to avoid this entering at all. In really large jobs, you may want to set this parameter to avoid possible overflows even if it can add some extra time to the process. Note that with a high number of epochs and nodes resource requirements for the active part of your random walks can be high. This allows to \"cache a continue\" so to say.

    1000000 w2v_max_iter int

    This is the Spark Word2Vec parameter maxIter, the default value is the original default value.

    1 w2v_num_partitions int

    This is the Spark Word2Vec parameter numPartitions, the default value is the original default value.

    1 w2v_step_size float

    This is the Spark Word2Vec parameter stepSize, the default value is the original default value.

    0.025 w2v_min_count int

    This is the Spark Word2Vec parameter minCount, the default value is the original default value (5). Is the minimum number of times that a node has to appear to generate an embedding.

    5 path_cache str

    Folder where random walks will be stored, the default value is None which entails that random walks will not be stored.

    None use_cached_rw bool

    Flag that indicates if random walks should be read from disk (hence, they will not be computed again). Setting this parameter to True requires a valid path_cache.

    False n_partitions_cache int

    Number of partitions that will be used when storing the random walks, to optimize read access. The default value is 10.

    10 load_file str

    (optional) The full path to a parquet file containing a serialized SparkNode2Vec object. This file must be created using SparkNode2Vec.save().

    None Source code in mercury/graph/embeddings/spark_node2vec.py
    def __init__(\n    self,\n    dimension=None,\n    sampling_ratio=1.0,\n    num_epochs=10,\n    num_paths_per_node=1,\n    batch_size=1000000,\n    w2v_max_iter=1,\n    w2v_num_partitions=1,\n    w2v_step_size=0.025,\n    w2v_min_count=5,\n    path_cache=None,\n    use_cached_rw=False,\n    n_partitions_cache=10,\n    load_file=None,\n):\n    \"\"\"\n    Create or reload a SparkNode2Vec embedding mapping the nodes of a graph.\n\n    Args:\n        dimension (int): The number of columns in the embedding. See note the notes in `Embeddings` for details. (This parameter will be\n            ignored when `load_file` is used.)\n        sampling_ratio (float): The proportion from the total number of nodes to be used in parallel at each step (whenever possible).\n        num_epochs (int): Number of epochs. This is the total number of steps the iteration goes through. At each step, sampling_ratio\n            times the total number of nodes paths will be computed in parallel.\n        num_paths_per_node (int): The amount of random walks to source from each node.\n        batch_size (int): This forces caching the random walks computed so far and breaks planning each time this number of epochs\n            is reached. The default value is a high number to avoid this entering at all. In really large jobs, you may want to\n            set this parameter to avoid possible overflows even if it can add some extra time to the process. Note that with a high\n            number of epochs and nodes resource requirements for the active part of your random walks can be high. This allows to\n            \"cache a continue\" so to say.\n        w2v_max_iter (int): This is the Spark Word2Vec parameter maxIter, the default value is the original default value.\n        w2v_num_partitions (int): This is the Spark Word2Vec parameter numPartitions, the default value is the original default value.\n        w2v_step_size (float): This is the Spark Word2Vec parameter stepSize, the default value is the original default value.\n        w2v_min_count (int): This is the Spark Word2Vec parameter minCount, the default value is the original default value (5). Is the\n            minimum number of times that a node has to appear to generate an embedding.\n        path_cache (str): Folder where random walks will be stored, the default value is None which entails that random walks will not\n            be stored.\n        use_cached_rw (bool): Flag that indicates if random walks should be read from disk (hence, they will not be computed again).\n            Setting this parameter to True requires a valid path_cache.\n        n_partitions_cache (int): Number of partitions that will be used when storing the random walks, to optimize read access.\n            The default value is 10.\n        load_file (str): (optional) The full path to a parquet file containing a serialized SparkNode2Vec object. This file must be created\n            using SparkNode2Vec.save().\n    \"\"\"\n    self.dimension = dimension\n    self.sampling_ratio = sampling_ratio\n    self.num_epochs = num_epochs\n    self.num_paths_per_node = num_paths_per_node\n    self.batch_size = batch_size\n    self.w2v_max_iter = w2v_max_iter\n    self.w2v_num_partitions = w2v_num_partitions\n    self.w2v_step_size = w2v_step_size\n    self.w2v_min_count = w2v_min_count\n    self.path_cache = path_cache\n    self.use_cached_rw = use_cached_rw\n    self.n_partitions_cache = n_partitions_cache\n    self.load_file = load_file\n\n    if self.load_file is not None:\n        self._load(self.load_file)\n        return\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.embedding","title":"embedding()","text":"

    Return all embeddings.

    Returns:

    Type Description DataFrame

    All embeddings as a DataFrame[word: string, vector: vector].

    Source code in mercury/graph/embeddings/spark_node2vec.py
    def embedding(self):\n    \"\"\"\n    Return all embeddings.\n\n    Returns:\n        (DataFrame): All embeddings as a `DataFrame[word: string, vector: vector]`.\n    \"\"\"\n    if not hasattr(self, \"node2vec_\"):\n        return\n\n    return self.node2vec_.getVectors()\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.fit","title":"fit(G)","text":"

    Train the embedding by doing random walks.

    Random walk paths are available in attribute paths_.

    Parameters:

    Name Type Description Default G Graph

    A mercury.graph Graph object. The embedding will be created so that each row in the embedding maps a node ID in G. (This parameter will be ignored when load_file is used.)

    required

    Returns:

    Type Description self

    Fitted self (or raises an error)

    Source code in mercury/graph/embeddings/spark_node2vec.py
    def fit(self, G: Graph):\n    \"\"\"\n    Train the embedding by doing random walks.\n\n    Random walk paths are available in attribute `paths_`.\n\n    Args:\n        G (mercury.graph.core.Graph): A `mercury.graph` Graph object. The embedding will be created so that each row in the embedding maps\n            a node ID in G. (This parameter will be ignored when `load_file` is used.)\n\n    Returns:\n        (self): Fitted self (or raises an error)\n    \"\"\"\n\n    if self.path_cache is None:\n        if self.use_cached_rw:\n            logging.warning(\n                \"Wrong options (use_cached_rw and no path_cache). \"\n                \"Paths will be recomputed.\"\n            )\n        self.use_cached_rw = False\n\n    if not self.use_cached_rw:\n        paths = (\n            self._run_rw(G)\n            .withColumn(\"size\", f.size(\"random_walks\"))\n            .where(f.col(\"size\") > 1)\n            .drop(\"size\")\n        )\n\n        if self.path_cache is not None:\n            (\n                paths.repartition(self.n_partitions_cache)\n                .write.mode(\"overwrite\")\n                .parquet(\"%s/block=0\" % self.path_cache)\n            )\n\n        if self.num_paths_per_node > 1:\n            for block_id in range(1, self.num_paths_per_node):\n                new_paths = (\n                    self._run_rw(G)\n                    .withColumn(\"size\", f.size(\"random_walks\"))\n                    .where(f.col(\"size\") > 1)\n                    .drop(\"size\")\n                )\n                if self.path_cache is None:\n                    paths = paths.unionByName(new_paths)\n                else:\n                    (\n                        new_paths.repartition(self.n_partitions_cache)\n                        .write.mode(\"overwrite\")\n                        .parquet(\"%s/block=%d\" % (self.path_cache, block_id))\n                    )\n                    # With this, we clear the persisted dataframe\n                    new_paths.unpersist()\n\n    if self.path_cache is None:\n        self.paths_ = paths.persist()\n    else:\n        self.paths_ = (\n            SparkInterface()\n            .read_parquet(self.path_cache)\n            .drop(\"block\")\n            .repartition(self.n_partitions_cache)\n            .persist()\n        )\n\n    w2v = Word2Vec(\n        vectorSize=self.dimension,\n        maxIter=self.w2v_max_iter,\n        numPartitions=self.w2v_num_partitions,\n        stepSize=self.w2v_step_size,\n        inputCol=\"random_walks\",\n        outputCol=\"model\",\n        minCount=self.w2v_min_count,\n    )\n\n    self.node2vec_ = w2v.fit(self.paths_)\n\n    return self\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.get_most_similar_nodes","title":"get_most_similar_nodes(node_id, k=5)","text":"

    Returns the k most similar nodes and a similarity measure.

    Parameters:

    Name Type Description Default node_id str

    Id of the node we want to search.

    required k int

    Number of most similar nodes to return

    5

    Returns:

    Type Description DataFrame

    A list of k most similar nodes (using cosine similarity) as a DataFrame[word: string, similarity: double]

    Source code in mercury/graph/embeddings/spark_node2vec.py
    def get_most_similar_nodes(self, node_id, k=5):\n    \"\"\"\n    Returns the k most similar nodes and a similarity measure.\n\n    Args:\n        node_id (str): Id of the node we want to search.\n        k (int): Number of most similar nodes to return\n\n    Returns:\n        (DataFrame): A list of k most similar nodes (using cosine similarity) as a `DataFrame[word: string, similarity: double]`\n    \"\"\"\n    if not hasattr(self, \"node2vec_\"):\n        return\n\n    return self.node2vec_.findSynonyms(node_id, k)\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.model","title":"model()","text":"

    Returns the Spark Word2VecModel object.

    Returns:

    Type Description Word2VecModel

    The Spark Word2VecModel of the embedding to use its API directly.

    Source code in mercury/graph/embeddings/spark_node2vec.py
    def model(self):\n    \"\"\"\n    Returns the Spark Word2VecModel object.\n\n    Returns:\n        (pyspark.ml.feature.Word2VecModel): The Spark Word2VecModel of the embedding to use its API directly.\n    \"\"\"\n    if not hasattr(self, \"node2vec_\"):\n        return\n\n    return self.node2vec_\n
    "},{"location":"reference/embeddings/#mercury.graph.embeddings.SparkNode2Vec.save","title":"save(file_name)","text":"

    Saves the internal Word2VecModel to a human-readable (JSON) model metadata as a Parquet formatted data file.

    The model may be loaded using SparkNode2Vec(load_file='path/file')

    Parameters:

    Name Type Description Default file_name str

    The name of the file to which the Word2VecModel will be saved.

    required Source code in mercury/graph/embeddings/spark_node2vec.py
    def save(self, file_name):\n    \"\"\"\n    Saves the internal Word2VecModel to a human-readable (JSON) model metadata as a Parquet formatted data file.\n\n    The model may be loaded using SparkNode2Vec(load_file='path/file')\n\n    Args:\n        file_name (str): The name of the file to which the Word2VecModel will be saved.\n    \"\"\"\n    if not hasattr(self, \"node2vec_\"):\n        return\n\n    return self.node2vec_.save(file_name)\n
    "},{"location":"reference/ml/","title":"mercury.graph.ml","text":""},{"location":"reference/ml/#mercury.graph.ml.LouvainCommunities","title":"mercury.graph.ml.LouvainCommunities(min_modularity_gain=0.001, max_pass=2, max_iter=10, resolution=1, all_partitions=True, verbose=True)","text":"

    Bases: BaseClass

    Class that defines the functions that run a PySpark implementation of the Louvain algorithm to find the partition that maximizes the modularity of an undirected graph (as in 1).

    This version of the algorithm differs from 1 in that the reassignment of nodes to new communities is calculated in parallel, not sequentially. That is, all nodes are reassigned at the same time and conflicts (i.e., 1 -> C2 and 2 -> C1) are resolved with a simple tie-breaking rule. This version also introduces the resolution parameter gamma, as in 2.

    Contributed by Arturo Soberon Cedillo, Jose Antonio Guzman Vazquez and Isaac Dodanim Hernandez Garcia.

    1. Blondel V D, Guillaume J-L, Lambiotte R and Lefebvre E (2008). Fast unfolding of communities in large networks. Journal of Statistical Mechanics: Theory and Experiment, 2008. https://doi.org/10.1088/1742-5468/2008/10/p10008 \u21a9\u21a9

    2. Aynaud T, Blondel V D, Guillaume J-L and Lambiotte R (2013). Multilevel local optimization of modularity. Graph Partitioning (315--345), 2013.\u00a0\u21a9

    Parameters:

    Name Type Description Default min_modularity_gain float

    Modularity gain threshold between each pass. The algorithm stops if the gain in modularity between the current pass and the previous one is less than the given threshold.

    0.001 max_pass int

    Maximum number of passes.

    2 max_iter int

    Maximum number of iterations within each pass.

    10 resolution float

    The resolution parameter gamma. Its value must be greater or equal to zero. If resolution is less than 1, modularity favors larger communities, while values greater than 1 favor smaller communities.

    1 all_partitions bool

    If True, the function will return all the partitions found at each step of the algorithm (i.e., pass0, pass1, pass2, ..., pass20). If False, only the last (and best) partition will be returned.

    True verbose bool

    If True, print progress information during the Louvain algorithm execution. Defaults to True.

    True Source code in mercury/graph/ml/louvain.py
    def __init__(\n    self,\n    min_modularity_gain=1e-03,\n    max_pass=2,\n    max_iter=10,\n    resolution: Union[float, int] = 1,\n    all_partitions=True,\n    verbose=True,\n):\n    self.min_modularity_gain = min_modularity_gain\n    self.max_pass = max_pass\n    self.max_iter = max_iter\n    self.resolution = resolution\n    self.all_partitions = all_partitions\n    self.verbose = verbose\n\n    # Check resolution\n    if resolution < 0:\n        exceptionMsg = f\"Resolution value is {resolution} and cannot be < 0.\"\n        raise ValueError(exceptionMsg)\n
    "},{"location":"reference/ml/#mercury.graph.ml.LouvainCommunities.fit","title":"fit(g)","text":"

    Parameters:

    Name Type Description Default g Graph

    A mercury graph structure.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error).

    Source code in mercury/graph/ml/louvain.py
    def fit(self, g: Graph):\n    \"\"\"\n    Args:\n        g (Graph): A mercury graph structure.\n\n    Returns:\n        (self): Fitted self (or raises an error).\n    \"\"\"\n    edges = g.graphframe.edges\n\n    # Verify edges input\n    self._verify_data(\n        df=edges,\n        expected_cols_grouping=[\"src\", \"dst\"],\n        expected_cols_others=[\"weight\"],\n    )\n\n    # Init dataframe to be returned\n    ret = (\n        edges.selectExpr(\"src as id\")\n        .unionByName(edges.selectExpr(\"dst as id\"))\n        .distinct()\n        .withColumn(\"pass0\", F.row_number().over(Window.orderBy(\"id\")))\n    ).checkpoint()\n\n    # Convert edges to anonymized src's and dst's\n    edges = (\n        edges.selectExpr(\"src as src0\", \"dst as dst0\", \"weight\")\n        .join(other=ret.selectExpr(\"id as src0\", \"pass0 as src\"), on=\"src0\")\n        .join(other=ret.selectExpr(\"id as dst0\", \"pass0 as dst\"), on=\"dst0\")\n        .select(\"src\", \"dst\", \"weight\")\n    ).checkpoint()\n\n    # Calculate m and initialize modularity\n    m = self._calculate_m(edges)\n    modularity0 = -1.0\n\n    # Begin pass\n    canPass, _pass = True, 0\n    while canPass:\n\n        # Declare naive partition\n        p1 = (\n            edges.selectExpr(\"src as id\")\n            .unionByName(edges.selectExpr(\"dst as id\"))\n            .distinct()\n            .withColumn(\"c\", F.col(\"id\"))\n        )\n\n        # Begin iterations within pass\n        canIter, _iter = True, 0\n        # Carry reference to previously cached p2 to call unpersist()\n        prev_p2 = None\n        while canIter:\n\n            if _iter >= self.max_iter:\n                break\n\n            # Print progress\n            if self.verbose:\n                print(f\"Starting Pass {_pass} Iteration {_iter}.\")\n\n            # Create new partition and check if movements were made\n            p2 = self._reassign_all(edges, p1)\n            # Break complex lineage caused by loops first\n            p2 = p2.checkpoint()\n            p2.cache()\n\n            canIter = len(p2.where(\"cx != cj\").take(1)) > 0\n            if canIter:\n                p1 = p2.selectExpr(\"id\", \"cj as c\")\n            if prev_p2 is not None:\n                prev_p2.unpersist()\n            prev_p2 = p2\n            _iter += 1\n\n        # Calculate new modularity and update pass counter\n        modularity1 = self._calculate_modularity(edges=edges, partition=p1, m=m)\n\n        # Declare stopping criterion and update old modularity\n        canPass = (modularity1 - modularity0 > self.min_modularity_gain) and (\n            _pass < self.max_pass\n        )\n        modularity0 = modularity1\n\n        self.modularity_ = modularity0\n\n        # Update ret and compress graph\n        if canPass:\n            ret = ret.join(\n                other=p1.selectExpr(f\"id as pass{_pass}\", f\"c as pass{_pass + 1}\"),\n                on=f\"pass{_pass}\",\n            ).checkpoint()\n\n            edges = (\n                self._label_edges(edges, p1)\n                .select(\"cSrc\", \"cDst\", \"weight\")\n                .groupBy(\"cSrc\", \"cDst\")\n                .agg(F.sum(\"weight\").alias(\"weight\"))\n                .selectExpr(\"cSrc as src\", \"cDst as dst\", \"weight\")\n            ).checkpoint()\n\n        prev_p2.unpersist()\n        _pass += 1\n\n    # Return final dataframe with sorted columns\n    if self.all_partitions:\n\n        # Return sorted columns\n        cols = self._sort_passes(ret)\n        ret = ret.select(cols)\n\n    # Return final dataframe with id & community\n    else:\n        _last = self._last_pass(ret)\n        ret = ret.selectExpr(\"id as node_id\", f\"{_last} as cluster\")\n\n    self.labels_ = ret\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.SparkRandomWalker","title":"mercury.graph.ml.SparkRandomWalker(num_epochs=10, batch_size=1, n_sampling_edges=None)","text":"

    Bases: BaseClass

    Class to perform random walks from a specific source_id node within a given Graph

    Parameters:

    Name Type Description Default num_epochs int

    Number of epochs. This is the total number of steps the iteration goes through.

    10 batch_size int

    This forces caching the random walks computed so far and breaks planning each time this number of epochs is reached. The default value is a high number to avoid this entering at all. In really large jobs, you may want to set this parameter to avoid possible overflows even if it can add some extra time to the process. Note that with a high number of epochs and nodes resource requirements for the active part of your random walks can be high. This allows to \"cache a continue\" so to say.

    1 n_sampling_edges int

    by setting this parameter you can limit at each timestep the number of new paths opened from each node. This is useful when the graph contains nodes with very high out-degree, where running the algorithm several epochs is not feasible. When using this parameter, the graph will consider only at most edge_sampling outgoing edges at each epoch for each path. If the last node of the path contains more than edge_sampling the selected edges are sampled using its weight.

    None Source code in mercury/graph/ml/spark_randomwalker.py
    def __init__(self, num_epochs=10, batch_size=1, n_sampling_edges=None):\n    \"\"\"\n    Class to perform random walks from a specific source_id node within a given Graph\n\n    Args:\n        num_epochs (int): Number of epochs. This is the total number of steps the iteration goes through.\n        batch_size (int): This forces caching the random walks computed so far and breaks planning each time this number of epochs\n            is reached. The default value is a high number to avoid this entering at all. In really large jobs, you may want to\n            set this parameter to avoid possible overflows even if it can add some extra time to the process. Note that with a high\n            number of epochs and nodes resource requirements for the active part of your random walks can be high. This allows to\n            \"cache a continue\" so to say.\n        n_sampling_edges (int): by setting this parameter you can limit at each timestep the number of new paths opened from each node.\n            This is useful when the graph contains nodes with very high out-degree, where running the algorithm several epochs is\n            not feasible. When using this parameter, the graph will consider only at most `edge_sampling` outgoing edges at each\n            epoch for each path. If the last node of the path contains more than `edge_sampling` the selected edges are sampled\n            using its weight.\n    \"\"\"\n    self.num_epochs = num_epochs\n    self.batch_size = batch_size\n    self.n_sampling_edges = n_sampling_edges\n
    "},{"location":"reference/ml/#mercury.graph.ml.SparkRandomWalker.fit","title":"fit(G, source_id)","text":"

    Perform random walks from a specific source_id node within a given Graph

    Parameters:

    Name Type Description Default G mercury.graph Graph asset

    A mercury.graph Graph

    required source_id int / str / list

    the source vertex or list for vertices to start the random walks.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error)

    Attribute paths_ contains a Spark Dataframe with a columns random_walks containing an array of the elements of the path walked and another column with the corresponding weights. The weights represent the probability of following that specific path starting from source_id.

    Source code in mercury/graph/ml/spark_randomwalker.py
    def fit(self, G: Graph, source_id):\n    \"\"\"\n    Perform random walks from a specific source_id node within a given Graph\n\n    Args:\n        G (mercury.graph Graph asset): A `mercury.graph` Graph\n        source_id (int/str/list): the source vertex or list for vertices to start the random walks.\n\n    Returns:\n        (self): Fitted self (or raises an error)\n\n    Attribute `paths_` contains a Spark Dataframe with a columns `random_walks` containing an array of the elements\n    of the path walked and another column with the corresponding weights. The weights represent the probability of\n    following that specific path starting from source_id.\n    \"\"\"\n    self.paths_ = self._run_rw(G, source_id)\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.SparkSpreadingActivation","title":"mercury.graph.ml.SparkSpreadingActivation(attribute='influence', spreading_factor=0.2, transfer_function='weighted', steps=1, influenced_by=False)","text":"

    Bases: BaseClass

    This class is a model that represents a \u201cword-of-mouth\u201d scenario where a node influences his neighbors, from where the influence spreads to other neighbors, and so on.

    At the end of the diffusion process, we inspect the amount of influence received by each node. Using a threshold-based technique, a node that is currently not influenced can be declared to be a potential future one, based on the influence that has been accumulated.

    The diffusion model is based on Spreading Activation (SPA) techniques proposed in cognitive psychology and later used for trust metric computations. For more details, please see paper entitled \"Social Ties and their Relevance to Churn in Mobile Telecom Networks\"

    Parameters:

    Name Type Description Default attribute str

    Column name which will store the amount of influence spread

    'influence' spreading_factor float

    Percentage of influence to distribute. Low values favor influence proximity to the source of injection, while high values allow the influence to also reach nodes which are further away. It must be a value in the range (0,1). Default value is 0.2

    0.2 transfer_function str

    Allowed values: \"weighted\" or \"unweighted\". Once a node decides what fraction of energy to distribute, the next step is to decide what fraction of the energy is transferred to each neighbor. This is controlled by the Transfer Function. If \"weighted\" then the energy distributed along the directed edge depends on its relatively weight compared to the sum of weights of all outgoing edges of X. If \"unweighted\", then the energy distributed along the edge is independent of its relatively weight. 'weighted' steps int

    Number of steps to perform

    1 influenced_by bool

    if True, and extra column \"influenced_by\" is calculated which contains the seed nodes that have spread some influence to a given node. When True, the ids of the nodes cannot contain commas \",\". Note that seed_nodes will have at least their own (remaining) influence

    False Source code in mercury/graph/ml/spark_spreadactivation.py
    def __init__(\n    self,\n    attribute: str = \"influence\",\n    spreading_factor: float = 0.2,\n    transfer_function: str = \"weighted\",\n    steps: int = 1,\n    influenced_by: bool = False,\n):\n    self.attribute = attribute\n    self.spreading_factor = spreading_factor\n    self.transfer_function = transfer_function\n    self.steps = steps\n    self.influenced_by = influenced_by\n
    "},{"location":"reference/ml/#mercury.graph.ml.SparkSpreadingActivation.fit","title":"fit(g, seed_nodes)","text":"

    Perform all iterations of spread_activation

    Parameters:

    Name Type Description Default g Graph

    A mercury.graph Graph object.

    required seed_nodes Union[List, DataFrame]

    Collection of nodes that are the \"seed\" or are the source to spread the influence. It must be pyspark dataframe with column 'id' or python list

    required

    Returns:

    Type Description self

    Fitted self

    Source code in mercury/graph/ml/spark_spreadactivation.py
    def fit(\n    self,\n    g: Graph,\n    seed_nodes: Union[List, \"pyspark.sql.DataFrame\"],\n):\n    \"\"\"\n    Perform all iterations of spread_activation\n\n    Args:\n        g (mercury.graph.core.Graph): A `mercury.graph` Graph object.\n        seed_nodes (Union[List, pyspark.sql.DataFrame]): Collection of nodes that are the \"seed\" or are the source to spread\n            the influence. It must be pyspark dataframe with column 'id' or python list\n\n    Returns:\n        (self): Fitted self\n    \"\"\"\n\n    # Set seed nodes which are the source of influence\n    g = self._set_seed_nodes(g, seed_nodes)\n\n    # Compute degrees\n    g = self._compute_degrees(g)\n\n    # Number of iterations specified for spread activation\n    for _ in range(0, self.steps, 1):\n        g = self._spread_activation_step(\n            g,\n        )\n\n    # Graph with updated attributes\n    self.fitted_graph_ = g\n    # Influences as DataFrame\n    self.influences_ = self.fitted_graph_.nodes_as_dataframe().select(\n        \"id\", \"influence\"\n    )\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.SpectralClustering","title":"mercury.graph.ml.SpectralClustering(n_clusters=2, mode='networkx', max_iterations=10, random_state=0)","text":"

    Bases: BaseClass

    Implementation of the spectral clustering algorithm which detect communities inside a graph.

    Contributed by Gibran Gabriel Otazo Sanchez.

    Parameters:

    Name Type Description Default n_clusters int

    The number of clusters that you want to detect.

    2 random_state int

    Seed for reproducibility

    0 mode str

    Calculation mode. Pass 'networkx' for using pandas + networkx or 'spark' for spark + graphframes

    'networkx' max_iterations int

    Max iterations parameter (only used if mode==spark)

    10 Source code in mercury/graph/ml/spectral.py
    def __init__(\n    self, n_clusters=2, mode=\"networkx\", max_iterations=10, random_state=0\n):\n    self.n_clusters = n_clusters\n    self.mode = mode\n    self.max_iterations = max_iterations\n    self.random_state = random_state\n\n    if self.mode not in (\"networkx\", \"spark\"):\n        raise ValueError(\"Error: Mode must be either 'networkx' or 'spark'\")\n
    "},{"location":"reference/ml/#mercury.graph.ml.SpectralClustering.fit","title":"fit(graph)","text":"

    Find the optimal clusters of a given graph. The function returns nothing, but saves the clusters and the modularity in the object self.

    Parameters:

    Name Type Description Default graph Graph

    A mercury graph structure.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error)

    Source code in mercury/graph/ml/spectral.py
    def fit(self, graph: Graph):\n    \"\"\"\n    Find the optimal clusters of a given graph. The function returns nothing, but saves the clusters and\n    the modularity in the object self.\n\n    Args:\n        graph (Graph): A mercury graph structure.\n\n    Returns:\n        (self): Fitted self (or raises an error)\n\n    \"\"\"\n    if self.mode == \"networkx\":\n        self._fit_networkx(graph)\n    else:\n        self._fit_spark(graph)\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.Transition","title":"mercury.graph.ml.Transition()","text":"

    Bases: BaseClass

    Create an interface class to manage the adjacency matrix of a directed graph as a transition matrix. This enables computing distributions of probabilities over the nodes after a given number of iterations.

    Source code in mercury/graph/ml/transition.py
    def __init__(self):\n    self.fitted_graph_ = None\n
    "},{"location":"reference/ml/#mercury.graph.ml.Transition.fit","title":"fit(G)","text":"

    Converts the adjacency matrix into a transition matrix. Transition matrices are used to compute the distribution of probability of being in each of the nodes (or states) of a directed graph (or Markov process). The distribution for state s is:

    • \\(s_t = T*s_{t-1}\\)

    Where:

    T is the transition matrix. After calling.fit(), the adjacency matrix is the transition matrix. You can use .to_pandas() to see it. \\(s_{t-1}\\) is the previous state.

    What .fit() does is scaling the non-zero rows to make them sum 1 as they are probability distributions and make the zero rows recurrent states. A recurrent state is a final state, a state whose next state is itself.

    Parameters:

    Name Type Description Default G Graph

    A mercury.graph Graph.

    required

    Returns:

    Type Description self

    Fitted self (or raises an error).

    Note

    If created using NetworkX directly, the name of the weight must be 'weight' and must be positive. The recommended way to create the graph is using .set_row() which will always name the weight as 'weight' but does not check the value.

    Source code in mercury/graph/ml/transition.py
    def fit(self, G: Graph):\n    \"\"\"\n    Converts the adjacency matrix into a transition matrix. Transition matrices are used to compute the distribution of probability\n    of being in each of the nodes (or states) of a directed graph (or Markov process). The distribution for state s is:\n\n    * $s_t = T*s_{t-1}$\n\n    Where:\n\n    T is the transition matrix. After calling.fit(), the adjacency matrix is the transition matrix. You can use .to_pandas() to see it.\n    $s_{t-1}$ is the previous state.\n\n    What .fit() does is scaling the non-zero rows to make them sum 1 as they are probability distributions and make the zero rows\n    recurrent states. A recurrent state is a final state, a state whose next state is itself.\n\n    Args:\n        G (Graph): A `mercury.graph` Graph.\n\n    Returns:\n        (self): Fitted self (or raises an error).\n\n    Note:\n        If created using NetworkX directly, the name of the weight must be 'weight' and must be positive. The recommended way\n        to create the graph is using .set_row() which will always name the weight as 'weight' but does not check the value.\n\n    \"\"\"\n    names = list(G.networkx.nodes)\n    adj_m = nx.adjacency_matrix(G.networkx, weight=\"weight\", dtype=float)\n\n    with warnings.catch_warnings():\n        warnings.simplefilter(\"ignore\")\n\n        for i in range(adj_m.shape[0]):\n            row = adj_m[[i], :]\n            tot = row.sum()\n\n            if tot == 0:\n                row[0, i] = 1\n            else:\n                row = row / tot\n\n            adj_m[[i], :] = row\n\n    df = pd.DataFrame(adj_m.todense(), index=names, columns=names)\n    self.fitted_graph_ = Graph(nx.from_pandas_adjacency(df, create_using=nx.DiGraph))\n\n    return self\n
    "},{"location":"reference/ml/#mercury.graph.ml.Transition.to_pandas","title":"to_pandas(num_iterations=1)","text":"

    Returns the adjacency (which is the transition matrix after fit() was called) for a given number of iterations as a pandas dataframe with labeled rows and columns.

    Parameters:

    Name Type Description Default num_iterations int

    If you want to compute the matrix for a different number of iterations, k, you can use this argument to raise the matrix to any non negative integer, since \\(s_{t+k} = T^k*s_t\\)

    1

    Returns:

    Type Description DataFrame

    The transition matrix for num_iterations.

    Note

    This method does not automatically call fit(). This allows inspecting the adjacency matrix as a pandas dataframe. The result of computing num_iterations will not make sense if fit() has not been called before to_pandas().

    Source code in mercury/graph/ml/transition.py
    def to_pandas(self, num_iterations=1):\n    \"\"\"\n    Returns the adjacency (which is the transition matrix after `fit()` was called) for a given number of iterations as a pandas\n    dataframe with labeled rows and columns.\n\n    Args:\n        num_iterations (int): If you want to compute the matrix for a different number of iterations, k, you can use this argument to\n            raise the matrix to any non negative integer, since $s_{t+k} = T^k*s_t$\n\n    Returns:\n        (pd.DataFrame): The transition matrix for num_iterations.\n\n    Note:\n        This method does not automatically call `fit()`. This allows inspecting the adjacency matrix as a pandas dataframe.\n        The result of computing num_iterations will not make sense if `fit()` has not been called before `to_pandas()`.\n\n    \"\"\"\n    if self.fitted_graph_ is None:\n        raise ValueError(\"Error: fit() must be called first.\")\n\n    names = list(self.fitted_graph_.networkx.nodes)\n    adj_m = nx.adjacency_matrix(self.fitted_graph_.networkx, weight=\"weight\").todense()\n\n    if num_iterations != 1:\n        adj_m = matrix_power(adj_m, num_iterations)\n\n    return pd.DataFrame(adj_m, index=names, columns=names)\n
    "},{"location":"reference/viz/","title":"mercury.graph.viz","text":""},{"location":"reference/viz/#mercury.graph.viz.Moebius","title":"mercury.graph.viz.Moebius(G)","text":"

    Moebius class for visualizing graphs using JavaScript and HTML.

    Note

    Moebius is currently only compatible with Google Colab and Jupyter Notebooks Classic (prior to v7).

    Usage
    from mercury.graph.viz import Moebius\n\nG = ... # A graph object\nmoebius = Moebius(G)\nmoebius.show()\n

    Attributes:

    Name Type Description G Graph

    The graph to be visualized.

    use_spark bool

    Flag indicating if Spark is used.

    front_pat str

    Path to the frontend resources.

    _int_id_map dict

    A dictionary mapping node IDs to integer IDs.

    name() dict

    The instance name of the object required by the JS callback mechanism.

    Source code in mercury/graph/viz/moebius.py
    def __init__(self, G):\n\n    if HTML is None:\n        raise ImportError('IPython is not installed')\n\n    self.G = G\n    self.use_spark = self.G._as_networkx is None\n    self.front_pat = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + '/frontend'\n    self._int_id_map = {node['id'] : i for i, node in enumerate(self.G.nodes)}\n\n    # Define callback for JS interactions within Google Colab\n    if importlib.util.find_spec('google') is not None and importlib.util.find_spec('google.colab') is not None:\n        from google.colab import output\n        from IPython import get_ipython\n\n        def colab_execute_python(code):\n            # Use get_ipython() to access the Moebius object defined by the user in a Colab cell\n            get_ipython().run_cell(f\"_temp_colab_execute_python_result = {code}\")\n            return get_ipython().user_ns[\"_temp_colab_execute_python_result\"]\n\n        output.register_callback(\"notebook.colab_execute_python\", colab_execute_python)\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.name","title":"name property","text":"

    Get the instance name of the object which is required by the JS callback mechanism.

    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.FHT","title":"FHT(fn)","text":"

    Syntactic sugar for display(HTML(filename = fn))

    Source code in mercury/graph/viz/moebius.py
    def FHT(self, fn):\n    \"\"\"\n    Syntactic sugar for display(HTML(filename = fn))\n    \"\"\"\n\n    display(HTML(filename = fn))\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.FJS","title":"FJS(fn)","text":"

    Syntactic sugar for display(Javascript(filename = fn))

    Source code in mercury/graph/viz/moebius.py
    def FJS(self, fn):\n    \"\"\"\n    Syntactic sugar for display(Javascript(filename = fn))\n    \"\"\"\n\n    display(Javascript(filename = fn))\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.JS","title":"JS(s)","text":"

    Syntactic sugar for display(Javascript())

    Source code in mercury/graph/viz/moebius.py
    def JS(self, s):\n    \"\"\"\n    Syntactic sugar for display(Javascript())\n    \"\"\"\n\n    display(Javascript(s))\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.__getitem__","title":"__getitem__(item)","text":"

    Add support for the [] operator.

    Source code in mercury/graph/viz/moebius.py
    def __getitem__(self, item):\n    \"\"\"\n    Add support for the [] operator.\n    \"\"\"\n\n    return self._get_adjacent_nodes_moebius(item)\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.__str__","title":"__str__()","text":"

    Convert the object via str()

    Source code in mercury/graph/viz/moebius.py
    def __str__(self):\n    \"\"\"\n    Convert the object via str()\n    \"\"\"\n\n    return 'Moebius(%s)' % str(self.G)\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.node_or_edge_config","title":"node_or_edge_config(text_is=None, color_is=None, colors=None, size_is=None, size_range=None, size_scale='linear')","text":"

    Create a node_config or edge_config configuration dictionary for show() in an understandable way.

    Parameters:

    Name Type Description Default text_is str

    The node/edge attribute to be displayed as text. Use the string \u00ecd to draw the node id (regardless of the column having another name) or any valid node attribute name.

    None color_is str

    A categorical node/edge attribute that can be represented as a color. This will also enable a legend interface where categories can be individually shown or hidden.

    None colors dict

    The colors for each category defined as a dictionary. The keys are possible outcomes of category. The values are html RGB strings. E.g., .draw(category = 'size', colors = {'big' : '#c0a080', 'small' : '#a0c080'}) where 'big' and 'small' are possible values of the category 'size'.

    None size_is str

    The node attribute to be displayed as the size of the nodes. Use the string id to set the node id (regardless of the column having another name) or any valid node attribute name. See the options in the Moebius configuration menu to set minimum, maximum sizes, linear or logarithmic scale, etc.

    None size_range List of two numbers

    Combined with edge_label, this parameter controls the values in the variable that correspond to the minimum and maximum displayed sizes. The values below or equal the first value will be displayed with the base radius (that depends on the zoom) and the values above or equal to the second value will be shown with the maximum radius.

    None size_scale (linear, power, sqrt or log)

    Combined with edge_label, the scale used to convert the value in the variable to the displayed radius.

    'linear'

    Returns:

    Type Description dict

    The node configuration dictionary

    Source code in mercury/graph/viz/moebius.py
    def node_or_edge_config(self, text_is = None, color_is = None, colors = None, size_is = None, size_range = None, size_scale = 'linear'):\n    \"\"\"\n    Create a `node_config` or `edge_config` configuration dictionary for `show()` in an understandable way.\n\n    Args:\n        text_is (str): The node/edge attribute to be displayed as text. Use the string `\u00ecd` to draw the node id (regardless of the\n            column having another name) or any valid node attribute name.\n        color_is (str): A categorical node/edge attribute that can be represented as a color. This will also enable a legend interface\n            where categories can be individually shown or hidden.\n        colors (dict): The colors for each category defined as a dictionary. The keys are possible outcomes of category.\n            The values are html RGB strings. E.g., .draw(category = 'size', colors = {'big' : '#c0a080', 'small' : '#a0c080'})\n            where 'big' and 'small' are possible values of the category 'size'.\n        size_is (str): The node attribute to be displayed as the size of the nodes. Use the string `id` to set the node id (regardless\n            of the column having another name) or any valid node attribute name. See the options in the Moebius configuration menu to\n            set minimum, maximum sizes, linear or logarithmic scale, etc.\n        size_range (List of two numbers): Combined with edge_label, this parameter controls the values in the variable that\n            correspond to the minimum and maximum displayed sizes. The values below or equal the first value will be displayed with the\n            base radius (that depends on the zoom) and the values above or equal to the second value will be shown with the maximum\n            radius.\n        size_scale ('linear', 'power', 'sqrt' or 'log'): Combined with edge_label, the scale used to convert the value in the variable\n            to the displayed radius.\n\n    Returns:\n        (dict): The node configuration dictionary\n    \"\"\"\n\n    config = {}\n\n    if text_is is not None:\n        config['label'] = text_is\n\n    if color_is is not None:\n        config['color'] = color_is\n\n    if colors is not None:\n        config['color_palette'] = colors\n    else:\n        config['color_palette'] = {}\n\n    if size_is is None:\n        config['size_thresholds'] = []\n    else:\n        config['size'] = size_is\n\n        if size_range is None:\n            config['size_thresholds'] = []\n        else:\n            assert type(size_range) == list and len(size_range) == 2\n            config['size_thresholds'] = size_range\n\n        if size_scale != 'linear':\n            assert size_scale in {'power', 'sqrt', 'log'}\n\n        config['scale'] = size_scale\n\n    return config\n
    "},{"location":"reference/viz/#mercury.graph.viz.Moebius.show","title":"show(initial_id=None, initial_depth=1, node_config=None, edge_config=None)","text":"

    Start the interactive graph visualization in a Jupyter notebook.

    Parameters:

    Name Type Description Default initial_id str

    The id of the node to start the visualization.

    None initial_depth int

    The initial depth of the graph (starting with initial_id as 0) to be shown.

    1 node_config dict

    A node configuration dictionary created by node_config().

    None edge_config dict

    An edge configuration dictionary created by edge_config().

    None Source code in mercury/graph/viz/moebius.py
    def show(self, initial_id = None, initial_depth = 1, node_config = None, edge_config = None):\n    \"\"\"\n    Start the interactive graph visualization in a Jupyter notebook.\n\n    Args:\n        initial_id (str): The id of the node to start the visualization.\n        initial_depth (int): The initial depth of the graph (starting with `initial_id` as 0) to be shown.\n        node_config (dict): A node configuration dictionary created by `node_config()`.\n        edge_config (dict): An edge configuration dictionary created by `edge_config()`.\n    \"\"\"\n\n    if initial_id is None:\n        initial_id = next(iter(self._int_id_map))\n\n    initial_json = self._get_adjacent_nodes_moebius(initial_id, depth = initial_depth)\n\n    if node_config is None:\n        node_config = self.node_or_edge_config()\n\n    if edge_config is None:\n        edge_config = self.node_or_edge_config()\n\n    self._load_moebius_js(initial_json, self.name, node_config, edge_config)\n
    "}]} \ No newline at end of file diff --git a/site/sitemap.xml.gz b/site/sitemap.xml.gz index 8c0754fdadff420537f6b44ca4f025df8983cfc6..412ffb42cf9313eca0cce074db1659ebcf95f4bb 100644 GIT binary patch delta 13 Ucmb=gXP58h;AoibKasrx036N)IsgCw delta 13 Ucmb=gXP58h;Al8$Kasrx03CD$SO5S3