From 6ea1734275c05803c1c2669302ca024b88e557c9 Mon Sep 17 00:00:00 2001 From: Aditya Pareek <119134401+LOGANBLUE1@users.noreply.github.com> Date: Fri, 4 Sep 2026 14:14:13 +0530 Subject: [PATCH 1/2] changed dataproc docs --- .../platform-guide-for-gcp-dataproc.md | 717 ++++++------------ 1 file changed, 252 insertions(+), 465 deletions(-) diff --git a/docs/platform-guides/platform-guide-for-gcp-dataproc.md b/docs/platform-guides/platform-guide-for-gcp-dataproc.md index 3dacedefc..42f0fc7c4 100644 --- a/docs/platform-guides/platform-guide-for-gcp-dataproc.md +++ b/docs/platform-guides/platform-guide-for-gcp-dataproc.md @@ -13,469 +13,9 @@ Combining Zingg with Google Cloud gives you elastic Spark scale via Dataproc, fl Tested with Dataproc image version 2.2-debian12 (Spark 3.5). The `n2-standard-4` machine type with 16GB RAM per node is the recommended minimum for Zingg's training phases. {% endhint %} -{% tabs %} -{% tab title="Community" %} -Uses `Arguments`, `FieldDefinition`, `CsvPipe`, and `ZinggWithSpark`. Runs on a standard Dataproc cluster with JupyterLab. - -### Step 1: Download JARs and prepare your GCS bucket - -Zingg on GCP requires three JARs to bridge Spark with Google Cloud services. Download these to your local machine before creating the cluster. - -
| JAR | Purpose | Download |
|---|---|---|
zingg-0.6.0.jar | The Zingg engine | github.com/zinggAI/zingg/releases |
spark-3.5-bigquery-0.44.1.jar | BigQuery connector | github.com/GoogleCloudDataproc/spark-bigquery-connector |
gcs-connector-hadoop3-latest.jar | GCS connector | docs.cloud.google.com/dataproc/docs/concepts/connectors/cloud-storage |
| JAR | Purpose | Source |
|---|---|---|
zingg-enterprise-spark-1.0.0.jar | The Enterprise engine | Provided with your Enterprise distribution |
zingg_license.jar | Your Enterprise license | Provided with your Enterprise distribution |
spark-3.5-bigquery-0.44.1.jar | BigQuery connector | github.com/GoogleCloudDataproc/spark-bigquery-connector |
gcs-connector-hadoop3-latest.jar | GCS connector | docs.cloud.google.com/dataproc/docs/concepts/connectors/cloud-storage |
| JAR | Purpose | Source |
|---|---|---|
zingg-0.6.0.jar | The Zingg engine | github.com/zinggAI/zingg/releases |
spark-3.5-bigquery-0.44.1.jar | BigQuery connector | github.com/GoogleCloudDataproc/spark-bigquery-connector |
gcs-connector-hadoop3-latest.jar | GCS connector | docs.cloud.google.com/dataproc/docs/concepts/connectors/cloud-storage |
| Community class | Enterprise equivalent |
|---|---|
Arguments() | EArguments() |
FieldDefinition(...) | EFieldDefinition(...) |
CsvPipe(...) | ECsvPipe(...) |
ZinggWithSpark(...) | EZinggWithSpark(...) |
ClientOptions(...) | ClientOptions(...) — unchanged |
| Error | Cause and fix |
|---|---|
Default Service Account ... is missing required permissions: [dataproc.agents.create, ...] | The Compute Engine default service account lacks roles/dataproc.worker. Grant it along with roles/storage.objectAdmin, then wait 60 seconds for IAM to propagate. |
UNAVAILABLE ... zone does not have enough resources | Zone capacity shortage. Omit --zone so Dataproc retries across zones, try e2-standard-8 instead of n2-standard-8, or switch region. |
ALREADY_EXISTS: Failed to create cluster | A previous failed attempt left the cluster in ERROR state. Delete it before retrying. |
| Console shows only Cluster on GKE | Use the gcloud CLI. Creation works through the API regardless of what the console displays. |
| HTTP 502 on the JupyterLab link | Jupyter has not finished starting — wait 2–3 minutes after RUNNING. If it persists after a stop/start cycle, delete and recreate the cluster. |
Network is unreachable during pip install | The cluster has no outbound internet. Stage the wheel in GCS and install from the local file. |
ModuleNotFoundError: No module named 'zingg' | The open-source base package is missing, or the kernel was not restarted after installing. Install all three wheels, then Kernel → Restart Kernel. |
NameError: name 'ECsvPipe' is not defined | Missing import. Each Enterprise class comes from its own module — see Step 6. |
Cannot call methods on a stopped SparkContext | Two phases were run in separate cells, each creating a new context. Use trainMatch, or restart the kernel between phases. |
ConnectionRefusedError: [Errno 111] | The JVM is gone — usually a consequence of the error above, or a driver OOM. Restart the kernel and re-run from Step 5. |
java.lang.OutOfMemoryError: Java heap space | Driver heap exhausted building the query plan. Recreate on a *-standard-8 node with spark.driver.memory=12g and confirm the checkpoint directory is set. |
ClassNotFoundException on the first Zingg call | A path in spark.jars is wrong. The cluster builds fine regardless — verify paths against gcloud storage ls. |
g3?Rx>aFYg_Z~j& znwk|zQiod8-8$i-G<9C93{G882eqcqp5D^>Xr*&OR?oF@t-x#48BSqD{VWiXILcBLZnzLh>Y|Y8MZgW3~UR-;mv2BxP!^2SfvT?wo?D+bu?+kL4 z@IqqE{u%lnseu>4CGqUFUb?odjG}ShsKV3QIzxXw%%dKpxLL>R{Ls(;$ukuf52x|W z_?&(f`kwlp|AqN%(DJ4Cz6t*aq1of`bx{N~HncQu%m8 %kdcF zx6X8~ac=M1-w!DZb(y9}8HQPwJQpq
DCnbx2Y`)m?wWoOA>{a~ICbVH}6=_!XP`|Nx;_vmG z?_7RwY#OaNxqSQia)z`+u;xSM_V^m}Iz4#4Ggv>kCohvZC*bU}vVuD2c(ojFx;|Mj zDR`UsT6y;}fXTt=^W1w8b>A`Uz0PRN2>q^eFZD5B*{SnxaT0aj`M`5=7tC2;d$+mJ zX4uL5CUEo?hg2sJE1>38`!;vYeR`AO*XH+$T5o`G4fcnSd;Kuj)}$`jRP3i8U5=#A zVaHxv8p!i0F35f#0jj1$-Qcba2zK&>vv97Qi=UR7Ai!vg<>euXQlW&}poJ*q@Jf13 zTe=;KYLT~>e^{;+-L^Sh+J+s=JSS}CT?myNgNtu|Kwj+mBiQ%#KY)D#1Ctc}rs9@< zx(=y=JB$l<8S#S{27`#Jzd-@-ctfe^{QPWwef{m-`r_Ef*|kWVdXB1peLW-kV-j@U!fvTS`ri*=VA&l+UBFHM=SYG6 zg!sSj!G`!O^4cuj-ObJI6~)9f(Sv*U9B}ur{(XPB`sn-#5iwXfIZIa&q^7ERH@boL z?_1wrdSADOCdcV$>HT7G{)MC4!JvbChezeA%FE4~oBqYY%(}q7tBJD|)z ^}nzX2Lv8>ia9zulO4prAPer+kc@Od zzuv!I5|w?5yuO}UD|e#ChyVAxE=D9fG)#1~{ewBv|1&-j*jrRIW3)6waXrNUehW5- z)MDeSrlSHjjqooxWcM?#tqskj@Lxoz5dtq-^}j<>i~padSS6GGYYNyS`KQSAvHH@| z($)^l|DI?F{h$8P(2U^hGyRK#`AGgG6=eKFVEg%BY-;I0 AP$C4LCiXCbFWJ8k7y`!DmK|66$Vlrs;lF4$%xA9a+F9K9|8rX$mM%q2O~t6U z{|+jf3(ykIy6vd{_9UAa0?)XB{BBk7-^GOTpt!j35R*o&9}WKn!OW_`zU%wAy#3#& z4D=%Gx>nEOzmMZT%_|0mWpm=cx4>cVQUrmXrT?2AVA qiFdoCMK3bC(3D(la-~r8u8}t NF#K^b1srGQbLHa$Shq2Ri^8M|AXkoXcq{Mo&W_Er3 z@0oTd sQZMr%41hYoZJWb5n>^4u|D})pn1Va*-Ub>-p)&`-ZxrVt3~!{|P%MD?fd#K&8JA zh-A411%YzrPEKqTa8U4Ahet<&`pHE_>Vkw>q`^pei_XqYQ_${&SW8QTU&x614+omG zuz5S4qNwD$32|Ru7JQQX!|mJ9LyWVbpgwZ}O`H2BtBS-{<3qmeIfWi+gSW|dEC0og z&Gx+7e%1sP6?G>eKR-VpAYgZwj3%M9sLIyNtax~)4+0y0AYU?0yWWi1ap3m#)vH`G zl}SIhG!-XEzep}qLR#ALwAWnA%F3$U^L8tuA+*(FuNLh=CU5%DM=fzD^IKlDfm5CU zZ~h4NaSGcabM5%BgiP4GMsgByf`5#9afi<6XjsiacBS XurV}P>ehLA0BQMPE0 zM4R)n^zm$!P=d0k-^EB+ZD}b5KUm!nyd_KHwNTpEZTM}dphwe8J!4~c^db~XEVR<} zMnCjW(Fuu2I!5bVC-VrOI1Wg)g@qLCl$4Yi>IX7ml9*%}bZ6(gk&%(~^wXZ69z9?9 z?CEafDGfEks2DR(Lt3O5-&zkD)+<+G3gu!4*v|5qn51!G&;U4|ua%SG@tpar$yjzY zHC7OMQv6!8&)H0WxLzj|oYg|BY+5KPWlM9j0oMNUvCICN@87{lNqPCf)XY!*P}n$F z23Rf+6V_kszA&+~;&a;Y+3t@jA3<@w^M2?RG3d(3%H-wdG3anH_VfD-qAKeSnqD(N zuu{T`MY=IF(jMIpCv0bB&N&`Pf0QunEJSkJHV^ivYVf+^v;74N6_t{QU+rwuhG-xC z)&8mYuG-ROwC!}4=fbqF&G1n3ZMQLIx|^{^Frg-4FuDJL>^TmYstqT+Cy)C%R4gP% zypid?Geam oH5;y4E 3i88kHZKo1x4uBwP;(9hIzOGZ!eRtWzYV>K|vE4 zth5{)YP*SyUfz0-&xqJOPW@r3WGK`e6cm({2a5!BW-~KN%AR+Z92^{#M=0PzURoX) zr2F`$r6*t7Dsyu l)IVeh)J@WtGfy1j48UV2E{qcE3DNjwETU19xuClAa6!T zd}_PKeGewkF)$i!)=iFL`>QKqk)fs$6nu?XjOTJ$ohaaJ=@ZaCKdnp2!>Sq|rEuC- zl~~G=#PHthMWelGx_n0!g?d_Pb{b@&6QpD(rT*oXA(MlcamP5K(qMA>!0n$s4MTZ= zGI1!ri{b5J?TSy4KS#nyTXMP@@Kp>au4F(wVgh8yK}9vKx7lBn@_fkW1`}pu*Rs}J z-L!mkrR8BV!(~V0sgFoWX}VLxLCs7}Ntq^`V_{J{72fL6nh2Tr>hGnhs>;uI*$grf z9|*@}tPc845;MiS@N|U#3YGN9Od%m*50bm&(9|8$7)K-{#N#BbF}ePE;Eoiov*S-V zJ3 +<@oYC5xwi~VP zz`lwIHZ^xOc^2=~VMc#Dp040TD#*JB%$DUN`@=iRB-dw|jX+@tIcum9o1cIEF9Lhk zoEl@s2a}RMF3T}ka&$MBUq8HDtS9AB19K7b(f>9(dLVp+5IEE4+4Lp?8MniJiV@u5 z8=ax{FvJon%E9I;E~xkDX(6%YZH~thJ o79fwwMiWVX^CI@-}& z(dqE0j8xdu?>BcNqOL2-@0@FEYi(^>x#T}g-`MMbrJs1CKzgwf7S^pbl`@JjTt^Rs zoWXjrgFi^WfV=>SPyl%&TVybDJdIaFQ!^zc4RaT>udh#3JmACiUGQDeE-Wl8mD{VMi|wP5D% E2|2m@ySsMho1h`o z9)lXb_RBzF6jW5fHs2`y 4821_rsdKe|eG^Yh8Ri;IIgoT$lm%eoSQ zrek5_>SHZ5TJzq9wX}#;ZM26Xcx4Grj*kBQK!pvQsWWB7ROkF_GVtv249w%2ni~5W zX4mtz$dJd40~w+i34YHzVZqH7Z|$*90 b&opnh$FN`5g(Mkl@%08u=#bnz7#L3JDe9WnN-yQ*kFz8{zdpPC;+l>KO3WZ| zeZM%0Q`0>l|4h#9_QcoTS~uZoc$7>vlkBz;@j6zG6qWChpPi$jt!-J$#>&E)kGub) zMgt8tbCH9VHqEVEjHHJ&J|TgXwKg^`ZmZ`00hk)dT_xobkuXw`Fky&3%x?SNO4Gpu zNjQJ3bU@Iy;qv3(RV~gz;Q2Z@LG)H{ct7V7X7YREpw23=mZ+8M6y!usj+|^%NXvdg zq^Ccl*KXWq4ykAJ0}Bp tf@NN~J2X!vAa*A5)pc68CW0&{EY*&4&5ryESG&BnW(emHPmHqIuY z3x|`1@yRTK@f23qxn$-!TiU Jq3ZPw4Hf0(mtqzavOKQ$rycE{aIiia;=wW$sJvc}Tg1UPH_@6v zs;HN1h!xF-syi+55D*ZE1i>SGfnREMpG{)a^JzuBe92KjFFR4mnMUXj r(& zRvG-0#u7^sSZ9ut`e%rCr-kEhFNCPk@xB-eJsuC1W{bHQCoRL6r1Y1!*JlgKX{0Lw z_};mCc=q}TW_W4YFZ5%wrlmFbT2E$2n&^9`;@(#g2;SO?An$S7Y1N1dzEn-mnZr`^ zQ2lMfEM!fNQceZ6X;%9#rt*9$M(Sr{Rs})Ixzkt&H|`QIeG9rf-6#1>y%rWCk `Wy{iKYiqS>H(<%;gUtupFTG)il%63t&DSZN=;0+D4&XxmtSD$LR`*+?}G!% zgdQy(OY2!}vqLX3lz!vPPhZ2sz)ir`i=`EDR66`GDYyh#ZG|?Hh@+`7`gr_Oc2X14 z^@Z$e*UG@Ww(jUpnxf>Sgmf%ytn2qrMc2XTdoV%!46WmMPQS~kRRT|Mm*STgb1n!S zT1YaJnspeOO2cFd53yF+>+a{6Yvtu(BM|Q70ko+}yih&6i4K>=_%q5WZij`|2sZG; z1oQH$_xrnVX<6Cm@UXdAb!j*|j;yve?pu0BhOXk(TUn6;m4}Ci3_7~8@!m+-NKbB0 zTU*;)JeuFz=;&x3g{GvWq>oQWdV0EFPEKhlO`wdVl$4a5oB (O+E 3iB84%`kGJ08 zK0go&z19^MQ!xt4tAEFQo9$oTTe^x95b#FbIZ=8BOG$jK(7Hb4<2ilnjc?BCYvF5+ zbhPjvys#nAqeyqGSzMA$ZFLj&gP?6KAP>0uC@rs7kkoXZ`V9eYsp^DNy|oe}*8Se} zsAqM)T;(mu*XVH6MF&alv6wR&f
M9E$}F*@ljj6_$_aWPttHDbsG>#@iTn%8q{fq%#k802gs)AXUhrYcztEbH z=H%qzeu;7HD3xM*YHRUc?TB-sVeMGV#0qM-;9UH;3jI^mxtP5Ey?mN|;CmV=ysGt1 z=^r1bZRpMLKIh~F97n60X#F~*BOK1}xQA(6$VudZG=e{lL6!%Vf_S1yHBa0nMXtZ) z }eloWCw@Y**v@}jz!izout1X}or!3lAOtIEl;gcE?)|8&1O_S0=l=ENCrFw*_V z{Uyksk>ix4IXqlBF*!J6gpG|o*gwy4H{9K=s4AQA2#8O$>Z8YC%XLNap?tRk1LNh^ zR%qyui IamJyW*;~A@Y2%K*jl Z~jN~g&VPGTz93TjZ@Eb`?5F-Bl^L*K06d^hqTBYuv)@P)o zDzdn%`v*Yp2pPr!7M{LLXe4Z5QBDE@uWH|qkEvL7fLN%hEzB0mKiu{m zX?a;TlcmCNFp^<{;Wdx)k(!3)?dC%NcD4Mp{Nt_tVrAa4pn#kVWw@)WTD45g@qjU# zn!2W8nb-B~=wcQ#aKLu6HPED^-e$ef`vuVrTG!*b+kbO0N8)KAY3KA5Xf!xDgd864 z{ku0&X>R@U>2O>TJQi29R8DG2%490P>FNT#Mn=8Wa#)B>I+y+Hc?NHHw;mT>WNT1R zUEIwpBpd=fJb-qZY&W^RmZC?bQZ#vCCB&A3g8^`UtR)`CmJmu?)$!2&cs^WG|M^Is ztE!xeP~ZaVgOz}!Na!Y|t*)Mn@i;uh$b6jNGlka)O~d3@We*O=%jF-+BG2DiqaUwP zi-9Un=cEgLfzWJy--{s{bH+oSC==qZ+zP;Cb?c_#Ch=C;$QVyN{Ups6Z4s}cC5d8& zK WA8-Eq} zY~I)Q7s_OwT2LzdhASaqM8+$ba<$82NH6$Za~UE6kJyfe_WPKijnxsuWd|@Iz54{* z9qwjgn*K7?Z>*?}@rj9K NnRGcaPJ(0MYjAR8q=qX>EZU6z!@az8eMWWg5hwzdQ^=W=RQvK5E9Y z$b
c`jV36bZ*D#Nqv3&yzddaS%+79qe-16a+__&mQ|qk<&}Bt z%+F&ftb<)$U>CCVj9CKC#|M*HAtXcs0_Ug8T!NjP!BGT;mUXf+GKI2PHI|e mU1!LexRQEYNzC!FM0gT@MJ^@Ew}zL?|AFMXZQ5} zZELp9eVKZ^{h6x)Un;LGMk0Tqy-;sOFt3pG>2}}4L5E3Iu5$A6*d5d-gGXJ-9aVVq zTgMJoj1$=Fz%w%=VBBRXMpKsDT3m2S23Qn~kD@?M`%44ekS*rmzTvsJgdiPwn6|7; zfDE6{tkofT)aY(%ialvwWO@-6TzfJ#qIgx>z)mBSrW<5kr78ZXtgYqyRaH{dZNuSo z|8*|b)B9pGijkp+GElkrdVhTN4y!#gCwIB=;WxnLZ)N#gYDGc|ORaxQmkzRRByXI0 znl9wNk%_-C#R?}BRE^9qGK{_Lxbl-6awpJK6_|$l%v(RgYIAx?h^bkO^}?m)`RgSn zp|j3A^B^W)Z0-4TS{!6?)pqzw>NA8%Wgm*WYhE3l<)M%W+O? hEd>(`DpvOE+SrXXL5%mS7#8LAlCvp{iYt40k8!-yH4iU0`;r{_M?&=d$HyxO z|Lz~9TQ{Z+0G+9Ckd~H0jYBca%>%Z&r>56ub`3eX%>EfOlV6NaDoRSv&MXU&*T-?R;_24Su`Mx(t+#Ue|nlV}ReCG631j`H7Bq;!Ccneyj6%6=_ z(HB&TB+aT`+PpL&MUjhdM~R6-i0ASs20`GF;1bSg<#pJjZb*Gb$8Pg^p=b@@isQru zmnD#tLi>95^04VUk;zXQjj4=hI1s6-rbe+4`PIj#vb1!i-O{v7tpey5HoW*G0l$1^ zIYGlHBO9C3f*vb5z7CVct(m*KSC^`e*IFOU-_J7|* TsI+A({pKS4m9uh(hMKziG*w_#s05b^6eU7p-mq~Y_r94}Ph zrpPqbHI!-pgcx`Ew)yMQ78v{I`y&MD5>EC8O#7bBipjO<-Q;Y4+IG)~WeIrfDURx6 z7B|TkA4ec>USFR pZ|zR4%3Ej9U!Lj>mI5J6bOv*y=e(^1@e@c78$2y%1)~Cvhs*Q YN(SSH)_JBB+lMMavusHcbq7{!ri1&IvkxYItrvU|QLAt>V?M^~{{?C6$ zS3{68(^4M$FT_8n|D3K}IrZxX(E)4Fh;6#9OnPLr>7ol~pG0C#-8;FOqGE2@2}d0z z)VV-MJv}XZ>Qe2)68+(e_sij<{|Cnv`DvHBR!aRoMFP#HeOKE<#{qZ3UNI^iYd<0+ zP)3WjXgR**HC|lmD?UDYFsn%bh|qb)z-8>;-OOd~#G!%MtPF>{O?M-f{*64OaO<5p zlgl#Rj~`ejMteaVA+XmGQC~y>);y5D#IiOt!%nu fnp0B3ucu7l?=Nq zkK5TH**xedD3~W@cW`h3_HgY68<7GfEcn)x6z&g;hOH#(AxV)>i0IDv@n^y_$3kT8 zVtXB^jd2o23`w46Q*BkB9;QwT`XQ^%UzL^O7d=lYfV}zR<2Z5JSJa-(GunPb1<3X| zcJe<`G(wL>nFU{v44u+`>CHBfpcc;^Z-c;(d{ZO)0s@Rcmw|=(yXz3PgI|Ekr*nvn z0#*F^hMV2j-s%R+1vE@JW4zbKo8DlgoUC@wFgI8DUPOX5M&yBaYDmby%Js`odaR%d zosM)tnBuNKj5 nua~zv=Jt2v43t$%g^RyoXe*KP z5KfMU_wYrXAgCFJxc^x4JugqKiODM4)oK8zjcP+b>TMI!yFc7oya%)8y6UQmL`jTI zYp^X*h+{CAVJFS5euw)VI6NxVT8-p81u%?}k}{OHmwF4b*T1ABt$x6&ul}BqG(Nga zOj%|2S4p?yEm2to$2GsmIDFzz5Ku(W*0=0vKpO&Et{*S(M(p$=@v? P1cBhae+d9}c29Jym z0IM!3P 27XUD1Lj)+SS%RubWI;iXAtsk6F&*PG z 8+bHz1LxRVn;(43B|Cz-e=eVFHl5yYbvX9E@a`VN<8`~_0$j=0MqsE ztP2vv{Ss}y!F8kUg@36o9Dv5e+@CtMP~nEOhB#S@CJc)F9yTJO)L-%&;ZEd0YPAch z*8;u`oErA+^75+R8hcpq_fJv>Z6=ilamIJ~$0`-}QcEuc{5U{+BJ=njbA`Wy&x-`I zI=J#)xBrB*GT-}WCa&ji55#XeoguX2pXR;?rbVKkp9X@S#k@R}wCK1pV~E-)oQ|7} zL*rH1$e+=CQ^(+^->7z|=;;w)o^Wt*dQAStfor5bmZ&L2yE;4iKJUUDXh*JQ W1<^P{O%R1?2hcsZx`XPwKoIvd2n*=76XF@-?*dVJiImE^5DLE!N=+Oo26+}~c3 z#SNdWG}taydV_p6czt~Z1v`V0&KJ-0lLe{lZWgTV-$f&(RF%~+u@sOo36m1Y?f>|V zS27?1p#I(5BDAWzyXO<)&SQJKr<>;k@_}qaed$ewMBntZ{mX=IUn<2bmnt4f9ZaBY z14n3nQPE@yzvW5e87wR;u%WP;yt8``j7?QfHTn1e`MB9}XPH`}FJxFk#R%i(@C?+U zK!yu>!$gSmFM^#{t}a^E%j>?SfF4XL*+)k0RqJX5=3!>)Q`QfYG92?u+xMh 1IIt<1;r*yb3|gZ_$3|H6C$JKkt(A1y{ztcdR~0t;shswWWHO-~utShS z*<)$Dvn>!sLVsApdw=`{2y|1q2ah<&Bo|<6A20nc!tNr@7P(`^nT0eR@mybT@I!2M zKz?eYyfib(0CvCu^YR!h_M3e--Tn!El5)&5VGYgOgs-Eii1GZs{pNTQ$l7_iV?)ed zK?ET>GByMc0~0f{QlrDb8CaAO8tU&45h`lHbO;3nRa0XyE@Z@nbxx285A`;va|HVg zl{;HZ`sD5&?NcUMGHINhFN%7ojUJt#>YXzapAg_f?!jaW6BUcn(GC#Z&s;vts)+(M zES4Y_rHnEN{a1vjtT}_W)42xAY@V87NG^*o`&U0naZ*y!u<&qmw$#|%*oFp#nmLI$ zB^4DmK%{iP!Gy 51m%;phku)Mv9UE!l}=~DYqE|yzPReje`S9pfEcVQ}(nO z8cRV-dx*|+tOrou4Y>M?!Ki6r8D6A886&X(cpTIg3 |F~&Bf Vl-q* QW =ILob0~{E5d?+X_{1u9+eSdo`tT_n)9uiU# z00fc6vP2Y?6&01`N$-%mB17@x$@ n_Gfog(`! zO7hk5j9iu#`gk(O*q2R=T!5synW$)D-j694V^k*M{rOyuelR-Y{)WR8Vm?%sxr>-( zfZ61#MUZ|#QBm>g`L0YZL0BI?trfyt}m8>J>V~`+AbJ=$6Y(4O3|7mR>s~RMa$~GA{uuu)#=# zD6D@>&)|~baCw}T+T7u$COK_%K3*=o`%pOAj1*G=o78VCW~DeznVL*+2nZ;|%bL2T zi^a*o+1c>qV!#2#?S384pxgS+?kKJjuVBmlSTT)dF>w~e(||2gsPI643{*^-fBo NchFn1ZsQu$fEkK?xtZJB!)Q zh^48fzAur0DFuI1XVXR4s(8x^F4PO58FSZl9f0PcqQ|^GC+~afkESkYM(SA~@sC@S zN#r27M#Sq{B{t`Aw-%Gk0B<+4cS69uLO!_Vew2L7voN8%a+_K*HkUm;-}b#+pdCV9 z8QRC&%wLA$1Q&~q)uynp^8R*MdD~gCmZfegj^2L)*^!%X&S2ZF6ezlj@vZF}nNm_v zxE#-=bfZ}cZmGvU8!PDOjO}_) c+fukGGe7&HMbP&R5$8jlQCyyQ+SiVmYhaPlzG*M1Vt0>{DbWzvtOX zOCBN&FS#(qVzSeH(X0_rQ-22>Vx5i$#VSCNN;?Tqf;~N1v1M3N_<#qPe0Ye<*{5qm z#9r~Nxp%hOgvki%@}W0S2;wS{ukRc;-A+nP3==m3R9%LnLv;IS3Bbrzl$`}&5h6SY z0K9PBUI-qUo2PNu#w?`yz`zQJht(|eWbnA2Z>;|jgYyd9G8s=jTd6bs;Y&!O$@z#n zL_4)|pAtAj)p(l;aLde86iMVd>Fdsj=(#Co^d%q_omWy*x!j( 7&u(ZOqU}R==91UI(u=vGe zU`p6;Zzoq(DTFW7icxN3(BmXs?VVY_TZ*R)*SehJJf7mEjwNJeT;FepK88HRsc&vU zj_SBS-Q+-Ye%;TvYtey&lV;1vcXxcj6sFxQEBPD#b!$`0$FDe7yQUDkc6eA4T=xNZ zm`b5GL!+Z23`$2p8bv22hJoWjJwL--U4h3%QK5xZW^OdmLw@Isqc+mj<=<{_0BjCr zf3E5re|#RSGWxsX-4)+%w1Iq4K9@`+*tS;b=uAYne?q&6Na{9T%@M^AmON~5utCdl zYQ5dmX9_;`iyA?flA}dcC1AnfC1;(_ !`Ec^Wi)foyVMQWuIO<)Twz#K}7}4 z@nt9X*jUQq=+f1t)F$LZ1*mues^?-kXud3%vj%=pudajh!iR>Tk*BIEBLhFR?SZy` zP&KN>&c$AQ9jC!;y;YWe@ZvbE2r`j}p5XRo^QDxP0IqCxgibIaHPzvHZg{&lh)%Z_ z3zB_IX1p~#$>Q@XhXZRIcvj{&!KT|xBZJkjN5H#hF>e@_2)bM0@4In#@o+vF+{jC! zk-m7jD>vQdcaS}^Jy^4mSQTJ>(gPBS+0NrmVW1ib$zs@>$~k?+!N3^R@#T05es5Js zM{!l1t!_ZsSDV+>*@p8sRiZh3gPcD`URJN507WAp-of~&XLy<|rRO~tM!tHo+HO={ z^jXh`KeZ#*7~!l=d0dV`#M{Ef=W^mST-L|32#Apj@{&J~BC%5VK-A>;yb_1<>|R JCxT+mc9Szp3ht2kMM#LbA9vf&6(MSg?-P`*G!q5 z{QPJ8z+ofgWekNZHGTa%2&VA wbQ``QA zKyPhrii!E&u1JL@FE5Xd?saWwOin2PvO7Wm`7Z~WC6Q1R7Vcy0JLBfVAB)Efur*#E zvb(T;T?dM;?U$WL=w9x# CK`Gz((y0QdXW$~DtFUl(>c@c{V z%p-RXR2~S^*gtZ%=Y*UMX7RiIUbp{p0j6V@vz4dLkL^15)kbSh>*wD<*-1WKaE_Dd zar5Ke_w~_!{8&{mgEA!=+4jfJs_lH+A6plUt&WrZvbR6X#l-qS?H+<2w+dV-F5= zt piBXN5{v&rE~8FJ|nZ =Rh;5WLQ7(EXMXzm%i#&C%_agKWB@GmRBiroEyA_USqA(_fHz7-8bq$H-V{HF z_P$Im$j|+1Ukq4FQ)ili`i?wfXc87$5QeF{9id*XWLJZw`f9!PY6Wgbe0)U2cte@` z@rR305MSq2li`UUY?zZf DrUfYwgfd_MgaA)NxeJ&%ZxmJX2(km zM;YYDVSYE>gcNyjP?)?_&t|&;`gRq(>q7FMB5zNQNZ-LhKcpswONFeJR&FU^4BNRc zQC+G^!1 9Ud>>k+K{Ma`FCv1z^2Q zp$3 Pto<*v7(Edai+y0^0fr0QwUqD--(jMSP!Pab1rgE!6 zzTe)SEpvOL8f$a^bA(GM?&TAkh-_eXZeX%WKrf&NQgiazjNfEY@2Ru&9H4v8G_3~= zbH!IvA>p%t?-b+lwasz0o5~28@I7)!&GGLe3cEFFqhCX6;dVfRdanTAZ 5A@d&nOwjMoqu|2 (DnbF;PYTuBwVopXDdWiiUChP>+d$VaKIv<{m$x+nQfgKutv>E*?NmPJZ*AC{6LV zthcqfd0=o5P}I#WYJdNZU}yJrGfGea`7o^bhnI!d)O;-}Ev?SJyg4{75cw9@3J=h{ zjrJRW4U@)50K~?^!UE6)-CNu(j!RdxR;1d{Jn`h_(-y155C@3kBr`$utSmFLO0&f( zVTl}R{iPGoDap}TFV>2JM7k@_iE#I-NvqeeY<@Z>{edm&9~p6p$Vyp&z$a(izpVTB zJ0o9(grOE!eOCRk$72zt djR$fjC84LIRiRF8zRK$nH-(P|(Tn*SpKNd*% znSWL0x?9a=LzSYYdHjShz?0A7<95F88&b?;hEEgl4yvp?Z*8!&ls^G1>kW>JHt6W+ zj*f8d?oY r(UU}*=+YUNMAaUURp-R>t;VV?Q@O- z)oSC#Dezx$FX7jTvsFSq {FcF4c>-#Umh-MjAEch`^s&t5XES1+1L{&N)jhQ##YSq-HhMeC+Q=F z)uNl)=@NiG05AyEOGrY`T4x9SI5ig290s&baeBUr#j$U4py{5R_O9X3$Jf)I4->mb zB}Z?;#?e)t$1(Lq7N?6_k;H(Jk?R}JBC>w30iW+?$k4tNh`CopicX{)bMmi4L-Ol_ zO%rpC1vJuG;_7F-`X@*DhErV^u{~?b+TSB}Ju(XnM-=8A%mvp9-t685Z$0hC9>lF% z7Rc^49@^4>89Z#4iEWeu ?vz{|0;CSWs;^!*C}9oHy%>8m9l zb%d`gL~ZVGEB*bdX%UkQ`lU=MZ5z(Q?wU_!goL7HrKQ3hP^-(UH!E^R?}cIjcv;+H zJXC*%dVZxX+CA7)ci=kS#6V6^xlGz}Ib&l6ts?O|V4{afoP(wI82{AQP*OtSChF?% zha` x`Fqa;ENB7ipxw&YcPiWsUHwF04SM)z?Er}^F z>L@Sr@iW7}l@cF|F1yh^_5MHh-ZHGp?&}w|5J5VX6iJa#TDrTt5lQLp5Gerxk(LJO zF6j~w=?0~{yPGq7|NDLS{&c>bFX!6p;d(AXgthK9?>WZ!)m+W9n66zuKiu&5zC1px zaX6Pu;q?^BYBpqwSIUyTKHbyDjo$D(fB*hHpH4^jY?Iq_31FliqBP?>FOBCpZc<9c z24A&;!b(NO1Fb$G;d02R+n;@HydP179l**50WQKKD%6vN0F*{*=+Ja`tD)P2;1T6p zLPkz%^=)%Y41E*&2eIFV2M4$>xtz8>br7JSg!p|W8SPjf&K~^0i5y>Mu*$&h?CgUI zl8uaxuyGs#ehsz3e#^-plXbh+3-*|xGr6g{{qXVQy=cKv_E*oI6WpWj7-_385UXFr z7q|p7MEE%#nqH%a|DN#ocBz;!qBqF-DLtQ2RAyBCWbZ|2MZwDjr3zx+TvBIR+OY@M zfDQOE$ZjHcl9d*H(Tg@PpY$!}X6p)_=adwdAO=G&E{QkJr$h; L(HPA2|We;=xGCV|Jl?)c?v8RfP z#z~%HJ6PVnzM>B9E|d&H=dE-9`1`G=hQvIOw0w>A>Iyfl%74m+1aHNt`*ssFhc7IF zfUZ4jdS4Si8ZQ~qGqU#hGE4NjI
R=0GJpba=8q@7yNEAmij0TR z39FRk>JXYV;%O-ej0MrRHa(oeRhO!K#dp}byv-W=FfY6cU2clw2Mx87P4n9k{MpD! zQNv6xMk0=A-0UBr_3p+p8t=(&V^mZU<%)~1%JWQQMME>t?qXqKJu!TN%c(fj&B zWneY6%zBs~11+1DllG!BvO~n*Uob<7+?Ut8s350trdr#|$jC8USy)*3EkA#Il^z)Y z;f#8XG>paWPK6+9R4dj!G%29N*E~jIN$UQ ;P*N8aNsc>-zMC!^4p~9!No3>5qc-sSnQ{$7&U9-_`GvMw(W`g)tO?O=JmW9 z7Kzx!>gPpJVz-KYPGojwD76st5@_5#Tn!3B>XhiDV2bZGPDn_odOsZF60@Rg%T}Ow zI$LAkCd (yrXSs_`qM#(bmz{*4A=3i{9;OrbPcb zemMJ#FQUphe4EQDJ*B&=E1B0*Fin2V;o{8JU@#;mCT6uyPkzZrFmFlup(omb_a;6D z27j9TxA-`er%Y|Xb1ot-mpZY9`O{*;UtnIY^vb31hKw~XDBF_ox}1UhW+}=L)e%)q zO)cf-zPwwQSU5>KT?y1e-NvoJR|8{~lkO*5{$72*f4cze2=2B&aq7f6#Eiu;YX#}c zI*6zQ&t6ISOH=7Jxpt3y=fpQKR9?ysC*9sou%0eEKQ`xnHc_rt3>;9#Y=EB!kJpvD zu!|qa+|{~c3N 2Y$=^4|FKcIn0;&HXT%d^7W1*K zPNgg`IvxF<-=54jIfFg<_H-73g)<{3XAP9z#k!5sGBTAVB{sH>ux}(4G4Lue(9;)c zjrV;qtWXf=F(xZ1D2V%Q7@U !PKVQ-Js-6fu+&kCLl8` z@AK<-za&`Eaws)H(KlLw0wn?G{pSk5fulAXpD&dB7w2c WELZ%H?)=2)#@%cbdjCPDoXhU1wGxpxHVCt(=_mS@ggQF>Skv9!A&>6B3Opr zbH?6ntS-pQW75$O&`ql-C@4vN#-}G7^Aay)v=;S-<4bh>^5!K`rH;zzh;m%d*RMn1 zew)4Aj8T;;K%*}b%|$b78G1cB!ko>_8iLGZKZLEg&^Ypg)%uzP3@bwm-18pkiUrt4 zFPirQJ2(a^J{=RX*K(*8pQweTrlwBUIU)CK V?jwpk nZpRfmf?L73S6)QOHgl1;m*)jKRcIm-emV_q%M+vd)UwHWav#9? z05E8gMqStw42rGI@wpoNl~2-~2sep$5bwwcCt;giDOe&6V95PI<)lXVkR{3iMys!b zcRF@u*s^jkZuV+u_xEiLL_@WkthUFCSs7v$S6A7+rv9|}KK#_9r4Wg}JA1l4c?pd6 zy<&WP{N0I4`=gu)R(k!Ugaj^VHl<=HDeIK4Qxg7`FxNuRh7{bpDyunTK zy+3cmLC9WkYrgUs6bGLq8>3JA`4AD&iJmdl`Y>u;?=KFt_zDW<`C^(rkwVhji8fa& zmQG<~ee*_R4jrr|c#N9W9)A^c9scmT*fcp8lQcH=`=5dm!**k&Gfn8Bki-2u1H#;O zKirSwjIsP_-w9n)Tw~uMFpa>u^Pwl#{+Mh}{PB13U!pe8yw5n$gcEw5%;vx6=5`K^ z(9ypL3Jnbn0l!QL_9sknKWVB2aAtn{_Rmm+kMHmAkKlPj$7Dwa=sTzrwKO#0zv!44 zzW~30fB<77Prc+kDjekY-+$uT-x=*?#$fPg3{Fi=A0MOsnV4{Ob?xlz1iccCL S#sP&_@oE(r?l$6K^8RLR{P*X!=bA25~HJ}D5si_g`-PIHowX)Pdf|!CC zI}(KcadD;*J|r?SGKh#`T3VBzdwTXtN}x23B>VobGG+Njxoc4JmlG(5v@|ln`lF-y zdZO+(C6AET11>ZqBXoy9lDMly>IJR8i2mI>b8`2|Im}XsU!Xl{9JDcHY9^a7#z<+r7VNHsA*SUyt82w6y>I=R0?P{=WnfJo?}Niho7m!+-yVJ9n7S?-BjakNDz> zG50^8eCY9oyXe0kh9v)GL;laF&kq0Zulnx`^Z#}MGscb{6S@cLx&I%j0geyI|M|K9 z^Vqu#1Le)p`Zx*Fe}Cx?KXJ>W|83C!&HaDhy8m@){_leP|8iO6#Gxnxm7p}7I=Fsd zcM$4H_dhGr)T0c4ZeYkb-`te#|BQz~iYR?SOYlt-WBPx-^#e-y+=o)a|M~pOHYO1T z7E=2E`IS3?Y+6;N=>I#GLME!`0f(uBn*r&+e8~SizR|=Z*)#{2{P*W~zMTIbyAi+4 z|35dNoKVmIdcmd-9BRu-BWxw!zt`5*HZr0-A=EEbujS-?Q}YH1Dd>N_IcJXl>IMT< zq=LNs?`69nwUgajQZ22^(3II9mXnz`PHGH#V4S` _MbnW+d927H!ru^) J(i<88f{r&wv)*G?7GIOziYYghZG`2t~)!N$X?=6)*EJ2|tAmGDM2jU?BO^u9< zP(35Qh*R9KrB#@kn&RN#M8(D$Fo~ qhIP_m%924_;xOiw!)t^5mNawxJLSQ*N!-GO)zdO?a&4bxi>)k(PMp8*hi91sb z?r;eodXk@Q-0op-?(Fbd&uG*7f7Dlpc7ihSaMG_ pR0_I9~(wIVgK4<@s|uMgm}Fv-`?If zyV#ztJ7v(Vr?BB}4Mb&SWj11pizbp)R#ujmAMk&Sj}TA}e6yNHe86>2VM0~0c7x>A zaGm?<-TRm06}Hk2J>bL>zLC_?neOf$ZfOyKR!T<25#Gb+t kmC@0-7g>sm ziqA9B8T1;ze);mut_lElgO1OTnxLwv`14f(3_ZKslOUe^{yi&rs?oE~$@Ai9Y;ZI> zV<9})_5A#Fm#^CO&{$#6T2bRSC$xV&JUsXBd-Cu!q^BaDU{n zPJB^bdT`(u*IRsv_$=)}9xV-x2nh-ya`K11$tjGgq(2!AtgW*%Gj$XduVBeb8<+mI z80iGS?Yx`hmshybIEFaIS9sdRFDFl`t~PETl-a$58C)b&9#DHWs|g|!lAB54FB)`s z!B)beqE^#Cc)$^fiM~?xV$;iL@IhO4aj`Y{rS<=G$1(yuuu=9{S3JGq$i2VG-@pAM z!XfL(=xY?fG8gP>F1XRq(9FjQWF#ao{|I!15ogIH1q%`qp#_HMYeJv;?c0u(72@sr zD##u0O#*bGIT5_}4%;PDquiL7v%-3~meseV`PEh{BBm|&N1sM7`b#nN6F=D`PT9m) z0 3QKe|W6OZtukC}cX+T-(#mYo zx3aVZ(KT$9YYzkTb?Tgs500cIWTMw&%pDw#N*6mSD=Lcgn)bVAj!rooQGL3Xcm9@l z^!9G=FH$!xtKCw63Bv9+WcoWX@gzW}-sJ@y9m-{BTtY$y=?N*vpX$NT+1!H5Xc26T zl!k`sHYDr;W^dyAMBE}Gqe|#YOG_*L3HfP7y6Va YgVdwR{@i-q^{`6ZMr4{tHRA3}1%w)CP7^$zna^9WUZ;GwuB)O$8 z&f##}i2Ch2Ps%x1X+B=0!%0X;7;>vI;*$2Xsmj{d*Vo^h5EobG%EHu?!>9{~DF_Fj zw8{I{XKl^&q3>WuptCnADI#Lv`QeJy93gd?!@Ax4@5e2F|GJL+#>9<|?oYYA+0!50 z^9>3Q_dZ*T*wb5HL1z2BytFh{pkdkmSkuVFBrw2VM69Fj*Dnk`j5MX}Fr{qiU$3@? zv*og7Q-VT5G8A)HjE$LZzvXtmE7Y#E8!Pw=w@TXy9o}OR_62OLldZqlgoKdQ0cPrK z*`$KJ^je76&?sNs(-Wj`sF!zG9NioT`&Lg+4{Xh_MNa<4BnK;6woK9w&yKKfeGg3s zG(U(c5wMtksj6a+77PjtLPAHElNOhjl+7Am=j60tOPKySXxp}@KV9qe#%(JuWmano z{o!4-X9&Q+=?SY)A7he|dhgBg4NX&H*c`4D{^EVGr^C < z2VcMbv)lgpbddH<; Seofy zzT7<7=Hlb2C-X(j&B+1lL@^l|K#IG=+2P4WR`ma>5S6vMUrI_!@ovb3Gw-`L8>XPB zgxETZzf3G7WRPyq6JJh*W-`$1)7RGrGqJE_Qd`>u7Oq?ZCqg(vy<2or()D6sd!V&n zU|`6hK2UO;j>y4Q^ gNa=0Alje6fU$mz-! zfrcdzy$O-y;$&MWQ(jV13gQhE)YU(w$G|(ZXv5JROFud^WM}K-b$r1(5hwio{OA;d zXecNQSNn8KJ@kO*JKki6Isqn?#rgHLtgM*GNb tPMm6YSL&p6C-)q7?-X--AS^V!zeYz#r7v2IxGm#S z-VoDWU62wGxO*+Hs!Dr&sMIZ%f7|En7D-F9Kw1dpB0KU6Va`beUJ#mG`mlJWB4N&0 z 8zd(PfAJ&oAL*S3yz$OjEEA&*4Bez{hUKl^-phV!KHk@Rdbsqo6z{Ky$h wBaJ*99MevNWWex$7I*tH}kZLH;5xk5a|Zt!>eUCMJ+&aB5u-v*z|w(Y1tj zu <<-{4sQIMxRt{xt%iCAdy*=`7Tt3=lFLHBf(gG?gS@)mEOYi(CC2zdm zWT&YWaJjwlq_uW0j?rxk!NXe-4F~|oxyO ;+_YwJsl0V7 bALs#dICA+&|4}{7|IgM5Dg4^^{ zO(2y{hwtpyj0}U~WFC+)v9Pcl92~w&H{eA?n69=}N~Iv?u=$XmZ?2#)_>I-Y>^g;s zg#{vFOsuT>#>Ql& E-yl%Fq@*+of3A>7e6Rqx8o zu(R5E1)7;y2Az*h)0LaTdn9RtrjP^jqqOuj8&g+rZ)k8>Baj4vN{h5#AvWUv!y|TP zX3*jk0sI80*XPgmF8j|TYUF#As0UAJQmtnjb#;>=Wajdev^fyL&Gj3LITbY{DKYW& z`Qa*vheNaxBBiNLcSgJa{_SiVi4y*K=;a?Mrd{t4(KINO@uE<-fuOadJGK~V5DL-2 zY}bUQfPnr~wXMIu2rn-$3CT|Gi(K$zZ~Q6s&Cbrw4MK|S>;ZCMbJzRk%C#atjF`*C z)fM13+Tr#1r%zM(ym>uW3iyAXw};^6n&%)QAS7`*e!F#~iX3e6_7)QpV@uF!pBIKd zh>A|vIm;PZy~4*|)#Y&~ctVhqmy?y1DIzNBb#tZhmcfBuk7s6V|KRB0h>4YXbZA6c zMha5-+|Cc8o0^)MjiHaT`den?rg?Ef%(Z1 +8f^rtL2>D{_2+JD38hp_I<;8@wQ3^yEkZl~Muo*p{hM0E z*C>;isfgYVtU@J6Ov7W|sa^t?1(X zd{mJo%>e9)37`~)>jWg1ILuJuYt!zhAY%3l*SO+RrU=^L!U|g2o}QkWnHd>TRuQ3O zV_;yRI9kq+Z7aN9Opd-h**1rF;@vyJv@hg8$pr;lNqF2S4ivOOo|Ub~$866WY22Gv zJq1q{&{=RfBN={FR#MU`Gkl%LG1GXhU%=rn__yLcd4N7#${O!m-rMP;mEHvSP9PHg zb`Q7q^hhfxyr$>5{#y +C=hl3uAiiriXGw`>ayTYQp?=|5#Ix;fAfdIWQ%Mm%#b3vC&h_^DKrpB?I zYkD@?6gt=3R$_6EERALA@`>Yed@z>;2@8*bL#!BLre5uNPO@3H^>7SVS?i&+e*F0H z-Me=pqV{c9CD1BAj}V7O`! |QM8?=St0*iCBxw7=pg;Lo?;*1; z)#!2l)3|)_H>Pj`yH7;bwU|$6d0CmFqLSku3#pe KQ_U)K7VSXtM{P#L9Bj*j=; z-Z0V9taTSoR>9zK#%}N6@Py6cNq|0FrPoYMM<*w2tgi>h#`^mE(UDMj91ljSXu?&( zNqBms!FW<(cW4KDG)x8b@*%wm>}oLkLr>hF%tHuwNm5~9M1;b74Glx#wvbrH6drfo zDy~{G&HDR@Xr{xpjuzTeaC>+YY)MJTOvC=UAQEES7uP6A b*G(0X&oT!lvnx& y5Lr-Z3bwY)^ZR a-u_{ZeeK&VuC|paqC?oZo?Gi<>PqVW9kwJ z_k-bS!v{#~ !nzgScICODy+4@tXWQb<( zrA&)U+yr;w?WP5r`}z>&g`3-2$_96ztSl?#>Cf@Hr)((gD}cSLC=5zRI9};?ytTfyRAIPY7KBYz zVK(~pRt+{pJ4gEj9(P$1y#N9sa-knTKpOe*_68c@@d6DIrHh!KNs=One}CvC$RzxD zwDj+SswRw$2DN;`{*z}UWp2I+TP4Qy1gqyU7+kTbW!L`P^)?lA_+vrLR;SV(b4tq1 z;db=oR_Jj^JJ-Cl@hq?B-hAUMrwJ5)P6yN3bpJ(&LEUGh%Z9PhcJbkTPfwrjN})is zz;L1(=i=IEJ?tYV2#baIRkP8uO#Xfp#u*ko)T!m!n(XY3ooV;`_wJoJXBHPXIdr~b zO9;Km%}d|dT3Q-OZwCx!tzzKp;JLZ^B0|LP`D!{;RG)m!rJ%y=-`*Pg?UT$2w;v=Z zur8>RWQ( lTFXsWKO3ky`%qZ~)lavND91pl@55a``=U&XhvwRKQ%I#J|#e*XL! zB8&W$XwySFdPbBDD{wH&3$VvvB!j3=42ebMIO%LW`b5nN8+*s;65GgTTvHQsF7p$* zC=@Im>$UPflasrD%VXml__JSTIPcERW}C+{T#f5$ntf9W!E>vvUG2N3#`wH y|s-s6hh9Ct}Zhk#$S?K zF&~O6)3Rbt=-*TNwybryZ$OX}|Mp$9n{x-)#Uz7+S$V!-BN4N(YS1);2PQ#t2sw3# z^~Gz2)G<+Cf-*0*pXpZe{4jzeOXKFQ@41k&)n%dQcfPxJkkAC|h6QUWV4z2sQ|Bq} zIv=s@N6Bn7;)%uC--VNHz2a1n2qaq(|CF^m_*g-H#?KCl)e6(ne7rDf#>fcX{xoC? zLJ#>-oR^1HvtSL|D_R2mfL%_Iuyah6^C`dy8Ms<`n?@wg&Q(cuPKSCiD4h4F@7+g4 zS^Ha#sPH@EpaX8tmXH20Spn!p>6HoVYb4!Y=x}9|-QwzKJum?cJ!@&zd3&P$OiLLO z4AF42si>$r!c(3#BJA&)=2p45+NSf0w6_zoTP^hawsvzH0U`%IWBaDY=jXIc-nY*E z$$Zw6S)nm8c>5#rfvSESBF^gSaT4Xm06*ksjze#AcAF@e=CD5DFOUt%s2|RRkBiaT z-v4K#G!P9J-R`b)-ktW|1OKdsm{_(}73`Ca_V)IGJ^leOXrp8@hF(kd2_H#oN%QG$ zv3AYZxHv;2qtQ|WM0T}t7(6qxviACa5%IX;)RyuA9084VT-*~jtvUz*+Mf7vy-wKR zxrt8@%&vz=7Z)D tbXYRRfMyFsT46H88IY(%^(fS&^c@(fj7Lqld0 zBQF541tR<@msNe-Jee1a8v6?(Yx|2k4er)6XP~-+^?ZD~Z@Z$hbdQ^R3Vu4o$N?|D z&TR6|VDSk`089bZwu?s&j`$35e9ki-wz5gzXANX3Tz2?e_7>W^KYvC6Brch!z7QfJ zEiI{KzEvA^$i9<8_6KAH3p%EuvZ2KeIghhF1*lJd|K@solX~(rP)gxJ^jQr5VwTM2 zSTs>zWVT#JM#jsRFT1-M5eK1Pn5eXLKc1*;ZaxK-Za~08Uqn JVf0-C~XJ%*l0CuI!tSx>Et!_>kKn=gjSNk6$BNGu5gEY*@(6rig{v)g+EL`r3 z8HGql*w$jyYmk -l3mEJE}5?}3Pr7SQFTWIg^< zx;Q^S@8(tu#i7Cd*v{UOn9I1rCU>Y(Dz^U0Lr-tEt&IZ5$>Ze86;l4AqM~5)KRUf7 zQ}|ei=#>twpP9G3gPq+sE)%q_Lih8oQCR2?edjkem>hm%fS6!3UzI_(EQ&_3y-7&q zYel10qeX5_jVo>}G!U81&CO8GA3qL(SP=ENg#H9BlkPFe=j?uYc^d(!o6$J9kC7h( z4tvddX0G8{la#c*rjWrhGCE$YSNFE%`SUUZL&FNUV_K&8#K;8qi;;E4mKM-UjEy+~ z?gy4@^YH=**VNrUC-Ca(#%A>YcYkb*Zo=;*C(kG~=vXWH>r&C(xqf|ls-dB=7JRTX zLoAb_USsB{s)~o%#6Ux{cj`S3mHcp(?}%?4Cfl6gZpujU=P5enjmK5yW@f=e3oVfR zLOdPt6B7gHNjmcyv$1qlMa9U_NKaQ+FfdO5BV0$;rzYaJx3@!AVlkQ*&0wAQ781lE z%{5ah_8gy`(%38~=am8}3Lo-QZ(2Z*loS-mx O78+oJ=(d9BlSUUt4znqo$Jx}cCCqi!w5p0rk^ z&wWJNVN(@t2Jb+h08z&$ER1r(&G(X!k^R#Pq=kg66cTe%Q~3>TvOiUY{-*Z03y8>c zt)s~CTXpq6%P-Y{cG94W$ uSMeyo)A-zf2niVbiye@8s`eJmAOw#d+$gfi+{f#O zs|RIF=7gIqzKG^I`KMch g)#&8bwN(5%i#+BO$4I@r{}?v#MQMc5!&h; z-z~3~wvHGKg|#}9KcJ1MwOf`<(!yN8nFgIZD2mMn)BR&(-+pKv8;fb#6quK5(dyse z?+HMDz|qVon5oF+_;d9xulvc>z9 z#wWZUFb~=~J1=^Fv2k*OMX_jCBOEaf<{sei7-H+}mTA+SDPO&^fppr*A68_Moe;lZ z>QE|N&&`91in6D$xq4IQkn7fdc64+ETlQ@d*GumHe~}kwiIWu-D*5B7k$S4CPP;Rn zKw1oDh(b2u>-f)CS07W7IfEKICWzm-Mg3lnhF1geTOQ|3Tv}QHma!$sR2bJc)Db=< zP_?ZANj6m$5m-jEGBY8cL=WEM;bEa_&mV@JLo_qYX(hh5SC@PGj<-%=JQ^=1yFA$u zNFux0ok@G0nd41I!Q!y^3pEB0uc)X 7eLhdKzLAlC@*bp-Ic+!`^B*yCL#iQ| zI;*UvH%^i!?+up^iq!4yHYtRVfu)^=&f>Hv36!2d%{{wE1Z)-q14BJYo)*9+LX3^x zw`43V7PmJ|@hDk!bqO4I(R`|eK*b5G@U#A(eQav$sT|!#(9ve=H9pv#s!7Tc-W<+8 zO%ob5lHD9D1f+ipa0mt+QAS8*yuM&v8fdyr{h@OollMSR!$bc`faqNcZ^Gj*iC^go zv9@M~0=+mNW}~%-oUy;4y$?aC#Kc4ZL?iI3-5=$BeqB+3-3iC72&Tcw8PJEPcYKCD z_w39CEs)vc&nq~{053#@#j+!mF#j22N^)`|V9pg?Pk7n5D53<@j`mKhCX1%eALIL9 z&LjK^5fK)q$o>v3F0fDgh#XKI23(%blE(UB@IweADq*m`y0*tv-l+M&umSkKJUl#% zjmHX_j3J39;oCRS1J$uFYiPI<=@)&yy{LuR_H)g5-z~>}_|QBzS4=oo%*@8NGnC1U zIk&gJp8Y*XT~V{vY}D*sX%EB$iHV3<&eX?uzWs4@Q0sKf>E_w9rr_d0PHnPYw%n%w zJu3^~eXBnuVV!ToNO;UzA9{Ru^SnCTZ35PlpAV+hIizv)tyP|YH}D1}x6Y@&q tcZ}hk}vCVrJOs53}bTW9|JzIgvCc>*)PICU%8IESJp`61aPhVKLM9<^% z=f{$N_X?9hy2ZGhhlhJ-rq20j?R8L?#vR%QfXW6Jm>v i99Y0 z*MC@wgJZh~Gn2(swZu{)8dYS=yZ2q)-R$PZ7S`6`@2Wv#y-GTfo2S{JT=<&?>GfY9 z0h83PVluesy-_0=iUN}%+KZ|m&YbbSReVBJY4Z46qEGG?0?a)CNoQw%aHL0RWhG>5 zU{?WN_}X@J%yMmMF|_Cl29QDySa3z~=rup*<-ur|lVkekO^ui5 wR(0enoX*@=M!Tp_?r0(UJ#mAMfb&EX42j$_f zU+vRP-h5nK9d+*PK)bCEXJN&TWy_^VbxUehnn^t1ps*DAr02lrzB8E)D9Nv1KwjO_ z;mXNz>qu$3aoWm^HF08;r`?kf^}zvkZ_*ok%_Z-!uu%iyT;&aD@Y${Z+MOiM6|98U z-!%YV*n+S>g2Vcdh>#9Em1G|0uqKoR8x9yI1H<{5UzL>P6uqi-SpWR1DT&up^zG;U z_K?xSZO+Kp*wgiKbZc>hhsb`1QV>;qfG47)qOd(yXim@7+0`Z3o#1*
G7xxN`hqn*byn+$xAdnZg3BrM2Gaea05Ao&mcUp}KAdv@>5 z_k#NRtbgQfxR*9^QAI`6lOn(*k9}EwF53yYy!iu!l9{z2rqICfkk==Z#Rj6-V!-4> zytR2I)aTsh7Chr(t!L_w`)+l%cUfItc?kkS;kSAx<&FIh0N;h5qdxsyCHQ~{Ht;4D zkbgey%I~bGY%-|=fr|3XVm|-d#_H;`k=$Vj|9_rb>%9TR?_TH}l->x5@4)nNIeUq# z!e$aCO6#;X;1egXINiW?^ZM|xSm!dWvTfNe++(v9pE^tx@u%2~LvXQM%-aQFb_#mk z4X4Q95&p_>oHUd2pXtw^TVq0dUY@`XS#Pc(Ejh`ehGu39D;vS5p3~K2B>@+($LCdR zgZ8^nUT+FO@N-D=B|u+W2o~!P!k?a=23I4reY4?_JqR2e9C0k>0julP9{x?%MB8kE z 7$+k4%+V7 Moru#g91p>aJ< zGONggM-6T#Q5lMdj}H)-Soat|g_Mz9Ip16XNOp5Gdz-xPMvk+z3@r1{rYm|(b#`|4 z@Xx^$b=I@rJC*S0wEb$$K8Jo@>1_{`L`vYWT{yASVz*M~v;Fzt=xvi5U?b1~jU<1! zP6#UJc^z3q1-;(P%yc|T{TYw#!gqeBAXpZuI6BveNBDiXZor-RbP?#Z()fJhf5yvk z_VU7~cdW=0N#9{OEwUf1*D32%^jIp_E_N?bL;D2;t`xpPvkAL|sHi9?T^4Sx5us_S z^SUo*A98S)92%;$H2tf?kCgwlMO ilu`i$T~$?XZe=Z(Jv_K3074q- zRXo!cws#QKXzGLYbl$E8;rtwhGs*jF$r%dDp3>1u ~~_I?5U`;X0m8}MKW$yUO9xy9>YFXr*F zCmA=!zh$ nS zB60g&Me%1mZE|s;7vW2bI;dx{IBU;%##mfb6z0}^ yiyrc}G(z9f@% z_VpbSRpCOW6??8Ys`8~cu;DI&C)+A b+{cq^uPZ!D?y*|L@x1ex>|{p~KKXoji?8x3HcbDT1?Z6ISW|`mhP)g~)zyqNEz- zTiA4`=5{+W{WCyTFK{=jt@kB;?)};b?qBT5H^nHN|E!+PhR }&YHU>r9K1)0hHUeYs=R}EtiaZ1; ^PS={P`5iA{V9b5AXq3VXJIedIO|KQgZQDH(eiB2)WPx|Y<>;dfy-T^@yuD9 zC4Yg~nrU!HH#7eW+0rSzp?~!0#RM}3Ih|WF@}Zx>h~I|{UA6W1>p*vfr*M;9kb%Bv z0~%DDmU~P=EXF-+qtKp@2j!n$2cknHfY_u7EF}?<=$Pn}(|t(Ox3IEiObq4X TAl2>1+Pz`Rc;?#YK8eB1Gb|W`4?J4$AXVwmzuxf>3TZm&FDI zu`m)!rlj1wg~;v)R4Q=H4#*PHDXHGS6ue5WD=641oSg(qnVYMtZjBqRrGcf9|BCK@ zIAVc`<1;TII2NPnV-kJx&-Sp`$frieqJ^O_t+(iXZ2Dy8`a97-WN+%{Pe0O`t?g}2 zhqY$oauAmJwmg%lE=#?0f98XU0eOa_d44{!m#J(nmGx`p=jBoSvmq6!h}03JPbDO! zhlWQf%Qi>b`unXH+JcY|4t92|*8cVn0ue4ynqH<@-Tv$Czb?VT+`M~eKz>|4He A@p;f=kU zT-xXyi~5<1LX3Ra>j?TSO$_gs^^XMMJi=nLT|^04Szhn?pK}5(cF?_UhXw_m@9k%R zSSRAX1dO^y29^NgzIN (z7H z8sYG^)BY;w+1c(G`cZi`y*gt@H@Axpxs uYzY;wrTMH$c$Mv8MNX3?xH22eg{4oj= zswe5$O=wDrjjkL^2V!f9$m1rHuyi5pIn$6A6&tN4N?puJt3Jv8ddDG`f-WMvfMHZ5U6t|1B z=#+%m?i8;0F9``+%Gw3e8JMRE)1P`wdX_ysQ5)Qh%*-}&hqJ{(iE;}wD@{&|9A+v5 zX?vlzm=eS`b7oxqLp~Wbg)`;%-hXvJ4LZZow$j$F-}}lA35~Z&O|M*sgdh6q8yE=n zkbG5!*!jI#yP7G$AzWNsOv}_kC;-%@o*oRV_}tV+A$Zhbq*Bt7aJZ1sz 4X0MtW#x@Udmale0%aAr5|&10Y|$n4FEn%-r&kHA7e4gt!o8<(}%a?)kjbc2?uJ$2z_Fj){q7Fn=fB+th zrc!t*IFx?*_iz (ibz5%3 z!<*at^r~%ct`MY+qobns*iFp@vtJf#m)=9Y1<16kyZ>M2IoQ$n>uU$E$EfwXzv&7) zdEz~8Dn2mlB~US$n2kv&dhuFIm5uj>W{CAvqj-BeC2W}HKzYSxQzP4?zOmSyZNh)j z@UN}1UHp~yOB>!rD_s)W?hOxKRu=V2!$~|ORNZZm^q9HBPGo3ksI07-mz$g3Y$@as z?)V`<8k^^B+vH%BDQg3HG~;&6fPG!6rfOkv_Teg{uviBQ3HPIZ%--SI4r(5r>%m28 zu#nDMhX6@HuU`GTBU^7(HtC52XX8YEtci%xGR$NBiEmyKm8^=<#V|1CbKj~IW@fgN z&gEnx(aeD!5Ck^_OfDsmXAu*l8Vi-cVMiN;6~Fp-mpYXyD-zDrT6&)2U*%sf=rgID ziQQXW33drKm4{aOdvNhZ)Z5HTr{nP&m)uDi&B%Zp&+ngF=PjlxYJe#NNwtcS5;P{W zz`z2!41q0b#X75c$3ltbqF3u|jg5_Cs;YpMDAQJ!l?{!KhDuYdF0YQWu!Mgg$UT3z zR2s8}R_GshO#FI`|Lu(|eac5Q`)iLqG+K&sa~iV2(2W1wYHcH$^6V9x Zxydw#sU1dZl& 7C_AafRi;eUI(O2PT8 z?Vwhwb6Wp6)*=G>br5`tp^(nhNKw}^P4nxebT5mFifm7wI>$03L5{S!YYaeGn}0J9 z3A9z+@f0Jju4dBp@i{qb?|I_>G_nRAxUzCoQlaH`#whaR#~|M>fo&&=>qmZWZYbzX zmaEzY9wX;%syggGdPY@*6;XL_MqHF7Fh6VCzNyz4IHKg{M`#t|*--Rqjm!$18>elr zB6TwnmYZ;bx|dg$SIX4s-fcwUNGKm?+(GnSjSNLi{-c%ZtR0G9fSIE! ^#6>pk`u@dkh;9*De&*+p{EQ7tzM6ds=DTSkCM$=Fu9v&JKbUS=r%mz>9LVHMW zPmiSJzQ-9LP!LM1S!Kp*(zjK+{iC2j8>$bqm9w+A`R@szYsRO<%Bf`ypN+*wK0kUC z>J~4Iwj&ZM>$8_94lUCUv%f=)uJ)WdHQ&GE6bk)H`S`@BB!&Au93X>+g2L@R|J?h- z`mU$DV^ijX$VaaQ6TDwEPM{L9;mG(lIbC0Xi2c)zC@X6vc_2FLz^OW-DVg*_XQHVW zF^?O{u~Lw-;&asvyZTCHO8+ o$|EC_z_IG-{g^K7cerWhXcYJ7mW1aox$h{ZqmvL4*12}$ zfgTs+YM>-B!8duBG?Qx}=I-wPPPpQGS9g9>7c^0T=jXp?X4#6YzB3^I(JhZBJIDf8 zZ-~C-yJEfgK2`L)ZStvg3VIk6s;p)kJy*kmf+Rxl!hroZ=6<}=U+1 K)V$ zNp62NhavabEJ3V!7h0ypU!h7_gFwXGyLXSrWiz`T2$}4~JY<*o`xD{j#^bkWg+XV> zIxSV*(uoG$w 3>F(#`=Mz4CN=ZeP&guCZ z!{bE8Li+RX!I$82I6p7~LHe7T8c-@@zj>7D1W+^7jbP;9iLXmfF-bS%paLiZg#UFA zB(F+wFUDfZq2zzX|=l+6G3U33PI#;CI0OZ%Nccnmd>o&Tnta^@Rr`@|7 z_E6u%yiRqbIztnMgvE3(70~OV3m)TwM*#nc<|FOQde7m`F6+vH6b)j8_mPkQ c*pW#2ST!SV}z5eFGf;(Aq<{~y0 z@8Pnc8E~ybJBKv1v}mMk1)wPvLkxuG6q!OrL{1Vml#8?d;nKwpdOA8hhBz39cwG;K zA=>ua!$ZItqoQM9{_Y+hk@$Ep866daT-^687g9b(0;nQ8|JnGNjLLq*j17 NN#G2$nWS9D^d0wP4-1+6%etM-mQ!W5QP#3_Rq%t@H9UILFrc z24f%j@Q382etZ|c>N0t6`bj%g7=*zxEYGYkB7_!
(WXSmdA%yw$ zDdAJN|9~vebs1Ip2)elXdTmwJA2$2Xsj0J{g`+>su_qy-ip