From c25f14e19b3cf37f766d869f56f5176594839da2 Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 9 Oct 2019 15:47:42 +0300 Subject: [PATCH] #17784 [EDF] MESH-GEMS-2.9.6 Meshers options --- .../images/hexotic_advanced_options.png | Bin 17717 -> 43053 bytes .../images/hexotic_parameters.png | Bin 134023 -> 126555 bytes .../gui/HexoticPLUGIN/input/hexotic_hypo.doc | 112 +++- idl/HexoticPlugin_Algorithm.idl | 75 ++- src/GUI/CMakeLists.txt | 5 + src/GUI/HexoticPLUGIN_msg_en.ts | 84 ++- src/GUI/HexoticPluginGUI_AdvWidget.cxx | 147 +++++ src/GUI/HexoticPluginGUI_AdvWidget_QTD.ui | 166 ++++++ src/GUI/HexoticPluginGUI_Dlg.h | 30 +- .../HexoticPluginGUI_HypothesisCreator.cxx | 240 ++++---- src/GUI/HexoticPluginGUI_HypothesisCreator.h | 24 +- src/GUI/HexoticPluginGUI_StdWidget.cxx | 42 +- src/GUI/HexoticPluginGUI_StdWidget_QTD.ui | 230 +++----- src/GUI/HexoticPluginGUI_TreeWidget.cxx | 91 +++ src/GUI/HexoticPluginGUI_TreeWidget.h | 36 ++ src/HexoticPlugin/HexoticPLUGINBuilder.py | 29 + src/HexoticPlugin/HexoticPlugin_Hexotic.cxx | 59 +- src/HexoticPlugin/HexoticPlugin_Hexotic.hxx | 4 + .../HexoticPlugin_Hypothesis.cxx | 536 +++++++++++++++--- .../HexoticPlugin_Hypothesis.hxx | 53 +- .../HexoticPlugin_Hypothesis_i.cxx | 361 ++++++++++-- .../HexoticPlugin_Hypothesis_i.hxx | 38 +- 22 files changed, 1867 insertions(+), 495 deletions(-) create mode 100644 src/GUI/HexoticPluginGUI_AdvWidget.cxx create mode 100644 src/GUI/HexoticPluginGUI_AdvWidget_QTD.ui create mode 100644 src/GUI/HexoticPluginGUI_TreeWidget.cxx create mode 100644 src/GUI/HexoticPluginGUI_TreeWidget.h diff --git a/doc/salome/gui/HexoticPLUGIN/images/hexotic_advanced_options.png b/doc/salome/gui/HexoticPLUGIN/images/hexotic_advanced_options.png index 79bd05bd5cf0a70a93625382afc06e465302f711..e1f5a033eef0f88f327b01eb35ab76ec77f0b0c2 100644 GIT binary patch literal 43053 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 N=SXyMDBOFJ@jn&%0PX+) literal 17717 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 diff --git a/doc/salome/gui/HexoticPLUGIN/images/hexotic_parameters.png b/doc/salome/gui/HexoticPLUGIN/images/hexotic_parameters.png index 1bd253955a8d8c9faf59cd6da5bcae8a2166b0ed..b6de4dbed62cb416c2b2957a176fa3d0fb1b0760 100644 GIT binary patch literal 126555 zcmbSy1yogC+bsqmN=QpeBNEaLiqa+BARW@(sDMaIHwZ^Ux*LvkgLHRyH-~fA@%_F# z?!DjtkAIBo7z{Yueb!!k?PopDob#DG=)JrI20Af15)u-Il;k@lB&7S|;0J<+0*+j& z{MH4(9y*Fjsi1*>UTDVOz~@JHlA4a-e162wy$4j}0Z2&Ck)+i?TNI7bAA1t%)Z4S6 zcIEG%WMeziU?Lg8)rQ)yu?SIG$_K!x#rzEjLd zR)!+Glsez{0F2dr*<|XAE%rAz^d*@kgNfAp^Vr3cj)nQFm zM*4Jj_w4VGA`l^Qavkx2FVa~b{Jx}W$so_j=H=qrzgMa$%9mCN#<1^3m!4*BNR3wP zskM_(jeNOw`~H{ppIjAW%&NL%zq<`#-=74NMM^UoDiK3P6T~Cyokpg`t;B*%8!y0e zyf;X{%H9o>*8Ko)s1@~bcMM!UAJiV7tZQ)yuNM+`XDm!~Mkg6ARadfCZddBP;^vxt zxwyUU*E62F!!uz2e47)MYFSdQHsGT!mZ6a6Vs`LaUfw-(&Plux@r)ePa_ACvYb&3wYP!~rdVsW7Sro%3{&1yA`p^Pr~9NA(03VTv8356+Q81m~pU zIq%G4n5-(RYup9M0%r(wf7Z*ndn%}G);Loqk;D%~c|G3ey>U?73sKvVE%QcxzhP?Y zid9x2bYmG&J!e1&aXZP!w%mi~6ut*+^@ z?`>_s3|oAuvkOFS=iDm1VQ|AuWQIvWH#;o{Tl8BQE!@mU>YO8vYCTcsFnvpd*H?}(9;>k7t<$CL$^vA`cX?-9`6__2KT9jP~Q%~NNAXnTQTdphATew*`9^g`*vU>6-p*^QmK ziL0ybX{24RT1uq7^}u_FhTl;KAJ#+{jUCP1nOEu71gKv*G*D>8qQsKc_y|NlsxQVR zPwx5A5xco@Adl=B))Y?0dNpF>lQ3lMF0`YbworB3oxRF9>vY_#mn^?Jo|>C-|6XW^ z7bRONIFaK*(&{tO2?eYA{K?Ewlt_Lnu3Ki)OEO=~iO!^#7nKqDWDwDOMes7I0iq)>lg`vU{ds+sNqcb64UpH~nLDXhSWc?a7Cliva zC~n&e75_nN603u+z)*K<${_KDpJ17_Dn!M`W)(k(tvj^l%ZqVc96a5onXEzjo>{e4;%EeOF=B&W z&%}xvG1&>e^6+sjO5d1SaQ*zz)w|$o=F&GKEd@hlAP$21zKs2G;p5o4HhXlCO>D%x z*9ogB7@ae22;(L2D&YHak@U$76N*IC$Rs zLU14aGNP9(Jwy30GsQa)d+^$AmCMwB8lsf{Yi;{?TNfTxuj@~nRj%ynDkI&jv?r+J zs@sWVG6VKiUnT5Iy-;UYaNVYdFk`jkVA7bJyQJu;Z|}XwLypzzPxpld=#OAeS9$uY zK9$N1Z{L|IF0rn)nQsX4%<5@tGb0l6HDcSSiY)~pWqViZwzA>6L=ZnmAr@OsS1n(8 zC#0y{JC@dMW@}$(Na$p2%cG`lV6Cn4Pek1f-ckq<+#Q~NoOwc#u88mO5`*FNT<0z& zBX?!P#pAV0nep!B)idu)eh~>(^t&}G^If|{jKbB%4~!R=cbDrM*cTMf_AZ_s3bGw^oo2$$UOMHfMryGzHYwP>Gf8gj7kU0kX2S+| zkx2mITG&>el)`$*gXAY^)fqg!Z!XfsfGz@=X#$?l)$2u?2Y^o7u&- zBcl{P$FBtiOn54}j2FgNTmoKH6Yo3cA~&utOq!1#!h{2?dn*qnUx-)Rbnx6Pf0LEX ziGpA}crcexLXYy}Pr~Dnp~<7r)P-0Fy&paDAyLuM7MgQGMr^+X)vCWV71h-6-Y4N& zo}HR8wk*Fv4I5KcnIRwmc@6EQ`WJFYLpn@MNHDdUnpVVn%8g$l{IcU^?z7)C0TpAmC4Y5<;-t6 z^Pef0tHV(FOv>jHN~?fkU<=8HEjuDHFv@*4Vp*sQlqZ`WsWKu==`pcgD7hpJ(YMB` z*ih3VxH;c@5S!zZE?T{&;mq-DC*^_)0?o%pD8QhVYm{E z4;@FcsqopO&7F48Sf*!Y$7}2gM3rr(RDQ$HA6aJW{T3f8YhL+vzq8AGFISH8@SJUy zeYsSz%v08(_knS4ul+zNW~BVt*$vT5oPOA-%;juQn^dxB(sWw+fR9dT@xAxveF5#} zyKe2N`jr*=oDJUhF|?@2c9!EwJ5VBW7}A|XI;t_1DPKN{%`5>I65V06_-9x3oJneN zS_kwC`K%{!UedcE_=uYnv}O z4T`w9DCd%zU}U=XChWCwhxEE{uN|0u95$HB!kM5)pv4hm-*xpLE^_)-*481+>4~x3 zQ;#>Kdan9-F79dpS_6>ti^U*OY)q;)K8{U?2v*vZRSDdVy80p3Z0h3f0z z@=^~tP9Y&ENNunTdpq$JyMuqQn%~m(*3raJcFtUNPXGe2G9`8lkPBQ`UQeJ1iBF$$ zt~)!iN$4P;9yZo&?~Dz}EY}E}X5j?_1%C@voF|oRk`zb$FI6Co_}|m`XxMNNe{|U| z;6U6T6LQ!tE#Ii7A_i}J;Hv-6vD5yi4YOwcG!lq2OSEX^L(zAhIUq%4D#@|1{sq_; z(lJE++BFGM(R6GU!!)-fTtmeVB$1UMY#KbaONL*Y*uQLeNGe4Aopkz^@(?i_I4s`4 zcmGqH`Jn~!TkWvtFP^S5r}X_%7ypij93=7hoCblXMKzLe&WIWXH{JavqUq!^^AuF` zu2qngq+}eQGc)6RqPo=%z8}tferryYTs+8FQjEBQf7Xj54snCdi2Ef=C%6oJaMVNF zwGiL@yvyoiT4pYMB{E5AnYFI7ep=~Zt!htyOx?PSv8~e`wc9crxVW4~nH3+Brlw|J zicp}9kjF4@4WE#QP;!eczAWmr}fgZ;aKS{Yj|{_MKjqy-fT#QCz+pA1gQl zWle@p-hb`p_Hce)&&|y(=1^rRXx=-l20tD^wc$!Mqer@Rhad=D?uo?sa_{_e?HrpNp?RWv|HU|Yr4GU@HTw- zwS19Wz$e8lo#Nr|=!gr$+jyfZ`+dP|pBpkHicpXAH-lJ6ALf!&M+=oDptgYny7zd! zR?%_>Q!*6bW={-j9L^Y>cSe_v^n|9WeMM}c0-<6egPl`TQu?MH1ycoDjbCdn-JJNz ztVQ3-2}}HqVuENKNIa_0U_(IkS+Td43DyuR;|u|({8gNg)1A2w| zd?>P`FMFL32S;?5V4*Z(Ep#rjOrKi16$DvEfX2M`F%Hh|C3f!*vHXF^`Rth=MX= z7FY>+Y6}-JO|}smlDl$BMQJ8_67f{7U8(ETFVK@*3VOaaNDXD57`xW+eou-Ce%rpg zYVMfe)eQNY&jvxJU0GEn{N&h6ALCV2(IEBogWC-g^G#yrW5U)+QtpsZ8dTEV4Ashb zlOoQ);n0AyAT1O8B^MHevLhZ&DmB_pgX2hEG0^DkLSw-aG<3nNhB)t=l4_=u@kxYy z@0w;If$B$9nzQ9O2P7f>3*-3~O_UwP9-w4W4Z@+WNnTu)bK-`%qum5!(nM*QyCc4j zCZoRG)|Eh>n!M#1Mf3D;rmtk@W29?s>7lavb||^zfY9RT2?S z4E|CEb&{`<&u%U1&32|ondx&cbkUwNAU>=tZXiR z%E_UBZmmXY!P*-OZ+t4M!3{Rb?2K8kns#1ujHVVdV`b9i<-^QOqxX1ZJ{Y%(`Kopi zBMC7U!C&Na?2cO8GYt)2znLyz7}kq>x!|ch*4jGz^buvS!7+!p!_6+V+ZsALDsYWe z0MKlChjF)+l~wNAip)DVqE8i?Y(E>B)bB3D(F~?!DPpsY2Sr);!x(e+0A5{t(EAXS zfXT_pOrQe2tS zYSjPq)X6dM=za9XYcxe->8wukcGj0$(^(uJ#|vnwsUe)0M}H)xrKz5mu&s3Xn(V(X z5Doc0p2FujK5IZ^VnMN5+;Gj`tA1-(BCm+Y@3h_0>=%gC8={FuDXsm;BUDzOfK{_c z;Gp5{`}f$%+;E$c!Y}y(3v%h7(|zAIk@Ap>eXfKSK@1>tqxlP;4zdS-7b@Z7AxA~o zEGyR+`7HGHG3B|bapZn%;fc;whu*`ue}Agfh>&`LLTqe%zQPK>C$T*8y6onh;>X+0 z0XMaiOcTkERaUT(A8Co@rpgP0>DL(dCu{6+gYU!AeFzHGLOe~d7;EaH6B63;iyPlK zA0(;RIp=`u(^|%RmfFBj$lZUEC39QTad4c>Gd?9)T0MeHPE92WJZTj6_9*x0C-!r` z!6N-F4#{voG5xgG&g74sRrpXyJXor?)TmQZK?WjrVk&qs%fY1AK%@UmQc`kp!SCj3 zvz6^#=ev{rl8Xc`BmO|l{f+Ih{Ht*F(b6|LBMz&FlwTWfFk#mh^v|Dv>f(5M>Q*5T zO|O80hl7htBy31Ck}bb99N^fO#O3EYPbO};P3A2mB_(z1xrwykEfA(i;f2IdpwWaE zCjNFd%sdKbc@or!A+{m^R6%(qQBwMFGPYXX{j=t?v5(`2)A_}JN(|oKO`lgcS21f> z4`&#eiOy6Q?KfOqpK+M=o8GGH@95Lh(hfD4yi`&yr@yi$n~wAFx#P5$4xN}MvU=4o zBP8OBD7}BGBK~CSdfwfhu)?ZZ1F=S`;Uf>ZF*DQBMRvw*yYzfl(Y&wEa_pnCPdBGR z$OK#nNLKu+yl+GVuQe2sIITN=5b7-hC~<8akgBe@r;^auCo3LGD)!#aar^3O1WXK8 zH9H?4`%+zTaB$&6w{>~u^s&#*>@R9URy`{A;}oB{B(9HJBRQ_06GHflTc(RkxS`HF z+{~g{I~Nm{l_0_&GStC>l_ovUS|dc*&U@{z9gdD3RbX1nSZZmx?21*mB5q|MSz$(k z|JB~i!9D_8IoBRk563a-_Baj-J$`**Gso+2il(Tjh+-oC#1~6KLIMesoL6#ZywH56 z3WJ4(#p{)aN>DhD)nq*YQ^)2PHoW|NN6U}>?3|o_ew<*@sj++d$@}KqaeMT|bmhTo z{6R~n-O+&DTm}}shTLMa%fky$_A)=l543f5lI*4a(w&JPd7AU=W{r2eP`_A#Q@Zz8 z$*bWJ4m8VQ|M|vrbd#}@>&QOXATHo8Ipq+{0oob=8(dgUr8M+ES{jOSr z6R6n(b}p>e|OexH)Wg2}8-^VHr^g30;dB zwrq!28+25569HKPLJq+W@q6)Tk*pqA?*Bi zA;D&PYVLAy8`u#>!f^~!6iXw-TafSAoo-B?oYZi!TIc}RzMDTc`^*lzK3kK0M+62> zxEaB6+Mf;j^JiSF%EW>}y@<5YH)7?3t*w$L2-niJ3%Mtr7pb1%a%cv+`#Y@@78Y9tI+aO- zP$C(zYH5|D0&yK3L78}F9yg?^?rtf#Rt^K-LZtEK_p(fe+%d}vtwJAf8>*=46x~{f z>oOM?muu@J!JBP71gMew8`C{-K82I<+a0gIFf=qo;&oU>Yi@1^Rq0E4ImbZ*EY1gNshY1;FK=B1 zFMrUrg}muqO}JRU#bG{DB=n}aKatB5699ke;%3{1a0rAtLU1^|t&OIvtnBjQ@agUC z_DS1HV@Y-OM7+@Hfq{IwaDQ~;4L0^s|;cHA6QHjG0V%# zH{1+pr|{#8OG`^nM5^H zR&ly@f(JrfB7dyRV#M@|U-GiS>P+Hefqy+1X{l+};+FaRVEmWE*>WV@@H>Iv%o58p z;xvjw()Xv(IUTyQxyYm>9flS=f2nvgK4J?b6dFCas2_ZHq>Te+-^*IT_(UFnOU&BZe1x*;wZf_rlu-v8*UYc_lb z9!_xON8h!+sq$I*Cb@Fc=GW(iehb{zrd!KmDg5@KQ{|>ni3cG_C&J2^O25iH(;TAO zZt=u2OhO2*$-mEL>CM%_mv#?WvvOw=0#f2%>=}nfL}2Bs!9)v_xUSA7oKHP&A9>q~ z=>ZsHdOLx8>9UPS>VSjpSYZOT-+t`uRH-990IpfK>B6*NA@6kYhSrJ0h*S6XPet8l zI!DiY^J^|F7f%LD4cnz%4yN9w@>l)>ape+9S5X}uJ>nY-Lfjh>;xch8S-wyolpRq~ z(LdW2yYuDha3qKMJ=Hw7S0=+WC|KUni|fq4G=^f2*LruVePLtj4R;;bNtI|BN?Fp^ zwu{_q>YsTX_3CSDOTD&~;#joB_v+5%%&w1KKK_i{z; z7kX;Fi&@tqrAqO>DkGLY{Az;R^5&XYrzD<9t805~3ab|d8Tse{3NLd#5LQxBy0p1| z;s>jD-sx$68<-&ADhwWgG*noKnT#Y1#mtP}X7<}!POYO{Fg0NfR=0aReu~n~ za(=vy=S(lv3t0{co$T3!8Q#2k14!r>P)8g#2FS7p6Qo{$5&>}?kT%g+g=>5<+4#!* zdAirJh|PjL9VOe)2TvU@L5k3;??Jdt*@o@G*JomtCKlTx^*kdvgR3p=Ax_(q8Gjr) z2J%bJU*`3vrlgdVmYN*Qd(YN72J$VyHFoWTm1aH1K(#EZ(3DN#OnmboeWDl|f6iiI z1(Y#IeTpW%T0=fo=xJs%e=K_Vt>?G#LQ$ju{~8kHbIb1|+nEYC-Kz7Ei&o?p0~r^U%!k4<+dlFy3${F2KoR#1v`Yu|~^ zVif5$nOBg%ukpB|a&cKh3NScmYHdG>q-mS`a7a=diS6olIZ4!_kow`$^B`%I<>L78 z43tGT!41uLo&F?b$k-OI+aY%BOI5?!no_UJA^7I>o+7xY>HG2K`Luyl{xTbwM_S)W zpJZp*#3x2;%pi{YA5siT^@IzV}ztoOqcv-`C+DaxFko!0{S$~DVfm? ze{F0ito+!W|Fvw$#4O|~WN`SQT$fLPPT}@zF`euWRdeldQof#_K?`{9dKc63y>Z1q z^aeINd|>HIS%msOw8rvKObA$X+Msaq?6)~A*F^C7rpB%+COHMc`H&H_fkU_Aw8`n| zxXlLikI~YKMO;!IHWKMryCS`nZ)$0~q`XMcH1~1Ersr-de4z)j5jmsW!YMm1`&Cjei zgTJsv@vz}wi*OL(2Kjh{`<#Ox~6gCKQk7vgvRDd@BN);nNFTkVw@71BD$<}C?_#SaIoif zlxQSO_ci+ab_n{}&bU~7;^&UpH=6f!O~2k5s9KaSOL=M*H5`Otx0EH$8sYgIq z9HV-sq6L3p)ukwcvSAavD`bN$-FK&YkNEVTsvu=hB!XhT!;}jB%QYP&4QUX6M83tL zMi9(zq)|ixEzquidjbARcB|jpB>(T>q&aE7VN=cgQqDmT7&`tA1ifr~+uAzvKwX{Z z7Df^?%?5=Q{s3v~w*UYp2;foryKScM`lOVUyt;+Sm?^n{Nibym{7IAMmKRam zijXvisrP2eZT7a6^7YdY-(NjX#1>6Zx6liu{g%K=9OBoIzGqsA4;8i$%~eb4n!-(F%U?n zhFSAQF$v$h>dtm#ZeEEd#DY>q!ecWEy*uipc!Ys52KCv>il1z7=a7kGqNJq!yx?<# zVP<9qq!zPqJDJtCAl#qX+3Ys6yeJsN@4UPkYTx1jkwAGnXlQc?a=E=@8+wPou~70f zRwz%Yw;FR0(=81&TVPc^5@y=mNM?(+KQi_Lyc zd*=*XmRG~sd(^jQ6IH{)%#=@_kP9Y&>OuYqc5|_^wDhJ>s}hOV6Hy6@jL){m{QdnG zS6APq@;ei8m_B)c@}y?NXn(3akbqeWas2gbq+}jjl;>1b_ib%$S#;|j{x(bZ?%)^{ zge(k>jNpRB3JG}}A#_dz`c4ez8rG0wf0U5Un`|6 zK9q<8w6(QW81aG35D>>jU?eV% z0_OF@>*_dHg%Nf`@9$O<<6$^jr-~*lT&Yp!r1{y}fIb431XpabdxaDI$?D8OHi^~5 zmJ{hLG`@PlBg8C?>=P6!vXmqLr_qxqTRs`(wV@IYwS@QYRVmycLC>VE5$IauQ))>$ zIp#fOT+w3Zo$+@P5{^g9V(Wd0tzco#W& z?8aydzHlKRlQC(Oe45bn3=?qOU)Tuior@Ch0mXfXJlkynG9h3 zkqQgtrn~DM!<9dll?7Ur!K0%p0RPJ6(F+TwjpQhBxa?{~_v|?FQ&Cet6Y}5`@;LpW z2oY~y- z>jU-29zXaj=mk5HpkO!IRv8{1elo6bX-f4u%(BGMm>y^5uyy1?^WVp`qINL_rovsX7 z>5M?E#qRE|`A{bEM3L^u#rhLcUThH&ku8sp?&U5_S1=_upFXJ^T?CxnMeyyGXb4L1;%QZPQGl!uC5syFlk)O%nUu7d_B^%Q` z{Cn`=UP>ais}TJ5gh{L7+eVrvW|%lcp8^l>ow4!HrfPZ`nulVF3B2~1O?{{oUOyCk zzG9H5?Un*~3@9#&RCFc-r`06(r_j(RAhC+I2jd3?)!vAid!FwafDgNqrG7wj0yiLG zYHAwU$#1`m(7aNFJk@+<24XyPbabShbiigr;v^2c+nAl07K9#%rMk{Ptf(owGAhuA z3Zr6@{;-*=W74VlE*?fKHCT>~m4V8w^>^ zti)d534rZ4e zkk0&hHe0+x;5v`bsPgB61z&wUftbtkaKHY5-KgUU=~S9|wSFIHaVqYH9=^FrhiujH-EUfQ)N`@B&0oJWFY5clXKfV(4AZ z`QA(-w>9y-d-uFRXbRr!mK&Rx3}w7U{qp6@;n7jX$B814UuQ>-WV8lh{5Fak7_S^w zCAF%of~2!r=I5Kb%C6RY+P`QO($UcPU(9<(fP0%&1`X1kth})cp{#?M6+Rr#XyA5B zoEXY_odKxA2+*QndoL-;O+Ts?FP%}oMSvPn!3v)Qp^$lRk7OOa!l9Dw_}B_-T&)i? z|A(&K#iRciQSeuz{@>dEw{8mx3iXkF0V9n{pYSsQ&_KJoz1+%9*LQRCSX|$he*ho8!7&51z6SN~?rt6P z4Zt5SzH3|j1uXx&U-=(({l7pa{|y@XcgyqtV~BP-aZp;5&MwCqKSrgc*^Cn*(9qF` zL@u_xgAE0fh&+|TeL2aU_v6J2ABKIhX_(g~t!NT)mhZaz`c{*JqRq#t{I~VE&@9M$ zYL4`yqoNG=|C|cuyGO>xsv0NWxa)rZ7>b=WxGN+saCepbGM?pdD1q&X_l`9V4sOWY z#&oO=(&=;V<54o(Yh&! zQA(#z;Zh@!kdT0k8PwQF7SEzPT%3La!$OG8zdPPoP2bl0c<<}WJxfe{LVipqT)Cq( z1!0u)OD1G^V7K`DO`Y?>XZ0{GmGj)59@YGNhqja70HFA_rX6U8DyRVVc4=vnLtnd0 z-1{j=Ui0yU{tOZzInQNWy%*nkdl!d9UU1= z)*t+-R$loFEPL3}DPDa7XBZk~UYcC7 zdk9XaN|0Mf{I_^P%JGrndMdAdlvbssVxiX3AThz&jnhg820|=g6^4gKcSZ~sXuf*; zwaKIeDxb5mc-Pnf8`l;**+sgA!5)b?f7zd_XLFveFpMa5I-&xMLUE!9n*=u?I$HT$ zI4Ed$raYOAB9xm~PjMo%VU?KL-+d}U;FC*)(`(4kdx$uOsVtm;M_nCOb@8<^BsG;R zRlt=>nDR3ae}VnsY{uK$i_d%g$qMv3>CbrK)@&^m*@;93l5uzFw{bZK5KX`i3#C&|Qb$j)g69YX{IVT(`)WeqsNa1vRe9r(B zMw)lOVFq<`bG+~+F1@_rpWhqzHiv6D(!JRT7Snvp0)coBAPDj}p)+%jOc9%CLj06x zsLSmM&(K7%!-oa(G>>B`KWq1cto$)cC;rstbAD&b^0kQm%j@eB(7LYpxDZ)U!Rf~y zZ0Pp6-}!LyjgM}1IL6Mn!(I<90kh6)HPaz1#Uu~ePmc*%4v%uuk5?iVc33TgGqI=Z zD(_euXT?}FM2XO!Sak(FCj1s0jPgU%?o}z9qSyHr{WZH7O!!5x(k`1rF)MK;iolKF z1VU?4)81wKeOXD%bJSB@@=?*pA?#^OLth#ZOkHm*|K$2(@zL4DO0Dw_f&I}D%FJ7> zs>Rjr=mO39@eiC5|50G8jXF9yj?e2`L3^X_4VFeP0W(^}w-4RJS;Ljg@16pTxCL-B zEA*HVPA)8KX~`%h#Z&9BhQ3Ne2xeCaTFI>v;fG)oOG-%@EdT5Vn3##v;)Sd|w0uoh zr^f9lDpKe%A<(4xpy2s5aKUdB(%TLvYvdY09yw zlV`)ABQ{@cgpM=j_wTQq*5hA*=#Z^xcjzs!jwLc+0>66z4vNA*ti}~;+y9q^R@)Oz zF-|u9ju`-H02fh}b8Ni%owuYxrG?+vJ$W4o1>O)9gMorXuj4JVOCGB>&;Uyi`Y0Y` z#IWz`viXP7$+IHxZfR$Eo85)EN8xX5{I`=v85jL;ilT;V#9w;c2BY~O zd9o>NeFwmLY>MzJN^+KLJre0;O^^(*El}Bh;_I;K zd0_Ec3w>K_cg%t};wy)27YB`?Y#?ern#})PDNSMIh;v);mX?-i<{G-gHi;Yqsibp* zb5M)$b&pQ+ZTH{HQvF?}5CQ^%uUbYj#hvM#t_;iMd()+U-@c&%J-?4ky7X^xHW;#* zuWL6FqL9cLNff}dkI<^NXtgDoNEUb!{kP7yWX^pHe-rt$Yg@C|`u$&VLPHQ4Sxm8y z>}!q0`W^R9)ITCb`^c746p<#|UpT?O-BzbL(}ioGiJDRUPNNNx) znyWf~QW+FQ^eE&xM7{^bF;p<9$p`;abdLPduH&HN@?<2chu6^u2L99`)Dm1A9F1}h zu13#`0cEwwz)I#&uCp^u1$6qJidjYaG7Y$)RJEvCUrM_K{6+)L&%zQ8$}>Q<_oo`= zKnl!MjDDU}ZPmWM;0t;UZkyP1o`PQ$_UaHh%X;R{XYnYc-icrLGxB09o6)7iEH67d zd)dSb^x&vQ*u{cxj(bR)O8&mspkCv*P{EvqYEdzD)4mj`#%rI^i;uqncQ~5?m{cMV zlkBKKD~y2o?PQrr$k2*NK`#(tp9va&8#1~3f*i1K#{9EWQsc=pXG0j%-o4&?gF?O3 zWc3KrT`)BjUSZ)F#Ewz7Fq#qv~#-UbMSD&u79lSmx z*_N4x>k}&PkJ;g$H+~5fhzX zY-t7V-Bvz`@xvGH16tx26hACRp7XoxqW#WQJm4@|mj#?D05qSFTK`pa`JHJ1YX@ZP ze1EPN$YkaV8Gg-?1L@G$ekgJ9!hWnC@I?eMwcj~sM(U}LF&oXjD9kg=yach`^RY63iG4SFHh&P|mc zaqamtUjthml!4&#n+cE}x`s`U*5X&(&tl^rTcxu*69dg=cd|Cx7mI?j#zI+((^mdn zn+52DWc!j!B_w9P?XE_;PM3)ANuP3D{~j0j^-DNViTOZ3&-d<(zPr0Rk=FtTs4KjD zd<2s`2RrNi$xq3jHb>FQ)Hu>-{bn;^)1gyH>ssx`4Pg#66q3qPJtgYSjSln+ z>b07PN>03oFpPcqo5klh+K0QFid}Z1f=r8dO0UDb~Z;$~{^!c&zacg}reGv4LLTx@y zmC>?3AwK;?&8XE1u%R!fiLr5s?ZQ1h&ofoXO(UNZgDobR)(7vA>^B8Bm5Y0L2IL)g zcKpuEH9jQ2Yf6ot@wgQD=;nlzZN?lVrD>mEkG(`W6HDVOTp%C)$p$Ubw007)x5cZC zJzsp{wy();H7lv5Mf^GvB2Oom^1I|h9GikdK}iV*A`xM*%!A8|`?SM#B%9rE^=8=G zM!Xgxf6VfMcl(`U%zcPF;trM!a?A;4Lnjv8T0bm+{JS8Z+_8xz{8|wYp~?ZPhjO;; zQp**vdhj8v9v$G0Lpu&jSXi4bspj?Or{-R}6WA8lQ!Ai*4l=a^a*rS`p!YulO`r9s zHs#M+EOgN)uxVsYG$FQoU^?{bWz*oTY|BQpKXZ%N{5Xgf=QoCg`v zn-dXz64#}>OY_a$bkdSf;SEa8rxCwM4ds6^0|q}U&yJ*T@p$;~61XL#FvyIc)un%u>Gbd+C#Ngg zGNr*;P$U>w;NJs-*YZNg=*2UiM1r)dFfT&s9~<2!sqqj*CVwHg%Ejx#agDJqTwp&H z$DuZO`uBTPk@Se~(TKNDb>-sjm|0UR0MJ47uk0=Qt;Ihu(D7uQ*)S8*PZrETiKU>x zs8(RkHDWD=Xk4^p1_TB|h9-y4BhS|{#a2r#+a2`0jY_0UT<=b>5C%`5MvpAgF<<(B zkctZ!3N#z4L9;J;?~Snl;}$UVa!s#hs3dNZEdY%zD0uo2IBKf*zjTEvuDPp z#;?5E(EO~&IrBdw?AiGf&!2z)vAAwt=?W!1-3SOdELd-ExH_TGAO%{n+r%ki`+9%q z#A``$h)x6AxWmc19Nz1DK-cP?EH(Pu0df4L2tmI1x)Wt)6Y_KlNnHSP z{rt0%&TIdr;?yY#8TG^oe#fNS)bRS5k#jqMF{?Kagm=K@V79sP<3#AV{wN=s0n1f7 zHKS!I!QTZ6z4su^2$-o!`Q5&OM()-Gf+d$6+SNJjg}cg8)LpoR=5CsUE=Xu`F_zgt z%3A&-+{v1w>ia<*^#=_Ir5W^5Xh7EoSnVL4dR4cCY3_9*NON^AOOvH5@7736Z3>Fs z!tZ1xCDA~IvbVQif<;pQdnP7qY*9unf5^t&Lm^9=D z)?`5qynh3%FV&CME|07h&I!-Y&yhfl+v@#=;KR&Utf|kQJp}*#A`x9KqJq@qSe>D3|yNl^VEf4ETXpFa_+L6b9sW4*h&KN1_ zDhS^3B7UlE7fja+rXHg5jM>(E9eI^*Jom3%ZRGZ^uxtk%i8GOnIXZ;&N&|9|wq^=e zcT~gm^p4f7H7*cD9`aZt8vh9bG?cPY@M&yfVoRq+Eo&j8Mg-%+dkOcF6mZ?U|HC?& z8)c_(t5{U#cqBq3LEvG?`qGxgKK46G*(-=tp;|O}aV)DRmg4n0c9lioEDx#m0J+ zUl)weL#PC%^fM>tf!Lr-jJo0p&Dwai@fJJKY@adJI^uQDiY*&}Ak5v{k;(s#4Uw7S zcV1OX!p@W}$!p8at^FR#W)corUYEL0bU0i7P9G`_k`I%1oxeoAYmRPx6}xMsn|Vxo zF$}!#V^qM%_N8S*l)WQ{FFZJz{zb7-XE?C`TAB8zgolNN_36@(6C+X$If2?)=um!tye&4toTmc+_5$FDYVhRCgzi_T z6SA~`LZF)OIRY_bg`Cj9I97OIYf=%pK-u;ApkiJ3~6BF@KWyoHaZ~o5;)TJKMN*^$B5{s z{D)WKKZZzrr=}5lcxVU8x|pm}MeWTT)by5f+kdr?+hm%-)T6lPV zHshO@TA{{3zU>q4U%LaocT1;<9HYhR#W4`z7Z?V!D?#J2onH>h@c@#FB3i1vnNsba zD(frjm20JN@P?Rl#9xTD$I)wQY4{Kum-ZkFyTt>6p%~(#SlOm)KN2EY&s4B!6f6BA z*N_zjhIL~V5cC@Ssq)a>sd~axwGjFI{yVeh8-^t4S;g-9tpXtt7{Rw^!&HFKFOB~MY0^t zZ5|hak3#htj9-AL^!?BY^*Ry+_E4-{H&G4rRQb*=4zrrnl+a8Dl-_^#^`9*#fNA#M z2VgIYl;*W<0+gUxW6p*Yh((d%uqF*?(pEJpHzp!PD|g1tfY#sE-hL1J*)u6%eJ;{# zMF0J>TiMO%@I9ontFO;^Guc)#CygR)tO4|L-a(nGJI%X?O@QB>U8BnShUAl9Am&hG zr_tqTkxczL+1XA&i79_-_;gcK1^OelI>akQ9>7au@aBOcFBe02QD1LZ8V%GQY2hcFQc-J53Q3(3)!EalqE1~Qb%MT%)lT9!R@NUrJ zVTK>bD?J$xZqQ?%{g+9GhL)BM2=a739G^L!8hG(oGg6B;DOg%=!)%{WlK;3Je2QNQ z!j`MNPSN54ieP8olq0XxA+|D|oH6Vg*#7mn<8o##76Ts>H~8*4B2+rl5n;D~-= z>Mi@e@p;2Q;9gqR!}}TgEM%hSlt2H-lsQRe_&=1C+~tgKvyY#p(JZSIAGv9~xH1x_ z4pSxD?UMF6XxM)_JnOO_TW~eNw~s-H($n`zC=pfMR zw7=|ns^__;DmLTnk`^`esl9>jvjp0aG+VJ{DAN2jmhF-{^qR{Teqq~T&PkxR&}fE* zC3s0fUIQ1FcTQQA5V;jjl&vZej_&?5KK^xL$H30cyk~_KSTq7DuF07D`)`-yq03zH z`fu11Q%ZC_B~amKiG#;`wsX2@@^wY!&O33U*29}r8IpajbwxPn5wCdv@ND5=q7FIZ z>&7F|`X?-`>%MZR)gcv`?vW^h+YRk>8{B!*W)u4AAtqj3Q(2=ll(YarxAv&Szxzf7Df_@#w&+ z8*Zju6@l-jqTdyI;SDT(?O+@{etr0sf^YWEpZ@UL4T;;^4XE)|&zQ>C=up}F^-!FX z1#>uM#7vkWk`O%I5Gi7Y*&9rUmE(C5| z%Ppulh@KdiYxeZ?>VLs`MA>#lNpaAI+`Ms83OnlDs3S5&7xy#h5S!pUZ!C!zjvB6I zDZ&1wjTIi+&rs(@sbr%@iR25*Vql6vh5ae z$ydOn!apH~XeFc5%l*^oc1JuLP)v?#{#7ZYUi~lL-ZD6@pxF|XEM{Ah#b_}zGuvXe zShARz87yXI$zqF{nHgHl%*+gX{k?s&zcyxOV`3w^e{{s{3sqTpPG+90`(M}+ulHXP zJc{oBQrXG*|CdHD3-Z4tdAxA{)!O?%Jpso-_xFXnW_th6`p9GZ8y&A+pSKfDDn8aG z%@`F`oF;61KkHi`wnUYbC{-kPq6oJ!kKZY*Ki7l zB>PsJn5Kz;OC^mTmu}Ad&&iA$d~hckxsb$-3JMTmK9O$2MTqZcVTi$Ap(?6;RZ*d0 zph>sKeR?74qnWgPXV0*4z=^;^hCvQCpbsbd-6S}?0YluUm2xw&@Sj2qCj9^Eqy6{T z*yup#U5^}Nw%e%4tZ~r}k51}3*i3$X!UiBIg$B5qx7UW3<(e}Uk_=tj)-lHwVC-W? zb`#;t&*F;3vs#!U|M0z*(S$_T#mUKTEx6(!c;ka0S*s>dBpBtU{lY67khzbk#7>0I zXlFWTL;l0`vFVICtUDA$c^%aOKxh;+Zfwx|e7EX!fDiUt_!rR2qO-`JKCY;_p;q_7 zao!aFwRFD9d&ijIxwls->%gVcC*%&7y;^?`=e+IYJlDzRc_zEraHZ7LTzzPxbFaLv zu@Q4V@u#Z8Xt}OIe+gTedSey^Afu1=*^XyrXV{$n`GzzYolR-k>bYk=LQ`r6{BPxB z^25l~^lz25XQYCg5!=S=e4~1^J6-8~8BGFD=I~|K!#m740)~Q)`uHV>TfGj9=vEzrR8ZhNNG>eX4FX(Z8U4rsn_ zS*^ZD^0+=9naHa+&A&VV{q{GhMNM}}>5rRE3rxJcyuZ@@{J{Bdw@@5btQxORXXK{6 zo*h9g53ijcn-1A;h%gVGU4UZ7_2R=r7xbQ1SnYAZ()QtXvE$SE_5mag?4$6wyHtL* zM^&ylYyN8Og?V6E+!);ocu{XR|Ek;hhO3msgN0ZFT=j98j^k!n&Kuqr&<|$3zkA=G zc|~=<>ty*@Kh!Por`tzD26*lUMLUd+bJ)GA;ch$*EIdu!EyRB(HRjzgGU0DZNJAl$Z;CkfWOgzmucJ@}Rc{G{ch_xM0OWC!qtzLqn(eF3f54h$lH3$D$ z3-IrtXz$-|Fvy=H#SvCKH{ULLw`?z47PLcWwl)bjo_y>$@!IagXiP7#EWWi~m2y;@ zk8`JC(r(XJt_^?;1`BB)f-7E#WQ*cyDw;C31bwB+MWh@MtR$kZ3mAL?H{S1ESURpI z3$=i9Md z3S=rcH((xZ3@_DE0dd)l(v}U3F!YOu+e7_D+8qB(wMID@7Ls@wyTz7M0LV9~a%~yV zQ36m))aiBUE$iZBf59g}nm#e(X}j&kJUr+{l=;c<`-Fnig98^X?P%TnOSo z&N#2RIM(Mq*~h3mmu&U2TJADC`%`Kfb`KPn z4W~hM-N6Pa`d@P;iDes2sg2qNS>7dx>*^hvBq2NS|4v9^HsO{6E`ZZ~>^5Rv0T?fQ3U)xRr<%F-FdU+=^ej#GBmzpSy$-1_}UI&FN=) zvM*TJk>bT<|8Q5-FPG9`x!rhzM_1}UK-~AYc>>CT;D7bD{~MA1Kcn^k_6bt=Tfl0a zc89+B=X{3ndUMbQ1oZ$oDT=9(d1q%ANF|RsDHt2+K;{9>q6UmE%-cP0`BMN^zctzo#Tj=)aVH3+FIneaeCFn$;}sd=t&a=VBeFF)bVUB)@c7P z+-W+ilYfhgQ=gyR8*F@XW5h9m<`of?x2*nf%ti zE^RybU}zOD(rFbk&EwK9Iw7y`sL(JljH!k1cX&R4)LB?-5pm=do89gml0+uG4#Jt} z^Ja(cM_Oas9^FpE+<~^qncq7)NcbHUzHusJbSm24*W%ovv z{hT=loleh!O{dq$OQ9Lg!vD z%q#5}&!%EvhdEv3K!*}6zkw1#!{n$(Okj}6#!#M5a)$^&!XtbY|qtW)F z{UhFkuhYuMN8qC6e$8|1CVOXSO9b%Iu@)O|=eb@1Btk$JZU2HzYh<+7>rQ-@fup91 zlG}STpXX%&;ilDsR&UrI4d?Rw$Vp{On5K0{L6w!o$(K*PB6alyzs8T}JkJ_djGbh! z<<{QrIZ$ex$8oY;U+o$Mt{!PCL>RO#VE7+}tUKRMPS@+>&nwQUE;My@2^X{Y`0f{V4=+x3HvQfpgMxuBk##DcftsOj;j}el)=vjM?C&E7KMu(@pWPo`|Qzvd)=(a}2O*2bMjy9c~w<4@~1N>sp zxYlmZqO$ME@p8iDUDuKw_h;KZ{PM~Qg3n&4FO$Cjt(~Pvj zoD+kE6a<&$vI+yoPLu4lVKGeYzJis8El2LBLkR)qJ+GB!2h4v(=D2cA3d@%8_Gz-h%q&&o9BU-NR`%XsF4C(uu672Ez2u5ofkgPp_>Lv))NwcP*dw zS*)Cc_18fL!L5^MuhYEMw{e>|X>t$<*jNDq*pXvzGWtE$l(k2OV`B_xDzxRsN4w8F zeW6;2MWBx_mm@{RiX_*fr+9nwT6H_f6kCyXnaHiY1CduP=?(&vd$HMpVx`fB0u|0- z=4U7O9-Gx_lb=bJS5Q%wci4B*v2l(KtwraV!bm(btGz*iccv>>%O3CAj-r`=MxS$n zW8Ij3A9Zi$!(Pj$Y9+&V@%-SkGphUk?H?V=>8A3T_%9RBShF9c2=j(lF#$rA$uo2 z` zu^v=da&Wu*_6G6z)*-AktxVv#DYX9j;1lg0HOWAP8fw3==3;lbNqpXZAmN~m2S5#j z2q5Z%Iq%Hw^tjm=Zz?Y-iHLwKE-T|SIpDyGd_BhO+?}>cmR5VHj25$k-D)jG{DWa$=^QBIG7MX9S7 z@p)ho;AEX_|05gvNs^ya2d`&VIhO}rYJ=c zv}JYdOtU-<=N=v}@^`dg;^AR)>C|NwW!2mEQE$}RHGi->*Robr6>L{d8OEVtiH&ES zOCsgkUczVbToJ>eC44EJ@-MIaPbkwAio$6wpA~7F}j6VAV z(OqpL;m^o??yBqY3`xa@nL&$jnb2>Ba_%dgKr`O~QAzP&VZw&f?EaK?<7y-vqL6AC zMEL$}P4GVUP>h1~wcG&|8Ezf2-@$Nz^4Y%&Hh;{+3@^x<;1BL$>0-n=$JO^krI^U+ zrAK$mdK_H#MB9_jwcBakl+On#ka<6w?z=t!x<6ViLHY4ME;^5NBn)trj3Kvb~XNMpD zAeu#pm-|`^8-|Gph=AOTxehZnSt5|EWMs@xgbLwY%fc`A6EVBWu6%P#9duu_=2!n1;g0v5RQAVn1w zwa%6n|ePh!u;Bb#IWDgnD5*dgo9Ee8{RLx6QX7`_Cb?||#)gLH} za00V2WCANmB2M5O&niLzpJJ-X#>D%T^ix}9@t$CCxW~zDP29YcHqZ&FKnLSz;@6JK zn`b86NR}jtkSEfl2)h++4*SiO&OGMy(rs+hB|*bSE-+yggz8|J>OKdy@2cZ|C4)aw zbH0HUnh7gR8RkVy=e<=C z#tw0P`(^u@4`hEn_@**`}(h@)h&=G)lYf6(>Uh7q3^eMQ6gI zIJGUOhwg&`_G3PsM@6O0E@qZQFFiS-hZ>nh4~LKW8daFsYx38%V9?hPt_(c&dlb|C zXFHQw!B`Z`?L8sD^oH6e&vWmlV7=FL|H^Q2wFNtNU=009slu{)JXM)}Y^<4eclL6R zf+FZQzOKo?l?01I<{S5q8y8z)eVo7Siq*|fVLXQA7h%TjF}|+q`Y?|Os@BN2H3!RX z|I|4yX|qd-AjKi)kdIf?9Xhj#=RwSUKI$j*UiZO;-rsd}`9+)=!qW8lq31bF5-MJ7 z5`WM*zqwmgt+BZy)LnPDtWqlEW-BWDHHEKn-LJ98LUl#L>hon!2?;S`v#yn7_6DDI zIHw~X^k(s$)KNvn@2ecjEbwqlbWAyXD}y(Gr-MVu-zm7L5jx^8xt)1EbG2LzeOB}iyC{qz8`)OkIST`Zbr=O_AfEw`m)%cJ57fcg|JyWhbHa3 zRXZnVUzZWJIYV0eMX(6u!F2CAczLA(<5HDxiF?+KKkLTMh%J9*w|nR}qaN0?7Y&8y?m%OLY>GRXtgvN2Ol zuG=Y9XTQ49?B6~jaFipYSBo}Kpz)7iiY{Ex z?XX-ePfCBZ&_mzJUr9>wq~K#AkNme5KvS@K3KLP*8;p1#aK{V=C52Z94J4ks=N9Ul zttn6ixRiFYzfxop8;RL=$U(PY?Vx~!Wz4GlTPMmeVO1#y>ZWKYvUCb0F|f#vaYsm( z>V^_dETn<{aQ9~g{g6O9X;NZnLS}jKk+NmU_@uGShCuJwySrP-P)8#ebe;eOA4=x ziU_w`Iaa@GOJIsSDl7Sx35_C^gWu9G3kK6IL?k&T$J%n*L2`o-_2$~K>Z&Q`c&oQ% z7Y1=9-G0qkDA3UsYmE&lP!|x%zY7VE8jV_~N*A+!Aa{g&Zth^%!IC6a7z1lqpH+7!+#D?lWfmTn zx~n;;=ca?r2~H3@4gHYvewD5MEK`$zT(+oH+QwRtrqr4D2N7*N-bZsfzcd!hM88d7 z)tU|XyqaQJTvGcbSM&(Fizuupmwyjm2rq2hlka@{DMLe>XtrXGvkv!i? z#VMUsL5dCjGu>#k^c#|tAUT)A&t_~w_oq!cvqT?rul7II(g#|eZpwxN6CO1dat9;-l7a&6QM&!W$VQ|l& zUda8i!1g>pjlC)n?_>3=$yb>@tXE68*Z>@9KlO#^PCOcPsvAA5M_gK9dT&)o;}`>& zBFlN{k-GlTFIkEEPtC@?fn=54e|F!CBT3zDHAijLwGl;mLJM#Qxg!p+(INPEnkIHi z2nW3U3Aysfc9IUF_AD-t^%$Ye%oali(@O0$W(^1RC*BZ8wdv{2aXbQQup&8WuYdS- zEPI>6Y&^d%RA0Db1Vfj668AbjbNbVXPK*5)_kq!$j~}CDjUqY^f`ov?W8od&%mIV^ z_cz?bAA;Zpc$Sy}xxV;WC|x%^VC96f0lrakOHwBb-fj~Wnjtqb{-DvZXlMRW(3`?) zSP`RGRlg~ecF{y*OuUGMnpy{HC&@#fy2~MB`xZN^w$YEL24N)0fN_zZZOP;obYNy| z1H-ZSk5-Yiv`^`92WN1NTXm0D%hd3h1%tI%nONu~&hgm=Mn6IL+8Ah^N%6`W#6ItZfJ&=`eySIa%L28iz#Uu2=PiHh%ku{Hm-D^H!90?T{Oqo8z} zHDHe5Teo53x{)g;tHPqFG(sqFKa4yb{DWneBBie3JeR+6Cn5LGvzoC+sWAAm5y=HajG`%*9+cZhwUsBfZs~@ zAf>czdz}U)rK8;3_w?}g(mDL5`$&H;O^E&Tyk1@%sX-nEjL8RSLQoFG4=>M!*nmA? zZDmocw~@vXPz}#q{--D`eFPom&~ECb%js$thH0^T3hYR>>u#G~F@)<|_n}cP3FDZ{ z`z>un2uiZz>%NtIglS9AxM5ziBh?`EeRY*5TUf6Afi^Nwqpd^Yhx47;E?VWgFXTiQ zkfoecGIhs^AS6ke@Y_(wt1(zFP(c11mbaz>h)aSeuNS_-WxfA+q;t@wlIrw?k<+w>H5#85;WpaK zqr~PktLXbxo};z$bqWTFIsWFt!aExBsG1%+LwkIC=IZN`T>SePxW?_a8DB~8fPc(7 z&%M(Sl#olsz~4&Rg~1_Ilwa}=a8zg1z4$};CzsPQh$5(Oy0mpKYcQ zPnGt@L5*c!Bff4;{mNRM38Ycd+RId!NkKF&BgZYa{FJ`r2hz(eu!N!r zLI#{p+0^esN_Z(6d;AE%OS_f45$LO<4KnGocu>_cWJDwwEP7!e+3RN<5!1`X{L??Jo`IU;doSX@F zAd7x=-j;6C@gwGLZef#gvSR1{@ucCGL8udz$dV9{_SET@(iqX@lQGO{U=c@XQ2@NNHqxLO+|6Za2?SySp zkzDm>sRl-Tw{(4D==}S^)v^@GG4i|l=gPI-EG3^lqguH`-QAi5U{y%^d>cny5Q`w? zu~Q!@wlAlJ{|a*Sm9NQmzZg+ZV)@Az{&mGK6luem%TDGT>S+YVElxL{~iiTaM*$6dLD zlgDq)15&JUk(LUFrp{!-H#3Iye3+LeY;o*gx(kxY3R3 z(KB;0X>U6VFVlpWa?O{1Wa~*8iy%^Phvd5}phI-`5hc%dTBz15g0W>8IYOaS{c%)M zAj~TskTu6&6)Gt8Gh~-$#wAZV{g#AHS}<@Jj-T68jUK!t@za%oitYE>Y2I|RvC`}gREqFLUhf>W4{Qg8tX~gJ zs`wmY#M}{=AJFGb=){HjX^uSiWtv8@Nc;Y91dzammLTQJ?!P2ZL6@l`kog(@`iNQS zLnvi1GOWW;iu|NuM;wtDvj!7}@C}A|3sTY#U2mAq4u2a=MGv-H9*kCX2t_O>Cx-RO zmr>12bjE~(A@4H-8?Z>G7#`ZX2(wou$Uz((;jm!Fc}NEDk*t}ZrRCfCRrs~x>99Mr zs6>UCK;$KmvTv3x%{Un@BW^jO=m58HEA7{R(a8`}$0ER-RT6DdoKoc^?iEjTexh6A zw3Qyhh} z?>J`H4XLA*PIq4kfjhI3yqq5k>CGwj>I`a!0vBO6OB2~-t$??%B<5gT$c090uI8SrmGGgQfz#lMcB@JhzpG4z#TNP(9 zE|qoboY@3I>#Uj^d^GrmUbR zwbU+^o>#dAW9lpSkbj&E>r;bl^BRy!u@aHnu6u;XACkz7Iwi{^KSUOg2y~!ILpBb$ zDHHzEC3s8fv|ems|9bB}ui6=Umbsy?+1n|n;gA4gsVk)@zM9`;9##@{I8vKr;&*yfKLR6pK+2l9!mDm@+tXJCX-4!SG4>?ZENZ71XiUJoH@9NAp|2}SAnq{ z`h*C}{ZBr|ry?Px?tOpP4(JhUh=lFGRNM6F*BL?$l#OGbPMT*TH0&sN9i3>VrG7 zCV+Cb5-dRtdE=IJWVlQ?V+mXsiu-EcH6lTTJi<1&VEme1AT;AGWd?OR6;o$;@>XCH zVn)Q7D9Km%agq{rxQwulBI^{+bUYgx5r*y(kC7wij(;n)L!zFM);0@_$aK&l4saJ! zs;isoWQ;x9nldd9{~i7TvE!O|!Y!`z2h<4Nx&$nYV$;5}akdXhT9$|<(?K(O;@HqB zOg?U6L2$9mp|$yvT&Da&TyedG1r3pSAN*kG_rB|}(eP)y$iLu0>; zd(mEuLmf^gc?kET9@b>$y40-Xdb9_M(?0K}55Z`#%g5S$n?d~SD5TD~FwDIPuFJ{+ zHI&L-%6Gc-2wgMZ-)t9LnAcD2iN#E|3k{+krV{~s`cgFm&G_I;0+uu$AN-9DRs%AE zWtJVz4m?)R(GNFD?5R7x71sIK717$#m?y1br(Q*2-;yZdw21GLS2aG~{6T;036vV2 z%E>;XmW?UKgg&P)Xsr?HclaYs%02+QrQFC7dfD`nq1!Zt(`snA%YpTI9$jV|zL_cP zm=AZ@oXUULS|gZX!1!A6Tua*Jk!u7m9Ny+$M^jrt2{hbAz^q|E&2evPjuoJv!3ef( zNmfhD%T74y=tT&)j>h^l>V>c#`A^tvV$|tsbKVaz?!u|j@MSi0yAFLFEG5TT%=%#)u-{w z>HG0uGieL~He)12rgvRIB^!ElF)PMxKe3(tFr-;}lG8KM;e7(jkS7a9F%K+ioBX2p zNYnjc3#V|y79x9`S;@jIAsL7pB2G+yem5mTcZ^vA#tKL}u%Opf->_tf`?L6A<9;Y9 ze-M=ALou@V!>xj)0>y+K;V!Ne#tb&+NY8bmtJS|x-?R{Sz{^kx70#Q*4@OO5Lxy=qw}f1=q{9Lo+M^d<)n)^HFNliN{r)}KBFO<0|n zQX$DwgSQyjKZ}C(E@ZQjSVLC<1B^k;kB;OScnMji_RskyrdyLdc zJ!ralB=VC<6&CrkumM*)ebWJp(gdgbsILuTv{Y;C#FUQE51>O$zLTBk8mzPYx#4td zV&E+_OGGa(1btR?gMU&A@h(Asus}}bwq+WV_OiiIQ-``rb(wR!^uLF%@P{;ETx@^5 zr6cS}Ma~D^i4msSR;)52jAH-b?}^XM)iVo4cxXVIR;7+#>y@*(X zp#g00=XZb9h;X5_(^GP42JPi4W5KQTv>2IDWhOi`g~z_aiDUk?5x7Fn9Ncb7;k-y( zG6kaj@b#2T4BZ?;*})-%3}k|$b&mUlxPDWzyh4R~#KEAff{E5o$xhp+=NNhQroT_; z`xw`HeTb8gfs_y9XCC=QRRu(~NP{;8j7Qx_kX|9lBO-tfGHf4Xhhq;IJAEerVLb{b z_?E&grpx+Jm_0XbSWjAg3tN&Uge1MT)i_ZLo?Os2Wrl-pNzP#uB{u6ZP5) z^|zTe0k7-Vy&n67HDWGHBKI*?l#9YXUb?=4<2r{JlO9tGW$nSU<#_%?t>5{O!>kAU zHlqh4R)pvbxK>iAK=#$N`KMYt%hTK|nUozKkLakFHSXKbps~*sGZdGLC5xxc(5-g& z;|WUQ3+^*F#sg-vNkC(uaiJ2rm5 zxD zrZOpKBA!xZko?q4rh**35|RHGrC$02vvLL z=|m6p7&Obf3m#E7{VvizSj78bka-A0*_xV9Yxf4ql<(MtrT5EHhtV0rGjnhdtoIUf zsFL@a4o!Ayp1`ARF;H{_4{z!zEEV?55|Tx6m#j8(hy`?Op-Y1ux0SjzIBrJ%io1N%&K`|GBb1LyFf{*lgb|Ge`-zruH^`bKE20PeC zfAi@SrnW@elS#sHhFdn&@WK!~v?NS>u{$rSgNfDQTC%BL(6IG4!B3NY^)vXfj9S59 zDA%iRvY##lC*!_DKHawKnuLz_kIWg=w<45aZrWw6DWwW$SfEDGgZa5ecx0{i%9{j9 z_V(?^JF*M$qLIdi<{eSV25W@oL&K2=x#kpM1~)%m9mD@bFb=>^9}XPf6~3YU<+f)5 z+Yb>z+FG5uHrte}$0W1Sn9t+t-*P-oTfbj2q_l(;DxH#mQ{-d|0|rb6$*?n!%7|Lf z_`&)$g|WL7h~37jV=68Q0OmlEF=#+jL@^CdOO}SL$I=SArHwTt47f7*tAW#5{-v`# z=Wi&j1OvR7;IBVo>BFOnCu%Y(C!5G=Ug?~yml7JU=|DJ=%D7a%pc>4#!L?#kOc`;D zFPUXbw601im1zQj1cZWwZr;M5x$yZtRlV|v7MPw5ZDA58j7(c370(Pz9+0Wm5ab!r zxve1{t&sXyz5wth=Fli3KBvN6bN0yRO-+{whA1JYcx*mkT2)nYj)ZsqMDj=JK$rWh zIwCCARU=JIr%aHvOGe=NQ|pBXRuN8NDUPBn;a3O+=~S%^-gwnjQ4B|+)g-_v8d3;U z_(utiU-w)?%hJ2!nidTq&2pY^1a5z#=URYXkaqJ5{c5eJ|BmR!!vv zv+fQy`sHtva#&4FNm26q=0v3ha1=1b_q5&C&UqHlwB#^4t=Z>O#K1aSZ$*u_+cszj zl}1co>V6c*E*%b?OE{rXKDXT69g0`>z^KW&r-O|5B4zoatUVr_!Njlm75Ko5e+reA zJndJ~1*63JZrpo%@`6+lMa?ZD(nPz*`a+*-Z(SR;$-?Shlx1)#t(q4ATu$Rv^Kx;7 z0w0Pe<#a+owz9VLAXs$z%@7bHszmHa0Z_I~|K5uz zS}kcWJwzh-v)mYFG*`Lz{UTdX;qQ%%wu7=Y-N8|Ok(z=E--!hpmsQd7V_$3M_i?{L zHKucg=afnDX)F^*#=|HvT)XUvIp{mp6uZAVZM`D52?5|Ni2(-Pvwsc>U$Aa9m+H6X zM7=N%EKEuS&mff6`uq>ozqf&X!LPF;?145Ai7+X%H^KyB6{9i*%lHAf#o6$BXzIa}M=De(&OJx3_#GN7wg61WdW1 za-s*&JRl{|l%=6da$-?QFTKr8wiY(N+hssQ)3#gZ8d50SRAzt{C>}=wRI8@+)WxNa z`fzYsmt>@l#1)sY@JSf{IcY&_*zY`;k#a!&feV#o)R1NM=|s0`hlN9d z5GSo_9s88Vy)D;ql0eb;kR}i*m{|>ImKXKZ`P5N;@q%GV8p|!KdzNU3H=2^v4OQIx z`NZFqN=YCH1iGh645Ldz{88J^F3TKiS@5D}))t zOnPp`G}P7aj^SjCbUdiMAd3E8?`GxKq-D_3w!*56PH|U3)Plr;cr>lz>p*XHY7J>U zI(xuZl~G&$T{vp((PHQFG$%rw>~@@NzMrF;)d%9f_iCj;h1N0H#qXRno()y12rI&w z1?w#9Dg~R(Z+th^3C2WBVbSY3nUfX+F^Dv+qNepghj%{gl|q$5y#M!-X|K6$%=D)~ zdC2B&A}8%4mRnjt98+(>MlS`_?4m2C{Ce6saLa4q#fmL|12C|fM2+#xK+}>ucdnvb zOYPIK#yfN8HIg9{*v%5Wohc^Q8(DNrO>w)U>`r}^){Zt`#QddjTcKjWYl)K#S+S3)Z^n+ZhK0WiVMp9kcw5%LLBI<;JWe@|6hf+ZPVr4Z6yfGv=f zbEgNwXvqV`675nzVS>>0{TfT0gp-aPddI4)qzyjXD$dx~4yaRZH7HBF%XAxZ3|mrm z?wYp+Z5IKF+X3TSX)dPH5~Gm9;NITO*8kQ597Ym|&Y{Pp(vpN~=~A~Y#h-Xum*lT2 zNXR(~^oF9%wk#-IX!jRydT*yPN=>9tIx}l;9SoVn0aboR>_YDzDFyU2&vXTqK%56u z{Zt_!MPN)cA2sgT|9kN1rPk~B7%@f@rk*l6@)R5+szBhzk}pV4XfEsp0UId^o5!#* zE39{xB`2gU`*jQ4`)w~w6;aJ|qLy%Ks2LeS(rj#?LKq+9YdWT|tUWidpx)qO_ zMzf|X5eh5xpM4^~=P15rt-821V12}#+0>L-=~~BB5f29eE?8U^@yvvCU5L>wEk)lz zP7kHN!U)KH+0$Mg=D%pj(7!flZ4g620IMe6dV&3QuqWOkobKl|S52}?V!EBWq$%#Q zY;j)H`=J6dGOuW=L78fwjm4N;_*SpEJ=%{u#dEdqj7wsib5gu$l$Jcpe#<7My~fx3 z120T?K){HReudt9Wj&H9gEmrlZ1!mw4FKmXMqL0}$ulE!j&KHpTs{GMvnlRJCk;vV z88q%68Af&yXFj66F?YpBR22z}ttd_#1GdHc$ zV`vr5o%p%m? z$i=~?2JSPd?>FC1@bwoeHkkrCIT*@cyOPM%6?fi6s*cYnXIn2`&Rr@MYm$qD2Cw!T z!92L>(0E3kW96KwIfXypuAkNC*a&UWo7zDu(kX%A{W z{H{GA&&QEL9}X39jx9ZtR~dE1_eLKcmOeymDXvj(lhLMO!sK5#IDl|2>z6gcPChl6 z{n#{{D*<&`svshc>b2`7_uSke(l15gGK9W5i3)wIOnclVLLTOr?S3LsOB#NgP9KBJ z5=19G)<}H`JQ)ilv_fc+Xdg5^{3{P~hJI(x2YNuG+r$592pr|`+jpL_eL zf%=hHG0|wg{N!}jIuA!hG^a7wSOYpOQ9^L{aR>p7^$thYtw}ENSBa@{=^R;?>K-&3 z->|GxV$%cc*YOJ2y>Z^;h7Wu>xi?CZsP40R>jWH4=~KJ8bp$bchpizwTf4glPL8)> z0+|)!pq=pon%8Z)57gMkb)tc8D(V_@IO7@cY2zgY>@O+o77d&>DALi2_4jn6}wA< zZV~>X)CCV^tigcanK(SknYB;joO&g3rLROGSErRZo|aBwCTuK-AZMF8j(SP%uU+R_ zkjAKPUQVLNy^{HUQ(Lvz5Wa-D3bLqzH9{w*(oasVXRIfU8Y{$RwP~#0ABE1*{bS*- z_#i)nhnFqyBN_cHw5G(*#Up&c1fx~!c*QI*2^Sh?i_G$jI^RJvl(&md@rieFg^>>N z^1MZVUr0(t;1d&*sa0wpcfX>;iwl0be0h1$Z0nXjv`jyBO#pK$|0$nUyauKBtLquX zKS*b%=T@#J;hlk!`Mdude^OW)xq8Py_0-^y@lzGso{dsBV3~6&?cEV~N_t7a z<5hkGk_o0mY4garD$94@Ddt|8rM$45IBxq7qT3_ts$PAEMV*Iyy)WNPxRI}F;*WK3 z6Quko5gt_rDydyBE!}pzlw#))8y@6PP$O)!MxxJ4VC7~h%oQ9A@7AwDPs%u9net7$ zTLuA+Yf7Z?T=|Xt*Y%_&3KzwKfm$=awPw_k#8gJBQrx}>eYP7V23|f_%GNrxfYy{xL_j88 zVvizb|K-71!=H_AQudC$Wog&@2)f0nv0qk9APh_CJ9@>A>TAR^hT2%$Q0R~Z_zKhV zLC7z4j5KwN#w7G%nK1{v-a6ai4zK=Gnx|w~PKprs4yI~5;JlqIVG?kgPNHzl`nxA^ zI&BY=;4x4zN`8aQ$sg_;EgOxO8+jpbDkL-0>JvJBjNDd{k=x&fuTj-D9U;}{7O);7 zQIln3Im{u~l$6ue+a`t}2wy}GX~Q)ckV(b$bO#Tj-bi&jZ%%mab}25odV#>D*sUw` zmG8F}*Py^_@CV}LsEw`SMJ9J`19$%4t>`$MhqzL*p`bsg1SZZ-;f`3-zQ>WcQ zbKs)uo~KOA282FURCG@G@HBc6pd0jt6CEUZa9*58ITy$8FWrmaUP!zG4F_2Fc+s4n z=HZna1(CY>E8d2vF7aW!`Y~(>W&hxB^B@NI9i}7pvOZl;TfM&~dPFcYD_>e_K=+Hs zDHr4!F_pn5&wu1=UoC|jnnk8w+K~sKe7TaXRnh3Vh-g?V)wa*DCmAdT-3&oMPJ`9t z|2c!Fe-LC#BOMKIdT7}DJ#p<%wCT{tiT$R=L+g|r1FYOH54`*mMQJgW6!MWcOc!?N z#v6SHu(>!;sQsdvSZAuj5l^xt;j*Nkq#q%txM$l;2OT_1KSF%A4kg zxEU`McSM?DTPEN1c_Gj-N9F>EQJuxYqNW0HzU&f zX?^9*Que$0!2EnHG^d)2kL21OqEbELFlB}s)W%tPmJwUQqP2c;7Lkp%8qtBH-Xs4r zn1q4worS!ee{=L;f|{={WEO?hnf%T3d-@!P&}D#qS$5m$n?|j&$F)qjzY=tPX`*Rh z)rt#sll>+yxWCB;Ja-cO^V(bV#pmEhjI9_fFEoX}Dvu~1d!wXDr3s}crzTev@QN#$ z?wH^Ul;A~ghM0GEKHUW)noWj;4kXdv!jZ+jZVXG{FkEzud2RihW6?a1?tQjzALB(H zXu{!xmM-3EsBY?CAwCnqgSg*iJyZmK-eKMcqe<)dkY%PPw54^jGGii4Vm9@ zH=77H#)5QlVzHt_VUh{`$CmScDKGOqmAOWgqC>j0mD}Nc3xs-W;GPR}<<;#h#d5s= z{{ zvDH44LUx;KWFF)PFy}ODws2ZGVNa#0dD|Frm`{a$bykqV4RlUwi?h;YYG*h9|J&%QC$E^&ngmh0M>83^^f1L|+KiE%-9uTTgLli_Bx~((FH|}$F`#<53`~)16gxupO zq7zY&amk(huf1dQ4%yRVwg`|YzRra25uCE0;iErTzu{0kPs@26?hsA^dxK|vB7?^;y8UcAXf;AEQ=sYaFi#kUB%j^KCn zwx&Ev7>^Rhv~)H~S6J8HV#IxfsOM;3&fOraRc=x8nw$+zFky|dk-yE6Xup7ZGJKBB z{558yPueY2&uII-kY^ObEHE2+q9?-S`uY|Pz1qHhTg7_=k0I)tBIZBAdhQBKTVXhR zdf;;3>v;L?*ZAe1`z<1G{u%ExKy~>j`yHq)WAUB&$8m4l5f{3{Ln%IsBX=83hEPSK z?y``zj+Vxu+a$^Y@&Sp9@B0Ad@Y6PVPzMmB-OMw=4~-j8YJxEWO$&Sa%WDsjH38=A zEWMBkg5v>6QOO>&cXW{vX@HZq7`NMOW)VtdFuJy_TiD@ht)I<01fKviy+0`u$DsK# z$fs;l2E4PrK79E@9O7GqLt^wzz;C^Akvlgk1l3W3kx{~)AWP|2I2OGy(DMhNsn>B0 z$tsI@N6A*ViTcLL*OKJwNlwI`-FFOMHv}FT|1fW@|0$N>XCuE%z!hOM&>wrT7q?Td z@Z{VlhLR$OD4?1ej;?dr9X;QLBDs+Sr6*7|U*G1~$cLB?b_C@$E#GcUsYVsEYdm;Y zKy6xPo493ackw&MdRjnk#l=egHMS~O@jALjh7oYde%6b(m=2!qIhI`!^pBtVRTRn1 z<;^cp)3O+*#(eky$MHQVHg=E%xm~qdE4+?jX)J`Fx7&E7Mf}eGNiI>4+j^{QeU;_h zR|q+$+a{8Ou-3Ro$yw!n@s3cvsn-WC>v4psYx#li0qCue+HUxrQARwYI9jdC@gc^J z>B>6WrB%|^G!vD6H}v-cKJ$ma!k_)q-)E}4)PBv;s1WIrTt%*4ZvU)FHImKSjAp^5 zf$DOT4d~D!>zUcJ_)@nK42@*W!TQmkv`NT*5M!X-gr)(N5c`h8iz$dqgLC2Fwi$qW z(-vL}`?r<>n`qT9L3NV0pn4FT8Su{9+g10NPKvX3uA4M#>z#~Eo4iSfQ;>)F>%}24 z`YT{9m*qeFISFBF7#Bdyp8}>wS*$cEN9+C zz_qVH+0;_psi$#RW}C>kH~oV~3Xj}m4s)awwqYeTRrpf0I9 zeDU7b81c+dQFoZ|oo!E!0Yp7VdEdm}1z!TiX1ntGYF;_J)=o@mE}IAt%* zJr%D(h`5h1;+mt-xX)tdMf-CSe7a4fD@KJal4R7oT$t*uW{n2sNR`$Y4b1gzH|jq| zy1Y!xf9$|x0DB_Qunvw@iTS1x5O7KsLH~nAwtTN(CAG>w`Siag{+pMWvif5^2BF}C zs=L?0+R>;m-bJFuGdC!D;nJh;BQrA6Pm1JYpe@@PpIxYHP`Lv}3|vhxB`{jQKQjcD z2hhQjhtOkoWoa1XDbUwJ41%@_%0qSq$l61^MPILzwvmR?J9dSKRz)W?2Gs%>Ej?mz z0_sWdJ!7}y07Q?y?bdfCq92Te?TcjQL0SNMuWzb!@ZZuQ4)M*#Au;*}@fWw=;gw74 z_%!>5XnPVlm<-Lcn!U}j*jbK6pQ5gnS=@PALaVyD+JwM{Ei8tzE0~WRarqdRLafH z7ojc(iFqF*<`^C57~KusR9Vem!LT#}&e#LRh6sXyYSc)#$WOo-$1O)W75fm0;zgzd z@3VD71F$gi1lyIn)b$dEsWa|B(cWjOdYfWnuv_yn(qdn$Z_s&%-Lr(!dJh@fBuC}qal+X%aF!yk(Fb!gg0*kPz#MQlFp&1HYv!2A)bTD^gbH~HsVg+ zc=B(dJ7>VE*;86_zkw@Yi;=50psaw^vSly@K(+Nlo}ewRR&Ro<4*tJmn=I}^3W1UD zI92aLUk6dMy@>?DHf_|BKv&zW+eur!3%QI<%n)e1XlDUh#7-^%4sgXfq-Yq-9ozj{ zJOY?~lX9=zNe*7`5Qq2{;*c1YC|W?29cs}$fAQ|(I?Q1CfAZ* zK@nw+$1flY3WdfxGvViXd+Sx|`c8YDxNjb}>}N9Axv8hs3WDxAkQ5agJM2_fnD8G* z7WD&f%;jc^OnsTAUTKfmPx|c}^kVvDWYNi7@M-Rs-eAiAcwZX`KoVsp11DK8-ejYA zi>GG(CRHuVX6Xu1&vA}NzHi@S=v*r&v%w2!MxCw7+pKGE5%nDH8RJiumI%AYxL>-6 z-!aCK(BPc5pexQ+d5MWum~KtWqZ%D?ZugX1H*^fv%?-57%X}>QPg!qdaXSV-@eivS z34%z}w?MXXkEp+M?3waiqQ3q%S-?F`vTz+3PK+|G?7F6wWitE-+xqsad|*{*x4q0N z7#VEm>#ho*Akt^@2rYl4*P!eKtAA*swGem;;9USYW*b8egJpuT0zv@9T`iml0|rA5 zafoj>4vEnN!m=#hNp104e|eQ)BY=C4h_I>G3Ak*{$?V7p68R>QgsVy}?TM9cD*Pv`LX}s^~@&&8W9c9lIT^ z{Z2o3GdH-KeS@Y^Mi$*v5<5IR_5!26IRF&NHBb{3bNE0MI+f2pA4plYBvB(8h z3$HNY@4wORx;fu3zJ+P&_#E-JsCq9PlDq8=JsZ5h-Q3rDT4CKVErYsN8q!6X%7EVQG!uJRkCJo)5yeT!e z$<=$^v@2SUH#dKqfHQ_$3E`AF=XfIW(Z2I28bx-56z}&w&C1T#xVHYsyl?KuhaUTG z)u^s+GaI?k^Ip_{l*O$Vdx=ry9w){=vhVd6gk4e;_KcFNEaFmvo#4;!L0Fc>&9&S7 z;{W`=;d=chaqD0QYe%g>CI(Iw9=-?AZNjKAztJHG+c5{PpML>WaCJx#wEAs($JJy| zZ`%T9bso@K3p(~J*93nB{ExN*WEC({Aa%s|2rj!_1)#0iBut(MZ7@mifwlqFZO~jc zFLSuWGhxqp4 z@YD8y`29=QxOgc^ObHG2->7TVwlSky@uKNXi~*sqbK!GnMw3@pKToI>U?OmWRQVpN zQRhUgH-Je!Yv$@V@7QN8-S~u2jq)WP8T%nNi;K2y z>3~j>BHCl^-NdLHm6lj^G4tmniq}!i98XRDeO3#vwkPZCV;%3CYEz8{>xH*jh#c%j zy{@k#xkZk7j!~$sQ`0mY(g7pQfY%vfr+D4=7uo}dInMHlAHhWEX$(Y+~&r{Yn+>Uj!|F76Q^f0UAb&`vlmHL z8=$Q8EaQ}Y6zbb3lAF`9j{{KEvbf{`YlYX^298nB(ScQx{Sfocv6!~CSwK5*WqC|bR)O5<%O8}Ikv*&nR0gDe! z<16NI);iZEmbb}L-3b>Tdz78YkK0~AmbHJSM7;xr5*QIcfN~mWnS)lqPP%W{|M9u) zwpBMoA8307PDaKaxp#f+!JMYe5)`jNZ3Gx%DIrwB(*(~6Tlj5O_Rn!MlJ0{ct9KyqkZrf zH(%#-U%rgr^ifgm(e7bLme%YqiY_!Xi<9wwb23?UP^?$*Ivt#w{5a{#8m6T)9eTKL zS%AE}!&~>ihD-J^J96?sf{`pOp&AwZ&KL`k_w`h*cGnHKMu__-N#yQem>NNMgi-%= z`~B{H9E(1M;mUK;(RnIWjRvdvw>TC1FaU2RKSQp*Mper&>3$%AKr zsM#s`2)hp!ru!T*O3f{b%_KqR1Z#yiscJi%8U4Ywdv(5^plMX_y8x4=$y zg;8IBzEs}GkyWxB4IV}8YRfL~TxL3a3_%d^I%8BCX?(7J(?ziLRrAro6OV!*Ac;{KhM9^6Ah044*jlU*mTAi1}uRwp@e#V9PUKPmrmtFdKY^sCRD9 zI(GbsZZ_Gj+#2d=9d=K!n0~p37^$X8(n{iXyEy9Z6+^G*7g0p3Es~xdd7Qf?yjyYFpSz z_ItPA1a%SQqxPu0I>2f`p0l&i8h`rQ9k%ap@S%mjOSzdN>YW)%iU11r%)n9ln16!x{BoNZ8K%y5 z`7S=^2mx1b6~pHo;b`O4Xf0Fz8C5}WM>RGSY*kP-*gj4n~ z5jcrpdGI-gM^5ObP1GDxXN*=9L_(e@Ax{+5Xp$}`NfuY}Is%OPr*O!&7NDtD*eqXT zy?C98z$pYld{>Uq4#_(-mu!&9VX2X(tY(RNrr56Dq^=ckN%#WPMv1hU^;EYjjrh6R7ljR$Tf`n-*%teNKP|2c`sla3V zI$FDAKXt8yTM1A%>mvt1yPf)BUhX%cZg=re-hK9T+ z$IR!7vys1oL-yi#4R<|``Hyis`4?2w8WW*oZBhiVp1Z{KNUyF-7G;vz{YA6i>3C!D zGXL>k{SvjyU&9Zm4k(Nr#ZuGA4O>*7pFD*>lR$3PFa;>|o#fZYcw2M7spr)*y!xr+n|1E$$5)2_m3 zE1fZX0BHvF`+EqDVp{t8m6aprq+R7-=Q)fK;ZA#WU3p2*REc5SFVhVy}UBG z65a!|4Anc(4BF?d(b6*QeqRJZTm@Ge96@mIZ-sG)L;O{6NQ}DhYhQnr#BvQEUK(1J z6Y)n`+PO-qa*t8p!cb>u+ry~eufriZkwlrgR>iG&xtD#5G5=9qvcHFz>_QYIW8K^1hKIX~L5#R`w zW|766OH|bzN`^*4e~HK9KgjcQgU8grnW(5~l9kIO%S$wk#~AZH+%{ia%6^$gMt_9K zKqr=>&{$`?atqa{VYZ%bcLQSGN`RBG=UBU&9&!|RPmnAvwu#YV=0(Q+XUSE! zdh*)#!yrd%QII$`@*(EJ=U7a?j3YRK=n+})_P5mlwo9ulL?5MG?~UY`2%Tkd>&1PD z5ln`TvsqkXcBKCX6!y$=Z|Cbgb@cD=dk(qU7UyHnWLg#2uy*}B4yT|AZjsWlP+4vrrxl(b)b{?IH;GP>I7q-kmdR|cm;630A}y+sj4aD zD|y1c{moeqafk=SAu$3{K$h#djm<-+XCo9ErVx>KMmM}cv$R&sCh{l|W$XI;BuWPfSz3ddIqFSm2o zTynt9Pb=Oe;EcD;Hg}z>cO9}%L_SKkW;>2Mzk!LaT}Nxv()fDf|03*~p`bXp5P1T} zkg8*{c$ZQCk-m1`E~dhdv!1)m^vL4_-}gBD)YZXa=y>2HuiyK%eUEu1a}B?11gFw# zqM0nb%|z(zz;!B({xtdTbfgM9{QS@UuhhQqCX?oaIasH{pcpWf0)gJ3;qgp|6y*a7 zcVriZeIM&s{*a=i1t zAkpJdWMplDbM*{3eW2WdT^*$-2(_XeAngGBAGF(X2cB2nHjR{9Bwc?S#4ag;G-9{r zc3*2;g}Q3D#u}+sg$f9bLm_MbEDGR_gL2BQep$V?20IlOtEsg^Vswaa8s787=qrnh z{K-qp#D#F1WK^03{7&1%Ea)1c)W|VEa-Nm!C60_d{;tS~VKr%JB_5yt=mW2lscd0d zCXY{loTgso^~C>2O|7wAxz4EXD3ai1B5>l}ohYzbxX01h8SbRF@j3!*6zu9mRV`3% zrYY3zUj1b76r=J&Zxu|Gd3@%_&}-YwkGv1fXkwTurDlf3bVuWptSsSEW{^dNplcNO zK2al8Elaj`uiXxt^gqgk|4fhnP~1CDs%U?S%VrBRDGar6``?ZE%q^VaZ zHs5AB_cp28C=vG@aqkIKqs+bh*V|cVo8_B~`sVtK7)#Bqb~WljFdBJ=WaAb-!9%IG z)1L6^Mx|N6Fm;0N;rUQLSB#DP<-XTVQ*XEIqP{6Im5siAY~-)Bt4_0#3%I-VYjv$c zB72kh=p(G8dvzMBUc)fep5?od*lrGd{W}$Z^wO94SO3S)GPbdaIBJkpg7^!?_WQB{ z!LHc}Rfer7#Pjx;{(gAp=s52@{QVftIlH2>w{0fuMqzmDc2ji`st&L&w3gd-uMR+S z(OyTaf!hM#r~1tr_d<$6^O{|q*=?Qe9oL6mQFh}UC>Cw)5&|@#!ToTma{M6b%gLaVnjR(%qUL`y&fJVz;?whov-DuF%vpNqWIc@*Ksdg zauAmsB(IS|Z&USg3qmgHOe2R7v^Bh0We+g`3%{6_M za3GA3vyE?d%4>b3#V~b}#bu7i5B55mja*-IRa)c3=#vP7fX^AH(%8Z0vfCNS!u11VLcSZ2E9dyd zU;Yd`pZyF^7dzp%RiB30RXj-^KTkeoSAdE>sD;KE-`FBG0tf=0rW1FqGyUXgf~vq9 zkDVhm`4N!z8B0nZ1mO$UMJ%RQbI$8r5 zouxwgbtt>R8fHJDf~x}lSv%BKy)k6Du5D^}K#YL&0Nz&mUE6j*AKo6uEP+=A@3Wxa z9>z`^a!1dlB|SnK-`hd2oDNn&(oC&jP-`6c|CAFt3KGtmuMRIpm%sSepqz%@#y znrM@OwcHZ3BfZrd!_-*LTx2SE8lQ6n(=ym9t+hREvbAld!*(#FYBZ>8MYc+J$k);Y zToEGP3F5x9?P|c{&dXqV+d7zlD^620I2P-lwDKs+M7(2oTdlfWElESKu$H?`)EDPk z@0r$DV28`XXEL*c=WWS8A*Fdg< z%LlRpD!Xknsnt5017)s%8(_zXm<78!WvQUA^3M7m&C?+c@mIimiWq5z!Ee9u25(=_ z6CdJWU1=8aI(l!6ao-d>)disZth1lze>QD5)$kgD6pdsVP4xOP?uW~ZpZx2|gZ?#Dh!2SFZasMRAh6?f;0GZl-0+kqU zCBU(f5B02{uO~=VZQ-g@_A?uNvM=XsY)|@oQ?IgBzGI)WQOE3>v`LnhkOY}y(Wlt1 z+!|QT8HAPmOQ=R|U&rl`Yl5}>HH!5Tv*8&M#n(7C^1@K^u^*E9CWg!4xc7L^>!X2_ zZ02u}t!&~QvB^fhwvEpjZcqFHdg8}zZ=StX40#e7*E+<=NJHTrFweHWZMW>3 zzf*x`*^bw+OfWPEPJ#2;&NfBAT{-EA4sqFO^v&ybb*3HDGlUrIR$6M;q0|85bnp9R zXy>N|8z24)e6?Iws(kRM<|%q&3Z7Bu$cy|wvj05Blfw2xPw+h^ZVTT5k@ zyQ~1-JHf_>_}1e+LyYR0%1{5{AENHaME7|T&Q!M<_4l?sg6;_0JNMfo`BCp|n;dl` zUrUmyB{&+n&?ZHi(PXpu4yw^$apz?wf^(D_d7e4)$@Vgtiv4uDmlOf5iMV+-3Tr*D z`4oD$G`Ci4(DBDb=qIyaplnc+dE{ zZB+Rfl*^oSK8$5qoQOcSb|1siSj@c0TJd$7dKpoWNmXw%>b1x34O3&Y+}Y1C$7rYQ z?VAGI6;Z23on(0l!_rAst}x+yjO}vo_0Y_QUG*`mc;o<6!P8*50WXFDhGDRry*TiE z0Sb*R!i{mV)zmWSN`i%$E#ltDU!mH}Fd96C*BN0w_ZHCW za{b+gdb7@d^Kbqail6@?_{k1=89IjFfZ97y ztby73T{Hp4!N49zCk&bj?vm{f_CA>G8tYJ$21?jLvnv&NRzDEB5bA`CT+ z6zbrvf#ZF)xuVtRtrp2spl{g!f=%{}j4kl)o;s5zZQmkkkNCW~48;tXafV)Du>v6l z9FKtZ_MYQw1>g!@11rWlDCa=jHLcv6Gk1tXeB*e}5TosK3C)~mY<8S5-TLfGq14$7;Rn4~?vDf0Js$w zA2{+4`h1KY1jR-QuOm!DuW&4Kfs?W4C^u8A6kcU6_!Lgb$GzN}Jyon-sESBIDzo5U zz|`u{MU1)~qer~6+|S)0TTN1|?=T-7Y&dxky2tnLXD_i3x1a7+y~bw#Dv!?m7>V31 zVta-j>sp0$CBaPibbG(kBaf4>CP-x7V6r7>|894=-Y%s0;m?1LQzf|NgYA}l&;XXY zma|MKH*Hchof_;%v|Si9A)kg?jE)!40LWzsxWW63O?b3> zpmgaF1<^jxU1%$SWVh4$K087$NwZ8as!;v|uqMIV=om%9YI8WQ2OH$M( zJ@SxAQ+*Y1+NP1#0gls_YVXtG0Ji{*)`O(m52^@y>)af)^5BN-Q=S9u28a*al_zt< z)-#D6jntoBU*TW>?fnnu5QlhByl03JfKzhflHE)Pj|_ZYH#G#eA6J)IW44}ST`f_I zO>t4XPsr-DSS0r-iOiQ!lVz%UnUEvGh*29VWS$*4P9kTwi%iQTky~Ucw9wN|=|)2< z_qaaqqN!J@YbCbJchOCqY<8XVGaqi7P%frA;j)R`5+?@4k~}E#wH@Y0PGXokwdM}1 z)mLch75vU|#(bxl3q4JynxN7w;PUoYOBBhC(&ZL2%n(vHn^e@D_Wx7W+cfkd4ZT85 zE8=s6xw-mz+=`b(@eRg(X9#pfdjQCy>s^x~fSu|pN5YSBzi8Fe=ESDA@Cfg~yzrq+|uR@bVeN^8uHobLNfhP|^m zl>qCxOOzWa!k(E2ZX+&l)ZxJ-Qr}kibO>tjbbk0UngD+^2|u+7E)!OKkn9@5e5duV zF2I$A_mLa@a93)43xWf?h1FWoGNE<@sy;APaJDA>Tt2Anx>!4*=>fL^!Ffn^*xP8 z?j=CGt;LxgnZ@;ptw&Z*c($kc2N)NW8M zK)SY!VIC~Pv<(?MZL)?|L^tb91s`H1cZrj+=UU5290@&3p|Qbo?kmg$p1`ey?3^<( z%XnZM?;fwC(ZF2iKURU0V|L{(U0EjaWr^}JKKMWX&D%%N+SCv^U-GzTUEi?$ipOZx0s7OOscd-Ln|{E8SXypafF#3 zId8Yt)GVrA-8VvH7vG6Dqo5~1Z6XH60Y-*hP%QZHHrx!sGZ~l}Fx?KY?uJi={0uZc zR8E5WHaH)#wLqmCP!G{20J{~X8ni=TfX3vxO^2S&AzEgjX``fQG=9}!vPuz=&T4uYpgDx+yymN!c#?P^;R%i(i zpiyCWe%LFynRdp=*48OE(=!yled8>quJjS3L~f}q!hSbc$zDQj zrLBvi*fzFo7#iEP3UhLQWhm;M<;vC}ZL-HUBex8{8k=A>! z;gLrv)VF&oMY|ZI|FuCdOpW!Dt*6P?lPHp#?aD0-OCwdii9r!*K;`D8`@cjy_CY41 zC;D>E`uCysRIg&bX%e{-&n|ol!_?b^sRu10Wtcka`P-eBEt96+8^KXiH4>SxvRz6r z5qb=(>qg>Md}v04WbrO8#Yfn4fcr3DS~{j>un>EmjocO63PAEQ|1MnBzY{RxAE7)y z1-JJnM(+yJtUXnxoE}`IQSU?H{{GI*0P+R|&VUpGt=GM|uWh!gCBg)GzIVT3$gbFQ zn?A~uQ29NmjDfMw?_0@1U=$ojY!YSdF$NXApm$C1X}4^ffd?7GH?vS%g5YteJ1(_GT4yx5Qlg-c+U`{ZwAH# zb8M9oOa$jx+j z()342S1$7C^ubd*T8mhA{@+A1n#{+Z=GyvSa4dd)sP0P=W#%IL_oy_Z&PMKQT$uj} z+)9YM>B|^qXPhckUPCn+OovWVY7|+^US;>seKK^sFTy5Sc$>3RKSHLm%zXSgEXzVO zYAkNOh$K1)xW*X`_U73Y3Klh0#p8JQ6MWwZkS)7awjW$3__Qh&*F!c*P)-2`=n1Hs zU@U51RM+g+qcf1XZ~rV9;IhE`oZSion`r1Aue2VRWm``qpR|wJ*c<-32kIRt zl)yLxHGy_C2!Kz5#tO(Ka0%f4vHgYP;%Li?K(kwSf(P{e@ab-7jTHa#cYmEzzA#T7 znZY~P(Q3VL_5=GL`ymdo2k$9jV9I=pJFKw1!&%w=+beB}N_z%#$tM zV=~rXovAd7Y?TtYWDoPv)5v)Rr|f2{m|#3O+a^cdM8)Uu69Oh@K0?4XLLl-mNOHUS z(=?h`)~>Fl!D89|@-rrm^7Y(J4B242a)(j>6x(X&3q=w{Vl6@Qc6pg}bs2rTNZ38j zbm$C@0V4Bvi`mdQw#s)H_a7ffT(&E>sOx!}dZpdcQbhMaT}!I6LfqTyStJMo6M>T? zON$&C5|QzsXzEo&K_FFqho(`cuG!u$RV`1dsxupW3`O*iw+fWyGEZ^>RWEZt`xY~i z{VQWlt%5`D5Yw&VJ;s9zcpX7Zvq7bqC+O~<9D5M#3ayVspJp?Em801sd8Z?q@GE6S0jn6S-UHM(4(?8FdP^Rhqg1AD~MyU-SG5+onB-&2m*B*-zu zY_oX>idoQF)vCGx%-KJuuz!}a;P-)Oc1Y2FFg9#LCU;lJhA7Rgn(bg+^?}tr_11M> z6&;)&2tE$x*1^+sR?Tk7DerH!)mq!L%&!0ME~`TAZ752-nsM`nS>Ur@OQTA*Q~cw_ zH2-M!KZ26uCqDF1e)h-zyMxdF5bt@sr-;#!sKR<`@O!%=X5k(l#m|w*DdbjLrKvY?DIR7`yjju83!CSmsjP_zFinwGin$hgnK?xxW^%85@&*D-%n9d;Zo#$f=^9K|F z03ZNKL_t*K{@@4Tw-5duy=w>(2=g#|0gktbh}i(GtD2F&4H*qQkAvX0+eO-~elj39 z=@D)ldHesC)vG-k21|qDYfyFV<6y0UvuwL)OW}hZtj#JI30u>&pN~*``7)?qhU%n! z?1BoG0(3oK33Uh>;JILn)wO~x4j&XTVl_ZZ0A3LOfA-!p#B)f{&X7Y&3=#>hL`fSA!yk-Y?;7?8e_0rY;Wgk7w%5iQ5U{q^TCFT=cj5gY39Gdz z4uh!SkdtFir|MAMmE*0O z4w_L|meTEfg(oZV7nHo zGQOfIS6sud8kn+9sh%U!MMxw`#`PQ;cAfR?EdqL&GwI7cV&qnHTGw-sC7JoeIW}^) znU9}q6A;HSvFr+dBi{AC@uKl=%tTM~@%9@en%+h+U+>d%DSwNnmw%mbV3Gz3J~cor zAk66Y%G>SjGUZ(yb&3_aX=PwFz-qAL)Ui#QIdvALc{7qF1zpl9HFin)m&jD_&~OiV zXZv3>7kPqYV3FC#C!at?b6)Wk%~bD-rm{^;hL*XLd6S4SF;I!-xE7XMC12lam-7So zwHSsHW-jt9x)K2I$DB_N*U&_Qr}(JxHjkv9>>;AEq~Lj8kJjus>=y2EI@!@a%q5=Y z+Rk6luz#sXRDB$Bm359P_gPB4*cMu+!e_X5@M9wWX>>Kn`q5Pulb4Ys2}zQ0z3~F+ zUYF|vAtOqx897adhj($Wm<3ApBW~>cId>1Xd1m3<(Ct1I@WdQC?vq?BXK2?zNnz3K zRBsX^*#|}!k(rti6MQ4lMTXqL=#YLv^f%KliZXpU1it4*Q`ND@>j`ti(grv_;S$~L zUM+F8CiiVV|>1Q@3=cSs^#>7)+>Mhl&LL7eHz@*Hv{0`=GD}cp_32dK`RR zRk4y^^o^tIm?TM5saZQ9pK6*|j?svDRVaP{jU8~qAQfTy925_s-n?I_L9jG&Jb}lX z*Pu9h%!hc0E<7YgCxmHL$d&H1bn1&e=5|?fe+DQBQ@v*vhXGG@_InVv_4dxpsi6_?Vk~ zj+M1<6YFb7F%{}WU-FfG9-SLP8Zrl5P|veby@T7lfjUkF%PMovyu30s2XD(jebl`|7B z53F07c!`zWS4f2)CG1PK$yU^#rdT_~r;SdLp2X$4A3;4zwz5k+FwKpFEYBQQ?fogo z#q18>Zv7$0pu8qT)T0obf_k%QEP#4i=ykNdRyNKC*t$rywX6V+XFh#ovp z#ONCrFY#aBy2fH(GuM^<55{`^Sayw#{kK>?C5-O^dYF4h*LiaG^Fl*ZSi^B@Bz%#v z={U=2peZ_0Uy^(+L(HEdpofU~;_MeUF>AZbPCna10CY8gW!H`+Mvm*Snz_c=^kcZ5 z!&ZKEfS_&dzuP8Vni{~et3B;ZP6Sy*OXdT;Ej`T40Y@!ru7 z(D7p^0in;ZI{FsH1Fb8lF|E#E$Of6pI#VH$9;(}gb{mj}U1GO<727qj-8x9{!~4I@ zi}QaUO+L9b!EWgm=Tk5CEGs)@cG)2rN;0WWl5r(bW*?d(SJ_}TA+G1BZuc!%P7SrG z*V@Xh3^-f^T%7(TUc2)LZDO>Rd6R|IXNQj0B1Qe;=WfITi`+eUozE=&o%XV*e}etu z8dKWnilT0pYfbTEIkl17wy>F7As(2bQeXS2jYI!B@#UAk#Ve`*j?bN}8^|X|-4f=B z$_Vkl|1@|%p{@0iBVey});sy8qjeOtOMPiJMf^s(OY^0GAP=QAs77g%puqzJEd$0g zVBH$AO&8oOcok3|7u9Gj$de)})lF)YNvORJWnZ)UZp80Q$v`v+zR!rrkh2X+vg=%Y z9b-th1lAfz=Z@Dtxh51}0W%Kq893^Ap5X+*X&!&L0Eu~!&H&eXhBzquxWB*lkQhD0 zvH1DBtNon8w5x0%yvNea7uu6@Z%($I8|~A{Ut*(lo$27R zAV)pd#K!9K9@?qhr{Ns2>nl^!@<{dpyV=)?g)ee@@An8RF{VS8F=U-NO^_(RI*si* z=*r1RQ7e_%O`v|Wl&_5 zN`04!$VIC4F(!YX0$eP@%?Ml?lVyonUa#Sx7lryZ1V^M0wS-{%Jy}c%+?w$Ik$u8x z+FU{O2I&&7xBQHxuHT7MfYNPnV&GSy(e;_SF@zg-9zr4TJtwNjhM6QPY0=I@NejCG z$q=N--37VJenJilLPL`nxkael5`<9lKwXE_0%W>cB584OZHPYtO7q?!1;Fkzh*DA_ zLghJN*FahT#-z>M5|pn(F$6RpUh^7lUnt!V0ST;+z>p#M8=cC(hj@se5)b@0sA1PI zRNv6a%d%^1AH2u>)Mwk84uEWBpGu?1eEe)r$-ScJ*iHkruN3+usFv<=YV!Gk-e;|G z?;l;~-27Jt3>0nG5-GaGITX3GF6vKkSl+>MOf*GjKYN`Ei(l`IDQhHxGh|8|ZH-Y2 z2jy)}C&y33-N=+~k_w$il4MTBpJONY4vXn8w%5y&%xvg9YsIT9N1y7s){3N}D4lD2 zy5&#g*j$KW$#_0ZfCE`mC-F|)V4Hl+eXp4It*XGXQ z$IQl-Sx!C5UU8$X4FZ^mU*s^i!gOk|w013ftG#W=7v=D1hpDF5M<#!pczA(SY?(U; zSBUr$11XAVXpv0*HWOWr$d2o1MF}*|R3XKdEE6+?b{Z_QHRGrR~^0BeSqoR1^Zi^E z=9=Dyswc|%d*B>G=_cfBV1|J$A%M1v5c;0jro0TvGNktf0M0-$zhP46Kna8K%R+43 zErf0vHFhu4P749Hlz_rI)cevtHnbhA%?d<<;Qw2~A^SKu8S&CzJf>t`6;Z3&`%uup z8%1_J@Z}*q3;O(ss<*EFI5}a4>BR)`X>Sr1{m)u(^H5oZ$T^U1gV8Js2}GdMsVil?w#lK+cRzZI&tLjvn!1O0@bEwpBSn@`)!qh=>`jt(Js~d)iusH zqeZ*<_qZ@4(tS%4Ul|}rEkunJMKeR$$`jIJM6?7Et#d=4@(B`ZI(0PJ$8z)us&<*f z`qh!7sD0d;pM%mC3yEGad(cQzt{)C`vNxRun&zFT;%qtn9GlsXvAfc88`*bAhtCnv z$7>->r$M&5$8y(a8}-kyo4?9*RFJZWFG;@EYtC109HJ^d4DAG-Hcjjn?zY{!8+H-j zCwTAA8j7so#(O)-FL(V^A1w^N=T~-N!!KHdfG~b+c^p+0pz)Vb(!h#<+x6X3>f&WZ z0T)uYAwCcCBSIIbj82oHP6!gD_Lb*1-i3NZ=w>7zc!TL$v^>P8h1sKLGSZ-}1?!fm z2$LuJNRd8hHt80iydsV(DhaW93r-5W5MYVcCgCT0^+_Z5e@`@xmCu5AWAt|BDwOkJ z%|Xoqy82p{KnT4Zh*rVy_eRO&7`%!el@_E^kY2)px5&YUVl%iF0U5 z=lBA?B$avwpB`@ut&e+ZFXpZz2WD|xXDERRg%;R5y2@13X*pBgB^8_=*lrXurJHTy z(t;vu__ZYE`W_))Z+n7(8fGG}z*_Mdi;>a&yGEVY>GYRbJNzLt@nze zw>ckwe&qXejXmPVRP$Iu)J`Ba7A-a!P4RpuO_~ZVvtL{pAV#}|yL^7~myR75U?KSo zKe_t{Og2m7*D`N08M%O8A1}7IoCby30hdpGb70;1sjqNr@4H->{u%*2%3*nyE!Pm1GOM{V;%_9Lx{)0cpj|22vy4wT<&_mvnj5Fda z`S?wKu`mGa(ntmC-cCu!diman61~sdEVp0UcNjs=VhkgenNn$$o7(4lo z(N!Og>$FAH#o8`m-}IR8j@15r*sjHT_8QBnCkM7~{oUQl=I05(4>vYmIqlAdil-`ByRj5rMbTX1Cg)jTTng?qJvKfdxAm|e0NX}lL$<(nd>y0tlM=g4-&rE$n;q^ zb~7I_lYWwjFM;JWL?v7wBuOS3nk8QvPMn59v#^~8bt^v*5$eW7FPB1B0dJvZOGde2KNps{<3WBCGh65am9?0#G({ga&L6jxqJDt`iT; zBTEVaJxaOJ+j%@>Oi-?O^c~lBen{ANOf%6wTt4-yY-Qg+F)7+Ft`YJj2HTO;LaL2J`XWly2QBG|eD?zM(FkJY^EHpmbd9-1{qtHAn&B z`rIDV6i(2YKZBM-y<8DuW~qx{C>4l1kbWL~XXp_ax5sWqsX#^^aqIa6Dg0u+qhv5_ zodIVFoYSx;H~+r`=Dgr#;T?!RBlg=qrmoU|XgYCU6+}}xF9;EIt_#qxKHXK65An0X z14oRy(JeAAl((tW512|m&ix~i13#U-gxueohe2_2DmYE1EaL2j9;RWIdM0e!HG5KG z0CpowB6?KmcMiV1(Oj7$Znu;#5+jk8Uq0=0d zg-)wj&tN$fLdMC6QNt>6|L}Eo3m>yvyi1`^3p5PHdIsCINCb|LddlI`FGzi&{s2}w% z?2l$heo>+3d0_2A=5^SUpm-MSMN!W0)&y6N$)MhYzz2|?gz&Q`bFj8I#Y>rQR%H#L zb8P};LG3yeVqnEUvIHSZPk_4CeBFn@`;bmR;L%RxNeT}VBM|4;xD9T+S76<99VWoO z2IY^Tk^*m3G|K~Z7ov+0{xy*n8@ibb)@`u&L3_HXqiT{zIRWm`@b^8$LyW)!M~voU zaY|NEl*Kojc(zDUJSzH^%|uW4M3Rm}Dl|=|a{Q#$f@xJyJe!Jh{L@Rwh*B|&$g;{p z;ymHN1hsnZ*!Sg%Ya}8a;i9e>g!Cxc>R|PXEUUP#L#a_9WQ>nk+}>a1?g!uFjgSA3 z@4xd${P4~n^TRuT%nxq=DeoS9$V&ZQ`{j8alhMc7FI*WpUbi6Ibn0l$viQT|b<*L{ z0&NiFC>?o}jiVnAtXqs+X1y<3RkKS3PSB&R1tBu-JfW(xhEEGp?&?1m(BsrB@p)41N233S|a0qSXY~U&d&5&01Sh(1NnEMAcLFi zeH~NLN_8I}nARb8L zxEA}_Ys3?mIVf!nZR&awOonIKFK#j!nPWQj1iMF9m`OcBzA7B9yRnn`i0RZ56dK3( z?r90PcMA7$+?P;fg{4z34;5{I@iNc0)+J>nc5a9|15{KO;UYT za>t=tWZc3`^bGehAN6#z_iJ%h58q=le45?-=%>?SO^_469^?GfSG&Gv9_i35NHMl^ zA2AbqY-q*U%HCU?pBybLABK2vfnsfspzg!3$BvB_RT_DwV^O01Pq&!**)z}ZFXJ$C z0^6E%Ww;%JXU9BmJf4S-W8&YR3T_1|cSTgAP!s8`pecHKRZCsl`5>x6_yVXSqJru? zm>+dS#%@lO!fTHo?;s6e-h_M|+!P}ntmQ1kQ(!zP9J1-t3d#vV#F!Q5X59mC2Ba|; z+^dQxQ9T7T(_A~Q7y}@b0&ff4k06);-<2cUnxOWPF?`{_N{wwt)+`Zy{* zj37P4csy{#sD+AIWI8g({him)gL6noJHT*`5fG@wfK@lSd2 z?0+$KyPd*aG&P7mqM7nRafOMit2D`^fG4fDFcq zf~d${J=|Ibj;-j8TZCF(IA_bM$p5vP&#HzfyRTbdxDdT4gv*j7mfL+~qIG=sHrNGV zZn)#L6a{w&?7A?Dw5NugQ1kD~wjhh~UlJyiqrU5I8LV~T^&}^UY!?7)1)O!rYEZZb zyd_q}C;7ksY=s}b^*R7w{oKohd?A*nmx%;^ek~{-;%AEok{C%?fXAJ!zeM#6xz*UQ?aug z74DFV^|mFry7uQhy7;RjMiq@~UDv_1>*#97&3Qe0i|3YqorB!XcIm$9+N^BdWc|a} zQL|!3C@WipoYC5!p^#Nf&895XaFtH>R<{&zK&MP-T|u)I>c$RLbBD0AK#p4?5~XUa zYU1YScs|s05=j-~=)NSWv?z72TP8>Af5P&qj`Q<$=p37+8#t~t)U;BP|tt{<|Md!MjxdVmmh_EW^CMX{Yasqi8@ zg}clro?|WZ77Ixc9V$2SIIjIuMR6S0VmtRCvA_aHT1sB*-&4D z%00-P1-}V_Bk*Ksgh6Vi(Pa;k285PCSpro>L}!lCfqAw_At`gCqeSX*hb&oZP&$A{ z7jr8@yYHH(f>wm!zUW4;bXiagOJjMCATMqVr1>$&SrHMcMg)8_Q0YnwdVbndkd}jJ z68w*ew4F0Tn&4!>&Vsx!d^@)cjS^Tske47-5Z4Gm)u58+yRTjW`7O{>{NB4aK}j$j zOYpmY|2KH{%;3Y*Lp*qRAc;}X*kbb_M=JRk^N9;XOXz%$93=< zajNyB9`W|({yWT0K6~u=qa3a0;%8Xd|9}gVPmzk9V`cr%Nk-2gHTRJ#uHi^3NaHKk zmQs(fvi~9HC!Qdnhp9A*fJ7`j&&t}jnMz)!W;b~Kz3)=La|_iLH*tpsk|z&Di+YY- zcJU;r`Z|-P;!60PX>5C!aD5&L2@j8k?qI7f;fjvbd}_256BVufwQAFc3KQY8Z0A2B6Ria$xdw#!Fb z-{IwR|Ji^Bs@%wvtL`xuAKd^M!1b&X3AcY@UnYg!~Pt#(+x@0BAnIcnT;g__x6*K`0LXPSa%}n6~LG-uK!19KgLU_iMQE%Fqf2#6sLk1gat6%i zJn5c-_3J7}MBU#~aM5v@eLh|m(X(5jA;BZ4$lHo=_)Bai3Lj`yW|h+lj>ki>}E4&`c&GgHrhVp0Uc z9Xg;7_o-Pd<+hbNYQ3+S~1=*F;g*f>Y)ZY@(Xy3A2wl~hbv-tT9x zGnp7KSZ*O1oaCsoN5qJ8Sl+?cbodVX(|ow|KIhO{I9W77B&WxMx1z;?k5?XVP)?v zDvdldv9lOzfOqcyUj+0xK_fjh;xY~skqaCYR+tDca!^`lDzZd6a*iL}{+GOT_CNip zuE)L1>ntRnLsR_twGheBS+;W@v5@La2qz^)<@zB(BRzDT>>1>$72<&tI3WL=VX;Y? zHUsdv%vwow7Yw-}juy`PeQ7Zj3^R9yBn5?XQyJwxDhmjiMdQgoc7bv!V^%KisTM&?Mz&a<-i zZBntb?Pye{nmy5Rrb9E_J-pU#HhXdEX{vUE-4d+6{jZ3bz2R}28kV6_#>AC6vq7+? zAvb3UX{;Cm{BD|qz+Hmgd{3098I%juOlg>^LqoUmBnUPVIBp)q1whY-rT2hooV4r(eM0JbjDO?YSv4dhFa?wa%yhy#gjcK}UhAYJ4HZ|8q z3tu2?oGj(l(HC{9+vfexvA6#=Q;{V~^#U`|3zX`6B!b7=D0Jh_{tsD7zu40x*005o zB$-O%h@c@RsIA;ekE``4928fWO$@fq0Z{EQYq_IOB{4b)rt9KW)CS2@cQJfXb*alg z;#@OZRFPF)OLQjc`@T54!5BoAK${gzzW=MKo)Hlnqc3XV?t@!znl(zt_eN{nfqVws z=b50YB`+SH`Egnc>^up3Cju~RVxX#ktFZV=^ga?tse(pw3 zS$xX~5un=dSJH>M_!({=e1z#b*mjjneue4O@zrjvNYQcIEhR5;FLRxx)Fb$PaZ1%a z>SjS0Q=X6*0Zd01SUtQ(#VnGmRk`ueE7)smsER>ZFW{*@yyl^p?k@5Af=H!#$K6B+ z(a>xfxYX{V#h(y40m;@KXvji$JPKh8 ziYh(h^>h%dps$!x53&14Slygx>RUT2#tP&`iVq-?2D1)U z9h58tKik`rPVzM)MjcxLt+v98Z~X_-*+%sUav)521d1w>YRB)Q3${wlEG&_Yg zCc|?h9j&X4BdjjxYS%8aarhBIUz%6n|DX8m<^K}PK0$4A7lL}2fF9!7!N=^}{kJHk z3IsrQLfCGONG*cwNmx=9RSKfG$GdI!!WzSs+cVe zQ|TdJmQttc%aO`WA|umKL2(_l$`(q#GiG69t#kaI!rK9HUS(sSfchxc;%@^`a_*D2 z;y9Yc+bgf}_}tgXTV;&E9QO`>grO%0j%nWNxE32n@34@3Zh#a4__QFVT_+J*=AHY0 z#M2AE_E(}Al98!d|36gAe@&1zgOhUj$vW)&7^_E;JjRY^xPn}bg5QM~cUQSF**&Py z6gKyfPR{{*OArS247h!1D@kI&i`&_Q#x_*bfDKZqnKJ9HaI1;Nuz{xqIWUJjNT~~8 zuL%zzYXckuq^Z%`MXv(2TTl&xH;)LrHqYk>ph@2Jj37$-La#59Iw`96XhzqZLoknk zSg){L4vFLPTrh7zu?TijoS%otadz)lk|E%Le+iU6e>P>dDNK)pTVZnd2R#4b$N0xo zFXkeG@XYRm<^cOO!uy?j?)Hs;gDb&K3L+J_^G|=jbLgoE(rhQadghy7A=-SQ~M~A1aAL3_&2a*`IpvVdfiSumb?_t_C;zRs>T974$ShLY*w3^|)Bf*{c&Vj#dhkf@4dlp;U1-Y5=}7(2d7C!L~Ddrim)3cv&#L| zd-(1hV5x#=`06T(XHZg(kebfVbvZ-u6IP;mc+`A0p5*nA3Fr_Oznkvb-fc&S3`?aL zY_y4yD|uL|Lqm6vJn%I}lc9e2+$1%7A4@8sdm}UyYG*80@~HVtJlR5aC3H){-x%Ci z)yN}x5^^$xjv#rcz+&-RZGrwU=E2CPg$WG7b4vkh|{#9=L~4 z+yE=dNWWmI0g)O+Khv}X_;9#KlV>+mXDTRX!5*Sv@~Tk&F_e?EE9wT|f>we^MA#VE zcSmdoin+n1o8RNo-O&cUt^_-2h?F5Q#(J)1z+nugGfm>ujg2B~6mcauio&&P|7UwF zQ-y!u#fyz}0_pJu92p{2xcJ2{5{!#;jfLa9^u){UZ8cRR==*drf|a^LypE_ve|wk9lyxE%ynK|{3buS@%w~MeSzuZW1O86zBC)z zJJhT)Uh8SkY;bArWupEudZzskn4cWfcSORcS=;_0k1TzQXlRb9bAtr>LJq3E`BupjaGEW#+5x3J4w~sL&3msW60y{aC%^B4h_x5 z-_TH0Eo+ldx2Wnqeb(pxeq&LH9|Z$T3{0j7f1QIdUbB zVo*FPy0S^I79dz3zAq1#Qs9t4J%;KUSX%ERrtB%Gwt=Zu(e2Uhzm9BSt1`u41IYu; zR`54e!d0W0PNGE%OG;6JHoSxIWaa{HLNnT0fpR{TQ#F3iI4r>DX;! z7UYgGcfM4F8xi>IU!^~woD@#YN;8^ZUJ;YOF}yi*=Y7+{X<7@DFC9zPHDF0vDdcKnzCjIc1sY^B_!uqfkK`hJi0 zD$A=Y1j-g`Q?Rf%m>O-7otZ;W$D~;^F>oZ9-ygkA*$3GuBnuGiazD^*v8;uCIg9)k zS<+3F_kS*8iMD{1Fm*09^~Rvi5CeC!b|L zAu7mPy}@oDTsd(!`+jWizkwQITuv8aY5hTH1*FLe%shw79k|SGjsT($~ZD_dmvin zZ$zjWMSNx$$y2c92BuacQi~(iy1&x}8rydOsQ7ABeML&wt|NOAtKJP(Bj3mJ4tPs_ zjd=V#;b^RR3@TN38((yE9$0;RGL~Rjej2x>OXcJBDGl23KQnxiEY^ zi1+4?>x|KCHaqHSJ)WxwC+YU2-7HJDH$)Yg{)DKoa!Y;wM13R5L1^59Vp5Qhkq*{* zh=zq}WWN^?G%MSh;SH}2jTP{c9iOFPaF3v}0rh!c0rmk}=9NGo2I@9QH^F}zd>8w7 z+WV(@TNqnvFAvu{xh1IGhKdBx71&Jf7D}UKu|Ixqg{C{^s;vH^1|9k6mW+OlNL8^Tabu%!(|C zrmDPj>BZ3}@POfgBu1k!8JVNpD6p2j#bV<8Cwi~xG}z9sG7(IXE3R>V;aAzn-9}MV zYKEwmBqxCS2vw!~5_40C{Z&!x~~sA1`beM4O6S(Z$t;iF;xds zb8ux3-I58^wRRM&u9uOs6(W{O$$t-aN|amV%!6X+kZbP=5o=wMvC|UQuHD2#Arzk@ znh;@q4~6-uGbpk`?#?#6eC(z9nPaL3k2WW<8EWcv*%zrg zGs0;1C>MNLh@2OM(_R5>xNS+Gbd9Gz{4-__t%0LoY(5J(vd{_5?sdqHsdn^b4Gq?& zh33fD0G|n&IJDw!fjTH%yt3jyo;Vc)Pz=HB0X<}`AG=9G%;rW!rljVv?xtWO=P}b= zytwl*hjcuuc9cJ1Ck_4vL~Am?v(&kt&s@B~%*76&{oI$nj;Dt zXqC}-e5F~v<#!Eq!YH1OR$UakLEXBKtq6g#>`ADOjHOB_o`U7? z^~w{PoTIb(=`dvHsm4|VxZ$J#-I@eMNwvGNPODba^CS-ZI-HsydU^Ro*XC!9$c2kUuZi^HxD;4U zgVm6zILqt8uV@%LW8;p{XcLsOuf(7Vgrgu*&lDMT2zEA_t*u-Ft> zJD^FuS{_LiI-YKLbwP@xh;WLAfee;db||7Ql||u_Emgtm*S5IeJA%Y{(B?*0yU7t~ z+yL7FT6!l%99yfch-ZsRIQ0-*57eTlh;yP%qIJ}qha|Flmal50i|mgz3Z|m4&=kIyeTw5{iqt?C}Ny!6oR#0;?#{u1qwkyhEn;_ zq^M@VejKKc1Th+S{8b;!4@nD-AI~Lyqf>=#-FTCA-faJU{h$3l&gEIY_22xr4~fw) zGA63ksTnrWl7VguQm48ysv}Xabo2%;Me35cE!6wC zUrj#5@ZxwlIJne(5U6V-BPpYxxH7Wq;mRJiCn|PiPa;^=F*S$Dia}i$VsM`~N#58( zQznr-1xFPXT^0EN#S2pQoA?_lrdkzgs>=A(88k)Ph7D2!r77B;&P-9)OK487e#}zp zX!hWD%CJHd1N#`3m~doQ!jW7QuQ&Q-%O<8;MMA=n9U8jZuF`8o!H$Ekp;8W*gsMJF zUlm8PQJRr5*;RY~9tBT<(D`#b^~kSKkVd#8{tZLBZ~=JZ*zMvLB+X7$+NhLTbyhfK zxA01oo*C#y1WXxp59X>cSLv(^+rl+FQQIf$tBXEj>UpsHqAF5Iq}AwDF(HSb`~#>2 z$E40&(bglH1mmpmLuxr@ccZn;ErPirT5~94BBAy+RQJJN5cwp@g48L#r3vBat;~pXFW-XtGQGKe4Wukcra0F);OgKT-%UWW z4>*1AHIn%v*$8C2WQM8(>E^8}6B7hzZj43LNg_M`2J9zABg}_vX_aSw!co zUSd=;il}Y~8=Zsr9_jq_iL3NlkdO#h4N8Fq{(6L(Q6N-Lw$~wf*ir-487@M%dW2~+z0GL)R@oa+*aBOHP!OEF@CE`%%|WJ_KJ!H(eDP$JZ00o)){sw&2-7Gu zu0lm_w%O>yL7leFN6vsgEgIoUecu=LlxXFl%{80Y-WIOlqclwBDpU$!4Jm?gEQFTH zfp8hL3!;2~6g-5%gk^RNak3Pl6Pi2% z-UoaJabg1yVW|i?b%k&#&iMp9* zIyKnnP*eS6%G+3Kgz4BaKfduAh4c|+?8U|5xFVu{Z7!;Kp z!DcR|u8XR*P?vLcu%@?rpA~}*WLLu1P*I2Ie7a#tWi&5{?5gOb@FWOXoyT#n>#kIj z52(uGj^s)nb)QY3rU{QE+lO8gOv-Q*sH4h;`w(*GC@Wh8ooQUjLG=_I*`j6?NaxZ+ zwMH%5fR_8W){K;SSXBK0y`mtA5J%Ai0*zGr8auLu>>mHqGt6Gw0$Xv(h4<0z7_w^< ztm=4@Dtc>uLKDmOHK^*8115^2wuRp zzd?l3Q`BVPA@o-PpTmjAo3DviKmOfvl&v08WHfb0{br4hNI7L|O|wR++4$8*JDRkQ zFhGn1Kv7OeimrmU0P>jcpjU?C8^Td~oVF*Bg~XG>56HSTcpg$y*JR!oWKLcN@(j98 zm!bY+XiSR;mYjiM4_E3TL?fU-Gv1ie&9Zd&6`r}eIyNeD6cuD7UK}1h@c^r-*;(3w z{R9+8@L8uxQcfL+f2WQH$E<52Dl~O8q@=$K*`{YwcSr$tIH+?UepCwO&3 zM7t((g1Bk6AZ9Hj3%z8?mce~)iGTFJ{BJya=9$q4`U{E&mKZ%U73b;3HN4vV5r7HE3lNuJ1;zRYs4O{YLd|m?xRP4M(;JG-8ze2ZU>iU1NVk zqoGUGm3$8|a%8JVS7jLrlh3@!Q)j=7_9zv zA!hcySxz<`ox7rKZU&0qhw?P-YOeuUU=$&C36z8=_3wsuNq7OZgvj=W=yj%ip-Yd` z2hSGU)waQy0k_$%Lz2LkfJ*bXB>`a{L|*Qs$&|Ec?58`+($kP@mZ=A#B7J9OAo`_ad%7v+E{hxAV{xb2PMZbl;P3j$bp*@eE?&_}U`afVKY5k_9ZFU5P8MD2q$+5INM4Lr%}x(>*g? zebs&D8F%=PFC#NDGcv1YI3!2zet^RCR7FO78F|DL@B6&ZGdShu8|tUvD$S9ZS$5T~n>?=muQKyzSCz(hKYx001BWNkly>Vkb)!CGfY(uZhc8jC(P0Q?6tS3 zI_i$d&>fC1yq9?G?|5_d8BQ&{XQ%?Ty!us+FT4kBg!^oqBy2Rdi7wZP+--!W#@Y|6 z+GNp^>lCBm5Jo8~>{(Z-dJ~7*pG;IdhZ;*)RU|Wzn1SpPil)5PHH~aJA!Z=S4myW2 z?h3m>O`46;&&W)?NHI4=(xVtj!cNN|A*LpmyMIlHY3OSl@uskYGNBgZngL-)eQA4o zpJ@E8KuxGssTJ0-{Q@G1DYk7&BYl!|L?ZAFHB}bsF^LEuXW%=JUY$&PyPhQt7nlp??GMYtn3}^7xZq% zv{)l|4pSc1aC8Q-4)2whd3 zl2BE1l4%e}8Cd~JTF`z&T^YHrGr*SKI0{u^N_N2BS6BDaC;J~SoPJNFa24DwNUBOt z)!ohpJoQ|?msHqnGEnK-+@ae_Y}TMufucQ3iiD%qEeeo$%&z@4kAM4lif%$Pb4}kb z!MfG^w+gyeZS z(f9G~<R**+uJpD99j!HX3}d5S&{nINr-94TNLD7)Qih_p^hF&%-l(`w+|~Q;u(#u z57HoFk>Hsjp{{{&aa@N=)56z7TJ|oL<_ucWyP)lqC^lPtcIx9Qhr5X3{5Dgtd0s6tG z;XueldE0zf5N<&2GBi!q>S{-H$-x$=$c#uO#1|~E?io#rQp9_z9Vbq8szkT)w~Lk) z@d~EMCr$}?t_qBscuJ9xa9zcDq|gc~zby&Dy$E3$v?UM&rH>?rcnw-R;LSl!ZesVC z_AZo9f^ihWYY^{)mLXZ1%8b+fE$(~iGn`-E?S9K;+e_tEPk4M{wZA153)T8cu{otG zN-|bel)X$h*>R!T;r}ah>i-9|JXwr#!?r@YLD{iTm7P*Mze?nqO5YSp)%r67B^qDO zy9Wf0Y%24|LR+=S#u-zlhzt!rd>{Yn-~2I?r9)0g{{I-aEipPXJx9ok^zMkpW4E@< zn`>X^iM#$WZrEn4vC2$o#5*$wjx~wvjqnD^;M|e-va)-bt1DmT#KKcVQNY&zWzH^r zGqK3rmj_apr*(w&J*ft5N z;%WQn@!Kn{T7lkesckwpu(V^uVL+|q;kX9EFz})VGtKz}_Vmu7Z3Q&sO-wO|6b3VU z3)G!WjG%}S9pvPvAY(zK9sJFcPMkr1i?HeVM4FnQvwTUpSt8Pc?v$Tr>;c6-QUr>~ zq~?#R6);Dwuui3=&R?i0151EN3-OGANcMULA{n+lP(*Z=rn5!c+@_?TW9i9{^5EhD zF3j&@oH=rafB)bDH!rWzHDMnhNDu76qN{|}D+d_7-(6SY>Ql|}+r2fI(EdEM%HWN$ zJ<#@`VnXp@HR^v5f;S=D1#`^QRuVz<3bZSo=`s0yF0okHcoh~ zB|Ycqor*G0JiR--4^Tws*1QrpAK6xV_)%hQP@m1WXgK*ELP@jgcl8(uvH z^SglPZ;|D#&kA7DDDl*<{|Z0%)4w!&$F~`7TVhnPZQ^81b2)>Jz0175{%ziS{-+T_ zaB2Np1d-p@4jY9DXPUK*>nv1`qiH%(9E=U_ELjtvnVeqyFxOVUg5SKwJ?DOAsI}Gz zU0%5IO*St+i`5=u28R;yn!Y3vN)w~T*wsjUOo*rLQ;vGIeP568tWdS$I#&}Nhn5)g z3C}?@)6|bOC8c(gTUgprT6Ul&f0NYpS?P#2i#M?7uc*j)_zPAKwOsAeI7A(?kgg>R zSD9%YMPYR=#pjRPY+QW$~kw)+l3(Vb$W`UWz#iKP0nFLn$cQ?is9oWnKh zSV4g(Ht_YROO{3;nI#^&@6#Ns96tZ7 z(LUUH_+Fw?D04n?_-N*>J9u4rp$ac_ZjvunRXZ((mOv@f2|o-W(qjk&7$YuVPp`QA zLHN1~hmAI&{u+4q!Q?bV9i32R7TgB-ohqEZ57iHXexzeIbr!sfU}gp}L_wK93LU&x zRohG(ljt7rg1ZdvlfBfcsDjmZ0JPAZtb1&?J2xUym32?0t zEf!SkHd>@KPLt6wM5k?_hXU7sQ! zRKy30!1#I#*Qlc<5;H6i#Y(V!FfmGfkVc7h)f&^boe^q8GU;oz1(smx;U6WbUtxRy zGV{fwm~y<2SBh(Ehr7}Eeq-=edT>wuqo^gjBHIWtFP&y>-Tqo{h)UmHX%N_Pa z+S%x>q2)ud29r-Qi?9^Pq|#>bQez^9^;QHqn!VOsy1&`I@j`Owoq5lI3%~J; z{KC)vD&@k#)*-hWZfjyRTb3g;!2F=e%GUD~i^o`)9?betg6!i{=ef3XiN%T22bw?v zEY3d4wY9G?GxgwDGF7psSl+zIlvU#N(uY}^x{Kx2udp=#US7KODmR|}5=On5`-Na8 zWqhqR)<;N71eK;mTW%8=W$IRd8Av=cL=QFeNTXiN`y#aQ<8>;5`XC9&O`gv~Oi0by zrw}huZuSfu%|LeANij0kFp?6!sCV^10+CxWlD^jGOVoF)j_BJrA}n8#iL`~-vOIh? z(6t%ri4rpFk%pFNgh@=&aimVkQPbX`;7*PtJu(&qIi-Pwgg{pnszk&@qE59wL!+=s zsa;0-u|On3A{kIGsBspNXt-vbiRMC=l*w4jC5L%PqevWYvMU~Ut)Q=!CK6Re1h9M! zt&>L=&rNdvJwJk(G}t3yrZ~?lD_`W^qaVVM?~K;#`vLQwyWwkB-_~O#Dk3DsLwm65 z^pmF)5pb)ZjF>B-O8xlDoC|SF!c6TeYz603`${wbp+Z-)(D#&Yk@H@NSCkKsoF3jG zsDRgK9XJm1#P}x_d6ltaXlHiTC@ z#|lBe28IJcAtU~kD!!yL3D(^p%+7S&<^JcZl^}eXBdeEq{M*mcM6&^3G_iJpj zg5{L#99vhKBiB>}1yt21B`Qr@X^@U?^&G6HYLJ@L8<7%BZ&j5pXr<+Yw_AZyQ$5G^jw-|qpq!~}I$rM_!~*;?GyKT^`kVat zNB+U+h2G}4?TOJ=PA}OHnmlv)Pk7?&r$!2%p*O8|kO`zFBvBk;=ni4%vfWza*yOp9 z`;FoN8MP4Raq#vrjUt8eIsW3ye}KFmV8o;KFJ@AvrfuUeLnPw9n=|DA?LZR0W2F8a zXiY@up=;AbGNx%nofr)|WAOPG!kQEqk@l7*v|KZ!DQ_{|TpFrmf$~AB6;))19Z%7a zH!z~oTRKKULL`%Ji_Q#W_c=t;!w5AX!H;*CijSgYzU2cM5f}-PDF+ClNhAfnu}!6^ zzI6sO*i__3(g_dkks(l{{pF@X)83`*&U7sRQt|~L6CD}q-7)!CL^PbOA!lqO)Clyb z>zkyu?d8X{oS<7Kk2LVieH>3!_C(TRYJYm9lXa{KiuXUjBMfY@BE)asx&-T7+UaH!>Jon?E=NKKPNIxENt78c1DA(*!h&G_z2C)Fe7+M{&=#*94 z4uAwq11k4{k<}Uv5c4EZ-b6tRa>O7?bQ7BE;9sDRRp})V8y#cG7#2(5&ZyQ|_qh%0 ziKO=?$F6>b>Ae=~1N?Ai4~!0hy*00@L<>8NL?c6X(&!J{S3fB#P1T+%w&C6ZUcFOR z$tVE(oi<#Wo7Nn-=bhV8ZL^IjMOv0NN3Sc8aBEI!p|a5*gO#9ytNf7iVo7{mP0FR% zFDp_NX>jK05A$39?Dtrj8Pj6DgWH=JWn;0?Jlw+R5R zqh0AC8}M3}>y)A;nuQP<$evK!2=UAaBh+$(SPStSZEb_XpcC#0)C(Sj4NC4rE-C7* z&7kQ7lsaaSZw2W&kdYWk=pxakt!+|_7KbM9j7VZc5ZX4C=3t%N!ZUPsDw{aoWNziA zZ3hsC2;rlL{iL$)Y*K1Z(=4bAv$i?f!w4XhE_yu8R&@g_=v^q2PWv;RG;5n70>Aru z_P0JQYK3(iPxX9ig=i!xYF7--JoTg8v+!uwn<$Lh6wPV;u*uTo!)QYC{Efflp<_>v zB}eB<=lRSl7x~ovkBr>rcEIVTsuW!q;a;F8>LS(enw{|QUhhi&hi4~w`9y{krDN&Y zm=FX+YY^^%JPYBt{E1hf89~&kB)6eE@m2>lgyKQP1zR5=MW`|PxYqe^6WXsqGDB`I z8K_*fn%*&{9Dv&Z3aaE%0mAzrd1dt40lW4!KK!>|pxnwo-qwU_n>8HOQmPd*MvOUM zCq;LB^hYG%#=H_S=e4KOHrwj7s=z*Yd9d+9Zyki z4r_^|R>q2B^bw==HMvY7IZmSx^pPb{(_>~JX*mJ0NN~KK02@G03S9^4aY#)O3oU^w zT&yH#(j@~Ks|5H)!Kd6hL0w*>5}iD7{{ZD2JyaiJ4_~w?MaSQk7m*d%Ow}Y!dlwm( zNrdd`a$1gRL)M)TBaS;xxgLp7hK#m9O}(f>aYX`-J54BEY(L+mF3@8lO%Uj9%ANLK zT7@b%O#(eebk0{^m~M)KTcu^~QSkBwF^Pb1X_k+C@E57*l_7C|!J4Aw?_lahj#ibx z_ql8Ti6>5dGH-Y9YE-8esOu`L?47_;3vM_nK=!+ZSuaoluc`Q0n^Ku-dPff!H&uq2 zoCG;WAa7}~_YAnR4EMq^(Dz|_28>5k#@Zm{0)#g~?1Q_l9IQo-*e3D8{c~t9Kr-g$ z$=rd;JQyd(I#`Qvo71m6%Mh`8{^TkUmER+^`;mtp1zIvWB3-5Vb`%=NP$5`HZjgwRTIrovr8N?r&wY3c_Ey0tg1yxK)G>v9<3vEXpwufDFTPPVTqKrrlH4Lt|zYF$;R8lBUWx>rNb4ZGNe#WAh3 zdO=wPEN-f5QJz>k-QSIQB_dCcv0G8Ps65CB%EIE_pZO%e{Lg-yf_3;Ik~_G~i4j1{ z+vUZLXSs0fW0+$m#j+?{lhoWDDt5mIk|IY-EbqL=iOKWbyKwbi^={s7ZBWngGm7GX zn;YNY$lMdWc;h9mefz8EJ9~g?4}~(OQS_0Kx(J#{1wAUz)K)3RNBSi%nJstu@#$u7+S|P5jM);j*mYQ6~hdIxiU6N2#dL$WX7=aja z`c5#Z7q)520_CQyG)5vsMtb*L?U#1Z5}Qb>FY~v8R5RpSikuZ)4Luq(-E2~D%UD6@ zJnIpSqE7-?elLQh*q)~8^t;c6^OM~3#E)@i_FnR^ReznC(pjcUr@6HHIp!+8P~vm* z@8`<;m&cN$D>vJ4|66;`-wS+g8gArV8zy{J0ZQRSaI-L;7=8Z`t4NPTbjZmKW#E|R zqsb*z?Ga^gUs0iM@!8=46Cr?_@+K&!HcqKyoN%!igJ zf|Q`d&7KLuH;C}jFuD_9*|u9kgs1IMj)u#(;|vko9iO3=6B7Gv8dd|xHPK>0pvMHd zy6ZJUZ7jKqaPhQ#3h_L;m(VEq=#kcEFCZh)tx^?S1N4M)(;E9FRAN(s|9|zeXLP9DR z=`4~4G`|Jz6eC+_VWbRxCeJIP6Ws!>M}QHwYU3r5itLCBpdD8lqd~;mP~U}cy0hv$ zL}2a1#95FtN`I7xBtZ+;xbLO^z+G={=T>$m>#8NTIjLGtXM6f}YK0zAiG>m|N17rZ zUeF)@dL&cD*_={@>d4k;f|6$tnRTxQRUKNHRU`O=m7o1$Z*2`nks{kyBI?0V+Npi8 zI>o)!S@r+pyp^(u1WbJTqx|}>{Vqpm#>*G(U^H%PVsw0Rn#b??D4IV_lEkd-yhs?i zgkgV8_VnTh4_!?HMUEW3z;0`U$wL2B$-cY8vFZD$H&?sFXt%b^o3%BzFMShhV|y%Z zF(Qf4lB$AKP!SuY)-hb6ZiiBGBom7W4~a$F3TWzURGYJX(^zj6D)-AI)MA>JLp|B0 zT~e(i%hzdTlz?rn<8YiB!}aY!QFs=%r_*u*sx_OoF^#$7QH+K!@|ED_<9}V=5?^4^`M~^IwsAJxko-4;k&~qKv zVx3roXaj=idch--F_ZiK+M&E{M8!ny8d)C|*ReX&Yj-VdtNgKRX*Ftqkd<6@+!Jd< zyXhj0{y4gsAHk8f0JkQTZt0QNM(=B7N@{J{+_b^9&FuAjm0DGk$A0~P;Gh27 zuZ`aM9UKa`H8BFH6c9>yZ-QCL}Zq0SQ&w z!47)V#EEB>ACOijbU*|R%B}K9F?JSB+wZ$=ibgc#1JkCRY%tNTcAd1le-m{~F@+r; z-uoufVp?`U+YY+zGRvQ0UtcEDriUivj8OKCuBQk^3n5%Aj?i=h9M{0|RZd)_DN{%p z_u^8rDDOjk&Ze?4EGlgj{GkwAD=2mI&)Q~5=mAaz%~xr?{sElYJNa7=lZH z1@bOPUdrE55{sQ8FtE3hWoNR;z~_wyV7?233wdKD3-q>5^*%$r@>&*Zy8C8ZJkF*k@ zLSv_K%?5#g3tgM0Avc(Er`R|4k>)Yl1Ve)2K@?nrZ02Y-t|EnJgevVmoWe*#Bn9e4 zUj>)C+Q=5#D70)f0XHZH7YLkaioL=H)%IMjeLxm%ZIe)j2xFRd5)SE+Qh%l{LFyB< z=Q~$NTC8jYTKPhCD=4vBx`mOc6y+h+Ud19|w<3wP2DVqhwUoi65o-8)NF+5pv)_Wj zGkgN0g%(R>EHDCr5gF)_p8NU$__k#3@%QoIsSj{%^UG{E-ejh9b}Z?M;|NXk2+dsO z0_(L)%vbU!E%V6H_MV{WdsLm1aN)(+LE}Z<4zQ1{Xowm1&7u36?X|u6HwJ<|1aB-|EdySi{w0&+p|GP}> zF1)4oR;0y!#3t5~{;V$PP@hPMp7S$$`3>bb_tm_FDpEVJ2k^cdxtMsC~AyO+w2+GJ(?`ujxq%QYvUC zQ97W(^WvHzk&H(QzGGsV&Nhx$p=IxNbIMYq$L@9muaObjY*$w?108|#AhLX&$n$L<+jqkpD>bsSMB!>kf_zdCjWLiLyEL{|h+_rxa- zO^!yvGRs(|ss+zasmY)7NyM95uX26$t5l0e`HQdp5n}UATH+0KBkVIYbgi(fi2>!{ zoSOOp-3h7`S|TuA^=V5)LTE%du7->R+tyXe!4Xd1j=SSVH7%m_z2Y^M-t7)b%$4QM$GwX*;k`UbwO zQ+CU_?X^)z1?{TZ7SPfXlGrApjcbL-Si|nv7GwqEp^R~@Hoo4#46C>@CXyyCJEUIR z!3v7#VedI>ac@#DL5Zs;_Z=phWi<_F1q4Qf9*NvMG#MMjA|fFk8voBCG9<=bXL#!2 zPf;~`T9j{HyH3eo;M&$#i4%zz=Fgd%5-g*F8#K_RMai0DvwnqziTnw+6zAsO&zqZH zW52zEhKBzZTEgEe$nqFR=s_GXN`Dwk`>gsvhs0HR%$LLYw&3=@)! z3VCWCwqFHeF!rJJ6TP?&ZAR&bWT(22gsNKPT?2i@>m1ji@fvvNK`(>ug6No07AnwQ zRxCqbfx_cpX7;01AgQCA92I1+!P2$AU}3A>jj>4Gp+QxBWPEUC2YT9`BU`=fuoUH% zA|$a;WG5CqvG$-lbhAU6d_xf=$5Ry}P$X$OBc|Rft2K@@hzum$n(a4;93+6%M$brc zVXMD_)NoW~3DkRWD=RJ2CFdW1f?xfuKj7s20r4+)@V0Q<6Qe=A6Xa+Rnvk5Gy^o7) z-{j)!&tdF&__~3^SrUB$Gwyw9ms|Syiq41|_@<*q`6n_0iNsIP6C12K+D47YRkx&x zh>1sp#FaC_s{Q*9a6Emeon^;UxY{;);*bz4Z=(pxEmc8k+iJ?J*fx-{My=?fM+Xz4 z{$ot5%2exkpVlYPBWmV4m3D-y5-J9^)k7_ucj^*jNW{5zMn-mE?rXMrW z=-u+w3Jof)DxT2*g4`fi--z%G)#6KoD^smlsKsnggdn``xyqvGPSJFBD7Ev;}LAu@fnMk?Ddl)1P6cA5~Lfaz=R``IkXE0r3da+2CcUHzDfmKlD_l zN$SAeKn2G-O(;Ii$nePyCO7^Ik6-)-leK>3^u{FJvHYg3{;h`{;qk!i#gT1Qo!P1? zVlgh843xHKdO+JV=nlO;nLkYiibQR9jy1Y&ys*bG$jNNxf12cFr4QXS6P$Xk~J;L@aTy)StVqwSXi_u8R)U|5_qDd+0*Cpt&($0i>%;r>! zNQ)_VT3C6cBt>3mtc#C^k4Rv<+Cq;sT(N}{lxP<;~It>-zDLtakJzK_?|{)!7nK9RfjiapKA=>Zd>WRJV%d%C+I^0>72 z_1woxO=o%gZ@BB8M|1!F{lvrPA7iBfTQv!5Z~PgLzPOyL*-2C8x2lR*%5ZjvID5L6)b5O50;;HR{6h;VYBz zhwkAwfA3#&;lyyL`5nBoxb2D2Vr7D+f1{5W2_fFG%F$|bi|4-ad9>waj06mHi~#m5 zXvu(*yVTL?ymhJCo>v+pnkt4RRQ*O=DaC)Oqk)_iW3nL~mqc~)}c8NIpE@oxCO&pm!&P7{Il07)4 ziqnuV>naiSJvDGOm3uabmV{@g;Cw@oq;iHJl|ndqh!$EoP;p|F5k;1xtw{M2ftnm^ zUIuLv!e#Zlz=5C)#qAGXTaTp%0sF>Cj?MXTBR(sGMf7ZE?jw)^Vfp0Lgtm3eBp8Slije@wm)z& z-@!VNsvWjjRazt&j}~i-L=lw5O(lHR;^BA?Usq&pvJTD&YXyNKVD+MEiH({}qqE)W z3>;q@zczqUORZ5ebk6+L5A!d6^Iv1=Z{Kd^4i1moo*0e8cS4SWIOO%U*SYeye}&QP zzfgoUD0x++CaD(#MBw1ZHOyqZMShA%i)mXSwy%#AEvp1~^*0p}(n3!PL&D?KNqbPY zlM0UuZAG30I_cXbk~*eVz&9ci5uwEiGKs19C(+`B*y}ytn2@G+9e}nL5X<2Yc3OQ( zp~p@)3dA=eTr*S?Z=OLZl(gh3#dr$eHWBXICq=n#-F8Bv0kP6=7277h^k^3Lka3xD zc~k0~i;iRXB)gSOEWgq*jqG2emS`j*BhVHxBBRAhUB}aNP%C;JLrb9^cXWfl zw3#aOJA0p=d5Ejq7dbui5MJ28GJ0*jBNO+sw*N9qQ~g1&Zm^GS49ApI3&+@N-Jn`H zHvU{DG1qrqX2Py;Z96~iPm<`6455qE`vXZ5>}s7zZWRYwO0TF(A!F#Y>arV;#~;0K%VFk zr7V(Ah0Qi%h>v$-LpsOm2F(Im6AVkW<7B3CC2U2)y2opB^ycTe`|`_JL8Kgy9EQSqJJ+Qv^lE<6CEKOBp7n?Y8m=g1S1bTo# z4R+U;x?!7vB1PlAiS|lre`jy>wi_$(b|AWciBJB1=^zNeeeghrh7k2j~-ZtwHL%U`2$>1B*y_;%3K_EbP>1eK;m z+p1EtZ!py^p&igtbIp)Y#<_Z*?*7FdR^0nmF2wWQs!@tTCv7XxF#-*Nz%|2;sN3jF zRE2$0Rz|3G1;q{R7E|#eExCps(IGS$BNE6&lXz63;YvkY>%Yr%w z-PYD1Nr{9aJJmXzYpLo@sxzt=Rpkd1L0O+x0%+S;u@GS5&% z=E&A?btqlmVDty5ic&k{#!)Y-$+mhyMUnW1`hQSUXqACc{Ozi8xjvfXeU*n$!rYI( zpI`j7f63{kvxj@o9lT?>?TL|Nm{go-cswQ25T~RO)&w81c`|mmkC52D;eX=I|5Fu1jU{a;+YXzQeknw)8@-u zWE=7(#YiU0k$Z5G_GfcZpz&KaoITx%WTDVVRq)^hJ}@f0K#AcDdc zlpX-BoWCCcB8q!o;i+$YaqKi%Dm=nfB_`f;9r<39j&$x#+w6!7e8&#?d8-yy@% z-Y>qW=cdwY=uEVx2#gxFVhJPEx@06BZ$C_cYN*9{W=NBso2{xmRH=7jItCHw5uO!M zYMQD-5o^REAr=V;m0#Aj!mcP^hK=rlFZFuTMIz;Xq9 z6%8-hpy*EaWs+r4YMB|=@q|b!!WBsscH4ARTuUqxB3Wc>VgoZAZZUNQ;E7JTHNr1R z6L4~ohoAfuN9-eP?tGP%y%#t>^^fvTGB8^@#-+8dGwDoV>izGxxyl7zTl=d%Vzl4B z$&u=C^~usJxIz9EuI1OczWWNNryro{Z7^9lfe-?}ZL!&?Gg}&W0sZ?8BgwDwWUQ>56B+amiCQQsgj%@YCBEd6Ndrps3_SiVW7m5}MF?v$ONL+l;z|4?K8Ef5) zwQST!DOytN>gbfFI|AsKh@?Z9A`$cn$z$Q;3Xl2LY~Pw(GgL7iC^DDrq6J1og2jG$ zhuNKJY+s#wk%&$;$s*FMK9fd(hGUY57+-I7h1Y`!EXn+1@8gkkAH~oNu5W*XiNYCX zOAFN6t5lrP>dgsfmgVhdc=Gh8`+hHkV5)eE?Z#E6OQWk!>9%=j2MsnG*SKr$34{>5 zx%p~$+AZ`Y4c}vycNZ~|)yePJpXjZi>Z>@AQN-v_IKWfsBddG-;r+@*8c@0)|3&34 z9li#l1afKkf$<(R-hg(Q;mbhhXkJr^smqT7dt*saq4pe)T>K(OHd}q7=!9NNEYRWV zqMH8Fqv7yWkto4&+g3^Ur*93DqAYIBsUgX=4~P+C<4>Hc5(S^m3U{w*Bq;OM41`0nBk zF#=A_n7np~3cHjh_n-U`UcUZU)SRPKoEg6L=C`=@{MXUll4Y;%K3aDu>yRfQ#{E0R7?OCuAEI6s=gNJ>i2V^saN(|hs7{y@5 z4NB2cpUprhj!-jiQi_hzw!;4DGNIZ}fe|5Mf#vs%D3kzG>L z_q5|)kZmejjygU{dZ_hPqBJC_jv^5Twov++K>GM{gU~9lTiHR6dgROUC0d8*S${8?26b(gtRE<2#~YTjA=Z%OSLwO zmWZyHSH?!J$4`ocXrv!f8s`xh74WyIG#7HW(<6;QMi_&i_zc?GCU!hEbSyp5F+zb6 z3Cz&!s|=ASa*=I!MV)VoP$=txJb1|phBim7JMB`S&2=Wd^3b^uiTd%4h(Ja}GQn|m zVl5e2ZIc~M6@V*NnQon;E_|G(M<`t!fAoY^N{X^>+iAMJXM|n%Z>JMwB4Yy?83cM8 zGb{|({5y!HKs$eiA9~``II?&5xZ7GINguEr*ro)^qf1SC@cD2uf5vmjZ}~YZtU)JYUCej@YNVmAqCLKwaLT91Y*O z*NQ5j(eiYry(wyPc}VM%LL_iN#2JBTj%){7@f177bquD^5>**WwNkaBcetuo2d=h_ zolIjU12uPP5a}_&z>KqRM4hM+*(F_p5m9WJ2RdyxwN)nKqusTofv|0JKbIWUiXM)q zkBlHm2~w!V-Pf(yHn4*-u2IL=TbN;inx$@0)8mHKBFCTnC=V{aw{L$@9J1B8$)q!f zDb+Xb!o)qivGHZf_QJ@PmnI~u`)_b|_K~5#otytKmsUSVwQ!7zlTVZZmL?zJ=I*zc zDc?0jit?&O6{Esy>nptf%$bq0cVX<2(4i;SMnZK6U>i{5LOrnY*UOXF@eX zmlv*llg*3I;P-6+H^= zen;lP9IaR+-3#)dpt&5K7}|FV8Ed%)iz(XLW}jFY((EuLY}OJB!`-GF4Y%mZO_O@j zKU5q@h)aZzo#a1;JKpHua+46*UJ&jBAGYMubSz^GjQ8DVo|Uc07fo ze_eUxDAi>hMhFke{kz<<9|(Yi>eHSzTpv53)Af%lnXJpSlUvQQe z$a?Kn?ppZxh)2G=@X7c7B>(QnukiHh!R%x*Q2s=th>?-N`8qr`#=9l~5b%l41^>Uy zLoiU#eXXp<@(WSFN#wD%%31rw8hma6o*qLQ0F`GJT?cs{!dH90k8VKy1!$Hb9;00; z?LqYz=w|^JqFW=5)8xV{f5bhnZ}jPB%&;ej21R!Cu-C@Qp7BsB!Le&8O;0+Nm5PwF z?$shu`wpbi_Ka)8-JFA|{rqJ5g^ma2)&xw1aOUP{vG(-^r8!EU&-KhbgN)VsQbbY- ztjDcw5YZ2u=b!$|-{+CLA3x+H?%;ckJH+Ua*lh3d+*dzKeDfw|#~(%@ne>jaQC!9d zPmT4%ft0-DR~S-<%5tN%MHo{Bjx>pCHg`PMBx*{p*XnCI3j*?gk4TI% z+u9lilN8%VM&vwvtgO~27D?Cn8`PI>6m8-})5wgQwGo^6w#0O!K60eTB|;e=T9-Ar zo~)yFC{1F~!qXdQ(JWIR`X~<_|3R!AN9z6d7E;su1pg@}oTIGozf2s5Xj=Zq`NZ^n zEN{P*>v^;=aSz{I{=YeK_meq~R9LSqGvUl~eDdDD%G7q_DpSQ%xz(z+`|b;p1rB}n zx~HZl#>P2V-(7=OD?QJmQHM(Z`$IV`n`2Goe7)4_H;KIA^c=S@R)^Pptl9f_OKU*1 zrAU#;ya%EcD82_Oow8QA4MApB-EBa79jpoz-`{)eDBc*p!TqoPDR;l=k35a3@OUu% zHM_kLDWS9H!ntb z+A@a6U(R>1j)ZE@g`H!HME$#&!#QnFX`fP90o?y@6U(_*^ z-UlhY$foYqj%(1A8%Sdj!uU|tjAC?zrd*{QjdwIo5os|Exk6%1Q%`&>UydXQPCQFn z+oTjP=IrTUG~`W6(INt&#O$4_4=DYX;};2%9f}7;a|}XD1X?69nu;j7+CDmr0@Ih7B00PsZF;n5>;>UR6Wd)UR=F zZgl?GT;&2A^1Cuu}{O@q+}1bN7rl1 z7`lxit)a(mHLh@O{v)}^yt?{5NNW8)<77*bmr=y%tw5u{IyDifR$huhqsZ%-_Roh` zuJY#WPxWt*w3ISgU+A^O%mSF1&%4tC^98`_CsgQal)t;LHghX~!@aLPHj*D;#GpSH&!)|GvnfgL5 zS!l>xLluy;-8HTPVaHQ6o%cHxo6YJznlEr-2=tghA8ws!vB2@NFSkY_ z1QGsFWhc8n*HTW~Bq74rm}ra%lN+Wl?PiF zjDs&~Ku9T=QHH|l@AU}3V*;sbVON-K1~x4_W~Z{>ThY0-cbUcN`LWNXS~$kl&9CAGbu1(QPV~g|eM85HVxMc<&$2Z6FuSem z{~vpA`XkAG=J|c%%KNUY%(|<(s=KSY*<|x3B~p}3N}7>oR&&@3d$F_jyjjB-z5M15!`!5^^g7lfm-EI>Knh zmhkE-frdsy&JwF6@i?O+D3&ZzY`q(gk@xK4k$Q!<)qqYZ)I_!=LM`EPMb6^4N9$1f zp*cZJsXElma@6?Bff|Ngz|R!ErZS)fItkq6`lFyrC2YwU=+Oq?F%=BM#PIu|Q9%Og zJ`>H587oFHl*Y(vHQDkJXe!9g(U(;{qOtV(-{s=ObKKwm0RRnS(B-evEFen?0nhPa z_o>)Z>=Zua%=jyvWo}_~J8IO1Wg9#=_!(zYuXAVbyUZq@qgdZzb@w|gPy7~{@s)u*U|5TlY}FPt*`V8KKI^_ zNaaVTMTZHGhhaZ1-e275F3UwkH5mvJ)9?s4Y+q9dsNIFL$wF5hdGFqPWZ(Tcs{VLQpL}){sRjq3 zU6Pe<zuQ?lC_U@KBc< zI7$Os^J7a6iY*bWc{<`{Vdj`cGL@DnyRU79-5rgHN(oZpx5p_d>u4jQDUAKFl#os<%#ge>4s^X3stb1s9 zOv-^Kfrbaw8eXj?Aqf-65fg+XfjKkI8(;e8MAS$pH8mM~ikmw>qHbKm?`rtEonK`+ zJzD$YMmtjEjv6)1N>Bf@cwmBDZI7@w%EsY4oK3ynlOBuur-=9_dGp?%F`IanbmW=N zdwwlOT`%C*q8-9@lp(6u9OvqzO`e$^bXxyS!nrcs4GEX)UluMG4B<_rObF5R+#8_h zz-lo9+ktxD%x!3(ghb`5(-(5G3&gW;bN=BjHJ?aNx!tQZ6OzR)**QvhY|4V5j28yU zgFEuH9~UXKr|%4kwLw(8?T(9RQd<<=PU*Sbt3i+^INrf}ltCnj<7;DgOl&J!89ug5 zT$J>;;YhF__pvcP0oE8Odk{!K*|kwS1jrE7A$T6-IGIY0hx_ZN#OO1CQ)1M@Y$Cuf z?(Xy6+uuXkdi0S`jMt75sX@h)C9Dh0MpG`}wZ)IU>eun=>VTf8?fK(&RrWVje0JMR zaFVjJiHg5Rz^%&_0{Y_%`RZPyrGW`yn!Cj63mpNoDDM~lRxJswRwZoB4J9m=WOwd9 zmh5zd%>WHii`5ygX3Erk1`V$%9IvaMPWgUS-X&;Ho;da9vlBGrLsWa}#K&x7P*-xO z>NsVkIpRFG#@@#veY%RrP+E2X>PT`l3Rb{N;+dCt{@hpa$h{kn`lpEbV{GMbb3P?1 zRn{`^aW3^-5BbIUHV z4l9#irD^2YFWx2{75hs^FR;4%9TLI$0pFrw7}mh{vw-lW%hct+!T&4LhL1PkM(pDe zBcCNI*G7$bs%C-H+JWZ4bQguu)T_LGEe*vvlK0;g6WflJNhg`n#BW8C?od}TI zy&6R6{98{#>QE3PxA3^_UJasCebq1YKck{ax+=&{ybOMq=BWQJpqhfjxI5FgVag(P zr)y$crYuO-FfEkF5b3*(Ns)%@_eyf3+1g&R(Cfh6zkjz@suYlUe`${Wz-3`{)&7Jo zb)^~}pI~0bBk=v+kx{!-d^$KKMlGa59{&FB_t2|p;Bg8BvZ3kIP5#??g3L6uUia$u_Kq`%RBb`RDt^&_ZCD!)5E`ewF+rl* z4%WlmtJ`CfZ9&-dRu$T)inlg4({OF>0yTN1?;Qs$2k;1|abE${OQKy%4=IwVG(S%N zm{WXGI3-3deEsqt;#0*0P&aB6o83o&QYA;OuuHynKs+!`W^;{ZvyLJw$cBwt>V~6b zOK6UCO4Q{nwhR@Yj!##q`o)zm+oHwBN&RpDG$()|l`*9nsuK_*Z1e&Doi;4Vrr|TO zWRW6MEP1Gh&@h2_8x1)()bD5%Y)J^i+fLS&WfG}t$SrrZQm~1~R5}F8!J?wnJ1svz z5Gc!4ic;^_MzvrX7M80Wf^3UamL=QN{6;6_t(u_JbE48sKZ#-tP)F;OyoQQu+0?z_ z2x`7O!A2ZkGeX^4B-9YvB}W4Pv(FMuj$>G5R`=cl=m?;T_5Dt&Yby2>A8h?Ch5A0( z%JzvIS-5 z?$wGTQfRg$QgvP(CJ%@14(J+0jum?e&M4>>VZnjL`kwBu>zhYL5M6_h~V4gNRIK{4?g6zi=Q8TAgB11;FK7(FcFDR zH%lF2%AGSzN9?fuQGcpPzs?`D5U z&eHJN(6DTRH4nkcM<_#SAz-H|DeFY61#0Rc(Z*njbvYo?M6xa6YpOj)ki#G$qdI{B zv2;z|@9kuN1lp-N$r1Z)6R^4*!K6Ag8YM{4BSL+a0m65v`y@3?*a%QkWEx&U{Hg(w zqHKChYJP)2%ijo~tZw30=P0+z&pd`Q)Tiljpx82@x(8iTXm}JV{zF3bB(^MO7Bl2! z>g6|hcJ{S_l-2s-bpR^O4An-KLcI(?RnPOIJO4N5QqQxx_ZG|PmyXo&41+AIOvRpN zJO4g)Jx{PDrbXF9At;^p)kXhS@dg5ELCroPC7%+Gjm@N=G<|EDJ! zhbpU7njf!n@Rxy!c$$N-hiFcWEoMM$h=Ve~jR5{Y0l$dw7;0C5yKe*yJ5RU(Qfx@OM*&J zRGLLABI48*YkQ4el9Y{#<2tJK2Xx8P)WL8Mqwyi_;tC;|x6dzA@H`@GIbTky3RDjE5~#%~O1qa7v6?xR{!vq~9k##LK0P-O@VCsb>b32ebeSv2Oc= zxHnE!FEQpH#Jp1AwkoFBvaW0HK z3BY>xEtZnc;rEEyHs+6UW%Jvtq+iCP`nj|JcF*T_iuXY3YMK;TLsPoPr79j~V#|bl zMm8ImtD+B!sV}gZdzVM~t5o$vCZbOe@cjCT zL@&->;QyQmvXncXw1rHlxbBc~177J%=LF1d>k#+Pq^R{7G&1h`uY6PELXf@ob6F4~SHQe|zTwm#W%(smths4k*L z*_a?(kK@#32j9y90Ks*heSHQRqj?>#}%e|LuIvuLW3f`_=S$*WBEDm+is>US0e;mSeMVc(?OjF}p{#C?19U zQiNjeHfF>?GZehKMxgrfV)j0JjD~y&M5rpegshn!($dsKYmIg^%HLE`j*Ui1$f(#D z)O>b_v^AvyisMCfj_p%nsEhwIN)t7nmD+0lz2CUg0KnBTq7PmSlMN6Yt*P5i{Z?3+?OQB7s*NN8qlCu`eXU8_WasR5D>Ec@Ki_Wg;Yd&niOR8XO$eU@jcz5G zYC*IrO6LnX&FCv2kGK~|GW`!E*EWv` zx1HiwhErnXf~Q}Q=z?xG@hHBL@As^0R8h<_mS>ErQ6?5hW0-X`buju;)yo)WlY{CG zmTj_M+9Ifh2)4Xyo}6;^({UAGJ$UqEW~OGDpL~@{vq)X9P^otB;N@I~a=v?!*_ncP zT0w-nRdeuIH77_zKE#wfcpVi-k}wpDrq{$l5Qa-r<`xn%NT( zBR2}QeWLzxf||x&d4n^_%g263RWww$NL-^sobuHTQsH@CI`fAefj2-+FH<+lAW8VN zFl(7B6zdykN`Qc;+aD|J8zblu--L?;uMG)A45s zdb{3G+2UuD7)hZJFv52EF)`VI58{FtJr05vono+(D$;Jln%RPIx%OKkt!GKyNR%6a z<^yK-uCwD!W4A^7Y5+VgudduZ#xf6h<=r<&rl+Axc2c>ch0HriVT#y}?6@7Oy#_>T zLabc~!=-z@>8YBxD|&8faP_<}YV%O%#9Z9#xQXnhKyqusEfYa=i$b>4TuP%dB3!*&T4ySH=GbjGj?IIepRhdlH8%2hIH>G!Vdf1U z9b925^#ZnSv0Zq8X^RUYpoQ_MUe1hNKyBU7vXx!3m0gmd;YN}5W&v5&7z<3`l|c4H z@yHs>Dc5A$H`M*=E={w}ZgHJ@qk>+m5%CH0jcPGRF)JQ#9chZ9eV2$bhiMzAru30| zgSnwOLF)1Wf*3h8+J{uNr1HF}j7xrw#vCzXI?4*{3~> z4rJT~^MjbH2?2Op>on91(t-csU;inq;XkFFN!|%Zxi%#l5?2-Yx%z;~U5Bl-c)**^ zG*Qjg!;&M&!Or+#pR<0nwK$X6qlwdDRBUq?L1`N;R(xW6%Nv93L)zQPM}$|9uVv7< zHR5^7Zn;>e@*>(}%A@<8Wn+RM9p$d=CXWpbveQx4V=sU`>Y>MkU`^<}$Uz-fXfGWgype&skNMkhqmY~URd@#)9r{#(qYUq+H777{Dm*}sZc@p5o@ z6HAMsNGkJ*^F7*-HgvOrrg%GqXcRfx*nN|gh2H^Sb^TjRq>is(N(aSuB-`eL;?Mcr z%m2mDv|zrp&ifDkhNXqyW2Bxm151`|)m0x8lb`DuqkWuh^f|Q$i+~2%uH_%QHv2<&S^0f`& zJLDQmzP5)VYm5b_I4F-+(nfqqBEBR5h3Z|Fr+=6I(yajkwVAtx?TFb?w^fj0l$sU3 zbMt>iSDWk=E-?{1-cI5-8Pj$6Fb0=LM2sE>?ljw_Vv(ig8G==_i@(DxW701(9fLagGx*Z>I(;!1~cKh&+Ovw0oN^?2azN z01=rghDFq=?h~(3Lh{2nj1@-rYU@WX0`H!^NFkU6bVw$lum!dWvI4OQ$UTC{B>0|g zMTQ;&#&u9Pt=xSefLe$iHrEXLX_Gx>)4LXg^3rC zn+Gh8J#nN)X}`QpIy}R6;XcXG4X+cUDHpKi7`9WxlcQtIV_x8lKhR(HR1B4Q+bi^|M+mOIN9$6w{gcmIrYA`LGCyHCjZ-e@SO?x+TQW& z{!;fL$3O~;=!7y0YB#Fc4Ag0cCcw#qB2uRJm+pfy1(IL18L{i&l<_pnOlA(j+5t04 zvQ!}05Ddtcg$C#R=E>Z!eJ3D0^T&v_JI!B@5l-*NMLO=;+oIv^`tX2!kCS#b5@mJr zWo)9|rgjGoAR=*CHdL|@OMrH^j}$4r<@jzmIvDrGcj5i*jv%{gCb+eE>o@+I`LuCL zj9hqeKE*e$tJ$-Unbh;VxAs@eO};j4lRYTbbJUF*@j!}9 zd7E^kS8UrRU4Czz?frMbKX~V8PmqSy#H0FHi1rFTJ)SeHXyV4I+f6J-L|h!l;-_o> zGttD01l2Jtqe*5@l)BW-3QEnysC6HAJ^D!_Q2{FIK8h2eA?JGhkPOAbRP7!&@wRXq z+U-mpkC0hjmB`c2@yf;DW%n7{oChM@{gQ;W8{f>gv`Oink zbWI4bM~(T!`;cQo?`v&=JPCFy^keObibv&aw`xi`1J){NPxO?O>(UiAre~qB0(Ov% zn29?XsFLByRGEH3%9I{2bW3h;~V?2UN);(qocqncV>6 zu5cq)mj>IhoZ>TqQ)1+TM^SJXOr0Fo_E||kJFt8*vcPU}gQ(`i?~U~kmO?FyUklMR z#T|8F@)cIsztu^B^`l|b@C}Lj%qLdZ$gMIRU1WXdXDrRU-t)dJtEjREoTJOFi}f5; zy+kTBO-(OTZWb7`CVIrXjb@>946*PW>-qaI#Gb&g^o|~C0IrtQ9@$G=zp9U1wgMPxF!&nn? z-lK_8L>J}xqkM)w3CNDn(0m-cwtJTw>E9OQ$f|+yewXlgo@?Tj2CVLG$m%R~4wx;D#Nf>yfd5;!%W$tr+(2cI55H40#5k!uZRvl+56 zQ6-kn>uCNiaR}AB+^-Po8c7~?TIycNhedVWQNBrTJQ@#hb!m~N8U(f=IR{x++F4G3 zWI}iXv<0zDnGwf0%EH32MISq-4Du5ox9;^F0e0I%Orp{_+DhaUzkHk$qhru6(;tO= zc^!XbmUN=G-9x6b&DrrMQ6z=K>K99H*91P9F&Wl84D*hQ{B_*>@3pBiWr z0kAmrD!Yf*nTRe7-FBN4O+^=I7&TN`V=_9=R$+}ZEvMZ66kRHQf&Ic=Hu85_NG$hk zZ@X}xnbWWLy8E4>PSK8Ivs-$|rKv9u z-SuMX3;g2V|3$X4NGd#!Y1KPzIovpo6ai!_+ayD0Db*g1Bx=KOQkQEt9%ip`cKkW^ ziZ>Vw%yMI^$k&fCWBzqV)cEBSqfY_>!!_Y5Q(zy8Nxlu^Iw&Kee2xi?yHG5G;i{Cy z4{`-)X_>|+p!NZTey2P6yCDaG*6&XW(Fk6I=5;9fK#Oy;6{Ozx!@cnuNUac=TqADl zNKO+l(LEu~-M`M-9DqZlY7#GYNw{W-QhZ$%BJq=4@umV-&!$;VJc~_)&NK2Jz(V^Z z!B|clLz@(hf)oX(2(|_0x;W=bU$j+Q2K^dnPqseeV zqLj>|c+t&9PkRQxER(4nk_Zo}c9J~o7auTeYIKt#H@vDJRrXM67V*d`maX?hykuF$ ztN3UbgC#IcvyM+YdBxXG;a#TU;%2&#{1U4>-(+R#4|>)aMvg|pahUQiGT{?xv!(C_ z($S~T%?jzs%P{}@omERlj+~xhr+SZcV1dlRT})F<5Y0x3!-M;sbu|P0eTJHbPhsgR z|Cp8JQz%2U0%ww!d4Kb7SsYPb9}mon$V*?9+WO)9ERKJ%=R5AlMC2@crTe6YednBv z6zOJzVk65^@@bNxnUO?o*tQ?HCz@MCUTW+z6~7D|VU_$TVQF%Se|dR=2*Y^DFNC(*bewtgf8hMsDB5F z3-qL*+HeBm<;g*Kk-X;&*f|l|Ql`0@X#I}u3Ycpkx4tN+Mm%?)rdl9Ui?Putlgey# zHXCY)2$CBWAN=6*vow??7}fVsE896L|`zIQ*C4^Rv!@x_C5hvw#9yVi*w_HC7G$jMfP(ynN9bmM1)SM zJ3-2lg6#@nudaWK<@vAEFl(&m?hHh502U@+WqtSOEKI)IS=J^+lab*Q+)QkVJDICc z-(`9J>jUpE&wriw*ZvBIq!CA9A`oG(m}No}5uc_}0tdWW_lBB|KE;0V8tG^+nV1hh z!Djgu>gd@hTi+%fSODNb=6furzJf;$v61}=HT{r)%ey6_C5UJV<^#*z$-m9# z&irBLy?)_w$;`7`UuUO!kE!5Ub_#cxe{q_{z~V^pv8H$ld;J8x!y|(2uJrxH$fNj1 z5}r0vkrg&K{yz-sm4Ww8LW%$$WIyQXyVkFL@@YXFN21xMHQF!TW_jYbj@-5zTlrPu zfixj+oTgF6d&KwmX(JK{Ga>o;a!aV3^$zz2Qf$!+?ZYT|Ea5dY>{l>T7p*})4rw`8 z77p0wM@YWHCR84;U~>SM3x?1VDXrhC92Z2R9W{~@tte9K`mw9f%tCz)ylL>)L2ofg zM**u<`6)Fa+<@>aA~j?ez}_B=j=0fWgUSH}zX+c9z}9;!ya2Gk4+LKAk{&4tcAp8N z91@Lk)w5vU0VzN}_4{Dnpf>g-I1Ufn5-IbB7?;)RB5UVJ?K~tC^?;>8)P#bIyx1{t z{NT$$WKKkVP6BI3oJ%DIs>?e?nGm`z`FQJ>Q+#?jB}T_UZ;6b1mYFp&xm(Pno+ne@ z>3MIjw8=zdcIZSJ@~4ETxeo`GU6R4!7hJLOh)8e>Ns{nuLDJ!wq2$P`MJQIca2y9o zl14^~+>j)RxaLQfr-qJKk|Z7#AM%WCcDk|em$pcSheyzc!5uAXBOY90b?2J{#7L4P z=E4`*EZ-s(m>(HAYM7PIdm=R?{yjJL1vU?VMk?}TPpYoH?WBK(Y<-)gf2Om{ji{Eu zv>GJTF;anf7J@76)!sk0GR$@y9u@9#E;Zb{CmA|RwtTPS5PewPp{f^;-EPP?PQ({w zw|Kv2`AJF9M(!rBo%=6)_T%@&&=fzV`YsXwB#Gc85XGlAYHXa5c(n_U;OyQdChR=e! zEc%)a!+1mVVH-t^P6EXiV^&8L8cx+La9lf(B4Fpc#7K&QodGE>Dy9m1P>TR@s4IX0 zPK%wTW}t8d0tN8Sf%mnpXj_hfvDHhA)C*wV7UZRN9m*;=GobI#<6N5oSODb^qG6Hy zmR%%U@(vd)I~6ci1qqS*dj9qQj^&tmHCLhJC*yk=nyn~NQ3b1Y0s~P{w}JcM`+|r7 zbq`3S7p1-_)G{$Ba|!O(tj!(do7EZgXb7PT=dY9vV#^N}aGSGdALzmVOgi$^069wfXILv-A?8hw6p!Z{yUa(PJkjw1lHl|}w^5F18;(p;?y`FswzZN}~6yv`0}EA1xqc>7^^rACkByKih}?;_PI3gSZi)%X zCn710dyoqXQFR-(g-9{AuE*>{h)+Q9w^~t}V@R~5ifC0i2hAiS(^VMYD?@ZeM6~*e z#V}Y~;25ASp3FnYX+rIqFi3Lxs)S7wA%u3IxdVY2kmq_u=^)OXQv}K7Ebf%STm|jI zAYnQZt#jvCU~Hln*ZKUP{O15HH7ZHslnM~mEu_!8_C*J)c(M}kw7tGmR);)&X_ zE#yA!%1msD)&2Jg%TkAsxZ&4=_|*V~`T=oQnlBkU&y~A>$z=L-$C4s|M+aA!9)Au^ z3$c;A%TjXCXDJq*qgdG{mAHt63`j>t5<;qv14>Mg-QD|JlHrR( z1?98h3v5^JFc*HJNBn+J-z4Q1=k7t~`z%lX{=jD!l3yB0j?P4$;$i7S&c%jDcTC$r zbCI#*ruBpJ8ncP#@u&e-_unSuO;K*_6YgsuI~{+TNBIwMq#$$gi)!UDLxWTiO~`07a6Z@eV^s|ua6`K zZUOZu#KQ~hWUqFJ(N=zqx%jz(_3F(6KFv#HM2amPnPtDUMZT745f-5-k`*t>!11on zm3jtQQVF!$f&@GvN{u{Ge_~+WXlRB~R%&VNtAY5%NuSQgFktkbIr> zgCDY#9@MgUl>n2$B{oXeIpc~d6`Kc42A8mG9Yxkgeix(2kt%B>ebemM);l_-Hnz&E z%!IosN}m#-c?>f$tQww{&B9o4icIk~A>ZKn4|w9pvP#1&W7!RY-jh3Xj|HcBl)u4v z_#4NPB7n8bdn~74;?CZ8N3Ij{jZwKi@>U2&Ga-{tcsaB+^9 z@Z$b$elfcuG%&@xP%yy?LE|}y+ycc1l?s#=z0>)ae7Ic7CL_X92Ef4C`gWDJeyC4XQx*}`^tnK4JQ@;*n39J_&789vG09l4u z3i9h9=OMTZK9{af^0#aThK(aD(vQlVurC-uE9KS?;|^F&*sXwk9duier`e0J?~34> zAuz*2fIc?PM(`^j$HaqRfI zWUnVoQ|}rXHq6@4RwJeI1D-hlPmbJHn;g}QGKQsNJ2p=*{sDJ3zCF?}sg2$22P{r~ zsq^<#bb-5>YlOVf0cY%V;u3c@z777#W7BAcZIU$#WV6?qN&gn>%|}do(r80&njSTX zVbwaisD5~r0Mnsm9uz-dG1_~>+{wSkWbA13!}+lP3e2?k)h%}cJ0H;8cT6nFQ2K*%>sMlZ2b_>jrykUma*(5(j9$`*^s!AY#z z%rX<~iuFTkh`q{ZuVZ*@Y=W{XM9s(HIAQcj5I3Okn3<2shIqAMBbwEQ&A~|Kl{geV z@V}jf%Y7ABK1+zl0rF}Y^52HM7pwr#y3hGCptneh?m*xG5(^Mo5$1)OD{|eR-s&_* z?YqYHyHMN(^9XSk4G7i1_Y9bKN37EayC5_|>cyi|cyhXBTp1SRtT9Hrku`+^w43f& zzyaV3K;#*)`*Nmo0*pt(tEjVV3iO|da{Kl;Y(<x- zt^2=a!u>1IXlbZco(I1JrUoQHJ%4=4@)Vy4PKi+;o}NzgaF=9cacEh8Khlv|-dg`2QD35yKJ)wH)Ec=? zG^ihSy?|d0qV#EsCL*)!l{N>WUXmmc4o>o@yn`f-u23r(H4e)e&N)RIp%5ueJjQP5 z+nAjyI}LYft`fh%dprMz*_80}NhqQrZW|uO$4qF22gMJFdQ&8P;$~KD?lU{q^<5eU zNs@*NvL#7kHoU^!{5zbDJ%=nQG|VbqHSkz1I1VaZL3JDF#-FEdROpYn)b%p9W1%TQ z>PC0wvTch@c@@KIP;CkVAxkQ=V=tgcDjqe+jqQKO+0;wC^YAZuVc|a;ImTgnpW`qQ zy~uuP4UgibVHAf(yWB8slkNN}3u8|X9fxk6+$ZVN#PZXh=T2~RM|(F;B8*-sid5Kz zBbu)s3r7&1QNO^2Dy#?L$>QKT?ub#pki0H~-g?&g{ml*jd3~E5f6KvMlKH!6H|?9z z{2V04A^a@J$<~BF!XkR)anzuGTU1~O$Bo1wkI~B?-zIFdu;0)oLP#q4AaweVJ)So>{3bn!ko#7E!N$Vl*(02AKE6gO0mO zO%4d-OgH3!NKcx3P`(2NKj6B?bfEKaWlOi{Q5nqB_H6vWO`+SOmfk|rn?~feEdU+46Sz}J|vsS#r z%G4X3_s)7p=ht=H!uA-L`ZYq{F}93#j1GxXfDn#jb6^#CZ|6sRar&RIUAcqgiDNkC z&`6XUZ9(>(-G9fqiQnzfbEN|FWNI5s1Q*$^++jZQ#E>ocM@F=*O;p8;EGeWSD}=nMksaw(MO4}7mc?P^{s0*R@jJ+r zH%3;*jY7mfNwL1e+WrmBr~m6C*EMYe%Z5Z?9A!v~R5z<=%AhtRQ}~D9_CR&It+YOC z@Y~&LxPS>?IJ9~w!av*E>il~(41e^-t9=z%$3RYq>NX`Hs?iGTpkJbgh}1(}f~5i} z4fKGBxU`|nh?JPC{RqlDm>VEzV3$Se41I7tNufuD<J@}&nXre7Kv zb(o5sVJpAJQu0#I@~YV&}klKV&}nEF1bY%uY^02D)P7gc2vBbkkh3 z$=BG-{*<}oYaMbF^QKvE-k@fbup9$T?kn>JK1!3TWN4=4HZ4N$m1Y5-7DQFFR_hRz zmC4`k5T2uOSb0DqxJa)0fODx=$=8IIqMsZ+%znt3vE$QV!w?V7QEui5c!oz9K?u4x zb2pieU!-9afI)}k2M0fAdE%=B%QN}Uo+Y#*%h;+4Ls|g!!()R!+Wa06zrJ5~^Ankm zFTg$yVG|VF#Cn`kIXMCP`_R~jvIW+VCeDot5C$~|p%_>Tz}Db;gBur7BJJrei8`(# z!rXw;4m2Z(2z4uc*7H@H5OYA%dkNM^I4u*&h)8Lj1l9rMZ$fQGM4|#dP+LOoa1!(b zFiPOrfza#Vb&*6lC?aoC>z*bjTfRu68)Tp2lfyBW`)?lR;$t+Ohsbu5YCXf$_-IW{ zzLp_d-R0~MGsokgTTL{@+e1+DrS*ZHYe(UJ_6GBb6>P^Q8JeWj$aPE$r&G_foq4Z! zpGK8@c?*tkmi8!KLY^qOTBh^2ZZ;@4@;tTp4c2#l)>${(D6*AXXGQYkZ;_?l!cC^) z!y+%kQEV1j&D|oam-#UBHV;b=*sJXl_a#_KT*RYz2xvjRH1h_R$Dg5D&k~g+CcFvG zdV{R^+AlvVKCAOmq%HQ0tDV;)>j6cd!r$-wIjfCptTrC7+IT?26X1vY-z4gJj3;CU zMaFKliBTKd`Bi3H{ngg?f5e&bS1|08btTQ$wurY(MAMN4EJqOCY`H7Y+$r886`p@A za^6OzaX`MhiARaDmigJp_0|usGZR}G-6Ib;e#ZLjU~YVl_g;UJ|1d%4wKn3i@Y~Qh zhA2$eVdvy#@E-}ks(oC@-9CDyc5~D=tS#_tK|BuAk2hA}ADH=BZ3M3rRR=_zyY{03tgx<5DoS^HyV?z1w zVedB7##+baK(!85Lc9t#G`$d+fykFZ>$C4r7e#8Y^Y>IwO4G1|>=lmauzQM+h0}=9 z5bWpgG8cG(So9q0hpT`PoZ5X26+@mV5pSHTULtfvx@Z_|C4kbGkKWJS?1-jg{-p3x z3Jkv?tnRAB@bDm=rT%vBPB zRF4a{M-5<@bsWdxVQGhmVX&liqcU5EA25>`9g^O!?NK*tG_0n$Q2-H7l;!vZmg5(= zv-?BNrG!iKK|RBEWsAkgA|6*{Wv{r()2Ww+Zr_bD)z4VJsNEMt_lMZdz0aBPm)R&k zq+vA)NHq$|E`>(>#uKI;DJn^2u9pvqs3MvYRs)QAB9t1tERMg*C@dzQ=6?1ABEGRs zdA^(ipadWt&9(kN+fDX&jKRZ88&omPdt~6zY4_ z^!$Lxd#8AhWM~$T>Z3LyE2f)boWmlK&8CB4S!l{9<=FGdV7>;gyW}MILc<-fK~$7Q zTE{+HgSn63TRGN*Ll2CNIETNzCrl)d@=N--xLkk_V}kDKUzF2dFYTO^S;=RdTEF#+b8zzhFyZ{bubdb8=-a}#LNJW z7wiOJf;R`zd6Bj|iJs8f5yVKD8LfTlS$`LdH7G|~{s?hnc&vuEhb_oAZn+0Y@8CKAsF)nc<152$FGH0NIr>I3zG^>6YJ}l_NefX zrSVJbmA05q_=g%K0(e_mBzN_htOl^nE-`9Xy`2O*#dRhl3j>poBuPYk35xZcNUuc~ zIV|31EV@Lgx`U?rDd`nf(np7aB}rmFvCMi-kitxPn^Z`oP9o8Be6ap^JP~~YPapB9 zHV>H{dzz|IrL31QY@?G714soXhyTe}U{&m4_sPy+Zi$@GJ+FE#{Li^YGvo zIFgU0ihe*Q*+Y^w$6hO2Ztho!-wlwN^9R zC6|{`Uy`zaANoBg<-lkahLlyX>%ylAU_1?lUx2R$q5q`U?@00pQMY@UJSoyN1zuTAA!Fa~e>&2IVoKC9+#zfX5Hop15xTM1&U{{?~i!=3-_3d zFAtQu158F1*e!0bFecI|mTlqlMA2*8IF3WLo{PSpri{OSfF~}Fv#gh~9FyC7 zKgZ`CV>Ne+fEFa;i4c;*%(ncRPJ*gqaW8j`R~G+Mv>_=Q!)h=Yn&F_4B{rhst{=8z zQ__pM+7<;pPr34t*-%&8ph^m%KBAegZZMzhHCt>uRZm3DAj=VO zDlIRilUIUOnj(GX7JEyQgd}Oi1CyQhB_}0CfU9ZjuMd1*{VIIx>WS9%*rMf!1VoF& ztJ%Ia*>%4L_<6Eh4F<672frnV(R>xct+`Wmddu=Z4#EbMk03@T!E3vBxsi4`pUWX| zs-kC@wIxK*atKt{wQVEFz^GJf@GRIrJ~|a;?TAQ__TtH+IgSpM_o3S7U~QT7q|pj% z5WNgil>zmLGT!nbay|4qRS|*Gp6n7PN$wJ@HY6Er8_ZoOuR|@05J`h@&qnwYkpgrG z)WEYSdc8@_WCDLw{HiO~>v)b2$Y@FfWN62!vu zJyn)Xv(DP?-_y{G7-pSHWt(5@y~%jXkTDrMPspDdDzGiq4~hE6Izrmr!w)$#^;*w5 z0Z)i>qu7&5t2B$Pw8_z=U}0>9_1tZil9z~u=h)c$1tEXxvE7IllTYyd)xRbdOtV$m zA*46)*gD(IA|Gbn#iIrZdBUiYN?Z%DGI4bI{3sNgMRu!?m<&$y%+!}TDBc~aQ`*R0 zVR8H=9+uXz9lOU7yB`g+!FFW}%Q1<1Vl2lm^hBRLYJjQOB{s9~;S8yy>P7E<9vr;O z^28T9e>cqrxuqG0jzjCg-_?;0ziIIHFBtW37PG&M3b zMHlj>I4G|%5$%3Iwqqk5@mjB|A z1fsv$2dyB$wIPwHb7f%}0HXB%myLkYH{m*#NNp(~1@0 z#Ka@#gnz}ImP4Qlo)+PMc#B?^s08fDQ8R97QBHS-06s)zUQ{5fZ)zBn+c^|unKG>hbG2h7Gr zlwoWC9jbM4f$fymq2B8?vQt{esE9sDS62TO&#nA14ZR5JVBfN%kRE%2AKm%4yq10$ z*&8LOg?RPMAF{gh16EQZ^>>`M=qPNJH&G;ol|PxSkDlNO)(YnVAvK9ErR{PPUwJ7iI{T=b>lPHqRx!~{{e_K;DiWH?I3+$KHi3JweJbafYX9i6|RmF>C z_ohTj^+!bggH>v6%mwE7{+(6+>2r^t^81H`$%Y_6PZtK8%s%Z(ZT0&Q-3@geus4H! zI;cLq`*InIpJX={Yo{eVUIJzGcl?nc$H3ke(HZreAR;I6OlsbSk_y^okXw~)Zue>c zxhP0l;I)yP>4Dox+o=n3;)WFJU1se-@gYd(fh?%4FK}!c4qKvWUl4c%;V*;g&IWje zP~6?@RtkV!73V_=bp4oyHOy_3Bm1-O7xwFlQ(`m(&rDDA{=4&(7<#u4S04Wq_hX_NVc`1{SbpF*^2aRCe;vcD@$=jNs)t0Wsuxx9 z5%iBU9_yBiT8_!bo%!2rvFGV8ti-E8S9fzW~FBmP6&W{#Uy@B2W!C%T9;jlU^9bi0ctlOQvp4USs`j;stMiP z2cZIX11w8jqzJPOsTZOBVb~~ua?Ly!N63kD7gKD1^^f?%SHB9t$kGyHr}n30XU?2w zWO|N^^AF*54t@YTMt>X=qdpk(`Y6>m2NEN5)V_b2HRKv*BXf(2QbKMxSKB3-YQr5n zUfAN))MwC@9Io0BPDdC)5E%)b$LH?4@WkKZMC3eo_O7xpbpF5_aKG20&Jbz6f@tW} zlmZT$m(l2BEJgR-s};41s#Pgf_E=u~O8_cbjk;1{ND5MsoT!q6S>HT{VNlhotYmId zL*n+{>qr>PMV>e^5vgfac8c3Lt**8zQSY%diC1%qYb*T@izB8eI9c5zSI_cB{52F^ z;avCuWJx}-wRR9}4ga2go1)F0&MFkmQ1wC3k>gElsALWqkM{ zR6|E?8?|03T?62D{swt0^K@R zdOw8GM}b2#+hzR-3&5$ISv_i!ukKy?L>v^cx9S9qZkGl29B{G#uZH{E5R@&Nd6Tw3 z)mhaz2x1s=E8y=9y>7uKo5V=ZH>TN!&8kuRcSkyDW|&#Kt_|ucWYVAw^*QR+5rVI3 zwyZEf-RRm!PeY^AK+8#6220ntd_U*~$bS!tKFrD0e$c>{0sk0SXH6qYEe)17`9o9i z-Gs7iu1|~}PKxv_llQ*C*_(H8RoiIs&P@_8?%OP^O#Bs}_;3Fy&z!lx2eMxej`h=PdCV#g^R{sb2G z%#tjuvYWew>=H^6u)9NfCg{CL`MpZ(k}}y-|@$P_Ae3 zJENS4o@;&Xx}j53OZ)rl9%io?W5~U4rYYOJ$X1Wpx^tN%yI4z;DQz>5*{1>%g7E51S0I|sm>@-DgoJGE^nE(11HB~Mzb z5vpZcZA*(F;^{i)w>B$qf2Q1jFJaeA!S*0x^q$tOn?I4N8Cd(VME~V-68!c<(}$2E zsWUiMFF|_6tm62mz|q#ubwr?Po~p&oR+Y41zPCI4RgmbILetAo%|LC{BrsA2!jq6} zkRDMoO&2v4yaBMCY11MdAWqhj4a3AGFnX)?Jy6!5oCQ?^sR+JdD5XJd5FC2|$|AT0 z@I2J;X#$hPb=CDO5vW}@r~Q=MjdNi)18KV8VQ|eC;2urqfb+;Bv@YiOQuJkAywHUUfkmGnNJU_P64D!F+zPRTWdStVS3~# zY*r`B@wYK5+kJ^q6PlrOJAIFFY`7aYHMe75cpLF{r>Nh;VyHx%Q8L-EHXu< zfZrZy-6SVM526_w_wuWZx+j?N&7m7QRn;6{jhEw8)K0;L)ndaXxv)wuLRKd^CBx%W zpU2)HUUzf1ITbvEt#MwW&R(bOcsYh)802cXp7o1@$fU=-Xb6IcYN#a2aneeaTzLyu zb&sW?N01t>;gyo9V=zU=M<=Lj$+!E)cQm1D3hDA5>CzsO#Y(^#W@-35%eybJINUjn zCJJK9yc0}u{$8=SED-h06VKgYJ@pQvVCf)5&0{Fl3T$WBuu66U&M+q;XSkCn;Ix?+ zbFUmAS&T8_nW7MT8IQ$^MU?Pc8)ET-tJTI^Pc1VWIYEUKRo%RysfNLJn~+>L1j6En zFv36(Q0!K6lG!40tF3^BcLkRQr4QJusn2cpeTPklky4Uf-vN%$mMG|Pv%RLQLUtQ! zJ`mQym4M2hn#*}3CL7bMU|a_2c~c{E6sX%!*n;XX(DpYT18A&662Myq1h5??0NMcM zZi8eUVR=J?(pylng5GvMQUGla$L=Zwl3;HqMVKT=z1tZqYv>I^=m6^h+D2%Qz9jzS zt33L~Yv!R2Kq+MBp3=UcCPsbWbI1())%WDTZV`?>NvWd&g1Fp z1iUlY8hK|SSCm`H!8vD{T7hIf#-il8uN(gZ(_bW!yT#cyEs&xstmoHIbp@Bz&9~P6 z49!rni8k`ZbyAKXHLb>O$#lexI){-Z8Hdfwbhy*UY1lQ=s#G;eQM?=@U=OuO(IE6A zOHF8o#%5ui<;+d&7CV`0hI}nY&=JDt94A@4$Bo3R$c`Zv+H_a>N*tejG($B_S5UMH z&?}H!j$LLaw}B*uTV&{d;k3D^)JuI|i~8odzWoA8j zNrSPj!M4!L(#^E?7M)!%e)bf!7WBqa%Ra01vzrjxYH716iB;f39 z!>py2*(=9UwqIsGash|rWHIspiOdalGAnq89;93^;N~-m)D_mUDK;~1j>2nsDM(sRxs&1Oid}{JX z09eV~Z0Vg0!(cIRl2q{?nxV1W5XHZez6OOgM*U~WR!niT-72@#4lcX5qpfv2{tAo3 zPq7leLQSo*lU=8#nlsmn(Q{zrm>=rZSY^w*_zxg;g92^4v6;Tgc<>DOk~gU}%KeK` z(^>Z@?+?3&Nfu+|t66N4OtG5AeMIl5CJL53pSm=~$4(qETj~dZp;~{jbaz$e%|QQA zdN6fCwnq0Sa|mfUlZ9)({ys=x>Yctm0`o`EJ-u5zmUTa;wG<{=mWNp`OoJ?$YY}>Xmv2EL) zBoo_CCbn(c<|LWec1}NEowsWL?5^tSd)K>eQu~r-Jd3`ha>eyr~ym?u=0rXMAZ?67c0T;D^(Lu$UPSIR%4!q`6~G!8{l&$#o2V(&FRgT03rcK z+17PS(l6n~r^ARcd(A>U0oc4;^Jo^SF>ev7&;fg)q+c-c7C`2#1we>!Qp%r_3RNcU^~% z?TPPvoKv}3Uy`qLImVWq(4{&Nypvw6BGbBgfr3wEjjkmY<*P$|bR(5{WvjI0h|0D( z9k?(Bv~Wk+s+oSw{7ry5H)m z)v-%zuQG?%EQDTF*T?fQ`8K~*sfEXy6I>X!3 zbd8pJ`@HWEj!5H(TX53t|J1lPon`{l=rb$F1ixNLqu-$FB9OQ{z84tGiR?m-QO(WD z02ofYW4D=vJsd2W1a!Dc7@&i;+ir1}y@Z+*{ql_2Q_lgPR3gp+-CL&sQylh6`T;KV zT`ScH+{>M&W@T&EsfRa15SiMHlA9UAO-@$y!IGBJZS0?xLq0GpOV`5oSW7NPh!rt} z)lOLr2s&9aC7|IcYy{`k$Mhcl^{_X-9L%f2mAeGy4US;}1!#YP znKVbF+#feaBh1XWfuX-+nz#KGk0pJKHI`sI$0s5D8l%M-?iO+cB~k4(={dr-ilX11 z*k#neNuJ&H2X>E8^=hzSyh`H9c{NsgM(mF;i~2)+_A57cjjh{y=MBa<72Q5-$JW6v zQWupbP?y=QwSyuHlBk}cP-}uuf+~-Y*yWk3%fU*|I$TqPGPJ6z#Ja{l!#y{HPb2Yf|U>O3|qrK=Z__cGGS;N z^1I>nx@3#}Wf<)FJW~`OC*9)b@k@zF& zktMtGJiL%Z?$Q)6_qGF@u0{?Vimu+w8rf-88pT;9Amp|co65;KrXpAJ?WDrSDRC0%Xy~Jit9$=(W64FH$zt~A z;8m0%dl#3}A;r6iiC#&jGqI3T<7tWlCKm#w~7@$c%UWep8gHCkKrm3ag}=Wwho(yi3qL(n0+nr=}=dfeipck1#B z?u_cY$JH*5%CLO!45cG?7?tYt@Wi@IWW`S-%2v>Ul$Gmq?HDnm zG-LX>%`5Rm7TwG*cn)dv>H=!Kr<^_gJ9$ie$x0D7QFJl$fv75qH032W(Bq!sU-L%- zHD|byMMK97^fzk{51kt;NMMEU*DarpJQfn6Y@-8U)y%7RWWql=uND z?aQ3PfiVKV*7c!Fx5p_1K387`ECO&#KL^wJUj~Csj9m%KXo?96TsT=?*%N`Dj5tBX z!n$F5r?iMZ;8{c#s?WP($P(`F)xDQ5HH^i;%8OIGokY&eeo)c!?iOfIx;9O)>4~FO zZ>{@f6rc8QWO=ej6`p>)oGe-fhi)%$xK+a(Y0ESE8kc!%QBb9oRqd$QBWn)+|$(nUM)wp4ud)@FyayI)on@ z&h!TUqcVGh61h74{MP*BB7^q#sU36S^a+u(Lff7jPi-Av*R3k92_YiY@$<|XlnZ5W zkIw~mz{eB<;su$1H024s@<3Sr0ZYzty*7T^o8`pFCz|QRrm7l>yoNl>pGx?53e9aF zyk5Q`>jgQIxMOuHS|V6Xy5NwU3znj80LoY{)%WZ?sdpMFtYgTqkuO)T<*oye0 zoyAy(SHg}AeTj8rFo_UR_9;WZg9=ChM)O53VGl9p@aVa-u;`qWa0591{*W>N4adr! zC8#1t#W(yT7n9gw6x&ynK?W=dPE=cv?*~L%5VE*rv~8d9IyP0Eh#W|svl%Mp(ETj1 z8&H;z$fN!H%(SY|!i z<^}9ZhfE#<)rhgf)v`)*peyruW(Py$3gw8;Li-x$R=zPw$7a~OY4AFiNMp+urO2Mk z&R(R)tBV6^^4!3L<&A14Ox?on*{nnY>Nt6O#vXYA{wQ1JaH13bJx%k5@uxB^U8#d1 z3i-&^0rcBv6@|VP4jo6q3GB182aa1D>%W}R8uhyE@UM!9_AoEgicC{rbLII4$jyCE zY~S7jV1h;2!jc5|9PhH=c1QuypmBkBBBp&o@%l{T%BGl6eo3`vrZYkLArl3Rr%nHs zuF3rym6t;!b>m&;ZkbpZwaR9A`pp7Mx0VK*rDRy3_KVMDzf?PRvt1@^`EZj?YzD=( z8Rr)+H)gne(Wo5xFfZON(Jls$Rno=pV5yR(ak-b9$iERMkPHrA^bOOa+e7ERXH&Jv z8c&{A3uJkMeph3ouSNsKuiHElyA#uANYd{yQ(if)^-=d=@0Z4&yY(*ylq@9~VB`b26G$_X55-#E>(_#-$ac()PIN0-{@~#j679FVuT9q$ox%Rp2uoY# zm+(D!3(^-o_|m$%&@*$oTeKZA7&f|BF26vzi6wn5_e4*D)oBM{(kakkqHJ@E@VQ6* zmG~!=YML5cs^pe(xsQp_yrtZ11<<*BmkVWdM-Gx>m#@e)-f?(i8y7`#;k;#`49nv_ zoO%i;g5jb=%r5-Bh_W9#-8({}t>hXiM&AF&0yU05aP&-MSq)u}+tu`Yo5Wx?p{7JC zrDZ;u4=E-f)6*{QxBQ4#AhX$fJqVo`;eiiumjhY?E1=LU@V7-OZ-j<+b(5-7lA+Fs zmN<11-3Sn5k;0@s_`*?HG(F^@iRFk274r{)rr?pbdH09NG0Nq>O{%)`%L_db2&$=M zXA>3uGXl)JDy?3;RYa$!uTIi)Ms^J2=KO-!X#I+;P?vPVdYwMbBR_mQQ5ckim%l;4 znISa7|E4PZ_dH1KQw6WX68+p+3tptwhJQjP5q_nDCx8atyMRN#Ag1<9`=Ij8KyMR_ zG?paOX05)n?P8r$x>BDLW0yL9CWA}}o>LAD4?+(g)ULhJu6Q`V4z2=gi0#B)8@CYi zY>zs~cO#ojEVEn=MXUzix z2^SuHL%cLh3OlmI6o(0K0@_8ld6EP|z**;1brw9&b_-rE%NlOZ#9KMg*KP0(mFN8g z2mW-AO$ZSSG;1)AE!Ec~Yi@sG9?XZY(_f(m#*QH{IS93kAS^S6kEbU6+Rl+TRjxC{ zHV3flD6|Y%b*AAwPS>UAnOVO$p=M;+Ui&7wBy}sI@)q+qIp-F0a9S^t)wQbAMxd(f zSb+eqiPS|-818`=0BB?icEj=}af9CEu4t<1(I;H>F1y3Zr*>#&fpXck-~z>j(}Tb} zu`El*01fCYp9uYAvPWiv_Q>j5%OSsTeS_>$>zKI{KpfBTX#uKqIka`sOIxUKRXwA! zLTy2!f?Vi%t*ecmgN_3UjkKh=N7PMeH5oi&Uj2y2Biu?J zF}$P*j`5wB)qY#ga?xvu{8QXe>y`qu4I^^@6jNpiHLAPD*?=Ge&m-xrr@@GQ<}0Ma z`J>VY(Eg%y?LYR$hjY_}Af-@w>vjhDvD9T8x6m#EUuieTP!3|qRvG;`>}5NlB07J< z7vV%uXl!D>-}4ipJkV{C+`>3p6~~&B5b5nD?4>BDs1jl?pSdF@D9};!H|5Pb2TimQ zK-Tn>oYLPf7UV(O=R98;;6qyAQd@daggKngbsuzxTgdbGj|7O3TOhi9L3*v73|E6OD0s|L62A2>31+ylGderq9o;j9> zsGY-l<|33nG{W21&T$R+0hQs{pq{#>Nz? zfYM5wN66`D`6g4HL*I$@gKjNagiuBotJjLn`=1t|%WkMb%j|4K=7K!ChWg_PS&SY(3)dlbq@SPGs;(^2&UCVhN zot`Y}diI6M3Tjv3LrRgXo^exwioIJyAoWLs#W%zrU zs9<5+*Bn0fCuKB+4AXo`)@Qz6si2G_&2|DFxNrL-3wn+4vZ!QeiK!uO{!IFHWoe%e zl$1weVb2_HyG4W5jVE?APjYS6<`QlIC5=*8YE;WK(n_mPP4Ib?-aFAFiW0Ao9`vMi zJfhv%x=){QB0>ZtDhdzj{9#=#Lkk-7RbRO) zvb;wF7B5dRf_s142~B8wfyPR*^ZM(*4>Ky|E9s5ib?{?s8Snyq=4bRJNbRTLhfF>h zli4^vxxMQzJSJB^5>v>EYLr**&F`9sVAeLPKpCR_qc=Nuc@}=@aIUbdj#aA7AWXX* zmc3pG+&$up7ysToqd3zc%hfR&3iuU8yw}j-$WHM{V?Dg(A>8Ni%z7=@uWnRi67U?E zRb^I#ax>*b=~Jn;JWdT+C6SX9gf`|UaokU)`zg>GXp`(|A1cGYJ0Tx++`2w)XITFW z88W8$Z`3n+tiEFR;KFa}fmYerRIfv$bVUBKtaF3W#Zphyld)p9OdbyPnTJcky@lnWpd9tn@g(1W zz3+tF{9fOyb0%E@z?MN$sH(2t_%LYYd)3`Qf*Ir;IZCvfGr^urwi9sK{M#ZsWoVOs zXw3fpXZ1fJSL5>o@g=c({6RaU3ux9z^&7gxxL(n|qd{Xlx|e1dmPmCo`reJV98iAF zm7FPd2|qa7!&OcA>>-=`zs;{o4?Ltb^+7@P?&IR})GZ`@h@#5W4LTbX8QtSWi-Pmd zy0M*zDKco-) zt)F=~k33!u2WPQ&J^OSj-H4{__5f3K?(B-uBhy99UXnagis#O{31BW3j61iBYa}jP zVEg%z&|EH+_lL~RMuzULKA|$iV%iB)xUF>fw;!gz?WXI_RhVSxJ~aM2vwl#eKNoLb z&^r}Zo|<>J=Z11SY_SoH9~jFndw_*Y;2=VK7`E0_U>D3&l%#8&KI^8=f;2J|`4*?4 zW&TmY6Q^Mo3!o}%F3d_W(!Rc~N&)uST7Cfyt zM!fO?FbLh4^ECeba{L;a_dVe>vmOpII&=cUWrx`i!!&gib9eN%%3LKNa`mHd2Xy5+ z97yH`&rp^B%#NqsxP2eYw`NDpz~k$>LEDn)60OlUrR^MsP-mHOS}2xZxJ^s=myoLB z#_0}g!?%(uOF^_3|5VA=?hNm6!v;D_cmC=V-8K?Wo>9m5tHkCaxn-UHl4&2m-|oDN zD+X$&E~$M)?hh+O^R<6+%e*UswGSWL?RwBCBMcZ?uC%>bYQ}S3AF1TH#=htKVXE4a zOr^Zwe)JRII4;E<$0bX#l{e$O?Sk0XZ=Y-9*@mZS?%rFz+L^XRe2jJ8xfg0I zIf*Qa`RZzWh(w0VPQkbxgJg#sH6}7)Mu+T92k<5KnU9AXF+el^fpHWrxQ;vN08BXr z5-n6KcVc`+FNZ|R*IXnbaZgg5uJ)q_1X8~;mD~_~+9m?tPDJIPcXEUeB|#Gz18E+3 zw4X!dS@}aR5KiUZIakcn|BM&(7mfQZj#6YIu0xKKsoE%bngkBd@?+`R(1t~;5-*v% zna^`O<`F9N+X#Cee&LhyIIeL>Olp(jRl!N%z+MZ{gJ}}C$E-7e)5H+!8m@zv!ndq5 z{9I}lJ|&}a$T}QiF;jN{+7tEW?v*+q#RXxMkzMET$Qy3RObs|&O}4?GA?pm*0&1~A z%(8YYkpO3_@&+YEhuJu4g_{A>qz(rC%7h>PXym+JC3~OWb@@JF_JvRXjlS>>GBfjl zP=@n=j34n2Ff0n)PV)u~D4l>U{#|^=fLlNUqEM}9X+L;K0h~K^0YRqaob25ZKD><0 zzR@&Nwv-x5Q9sZ}kx?v?QFg&nv@=crB2tFuT}EVsgl)>yB$w>~2R$3(+uo>F&;`i(DMUK*cM#9xx|$#jqf zRNtoI?4o+0F}D6zu1O_Vmd-z=iG>Qvx_MZ&Y%Z!P3$J5x8{2;*^$unfV z6m8MUh)d`B(_yWUJdKn?azQ|$A)Q2ZQKu2jj7bI5np}4k60sZ!PMg2cp!GK%(*6kJ z%L#$RVV@mGBk+IwTU!4ae~v$(=og*%@D3iLvx!nIvgPEMHCd7YQI>_>jNgFZXytes zDBbpLv*0>vzaNXI??6kk>zuW3RSMOQ8{L9n;DymhQ`|G^Q{@x5_}ot=`q!;2T<)8& z$lz2KS`sRovR^8TB2HxUu_;URgqo?r(9hlAnRJb5c+ZZq__gy56a6Xw3Y@OwZ(;ve z!+4u?>Xw=#Ka50yi%;-cCz|#`75chB3*#681oLmz_NmuOMwU)3{52jGe9SJvCy3s! zS^qSn@A-l9xLc19!YkUH_dr|nh*8#=%GU2+jf;7gw3+^#$dL2dN|hIGO-pnff~F47 zezOX90Foe;6HU#TDkqUU7yqOCp-EAi3P^w;b6*M-(caun|LiwUEWkMJj*gw3csB~1@_%O>;h3l7^qL6LsV2zWJa0EbrA z9W5r;E3=l2I03IeF6J23zwn8T|6#K?PsA)?hzSqaJOj?!wh`o4>wc%clZZoMR>))+ zR|_??IjE|Xjr`yW|LrZ2U`HWr+e2UvF&X)GX#1cc@Kw4NiwY7i4eI(&0k)Vly@Vpe1UOQD8cb~ zUabOi1Yb`L2)Zs!KKdNxq7nPgu4q-G4)}T=7O&f7mSW00g8#kf0EVdaPi9bAl&i?* zns_1)DKhj;#?P#lZ?l;3fTTvs)U>+Nx$6t6jZZDw)0F$xi&<8jbvI|!p8Gz#b4Neq zcSLOdatIMDNm4F#AO1mY1qQ_y8v0$UWiN$kg;nBmH=^GHki;4Zws=>sahKUVwE2WY zj*tN>JuFD>7G`sd1yb;8)l8cfXEw<878*COBSC+FN-{LYYqWe#`XC@r+~C7YF`DXO zVB8}g(vqn=a(>e)rHp3u%mjRHKR70DSDmE5t|Y!T6x=g>$%Du?VA@7_#*{e0YNYk` zK2>I71ZQ>IH0ruDdPY3=;O!;jEeE4na(B(y+oMZter+ocTp3{&#x-`mFMQpu+(#>{ zy($uTr5nx8$56-3M-<>*tV3&PlYuuq*PEbLc(kndE%Ex%g3WqF^gmy`8{g66=tsL= z%Hm0PTr!WZ5{>ap9eS)kqUSqe(17Mon-9U3sl0zboAsSSQ+s9zFL9{d?Fq7LVlCItL{n2>N%rk?Qf@v3uTR(vuq^$? zz70`6I&2OY-M6m#C%P0YSp^rE~lS+7@IFAOgosku`OCTVkwDhz@@ON!PS{iD2T> z(yuD8X|$U$Hgsyz)@Ev$F|r-JARa}RcqNAJA-|4Bt`n%q%c#iB!wF1>T0QsL8Pyku z;C|q@*fGfag#isl@s*r~`Kq$dO-F@0%)n>Ss0-bK+Z`v$l6Wt3|Ln*B6(;Y9QqcX3 zG{xn~|8Kj??A`l4sDRtOW7_DV*CO{@zWPQ)A@xA+HEAz5%~oW&_#J#(zkvI1xYp&9 zT^YQJOSqnU^%qktCu>Fmy{W!$9>F!Kg<_GBh999=`Iu%mmtxQwn7Wj5p9-HWOdN(< zfw)xHY!E9U-?7?dJHJFwmTKHpb&J^}Yyb681W_)9qd!t-SWz?48ES2;3ThQ1pf34* zHmB?yEo2#3xGLhU@l>w;U1Ic)F!-eG4OM#!Tz(w&R0O^V;Y2)d%(`Q8VuU3%$#bru zuKp=G-L1T-_wA!75DEDXS5n>?6ck`^Tk`q`Vy3-dC=WA<6T4=%W7(#i4Nru1W316O z0|g0q!9>Vzh^%Ci+U7CJ$1sKZ7OanmXv8X}maQG-G>~LbQ`T1;?H}|E3jSYuNrkrb zvTE$1i0)B2mN)nTzKV?aVSigI1LaGsjJE)npc*|HCli>7WfBtYso{F68Ng`%O>yIBe3pjbX?4&$1Gr z%x$hFRye(!zX+S8R`rciGJg*E3pqNXVHC^NG}I2I*fB&l^Eudd&m1m+eLqAgetg!T z0&Z=-{ke3&4bxi>gex-{`a9re;L~w^1fNW(p*g!98>(rRdL{}or6UDch3+()`mi`$ zK4xz#O{-Tu$(z2rdoO-89ylsv{dG6R#K)R$SvHz;mzPiYJROuyP!8RiRJsjfHbh76 z%LVzymnt%UzwC2cDd+)9^P+lYW(8D1f(Pq0kY7Gv8@ycx^t)i? z33~dCz9{VhQ5~=}KCwQajQ9(e^e=RLHA7OJYl(S0t-TR8ZdSd9@{%99X-g)>p-vxh z;4J^VC?8!RWY(~P8Z{6Rfr0VVE4sMoj=@}spsXc<6F9OfcqgGRBtiv7JaQG$BP7~7 zIhq`2(TM@oJ@^)+F5vx`eP!frOkd?+>jurAr6;QF+;est7SF8`yO0okJKWAe1MAxYbcmr%=!_TJ}xG z-W*K?6a6*yP^GSP;;F$#J|oHG8MGH_nW8 zxdNH@tK~3|^O)=X4Eczub;v8Rn0T}tbrw1ecae{;%)qgb_q5d~ zQ#Pjdgq7E5Z+*sfpT$?%;kL!pkv&(f!djypEic0`9hY9h88)vcl)-crrA*!3dsqWA znE?;xU>0A_It3=(h)%)l*?#)dxCT8g@lHt+7_o4L7cOhbGpHy}cmn+QU+wr11;>rM z!f#-L0~aw(IX%JyZQy(HP5GEipvInpwHojbc&bvAvd%3#)6M0b1G3jbBwK+B9tG=8{H@~V&9LT*B+^15m`5e<{T{y z{*JHe59qK6l9x|+%`HO$L*w1#c<~Zrn?il!_CRZ?AGcR z0hxB#$Wp=~X=?Y3`Wp+7Ei*yO>#DWG|3wkOJo=APYsV|7cs{OGAFGKbYMv5=wW>M8 z>nPr|q`Oz{ahra7dq9 zK?<=k)j)h6V-Yz~!Kldq-AM}ZBUV4S@DzBbGLmwIWjxLRWGr(MldNiSwyd$CbcW?y zVDY31Q|j;~mfe6iVP`vnZ$s2?iw(ZCS34S+^2eT%P1o{{7;`Dle^k%7Xe^{X(h^;0 z)e|$u5BRk8*L7@nY*`sWs7p>vqBsa z*7stbIakn$ZS}?kAAtZPSIYhCiYfd8D@;DfUC_v7k@!6ouZ!4|@A2wT?6?uZnO%sF z{#=Pa_~Mwzm&d&hMt7xOh4CRknK7_u9(&lKGc}T7ZlZg#Vp9o2*f!hN?^i4uJ}M>%RK?o2+vkcnmox-={tAK!~k@tP!10yrDr-nfm7J%0pTe zbu3X%ESBYnV3fKY+bQO$sf}a@64*k8>@IVk7FxS;{B+oNnl(zxelE5GV`8d{R0q;1 zku{FwUKyRIcyiMIzRrQVUI^1nv!X++ks2J8h$LX4*1@JuIdDm{&(()ZYDsh)v*A>~ zw`3Vu4{?UKQ!6Q9z#9LOJOAU-S?8r2WjIIzhxd}u>5&HxRjO7Y&ivtxiuiKU)%)<} z9~XlbTG9A;heFL?gRB#mGK)2dh6Ox;{i#3#k+lv_mI@`iD-aZdSQ(y1Hyo+Vq*G0mZEO4k5YBlq(%ZCrX`&;-J5NXxHN_ z5UOsLD1~<^xdk2=C7~k(8?skQJ!S>2K8W(bOXQ3%f5$aWdhiSwbSk%T%?N%td~wh6 zy=?WF#oo^M{da>F=~KE@Z;(hBwk#{e@Q>?M2K0+I<^{~A6ixpGlPw+s&&9#S7q!LU zsEcwRxRP!tmM0VLv-a|^i!1zTT3I*GVqj|r?1qyHpnzlJgOqb-p1H;pEhdQuynT9Gcd1W5p1sShl0wZzF97QuO# zLQl_b(OTt2!D+Y4ygVpxV8NMKjxs(+23!wt=IRO4yJI=a8#rIPE-KT`@fqjziN@(n zV6a1V&U(uQlAH2qPMXVzKbK;+w_r>0VvpNpGJVD|E)qjfb|KWGVwk_FugG^ziQhCw z-<_=!Bxk~3A5N15UH{fzQwArwpvOu@A4S%k5%4iXNdhbJuM*J~71r)}C^ZubnUcBI zZQ{<&v@$)U<;!?}-(OosaRUjnlSEU;sJb@C2ND=-HnM-PPAVr@Xq4I^$+1dCV6?B6 z|Irw#yC*EO+j+sBw6M5Y-XtpKhKV3g{i-?xfv$r(d3 z&HQcj@gy|sqxVF#Hf?9xjEhw&5Z8_56lLZB7GF73e(t8epaDEl%n!;nI@`T?e4y9G zzcVl22e#H^H_4)?tv`C#H?vU(zxuH?s=wcs(YyjD_zK5<$YA7LOGqVZ2-fC>pOx&+ z<`=#Zs+~kkFwtJ)4CgLzcxy`XuEL7ESycGwpbglL3@l1QYO{f zGNkxW`ld={00ME{hp+_Uag8Q%ji~Q4eLp(gf%v!pw^X^lDZd}Ino2q>J@V}gP|prE zb*(NTcUycs5d^+$3>Xs|XNO+R~zFno;f2h%RpE$8J z)hijgkOn#ybHBYk-&T7E(gHrPkOXo~eE<9hPzejU7cPF!JNljwi~Y6R(fYS1Sh^wda^8P)l|HVKV#$c3W$^nOmURRgWvvo(r1CP->AYl|^buDKw zun<#r4RO0gUnt;0ViKR^&be~`jO`ZpxD9lFge2N4l^4UjDXOSN^0B{aWyjpl+p%ZR z)Syk$w|@0z^@i(TI_KGhh&MGbeXzMlg&3uA<7G{3gH(%jwauuWfcm-;y{l>zJV6AnIX_%BwdWH ze=_@)V#(O~30oi^h9k9t&D|gI(BGG&O3%6{=G$93VcPqJB(-unx~fgkxJz-4A1+e9 zE*pGd@pZiHl!V3I{{4?vfLQEjs;Gy5@aP~w5Cj?7)ZOt6YD6PEx2&Yr2DEl-+}Ee> z3fHJ<)jc_6QE3;O9diB6Fx}$sm#zHf3|=1f%p0$E2V%)I)}d%$#X%S)_9#ue+%pqb zQDR+ifa}xaKLF=nRF!5xdjB1d610y6BU)0wKgye7^xNpZoaf2HUEz(_0mGs zDMm@iGbdod_57-)WgIi3`;MVT;vbF528EXH@o8ut7?JWCQ0D=;erC+Fwi{>0-Y!>= z`FDQZf_LT80}*X<`;1s3Qr)KA27GCWrn5b!W%Zn1*}I?S&cOFgOTgpl#n?|UJyPy& z-!y$uCmgNFaND*R0MQCN{Osw*FSpD3e>~zl0mUkmUC}o2`#EV2;`(-IQ2?(U!y-~4 z=(8^Dk^%VnAO+4moVlZ|O@Z=UO-8%P1T4Dvo@u99d;|*-JSe&27S!uO_hCua%?YFu znjyDWn--~IweE5G^(VB*y0^h;vM#uCc;oj)+Dkj*CyV`SJmUbfKq3$Zx(1gBClET8 zx3}#c8ow>o4!-!wKPzUqyF~jxcg2{bBdtA92%MY!`lIH;H!1k1=@jew9i+7gr>nY) z#}6J6=&;_ijxZ`s9{VvM8g!dOl+e3ffy=JEI$iHpJ3Z>|lvFwHF}A|;atRvw2&SKv z_G4DnVD-e*D5cH9ji8-oIwvcLaClqa|2LWAJ624|k8Vv!yaM?gj40GLK7-U-^4S z4UK37w33t9E9doR9p1kgIh%WPS(6y|n%>sd+Bm=4JOGcm=KJMTekRaP+S^TUJj}TA zVk#&SAr@A(`ieCC$~T!{w>YS$*b+rqMWl*GY)89}Ce-|;vdTzchOC=b6%(t34VhJ@ zfzh-ByIa1T^lEUbpqPwVwBYsPJKVe`-gR|uL5(AFX9KdTIw5aW(;ol_*?RovbV4S! zVWVBKQyp^gceuc71jsTR#MkfPW6{ZqIhd-6#^eA7o4wfx}%dj6yb_ zYD`XnCWDG~&5vQh8Ki29*m3W~xQ0dRF-}1SWnU2%C-!Y6C+8GJ88L3W8L@~c3ZWU& zQ*-;;;mfAOdFe(h0>T>0Z;9c(5{t?U6#`jFa*)zSV}KW))sv~~^zlDT@v~0#8MdBP z`e5TA^{&YXJ@RrxBPTT*LSz^eiLp%BJiw4tg($e%n?Bk$Ey_C#}}nq@Y-eok~X z6=rOB$W=1dALgj6?PQlcl77nibK~`tCl$NX<+qe`YzR@~xw4ubn%%CJZ}4j$hLowW z@iLOq=85p(3Pm(1RT8uz5d)8*P}dUCP-xQh@>Bx-QhV6+J@n*p2TZupZMFm*=icd& z(YFKZl*;TWo;(scoe5v%J+=r%A??@Y&P#iBT=hOYT&$0Lyc@OC{2UnEQ6=R|7P8<| zSo4Lp=jHn~03XxS3p1|mLkVi;duBl^oCkmfW17yqi{}J@!-u%)iC+#~9feU^g@_fz z8eFqsd?8X}mJa$sXuOb8tCRC&^E%}~C{mZ@Nf$@ZRN?`4MLS~fC>r6dpoxP2dohtq zRB^Y~3NU?49J?CGV&N*6Vf0@4beop#mcsxZ#K)M=(Zi z3Ow$6nD_j7ExTp#+}6t z;L^I|&cVb|FCr*IkOSm58aec%5Hxo1T}DG7E~@oPI>=HK6H+EV95lWZV&_$N zP@#CMvjP6yj1{>q*;);XtiXBS`XX4=(A;0IkqP$CmSn+-FD;8hdi~S zVOW8g)AJxN3OZ;fZ!W(P8VA@%W)j=Q-M#7IF^&%!FgDrwIQ;E^j+$M_%xi+5yQb;& zg>Zaq>M0gX_X~fdk=b!y~nW0iqDq!4I_ zH8t}mlT-AKN%NRKf!5+-&|rEU$70cYEIYRm9Fd<$h7inz-|e9HC{nbyh(Z;++w16$ zP^flx*U@6$p?s|muY%6MW5Y-dh9A)kb?raag{Ri!kJoJ7gX$A2maIzl(e?yW-!qp@ z>DP))>p2}gADF$hpXz6pWtzLgGKSbLb7vA|1zmtgtgIo+pyefyH5^l7C6)*pRz#{P zr;eK=FCH-(Ri9P0wC2k;%}Y>RYHm}5>P~cOL02+6F@XK10lQ6`F!!EDpo?&aUh#HGk@pt_jpQU^Y&rFnQl^TK1MA&=4EzDM?mO?)OiaCxUxbmXHrREKHD0e z^s)D$KPXUPQxW*VTU=sg$$8VF=Tq*a-a|*5YVW_m(ih+O@wWnGcKPJTWO$?CQ+$T6 zX>yF1g6Biv`5lODG`e88#(e7pV`)mq=<>m+XGeAEi|`}<8ZT@J35e`@wv9sYcq&q) z%zU!#RiZjJ9Zn9DgSl?6fZTILz(HhDNIDi5G-F+N0;BJ{q-(2dTCY?UH!3!LNNNWl zJNHX~Vpxc)Xg&?Fl%;oW>7JVV$b=0~_LErGI&p?&RC}tTq3!kaB)~;g?hX zJ`CD19YB6>Y5rO?sM@JLDIkE8NAw2=8~Y2A)2;WiYjsXBmR~=9i$87NlA?&_#daB3 z6vGBW+DE-B9>L=7@1p{BANqcG!~DT=69Q%}cm&MH<^j!#P%mqw3{wzG46bKQC_$!+99Q9(yU25qYt z8LUs6*Vi=zz~@zydv14C&aLzPfhklhnNFJBVyLWbvKLVJii!;m8oUlCDF;vt>YWyb zBkDXJ7Vcq3%_cWdwtV{bPpA1vT`s{ajU|E}#T>v&wb4nFek)+GD#xh%*+It+uMU@P zGii{N5#)*s4+kNhL9H~}?;Rt6)&%2oNVOSIi&e|dS(+KCHIG&aDyI&o(S1(v^_SG3 z;xOemy98JfY?rkt^zO$cRg9Ur_EF@Y19)i3H9Zf&=qSOcozsGv+PeE~BP(M=&)*Hm zTAa9;1Z7rN&raz-qFhyKz$4)4)|(5Ld>S5f6)?Wj@1y zv~^gM7o<6rBWY!|r#3DZs*x||x{${Q1fWJ$gBAfb9HrnkPjXCiaTwH(-S@LH;QSz+ zPM`e4DaB|-uAaQgN9cC&6yRbDC<>4Y@nd9V^{e|Wo-m~Yp4Dou8g^7Z>2@ptV*I@P zN+ZQ98*lNm9C(G^v5qr4&FR-YD(q)8=`c+L4P8N+ZwRGh`@)swF;~~%p8623Du$I; z9%j7hre$4;-ID`IS<72F)FjT~@3wzxOC6@1Q=u*QBdab`_v|fn_pzU^KvY>mW)^#T zgM%_ihZ!A88I9vb0gKH-!+CX>ib`w^FBmJ*k#ld6rnF^`Z68aM*r&k=~4+%K8e z0>5(0#tlfE>CkJh-eP~k|?0%7P8Q)Q(r~!ig#?4o9QiX}b(B_ZiFM z0WHiv^hDph<@Bn)#lijI#+^R35?nD4XB9P|bv%$#eM|`Ftj~5+0(TJGF6$|Z2%~wg z^ArwvyDHb}wWKi^ax%fT#o-S>t5QL#kSV^(V&^CF;kL)-?_aE5uYRzGVWE~<8RW(| z^Di<$uLccA$^IcUAH{+@*`;VH-L3iORqf4roh14crH1FmWJ59}ed3dk&GPkt*Ynyh z&rHwnHN&m`N!rjA^p9$2P#;rFWB!3dz#eW4Rz z?xJ^ug=<^c9$Wz2a526Bf>{*mt_a<48jtoRz|+00DX(5a3clpEf+jDC1B2^Aycn^^urMo|RZk0F}XNy1uCjsPPXwFMu6ylHiY1d1CIt#noMJ zwp8B*oImDYn)L95b=2vrC>*3j)_~(e+v?U1}T@u-P> zsPJ-?6|F7IG1|C1ZW|UCWevIpPbWcH7_mQQQ;c_$MiL17dk+_{Fu*Oy3ttY0X&SGP zP0fH~QN+7`Y&e)iz8{xY>UbSAx?-f=+cJAb&=!OacF4L)_xn}xCYE%~88r?usIfw1l^94f4lQVrX>JS|j4SUEo;w8!-$2`+p+Ba2?^hF#;)(R;r}9J*i(nV_=u!tacKJNgAF&%=<7>rupB+VP35ZQY%{UHjywC!r@n za*`s0(VRoE(&13qe)ogGSSGrD&C)$Qe?-a|xY{$N;-a7)7Z=I|L!JItksRt%6>&ho zy!xkeVFp*H$M)EE~WT<06 z4VrKz{pg_IfkaD@mtf^|-5osm+&#W?YyD}*sK5a~B4PQ2K>>J2WBs#)j#t5v;`jCc z+Pki(D4u4oA|M$>a#BeWm7EvJaY1AWlJk-UmJG{ERI*5txB>#QOAwKqB}rQ1l5>=t z(~|D;|IWSVK78kUyia#tdQMNB>FTcPu3z;`S4n7zg4wg$t==_@fJHbz9W7~LRKY{h z_hWUIc3uq&S+3j3<_O%u!#VL4q)`eX_>dQ=Vo7&ee?mv11mcy)0x2#)SWZ4IS?1TO zeM5&C#wd2@DIS;4Y91|)-Rp24y!7%I?3@At+il!Zi0OJ#c{OXk1QlL+jBMX;w)YxJ z&DS~{6M|4{I8W$}l&iXI%CSf){lKYt3iy2%p*snqul=_XBE>3j=#s6x{Gl_LR% z;X5D7k*=(@W1snvh$sK*m%8>+DC*og)#o8HwJ&o9d7kWlMRT zc4?8+Jo0qHcBsbKPegndf9h&ZXP65n8_xWLt36cAJ(%RyX@(aFB#8BRM!RQKjyKTW zhrRRi#uFIBj3}odxb$bsY!lmZx&R|FiR;Hq-lCBRd{=;xa36{a3pa;bSey!BzzM;6 zAs|aUXHjde1DE{zbB+&zn(D<&PriT0dW!tCeHnxqZB9bNSeLV35BP~Va!^T#vBg9d zE_C5XyU(1R=eHjOlK?1!BHTw|G^G`hd|(Q`DF4A$z5cQ0kwChJbk|-a-z^wRj(w z0sJ{P^`_3Tn{#?$CFJJF+3RGd z!@x4%%y<&3(XT@~HJ;(&Eb#Mm(QLEh=d+RaVm)x_?RWF-3uZrZw@-{$R=Wn)r{5TG zCFIEXAhzNkf7K6;<=&sBf+P$^_Yc1BvCgrW4Js_uAO!aC`1~krF@Nq`nw3^eGZd)t z{W%RkeXp@Lj4kLJoElLwbc=s%~zQK^S6;D7K1_4w= z*XpD`zFsE24sCo<(_#8yZ0p;EX&)xMAup@)W9OiOfU<)CKy~b1jVUA~$CXQim67jz zwaKp200kPzMZ(l@6x_Gi>{x2c>O=LR{cYkWlfB7ApRVnzJArI%$v~#rz+(~vwtfp; zgG#L0G*$og6iEuc+xR%{Uc92iePMR<=|j zrV0^aWN6eT2#Agnp>vGFVb}1xdKN+{LSF%D=Q>st5xJq{#psN#+pPSKx zC#nhN9^B&;5uHm+&n93!ggv4YO5#c&f+hEJhr_Gq`PZp?%SKA-oB;a6=x|bV`c+9{ipgt_b&I10T ziKnW7y1V9TBwfwBBS2Y26k>^-Py%l&U6yg8G~i#0{pdr6@z)V`Kj+s5WoqDkz%lAd z)t*nk6nxkE8k`)tOxDzjh>GnPLW zE32u2X?(iJ;_-x*RXp|Tghy}g40_zpZTUF7$W^W1Y;7UsBb9=aG`Pi~;<2_ZG67h1kiW9@cWuXQVeVru- zZlA1)zzk1zk2FyJ-gJ2UU-3O=ZWSK5n#Ss*D%st&*8zzRI`}cVD{=D%gi&4Hm|EV@ zM|Yp8z9`^08PK4x zpt%E%)%ix^XdBk8@gq*a%bg%885Mtb7j@r&(%`1W|E#UEF|@tD7YzR>EPpST=#O(b zWX(oD87f8I-z1nPz||xX7!CTF=@?BX;FhLAJu~f3%avpNjI>XZ z313P%9lt*$IDTaXe1 zekX004qhk#t%@QKsV_>B-sb2(scP-Z9IF?<39Dho33{d|~mjXSl|v(eftqwUz{fRkV&8Dgv4#IqKHGwga9+8KIg67eBKG z4H6!R6XH))nN=XSDnbN@ze7+B*Pe4-)189ZLRNz3?H*B!EnnAn18j3sJ<%x;+XHa{ zhcs7-4D}%|qv`YI1vZ4c2tVB)e5IupiV@#2D;_tdw_=pGTmV^tgf`2cuXpXfwwu&` zc8Wp9U=c2Mq4Z#H@i-&ip5Q%9iu}f+(axdz+|3dZOvh{k*(T*tBI3A&7M(h`C7R%A zfFBWaKb_nxdGXdQK%@)Gr>nD`F5V52cqJee-2NJXGv?y92pJhzwr_X(wKvy!lWAy1 z!nj#n@3>phQ;F0p;)5f9j2s!g^Y^|^@LdlKp#ZNxg~wbTl`{3>@^`NX4&jrzqwY4T z{7z=UCMm}x#+dYt5egu`*7w5HTog-zpbC|PqsSR~qM$M{-WEEUmP(empBApQZK6TE z#bZW@hBd0|vs`#yo##FUe&`pid$~~{W#EF|w#TM+bt9s0W zyZpidfSgbiU}Q^snm$0u)6E{qX=tuuRwin9<_*9N%- zvc5FL@uMg57Qn`S3MlC%YQ+g%#PF!F<_(Bu^gojpO?pD!wWd%Zkxt|_U$gB=+>iac zkaG1W2KkpP>sgYjg+SV#A(9L6-9#;+^h4P^|DqBH?~Y!0zFAJ817yN^TW4ZP={+v^ zTZSIMhz41(TO?_k|BTU?v zvfA&GMyqNpL>z`XT} zeOcSK<+ROnc1c1sqK^%+flUmBNp}>;Tv)DoIg{>JhJ`KrBlZq4&g0G);yC1Qxs<%+ zdo*6A$QUM=1b(I}wG&`)U?(5tY0=8Nm5B+uOaQXQ{{7YG?3G48~ zN2#n{37Ogd>=&619)3?VU6(A*kH|k%)TYY-diakCng=s!tsf9;vjvswEtu$=b*$p~ zmQzueI#!{$)BJjvR{+r*ORSXAk7_B!0=959fg3@elhq!=#NY;5Uuc%rqKD$8w+lFo zzu1|mKC0%!`Th%jeK+Me^LLWL*I>`6D5J(b>iX>yZ%eLnR=&13s^+Yys8&l}vGF5a z`qgcQI*A*LCrqs}VC7jWjtf=r!IWw&X=t;vY&vbryJ8k9DcK~natM;Pv^}ARNP@Yq zu{atpHn^*AuU8gfQp`rSNmB6JS}5$5z^iBJuF`clea=S%tM)H2O!BGT=U*RLoSsOS zPSq)r!YE7aNYimX@S0KH)Ml3Q)z8Q5_Cskt;_WFPN*<72o>)9)Yk~o;=e1~DTTAPj zMQL-~#Ne-H67NLeiNXJ$wI)KvQ%XeCG~{s;Yu4h+)jE!z}O$ zHaJo3vn}>C87t1RtpHMROKg3~%;CL+Y38CT0a^kH2x;KehD`K&}LZsV2pPT=cKP66dK%5$DIWS>EvE% zoc`^%At@+}TOrHTJa^i{%-7YdF*1K{HEaL*saeGsv@yf9F>@Y}$G8~@cCd{J3t?cS z?}7$8wP^{}Ws1jlyZR}ZT}x2z6in0wEsWm}KVub1AkoK7YNHnBctDh&3leRan{}tB zO3+v*D*J>%_-!CJAn@J4jX8V4GS|rI4@*G=u^G~zFY1d+l45v?K$DbMezR z5rl-SJKPth=Xf2zWwYr1=yNbJ#661LeET((I9h8Z3OQl`_2Et8NcaGJ>N10F0j5V1 zX%jv*%~CSMiD?W+yM$MVs+hC#5dgCgzY)tRD>5MAq}R{lFE01SpN9yZ3;dR+;1A}P z)|VS5ZfnJq0$(z+?>umw>#M_tOXS($2qj-kQoYCG)+I<6jVu0o%(Hl{w&a+tR984j z_Qq-8SIj8F;jILP+(%)Bdn`|ro3X$}SErG%hFtEWzKD2{>Vv1DTxk3z9EJOt6$ z;=$9OtS=v7i_kyVPX0f^zZr)jU9xB)pwTw_?dU8%E1Ps{LEtH+YS^MBU)@$wlL3eS zSPLM%V26kq+SdYv`wI7f!!PM#Xo$nnPO-ORtQV1Q{~e(w75}98n|?7Pl8y$A9u<%l zl$WCFv=%6~)wz{KS+_tcajHf*rnXksu@&2dW&uUPa7`NU_6?zb-X1SI{v)`ku=`54 zHRNv}(Gc9$SYy|!+ZV*M1;yXeDkT3O5cqOZ(*yHY96sE(*oHugVY3a8!G2|I|HG|; zCnc_uzHu3}X6ly12W1;vgwawir|wnqx13v|RSzouGpoA$URULAcmhPG+#( z8G|!hAk9$08aNw3Dfh8Lvm^GfJh3b{r};Tml-nV1sVsUVWu{uaYj(4A2`mHszHIgH zi0vHQ33bt?dbwDbnxON;7t&R#4$p$SL%Bl99W$dD*Gh-Vau3Rfgh+r1%pGsAf)9J~ z31IS5@#4REbmFv9ZV!q_APzzda@qsQhYHj=u+mz5!(r7q#H(fg&ED>3ehq85BI0S$ zF`yWU1pD|rsGA9F$%2&q!}(5wI?)q1BJXB|Km}!G{5SxH9&ivJXDLKey%a0yK4zb$_Jn+Xr*5tzN#CT)Yz`*VjHqnL zSou3l7BC-@u_M#x-E_!U>9lU)>iP+v=?vec@!ZzI!GZ5@16Q`gq~gS>+=G3!ilL>l ze9Bp^;iLBjpGE2)b-s@TM}u^YDsD70ch+QJCxVR^GrK=+dh{|hslBJ&@Zr}-1?Sy! zSI`}a_xlm5rl%Om>irJ-nwzN8TzllyNz&GELV@PtfEKK~>GH7YhgB!(mKT1y=;>bZ zJ17ynluj2tUTrVfxIs5sQMo^gW&f8n!VTtFTo=OZydLCi>HOzu4mLS}j>^!LG$k zeHL(M4`*c-Hjv)h`bKrnN-a38Iv*tu3F$dXXzY$GUi5oaA`pHZHTnA+`b}y0%$Eea zeruBUPEN*Qqo|7Ul3zqq1sDkLWro>xxBgib?1G7cg5o=(yAgUpSaMSy7x*~6ucPnc zgkM@3D3H25v6hur<<0Fq0cR0IIpy{9ZzRs>6RLWobjZd zht#ML6YP?|^5|%}(c}DtdjRCwW!2m%bK;hv$ss!JilcAhNqGUE>o2Zqw6!tqeAE%k z)<;vUXFf7Dr4GBHMP<@w*VJ&H9&=;`e4d>x#(oC}=_=yf&Z~nSWu^t-J3m1(z!@`= zj)AvQdQa|jz0x`F!hZDn>caOg2igAchd?<;M{ev)d46+o6Hxb+ger>dv}VvwLHqGY zG$BpoBmzNuvNO}8#dH~$ga-VW8U4icUGk3-^u`v+t@3oR0dc#gnFDH}%hKYA?;xBfVir+Ov zi8ifhc64^=iBbgOUi?CqCydPmO78mZ`unW6Q%5M~GD!L*lEKbedo{Eu;yU?L`>IX& zu=HoEqD^^Po~X^HbGTW9BgY3a=G7K_X4Z#sYfN($5Dq958nEj>$3hj89I(wjQ-EFW zM~jbW^p1pqWKPKfcy|Jhk!CDdzQ(QM+~%8itKBYn)z(_RA&XbnC5u$!`bLXo!4%5US61yDOB(S zDRb%=?9et$h|;VgZZ~jk>T-p;u~`{_0e>5|zh0A(YR>d-48uksg{_ueZ$t&0KyE^O zq+*BHmq)smdQRx5H+7zd8f@zMNo6tWgYEwY#g|T2edGU{jm?!)(m<8ohZ<`-(M32S z^tU{DY_?u{%pUV^myp3Cs5wFuK4=|eLbGzBvV0CWXZP|&Q}vI`q&uGiFAa3JQt+ z*xEMW>Z{&UTM644ZpW-!Zsq0~7HNf%TNWD??w`rUaUxR*%dpn(pjpMFVR^Gf@G8m_ z!cX-{K<|^4$J40>0~wQO=r2&zaUr=}kteq>li44Bn>~#iM69ejtt8fhBaqPNw76K^ zKTZ;cRvAVsQK%_p*G}pmxUCQ88U3rNgfgr3WC<_OV;bLSCQ?SJw#ptq{;oGliXh?E zZ21rSKJ{$ODFBn&_W!ZpF8|nXZDnOioRAQyn`y||RZt4LSzXbyf-J66UD@BLt20k4 z#pPdy5NpEoj5cnyUmL94=_{(1$bM_HEDNo-3`_;cups$AAt6duvvgJ|Whd{8P!5xCT6I_D3yA}x+JU}R%!rk2o5FmJPhd|-(Qb^4s zzwZA2Gu<=&eZ3}YK~+(=Ufp-zyXWk)_r3{JR+K`2N%Rr{0Rde`T3i(Y;i)L_Q;m!S z{DqgZiV%2s?jkCqjtu5!{q%k~eR zz7rGYQkNvuSGLSjI6R6O|D7w7@;xMX-K)dEOXP_6Ds3xmU5K}-Nk-jY{{;gwMG%%~ z;~VaPa&mcBR}#_3*Glq}!{Q@Msd4RCPp=threjb3juK$CR)D>d?!X$)Uv$%Y|Ig64 z`5NR;l~~P*Hc`UTtvySF1uC^x(=XOH6-6NQ>kN97GizADNby5ig;t624R*SD^^z+U ztHtBp-2PSI9YDlXM2|VHPFBcCBp^_#`+UbM_b8DU<1vOj z_;r$E?Y`4YqUQpqdk`pTTL){rMUX6Z)Jwz!*-mss%sMdTVUa*ibU}b~Vo5WbUdvu@ z85JV+2G<5Eb=LaXTE;*s{1h=$wIxfXsM@t2*7Fnw?`Wpxm1~kc*i^R&y6n)8r&%F$ z^Cb5AToS21YDV8@<4ce^xTs349yni{WH#5oQViPH45yZy1o9h0Q`!L>6 zCO>JH#y|M**!F}Hmr3VIf{#=AGEX05M)72;qd~geCpG({tW%Bai|`_QXYG&Z97K!N z$vM5W=4X8_&(OK8Igp%8XJXJdX#!g0V!`?RrN~>h~?I zqY!pj@}ta3aoBcK7T{5K{V+GlO$lYm)ZSa-L08Fbl~wes;vKk3tzOovEr%D**W+IF z1`(Zt7nECZFCB|M$Q@1=eo-x@n6lgZuKn@^<;M+;)>=4l%W@M@w-I|WdXBL==Hdm=R90e_3W%bZed=|k}UeN*y0w|czxdRodZSlW-}G< zTC<|3Qj&A04?+3((5*eW<`v|0 zPN0~HgY828`jTRObhRdQ7w^xNJAHAYJMCf8h zFA05U=O?o9_Qkiy(Qg$j4%KCwSKm9r;q;d{V?P+OQ}k*Ok@9XTsvjCI%ljutz=B<= z=KximE%2kWfK-ybY|!4{x~HBHb*jP%X*u8cIhhuNOlVlZTpG%5i9dYdsx==t3eKok z$y~m^K#a)3EeVh{S$k_sqhVuVO`LIB>~31`pQ@XGKh#szzAlFZ3N;V+awx_eu6U3_ z6?V95RUZmt_&Oli#`vD@tK8Nh7Oryo?5vhLJziB+)pH@u^zAc`LW6^`%i3BFSzK3I zuA4D#W5ZuZ5nsYnZ!*S4C!&bCdHnb33X~wgO@oezR~$#G?cNjk(qcxr$x~$6vy5Sd zJYwR=q@1z)NJ{BgCTHvB{7N@1szWL4i~V`ALFBs*gBS0KYnliYE-b8l;Tva9KEl}O z-n|P$+7RIN7EJy|FL7?S)a(|q%W3U+I7F&ix3dM8uQRie76TuGP06gyRd&j%e8%wL9# ze%PkF^Q7$LWj-K}mw1??<8V8@zO}xs;a0a7-_|#Kn!5|G*WvS(W-H{21DcYCd9n|t zNUa)Sx*mt86JXLz?`TebP@Y_>2Ab~!VR`S;YJnZU$j9`;94YPbJg%FiNe)9_3Z<373?5+dzx<^HcPQ(W*v}OD1oF+W7VT)r!bRosO8f>QIezp8!SPpS0+^ zs?E|*)(-Qk_x`Xd<01Zgh@5?sM|SO2u87~JaQ7+XnD13Ze2`Ht(r$xl^3_`P2W&w^ za#Y8BPk7_)vQ!sH9&1)>&o%Gzb<>iTq`nI|Xmt2~bcQgf*E03wLAw_^<5oF-5g0}S zJJR72Ygk??u_)3kpg6R*pVRcGTROx_f*E@r&6U*U0LsVIG7r};2qqW}FLV{S` z)G_A`J?aEqD~iBTl~Y zEPwJX=ahFh82wD|^p$-QcRiw2_eB`(WnqM|kuU_z$r~QcN;V6@`-|HodiG1(Q)>D} z{)mE0=6AbyY431w$c|%_jc7vCIwIPWtCm_uar0)p!oLI339IrFEXt zOBjh2B@Wk{*`xum=@i_eIjY*BD7NT){fL&>El=^+7pvb1=pgGi*}DbK$%HkDS5XER z?Q6~ze^66XmB}lYJ-fD$0x{AOgEW!g=QPIV=nyCvoj|aE92^SK(JJ2N&ATzrV zqOX&L|Al*V8&aB6H>fIaKv{Y=Ed0cSZRQj1k2r2UGXDbw2cq*osF2Xt_rZVvW9^li zbD7iQ+sGE#C%cfCs^dq@QAuHLyV|?c7KtWAedx{46?xj zQSBvD{yjyhnw?1Hm1RNnhYUV9dNca(S@OYbAK2c#LzI@0p#eSFzTJJJTHe|J7Jhs- zrLBF5_iyv5z=mzjVk2-x@<*Q@8wUIc!9%gt3IQHuWE4ZzpHk&g;kaE`q`nsU%xPV9 zlW2%mZ}+f)f3NFA_#oiA{XP%y#jGolxGD*SL4PXR%LP9?Tf znoS`2uXH4485!9w*3M0@{*837b{iJk!+GM%?w)T=60uG9O#NFKF^2W_h<_5xbWeV5 z87T{yY}$r^1inX8kkT2n@{o~{O_qO*uMmRRA2?QjjfmN5!xYLj=PLC-oKz|aQ(St6gTYr9ps_Fg^5^St(0Av1bD z%^YurZF=WmUco_hURkzZfloxlmGrA$&9h2@7&xuLU#s2Q6L3<$8)5jJSoa?!E;RP^ zJa)Bs8jx%%SJ{p4yv5zg79^64KLess_UUJ3jF-h9A6ym#k|@dU;wj;i1MV8K9_M{z zzVzr03@KJ-kk_5G-e zKzOHdfw!3X#7s7kVjpVsokd>MD?(ubM z4W=O2BM3O_x?)ek@U6om~}E zFVf?coBQFhLg9Rh>pxeWa2@oVOu+NU4!cFE{lfQr1tNAg*w)XUJ{%mJ?%zrw&%ULl z4FQkrUTe?0LjAh_P>3~w;6eyjM+M5iYOt)Vtb8vn80CghALoEFcW0moEH~{+-ur#! zP1JmL2nwa}y3*(M=e7^mt(++w_CrBVCO1a?uXO6XV*k(#e@){^2I4vFZ@~^6{b{&p zXd>T4i;}QTgEdO7A>-10ojuUie7!s{$TbPQ6qiqX{-aMU)Vca#Sv0IfgOt~sR#3&co7jwOQM^v+hYi?eW|8jYBZtmKre=p&z9m_gK*o z?fx#tH!J&bRgzR3jqrQI)SvtTDnUJbT5D4R>(jNnmMn}@1fTh#dlWuI$(x0Mcq-Oi z?YGg;`$JDOFYR0`MzY!3yycA^zuw8gtj`u(zf`rQTLBmSe!;x?X zli~6h1qv|uDFeQ!#}Uogey}+mFi_FrC@F*QWq^)CcSz@5EAM^cenpQSE$xXSBOeH2;N`@3?<^3j-)|O{HTH)1@?qF^K;>%Ex&lD zx^LuUW#ecIZFBSTRyQ~ELAp|#3_kyBg6QNB&2ML-F$@!T{knK_g91`)hSRaUF8`d0T( z=GLr;Z!qjn15^8$BAkVl zHTI9BLZjbp^y=k81B(4*(9fUZ1>u?i#gmF|5mef-)RH)~2>}^(-g({K4YDk@`6wA` zRGf3rSnQ0U&4XcYD_S9S_v zx?<(m`a8&~Zq}=ZsV}q5b}j9P!>JA158jvq30HYW(0mfuUZn`Xnozo|*UC$E)Z!6v z*~0k(#r;a8|4hY-bYMu7SH7!uMu|#9aD;!QmA$j|LGy)rnQE}x-t<;0_A0I-d`|#E zK(CsMd|+TZxI0yXUSDC*mg3G*pC=tlsfbqrq(?5|5#)CoD_pjV(vE?!=g+Sv-Zwtk zQ6}K>hC!v0*}N#}*DZGL|PuGyRW(jZXX8=ZQ48%J=F z^@lg?7Q^}WZAct8%U=Y2E_Vlwjg37^9E5@R4gO&i(bFS&hSV+vL~why2(>Sow1EJU zqu1n}kkPiBtC7C7Gj+>UZqSm?!p_b0URV=syHp?bEjrz^T#`wr)^>Oxp#*Jy@OtJN z3A{Byw(MQQEzGPRa=4n9x9iI1uh$&O?Q_NUmAl0$IaN&V%-*`ZY=?or_i7HPGyM?< zV&^8$J&*r98BS^Vqv~4Q!&?E|mL4lCx!Py1uQgG<_h*B!MtYbXqL_5+(+-ympJn=7 z&1l)5UuylluKG@=q6fcn=zw>=IO+&ZOvERDIC_=}dx=ge-}wb`hu~G${VgUkI%#A< z0WGPRC=Y1$OZ)POehcCC^6hteHL!ifJvpsX#?W{)Fo4Bv|5q?7{_y1tG-`&BjBKQG z^(~LjAqjgstSjHs#dx9qV6sRpls>a_MMAxYde5=qwckTf(p+VR}*0nv?B-E6Yar1RHHJ~GV>*>@Y0GJ`+KBaK|{x}eWhwaW}M?EC;TK&NaIm?x|v zfkm&;5nLb1LN{`)S*8&W28T%IP*79%WTO3eYbb;(AyTGcaid!@MO5o?`qL?}qMmyu zTCsqgZtxEN^#t1J`Yr_mx(N=8r>R-*%Nx2kcdtJ)UW{g%F4vcuDX)0?J5P;Pqg+QJ zaU>mq$8#GCqL?h7B^vD60utUFN=N-rks;`HyY!@Wse?Q``xrWIHk5jcj_|_&K0zj4 zc%v&AH8(#$d(09IMtpq8@9F9JyI#QtDKuoK0e-UukxwCz`FwYSzI!C>7!Z}pb<$sn zjR3ptQuU2?+^&$XYF&a%mo4lL4n;AwG_h?>X&M-<<@QgOY6sTa&13OWblEOZ3p1OI zX0#36n7{tyC3KLd1mV89T)3&VTu$qW0IeT9+{;hba4@^LSXwPJRheP1vwJ}9k3dK4 z?u(v$wGJ_|d26>v_@^8AkY{tFH?(4*s*RO1efOt zT{q`P#8Egpq+KH;D{I_4!;U_1=j%6D>4bB2xC9-nFkj~>pDxp7_1@>PUkcwCNMJYz zZRwX>o}Heqjpte3uLO#9OHbsFRXC7S_C}fXMW^#d_Y-kDEU!1LfVOfvv((X%*K>Zq z_rJaOuwQI6a_R^`0A={q3v}F72OHMguFhEuLXVCxe;i}424OsW>kfUO+N}t*jPmE} z>F$1p5G84Htnr06Ji8LOhwta2K=2#>&>T0Rx#0xfZXv>f$cpw%(cqW9oKTw(wEJ1p zHarH6YVTpCq3d1L#l>;ML>^2T4ZM!=};cj-HbKUYFyBTu=01OMb-ko4w9xg!gMs_)cSsfmpwx^$=Bci^ZbZFp! zT%KzjEeD05uMRJ_4Nq77+r2q>dtK?a;2swrUn3w?nk=TqxMV@@drVei4(e{bK_%dD z4DfF$bIF)^Ow+V8Ea2q^3+^alPLA2>LZkP$m-|S#YxYaOs+ID>@n)M$h_^;Fdix4U zrb>hhSZuD0brng32YSvdP*CrGeF8!28SnLL3%OmkhBoi!CdBXEzK*0DR$F%{36XW> zp>CZo0AcAj41HLiPk>*$!3{+DY8$-mot>-B=iT;p#`9`A>ql7He$IzN$cPDr()@0( zCJJTPaeI#U6;h|m8l9j>-1du^ZY3J9gYHnjp%?Jmuk{Cf+ZBY>y@kivB*G8eZW$F0 zjw*YFv8!}1TW8Ck33^}T1D}Pl$(_u_7e#!Nih8;AJFCNTGM7*)n#9QT`m1dpc%rHJ zK@aPG#Xl672CMZX0ZoeM9+mGp9kW5Rcz3S?8npI3Xh(x?fHPJ)yl)O)=SV*nRhBxL3pAkQk10FhX7$ikYFIuRLMdai(DU^~ny zVC_SR#Xn#2dZ7e4hr%BllKbsl6F+Q4E@KA+?%h#;Ki(lV9x95{@Zu+*Ejfs2Bqe!l zu>s&K#C5k_3;-9$rP8QBCScM{pqU5zGQ52Fy!WqkR z+)ULXxMEEtu9 zC8YXaQO`9P`imF<4M}AK&}mxe_7w+z(QUyJdSK+)JA@6 zYr4$(MWr8`A!fPPqJJp^?f=h1c-m6SB~;1jOVwDEdRdVLd8W*{QMjJ0NdP5R>cbzG z?+izSa_KF=Lgn&nqIyb^Cgt8&BB&MrtaKPBPALeB*JvhKdF8;Z~e>xqbGF%%-= zwEi_t9dWTiSn)>|Odr32ghfm&H)`OZnx%@D!s*bzT1a=_PRwnWZ&kAi%t4Zf^Bfh~hK-!;_yq zJv$A3Jv}N@9YiN6C`k8Oe245aw@0UDd>wZ${qYzkHa0Yyd^f^H+N>so3smty*3;$P zmk0c%DdcK5bS<+?8Y~d#gw(A~@9^q}5)L4}Xa)DyTr=h}FGz`-06775LprF9Lxa2CdIdBs8_2dDH74&+HZg;v&%=210@N{xgJ(`qP{%508Pz;e>HM&Xu zsfv4*?tl?5VImggRnc8DhDNjh``E(Nu*Ejt5JaZ7YW4XBID)?6UWj5zT~lD=wdcb% z6!YQ!3b#a~EZ^_eJra%lNp1(*pf8_Kr^m|KAef2q#t8fH@bLP@^H=!f6)c)1Q+gfX zhXMPcS*Lvf?=-vZV!aywjGw|;!wZy43f<_LAy6XY$B>!=C6!!hqgOZ%Y7GX0BN;-7 zAM)rQNQ7LK4KiC(p;!Ti{+h*T zr`oJkzlO-e!vg_VVigFoY$9`d-a})R$=B%U%|s^Mq|+UBFq7`czBc=TAPGf=H8@(c zPA5vEL?UPGTU=aR$vqMx;_B8`Uq}?O3NE6su<+Ao&uS(I%b?5u;F&PiYR89BL}QC$aC`yo2_!$q^vEaa2P!9&lBiwm=f z{NcqGj~GHj3%|GwP9H7+r1%QD(4Yqr?>2CwVQ|s0ZyosGC$VqoZjPk)@!#L3mYN(m zkuUyHfdCC)wn}#h&E8y>st_A~OP-%I8#CY_so4`P98Gm#vl_sq*C>~5gQ4>r?^O(? z-ztE;$%8|j9`3vV?8Dut<-PV(8W-^kF=xJ7Vj{}UZ-WjcU{O7G?DXozqL#DDLU7;a zzYCqE1G{VBtCM}X z+slKmVPOVTiT5Sg-Z26|!2x3pUP=;qo3Qk%vNwMvRWq<{Ij zcS!zCp=&bL8$=X0=2rik3ATCpDv}op5{xNuY03 zn2v>hL|(Nm?bnYPEJw{sZLnY6*pL7^0-%x>s?+ZDc+t4ujOFa%Qt;{XQy63jaIr+o=26}lRL?p89YWXgIK(^Zn`BO`W`ZaW zN`kD}2@}h|yyst4OQk`P7RcF`O;Q1dOP-IoTf|S1Y?kF;)T&cvm4UFbh)mDdWRfkuQhTM%a33?Rp~#uVJuk zjgpOq!_&srZ!PjpDZyAj&PO{Ym4MdM1h!>J^u157Ep5+lK1YFqOlngc8yj21*qHKV zCITR+i;Ii%NU-rbpA&>)O7WJ0q@2VvymiX7YeFj8Vc}CHnvYHHnz#i@(7~zfA={=p zDn*R%jaG-zGX#KC`qACpow<1ZaR&IlOzRJv)-z=Q)51So-(qz(+WI@28sNs(Z(yB_ zH%?YyF1f^ue&=UjqoVSzQvC|`I0Ign>EPhGQO)!+1id4aF$Pk((>p#Q2^BQ^#O$0K z_hkWBzH~7NPY4DIH6`1)?G3;XsF&&`xRZ(k>29RXf0#7BJ0#}QMGEBn!e6HatQ3OY z(1@uuf|)`+@K0NO}tar#BjqB{;NMY=0@Y z8@`7$yX`qcd)@LC;9tlbTJ4o-&q^A-&hQ=ArM=e(c&*V$#rWPIE%5HIfC7M2IM-yN z%N(hJJi%u0?&5GNV!6%ROm|ep0BG49Hiyh^FG*|dm+0l1T3Yy}avmOgUP4Z9M$`_& zPi_m~Wg0dQdC5rfQDQ-F)oN3eMGku)wD05+8LNQvP9$fm(aflJYo#FNJMLbi_Py@F zM9@0#HU>J1K45`-4qP6^@!Erc9*nj|($5cA`8-vuz1TN*eSQ7A!NKt5 zYewk~|9b*1+oT+^S1}YU8|6c3hi0O6)=%y{c8tsYFD`$_2vaDOY?N`Yn4WLP?l0Ey z%cYwQCbHX1+k)>Zk(HE`?k_c%bg{5mKLZ|*>pO%5`!llG1Vrw zuj3nVK;$5;(UUL>bx$6MVmjFDmV0H00`P<+vs+-3*e(!K$PJOk18joHpUkVIlc_{; zMS@ZOBeXvc_qVUFp6s0lvihvQb7AaR?r<>N^yiOp*cvVXb@*!>K;@fVce?Iw&YC=q z$j-J#3%oCOqcLOzLLwJ0mab4e;rCba%deSqwmF&@0w_Wk@PW&8o?0L!sE zL_Uw*pMxwOMzhC`5w`(uH>)zN7oXAPsv2yrC|Ox&!or#qZ{1mT8@3W!Ic;a(b2%(O zYCqbwme?!)w`G4X(p!(mRqQMzr0uN9OHS^6?%8eStcjFhIMXRRgGuwsjXky{aTE~$ zHNmpCm*kmyHcP*)>bN-l?_ucSuP-EX#@1CEyT+!=^!xaE8%IR6EDrazU3bUlJ}p$d zz&L($@dV*!@ocQ{B*#V-sO`dK24WUDe)411bwB%Pm5V3YX$Chu@h&O7pgR`y9#KS` zDGMHl2+FgA5nsQaz^WIA^z#7|sz#ZXj2h0&@x|Z9mmVQam#c?!1Q{hZkpQ%#<=7ok zsBW!J&)JDi%y*C&heDy3>SRyEZO;h&0&+|wG553;P_pzHnSx5#6W$OB3!s|nZI(ii zUWqo6sWsUQe3zjaOndjYF6OH5j7MXv7FirHP}k`w=;#npllimBB3n>xmf*>pM$I&r-el0Rh49 z6WxT%Rv!y~w->$Ld}DvHH?=G{)3fT;bM+dyRAaCw$-jLDXgax2k&zu;kpVx1LQgxV@PXC%et`@MOtL`gjo|h!TW$G&yY;# zqO*DU^x^@C;N*(j_0m~5Y|)h7!*01Xb~u%r&+X7TC0KcSK;~p@f2Nla z;dz#>XyJ&8j{5eZ^O-8Sz#9%mM!BZ9-=D@mkx;4Yt8R{9%;FI}O*}U7=_L0zwVo2(Y<%eKeIf9K`p!B}+PjKG=^4!<2$OY0gQqg44<5jxQizB+| z5j7|yb=Pu{0NLNBUTF1dFa8x@M8h%Z*|)k!1ML}0h)fR+e3%^BVHCiBHYFXbVZ$#b6VaDNJZ_x(>} zUBL+Z%Qc~p>GBN_IXcpZGWTK}>$P{QwlZBLK#IFQUKLkN5eHa^>hG8Y$IJ!>2CY}i zZ+2%e>x=B54MprMkwc`R;M0ISlNoRtf)b5VvWY#(e~n*Su$tagtTUS^)?qy*;B=<4 zTc|Tx05fS12oaI=e(%Te%F5&D4O*BKSLOdVcDzx`OPqoj@8O7}o= zgg^MjA7I{Ji~r>6B=mv=;wc#%dbTrZrCkp?8zuqxk0f4~ z*PWg9>Dbjj7o9BMVQTTYm-VCc?xz>nlJb9mxBDgE9tgCjb3-2PVcK;u?0b_%IBEro z)XdD$R)CJwv>j+tPmP|Kz9xp3%RMErFU&<6-959Q=(M+8dd_vT*df(Tcsb zt?gnV6rH>?wasTN`v%qZa55~>@UW|Lb(LnJP`if4;e1XIdFD)Fc=_Z9t10Bg(9 zaJ2X&voaAM8yk9I)|A{LuVTYds#6u0FFAAkQoBh9}c1OVs! zYLCMbHKp_t<6-c!k^ev7-vLrT@jp@cbAA-Lbbv_&OH`{f#Y81qlOm|5%EO>~PgJ^O zO4b;!O9p6MG)g#infpqxx(Lk@TgVdiLB?+tQYD>bUxsIAYLuuHsbB6ZA{%|lrrUPq z1MD8s3UZvfN{@$Puj29$WNu*&lEr0FwACZ&zls~P)$h9;qYE{{e6G@6yDe{mR?(nJh7Y2hh@A0ea%* zQDKJ)#~`fNzfS0b96!42B2!aQ{a(!*(U@6jHA-(2#pa^dE=B`bU>8>c?~&I^_Rioc z-i4E0#!~&O9lb{HmbNfoQ0vd$sMLMJ z=3ziyfNoL5?8n!$E@&pY~n(Dqs^ywr=l?wkV_ipOO6v5G*y`11ON|we7J8s zw%{^LiRG6`*j=${{uCS=6Qf_#-e;6ow2St~QJ)+iXBxD5`@)x=`aNz$@V@kpf0<}|PC?9A3-JJ+??v{DH) z^MDWyh{i&w-)^cBPbxTLMC7hQ^KM2hh0oA!`8C-4EOuFOAm2XV!4cNh*3K`0UxmAd zQP-g}pOObCz_6 z1(}>zwSx(|5(&4MaW~J(GV>iI5%uyV!NQv&02de+mI#(|WUf;|30kd@W)~9&f)rhO;xd`Aj~m zi=S4CrkcE?Ajw-`6_`9SVs3tTl?Pg!<|HO64i2JxL6zH~Q+NDs4h4M(1kFjdMlv=;tm%oOLXt`nFD}?=o#gC@ ziP_yrZZSzR?bG>!f?WRu%cBZIuK})-^}0pR%g_%E;3dvxIs9F9CubpkpBb)B|7o$nHHGty%!4Fwszf8qLIAFg^gP^F;IL z&7mXZ2SdG4q++hF9FJ@7yHY{5?VPjuXo?k^KeVHci&4?e$bO`{#O9rloQv@wiIxv= zS8hTh=Uzek6zqQuJIxPX?9I%zI0(16A7#P$kDl%*MY6K8erMJv`d0zV&WE>6m~j}6 z8If4&I>$C$t{nw1rJok6tQ8_fL`1G{ZmNu+lDHC`qoXlDeth^*PZEbS9o+*?v$|`j z>#IHS2Oo-Ac%h-rte-nXp`(xv9UsS*>NaEmmXk-Hc7HsuEvVLdD$WV|_7P$NHo#W? zPv1V;Ei@a-I=?gsZUxTRYN3qp#A$2!G1+PV(%4GTneWA=vnf)nq@W-1J0=2nKr zuHxt73AUg*b>8SpEgj~^uhnC?4J-hD8{zn0r845^C2-#-#iN)!xx|x;A#FzeYJ$Ji zU)m<7-16Z}46jSO+2NvB>qJL~e@h;Tadci^B&$tdoUX};72r~As1XPWwsD39D+4{t z_37Ep(2YA8knHn-PB$b9*4%!}?0%^B>8moyiTeM^8$zo$eJezzO-mE@&H7 zZ~*d(i;kG*kA6ynZJDr|ncPC1^;Gulo?xMJ(Mtf%-rSw-X!JPPj^|4I!=ad8if7jU zbc%^fDpnQ`@wod`anSOnKl7=z8X8}mvoS}ARqTSV%2iT}FS+gJt z7!i#b;Z9Ww7r~Bh(J)HEN9n74z#cVg-fefb#EL?kIsQ?9D^7a=_?t)Lx=-x?+*omn zLoAA1qnO4cA}UHbV`5A~8jjV4n7~d$0r__?0KI-nwnW4$0oY?`!%1sS z`UKeyL7)!<{C@GmAb*_(dj((L)@M1mqC5=$6_X_h*hwZE;0wnRTAKZ`x9Bn0Rq-^C$0zSQ4UIz{diZT-GZ^uaP*#z z0YH(X-ywPXtd}2B;0ktR3{D4nDt+~`+_h*na0B5ofA`Zf$qw5J$^Xi9t9=$O0 zt+N;_FB85dVOd==O4-^n3i`Ck1j~N3oNlEK&B-3>{dVH8SwD2)V7&;2%>!+xLMmqg zP_=d^%lg)+<K9 zk<~u2&HXJ6HOmO}(D}vK7Ck<8wz_1)S`Wgq(4mSz`Z0 zg`EZ{%$`74UZSHzC*H+3c|I@#qR__gtZt1cm+NE4-I$HK6$X+1o=6fI!GK zhZwVg<<4Y6G1;QYVm_Q^bvnIO){yawkmA1+0z9zr$wvW-t`i^=jHimHY8_UhV^`k> zoNI0-=CG`-t^%D=Ug>BJU}wqT0bI`A+pJI?k4r{ORW+b@0wPzsaA)b%1@;30eUoa1$g`0&7`I$& zLh-fB^>2~;G>Z&OIcV)<1FPJBge_@;cVut6)S#RH*$cBdgFEGMetH6^ zb?d*g#9-B_+zzUlAD#e4On{Q40<0fOe6AEhIH~+TfY}rdnYsX=-C*LwFNO*oxEq;u zRLDmLjqzF;D5II5$8zUH!Ape49iQ-m-f%o7*<1Gmg1fQMQo}1XuuYJFfB?d8OAe%x zb^xx(Uw<`96ZQx}-5SZ{)Cn^4e^vAGF*yA?;n|LNmfs)bW148aTo^AL1nlMfqKNrJ zjy6YgoHu0UZ(Ql0y=b#=6TSo!`w5Q-EU?AIu=gpwB_}6`T^>XL4ts#dg93g8She%U zfYZ)6^_%;He&8uDy*zLx?Ck`6Evb*G=v;Et;10Iuu-E~D{QSA_DBErffa|PRzOUo9 zzVwPsNg2rPhv?Lemd-tzo!9n~*{ui`-)k-)6&iMs)pR6_sj9vL94~CT6(38$k;LR8 zKsL}U*V|ZnqHXxm;`sD*;L@8$j`0GI%ajh-H+Jr|$J84|*aIlmrPl0?B9;Ek79%MV zIU)I5)kcn$ooNe!c|wd)OY^q_DfRoTeO}s$%=$^fAfZRi@8Rx7y~04>aJop1HeWGa z7T8QNk*|>BvNiHgD#VqD$hN#WyhUsU_LR^#M7(D5)ndV934*oW(8TA-+(4p%%{czB+KhAAZESKfUekiUI1ke=HgxqJ9JXF7qSt$GRkKR9Q`79+_n8OiAVH5Ma7 zAyRBsr|JeEKdZoby;{1@!2Xr7HVYQ_qh&GCt}iLKieD}ErtMsh<_66Pef0e%-S*M_ zDu~9xOe0P}TRgE(5M2Gf!F#6t%eu9w1|Ha!^hgJ1% zTZ14WAgMHnG!oJcf}|)ZAl=>F8zrPcxhec`?z5PSTzm!U8g_`wW zzs(ytT*bGr;*ykV*3XK(LGT5-jF`B1*$%l4mkUqk(<5zE3bFo=PJZ5Vjdkx+ugX`Q zR*(8Ht*ZRFqEWPpp)cHC>uyu*$6|?AzUTaq_o>lUAz(a*c23EVVPMCb}K#D<6d=fm7}9;PbE>HUoB^TmWiC+Alw|B9@5r(a3^=Z4ElzZ zsRD&U2S|OeL?>c2|7IeZjRJ=OfR(ch&R@3F2`1^kx~TPPsKBKGul)B0*6H}7qgw}y z?JFxQeGXu&ftRo8P<&h8I93Wsf^&%_74jq~9{;la6~ksv-Ve*FCrM6tu~aU?#`c!H z#%6t^%)oJbYK-Pk>Lrz5zJjbQb5{4<m@{VN1U@M~eaWH~u(+v<4;m8fVSQSa(& z3cq3w8tg|>O}Y*9l2-cVmEO9x6(`pNHTOBH>CG5>Epe=y=#**;_S67$+`N_)K8V))6yfaQle6Fk>}nzaTu}qxLx_ zy7A_=4HlF-c!Lb~Q*W8OvD%P6QbB8TvJex5^|C2$h{z+o)V8|KwMZ&jT8(NGW8xzm5f@iXP&f&VhCmN)9z30kHGwBc! zs|xK_@;sBhb$=>fM&*>^k`ao7_e@rrIi!}2KJ&N~f*0A{fO)^rsIjWCl#`WR%T1QV z8K+OVc#NuYZ8>p)0mC4bmAZa?b+$beK<@Q%*$z!18JJSLBFKmG(jo7Rjg1`wDE&S>A?Qs6%>+;s#`}Am*!m71y)yVd|aHp?!5NW z`T(VM+$rnFu$<a>xCOgDE1OZEX_dze89AB9fDdYv%ZHvY2uItTVH}JE;_c3FlQHU8Rry_iu*OyUUEh$UBJHiKQ z%*9T{P%%HuoHcm>4i6t+b$V!Wk`OLcR@JJ>v*jwkps)2dC@wOwGGx8Duc=Xh*yXji z;;KRZ)tX9JPRT^N_oDcc@%!cT5n5?JukzM)gSi>rB8bZ~Z0tow$SEg{0DIY8s^3LB z5T)EspppQa0U6`y=m=nt0n#|E%-FI9F%;diqC~LuzRENZb|-2NiJzdMxmipe36I?c z*UaaB{|-K$cwBb6uJYTj#1gMbc%Ow2%f~m#g%WwsurJx5OVZvd4A+_>-+eg1~)?ZjNo|fw|;+I@rQ7^ ziSz>4VSf#X_6GR{gvy*1SGVV`XOlsk%=dTa$ljwCltF*0Zm*yXE-ZyshsWz|4ri9` zXIs9$?dcxXS-pmt9z)uepgRKf8Jt(`BPKXLEmzh zXITndgloQaoM?`6bQBtQsy?i!l*~^;Ax2zo*WQIRc8qz@4(m?e*qgQdTh>t*mz3lN2^mFC$=>WQ zUFiQIGwy+0`j5=`EiP&NAs_6>>&m}C^2LNg?XMe6MV^uiy?2&<8ov@@;ERa(c*$V- zzNgyu;y{l>9l3GvQA|pkoIYalZtfle9>$ZZv1q7t|_}mmut;bRUOaXummq)n#Jmi+wX{*xcHZHP8 zO*>uamf!38v?cQvyjur)mXy^}=!O0vr+}d#lf(V;_QZ_L^FV~pdB?A`l$?9kk$oO= z{K5C^anh*C<e>_uH%O(m2%l>i2sL=aha})rJ*fbX;6tb)0wL7Ir2p zZmL~ay5&;f`XId+WF#Kq*9}vYoM!@T*$hwK;l>4Y3yMbU2~JcwAg@Oa;ox)odKasY zefRo8bLy6Jc3&Z*k*L{hJV3P9e7(mt5&TV`s1sKI`=!8%G;Xj4ec@j8>$1v1j{ps?z2p`6YmpDDGf^u)y8ftr~?=TECA~X|#70ap0Nk!+i--LJe$4q`sPiP?`qN!Q0dwY9l9FL`BX8Q`xR5=HK z|9($Kc21YtM)?rSJ#cZEPC@f*&+Pe(B*+dj{IT~;-m?h~xa_WhtC&Kcp{Chj*MKb@ zbNBp^LuVcx$8Iuc3#@|6%gZ5IS-54aWu8~Pd2vTF@xyidcgQHHR&wumbe;Dv2NYH6 z=Igg|vQtb>Hdql6krr32-Y9%*Y{Y0M zEV4=ZKlr`6(Cb|y)<%O2;v#eU?&Dglf7hX+pez(RZ8I9Bm#V$}{hff%Y3rlO%!iEp zchPb2I*=f+xE%Jq&T+UMXh4-!!H~}7MN~5{6pTwN``TpCGR^zWO-5}MvR%M^niIb< zm&FfeBfVs2M-W%;`TZO21v`6tc`eh(*bD9fq*TWFMbiHL63A z$vv^6d&PkEX48C0!_s__sq7IR9u69&zYyCrM&fI`W^_S7m)JN5={`iE>AKFJDtFzU zca>^C?2l^U$+DcV!+F#B_k@8k^G26+i0A1l{>|x+yi4PD7&-w#yUYFUR}G0diKRI~ zI5EedrJC7>!=obrEaL%NVSjYN`rUGLc{FI*)y++P>I4%#7u2fnQ`r(5_UlK?J=`8G zk`ugtcSM+ynhNrNCED(rsm^j}%s~$wj`wsJsN(DD+`w)NPT5pl4e>nAV>(r;tjF#O zx(LTOlZtjM`|DK-t2!Rgu3!sD)iv?T-paHF+-oy8NBvK=-Q9?UE$4$Jvh+57ZmU(9 zQ!8lIbL&gg5%DvG?ONGAk$;8mXmM z$e8_rySPOD776(==e~#?c~fn|JvTR}a;q}e!V4rVq5Bi1y~e_|jwWjL>rVBwq=Qf+ zFW~-%W7Mq0q9Y#rk%DN(K@=PuY-?xNYRR>{u%KJDx3d%4Ygj%yFgWq@kMp)f^;XVj=;lMuE4Ej@x^VWXX6i_rB^D1r4pxPT0i61kRC9EBfA)TVjky zS$TEgPRz&0r{rCFSs5$PW)4qb#I{Zjpz;4Em{w#JPuc2-_w?*+X)W32;Y)v}9h2Qw z9^KCSW>M)`EW-7{PdexVPu7~9;1Uka_wrgu^;f(J03rdoS zFGLC`Zc!*YV)aLC(#ZvQ;=D^Vd&4Lt;B1!zv5O%02!&#%e}0J+xn5g6dGh2_v%bI4 zp1hWI^Cpe)Q0Vet!#*`HZ=C`w2Em{7n)%DToR<0y^nySuFkvKYYyIEBn5t(v8Jp|t zd)IBI;E<5wGwAlIO83Zw!}0JaJ)_$#MjVq)Yc@kXMM-w9Y#ihuBj6G=;L|fOyyT}1 zh!DEM+?}ebh>0Lz^#Sl9IxS81-Mc4p5#&0{hU@iP7~x^71Ky3&dU_ek^X^S)AQ1K# zZqo4CF2K=52Q__ZyWjobHI<2Dq!1QPSJm-~&3GFyKJ^g!qdwqfOe7FIq|dvn zMYvD`J3(=AarE%wS_4aHCZhA+l=yjC(?pX8CMqf#(dZee%gkUu%Lk(!t#jMGnL4EI z7%buReQv7&cat&2;Z$q-psa1Cox61u=q50AFm4MU_> zCIOEvmhk-%yG`jQJ^F}<^oUG`j;Ca831u$!{Y*8Z2`FRAEJ6^WYn*dz!b$({3&B*| zKl1LnFu3nJ%{5kYw$84`lglfOEyjx$OB#w=T!7Rh4Z0c{0Llb07Keo7H|TP9T@K?m z-vvW`EPHbu{M6YD%;*bMn)25zq>=UfYOU2Ul^p?Atr1ZD zF`9o<^nqwM?ggl(R7yNj(t+#!mLXudEs>g5UdNAZ7zQ`o)K?XL$^4unOmvC75$tEr zI?KHqCubHlu~)lKy0&Gk;t*r6*&Y0LVsq0Po@&%nN`_bd0C6xgMTQFCG^*CXa z%bx#YEIantD5qG!OaldaHEHycDrpclbRMDcos%wDlgt98SS6s>unjg;Q}-6+BL)8l z^yBI2$yLeSk=64u9ZuE`XvzXmim&=ADwLKlWZfHyHifkJ_(J3TKMg%TvOIaz^> zj7g?DlqP6sYzSzd;)foD=4Qyr2DGW}tr?zgYXEt*mBGfr;=qHT6mB(N|BT#sS7MYJ z8z*eMBG2>mi(ue?K~VhcoLo*9Ab|1X5#R+zw8mRQs~b?I0R19XoSBuC%#R2fk?9jx z{!+Uds2?B}K$CHR5&>+?PmQR*bq!lf0}=(i(m?GJhDu@X1dt@Sd8K7OSUpfL&UAlg zW*oVbPbnUlABg}=a*0Bxg?hdAWPZE{{JSiIpR@aviHx&tbir-W z-X2@Q)t4*tX`;$wucmUr@j*WpWPa3m;0!JfmkX`ByS!U0lO8bT@v5qhn$`7DVd()T zdbLqa@zmOY#s&_dnVL-xFUUmIjHG6Ayk@#FZx`hLYsPz#!VQN9a z)M=ZRR6rg4QatN>Rr;sQK=Q#J2>QI-R%2C*&SslDxL>IhEu?wul}&-D98m!zF)%&K zZMO>Mx)elP(pQE;ktDfFMJptfHZ!C7@y%oKD)5fm@CSX1uE5^2?` z#hz@9#DD(o+<{J}e=0!~CgFa%DWj;USY>eObWWBD25z137WMV_j~vy@7*aKy->B>h ziE?z9q?#nAHX7i$kpt{8q)u2LVQp*;rFzC2#%ni9XIked5m z$|O)fqo*aqKx-3B4G_-!`{j2W32DyQ;tD{G!dKFE57L2LMfyDktjn*r7uVN|3k$yj z$nOH=gfHcaZwbOAp6n-KP|%Kch?AWuE*pZodYYr=c*c0ypS724KA;U(oz<{dG@Mq zkK3(Jl)-s68)LBg>TiHiLRHHTu2CfNbcyu#zWBbGnVC<=leBS8Is!y&x^$XbYia1ogK>u z{`lsgeT*OEcx6=~o`arRI{`Lp&8Ab!-nF1Vf3`~~sW|-dy5wF|deOl!2=$elfrkK) zrQMrKc_74Rj%>o&Iy$bT?-wnEvl>9noQiIj97sq>Eq2#C@zc5|ClfVnNQ0oJmFo8z zIqT0Xr>n!NbRfMB_vZp|>c!R4yP(@DdbNK}v=nwcQ!zB`z3`^cd2KM!iZIsAZR_I$ z2sDt00R21%gZ!@m2wZ)}A0Qw1{t@7s0LOy)>8CCBcC)5NaT=CtUx9Mrrxu8yM)j!h zy=9vpssLCw9UY)D+neDnJOcMu92j77FkujJxYw}HX163(t(vq><7cW-BH=S4|3GR1 z_w3>PJ)}EjvZ5eX@V+giV<4exKTj^o@rug00u*SgU(>?>;ROJyRC$F%PtWh{@87=< z3ZGvmk7D#pTI)%+-6Kt88cUmMNV5}40+-cq_8{%C254tg#;Z%>h$=PQE(0}ssO zTl)O{{Jy2eDqDGIt^Z^L-IQcrh9n;6Dw;?AeZOO5FqVSdj|aHjKWmxm`{*Bl~V12tOy|hl0`r(dVIVIPy~QevgHUwjAbwYGFnck7v%2JJ$O`# zl7fQhjBO3eO(2HkgW)xrQqm=5MYZ_^O#x}c!-~(FjtY!C^zz{kc%@R+0 ze}*@2J))!@o2S=a>DeMK8`GiEw0BJO0h5^ zzkLHs4blUoao`fDU}#tl=XZSwd8cElYM?bUOELl}-#JVt3;M}wd#dUcm@fklpdTGD zjSJ1zPwv@Wi3YCa6&N9)?Ry`jb-`1;PVvw6zlc{goWEk$XpPG<=%x1+VFxU%P}7_FL72TPpI0Jg5E% zrdI*P*10$9Atm)m-sJXQ&{)+tIN<5YG6R#WW%?E`A+`eI?Q!n`4Vz{?`sp$Q+N}NB zEU48Jg=o+ZXumVT3S=rKN`Y0%YM=vxk}n997Y}xNE-Q7Qh1J;OjUaa$fE-S6tk1hL;BbYPnrreY39Z7@k*?>rU0mP99cHeWb#6 zZT8y!7ZqFezU|;p!1aTvYikhSUZ0zQvelc9i$ZK${?Z;6(;J<@X~E@oc?svbb^1P0 zpjR>P$jDK{^bDKAV*%8O0Y7EY3E8seSi(lks~WFMUtODB%z76WanWl65lFHBY z`4jTke`gYv&3f0@o-P3pbzSfIhGJ>@5T&6$y z-G9O_&NbpyWE~gMc}q>3icb%k+^7_D04jxL4r>tBo2|#ww?gKe(K)vWzJCEnz@Wna z3*eGewjv4{z{x0q3ib>PR7}N1N6WxA$PCw4CJLq{exzthXHtu`1J1o4Oo{!FK^Hs* z#9G65VG`gEz($(IGjW!2D6@9gba%&x-73=$f6suQ(C6l=x2hF}N0_+)TUyCiP>?xw zft!StX;qlA($U==otzx#=IH8U7RSS*a~e)S{o)9oE{90F)c9ozT*rR0503 z0f9XQK7UCz#|xA*8XEPpQ%v-=RPT}pUJGbg6_yb?-`;%6v$d{wqXM}tZudXsF2!mf zqiJ$G@=)xyZ%mg8lS57-m4%h>!JcT053mYxZ8(TF$MRT!PeSzw?_uVS^ACYmH=9#) zfE_f1bYofmOS95H#?cf^LG1*PV z--E2*X@0-lEeGZwpKHEr(w$rbFd_rt8Z;u)*|D2wRLiB4b$`CQ<*gNt1Z}H;fE-ce z0u__C*3A$lXPsnj5=T54*`MW+_GCaA^bv3S8z97G_=M4Q@u{)cU}b!LEng3$8`&eQN-Z z^G?E8Gnk>(1%tuNr`d67zQeZNoR`F$cV_e^n;l@XX{kKeK#X!266$B+XXqnyU4R%5 zrhSmBg*Bqi8e3BA41XoMZEe4eBzd)*HeiG@tG8;$hWVfHgf<^H=pu;fov{ z8QJRHavd(SNr>LG$0w6mPyoa^Q$l~~2G==r9Tt|MS2*pBbq=3y_ZVKjY*V}0vUu-m ztlxCq(bcs8oMSK@n}zES$>3Vk7RbcE!U2Ujir&7u;!DHhbriwdQ6&MvJ3?)>1l_8C z$UOg=tDLH}K@z;{y)Wj4)sPM6IN@tu zxaBTE%k74Bt9z1+GK20vz~8i2-+zT#_3!zlsD=qJdk?e$7=VlO{CAC|&cC}K9?7VI z7+bghC13;SyV<=;Znvj7oYjJQHzVlec3DPCjsR4EZ@mgjZci% z29Q56M`P1NV2X4ipHaEd>?iei0cX33Jco%y=g-=-dy9{OJEHJtwS+#JmK8M19~~XT zAB=8;*``rB;l;w1RY|lmIv?)7v^t_}cL1lGf6dX%-P*U)Gp8YvTJ0=XD%3 ze)*BDx(fkT(@Fg3ART0nm=jm#2e;jMT_2tvR;V$u{pBZcbmR^v;cWxw78RE?HM0mf zhHqiSTwM8S-k-^vh3>>$_Kp7@K^ge?>i-frlA~k{{)e*q-(&p0*WF|KxD@xl7K|rh zX_bD*qd58xH|s-fo676(wL9H43PfBKGxDz8tnP!B{gxV|_yN(ogohzv#nFIlqP@G~ zu6NlV91^ys-8_-bZMk79oWK7Sr^SVKS?vzC%5*9>d+B&)$#y>L0?3AD9$sE-V&e90 zaxYW*QoblfC&7O)3c#l10Ef&yD-iWlcCmv+>L&yLe->}IOkTGbFYCpyXP1e%EN{NT z;uxvf3SJ3%oa%vUXKV=##ay!G4q>w1$|KC~8X2j=aC6&FQUVIp4PeBvq@VtINL)h9 zm-6jQ?_?L2jwyVVKWROI;i%K#wtMLo-@_A}+Ma`p(*)>z?wJF8 zGS>~g2S)~`@ZCiI?LRC3Ydh-O1A)n%r!dU*KVQ5|tHuL3yxd6;uFls1D|&UhEu%T} zzR(`X>R-Hq7_}?E<#o&bGGr^W*|%ZT#2WfNIqvmPqo0aCv1z(QvSTlv{!vs}8G~?r zh9hi4W>>*5mB3-fR>}O}hRh$}s`q;Qv({JGm1QJfKnx)l4UbBT>Y<*UQI^t$Ug5Bc9~ z5-#6jQwK`48bI*nu^9Jk?TM^;&2Eh(&($Y?S+2P1bpK0NHkBtlKK_9|KiQs7SE3Eq z=<9pP0Rn8nO&-n~TM~{z<(0UAH=lQok6m3^c_^D?$%Ku~XsIvJ2L}fe28?~C{MCyC zDlsX+slowu!sIN)Ek(%b31I3#%YmW_=U$)H-x+&sFg$wwaAZh$q|`>|!8Py|gH(MR z^u1XsXl3>G4OZ_Ij+qmWnrQv|$wKA-CzgA6pXivCfWWPvsqv!i7?=lh#z-gtNV|+! zDFF0xs}=YVDjB`wDk|9F_)<%z>gyDj&Tr6IaJUVKTGEB2hc}~DjGU@|&;=V^|3^w# zdKUCSS^4RnTxCjhU+-Hlukq*G=|Oov{^>>%yg1;2TpA%$Q&R)4%^}oVh$dT$U&igz zCjw$_$Xih5*f42mTirjiY55=`0^c9ULTfDlzWBBSoybtRrd$N!RbL#K`)T=pcXu@B zpGze3=&1w&BL=`317k<1n}czgQU5qimC_gncc|{%jVl{FJFoZMBTz$it$B^-lsIU^ zJd|N}An0LL>yC(R97>WKL6IO!Qya4l+~ijPtfs^0``k{h*uHzOq&~I7rb6pMmwiI7Cs+4@~Caf6jsC=7t z`YQkD&u_nfGlKa-s}!COffEZuk1Lt=m9eLnC*XA|q{)HlYM7nv&-Q6;eeL%#bKvKw z23?I{Lo2_60?=|}Cyh#&nCNI47W6I4m(seVgolrBs+{=Yz$z6$gHdMN%j7DX5nfTg zR9T5H4;TY#2nKWIj#vP0M;+i}@LwFU#m6Xhf9u-(-_`m4+#zi9P*7J!MJM;?j8?Aw zZT37D4i;Wu>+~B~iNXNslRu(38K6@5KE`W*O=^$?7}AF;H6bT_^9$to4KT*oAz+vd zCu62jz?#?zIXIKUh3>D!Q8q#GcA{1f==boI-^4Z)&4~)AL>^w5HKkY5Qx|)Q_&qbT z!2H3T0M3QjLVBJLs*eN4w*SpuxAU1wlvDoMH6iwudppv@a3!Ft()SFNR+I#2>sX}L z_kp(sJ}+Ed5n-ak78O@0UPlEohFv#l&GBLY5I+0+`ysS?f~pAH5yoiMwsgP=a9$?k3Z@(fTQybNJf zg}8yECKT2a4eQ@JpD%T4iOcMy5-liD(SX|nJVbeU`Ndwty;^l_JYX04(KqJP!NhH7 zsg5uZPOPhJ%*^P)%tIkq5c)79o2Ib^q5kE;J|G>xV)rfj9g0LMdAV&ilE<#!fdcxUEfY;urddBE z3#AfE%*Y$ef>#`_ceB9odBle?xtHrYrU$%M8*T-~5lP|X3ln9_mecjIze7)mA{we) zffwts_Vx9=w2%iFW7uqbz9(3fhO1^6DgIooBF@ugTYPIXPaY9%O{vCF8g1 zPd;=v=zQFVSW^UT)@jP}_IgmBj4|9^j10|q?F-TwJ7f{b$u#)2E`a%Kg%xx4rQ>!( zUgygFShqI_JyIMnNhiQ$5E%(U{d^E8b#_;c4CYq>p`o_=9!@q@KyUKg zvyb<0GBaWg+M=R*K~9mT#8r;D6N0Z#@%XgAUsRks_Ge&~WA`|-luZ>1gPMxvji~i) zZC42F^_3FaldL-N2S|RaJ?923W}w!k7I-;aklM!=Ao-KUjwLNEZEVXqDEQ^8SJR4M z%%%F0Qw=qcfK8W7TGH_I2mJc=*?n7m3bqLd+;vTE zL))ry+Uk{MG9uJpn{v-I&Xp2msV>@dPxDEYx<*TS8If1e1Q2(P3~!Z-zfkNQbFELMQHmCPQgIj+@L(HKOz0 zX8`=xP3GmtTVYb>)*ts@>$F-cj`5OTChn$b&OM(^G9Qe>{hy5!bJ#%!JLpDrjWx!o#&{aFr77fuIrWFFp< zFz_z5o5SW#0L(MN6)fHSAOe90qf+C_A0Hm(2fus2gVhyU7ads>+W2z4^2lAwO8``; zp|y)Fh)7k1rw@nTR8sd9nauOsK_K({G`83r8STQ;l!pLQ-ZN|usP)d@*hK8kjB66r zEL*DT>U|CS#cM6|xACRpC02X35BUO2mDKUN%=wL7@Lpj|<+U* zHB4>);C-${A*$-s{AMm4B;W5|@(piu0!Q#T5@5#m_ zX=?SVCO3GzBybAk&>24^6Yz@=!J!D*o6X|&yubnt2^8#<6?N?oRE1yI#nt7K!2xx> zN6p&P$EFm3r~nDQq=t`BBBib%RW=^l3JX^C{l4FRF`m_-;@@ zAsSrCUc-+sWN64UqkWoOeU%Sz8!5keJYqlf zwN3FZFKQoVvGFwGBB{d4>xnSj@nMAyaH4_kq;f)oCwaK0F1Bd0Pe>j=LCHb1Ide;S z1O1V*EYa8~gR&p_A-FhsWxn+8 z3#y($6iStyv>Ku3&D)pR4LA!M7@sRtB+GsPG@P?StyqAksNaYDouJm06`^A3Yikbj zG&lK+zH?)^k70dD`&?>gPL8AC5fYsn3fFI39yO*iZBxFi=c1>f*wIp)BAjzwCCBr+ zBF$LgGEG0e``&{7RbYEpBp%`~6I)|R3AI4Up^eZfbM-fsrouLFZ=Ul0tb@z4q`mc3 zCChBIS;B!rOm^XUwq-^%`|LxGb_ zebro&dgy2!ket-y_Q)>4M}{wwxraz=$sdiQ1QOwKw@&qQt&#B%r;D=-l!8n zrrTM$S-T@7{vw`f`ZNGinD2NPvzn9n#dnqj_5EWQj@0HjIV{BJ9`=6Fdga=s79_YQScRIC*bdh% z>=KFbzh%@)CFZ7GHyk(CBxwvhYC`>tOW1<7$NsB87I|OW)9Iu_f?CwX-dWzVud}l? z+P3|*<5aLhW@D6$YXg$5t=*db9qLO@fFB%8gjpq`NSNpYQ1|@c; z(KoStj2?!@-=moKVMzvJoWu&F!L0j(La?QLhqB+(^zljQ^9yGqPr{?LJmaL&u{SDZ z6Q1GbRY0hRxpUPU;O3Zjd+CJ&YGkg7)L%K!tm6lNxcvMs0ro=kKA}fzvh0LB=!jTU zaWKNq{fx5WK>zeB(FP4tGrwzm z)a!WE#o1zcmnQq=^Ul_FHsPB>(d)|kb&S;pvq>EOQ2huIT_H=YjTpr6RFP#db6ME| z3>0WESkb|W&-_1hN3gB#=AoREiPhQ&d(MbLxeQS>G!$)OA1zZeKPPE}ai-ACCxZe# z0gtkm_Zsz_P~HFs5o=BGGdpj~FnG-@%dLbF4huC#D>nI$!&kn*H)B zgu#Osvg)vCQ~CAgns}p|BErAUIdv81(=clZ$;#SI(yn27kw2PkSjsP~HDIFmz)bbL zT7*o7#muxjp0<>z^D9TNOi(1~1}wZoMqE{DI{xTibsZk5mGaxj;Q2b*`EcR!GS3Yw za)C#Da5JfsI+F7bQ`(-95M8&=Ir;u-tjD)3^FOz8I{ngk1D-ysc>A2DSn(_$Z9(5q zc(67`>-nqkYlW4yaE);_JSLt(ZPVCb{$2qV4Y??xvDSDm!F!*{9}Y~|F+N>&acmUo zAlIt@NXZlxnvCpe_LBB`>M3nNuHeScQO%A{ zA74{WK0Y_hE)k7Gnb(~6RPcMLP&12r=%EYRvf~-ocS~7?ciNLIrouHn=DTAZMF~=` zc#JsDQGSgn$d%EPD=QaL)5puO_c986&@+3k9u^LFUJ|!bT;LP+eukvUZn#cg@ty6T zdOf!Ih3^(OEY~SZ4x06z=;EBq+f#{j`+6w@yq_f$YXze77!nc_n-r+x`fdtVlXWzabkI%t@E z)SVhG$*_jBx@!DwJx!z`v>f{VWsRatTN*K*NQoTZRFr0L>Wd#uESEy(8CwMrJ&$yo z5&7QmB3&|5rO_``oswf29_ZP|rx}%*RyiK*+ZthN1{O-;WTAKDE;f#y;`!Mav4udL9+>P^51hmfA)QQ(|&z31|(1`L~B&n92J);Nat)KwG zMA;H%RJ3eBaFpIJG(=nGt(79%y+fG;XS)rSKX=g zubl#z#7JnODjFC0$sY>=CY{9XYzHJ|>QR25dG>Ie#d!o@jY(2H`Z~$l1Q!x}#5`IGm=C|5C{NWAJ@GS9g{VQvIDUN$!0cet< zJDxW9gS9h zjQ5!dGUk-qiTR)6tJUErvdi1!WXM*XyJv$>_q=DsRs5n$))XpdqR=#d3x8J0Y9D~c zmq2PpKd}@qa410DzD`2xc_nRifViJzh@VQmd!$fFge;Ky2=%becPA4KFGWUVKcl;! z`g5h%v(t!I{zaV1q3E@BUtDrhI2(Oml`tC#a|l`QX_AwTW!L)cHl45Xd)DbbE6Mp0 z;~rzxe`*mRv-cQ|nRse3&8gL#90Mx>mHAZQ)v4<`+}Sx1Lj4OmK_v5_(;SvC;(Y(_ zxjxPpV7*oBTScpBR1D?vno z3zSK5e3X;?TJ%`30-d3RGA&hF=7lrWtyQET_?sXL2CD~G__F)wxYhEybI~=o4O=Rr zJ=NpT=~}=s9y7UIvD+BLG*Jad^$ERXm+`vZY<2@U-7;Bmzp0cZrKsBt%Frz$7)&a) zu)K<=w{7mgmlF(5RucE2D`}o*Nn5RQV`qhUeH$z|g&886e54ZE>I{a}k$uZzA;x}p z`YM@nr$Ls@Xzzrg3ByprO(4iI1FNVO$L;T={C=?&Ed%HyTup7tX}Ba-#cM5D>->Ev-*s;7h6=y;H1nth2mt8)gjt;KpN` z+WU(B8bLnoH7~#G!j}AD$ixs+=6JsiExR+;CVzg{^6T2_Jby#dCu-+@tLwT}1>I zfyF4PU9p}9<~he$a39~h4zlMi?JT@WfW0Z?|4o$X$&t?{Tq9K;GNf;d$}Dp<(+&)< z*JGxRh_&L_Mf++N*WjaH*q?)zmyGbS(Vbx9u#{xT9SEw#UlFxsCrPp0hqtyTpAGKv zD!Jw=T!*~M%g+uZJPhG&KE*AccA|b!%ZRE-l47fW!LxcfVX-J7(lp`n^u4lVQuwH--#dVR)a* z<};@u^0`p{$s&H-B@;)LndO2`QxUYY6oMh^^Zp&GiGvHaUhQ1@heD{H%6rZ^Jr&D7 z>WU5YOKN=JC|$wJVXwWNC*s&b{4-cVyl(##XK#AmJY3#th?y_$j`9l`DIM3Uf@L3N z-UUg#%m_WJ4$bM2-lLiNrL~QLx<;{gzw2uG+;KPNiigX1#;-=L#5toOyg|$m-{R^9 z-m7ogt|_leMMz}sQFUsb5)3?!L!DEmRfkcRQq3N5(yWqH4*FfA>#f(_OTNFB+-{66 zE!T8lj^{9QWOH1)uQ*>5v7bA4TVEHv7RvM3LqkAELbi*1ff|*Gr+`B}5>q-cIQ8S> zBz=5p@dtCI*edQrzVM3biZZRqD&^+lo;YP8Bl;tX^1dt6kfht^D~?=5*aj`6aHSe6ih36pLsI`r+rV4d^*{0r|hjIP`o1 z->Rb0_Mh&u3ndoPrc+gETqeOp&T0Hc_r{ z^}IperDepFbSJl*jyL|e{blq-=Ps zHAjG_#rRXqCq944PQ=q{zlO9-F&)IE&?uQ{I(^4)B&-L6|LU116|0X(nsZGf0#~pi zhV$&5`g54jRkA0i^jJ@sLM_JUw`Z(mo}u3zvWo%Ut&{HI45ULTS|?uC_?k23FyZ`C zX)eD8CwWmt^z_$MLE_TbsvO&f@KyEWxl41Lh$*!IZ09h$#&a`m?JKH%^6MX7rHkdw zp({9vGZ~ZiQcu}dOVs8Xg68iFSq@_Fx7P`JTx3Jy3#r|?i1+Ihc|`p!A7S+o(kXpP=G-qgz4hJ1%41uMBQ2fWfL zw5GZSbw?q*2>3VApfVbrkiB6GWHN%(9&>;a-si8p{a4A zrJJwby_vh9v$zpU`JZ*c9{V*KWYB;{=IIG@8qnWQ?C5tL)zvy^3LBew#*x+W?u@M| zjWXdmUFNz~w(4P|QixPe!!Up?_lj@!GZuDh-5hDd4fyTwhI z9gJ@-pZ3tUVk5I6EmBC8_?UejLF-ia?_EXQpVSI{Ra= zDdRUsdC`|@*6ay^XJ1^)XeDpkKVrr8PW)UEk?%sHHlcxlWBau?rW&PIT@d0}(dT*e zK^9#=r2Jb)o7hCPKJH0e)wESb(19A20>zS$Scg|&fr4(9ZF1EOhR;N z+}a(8|9lfeSl$NTS(KgdBQ<`K!k!dXavAWRY%v(LD%IkFh2R>JbxP@bALUc+|FZ6Y zPVb$1_~}h5R~uqwV6#{F-E+*mrmm|RY+H0TGQRfW0T#QW^S4Y%88MNDGLuX43s_6c zvU6}28oN^k%+1XgN83Y($@f<-8}pVQ9o{vg$oLZGS2c3el4aJ6AF+u`c~C@Ei$kS_ z5s#g-yJQ)kUer0B5juA3O`n^vB#8GkKUOE0?qIOImxdc9$t`?I$7)L};+4&g$~L0A z_GT(CX;d74U(Ye<4>zHPzkv6}k@#@Pa|kp*$xcuGIlPH5xYrVokdAw~?RvIKh825 zYwvED?kZ5ue1Q0;rRCZ6!Q*s3d+Ij_qp>d8sH@-bDCFrcHxAHO3B#Fum$E7L1sp-M z)-To>iP5e{5#_pC3(hwdBw-LN+(0!}O=j8v&44q(_~IQQBo3`c152amoALcS2KJU~ z5`)$8AIy?$BF8qrE|Na@9LY*u>Xp-LaPm6FSn6Vn)F5L&$q-rb3>9+>o#=5fU`Q>j zX8J!oeRFVRO}KY#Yh&Bk*tRpVZJV29W82=?PByk}dt=+*y!Y1qs?J|CHK%G$pYG?U zr+YS)q!mtrsDmm#BY&{Z1*U4cnwOp+8e0naR|Z6VYBd#v=hu3(J(tao9aiA#?LfM% zsl9ux-xbVu-M8={?nm#NK6FTcBu+%UdqK8)QKTf_nBE;~uZ9huQ&I?Uq(vmfczUSM z{wq660BXqXhc2y_9{qE;1ykCL+B3d*5y51SMkF#TIhTSSdUbRL%^i6u0&5ksuwrf& zmBDPgx9Ng*-rOjY?mR$Y&@aAv-nUC8nWi?LrWRz^1%de_&y?~@<&%qCxLVQFj+bwT ziGJdb@nQInYvrne=#<#PZzdX4K%J2lnA0s%xL`4JC>nfFhR-l#6qf`2}5r zZyVoO>O$gc>pE&Uv{bX@XZAzEVe5Y!CIzYt=lBh^3WQmZI}5k>d@OfzSV+hNq}tfjK(L^?VyH&()BULWvgXVVsh*ZGzr)Udc4}zCrd~epMF31KZgo_)a4*e!cpDYYE$2Qnf+(?0L~BzI>yi9sB$4=ELFD|L z6DQtv-r zp&m*uvJG0*B6;?bFl`Whu2P* zN#BUon&du~D3Z&RFn`Y|e-My0%@cEoI-$siKdx6ZuMoD6hJq}h3)|;@2*-!nqCV&| zyTo@xE%{%>eP$|5nf>ZEiW}m^nElu52cj!~ZQ}(-t08RL;K95s!~+?Gpx&CeI@HSX zSL{S@Sb}lFq3Z@NHu(or2VNH9%ZSzlBP%wxgO5F*Yo_zk;4utamsc+EAq(sX|7;xf zJ(J;=F{x}5sj=l1!%K}dPu6+5U+Ty+YOJ{5>mw=}*}7?4lgCq?bJ+xLm8bko)`roM z9zgs;&ZaZtQ5F6|01mvcL;LfuA*|79*4(ABAPTCBOS8<>T{POT-!Ui{1}qIb#LbkK z8*MSRNtM;&#eWQZu_3&brpM+vkcil{XT&1S^Rn#nj%j~E1$QrxD=)Iy zOT==A<@gufq=Y@}0_!>gD(9Vx={QS}J&`^8sO}w_LDuK>Xkpga=)fa&Or1}>Q+-AmVshhQt*#j0z{yxv{!$1hTKN_N)(DRemC2%Ucy%V{P0_ zlcvP7bEa{XV(g1T_Tzaf#dd9Wy zmf=scxd`)QCGsDMW%*JysdE7f^K0~zAWHM9Y7cz%9|$l{i00%s%!$OUO;}m=Mpdfn zafJ~0ni`Vr+RRpupQfc-zRur0dOlkACrTEYcO7L8`YbCs`sX&ze=KkaJ%5uSbsXx=!6!G-V-}6Ne(-^WSZAww z<&NbdqdGn$)RJ$2DeK9^hrgpttjR{d%(QgH?%+_QWvL3Lp+PLhAm%v#B8!!vu;%g41@8-MZ+-NdOe;rf$Hu!fP`p>6BTN_y=TRLZ&y_xb)}`bXjrf2_t8ue@AUF)^gV2YH zN1H3b8!V<>wgRJVXv`|7{n&`rt$2**D1<9^Z|03YfJi$xrZ?+OGQKgNvZ(t$P&d zMxV`AUP)j&ed6k#)gaS5cbAp3#I35M_sI*vQ;QT3c=fPpi$NResjDoAv|>GCQhn$U zR=9x|d{gD~dlP;3aOybO#|vjfeSa$vQ%M?yCddX0Tp^FOfRFLLLa(UHccWd32H7mVES77^%` z0FN_T_v{!NS|v)Tw9m(Z#A2&uI}{A2FLP%v>xAj`{vyn52h;{(HX~#z57%Ao_|De- zTy|c$EmK~;e2xJmF62@Gk^qp%IiBp_`R@NgZtwHWl=ZzKp1qUHBJ6)v`^1NfI#| z;;U7eSb_PRa;8vORugz_RKvu0|8Ux6@HdKa8}UEH4wGqgld)oO-1D*5 zV?xa}94tDsEUM@ca@0%Ham!2g7{*tT=Sva1G6%CfnW9P#*BD(PnQ>xO+Y20MbbgES z6G$u-je6#d2kNLXoY)8cQP-NS7y8r=h3>z7fxGW#OY!-QMA;j{k<}?7u2wORAN&Za z796kQq%~xZs2@O(qu%giOpPNwFCZflF@K91vc;EVho~bHFgy*7)MeT77RANkO+d=)T7(T0h^n~%t#3+y> zYwlr|Ao%WA>AN6okZ*9KVVP1&(3&{R7D7ycYBtq4ezR4<7_7S-y`SBmezAW~_VvWl zVEn+D^W<(UnDheMq87ks=Fjmc4c35yhat5i!m~gE%2c=~5STNpL?|gwG~{Oe3;aTE zYVHQBAzbE6J9*wnQb1Z8C>SlmE*XCK=Y=sg=6QlpVz&HgncbkUR<(;k0Q|!CO#H2L z1p6kp%>hwvmR)GpOat|Ual>fs`ecOURdY-qVj{Ri7NY`l{}p(p_&t~7P-HiJcSDW^ z5#J1-SvXbF7HSSRA#8{HLG={1KE*5slaEp-qKBQ77*n2;!`R-7Pc&#wc7~c`;oRg7 zR!ZEK38%7go~`I7;6IB8(R#-oT~PR13xV{-|+&(U%41K4}D;q<7vQ>*S0r?_fEa zG1DgYd1JDGEIG4g0n#3HOn%7<+kk~e`Xt~72R5(x;16E0%)9(!)>m*K<#&4IuzVFs zo=&0Yeney^7fQA0`fLCqiX z2&(y2r+;Kxu*QpD?CRS#N5Xy5HNSXtinT(0EwEv;4Qc#x3RBIjCF`uI=q;FvvM7dw z<4B@96b)g6dOdGY5kw7VImLye*m68$r~3I6jt1-w9`W9Ia3}_ZcZA6cwouTC0lK7z zIO1pkghs$MS;Sd4*x6|@=|wL6yf|XO8?wQ!%lAwks-7<-QymXaxMovnzjFdhvJ9xj zbj=lp_wb28LV{nR>uI$-?hH{Z~vDC5O?HXBNk?OUq|gIoC)>?`J-(cy9-)r_>D*$6D)wp zCG5gZxbx-LELRq4lVoO9N6uT^a*y$c%%9T{eVc9 z-83#d#s(Didz(k>%?b~Tl+H%O*|hTxHY_k;7Wz_5Io9bh&0iB8t)FS&AQG7W^i0f{ zqPsr928@k~&1jjUudLBB#xvHcpk(XH=o^pvBm;4fN0Py5TeavDn)CWP5oiMFPDJdv zd5eCTVk&`po;izK2)bX~E?{7iT)%LHe^TNLiIej?H@rjn5r%ujngv}LzadW7ET-%o z<@AnqZ5&seLCc_n!4rum3@CPNI7oH^;qOlctBC4-IOQ47jd~pQ6jQHM@IDtiF9UG~ zSpbuvHl;_aK6L({;`G>WDD*waaI=5dcSIxoBCAIn>htqJ4W;s(Xp1TILlQ_rP54}) zv>Xor5-2F==uV&ANv39qwKEe&ZVm>-3yWD&`LpJ5?F{+d%+IASIYu8f%LhMsk-6QJ zMGJIyR|4KO+8(nEjN3Nrd~?(7qK6w>RvV^xAUV7*vg;C=`o}?$WtR0-VGwtvt3jV0 zG)cX~kHB{}%4T6eXLX)6!n&bOeexgY6SOnH@`D;+rw51;S~SuiaCFWayW|Ncf9uhp zWi^0{Q>CX+_LHrJMlNfe?1n50;i|#@5oW%swO$75TL1CJ^Iw&86CbAP5{KmBmhcIe!brKX5p#t&E33@yRp%R`!xUOyPk#}h*Jt!ZsXomecYOam zu23GX0zd$9BDY;yi)t~1!deJCa#XoZc#v3y^?nL?S)zwV*x{$47NzW3RP-B>Fa|kL z^eYAmA)*#%U>5>2>FV1?^ELMh6j%X|lCi7UMdhd@vnGV6A@qQ2oPA1lOHY2ig}I@3n(o zXJwUsyTlp;C1g1=!wSbz9S$^MV6POU>_i;@?n*#8R7;%ArkW0P`EG^gjD-XK{=pk5 ze&r%kaa_*H>XXyc_azTaows!&Gl8L&rEQ?un+juWs2yCe-{wAG_%z|#Ztjm;Jul;Q z=UDCMWbMNJ@VVGpPqhhL9VSR~{BHV`+YKiAgZ)pdh~*2aWgm=fo+n}FZXuhj3UvAf z4q^H&&;?`_tmw<}A}PIIdbM61uNN=&&1zPXfh`%r2p_)ld0U(^Fv^&%o@AXi_AIKC-Mh&8$KF{1HF zDD#0!Lo+24l$D-f!L(a?_FQC+DD*=@oxwg2Iqz(`p#{|t^p_+`B);!X_>S?sWdy3m zqZ$XcSoV$CUf=*{HdOC`_jB_aHe5a}Do*<$MQIz%UsRFLAY7|P@9)A|OwRU)BN-9j zWRVDohD&i21~KRpdSJqX_cMfV5qZrhFq~GwIP9dsL*Yx_C=CKc4;}YxWlkHmfpq4jejZpe0Yg~P@ zSd4t*=!b2Uq{M(UM#v*cZ0iebwDS7jD}Mj(`8*dKY-gR)wkxYa!5vJpRSW9Zx>@=8 z>P1BkKAQxp*gk-i#q8HR@wgxuO7XlIChCgntWm%PvRJ~V2c^bwk+&s4T^*DTajopg z$t#8|a)c|zTaltZvFE9k%@yDlgAR1}vy;uukWB zG}OPl^*^0x{LNb#!B8gX^QDl2Y6v;*X-x_ixQ>RqA%yd*FtuhFS+*Cha2mHNWHC+D zVpL>9Xio4+PVoC0=;5@3P6u6Jg2H8ySaDBuW7Z@pn!;7#cGX2}4=t3*sk(9{qH4>E zSLrt;IO*ukYKwH-v(7CKi^7#dfYPUKWSqdYa0&Vh%hJ7aue<3}g);qw2wT*ndID*C z_+Mm`bS#Cnj?x!j#z!>&5n|M5UUX=OLyKE(QlK73$SyLALjlk}Y+w6^_(fla@J?jR z@o2o!LL~6gQxtv)AX%7i?|8%wowHP}GA)TXGVcWo!!^`5FznrstaVLJRwm!YEm2zQ zKRB`4*s;e($Tju8Y>yR#xj270JdC^F&r!S^4J7J22X15qw>B=|adk~h?jrrQ)bobi zHq$eW+T}(&scjRV-@w#A{431VDWRJ9P!v3RsumSl7{AP$^hG7+vWo&FAqrVQs_;AG zJ*%*SQPdkL+F!fd&8|Zf{1CJis`~(uU{0TzL)ZZ18TpDUlwgD`v@bKbA6G57E{sm# z4$2cbSimBxx&z%9=%39|h&Z5!THPIGY z=Ef9^ z;4^@Fh5t2BNDBO&C;Xk@-GOj18n0%RvZC>ouKKyN<1P;=ER@3c*rK;YjW)5hyZjFx z|NN8qw4q4cm%tsdF|$j$=5N2)$yhA6Y_I$H1XjT^n~Stz@-m;;W#wXH^hPs6Z7&twN%cI#*P)UTrgAj8)?7?o1o%%KdTCK z*vUVSa=J9bwsc~wz;dsfZG9W9N}3FB)rvEuo8k6gast}W=b~q)pOhHgP+rjKKAwCL zRyVS{{)@|BYBiT#I(E1aMAS)_re?<@nSf@hg(es-(=v``sA^(&-Ws@Ra;_2~$7?N; zk%}OHhwFp$!YB_|pkmGu&-m{(IN*ad$^-roZsNkMoC;25>(dL*--5_L>~o4?-|kyz zW3+lNxhpzshB%7WZyOdZM7)G^hHW>`n2&D=zV$o%06gyM?QcVwVfy7ZuSQ~=Jw#dihZ-&n%GOuZ5we_v+eIVl!O z!L_0r9I1Ujt1c#*(w&n>dU$LZxcsteMEOwI2M`kZw+M`t;!teszSAMN{6_EELGDc$ z9kE_9%hkNX75##~rG7SO24$AZS-P-WoCOgPH}4OC5pTFe9PS^X0i<%X-atfZ9tj;H zG#m=C(PGfXco@?Ar7bOHL2MSu)%K_d_*SBj={0Ro1`(qG5QK zc6IqRiRg}3h*PK0EyzoH;`QlpbNLtg@_h0>&HDEEdz{rhh#h|g7G4N-f#J(l>sI#V zAx;84QrA3BH=|U8&kLeN&5jYV8R^)E?f}I+f{BLowNCBlm9nq8vxQnncWg@Qz7z$17o z?#27z$MONw3zTbjl)+!iPq}6pYSH+>Dhgb-Q#OxMK~xr4J&mpeU6>#IX(bYX4lX&h zRN-5T`0hkT7Q$QHqO{TybzQPoaQr=pKy&lbp}I(03Q9?FW1?S@*(G9s4Y=55*t+vR zj}b{gRMp6#sbRcuWn9Xl9g^5O6~B&yj~I>DDT9}v{6Bg|2cXn)^qmD# ztf$(1T=q$H&)rRb*ZduOiY=gYC>leVlugdYYFM7_FZ(N>Nl$!~=6SgnAj0_2CXZD? z5I*Z}p1vD==QgU|3nMzzpF4fGDyon9%ZWFN(K0B1n+kS(-Q?OD{WYG43lP=izA-r| z!~rd_(Cr4#n_czPs1?*pW;pyzDQqmLHXZD{NNLooGcnOod;Pz2-<9a);k?%A*gIFK zIZjBCh{WSp#><49#I)PPCTQ6SMRtd&-=pW-Ds2_|EmAz~uvDtCocK=bv1X?|Og8Qd zj062QLF%pvh1-vw#xQ{ZpXfn_&27&N$&tLR6o~Rdp`}HotZ6eJ3}3v+LlLy(RFHW! ztDLc$Fl^YL5WC_G00(wJ44C;s+f~c%TGJ$tG7vfMslMxI^DqvL>7D_W?=)`8Dd^ zAulP_5JsWbTz=|p{>nvl#NX^egi`9Vf-er~(i!?CUnP^4&n%_~vIQFp;W>QqsqT@^ z7ir?onEBKEJS7^CRVBSeGsL(J-0`!3zb<}rAG!MhcUu>w)^NvAHxfFpC{F(x;<-g% zG(k5yY+K(@VUc&VYtU`}h{87(2HIyDZDu6glP91^M{0WZ7;m`P^W>h;oYp(^_0SA! zK_lXaI@fkUO)<}r@+U@x7KZdc`+ZWdX@1C|l9s+475pXE^T8n+=(EBjg_PQfdclJN zAWFHmv}*>=u7f^x$!1lAx?oQU@K`T{_Ex2oYE ze5lTaYk>}Or^5r)*+|o6=%q@KT&SRKKg(0u~SYoG-Hlex)|4{LeQb~?A1DM zj-A>M;sEGqYA!lM8N9l%g$S zB?iIg)sz22Yx}GaUE7}M9uhpInhkwlUkOfFo3W~$lX785(d;Chr_@3ybC`R@DT+2fsOzLf0WS~!b{0nZM$-te97h-q7V5E z2=Fz)j}RCWJNY~@5BZaO7Iw~~zt?mG>gz$tOOQl@F z0W0-8pA%N}mfszr>Ve1ebM6~*iv>=7F1Ijo15p)JhflW+i5s#Cm@c6K0qA@mAgvmo zoXI<;_CC+psSeml2{Wr8Qk~eHOb}bQaK;m_QbuSaSXu|O^8z%kg;|ZzSs>0Bmvlhb zNvTRfF|+5OVAm1~A<9(XD_?gPa3<1Hwstioe zF_=68l>ibALD{vHoAOV5824#zcrG8Ui794H_&f${nhFU~xedOMWdwp?GZ#n(r`$O4 zFaC)m23_l8hldV82!t^CKL4n?e`UOWF>*5WOGbY7PvA^_l~wT~xs= z&GO@;-im)mz8cMKW6uj+)%Q`_$rRI-Df1~>R^%q$&9u-Juii1UT7&;#e8fM1!Y|NsMB^DO_L!(F)R>fjHBi$9iT${S8J`InM9^ zB5OT^wZ4=d&?8i14>b8i1n=~v7_)xjI4D?noVx|*mpor8HdlLObjBHpSh z!~>=b)i{-H-J_qleK%!wkGGf4fiSD#gtVt^4E$4Z?w9}?m_{XFmsehzaOGAI+wQVU zrg2ayqs+MA9`SuMgYvuNT()aHES?1NrC5#2>Zp7VkrZ9G=cD>w?kkF(<@t5%P%E6| zCIqTCfys~~#f9svO?Jg99H3F3wdCDf<%g*2Mxa>e83$zYVw*`^#l%3h6iM8C)&~wg zsli@x_&-c9TW!DO#V|Is1dN)A0huAb$^m|{f01yQ=?4>tSHcAi4<*K$U3tB_7$ zKaZtCR#-VBuZ?(Za~}jJw*5`UuK(;ZGP^qEcs`CqFZl_flSGP$%DT9u(^n zvWl&f(<57;+{X(=mPY?e+lcwc=(=Hwt3;S#VIxF0rh7MbtD|9J%n2*YHY9h4&~l%} z&b`Vcrc5%#KI9G+|IXO>E74?bNgaW9&fP&#oN*Le^q7?3Vi(75!tH`C9e-Y(ADQbw z!Wps8k2d7fY~p%}ySa{#M;e3db7Uy-;goR*+Vnsg;SKV%k}8A^M}W{lv8FU-NVVjGZ0phSTT=u-M2+=FhLlppSqzBZMH z9k;q(6TdjoyvkY%_55Q$pmOh7@S9uUG2&Y+KtS~3ggDnU7^a2egrqf{W41p3nH&K!o3m)H$&80yfxz!k)ojCiM^lES{Hx(ie(hr{Cz=~t0- z7j0&wNLa7Y zgf)xSXi;$m{L4F!ltQ-2Tj+fyB-dvb1U|jjMR!>5v!xqgo z?}m3^lB$-}V{~k8inhe8F0p&)vH1rIL_+M8haxxxM?2wlpm7&&XmTJ z@%+i=DyLEX`C>PqzI=Pa27=MVklm063^BV642HiejnIzjhkFla#BQw9<`b&?&F)$h z3FWwJG^KTc(6h)m^THKI;aYTw_0g#XYCseh)|{PV>dO~!u^E^J;`dma&Nd-OMGT@+AkAR9}a#5J!AbnigB>mhU?)yK?>d)7--H*HDp#mZLt{1%#I#b>Y8#&v9lyTL=fr zkfPN##<^tq*#8Ym+amFs_}pqPZ>Pkc5lC6|oq$4&4h3f7SP)*2zchRz*G|}rvWq?h zwTR}Ml3$>D9*1z-nj@+0J>jDw*>OPzxMt?e%(!^ z-Dc?D0elv{IR_iypP)t2$1{f#w%ys7wbaIv?>zB=#m=n#>fd!v*mzydGOk}&rp#_ zWH5^o4HONRw_EPWO2dJbCxrncluY*Jj$K*fF4sphqa@9tLIVncXapw`kjnAT4|I1t zq!_fYLG~T}Y-w%dj*f86=GTrM2bFS9{LSZ2J7@nt#*MAr6}h>XyZ)-f;lDvC916o? zlAwgu*-RQsxHE|I=+pwAT##Y|osjwEpd8aK2n%E%OxZyT;TY|* zeq#g-Y=hlkILsS?554}06+cwp5|1=gizQ!*Et;uAt)0LVTpCp8?kC8KdPf42p0CL* zf%NYdIIpjpqbT2frhrt7xGz~H z^tz(CIHfr{;0=d^N_o(v0L~t^MkTn=X(AwW=Se~t^yi&7Za>$J?)8vcTG zwMLpGhPhP++<3DZkAYl@lNJU>O8(kUD?XywrQ`BS2TG@%;pa`A`X8Ygz?ZDu$K#WO=!S%1lip#GI(Qf=L>Su8LeRCgg_z5$JQi)1BGOxQ+J`OD5t#&v4^WyKUrW6@pCg@#BzInlyJ# zPZ~w&Z}JJ(I^iQ?L-t=CDv{9g#@vpu71ZHt+iDe00wW}GLNkhctcZSNewMC^G%bby zk}<|K>;r+hCJY;9<5^W^7LKF#P@j@0^ql%`&oIziO%WNi?8DmP!sI8hD6YU=rZ5vT zk4*kA3$WjgT|dc3xTKipfDLHzdBxXIY2t7eu2P zQ3y~}z}Sr;w^u}hV-T4xf6o39#=eYh@-F<7n){ z9Gztv)HWbcMOYJJCG>KFj5C3-V4x|(Y#o4QSHpsZOdJ!`-4xtQ{bbpV8g}?oO|+@0 zzkdgei3xgwk@y zi)AFL_ZEAm1EVwkJ0#f+wISiQq8Q{7!Bo`NTITz;%=n(arZ#Dz$wo4^J<)-6N`uvt zAdm<2j@O5K-sgLIwDPn)HZ%X92_YOI2vU5lY5I1jSixWE3F(k3Ehh{6l7)$zDaBI(0a#rM5;qV6Zd;@Lf(fYpIp&~w&ArC zXva~+o{|cC-T>ZhqlWxpFq6$1j=uqY7LmocY+sGjZBR;9#P=z7>@2+ofnl zTg?$6CSl?Fj;ky`c$K@r#0e@&fuZ9+_JIM|$+)nM?hu?&!da%uye(&LJ_heRX2?R1 zXc+j07pOA2+R$+zHKo0_p8>R%aOJ*{@g5Fri@=3+gRJbQp`o`Z_@-w$S=fCN_T~UGvt6nC`GvuwD`jqR* zVuJX5qc%|iqN4=E*B8~-z|;52{-HpirtOpL6A0lH?DZISdm@#2tqWHNC+Z3C5EepRNmN{eXesezI)tJ6!Vr4(RAg+J0| z^$$BJ16s^9E#;%Oe zjcEs}G1bZWQ&R>j01wauKE5}6A0!qf8DDP(p9oLYy9arMWP47$1xjsx(QAfz<2P$x zd+DQ3v++l{Cc*g=DqMaZgvPdY9e8M-L7>W#y;};WH6}GN7sx5YyM;1{A``XbI zHCtVV2Ww9~up?5>ci_fO@pm^X|I|*mYnncZ8WrZN3~t^42O>Pzfa!!ZWxoZG2@V1q zP936rvDHHwQjZD};ltY?doDbSr7K{2;thES=`M~$n_t^{} zadX=lO}zZhig*9qcaT?( zv}gVam#&=i98g@J>(Z9_U_rq!v%f4)Nm`m7)p|x>;f*>_)l%g!yzgCnaBvOyc$78x zm-e+Wv(VEJxoS~Y3~^J;_IPXt4kq7-1i)D)oy}?(`S;wf69(mZ9(djF7`=g+m1DRED57T10oN>2rY&7!cVMr9S4B}?`|f=UH`4kHu62Q?K2{kxntp<#|fA&aJkCJ z&DhGBikR3sV!apBM#E&p4n^j0O^sng82Dv}9cnhvyEn~+ebbkgzmQ`#4hyZ^4_nwo zF7AxO;p{;*eFnt&TvcrGo{ZnA)xWE&< zqUaZx)ycU0M1^7It_=IzMljpWv{S4B1fe!*GGp4yu;MmVdpR4eM^wi1eU>gErs$Z{ zx9P;9Bkc=y#AMiHXdW)D_SK;K6GvoKJw`xa&IPV&L7!cM!o|@t%{e!HhsfV~LJi~& zbIovAKc$+?!<;F>E0+=|uB#h7u(>y<3PM_MoPmn?T0)k8J-wF$*9o+g!nAu%zhSsc zMCs&0iw^)>nho;3+#(H4(v!SVC0tHc{t~`9(@hjXHK=m3$8~MnGDXk{N`mO#zn2!{ zZg@mq@SO^C#m$?J!*Y@1uy*sQW%eQ_-ONQa)+W2$&b%%{fCm(*1ViX0X|{~%?_qhw z^-RSK2#O`-cs@|4+Bqs|9*I00G3Mn{?&lV(e#Qx5Yf(lc_6IVnXk*XdW1{(y4>ch? zIakuhWM8rW#PdrKyCe9=!YN0RUtrVl})tVee&qGHeRYbSO=aJ zw^Kx%$vIuo(dq$`T)O`lzd)0}{}}BuqU$0?)r3<3R_e$6$3VbGE!W#{&wjBkFMZ45 zLOo9;nUCyDA~yzRZZ`6GfzzBcyc|u5J#j8RPRU2dgX`(|yu1-HEGpAPi(gyAM$O+8p|U)Pp=u0Ed* z-8=sAOPMEi#O!C0sQ>lM_DJpft;}aVVvdp-Vh1Y6nbH=7ZV|a`R`rlzg1!;Qyj~6q zL(bA6uN)-N&~dck8s+<|*n}!2K){fPJ_zI7JS8&ML@*#v?lt`v9gw#4gyK2wu1(aUI7WV^ zoNJ9g+D>S)91@ZpT0cLS$E;ld zvTim4&s^WjbmuOKcK;tBrTa#kOye(^`}WNdx|w-E4@Grtp!${OT$=QX#7j3m_5=ErOZ6618mR-!hd(%czs-a$09IiLw=kHyuzc@)2C>5~5?NQ`v$&YXN=Z zFCz>VfWr=d(zqT#$v4_u%VW@W)Imq|0nShcoJMmFkg&3f79?RbX z16N`fp8vpY%fq+zT!r1h$|R$MJi}y$YFG162+2@dv+cZOEu(OJ6><}*UxQM`t*+yq z{rC0^N}4(_9(k6e2W=AEvB95N?2>(O93B=4b6PS+)cMZXYHx~-vyY-zb#%k?_eVeK z4u)ii-Y^)O7{98XSbjyCqZ^EzysQQPr@w}qcq)ePG|H=WXg;qQ_5A>` z8t*~Z6WUjqhzYV!ci**f|0oPlTQha+Tg3*A>flTeVy$gbrRalYFx_b1?(^4-amp|X zlAmrB{^r3<4@bXa9{&`rM5Dcjyzld8rKped!*qa(tF!}~9ifMK!7JH=>vCUF-5Pxh zi`+)pg-Km^$odo6;Yk*xYdQ}7 zlD)SqMkrL$B)!VEsd&17a;$(~itHt^Cbv_d%X>m5EZ>H&th-MA*J<%c`40`@UCgp2 z>8tyMxc5o@OX^Ef2j|OUW$*?5w{rm=&-Y>0cP7!d;&=S%=30}`DM+#&DgDyi!e_Ew zl%=+1oi*+ztT$Kgi~L^9f=;m#Re^Vx{O?JV(QU}{+u_#JZq17v+(kIjn*NsFMG`K^ z>9mda(tu2h(Rf zfBp^>H`EypWm^^f;k8gR6;t()BKR-ZzDzECx2xYPv9JuufD`Pg?@DwC-&g}aLR?a{ zx$_UsfRB;II5lG`-BU_g=;*f&9c*EbWXb}lr) zy%4ZUsvEO?bHuLftR+CTRJiH4Ocv>e_keF|>#To{QS79`(gtVo5(fXu6r4{8rrd^M z?F$KdcPTfuYaa4eMPx-RpuY$z9ZmqQ1@Fc<(=d~=vfKlz+u)b2Tb`pEek;~4G~PEa z($b7v{#HXKl0E^gIfq>m`#We+pmLC?e=D&4pf06-LQbrSGs~`AVKJJtMzunjDsDmN z51fZqc+byxh?H~4*r+V};gAz=s(X@R?ZmlV%+6`*jnh1^Eynr0pK8{aU(-9^*JFP7 z8_^mrrGlWVgdv8YlyM3QW@|v;|MXIc(a+R0Ha=VbLYsUoQiGs=&{zf<9UOs;OoiZ0 zu<5lob8wdNraCN!AxVYWV54LJ`m8Zy7`r+PSG*H!om@Z}qXM~U=Ez4iiEwG{!7h~p zW+M3kAGDbvO)`3w4W~*O;t)SihE-cF!U($zBRW&3`#T;gmP)8+$;CIOSF_xtcW@Kx zQaV11GNFsx?wD(21{oOi zhW3+UKiwlW<^g&!8ZMDMVN`dd`Yi)ScdzaxpMp;vlS(y^&N31YN3b!0qRydpwAcF% z2~@+B7#56ri4Ae&RBXqjD9}nh&OwFk9>ZE%PIjakGThU=osYDM9JA|p2~QZ~eklon zhkW1464}&Afn1u@V579`x*@3tvDc>Y8&hFuM&^uHZ(HQAR^J77v!1k{&+a*O19(qS zwG#{vl@lkaJbq->+H8^tGeb%nzE4PEZlMw{vCbA$Z*{w;-B;_o@9*g#-A9yKGPxyc zXO=h8w1ZluGJ=L&zohovQb$^W<@swjKzU}F4XajhZ(#tcY^@M9>Y1x)tf$4A%nmtV zolJw_x7i2?1Dq_wuO_JZr4f-aH+B3W536;n8 z{{52==N#wwS@F;iApoc1#HG5K4$cpJ+^}>cw;xxBIby1kX1kuJ9G~JHeT$IYZkZ_V zQ8ts`p}tq3WE2QFqD0K{P~q`xWQonRX#ZHY#b$b$snB9qd!!Rpz0l>V+(gYNQPJ}p z6dqt$2C39G&(3_YW%{^$*bZaeOs{ZhK+MNkktrWB7rBgS8I)^BY?OXN%_!n`jx*+a zl)2DLBukqVYgt_0{%VM(xY0V?T80@g8di;B{iyZxVd)-KBS+OJQr2_$9AR#6d=t0k zWi$6K^WL54bq;LYHY_6JiSN^gp?< zXO?tn6U)|7WDVV{u$#HYO!RpaS;MsSu8gyaUg9vHU^en--|uADJBw2bu$_LNLiLca zXXeap!PT7#oK52N3x&^spbjr(hHs-w@NXvJw|2p0!MYFjI))_gHvTmv_;B$#(xYGO zNL6n@av)k#jVIa`ly5@G2UZ=NjY&M056VrKXeZP>;5H$+09vE6XX^;M*17+N;MppI zz9Do$ascYtlf}bU8A|t{-~{`5(TcNeup1S!$OIJbfVvHy&w+MYyp1d>GWDCF%r#ne z*?uF(P8hq8-+)>SO3hYS!)&qY0xKtu$Cm{6%VP4a>wWiBrEFbHrJ;g)wNH;!(@#mf zJ;yozE%49~p`go+rVh^v12``1GUlHq*b#{lYW&}_O&%QIVris3x}7W?Lg5ycC(h-` zzfQGQpjih~cOoAT4XC(+$UR3^;MNBdI^{2`I#yYAoNM;@-Bv*MV3@d9E|#2!lQN*o@T4?sJMP& zrqxMMWoOF=2*B?cL$}JTB)^9$JMcPUEJZ&<&8ToC{w0!SpNyOn!c_1P*3<8EIsQsxJB9hs%VeuNtfs%mOyGIkT1e!C$tlJI<9K_#hDHN( z?H}wcm&Zh9?zp&3JaC1#Zu|o#f|t4oQxkjH510r&!$Dz(nQ+@_Tax51qr=hQ749E= z7t1y=tvZ{j_gIL18o5#Rn~grkX8I0u(Z@KkQ-ne*a6LkFCM_{5PUibGXtj00k+-n^^l)|MuXaAsNVwT6GF?AzX_EP ztp&eXF)BkVG*vBtFAv&en*_n&DKFaw^GLWhYgbO5Ad{m)v}_e2w*$2Rt!XsNY)FV2 zWy16U1ft-4yx$lRC(y$ntqd4z;QFPG*9(dER41f>XpPl#q9te#F-X)apk;+7N_$1L z!n%l%Ojo(hN{M4omQD_JJ;yoz9pRxNLJ^M_O*^@io2#Z756%sIOqLWZ+v>W~UfuZ~ zU%2wO**bWeG2diY-e50^^#TXwBMfzs)uWp{J^myc^&$=7091=K=Xt$~n`vj9RC$|1 z?U=p%GTG`OvymkxgZ;w9m~Wir!w>t2&}Mq2C7S*ySWmrAy^%&P%W}&|vTEual#9%% z{gt1Xca{(L|A>X~>7(E$A(4HXs*yvMR2+&2S@QGz`O15&)RS9ZhjQ;xu z!L)R?^Fj}ksqCRCZVrlfFm0W~(rrv~C<7`pKic}=7>R$DiP)vSoUs1asCQMT;=XA% z(|KNA{5qy(v>RB z9^le^ggvLY`vR72VA&>%@z1c6{!onOD_#~pf@}H50TF+M!on2XJDCW5Bq+0D>Pvfc za22M$1=+2Wosj|59SB?nB?Nl6J91wetf>XU0(GJLb>)z#$aI=4s*_Osf1x-A<_Vv- zmWIG6IOYXuvU`j;WiJ>V6L$I?G4_9!v3M&5MqiYY? zb13XtX&kza+}PeJYm7UhT#P@?>d_4@j);-yQoV4Zdv#}(C|^D1xRgL|RI3&u&!QnU+2D(~)L`rQI?WoZMxIO2Pm#!c z_%k~{11Pe_Tu4ksRrMcpDb{XdE`(lXCHWJ^d~;;0+pWlsnq8yjk8)gmho`1bpQ_Ot zM6&&J4c)A<5Pym5+kei*k!OeMwiH=qE_!m$NjEF(q<_GR3x5l@7UIG22bflS-0858 zpl()~4qYZ+&5=l5qxt7N8CvR#gxSm9;_<0pBUxN!VdNET+eSCbEbqULB0C7U#u*KE z=fP#OHsyL9kK?0H*nJ$J+M@M!5?mJe^b$qaBZ3rYR{#@?O{iF4u7D>l3K;UPc#<_i zx8kTQV(NXL5jq?gP>E@vIg)N>L`Ik76Hy#ehtOG_5xzuCB4nmTREPZ}cx@;p#Qm`u zNN$P$OD4E%@V+8iTOf#q(e^6qf>jWDAoa31X0taewFmY4kj;a670ME=s0{$00@Za; z^Wc)e{Tn9>z2(t{HGnQ!agqm&{;=jw=+#61=l|#TxZ(@*!u$;0xwh8obC17v^0A-e z9H-!+B0?UA+}DP0qDvG!1VML%{d@wq1a4=DYC}962`rGxuQ3_#uf7y(Irj6LxKs}d zu}4ue8cx;Cer}WT;B1QwbrKVw!%qm9ocR&~SA;8`wK*oWa140@7?RZ4n>!;-;l@M$#JL&nZhPz$`kCF(|jt<+DMiJn~fs_8`>YMY4e=hhex zF5-0rv8*b^T85yzf3oW=XbPj}V=u9rxyFT&&vJ339gJGhi?}o&RlUgNu@|Z8SJ+B@ zz)VyaS8k^7V3_TNST`$V%Nx`Ti*o%CSAHE$aT4`Ta(VnK!a=;U&+`83xU?V>p(k*t z9?CU|x@q9y<3)tz$O!`F4tPx{pYjbCufc3C!5#M%K?;l?3vJA?2b8p!r{CU$MwAQT zD^UF&IO{Mn0j3O&i{O5-XYub5H#ea#3(})r5RYl|g7i3sm|NEFLoNk+qZ(C_fI0F1 zL&X1;6!?80TWu0_63iVzz|_tP*brs7T^0_}B_G(GQ)wOVt7wSy_~0{O?VmpFW|u{a zO?$P`CTr}^wmN=pZd-@)EyyXnnRN56mE{{hIHs-$C-!G@$Nb&de+gQezxDYq^EsqN^U^lyl zNAoiuy@J|klhlkVF3rPCWQo>Rt;Y;Y=XQ3T)$#+z!;`3^Pg1vK3JyO7Gs~FWE$n59!H2wWtXt~47pAXl=TdCvq-A4j&4>sDs3?8yMRlbCE%QBg}Q>M zL^%{cn^pq9$IrZLp5^`5SsMEytB2n^^|khMw_1Kb#aaegl3Qkq7e-!W_2?a*o&ERD zeC$nh3ZqvKzem_JL#nt&%rDN3Wm{~e@31uTJS&Iqww~uuUAQ#y`CjND?1|*tTpamz z>PC&NbPkv5MK^2xIwmPZwvs22`UWn|gXIhYA3q-<_h(;&KREp}`pA$JkQQL}MObPO z5334#N3|kz50W}~o&m`%+CTc8{>5K%(j~MuGva64?$!8Q%d6GxeR0=MdzMa;|A6VhlSDmpOa(srf+@mm#jjwp{6K`THZba2 zWHtFV0q02Hq?l>x=vJ9*b*D9658&29I2AwBf#+~29H3ZQEU1vD2`hTW3Dn)-Fs(p5gZ1_ox}4?-D_uhD>RbRB3~S*vlHN5t3ct>>w^<6JkNHMLNij)nEN_To(CYjw@np zUiN|O1rb7e;_=$TOt7#8rc1amce+E%G7tpA34ROQkDoCoEZNWsUQ9>|jo)5sGvUUnJsA3|*p zEI&wj7+-??F;pAhSE?6uO&pKsiN-m|58vlG&T#_%$`GN`P}fUj3L7j;ezt2oy@{Z2 zitCB*5DCr?6)10KR+$N3B#{=uif+wI+&9Tq=6)-tV|DwxT$*i9XUt8!LSpa7pbfj~ z>&8xY4X-muu_hL^P82IgsEUi}(dSuCe2Y*|yu+BUU0unR4tZ>P07*z5aap~@R(Tbx z@r7xcC3L;WdVQ6Re3GCxM#MKu%s0zgVTEz^9o=cty~N{U>{Bcs|Cr11 zS6VL8Kuc&Ha!n5%*Uwdt2sj6~rVh;m%%F-V->$xOx;{^ZpJpfX;m|bruJ=*P;?lf* zBzx4q$U%OM*)v9LWJ;UVjWQQTUh8{oVdNE-_g^RGe+<7X+9Fp$cbt6X7?(D@<#`qt z>0WppLDHpt!k%&N9;JEqwCU?lIIg7k_*U}=IRwRo5IqlrcMPhHkW~P6Ug&MKo@f|z z3k-*7oi#`EPvh2=Mp&xVq1WnkhnAe+-vRp&++RDxyE8?lNR9|m_Ap3(Q2_$T-Vj6& zFBH?XrsV2C3SbU=S#ZyG=bsIOu?eOD>LVv_XP2RJ8*+K5Mt}}?`t>}bYUC7^sre`v zd2qBzSV`B&6f@^3_2>A=c&Lcb*RDLmf4g#!~|DHT9~{0Ob;xW`&3=aAJE+H*08$gPWZ0GQ&Es~|F9(1GJ6%TSI$f6oDnK``s}ne7C&|(#V?NRDsT#Rf ztVYc!uwT4|Vbw9LDoF7Cjeo?;Grxr=E@v8Fh@3v?MY1 z?wcl4+F~jq&gZZ+_$G9-g4)nq?PQkw9HarRjDMaVt^R(C2qltlGaLKV!2LBzP_J0I z6CuwW502jC#f87ox-aM+;V_?IOdCG&)9E6uDQ%@JTjaH9a^HSBzt#)_VGs13mjs5Hcrbqje*e_0hk=32yng_$u*-GDMG4@#N z7{>#1?BxTH`JmsnUHejr}s~ zN8fEMuI(?@XQH2Ht8j;L@1h_>UFXC=@9_TFt87p+Q|!BnRJ1ITam0T5O+x-F+&}m| z{7Q&%-&LHlgK15WCbv3{VVO9Tvyq@?YqFCxC5>Y$&I$|O1(e1j6!lKBa`YZC?^IXP zJAm3C4ZRs^0HsxCeA{F0CLqFG4CjKqfKnw z4Z-v<^twnZvg6b?Y_5_-kyT37eMSOTC|6G~)%yhCN*?Y7;E@x$CL!JKHu$rHP~8RZ zkd~kp5$wLJD=C3h5#BqpOE@{#ml0VT9b)sQpODn?cVgzCa39PNxK*fie5O_i;WnKG zpATHmiz%-`ri4md#A7INF}^Q31qrhDLGG}Fko|(d&>%uq9!e{M07^Efn-H6YWJko1 z76!|J@S~tKzB?oj7(E6}N=#IsY!i$MNVC8RZ7{0<#aoc~0ga2*tVYY1$>9c%1p0Mw z%HaL=_GI2U&hc}?L;o99Gb%V$*TBU}H!AENz0b_pr&^i}fOP4QQZ3I+_+r-xyrMWT z%o=LXX!2Q5F03;-`a)lJSaZJ{sXHvqe5uc{(6DsTa*HgX$nD31?g+=lJ#@2#l7+37MyQFS;x6;ilNa7jBn$V5`7R+zGLzxw*~`4gT>P`G$7M-o z%6ExG{uYbDr@PLzBB>}!``peq{eet_%VAMTvFnGpR3G#6e+N4BKzp?VYUVLUFu-Qz z1|zinQ~Z(-Z^t4KltZo8E!DFvVYFczY?$kWeIcfu-IWtbl30j7!TqCmTNR!rV!j1Z z#dXGl{oX~z>M;TLB>VXUOC$Znwu#55eu;bg-{*z-zdrEsvyz}h>NYdsM{uYv){cJ2 z(%2VH+#bL%t4K&6DO@&JNm8n3nFwBBdH>s78v7FK`x|F|{x1^mhaun5ja(>#yWuV{ zS!vrN&XwWM$4@3gpE|CAu?G%N;T@> zc&x42ku;GW-|1K_X*7b!gm}4lqu~(U(Oz!0s2pyPjzHc7&+|fe)H;Ug?qdeg)-%?{ zD7?BLh>Cqm1+cybg(TF2Ku1;j0NNF=B6t*#oox~{47LHr9>{SKo(h1k;dOK23I>=+a46Zta|C*?>bsAqvn$R<~&aX_dc6!D09Ovl8Lq&xAP8TDAZt-ZY zk|yAa4%~k8;4NmyUTTSPP0L{Q_$E`KMHXX^agg6?X?p-h!dE!XEHfVKA9YQnS6bWp zTtSXgdyF-_Hj>%XV#kOs>((mC?1E-RpO!)w}=EL3a zj2aC-!d~_!6Coka_BaBR>iw(ycKQRRBhU8TKMb8DsOfq2vpSalyN1v0a1ufw#cA^Z(o0hS0DLknz(bER`G{n3pGzZ8AxRQ$hnI?8>UvJlH^qMP#y}!e z)k`fsjw)+i=6A{LYO7jvapVbBk8X6O#REiw3#4=FT|{Utd7H)9V_lV?PRNpi&lw`0 zxx>T&A{6jWkji&o(Kll`hT)=rg5`rvF1v)VGF7}!)VtKRD2@f6V(sYlE+PcrR(-@h zGi(*^G8-7~0)1FcaH&xZ+Rwhv_ zf^^o+Dw^zKG5929qsVdf)=(1EI&RI)QDKMKNVoXh>x@&Z9`_}^*UcK5W}j&yY%%^k z+v%Ga9c{L)^n1kpOL!b7YZ>Zhjdb~d#g5N5=$>FddyDa)AYlPllx(Hj46j%_Mpaxm zwKI6iG_aq0&~n4B8F^eE;kmzPD6)bT?oL`??D$iCY(OaeU)zT*w}{*TVYJxv7%D43 z?FUfMKo5Y`@w=x~#Z3WH``a?o!CBnk8ofPpIfx366qD(s)q~l$GaB%UN`4qXpYSfx`JNceS?L` z*ShYz5PzJtfmGvb*gk-yDcV0ix3u=h0||00Rw z?=um84yV?=*iHE^v66Y0OW_xWK0i}CAnY7#9E*?28N|UNvZB@yySLk(G2bGG`Q<($ zw4ZyxtD~Pkb-w_!(P#O|gWqSgF{++OzQbtXGH%Do;&|Pxk*geWb@G?{9=kO5B~}i; z&E@g0;Bf>wE^c+TKz7m}aB1wzea{;N(=u2~Uh5KkCz5Zso?pp(*+?gukDRdJe?l-* z5w~90fXCeDD-AyRzy}XHc;H_IN64!(*XEuC*H;D6ux+vUoMc?yuh z7X@usjERHLZK;b>8c)>p50zf^6a2T8~h(!9X#~O~?a>w({ zZE+sdD-G??5M#)5oZ|$@r*HDf!bDJOmG(=uJU(alV%kZ9YDR^X!)uKCrx*=P_bsl9 ztfHyTuF6m(xIikm*0r5()^H5a4OMDcWLd+Zbzf0QlEip$mi_!@*Zor?&$4;&4x8!a zE@AXAFOOGSvej zt`oADdT^M#$4KA`3$Z8INZ#mvAC3@JJ==9(zOv6FZ~yD^5x=u`Ac9nz=jp6%LkUrVDf|?6*Pt?j(78xr zG`;8seFpRiNGBoiq!>$=PWv6P!8!zUui+4Vif+-a3WLV10Y>lNf8(83jzvCM@D)&I z2AD+l5He#+2%_z{XnzfZzAE%odPxwS2??}Kaq}g?l><2iz7&i;4X!5|uicZ+)`XQ6 zCYJiD&>?A8TLS7oy)h(Gqk>k={S5RrLxQn7__}n8Ti~H>5Hn=$Q z1nwT9a$MYNRZZq1m)T6WM^%H~De|S=uI+cS>r95aJvwaLV(Z{-X2%BitGy0C5zh$Q znRYm1)u^J|5OIZuw!=EHpS;dQ{3!yi2)bDllWIMXB$=RZifmypQ5pzM$1rPD^=x0o zrxPQAs~qKT4ScMV40SH1JH-{Id_qf=uWS?a^pAealEO^%6%xre`W9kER&gmliai7c zpjgk~>$4#^#YD5bN!T-kEGc*#L5j8RWNx2xgkrU=&$zw!ef+Ld!Z&+xb@G?kNq=x= z5_FhP;B!UrI08er3A!h!8zriGcOU2=cbBo?DSj<9MEL2u%!IpJv{gOVFkk$5LtQ+3 z3&f{G;k4Sf{d1@#NFL#;+}dYdI4vjt6q*k3a!H7fr4B-&lpt(E`~`4bpi26CJP<7+b@60UW?N!HEb|6b8gAFpfJsBC1Ys3I&wx5EECH+@?U@`GS|z(Cvd0V+ zq&c9s%%%v@v|Sgi!Ga9>1uz%DoQDIs@&5&=&j=po--F<@;&ofc)G>+=4X5i{f>!wrCwt2A9Dg}@=!j4!Iz_>`;x47?5o6IO*hq;U_I&ga`o+XC?>Nb# zsGB<-erokX*8*)=^{y5dfKf{m30^p{s^fD8347vfXC9ERq&Y6`vM~BQx#H%~=QMGc zzQahQz2HrR=Gn~+z8V?{U*RZom;GFV@xbZscors!^iPO~hI=moguL_QDqC3g;4hyh z8QLn`?WjW3(PSt2$`1Y$;xpWi2%~|=*-HJWmAlr&wEr@@#g#r+H4U_zZ|tQ{8v=Rx2d8m>{!l(DxzvCLBnRzX-;h7_YY~f}4kAP}jlpA;d?) z|J>OeqK$2FQ)U`dQv>K*i!kX>xdXWn=pm4FLBQf8pe7o(4e)#b@d$VxYgd*ee?Jid z@&0P}!3uW^qPxz+2pG4acoRx7u!mKvY*6YA8n^~aW2jdX5XBs-F23eFN zV5J5>?;PhiBOW>;G!qI_(DPzUy%BoZBthYz$p4xM&UaOcPD9K$PO^0RBGyD*FQM25 zCG+&F6Q46ksh&rcRc0fX@Owt6R5PbOFOyFY3ABZV4#kPj5hPvipDvMQ70WUy)N=To zCs!oyAFlD>!|(9c&2RAC_x_OYuYQy7uYQxixc_hX>CrWotLv?sZQG0npWrZeW9a@m z1=Mx3iq;rYKhEDF?jJ6w20@16fydZN{kZS3xxiI6d#X_tqk!iO8D~uhQE>YTRFySc znwMfnew)V;rlO0_;~>95+&6iueL}H%%<}&0t?4e)GPpASWwz2cs2imdpL>wsV65YF zJqZrgL&Q6aVdhAe_Rm}m+Rv{Ma*yJ1^q;GIb)SH{{kP$e9poytGab(_64UW1_T9g@ zskX2V57-S`hGGWHu(*|7kS#)J24a5$=&8^&MZvw$Z#8nl zE_9FN4}!S|*`GpA1}oZqJ1PreW{!e00D&)@zQ5)^>)RraO*(Dy4*0kZ;QfRbq6 zq-Mpe2L3EWo)+0_z11H8WkTqm>bF6f5J~mQWWxigV;ige-CQ!_+}JoJbL|}G=)prL zmVRz}o`3SAAK{UlggtRgOXo0sn{ebRM}?h%A*g4;sDFyX{5GS3X~ttuvY)!aMC?hj zW#J&*iM`}?#$!*CtDT;G(-d0ob67`$zm!tQ=iy z<&bsa((EtsgIoWUr6Iy^-7~DFl2Ig#2w$qf>FSTU^20aFFgbWgG^NBg#nNDv9J9%*ER0!>M@i zJE9~jJH*^m99Oo9^-QsyhE7p%6BEG;tS7H`rMI~Gcw?)BLMvSIwPn<1XzJ3p~Rj^_Vb%>VJ5RQTKDd9j(kJe9) z2;#+*cyIbT*b^X~aKi1fr~*}EK%;H7XNi3P_+nu1fOQ?b5paF+*=DuXbp& zJmPh_54Ppjty?Zqh4Tv0IX)U5IwI6Wsh(#%FwMr^k8pUWk&wE=Pd_Tco)OlPw+Wjg z1bvf2pA&nMqv8%1;_Y0bOg@3z8N%a=kg1;ht=e>qwrq=67QeOmk#-!11d_@~;0lS<+guv^QrABAat|0k zrIk7iPwB)!L-PVOR)L+u*W4LI6{iXSn7)ezE`DIO~b@yb;im=B`ch%WmWX^nqjS~Q;fk^b#Ph`yds3g zk|gdoddNfb_>5gJa=`RpM`tMr)*cvDVa#ZZ4R}M1pG&)f9ELwHOdp5+u3JTsQZGe7 zjtHZw+_4`9tw~0fBxw*-+$*#0KWX`*YLS~ERHV{@O*qNAdp^P-DAZ4(|8B80X`}wgA43sH<*iFZl%#%w$<;T)#Vud;P@6H zcZ^~!*9udOg)WlHtr81$+x*{3{27nU{nC)VilA4^GN~I?9BSJwc{9Dj^NU~SD08nh zN?*4OmUr&4dF@Tqv{(U($__qrxOQhCWR<#RP?RcIO1s_jNUGS6!xbeK7o+D@y-sTLk64^+J1dX-me?-b#kBN+ zCXtdP_i2p8zJ`l}!=5o#4&Np2pFx&ncCrtc3|(M1d!5N}TQ^m#9mhm%HX-rFJH*<}UXO>iPjhO$!!0no^ z@%Yr&Sl)k~%j5lFwb}A6izBc0-Ji~VJc*Fk?IU0m*!I8&Lx|37Nr>qMG zGiD1N;byi0)dZB*A#)Mjb?~IXmZ9bcsnHgfZHPL-w*blls4AlRa*B@2HbhHEnI2vR zQWx9gNKZiF2x=WnEf1~SGFt^L58gwO)~<9|LJVq4*`^>XRtTh-6OOYaDp0imxF(>~ z(dM(=w3Zkx1HmY`9~W&nbBNTyOoEXHd3Nx2RuO6i&|M%efG;P`5rC>eDa*ItxB>Dz z;E3^iKfMP^gz->>-~Fv$=eZ007fa_j$3sbkyv`lAk21ufk24dwJaDxAB-D%wfdN@u zF3m&TtYKOvZfBTsHPt1y-adSfsnO?7-TyGh=;`nUmJdJV^61mVLQ5=f{u$BW1*FDn zWbz42Nd@WTiL!;*qbwg@2JcpQF8wLBmZ^3SlG_!eW)t5l2{Z@&L+s;eughWOGp zsUg{NUp1)f*kub_g0icQGHxAB-`m^e`;;#92zJXW0TWR|h9_7vKvYmB<3 zBS|_{vyLXKD2;R3D+=yK%r{N4xJ}RTq*yyHNBFq%?1K!?v z1?G!ln_Q!ia^hc@c?{XRP!0i)fCr#)!D1_*sNmiOX90X+aJNH>g}_(ycLjW(7WM1b zQ)353@*{7gP#h+XQUQYvcJ8#dU-kH~G?TJiz?HV}k51wAi1Uy)Ho1K1SJ^8HTY*t$ zm~e+~C+eMG`QRN&wJZ~%i#Sye?``}acpPE8&iKHJ%1IarT;?dZ%!q%EqrxU*fd%4$ zC4PASU+~Js|M+J*AM43CnT}IYr8*48BXC*M>qteBfiU?Icq! z5%!$HVfbT)xdutv_AoT9e%~cX(oVy9x~O(cnRN_h<+M7K-hiwkM8|_5n*}H!b{$+{FT8&NrYnYXPB`RbhF-< z81HoWktCUs@FRGJC9t0WMOJWYUW&CGL3gx8nD&#`ximYxWd))Vbedyy*fYZN;fIU{ zriq6xv7Go8vCzdmAz5|m4h82&Y*ExzlbXZ8mcUz!U|LyZ zyN1IKP;(3!-!F?Yz3C|7PZuG5OjAly^Bl5%LrkC8w!$61AHypa9t(~5l`B+>yVUCz z+x`-vutCK#(EOM2JI~g_YU_jA(`Pg8=Q%ihm$ASCg=&t8;AINc10vqjZ4ElHdiZ@7 z;xBiFs=Bohk|a~ArSLk%g0z!a?sAPDhNJv4Q<45C8UWSslgOk#kwoY$7_W+3Uh5}I zox|yQ)uJl@kflcVrzETVDAHb-H(X)%y&(uJfHozVd+)ENdO=iVoIOkzDJ!yHjM zJzK1{3fUxBFF;wM6_5&|7g*f{r3fAw++RO~0i-D$qU|`y{oY>fdTC(_v+m`~mVFop5~)p|}CL7tHa0gMM{Sv$T>sh%fODRcMw>lldys^X;R$YHB4?8c$gt$o7P zSCS`G%VQLcC*ryUJQ?^8VO|j4n8E?hWIyQ|c zRXIhSJn+$~epRi2v+i#@3QH!QVwPInpst$85)|LuMYbhO&0wFOk~V#qjtuXv{R7;} z5_UkeHf&VJ=N?5?nk34>!i3Q26iS<@j&9NH z76Y|m&>9?pY5|(5?{W#ev*3TFVqS%)w zD_V8{fjHEwpjSajgZES2nQoG+Q4wm7`D>MBUVi6Kh^K3};47c|wbo zv%*M+SlZe6x7YF6vQ6?uQ6bQ4cls(xBauf$$f;)(RdEvbjBsn~yF}BsQ6+g`=xNM5 zPO5Z3%s0+nF2SgOdZ=S`xt2ojaE7*wB3sAT@w(!?@xkBcQ&<0UbmI)O!X5BB{CFHb zZXexb@4^3#QYe83WYdRXWe8LP$hL$ol~E-xigmi1buSFrqT1abU**j0l2aD1l-@fnp^%QZf|#A&sKYV`QtnLcDqL-E-|a$(||092EA*pDVi%!qGZ{t8bl|0MfS4Lh^Ujm62V9CG7i9EEsAdGJKHAhAKrjn*E@I(S#0kp+1K zRaR}jo*jTDS+lkkF|v;K`VtwlYPybQ^(@(fa0e*$3cFd(gv6bu;G#4=$v!!Uiv*! z0jpC`sKd42{@u>5PZbbLop$M|pZyfY=8eTvd5&kE>|AehPL}E7@HX@Z_`%?TBtk9d zn$FS5hq$wUgE01(7~-$ff+loI&0x%8V|yU6eq;9%QYLKeUm=Ve?AAANN%`{Y|AN`+ z4{>Ab4HgQ=2x1S*u-hbHwX%Y1W^v36u8|!&e!W^*AtS?{k@%dM;pXlY%I*Z3W)LSn zH`iZb?cfI0{W7L*lh4jmE~u!1R?Dv&)v&=k*Kgq5*d#I(v2c6?UD{Oj9YoVv+1Iwo z-shy4MB+IyQpg_i03Cwjrqf-^r|k-m9T`-zL7NDrLJ}DXft4U6IKgQ0(+?*t6zWoDiu+XsN)8blhNYTMc_3Aq7r2iPlBv+@MIq*(2u-CtjLJusl_g zH$;H5e+RiOiOiHRx6Z9s{}pDWBg}-i-~2y$E8E<*lw2vj%0%g5gw#l+O`6#tvM#G* zrdy=JEfyx8Btb`}5mq0`St>om<@Il<&xV~F>Y6?bYJ%;* z0Zt0R{ogALLN?T-m9eDE6AxWJ2LBpV@?aK0G)Lmg%dq!WYauW^$Uh3^=}r~MSXNHd zMt8fbIgJ%pfmv0pD$K+FbJ@Gbx6wE3V3d&X>etX1npoh0O_tu|s?(NZrxT%2EX(-fSa*Xwx zXTw$r=C_+fsT;Q{aH~QpV5bNdF8uH9b%h4}K^G6Urza6l93|19(13?O{&BJs>a~{g z6a4s-FSVC74U??%qgAQ>QN#mDgq~bj=Cf~HX3jXKa;qjzvr)ON+@{Bnp>ddP##u~H zJj{*li+tqR&+@fPze{fMW6YNy=k&7jg}JqR4KJ!8TX%C|z`5m@D7s_xNE_ef$n2m# zqmVz&%H1#W$cax=%q=rlehkB1WUg=o$IMWvud=?Y+?D;X(qp&p$AZ=CTZq*)Tuj`c zRlSKxHHjXVX~=bSZ0xjzHhxZ~2cek|m@#f(VkCnnM^k3;v@KjZM5v){;wGJAuSr2< zBzSg=kYL67PyzP6K-Ws7qDDw%C>ctHq>@#)f~gjg^)h7r;oFj=R5M#-{1QfL6PdlY zkebvnVw=!tV8x@|brUTjHZ&^P03pGQb=<%p-%#5P%>+FOFe;svfm?;j_MemU$_O;- znGNoIYlT<~sM~c6XNe2q6##@g!^E6Az9|-=aR>6ZxKX>wOzAX_&wiYh?N>NC^RdC5 z>w_Qd|48JE_2bFokMpI)JkPIG4_&qt!QLU}$>%C?sQ@p$mwtR&Sveu=&1ymThPv3> z!^4a_&zo0H&LRiZ8{p-Da8p6fca#J7#6#eB zk(*4hTfMQLwy?}bIh?0<- zyH}ad&vWJGzh`pd5hkq+mYL=9%I8^{eU2lOYQn3Pt#x(tjeAae@5kMZS1>Y5WbFb6 zwcEIT@fd~d0)^~C&)*W6^7RW}V*A1?MA4m|IbdB{hyWa!2P4CtyGo+fnD$N%7|RYr zqNOyP2s2jGVB<7Cxn!~FNwh>@#WeI9l1WlcooszOCec!a6i5M)krL~Q6u7>5-#Vps zo2*HOVm-yTV^SeWG|2l7T9Q(CYPiAh_aihK1ZJIlV`l7Yv!fi<%;o?Ql1LhEL@Feq zS;GljGJfYcNnAq1!-`$pz`(cTfohZ+6!7c{PMAkXomdM9O^<>%f$+LN(+321uK`eZ zJQ_}g>V=DFQgB^f;(FoFh~y^UFuuaX#6#qZrRF{uG}5~`#r5WT5;S4FYopO0BqsBd ze0SO)YVx3S6%~as3`-uIFTrC6!ygCr-2KCnCYs@_qmI@Sdv)d1+`dRR$He1XYRb!c zQcXam)jofqzBOuD2(Cb-tVqX5hv51A)>BR=$5)dtgN+Uq-h{SSEN{0dzIuiWhOdh~5YII=!$PO8=@fE{%zLv=@0 zcqR`ZH`*4C?V@U{E^myHkZY>)G`$bbh!&j{L$(12dHB$I5bV&n{1@%VzxVr{-`8dY z|C0+=^E1Ev_+!kT>Rj7SJ^3s%ORCFZ8U{ap?jxgL!228zBoP{g*}^il;DD9gD;%4A z=)RsCCINT%uQQXKVz08oLq~s#TYFd0bptQhvMST5#dQTS# z!7m?yom;IHgYHA=1w{meK$$f5t+%zUcpaiG5GPeDYgm>UKzJEyAtaNGbcptDL%9Um zpI4@j{b)Tct%Ls-$R!Zd!%0xGp;~WYfzj?wDLA`Oct{b<_%fKoZA3EF3q1Y$=UCW^ z2KN3~llv!{()lc{cgRg>bo60?2`lqTGvox|gs?pUt-4yq2fd3&*4@L2QY8bG94u|p zL(clKR#rr8c|_$&H1~CF3TE~s3*Ezot8cPJ$0KT0|2M2ogBw86)A-*`bk64s51(b> z;SPcQu}}OomT6HP37Rn9J=YX&R3S2%hfksB*Jm&p)wP`$-+ z)BMghTr4BQ?w-kNG&9$%n31)rt8D4KrSGlQ;MIK#RBxy(?IHuMk>eQWp z*htai06%(%SXY8#O$v-eBQgX4vp`J0y3~o>PT$&!9PC(;IVUjMuP0@Zx~_WjPBM>% zMk*u?CmQe<(xhmgiCXQWZX{aT_A^q|Bt@KJBPG^TD!G7s-NKEg@Y%qMa`#kKN<~b~ z-688wqNn$!OHv|h*eld2Rdd*(K19TEsFU={lTFXyDlqp#gT3$G57up=ucl0YaweEfY;^mExUQK#e%3w{Fs!rIb>z z=~}QjL-Dbb_jGK&-zc1YnBoQ1E*#g=+B4yLPECaETgoqJ7_R2vk*@oaWp8`}##kh) z&C1Ul==bQI72bw}n-EQ*%Cudr{0)F(O+j=5rs&n;2t(;`x*>feT0Q4?!P zv1ydpdQBQ+6UctJE8=6wcSy!8-1;m}T)If1KDyeqpMz=!7Pdj}T8-6p*z^SU^KkOE z((v@7VMC&;_3RcQ>-7?)ZWQWpkX7VoYJW5d@@&|cfcYIogvRZE!+|41+I-{Jmoj~+ zGbJ5edX<~J+W!B=|KWE@9$VtmzxK~QAVLokX7W0<+VIC*Gs|o6z{Blg?g;MU2}!yu~ngNq%z^w`l~#2^yT*7 zCNeWlBis)bzW=B18xS4Hpv=EtN!eLhNSo z?3iNJ#)=h*Gg1vB5%~3vULd7{FVtzk@8f!&wuLPxkR&9e_zq-zb7ZAt6!cU>OC_l$ ziKUvT(WD^Tun5hB*}9EyDe<-=XW6&!VCu67sgoFL;;OD~qRT8bH^dDLLZhMDPWADv zFldUb?HELW-V|BSZ_nXdRm`MU{}t&zW<2bsAWQO4TsQakcb$)Sqalpqv!vlAa%$+bcUxNd6@$-!j13; z4D;++;FUv{n~0zscBaNgwa6Mv%89y#KQ7X9#ko{~PyXJD=bwp8O1W#rx1ZQjbZYA~;EB;!GwGZ9r^;-bJ3pjB?D@7u0L7 zT><|jy}f%A#4d+0!3i9hVbD;Q|-4iw*U!2E0rYa>_e=n_FcyBtZx`3 zs#>Hc!!=RE5bH4WGau!bf91dB#L~Nyjr^$Nfh9tR!8Nm-oqd`c+ZS0Xog7JqZtuO# z?%sJGKQTCpTyQ4USp4K8J+9A&ZgYD1le~8AUvp>kTP)8$&+5Sna5xd#*ty8;rxmba=hp+7rSTS0hkO(nQ1<#~27;?Dy*tgWUJuq~n zzV(*hBor+z6XoGwsOR7n>OB=XB1|uy}%M7;STJV}tBEEG%`Cv-5 zuG-L%NK(<;ZVSx@PI!2>otbE=`WE#PA(lClAWDz2){+ma5J6N+!6*Zsun?-a-A)CsZ~VP2Z^a798Ax*nnIXl6~dP12DA= z+s$^EQ-u7(_cm!3UQlHV?Koo-vXhju;x{8tmyl^7>g>mURG_elXq3MXSeIE zjdVyg)uIzpRh~jaEoVn+U%Sy--~4uOg=-vY4t(l=`7J*Esb9o2-nVq%!6iZy8Hc@t z2y;Zzb_>VL=UCZ&i-qFx0jdT+gjM`-pZTf5U_jGw*{PV&`DU*X_8-)y%yKAmTpTA|h$f6HClY*xY~5e*lhSJWfOu~Xb66HK*_aiT?N z>ET~3JM6U)i1n1c{03HBLQ7+^4GSp@l}&Y@rjhMq(6FdwLiEIF3$;j&X7QDXf8A~!vUrzsDg_X1ABJ+JSGr+)hJ|C}sxr-uaDP2Etx zIbxz(NV{Is98olbQXSgWq79VcU?Bs#evc&RJjkOefqoQZ4JxlF$L4X`oXjpvKBfG4 zqAP>1Lo{_s;X8`FX(xew23?(N;C~f@c~zm(wqe-Kl(7ZH0$9(EH-b!eIq~)%^X&QS zW2+uJMMXX)D#NQI5{R0bn-iE;i9GyJN&E3o7?FsTu3EObEcu>| zKf>!*)U~ne`sn&byKSPSVxZlV5aMZda%rz;ke!zBwLKC$iy7m?$q^(eTbXy5Zk!lcXA6ctMQSPnqDz==nCPiSp|1A3b?fG9 zyEH^E8S#h^x`QFr30g=EM@}LTi}e#oSpM4~wv^fbnd9b!Fgw$O%)VSOvcOgguck(p3;Lt;H8F!z|+pFxv4q2ZBe z5t*Pw)!iiLP2YDrv2~2yz$CB)zP{f>gc2?4(M3hJ&g`=v;px+##QYHnUtN0oMYawx zN^D`?gH;C>#)w*{eeQXEqfiR_o~)Idj>%osv~(LPe+IRA+S6DAh`_Eu=^W^jYV^Jv z<~ilX(-IEHw^UY`{;@7SO&?^emh{h6q$HrM@l z7Hv!_(lv}w*^$~;-%|UwunA|oK6b5YQVZK9wQrza?@#=Pe}{kc4}Trk9vswpKjMKU zLiYnrXdEw}W4pG-`PFYw)CKdUlS~#4Z)NG4K|Dmev+r$Fa@8G=X}BDjdx3QQo7`A? zmE&_C9;h&_tbLs$b00<<;qIDB$!2|r1ybOg9?(2H9jVv``lX_U(5l z1;u+>pDtD0g&GrARU#|Wu_C=qAnN+vwn<~djjTt{|j z=wd)N(TSTa07*(kUui!oNvRp@%m!@vVrssg`sCqetX@KTs27B`TQ>oG^os zDOt}UH`1rbKuAGos;RHoNRc7}S;LBo)G{#;6KfT+{v@H1koC*d+#T{GOdJn`k!TPa zG@J|#d%t~5M3*)xUMTa}hyDgfN~h3=dYp2O%V?F1n4)^-%E2)+l9D!^%Op2mLT&~m+wv=grTZRGFH_ZSq8Dd$O?~afOlP8 z33;?RVAi@(6sm$GcfmPO^L((b001BWNklsDAl zJ~$Fxm~hK{@y-``_S9$Yi39;mXBXJ6t#NezMQ*OY!m;@u0~8VJcBj@glamV{;q{e2 z=GMlmEKWaz(ab>GtE}MKC0u*>WJxvhcnOjIpoe=dz zO`*M86UBjj!N8K8HjkaCvy3FArr#x_KSVXVLJ%7miHZ$HldW|h1|!kP z_!)MJ>lCX6YMC7}-UO*G(9WFXKY0F^aP`sey`dSb?*0|coc|?JGawdV9DW!Mg)Wu1 z%wGxOO{iRjx}{oIUP7A;Y=erRNK}G)#s>S`XcE*yy06-6;&`(Pba(i2$%-Oc(Imr( zl7zrlfosJV75RuaR6IrtT1Mrc$r$`MAkKrf1fs9BAyY`#p|K0W3=GK~Y;V)qgZwct z7a+a~=>ce6q)JnnYeu-uqZj^=Gb?-Tvs`z(DBtJ^g^#ZFwwO|(T3Ib@O{$8Ko~kOz zeph$c^`X?{`>QkR|NUB=Zj5r9wqx4C(y36Do18bi3glZ#pA_q=m1jjtPWIQU1mM{QFGg?s0_s`F~HSAgM7`pFLzv?;SilqNd-$5;N$+WNLqos=I|5 zWigY(obwd)RFG(gpJ`eXVbI(1tGgkIrY79%P$yr{k!VqS3NJACfou;60!3U}W{aw{ zKSL$6L7}0JU#uy^NPt9(3CxH@@ALqK9JC=&#B-XuyNze_lY^~TwSMaa^6RX9^Z#WUkRaC4>3@GxT?g^$Lr&lyFXaqeE}MI2*%hDX!}sG zAp4XWy*~`m4T$%^8Z%WT6G$$BS7=U;g)l5mN2@}~gxp7)6K9$tZuEU$WeklsKpqEe z1Y-;@t6VaG=?om)g0#sBx?Q5(BIKTKR*)Dz{tpy)zQ!}>uQ0tgy2mw6D6Gkjv-562 z85W+{8(aq{Vsm#^36ke`lzx4bxEj=V^WC^jcf$$Qh<&8P*_H7=Lp2B9Iu5gYfaq;` z4ck9Ef(bLni@*Ax^LPK|KN`K__c}kTuBFrwGj2p%ED^n33LY-yMdmKgnk4I(q7m=<4L2Z5k}L$Whl|8@^e^jxr>v zNoXW(ax@C9s*@e%l#M}?2q&6APn4lzw*b8rE7A=iAuW4>wjbP9qu!0H;D5E*5*C=3YRQf)A8 zOyYUE2mT89AL{&VauyC=Q@`68HL@PAL*a37x}3_iJjlM0r{FRKw?KcXSIBHS%GyUZ zp!OyN)3kL@TPe`Bj}^dZhHROqJ0xi6{?|Es>2nk-o75es54kTjV+broT$VORPfK}r zQ|D71ug$5uiYOhwJ6c>Vg=%%Vfm(i44 zI%tW~C`}~Gh-MqWhy}i_W7lJxD35Pe@0kp>Fs}6&m=Sen4?zwow6=4vXBp_JsUkB_ zge5c@_+}MN>R54xBvk_I!--JKhiH_zR_$Y}4QIw0i7tCuXOS&fdg^D8)obh=TxB-9 zfTfT3(Q4u5`n}y){GieQEo5)d}jhCLpU>T zkS@9od%KV{C&G3PXpf}tf=W^kAXfu-7K|?U;J&&bQP@Krx2cXIglL=n;rkP}#q zw|MrupJQnw9Qm#DEmZ|7Rh6hX(T0ZC&rSef-}j=)*DRPIZiBnf~CoaSXuijOS3O<;qF`9e(lSc)%wsAfF<*U zT4k({k0u3$x{asr5Se+Zc7zq_1Xhd@YZ!?}H9PFY=MbhF6e9J-5im5FeHc<=D((T9 zbcuYuW0+_~db2&0qNf_B%n^!eThAj9Ln}ghsP*^)^=zvt(hki8J5=PM)e>yj0U?_h z+7wl(gvUmrp-GKcrpTt_bBheson12i#7L5(r-Eq6t-nMP8L9#$MM@&7l&VwIGF#-l zJjxFR5)qT=5!H+uHxW|9x2hEDb8Ql)r`k|5I1H_54>y=-i@kk2>S>J$sj7qkcBr8> z^W4&z3C?`@r?F&>eI!%aSuU-9iANSbj;X&lTCE=htaA^;EAPCk=jy1)jTWBVhc&mC zEVYmTcQeZ9xDcxpjXxT4;ce(JRrxC0(P`C=5;Z`mkkW1#`^q=SeF4%{<-?Q|2LcF90@jK0J z#bDe7(}gJ0CDzqd97tgT?1w>E&FQtPy{}ixL41+NRdORUTFZ`L4>P8+49ADj+;L#ZUh?|BRpg zYrimhM?XLh9(W?OJ){>LMs;4j`mcEY)MrKtl%X?Cc9`j+CUlZC!8Bar*k`A)&ho_R zk?T#;2t8>atRoN{V3}Dm`O|#vE5Cz&E5b}i>sKt9r=soPGDRZNo|`Y_Bcy(hv^pXV zFtjp>o>DiHW-JBGvGm~=zKSj|6YahxsC+A?uHU6xUmB=Xf$|}$WK{%)lTK38Z(}C8 z``U&?lIXJCaci3WjnfE%dFosbPC56UB*qEk(fee7|be*9-Bm<8V6{4%;`u{8MxEZL`j0FA0o8*K0`ly7Wnsn_1i&>)yG1)OP{K#pMJyw^3fd@{5$Qx zMMCg}>CU<4LdoIc%+G=`#8|L}*4HC#Gz}PC3XxxI3e?Ox;l${gs}Kul$IH#e9T@nq+I?Ag@SN zqQS|RKf$m6liy-#YD~-Y0}SASCPKroy?>QT{VpGSvS#gB8NX<>hL<2u*A^JSb3L0#KHW3nx5u4aM(*JFg=0I z-HpgK%^B|ptz)1kVkCh}gomeXkxdo{CgaRR$4nr0918XRy0=YW8tfLfaD$1Vl^M^8 zAdL|s#E5%IWYygw=as2vR0f!5jrI@%h;<($Ewf$P#Ev=_M%ip9!Btc%mvGugl{I?F?6_8U5&GiD6 zOI9(OMv#5*Yd}VoR0=@+D9B5r_Z@I5ukeYleUW@)`1ZDosts0iRg0*S?J_zB=y+JWsns@HE2|3Y6IVy;a#p9{&aA3D9VV_elf%d2TX|^Hd&AwUt+*rp zZehC!Kk?81D}Ldx|Gf{qf!+lkXd*O~&2o3k$8M6B?ft79_`94~cw{V# zUCU#qDaMFV_lmwkMjoM-i3ZZ*?a082bQ-QolXruTU>d-XnYP38IJ8U%GYx?+d~7*n z5~T}zsuI#`nUH+rC{_I?h2+?w>j%gW(KGcR4G4utE;;h9ynyV;VX~rAclOZJJW}Xw zT}{JPZN;h^W2R}-i8eqAWq{~}WvW>fA}b`gewkSJal+xIaFLOcXoAS_$T!=0ttwN# zZV?$O#a>Ufq2aSFWc(5hd!I}&T+ku~#7ooswU>UGf>9U{<7ezi8sRRMk!7Kz1i9b2 z`R{oC_@{@h?uQzs@*Gt|WqrLDSZcs+_pdIY9$-3%R3K_gEUZncOfsXX=S%A<15BR) zeT<;p)?oit@TVEa004 z@i2SUn?u(T#U2fRhxzgoY}I%9#;c!aYPCwkiP00$6-K&97*z1fF`gaa1f3i)Q)Zj-7=vZ_$Vl+)7&kC*1CyF|7dIUf z=-35K3d~3es70!i68BVZLL+Inom%TZ46$h78T-t5%ZHO7O;gikMnbHoq?+uBA`!Ak zB5Jrn0W-0vyCGA18H_|jj~&d!Akk8sz`(b5nXb(Zyf@nwZLzo+YXgRlMrz|}71AMh>`BIE@~IE;?CDQpX~U~@rtT8P zoh$u9>2d18J{MQN$Ri7%7=Ijp$nemUFLEV2m zh-bHJ%B9&D(!xl#A>IKo1zLC2$W~e*(fr=WcVT}G%q%$D9WzEV*P8_6>QFe-X~SvG zkjRe&g113D(ji{`m6qroXb6bT!Q>*;-hh^w?9`EFCRz-R1-a)Bb%@sD9nN0+A`2TT zEY(P$*!RBNi%?i_Z(*sSp{hzws46@#=nf4Xhv-sORiJ9k!_;zzhK}2G)`P_{t*~lF zjqEROscO(Ladm5bw`Y~;yS0tIg3>h&gPuTM*gW!!pXML`liwg?-}}(V2N=WyO@sg% z!5-%~U*qiZr?AFMa&;qbPf+o9DLB0zM6J~NmE9{GojB9J%U1uYPw!4+lj;yZp(KsC zv-vINXP)Q$?F-y|{p%RJ`+#cq#Cl3C8=@!bqG!nhMv|eft&vUVdoH-PEK<=|aFSkq zQ$oOAc85~1)O2zl4}l_IsgU?~jPIzCdN-M-qOV{k9U`RC*Q2%&8A_jP|iQ$nBv?heTH=@B2YZ^W)o!jAeZdBk4D}tdsHc*irL1 z8ws^+hy?7g6KRt5%GBLnx3_q9f^*ORbxuw{!Z2)C-)1UzigNA*m)HK7nL;PT_w?*X zxwi3@v1I7l9S*(Y3{{1v1vh~^nejyE2ZvNeWJu8@Be#`dVk=)v zUsBZ^kq7^h3Pnp#4Gx3|0aTPXP;L*hKh+xmt1m-*8?5GgpKL*}1v0OqJo+K);9UkU z*AZavZUbFa;B`PRHZ#$Z@gzuwEU)|l=dN7Eic*^QU&MNEwItRR*_ho`Lg7NaqZ86( zXB>U4tg1HS!csjO_VOwNtb4@1CvvOg&4b zzDmxW!O(4tLngplrfLglBSRF2Lz9XS zNt75lut0<+2_YJ0dqS(bjV4J5w0-i)U^#Z20ioCQ`DwT@Y3Nb2Yq-9JmI@*xB{I}q ztr=@$$y|a@pdFA&XE6dvEfZoSTF`5s!6Eq5FQI%Lv(NpEu z-y&y$Ss~ZRU?g_?Sh@c2Xpo`%t#!0OrRtPQg-?2wp{YoFGQg}@?=oPF+m)h>Z(_zS z)yyVRfcx~*Jp1s=llIl>3HcRbKU=*UEw=gxf+Ei5Bt%KGkk;>0J8 zduyyG7GJvOY7rY&<)nZmd(PPxnkq-7i#bmPM?k)NPll+{4SM z){q?P|2l)cFZHs{S;3xe{_Jjyc@L0(51D%_>pLn z9hpADUwrs6`26bwkCh@Qb+ybIx~e9;G@_kxBddth`6AdUcsfMg*Z=0l`;C(N{e>O1 zjeb142j8B6=SDafFM4ox=Mop^jzU^h6IlAO@#*r>O$at1nN+Er^{y9|ECQw))z3zd ze^{+chJ$X+LQ@3Ce-k(X+K4k!w1Of(4KNx_6Ub`E1X9{coL%t2eXO_Y)DJB~ap#MC z=-XdsVvP4vq$@%)OeowvJ++@xBjlsvFV?0y?W?&RmEU!ZdYUnYz?wekahmz-0k;!JX6gr;b=u*^o~ zcAE^%7ml%3QQDwlZkhF)=b0-%M#JCbi|79k=em!b-22_MktngOL{iU0NJ@CoE=E$v zO{bL~k5(miK}0q3jr>UQbT{fw*mGNyjA*DwmV+lZDSD;0Q+4|>QNw( z!-?>msNMdu!$}T|6%wsHFu`WVde10%3$bV*gpbWUbvMHGP3%zRtR(BAoSIaa_#&u&#F+Y&$UTV3r17aoC?`?^%kj6EwJXH^{trDOfcer zLfG5Rbi)FktpZk|6P=++h!VZ+l06K1DmapV0&VdLj!Z1vBMFlCwA`pRSrEt{$`Sf| zMJ54n%vtY5UHw!{_^}~joUQj_xuLv-E)|rXXc#UQ)R=t>=PEGKb8$~0x(wK$KLql^ z@D<4fqN`97!1L;F4GE%o6K1-=3Z$DVqs;xuE@MVZk)dvc*VQDN@$7IRbGi+U8{kjS z6S1)e&4~_$c~pR`{qk5rG|3jHu6>2_?i~*DYTUa8Wrd-B4=kmLdFbZo%8hTTYEiy1 zJ_F1S0SV8%HCkK^YTB!%0U9P^He*GCYOZR%jq;aGn{LySW1=+L%W9+DtNXv}J0(S$ z+#i38U;8h9ny5q`U>UZ zDK4*kzUML9%H!G-*k+#D!m%DQv{qT^S?}%rHC}u3_pon7XmV6pc|2N`1{Jbe#2>oLMCkHPt@{9Y7?R!0s3%f=tN7^ zSbt-O3OltMOyy3EB{^xDpmin7&lJwGQMt@) zVfZBEFfz2WFQ|tBCHMU)&g?(BFOInwM*<%0YI$5Lz zFJO9?`N*q($nPJs|gI_^8NADEJyI1!gBPW0-fBBdA zdw>7GWU4qm?&$-(dpz(&==6-m#ttk@J;lYFf6TS@*El`*{MhGcnt^HN$huRUJ@(T* zj|E{BFW4i9s%?_ARa>Q$nW7T;xOR#C+8tKCkh|aeO(yr|?yFsuXlW0TNj2GS9_G zW*NVCM86xB%wzid?d3+Tv!QJf+a@|iTyMN4r$vZb0(7L(@$?@T--=1}bfiE#C8h4} z;06U6&VD=Rt7WX%Uas#wGGm9G(i&D|AW$Aac4&}TA+A?!I$d|RmuO{ttJB+|g@7N6PVP?|TtY z|1iM$hIke5001BWNkl8S#9(bIgG8+`d^8?Zl_y+lj>YSP_CV5Ct+3cpiSudKRb1w1U!p}F z3I;e&swuWK-|-)6L1>WHm|goUAA0@Gv9S<)O`-78hMKB!Ln!wVm{h3AvBfP_p=qJv zsOnG)t@QS(eMPRiZ}`kaX?7B=lkh&y&!=U`cyzsE$k^`=4IM+q>HS`J=>E75-v-Z8 zEwt?k@EaYSkYI4V5~wfc`1}9IzvP9-K7yvbyL0*nxHmlTM94Ba7o10q{^UKAp;54{ zJhr83yR(yOGUtp;xUu~fx7NN+DZ9YuUim%5)(slsI))kd7zp}y+}5;!a!78O=mG5s zrxr9RuzdCHl0p)j39hf9CxRXO9rDpU4Nc<2MNFwKaw*zv=V;W=BM3f{}=!d188Ml8OXLIxvpkjl|S3A3Dj4Pkn}x+0l}G z_vS5f&Kx(lzfLN3f_V7cx21z^7Vx7QhHjIyXV|J`c#gMyo2jCh~ZD%7q(a0ZM#7(R%m`D3O4-il%s#wui< z1FLI2S^;Dg<(#OXN1H6&{2X)JUON_|<-QE6s-vfeS8kxA&6(fsWN)>QZzuwi3Po;G z(GgeoyD!(9Bq=l%A#wv%5duYu%3b2;{k+=8afXbM4tJ+}4H^3hU#ZqHZk*fhtq|2* zRXGCnS={cHh8a3%o_n5u`s=^LvDri7R6f9af(M=m_2a!DL;cW%&Z+4~d1L+Cyz%yT zF!uvO!^Gtj(kNo3os)FFVT`ZXjJQFsyK1z)*d=g~p~R35*fV%$g~V64oKmEuBSO~l zT|uP1>yK~)W1v0dq?7pC4u*7*q{>?;fqX+%h&)G4fn_}tJ=LgW1B~Qw0@S;WvZ_2a zj`V1CA|s(A>cbA+uy!`FwOisS=GM1_L zkRX7JRbZ}gf`)&W#nP#ss!umwd*}C=DLl@4dfDyhhe<_4-tCB&> zpDPN1uAz+GMCpSpAIz!V3@~FsO>OB@%5x~Z3ffUfN0_`u7ol2*q`Ce$P#GaDhwB4^T$9r+0^-TIUFj0`0*5*sO7lMNCrCEsjG zjZ2On7P9ISq7fn_?35Z9iH0w>aibhw#>5*kopu=dUAcWb#t95&)(TAlx*TYkHSB#= z=^Eh-ZAUq3&JITG^u$`Uh-%9XT1cH#BxtflI%9I4OUAc`x_WEP<%de6&m8BY&whqU zdx|ItxW4^8P7Wa}$EQESmGwX2?EFs--S>i1=2*GU1W4}l&}>IH7bO9g*S|6J`MPGX zvhx=_bncma8r1C$YfV3ggvug-2C3+iT$Xz z6$UD?K3D|CnUo$tHV?+b5MNSaYSDLd6J3KeR3hwAx-sv2P%qFUfbNI33&lyW9s{{I zIDv+#bV+HIWW38Ip5aV+`s*~FES3(ur!oi63zk=GG%3jl(RfiDC{G+ACBzO zRBSSJ4G#yeU5;|37G-6nyDfPSSN3QaCW@=zXx(a0#4?DtvP4=c4a4psVPWv_Li4;d zd5MCthOW#KZ|Jn7JQ+(=(}oF#kBXohcFc_8$(4Wr-J&6R7^X~1D-vy`P!E}gi#Nxp zM+!t*DI7(jY1jiqRdsZ1#q5Nww)83yGdbYuU5|(ekBF&~tWQvlc1M*QL#1(IoR^;X z6~-ds!l0)b%uFtFIU**#E{>?uR27(L3eocUGBoAk3G%Ov!Re|XMacjmO4zV`gqB#+5^-Fq zAw`tgx+8pnKumVkZh)Kxdqq5EMZro!vfZY#4KX1W&w6X#G(U$W*9NDE|*hEZqsK{6(oQvl~ z*2P#$LnHK zlh*)f$QG_L_(S%qOFmRL+KJXMHHW5di;1+BM#5I8D_g|fG0cdL)co)yDAWx*;^E1F zEA&_KhK{MUsKtsXZjw=XO@6ApaOBQXNbO;mskTXD?>@?&j3)&I)sl-8&{FxX-u`<~ zj?Fr7eU`WqVJz0`oP9j^BzN~Ob3FGXExU@Lb=!0^>BrbEU15H#HyE{P zm56AAu^*Y(0>%0|nb^YU_tJA&JGeqRl45l~JU--S0SO1rRRsA-TaX668X}r4sqlVA z5UYX)mB81cs*2ZN9%A`(yb4hp_6^}lbgCkR(?j9xLHP!llL#U7vUprVXrx;)zyh@) z)Wq75&&n-;od;#9ON@f>Y!S{{b-`V1$8fZ_)d^+==zukOUo`ZCMZ!#U0%WYZ$_y&~Kk5hY-@OapC$N z)F1WlpREYNb+jdx4aojF`{%n&>y{uvqs~OdgjnCn_3m;b1=&$>9-rsy|Lt$_i_iX@ z5o>;gj~ajLiIAbHB%;I5LXRzdh4)wflv_J*aB`}vdypj=*XtcO_Oah6@$Qu$P`!2q z%^JMjYsp0sDC$6}X3#J)lq2hmH4?~&w8)yejjgz$dY#Vtr6PvgJqyR&sZLeMN550G zVX0`AjD$o}x7#9Ytv&H%_e?=)w%ic_SLJ(*xpUN&ZB&Ogfe9FaKp^U)MamhhL^R~y zyU3d0Re#nG*3B}WhHayCS8tH2MzQ~Y=7wU!`22-tLDJ?RU z9G*l+R6T5*9=h$ybTvmqFW^ZkQlBBBVI?TXb}%f_cJO-IWCE__;YnVndRI&~sU{RA zr_b{2sb6QWe23-n3j^EN)d;53>iA#E20@){{3Sf)CRL=qRM7XoFTZHC2P|vhqGX(kpBql&T zHryc^knCNae(M`7-z#@oRsE#Ikp#KPRNz!yRA+phP$e!ZJ0J+j&bSaPM@&I>rUDao ziYxx?j0-|CKO)e(O&cj9~u7E6QQW4lZrZnWdJ4<^XyjcF`epdY27VvarHajMBYC*@|zcJX&5Y$kFSul7lww3R$?s-OFgu` z)FD~{1gki7TI0j%!7$87o(ck_S4ndvW6;qHf8&qs-<5yd`t3f}z55TTeO+G8IEC)(bu zx+5sfb0fTls@l7p2wYTun9Whty5H%)8DFHHJ=UGn^3-0PjywU)?}7eIcup9IR$F}s z+%cHSKz^nBoI3_y3UDBnhr|;gC&SkRfJ40aJ)VF4J0qvPe4%hI5SBU~VsW%J4w?+l zU+z{>TuG1~A5C2l9LW>prrcNT^2Nx-gdkC)sxV&poeXKHP2P~iR~(G>4N5Y-5L>3{!izW$~E2u=N4e+mAXz@twA(9|dwkNqO=-2P*L z4jBrflQ023mGcy*o%Hxszb|gNYr#ufpBG9$-|XAkVO7h!>~IdX2p?-m?{l9Pt*~mal^|} zR#q^a(HB#{ebm|C_V~CbiNMfd$JmhfFx(8ToG0c6CS+W29O1ScYxI(ynsTpaI<9Gm z@YZB{i2{&-XTxi=x!_w0MU>kIB*Ez;c|M~3)g$N8`S`~QVco_w&T zE+2M06htVl%b1PP(E^I1^W=%IbNTMS$8~KIM)!ihRoUbH%iqJgdE?MHQ&TDvb;Bn< zbT5r*$uq6^k}iDseOPbwM=QCfk_rXl$VC4jq+dumjuo^SWY9jchrJ z>`9d4txhIZ5J3^Mqj>Bm50GpR(Nz++N~Wh!vuntbj&3PKTX(MH(b7e`O?5K# zOLaV4R4oBUwGdZ&xyDN-d`9 z6FvLX)a_0(ysfxB&d-+S;9*co9x!n*PQ(=Nz2r&lYLS5>8$G6o0M)3DC%Kqvy(5(F zhh->Ced0wfo%$l0tg*KLI_cO6CKA(>8(XBJ!_}7Q=mabKKjhitzt;1(BuR|LkFj69 z%XngVRmopA3=ONwUUii-lg}VY5_k4K=uD&8rb5+hF~NgHgp^G7$My%hA7o4suQ7}W z9SMhc8ojht?1m;^*YkKyf4q zik08w(&g_kvsdpCF?)1dT$T!V=frfD>I{aBN}do1HzFbl{`kE?5){O}3DJg{>uZGo z1ws101^2StZe5++=uVRbVas5vVsb1~5hQJxfLV3Kn7{8L?FYK{qp6FQ-_-t~w^9H8 zC7O`f5`^gSfB5VCga7h>AZi>Qh4ctNT|5*-=vYqY`VlJTilX!Q^3QW+?c0>2v!tRq z-n#P^_uhFGwNyre0asxkj^bjeE)D9qcrbL_dyIY7Nm)x+nkyw=*X+$KU zf3Xx3Q`yBfViZybs7{w`8K#2VCU%C|6_+;*3)PW{HDl=J4yq$li;79FV7pFnH6mt` zTI7IOGb?NjtT-*LhNU)0)_cQw0qogv9)I?iSj?P6X=~ATD=VCy`V4VnjN7~49Z7^H zl8d~%@$W*P8;dWolKk{IAGrtIvyvacjIhBWe@BONX@o0bU!Re zl)7Q5){s#LTcuM$S6pPK{7-z9E7Zm(^3j#$`i<*)Dhn*t`_RCPO_qV^~@W%zaX| z>Coj=N5)bdwEkas01bJMh&wj0E!9)eYzfVg&~3e^@`ESHM6iA3w9gE-L{D;k5G`*L zO`fFOnMR4xV2x}mIq+Ucp7>*G4wmBJC?3(KiYt3Vt7%GG69v$ewivG;qav9^Yb|W0 zNz@!Z0p*jRpqsUy{@&8;j=OfW9Sx$m8j7P~sSR{HHdw=N!&M~Y(E0a{ z>f1P;jiyFWWR18nF|sP8${N$Ddag;+su0u1L)S5I%xw}B6lw32 zKj`r$iYYPH3nh+?J$TtiU)>tKD8AqK5pO9XUA~|TEl?O#SA?^cH9DVT+yOPH|FFeW z*hdK&P&}vWv+B9RIodckm{DeLL-i(9!5T+^Rlax-ugEjUny{q>UCdM9g)%H3y%*I3O5W?b?h?4I%ZL6a4G`$ajAx$(#y#BB$G+Tk4F)`L3>$`Ui?w=p3I$aP|o>o9S z4ZT9}4iuS%$1dx{hnx|6Wh6+lHvLS2e076tbP`<=XV~fVd2a9i4avy#&=!^~DQuN) zb8_O+z;majKF_tSm&wEyNJYbmF~EHG5*vlL$R*DVkf5+?P)bX2eP@%;oH#LboevT& zgot!)Nd%&%hqPua3I5f|UJ_MPpl1NlgUeYcwz>aHJD`smlm8HyYrwhvtGqwm{tWEv zAZNNH$a91TQT=@=w7`nfbJw<61lpf{(*&gssk4CD+X|B+f?&0g-v1s?U;ZHzg?3xK z?Y`{8Rs^|mB|$b!RaAvQkdRmVikf0nj~AEzIsk*#zINSL@fpMhvo5Tzit$G~@| zs6_-hikO0+^^2?L_QXE!WJL>XHXrU;x&qu24cKZnYdyv_xhR)4$AgVo=kuS-Qnc`Xn0%ucF9ec}3QkN}pq^^d7UBCqlQc zDLS?@Tw5kf8ZEm@!WeAL`A9@2cxV0p#l>K$?>Dkj{(v*nUmo(x2Mb^S)GzaIX8sXh z-8!6&WG&$jG>iyo9-OYg^CP@tJOBy4(!Rj|5UMF(w~#dQBM@8X~9cE8Fn$ zG<hE*@)^3mf zMYp>GW)S2?wYzPp;5%+BLLl5UgeJ$In({@%L3e1$6YI7Vq0Jf9R@<0_u~K+)`*hoL zGM|RD4JS5+i>ueBg=WYgL+Sqg#EE zJ&9yZ#4xlxI_}VxR7drqSgIf;{-}4D*Nu=)E4U02Gu=`|<;EQR=v{1VsY%4m(bVm> zNLaMff?=ptS;NIbp|^5%KVCm|WjnOGWvLFHmSkVvMk7nSp#?NOcp~ihE>TRsa439iweU$Cc`|)GD$w!Pw7zktY{F zjS=GbTx#S|WVJ`2?;{-w*X1noghRjg|k4rE|}Qyi#DN zyh1uU!D9BYp32jH^)6%aW1-ckM)Sc7UImVPwK`uG6J4VmqR*A#gH+cuXxOIw|9>H* z1+!2S&eHSsUQ@>PXxGvDa%OP97i!(V*X1fWc|n4tz<0peg!priYL~6-eXs(va5>ZWt6~SX-U6iorN=-I{NAH=(BB1&UIK+GM(aE4 zYB0I^*F1Lp&7p(@M1{vNg`P(8gb884uEvkjNY+I%dl)nasu~nhLNq;0WNgb~Uvx`U zcmP(X86b_eA|}x$4g|-mv`I^%(Yxr@xF9R@BU0rR4@yySY{&17ZkaW8(OMJ2ZH?+P zr#Lq`!@qv{8>pVklan(noxa#vetvxZky!cx#Y6L{9M7o(ri#T@g?F#LM&<1{(3JHn zK>z?C07*naR6<;Oedu0_L<0(m9decFP;yXJ?hRBp{PxwT3PZ#lqpGZ3P{wTZI zuE^|VO30=})CEg*vDCpw+IY{mIOp^uCZ;BWung`J$^kkW-lTVnCvH<-(u9(gR8*aCO= zUZG`GFtqSH&86`R1KV(1lhys#n9n{%p}t1Bxz*ER^GVQHY?}Q_Z$??6wn`?t5bCV{ zAS3d*&%z&k=i}au4iryR8SWR0fl5_o;HTh$y9)6Uu|S>!&D$W)3peT@Bn{umRB{fu zc=-=GzP8_Kh4oKX`E9Am1Hrv)Ra9vlS%i=Vm#f4D2`VPr*{#79uT?9p|b9@`jnhh9qyJ*2IO{YllJWeNRIt_WJ-yrA2nLbaELSOeyd zKz<{pXro;|73J2%i*Rp@fBpy8#rj-_G3!;fqkjUxx%wujKmP>(`XB%E!&m$WKXp7b zL@27s*nzv38#}kT`Q~?#cXp4I3$J@Ak~NS0#5TEV_$^bA6!;Mjhk58o$n6TtE>0xV z5i%>Tgkh@0ni@?xPo|nf_l8$U99gu?dRLyIpl_i|y+YYq%%q%XA-fWZw$QjL=ZU(* zbtL`Jyg0U03pI}%wttma9m_2eWtK=w8PM_^1;O$8VKAjKu4D~loB`;zf@RrQ(FioF zNI)ZEqggWJr8Jh(96C)VI}u_n1=$<@vuUI>PCWk$oS%N0+dF>=K+_s@)vLCO$dW=# zKfH`Sn|XrG;=3H1c%k!HP{{08g?u=!#htzHadPtWT;KjS3u8}HYHV_C>t)VNf0^CN zYKH^?Xi5ajZFY#z&yqGM2xV-DyYj~bKiBM7?eJxf4Cgi^{@&bAl-=Y#Za^=36W9!R!<4@5Cuo3y&tq9zZ-aM97Eb+Prb=4f3ylAJx3S(4>f) zMykVJVvAh0TN&zai`64mhh&UGJ!0X=E}o=dyDo{Qh359=YMH77P6OQ=-G)+JxyNi! zK&K%$@suX67R8l36jvf%*E?ckVV;;rvX!=ox-SO8?e2}JItdaIbtfn*D`-QiCm_bp zZB@7`DXxUv$dhxHj#NcbJOi61D!rabzWL-Z*fg-DI&rsqmhHaJ;@=Td#gPnBHE{-w zH*}i1O(oVM*3?m*@M$s$NtiAUxgdBF*z*&-^ts<8rKUQqrkTtWT-p3<8rB7(fq>MF z!ZprJ4cG1j;a7r!RiTz$?a2?z#-=%_Z<93AtnRiTjpO39^v95GA zeBXAnV#MBuC&5lO!s^5{IOCvfLu?Exft9)mK!&&p@zWq@*{vRMcW31h5qbde&=8@8 zu^2zNvBMib`ZJXEdmsA14L41y4plu*(iEDDmR!Ve#h1GlH8Da`<9*MaplflosS${H%s9>KLKSBaVTFT86QR$If8z_z!@G?qJpV=-&@ebLgR!TcSm5h}faHaXG~_=f`cu+!Pc%hJ z{f|S0B953W8@A80bqBom1~d<5ei4E#QqKlEP;$Ed2hfhj5!#?Gi-=a<<>LE)&B9i> zQ{f4^LxUJ)fAw*g+!sVBC=~YHp+O|M*P=qdGpt% zDgPCw)RkW75y7;qdl31hkyW`zcrftL5TVJ0&JS<=85%X5g$y)J+*0@CAv+9pKkkR& zrje|&@WFA%v7{P?m!lkS5pTylII@c)d!2Tb(plfkIB5sbRoG0dXy@;A>iEK!q zXFqJ&#Zg>Zx;W`YT55-cG~^^URrHWZ1XC)bdx@b0Me*d$Et2Aj){>6|3zW4@WNivh z7VSXIQb^Qw?Dlk9(*RR0;{uKg&=P^KZEcPOpQI*t@R+Z^0iU$k70G{HPTR&yw( zf?>)--)C_!gY7lhlSnl5b~vnzYHQSuB9T@Kc|-%%p2~9mnZLt{iC!^t(<%|s1d)nr z8LDO#$F*r#RU%rVGbZn&P+uELazJ+7Lu@rBwduG=CTe|%uV%yDhj4z4hn zTqbU$fdvj~tE}z6&P?V4THDz1XT?Q&7~;z(_|w_0QDWMJg}}uyVRw_{Raf{0X&*DE zGaN9L;Y6qh$z(4H0zq~(e{!q_)f%XM-+j+yZ11}~|N3jh`zHQ;cW4k(Rn;gw^L{wF z@eq2Od`1wLbhUTqMrnIokS58=GKv?Ix{O14UMlEf=-iEicQC z&xc4~MGK=tO9MAWTkR zRHV_bZEC}|9GpPBfb5Falq0*;qgJPct=gb84#Xsyc@)JLpbpm=8J3FbxHJrL1ocRP zcr#0+m7-ykNHm4^$de#?=@RMO1eR0b+V-me9l>&`vD0Z?&1Rn9o%L^0Z0wM)ZXCHK z){n{L8E)oHOsso#ay^%|gDcEs&Y-K^R^wQF z2}4b=y8jxBV+jHTH#_?u1rR>vezLh(WPku-k~j|Gfy~?VonW zg!6&!M$Cb@4OImaLoU9$3rGFReOTx&%+&I1C37%-e)Ph7-xXu_LAd*zx$?W5y}RGz zkrRZ|77FVY%!jm+e3+VutytV1o)hMin@mNJ5Kj^g(Lr};5aeS&Em~-%Cd9|SJGA17 zmY6Gv)|+9%%zo(RfUY6qc&V4rgt=F5P6$6D5FJEQ7mtUtSGSDdkm^4naBtkJNl9X-;1?Hf>80U`_d%$#O11Ul zP4;~hn9feIm()ogh<(dgkO^@p26#UuJbwHMt%4@nTt4awTus5A(XKEBDkNzOp5GT$ zoaT?&`N*}zHinryMqM~o-eM~=10!0e;vhCb>Q<1Gg&%SD#+yW&bqXnQZSE<+wvTCV zOn3vG4v8-Fac@FYQNlDgK3bZn%FN`uQ5s?J-KK*g=Ab*YBSAGTCc)BGQBm^6)rQqe zit=f3T%)2ipi7o!_rg7dCPL!YiV2w?ojyZRe@rl<-3HLEn0DHsQAk!Hs(=w7q3Q{+ z?zT-VAK^j9LqmklPtH;{Z<7u2Qt`1>Ug6B-Qv;93v>3~oZk#~Y$Wk-Qj7P`0y4vKV zB=gjXUj?9PH&`v-=`35=*`QJFo{1~F+gJ^8=9OHC)dw$xNoRqIvWBI&#Owu3)uE-^ z9nFg`biSX_^{6``G)Rshe=ZiTWT6akqjhArCs;KaXtf0qamT4BtLRP=TXB1|Q4Kjy z)Xm-Zh`lR$G$IzZlEQZOG2C&c_YyQBHmR!7vyHmE!?-tx;&pE|EzRxGGKIm^Jc?-( z)e>#XAXG;Lyn-NAnk7?-OXM@#=%$2n@)(z%`4y%j;VsMM@y7vJ$-l~p+|xvLadpi^ zGrYO>r<|R74qc6Medk9#uiGr$0;#J>Qe+KH=^mG==*(x%kcdpMS$r4QwFgKLz-;;? z>&0uF$UVu;-8Yy@9%sNiq7TO>Kh4^~>)b26P0ieAI{g?i{bx_qd4Ay>|HpKk69yKx6;P+ZYjX1XH@I+PV`Rd+KcV%BtK#2bK0U2=6=sy#`xzI?Tj zr@&eszL2&H*(uOp0P8*Qyx!=NNBEh*LqmiPgX=lSl6<5)^mKHLy~-+$>I%!VpX2hK zKkB?Ls>L`P^o!~9j=8e^Ivd41ymbQ%r&d zU@N^u%G4cP$-|ChNt|2c#Z&(YG4*i2rKVNvkRX6kv&39_iOteYj^!?LcKW%#H=@|{ znC)0tZY%I_v(tWaU6~)<{RYP;_n1nZqtFnKNA)Cz8YN#@qfp!Asf91HSGhs0l@HYw z`4BGB%Pfw6lBk|#yLg3$RUnr*NiG?FN4vd0;tKmSfTI{D9O(L3!-T@ieNi7ixjDJf?(|6A*ZYwfo&=?YnCwc{g-|)x>`r>Aj!2v@CWO9dVSCVR z+J|q*n69>s8{3ZukHfGaR}f?U&s^!%4D}1YO9{9$2g#byJOu^T(Wclp5cS3Dh}nF;)%?ZXoJ}%NTx8bOuqo~kaK|~(|-eUd2K{F?GZjUJXAzT?-vjT zVA?HoB{KB+o@K2Xie16c$EjHrGO;NvyMd+-R#$3f1DkO-J-Y~L6ommd+=B_FHTe5 z$Ch*qPsNiYEXAQ^*mwv6F)X%Y6bv^@OD+OJ4`WGn9I4eK`tFCRI#{Ymke3jFv7-de z!o0DIVI=5&A$wBi?CuM%`?J^*H616LN@Hz_q%(Ucf5y_+wU zjEoc4#pk7|5%SfWOe9YMV5kX}azewDuiWC=*2~C}!d&(eaiiRnbNZ3x5USA{})^o6eECm8KwKtvk$bzsIIAh3kv#)fngj zudIVxjPKszh1Xvh+HQs}xtTl|Ej-@L2@^uUaualbHY`Zhg}AzygbTNN+f8+&D^hN0 z@b+n8j2LObdO%z)yMpk5(CQQuqur*VJJui83JVIqiwUvq3%A49*D$(mLPr+FZf8to zBl$eGG$oRG4@^3(uspytXeCHzLAHBIkfZ}9_?k}1X#cwnufeVDTf-0R5k59NR7B|1 zq(*f}`FX3n!fg83q3iHGmphx^<;>z&SuI>=ue!;(`Ior2_a?KGpTu^K-6EF=H)d?Kipa9Ycx)O&0$ER^%Nl1U0~gP}UEQf|(XtzC zl~!mptC;mVsfaMYsFe;V<;Cr*C(TlFZ;(%B1J|O1w z9-AY(n3~gxrO<3yh?1L!>ziC0Y!%e@Ew&|9JG!S23s>@RlwLak39${ukvo1#j;3Io zJHsb0{u24ZWu{VR*)4y-Sp5Dbt9C1^oSb+X*PCOfe2cAi$f^(9X`#rYeW!f*?Xbo1 zPjattnG=(r={y(HlN9UQoSb-?LVcT)6PMU7C5dRMo{CVpnWt`wE70n}+qkYpv2k^P zFfELoV>vR7>pAR}ud;qn!cdbej17+j`M44N(ih>i-}|_CqXU`X0Q(>o>q4;YYn4LH z7d`lIe*bs5mi%4(&hTb3&E;7U;9FDR`|2HLwmjCS#0}ltZVT0J-yC^@3~Wve=7jab z*V4@7M-!#}v{+{tA@Pk3s}ZrjGpmDf9R7L=DdE)7f@ z`HUb$qui^5WU;A1elE>Q=9AzKyUDR3UKctoIU`zOL1<^edKdJNfMjPKycX!G!RH>~ zW5+{9ghrudH!(sgI{jGNd6mVf=a3|c<*~C|-+3EDG1%L`f}>?nB$cJH(>>Y_AEw=AROkWnx-r;{NjyArykbO^># zA$uwwHl`+8b(U1cmKr@lwMRj4U;O=PrVVnd!xf#)gvNyC^};n~GpCSc1sR2?9;ebO5d7qAw~2Oyieyj|RH&~C-=Dy~6zbb3vc`CPmc7bw z-WonM0iyC$N{XsdBO?9`6MpY! zVZ1mz>#QFKDR}+ld5ZBIU_vej#dUCPkQK;G!@)gB%|PVIcID?jV7&+GJje@J-aWR9 zJCA-d4;UU1Aw>J?C@}{sTdy!RcAlsqM5Hadf$O=PoBkwnYmejOkB!tA?Nm0HO3t%U zyiG1K6IvNs*?NVgneKRHEHX~5nMWBVk_;eWq)_DH`k0-AD?EGV*C>=%n21hrX7VD^ z%#)qxeWScP`&U`WoM5wdkESie4Q8{!%H8WEB(X2m!WL#j+**3%s7h~#>1%Ep(t zw)OInh>-9NsxYsg={$CP;zho5w`$pn zHE1QK!7G3wTA;U2+y-S9q^OAPa2w!N&|4K|cK1cPy`3gkE)s7F#^cIDLvwoVXl~Py zBaoY=L&Vjcu+&3@&O2GrUc2;x2#8$?FSz$ORp(P_uFX7$OS&5hx90(((uU(gH4m9F z&`$P|Af$dnTjIVSA)HQpIt7}&u`rpihhKGs>J+m~)pS)Qh9qFBhskh1< z%}x-88lh!3Fx2P(2?E$G-DNhtj3h}!j0{b)MAQfwA!(y#mRZPl+abBc40rdhl8j_9 z)F`H1$8lOc+nAsH1aI8@Ll$Q~6Sm48lo|&#tUB4)B)gRjrc%A)Sf6A?jVv2GuS0b3 zOyOS;EvJR9Mp#bw3N&^77-uzcA~oF>jwdQAp6Bp4H~$&wv1f>@<2Y7}-EA?7(y*&2 zbsMYRy`9y~qgI+?RMj06FGW*6=b#cm9e~Q=jMN&R+qrH2xeb`Bz!a4H6}Q-SRaiQ)k&J-(@;=tcPeAYLdn5 zX>RSk$*IXt9BIG8NRW@Y?33KhzXDR4W8+VBwiW5i9}7d!H^}!W8YQX*Fr6m%3fCEr zkB)u$xNz#FUtr^Z{ypZ8;9WP~eLk2}%`J)0o>S zg4X~kO1xg8snwX<6FMQ;4fh-J$<4xu%9E)IKceaV;hshQa{cbr(Uzz(g~67g5|eoA z)I9mRetn0tQRT6H2J zRh^}=v#cImV=jH1mCf&QV*c|z&&#rkD(m2l9)B)14yc)BCKGei%?g!Pk#T3bM{L_{ z6+6d}NiMQdxD6q80hVKS^h^T?L^kWPfiDcawevDBo&GIu?|hrHQ!k1Ire6YJrTjiA zBZn+?zizwL6)G(;FYCDuTle1WJm=LKc=fImT1&N%rCpNp4CTNrrs~M3wmj0UdnEJ- z5D-huPIB(qpXWqYILFSUkF#C6&3yJOj%y-I-S;G_XK-B$)2^Y12&Y}o!L*y0j@4;F z`H&=;h?=5iRd78QS(4c(yu;FXc$)Yq5(JS zvf62b4TI&hxL3GNHZ~4Yi>5Vt`HusNs$(AU>oDGe17kE1N||C@ewfeCPXe+hG%!C7 zKC^X$_ou!h$dFS9>#Z)q(VuRUm4GHsQU=c}_8!#V19Kc?9rO~oNx#DeNZ8&2L<*3+ zh^Z}bbBuQT=K^?jpv5%+`#KRbhH4eT$s^aBEaZ2|XT%iORKY|GM9U`{U9MM5bd4KF zy)6v`3P~~jHp;gshF=bvH<1kAJ&lNdv zUIpaGKyIJwJA!H7!%L#t9Bu9K2tR#1R75BY{@DC56e=r3QwvOu^~NXcRyQ~~@i>a4 zuwUC|JU+x{zK#9b4rB2_^FmpYIW~Ttx9@zDrHLm7Viy38&%Vgk{(DTPmqXX>lc3r3 zGEJ+FDr?N7msl^}@K@iz0BLq>H2Xjx?xNkda& zMD#2T^MI({O(|SXU0|jBK2xz}qN*_Y%Z&B4x8}au`D@iKapm9@mQuoc;LX+F$5dp- z;-@f7h0XQ1yRU0Hcy$w}EfA2M`)I?pKX+G_h&+CQOOJh(Y@|DdlQ6Pu7H?wO4HQ`) zXdfM){503LUJi9)_B@xZ@?9>>ej#+z$0t9{4{rUR zT;e3<`rV<#EDT3=kq+W+{xT;go@TrBKI5?k-d`{AwL{E~f7X$@8f$M<1BHnYQubQfz0rN6w zkGEeF;oI+B;}@T~zu(;>e6)C|h|r1gNo?K&x+jO-$~`6%^P$U^s_SU7GC+b#jRO)! z23bB>(^*07*naRI^*( zXDk^qjU?&plUoW*`Ck1AJeImY?p5{8TOfTG!kUmO-ju?Cvs1cOUw@? zW?}2T-%PQf=)2t9Vm5mb7-2>HG2z6_3I659X>xakpeEOXPYw~z=2~#;{xgk#;#jJ~ zJDKj}*iRMC4wP;}JqBLiRFm02w2sC=+Yw3k(X&EVbQCmRhSD-UEhQgbO#IOgAbFgE zehl0LQMpp)czdkL-vqh+L3wqu2e)adMN;()tIZ0NyQ`hmCYqu`6ht)we|hl| zP2~g(%MFw(kcoo!BG~UAer(DFH2(~=)1bHg;@lBAAdm3C;-Ml!sYnFZ>n%&x%?e|& z!Aec7nWt2{M1#CYIx7d)2P!lG%QG*svh{tIXI|_)=98eARQLsLK68TWyKh5di!)1K8+iWA(${$F z<{v^xTW}brV=1;vd8Rc{(P>#_@W9ZzC(x<%6YP{OGnMWo4@=3%SgTxRBDP3O9e(x6 zH#V4xEdy|8_s=*!`9*X!!D{}y)XjZj0q>NQHbzPtV<~oq>xCcjsbgR7Jl8K2F53mR z8Y^tpZZR7_$!767OV7-4Ja&AjSXfgGl17xc5nl20Q``HAkgi0A5*#0ssk5xD{yQw^ zg@NaeLV^J9u_+QpmX=k)81eai z+(^ZeOiNL|&=wZwjc{)s#T8j%@1{X_gx62lw_v^@qBedUl5(md9Hxh*)F*AI-rqpw z04^3Sp#@Uf-&Hv)h=pGjlE>OrqW15{twAdfjhkRhL9_v8n=yJyAi=%`$tEOU5Un1! z2=2yU^&^PZO{nfc{Ij6H0j}9QfdzmAQ6TnWm*hxsaQjRL<%9^9RZoI_9i$kA$zKNh zed^52iq9fR5>YMARB}F)3>jLAQf(d2^N=KIXeB5JNs`EFQA~L@ zbblpD;$G=4Pq}s{t$e4v&SWyYLKcQ#HONOceu8V8e=Wg$#CzST;e48%B_wA^L}lUnprw@y@|*KsYsfw((Rtdk4l1853cZ; zQ~#i6J5fD@rbH<>wn#;17>mzPX%;BeZ+F(0uiPS+ICAPWrzu)u4xvB`NTz6r4+7>i(h zrYo|RGhnUv5+U^**dGY8QhyIBDtPl?Zqnlvy9=-k%08r%qL(cPNVQ~y3yi%gSl0yU zkoq$7`oG6=M*L}AgL0JJ$aBzYSAj}uJ1HKBr9s^QZbRhLqQcWXAki+A`Yw^4Evi$> zq-b~bdkM)&uVEKYw4 z%jp#bIIcs@EO%O50J1FOxK7~TDvoRQXnm@!BJ-K!oqwx}hUJ)OipI{t`jNG9l2!u&rxwe56nQ3ot(EnmGd!F6G2TZr~u?mg7(7d%U zSWX?swR);SK896=BuQc^^%%E`Z?c?vTnNE~`y6=hOuLE}(7Q;I%u?>NtmMDLRO*QV zGL(zXbF=s+8Dnaw*t^i&Vk!0bk&X|b+}I);TcG85n0C0LHkUlf%^fjqr78yb>N*pN z(UVs`<}#0SXa8NYQQ;1~l7E$`mOhjO73$keCYOkYOgm1e&vSeCyQHEsq#`*si@k2P z`Rc7BYlBLSJc_J#NDx4|vCTwMgiAW^=<)oI3;OwU@PpA8B-InTpO_>5KWa4n4;O{= zGl+b${tDBL1RUtFT!YEL*JQRabSCM(k+21EJF-?uPJz>H86ibPrKEWa4&p)t?Zb5t zEu;4DF@G1b(-8l1y9#p%X_iz`jj9|#E633G6Ba}&kUlFaR{caG49+@u7HG$h=HcVD zpnh2x6nTA9yta)HE_=}0gxEaDi@hRp5bvE=0x96!?Nz|O2HLqnf;1BC_s(;`TEi@@ z@ce)A>j0c+R=M!pCs4-3@9Ru7%7ssSj=Aw!boD;{iXP!Z;tI z>h=#fKKof@Ssfrkel;kFRAh|J(h9!Sb1FVdrM5*TDejmZ*Fo;np3G-XaBb%;lCsnx zAVEa6I8il5v9U)s(6-BEPV?rCZ!k0UsY6K+z`eaUnVWbTO-rzPaDx-ML7$^ca*44eYnOAM8%l68;Q>n8( z`D9^mT$_A#qmwS*4@K6P&0J*t;LQOC=#~7dERBbc{P&~O$Wt?m%my5=0bI`t{Y)Pu zC}+i+-iy?KlzX?ouGiz6fNJFBwps;=tlsy=4A=bqW!ncbbe$>nls(x7NkHYq^1CCV~D zfv_!FFbo5>U>FwcKWtOB2vQaxo1!fd7MJH9oZZ=(ot>-isy?dguFR~w@65RT$CsIv zXI1s=3^}{q50L1t%*co@A~NE8;(ed@d5xpGSla@t0kv;KH4Oy`j4I4M1JXJ)iV$Cf zKnxOhMClrUGXnl4VFGv>w1w7|8_W`@+ae97xuM?LLB#>43LZbWpByf<9$2p_h=(#I zNYiOZkX47$AAqsgy13g?2!+mcCpExb1pj#vEi?Cqud93i%w4e#WvZ71$w9CR;@^=l zLEnV@eQ^$~FdMBoXoCQM{{Oc7OGxTj`b_8Vso(;4QdjXgg9Faf@yI3Cx4r@H$rICJx@C~o^Q6<)nTdai&Bh+n zS{%oao1~_C(amZ{*VGTE;$hmi!bahJ7K6Pv$o<^gOoom(8=Q}Rn(fSMj0GFq<$J_~qkk)=rL&WL z8_P0inicALo|<04Gs>f+3p=?rX2L6{()Ub-p5#vAoA_L_q?$$c^VgUR4(Wr`ho)I4 zUEX0aHaKZj8fj*{N8);)>LXG9_;u6{MJFh!LWF!0P7*So24NlY51GlBtczD07NWVU z-x!Qkz7vLm2LJ0>xZGC}$XGo} zyYVymJhYqGn7|?6@<8Azu=;YKas>1};T6<*Zwi`!Dazm5;Y`<5( z3B?4otqcM_$h7YNrUCcgfqF{=wfZc$Z7>`_1k`gUryw8WBf%p_gsx1-`OextrE0oU z`L&aLi*R58pL?)+3`FEelB8oxp}XN|xkR@k3H_5+I)8^)U~y=feLv!XS>D|IGlH&2 zCmrT?g{juFooG)#YRx=u)r-=n37QDZk|=HuM71PI!tb4Aue6UOjjkXo>QyqO6w7vj zy3fbBLp-K#HFq&ORd5cvOJ$YtdEVatznL8uemW6FG>~mWQ(VmWR@o@LPtZ9|#3gQC zl}3`;=#lTyFi4U#R6s3B60`nQ?&RL$Z0H$eNuh33aH^h%YH4v;J`zB;u{`!HHN8xK zOr_Q=Vc8}Q#Y;^;nyDz1-OSL(Y!Bz*`UgCC@GV zjgey-t+5b&V(2)U=IMQk{yMR8O*z~gM#jMZG{~{m1V6%pdE|anp>|tTNZAcgw!jyGQkRs#c7bAm&kL>> z#C9YX*md#m(DgQj5LxnqJl0DJlrvy#fO@30MD|1dO(EJc;*319QcW~V^}Q&fTKz<5 zU>tQY?uiGR?kY0bBaAA$A$vr+(MUjP9rA9V>l$kUorf_K{5c3ui7{!_b^KG*r|taEgJylI(OnvT)Diq9EkN8d#6kR}E2VcQmmW}dhAzs;wo ze~I1lI+7Mfw~e8Zrf#$a)awU-$nwNjd-Pc2o_SK$EhfB+?3UM=4_q9w2KUH_Rk@yI zCfpk#Q)HFR%nc^{#LT<-JDiC=iK;mG=BX*N(5C$gk49$3Za93R=ST~$OCOw%;U zl;b)``k_5;9UGaId)mY(lITFc*anMq&%BO1&1=I?MUT+ z^4kcg_E9UUj~m?9QMH=KfR{674<-1UJ3F2KuleCuKKH4<3aJwyM@03R;t|zi`AukE zqKA0Yd`E;z1;!oF^oWQ`8_JAGadoxxK$!<)3nT|vC6NlFIk=pp(4(TVYf!xfwjaoX zx&^8xv`NiYC8OpMx+Gr=wBbHr12B_9B<;8W`puJ{8GB6{C(%^9@wIHBEz!;x6;Hid*$ks3r)wk9X1T zh9)blj6KKN{x_MK`W!ylz_4@#sXPL4nZ zj>N$cB}_m$N?XmwUST`^8gsE%I%Fv1jI-IeK~*ne+By!ouk051AWfoTzL}Prvk0Y^ z8+lv~FRJ2bwc=1&o&0i#;2eicd4q^|k!)py=A0glZ)0mT6-^q^M2<^AK`3p*kZX zO&%AhE#b942F*jzi=gd;?^SSikwV!kB5P9Xo+igyzC@!NNXiZG6nj&2};Or3d#FNl88#oka4{vKqq(1;>P(6I5BA!37L73@)X|qFnbo1Q*?#54Jf?-%~v) zO5O63$RE>@_Ax$GJaQ2sfMo6tbDrl21((^(tN}tGYV|cB^l3o?&M=i`5#KTCpJA{R z4@zG?IhnoL5jlt4G2vt68GZv;OTNp>_)|SZYGwQ>)>H4X8h;wEE5=U!2R+}}Prpwn zcotW`)62By+_0|-s5tusUCErhHcwCDDD%`b(S1QQJ0;}`^-c}hnSPq1T~{d z-E4>(0}#-Htc1_A5bA4n`plX z-Q}g}_OY9NmosB8vQ>IO-E82Is^pae^7ZzO#!ovERFq0wFJ%a*B3j~CJw&wt#rgq@ zW1nIa7GqbqpMIZ!E82++HH|6`<#al-Hu`&vITR-W_Y8ZvcksL7=$46T83f%A|D;&1 zACjwXGZTKAz5Gq`wFK2>Za|d1U${riH;bmasE){TH4QP&VUfm0!$vnv9Lk5~nDgOa zz6!5)$wBVh=|%Hw%rY@ z2$k!gM}${F^-ze90cJ1 zI30e*eba>cdXDYoAFwobi9~US`G|X{At8XXr6uaF4wF?6mT^Rc+Er<%!G2+r$-u(E zq$5cZ0at`VEi2Mx!9_BK`$U6F6f65UR5!(Dnbr95pfujb;I-ZR1zGr0Z#Pv%$)^XsNQ9euJg)SJ=tEJ!C_J$dn%t@%9SW z$NaM#mUozsy~u;Z?_*0YmSV?O&kaMlaYTY7Nh0VP!y1YY|%i!#K zcJj0g4@VIpseeEp0HG%29HL5X7^doQHT;l7ND3ZRYPDf(iF8f7e4W;T>%U%AFT}qB zNKhQ+2yOR%$F8=Tzb);rZtNE} z@oIsgem~G#1|JKZsK5eY1k$XsV>=2c3Er*LXTm^NCLiD4Pk^(vFWGwfH=Gz}Sd z?GP<2_OsM1VcG__6W_z-jIx%!g~#C~pat;Ber8*KNvA=@Ho2F*$|o0p5yy}ejBeJM z^v!TsPZJtZ5!VmPwkS3WBq}1>Gwzw-V(bdd&^h*USDBAJf5IBTAt|_9X(zYhAf(7R zJTaDhgXHO6qe7*gCR4r(mcf2K4;3GkS^^V`yVV`?%^aoj17>|k+5}Zn@bwYPTxE;- zSg*NZ+X;Fia0XcpfL(5R8J)gTtK1Ojux@d-BuPk;gRp0^(+=dcBnaqgvijo#*B8GC zfArp|menlLLPG+Ah2hm^e>8dIE)DR#*ip3>z^)tIrXWJ|74Wy_O4aTylmAiR*P(O_ z5jqWCIk>}(c$c%d>;t6<9B3YAy5IS0#JYy43L2^*8H;!AwV|<8s zB#Drw9$kbUR|JnMLdZYgQ}x&|YTP||gL<=oZqz83clmzeb;eo-h_TQ)eD3j~g4jYW zL(m=V2wx8}*ElovO3yML%}1$T=t+&08--RH=gI$H5+JFlifyvYpEZisa|}VA5~HbJ3OpT9AC~p3WY|2gUTM0 z-f5ni`aFk)J41CwTj_UL9D9KW#Z4^R>T#UzN8PBiTi(I64T4&TmGJqV=#r*-mas^loS4@Q18SyxjS_Vbm$r3#7{lbhCnj$%`}M^R>iPR()aCO4nJPY@K7@ z6|V1no4V(S_~@3+ZoT_P>tw&Si&0CUN(!15C0*IU=ZfQY2Dx|m4wHc;0`8d59mPIz zD)IF&64Z@$I}nE&7@BhPImbCH-DM(pbbc(`LOSML$jCI!k6PyY@KF4twQ?T>GQIB7 z{Y_X8T#$4LFQ842@cjYNAME|sL;lqvk*4L6DB%ZD3ja~VqxVg)wkc9oN*Ux?P(6cQ zLJb+}2jCg;;Nv?B*6$A|LbfH+UvliI;p@OMU6CW(7UZRT4=PJwONdIWE_Y}EbZ}=N z_^cokR#x~5jdH|pJ5^(gah~Ki zXb=y~a+q5uk-d&#)~Pj$0KSAYO-$Po4R9Slj<5tK%Y-cak>fIP8?RQ6z=cNZUpr$U*)llc5U(X)(jB<4|0T zd*Y<3NhZ95f{vZiHWj^$Q*|*PSQr{vYQyR9F&VnR+q-`TkxL_&8|X8Hh@jj}-NdvE zG}VdU6=HQl9D}uk*Ls%CRrUybdL6~3Q2w}iq=po~7p9|&?tbg8$Bpe_sIaT?E} z#%(C7;J6HOtMaVd9U4F`2vX*GW#npl(Ct)h*8~~qhUDvg&)kQ?1CY)EX;51yFggvH zmdM%V1@^%Ic~HBf{Z1k5?rsh%dBCcO;~{yD{E&t*Md&^^<}}k_bIDJWAFf z{!`q}FsbaVfo-%2PNiAIv@AmKZkS0}iqAD)D?lHzfN9CKQZLwKOFfaT0`xpOX9u)5jkuwl;jiD+obhD0a z+cb?TUgwA>xe>_Kvm~ntX8d#b`g&rmOuowc!MA$6h|2X$XB$B+M51!LLxi?VTht8U zP(9dNoC}ddQPAPY`g0SWjMK)h9@;ZTqSFJS2}bC`<`!L140#0_$^! zW&xas;GZ7S-^;;3rJ585E|MqVKFuA(Q^o64;)-#tbGr6$D zvuB?n;2HhE^%$qaBT0m&13@ayosmRHl)euSn?}78Z0GJ!(<``J&d^TPO}*tloh+F~J@Ho6(QJ}$nX%nq>mDO(ceO4xgh&Nq7q|nUscJc@4md=y0 zr*Nz8V^d|vL2LQv3?oCidX{W8!>#fm5l;+>22ahsO5hZFE`Y7f`@FLJa}VWMZCNIT zT8{PPH2|hV3q(9&yqZeTJt&lvBnh_`ARbs^Cv%n6Sc?>w0<8MNlp9%c%{(&`&tTXV zMpx;U_z@31ib+0L@#T4>}kewh9HxL|U8j;pTI5up!5 z$b1^OOp*Q?Mo<7Q6hw5WO}6@n^!X&{@?ca6TG=ZF4qb4*1aHQM+X7S-Q%uUvmwTfY z$3c!kVI4w)O`>&i}A_avF z#&+Kr{Vk163mvCwHz%(A`p!j_#2N9K}!(f7zgU~cM7KQPnnFXaw&d?TUx1q0z z^~v#*NsyIi?!lk%#O-@{>s>T>|2C;_9oZhN&;BW&|F8dZK7Hxo9>5-BI37tNbP^6r z`;7U9H$!b#T&*YHV|n~CvLv@A3Gt&X)G~N5aA|&KY-du zW0(z^W{tJ|Z}xm|%D>2aJAZ_vxY0aw#N1;8k)3W>wneg$G9hsEXin!6OVfG6IRT>NV>Ga zLE#Q=*BFPjLrlvc?1~WcOfc&X;#Qoj9c-MM1Oa$8H*W3Zbfj)JTM?%e)n=ZMC(gO} zlb!Q!*%l3>ax`Aw1c&7WW4hQAFrRTDK)$<8{&C^|Ptr%N11k@19vWfdr|&jaID+ zWYTb{)MfGA{${C?N>7!TRfT#E8XJPJs5ywuLAph9WL20P zng#^Ipk38RggzmcIgVZUw(rB=AZm; zEX3!BFZ37>jYpCQNs@$oOmN{eUFH{}t88cQFc&%3d5ShIorBbyTv_;PC;BrPz07|4 zJ8ff++fN#%bDO3mTgftL^)})nxtm*3ML$ihFA6CP`yMQ9twJnPt1P}XNzdvFWluq zdYwXb7jONL)v*^)Tdv%- ziqIhlQSj*r>1O)9q3tl*Fif3n^^k1k5LIyy_QY77xXjwYYphK4R*T7!+%d}pA*Mep z4?gzCgJ($=?y;45A6Zg*NKktpDvc6*`ArR?|5^$SAdavB(WP}+t11kiPjCjeUOP$dXd0SUCzG)%TZzuzKNr&!)Lq4F+N z9AI@Fj|@Q9!?3Ro;WRkANf3hc825V{vD#LP0J^|&j5ZNkBri=U{U$HI{R6S9BT$Jt zdFI!DjbHkeUnlH)Tw?!W;*lgmL6@6}kntn=**jG?Ay15Cai^mtdgJy#=iiwV zSI<#w6o|N@1U)mP%MZAfdK0&6jO8xfRI!#M=sul+nQ7_hW(^n=G_EDCvR~LnRbw6U z^RVz}UTV$C(9hz*v)tVKCc0VY+{7n)wku0A9;d%&n~B0*##>PzfT(wzbU8t~oM0jL z44dh9SsEX1Gf-<5@o2%3(vX5)Av^)U@r9p%=zaXC5%dH|efec>{Nc9%(VNq1|NQ&d zMt4)wQBZ9#f5fV;SOX575FAnd9xz0C{6`751!sx}9Gv74Ya390Q-qN0R_e#Lpe)%bfA?8~^n8 zc;@2CX0wm+@OUJN&~ezztev{SYRDbKFm*PPZ?m8L0kadIBJAl+t88Z0IIJeo_g?4h z_!V5Lhn4ZCNab#^pIav|_B7RI8IN|lQr~JlN4;4f9yuy+9`j9+^iEQ#4~AYhi~G16 zb(S5cuO_QD^VIbs@!&b`Wv;QAUkBOI;}~7h%j}f584Ip5<{oFtH;pDAwG_DwJrRz& zUK~ij0o+S|kFmfKn}{YEfM=0*&9&WWGeIo`I-syr4NdiG9SRfx?R=OCJ;sn%HIQh8lrJ1ri7;sfaL-!gm6$U zLU2i#4jT7HuD%1S1l4tD`oQ4?w+yAOgJq5ZGPu(aya-aC#%L6b`+~SBGp8d#Mg>aW z0PlG)4v+TDcDMEoLGS`Hct3wMhUN}1LT_a3iBzAm+S^KG1pL|8dG6is676eRY$&kR z(q}guaOvm2#&7?<{~n+F!?lBWj3YcILVc+BIYgg?T4jeyJxert1=BV$ZIfhShhkkk zV$MfaaPll}Ez}WL1Gqg?jECx&wFLL7NuHQ~`BW3w-r?H=owo=9WoE?8@ z==tbJ#5+c&k|OFoBG;B>^6vJZ;MOKFZ4J{ZvpR7)$MSx}d=orKuQL@|W-I+RXUAVc z?lKJB&RpwByS34@3`}pCzxTNpm%UunhPwFI$_xEl)eZKuU^u{XbRO{VYS7pOX9ipg;66opzHLJD zhN!@k=SLGax#d(Xg_z#{Bc6Z%HjW{D$zj6$0W=pPeEom?$9(C9ul!gREBrX&ktIUQ z;~JX>!=AoR_e8E6H4f5Oi3As!9)FhC?)@REtl>~J#(Yyu1&=gFj?fAZ_Fp5^<-%NT zmWcZ2ajQGUL%38o8>u%~occUkS2`|JxQ$D32`x}zgK>A9U{~)or{dyFP=tY# z)dXwVTlh3T6Q0SA4rdtlbJv*(KS{p2&+W{6TpE7~P0=_T|K!l+i}eiI>H&%B0g5Ey zux?`8HtrU2-D&j_i~8m}{ksn98OD6WpWxbLC|%m1+{iHD?2U-H97lv$kt9^v;%@3D zh3Ymho&8nD{nPB^HaI(ek#ha$skUL%$yRfe_Ff<8_`aXt#HCFVaD{rd<8llppMvfP z`}r-R-f;@GEQ#VS>C!#sqgOD@Jn`T%nbH>JdIsO979uBLKDx|S<}M-645`w6CW1%N zotj?6t@Y+l%65fI=Y#yhQ!jq(dW#K%`wL&h{ukdmRY91y)gq%mZRNI(#LaURQEESG zeeZ@v)F@zxRNS!MX6?w+Vp+810HNE7x3#~vh**u(G$@Wn5|O6bO>uCo?&ilfm^K}kW;+G0B|&O1Ia$$V zfVlTV zQ{8N~G+`6Lb391D!?NpiQKo*#lFXUd3LEJ)bR$dHb7b*gce#5TmWl4F@YUy*d1+zc z18wWC1G4Y0Hl1*>AX;ytkD+9vhe&mXqqziXAJM#rnrCkon2h4`g(lF}i zMjg{KP=*i%mor4Ik;mPNz|{0gk1pu)nV(^O|GU&1xt`RQX&I=pgL?J>~$;h?fd(`>R3IKKL=jiynhP)o8jByH1_U2LS@eT0GnoUYZ6;+Zt`j~X>kaWvc+oif#3N53YCQRN!)VFZ- zha-ebbrEt7iZT!Kx5!m?uxyKbb&rDPWixXVBsXqHkbq}``RKDfBqve0%agNTqEt^) zu4hj@CV*UZpZVxz9EuC?5KY)jXqH@ckGdgaT81D$mcc}DmW{*r2)W1DNQ+M0$-+8S z9b`#CkzDNO*O&^OPTMvNi?LO%?tY*B{B7caCGIA_-?0&BS~}x%62JJ|Cy00+yWJiK zr`6kk>^Lk9*TRE67!Xdp8)ALC|OV);0r-vv$gIfXnqJhDXPGZgE9r?Hkc)lXF&0b2-I<~ zN<4A(pR>G~MLniKC;42QfArh`ilvF;jb9(*!^a~_gr1*W;4jy9nQWE0w@nm}i!|hl zn>39IXJ@{^y~ArneUmKtFLk~%8C+n$u-R#o(T$LAmO^=_LxlR_(R@UMX9;M2*0#RE zT>M2mEv?Pw!RyRVj_&hyH@{8Pv{~}ZQ>Y#=5n5$Av_j3Ov6j7sBCAaMW{&mS*+{+7 zF*IyLw{#v9?la|^VLot{rcoQ{NPikEwagkb^)zeQTO_mZ^UBgMiR~8du^e7uN0RyW zz5kP`=(EJ!V*|azJ_<~RE>Ny#*sbj0_bpL36sAHK8TX5-zhT?YR}Wa3c$uJkg7w6A zg;&TaVVI4Mfn+yyv&n9LlZIYnKYyK1pZgmfN9#f@$42@+mdBqY;_WizvK3< z0UfCRE|f2|9F#{us)^EZ?~7n=9BFMv!WP7!d>5(_dgxrO2)J7>Ab$v<=Y-$Sshp>G z0QJZrx;x_1flPn_rb`3))h69 zyrR)+HzY5ZDO}aJdExCpW;{DO)misDSpM~2;(z}8|Lw`g;4wZDJhDV+HWZ=Qyul=5 zayiaK5d;}=J3}a1g!R;WERQ|eiTqf$i7d(ZoIwtXTNsv(+Sdas;F~77ee+napPA4i z_YSYKGWTV+lW*eEg4AkuqmvrTly``9^$4r!Rnp}Il|~6w zaWE4)BQ!~Np(moKDGI6LHc!p=lGN^TL_9G*eeM_8IQ${Y@gu_AG#Z$;iA;ly^co(m z*I`eVm5x@)sk#VzVmvwXX|C`7DRr}n?kn?;zVI2M-XGs;mD#ab{=^NJPf;F!8jrF$M2`C+a5db+0mXD4GsDmc>E8xB;D!i;r z-{-Erw2}eF1F`)ck0RF~8Iqhr5M6o$$^l?hwX6lM41`vNXOezxa1qJVN_j;E0n|4^ zniOfnZsI062hAPr2BFONSlSYdIomZ1e-*S==COHUlAr%Ce~T}D=IbNI`51o{cw~uC zKSr4-HuVY{d*5Lu{yYce1H#bL!UDvEqqQc`kUK`cnkMG!O#;i3f^CbqXug{6G;{4= zW-54w-TVgg6Q3ZJyUpJIU-0DI;FH3BSXOqM=-?=xe+r-TWMcRj4+q)q@-zB~;Mawg zsGkVAEb#*HnDCW@?gg3%0kpvHECu;rVqYD-5lNP%ay-;(BF?%f` z_-=QgS0=zb0Hy01k=%l$nF%m*LUb*;L~869Xq8)BzWz<-4hkq1)HTq%Zkg#2)SPhs z-~Ac>vtRoyrpJaiQGSfSIy}-uDC`jzqGel1Lmu;*dWD_TTg1nomdB&lzODu!(7z zQ|Gxu6&7FZlO z{)VYj*M*>SGjq4+Gl%LV=#Jobg_xgP;QM(bFf) z)f6ufM^AQXeDyc~0l)I|{}HP4NKe5Z8$8lyVJfI%G@w|^5_I=g{iO4E$d$G+wFph4 z!SdK>jYPRo!0SA^0fgOS=J)@>vwp5>1Ww3?lKcS z&sO65cmijs)f+51{3s)Ogv@KK<(&WkAOJ~3K~zPaVkh%13nxtSQFn~P+*K}3e}O;W z{$r+nv!rWjro2;Z6-8%eNs@4OmFi!a`Yd-3zH_Pyw0>;nZcsGpJUO=1(}yhR3{q?s zDC=c>4j=L03dzDclc7`G`~a`Ri?>xtS2Jp2?2<&t8RBf{9J{6Mp79=*ci7C`Anae_ zUj9xeYE#flIP50p!{=}hDP;#iu!fztuy=}NVVzpD*y%f#Ebg&i*hW#J$dbwG#Ip}2 zX5PxY&+4QQ%{x_B$E@)rEJUB?ovlB{-_;AMP}{@p@Dper89w&wpUOs!_^iy|e)&b* zj*liK`PYT#=bz-2|8F=E+V%)02`r$tqm^UI=&tQ*~tqt5ar$X|sB>P*x@_D(!+Pqy0V3qo0@ND? zkUeNaynxy$R}=W0;iE=|vIG1p6qD~0)`BS7Xo0Rnb)%bgHj5jb_iPxLNcVF$m5&aqovN3HUhcHSI0#oSWw$K) zeT6(zB=WaUO@t0A`;?kREZf4Rx_d;{RioPR7!vz@6VuYUGWGeMakL$<*NeAF7WX=l zlQuNfNx7crm^lu^eDn%G-24V1&oq`TF&>y^DmcgT_(j$ZUSlzK`YzEMsUNa9)@zdJ z(R@^z|-9lf31yW=0aBz%ERa-dc%_&*lmXZM7&bwB(Dlt1D&8Z$Mx9)c%EI9#6wm-G6d z7fv^7*P${2(a%Hfd*VIK1uh>HTH;|j2ksScK6^@s=uMHXQqO}lssnrrwh2ZN8h;Mj zyl{wa!Kbp1S&%C}wSFSv-jJ z*cbo3U*m86+HXAW6ZSF0BTa-nnnJ$SJhDA8-ro9SY)6o&Z1c%4y#L)u$(k82^iJn(tLsB zMv+xKnukPTo$~ZzEGlkuE1FH;Rn= zrwFj6V)ggJBG5&@p-#G*fu` zI9t+}?q95C3zFnA;l=b|2l=)Gbx9QjYSRO6kFeNz;DsAq!H&r~M7ylU6pLfW{Coy} z5P=sS&cUGvCv9V@YPNc7^}((}>3wL70}e>1puP>N=Rto@ zkP&5GL}vyB)P1muP`Lx;5J+*5EU;Q3u-F{r-xAw#9D?r(IIkRiR}O=|$6%`r3z|2D zFVboHgxPiCdw<3Y?_I;y9R1@e%?J29|MZ{n?8O(5kL&jR7=LYeq>0e^2|s_Z^MIIF z7#6;B?++M@UST12@uAvm3`5K}$=%ddBA)S{i8dBmCS4iqD&EF}{nt7^LN!$O((4%I z6uN7SaZjAd;4-yFmUQVJ=O;ch(82+L`a!21Mn4R*Nve34Kwz09-L`qNoG29k)7;yW+P8ftfd(9_Z9-=j3VdH z`T6DNUqSl`*D1ta{wx*spN(vE+KqS}lCI;^R+=dYPd^drI8fW7Q~h(tRI2@7bHaVP zje9fn7E z>{9RcBzbTUW?Dpow9g(1s7FDLpw_N(`TDn5+$oPth3PJZz|Ve?fB0Yh6DC5ZYv%kI ze?9ogz5|{D`C1yke}*^j{sB)c{Pa+f^9O+}$)bX+cG#05Q?wA|?+*RWe)@gJ!xykn zSj%m4P7QJS%-2X(6XfbyY}+Q}3=?vO8S~Dvm3fER$dv(apZVCcY-Qda==Kh&=fhw!a_~)=}i{0`LJEg6Th?shcEvQ5qe7Qwc7klW*I z{8OhoW)9gw)D$yXCJO^Z^a*rVx*c*lr%$G|S2TRQjCx3Mgfcwm}Ie5>JvZ=VZP)UlvasC$UeQiS1ajwM(`ri6TXU8;Fen8fc*Ry{qc`qZ+*c z-B`Fv#C^`;Iq2@{s@oS}-Cw`=eSfd6k~gP$-`zXd+1}hPLU7?YRY<}N z%i97w62@_J7MQB}FFxjkX`4}kpID?rf;re+UiUM~@)4hvuxQYcjxgojWQdKzaY*Q( zJAf?YU0^?3eM7tteCNRC2iwlFpm0Iy7|0E5Lv#(aFd!Q)(Y49TrY%O_FmuiOl#P)2 z0i=3CbJDmChYoTQS^{9%WArO4%+M5Fh0;Vhi@9^D2$H-;Ilf%p57mqK=T6ai{z*)w zr4G@)B-nD057;>L(1X11Jr6X$w%}F6x)(yjQ_qk~b#u$s_gr)oXfYvA4@2P>>V!}@ zxwsdPK`J|gsun1kTtwza*lKoH;_?e^E5ey+PDW2u8k=qi?q_877X;k{bql@S;w4vD z>g|7e<~ib;&R*ZTx#JmFDqzot-V+(AqoCI&N8@Wl@1o*Z$&ugkXXVggk zmODW48I@;R(%70?Kxr+v?C^n}VcW64W6SV##Rq6HF&9MNwVVI;z}MN;C;EiFR#?|U z=+LIEc%&F^^C0IY9>rpIBFiQMo&h}0)qPuT<_WZb&Ez0g%+xj2v{}96@^Nf6jY}uO zzr^C-i#-)(qq%XCV93!Tq_^;i%5> z!kC8RXSk{T7A%T|p~);;{6^ArQ7bYuf4uG-CfS5ZHsLh8XtmcTrYF*)bhKQD*U?T< zD{?+Hj;gD5-b8*|pmKgmk|1GX!=i{_QO#AF+-3@C&c{aR3v8-*^fV&m>7vd3HvZ%I zUlC2ukS(SeXuX~e@0MlfK9!p%oSeaCInVySHxSL7uj@R&KsrCaWUDRY=_2ImG90|q zVTPuUpvVe-XCFt${|$d|2k*XX`)jIC*rnpo?mPMGO@3Z~Vr5sw9SOskdAY5z%_$>k zdQ*e+nbqPd8o5O7CJXA#E4W;n^~PIct@&z#cESv=TO^cfgG2kG@E4n!8#g*j5LLz@ z`3U4gG+!<>aK^y7*~q^s909tT91D<#;!EX(=;r^AD&$T;G6khY+e_gRmC|@M4i*!* zTN;R<1|czZ4s->St=0S`B~%tYOYgsy^o#62{O@$ms!g}TvR2ssoA>jnPy7*P(`C+v z7hF=-wGaXbb>4*&J3XNrDHPMFT9Nt0Fq5+{)*a_{bt6eK0q@3D<-07<;~(T~a(79%Op zYIcz;CNU{?hU2G+Cr+`i_r41jL9u*{T**jOuqswUf!%!f=(p%=J%FZbv^zS8=H{`R z>;$ZSa_KR)x878jq`eZu@iTP0dMl37gY5@76Mllh_Jddy%aXGFqE@7&l}Hy;6_FIl zhM9|>z-9|EoIZ~|H;+j+)8*<$k(6cKs@rUBg!A)+YP!&;^HE$@KiOi2+0+#MEt@eZ z%irYk#Wa(#6DX2SZ_6Gm<{-1FIZTSPVUIB|w%T5v_$jw-`p*@SHJcnJUrb|NrqS*K z*w>U}V6Ffih3wrwo`RqGxUEfilRsPvu3g>8G#SZct(lF|TolUB`F2y*u z#^Hnqw$(&^YERjkH$>1InxrhI6nNWsoNtGZ5;Gs;nU?C`{SkMNNt=^`45!-$z_!oW zhFS@A%E$?_9$Z-j={bl$1z9iXO-l6utTW)-2&PVBJ8ju>7NBqvlue+gSFU8!Gq~p; zVb{qSYbp=7PfeifD&y17QY=+77h}13TD*hUB=EX=mIw_+RWc5lMM+8kF%4>*%wiR z8sW%M?2?yFmX=2f7ZCE~S~x&QMf~SQIN$^G6sA-PY99u@RB% zEFO!uPN*od8BJFW|DFa0Y}rzVl2)oTXf0_4tZJGKtq0iX+d?EeORki~X0oB9uh_Cf zMyiz3FEE=N!C~znoH$QkVAIN03dvEDxmh}W+sKzPNRmXSw;Pa|ijOl{8l}s(0Y^F4 zC|gJ~5gWnpXra^Fi@9cuy)AordE%$^mvg;R`2?waVo8^J0Gru?uO@NYWAo$pg}D3X z>v{hz`y0;Rdg8bTv~sYoFKsw4FVL2+R*Ai)SV3%=bR$RTLUE~vIkTq--l9%lrn*1( ztK}%~xE0IrXs5}4XIhs%n)!vb_NRNFrC$BBtS_z*z@4KX?am4 zx0Flfbtr{F83YQTE-w0zs5oTs|;A1Wl-gHZ)!1siD8+_HFNLxPW`hW!OGN70l5Y1+1$m=?fpZgyD!Trpo z$7xrrOc(R$@!^K=t#xqjarLdLzgHwXOQMjV+q02eF@eV#s5ncX2tS2v_Ha6O3b(~W ztG#W-b1n#(#XZmfg6;t#$+LK!J;d`ykFW*Y77r%b#MZ!eRIS9h+2^pjH`3?Xh()nf za+OkrB(s??*-{p}$w9~w!lGDL6bG8FF`XD=N7o=-j%6BCVkAM2&mYBYYo)(+U*-9} zmc5M5y~L)r1M~(qQdA2JM~282Gk9!1!in>^Z9XEY@DhO|NfHiAfT{Qy{LU_X_5j`f zexu=P15?E6xOIw-ByYcQE7x~lm<7bO#tk>z$-!s;1u)9m<28Shr`+`&;}`n`xr(rR z(e}~BI#AcN2E7JZ{CBAt4O^8qBiE+XXfMuW^b|ve+$)eSRUM+E05y?R#RHbZV2gqK zz4fP&ef7!BU)PEWVgtq3gB_Hvv1(dJa+tlbI0}%tU8)uQmmCms*4+{ zrm{0k&l}<>5+7!K>PdX|Ai308rjk=QBgeUE)BDym-sO^vp>TU3pznb8HFS3K-2z7kY--Om;SSmiBT>6;otO*(K%h zwTaA=bI;S?CgZVso4Q(`op}nZZS;FLElC7-S=<#rq)aKpbY_aYnn%}ly4}4M!Q?bK zh~%qD883`JN`G)SffYnhIDUp?E<#UW7gn>A$@mzFY_u$FyiCSUQ__qrLP?S^$!4Y# z6PRQ(ifm$Y+fEc&Mv>AChL*P9I30ePR#ymR6$$QHHIF+~;(Y`MeyMHn8gL@*C$R`4Xe6xZlWj4T<3?l881+l(&tl`5}1 z6pk7GL`qHGr(`#_-WH?9*mC^;W!K3m$N#lMS*2La{5;?wr~@ z&F`N69=c)$f4aAGjbU}lGvMl&tj*eeT;KWu#8$U8HkwY69!)yws#Vq9oG`e6D(F`- zVS|Yz1>Px3ZE7&PI?`^0Deczr*CM|ehwOZLk!+4tSfxR8>-2k!M-*VR9bO5_|8N?b z(5oD0Y}Wj-Q6=w`p}%!{nA&=o(-sFDsW$`8icFB+wmi$P!k8JEGLqgWr4G=}u!00M z{f=eRANRd;j*-bSiNq!jU$$jXNa3pMk@1K`f5oz;h^jaoxms|b?Zd}R*9h}P=JwfW z^}PJ9r*q-yKac$HmfI?TKe|Dq=G1s%t-byxp27P-XtQ)#I$YPKj;JAo5k# zz;sk@&PO2ADt6$~(g|sk_9~Bz9A8?xblsmNfq*o4VZU(=y-+13#E4PCzSE^&vpeeF z<#ha}n)UK6s`W%i%NipfxZuVSDeY9#Uvz8S$g^fNPo_)H&`mQDCk3Tw|*vHIgzmZ_vExs);wlgMC7j4RcAp8h5cW@j;aKr;w~F6H`{CnZTjp6`#mx7v2kQ%d>t%k z99tdFf+PSwkLse-#H=)fU=*-_(c{!b#?loeOGc@TAk)vMd4#Sd9)pa#)h8G67UX!? zM}Ju4Y<*L1&R3D<6V?O4$s3#T@ZI3rgs1vjkt%)nThTr15&G;ECt zUh1;Q@9QjbDhezq5M~8K7Ec&T>T2ZNNH+<-Fq;PwkXm8$d$i*7vfdD=#)Zh~5ff=S z>E-2N^WgBd^uXD%ULD$LYKwczQEVlPwt!;bvh4EQX*Ku*jXc7E^9O`P6B^97YCPOir{}|IkC{4gei5%vgz~x zQ2ULuj1Q)ke0AK1 zn&oDs9tcx%5d@?~4d2Y{ebE|wIZ%30X^P#^C^V96ewu?6jPx~h%-fW3P4+8&Ol&EZ z9O?fQ`Mxm1-uJ1!68o?1)(^sz%g(i;T8K|H$7+-IOXDW`GXhVKXQjuu?H!IM(C;p+lKoXT zcAgch@)-i!MkA>ED}GxoU;;g&eM?cIAxEL?iFmo|W}aHrbag`ymT~o+3rrDvIndfK z1SrBm{er(VrC8GmI`_}as8~h983$w{S#u~ru8gx-hLmbY7dyBqWmS{>1HWf@8K~&x zN)tLK(nZ-7sf=<11$46ZL-YC$P}U|IY6r;xYf*cL!X`CIN2lJ_{xP%w%eL0_6sqO+ z-JwX>^(PO|w&of#NiOaeWhHP{t&w8LiGI!`|y=D3k73#z*nuL<624=ha71? z^Au@x6)Qe!mUUa+ppW-2?r1I1IB_yi7|&D5Fe@ls@h}h(V55}G4aS+Z!KyE=0!MC; z(STFl4fg6Ek4b%>i7|_@edZu+QwcnVD(vkoP$lQ}G(O{KGz=Cs#jPHV=1tx$y=#H0 zwvPpo90&UHcPMlq{ib?gC>QY*`&C9dP`}{kZnnarV^t$qzww2T8{gl&OBcgjlj0YZ z8vY+9BA9%98M%o>_yjBol2p!~NI_M`a2Hn+o$B#@INz7P1nH~VKsz~;xY+Q#-XpPb z!x@%(70zA-xv#1--1f0cSfomc=hvAYr; zFxwlSpgG^HsMO1$;{7-pS^qW6qRudFVf!q9dA57I`_0$*c4{@N zswC0YG{uT`*mQla04=WWg>monwI8XL*|b+xpkD=Ya+^|)QcGgX)RN-s`MEbLH-VSDpkoO<=B$@ zrWXS&xO{LApQn0p2cHGVH4~BiYE^zRG#D^P6)a-$SO2C>+Z|Bm@XC<1hz|&8N9d5T z2ghwDRi>t2f5dyr2HXqDy_^*eTeH0!v+AVz-L_jM$o>+R*snSeGL4Nz<>PD%1HQ zr>xhzD0kSSUcc=2MSX&4IE@g8F*3}I4_A@F_Y+|8+}WY8=~+bVkIq=~B2pjgW;Jhd zjo%exNd}y9VAtNf{tp&l;ar!_6dRF%5kCL3LLI~^3NE?2-1cc&IFC~GNAjcbc)*{| zGUgX#;)XXU?OUu@ROoqVz?^{ukIfxV@Qhr9_AkzPc~JWC=}1m&m#6&bMKJFQrFA#q zzg1~~VkQBh*Wa|qB~klGRVC*PuWDWFYJ8dI1Oj^S3z~`6i6!QARe3Xv9bk&dz10z! zEk{banlE43hXw?(nfJeM6GXO%G7$Hg-NeyRT&N3NH$34ru}Oftp;uo3k6q7}m^@aG z%j&u*Idn%opX`rw1mcLP*{@wA{bT)7A8wm)SeQ_U>hWv~7{FbTRUB1RLJVZ7gCgd? za&ZdXLIfO}KUCYMrq!-AAXBo%MM_>3#6T;^v*-QKhSIyyv{Wymklud%gT$lb3?|K0 zLSsa8Al$c6(Qt5U{Us4=DhTuY1*`iD5F|4@68g@-FJG4YHBpBk(-T3XY)zjXhMc-I zj}WTEqH6LC^7y8XiAa~l_uX^%%w_UWr_V&qc9KVB;E%1@N(^gH=dFpm6YbKamfZ5T zxU#98*pg-g!Mr*H>Qc4skAe$MWqk?l-At}}<)B|D!BdSX7*fF!3VSp=UbwPDDf(f) zxiHsA!zfD3pL3*`{Z{I$;J{uBTkA&av7{78$}lqF;7v|=HvA7Q$H#iRH?V8Aok8^e z^F$(WP^QyEK7Uss+#MqZaxwy)w`T!Pv81x|@MgI&QLI1gNtv&Rf4J^_{uzh)GbcD#lodTfVRwG2D#hzBN5Dqu#lU{6n9 zmyraZd?lSK;K&0JJ{i_gs&!LSw&_o<+_7{NAgu2ZRAaO0{RYlkm9DtqL`D)xn~F6P z2P*S7CO=71%1A*bvat7r{k803N2 zeDv1}%`0&8J^^v)kZX;gItJlJeM%4vj8b0Pu7#~gC0tnXN(+DXKX(5KX~70XW*_50 zc9mXw^R7Ag>)qY?Nzpu>S5}!2Cx0B03hf|roY1zhi zu{#0U!q4_dX;RN6-8o?U^YL>3zLUBNcY5yo{%bzfM=aPYTa><79;e_ zXCKpT&cF#tPy@cqf#gou=Yp+mto1C-5h{AFIKnt9vI7fhy`gLiN`RGLqvxF}%1uaI z1;1CuB`{V=+UFU-Xo9}eE={$#y=^pECAt?cx(y4i+>T3oC^E{ieZ+OVl`*wcI+8l0q@z?e!zrT~$_G-qGx-7i+-@3Q$E=W+RmELkO5%X<=gELn$zth! zFJML1?CS8DaY%C}kPi)s=Z3cyt1zXfl8pDgy|lc>CMMm0@h6CGJKB+}@6 zbY<-os?M0rbKSeEMqc+-d_0@o86_GMNq&C%!QSx76rF=6IXYq^GQm)dN>uwAW)P+> ze5xU-{>@}t(dxil$8FfOBLlGspOL5zb_6 z4k^L9NUU%DxQxPNSFNibP?(whu#I(hsLa}HY~jx(QM8#>lrnUa)K@UG3&dcc#A#2TlBz2-E^v2OB0+zH$$+A3jP9L5V;js%wPN9~? zsUfp&ML%EjL4@i*s@H(AG_wPsE&+6?*q|zPbQejjvktxr1mYR36;|$uK#G@Xups z1?A(WW|9Z!3*oOu~&bl^^9O5`B3eM!yf1Wh_oz)pejBPoCV=beG1Ym=v@@I zj3iMq#&8Y~QMMsc3$SRlwM+c=AV*qV;w)-1!o*B;2sKaoxG`EJqa z3#E0$Os)l;R|b@QFSK(w4hX!kacCyQ zJ^p*a90*nL;9GTzO>aw+QBp#B9%i5cl4Z3f2wKD9isu&X(Ir?~l79cC(l-Ow3`yVK zq-NDxj-mWbFRsT`NW3I@OXdWV zms0`=o(-Q+X-ER<>GNM3i=}5yJ(<{%v59r(@4LL+7jDG44$M=#>!H2MSl=$J;+2Iu z`!_!MV+i``e3BK^t*1;>xuVH<|8|h3TDss4=ZN-6bKxDR1I>xTRQ#WYOuOBh(DK=Xsbk$9n4{nQfN$y}Hn_Xk zcGA*I_)Z%v_Qk*h_Wb!7$94Mjr`D_ln)VYMDRi=NKDe-&Ans6OM#dkq3(2zvQfp}5 z{%90juH2BnHWM{dRn{bc!viP|k*IeKO@ImpBXzzcOda_$`Yvyo(g}hDh;ye^ta%lW zn?8vXjcYTB=#C~Wt0~{LH9zzJjvzAmb{t6`<;J?dA3e3M$+*g7PN~#O;m`;tR{LxI z=$mwgiDf^XjrK5VRAx@^>UxD&(CkT$!jQsDZPRfu0V&tR$K$$w?7sSmXRNGIv@QdC zefCA#cs3dF=t(th94bd0<~yV1;e{1xM_6Y=RjUYz5Jh7QowhxyV9HwG;lOF zUs?2`1ue;s8?XBm%bxlgue)7p zB%%nce5J10jLl%=GO1~C;)MJ{g<3Yo&zpfiDF4Bh#PvL*Vgt3 zQ{E*>dbt+52xg$Z%MHmt8V@%AgMLzH><6h}_?(p;q3nGm2l46jzT0_(fnJae&$FO= z;TFxPH!+{1_XeZqL9Sj_X|3CicEu~I$PX;c8g%kXc#)=vdaBI6JoN?aru6OUXjZzx zYqykhc4~*}2CK+YG;DhnZ2YGi=vy|SH$%$C&m9b@hfa5BY~*S%KtE zuFOb#PgGPhZIK&8m{aI+HCgI`Wn&aO`?%7K^)<}L)Ve|StUN3h?gPdB3ZBna%Zl5$ z5LTf(0{q9H`|RcX19J*j*7BVR`P4=`Zw%CdT-2L29uKMnNhxPyhb*n1zgVP=I}X9v zAsS&}ai}TdJ z8~wMqXbxEfz0e?m((FMA*X_hNk%D*wK6aI|jp^Sb5(f$luEVmbPL33d;bQXoKfxTW z9j=b9phHjgDT~ApPv;w(-0c$A@XhaQofR})Q6T!9H{B@)F66$wu#Y#;hoDOIQqWs&s-lV79Do%r^=%w|(kNfU? zm^RI|u;QJ8!w>f9dL`edL*tb7x0RIwBlG-R=`$mG#c;mX)sEM+JtYeSLOogvJCBz` zIjV*nypiOYMja;_T$SpvvIGPTnf)Q{-DhR<+x3jH$Ps2#hks|O;UyfdFl*kYwxp(J z2pF?>e>znlXX#6Y_+s;kt< zs~z4490HP3hCVD2YD^wqL$=vN>l|p4-#c4x2(FzyA=8s$_K;x@Hp}QdI@nZpgp-}O zP0>LTGi1jeAyG4=xRieMe|l$|OkhPLapkB}m>a((vjcPaJ!BAjN)jwnSdU|SdA)eP z?QqQ*asSTo>FMzLwu-WbW3usd5vkU!N`ssy>qwArZ(!(G-G&HD-uC2 zyEs{mx$OgRW)aNw`?7m!?Yk+X8i^{W<*+Jb!rk#$+pe-`ubB1w4eE<#)i!FlIc5S9_s7_o-u9a-%*aD zS_zeAB1=$n#YHyW(_2}3=}Z%;H^# zaIA8s7lX!+sH3Dnbzr6fTZo|?pC^BEM4QrlY};ptMYuzyl*$8E0c_@%DCacO`LIzC zbA0RoGrSv@k>1XlU}`$)_mLPzlV3Q~CswOb^Ly04qvHm8f#`BoqqP|?P;^4){f%J? zd_B0p5NYqeoO`w7;~U#7hkt39Y`_YFk9Qkc#GehT3MC>%GvuiI)bRLO+s1NIgPNmX z30h7kmf-o7->Exee<_0SHgC@fRTQsWKD@{@dgoWdO*zbB6DA<0er3kpD!fdCf17zT zogZX5br>ZCgT07^F4cTS+X!J}@I^0S{51nn>8AI%Vuw2^K{P~B6e4J`bwXP1q!f*5bcL5_&hppyVVpRh8rx@2}b^WF?<`On1E@Kgl zqmE7;S`h^Zsl1l6g0L7@>}zgd1cI(#fd+8ltf=?_FPT0rx{A^f)ffYi`_LKJ zX-ky|0xbIJ!Ri`!Zf3h~rXrY}2e%yFTsa;fJ;2I)Q1P(1;4Gax&D3d)!Z~7>GCDTZ zE>orofs?`p=YV*q&0!R$@J9%COSg_xvOs1A(APP-VVuS@-Ml? z9F8?qv+1+ehFX7##}Bg>jkfiwA4*Q6ETDL;L<9=VZehtP-!g-t=!*S;_9?C;(Kv&e zPUJLG#Rczai07;Hdd_P7)Zz*H9|GLpJa7|IrIL|FwC~^m!K9Fy>pz=pj}}habfS`cQufc`<}VY zfp>RFf8ik>5YMfRka+dl{lW#M3QB$y^<{(=cDAO^gQ9H?u4= zKt%yHqgT;M%J<;Rx+xGr!5C&2S}#`D$bjXjP)n8@t5*dHem}&Pq8! zc(Es((idlV_b%=1i?2G|w6VFFs!Kz2om%1QlK)u!_)L)!YHM?bDfpTmF-Djz?CQ08 zZsdBKWM$so>MheGwU)N$<#MiX=3$gc+nLbW;)QRAv7l0+Z8L20l`wT{Q*8Vo3mLy` zBHzJea#|lW6q`^6Zi&zLUMQXNqWUY2u3$l(salwj zU*nL*MwOvqqzo%A4Zo3YAHmK_wrORaErWnuM+R^-k*llEG+BFPc)Y8?-FZji+o~+~ z&UlSH+}&n3YD*smf21J@N3NoG7+q8j)(0JqD4QVf**gGs1OOe2C3=&So8z%zHmyX7 z=_fK|bN}?rpF}v`B_P3$(IAUlSF>8fM}0~)`K6uw*YJ^n-miU=%7Msz?;_HbL(5I5aFC-S&1S0dlYE{DI&7baNhqRB~`t6>>zW+-8 z&vSo@IB|;D!M66R*fWYavjjNMZ`AC!wDPz1@9dP0tM@6i(rg~z>RAM?K5hRtR|>P%0@ zb(c*y{lewXUdZLB0&B4>E#6G~b+h>m!R7BJP3qd3s%>ZHTQ03QYxX!Nrbzg|ro!gK z?(EsbB(7jKM+*h#bSpQ$n^kf^wB6}Y@{c5L%#`=qie^b=a$rX5biJ;L6IqwjIzf+kc!^M>-K^87 z9;G-_G4@YLva)qYHfikcshpOrm3aI631yXnHuqGVr36|?^g2fC+E6vLG2EZMze&k= zZ&Pr}-7Q2fxa@H3iFu1Z;6dWr%EF)8??VWdT*iY?G)ca|WlM*R>$VrQ?FYZeMiZuI zek(mhe3{O+Fnf3qjXiugGHqzw5ub|WPX}>L?yipl;4EO98#Jr}E1$A8mkhR9_8k8( zqf^Ba*}SLq&xjmAdUT^i1d%O%zO*2!HY}K36E7^S{BGH?*bQVur2$zUWla*0_}Lif zRht(^OSY(CpU?0a5}257C_U_yY{Fic^UdlSDJQ=ECd?u#RLOsB;}nUo6$dJ3#x(|y{F>e$-@ z67e4)_4qPwKK4Gr?T(*%+Y-%$pDFD;-&=0OKg{R7?;mlFZDu!1kr|pEBv-LXWUwd=dC%0`N z4c8I)<)cyO!hral`Vz#H#^Q!CL%HIStt=vy8E--e& z``%V(PB^}WWPbbv0P`R0yst-?>HE)8Bsb~yndp*84z=DhxtujXC)c3oQ^o##8+qGp zGAgtyROTpdD_nZdTmSpm`>y*r>CWqYI4C&=feA?juJz*rT1h!alShSH+3*zxIYpIt zJh=)DD~ICfqX6+BnzV{TN)sWW6P7)bRt$hk3q%At*RFNgK7WF#^(CVR@GdI6s@#B8 zkZ^bpUsV+#r^dbQz&v@jI#n|wpk%WS#ei>TukLA#C>@8b3>o-4!fu7I+O|jVXBWtU zH;K_#!B-oaYCY*<#$mY>_5575LnKN)z@Tbisk@uOEkk|>duHu^a%F~$F@~#$j8I8) zsP`PvKlE0M*e)Pr{wD=)ZRD;HTYiuxx;@QR%GT%}TK=xizj%onjj=B=PPmYfO>7eS zN+|bhNgXN-Jz`Gcn(o=#%zoqkEw|p9AHp1=2%L`5$?=-P-F=(M^QTNcm*B&AJN8i= z6}e1#whA}c#NUOy8a&eBD*>YxqPA(J9Enz&+34L(jC_i)vSk*Kmdgv3Y(`>P9ag`a7$&x*dV{ zox6tX1^7oq>mGmAQiz^rE(#U541(V=CXn65Wh(2kBc*>OV*SG**QlRa3wnxBvAs%* zt$7JP#6o5WjKs$CCASL{lpxOc;G5+bEvEQ3F0tMVEBxHtg)eEV0mLr|9W38+UT&m_ z?n$e9-#;kT>fYpEVWdUlPbPs&*g13~doZsMdObNqvq$l?!NeGjcUMCzXz?O3XB$Gm zt0h}OxJ_k%{|m>;^R#VS#W;3n;9k zoIeWSe^%5lZLZW2X^QWjRN8vsJ~Na~ZQw=JZCz>diUl1Cw(CByrjCP|KM(ESbW~!D zJDAR)io0ijxeb{W{kt;4@z#gwwR^^^6?YRlSqfU>Qh4 zNqD$<{az@ZN^9kPXD?Y`Octqgb$%JzL3%2-iu0=a3v1#iDx^5szZ z=oX%r>Dix~sClNS!CcMm5MK#uWAN^R=Voy>p!RlfPj0=mYuFXl> zsvwIU^B)3o#l|ayr(qw;wILIg1ACOQRN;dl9znmsoh<$aln_n;jRa9nV%(@|URB+7`}^ z0U2<1`*3#uE;iV!!`rW-2wx~Dl}$kuqJI*;{Cehde*Vj}*q`1XRm7iOs&rVkv^3?X zqt5)4Zeg`+Xs4;6fFVv>hdvw%0+Pwtm5H zg!mYB8*%CwaWs*Dou^K3!XYev*uBV@@7^JpgG9e716_iF<&zYBO*DS|FsjoA0}Nwp zO`1Xq5B<-8>h*A>6sT~(Z~aw3%)gKTzx|y6YwVvtQQ_to0U7zfyy373jz|-Lkd^-D zE&+OoH?Ht)RUwe7s05*+|9j20^PnlJq$KI|xnS7YG%GK0V9y@7!Z0iecI0KI{+B!( zcwgt8IAqCFhZPyHn3tWHN>LH&YFN01<+hCBHd_8tLCik)x+7-Z=lO3UxH6tnbPsOEAcq{JPgZ;#2o?8NfNZy|f<(MOO_mqLVFXQadv@`f) z0#Q#u9m->0dCAlbDKp0rY`E!x)UWonzivDs>0vmy8!&Je{v*y1(z!51BSy>Kl0XFt z^sm#s%$p*=M9Df5gMrLtD@)2~F+dP)%U`uyT^gsFl}7}mI`flGFNS?JXE7A!i}Sr{ zW$6k3@646Xb5*K;G~vussJziEjq~+-YK01!l2VoF+(6^B|2!k=KU-Ai!iMd}+ZFz4 z+T^J_?*vp`DtUW-J%7t+^(gN?N2zc*ckp49~H`W9<`dInC@1vn)mhmY7K9+ zj8cLNbXvWJB#6D@nSCDa?uXm&9c&slKkB+}!U#Pt6O%4Xb!C4Gq3btK>6@4UdG8XQ zZ)D5+grRu<4N$XQp)Vd8W-W{sdZa-Sex`iguYZg90E>)@9P-e|{hIuA-u?#GHLKM= z8mEpZ2N>tREmhtgSysDrtS6hUFswNjrb1k5{;2YD7b*NorT4Zp-|%u9z(XKs(|qdO z_Lxxq7r1V^i|f0O0+d2MYmQ!jYhB-dIe+U=A-+qsZhs4z5jON`rEgriq(OuRKU=md#_XEsx+*FO<8;XBHd@KoL@RX`>hXPjKz>=NWuR6zf}Ew(vsIjI{wLMxr8@eZa-jofopL`fpb6b^Nnl$aju@naX$U} z=0@j&b*>6b)T-^!wBqLTde!fGzZt^oaLW)R0wtz+6!p^6Puycsds)EU7K`F_z)fE+ zcr)|;`7rYt#Y)w3^+Nb*as0l}=h4i2-$e+)mth#mME`u@1>eZqUktS6s8KwxT^e44z0|JR|9MKiW|PYtIPYHTY*xFb<%LIE@7A>3 z&WZ~&43Fm+owgsZ3x$KC#=P!Y6NsNTp000ibt5K zf9xlE#?^ZQ#Of-Fp9VYplhukc_s8nRhyrs-aA4gJy(KvAxoEX{M_r*y^wZN*&VF+w zpEinrx73QUhNib!@EC4Ck`6SMbs9UoBsHjexFQD?aN8?z0@ z$qNncxBnF*a^3Kw#CR!|_Xg{EjF(@`)wiZkPEM9`?Ip~d?=5+TwW~~29?ej=&%=Wv<2$_(t=lo^u zoSmP4xTgoY{bmz|TW~!g`8%-7Hq14EkC_=-f6fclFL?-cWWGJ<#Yj@zSO4@$O|{|s zTcYV>sSy_)Qx}Y(XK~iDjV$zXD1UJnBGlb;&$B8hC~!Sd*a%SQsIT_#6}8Z--Mh6{ z`tyyuc=`*781y1EujpLRgf`=FEprdiPs6pLt!P%Fb+rUN2zj=O3n$i1yk& z54c%VWu70Oyj$6#mRK2y$UBIif$Dgb(SidT8>V6T=yChhbmKmo;d(oXT0gswZ!UwF zJ-rvNbQroM04?>0yX^XL`9QPQvJ-gJf(-puJ#MSqu1I_yaD42mg#X#m%Vr)uisxfW8^dc7YYmZF`)W#6n*{jSTDAZ>Rav+NvFaT0 z>X>KfMmp4}s;2xu3{pBi&)5DYE)iUQlu`}!QxO?Bzf+`3cn2@*VI8zzhF$eXfiB_i zlNXX6jzg34|MWw(>|N40)~uu>-Ejs`Jv%h~E~j76v@l9Vrj?_J1cR4P&F`C%r)#UH z{y)t)_Mc{KYtt1Mmw4!P7)OijW3uo)hG}09Sw77!ueYmB`Ty&(4`6^n|6>J8;;%ixzgVD%{A;E7ZCLz$`;eayQSyVvTlyXF0g1_pmWk;5|1Vb?GS>hA diff --git a/doc/salome/gui/HexoticPLUGIN/input/hexotic_hypo.doc b/doc/salome/gui/HexoticPLUGIN/input/hexotic_hypo.doc index ab29eb8..0901b1e 100644 --- a/doc/salome/gui/HexoticPLUGIN/input/hexotic_hypo.doc +++ b/doc/salome/gui/HexoticPLUGIN/input/hexotic_hypo.doc @@ -14,33 +14,30 @@ algorithm. This algorithm is a commercial software.
  • Name - allows to define the name of the hypothesis (MG-Hexa Parameters by default).
  • -
  • Min size - allows defining the minimal size of the elements (overrides Nb. Hexes Max Level value).
  • +
  • Physical size - defines size of elements +
      +
    • Type - \a Global activates and \a None deactivates this option
    • -
    • Max size - allows defining the maximal size of the elements (overrides Nb. Hexes Min Level value).
    • +
    • Min size - allows defining the minimal size of the elements (overrides Nb. Hexes Max Level value).
    • -
    • Nb. Hexes Min Level - allows defining the minimal level of recursive partitioning on the initial octree cube.
    • - -
    • Nb. Hexes Max Level - allows defining the maximal level of recursive partitioning on the initial octree cube.
    • - -
    • Generate smooth meshes no ridges - specifies that the mesher can ignore ridges. A ridge is a geometrical entity (a sharp edge). The resulting meshes will have better quality elements, at the price of "smoothing" out the geometry. +
    • Max size - allows defining the maximal size of the + elements (overrides Nb. Hexes Min Level value).
    • +
  • -
  • Authorize invalid elements - specifies that the mesher must conform as much as possible to the geometry (especially the sharp edges). The resulting meshes may contain invalid elements (but with positive volumes: for example, three vertices of an hexahedron on the same edge), for the benefit of better geometry accuracy. -
  • - -
  • Sharp angle threshold in degrees - specifies the angle between two triangles above which the hex mesher will consider the edge common to these two triangles as being a "ridge". A ridge is a geometrical entity (a sharp edge) which has to be kept as it is in the final hex mesh.The default value is 60 (degrees).
    If you raise this value, the hex mesher will detect less ridges, and the final solid mesh will therefore be smoother. On the other hand, if you reduce this value, more ridges will be detected and the algorithm will face harder situations to conform to. -
  • - -
  • Number of threads - specifies the number of threads to be used (this should be the number of cores or processors of a shared memory parallel architecture). -
  • - -
  • Working directory - specifies the directory where the input/output files will be created. -
  • - -
  • Verbosity - specifies the verbose level to print information on meshing steps. -
  • - -
  • Max memory (MB) - specifies the maximum allocatable memory in MegaBytes. +
  • Geometric size - defines size of elements depending on curvature +
      +
    • Type - \a Global activates and \a None deactivates this option
    • + +
    • Mesh angle - specifies the angle (in degrees) between two triangles + for the curvature based refinement. This angle should be in a + range between ridge angle and 180. This angle is a + threshold that will trigger the refinement: during the octree + building, each octant containing triangles that make an angle + greater than the threshold will be split. The process will be + repeated until every octants contain portion of the geometry + smoother than the threshold angle.
    • +
  • Sub-domains mesh mode - This option allows the user to mesh or not mesh internal subdomains (such as holes), or to mesh non-manifold domains. @@ -64,9 +61,78 @@ This allows to avoid the reconstruction of the GMF file from the SMESH structure In \b Advanced tab page you can specify advanced options of MG-Hexa not exposed in other pages. + Add option adds a line to the table where you can type an option and its value as text. A check box in the first column activates/deactivates the option of the current row. A deactivated option will be erased upon pressing \a Ok. +
      +
    • Allow invalid elements - specifies that the mesher must + conform as much as possible to the geometry (especially the sharp + edges). The resulting meshes may contain invalid elements (but with + positive volumes: for example, three vertices of an hexahedron on + the same edge), for the benefit of better geometry accuracy.
    • + +
    • Compute ridges - Enables the computation of ridges. If set + to no, smooth meshes (without ridges) will be generated. A ridge is + a geometrical entity (a sharp edge). The resulting meshes will have + better quality elements, at the price of "smoothing" out the + geometry. +
    • + +
    • Element order - determines the order of the mesh elements + to be generated: \a linear or \a quadratic
    • + +
    • Enforce constant layer size - force the first physical layer to have the same size throughout the mesh.
    • + +
    • Flatten hexa sides - activates specific optimization process to flatten the sides of hexahedra.
    • + +
    • Nb. Hexes Min Level - allows defining the minimal level of recursive partitioning on the initial octree cube.
    • + +
    • Nb. Hexes Max Level - allows defining the maximal level of recursive partitioning on the initial octree cube.
    • + +
    • Maximal memory (MB) - specifies the maximum allocatable memory in MegaBytes. +
    • + +
    • Maximal number of threads - specifies the number of threads to be used (this should be the number of cores or processors of a shared memory parallel architecture). +
    • + +
    • Recover sharp angles - subdivides elements around sharp angles up to Nb. Hexes Max Level.
    • + +
    • Ridge angle (degrees) - specifies the angle between two triangles above which the hex mesher will consider the edge common to these two triangles as being a "ridge". A ridge is a geometrical entity (a sharp edge) which has to be kept as it is in the final hex mesh.The default value is 60 (degrees).
      If you raise this value, the hex mesher will detect less ridges, and the final solid mesh will therefore be smoother. On the other hand, if you reduce this value, more ridges will be detected and the algorithm will face harder situations to conform to. +
    • + +
    • Size map level - when using a sizemap, sets the octree's + maximum subdivision level to apply to the sizemap.
    • + +
    • Tags - sets how surface attributes must be considered. +
        +
      • \a respect: preserve surface attributes
      • +
      • \a clear: clear surface attributes
      • +
      +
    • + +
    • Working directory - specifies the directory where the input/output files will be created. +
    • + +
    • Verbosity - specifies the verbose level to print information on meshing steps. +
    • + +
    • Print log in a file - if this option is checked on the log is printed in a +file placed in the working directory, otherwise it is printed on the standard output. +
    • + +
    • Remove log on success - if this option is checked on the log file is kept only +if an error occurs during the computation. This option is only available if Print log in a file +is enabled (there must be a log file to delete it) and Keep all working files is disabled +(in this case the log file is always kept). +
    • + +
    • Keep working files - allows checking input and output files +of MG-Hexa software, while usually these files are removed after the +launch of the mesher. The log file (if any) is also kept if this option is checked. +
    • +
    + \section hexotic_local_size_parameters Local size The local size allows you to drive locally the density of the 3D mesh. diff --git a/idl/HexoticPlugin_Algorithm.idl b/idl/HexoticPlugin_Algorithm.idl index 18eb819..443b51c 100644 --- a/idl/HexoticPlugin_Algorithm.idl +++ b/idl/HexoticPlugin_Algorithm.idl @@ -34,15 +34,17 @@ */ module HexoticPlugin { + typedef sequence string_array; + /*! * Type definitions for the size maps */ struct HexoticPluginSizeMap { - string entry; - double size; + string entry; + double size; }; - - typedef sequence HexoticPluginSizeMapsList; + + typedef sequence HexoticPluginSizeMapsList; /*! * HexoticPlugin_Hexotic: interface of Hexotic algorithm @@ -68,45 +70,84 @@ module HexoticPlugin void SetMaxSize(in double value); double GetMaxSize(); + void SetGeomApproxAngle(in double angle); + double GetGeomApproxAngle(); + void SetHexoticIgnoreRidges(in boolean value); boolean GetHexoticIgnoreRidges(); void SetHexoticInvalidElements(in boolean value); boolean GetHexoticInvalidElements(); - + void SetHexoticSharpAngleThreshold(in double value); double GetHexoticSharpAngleThreshold(); - + void SetHexoticNbProc(in long value); long GetHexoticNbProc(); void SetHexoticWorkingDirectory(in string path) raises (SALOME::SALOME_Exception); string GetHexoticWorkingDirectory(); - + void SetHexoticSdMode(in long value); long GetHexoticSdMode(); - + void SetHexoticVerbosity(in long value); long GetHexoticVerbosity(); void SetHexoticMaxMemory(in long value); long GetHexoticMaxMemory(); - - void SetAdvancedOption(in string option); + + void SetKeepFiles(in boolean toKeep); + boolean GetKeepFiles(); + + void SetStandardOutputLog(in boolean logInStandardOutput); + boolean GetStandardOutputLog(); + + void SetRemoveLogOnSuccess(in boolean removeLogOnSuccess); + boolean GetRemoveLogOnSuccess(); + + /*! + * Set advanced option value + */ + void SetOptionValue(in string optionName, + in string optionValue) raises (SALOME::SALOME_Exception); + string GetOptionValue(in string optionName) raises (SALOME::SALOME_Exception); + void UnsetOption(in string optionName); + /*! + * Adds custom advanced option and its value + */ + void SetAdvancedOption(in string optionsAndValues) // in a form "option_1 v1 option_2 v2'" + raises (SALOME::SALOME_Exception); string GetAdvancedOption(); + void AddOption(in string optionName, in string optionValue); + string GetOption(in string optionName); void SetTextOptions(in string option);// obsolete - string GetTextOptions(); - - void SetSizeMapEntry(in string entry, - in double size); + string GetTextOptions(); // obsolete + /*! + * Return array of strings each of which is option name concatenated + * with option value devided by semicolon - "option_name:option_value:option_type". + * Option value is empty if an option is not set. + * option_type: 1 if user-define, 0 if default + * Note: the method is mostly for interaction with GUI. + */ + string_array GetOptionValues(); + string_array GetAdvancedOptionValues(); + /*! + * Set option values each in the form "option_name[:option_value][:option_type]". + * Note: the method is mostly for interaction with GUI. + */ + void SetOptionValues(in string_array options) raises (SALOME::SALOME_Exception); + void SetAdvancedOptionValues(in string_array options); + + + void SetSizeMapEntry(in string entry, in double size); void UnsetSizeMapEntry(in string entry); - void SetSizeMap(in GEOM::GEOM_Object GeomObj, - in double size); + void SetSizeMap(in GEOM::GEOM_Object GeomObj, in double size); void UnsetSizeMap(in GEOM::GEOM_Object GeomObj); HexoticPluginSizeMapsList GetSizeMaps(); - + void SetNbLayers(in long theVal); long GetNbLayers(); diff --git a/src/GUI/CMakeLists.txt b/src/GUI/CMakeLists.txt index 210d64b..1ed0189 100644 --- a/src/GUI/CMakeLists.txt +++ b/src/GUI/CMakeLists.txt @@ -37,6 +37,7 @@ INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} ${PROJECT_BINARY_DIR}/idl ${PROJECT_SOURCE_DIR}/src/HexoticPlugin + ${PROJECT_SOURCE_DIR}/src/GUI ) # additional preprocessor / compiler flags @@ -67,6 +68,7 @@ SET(_link_LIBRARIES SET(_moc_HEADERS HexoticPluginGUI_HypothesisCreator.h HexoticPluginGUI_Dlg.h + HexoticPluginGUI_TreeWidget.h ) # header files / no moc processed @@ -85,9 +87,11 @@ QT_WRAP_MOC(_moc_SOURCES ${_moc_HEADERS}) SET(_other_SOURCES HexoticPluginGUI.cxx HexoticPluginGUI_StdWidget.cxx + HexoticPluginGUI_AdvWidget.cxx HexoticPluginGUI_SizeMapsWidget.cxx HexoticPluginGUI_ViscousLayersWidget.cxx HexoticPluginGUI_HypothesisCreator.cxx + HexoticPluginGUI_TreeWidget.cxx ) # --- resources --- @@ -103,6 +107,7 @@ SET(_ts_RESOURCES # resource files / to be processed by uic SET(_uic_files HexoticPluginGUI_StdWidget_QTD.ui + HexoticPluginGUI_AdvWidget_QTD.ui HexoticPluginGUI_SizeMapsWidget_QTD.ui HexoticPluginGUI_ViscousLayersWidget_QTD.ui ) diff --git a/src/GUI/HexoticPLUGIN_msg_en.ts b/src/GUI/HexoticPLUGIN_msg_en.ts index 2caa662..f794b90 100644 --- a/src/GUI/HexoticPLUGIN_msg_en.ts +++ b/src/GUI/HexoticPLUGIN_msg_en.ts @@ -17,7 +17,7 @@ Hexotic_INPUT_SIZE - Sizes + Physical size Hexotic_INPUT_LEVEL @@ -65,7 +65,7 @@ Hexotic_VERBOSITY - Verbosity + Verbose level Hexotic_MAX_MEMORY @@ -151,5 +151,85 @@ Hexotic_IMPRINTED_FACES Imprinted faces + + Hexotic_ADD_OPTION + Add option + + + Hexotic_GEOM_SIZE + Geometric size + + + Hexotic_PHY_SIZE_TYPE + Type + + + Hexotic_GEOM_SIZE_TYPE + Type + + + Hexotic_NONE + None + + + Hexotic_GLOBAL + Global + + + Hexotic_GEOM_APPROX_ANGLE + Mesh Angle + + + allow_invalid_elements + Allow invalid elements + + + element_order + Element order + + + enforce_constant_layer_size + Enforce constant layer size + + + compute_ridges + Compute ridges + + + flatten_hexa_sides + Flatten hexa sides + + + max_memory + Maximal memory + + + max_number_of_threads + Maximal number of threads + + + ridge_angle + Ridge angle (degrees) + + + min_level + Nb. Hexes Min Level + + + max_level + Nb. Hexes Max Level + + + recover_sharp_angles + Recover sharp angles + + + sizemap_level + Size map level + + + tags + Tags + diff --git a/src/GUI/HexoticPluginGUI_AdvWidget.cxx b/src/GUI/HexoticPluginGUI_AdvWidget.cxx new file mode 100644 index 0000000..8325e41 --- /dev/null +++ b/src/GUI/HexoticPluginGUI_AdvWidget.cxx @@ -0,0 +1,147 @@ +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// --- +// File : HexoticPluginGUI_Dlg.cxx +// Authors : Renaud NEDELEC (OCC) +// --- +// + +#include "HexoticPluginGUI_Dlg.h" + +#include +#include + +#include +#include +#include + +namespace +{ + enum { EDITABLE_ROLE = Qt::UserRole + 1, PARAM_NAME, + NAME_COL = 0, VALUE_COL }; + + class ItemDelegate: public QItemDelegate { + public: + ItemDelegate(QObject* parent=0): QItemDelegate(parent) {} + QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const + { + bool editable = index.data( EDITABLE_ROLE ).toInt(); + return editable ? QItemDelegate::createEditor( parent, o, index ) : 0; + } + }; +} + +////////////////////////////////////////// +// HexoticPluginGUI_AdvWidget +////////////////////////////////////////// + +HexoticPluginGUI_AdvWidget::HexoticPluginGUI_AdvWidget( QWidget* parent, Qt::WindowFlags f ) +: QWidget( parent, f ) +{ + setupUi( this ); + //myOptionTable->layout()->setMargin( 0 ); + myOptionTable->header()->setSectionResizeMode( QHeaderView::ResizeToContents ); + myOptionTable->setItemDelegate( new ItemDelegate( myOptionTable ) ); + + connect( myOptionTable, SIGNAL( itemChanged(QTreeWidgetItem *, int)), SLOT( itemChanged(QTreeWidgetItem *, int ))); +} + +HexoticPluginGUI_AdvWidget::~HexoticPluginGUI_AdvWidget() +{ +} + +void HexoticPluginGUI_AdvWidget::AddOption( const char* option, bool isCustom ) +{ + QTreeWidget * table = myOptionTable; + //table->setExpanded( true ); + + QTreeWidgetItem * row = new QTreeWidgetItem( table ); + row->setData( NAME_COL, EDITABLE_ROLE, int( isCustom && !option )); + row->setFlags( row->flags() | Qt::ItemIsEditable ); + + QString name, value; + bool isDefault = false; + if ( option ) + { + QStringList name_value_type = QString(option).split( ":", QString::KeepEmptyParts ); + if ( name_value_type.size() > 0 ) + name = name_value_type[0]; + if ( name_value_type.size() > 1 ) + value = name_value_type[1]; + if ( name_value_type.size() > 2 ) + isDefault = !name_value_type[2].toInt(); + + // if ( value == HexoticPlugin_Hypothesis::NoValue() ) + // value.clear(); + } + row->setText( 0, tr( name.toLatin1().constData() )); + row->setText( 1, tr( value.toLatin1().constData() )); + row->setCheckState( 0, isDefault ? Qt::Unchecked : Qt::Checked); + row->setData( NAME_COL, PARAM_NAME, name ); + + if ( isCustom ) + { + myOptionTable->scrollToItem( row ); + myOptionTable->setCurrentItem( row ); + myOptionTable->editItem( row, NAME_COL ); + } +} + +void HexoticPluginGUI_AdvWidget::GetOptionAndValue( QTreeWidgetItem * tblRow, + QString& option, + QString& value, + bool& isDefault) +{ + option = tblRow->data( NAME_COL, PARAM_NAME ).toString(); + value = tblRow->text( VALUE_COL ); + isDefault = ! tblRow->checkState( NAME_COL ); + + // if ( value.isEmpty() ) + // value = HexoticPlugin_Hypothesis::NoValue(); +} + + +void HexoticPluginGUI_AdvWidget::itemChanged(QTreeWidgetItem * tblRow, int column) +{ + if ( tblRow ) + { + myOptionTable->blockSignals( true ); + + tblRow->setData( VALUE_COL, EDITABLE_ROLE, int( tblRow->checkState( NAME_COL ))); + + int c = tblRow->checkState( NAME_COL ) ? 0 : 150; + tblRow->setForeground( VALUE_COL, QBrush( QColor( c, c, c ))); + + if ( column == NAME_COL && tblRow->data( NAME_COL, EDITABLE_ROLE ).toInt() ) // custom table + { + tblRow->setData( NAME_COL, PARAM_NAME, tblRow->text( NAME_COL )); + } + + myOptionTable->blockSignals( false ); + } +} + + +void HexoticPluginGUI_AdvWidget::onDirBtnClicked() +{ + QString dir = SUIT_FileDlg::getExistingDirectory( this, myHexoticWorkingDir->text(), QString() ); + if ( !dir.isEmpty() ) + myHexoticWorkingDir->setText( dir ); +} diff --git a/src/GUI/HexoticPluginGUI_AdvWidget_QTD.ui b/src/GUI/HexoticPluginGUI_AdvWidget_QTD.ui new file mode 100644 index 0000000..45847cf --- /dev/null +++ b/src/GUI/HexoticPluginGUI_AdvWidget_QTD.ui @@ -0,0 +1,166 @@ + + + HexoticPluginGUI_AdvWidget_QTD + + + + 0 + 0 + 344 + 355 + + + + Form + + + + + + + 0 + 2 + + + + QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed + + + true + + + + OPTION_NAME_COLUMN + + + + 50 + false + + + + + + OPTION_VALUE_COLUMN + + + + 50 + false + + + + + + + + + Qt::Horizontal + + + + 188 + 20 + + + + + + + + + 0 + 0 + + + + Logs and debug + + + + + + + + Hexotic_WORKING_DIR + + + + + + + + + + Hexotic_SELECT_DIR + + + + + + + Hexotic_VERBOSITY + + + + + + + + + + + + + + Print log in a file + + + true + + + + + + + Remove log file on success + + + true + + + + + + + + + Keep working files + + + false + + + + + + + + + + Hexotic_ADD_OPTION + + + + + + + + HexoticPluginGUI_TreeWidget + QTreeWidget +
    HexoticPluginGUI_TreeWidget.h
    +
    +
    + + +
    diff --git a/src/GUI/HexoticPluginGUI_Dlg.h b/src/GUI/HexoticPluginGUI_Dlg.h index a7735c7..286ce52 100644 --- a/src/GUI/HexoticPluginGUI_Dlg.h +++ b/src/GUI/HexoticPluginGUI_Dlg.h @@ -32,11 +32,20 @@ enum { SD_MODE_4 }; +enum { + OPTION_ID_COLUMN = 0, + OPTION_TYPE_COLUMN, + OPTION_NAME_COLUMN = 0, + OPTION_VALUE_COLUMN, + NB_COLUMNS, +}; + ////////////////////////////////////////// // HexoticPluginGUI_StdWidget ////////////////////////////////////////// #include "ui_HexoticPluginGUI_StdWidget_QTD.h" +#include "ui_HexoticPluginGUI_AdvWidget_QTD.h" #include "ui_HexoticPluginGUI_SizeMapsWidget_QTD.h" #include "ui_HexoticPluginGUI_ViscousLayersWidget_QTD.h" #include "HexoticPluginGUI.h" @@ -53,13 +62,32 @@ public: ~HexoticPluginGUI_StdWidget(); public slots: - void onDirBtnClicked(); void onSdModeSelected(int sdMode); + void onSizeTypeChange(int); public: QPixmap imageSdMode; }; +class HEXOTICPLUGIN_GUI_EXPORT HexoticPluginGUI_AdvWidget : public QWidget, + public Ui::HexoticPluginGUI_AdvWidget_QTD +{ + Q_OBJECT + +public: + HexoticPluginGUI_AdvWidget( QWidget* = 0, Qt::WindowFlags = 0 ); + ~HexoticPluginGUI_AdvWidget(); + + void AddOption( const char* name_value_type, bool isCustom = false ); + void GetOptionAndValue( QTreeWidgetItem * tblRow, QString& option, QString& value, bool& dflt ); + +public slots: + + void onDirBtnClicked(); + void itemChanged(QTreeWidgetItem * tblRow, int column); + +}; + class HEXOTICPLUGIN_GUI_EXPORT HexoticPluginGUI_SizeMapsWidget : public QWidget, public Ui::HexoticPluginGUI_SizeMapsWidget_QTD { diff --git a/src/GUI/HexoticPluginGUI_HypothesisCreator.cxx b/src/GUI/HexoticPluginGUI_HypothesisCreator.cxx index 2687eab..2e1340d 100644 --- a/src/GUI/HexoticPluginGUI_HypothesisCreator.cxx +++ b/src/GUI/HexoticPluginGUI_HypothesisCreator.cxx @@ -32,8 +32,6 @@ #include "utilities.h" -#include CORBA_SERVER_HEADER(HexoticPlugin_Algorithm) - #include #include #include @@ -121,9 +119,9 @@ void SizeMapsTableWidgetDelegate::updateEditorGeometry(QWidget *editor, HexoticPluginGUI_HypothesisCreator::HexoticPluginGUI_HypothesisCreator( const QString& theHypType ) -: SMESHGUI_GenericHypothesisCreator( theHypType ), - myIs3D( true ), - mySizeMapsToRemove() + : SMESHGUI_GenericHypothesisCreator( theHypType ), + myIs3D( true ), + mySizeMapsToRemove() { } @@ -135,30 +133,68 @@ bool HexoticPluginGUI_HypothesisCreator::checkParams(QString& msg) const { msg.clear(); + HexoticPlugin::HexoticPlugin_Hypothesis_var h = + HexoticPlugin::HexoticPlugin_Hypothesis::_narrow( hypothesis() ); + + myAdvWidget->myOptionTable->setFocus(); + QApplication::instance()->processEvents(); + + QString name, value; + bool isDefault, ok = true; + int iRow = 0, nbRows = myAdvWidget->myOptionTable->topLevelItemCount(); + for ( ; iRow < nbRows; ++iRow ) + { + QTreeWidgetItem* row = myAdvWidget->myOptionTable->topLevelItem( iRow ); + myAdvWidget->GetOptionAndValue( row, name, value, isDefault ); + + if ( name.simplified().isEmpty() ) + continue; // invalid custom option + + if ( isDefault ) // not selected option + value.clear(); + + try { + h->SetOptionValue( name.toLatin1().constData(), value.toLatin1().constData() ); + } + catch ( const SALOME::SALOME_Exception& ex ) + { + msg = ex.details.text.in(); + ok = false; + break; + } + } + + if ( !ok ) + { + h->SetOptionValues( myOptions ); // restore values + return false; + } + HexoticHypothesisData data_old, data_new; - readParamsFromHypo( data_old ); - + readParamsFromHypo( data_old ); // new values of advanced options ( myOptions ) are read + bool res = readParamsFromWidgets( data_new ); if ( !res ){ return res; } - res = storeParamsToHypo( data_new ); + + res = data_old.myMinSize <= data_old.myMaxSize; if ( !res ) { - storeParamsToHypo( data_old ); + msg = tr(QString("Min size (%1) is higher than max size (%2)").arg(data_old.myMinSize).arg(data_old.myMaxSize).toStdString().c_str()); return res; } - res = data_new.myMinSize <= data_new.myMaxSize; + res = data_old.myHexesMinLevel == 0 || \ + ( data_old.myHexesMinLevel != 0 && (data_old.myHexesMinLevel < data_old.myHexesMaxLevel) ); if ( !res ) { - msg = tr(QString("Min size (%1) is higher than max size (%2)").arg(data_new.myMinSize).arg(data_new.myMaxSize).toStdString().c_str()); + msg = tr(QString("Min hexes level (%1) is higher than max hexes level (%2)").arg(data_old.myHexesMinLevel).arg(data_old.myHexesMaxLevel).toStdString().c_str()); return res; } - res = data_new.myHexesMinLevel == 0 || \ - ( data_new.myHexesMinLevel != 0 && (data_new.myHexesMinLevel < data_new.myHexesMaxLevel) ); + res = storeParamsToHypo( data_new ); if ( !res ) { - msg = tr(QString("Min hexes level (%1) is higher than max hexes level (%2)").arg(data_new.myHexesMinLevel).arg(data_new.myHexesMaxLevel).toStdString().c_str()); + storeParamsToHypo( data_old ); return res; } @@ -171,7 +207,7 @@ QFrame* HexoticPluginGUI_HypothesisCreator::buildFrame() QVBoxLayout* lay = new QVBoxLayout( fr ); lay->setMargin( 0 ); lay->setSpacing( 6 ); - + // main TabWidget of the dialog QTabWidget* aTabWidget = new QTabWidget( fr ); aTabWidget->setTabShape( QTabWidget::Rounded ); @@ -183,7 +219,7 @@ QFrame* HexoticPluginGUI_HypothesisCreator::buildFrame() QGridLayout* l = new QGridLayout( aStdGroup ); l->setSpacing( 6 ); l->setMargin( 11 ); - + int row = 0; myName = 0; if( isCreation() ) { @@ -193,9 +229,6 @@ QFrame* HexoticPluginGUI_HypothesisCreator::buildFrame() myName->setMinimumWidth( 150 ); } - HexoticPlugin::HexoticPlugin_Hypothesis_var h = - HexoticPlugin::HexoticPlugin_Hypothesis::_narrow( initParamsHypothesis() ); - myStdWidget = new HexoticPluginGUI_StdWidget(aStdGroup); #ifdef WIN32 myStdWidget->label_6->hide(); @@ -203,33 +236,32 @@ QFrame* HexoticPluginGUI_HypothesisCreator::buildFrame() #endif l->addWidget( myStdWidget, row++, 0, 1, 3 ); myStdWidget->onSdModeSelected(SD_MODE_4); + //myStdWidget->gridLayout->setRowStretch( 1, 2 ); + + // Advanced TAB + myAdvWidget = new HexoticPluginGUI_AdvWidget( aTabWidget ); + //myAdvWidget->gridLayout->setRowStretch( 0, 2 ); - myAdvWidget = new SMESH_AdvOptionsWdg( aTabWidget ); - // SIZE MAPS TAB - QWidget* aSmpGroup = new QWidget(); - lay->addWidget( aSmpGroup ); - - // Size map widget creation and initialisation - mySmpWidget = new HexoticPluginGUI_SizeMapsWidget(aSmpGroup); + mySmpWidget = new HexoticPluginGUI_SizeMapsWidget( aTabWidget ); mySmpWidget->doubleSpinBox->RangeStepAndValidator(0.0, COORD_MAX, 1.0, "length_precision"); mySmpWidget->doubleSpinBox->setValue(0.0); - + // Filters of selection - TColStd_MapOfInteger SM_ShapeTypes; + TColStd_MapOfInteger SM_ShapeTypes; SM_ShapeTypes.Add( TopAbs_VERTEX ); SM_ShapeTypes.Add( TopAbs_EDGE ); SM_ShapeTypes.Add( TopAbs_WIRE ); SM_ShapeTypes.Add( TopAbs_FACE ); SM_ShapeTypes.Add( TopAbs_SOLID ); - SM_ShapeTypes.Add( TopAbs_COMPOUND ); + SM_ShapeTypes.Add( TopAbs_COMPOUND ); SMESH_NumberFilter* aFilter = new SMESH_NumberFilter("GEOM", TopAbs_SHAPE, 0, SM_ShapeTypes); - + // Selection widget myGeomSelWdg = new StdMeshersGUI_ObjectReferenceParamWdg( aFilter, mySmpWidget, /*multiSel=*/false); myGeomSelWdg->SetDefaultText(tr("Hexotic_SEL_SHAPE"), "QLineEdit { color: grey }"); mySmpWidget->gridLayout->addWidget(myGeomSelWdg, 0, 1); - + // Configuration of the table widget QStringList headerLabels; headerLabels << tr("Hexotic_ENTRY")<< tr("Hexotic_NAME")<< tr("Hexotic_SIZE"); @@ -239,22 +271,16 @@ QFrame* HexoticPluginGUI_HypothesisCreator::buildFrame() mySmpWidget->label->setText(tr("LOCAL_SIZE")); mySmpWidget->pushButton_1->setText(tr("Hexotic_ADD")); mySmpWidget->pushButton_2->setText(tr("Hexotic_REMOVE")); - + // Setting a custom delegate for the size column SizeMapsTableWidgetDelegate* delegate = new SizeMapsTableWidgetDelegate(); mySmpWidget->tableWidget->setItemDelegateForColumn(SIZE_COL, delegate); - - // Add the size maps widget to a layout - QHBoxLayout* aSmpLayout = new QHBoxLayout( aSmpGroup ); - aSmpLayout->setMargin( 0 ); - aSmpLayout->addWidget( mySmpWidget); - + + // Viscous Layers tab - QWidget* aVLGroup = new QWidget(); - lay->addWidget( aVLGroup ); // Viscous layers widget creation and initialisation - myVLWidget = new HexoticPluginGUI_ViscousLayersWidget(aVLGroup); + myVLWidget = new HexoticPluginGUI_ViscousLayersWidget( aTabWidget ); QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry(); QString aSubEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry(); @@ -266,27 +292,19 @@ QFrame* HexoticPluginGUI_HypothesisCreator::buildFrame() } else { - myVLWidget->labelFacesWithLayers->setVisible(false); + myVLWidget->labelFacesWithLayers->setVisible(false); myVLWidget->myFacesWithLayers->setVisible(false); myVLWidget->labelImprintedFaces->setVisible(false); myVLWidget->myImprintedFaces->setVisible(false); } - // Add the viscous layers widget to a layout - QHBoxLayout* aVLLayout = new QHBoxLayout( aVLGroup ); - aVLLayout->setSpacing( 6 ); - aVLLayout->setMargin( 11 ); - aVLLayout->addWidget( myVLWidget ); - -// resizeEvent(); - - aTabWidget->insertTab( STD_TAB, aStdGroup, tr( "SMESH_ARGUMENTS" )); + aTabWidget->insertTab( STD_TAB, aStdGroup, tr( "SMESH_ARGUMENTS" )); aTabWidget->insertTab( ADV_TAB, myAdvWidget, tr( "SMESH_ADVANCED" )); - aTabWidget->insertTab( SMP_TAB, aSmpGroup, tr( "LOCAL_SIZE" )); - aTabWidget->insertTab( VL_TAB, aVLGroup, tr( "Hexotic_VISCOUS_LAYERS")); - + aTabWidget->insertTab( SMP_TAB, mySmpWidget, tr( "LOCAL_SIZE" )); + aTabWidget->insertTab( VL_TAB, myVLWidget, tr( "Hexotic_VISCOUS_LAYERS")); + myIs3D = true; - + // Size Maps mySizeMapsToRemove.clear(); connect( mySmpWidget->pushButton_1, SIGNAL( clicked() ), this, SLOT( onAddLocalSize() ) ); @@ -299,16 +317,16 @@ void HexoticPluginGUI_HypothesisCreator::onAddLocalSize() { int rowCount = mySmpWidget->tableWidget->rowCount(); //int columnCount = mySmpWidget->tableWidget->columnCount(); - + // Get the selected object properties GEOM::GEOM_Object_var sizeMapObject = myGeomSelWdg->GetObject< GEOM::GEOM_Object >(0); if (sizeMapObject->_is_nil()) return; - + std::string entry, shapeName; entry = (std::string) sizeMapObject->GetStudyEntry(); shapeName = sizeMapObject->GetName(); - + // Check if the object is already in the widget QList listFound = mySmpWidget->tableWidget ->findItems( QString(entry.c_str()), Qt::MatchExactly ); @@ -413,6 +431,8 @@ void HexoticPluginGUI_HypothesisCreator::retrieveParams() const if( myName ) myName->setText( data.myName ); + myStdWidget->myPhySizeType->setCurrentIndex( data.myMinSize > 0 || data.myMaxSize > 0 ); + myStdWidget->myMinSize->setCleared(data.myMinSize == 0); if (data.myMinSize == 0) myStdWidget->myMinSize->setText(""); @@ -425,38 +445,35 @@ void HexoticPluginGUI_HypothesisCreator::retrieveParams() const else myStdWidget->myMaxSize->setValue( data.myMaxSize ); - myStdWidget->myHexesMinLevel->setCleared(data.myHexesMinLevel == 0); - if (data.myHexesMinLevel == 0) - myStdWidget->myHexesMinLevel->setText(""); - else - myStdWidget->myHexesMinLevel->setValue( data.myHexesMinLevel ); - - myStdWidget->myHexesMaxLevel->setCleared(data.myHexesMaxLevel == 0); - if (data.myHexesMaxLevel == 0) - myStdWidget->myHexesMaxLevel->setText(""); - else - myStdWidget->myHexesMaxLevel->setValue( data.myHexesMaxLevel ); + myStdWidget->myGeomSizeType->setCurrentIndex( data.myApproxAngle > 0 ); - myStdWidget->myHexoticIgnoreRidges->setChecked( data.myHexoticIgnoreRidges ); - myStdWidget->myHexoticInvalidElements->setChecked( data.myHexoticInvalidElements ); - - myStdWidget->myHexoticSharpAngleThreshold->setCleared(data.myHexoticSharpAngleThreshold == 0); - if (data.myHexoticSharpAngleThreshold == 0) - myStdWidget->myHexoticSharpAngleThreshold->setText(""); + myStdWidget->myGeomApproxAngle->setCleared( data.myApproxAngle == 0 ); + if (data.myApproxAngle == 0) + myStdWidget->myGeomApproxAngle->setText(""); else - myStdWidget->myHexoticSharpAngleThreshold->setValue( data.myHexoticSharpAngleThreshold ); -#ifndef WIN32 - myStdWidget->myHexoticNbProc->setValue( data.myHexoticNbProc ); -#endif - myStdWidget->myHexoticWorkingDir->setText( data.myHexoticWorkingDir ); + myStdWidget->myGeomApproxAngle->setValue( data.myApproxAngle ); - myStdWidget->myHexoticVerbosity->setValue( data.myHexoticVerbosity ); + myAdvWidget->myHexoticWorkingDir->setText( data.myHexoticWorkingDir ); - myStdWidget->myHexoticMaxMemory->setValue( data.myHexoticMaxMemory ); + myAdvWidget->myHexoticVerbosity->setValue( data.myHexoticVerbosity ); myStdWidget->myHexoticSdMode->setCurrentIndex(data.myHexoticSdMode); - - myAdvWidget->SetCustomOptions(data.myTextOptions); + + //myAdvWidget->SetCustomOptions(data.myTextOptions); + + if ( myOptions.operator->() ) { + for ( int i = 0, nb = myOptions->length(); i < nb; ++i ) + myAdvWidget->AddOption( myOptions[i].in() ); + } + if ( myCustomOptions.operator->() ) { + for ( int i = 0, nb = myCustomOptions->length(); i < nb; ++i ) + myAdvWidget->AddOption( myCustomOptions[i].in() ); + } + myAdvWidget->myOptionTable->resizeColumnToContents( OPTION_NAME_COLUMN ); + + myAdvWidget->keepWorkingFilesCheck->setChecked( data.myKeepFiles ); + myAdvWidget->logInFileCheck->setChecked( !data.myLogInStandardOutput ); + myAdvWidget->removeLogOnSuccessCheck->setChecked( data.myRemoveLogOnSuccess ); HexoticPlugin_Hypothesis::THexoticSizeMaps::const_iterator it = data.mySizeMaps.begin(); for ( int row = 0; it != data.mySizeMaps.end(); it++, row++ ) @@ -502,13 +519,6 @@ void HexoticPluginGUI_HypothesisCreator::retrieveParams() const aVec[i]=vector.at(i); myVLWidget->myImprintedFaces->SetListOfIDs(aVec); - - std::cout << "myStdWidget->myMinSize->value(): " << myStdWidget->myMinSize->value() << std::endl; - std::cout << "myStdWidget->myMaxSize->value(): " << myStdWidget->myMaxSize->value() << std::endl; - std::cout << "myStdWidget->myHexesMinLevel->value(): " << myStdWidget->myHexesMinLevel->value() << std::endl; - std::cout << "myStdWidget->myHexesMaxLevel->value(): " << myStdWidget->myHexesMaxLevel->value() << std::endl; - std::cout << "myStdWidget->myHexoticSharpAngleThreshold->value(): " << myStdWidget->myHexoticSharpAngleThreshold->value() << std::endl; - } void HexoticPluginGUI_HypothesisCreator::printData( HexoticHypothesisData& data) const @@ -571,6 +581,7 @@ bool HexoticPluginGUI_HypothesisCreator::readParamsFromHypo( HexoticHypothesisDa h_data.myName = isCreation() && data ? data->Label : ""; h_data.myMinSize = h->GetMinSize(); h_data.myMaxSize = h->GetMaxSize(); + h_data.myApproxAngle = h->GetGeomApproxAngle(); h_data.myHexesMinLevel = h->GetHexesMinLevel(); h_data.myHexesMaxLevel = h->GetHexesMaxLevel(); h_data.myHexoticIgnoreRidges = h->GetHexoticIgnoreRidges(); @@ -581,11 +592,18 @@ bool HexoticPluginGUI_HypothesisCreator::readParamsFromHypo( HexoticHypothesisDa h_data.myHexoticVerbosity = h->GetHexoticVerbosity(); h_data.myHexoticMaxMemory = h->GetHexoticMaxMemory(); h_data.myHexoticSdMode = h->GetHexoticSdMode()-1; - h_data.myTextOptions = h->GetAdvancedOption(); - + h_data.myKeepFiles = h->GetKeepFiles(); + h_data.myLogInStandardOutput = h->GetStandardOutputLog(); + h_data.myRemoveLogOnSuccess = h->GetRemoveLogOnSuccess(); + //h_data.myTextOptions = h->GetAdvancedOption(); + + HexoticPluginGUI_HypothesisCreator* that = (HexoticPluginGUI_HypothesisCreator*)this; + that->myOptions = h->GetOptionValues(); + that->myCustomOptions = h->GetAdvancedOptionValues(); + // Size maps HexoticPlugin::HexoticPluginSizeMapsList_var sizeMaps = h->GetSizeMaps(); - for ( CORBA::ULong i = 0 ; i < sizeMaps->length() ; i++) + for ( CORBA::ULong i = 0 ; i < sizeMaps->length() ; i++) { HexoticPlugin::HexoticPluginSizeMap aSizeMap = sizeMaps[i]; std::string entry = CORBA::string_dup(aSizeMap.entry.in()); @@ -623,17 +641,13 @@ bool HexoticPluginGUI_HypothesisCreator::storeParamsToHypo( const HexoticHypothe h->SetMinSize( h_data.myMinSize ); h->SetMaxSize( h_data.myMaxSize ); - h->SetHexesMinLevel( h_data.myHexesMinLevel ); - h->SetHexesMaxLevel( h_data.myHexesMaxLevel ); - h->SetHexoticIgnoreRidges( h_data.myHexoticIgnoreRidges ); - h->SetHexoticInvalidElements( h_data.myHexoticInvalidElements ); - h->SetHexoticSharpAngleThreshold( h_data.myHexoticSharpAngleThreshold ); - h->SetHexoticNbProc( h_data.myHexoticNbProc ); + h->SetGeomApproxAngle( h_data.myApproxAngle ); h->SetHexoticWorkingDirectory( h_data.myHexoticWorkingDir.toLatin1().constData() ); h->SetHexoticVerbosity( h_data.myHexoticVerbosity ); - h->SetHexoticMaxMemory( h_data.myHexoticMaxMemory ); h->SetHexoticSdMode( h_data.myHexoticSdMode+1 ); - h->SetAdvancedOption( h_data.myTextOptions.toLatin1().constData() ); + h->SetKeepFiles( h_data.myKeepFiles ); + h->SetStandardOutputLog( h_data.myLogInStandardOutput ); + h->SetRemoveLogOnSuccess( h_data.myRemoveLogOnSuccess ); HexoticPlugin_Hypothesis::THexoticSizeMaps::const_iterator it; @@ -680,22 +694,16 @@ bool HexoticPluginGUI_HypothesisCreator::readParamsFromWidgets( HexoticHypothesi { h_data.myName = myName ? myName->text() : ""; - h_data.myHexoticIgnoreRidges = myStdWidget->myHexoticIgnoreRidges->isChecked(); - h_data.myHexoticInvalidElements = myStdWidget->myHexoticInvalidElements->isChecked(); -#ifndef WIN32 - h_data.myHexoticNbProc = myStdWidget->myHexoticNbProc->value(); -#endif - h_data.myHexoticWorkingDir = myStdWidget->myHexoticWorkingDir->text(); - h_data.myHexoticVerbosity = myStdWidget->myHexoticVerbosity->value(); - h_data.myHexoticMaxMemory = myStdWidget->myHexoticMaxMemory->value(); - h_data.myHexoticSdMode = myStdWidget->myHexoticSdMode->currentIndex(); - h_data.myTextOptions = myAdvWidget->GetCustomOptions(); - h_data.myMinSize = myStdWidget->myMinSize->text().isEmpty() ? 0.0 : myStdWidget->myMinSize->value(); h_data.myMaxSize = myStdWidget->myMaxSize->text().isEmpty() ? 0.0 : myStdWidget->myMaxSize->value(); - h_data.myHexesMinLevel = myStdWidget->myHexesMinLevel->text().isEmpty() ? 0 : myStdWidget->myHexesMinLevel->value(); - h_data.myHexesMaxLevel = myStdWidget->myHexesMaxLevel->text().isEmpty() ? 0 : myStdWidget->myHexesMaxLevel->value(); - h_data.myHexoticSharpAngleThreshold = myStdWidget->myHexoticSharpAngleThreshold->text().isEmpty() ? 0 : myStdWidget->myHexoticSharpAngleThreshold->value(); + h_data.myApproxAngle = myStdWidget->myGeomApproxAngle->text().isEmpty() ? 0.0 : myStdWidget->myGeomApproxAngle->value(); + h_data.myHexoticSdMode = myStdWidget->myHexoticSdMode->currentIndex(); + + h_data.myHexoticWorkingDir = myAdvWidget->myHexoticWorkingDir->text(); + h_data.myHexoticVerbosity = myAdvWidget->myHexoticVerbosity->value(); + h_data.myKeepFiles = myAdvWidget->keepWorkingFilesCheck->isChecked(); + h_data.myLogInStandardOutput = !myAdvWidget->logInFileCheck->isChecked(); + h_data.myRemoveLogOnSuccess = myAdvWidget->removeLogOnSuccessCheck->isChecked(); // Size maps reading bool ok = readSizeMapsFromWidgets( h_data ); diff --git a/src/GUI/HexoticPluginGUI_HypothesisCreator.h b/src/GUI/HexoticPluginGUI_HypothesisCreator.h index a135c05..884cab4 100644 --- a/src/GUI/HexoticPluginGUI_HypothesisCreator.h +++ b/src/GUI/HexoticPluginGUI_HypothesisCreator.h @@ -26,19 +26,21 @@ #define HexoticPLUGINGUI_HypothesisCreator_H #include "HexoticPluginGUI.h" - -#include -#include "StdMeshersGUI_ObjectReferenceParamWdg.h" #include "HexoticPlugin_Hypothesis.hxx" +#include +#include #include +#include CORBA_SERVER_HEADER(HexoticPlugin_Algorithm) + class QtxIntSpinBox; class QCheckBox; class QLineEdit; class QTableWidgetItem; class HexoticPluginGUI_StdWidget; +class HexoticPluginGUI_AdvWidget; class HexoticPluginGUI_SizeMapsWidget; class HexoticPluginGUI_ViscousLayersWidget; class SMESH_AdvOptionsWdg; @@ -47,7 +49,7 @@ typedef struct { QString myName; int myHexesMinLevel, myHexesMaxLevel; - double myMinSize, myMaxSize; + double myMinSize, myMaxSize, myApproxAngle; bool myHexoticInvalidElements; bool myHexoticIgnoreRidges; double myHexoticSharpAngleThreshold; @@ -57,6 +59,7 @@ typedef struct int myHexoticMaxMemory; int myHexoticSdMode; QString myTextOptions; + bool myKeepFiles,myLogInStandardOutput, myRemoveLogOnSuccess; HexoticPlugin_Hypothesis::THexoticSizeMaps mySizeMaps; int myNbLayers; double myFirstLayerSize; @@ -103,12 +106,13 @@ private: private: // QWidget* myStdGroup; - QLineEdit* myName; - HexoticPluginGUI_StdWidget* myStdWidget; - SMESH_AdvOptionsWdg* myAdvWidget; - HexoticPluginGUI_SizeMapsWidget* mySmpWidget; - HexoticPluginGUI_ViscousLayersWidget* myVLWidget; - StdMeshersGUI_ObjectReferenceParamWdg* myGeomSelWdg; + QLineEdit* myName; + HexoticPluginGUI_StdWidget* myStdWidget; + HexoticPluginGUI_AdvWidget* myAdvWidget; + mutable HexoticPlugin::string_array_var myOptions, myCustomOptions; + HexoticPluginGUI_SizeMapsWidget* mySmpWidget; + HexoticPluginGUI_ViscousLayersWidget* myVLWidget; + StdMeshersGUI_ObjectReferenceParamWdg* myGeomSelWdg; bool myIs3D; std::vector< std::string > mySizeMapsToRemove; diff --git a/src/GUI/HexoticPluginGUI_StdWidget.cxx b/src/GUI/HexoticPluginGUI_StdWidget.cxx index 01171c6..2514923 100644 --- a/src/GUI/HexoticPluginGUI_StdWidget.cxx +++ b/src/GUI/HexoticPluginGUI_StdWidget.cxx @@ -54,42 +54,36 @@ HexoticPluginGUI_StdWidget::HexoticPluginGUI_StdWidget( QWidget* parent, Qt::Win myMaxSize->setPrecision(precision); // myMaxSize->setSpecialValueText(" "); - myHexesMinLevel->setMinimum(0); - myHexesMinLevel->setMaximum(10); -// myHexesMinLevel->setSpecialValueText(" "); - - myHexesMaxLevel->setMinimum(0); - myHexesMaxLevel->setMaximum(10); -// myHexesMaxLevel->setSpecialValueText(" "); - - myHexoticSharpAngleThreshold->setMinimum(0); - myHexoticSharpAngleThreshold->setMaximum(90); - myHexoticSharpAngleThreshold->setPrecision(precision); -// myHexoticSharpAngleThreshold->setSpecialValueText(" "); - - myHexoticNbProc->setMinimum( 1 ); - myHexoticNbProc->setMaximum( 256 ); -// myHexoticNbProc->setSingleStep( 1 ); + myGeomApproxAngle->RangeStepAndValidator( 0, 180, 1, "angle_precision" ); myHexoticSdMode->setCurrentIndex(SD_MODE_4); imageSdMode = SUIT_Session::session()->resourceMgr()->loadPixmap("HexoticPLUGIN", tr("Hexotic_SD_MODE_4_PIXMAP")); -} -HexoticPluginGUI_StdWidget::~HexoticPluginGUI_StdWidget() -{ + connect( myPhySizeType, SIGNAL( currentIndexChanged(int)), SLOT( onSizeTypeChange(int) )); + connect( myGeomSizeType, SIGNAL( currentIndexChanged(int)), SLOT( onSizeTypeChange(int) )); } -void HexoticPluginGUI_StdWidget::onDirBtnClicked() +HexoticPluginGUI_StdWidget::~HexoticPluginGUI_StdWidget() { - QString dir = SUIT_FileDlg::getExistingDirectory( this, myHexoticWorkingDir->text(), QString() ); - if ( !dir.isEmpty() ) - myHexoticWorkingDir->setText( dir ); } - void HexoticPluginGUI_StdWidget::onSdModeSelected(int sdMode) { imageSdMode = SUIT_Session::session()->resourceMgr()->loadPixmap("HexoticPLUGIN", tr(QString("Hexotic_SD_MODE_%1_PIXMAP").arg(sdMode+1).toStdString().c_str())); sdModeLabel->setPixmap(imageSdMode.scaled(sdModeLabel->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); } + +void HexoticPluginGUI_StdWidget::onSizeTypeChange(int index) +{ + if ( sender() == myPhySizeType ) + { + myMinSize->setEnabled( index ); + myMaxSize->setEnabled( index ); + } + else + { + myGeomApproxAngle->setEnabled( index ); + } +} + diff --git a/src/GUI/HexoticPluginGUI_StdWidget_QTD.ui b/src/GUI/HexoticPluginGUI_StdWidget_QTD.ui index 1416d0c..a06c25a 100644 --- a/src/GUI/HexoticPluginGUI_StdWidget_QTD.ui +++ b/src/GUI/HexoticPluginGUI_StdWidget_QTD.ui @@ -6,170 +6,137 @@ 0 0 - 561 - 908 + 649 + 482 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Hexotic_SHARP_ANGLE_THRESHOLD - - - - - - - 99999 - - - 128 - - - 2048 - - - - + + + + + 0 + 0 + + Hexotic_INPUT_SIZE - + + + + Hexotic_PHY_SIZE_TYPE + + + + + + + 1 + + + + Hexotic_NONE + + + + + Hexotic_GLOBAL + + + + + Hexotic_MIN_SIZE - + - + Hexotic_MAX_SIZE - + - - - - Hexotic_MAX_MEMORY - - - - - - - Hexotic_WORKING_DIR - - - - - + + - + 0 0 - - Hexotic_SELECT_DIR - - - - - - - Hexotic_INVALID_ELEMENTS - - - - - - - 10 - - - 1 - - - - - - Hexotic_INPUT_LEVEL + Hexotic_GEOM_SIZE - + - Hexotic_HEXES_MIN_LEVEL + Hexotic_GEOM_SIZE_TYPE - + + + + Hexotic_NONE + + + + + Hexotic_GLOBAL + + + - Hexotic_HEXES_MAX_LEVEL + Hexotic_GEOM_APPROX_ANGLE - + + + + + + Qt::Vertical + + + + 228 + 50 + + + - - - - - - - - - Hexotic_IGNORE_RIDGES - - - - - - - Hexotic_NB_PROC - - - - - - - + + + 0 + 0 + + Hexotic_SUBDOMAIN_MESH_MODE @@ -229,13 +196,6 @@ - - - - Hexotic_VERBOSITY - - - @@ -245,44 +205,18 @@
    SalomeApp_DoubleSpinBox.h
    - SalomeApp_IntSpinBox - QLineEdit -
    SalomeApp_IntSpinBox.h
    + SMESHGUI_SpinBox + QDoubleSpinBox +
    SMESHGUI_SpinBox.h
    myMinSize myMaxSize - myHexesMinLevel - myHexesMaxLevel - myHexoticIgnoreRidges - myHexoticInvalidElements - myHexoticSharpAngleThreshold - myHexoticNbProc - dirBtn - myHexoticWorkingDir - myHexoticMaxMemory - myHexoticVerbosity myHexoticSdMode - - dirBtn - clicked() - HexoticPluginGUI_StdWidget_QTD - onDirBtnClicked() - - - 261 - 220 - - - 390 - 143 - - - myHexoticSdMode currentIndexChanged(int) @@ -290,8 +224,8 @@ onSdModeSelected(int) - 147 - 310 + 166 + 207 170 diff --git a/src/GUI/HexoticPluginGUI_TreeWidget.cxx b/src/GUI/HexoticPluginGUI_TreeWidget.cxx new file mode 100644 index 0000000..6037291 --- /dev/null +++ b/src/GUI/HexoticPluginGUI_TreeWidget.cxx @@ -0,0 +1,91 @@ +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "HexoticPluginGUI_TreeWidget.h" +#include + +namespace +{ + bool isEditable( const QModelIndex& index ) + { + return index.isValid() && + index.flags() & Qt::ItemIsEditable && + index.flags() & Qt::ItemIsEnabled && + ( !index.data( Qt::UserRole + 1 ).isValid() || index.data( Qt::UserRole + 1 ).toInt() != 0 ); + } +} + +HexoticPluginGUI_TreeWidget::HexoticPluginGUI_TreeWidget( QWidget* parent ) + : QTreeWidget( parent ) +{ +} + +QModelIndex HexoticPluginGUI_TreeWidget::moveCursor( CursorAction action, Qt::KeyboardModifiers modifiers ) +{ + QModelIndex current = currentIndex(); + int column = current.column(); + if ( action == MoveNext ) { + if ( column < columnCount()-1 ) { + QModelIndex next = current.sibling( current.row(), column+1 ); + if ( isEditable( next ) ) + return next; + } + else { + QModelIndex next = current.sibling( current.row()+1, 0 ); + if ( isEditable( next ) ) + return next; + } + } + else if ( action == MovePrevious ) { + if ( column == 0 ) { + QModelIndex next = current.sibling( current.row()-1, columnCount()-1 ); + if ( isEditable( next ) ) + return next; + } + else { + QModelIndex next = current.sibling( current.row(), column-1 ); + if ( isEditable( next ) ) + return next; + } + } + return QTreeWidget::moveCursor( action, modifiers ); +} + +void HexoticPluginGUI_TreeWidget::keyPressEvent( QKeyEvent* e ) +{ + switch ( e->key() ) { + case Qt::Key_F2: + { + QModelIndex index = currentIndex(); + if ( !isEditable( index ) ) { + for ( int i = 0; i < columnCount(); i++ ) { + QModelIndex sibling = index.sibling( index.row(), i ); + if ( isEditable( sibling ) ) { + if ( !edit( sibling, EditKeyPressed, e ) ) + e->ignore(); + } + } + } + } + break; + default: + break; + } + QTreeWidget::keyPressEvent( e ); +} diff --git a/src/GUI/HexoticPluginGUI_TreeWidget.h b/src/GUI/HexoticPluginGUI_TreeWidget.h new file mode 100644 index 0000000..d1d5220 --- /dev/null +++ b/src/GUI/HexoticPluginGUI_TreeWidget.h @@ -0,0 +1,36 @@ +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#if !defined(HexoticPluginGUI_TreeWidget_H) +#define HexoticPluginGUI_TreeWidget_H + +#include + +class HexoticPluginGUI_TreeWidget : public QTreeWidget +{ + Q_OBJECT +public: + HexoticPluginGUI_TreeWidget( QWidget* ); + +protected: + QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers ); + void keyPressEvent( QKeyEvent* ); +}; + +#endif // HexoticPluginGUI_TreeWidget_H diff --git a/src/HexoticPlugin/HexoticPLUGINBuilder.py b/src/HexoticPlugin/HexoticPLUGINBuilder.py index 11ae62f..fb199bc 100644 --- a/src/HexoticPlugin/HexoticPLUGINBuilder.py +++ b/src/HexoticPlugin/HexoticPLUGINBuilder.py @@ -128,6 +128,13 @@ class Hexotic_Algorithm(Mesh_Algorithm): print("WARNING: Function MinMaxQuad is deprecated, use SetMinMaxHexes instead") return self.SetMinMaxHexes(min, max) + ## Set advanced option value + # @param optionName option name + # @param optionValue option value + def SetOptionValue(self, optionName, optionValue): + self.Parameters().SetOptionValue( optionName, optionValue ) + pass + ## Defines "ViscousLayers" hypothesis to give MG-Hexa parameters # @param numberOfLayers number of boundary layers # @param firstLayerSize height of the first layer @@ -171,6 +178,28 @@ class Hexotic_Algorithm(Mesh_Algorithm): return self.Parameters() + ## To keep working files or remove them. + # @param toKeep "keep working files" flag value + def SetKeepFiles(self, toKeep): + self.Parameters().SetKeepFiles(toKeep) + pass + + ## Remove or not the log file (if any) in case of successful computation. + # The log file remains in case of errors anyway. If + # the "keep working files" flag is set to true, this option + # has no effect. + # @param toRemove "remove log on success" flag value + def SetRemoveLogOnSuccess(self, toRemove): + self.Parameters().SetRemoveLogOnSuccess(toRemove) + pass + + ## Print the the log in a file. If set to false, the + # log is printed on the standard output + # @param toPrintLogInFile "print log in a file" flag value + def SetPrintLogInFile(self, toPrintLogInFile): + self.Parameters().SetStandardOutputLog(not toPrintLogInFile) + pass + ## Defines hypothesis having several parameters # @return hypothesis object def Parameters(self): diff --git a/src/HexoticPlugin/HexoticPlugin_Hexotic.cxx b/src/HexoticPlugin/HexoticPlugin_Hexotic.cxx index cc623a3..ecc0adc 100644 --- a/src/HexoticPlugin/HexoticPlugin_Hexotic.cxx +++ b/src/HexoticPlugin/HexoticPlugin_Hexotic.cxx @@ -655,6 +655,7 @@ void HexoticPlugin_Hexotic::SetParameters(const HexoticPlugin_Hypothesis* hyp) { _hexesMaxLevel = hyp->GetHexesMaxLevel(); _hexesMinSize = hyp->GetMinSize(); _hexesMaxSize = hyp->GetMaxSize(); + _approxAngle = hyp->GetGeomApproxAngle(); _hexoticIgnoreRidges = hyp->GetHexoticIgnoreRidges(); _hexoticInvalidElements = hyp->GetHexoticInvalidElements(); _hexoticSharpAngleThreshold = hyp->GetHexoticSharpAngleThreshold(); @@ -671,6 +672,9 @@ void HexoticPlugin_Hexotic::SetParameters(const HexoticPlugin_Hypothesis* hyp) { _growth = hyp->GetGrowth(); _facesWithLayers = hyp->GetFacesWithLayers(); _imprintedFaces = hyp->GetImprintedFaces(); + _keepFiles = hyp->GetKeepFiles(); + _removeLogOnSuccess = hyp->GetRemoveLogOnSuccess(); + _logInStandardOutput = hyp->GetStandardOutputLog(); } else { cout << std::endl; @@ -680,6 +684,7 @@ void HexoticPlugin_Hexotic::SetParameters(const HexoticPlugin_Hypothesis* hyp) { _hexesMaxLevel = hyp->GetDefaultHexesMaxLevel(); _hexesMinSize = hyp->GetDefaultMinSize(); _hexesMaxSize = hyp->GetDefaultMaxSize(); + _approxAngle = hyp->GetDefaultGeomApproxAngle(); _hexoticIgnoreRidges = hyp->GetDefaultHexoticIgnoreRidges(); _hexoticInvalidElements = hyp->GetDefaultHexoticInvalidElements(); _hexoticSharpAngleThreshold = hyp->GetDefaultHexoticSharpAngleThreshold(); @@ -696,6 +701,9 @@ void HexoticPlugin_Hexotic::SetParameters(const HexoticPlugin_Hypothesis* hyp) { _growth = hyp->GetDefaultGrowth(); _facesWithLayers = hyp->GetDefaultFacesWithLayers(); _imprintedFaces = hyp->GetDefaultImprintedFaces(); + _keepFiles = hyp->GetDefaultKeepFiles(); + _removeLogOnSuccess = hyp->GetDefaultRemoveLogOnSuccess(); + _logInStandardOutput = hyp->GetDefaultStandardOutputLog(); } } @@ -1116,35 +1124,45 @@ bool HexoticPlugin_Hexotic::Compute(SMESH_Mesh& aMesh, &aHelper, _nbShape, tabShape, tabBox ); std::string log = mgHexa.GetLog(); + hexahedraMessage = "failed"; if ( Ok ) { hexahedraMessage = "success"; -#ifndef _DEBUG_ - removeFile(Hexotic_Out); - removeFile(Hexotic_In); - //removeFile(aLogFileName); - for( size_t i=0; i _facesWithLayers; std::vector _imprintedFaces; SMDS_MeshNode** _tabNode; + bool _keepFiles; + bool _removeLogOnSuccess; + bool _logInStandardOutput; #ifdef WITH_BLSURFPLUGIN const BLSURFPlugin_Hypothesis* _blsurfHypo; diff --git a/src/HexoticPlugin/HexoticPlugin_Hypothesis.cxx b/src/HexoticPlugin/HexoticPlugin_Hypothesis.cxx index b0aaca8..f5e23a6 100644 --- a/src/HexoticPlugin/HexoticPlugin_Hypothesis.cxx +++ b/src/HexoticPlugin/HexoticPlugin_Hypothesis.cxx @@ -26,10 +26,20 @@ #include #include +#include + +namespace +{ + struct GET_DEFAULT // struct used to get default value from GetOptionValue() + { + bool isDefault; + operator bool* () { return &isDefault; } + }; +} //============================================================================= /*! - * + * */ //============================================================================= HexoticPlugin_Hypothesis::HexoticPlugin_Hypothesis (int hypId, SMESH_Gen* gen) @@ -38,16 +48,18 @@ HexoticPlugin_Hypothesis::HexoticPlugin_Hypothesis (int hypId, SMESH_Gen* gen) _hexesMaxLevel( GetDefaultHexesMaxLevel() ), _minSize( GetDefaultMinSize() ), _maxSize( GetDefaultMaxSize() ), + _approxAngle( GetDefaultGeomApproxAngle() ), _hexoticIgnoreRidges( GetDefaultHexoticIgnoreRidges() ), - _hexoticInvalidElements( GetDefaultHexoticInvalidElements() ), + _hexoticInvalidElements( GetDefaultHexoticInvalidElements() ), _hexoticSharpAngleThreshold( GetDefaultHexoticSharpAngleThreshold() ), _hexoticNbProc( GetDefaultHexoticNbProc() ), _hexoticSdMode(GetDefaultHexoticSdMode()), _hexoticVerbosity(GetDefaultHexoticVerbosity()), _hexoticMaxMemory(GetDefaultHexoticMaxMemory()), - _textOptions(GetDefaultTextOptions()), - _sizeMaps(GetDefaultHexoticSizeMaps()), _hexoticWorkingDirectory( GetDefaultHexoticWorkingDirectory() ), + _logInStandardOutput( GetDefaultStandardOutputLog() ), + _removeLogOnSuccess( GetDefaultRemoveLogOnSuccess() ), + _keepFiles( GetDefaultKeepFiles() ), _nbLayers(GetDefaultNbLayers()), _firstLayerSize(GetDefaultFirstLayerSize()), _direction(GetDefaultDirection()), @@ -58,68 +70,135 @@ HexoticPlugin_Hypothesis::HexoticPlugin_Hypothesis (int hypId, SMESH_Gen* gen) MESSAGE("HexoticPlugin_Hypothesis::HexoticPlugin_Hypothesis"); _name = GetHypType(); _param_algo_dim = 3; + + const char* boolOptionNames[] = { "allow_invalid_elements", + "enforce_constant_layer_size", + "compute_ridges", + "flatten_hexa_sides", + "recover_sharp_angles", + "" // mark of end + }; + const char* intOptionNames[] = { "max_memory", // 2048 + "max_number_of_threads", // 4 + "min_level", // 6 + "max_level", // 10 + "sizemap_level", // 10 + "" // mark of end + }; + const char* doubleOptionNames[] = { "ridge_angle", // 60 + "" // mark of end + }; + const char* charOptionNames[] = { "element_order", // linear + "tags", // respect + "" // mark of end + }; + + int i = 0; + while (boolOptionNames[i][0]) + { + _boolOptions.insert( boolOptionNames[i] ); + _option2value[boolOptionNames[i++]].clear(); + } + i = 0; + while (intOptionNames[i][0]) + _option2value[intOptionNames[i++]].clear(); + + i = 0; + while (doubleOptionNames[i][0]) { + _doubleOptions.insert(doubleOptionNames[i]); + _option2value[doubleOptionNames[i++]].clear(); + } + i = 0; + while (charOptionNames[i][0]) { + _charOptions.insert(charOptionNames[i]); + _option2value[charOptionNames[i++]].clear(); + } + + // default values to be used while MG meshing + + _defaultOptionValues["allow_invalid_elements" ] = "no"; + _defaultOptionValues["enforce_constant_layer_size"] = "no"; + _defaultOptionValues["compute_ridges" ] = "yes"; + _defaultOptionValues["flatten_hexa_sides" ] = "no"; + _defaultOptionValues["recover_sharp_angles" ] = "yes"; + _defaultOptionValues["max_memory" ] = "2048"; + _defaultOptionValues["max_number_of_threads" ] = "4"; + _defaultOptionValues["min_level" ] = "6"; + _defaultOptionValues["max_level" ] = "10"; + _defaultOptionValues["sizemap_level" ] = "10"; + _defaultOptionValues["ridge_angle" ] = "60"; + _defaultOptionValues["element_order" ] = "linear"; + _defaultOptionValues["tags" ] = "respect"; + +#ifdef _DEBUG_ + // check validity of option names of _defaultOptionValues + TOptionValues::iterator n2v = _defaultOptionValues.begin(); + for ( ; n2v != _defaultOptionValues.end(); ++n2v ) + ASSERT( _option2value.count( n2v->first )); + ASSERT( _option2value.size() == _defaultOptionValues.size() ); +#endif } //============================================================================= /*! - * + * */ //============================================================================= -void HexoticPlugin_Hypothesis::SetHexesMinLevel(int theVal) { - if (theVal != _hexesMinLevel) { - _hexesMinLevel = theVal; - NotifySubMeshesHypothesisModification(); - } +void HexoticPlugin_Hypothesis::SetHexesMinLevel(int theVal) +{ + SetOptionValue( "min_level", SMESH_Comment( theVal )); + _hexesMinLevel = theVal; } -void HexoticPlugin_Hypothesis::SetHexesMaxLevel(int theVal) { - if (theVal != _hexesMaxLevel) { - _hexesMaxLevel = theVal; - NotifySubMeshesHypothesisModification(); - } +void HexoticPlugin_Hypothesis::SetHexesMaxLevel(int theVal) +{ + SetOptionValue( "max_level", SMESH_Comment( theVal )); + _hexesMaxLevel = theVal; } void HexoticPlugin_Hypothesis::SetMinSize(double theVal) { if (theVal != _minSize) { - _minSize = theVal; + _minSize = theVal; NotifySubMeshesHypothesisModification(); } } void HexoticPlugin_Hypothesis::SetMaxSize(double theVal) { if (theVal != _maxSize) { - _maxSize = theVal; + _maxSize = theVal; NotifySubMeshesHypothesisModification(); } } -void HexoticPlugin_Hypothesis::SetHexoticIgnoreRidges(bool theVal) { - if (theVal != _hexoticIgnoreRidges) { - _hexoticIgnoreRidges = theVal; +void HexoticPlugin_Hypothesis::SetGeomApproxAngle(double theVal) { + if (theVal != _approxAngle) { + _approxAngle = theVal; NotifySubMeshesHypothesisModification(); } } -void HexoticPlugin_Hypothesis::SetHexoticInvalidElements(bool theVal) { - if (theVal != _hexoticInvalidElements) { - _hexoticInvalidElements = theVal; - NotifySubMeshesHypothesisModification(); - } +void HexoticPlugin_Hypothesis::SetHexoticIgnoreRidges(bool theVal) { + SetOptionValue( "compute_ridges", theVal ? "no" : "yes" ); + _hexoticIgnoreRidges = theVal; } -void HexoticPlugin_Hypothesis::SetHexoticSharpAngleThreshold(double theVal) { - if (theVal != _hexoticSharpAngleThreshold) { - _hexoticSharpAngleThreshold = theVal; - NotifySubMeshesHypothesisModification(); - } +void HexoticPlugin_Hypothesis::SetHexoticInvalidElements(bool theVal) +{ + SetOptionValue( "allow_invalid_elements", theVal ? "yes" : "no" ); + _hexoticInvalidElements = theVal; } -void HexoticPlugin_Hypothesis::SetHexoticNbProc(int theVal) { - if (theVal != _hexoticNbProc) { - _hexoticNbProc = theVal; - NotifySubMeshesHypothesisModification(); - } +void HexoticPlugin_Hypothesis::SetHexoticSharpAngleThreshold(double theVal) +{ + SetOptionValue( "ridge_angle", SMESH_Comment( theVal )); + _hexoticSharpAngleThreshold = theVal; +} + +void HexoticPlugin_Hypothesis::SetHexoticNbProc(int theVal) +{ + SetOptionValue( "max_number_of_threads", SMESH_Comment( theVal )); + _hexoticNbProc = theVal; } void HexoticPlugin_Hypothesis::SetHexoticWorkingDirectory(const std::string& path) @@ -154,35 +233,314 @@ void HexoticPlugin_Hypothesis::SetHexoticVerbosity(int theVal) { } } -void HexoticPlugin_Hypothesis::SetHexoticMaxMemory(int theVal) { - if (theVal != _hexoticMaxMemory) { - _hexoticMaxMemory = theVal; +void HexoticPlugin_Hypothesis::SetHexoticMaxMemory(int theVal) +{ + SetOptionValue( "max_memory", SMESH_Comment( theVal )); + _hexoticMaxMemory = theVal; +} + +void HexoticPlugin_Hypothesis::SetKeepFiles(bool toKeep) +{ + if ( _keepFiles != toKeep ) { + _keepFiles = toKeep; NotifySubMeshesHypothesisModification(); } } -void HexoticPlugin_Hypothesis::SetAdvancedOption(const std::string& theOptions) +void HexoticPlugin_Hypothesis::SetStandardOutputLog(bool logInStandardOutput) { - if (_textOptions != theOptions ) { - _textOptions = theOptions; + if ( _logInStandardOutput != logInStandardOutput ) { + _logInStandardOutput = logInStandardOutput; NotifySubMeshesHypothesisModification(); } } -void HexoticPlugin_Hypothesis::SetTextOptions(const std::string& theOptions) + +void HexoticPlugin_Hypothesis::SetRemoveLogOnSuccess(bool removeLogOnSuccess) { - if (_textOptions != theOptions ) { - _textOptions = theOptions; + if ( _removeLogOnSuccess != removeLogOnSuccess ) { + _removeLogOnSuccess = removeLogOnSuccess; NotifySubMeshesHypothesisModification(); } } -bool HexoticPlugin_Hypothesis::AddSizeMap(std::string theEntry, double theSize) { +void HexoticPlugin_Hypothesis::SetOptionValue(const std::string& optionName, + const std::string& optionValue) + throw (std::invalid_argument) +{ + TOptionValues::iterator op_val = _option2value.find(optionName); + if (op_val == _option2value.end()) + { + op_val = _customOption2value.find( optionName ); + if ( op_val != _customOption2value.end() && op_val->second != optionValue ) + NotifySubMeshesHypothesisModification(); + _customOption2value[ optionName ] = optionValue; + return; + } + + if (op_val->second != optionValue) + { + const char* ptr = optionValue.c_str(); + // strip white spaces + while (ptr[0] == ' ') + ptr++; + int i = strlen(ptr); + while (i != 0 && ptr[i - 1] == ' ') + i--; + // check value type + bool typeOk = true; + std::string typeName; + if (i == 0) { + // empty string + } else if (_charOptions.count(optionName)) { + // do not check strings + } else if (_doubleOptions.count(optionName)) { + // check if value is double + ToDbl(ptr, &typeOk); + typeName = "real"; + } else if (_boolOptions.count(optionName)) { + // check if value is bool + ToBool(ptr, &typeOk); + typeName = "bool"; + } else { + // check if value is int + ToInt(ptr, &typeOk); + typeName = "integer"; + } + if ( typeOk ) // check some specific values ? + { + } + if ( !typeOk ) + { + std::string msg = "Advanced option '" + optionName + "' = '" + optionValue + "' but must be " + typeName; + throw std::invalid_argument(msg); + } + std::string value( ptr, i ); + if ( _defaultOptionValues[ optionName ] == value ) + value.clear(); + + op_val->second = value; + + NotifySubMeshesHypothesisModification(); + } +} + +//============================================================================= +//! Return option value. If isDefault provided, it can be a default value, +// then *isDefault == true. If isDefault is not provided, the value will be +// empty if it equals a default one. +std::string HexoticPlugin_Hypothesis::GetOptionValue(const std::string& optionName, + bool* isDefault) const + throw (std::invalid_argument) +{ + TOptionValues::const_iterator op_val = _option2value.find(optionName); + if (op_val == _option2value.end()) + { + op_val = _customOption2value.find(optionName); + if (op_val == _customOption2value.end()) + { + std::string msg = "Unknown MG-Tetra option: <" + optionName + ">"; + throw std::invalid_argument(msg); + } + } + std::string val = op_val->second; + if ( isDefault ) *isDefault = ( val.empty() ); + + if ( val.empty() && isDefault ) + { + op_val = _defaultOptionValues.find( optionName ); + if (op_val != _defaultOptionValues.end()) + val = op_val->second; + } + return val; +} + + +//============================================================================= +bool HexoticPlugin_Hypothesis::HasOptionDefined( const std::string& optionName ) const +{ + bool isDefault = false; + try + { + GetOptionValue( optionName, &isDefault ); + } + catch ( std::invalid_argument ) + { + return false; + } + return !isDefault; +} + +//============================================================================= +void HexoticPlugin_Hypothesis::ClearOption(const std::string& optionName) +{ + TOptionValues::iterator op_val = _customOption2value.find(optionName); + if (op_val != _customOption2value.end()) + _customOption2value.erase(op_val); + else { + op_val = _option2value.find(optionName); + if (op_val != _option2value.end()) + op_val->second.clear(); + } +} + +//============================================================================= +HexoticPlugin_Hypothesis::TOptionValues HexoticPlugin_Hypothesis::GetOptionValues() const +{ + TOptionValues vals; + TOptionValues::const_iterator op_val = _option2value.begin(); + for ( ; op_val != _option2value.end(); ++op_val ) + vals.insert( make_pair( op_val->first, GetOptionValue( op_val->first, GET_DEFAULT() ))); + + return vals; +} + +//================================================================================ +/*! + * \brief Converts a string to a bool + */ +//================================================================================ + +bool HexoticPlugin_Hypothesis::ToBool(const std::string& str, bool* isOk ) + throw (std::invalid_argument) +{ + std::string s = str; + if ( isOk ) *isOk = true; + + for ( size_t i = 0; i <= s.size(); ++i ) + s[i] = tolower( s[i] ); + + if ( s == "1" || s == "true" || s == "active" || s == "yes" ) + return true; + + if ( s == "0" || s == "false" || s == "inactive" || s == "no" ) + return false; + + if ( isOk ) + *isOk = false; + else { + std::string msg = "Not a Boolean value:'" + str + "'"; + throw std::invalid_argument(msg); + } + return false; +} + +//================================================================================ +/*! + * \brief Converts a string to a real value + */ +//================================================================================ + +double HexoticPlugin_Hypothesis::ToDbl(const std::string& str, bool* isOk ) + throw (std::invalid_argument) +{ + if ( str.empty() ) throw std::invalid_argument("Empty value provided"); + + char * endPtr; + double val = strtod(&str[0], &endPtr); + bool ok = (&str[0] != endPtr); + + if ( isOk ) *isOk = ok; + + if ( !ok ) + { + std::string msg = "Not a real value:'" + str + "'"; + throw std::invalid_argument(msg); + } + return val; +} + +//================================================================================ +/*! + * \brief Converts a string to a integer value + */ +//================================================================================ + +int HexoticPlugin_Hypothesis::ToInt(const std::string& str, bool* isOk ) + throw (std::invalid_argument) +{ + if ( str.empty() ) throw std::invalid_argument("Empty value provided"); + + char * endPtr; + int val = (int)strtol( &str[0], &endPtr, 10); + bool ok = (&str[0] != endPtr); + + if ( isOk ) *isOk = ok; + + if ( !ok ) + { + std::string msg = "Not an integer value:'" + str + "'"; + throw std::invalid_argument(msg); + } + return val; +} + +void HexoticPlugin_Hypothesis::SetAdvancedOption(const std::string& option) +{ + size_t wsPos = option.find(' '); + if ( wsPos == std::string::npos ) + { + SetOptionValue( option, "" ); + } + else + { + std::string opt( option, 0, wsPos ); + std::string val( option, wsPos + 1 ); + SetOptionValue( opt, val ); + } +} + +//======================================================================= +//function : GetAdvancedOption +//purpose : Return only options having NO corresponding member fields +//======================================================================= + +std::string HexoticPlugin_Hypothesis::GetAdvancedOption( bool customOnly ) const +{ + // options having corresponding member fields + static std::set< std::string > toSkip = { + "min_level", + "max_level", + "compute_ridges", + "allow_invalid_elements", + "ridge_angle", + "max_number_of_threads", + "max_memory" + }; + + // Return only options having NO corresponding member fields + + SMESH_Comment txt; + + TOptionValues::const_iterator o2v = _option2value.begin(); + if ( !customOnly ) + { + for ( ; o2v != _option2value.end(); ++o2v ) + if ( !o2v->second.empty() && !toSkip.count( o2v->first )) + { + if ( !txt.empty() ) + txt << " "; + txt << "--" << o2v->first << " " << o2v->second; + } + } + for ( o2v = _customOption2value.begin(); o2v != _customOption2value.end(); ++o2v ) + { + if ( !txt.empty() ) + txt << " "; + // if ( o2v->first[0] != '-' ) + // txt << "--"; + txt << o2v->first << " " << o2v->second; + } + return txt; +} + +bool HexoticPlugin_Hypothesis::AddSizeMap(std::string theEntry, double theSize) +{ THexoticSizeMaps::iterator it; it=_sizeMaps.find(theEntry); - + if(theSize <= 0) return false; - + if( it == _sizeMaps.end() ) // If no size map is defined on the given object { _sizeMaps[theEntry] = theSize; @@ -199,7 +557,7 @@ bool HexoticPlugin_Hypothesis::AddSizeMap(std::string theEntry, double theSize) } else { - MESSAGE("NO size map added") + MESSAGE("NO size map added"); return false; // No size map added } } @@ -272,7 +630,7 @@ std::ostream& HexoticPlugin_Hypothesis::SaveTo(std::ostream& save) //explicit outputs for future code compatibility of saved .hdf //save without any whitespaces! //int dummy = -1; - save<<"hexesMinLevel="<<_hexesMinLevel<<";"; + save<<"hexesMinLevel="<<_hexesMinLevel<<";"; save<<"hexesMaxLevel="<<_hexesMaxLevel<<";"; save<<"hexoticIgnoreRidges="<<(int)_hexoticIgnoreRidges<<";"; save<<"hexoticInvalidElements="<<(int)_hexoticInvalidElements<<";"; @@ -284,7 +642,7 @@ std::ostream& HexoticPlugin_Hypothesis::SaveTo(std::ostream& save) save<<"hexoticSdMode="<<_hexoticSdMode<<";"; save<<"hexoticVerbosity="<<_hexoticVerbosity<<";"; save<<"hexoticMaxMemory="<<_hexoticMaxMemory<<";"; - std::string textOptions = _textOptions; // save _textOptions + std::string textOptions;// = _textOptions; replace(textOptions.begin(), textOptions.end(), ' ', '*'); save<<"textOptions="<first << " -" << o2v->second; + + save << " " << _customOption2value.size(); + for ( o2v = _customOption2value.begin(); o2v != _customOption2value.end(); ++o2v ) + save << " -" << o2v->first << " -" << o2v->second; + return save; } //============================================================================= /*! - * + * */ //============================================================================= std::istream& HexoticPlugin_Hypothesis::LoadFrom(std::istream& load) @@ -350,23 +725,23 @@ std::istream& HexoticPlugin_Hypothesis::LoadFrom(std::istream& load) str4 = str2.substr(eqpos+1); pos = found + 1; - if (str3=="hexesMinLevel") _hexesMinLevel = atoi(str4.c_str()); - if (str3=="hexesMaxLevel") _hexesMaxLevel = atoi(str4.c_str()); + if (str3=="hexesMinLevel") _hexesMinLevel = atoi(str4.c_str()); + if (str3=="hexesMaxLevel") _hexesMaxLevel = atoi(str4.c_str()); if (str3=="hexoticQuadrangles") {} - if (str3=="hexoticIgnoreRidges") _hexoticIgnoreRidges = (bool) atoi(str4.c_str()); - if (str3=="hexoticInvalidElements") _hexoticInvalidElements = (bool) atoi(str4.c_str()); + if (str3=="hexoticIgnoreRidges") _hexoticIgnoreRidges = (bool) atoi(str4.c_str()); + if (str3=="hexoticInvalidElements") _hexoticInvalidElements = (bool) atoi(str4.c_str()); if (str3=="hexoticSharpAngleThreshold") _hexoticSharpAngleThreshold = atof(str4.c_str()); - if (str3=="hexoticNbProc") _hexoticNbProc = atoi(str4.c_str()); - if (str3=="hexoticWorkingDirectory") _hexoticWorkingDirectory = str4; - if (str3=="minSize") _minSize = atof(str4.c_str()); - if (str3=="maxSize") _maxSize = atof(str4.c_str()); - if (str3=="hexoticSdMode") _hexoticSdMode = atoi(str4.c_str()); - if (str3=="hexoticVerbosity") _hexoticVerbosity = atoi(str4.c_str()); - if (str3=="hexoticMaxMemory") _hexoticMaxMemory = atoi(str4.c_str()); + if (str3=="hexoticNbProc") _hexoticNbProc = atoi(str4.c_str()); + if (str3=="hexoticWorkingDirectory") _hexoticWorkingDirectory = str4; + if (str3=="minSize") _minSize = atof(str4.c_str()); + if (str3=="maxSize") _maxSize = atof(str4.c_str()); + if (str3=="hexoticSdMode") _hexoticSdMode = atoi(str4.c_str()); + if (str3=="hexoticVerbosity") _hexoticVerbosity = atoi(str4.c_str()); + if (str3=="hexoticMaxMemory") _hexoticMaxMemory = atoi(str4.c_str()); if (str3=="textOptions") { replace(str4.begin(), str4.end(), '*', ' '); - _textOptions = str4; + //_textOptions = str4; } if (str3=="sizeMaps") { @@ -384,10 +759,10 @@ std::istream& HexoticPlugin_Hypothesis::LoadFrom(std::istream& load) sm_pos = sm_found + 1; } } - if (str3 == "nbLayers") _nbLayers = atoi(str4.c_str()); + if (str3 == "nbLayers") _nbLayers = atoi(str4.c_str()); if (str3 == "firstLayerSize") _firstLayerSize = atof(str4.c_str()); - if (str3 == "direction") _direction = atoi(str4.c_str()); - if (str3 == "growth") _growth = atof(str4.c_str()); + if (str3 == "direction") _direction = atoi(str4.c_str()); + if (str3 == "growth") _growth = atof(str4.c_str()); if (str3 == "facesWithLayers") { std::string id; @@ -413,6 +788,35 @@ std::istream& HexoticPlugin_Hypothesis::LoadFrom(std::istream& load) } } } + + // New options in 2.9.6 (issue #17784) + + if ( static_cast( load >> _approxAngle )) + { + int i; + load >> i; _logInStandardOutput = (bool)i; + load >> i; _removeLogOnSuccess = (bool)i; + load >> i; _keepFiles = (bool)i; + + std::string option, value; + if ( static_cast( load >> i ) && i >= 0 ) + { + for ( int nbRead = 0; nbRead < i; ++nbRead ) + { + load >> option >> value; + _option2value[ std::string( option, 1 )] = std::string( value, 1 ); + } + } + if ( static_cast( load >> i ) && i >= 0 ) + { + for ( int nbRead = 0; nbRead < i; ++nbRead ) + { + load >> option >> value; + _customOption2value[ std::string( option, 1 )] = std::string( value, 1 ); + } + } + } + return load; } diff --git a/src/HexoticPlugin/HexoticPlugin_Hypothesis.hxx b/src/HexoticPlugin/HexoticPlugin_Hypothesis.hxx index e692dba..638588f 100644 --- a/src/HexoticPlugin/HexoticPlugin_Hypothesis.hxx +++ b/src/HexoticPlugin/HexoticPlugin_Hypothesis.hxx @@ -31,6 +31,7 @@ #include "Utils_SALOME_Exception.hxx" #include +#include #include // class HexoticSizeMap @@ -67,6 +68,9 @@ public: void SetMaxSize(double theVal); double GetMaxSize() const { return _maxSize; } + void SetGeomApproxAngle(double angle); + double GetGeomApproxAngle() const { return _approxAngle; } + void SetHexoticIgnoreRidges(bool theVal); bool GetHexoticIgnoreRidges() const { return _hexoticIgnoreRidges; } @@ -91,14 +95,36 @@ public: void SetHexoticMaxMemory(int theVal); int GetHexoticMaxMemory() const { return _hexoticMaxMemory; } - void SetAdvancedOption(const std::string& theOptions); - std::string GetAdvancedOption() const { return _textOptions; } - void SetTextOptions(const std::string& theOptions); // obsolete - std::string GetTextOptions() const { return _textOptions; } + void SetKeepFiles(bool toKeep); + bool GetKeepFiles() const { return _keepFiles; } + void SetStandardOutputLog(bool logInStandardOutput); + bool GetStandardOutputLog() const { return _logInStandardOutput; } + void SetRemoveLogOnSuccess(bool removeLogOnSuccess); + bool GetRemoveLogOnSuccess() const { return _removeLogOnSuccess; } + + + typedef std::map< std::string, std::string > TOptionValues; + typedef std::set< std::string > TOptionNames; + + void SetOptionValue(const std::string& optionName, + const std::string& optionValue) throw (std::invalid_argument); + std::string GetOptionValue(const std::string& optionName, + bool* isDefault=0) const throw (std::invalid_argument); + bool HasOptionDefined( const std::string& optionName ) const; + void ClearOption(const std::string& optionName); + TOptionValues GetOptionValues() const; + const TOptionValues& GetCustomOptionValues() const { return _customOption2value; } + std::string GetAdvancedOption( bool customOnly = false ) const; + void SetAdvancedOption(const std::string& theOptions); // obsolete + + static bool ToBool(const std::string& str, bool* isOk=0) throw (std::invalid_argument); + static double ToDbl(const std::string& str, bool* isOk=0) throw (std::invalid_argument); + static int ToInt(const std::string& str, bool* isOk=0) throw (std::invalid_argument); + // Size Maps typedef std::map THexoticSizeMaps; - + // For the GUI HexoticPluginGUI_HypothesisCreator::storeParamToHypo const THexoticSizeMaps& GetSizeMaps() const { return _sizeMaps; } @@ -129,6 +155,7 @@ public: static int GetDefaultHexesMaxLevel(); static double GetDefaultMinSize(); static double GetDefaultMaxSize(); + static double GetDefaultGeomApproxAngle() { return 0; } static bool GetDefaultHexoticIgnoreRidges(); static bool GetDefaultHexoticInvalidElements(); static double GetDefaultHexoticSharpAngleThreshold(); @@ -145,6 +172,9 @@ public: static double GetDefaultGrowth(); static std::vector GetDefaultFacesWithLayers(); static std::vector GetDefaultImprintedFaces(); + static bool GetDefaultStandardOutputLog() { return false; } + static bool GetDefaultRemoveLogOnSuccess() { return false; } + static bool GetDefaultKeepFiles() { return false; } // Persistence virtual std::ostream& SaveTo(std::ostream& save); @@ -166,11 +196,12 @@ public: */ virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0); -private: + private: int _hexesMinLevel; int _hexesMaxLevel; double _minSize; double _maxSize; + double _approxAngle; bool _hexoticIgnoreRidges; bool _hexoticInvalidElements; double _hexoticSharpAngleThreshold; @@ -178,9 +209,17 @@ private: int _hexoticSdMode; int _hexoticVerbosity; int _hexoticMaxMemory; - std::string _textOptions; THexoticSizeMaps _sizeMaps; + + TOptionValues _option2value, _customOption2value; // user defined values + TOptionValues _defaultOptionValues; // default values + TOptionNames _doubleOptions, _charOptions, _boolOptions; // to find a type of option + std::string _hexoticWorkingDirectory; + bool _logInStandardOutput; + bool _removeLogOnSuccess; + bool _keepFiles; + int _nbLayers; double _firstLayerSize; bool _direction; diff --git a/src/HexoticPlugin/HexoticPlugin_Hypothesis_i.cxx b/src/HexoticPlugin/HexoticPlugin_Hypothesis_i.cxx index 240d72b..910d0e2 100644 --- a/src/HexoticPlugin/HexoticPlugin_Hypothesis_i.cxx +++ b/src/HexoticPlugin/HexoticPlugin_Hypothesis_i.cxx @@ -43,7 +43,6 @@ HexoticPlugin_Hypothesis_i (PortableServer::POA_ptr thePOA, : SALOME::GenericObj_i( thePOA ), SMESH_Hypothesis_i( thePOA ) { - MESSAGE( "HexoticPlugin_Hypothesis_i::HexoticPlugin_Hypothesis_i" ); myBaseImpl = new ::HexoticPlugin_Hypothesis (theGenImpl->GetANewId(), theGenImpl); } @@ -57,7 +56,6 @@ HexoticPlugin_Hypothesis_i (PortableServer::POA_ptr thePOA, //============================================================================= HexoticPlugin_Hypothesis_i::~HexoticPlugin_Hypothesis_i() { - MESSAGE( "HexoticPlugin_Hypothesis_i::~HexoticPlugin_Hypothesis_i" ); } //============================================================================= @@ -86,7 +84,6 @@ HexoticPlugin_Hypothesis_i::~HexoticPlugin_Hypothesis_i() void HexoticPlugin_Hypothesis_i::SetHexesMinLevel (CORBA::Long theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexesMinLevel"); ASSERT(myBaseImpl); CORBA::Long oldValue = GetHexesMinLevel(); this->GetImpl()->SetHexesMinLevel(theValue); @@ -96,7 +93,6 @@ void HexoticPlugin_Hypothesis_i::SetHexesMinLevel (CORBA::Long theValue) void HexoticPlugin_Hypothesis_i::SetHexesMaxLevel (CORBA::Long theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexesMaxLevel"); ASSERT(myBaseImpl); CORBA::Long oldValue = GetHexesMaxLevel(); this->GetImpl()->SetHexesMaxLevel(theValue); @@ -106,7 +102,6 @@ void HexoticPlugin_Hypothesis_i::SetHexesMaxLevel (CORBA::Long theValue) void HexoticPlugin_Hypothesis_i::SetMinSize (CORBA::Double theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexesMaxLevel"); ASSERT(myBaseImpl); CORBA::Double oldValue = GetMinSize(); this->GetImpl()->SetMinSize(theValue); @@ -116,7 +111,6 @@ void HexoticPlugin_Hypothesis_i::SetMinSize (CORBA::Double theValue) void HexoticPlugin_Hypothesis_i::SetMaxSize (CORBA::Double theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexesMaxLevel"); ASSERT(myBaseImpl); CORBA::Double oldValue = GetMaxSize(); this->GetImpl()->SetMaxSize(theValue); @@ -124,9 +118,21 @@ void HexoticPlugin_Hypothesis_i::SetMaxSize (CORBA::Double theValue) SMESH::TPythonDump() << _this() << ".SetMaxSize( " << theValue << " )"; } +void HexoticPlugin_Hypothesis_i::SetGeomApproxAngle(CORBA::Double angle) +{ + CORBA::Double oldValue = GetGeomApproxAngle(); + this->GetImpl()->SetGeomApproxAngle( angle ); + if (angle != oldValue) + SMESH::TPythonDump() << _this() << ".SetGeomApproxAngle( " << angle << " )"; +} + +CORBA::Double HexoticPlugin_Hypothesis_i::GetGeomApproxAngle() +{ + return this->GetImpl()->GetGeomApproxAngle(); +} + void HexoticPlugin_Hypothesis_i::SetHexoticIgnoreRidges (CORBA::Boolean theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexoticIgnoreRidges"); ASSERT(myBaseImpl); CORBA::Boolean oldValue = GetHexoticIgnoreRidges(); this->GetImpl()->SetHexoticIgnoreRidges(theValue); @@ -136,7 +142,6 @@ void HexoticPlugin_Hypothesis_i::SetHexoticIgnoreRidges (CORBA::Boolean theValue void HexoticPlugin_Hypothesis_i::SetHexoticInvalidElements (CORBA::Boolean theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexoticInvalidElements"); ASSERT(myBaseImpl); CORBA::Boolean oldValue = GetHexoticInvalidElements(); this->GetImpl()->SetHexoticInvalidElements(theValue); @@ -146,7 +151,6 @@ void HexoticPlugin_Hypothesis_i::SetHexoticInvalidElements (CORBA::Boolean theVa void HexoticPlugin_Hypothesis_i::SetHexoticSharpAngleThreshold (CORBA::Double theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexoticSharpAngleThreshold"); ASSERT(myBaseImpl); CORBA::Double oldValue = GetHexoticSharpAngleThreshold(); this->GetImpl()->SetHexoticSharpAngleThreshold(theValue); @@ -156,7 +160,6 @@ void HexoticPlugin_Hypothesis_i::SetHexoticSharpAngleThreshold (CORBA::Double th void HexoticPlugin_Hypothesis_i::SetHexoticNbProc (CORBA::Long theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexoticNbProc"); ASSERT(myBaseImpl); CORBA::Long oldValue = GetHexoticNbProc(); this->GetImpl()->SetHexoticNbProc(theValue); @@ -190,9 +193,50 @@ void HexoticPlugin_Hypothesis_i::SetHexoticWorkingDirectory(const char* path) th SMESH::TPythonDump() << _this() << ".SetHexoticWorkingDirectory( '" << path << "' )"; } +void HexoticPlugin_Hypothesis_i::SetKeepFiles(::CORBA::Boolean toKeep) +{ + if ( GetKeepFiles() != toKeep ) + { + this->GetImpl()->SetKeepFiles(toKeep); + SMESH::TPythonDump() << _this() << ".SetKeepFiles( " << toKeep << " )"; + } +} + +::CORBA::Boolean HexoticPlugin_Hypothesis_i::GetKeepFiles() +{ + return this->GetImpl()->GetKeepFiles(); +} + +void HexoticPlugin_Hypothesis_i::SetStandardOutputLog(::CORBA::Boolean logInStandardOutput) +{ + if ( GetStandardOutputLog() != logInStandardOutput ) + { + this->GetImpl()->SetStandardOutputLog(logInStandardOutput); + SMESH::TPythonDump() << _this() << ".SetStandardOutputLog( " << logInStandardOutput << " )"; + } +} + +::CORBA::Boolean HexoticPlugin_Hypothesis_i::GetStandardOutputLog() +{ + return this->GetImpl()->GetStandardOutputLog(); +} + +void HexoticPlugin_Hypothesis_i::SetRemoveLogOnSuccess(::CORBA::Boolean removeLogOnSuccess) +{ + if ( GetRemoveLogOnSuccess() != removeLogOnSuccess ) + { + this->GetImpl()->SetRemoveLogOnSuccess(removeLogOnSuccess); + SMESH::TPythonDump() << _this() << ".SetRemoveLogOnSuccess( " << removeLogOnSuccess << " )"; + } +} + +::CORBA::Boolean HexoticPlugin_Hypothesis_i::GetRemoveLogOnSuccess() +{ + return this->GetImpl()->GetRemoveLogOnSuccess(); +} + void HexoticPlugin_Hypothesis_i::SetHexoticSdMode (CORBA::Long theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexoticSdMode"); ASSERT(myBaseImpl); CORBA::Long oldValue = GetHexoticSdMode(); this->GetImpl()->SetHexoticSdMode(theValue); @@ -202,7 +246,6 @@ void HexoticPlugin_Hypothesis_i::SetHexoticSdMode (CORBA::Long theValue) void HexoticPlugin_Hypothesis_i::SetHexoticVerbosity (CORBA::Long theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetVerbosity"); ASSERT(myBaseImpl); CORBA::Long oldValue = GetHexoticVerbosity(); this->GetImpl()->SetHexoticVerbosity(theValue); @@ -212,7 +255,6 @@ void HexoticPlugin_Hypothesis_i::SetHexoticVerbosity (CORBA::Long theValue) void HexoticPlugin_Hypothesis_i::SetHexoticMaxMemory (CORBA::Long theValue) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetHexoticMaxMemory"); ASSERT(myBaseImpl); CORBA::Long oldValue = GetHexoticMaxMemory(); this->GetImpl()->SetHexoticMaxMemory(theValue); @@ -220,19 +262,264 @@ void HexoticPlugin_Hypothesis_i::SetHexoticMaxMemory (CORBA::Long theValue) SMESH::TPythonDump() << _this() << ".SetHexoticMaxMemory( " << theValue << " )"; } -void HexoticPlugin_Hypothesis_i::SetTextOptions(const char* theOptions) +void HexoticPlugin_Hypothesis_i::SetOptionValue(const char* optionName, const char* optionValue) + throw (SALOME::SALOME_Exception) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetTextOptions"); ASSERT(myBaseImpl); - std::string oldValue(GetAdvancedOption()); - this->GetImpl()->SetAdvancedOption(theOptions); - if (theOptions != oldValue) - SMESH::TPythonDump() << _this() << ".SetAdvancedOption( '" << theOptions << "' )"; + try { + std::string name( optionName ); + if ( !optionValue || !optionValue[0] ) + UnsetOption( optionName ); + + // options having corresponding methods + + else if ( name == "max_memory" ) + SetHexoticMaxMemory( GetImpl()->ToInt( optionValue )); + + else if ( name == "min_level" ) + SetHexesMinLevel( GetImpl()->ToInt( optionValue )); + + else if ( name == "max_level" ) + SetHexesMaxLevel( GetImpl()->ToInt( optionValue )); + + else if ( name == "min_size" ) + SetMinSize( GetImpl()->ToDbl( optionValue )); + + else if ( name == "max_size" ) + SetMaxSize( GetImpl()->ToDbl( optionValue )); + + else if ( name == "ridge_angle" ) + SetHexoticSharpAngleThreshold( GetImpl()->ToDbl( optionValue )); + + else if ( name == "compute_ridges" ) + SetHexoticIgnoreRidges( ! GetImpl()->ToBool( optionValue )); + + else if ( name == "allow_invalid_elements" ) + SetHexoticInvalidElements( GetImpl()->ToBool( optionValue )); + + else if ( name == "max_number_of_threads" ) + SetHexoticNbProc( GetImpl()->ToInt( optionValue )); + + else if ( name == "verbose" ) + SetHexoticVerbosity( GetImpl()->ToInt( optionValue )); + + // advanced options (for backward compatibility) + // else if ( name == "create_tag_on_collision" || + // name == "tiny_edge_respect_geometry" ) + // AddOption( optionName, optionValue ); + + else { + bool valueChanged = true, isDefault; + try { + valueChanged = ( this->GetImpl()->GetOptionValue( name, &isDefault ) != optionValue ); + } + catch ( std::invalid_argument ) { + } + if ( valueChanged ) + { + this->GetImpl()->SetOptionValue(optionName, optionValue); + SMESH::TPythonDump() << _this() << ".SetOptionValue( '" << optionName << "', '" << optionValue << "' )"; + } + } + } catch (const std::invalid_argument& ex) { + THROW_SALOME_CORBA_EXCEPTION( ex.what() ,SALOME::BAD_PARAM ); + } catch (SALOME_Exception& ex) { + THROW_SALOME_CORBA_EXCEPTION( ex.what() ,SALOME::BAD_PARAM ); + } +} + +//============================================================================= + +char* HexoticPlugin_Hypothesis_i::GetOptionValue(const char* optionName) + throw (SALOME::SALOME_Exception) +{ + ASSERT(myBaseImpl); + try { + bool isDefault; + return CORBA::string_dup(this->GetImpl()->GetOptionValue(optionName,&isDefault).c_str()); + } catch (const std::invalid_argument& ex) { + THROW_SALOME_CORBA_EXCEPTION( ex.what() ,SALOME::BAD_PARAM ); + } catch (SALOME_Exception& ex) { + THROW_SALOME_CORBA_EXCEPTION( ex.what() ,SALOME::BAD_PARAM ); + } + return 0; +} + +//============================================================================= + +void HexoticPlugin_Hypothesis_i::UnsetOption(const char* optionName) { + ASSERT(myBaseImpl); + if ( !GetImpl()->GetOptionValue( optionName ).empty() ) + { + this->GetImpl()->ClearOption(optionName); + SMESH::TPythonDump() << _this() << ".UnsetOption( '" << optionName << "' )"; + } +} + +//============================================================================= + +HexoticPlugin::string_array* HexoticPlugin_Hypothesis_i::GetOptionValues() +{ + HexoticPlugin::string_array_var result = new HexoticPlugin::string_array(); + + const ::HexoticPlugin_Hypothesis::TOptionValues & opts = this->GetImpl()->GetOptionValues(); + result->length(opts.size()); + int i=0; + + bool isDefault; + ::HexoticPlugin_Hypothesis::TOptionValues::const_iterator opIt = opts.begin(); + for (; opIt != opts.end(); ++opIt, ++i) + { + std::string name_value_type = opIt->first; + //if (!opIt->second.empty()) + { + name_value_type += ":"; + name_value_type += GetImpl()->GetOptionValue( opIt->first, &isDefault ); + name_value_type += isDefault ? ":0" : ":1"; + } + result[i] = CORBA::string_dup(name_value_type.c_str()); + } + + return result._retn(); +} + +//============================================================================= + +HexoticPlugin::string_array* HexoticPlugin_Hypothesis_i::GetAdvancedOptionValues() +{ + HexoticPlugin::string_array_var result = new HexoticPlugin::string_array(); + + const ::HexoticPlugin_Hypothesis::TOptionValues & custom_opts = this->GetImpl()->GetCustomOptionValues(); + result->length(custom_opts.size()); + int i=0; + + ::HexoticPlugin_Hypothesis::TOptionValues::const_iterator opIt = custom_opts.begin(); + for (; opIt != custom_opts.end(); ++opIt, ++i) { + std::string name_value_type = opIt->first; + if (!opIt->second.empty()) { + name_value_type += ":"; + name_value_type += opIt->second; + name_value_type += ":1"; // user defined + } + result[i] = CORBA::string_dup(name_value_type.c_str()); + } + return result._retn(); +} + +//============================================================================= + +void HexoticPlugin_Hypothesis_i::SetOptionValues(const HexoticPlugin::string_array& options) + throw (SALOME::SALOME_Exception) +{ + for (CORBA::ULong i = 0; i < options.length(); ++i) + { + std::string name_value_type = options[i].in(); + if(name_value_type.empty()) + continue; + size_t colonPos = name_value_type.find(':'); + std::string name, value; + if (colonPos == std::string::npos) // ':' not found + name = name_value_type; + else { + name = name_value_type.substr(0, colonPos); + if (colonPos < name_value_type.size() - 1 && name_value_type[colonPos] != ' ') { + std::string value_type = name_value_type.substr(colonPos + 1); + colonPos = value_type.find(':'); + value = value_type.substr(0, colonPos); + if (colonPos < value_type.size() - 1 && value_type[colonPos] != ' ') + if ( value_type.substr(colonPos + 1) == "0" ) // is default + value.clear(); + } + } + SetOptionValue(name.c_str(), value.c_str()); + } } -void HexoticPlugin_Hypothesis_i::SetAdvancedOption(const char* theOptions) +//============================================================================= + +void HexoticPlugin_Hypothesis_i::SetAdvancedOptionValues(const HexoticPlugin::string_array& options) +{ + SMESH::TPythonDump dump; + + std::string optionsAndValues; + for ( CORBA::ULong i = 0; i < options.length(); ++i) { + std::string name_value_type = options[i].in(); + if(name_value_type.empty()) + continue; + size_t colonPos = name_value_type.find(':'); + std::string name, value; + if (colonPos == std::string::npos) // ':' not found + name = name_value_type; + else { + name = name_value_type.substr(0, colonPos); + if (colonPos < name_value_type.size() - 1 && name_value_type[colonPos] != ' ') { + std::string value_type = name_value_type.substr(colonPos + 1); + colonPos = value_type.find(':'); + value = value_type.substr(0, colonPos); + } + } + AddOption(name.c_str(), value.c_str()); + + optionsAndValues += name + " " + value + " "; + } + + if ( !optionsAndValues.empty() ) + dump << _this() << ".SetAdvancedOptions( '" << optionsAndValues.c_str() << "' )"; +} + +//============================================================================= + +void HexoticPlugin_Hypothesis_i::SetAdvancedOption(const char* optionsAndValues) + throw (SALOME::SALOME_Exception) +{ + if ( !optionsAndValues ) return; + + SMESH::TPythonDump dump; + + std::istringstream strm( optionsAndValues ); + std::istream_iterator sIt( strm ), sEnd; + for ( int nbPairs = 0; sIt != sEnd; ++nbPairs ) + { + std::string option = *sIt; + if ( ++sIt != sEnd ) + { + std::string value = *sIt; + ++sIt; + AddOption( option.c_str(), value.c_str() ); + } + else + { + if ( nbPairs > 0 ) + THROW_SALOME_CORBA_EXCEPTION( "Uneven number of options and values" ,SALOME::BAD_PARAM ); + AddOption( option.c_str(), "" ); + } + } + dump << _this() << ".SetAdvancedOption( '" << optionsAndValues << "' )"; +} + +//============================================================================= + +void HexoticPlugin_Hypothesis_i::AddOption(const char* optionName, const char* optionValue) +{ + ASSERT(myBaseImpl); + bool valueChanged = ( !this->GetImpl()->HasOptionDefined(optionName) || + this->GetImpl()->GetOptionValue(optionName) != optionValue ); + if (valueChanged) { + this->GetImpl()->SetOptionValue(optionName, optionValue); + SMESH::TPythonDump() << _this() << ".SetOptionValue( '" << optionName << "', '" << optionValue << "' )"; + } +} + +//============================================================================= + +char* HexoticPlugin_Hypothesis_i::GetOption(const char* optionName) +{ + ASSERT(myBaseImpl); + return CORBA::string_dup(this->GetImpl()->GetOptionValue(optionName).c_str()); +} + +void HexoticPlugin_Hypothesis_i::SetTextOptions(const char* theOptions) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetAdvancedOption"); ASSERT(myBaseImpl); std::string oldValue(GetAdvancedOption()); this->GetImpl()->SetAdvancedOption(theOptions); @@ -261,7 +548,6 @@ HexoticPlugin::HexoticPluginSizeMapsList* HexoticPlugin_Hypothesis_i::GetSizeMap void HexoticPlugin_Hypothesis_i::SetSizeMapEntry ( const char* theEntry, CORBA::Double theSize ) { -// MESSAGE("HexoticPlugin_Hypothesis_i::SetSizeMapEntry"); bool valueChanged = this->GetImpl()->AddSizeMap(theEntry, theSize); if (valueChanged) SMESH::TPythonDump() << _this() << ".SetSizeMap( "<< theEntry << ", " << theSize << " )"; @@ -269,7 +555,6 @@ void HexoticPlugin_Hypothesis_i::SetSizeMapEntry ( const char* theEntry, CORBA:: void HexoticPlugin_Hypothesis_i::UnsetSizeMapEntry ( const char* theEntry ) { -// MESSAGE("HexoticPlugin_Hypothesis_i::UnsetSizeMapEntry"); bool entryRemoved = this->GetImpl()->UnsetSizeMap(theEntry); if (entryRemoved) SMESH::TPythonDump() << _this() << ".UnsetSizeMap( "<< theEntry << " )"; @@ -277,7 +562,6 @@ void HexoticPlugin_Hypothesis_i::UnsetSizeMapEntry ( const char* theEntry ) void HexoticPlugin_Hypothesis_i::SetSizeMap (const GEOM::GEOM_Object_ptr theGeomObj, const double theSize) { -// MESSAGE("HexoticPlugin_Hypothesis_i::SetSizeMap"); ASSERT(myBaseImpl); std::string entry = theGeomObj->GetStudyEntry(); SetSizeMapEntry( entry.c_str(), theSize); @@ -285,7 +569,6 @@ void HexoticPlugin_Hypothesis_i::SetSizeMap (const GEOM::GEOM_Object_ptr theGeom void HexoticPlugin_Hypothesis_i::UnsetSizeMap (const GEOM::GEOM_Object_ptr theGeomObj) { -// MESSAGE("HexoticPlugin_Hypothesis_i::UnsetSizeMap"); ASSERT(myBaseImpl); std::string entry = theGeomObj->GetStudyEntry(); UnsetSizeMapEntry( entry.c_str()); @@ -293,7 +576,6 @@ void HexoticPlugin_Hypothesis_i::UnsetSizeMap (const GEOM::GEOM_Object_ptr theGe void HexoticPlugin_Hypothesis_i::SetNbLayers(CORBA::Long theVal) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetNbLayers"); ASSERT(myBaseImpl); CORBA::Long oldValue = GetNbLayers(); this->GetImpl()->SetNbLayers(theVal); @@ -303,7 +585,6 @@ void HexoticPlugin_Hypothesis_i::SetNbLayers(CORBA::Long theVal) void HexoticPlugin_Hypothesis_i::SetFirstLayerSize(CORBA::Double theVal) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetFirstLayerSize"); ASSERT(myBaseImpl); CORBA::Double oldValue = GetFirstLayerSize(); this->GetImpl()->SetFirstLayerSize(theVal); @@ -313,7 +594,6 @@ void HexoticPlugin_Hypothesis_i::SetFirstLayerSize(CORBA::Double theVal) void HexoticPlugin_Hypothesis_i::SetDirection(CORBA::Boolean theVal) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetDirection"); ASSERT(myBaseImpl); CORBA::Boolean oldValue = GetDirection(); this->GetImpl()->SetDirection(theVal); @@ -323,7 +603,6 @@ void HexoticPlugin_Hypothesis_i::SetDirection(CORBA::Boolean theVal) void HexoticPlugin_Hypothesis_i::SetGrowth(CORBA::Double theVal) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetGrowth"); ASSERT(myBaseImpl); CORBA::Double oldValue = GetGrowth(); this->GetImpl()->SetGrowth(theVal); @@ -333,7 +612,6 @@ void HexoticPlugin_Hypothesis_i::SetGrowth(CORBA::Double theVal) void HexoticPlugin_Hypothesis_i::SetFacesWithLayers(const ::SMESH::long_array& theVal) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetFacesWithLayers"); std::vector ids( theVal.length() ); for ( unsigned i = 0; i < ids.size(); ++i ) ids[i] = theVal[i]; @@ -345,7 +623,6 @@ void HexoticPlugin_Hypothesis_i::SetFacesWithLayers(const ::SMESH::long_array& t void HexoticPlugin_Hypothesis_i::SetImprintedFaces(const ::SMESH::long_array& theVal) { - // MESSAGE("HexoticPlugin_Hypothesis_i::SetImprintedFaces"); std::vector ids( theVal.length() ); for ( unsigned i = 0; i < ids.size(); ++i ) ids[i] = theVal[i]; @@ -381,56 +658,48 @@ void HexoticPlugin_Hypothesis_i::SetImprintedFaces(const ::SMESH::long_array& th CORBA::Long HexoticPlugin_Hypothesis_i::GetHexesMinLevel() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetHexesMinLevel"); ASSERT(myBaseImpl); return this->GetImpl()->GetHexesMinLevel(); } CORBA::Long HexoticPlugin_Hypothesis_i::GetHexesMaxLevel() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetHexesMaxLevel"); ASSERT(myBaseImpl); return this->GetImpl()->GetHexesMaxLevel(); } CORBA::Double HexoticPlugin_Hypothesis_i::GetMinSize() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetMinSize"); ASSERT(myBaseImpl); return this->GetImpl()->GetMinSize(); } CORBA::Double HexoticPlugin_Hypothesis_i::GetMaxSize() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetMaxSize"); ASSERT(myBaseImpl); return this->GetImpl()->GetMaxSize(); } CORBA::Boolean HexoticPlugin_Hypothesis_i::GetHexoticIgnoreRidges() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetHexoticIgnoreRidges"); ASSERT(myBaseImpl); return this->GetImpl()->GetHexoticIgnoreRidges(); } CORBA::Boolean HexoticPlugin_Hypothesis_i::GetHexoticInvalidElements() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetHexoticInvalidElements"); ASSERT(myBaseImpl); return this->GetImpl()->GetHexoticInvalidElements(); } CORBA::Double HexoticPlugin_Hypothesis_i::GetHexoticSharpAngleThreshold() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetHexoticSharpAngleThreshold"); ASSERT(myBaseImpl); return this->GetImpl()->GetHexoticSharpAngleThreshold(); } CORBA::Long HexoticPlugin_Hypothesis_i::GetHexoticNbProc() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetHexoticNbProc"); ASSERT(myBaseImpl); return this->GetImpl()->GetHexoticNbProc(); } @@ -443,69 +712,59 @@ char* HexoticPlugin_Hypothesis_i::GetHexoticWorkingDirectory() CORBA::Long HexoticPlugin_Hypothesis_i::GetHexoticSdMode () { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetHexoticSdMode"); ASSERT(myBaseImpl); return this->GetImpl()->GetHexoticSdMode(); } CORBA::Long HexoticPlugin_Hypothesis_i::GetHexoticVerbosity() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetVerbosity"); ASSERT(myBaseImpl); return this->GetImpl()->GetHexoticVerbosity(); } CORBA::Long HexoticPlugin_Hypothesis_i::GetHexoticMaxMemory() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetHexoticMaxMemory"); ASSERT(myBaseImpl); return this->GetImpl()->GetHexoticMaxMemory(); } char* HexoticPlugin_Hypothesis_i::GetAdvancedOption() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetAdvancedOption"); ASSERT(myBaseImpl); - return CORBA::string_dup( this->GetImpl()->GetAdvancedOption().c_str() ); + return CORBA::string_dup( this->GetImpl()->GetAdvancedOption( /*customOnly=*/true ).c_str() ); } char* HexoticPlugin_Hypothesis_i::GetTextOptions() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetTextOptions"); ASSERT(myBaseImpl); return CORBA::string_dup( this->GetImpl()->GetAdvancedOption().c_str() ); } CORBA::Long HexoticPlugin_Hypothesis_i::GetNbLayers() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetNbLayers"); ASSERT(myBaseImpl); return this->GetImpl()->GetNbLayers(); } CORBA::Double HexoticPlugin_Hypothesis_i::GetFirstLayerSize() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetFirstLayerSize"); ASSERT(myBaseImpl); return this->GetImpl()->GetFirstLayerSize(); } CORBA::Boolean HexoticPlugin_Hypothesis_i::GetDirection() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetDirection"); ASSERT(myBaseImpl); return this->GetImpl()->GetDirection(); } CORBA::Double HexoticPlugin_Hypothesis_i::GetGrowth() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetGrowth"); ASSERT(myBaseImpl); return this->GetImpl()->GetGrowth(); } SMESH::long_array* HexoticPlugin_Hypothesis_i::GetFacesWithLayers() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetFacesWithLayers"); ASSERT(myBaseImpl); std::vector idsVec = this->GetImpl()->GetFacesWithLayers(); SMESH::long_array_var ids = new SMESH::long_array; @@ -517,7 +776,6 @@ SMESH::long_array* HexoticPlugin_Hypothesis_i::GetFacesWithLayers() SMESH::long_array* HexoticPlugin_Hypothesis_i::GetImprintedFaces() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetImprintedFaces"); ASSERT(myBaseImpl); std::vector idsVec = this->GetImpl()->GetImprintedFaces(); SMESH::long_array_var ids = new SMESH::long_array; @@ -535,7 +793,6 @@ SMESH::long_array* HexoticPlugin_Hypothesis_i::GetImprintedFaces() //============================================================================= ::HexoticPlugin_Hypothesis* HexoticPlugin_Hypothesis_i::GetImpl() { - // MESSAGE("HexoticPlugin_Hypothesis_i::GetImpl"); return (::HexoticPlugin_Hypothesis*)myBaseImpl; } diff --git a/src/HexoticPlugin/HexoticPlugin_Hypothesis_i.hxx b/src/HexoticPlugin/HexoticPlugin_Hypothesis_i.hxx index 8d69219..241331c 100644 --- a/src/HexoticPlugin/HexoticPlugin_Hypothesis_i.hxx +++ b/src/HexoticPlugin/HexoticPlugin_Hypothesis_i.hxx @@ -59,21 +59,33 @@ class HEXOTICPLUGIN_EXPORT HexoticPlugin_Hypothesis_i: void SetMaxSize(CORBA::Double theVal); CORBA::Double GetMaxSize(); + void SetGeomApproxAngle(CORBA::Double angle); + CORBA::Double GetGeomApproxAngle(); + void SetHexoticIgnoreRidges(CORBA::Boolean theVal); CORBA::Boolean GetHexoticIgnoreRidges(); - + void SetHexoticInvalidElements(CORBA::Boolean theVal); CORBA::Boolean GetHexoticInvalidElements(); - + void SetHexoticSharpAngleThreshold(CORBA::Double theVal); CORBA::Double GetHexoticSharpAngleThreshold(); - + void SetHexoticNbProc(CORBA::Long theVal); CORBA::Long GetHexoticNbProc(); - + void SetHexoticWorkingDirectory(const char* path) throw ( SALOME::SALOME_Exception ); char* GetHexoticWorkingDirectory(); + void SetKeepFiles(::CORBA::Boolean toKeep); + ::CORBA::Boolean GetKeepFiles(); + + void SetStandardOutputLog(::CORBA::Boolean logInStandardOutput); + ::CORBA::Boolean GetStandardOutputLog(); + + void SetRemoveLogOnSuccess(::CORBA::Boolean removeLogOnSuccess); + ::CORBA::Boolean GetRemoveLogOnSuccess(); + void SetHexoticSdMode(CORBA::Long value); CORBA::Long GetHexoticSdMode(); @@ -82,15 +94,27 @@ class HEXOTICPLUGIN_EXPORT HexoticPlugin_Hypothesis_i: void SetHexoticMaxMemory(CORBA::Long theVal); CORBA::Long GetHexoticMaxMemory(); - - void SetAdvancedOption(const char* theOptions); + + void SetAdvancedOption(const char* theOptions) throw (SALOME::SALOME_Exception); char* GetAdvancedOption(); void SetTextOptions(const char* theOptions); // obsolete char* GetTextOptions(); + void SetOptionValue(const char* optionName, const char* optionValue) throw (SALOME::SALOME_Exception); + char* GetOptionValue(const char* optionName) throw (SALOME::SALOME_Exception); + void UnsetOption(const char* optionName); + + HexoticPlugin::string_array* GetOptionValues(); + HexoticPlugin::string_array* GetAdvancedOptionValues(); + + void SetOptionValues(const HexoticPlugin::string_array& options) throw (SALOME::SALOME_Exception); + void SetAdvancedOptionValues(const HexoticPlugin::string_array& options); + + void AddOption(const char* optionName, const char* optionValue); + char* GetOption(const char* optionName); void SetSizeMapEntry(const char* theEntry, CORBA::Double theSize); void UnsetSizeMapEntry(const char* theEntry); - + void SetSizeMap(GEOM::GEOM_Object_ptr theGeomObj, double theSize); void UnsetSizeMap(GEOM::GEOM_Object_ptr theGeomObj); HexoticPlugin::HexoticPluginSizeMapsList* GetSizeMaps (); -- 2.39.2