From 8235b2f0cb0b79275fa29b336afb3d332d9ed4ff Mon Sep 17 00:00:00 2001 From: Lotte Verheyden <48100308+Lotte-Verheyden@users.noreply.github.com> Date: Thu, 26 Mar 2026 17:31:48 -0700 Subject: [PATCH 1/2] docs: add Restate integration guide --- content/integrations/frameworks/meta.json | 1 + content/integrations/frameworks/restate.mdx | 151 ++++++++++++++++++++ public/images/integrations/restate_icon.png | Bin 0 -> 1544 bytes 3 files changed, 152 insertions(+) create mode 100644 content/integrations/frameworks/restate.mdx create mode 100644 public/images/integrations/restate_icon.png diff --git a/content/integrations/frameworks/meta.json b/content/integrations/frameworks/meta.json index d4480b0d9..bdca0b984 100644 --- a/content/integrations/frameworks/meta.json +++ b/content/integrations/frameworks/meta.json @@ -28,6 +28,7 @@ "pydantic-ai", "quarkus-langchain4j", "ragas", + "restate", "semantic-kernel", "smolagents", "spring-ai", diff --git a/content/integrations/frameworks/restate.mdx b/content/integrations/frameworks/restate.mdx new file mode 100644 index 000000000..da15ca614 --- /dev/null +++ b/content/integrations/frameworks/restate.mdx @@ -0,0 +1,151 @@ +--- +title: Trace Restate Workflows with Langfuse +sidebarTitle: Restate +logo: /images/integrations/restate_icon.png +description: Learn how to use Langfuse to monitor and evaluate resilient Restate agentic workflows via OpenTelemetry +category: Integrations +--- + +# Trace Restate Workflows with Langfuse + +This guide shows how to integrate Langfuse into your [Restate](https://restate.dev/) agentic workflows for full observability — LLM calls, tool invocations, and durable workflow steps — all in a single unified trace. + +> **What is Restate?** [Restate](https://restate.dev/) is a durable execution platform that makes agents and workflows resumable and resilient. Every non-deterministic action (LLM calls, tool API calls, MCP calls) is persisted in a durable journal. On failure, Restate replays the journal and resumes where it left off — with automatic retries, recovery, and idempotent execution. + +> **What is Langfuse?** [Langfuse](https://langfuse.com/) is an open-source observability platform for AI agents. It helps you monitor LLM calls, tool usage, cost, latency, and run automated evaluations. + +## Versioning + +Restate's [versioning model](https://docs.restate.dev/operate/versioning) ensures that new deployments route new requests to the latest version, while ongoing executions continue on the version they started with. This means each Langfuse trace is linked to a single immutable artifact — one code version, one prompt version, one execution history — making it straightforward to compare quality across versions and spot regressions. + +## 1. Install Dependencies + +```bash +pip install restate-sdk[serde] openai-agents langfuse openinference-instrumentation-openai-agents hypercorn +``` + +## 2. Configure Environment + +Set up your API keys. You can get Langfuse keys from [Langfuse Cloud](https://langfuse.com/cloud) or by [self-hosting Langfuse](https://langfuse.com/self-hosting). + +```bash filename=".env" +LANGFUSE_PUBLIC_KEY=pk-lf-... +LANGFUSE_SECRET_KEY=sk-lf-... +LANGFUSE_HOST=https://cloud.langfuse.com +OPENAI_API_KEY=sk-proj-... +``` + +## 3. Define the Agent + +Use [Restate's OpenAI Agents SDK integration](https://docs.restate.dev/ai/sdk-integrations/openai-agents-sdk) to make agent steps durable. `DurableRunner` persists each LLM call in Restate's journal, so failed executions resume where they left off instead of restarting from scratch. + +```python filename="agent.py" +import restate +from agents import Agent +from restate.ext.openai import restate_context, DurableRunner, durable_function_tool + +# Durable tool — executed exactly once, even across retries +@durable_function_tool +async def check_fraud_database(customer_id: str) -> dict[str, str]: + """Check the claim against the fraud database.""" + return await restate_context().run_typed( + "Query fraud DB", query_fraud_db, claim_id=customer_id + ) + +# LLM agents +parse_agent = Agent( + name="DocumentParser", + instructions="Extract the customer ID, claim amount, currency, category, and description.", + output_type=ClaimData, +) + +analysis_agent = Agent( + name="ClaimsAnalyst", + instructions="Assess whether this claim is valid and provide detailed reasoning.", + output_type=ClaimAssessment, + tools=[check_fraud_database], +) + +# Main orchestrator +claim_service = restate.Service("InsuranceClaimAgent") + +@claim_service.handler() +async def run(ctx: restate.Context, req: ClaimDocument) -> str: + # Step 1: Parse the claim document (LLM step) + parsed = await DurableRunner.run(parse_agent, req.text) + claim: ClaimData = parsed.final_output + + # Step 2: Analyze the claim (LLM step) + response = await DurableRunner.run(analysis_agent, claim.model_dump_json()) + assessment: ClaimAssessment = response.final_output + + if not assessment.valid: + return "Claim rejected" + + # Step 3: Convert currency (regular durable step, no LLM) + converted = await ctx.run_typed( + "Convert currency", convert_currency, amount=claim.amount + ) + + # Step 4: Process reimbursement (regular durable step, no LLM) + await ctx.run_typed("Reimburse", reimburse, amount=converted) + + return "Claim reimbursed" +``` + +## 4. Enable Langfuse Tracing + +Initialize the Langfuse client and set up the tracing processor. This connects the OpenAI Agents SDK spans to Restate's execution traces, so everything appears as a single unified trace in Langfuse. + +```python filename="__main__.py" +import hypercorn +import asyncio +import restate + +from langfuse import get_client +from opentelemetry import trace as trace_api +from openinference.instrumentation import OITracer, TraceConfig +from agents import set_trace_processors + +from utils.tracing import RestateTracingProcessor +from agent import claim_service + +# Initialize Langfuse (sets up the global OTel tracer provider + exporter) +langfuse = get_client() +tracer = OITracer( + trace_api.get_tracer("openinference.openai_agents"), config=TraceConfig() +) +set_trace_processors([RestateTracingProcessor(tracer)]) + +if __name__ == "__main__": + app = restate.app(services=[claim_service]) + + conf = hypercorn.Config() + conf.bind = ["0.0.0.0:9080"] + asyncio.run(hypercorn.asyncio.serve(app, conf)) +``` + +The `RestateTracingProcessor` (available in [Restate's example repo](https://github.com/restatedev/ai-examples/blob/main/openai-agents/examples/langfuse/utils/tracing.py)) flattens the OpenAI Agents SDK spans under Restate's parent span, so the trace hierarchy in Langfuse mirrors the actual execution flow. + +Restate also exports its own execution traces (workflow steps, retries, recovery) as OpenTelemetry spans. By pointing Restate's tracing endpoint at Langfuse, both agentic and workflow spans appear in the same trace. + +## 5. View Traces in Langfuse + +After running the workflow, the trace in Langfuse shows both the agentic steps and the workflow steps. For LLM calls, you can inspect inputs, prompts, model configuration, and outputs. + +## Prompt Management with Restate + +You can use [Langfuse Prompt Management](/docs/prompt-management/overview) with Restate. Each prompt fetch becomes a durable step — retries reuse the same prompt, while new executions pick up updated versions. + +```python +from langfuse import get_client + +langfuse = get_client() + +def fetch_prompt() -> str: + prompt = langfuse.get_prompt("claim-agent", type="text") + return prompt.compile() + +# Durably journaled — same prompt is used on retries +prompt = await ctx.run_typed("Fetch prompt", fetch_prompt) +``` diff --git a/public/images/integrations/restate_icon.png b/public/images/integrations/restate_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..14b58fa9468c5a227e8829b175345ebc0d3ed53a GIT binary patch literal 1544 zcmeAS@N?(olHy`uVBq!ia0y~yU|a&i985rwk9x{Wb61z%=>;#1} z2O4vZZ}MFKyZENgzc;^jyp4NkUs<|*!?UY9-!!mnWEMKY=OJLN;5a-vdd8cp*&DVO z-=tq)(<@Tp_8i(+-6&jrcmD411uwwyJ0*tZDGF{mjZ^N(wI?Pm?d+24e|M${6zE+) zo_lag^1&YdZO@c-KTovx*eAIEPcQ3e)}?X@YR|~P@c(~+hC<(Tllf7=5}v`+)z4*} HQ$iB}KAH3% literal 0 HcmV?d00001 From 9159cc3ff5a9a715c7287f665242795e05d0ef11 Mon Sep 17 00:00:00 2001 From: Lotte Verheyden <48100308+Lotte-Verheyden@users.noreply.github.com> Date: Thu, 26 Mar 2026 17:36:50 -0700 Subject: [PATCH 2/2] docs: update Restate logo --- public/images/integrations/restate_icon.png | Bin 1544 -> 36730 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/images/integrations/restate_icon.png b/public/images/integrations/restate_icon.png index 14b58fa9468c5a227e8829b175345ebc0d3ed53a..13e06c19aed2656af1515ceef9e42cb4fdb13f21 100644 GIT binary patch literal 36730 zcmeEuQqPr_H zf2od8kQ0Z4!G-|>0)ms25K#gG0>=E0pg?|Rpe}tkegp;L^7C>PCvHTGB4*>yz<^uzP{*1u?&E+ zQA^4IFc4reB2uDa`E{An-tC=_f4xrET@R+rlBS8!nF=A=wP%^P++ux#@qhDelWp);$mo^!juqj;HY?7+8dUriAP5ilexu}fbTuh5_p49J$l zm2j>M=Tddj+7e%h7cw1-#l}MpHmVw9yBT>8QFwNiWgH#m@#0`Y=p9y%I8bQKqxoE zl{y}2Te8F|8LJ(cG(?IiFZP9z-t*^v|A5(OyE&8?R<^ORxw^ViE|ZNEu||srY6Z3J zZ@ZjLLDBhz4}Q0LMO-GN6M2wuNOm3FF7-XS&LlR7d0;h)?fh+dOAC-9X_Q`dR9`7m>tel8k1 zKwd~G#ayK#P+$eWh7xV6L>^$6INo*nRP4ern zrcq27iEn0}Mg(+dzX3(D5?5XH$_!xp*n#JsYeT26{U%J{bzI-CRe_S{62DIX%EF|{ zV{GW)t^m%Y>37(|@k`fa3ZNm`*2XHGtLmWY-~FG`V+qz{e+H~gNnzh1xK99y4WFz5JuZ^)VOcb34-KWyK1yqzWq3P>vC0 zVp_7R?+@ltr!nEhi{D6@BJFuzk-EVoArZ|p^~WK6kgBs#m?|F47ltu(iV>YimUQ5f zrtasQ2kwOc#?@ScUZwHBCMg8&-n2)KpMtB<(qtvZig7)ZZ+oRioz$!i<@_UIH61&u zDi(LK%yRA<;`~m#AC7}K&z!kX(ZMTJ28Y!F*eYDNXkp`N%@8h^h{%V^)G4T6?lMti zppne|tFkEMbxc&FR=Rc3%*zh#ME0xDRB1G?-MKQIoyUJ-{=FjTd3b!Wx3M6@vZhMw z^OV<(O3SiGLPTf1!%uUVS7^^b2IjgK3g}7bI2@7XeLs$3<@kqOR|MDf@=Vm)vru|m(QQfloN^^${;c`$i4ikgM{RiGnLV|ET8paA zy$AVquz;}iR5z8R-DyP%w+tfZWiS{tlkDSW6GQjK4L=n0noWQs64T#bEJ%S!mWrM6 zvx%AN$a8WeU8TT9d-`JZd16R`*_fV4I^MqWockZEqXO>FTv6-m8C@+$_o{jF&J?;; z&|IU~L=gp|L1om;bQWcnhC!l-60gt6#btKx3$j}5SLauf z9Bj_cZgA|wnv>~uM+%Q5k%$Yj5?;8ca@ZdpLS&2br0mwv-G7^{3(_Y|7u-3)gmbNX z|JmHQA82jgkDRfrZ{cUHP;dr&?z#>^7R(#P#3QCGIk!$JOzJD5Trn~U8co^$@-v&q zer3+vZKPRJ99Zham4m`{1pt~i7E=5+c6zNgmTN;#4+jFQm4^<$dy7|aRIZq;hpz60Ae0aqY?Efy+fg1`*dF|e4zOH#yLA#?t5h9oQHJb9Wt8O9 zOH|}Si*i+{19si+$S@2Sw3^LBq1egcGa}wy2?*i9GsBK8j{gp2mNTehsL<#jA+#}D zAf2?jx$?cACW_;GSRaJay?G<0_lMlpa{v2us`LFy`GqmFU>o^L4-fiBVe8^oB^uM? zqErkHNLXI{MC)JQ^9=+B-|UJU!|go>$c(+QlZSB2L8fM1(&`{1_qhEpBix}I9F8Rl zS9H#!eA?1DsUrY)jV2Hwi~WCJya^$12V$-j2Q&7DesyYP0z!mEW*#uYIVrsO44@3bhPQklA${p5Dk;>oo1{{fU#c z6sWCen8S#_%Stj)T>awJ}Xhoz?oPKYrsxin4^@yX(}~`GLStvynJmzdEN!*Cj0)osEwx;=Mgvo5N@8 zrhlD%;Pw3Y?_Ir5ugz6hYoi*g2^$PVup>Ine(A{6q}Yg&-+wDEh@!+1i8$FMWx{e` z@`ERouVfH+$oA@H!{~kO#{>apTz7h;*=;sqYDv;803Z=1L&p5M!Ut8KYGu7#?B!K* zwCEaV!4OCA5W>EBeG0UXPtWwf?@w!WyvXG<@uI+$DhwHi!IJ7UXgjv(v0Twy3aW>u z(_N61S7$pZnM2$OEnv^JRk4h!W(NAmLSTc$*ww>>9lq-+_Wzg<_uRi-5%iuV;plGj zuI5FGU}NKC;lisEF&M?)@7d3KXNF3P>*?wB#y@=c1O)}f@pra6dA&qqIbq{~gwL-l zia z;U-|ev7^VvOwOd4J%yVW@c4_}n#}+R?QGk&os(Z+pY5i94uUq^to;t>#H&>Q6^c5I zb0<)G^)UPS*VSV)6!V5h7K*;pBt_)LDZ?FOh4oezyR2b=!SfIWG$3sDSx=_QbrJ}J zuxqKHcG?tjBIn$=dTrWfq*D{MrGS^*zh(bDF`J@Gqn^z3^t{^_UtcfFcHfWIUJm^e zH~&XNk(O|6T#)u$Sdxx=Q9&uZXia!4#z)A0{~CdWw2mYGufb6BC}dTd&ingwYlTkN z$0xsb74E6%Epgf}2YUbPXh^jJ1rf~P>|H6DmBL@-$dZI8F`_6DD&(r(`w+d4Xf%=XHp;ByY-TjNs1RFNRy5(kIXAQIPj>xD$ye znq_8@qur<2Qx>+@68M6P4_ftV4;H{b;C|l&LnMBG`$APTG|XK&JiUwx7ig3iiu3q* ze2tVyr>$KL9K>cFJxLi%jTv|vvO$W+v2fr!>bLJc}Z@!6mwksJ3&c}0wbNw!(-snK~%Sinh3W^8!; z-X`__7*5xVTq2sU$D@!A=j#>`BZ?x7OYuRf)FGlNCPuUuyWm;(^mNGLc-nr<;qiIx z&q-Kuryzh0j*DRbC4@#T!bBp0dPIQ_3+W(Skhm=`DWS`uC;V8uqKC56 z*WVq0Bv@~?Il(f^&KpMs1%^PylCaM@5%#4N;FBt2ek!ZY?JWuzRP6!rt`-*h@pF*X zy1f21gW*|#5fzZjf{7z1v4aIWm+{UT*Fw|bcEDHPdmuShLIHH+5E9B15G!sPM)A$G z?QG7>Z6gb@2{);(B#MGYOznT+6^0U;7P=nXelCeRfyY&#k6cU9o`0XK_x1ER$+uh% zC=Oh~5dIl(x4@$#_QaA&k+c+p8-pl-&ys9V>CZ3RCTf*I14ckfFgFLnu>#ZU$iA-8 zYTI&IVJMZ)Lx<-OD;mtYC0B1k;`}(r#LP@|Ntrsf6tq9`#Zx#>Jg%x61S90R48t5x z4w0xfI%h-)(`Ba&6a<7Sz>86oL;04CLpLhA0uZth0|#`Y4?Lt7s`EZy+wA-;!U}%ehTj=>UdLwwWr+rH^&=x-XF4kUr+ZcAj1x-lhM;tNJZumz&RcmBDpf`70p-b zKwzfgn9$h@dKxWkNi#4F$r%rU7Vb;Djx~y=CH9|7x%Z)c-M;#!PzIFii1J7o&VljP zsyB81E%d+6GMRj~TWh*n-JaQp$?et_pCaOXzDYQI_Qp#XI`?GJw3rpAPH6Dk zpm^ViTTK=B^(u@s^!j5{8T4`|_u7bF_89GP#wwO^bt*bXV9+wkd@FHm4Fy19-1G+k z(&Hk%M9c7C{9oe?y$>UCypR14^!RGl6{H1hm%4ExEBc}k)v)K-`9Ppc$+mCQgEyYBcz&?fchHA@DfxFKl_Ztjl#+xO&3<2;q;w zE}uJu8fkZRFlRw42}XQY4atCku8U#$IGxCjs_HrpUoUoVY@v;>`I?k3E2lDGm6A#17WBix zRM6Go`zDofM3z`Jdz}s4RM3R^=swU~SOi9%0}W_M^yoGgmeygBQs5L~u6+zjW9ofR z(^)$Yxd@wnJ1|t$6N51zpY_i*Pj1do-Aciv5B2Zm42osbJf?-uwQuSNvR|qK^KMfs z!4LN7E1lOEqudpsiOAIA>`51AXF@4)6`-p8c{CiXtSGD@qRI-3eg7_|{r-Lbwb@>! zQ`37;=~#hEF;U4zRaB3>8`Su|{167GMn^^J%viS+B}f8|?WNYE8_W;|Vtrt>tE7gu z7fT*&+eA7aRE@N6JtT-5%_t{BnFr@|oqcj|PYDB(F3yWs55qHpq*wNxuE|HJm)Y+JDv?_!gFD>~>T=C?TYRRO)h$ zlDgobhNi}B8vs&rQGampn7hpFv{MzTQe$%WxRnOG?nyRu?Tv zP0NtG^8jq=fc_{aKI`MfP0kE(tn-AKpaLB_v1TG?12T-7pgEmQlJm(lgiwNReO&CS z#|>dORpIEoF%?&@-RBM8<<(isD))lh>Q`b$29e}GP4-W=-4VK@OVYp2t(sZ;OizIc zbNm7M*mCU=9EhPd&o$Isc$mv~SN)^He>54Gybf=X7-}wcdn~sO;`q*7N96cS#F%5R zgeGLm9Pv}{n&PV`cy-{PY7{0K8g)Fnm|sF1sp2uYqY1=(Si!<_@o6g5gX6zdPOKg%p>FZt=nD zl<#po4}?hrC#Qo*Gu_pOo?pVm@Gc1wM${>e$lt$T{U@Z$!;5;kGP6~_i5C;}AyQW! zv(BFip6`>Z7bi!SLO1Z0yJQTKkeYh8bb6}Pdi*!;j?(lprc-~Ti{4^6P9BA46!1n{ zPjHB^M-*Z2{~7a)v2HC7mqjy6t{#Q=JzYP~#N}Ce*X1?TBI9Gd2jiM@x+y!x16?xD zydJx2ol_iJbF;naIqGWj`F7IN=``k>ta7xl|C=*e*e2l~Z0yL0bR&*n@I1daj0GUN zDqk@O$)dw{UHJqShXJ!b$?;3wIMCN!J#j0W2gP^LIZ=Ss&UE#cN#->*!j-+tsxlr#gY?X{(v_jWmIHWk^Z0OJ@m zwxugoMpyx=D~e0|L7*G{8^tG!V;Tm*@6P=DDKgykg&t2+j7U%=0R(dymODU`)wqM2 zN%%So6dT&-eo-dN&A;c{b(qAbFBTr5F$p(9q?2hmauT+-*8P;XYoFogIELE)dpMqX z^1PxICOj0FSuMwc(y2Bb9Q-d8RK)an9-`<9FgcE3FNxZK{-AW%QZX(@{`iXoJyk>orTe`&4v9wS&uO~y-ARi09qBH zM>&}ajvzR;I>uuu=#u!Sf(KoBrYFo5SAuf|*KoYO&EGv!IEQJ)q!7G+w z2{KoqoaMl4woh;fYSiyi!j`}iVyVI|UEuxzf7UtlS|TaoH^vVXIQ#YW)-=QIbhYkc zwcHD}&fF9%RmdK>|DYMlI-Os#j^`nvnR9SB1!d`3Lz^qq{?{tclNvs!ejb`x%t5pF zGvkTD#=;_ZnMoA{P;Sm%O`FW1SXy0Ohi8JrQbk=WnX!!~V`A9Q_c1n# zq4#tzi~wF7q{4WDC^JIi(NbH&$IhNKCyjb;%!$%X$%sp%D8QZEsx$mwe=hHvAwFBV zwgGhL=vCNTee~7^bhY-|;C-3egYW+{pHJKpAJQ_TEFNJlE5!0_B7?ITMOX0b3$IfJD{rtpeq|uJ_bS*jPU2 zPY+xtnUHTm{6pX`de6r>@%Q)l99I*9Bt}#6xRe*w0&WuDWvPTdvFr03P(6*A;wRi> z;p`y9D~(rFSg-umm>km{z6M$K_MGxkb$H<`0+ zDZ9lbTs;?f?LCsi7?O;5pbnWiN{NU`EE?USIjDh1=-uU&og!lCwT^|2g&>iELC5-R z`r@X9g$w~jBley$ZiV;1m*Y%sr9Bh*Qz{YC9b!SM;kKAXIrJElDoE#;SudAoUi)`H zU-gy6YiUZ4kwi~Ff^(=56e*mW#x+t=+8Nd|A6($`xL*_%78E-A{Pg^+%8+Yw6sZV| zdLt_naH40wM^%=6zt~s?{SbJ8*kCF&2cjtuMZAll%doCVAC^dt4KK}LPi_ny%#M!< z9ioFYb9JMT<2$;PNLEAP zLjaa1KgP5VmS0;7VG8n$FrSDeVgtbuR*kJxkCgx!kaiGeWlu{@{IqD;u12n{3 z&Y>mMfCFMRetclGkU=r+hSJjIi=Eq%8m-n^trucCrH3)XT9&No;`s`D(kXKg;Cg6= z(_b!%kh1-dmS$g0I$22SzK+xhN^E*(79f$@{2QB_(aX;Nz7S+Gn60+E#}7r%I(U=h zXdN)Vso*cu$xgwPL#i2W(xL9f39a-~Ybsi0MH zi!*raY^hUHW3q+!1_pp<)wv~-Azk1Xh*?v|9zb!uO~A<1mynP|X9EZfi;enScgg6a zq`6gBd%D7aNcujuf)+}r)47^*Wcd}len$Y^-$H9b1_PS~<}oHzL62kR#+)yrAangH z89*8?ocb(R+5-hn6=@HdJc2eWi*FUc8w-e0CTe7B?6>ODiIlbdv-F>U9q9^-A2f+t+$H6wrm$tJ* z&F)`=J6DP%o)Xp7n_`62;QMuezH5_0e3V<}5=KM@<{ zcs-7}PPE&N#7|=JHY$K{BQliBGt;NybBOH#oV)mnv#44$hL?U7=r$)l-w3J=5c1a- zWvY*V4&t)nZkKmBW;ZuGEtk$I@ckU;i!+=~nuk38d=d@^4}mQeFCo6HUf8qtcoZWg zo)ZBR#{PnFD8UE;f(fyfwo<0g8&1kEV0!G)`gYoOaO&vr@uFzNefM9XxRakviHHDg z3{q6y91t5oIDEB67f(r!+yNfC7ed3T%%w8&jbgV#yM5mdUuAm&W;i z4HHnE_~vpt2?Zc#4Hr)xsqFfFuA}k=-g`4;$Fo*koUfu)j7P(+!C(Wrkg?I%8~5B+ z_^G_dOVY%R5@K-Jfl&AJL`WJGIAvr6rhxEik8IcKK?~Q-E}mZm{Yr4O(t?;6;Re`o zBOagNcCXG~nht~KyDL;&$Bibrc|PR0&tL;nMh`IG$3~YISjPArK>irraWX?&q`Q*p zx3TEOCSfhF!e)(o`ph8s9Zol$u;z50W@E9K{=~&g>-yR%D#(%y${vxA*<|Ks69GQ_ z5Ih%90b|M9=~l3d$0W5lsWHgY2$%^%J2qGGuJW6GsuB zOP!}OdAUl%Ax+3frNb-iDcnV4B2{vgijaay=dhEbM=x+YXEaJ#bOrc11uHy{fB*W) z4sYi2`C#sNd3t`lLy%2a68f(JOERFsF!5Ci;GDFGN!CMWhjX<%@386+gcaCnSnl54q&n zlOly&-3X!Frk&~9pRg)q(rX@Qu-|L`!KK*WO^!>{U=bSCz=sbXL4ygfu$XcZp|hML z@BxvxqzdR}Ia+XGh|CVo#OP#}tOtw%=zG{2k$CWdxUcmDotuMV%YEIhM-zRI2&83y z)3IPZzkCZn>#fN64;!&0^uHs=urmtB&lICG_?lm|);i7bMdeEbIYifbDpxb99hrMxL6MSz^B0{&)0bd4 zd>b~8qEKWE#_Rt(EZZ5CLxFX{ovx{kV&M9ETwvJjXmWZuju9a-y@8%PII?=zA^{U< zX)nJga6qE1NFj@psc4Mlm~e-MKU?Xy1Y?nmQX?Ld!fqW7oi+3rrH7~ShuDSAur@uL zr-06i#SW__yVhSbBt^!?JgqvIdb%oXJ+9arf)gd$haRXvz&|U~UYb(n zV+5Ci7dg|Wmk*XQO%1o5^tKfi28FJ!K6O#JKVP!)bvV%p#^<$}BOab2!W*X@rj%~t z)FEC;h_h1V2K>Vh2nG{8V=1=xSvnxV>p#q&ie&sWvUcD3*pW=vp~(C0gpIdg^6<6GKP*&%~}1wMxYG{~6IS7><)H=o#-z$OUc zW!g0423g@5Xh$MJr*jff>gtX3S}1Ya1QUeH7Aa* z*=y=@@^+%Ti%>{Y`PD&XH}>2g>Tt`-i~%rAjqa`eN>)N}R(R-R2FJGuE{<2V$C!0s z3y_ea?Lb5(zp3Q=_l*EWbccN_Yyv{EkOA^*Or8hMZ6c&0bgbzw|1bNuU`bfk8xh`! zw#nk>ar6CkDfsy$9Fp=$I@5-Ap@=66%+k{}%!ntgCx&Q=2M~`6HS<7JOJnLJ!YvVB zINObNj~@VVy}Ir7c}Ky<+8JRM=Q4L7LW=YGUuaH1JGW8pylDU@bh~Y0BJy8|x z-jIDq@AqqW2g~;NGe_~l8kuw|D?6JQU@kYemvBOedm?l2---U={6YxSgYVvd3apSRi%T0XQDIl(31Sj3#LV1|_BAe9 z@u*UPV08LN(tJb(7#72z*BU=*$NS{cBsuP@{V0aDc87=KX{~(XB?4rDpUn+F2*p|IZEH1 zD+&hVL^iSxHe6~b6X|T@VP5Lo4-Z+b^t9^_Q0>`MX4UNO#VYt~AvX_UhRvmbl`-%C z(yJ|!S1r+;R9!nZ5h0uYsMFprry#wBuwqCxJiaSnXVo0Ov&YQKJhjqwf@b+*=xJt8 z2ydzlrH6(Hf{jmaI;9B4Er((ORu;6B5`O?DJA{%}>6Sp==s z^9mL!RT`g}xypadWXs|%opJ2&9>_BvDzOP<=~ZtwK>k;sZ*G*HS>5 z79upP9=M%$-&scQ-H%*pB3nC<=biDav?m>FM)raqMhOBI;Q4*3c~>(NV0x~+#h674 z04`h9tG!pobJQA;`cYpaC|_YC3b@JsgwwQKkcW$_tNq5FetH7RHoks`*-q%iO2`~> zY{auTOUJ?Bis9`-6$-vX%qaw&oV6{Pm>km>7dKfP2wniAzXlA)_2@t_k(vN3*J@Xx zy10&A`=qR6wk%sRd&x9Z-+*ls_UYuI^+-h0*_ljxLi|8RiiKJuRk)!8Hp7Dl~ugjWt5Uo2Bp0tw<|apFBeMt|X~ z$nLma!E!6M8`2>x(3*XT`KnKLm(T_mFg;A8!VG3)%DG+cUre*%=?aC*vN3dDpm*Z< zx{do8Yz?Q$Tuz!)piF;nF#b~%ivh}7Q_Zd92!|E8r2RzW1giCY3;`y%qtM!~?FVXPqo#YzWoVC8#M;92*vSPYy zaI?Aze{tbOcsP+=r+%^@Zq70n>phS-d>38UeK+6Q%UotN01<&hPAJGX_yf2=2t6il z>aB>tXMW42Bnq*RXWuilE~g*ggB8?kE|m^B{5ZXG)rbavlz0@1E|s+#W`@gbPZUEZ z(#3XRM0Q*yJ7l3ce*_w&x)4WUAf>$MU6>R-XO<64F0L#u+U>1Kz9?&L0D2t!K#e$~ zxEd;V-qp>HVS`Tmvlp={H&^#tn^;ks@gGJplm7Pt!dP=g=)Oz9~m!m3l z?wF#Va=_T@pnJ6*bKPl)B~hqwgbUU%FI9u3mAUnHM^RNtNlpiBJ0;0(CfmjLW7)?H z?*mBodq$gRnDMJ}Z3re#a~r2pI&=~K@lBu9e<}qLh`KOom--QS9xgNVH8&)v zlO^5JU;vzQX?9oO80Q^M69J-(Fu4rJEe1mRdmMq<|#mM?~QZHAp)45|3jpwS_LRb_F>l{Z# zX+>FG1_$C0=>Ysne$&8lw4mn)_+k$X}E|Xe2VS8W` zq2cSN1cfT)%IPE<5r`Mp_%eRnmM!`8Q=F+PYz4S`RGyU(|>*DuAq z;DsTD@kOjq{b?K`WcG2oSzZ1^rZ*vQ0Mvc$=B|iG9dz)$@-o_ZBK7H-@BKJM-@%BR z^=iGr-&}my{llQIpmEy<8*U_8Xw|SU6vf}T44h*s(}?CE(!fm8&FqzUv>GY%;gK-eLvu z{sDa)T35CbbxKCRwjUcmPK*l?Bx4dt&yA9^7f>r^@+y3DPXv9Sb|tNf)iM4{ADJI9 zAM23RedKzsxa0fqIj>%w+12|J(i)rGDW@?n(><*z5&;KqHMTwY2>><0OKJfUkXZ#9 zOXDgzffjtgaQYR>(YtJbP_5aLI8WJHR)&)WM=FkKCWh|%Ei6$Q8=kMA$(<80AH8{q z@aMGj%vlHgTo;>eJd2wEd2uv2j&?KhPoa;Gk99@6$HVhl6MAzCIGk3H45h&+N`bJd zuIZ6gMwVz+#CnqY^G$=41i6OftQKzPU(B9AvcPKnFblsJc-_7O!D)3tV(O=!pPuIB zVgHVk_NJ^_W(krwoUB`Or4)auaw z@_vK~Y_d2VcY8QdG?3Bq*XkpZ21Cr~>U$F>ASYKLN#)Om&zUz3cESUMBvP6KE#!3f zLCj3)Ux$-oyPi8aoNagB_oJ%FWo?yHPhfZ>xeNz$^BZRMvnLGZ#!3)7s0HIduye5q zJA1f&`l~{t6%{?S5)Y{$?Pq-{erlU!B%&?J?9VHl%4;eGtjO@u|Yg zYF#`kA?t3B(g{i7ShmO#$wk|;`j=jd>jLHXhXQZIlq(k4y{-?X={vG-qoN3W?e7m= z6)-yk%f~{{E)mfjM>(M_%GtR~_*b4Pwiv|>pOhsPiWM;Jt>USCS~_to%2hSPl20?>?e75PILeCmJh zqi}Y?temIK}}AdPlHLBuvl3ebsf` z!bMWmiN)GtC}|6zZs+S;O(v7eDSz#L6gKQT3{o0M$rah1^00b|T5-mnJ=6+*pP^qI z(~ou_CkHn4u{541Y{77(g-ga8PCpQ5BdP`V-TcW1&HogrRIFsPv$5@(W{#8Iu>@Kf zFcFxUEn=AYRwjgYF3DA7-cnje7ta#(YrX+XBU=@a4ZdY~7W4;oEcJ z4DGe1npRUK(rJhuy~UEfAdjvxUQ60ms+>kXag;iKpMw-E_}}nM5Qi z#Z_K_)MiBq^b@%)IZo?(w>j0(K?eO8X&dCo^(beu+0NcMbg^RC`93ZqMI7rJm_oZ# zjwNE?roEmoEo?_B%BC{& zylZcVQ6|;;>Rs;-e}e&=1w%CarrN*r4;i!BC(&{X|5T<)rO00YBukFemR1Z#5=TQV z3K@;KVUX*o^Oy$zg+4_ALat`v4xo(g_#@tJNUka@bX@K7oXPBBq3yD8F2%2}Bq8BL z_C#!8O4ex8PaslSLR%glvDv!JjywMEvCK14n`5|Cy*jnwkO3k zTixK@MR0R-W6=F1lvti)ih^TiWRX}cR!Y^GO1TzvI4q&gpQI2+-i!|tVB|gCG)`SO z87-l_c-nIkBvj2NO6RJV&tvzPD|EVp+iAC0=cNq_XJpY0L=_Deq)2r7MsiO6=n`>h}hAE1}TaTBaD zHGP=Q4yZi7>!^*GoB2}TW8~vggSN=q1<|?P7H6Toykd;b%J6Q7qehIEYd-B z)go1&oRIjpF!;w1DV?nU$DVb72)GjZJ?)Djbdk+O@@Yw0uFD{Fnaj;ui^T)P6wX*% z(48+^k>E3R7m-nfsdJ}jWFZ)QH$=b`p3WEZLS0AB}qLdb5QS=_a$6T9!8r!MTHk37wE=UC`6-~e42TbP(;Y(cvWywY2l%E^K{n1h6`BNc9* zRP$%_c)m2_f5h|FYrz46&OXDOMBL)!s@aR|J@Hk%cdH9ldYgm~pGM%2%qu zhKh)rMd=K?e$yP8pir7oCWSyei5++mjIh9G9aQTGXlpd-T;8^)6%IptGeR49k1i8Lv7a=huvKx`+pf<#?Y%{TL!#5?E>NgL|B42P7lDD{4oquJNjursAvFG ztF9Qt0nWI-FPj^|RrmL^BVLhhpf`=_Sh1PjJ~^eYwRkkG%&Uh(a154m41s^ z43(;{Hu$_Gj^*PJke__)5|t$mr?#j9k!r>AcAE`~I87VHe+D+p`srU)R=#K|QF7 zx`EA-9?WfUWWl-UZ(qnQb}$=WCHdGnj~y_wP?h+;p3nAG`t$K6oX&taT?f`%E44(cNMsG7jE8HWNfuB}FSn8W0A z{{w$ron>_HreHojMNAwIR)(-0UD5PgH5(LSk_WxZb8Jb>=~S0;Z(s;JGm@+C+^uU` zjc!Z_h_?|qbyWyqQv(?3y3FJ`q$_^{zxj0xPJjH_C07FGUU9x*X3wK?X5$_PXv6Xls?r;BLubMr^{OKLw?dPpRlhTFk~NA!(Mv zQAN^zl2oPG{b>b-3J1y|$i#r&4q!$m0LcU8sRc@pp5b%*c3J6hSSU?{?r*emqZpw@ zlZ@-<+NVBteftgKe_RW3;7OgR9rl!`glhTX+y}2})JH`O*@2bV@(HbHC{CWuxV}MA zkX)zNXK*JRmmK*MhSwbneA>oeR?y#VWRZ*V(ZSPCvLCq+KYcDt{y{x3Nqq_QO*e_njoR*aV zNtbPd^?nJBh360L)h-G;5!?X$zM}S6KG~NbgihJ68X=|7#qWHFH#CfvX7(m`p4@)f zIs_DyD$s;e&UCu~@ue}bm!xwRdH}~ej8sLj1J-lV_kg(tsqb$hNU6Qf*lcK>J)g92 zigZ*M2;$)qjZWva`!d~Zwuj+0Cv1rKxeH?hkh?w+&@gY297G#oB6N~w{_}GPI>}RH z+>O=dxcWHGmB^4JtCQ!&46~fuQk?C@rJpXWced5})mb1esgo*ZVuE`$GK)}aV_3Y? zq}GeFmPCX{jMON$xQYHS#MN?Wo3u4{EG&)X6pC{Q;vE+GgSl@2q zoXKzIRl0GMWf7+*VU3n`Tut1~_?qq4(kRoJ%&zx8eWZyF&Wr}k>)aG}LG|QB32nA@ zy-J0?LTT;)QnBU9isLf}4aWq9f|{67!ctQUns>%ZRwjhPVegp~z3J-Zn8l~W497O;agt{6Cs&54S zlgo$A;bBKql#;_D>2PBi;esTD!JtyPz&{gev|KkmPPR189cV2r4NqjIh9yFkD%PQD zF8WoAdKV+Cg>;&+*Jt|wuIAUPaUz#f+2SvDS!&hWuZPriKp|N@{bHD)drSV8ZCv71 z-E25E$j@Z)nl4WBBV`$%fRLFN2ox#JU z1t9s-G09|4Jt|SiWR5xbgLEE|Ta5WzlsgbHXotU~tOZG!SUVDRd6kD&AqB57u7mc# zkOqqsHLSirG0YtX1WYAUu~5juG&&_80%cIS#IcgAjr_tc&u_5Ph&zc8mG}rrb&m5C ziqjf74bdL9Da|4!2lJ}M7w9{fsM5uVe6^3$={(j-jP<9;x5Yc+udoP^b*N%!+DJ0{5A9>r3f6( z%QW-nTUZyKjj6#=vY1PZhC*cpKKgh71*J}Zb%5ULTOlP8WRzqg6m_3P7Ng6>l8j5_ za|DLMe$&6aQ85Zu4kH~-RQ*2yn?Pj0&OZM56Q5fCBvCPrKYs3xooxCBuT#$HKtLj3 zI*}5w4KR+VZ0lRJ|FmwADq55(#PIL>%KC4kx0_qdpIfrm_%-HE@VDU<^U>2+9A=-AaA3-7 zY-n5m($?;-0l%;D%U}A>>#n(J+m?6^TC}p;7>qNXks6!_b zI~XDb*sAuGK&BV59<+i_jq4C9QWK@RR_0YQQNy-eb)HfHGpiUOaNkCFW2q0J&J*$U z?|%D7yUn*?{_z;KP{;j#8JO7+kwxtCt$bI@LnUh$voQSzx7F@|s8VhlavY9$7hQDb zf`tn=Y*^pbwOcLaVkL4=xpfoi8x0d9!T5B-x<*l`KBe4Yr_@VZcdC&nJ4EGK2?A*$ zyP_y&GKFL!vu^GBRjW3fbIyg4h*(?(22+t}0Q0?K$hGzz!e5J!4g@?sjVS%3u~WZ~ zdXH=-9mo`+a*jl^M_+gHgH4D#rZ!)8`T3`uaz@wg?wvb#5&HqZ9uOL1uF{dj2qCTz z*a_-$Jy2bg5lj!s8k6cj9zD&H1Sr|>W1$`kMqq*-Oj}UYnitoxoP5@-xsj;IMMM-q zOl2$(O{4y(&vocNcd39JEJ7h(ip=SF(ECN>n?8N&>t1&yCKfhAr|pU>Mxmm74%??L z!uVF_F#aojF#-rCUEx_P(Q~N|%@k*2=F;6*I)kih+O=!f)6YD8>7`e)ek&UF;?f=t z>uqL6Z{)ZtW)af>pmZAO9kyvd1Tjk#6u@b@pv^-q^B2r|_q%Ug{o;#^ z+{!~tqFb@r0*=JUsRg`YWsd%%RLibb9#ajViq?nE z6r&Zg02QFU0|NsyW=!kp>0%-~ok^Z|{@L^$GiJg=>pma7m1DT8P4Z)S@!(#;p(AJe z$cMi6=p#$Lo@lwm(lPcFA{GoH0en}xsIbyT+aS?5)bMQHXS5LAl%_J!Im?wiLw~89 ztk~l#o_hqvRUp8_!+2$4gfuLjR^p<-c z{9ncbkDnLFnZ7VTF<#!^AG0ok%&>0yR2SqT2&T^)!92NY<@Q^?_roQRK546Z8l&xd zx(8t3xXB?-qBSu)0H0)7kx~qqjdZP7(hwDy<*I6Mzy35I?lV!tO9@40 zAU;Zq8oyke>>G1(bgrRS}O;G#H{&7~hGX-WZO3QW4+k926Z&dsUN#U!auQg26~%Zvr{< zwjcjrCM6R}V<>D)uZ*qUW6H{UX;cU>Pz&D-hl0su0h7^(K6L%Re(j%6IB9M?*;THj z;)y-}prc~Trqgi(%@a+I87Dk|6cy1sW(O%^kinkwpbs-Qkv-uCuma*D-1+mn$x&_4 zBy43Ihi=@k4|JVzn?M(mLv)mqt)(UKp_|_Q+uz-N{sm`b^Mh4eHkBS=S7|6Jk?5ay z+^ivUw*G8luj26pvqvBja|@=+`|f=ZkHiTqWC*eonCYuKD-+`ZgMn3~QmI@x%(7L2 z8`@4kW9prEee+x2`M37T;bM7^a91q1LDIn;hY3vr8)3Jtkx+dH9Rd~A7?DYzAQm`p26)T?W-IHb4nOcR%*@45TPeu)Rc+ekZ1qwujpB%>VVu@{=Z8K*@zklmDKK+@S zn0jhx48$4&-FrHNArJ8()BsUGMkuL%f1GDum8{Q1b%A6eVKA`f5frJVxlN?Vs*BLj z!`bP+G91(W`hFVI2i8mbg@DF&ebp~&T4Fhak7;#+(FH>`m&XPsU3K;OKfU9YFMZ{c zk(jf8a7U$@9gOe6k%&d?XvPLki>RafNXsgwMzY^p40~uImYLwOWD8;uU<6%-?U-Iz zwbt+V;EFKp)3N-}Ov#`nU0bv)IT`rTg%}zj5;s=&YMGrmV~w_VzxSH^AN=hlmz`TI zCuYu?0&B`qH3@K6rS`{7ps8^(nrErVM0*=PSETairAF;vn7WoTtn zuQb%atMFg!-B=LpxI|PEgx3n$I;Mr*aQ#(3`M>|U_HQol>D@(?2<#1;Hf?HbY&NIr z4S)(uQFvzZma#+H_;%O_kPs3Vrf>)eGx550FY}o2uESm$(+`dP=BqSW&Mbi?WG7Ei zLa>q%g_G@no0@|ZP%M|DG53Fd{nOw4)_>%S3A>{>ea2+bCx_M3$j8igJc*j2f^QT% zl9~`>y<~4~nUqYVA*y_?v}N;lZO|D{&ij0~*3Y+US z2!_H$t$m!{JOig|@HQGVxn%GiLd2 zy6J=OfB$=j4Lv&BF&ln_^fRlr-*3kEaJ=L`zT97xZ;uXA zCI^Ky2!)l;$n3vJI0XcD5{PrG$l&PcaGrkp>GS5z6R(HEe}Ltf2a&!=U~tdn^t9f1 z3m(0yDEBl1wVtuR=FjF}4j_Pzs3?SRUko2B|I+pCZ{K|Dt+$R+sxhZD%9De*g)Njt zB6@<3CX;AwZ6&(HL>;5|`b6daYRw0zDq7L)Cn@pS?3j$W5%33C_y-$uJAFC!tCIym zvQ%!@j>5OTdG{B;_@$*wmo_yusS$ekFc1Ds+#roH4Z}33&PpK&siUJK*1$CRLG)N% zOY6Q?8&T`0RqE; zAUDT<*u{y2QDgFy_HEm?sflmd1xsmgo%cpZth9LLM1Tl`w9l)3 zB?&?zYg$3yb!)o6`Sn{CKlB9KeJ@-%b$jQINVw6Ec4T0NG7kpFr328mN2*Ea;!N+z z()waC>+v~?x%`~D%;d=S7Hr`%o^I1G>l&)7Zhft?h^UY&%d&{b4}jesIqpAIfDb?QK&B1`-~3pk^2lAl2$%CTceh{Ff??@)cg^tm42&3G*p?s8`Cx z88fG0KAot;BBY6eq|Rpq77q1jP_4}*z<{hmRWc9m;Ng%jov{7Kzkm0hKi=@czpUlZ>2~p>u zkYiXuWBfsVYB>yjK{z1^$U|gf)`Z{quD@+)bg5tpylK{d=lhyHC#rs4!NmR|%O zvD^B4ZTH^$&`)mrMdy}1*uxuQ?d+bSytA=(xuUTMYc3QLC}c8Pq;aDD&X}7jOi9(G zHbS##qPKSsmgq<<^p>~Wpmn-JKFiuA6ZyuRyK1G-5_L1GhvJ7U$B^&yN)*ZNuF~Ci z{qF9&e%rk>DM98Ogg^?0gRK2#Ax0&W7CBRjgD)922A$P7samq&lX?)rnq&-O9u_$O z-+Y!?Y~Q~98{hgDf53?1A|D;{VR58G2H~g~fV9I0>2N5F1vZzh1_Q3{uIx9y{=HxQ z^0%R2Qz*~`VkP4lJR8u#mS{@9txY%(m7Srf0VgVQK zL3Z`XM7k#ZQ{tFp9*X5eV^L$Xd`>2OT5f6y`2&vkzW=QdEn&IXaEve|nhew@W|LH6 z*wDZo$wUqr@9Rem?H}Ywr}E)oI6hFl{kA)Q^Xq$h_6+*GQ8uZ;r68M5VMAk)AAE@^ zECQ84NNjml%d?iVV@X3Gl(K-5>%iiXu5;m4TH4C2?9%?*C?Q~!d#gzkm~ zLIt?oPu637WD(MVASL}#JBATS?WX)S`0vmU;Xld zAO7I>jT^R3ojM~Jh_XEl#KRg2vOsAOr*Ab$s#wubVKofnA!LB;rw>MMjWPO7T?d7Q zHSA%bgx&6Cp)~>g#>W+!8jR#3H{d%FAP|Nfu*?|Y=BrTz5N&Vz)yyZWQi*nR`|)YnZR8F-^r2-BKZ z|B6u`jffig80#xtU0puEi{*obQW7e%vo^9?I{nOrANlBePhB*fiQ;r79S-~PMk|)` ztnpQ}G(6uby95|_;F+wjBt#}_*tu0v`|5%E@xcVG)?YJl+bauoE2f%YA))_|dbYcBz!d z;J$X<$|)Vq@B6@wH@@@D!hUT<_UtKF^G-W)0rt+kt|ntkT7)zG^oIj) zm`J#p*bQv=tOxga+;;!HPkj4Z-{VnJQwz&}wrtsgiwe^k2jjsoq>igX1>rOvD8$;U zo>;UePicW84a6ZQ2@1mUk;bo)Z{nlrb_aIj4?sD1!Tk5PZ^c@bO6FtHR>D=g z36E8fsaR|eq%g~l%;kW;6~+h#7^05(fu<<+QyVJmRauH#9ApnWwJ5br$kEHMxZ*RP z{a9POlsgzt$6_)&44HL}7yfWD4Tfb!Afu2U&+)PWsj*p5l2iJ+o8 z?|At3+wR!BX@}l+&CQPSIlR4PTTUvAMZvJnnN{9@f^UY&b+ua6^AJP#GcrPo8;lRm znmsj<=wZ=*Yg@Qd&7XD7+3$JZjc1*`5dWlXuHyGgIOSX(lZJB5+J7C!_H_KcIJSI` zowsV3q*|n@$ZQ-xb=M*v@sEQz)HbKx+uvJkY;-@m__=@n(%0gH8MaPpYHVcpq#b4$$^>xT@|wHiuYsA2s9!>r7hIc4|moxzaT zZ7+Fz#ZP?dqnBOw+NNem2=NaY)q#r^fnfc>yYu2pUh~y|`C`XZKW$)-0U~6m;QqM( zDR+h{TX;+i710`tkPfCx)i=6R6*db_Ge8q(QG(+B=I#|g`q6E~LTHRl$>0YRjwRx$ zw$>@^UJO=Y?2bkoKq>sb4vHgD`0x>0w?G>qgvPXeoCKte8(n;AL-dPZ`s%gUohK9d zc3a2P7_0950XOleFc@-eY$PBP-m6tKH=P+2qIi$WMCAz%;-pT|*zqO8k&#-S9h-cC%FW;V`nA`c!{*V2lC0s+<#5iTbrnpbC~U-q#n>oftN(Yqd)J=YQOZ@9D;ko7u*P*!r*|7IH@-jRfll<%){rf-go&^i1!-X)55N!{=E*SI>j*C#9 z%z86>TA1eA`jzZ))5Y&T;ZnORQ z&l~>d`?oEB;ze849}EyJUS5;4YR_iyfEL#q#%YC-Ot$byONHa>NURiKC-WrCRZml4tN-cC@02P~Hta+dMGzf~3s4c|E9(M(9kD3R z=Bi3kEoqdzFLz`UT^bHU!a~O#O!-*n)~)UQ`5kxt@~%IG{H-3BWJQcCo~rpxnu#Y) zg`q^bl1oro6=+53ExC{9pmhvLfQy8V8!kN{j(n^~BpxN(m~(@fB80{YAv^#3yZ?3e zIj7E;*+^sAx>K2QDuq(cBebm>2yGi2m8quj)MbC~T7H}_xv^($weH$|$Tu|=-nF=su~8Hq{6VP&FQga?c+h{oxO8duiQ<#)e6RIyMvpv$2LTK<5mb*6wrT zCLs+F=2b~39*zy&hpvS!E*>X1Ooi>`-Ixm9xEE!Uslm%Hzx0d$?{ofewWUo7Yz#Tb zp@g%QUExMHbBxd)`)d{<9ROAgqJF>3Hh{iR6tm`7PC-RBMCt9xH8=S%HGJk%-@NCZ zdr=aK1p?_S3$lS#WUi>lKqh`3BtDt7WS<3Aq%kBzIn<=NWh#jsJGVAAMyJncXGe*y z?k(?q-@88Z*}peT*@8lPOI%&FrXnE>Gf$N;enLg^lO12YURW->62jyd^HGgZ(Ko(4 zaO?lv_NRO9XC0AH5$1GFHbd>zx$X;b$K8Bf)B!u0!g3KxySjHmE1C>KkAGb|R69hTD>fESo+ckk=RyIgd(3rY56`7GJe} zq1`BTV;Yy?8CxIwtK)Ig)wP3xdFIS%7^(Uz4KSwHySUoJX*T0C9}1w`o=6f#)S z-nr>=siZ+g@`k#HX`aL9HLP2r6xnTG{mKu1{J;MP@wBx~W=qR-s=!9-Iu^y=S*tq= zRmC=-!8mRzA`|o(G&c@1!3zW`B4QbgH=T()oJ3L0Uvbq%pZ$kV&YjmJ7D3v<{xsP% z!=K9~h7%>bYNFW-$a~$`M=Qp3+aja`fQi8v#~H?BQF5xt7*)56y&`RF|MSgneD{xk zxF0>+?FtU|Jr zo*UkL?H9iInP|)vPvoNwUQh}@)O{Fc6~;+^Bvb|T@GNttS+qg+a%K?`j}virN-Lt7 zzvYH^;WF0{?I6-+Ur!42HyeDyuV}4gV>H=p%Y=>gkOU?QNQkWfaCDl|(awa}?%mrU zr}jxr?|c6T-}Am}sX{7MkX4Cx@VO)b`i2g%G%5zQH>w{D{D(3gp4vP2;m=?7zd&3W z)rf7+uF1@wxE;x4b=%h6U-Pt~` z$HD|50Pd?tb@k;duN_ggGB}utMMIIWL7p@;{sTm^YOC+5H$!|*4pjMm{$YqrrC*Hjl6<<-My?<$PxjzvfZ023o3YCTs1 zuG0nJ)31K{8$7tXyW&o}C`G|QV{>C$GRbx!g{G$Fbh?kXYJS-V!XBZe15{wdW8$K0 z-@Xm}h{l@s^z0fO?0f6qUjNTu{!H6s+wR?&NgV--PN!wP0An*E(1_3BmFkYBq7e_} zCn9SmmkRjU9Xzyb>B?{X*DcRJ^CEj^c-DQPH^0KrBTEbwp=Edzl z{_#&AUi^4ESqKMP;6Z)t5Vm2$hgI%m!9_{X<>8iH3}bM0H+ zdi@z^PnBgI@LH@sJ{MaBR`6RaGSe!4gAf;+4=U}5`lwtXA+wo7gglf|FCEh5)kaA4 z5GO!2foOCjf(omzIaI7_+4LK@V)Aj>9YJWQYJ1?GmH+m&uW#De+1572Wh<2P;{PH> zEgLG6X!O-;T2T=xGjrWHHMEeI)FU+$rJf;x7@~+GKPp2^EU6L}GlpU83Jl3qj5{RI zu*0!nwh&LH1{a;NkeSxkymlT3tM4^|VT`UV#o6qTb@DCe)_OqYA@WP8Y)H$6ItajpLhpvbRZq@MdDX~&QRC&Iy zcX6r>3I;jpn((5TK(M4*0E9by3!;;dr((>JXp(ta&1{tRMrXTll(L0n>*UDa zzU__ge$P8%4a{xX{5bb0@sw}L!Qo^Mi5?M96NFRcsR~sMRPU$)jg)%JNUPU|?jL08 z)kaA5VA9~$SHu4b9~K-dc?oi&Us;@!Nk{~o?|l0OLR` z5C{w*0Y(VYAK)-4&A@JLoT%?nM+e?^A!*o|9iS7&&)vIsvl9fk6_2O!;cD{ro?D=HiPN#uF@&u*Dj@vBt>*gFOul)Pkwxz*RLp95CwrG+@6b6Pm`M z>SIuycwZPdP2rY$3(u@<+Pr?+^eN$pXItlH9MY4iKGs2e@k?L1>Z(Q9QThk+jZI!f zMJj_M>GEnLB;Bd>tL|Wanh9HLYdciL5eX9=O59Js{-58y=l6>f@mws5sfwj|4Df9K z%KWAt^5x}`2V=I$a7I4c>$kkA@m`aVLO7+vu!IxC7>hbLY*-&Fh9l7+dpg|kme+s& ziyw_OAZXd5Twx=!Yipq)#zJlmjjzImksEja*prZqfGoR7<&)?DiNC+Z} zpAjLDJ#?1dyY}wtuK)Mk`(D-SB_u(*I;p@@swE2^;R-Q03k#y;G~pFgRx_LYuf?lMPtTB0|EcM`R9J^!Mm9LwRhx*z7C3Dt#B%Be%e2k5&kx) zRwG=V;m=-mFV&xP^Xp!Myuq+r#$X)qyIF5#v|e-L`mJwmBP`{F2~&s#^6uV)b+u!; zk8J@PUBv}E1L}Z@`}--rniLh%QKc&Dt*H$YEcPMP zlu4)`dO0Qzz@wr<1T#6D9p1jiqR5`cAf6GaHbwY}KtNWB(AuM;dvWuQM>ajSdGi*Z zH-yz(PPuA9kORkL0Xu?s>EsW6wgK#XqMuShlbXl$pMFl)lrw@cj`n-l$$Q}7&Tu&B z3wXnkiVdGyyJ*n@gx@Oc6@+1_x5VUv8L3XtncoOsk3JwlaJp8ZZ&+$~nQi+H&sw|=G zkYNz&wrzideKq%g^^21xquORe9_pzCN;3v*USX;Rdjt;ykHQ`7&47e#!oyh*?h`~z zQ~Rc1L_hq&&mRBY6K$>d&8lPR7DtX5_FAwLFe|?2fDn8MP;m@Q|IhkP;qnOzil{F; zd71pw)nh2QXYqySfB7q4m@olU%j}Lb0xHEuK&7VWB2igbdXhh@7$4-zqY_9Ekj9aT zetzQH$2@^(#2)M*J+9T)f9Bx+*xuc(GiT0u^H1+I)Q`tFsIvnnQf%E}k4=vKMVRV* zaP5%qSXQrMA5nEpWluKI6^q|>_ieYWTkQ{E(;yBFv5N_c%LHjSm$KjgwuHOe+Qg53zWfeK9cUBmFMyNCsc&SYGS$!Zvt;9!AA`Zc2-s&ld>V5v9*CR6V*(lwjBG25-)9e z^}f%3g+1Zn%9>oC2Mr~*X-KM-p>QT0M>Pj{7%xB(e2GLqP>!TZEbP}tQ5lr%d2{RQ ztSqm+_2bh|ZjdJ=Tj)?hNhkvaK#fUtn1C{I152u^#}JlAIgn@xJ)mM@+=C11S6}(l zFMsi?c&s}VtZr|^NmVqFz>|rr(Xg$0Zot=mHFj!N9LjNBO)x;k>G~u~B9sHIJIlDJ^0D1P<}7z-QPyEZxAE)W znlW?Q#1kUq4*$dsh+J4lVvisfYMLhW=k76xA__KIfh5hO4}Ikc_{ALS`RD(A|GpNF z8`r0}zhOM5<@C~ode~Ce(w@?&gIJL6+=ZmoGu8>T=#iB(`-s$z3_6o1S`}_@Z|mqx zRfc^hPMff8+gA3`KJ$|wOrA1se535E0Ss(nK)O-+uTshLD1JHBzXwomqKl6(oHK-}$ z1y-jVY;fx6Xajc>CpO|kf`~GhpW-X)y6cu-w{jUHMP0p@vhbJf5ermNlUw_UG_~_3 z8bD!3;RpPZe`EMBMjw#+(OS2G7?RN2Iy=~(_n&O#kA$OicW@%QV`n1{(5)R!^DrdS zlXwGOgxeDtr6u%nUrXz|BEg_`s$Ye!HcvZfsp`BO1u+C~LTk z9i*J^h%h*3Z3ky^s5?R{`Au^t#g|Z^$K%9|5s?fm;jo|IBayH#=-##G&Dz>%CfRY) z^eK1WbH{lLW-|knLsglja8w~mu0*3?H<0>WoyaI(U~V|B`?YN0h2mU|J|Gq7YBz}z zkcfi#;^yD8(i)A9!}kC~DeIPqKIn*s>R$R?&i3JyaO``|Pml@!0X*;`jVP{rvgztN zwtObAPVn`*AKG~T%9V>-+j?vLZj@&t&y@A4?F>v=#Ii>OFiNW>I%mI8*GweHMGK<9 z3DroXs+#yqf4}kjPygsAh^AAgoXV!Dcq}{Vgy|^p6(dp|Q3eQQiq3^j+*$O)Tsyk5 z<4L4nWI1t2iLtseM-u)^*uu^OEF$kexZ}n(H{5yW?W~EhUW^4ddIjjgvuu?w7ip7n zNd0Z7kc*}{c{r~fS&r!CXakb!F&4#D577N4hjE?j7yt2Jcqu^$iFe65CzFb7Z(0d< z4#4Pl8FU3;M{zJb!-x=glF1}Mf-m60X`3Vv$q+(>#s z^oJ7mi_LlLn?N6pc>&!^m6>cciu74Z!OBt!AKzSM((F^hTY@hZ>wD|X?O*=Frq-5t zI>{su&3T$x9}||A<^h%&sxCSPL?KN{_lOT&FqMuPQwYG!ws7!_dL|h3j~P=>3Eyqn zUen+UM}1#==+O%<_z<*b2BcjYkr4=z8Jap!QNqW79{LWu4En-(wtqPWK1UmnAh}j~ z=bJ~3eK~VDO|Lr#j<)HkS80=qu{oeu`cFgidp4fWa&DAZQ7$Si);%(&CTz+v&osf_>;ka zUdx&FVsY`&hjCNi(@+2N(@*{M?YEi;j8_$|uVC9$swdVZi~=KWYhI*z5h+*~Bz81i z;?R7U@rWUV;^Bx3IPKoO8)5H+6DG_%ciP|FvwqT~I%+``aWr9@DHMXrzGSRJk81s@)m<5GZWcACw}7ja~}P_ zGG1Dp2^8_y|5wL*^e31SSi%0(d=7WNkqs}Toh+8^Gvc_tm+f(jmGtO^*{TB9tn_u`HkyIv5n2z^g+_<3~3@~}B zz{&>sjinn>(eG*$AxdiFCT{8x!BP6dT;?mTUzB7SILL@vfT+&S46Np?v(LC<=|$IE zKd-s9UFXo(M@XBB-o7-W1_!TDDpBy1DKF%@T?S;$O%8qLq93C2q)^Wk_cYpoL{sTj z&!4Tvz|}qLefXe*7opC=`&3UiYc(O^0)=C!PGwVO)F7>Ml_eB~xMr$4J6e!eJUB*< zR0YwOeB(Pm`pGjtZ*A$St)9qoEnJA`45R=H$Q`@%m9MWGmdvP9n@SP!LBVRXy2M zLF~~3pcd)|wvz6DNrIJ_AHkDg2%w{{+1Hj|A_nI2t#`^{Hg^_TQ2 zoRf&{m;#}!{a9nHlnMx;WY8*L%^`uJ$IaXw@eDSFqsFqHZuWYJk~k6yKL69-Kl#Md ze|Y^*n4&TS@DxfjQt_(oOxQNSmC)dc(|b8ofdxFg&7J&BwNz>;#MRBg@|#5g-o;ZF zeLX;xHA{h&qb(q$S2*JDO0@Ll5@()s@~Z2vUV7zULFtapE*;vP>_IhU=#L^PRzaM@ ztj?crDf#Jehpximo*JItM;nmxwATGzofVeQI5#$q!T(It-cCXy`@9jB`7xYv^lYwq z9k~eMDlc28X3<}z!-uppQlcBN?N+S^+&`RQ|IoA&KGcj4Tx-2d5AW{gjz zQ!qd9p!zf^>kh4R(N;gQr4I&zeK+g~Pl#%n6%=`}S4hM$Q>w-{C0^+<$oSG1AAaZU zT|0L)mF4`=i0sB=b+x-Y10z!Dzi0Q!Lj_V;8x03P?;xE;0UpNjT>xkKY~rGt)E!4L z@dU27Yn%4(@cCU=F1-{Jr!iwgUGX-QlXW#%^oitbr=CyKzH!`s=Bsqv*5CswIJ4V@ z3m3lr>f=aXEC>?Vt}+zp=!p4br>Vl5b#~^b@7s42Abmde@F295SJ#A@5p~5{VI~b@ zBdK&(S$WUr?z`ucYcI#$Dmt_PzKE=7%^F2^I_i_<6x0%2B9)02S^QCPkfWD47Az=* zD?^$?V(>`(Y^%q|{mmvoUttyOr@la=1XQT=&mEd83 zWHl-kIHqB8B9=`iQhhmznrJg0M;|H(HUm0@Jj0O8Ig>zZkztTYFzkEuGcV(a}YmJbUrpnH1@;9OMTH+=Uk@DM%i`6)>LcVRU#a zg44i=9((k=h;x`Vu)yl8C`W6@?2bh+=2YS_%kS4~R?gH9e=TyI`pa`F>m7|K^+ivp z%5vyS{`Zf67(ae2Vr(jn>muSTC04Gw>NEG=!rX@nFuWk{;Tx4GvFt29eD25R69!0D zyD>j$Yz)jl=PaD&u%{pp^s*f&7z}hvfL8~K3eBv0mHx^3fLMHnt9+h{V0(M>z5`9C z&X|71mFM66>03}+u=1!-kVt?%{zmTUdXCg0HU+OQ9S`TcmsrMHfz6KI-jE!Nc4|>y;dur z*W9%FKYzKpyc`po+SZm1y83{}q~-JDw6G?fP9Zfo3_egj6}WXryO5c7^2F6^man@0 zLO7l_{6VP8WYW=UI+{KT@7j0xq->(E(rB51;+ccOGwP?ub;? zGv#1is0R&)*gc3Ornwxiz>aL0(2@3gT=KdIsFJ%*>OG!SKV^yQynD~qaJUi&!WVwz zf;;Y9H)(PN?P5GZ#0NK;!a}$QJgX>S^>Aq(m%oofAmuwQ7lniV6OZQ>E}V1O<(F=G z@s(7%6YuPF4mQInv=p8!Tv_6c-Sg;w1U2dH@p{UeTUxWd$&XyJ==Ke_&Y3%r)gjzy zm-mT(JbE7PQAtD@E9m`cx+HmEi$s^{PH9VXUO~0RzFnM?;81SI*5+?L_K&~%)vxh> ziuY~I6cFdIm8h<+Woo2$wE{pD7Yt0j&m+G$#``vvtceqaq?(jam9~tSe}T@fcsSy@ zZQVUfue=cDCzM1#7z~NeSsp_PfuzYk4!<%BwzQJ(vtY;WYoicIx^v`vt!f+koWyTq zvE4;{)mztY*uHH~ecf0VVWeMJx?ug{fVR}>Xe{v)=BJ_UJKjP8c+0J~UvuqJT$13m zgEdu;*G;GuKbkC;ix6XZXZ&g!q0{UKC#7xUJ`wL&eWDEPBWnJi-@N?!dmjh}s&RJ; z4%tVARK%!IADq(0!(cizOI;$f(+Ypk6bs~8P$&ewp%euF1f9J-V zR@{2qCnry-5|D_!0^+FridvF0-ta2%Rw;3r5IyCkk~~VcW`}96e!W&di-lV>5|}xw zVcq(hAAabO-Me;=8#_6ZK*|?C?rf5!*Rq$UJCm&tkx!flWMM!(1XLE|1H>=Hn0@>9 zUcG$jwJVm*nL8~Ql1T!bO)a7J`DMX~wbUF&cZHFjH|g+$xJPGaCjlhE0&*q~yz}g`GvN*(plTag3bcn$lOFCXG zxW!T-0VQ|I^8*Odj7@NkL#lKnV9lDEireh_RwWxnIgCg2tm3NCW#9 z_H{@ph)GCL%dY;*+S=+(o4)bVi?0SM>WLag&uQAX2bTtQbq(%_TWxz5Pv69Yz#8 z&Nc~?-i>{ed&PAtu3x=89IdFSQ@u#W0?^Bc&b@yHk2L?|^*IA1T28t(V=V@07^Eok z0@nqL=G4^Q`@q*8dE*Z|`|#N7DX;T~8KXP94x)TxoOYGDS-;0*0T^|39cXPmaM48< z-F5f+*>mf~kVkrzT2wu%rFlm$A{S7EV_sY$-*xA`YA8;1gZSWXZEIpT>z#LPsHqe5 zB$HWxsGRj{UQxRbDHU+R0~nQ7C3NPl@aDWxO4p+tNHitwEm*>0l{4Fr`~j@@nK9$C zC)Y5>yYBXDZn^cEH{RI!+_V4sU;pRV`}a5L$$Z1uP$W_@bJnaSmtDMg@jO`&q7$k3 z2%4vfyI+~ca9|WCy8;|Ge(H7sSNd!IOphzat3kZ0xA|b4&EYlGW7=Dj=;%;9s1B;Z zZ?S@cF2re(Ac?8RL|JkaT^J=H$^i@`lxGEZ^5la*y0pgy?qu>}j~2x}=r z2F?b1-6T61!{LDR%kr(^|3E>u?OF`e?Oi-4Uh`0$4o#u*^<>y^ap4TVzERx z6hdN|J!kUFS?fQ0-+COB#$r8a0#F!?8yBFLc68#LI#pRA*X;Gi@}Q8SeWey&?Jw4+ z4Tb@??XQ?@S5~?oe())rE~Jy)-ik^DOw=Aa@U#7t{aMgWbH|}u8_X8$HxBj5yoiA3 za2O@pb?@1;8*}yXjbrAYbH=CtcEiL;Dm<%bBGviIJGStMoHA1!2OYxKxH+-aavngJtzZYbqMXiNP2a zc}O+U8b5}fSk?8UGoer==Guxyus|f;g{3C=8-Invd0n_W;0iDkCeZi$-@lrOrvkqE zT(3VEh!C5|g$__=KKV{LL|q(d@z~MzTBd*2IO6qU`3_&1JNLAYF1cv+O^ceF@tY;t z<#OGDU~R$+(Hq8yz4IaS-vVYigZm2)XrneQNU8U9F;&Csw-E9*fEi*z!)?v z#-`{T*c8OBiXIk5MFEF^L}1^(Ku9*sGDkwNAu>;e3lr50EDK-RTEYQ9$Z;sXv}j|E z*F$s{`nLlN)&tzJ`dwwn_q&(2z4^wr%1||XI&e0$ckk|Kbycp9JsSB6=oI>=Q&4%^ z5Yl%FZ;_e((||G%<2l`hw`6vu??12$^NXcdePqRT%g&lN9{kjg@yfV>la+GfuMh=C zgkgnawNpxDS6T1kNN0$DZWq%2d~d|dYsd33DuFbx!K_{digXXlN18xG;PVN0k^@sV z+nAcIG&p9{x7mTDF7mxumP7SVaxQeE!ae&+bvr#w%VVUVcf6{UbFTmXzni@kk#d)h zeSPUnyef(hiG*7?0O_mj1R*+Keb)J^vmITAIg5IRoBZk0kgq(0{FV_RmW3jshT*s; zmrTVXQGa{qUiK6%xZsSHtFF1|BWI$76kuSVq!z7I;c+-_lf^24PT$JGACRT({&kle z)serjZz+V{QZA06=1K=k{a?m^VZR1$c+xnXxd_kmu(i}rlz;L7?$uc50^L<@%M=5yDhvq%` z#53t6@fwH}s%zt@MTfM!QlFqQ7=+F+=MmDakyzJ2XSmz<|1Mg%#` zqXa<8jW`o05TzVH7zhnPQRgiKBqudS{JH?`UH3N|eiyc>+KpM8*h)erB2^>A-dk*{ zwQGI(nhmvMi&1;ksFhT$)=ceHlxnp`&7!qS6>r`@<2~oSzdrZe&pr32d++Bt&!r0K z-CLYh6F4Ny)USaPPQR+OHC>Rg+mA2%qaL^Nx);hE#Sf~Xbe3?z6Bth{UUZ3}J2qa& zO|(kEs9Bq0);C8hwH-X_Yhlk4ROx+>mGWB`sWOQm$Z&pkgLJDxpX)G=Tswx{txA&> zC9*tpSyrX!E^Suz$r+H?sT}@oF``4y*8%cH{@{1=lgy*kGzS5cX0S_7O9_))Qy=KEIJC;Wk3 zp&Q@dJTzOnI*dPFAWj?5z9!k29BmEeq&7OGzwfn_jFV&(F(wt>`g z?ikzfRW#q#!Np`F)*5g4bs>I9vPQ$3Lcr156 z2s$B&igPwd1{56Dtl6`s->W zOwqz1hs244GE3_4Fe5|{8xnq4Ikf-9Z|F0-eaOhiyPsQki|YLDGpxO)L6!`D=9;x) z)nw_4m1^W?+8<2uR{85<3+-{bkA#;WVp>~5h6>V}Y}$T`1oy~YI14g@0_$&iwZS}Np?CRtDjEiC7?jn)`BIJ{n?nzwE|a0BL81hgqSl~T z^C4qNQfZS|EY0(Nk~kT!n0RL6d^4RCT)kjU-rvCB*0?%&Uj4(P3FMTLFO`qgxp>AN z!}GV$y{&?W(tI9^2#M|zqKbbA^ zX2dt@e2G&QzN)eK%?K#gUw_M9C$^$xc#Q9;tY*3hm9c)ZKnkH|pI_P$J>v4`76KS? zpoLafGUTGXrq8G2t0S*6;@KS9#aQUcS%o1h6m-*x6<$VRHerdFp(5fbL}o;c+mhU5 z-eoU&)Xnrj)NR1wZj3bZrBa?_qD50~Z!tr7v(}3yrMBa!r8z^zU+X2=0*=GRr3ZxV z4hdRhX6xoFnrFk;3OSkP3y<* zJ=`&m9jp~{QZb$>U{pYI`wFWC#l^tfvDMWgh5TB zFtiZ4N93l5UHsG3eLQ()r3VO)jB@)P3wl}fX8RR>G7of|UBG2+^PF;oB_l$X$3#vr z8Do|F^sEVav!nHA+u>ddB#uXmE{Fr6kW%~P*W*UIc}N>~O=^mp-B)Mu2`@A696IiO z!eibBrT&l<&-$p5gZy1_nK6sFt1J;noCHwE^*I5h_$^I62>DYfa)wny*Y2AoYtU4Z zfnw0+x@1!);61sLIZ(%h_5yQA!;bOkCq0t*i`-Q6aZ*b#maV?y2v);q^^}!Ww>&M3 z)s}YmRLRp&_ln^Dh(3-MY&W`oMNk~N<6-h8en{$7*=#<++Px%I1j3P-ZhuwGMd@HA z&ccXfVVbX#PF71qDCF+}C!bS9k-DArab-k2QI5|g3-+Wly+?=967pF{+Qs65cXFTZ z?>E%=Sc6{w9(=4pW>Qj7^+pR#Eh|sT-&@)PcMK)Oy9PPTgzB10FCB-x}3WOM}sx%161o#Z~THr%O| zd70A|H>=A4oNTvP_AQ|`2F5fP8OG>&Jdf6E&oHI>y~g*+Q>cG8GF@@Er-~GFy%IAp zpz>>rr4coa$gLD~`scCQ-&4)Jd^G=BG<0HtOz6vUe@Cc6)g2*38}k@ja4hZJU<%WI zGxMozrgguqrUk2xN7<_@?!3G$=u}(^@tx_c1lTqe2Q=5=xTPLzhuzn&lH+->2<47@ z2Z~TcS5&SjZsQi=>Ljdx4RX2;&89JTA;rdB(`(96ivxFWe2%i4?Td%XeBjIvPc++D zd^J^E7L3k2z-JlwPAWV9PmFm}&PFPz2lSrG<0)<^Lf2bd-cm=!F4FMo*f8oS93F?( zJ_-8i4=`G}mF1eMC!aKAdJCR{ir?TMsZWaa@D%zl=O$oEiFKqIFUi?>gfGn8pJ;Y< zmVwcG0#g?Wt!8?M?S6top%LS3-IcTodn)Cama|;dJDuX=-CdB=e&04Y@k7|kGIP5e zdU6mFelG9ErSF)70MCE;5cjC5yNr!|!VK0OxU*5x=@RjsLI#eZn2ANx3AVWQRp-I2 z>f3-HC6FjiPM^5}CXuNMl?>7u=Bxwqf15c}1gpux98dvX-f->pGwyGUT{rt%H`jak zhs)jGqV@=<6oeQWxT=O3hFi&hrwAl+UYbxHYp)eCW^A@J?b*JwruD3T& z$QPBG7vLbGuZt>Zgntj9-rX>rrcI$76ONfw)mbISM5qV%Z7(!P(024}cV#|Wm$H-(b*giEw z=V386AgTkXF~tL@JQkW}gL@1ET*CKM&;zBaqcY5El(hTO0e2-EUlha2b|-bu?^)W~ z(&ab2d83n1cAiF2Wd>bWZuDPw0!~6nExblC;gJUX8;Y5vGsE(F8PSAKiQczoh40B~ zV>{^M5n`)iDMeEJI8!oUy9kvW(C8&PYm{Dg#HLawmfrzqqqgT7Hd?vNVZH@Vk5#DK zEbyU|Ljh`FbqQdT93EmfSC{AGAMr*0jQ@!HE4?VF$d{`hR%@KHyGCBi(FzXbpatZU zJ=&H4_vr^$X_Jyy&Ujgx)(e{UlGF}UKo)aEDCyF5@OJtQNqR(3@XnH}WdT4|MPefO zeyaqS2qx+IW!XJ3A^OXI`8ZcM{9o|@!TvXEcKvXIK#K)w`&yC^O{Wb61z%=>;#1} z2O4vZZ}MFKyZENgzc;^jyp4NkUs<|*!?UY9-!!mnWEMKY=OJLN;5a-vdd8cp*&DVO z-=tq)(<@Tp_8i(+-6&jrcmD411uwwyJ0*tZDGF{mjZ^N(wI?Pm?d+24e|M${6zE+) zo_lag^1&YdZO@c-KTovx*eAIEPcQ3e)}?X@YR|~P@c(~+hC<(Tllf7=5}v`+)z4*} HQ$iB}KAH3%