From 0ab03592e028f3374dc05a98903b59d051d519cd Mon Sep 17 00:00:00 2001 From: lachlan perrier Date: Thu, 30 May 2024 13:43:19 -0400 Subject: [PATCH] Updated install Instructions --- README.md | 21 ++++++++++++++++++++- docs/images/emme_open_46.PNG | Bin 0 -> 17683 bytes 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 docs/images/emme_open_46.PNG diff --git a/README.md b/README.md index c821a1d9..9d38263c 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ conda activate tm2py pip install git+https://github.com/bayareametro/tm2py@develop ``` -The above directions didn't work for the MTC Windows environment. The following method did work, on a machine with Emme-4.6.0 installed. This required a compiled GDAL/Fiona package set for python 3.7, which was downloaded from [Christoph Gohlke's Unofficial Windows Binaries for Python Extension Packages](https://www.lfd.uci.edu/~gohlke/pythonlibs/), consisting of the following: +The above directions didn't work for the MTC Windows environment. The following method did work, on a machine with Emme-4.6.0 installed. This required a compiled GDAL/Fiona package set for python 3.7, this can be found in the [lib directory](/lib/) , consisting of the following: 1. GDAL-3.4.1-cp37-cp37m-win_amd64.whl 2. pyproj-3.2.1-cp37-cp37m-win_amd64.whl @@ -107,6 +107,25 @@ controller.run() Additional functionality for various use cases can be found in [Examples](examples). +### Common Issues +If the above instructions are installed and the model fails, there are some common issues depending in the computer being installed + +#### Running With Multiple Emme Versions Installed +This model only has compatibility with emme version 4.6.1. If multiple versions of emme are installed, the above install instructions will launch the latest version of emme, regardless of which directory the emme.pth file was copied from. The correct emme version (4.6.1) can be launched using the following steps: +1) Open emme.pth file in the notepad and replace the os.environ["EMMEPATH"] with the path to the emme version you would like, in this case 4.6.1 +```python +import os, site; site.addsitedir(os.path.join(r"C:\\Program Files\\INRO\\Emme\\Emme 4\\Emme-4.6.1", "Python37/Lib/site-packages")) +``` +2) At the beginning of first python file run_model.py add this line +```python +os.envirrn["EMMEPATH"] = "C:\\Program Files\\INRO\\Emme\\Emme 4\\Emme-4.6.1" +``` +When running the model verify that the correct version eof emme is opened. + + +![Correct Emme Version Logo](docs/images/emme_open_46.PNG) + + ## Contributing Details about contributing can be found on our documentation website: [](https://bayareametro.github.io/tm2py/contributing) diff --git a/docs/images/emme_open_46.PNG b/docs/images/emme_open_46.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9a73c455b82f3c857414b7bfe44c373b07309fc4 GIT binary patch literal 17683 zcmd3NX*8Q(^llO{$58V;RBLF>ikPXEny1#RsJViewWg?|YHZCjRa6l(F$X1PTCGr1 zP(=|_iBjD3_rLec{dT|IwUYC$taq)P^X{|vv!DH({l*&`YSU10Pyqk{8l4CCOo`Wg z;`avy8FBO)HdrBEfc~c1cLB%=t}WsZu$zW~1^`f>LjBi~l=zzx{=mu~0AL9C_XRGw z@`eBa_de*{(|8#2c()+9^U=V!%cG6+@-x98;I(_NZC_ggn7;yU&C0&hx}!DlAzrrS zL;X#u8He25>}>Zt^`9)Sv%rd(m{XU;y9i698w6#~nOvFBqHyW~nuX=ZMU!hg(z*Xw|NrkQ#wz$m|X1URVPsmJ`Y0;@5;c_=0m4k zTe0+;YZ42EMe3S8@KE(oT7U0JqYM8quf5*9^{&4VwGN-F$;AjLHUhd4v3KUVZ+*Pn z7wGG?MRL}sDjUXpp~*Xk)soQI3>8R>a$3pGb%1dRU`C|;cgAtiu13g!@fF6i@`0kP zj=ip?kuGRNmrcV7_3`S2hY}53U?Uu#9PZcV`3K{I$7z>fvN~8IUli^eGUISR01IkN zs7R39EmB(n05%mZRZM2Pd;@;WjCu}8hSR5qlZCjS$l(BtC5$-X7p`?C;4g^t4`8m9 zb%kf%bX-VQAf}rFzBv!1#QkN1Kn(>+kRD`kF(&BQFB~SbEpwkc{DHlpWs^=<$I+}I z(AEuFy&9}%H?WtLi3rt?>i3j&g#u}TuVuJiWaX?-a7Q`qPot&!uPM4h(TxOk#Cvp% zDC@RU=L8mD!vY`6J-!=zg#FP>5Q4v5nUdFkC5?N$?^O>B&X1WSgK7E!_@Ed{&Z z8>K{qFeY7m$YrtcT<5-aXwi`YGZQY>LZc`EG zSr6(7Xqqo2xD&X4HGIa;t8uJ#`wv(Wyng9!3au?%*^%0*OzZ}YhY)H!OST6)eC{rv zZGj0izsNQR zz5COttAzpV0mqHKi)Ur$zjmSI6aD_f3X$ep-BHBN_Z#Qr`yCbjMztie!(?;Ydq@6w ztsZ{`W%=coNcWw4ZGqcq>4M=D@J`|cVRX{*^u_$uj0bX<Un181$$@U=NM<-8ZG z6um2nLx#JQd0ud$UC|ojyq36=Huv=T?Z1-?ORR|jp?1)|-9OQ9yi<6KZ^G0*Ng)IR zR>S(rfl{~|mK>->;&upxUagY%HQpoGPSSTyYWX6x>c!a6^3KYoAd+BUOUMIpeP@DS1-~?~7jTPd_GpSQFu)1df%Hu8=0rh^sKtiF4F(zutn8ygu8!x6PoL^^TWY5bJZJ&6WGIi4{DClELgtA*cY6GKxHq&|DJM zeAe=prov6w*cgawuo#`;0__WmpMFYBy6+U+ZtFaD$@OaEJO(uiwv; zv@SE1;9hw9AKx9OxWWd)sTaF904@IC6yOYQt{hNTXeOOVCD^by+WDtHH#xr~gh9_l zxT-xlt@t`I9y6sfACWz7NOn=k?1qlki$3*`4X1H2Lkl?Au9Y-bYpMTft0ggyPAYqd zi0yvHSS+w(5+sA`zCUYh70b(>3?E2_Is+$<#@)O;Re z&gHIxewY{|cehUh+m7%kGipM(h^rddx;NLq(5PF%Ml>2;a{bm_KKhO>ma>-L>zu-c=p6DxJs zvUH^*Q-&r~12&bSmOA4+`h^=D!j1OCfi@aFH%cL}!CCLY|rAAve z=$1(W&gZoAn*?hJ4sZA4xoZ8x(zK#=vIYJgYc_=E{>3$KwLUGO2Rg@%^p7#oW-SggQg=Iub5<7fE9D&au6P<8s&h5a7E~6`^-g4T@hqb z&Pw*8@M&l79{~`2x42V`6_;5vw-eP5P?&x0b~YzCRbR~jtzJ913Af#`jxA+W2sN{s z@Zq6{Oaze$jQE+p7Pi6gr#7%*oAWcwDU};()Kl|%U-n6JJ5b{2uiGuhjA5Mm$|rAX zO#2&mE>~ddwtbJTm!*gII@g(w1Xeh^ofORFu9iO#%5agtU9nJrAMhK=%s{Yttsv_`<|<(j*>>(1O2=wXig zQEOwg9gilS)4T$cPlcZ!ekFU+o2XZ%zA>5$z*P5h_F11$6o?+?l&r!k)a#o$+bG%H z+r^uXVx*teX_)Jl88yhnh<3yjRL0f7E(YtT>2eo0^FHC3x*Pp|VSTQ_e=CG7|4MFC z1^)Fb3HAD+m}IJ&NeySc3eWM3>*e;_yBoYeF5^6P&Y-9m#hz?vftomxBWZj?$pjF;A6_7NO^(#a;m#2F%ce}G zl&_(J8o!gdz^3D3Iip5n9*pU($nl(k+&!v1XQ+*#FpLLUke<2nKL4r6Bi#GIli#|`p9pL&HGCI;5WQCY^stl?xx}8kGVvsq^Hzejz4?|XXoETH8#usL za{3^1U3k96PYeSonbOHDt?pz{jxlWDy3coG`WdC@wGh*%lyCboGKPQDN0CvwgYq8t zt7nbHnoDyg&uJUd&I{9{Q0a%}6h6N>;L=-Ke|#J$IPa?s)QP}N6^MwfT{KNFh`95a zgpd$}mlQS{B}HlOS@EGwXnNGXkhrlY%h1tMPL+*3^*AbS{El$S6o6CQ6|R9W4HTQ$ z(&>~>;=z_t1sy0WlLBqO46M=+-b zobN10D!!v%ll~+>V&NA_RLyI@kuj|Sw4-0bq|wz^S>?$0DdbU_(nHgSB(%|MeA`8M zw;Tx1+i?=dwXSy*(5tSGMQxybmo_%&xZmN$ySuD2eh?n%Sg>iaX4SR=P+Yt=HE!ZZ zNqwTwwj{{KSj0JOqGyn>;vZ(mTiU$BXoH6(TFfmH^75p&p zqI&1h(+3 zEdBG};P=nDZ^b6DXI)6m@>#{jntq&{M>v^dz8g5KePW#DJBwp9oACi8MIe1$pjz=#rCBG_Qx)p~B< zAFbUHP9|M@3z>+&KQ*N*5<_>|wYBtl;;XKQWzXlV&%5;YhWwy7Hp`%@G_^b z9!ySp4hL2WH`eb42Q9e#_Mk$ceKKZ5`iI@Z&M zGUKw?zPqSwEc5bA*TD?ujG^WIG?&CUon`te?U7@esqW`VlOQLEXa{$MwjG!@nqgCN zi0ow&I}vf6r`X}5q`50$9*;KfX6i+d@VAoRp?)BzUUx(3Qx2`}g0!Q#$)@O9{a33T zF&7mH5Md^JCz4vy5&xVpvd@hFHffF;rf!IA59b`ILJL~ahzTJw!dzuul=pz@&%LCh z?nKYG8>lmS1WgYM*O~mzbC&NhsVk@ywacEv`JWYChb4}#sMSUj-8x@~%Q-sj0}a;Rs;^C4q!ZugSO9f^>b|JwJ2vGgy3~4?!L%KD zEp5|=%w zb~=717$0tC8=i=DlkeG~;3PduVq|%1Ix+%W)^#nd-3lf~-B&N1w><7=$C*(0&aWbf zNPy~eNsK=Xb1T6v2DwA<6WK(?zrqGMZalrqce5BGN>V*Hk!4kM9QN}7cfd*I+1AU4 zh`i)$)0ypLuLC0e#27Asx;7i3xAf4MIuETiQ+0L5*}usFyj=E#tQ@>hicxSD5Jk;f zxH{3{({R2dA=Dv&-aNO8W#~yj`r)hy(o6dJ_Dgm~o%Y9h}c@)K~~`yB4PgU8-XD8my^`B$nHd;Ej%CP2ZTypBKtG|$6!PTZ_w zoJo4EFc6}Gk=J{o$1vag{dqEB!?^^OV_2f++%7z?Locui^Aci@ebT}o!oHvLWe}1{ zmN*%|bn-mN;c#PKv?}x4d%7JXNN%R_cBFvwa^98ds9g#qc%2ux;8W2?ZDKunE{o{s z_)_rqC?3CmTYJDAmH=vKKZ zL?@R8s%3)2YSNdR&-7d6ts^^}v*)RC2ZL^59WV3ZQJ-|nr(tfmKhoRLKKoWD*Y+W* zUem6|COs+1PAUfxequuCEo%dGildVn2`qxk;=-f7V{6z7|6Pp)rKTU8r7Hc+?i9xq zjPJ?-c)wL*Msr6Vh4kzoB9-CSV5z6+-7(IMfXKZRDgk2Yk!Vmz`|jDc!4pzL{$fsdBCBf_Zqz9s{Lyx?HHRmLEHwQQ z5J`s!b!br9u*krVbqKbZd6UEClaBQ0#5IcH(OHk~?zIsO`TE_Q*A*T>OR2tk*r-Th z8wwd|u#IMnLtRL@kNSb~)i=1m0w%t{3Bo;cV#Jwf3f9b6bRGQkfmmeDcs*F+i@;_4 zxjDqtWNJRWC?|8rp@VF0oJ4+_gmCVGf4i*j+f^5##ELE;#Tj-7zED~zKS1&{=JgGZ znHQn&=Zwoyu6p)qEenw80}?5nh)kViK`cVh7r|BStRPm?5>=<)Dl;2l*}9u-SDLZV zBA<-4&^`G+wXQR?WXtyZ@t{hFR#r;p7w=Z36XU5cbIs8};h6Pam8<+U@6e~29hBRx zp1cIK9TiTT58iVxw!{CO(w5uW;=!gxUV`>%pwDc^)3Q2)7sxEiywiNf!vDQnba45} z<0;2f8U+VPzKmDosGmL|JAT7yqgiHllif31?#nSthD+K;4Rz|pwdYK^t#{f=%M1!z zmudyfigzow4S)uYO4RC<@L9=)SKPmvQ^w&If4x6;{9X~k-vtCuNC>vc;40F*fpGam zf6QYQIfUTqct91~+r`e5fn}zP$UX<1|7{N{E;lCf+YS1doQf%fd&R+IX~&tFYBoNy zXr!;FSeK!I`-zPliNQ;vvNSmvNKjV7EYjkhalCgCV%STpF>c(yz7ovmj2P_J6vFZ(AiT2n&ps-aJw32Ip4`;a;9mExz3H{LQE| z1BSW^yq?-JY_%xzI7|L+Gg_1=k}-}7C|6(eDx9%MWWnJh$k_2dGK)!(g)7Kj*PpMK zulEy?54fN}(D!q@3Vk3GuD&%?1yhE@eDi066n|!E?3k%fGg+&7@y6X62!bgC$Z?0 zpe{4(yhw&aIExJT+1OD0{$}#95eMwkO`2_9o^> zaHzFhoWA8cZHH@hj}FZ+%{GPHpYM1s0Ko@9s8w)5+kMuK>OaGC!Pq8lzyVjMo*0x< zr1W?0(40OV}n00TY+;kdfn7sFkN>aV6 zN?MM-+xh0ADsm!-t_O;};NXnyD9YXSz8HlB_pePaew!_Md?|_OC_)=B;3m+t$2VYX z?RGMQ-2Usr*m}Z)#W#I%#Pa^`ikV2MiK`MIqJk|U`PF|hNtO@64=UgRAZ(zqaLqf$ zz$6XwYs%1SPTheEqj5iiiP2>2)Mfum%;bl{?bZMD#eTA_}WG>Z<(#+he0!DqO35Yz3Vmr2D3w>!uH`vi%}V7eY- z5MB;MU_+cQ-U%iR`jE9?zxABo|KtPNS3Fc6_czP%vh&A#{C;bLa@<7a&K=$jQ|Q#xgmoFugGYA()V z6vp52neZyAcjlm7kz(NucKjqdn&TRD#FeuwCz)0nha!{Ov=saiY5{VaazO}Poisp{ zV_rfYp5a$EfLskHc9D7O-UGD9v1*3?7EW=`|3sTD3=ka&PPi95u?wJ8 z`pSb%^0ljvQ2N>M2DwJ3=I=Gh$#UzZs7dymFsXQKl2l!Yq}(%WaWr?}E)1d{b&lkf zoNjk%M|JucuxetgIHkFZ^<3NiHX+JU;xvV%bMJ8nKc=r_dXEMJVfo6Uo9 zGq>Q>nO=zq8yk=}1aS_F2@RYwB^@VhT}S*q_58PxILjqcR1V%8#uo8&7DjcCkkgLjeB?xweGFPyS_E>cvltM-Z?3jn>_LXXm1kUUo+?@u;{ zNSti27avcC>u`M1S1e&{ijTp#?i7f2 zPmJ^kcV*F3=G+aUUtnmc>ZFJURz=$-^@;=}C6mJ0B*`b{W`-KLtS7WyxXH(HzHhL5 zVrO9%Z&0&0qU(i7QQHGPEWd>-oy#>yE}cPmJ{x`j^#1vR#``co&^sT{I!GeVfuQqRwwe<%y&1rrlm||1N!le-|p){y114u2Sy^y@;*H z-vGtY^h;$W!?_~?IAc@JUNzI3mQob9kon-icV{ z8CZq@9;i5CRNBrwJ|?791!zar*^tQEyD^$iZah+ZHw68sUj;^Gd-rs5Bdo% z-+~b#s6J#P<}o!EqK`ALC4q-TIyvXEK|!a!-~~?2%ytV^>(#>N{!yVnz33L!z<5$X z-1b5O_b|zsxaLvN2H`kyiO{`&hFaE@u*_rtW4Yyjoisoa})U1eE67DCd970leEm z^4=Ne@UK(^d>sQ^qO*1ABAT5Td6>tA8xd9L3o7(tJom3jo&rJi+$nVC$cK0D`St07 zSnj8UqC`KtddJN~8clK-8}0qMS~QqCCu!BW9Oo33^erX=^Iq-j7E!GIhZPZM6Ea)# z%r()6+Ux;-qc3mXW$7!^cO&FL6qj~>PvzX1cR^tM@&J>`qX4in6X5$x2upOPsvsOx z8PW2rb`p%Lp9U=40JVMzhccjPNa4}Ig*d&1qdgExo*8uoKy7TG$m=yPzAZDMh_IG* z`Q$AxZ%qBk-4>_6(N`;2Zs!@2=v*u{|*u8-+eb(`KLp2V+b6pJ^_Z%>FUYKdV=wU^J7X7<144 zW_g!X?$qut9XqT5nO#{rggFG#M!!oQ1kfpSL|1^|5eAME?23Yae1I+A9^Z2aZxeIr zY8bPidC6_k@?>f#_W|$psSnTJ6kcFn1Rks|#exo(^UVMd_z|JnQK4;Wh){BNJPm;G zOPRnX2O+NY5u%^=7^!9uj8%rt^$#Xalz|)0dlBtI2ql{BR=h=GfL*=jZrBPOyRuM% zT(l}`H?IiW$zAI*l?q_cyIE2j_?EF{P&@LKP_;8?&o9)7q{ zC=MS6Yxj&vbg7%;H~~1<$% zry{6dPdXJ+o$~Db`ekAhba@!zbP6U;^$RhX*%7RIfbLp|tPky8zDo#LCdEt4mZ+Xx zmtIhF>mV=8-HIT_4)<&chjWA8#$f!m)rXB^CoqZ!OiT(BU9oMn*~YtuSD%{uvU442 zgjx$NRVeaY?*I*jl$`iBs_yaIRyr^Bl_+7>=*uzm5tr`McF;c_n%va z-3}@L;o1*&f7k@b(J5@k*rSrO68HCnV25pA+9(zrK=NGZaD7}R>T178nE{2}=;(2X zI};B2kV3qmmsQ}}`DzQAgEVGfPI*%yd#RCvSQ<^js1^!I%u$21%@=b;?Ligc5F#M& z^N=Jn-}@9_!)Pa{`~+>urOE$ajyf(ZnHqnG>hW(%Wau{e|4wvhm=&yXqMOq*(9o{AVEDczD7 zl^5Kmzy`85@_z=|jRQ^cH)WTgo%sMFltR{_M)Xp)Zj$aHGY zJk4DcZ5+N~u`IuJTJlMA6}0Zr1_<6Mi*P6?iB^Q90z)^+UNNr12ribWf_Jw%iiALX zC;q{YG}W2t7pV2o=52+hyW(8O2r80+D1;C^I3oP zJuR83A4?qaB<@E2u_fnaMQ!3lbE(py9sA+J2+#Y(LakZ)mg&@!SvHa=Vj1>c927hp zpay*v&Ad6AE0DdF{cGjJsCVT>5BrCtg2Y3{Wo25^{g2W6*Q%@B!MD{1$xpcMIDXFs znE$ovFdFi=KS|I*UKs=A+0ZomXcfZGyM(WvLvV@lz!X(-;$%1Bs(BgGxvvOc^)WO7 z6^<7(BrcuQa*zUIaKe8I;f-M^>mul^Z2vY{ZgmFDofw0^hB&4cCy7Gwwc*i!Ai{7B zbrOLlD}eU7@>?tZn&Q!1NSw3jDHNd4OnsCqpc&I}Z&N>rQGrCAk+=47ht9-(M)VGF z4A-&ko30)nS^oPk*+L|_XwcQO;5X;kJnDsM0G@Kkn3o85*Z%P!XWi>nq(e-1meA`e zqiLy&?M`vu%UE@9>B7!sRDE~rBC4Pfsh+XeEp0}jMnrjz!AmwaSReyxE#g&_37hS- zfFw@ftV3{DBnByAr)Y zq!*#1ln482rI~BU%!Q6J7qGS;efGfbYUmL|mT0ueE+Fo)EY7t<)oA=Mb)eW+KRtPR z`4`*fcY)GCOl-+N3)VThr_g9B>3=b2vyky-5iKs0`q zVrLJ;61;h1x|fptX-k^E_RZoWYMd73e&^9{VH&vvm3bhpY^4f>2H1ct&wS5h8fN9o zke?_2Aue(cMEH99Xn|2;!Z-5XR`*)4nOSiLpAvddck8s{$^o_gf=1JgNEQJoO=Clw zAok5%CyQH3CWg2VFJITL_#1|dI4I%CZ7zMhS_k}q_zt$OzH0jY(JF9%TujEr;^cU)6zBX;HGX18ViJCvRh?J?$ef zU;@U?ts|~5e?_rGG&Z7PQp)-BX`gf2LF8t;J#;LPnB^HqJjp?E43B*mw2=yr>8z3% zh+2};W*wca%o&fAgJ^fcf6PP`eSAo=2FPpaFQz+=&YWY>*uVysH5a&a7(ZoJEIN3{ zr_PXm3!SjSD7C+J=xM6%I-z%Y-|vtGca)^G7h8X`7?7>be0%$^uiCrI`1i|-WZXs^ zcdmt@t7q2pjqEC9RD*Ww9o?~Bsa0sVycO9arw`X(CW?jA%0}Pdd01Pim>VX_ifhkT zV^+GQhIR$zPu%gpHxxwg$atz8091}P>^<66qJBvhb3Fj^5W>SuDt9g5%?tV{ek(}0 zk+a;b=VKD1Ym@226PzOWIAMILhU*BxAd_uhL#A_vRO#zPMd|w!HsUe9Tds6fZ}9K3 zYAnv;jjP;&3K7BsfdA>3bns=uKND~tb`ME&_m*bkNfkd(GE4Im>$xc3Zq_*!rZEK< zRYLj#aQt&2>IU^E(g{GB#*Gn&*VYQj6WmM$jTsmBxgONA<8{X{CVsQ2dt+zDtUJa^ zM187T39+p>)!g?i_ZrmD_B5?HCvsr9ToaJr_pfSb17MGp)g)=_tZV?<*OYU7;jdm` z9~L;{baI+utS-tONem$RsEr=MY4pHrG^5VeyXyd^*JjUCQX_0KN2R+n0U|Z0of>7^ zaXJnc34GK!W9cA+8PrrTkpl$$qQ?R`V}q8tH*f9Fm5;&p3tVLPmKk8zp#EAaZv^q144RFjAoG4*Eqq#D~Vn{Ce-$=ZU3KGeXI zUBQMI?rCk6=FCyV9uZ~Xe*!lt%6miKcadVT4S+ljMLy$%6f$fAxNe|LvXj!|49n&W zr5}GB%M}&2+RxBMl44)fc)jmWl^O$!x7^C*T2sR=$<%{AA!#CkOMD&O$J*yY7m4Sz zQ+@AW^Q9eBNo0RkEP&wZB0Ph4w2|+eBC%ZE4V0qnNn#gc@k=Zz-w1EPY^=n?cXCu= zgu}xla{yA7jAlQ#xdc9DRYCjo`$X*?SUGc6czysk{PQ}oiWe?87N-6vLW1syRJ!Rb zGwQtM#F3K6hjx)HW5yje6j8D}yhEkrjyrS7l><1Oo#gG+iRigG)!UregCZDu&lbPZIj^&W{-B&>x#Xx3=^UJSUt2#88g`biEc;f? z3`kg!Mw=Fs4n3K=Q#yQjS0l}Z9QQP8<2x_mjVJlkZCY~om--si5#Oo>Rpa*9|0$r3 z#QHW2p;Y>XJ0+?B0c?S?MaP0WGu>@^MRE@cBU*kZ*i)izT|grWUE@w{S7p296*J`& z%Wo!&{1s|C@Py*wU+4kpFNYCSDU@%TJ%FMS>p%EO9E{l=t~r}4ij~HUGiUL9qy^yV zVQki`fj#Eau)*PKtMR{L-P*S)5mFleGk=#U+2C9NJR#V2G!u@1*m9RN`keiiz?6e&By_U`J;lPX6JR)eO}k{HC;}p!4wC9E83G<811H{y!`w zN8henc`cJGqVIhis`sisHJk50IjSJUx=iUB3Gt(hQa}j6j1!`lDW^~g6oA(AeIRIy@E%S>{!=`aKY>DLr)^It_qcQ zJ^+z+ahFI?txmJU*2AfLa=pxQhR^#1|IecZnj#Dlo>3aNL*DKNoNxmxtoAkQs@_;V zsvVZHQA*~)xb9VCgtJ^JY{wO4NPo!`rm+A?BHmMNH!!*TnJLGPy|2@ei?&{E3qo{) zlrF)kLYR)ouCL^aB{mKMWqmH*xQ-qwgVZS5Gn^{v@f(#OPbQ z%8a{v`6f|y8V z94uL;)MKRYm63P?jdY47p$;EFGzq=`b4x_RG!})7^rD2&tF@-)bpmDvk>Q zhRFMunsbo4IdDbp@93*@eijbK|49I8hWVR@rkmEj=v0K;lvNICSU`GkwxVIL)66Jn zl3YVik0nHq#+?hN5756R>M_6D#rkwlZpGHxM zmt~v&XP4;Ka0bNxh(?C{#KdmnSa+Q?rE%Pqm;1)MMq&Ra0ErjLucK2zwZF#Pz9hb* zvJxc4u!txcS^Lr0s+kB@qKeW1#FJJYnHyGWBzF#S&L#yL^q(TMhVIU@p`|E||4FIT za3Nl`-hz9M@EWPv8FG+x)Ac@W%q&sh$-o`aLXwkkRmdNM070CL6}sx}-6vGV!qq`^ z`VHx-5_={C7>zAe=U!$#%%i}$_qyG0tF@L*#+=>zKgCXpoE1tzw_Z{*u-^KYoxIuD zVtShuaboQ7DlK}OK8#g`Rf^%$_#8H_3Yiu;9O>zoD8^G^(o~=!xtckPXtT*o+Y?I5 z8S)-lgWuC<$h8OR=42e;W#d(Wz5!UQoOlsX?%hnu3e9HNT8V&vbWjem4?}8 zT=-!Bn5L(T`Fq@4wL!noyCY9PohXSZ#T}pIOwyiPr0N&GLxztu(#_A#ZfzG;53gS4 z^_{+xs^Zn1gGd*dkg?s+V>^-wTZ(;gb(4qb$$#yTm6$(77xv=p<}UX1M+Co6_*6`d zGXe1wyq4ChY-GfF7=yyLib+rPRZm^$%QHv~tE(p;mY(L8NNjbN4_<%GSL%E??ELVG z&DlgNLBq*az+L(?A#%Feb72xgqF7@H3f>8cN>+Tgb&d>-mbc5hxX`DbGwdz(@3R(& zHAMGsXC5?(MH>MjW#k%7i{3Lxd4M~8xx<~ZD36l8+vGX}*j3L@*x0}F0BCaWyH#I! zetZ0(Q#sv~Rw|{t;Hmz{m_O6+i%ou?uaI|btVN;ngBDIMj@)If#L)#oV^GLMm06Vr zl7=WAF)6=M_;71qAE*w#@Ae!ZVa}xtZhTnykYoQ2gt9EEe(laZc4N}}Sp9xxmW%Qa zS0MJ3HT`m8QPuBs_Uh7fncexP1-A~1c5j7i|XhPDpEj1|6V0zix7j{F42 zwy2WPHYcGOD?a#J%f8n&tY+wjQlzIpuKg6-&qQhts?jh~&o+nXLyS4fH=(h&B5cW6 znF*6;Votaa(>0kPVPb#Boog3ya{3OsLbBmvFP4qeA=zNIv~%y;=*Wl97d|xO10cyH z%6~q5MjCX<+uG1HaQsh?YL$i8+uj`7Iisj5ayN>Q)G>8vvKNQyaELn%%8~^DzTpfYd!1qybp){9 zCgF+BCcU2;l?F_$9Pz)0rNWkfxtNv$``TLNK&aB*M3|_>z_di%r7KD0NWGW4<1MQ# zPujFZct=U0*2+V)Nz49TKs&%>K4=aGOENE(sWdBtePD30cu{({PM<$y3pdDqGnW4K z9?2j*`<-~FZp@NU%9{UN{bPZ}I8>zZX0S5LYlMiiM4YA4lJ5^XAxsWtxAH8>a^e~1{!-cJ6|J!?1crA< z_U31D!bPj(s-QT5ys%=!5E*FnA+9&dom3S#rSwpmx7SQa2t-dRNLHuM@bw|$k7YEk zCclHQunYP<&!~Up8ee|Tb=zs{M_=W){O=?eiw=F_T~Y&&g#}XZ>T&*gBt&>)aHa== zpaMNF)Buyyek933f7;Ue5tTvpX4gL}fK#S)swN;gDY*Ol@lQ@IT?4L(H59KxY3qb( zBiLUZ99=foAzwR4-<+|n|AKv3Z%>v}Z8GO`qDGoi3AUz`d~;U08?kR=EBkIO=y;hb z!VSWfKy2FwX*X)*b!vVjt4-=-1tfACh#<^gGy)TE^d7%XX++FEJy%q3o4TjuuJMj|db!RAHTVe&17>Kn>~{=IX)fDeEo z3q|7gj)eC>PY;}iNKBurl9fXW*^sBUpO2-PkB!c_j@6{(xEl>r58|4C<=t`q(%0${ zIhmdN*T3PJH6HzW>3N`44r8)Hhyy%Z;dYSgPp3`^wDth-H3_*6Unx#7o%F636Y%E# zU~L(*-Q*en&9_t+&OK>ssfmV>#x4>2w+LCR;kwJ;+jDj~B_zHH@377DqYv!0!lmK& zK~S4{?r%+M`H%b@9!==$E;~h)yep0uE%t-Ge&H2m!S?iRFN2zRsEVpj>SLuvHDMqt z*2%rq{V)A;WWY3#ayeHpahM?JletTebGL_G_K9V;_7*&YdDv-G%qm7>DtKgPxR<>@ zC?TKJDYef5f`4f6qLRtG_Y^;Tmw!(8T>kSRPZ3w6Eca&M%ci~a7Rv8}A$Y!)=b|-K zldT(`vO3FoP}+_7$ziAExTfkN?K{b5VrvHtQocJ(7x1qd7j_jtdE1?Clf|bPsyv5* z#E2zv2edborO}*fH z)f2gZTA^M4oI(7$1r^h7i~t}^xApO#j?Zft0vB9T&M0-?#k+nB30 zF7+RMT1%L>9CIfutD1#v3!O}8F3^%BYiYx@JX|v8>mnL$I$YCinh*V31BS`uy}#Zf z)C#ep&LdT)7vXbE!Rv(Ei*%FOo6ifBdkYp_@|8NaLz?KnH}yNYklrv?{BYn&Syo(W zC8YuF zz|a$UVoJeY6|~_Cy8RdOYRCL)uiRook7Ks*>l@{5S(mco7w2;#_yMQCa7AH7FBbd^+mIq~KTmG*%To}oSCwsHV9Yjv={TWz3BIWj0ssQP82#jEMK$j;et zY4>ZOdUW{dQWyX_*>yF;MM%tHh!E{u0=r0XR*Oc*<#_5SG#QhnCjpiBS99->70<>f_vgKW%WE| z-?BUfucSOB&l;O1hiIGFr|S0CCgX-g=;{^x~ll=i=M@ zs`KMfX%!@$B5CIBI%^i~zNJ|mpNqu&1>(d4i^AJK(U82Nn}Y$H0vlElqK0? z?3IhR@*vb>K{xSP211K>id9dNeT&mPy4mu|dln)6no^IKp{3wk5ESlO($wc@`Z!Ra z{yB5wqE>5IC3(utm+U^YBg2UvRVLQv!_~E51Ozfl6Me_~w>0qW?ySjW$j%2?QuJV= zEeB5udz-#9#%X<4?Zj(KRsvnJ*Gf3UoN@iA-Q%?>8hpx&5%5gG9K5W5=}9U$O(oBc z@D=GDoA@$Je7*HIFkGXk+A68K#SjaVf+6W$N4cKwV2+onw>%g08Kpraa+=>oYl5aLLgwl_?bmtF3E$845B#laD~bpk zA_Wqk<=ub&{ubihoEIZS;lMWew{08TFhDKuAP}R2NhIUl&yxR5+4x=SA($?gQ1B>$ zXc1{#*t6zia_-?pmVyy0eIdQdn10IT*XscK#)9qavIP0-lB!VKc}Zj2t9m>18pkI> zI&~SB*koEn(&RY#{(+N+Kp8Kl0Xy5!!_=5X;bf(SmXu5W%x9C-T!UySY<>IJ@Tn$_5O$P5`58P zO}A$aDQ#glPs8+t{LTFfHh^E%)lVWbOR}$F1sE;s^j|)-He;GPg(_z~=PFE@SmV{+ zh_@Es97R&jh33?pX4kMLyXfB%y?rB1#GyNYp@{+3@pkt&`m^rDdgRy&k18dC$LIUY zOi8T-f{Z5Xy5gzEEa{(l<8z{oGh zTc^x~jM^~DUyByCCYE+B|JOfwkt3aWm2E5?n;ZYHI|Ur5?yfZKuUVnMvXO42(Oxpr z>7x<1QcytGxw-jr?T9Y6)o3qq@+2ty=^1P!C?mq$B_sSCwX~^++5CISv1wnVN}Dz3 z-J%Dy_&$7{g2G|7SyW1xy`XBxEMYRD%;~3FBg|sU?YpwO)rP1AW@(lg2hEkTr@uc(jR%S0QYl+RU)|bWn^9CU-p%z|{A1AE zW0<*XjlO>sk^RlweoC3y_SHt+ZP;Rk2i+mB2xM`oNw<{zDj%(ModxV^ca zw)p9ce$Swm`@T)Cp};(8R8?h|^KYpVj*+{r>K}`~b?B-c@MAl6WNfA&oL(;M%yPc7fu%+ zn**{uhzHWu1aBR+)--0ci?tnCysF6N&AO>t^LNwRh|#8YO52&>TBa+z`{U+YS6(rl z_C?>R{@qZd;u77)fS9gK4A0`;CCW#N-ns$^M_kE$3Y(9be>}o=4`^%9vX1^da^A82 zF`PH;zsWeEgZ1WDxz$u&qxcqp`1CJD_|lJM(f4Zh1@Cu$#kGDRE_(Nh4mWnXXV!RG zBIiTvvlj{Jia|4*&$bXB(6P<>|BvB2E$PJ7w~~*SUs5m2%DqlK6TZ!7gYLytT3X z?Ws*YQzcis&DeB2K3ltC^|4KJCV!kW|Kqp)uOHrOJGgB@&j=Hi<|cIZ~U@5K^r#z*}nNkAN#o`iOS_R3Stc> znmL#Mx<1+Q{12Z)mky-PRlYm@)4oeO#i6{;pNhA#={3oJS^g`!SM)$=zA2mO)5(wr##guEt$58nNR(& z`{LVNSJysV#g+Ex=UT>d-*x|;2xDHpPg6eq6euGEDHt~gE@ocMq-Qi`$tGS`o|w?< zH;(Z