From a4d55b420b53e475e1ba05c45504b87c65bdbe46 Mon Sep 17 00:00:00 2001 From: Mustafa-Zarkash Date: Fri, 29 Sep 2023 17:25:04 +0300 Subject: [PATCH] update docs and rename `isPath` to `is Dir Path` --- openpype/hosts/houdini/api/lib.py | 2 +- .../defaults/project_settings/houdini.json | 2 +- .../schemas/schema_houdini_general.json | 4 +-- .../houdini/server/settings/general.py | 4 +-- website/docs/admin_hosts_houdini.md | 24 ++++++++---------- .../update-houdini-vars-context-change.png | Bin 0 -> 18456 bytes .../houdini/update-job-context-change.png | Bin 8068 -> 0 bytes 7 files changed, 17 insertions(+), 19 deletions(-) create mode 100644 website/docs/assets/houdini/update-houdini-vars-context-change.png delete mode 100644 website/docs/assets/houdini/update-job-context-change.png diff --git a/openpype/hosts/houdini/api/lib.py b/openpype/hosts/houdini/api/lib.py index 637339f822..291817bbe9 100644 --- a/openpype/hosts/houdini/api/lib.py +++ b/openpype/hosts/houdini/api/lib.py @@ -787,7 +787,7 @@ def update_houdini_vars_context(): template_data ) - if item["is_path"]: + if item["is_dir_path"]: item_value = item_value.replace("\\", "/") try: os.makedirs(item_value) diff --git a/openpype/settings/defaults/project_settings/houdini.json b/openpype/settings/defaults/project_settings/houdini.json index 3c43e7ae29..111ed2b24d 100644 --- a/openpype/settings/defaults/project_settings/houdini.json +++ b/openpype/settings/defaults/project_settings/houdini.json @@ -6,7 +6,7 @@ { "var": "JOB", "value": "{root[work]}/{project[name]}/{hierarchy}/{asset}/work/{task[name]}", - "is_path": true + "is_dir_path": true } ] } diff --git a/openpype/settings/entities/schemas/projects_schema/schemas/schema_houdini_general.json b/openpype/settings/entities/schemas/projects_schema/schemas/schema_houdini_general.json index 2989d5c5b9..3160e657bf 100644 --- a/openpype/settings/entities/schemas/projects_schema/schemas/schema_houdini_general.json +++ b/openpype/settings/entities/schemas/projects_schema/schemas/schema_houdini_general.json @@ -37,8 +37,8 @@ }, { "type": "boolean", - "key": "is_path", - "label": "isPath" + "key": "is_dir_path", + "label": "is Dir Path" } ] } diff --git a/server_addon/houdini/server/settings/general.py b/server_addon/houdini/server/settings/general.py index 468c571993..7b3b95f978 100644 --- a/server_addon/houdini/server/settings/general.py +++ b/server_addon/houdini/server/settings/general.py @@ -6,7 +6,7 @@ class HoudiniVarModel(BaseSettingsModel): _layout = "expanded" var: str = Field("", title="Var") value: str = Field("", title="Value") - is_path: bool = Field(False, title="isPath") + is_dir_path: bool = Field(False, title="is Dir Path") class UpdateHoudiniVarcontextModel(BaseSettingsModel): @@ -32,7 +32,7 @@ DEFAULT_GENERAL_SETTINGS = { { "var": "JOB", "value": "{root[work]}/{project[name]}/{hierarchy}/{asset}/work/{task[name]}", # noqa - "is_path": True + "is_dir_path": True } ] } diff --git a/website/docs/admin_hosts_houdini.md b/website/docs/admin_hosts_houdini.md index ea7991530b..749ca43fe2 100644 --- a/website/docs/admin_hosts_houdini.md +++ b/website/docs/admin_hosts_houdini.md @@ -4,26 +4,24 @@ title: Houdini sidebar_label: Houdini --- ## General Settings -### JOB Path +### Houdini Vars + +Allows admins to have a list of vars (e.g. JOB) with (dynamic) values that will be updated on context changes, e.g. when switching to another asset or task. + +Using template keys is supported but formatting keys capitalization variants is not, e.g. `{Asset}` and `{ASSET}` won't work -The Houdini `$JOB` path can be customized through project settings with a (dynamic) path that will be updated on context changes, e.g. when switching to another asset or task. :::note -If the folder does not exist on the context change it will be created by this feature so that `$JOB` will always try to point to an existing folder. +If `is Dir Path` toggle is activated, Openpype will consider the given value is a path of a folder. + +If the folder does not exist on the context change it will be created by this feature so that the path will always try to point to an existing folder. ::: -Disabling this feature will leave `$JOB` var unmanaged and thus no context update changes will occur. +Disabling `Update Houdini vars on context change` feature will leave all Houdini vars unmanaged and thus no context update changes will occur. -JOB Path can be: -- Arbitrary path -- Openpype template path - > This allows dynamic values for assets or shots.
- > Using template keys is supported but formatting keys capitalization variants is not, - > e.g. `{Asset}` and `{ASSET}` won't work -- Empty - > In this case, JOB will be synced to HIP +> If `$JOB` is present in the Houdini var list and has an empty value, OpenPype will set its value to `$HIP` -![update job on context change](assets/houdini/update-job-context-change.png) +![update-houdini-vars-context-change](assets/houdini/update-houdini-vars-context-change.png) diff --git a/website/docs/assets/houdini/update-houdini-vars-context-change.png b/website/docs/assets/houdini/update-houdini-vars-context-change.png new file mode 100644 index 0000000000000000000000000000000000000000..77c67a620dd50923bafbba61f4f5e0f9236a3f27 GIT binary patch literal 18456 zcmeIaXH-+&zb=XuMFAC25djqe>Ag2AC{mCNL;w8Q z6CE0wQ|vS}C%Dg@1wL7fR2cv+C%kl2AJG)xZ_NQWr|lnVJfxv1f?qhWJOkXHcYkK+ zMMJ~Tc>Fri;+ADYL!+Ai{K-Q-AG4)VdiSd{DJzt;Jn0v&ZohM}YWn#3%B>bDW|3z% zXoat>l}(wr(7wf1PI~<@;JeP?U;N7%lyS=wKNhjl-yeReZERt@P1e7$pyZA7HLJ(P z(bzYan3(R>UFLyau?l}JAyaPq{MqeJRt$AhLA*yiiDfHN;*l^Bo~xm(1yk;E6ZbnD z?dVC-KQKRpe4WIloCMnYdSbTLrz`rYeDHE!!Otn+6Piz=hSGvYN)|0AfE$Y@kCs!w zwLa_i>fe8QoCXGjhDI#9{`lhuzcc#K)qDL>Q1wae>f?W0WY4?+T*iy<{_mf^>~s9o zADNSk$5$5B@#9)?Ej-=D9LyeS_^yb=; z1`UrNiB$Yow*#GPA?a*hR&S(X!$n_Hly}XcEElc`pYFddS8tBZ{v@#WZT=eC@mE!jhS$^PFo{y{Fx2$+xouhMo!?sYo85%pZuA2Zw*T-cx9`Y{z5q$rI?&+Y-&;_7aDu?nZRB z)oyPYQnU+jZI04M!5X?LBvh&rlK_khR}WP6I#Qx6f?h0?&HF|V_AQJjuh#fG#n(Gd zCXrdcVSId37en6SV{o@Zxb(C(haxCrj76fa^8f}oCH zHuYM4CXzn!+_YrnIkPO5xn^%_+%(FuYk?l9NnM3yVd^rSl*+wXk>QgQ@)ruWK_P(( zE@EvXxQVaR)c56Ry;$)!a7lXp`TekqhQFQp99GAC(VEu{eBa*bx!$aKyh6CEBB4SY zMPD1wojKPNH~%O+w&&*yF4`l-K|Q{>Ij^-4+Vs$vv+}q?J#5zQccU4(6A>jN>afGi z*}u#9)zoaZfvQ9wcwOQJ+s;xytuwp+LQdh_qb$yfuGN(!r<0%2$Whfrv#eL&@W$+r znXSMb%Sv1ITsonW`3oa!KnrN{Jg)jYlPy&Ko+yk|omH#piJSdpvZ0qFuDP#IFq!Y* z8{UCbSi@FED7}6ZJBWbEl%^b;5_M0`LmAWKQorY6uL675lZg|Xeq>!TjZnXA)XQM^=&8(A+rH4hc0XqS` z2z;yFXCQFxJKIN<8PDTF(%=4T|Noz8bY&j$njpu|sr2uEElG}#S0)>)p`oEp7tael zZ>l#5VUo@7$XG6h+x1-tJl)pRjz#`B%jw!Sl=rxn@XejAp(2MG z#Zji*Yy`STw8Sr(&Q7C9HayS{ia2azQKz{AZ#9QB(kcF&dss2j1xt||STq>N5_%1- zO1Mi0mrN~t;PY?gN8#Ra4ZB5vK_l;;q!BUG$f|FYD8zKDc3LKZ@)JxQbzAj`t1N-@ zg|6k2dHMX(qDeGZ`-^z8_VUnc&kz=+dq&(1 zqICK;s*tMR;g)GH&fDae(9npGHS+4G_UE7ivOSrcT`AG8>}snFMjdsnjfn>t^JP<0 z#5DcVmCL3jZt`%L#9=)FFG(s# zpXib#;$Zwa^PtI2+j8Je_Riu)(wxCNT;CQB@+`Sk1#476iJxdLWfVfoatik*NWB3p8b*CDN7ow7|Op*N;;@8(=9MuuC-a3 zPT4Y=)*CYzveaJGpSMV~qqbv`z#ao!j)_H~V`G(MS12D9Un`R4Ts{!6{GGYMv9~Ks?>brTC^=Bl#84d*{5ZKIn3%tsG&Pgu&ey{|>&{2u5|(Gyn-TY9*8RL) zRTtofoJo*l9y@7&XtIF@f1Xmz>rmS;Y4fFCMkGU3l4**!;uex=#+~uin#0-CRSi#n zdDg^$jsIMMv?G~omUHh?T30;Os|!;gA7rKF+tF9z0)SzAz5CllH+S%Mqg$t?$$X7X zON=nba}-P2YUmu%&&~^NFho?@SA~0KeAo9aK}zw1PabL)fW;sKfmp7phXMg9G-aY2bm!-D3}^2~1u`G_w0fkbxpN1)XF zL5L*5iZA(bEK768HuuZb;tgNB#KsO<{-Yi{%53`Oo)JDX@!Wfqf!uLYVeTR=TxKD# zi7b=c=9m_=py+689O|e{7 z8luMjG%2(pT!X6UGV%;*)xxdcidpSgE~4kGj|ZXQw+#pU< zqxX7t4|(O|WCNQU+5%mx=5B)zWKEu5zyO{XtXm(L0~b%o9fn2-dr61I(;J-oBC4Ur z?#(v<^%*m0&udt4`mNE7Rrh*(p95G5Pw@9EaM9&bs&CJ7cxu+pyM`IITo_1fkxSEl zxEoPLq*9V}Ew@bqVSH#Vat?;+0d(XLPM7EF{j$aJh{9h6-iW&%lid*!vuPst9T<6q z`#br;j0Oj~SKSDA@iGr1+1N^#gW%SaOFMzCsLkWp)mm&-M2B8360aQUbfuL|aRVdN zYCdpHocNK}yg1v&ssO540eaQ(TQ5=pWabY()AFYX(Kt3KyIhAl**63ByXw^Kwa<(5 zKJ|7SVM|OV{d)6`P0gyXog(35%1ManVJCS1rdwik{|06Uk`Lb`7%ALHO_d2qLvro{ z?Y0oRQSwGrPVT5P=Yl<+pl1~#Nf0DJ! z3WiYiOAXh#t{v=sptv<%fh73?Gn7ei9WjHrWnD1%M0V|`btTdfl$82Q`FQFLzv1=G zpS}Es%!o!b)Uu>756F@Z{eLEYFkaptFRoCSFR+(megx7>Yydk#Dw;>=MUJGuT$-B<2icO2?tq_&Z!9Nwk@@CaQ3q`85NfKk@hAS9nI_K7LU%b zpE}h|8#86^ykEU{~)7oy7rdm*d2vyWp#u^p;G%d)55M_)iX2N_As&Z6Xx8?z78lG`G zD=%He?A#-rJ~*AE+8#7&S`J$dbb`b!y>fW_T5k+~8Oyt|s;f!D#yTqTSJrTKgry4D zp!^4H<2=<>&A%|PTKS9L>mA{{wfcT{u+AefcM89cv~5Q~H%|XZ9INFh__htoNe`b7lBVe@#+@nL80Y1ATOv?@bmM7OjuRO$zgg41bZ)@Ya3+G zlZk5i0F zh4pn$1QMB^`{H9?cXxr;jPM{YQ`mWh-=?~`sa0vZ{`zQ*r<)+fjJPV$aPKQnLBZDZ za%*bice!Mi0l9}QVS?cKdCap;pse4gy;`QKnOv%O%s!$z?iZt(7y}i$JzqVoU9o6F zR%q`IJy;p+XVFNT%E{wQ@@%9)Fbjl5b#bF_n9gK~eb0WB0 zpyuB>%O7j_yypd&x+)i@EcpgZ!SJj>1N>ukt{U(@JK}Kh=NGYtdZ{f56|z@mJV(!_ zJ4Y0xZLGxbz2Ne+#n&R&Xu8oVrXnnDkLfV0{obIXk`gvzG;S9Bp=jKrEH4IyS+H-* z(}wv^i;vD#NIdPn@gv|+Kr&UqTK9vbh{)H11<>4NzIpcpOT8aJ3aRpPJ8XroVy?0v zhw=>8*VSjgW+vaa^UM0;m+U**VUoM}4jWR>Dau2BNq9`u?WfSUDZa|h+sKCk(9aFW zQ{vaNcF6v{b*t=%px_i-R6^F9mP!{V#Kvzy-KXiRrc5sLjHI7USBo z=dw`mrev9%0R0?-M7YsUlhGVdEsw(oS10``^&PtV1Y>CzUzKKgrwsjuy(x$Z?G?0p zV+v-H3PV&J)m`=mf@n*_m9&>*9nOfI;gWgGM2Qq^5}6RFp#JHl0#6yw<3x+b=-;Me z@_|ja48AdmK;jGaw0tv|UM@vr8oSG7zGhF1=k%Y~3AK_dM*4DSo9#)xW!!}p&EFy2 zIw;UMLG!xHy_vORZZc*|N^(u3y*{19OezEAV0G7)(S*%#8B{<8y2sJBB0f9wu0)NA zX@%afhiWw`rT#WkF>5rheNdDfnKpLd(x}_h)G8sW{({xAPt$$DozrSjZH^`BuNmX% zGQBbZqof@NDR>%RkYuULL_8gsqn}O(J5#tHmc$29-|=pe>MNq7Hx8q@whS zdeU@ZNZ9^4&yZU)ME93ADTDcs^7WC_1I;DvZ;8U6V`v*Uk{VpxwAEb`I=c128-UcP=CPkXkYT7u^uD^GzM--Gdi?{(jkla zq#Rn_oElzXDK{WE7SMrxT;*q>t9L7xK(n**`;XSP>6NhR*;|18o4qzRTPLX z!N8_8FT;R-qXC<5JqGk!$+R`;#Zw~v+V)!I4ua$@0$>C{89pLbZk1Y~#>;(YzOOjF z(-#KW7FXQ~gF2djw>?2q|Ks8KiAY+`tx!s-q{B=JipjS<<-&%~s359mk4es^)xexrGeKI%iNs^@gMsX_vIAxOOBFmQCo0j@EAm0KJfE@bMd9tSJk;YEe z&T@-H#$gz+QKzyE5+rbt739uO)-^V|rI6y>!u4Zy77_*isZ_&F-(4{iWhF6+yPd0bWo>2`R>YZTZ z;%;RShtf#NdHN#G315x&n|ptKGk$06g64+hJuLU?v-ZXA^03;>ydBn9|DOhiGsa6- zfzj_iYbW$_1-FwGJfX-(J(NSTit441e!u_dO^E22tr1_DOCeG+y_he^bmMp;YI_?>J+N0ULxlh8TumSOcYJHH=wNeBSghA-l@ze;R2rGx6f!@)=qL1cs&{&j5NG7pvE~dc-Z$*n z#a9p@vpE5ZFOrq$&|7m(;nOuQR{WDD;iJh}QO|c7* z@~!>(>(0Av<0NgH#El@rCmDaVE0F5FWz?Xou3a%)%bz|Nmd|ZERtN|y+cI)#4^0u& zAg+GLk%g>NPT5xd32=UStF{gm2iVJi<-=3PDUy|uITgcOK1Qs3)xN3Tc@gx(q7F5} z9YMDWM7?fV$+nE|$+VF6o_m^fPfk@+#|~vE_D44cmA^rbeBy8)F7FJQsaQ{&AYT&A zE42#6*jlL)g=$R#lrjGmw5@NH!6?79G`#*)wm95CTub&D`8U!P8fG&Vu%$ohus_plrthkInX0dqZA)#Oub3-Jf5e(Pb{A}(&!bbfA?Na@MiK+tVrn~3 zMJ}nY(ynwe;pKWA%| zUwEyJ)+CU0Z8ku+f~+3|k}8@{-yqEk3F~T3@wb)BTEBRJ%UpCo>ACequR#+R^h!?J zmPmGR*W|e6>U`yeW=8!227k@xmQ@O!di9i8OsI@oheS$w_9tvf$!yUuy zTLf&&09xvDtsAFc>&|sgV$Xz6 zIvQCW6VpJ|3C;1>;1#$FG4w~-c~ zR%}gMXKU^{1o4kGuT~!&BkN>TWM@{Iy@y1(cGpmf=FqF1=z3iA<;)@dxke}AW~HBt zm`uk@QY1YYzS*Sx4Q+d(kInJtT$krFt&1BuUlESsY_pyo2#(q{uB`My4iMU!$P*^ z%}Dgz2YjG`{hM2LYtMcrEBg1P8ORp7=rUDM*H0`3%Xz<07=+3W#tkAlVtg=;Att)K zi2QtdO^V%t)IB?;mA;1+OT{~0ITiaRX-^2_mYEq4$zrSbIo|563%AOBpOl%>!d9h- z&+L_vjzzXl$Wg9IOo}*{OyZQtCI&gW<6Y?@{zOTBtQh6{Y7ygiQIlb3ootifZXS`u8daR!~nx}vZ{ zx0LpKT3dh8dLeJApX!nMbf4wj`j?fuKj=zD8Nms(L-Q@dxZ6`3j(0))cf$nt+@Ahm z4WFr8WYlCWWt^fK?8*$Z*G5ol6X9&t!HxV(_R7QO%~H3*1?EUA6xJh!nn;RrN-^3AI7wy%-FCybHCayKgUy24qS+4O6t7K7_UF2-g-D%ym0i$m+vcXQh&n6lp|=N> z;1Y#t_pV2*5A*ja-i0aV=xroyPS5up2RD+H!I9-z?O@f#Y1zg&Yiz0FfvViz=3}B! z{;*#rA9K=S{_en{mgE^dDIV`rwMJO}Q<_`Oi3Wqp34JKX#v)Fo{+17;XBjubs-XEN z2_WYl{2k})5WT!tsN(v$S+Oa;o+R2uxdg}ve}1-PaMNR*(GD}wjs8Xbp}3brAy`qu z+>XrYWr=-=_}5+IM79=Wkq{s?ZWbPn0&j4L){aO6&UR#TPAF&I($1g1gd15X^2&tG9=RF zzcN69(x~x22<*ekkDJ)S;rY6WM}#3tDVGF}Wu*3EAMvHe&{#si#+~pT^J$ZjE6H)2 zCK3x~%n%oxTXUYQ7npC|cr9^#oQTLGMzBe0Qw9SvYfG$G-I`&`UMR{z{;F32o8RQv zL!xvE$ZBV$Tab8eh1fvpQeXXGnAQ{~wkMluW z8VX%>gNS^8R<)`CsVu6^(%RFA$1Ql7b zWDn-M|HT%5-c`gh3fv++?uaQ_DFpvfqIZV!8hI=y_FeqbU!U1-v>ZsTWbIz6F^;CJ!4#fOGV z=VKkqSwH$DN$nm~XMxY<_8U;b{Qod~rI#iuY#H=rjm{E!nL)CfY3Ai&(_V0m*7yz`3X7H_FbfvDghcnAQCG1c`ViLq`}?Tk zC`3&FkfNFO>z~ zg`Igs;n6ewpybA+cek1_&Mw_C6Iu!0o|>i%28YNj9GaIm$(EO-!}F_@Y^Y(5Xb9S=x^F(WweUl0|&1C8gXxI@^D6G(HQ0ksAQOOwB&Iz`VUh!Fk|xm<)h>$31WB%bXf0G8Ycd{Ow3s}2IarO#A3cQ z+_@_zLyDP5sH5b|-z#yL)2X2nW_=H0msG2ZTS6Q80yw`euOsGp3-$1iG%I=FcI)W*TSTs6;bu=kv8jSHww;~?H9t5}-RyWr?V(xj^tx&_&nfGo~E-Yyo z)aW?#C4||_tGWBYQh8G?h0o2aA5T3skk>g=O z4U!K5foiZkWAGx)Y*`aoF`bbPGdnY{jQ+hTHkZklxstZ{Ye^~6IxU>xv#6VPX(-+y z=)LKkN|&2s%!79ZaC_AWLBp*(FBaE?UTny)br%HU8dlz??|&;>?m;~AP~AK{Kl+em zvU%{67)WV4s=cuT<9I9gl76CpmSdtx+{A!jBGjDay0D(xVQ#bCh13^xP;@aB=q6 zt~~$CKDTXoSjYO3eZ59CRl=+HhMkYYI4FJu?P>@ZOLn#I#Vrwwq1J7Q=IPOUCrFY_ zr%x?uOk@JyE&qjk%T#GGp(gNYTOZ`(Oh<^LQAXK(|-CMdgqQw5=@z9*Kv4hPY2)+nd-*ayufGw_`J`gaM{ z50cAAgSOL4ewScl^ls@435mPi#u$dOj3`fYLKUuLjpZykBezEVAE#9Xb~5V{W5B9+ zIfG2DJcEqtj0!jUVBr2|s@6|{v(6d3-J#z18`|#m z?hC>WeWtJ>z4`WHRHToX;da9KHro9Vtc*H{vxr-0a%Gk~@fZod+n24#cPk*iw=3&c z{I=T1iuXvJE$LC8WgwYdgE6LWTdIB_c;OW zWLVx_n#LgLynLm-A4B^VBx$OoEd1@UR#thfn&e}MLsVn1^4qU%w0D7-_JLo|k9+oDSzV(56f6WhFf;>P9HZI8Rzi}81&b#(x1 z)^d6dPVb><$eU7;S|y@Qc&U9^DL#d{bFP!Za)ksK6x)fQo8eqWJC9WXKOYN>XBML# z!=WZUoy`@Q&0ygE*_H|GX5h!6x)+amg1%E{B_oLi_pKKx9~}yB?IB!EgOC~-cme0O z5B8<=W~bSoVa><hiYyvU@y`jC^S=ZaK?zW2CU#w4LZ9P-EGUx)XSf~ulFI^$D_KPBx#5P<(w>O(^!Okh7?N&=W5xT^dJBg30N;|S$ zT*S3bc((cKb*R+c6X5y`iISjx2s+u(nLMR~X!BU(A5x0uBvG%d$UIff=VS2_ND)@i zGd|qak#Sp+dWRp%0w+|M5nO6n+R=N{cmRO#7f}eleWy-V8LcUuDie01schG#by0B3Fe;N-RlSqy6DQi0NH3$Ze?S<2$$`Ot~4WHVI1&}aaR7#}#pHb>vA`ct*!@L#AX7N$szNMd4Z2&QV@SaWr$DlhNvTo&?gFs> z*N&oT#TrfKSkdzAq zU~jPl-XrJb4sqls$SjTgbAJK8WANg&(qEO~C+`20OmOYwLjY}j;O+ouh?1bz*%5Bl zMxeN>vk}!z1Kdhdq?>|ikdI^yL0wDDHyA(RtTjMG)cR3)7Dfwqws@U(jfSRMRNMS^ z!oRdbZ_b1FH}95}!G^C|kxUSovboCNSkh9nP3#r;<*}OK(D%iqR@-8uN8wcxB|r6i zhX9E}z13lg?3UAL`K|#o@nud0ye|K6S*Z$u!d9K{_8UfI#&`G9Jy_LjS*&W4w1s}g zJzo?r$=w9uElz&&Q9ra-hE&yVRvfho0@ASh+pG2WDs)o*l08w8>alYmG^SrU6Msf( z?u(9Suw>zxQwaw({=l-Z~j7*X7`z70X;q%;-+|-CF zO*>P0GInnS+~5c+yr}u|!BBD948vnu(biNml5MIPBI4IbFBw2rnE+pXsd(H2qE5`6 z`zFtbf9d^8leH~8y$zIsnL5jdn6K336SH0R`+c4+^ym0P2=f3xF$fABB_~wfX*lHc zRjxAE)$&`8J6LpgKY_?zxJL2Ci%{va7x2?3Ix~I)g8L}z%IpK>@73$z!w~oxY|87~ zUz4vP*?BLpg9wwaQK2C*M&>XD9mw|5wG=n@{ijd=O>aO;l%1??xb=61(L7SaD&juh zMD*CHhE1NP70l&B1dD8CTJLp_U3Hb}GcR-PWP{hvc`d!#KYRAs~s3OKyX~q#K>Ov9GZqzuyu(hT>3IQ|{~W=n?|J-rKgLr4F+3_e6PP zJJK?Kf3ZJa+!iiLA0TnQq_pXOSN!-zMN6v?;DN!%k1w`%bm+rig&GdtEYk1hfs zGcFElx=}QjBt}vr*@T&4fydnU0A3%Y!P^P(QYM?-Us{N&?)JGmp~#*Pt7fmR|83(8 z&n_^M@yNLzkF`f|e5$;(WeCFtJLA7>V)KR5KvQTU>HcFIc}z?k7wAPKea20B1B8uj ze@{>Dh3i#)U0tMFn9JQs4@`phx~G?y+=u82k-+ObX49t#pP8yx8T-J{H{~fpY4{DEI549Ew#TU5Xs`$rBDn^_!#(`|P!8 z7UZM6|B2Cf;Q}xkHynpJYI8?WQ<$9PFe#qlCwV2E0JB5~xHQf7Z~x!82kldgNk%6+ z-?J|FGOyI-R#T6nz5>MMMXcY^yY(Qm-0Fc;{Q>&4GBgthph!2(^Lr*sTj#6`ED8ye zwclQtN}HO0T%dQhyBzFTNMUO@W8^)T!vavN|Eq)|($aL{|0y8YV*Cgz1nOIR+cIa> zeFF|hiJwq0-V@azZbcS@Q%krs9~5gSM!~Zx3%bbkT3FPK-s+OP3!f1{WM-)lAS)FN zL$`AMa<|>Gi_dd@4U}XpD`{ZSkjV#7@PfW1F(kOptx$X86d~n606BGeFjtTjmUG87 zkr>C$YLd!dnykS+96g^;(bpwWO)^IWk)<1>>y-=h5xlH4uf0uu7Ow*=cb&$WHFide zWY#qE$zu(L=8(Ts?$2gBgi_u%#7nPoiX(RB-srfE#}8<7@G8Kzi&)zYk=lqoKMEku zeFL?i3{4s)tzY%&Rv}OYDMEHchrvb#_~qrcLQ@px<<|*>OVZmnEsORmeN16jsGEAu z3vXz97fqEM6YqG$U3gx~#=zv0=REdZHOR&Cx!s`&Yip*sj3Z#$pyXPS89X zwV_jRa5@v|7={QgR##;HOg5nYWnr^ey>9?4>?nr-Oy<~E!E;+Qzwq^WWa`w|$d73{lT9(zf(^oCJ}x@`r zM*P65!ejqsVU>Zo7SCI^_7iz?x=EWv==yXpP=hPg(Y}*eTM(!$_al^3Gb(V1j;F;* z<~!yA!l~8}EUplv@ghF6T_&n1^wLl?%({XzI)a|jVJ^{H?pMmO%Hb-Y;OR#NFQ@O? zlCpa}OKN}UGrbraqnD&ODm00u+-dd_mkxR3e4G0HIq2zQT)MDh+qPvBhMcVf48b#i z_xxS`AHy`m4`B-3`hmuX?9a|s#&;N@#Rb)ZnBPIO#<`FcC;P#%Jjt@Ih6lxtTZ9#Q zO)pwE^N8sfMB<0ErE`n<9@x=hX$#;y%s*AV`Ja#ph1Q%J-jUdxIw#Y1Hn_LGv#)K6 zQ)9y$mh#+MPv3(orelWrt3c3ExJ^$tsj9uVJl%4pqD;$qYn&}xdKL(9T7jK5^$^S7 z<_!Crmv{E$M>19E&+5ezTy%5)st4Q>)Rn{9_R~dScNyj!0ulX*gp16~UDSJg23a`* zU*&pId5>q^ko<`t`s^>Hnqgc!k-i6nUC+({6Cxy$;|^MF)$3ww2G@d}^i5!c&uKYI zoRb`wmsS-*2c&ygssM2CqALw#79od7#1C!s6HqUpS*E%5P)gR2O;6se5<6`vB+IB4 zE=Idi#3sc?>J*|@qCIWok5AT&O}%NgzN^IK|Kpzjo7=$2m|Mp}E#QyyL;XJ|Y=BMz z0vP(6365r0fljMnGZF{*DIv;3y-k3g>cM|8Ja5s>7jazG%l&3rJ)sE^G%b9gtL6gm z)Xzvr79x1l)Pz zyH>8xu=m!^4%&BUNY+W2fT|c%DELCZg7KZZ5nk+@qwjg@)Twz)5JG5dpNszL`tjii zF)m6Y3_*StKhUA;PQue{g#i6_&NEV=>Q%3#Nwyr!@=LpK(!`X0B*?wbCSa79R`_B3-X zfSnwsYK}4T(gcD#_uZhq>tQa@!FGu(8R8>ildU#GA69fGypupDXhhnI@ny5!`rD+&o5q|z-A4ywE9NMPRmdp8{m{Qv^@LvQB z58U2&J=y!I$a$Kn=iCdb>4wKux3#DDwd*p(px02y(L0IK=7IXsW49FHX~onJplwor z*`e%lHlp_=xKG!~5Xc3D+>v&n~(1m(rFtW;YD; z35vB2%@FWkm#nMg@OAg!kKtOPz64|$xrm;w`7Usv!lpP#BI#fK z?HCFy9TrIxLosWWWPeqU3q+Ho&-Q|XjMZOj7c8%fktAxryCB8OPxl72MMtCN^F^8c znNGi7e()qTcDYH$Hpnd@zABf)D7ScjNizdlCbi^pZopCaw_)Ql_7mMpRL7slS_DhR8i}zQWVQBrKv%|;B+hy)Hk~LDT zfaHXYOe111F2_%1{^di^!k^D8b_`AZet%&rgWen(wyqU0!uH5f9DFG=GA|+L^M8SF zHSMd=2ad075kOUlAXwH=Zn5Cuib8^z>SXdc3Df9j0-@-QV%zfVKA-KD`6y4TJD~5> z_=tH@qwpyj5wR=gyl>t7+2eeD*e@et2tRQD{A5Ypq4Xcx32 zZbjzEd&CM|WGoyAs+fb998xNB*&GX)7nQG6aV#zh zZLox+Bo|8QC91D1)it%au0jQbR?>EH%xbG_vNZ#!PA#(f?9qpT<7(A;hrSe)4mcEDqm;sf7Y=R zudx$4urL-SpK>c*O%ncGD~SX)Ys71$LVntYYR!q|`_|)Ewja93DX+dxdJGe4ms7qp z-(j)SrBsDqW@E1kqF2?kkBefubZSJ+xgS#T*L&&Znglem<;!OPYt~;P!aleu7SxCOpfta|e0-|3xE44*)dcXR>@qB_aq5maj8duyzg%U*`v6hCEIG zNAKmC=k_0D#ATW|D`eR9ypc(LTo;{}#xb_^{2{gE+wFVNGPWvYx6aSj__hIM)}fZn zldc@^eC-rU;fEwsn9lvdbIY7OmxgCg(+*!ji+@ss&;3|HnCuFDupg|I3UU~~IazWu z`qsx`a$E8KA79JzjUmi#@b7Nfuy)hpB)h=1Jqsp9nj6BvCRF#zI@+1b>?1Ha4ji-U z)#R6R{Wa?KpCxA9ceDQzMs78}CLiMj%CdLI4oBSpEBy3D{QMG8rDH17MR^jTD0RzV zg7w6|)TEwcgKVyL8E4?RV2=m7k2Uh4z58`j6K7csoWFPu?>PBYCXc_og*i1D;tv_| ze?J=GT2Rt_-c3OFn{kcl@Rj6i1-)EtX&{uC7edj*AiuvIuQN2F#~-pGQ6=z|+|!`< zYwN{rOm<)A2BTEvMxZyKcxo#p;~19H-F5lxIb^r|OW=?0grci1SLb%-3A+$KZ#rtV z?nE7hoqM!;90Q2=<*ZaH|pe$(phn{Cu; zPyT*xKUd|Hhtbf|SnXZXJf>NK6`8IjY*(PbM;Ewu7Bd z9S+=K(VdW@+^-I5xU<|-%COW8N7`pQJ$FWh?z3LQqh+X7#PXC?x)0~Uv#ly7z2i=V}kpXe*odhu0KD)h30C`@u!b5vFGiI|6=VJx{x;aOiIaZDh5 zEOp{pDO`tnSoKI2k4^Z#o!bch?yUk*y^C0WND+?Oy19PiUd*!6Ph3X7FaD#`j-!po zu1pw>#ofezA`_DEN=+u*NU3`X_G9Ee(U8ml`zL(ycM*BhK;;|VQg5%4cL}O=?6u^f zGM4l9TQV;V=KXs4wHxrdiny$Zd38C7LQ67SU3g0fS@4(1nFUv97_;}4G+Zxb+2{}3 zz*)$}DmxY^@ciKr0q;ly3{XzpgXuYyu%J@Vn>N9aR408$qzgJEFxh376dKa+re#CD zg=!~flxw}??ZMaKq--OGQ@s=A8BaM+uB68TvBhtta4g%RQqqn^Z_ucDm4UsJ^m|Ig z#o^%AXw#En&?PUdJ64O7ZO}MOiT4?ucn%e2-X=I zFp-~G0pEN!lt{KqSy=21bRNjD`F*i0aPu=pQOiICZh({mC%KvyJ*pTDs*0{XDAqif z*nwJka++>$&OLQyq)_{NAC@mj-+&#ey46@MHp z;j79HztPpyE!b)l<2Z=w;?=?X5v~ct*~GeCT{gEe-=mq7`G7gf{={1OcmR#a+0D`N zhwlrQ%CrARB+Zv<*2cydnY_o$F%Tt9T&xvR-XyDSDA;c}NN&W2On7gzhZm!#KEFDU z2e^dWJvud06O#Q4W@hAQS^%4-KM8LduH9uL)vhYXZq?3Y+yx#=7s6GW1;UO}P%DA$ zk{}&FVSeE&p^M0QUXR74RD;$G4HvP2r zn*V~X^Tx*5Pco{rD=OBsVX+x;)H4@z?m%ssO`l5t$@vorH&`R%D022M{C`H@7q+qhScH1?Aip z%a8cN<|haohO8$6#J;Iy#)APIHNpQ|X`%GG+EnF0 zX}+K+=f6Dij$RHpTKHo87%jV9qWdTS?tfUyepU`zeK+0gwLS6IRcFC9}IHny51&Vz?1S@P*e z26n-0Y&;#mANDSAsXH4RK+sT6$2tPEJ{|SwJSp$TX2C5N2XMP$%G*;?$7R9sxh^|@ zFPM`?g5v8uQtMuot=W`+Bn_uGHA}{)HI>&Hu7f%^wPrNLk4}{M;+{xKAU>TebMYnI zdjJ&o=Q;hj?1AR3>v9=L_P@wwcHq8?@+|Vn&Hqe&Csm zYVTIy@0pyik$G@+sP{Ij{-@!I-&1^f`xuB-=n1jQu!^ezpLwf*u$q38S0P801QT}F zw{w(|uC=Y9dFnIvVtk&bSwnrXjXu>X%cqQ=LLSqE_qxxQ)%GzN&JGU9 zQ^$v*dZlgW*6BJ;V)Sl2h5w74g=Cmy1XsA_I_oB?AmtMDx_PMCWim&Ydo)ICq@vl*j^k3wUhWUm3F{7#osW! zom!wHCJ>gzgTMT}U^$<30_L{*z6v7=YlAcIR?D4_Ou7uy~xr3{0)q7o;&Qg`- z{ZsV?@pMqv^|6utQ)e~GGJB`H!nm5y&sw$ za+Kg3XnFcbV|1*NwG%!rT%g5`evuj*$^BU0YSiN@;l6%gpc%Q1bo{1!_FyM#Vks(r zATH0-sUb+??z*d;ebF&DjB^QwDchu6_}3r{#RW;oZpMqoNLOy)&5YG5GV*Xy)$TB| zDous=rB9w1N}uDSf@GC#y3Ozx_ruiC(FVIVMp%7UsX2So42j+;*YZ*7I132!Yh8@3 z`y)6aWMi=U>N#<#>a=l%eIRG7FP_L{+$dGztmdt8>;8i}gN$e}%DTGDn!w@y)xIF% zFA-gio+TZOFUBl;8B)i?f|Tm&2r~X1D@>55;XpxF<(AE#|MUI-KXe=W_AR~yY~MfL zD?Y-R@vY-`NAG|2x74j~6SV^5-ZTT+Ky&Z;--zUhXpn*xNWGo~H0JBS_WEzV^j}c^ zFFzCO{XeRP$0Tn4DQ*|kmL`Qa^PGVvnIMui8w#wfr4wu-i7j1AZucmB3DimMc%JF^MaO-GG9j@H%UEarxBih5En-@x-;jW4I!HF-4u9mRCN=W3Xa6-7zs?v z0HS^+Pc=sq)>xq_rfg}n58>J4HyTw}q=eL=t=+%fmkO(R-J7z5SHbEW=It+kRC)LaF%KA|(TXyr zV4-31-#adZ3MNMGlsowcpqbh*pY$v-wz`MqVd-%gyKV)U8UQhl5 zDP9es)TffG5x91GeZ#D^ByY9tWX^hgb>s~atU4Q*%j|`2i^J=!1EVVw}08 zDonM2tDVoV?HNokMvheyyo#i0x4)1Z+1REGi>Gw`)S?f0JtanpNqBJaAmXUtP-=%= zp(`VOHgjGuJ5EFS6qu_U&K!`*QPG-?r8in<(z;(Q6%B$j>~X;k0%boo(?amO$!7p= ztWyKkyP+y7hBV3;T{Z`sOK+^E@v6y8GD>6WKpbyX7U;hkOP8L(Z_pL z?RH;YaYxXEU>J+3h-IxXYGXtHBp%W=ib$~OHn zNat!>>M=9YG>sn4iEr60Qy+5>-Kr{dhpBnBxoZyJ^>lX5RBY)e@?4{&8@&>$Yv zA&Yolscg>twqNyrdc1<@Ao>2_B44aQpZI}W3|<`$Sb#*O>@M)g+_13EIwKV{SAF={QX2G1jBm@P7Fz=U>?MezptMW)&5}o5N`I zZ98P@_d#s5n=Pv!y@Frw3eT&J6~aXOkX6fU+mpri9$V+cD0MFCsUDp1lkjNRAH%&; z{lWV~hQsFGeV44W+T{F2MGPpQZaXci@^#8^eRGmmdW*E~&~_wa;!!>s?Oj{=9*B?)R+RC_fQ$tO+N8Aaqb+X8ZFyZXnJl#yzs=Rox&dV0_ z_?Ac4FIAmD>2`D&bM|RV9TO_exEA*aK%-@qZCa_9eBP%#YTFJ;(Rw76{+fhXc+B_A z9x%=6JL-<|^l)`nYdoVkMo&It&r|N=a1tr;3uw()5&3#P>UcYQg^}0$64>y2`236* z2V#U2dTE)Du%>X25@zYEQW{h3%wZq_44zuKkaoq(|FOE0eaci<@Ec;2`riZ%>4FFC z1;EBGwYqn$qGda(eNH9Q@-M|F71K43o~(}^#pPspFpjgiRGN;**b)@RMo!&}4lMq3 zX+z_Nvr$+_CN+$5NC5XaUU05{H*~!G*b{eyqAU@+s?w{Fp8$0)4zA~XVQk4~l}Du; zx|m^?Qtw^5tvHE`wXm^i{fVHz_|cqhE!5&7(X>PqWi#j0(Ck zy*Yx{)zL{#vFGUy64E3c8EV0FAQ!5GANfiwf>b**RSN3>(~ypUrBzOk5aD zw}dSJ#rH$gwJng0ACY)Vf5C*-$G5GgZR4Oltv8IUKUQGv>h*ejJ$tzLcxW4R1L-`e zx2`yRp;3>UFSBSH<@=;R4g$0@>{X3BfBtKNYMls~tEKiZ%Lq)@~;+Yf60~$|*hiZTY6!_6S~7uC7t9 zhhOvZ{* z38!CcrQ)%X)xE2iLQuBgHobBi6}z7%M;2gmS`i~Oz;pbY*B}{w(y_Y2u_`FZkdF05 z9rPHg%$D_ITz5!9c1@W*2S*K-J=XNqxWmK(q6a-DtqJ5N5Ha&CIM`0*FyDi874>aA4!w_U(;uLvEOO^4FpQRh~eZ= zMJ7P`u|XL4$YTi(YTPaj*{B6v7_6SmaRT{kyqc*ayZFjv*hjx_)AJ-Qi_O@$)Km<; zX?jD5+rQvzloSd~OAY!&4aSD#o2Xk`Gd1{bmQgiEBZiQN;k|nfd8b0()T%&NJXEUU zZk9%I`tf&LV!+fKBTVFF(Xk8aB>;QLhTRd!O)1+IPN;m$dqAsEAGY7>m*$3S>;9FB zbJYOuz0=O9aFVQ_!E+qWDWiSTQ#ZXr8S#xJ3 z#zx%mr^DFUtlATVi7RuzspFwBu|w_l-bsyr2&&@$MNt2LspbUoVCWMowfv~}qkx~4 z_-ZfwD=!tXN6ZJ#;(XcTdj17v#IknxtyvYut;O+!rU#Gv|;OHH+ZbdzO-Qu?&(ggY09J$$f z=cyA5N2ajE-R4MoaFg8aQrBWZPoG~KVr%ZXO2 z2krGfJ8LWj&l;(VKr*D{*8k4YXHLr+iyRgRyWfe;zJ$3kzPmeFTh-lr?`<&v4`d8O zXgHiH%H^yA&UJ9}g}?nWXeo#0&}i5|4iU(L#9JliKew7mE8}P@4(Nu`%f+qy?D(m! zo&l*tc(Laa1(&ww5K|dH70ChrY2+@KxrVLlrMN}sbCm0kGk-?lO7&(< zx=6+RvvnR%SFdmcRNo+Xid*7(hvS2Jsilc_)Rf-1^33%<^llYdd@U(uQ}XB9%593U z-8WZD=DjkO0xX)_+l&L>`v+KJh_191&1td$|dY2vQ z=i5636*Sh^Jn+Wq5T9|)HqFQv+Bn32q6JhwkAy#oJo_XjJVX7!R+jH8{u*4} zjo-(sc|k+cz!dO}C*+HVfe}(U{__2aqk_mOXNgXmUH|SOvlF|AtNC;K_#2k>yE5yc zh&;k)55e={G9h8@+wR|$DwZGIlxmZS3o2ISj}Q-q2Rb zd!dzjlFxTC3>Nmoma+$h+qhJrQ==xs2^{c8R330RRN2U*-TBo)`t?BeDQTD_A@>$=>>2{aUwF8syZv{ zI0=Op)6hfo;YA;!ZamI$ME8S<53!SWcYbU?^?r=prFyXW~ z_o(Y#@v7ucnUi#$nHjk0AB#w)8^g>52j9cY^MM6h27drchM^|(GN&p=S@|`yY_IR5 zDUhA$*%12SM0&ovU3O%|=*dU{MUdON2_P!)sdR%f+nbg?I zP;&C6xV!?{Ga>gDVg+V0HS792&Q!{)9Sw8`+u;a&5&@pkAwoz<#n)L4YFZ`iVO$6~ z{>QH8E4!ZoBXZR7AouhGW*F(qdzlo6O6qJ_6r&8 zb|SPetfhgn`-CU7kY_fZMsYEHRIXATrszSGimqQ}k$9X=|Dj9XINoVh3E6PTFHa26 zBxr*>ktn`15@+OKLXxk^Yde%nk8d;0X{9Jo-)lDK`z3Hg;kf|Z!n4pM8kNh)1!%( zX9leZ#PHC;_Hg5^iFD8*E0ji_OO8?UfAADbBWk>$O&_Vrgm^#k;;NPzqw@GX5MA`7 zN7TZE>^(L%1U|#pcc#=s!FMZlXMzHTacf#XPd>US{T7$GpiS~;fH>B0==!$9NwB9gioASJ055Nm!35FfY@wL*|=2OM6Xn5 zG)yDrKdX#vTR+;24)SWjUJq8W_qZCosADD+eA7z_E*JtxNsPeVUj4*bnw0z~)0y`E z+Dg|nh6zZQsb0WO2Q3>o%Dm0HcYRKzL@*;M!~_>fBF=!Mon-W9k8I^h<(b$+V{M#! zvJyP1v>sD|fd4EIyY}ddyVp05{4ABL_+ zt&b*81Y%19u%}lY_4Dq!k08jcJaq>x=%5;Ri)e9mpQCcSEECxLej(x7y$^B9F@&v!YSV9wt$c3}SLE$noTLeSRiXoa<*Qs{qH8cB z+}qZdg$5a9;YSj4bt`<~yrQy0P)B z%Y8#wU5nV*hG`H5OwBlvQRJMIYdV#Nxkwl{&3v+vEvI#D6|pWK%z3?-6I{7^?HNtX z!m0S$`HZCcHR#ITlNMs%aC}979#rsgQmS;s4xTm+ zZ5&*Ao3s1F?+$F<-lF;#h+&`H7k&jJ(oxM<V{KI~1Z`Nd=s_Wg5Qj&?<`NiKSu3+WXyBb;p zzUZ^kwwyPEy1dc0r;jq_2`?p(R!zHwb2p;CX{hXfS)3Zy&HtNMAQRU|{tN{sdU@*z zaRRIbg3r0D?bJqmRQ~GUV}Xi5H~&>Kqn%)~xK>QKyuqYf!7GKoW{v0znNA`-n07v< zxmZzD+)clSbOSL988is1hl_yCuZfgAcmXxk&2)2_cnWh5mKLxwy9TkJ-k6)ZEZpYH z;S7V%t!@dMwgf;$6?pTnj_^`f7W)SAd!^9fhD z*C~V+twiHa$^Ji&Q)R2g892z--Z_zumfdue+ycBsS21MZ*E(v@J8@eSX_dB z!yY~3iV8@NO8o2~bmML4mFi5db4p5~eFt;=WfTRaE9ByFm#Xj$&Qa*Bsf5asw8pgY zIR{i%mkMJQ^u1|o?Np0E*Su;$k&i=g4}H)VW@E1=gj5-dm1D03i1`{PhFUQKC;rU; z@{duqM+wI0fOE%IJAjH{u8Fr5ME|*BFZ~%^)^5DG*Atv8vNsQav&VzrUL)j(eC- zTuOiJNuO{+34Lpb1CKiS4bv)k`$qDk=<+%d{38vi(cO5B zv(>Y%lxpcwohMnHtI4lkJ>bpthH_;$`$RzRrjm@2UK^kRx||Qgf|bCQ?L0$?K8GlO zRp60xblermmIU5N0Fv+Q;zct4W6^ha=KHNSM!O(q)tdUtcuU0Y5j)14-8J4AOloz5 zLQ{jcs412SG$9^Nb_Grh&NNNT%rf|K4aisqwavtlRT zs{&@IV4O2Tt_IC#(|04G34=+aAbhSJ5n4C3Gr@%k)^H`%#Uo9Z$nePuhqFZVU)e#k z&X=|Lq@2GiH_&n)7sE^!dG#Hu8L!cW^OhI3;cJV$iD zPbbo1qyKi$!sRupD0Vksg%=KJ7iIfoywinb}uZ>OFCzZRYCMIXFIcVqMcllU(bAO_eI4Ou1)4 z1As?uZ6AlNHNEn=xIv1+Al+E!1!rDxEpg|b2ko``&?+1||M|mgM|Nk##3pif+()F; z@EgIN*aFSrW8Q8gmuSm`t9Z_O<(~6fo80>_%ct5+{ZVqPSr4atr#v$oYIuOGoL&Cw zzRY?m5#N<`=DOl-14_O#^tjBW6D9SNcgu_!w-y$nk2D-Z$@gIU&3PxR>Z=y1tYgLs zLhOKvo!*%1-20{>>_+S$w|)kx+RNeV&Rck5B_&^)2h2^D10S`YjH$^ii_44&Khr{* zx!M%DQaIK4cv^~eXBIQLvm(DJNz=G&Tg`*9gj zD@x#Lx#0FcB1%386RW#>VVtNPNg83Nr5J%?@yc%+EwuCehK4K5AgfN3hZhFla(MP; zl^sHx9E$ng40YJB{(;;*IvY(M1y;n~;&S`X#qFDaDEYs$=KnDBiI=m3A6%l-v(LVw yF%j9nFJN!XU@C0;(geUhEaCs5+z+oF0ep_#I3-}VdcbOBGrV(85B;~x)BgggLI7s~