From 8b30ade923e9ae872783f0026211c5e7e1a171c8 Mon Sep 17 00:00:00 2001 From: Frank Song Date: Thu, 14 May 2026 12:06:43 +0800 Subject: [PATCH] Add profile creation model picker --- CHANGELOG.md | 2 + api/profiles.py | 70 ++++++++++++++++- api/routes.py | 4 + docs/pr-media/749/profile-create-after.png | Bin 0 -> 58905 bytes docs/pr-media/749/profile-create-before.png | Bin 0 -> 50149 bytes static/i18n.js | 32 ++++++++ static/panels.js | 43 ++++++++++ ...st_issue749_profile_create_model_picker.py | 74 ++++++++++++++++++ 8 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 docs/pr-media/749/profile-create-after.png create mode 100644 docs/pr-media/749/profile-create-before.png create mode 100644 tests/test_issue749_profile_create_model_picker.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 1137235b..823ade7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Fixed +- **PR #2228** by @franksong2702 (refs #749) — Profile creation now exposes the same configured model/provider choices users already see in the composer/settings model picker. New profiles can be created with an explicit `model.default` and `model.provider` written into that profile's own `config.yaml`, while clone/base-url/API-key creation behavior remains unchanged. + - **PR #2227** by @theh4v0c (closes #2223 — critical) — Context compression no longer destroys session history. The previous implementation renamed `old_sid.json` → `new_sid.json` before the new compressed session had been saved, destroying the only persistent copy of the full conversation. When the summarisation LLM call also failed, the user was left with zero recoverable messages and the bug report `Summary generation was unavailable. N message(s) were removed to free context space but could not be summarized.` text with no way to scroll back. The fix removes the destructive `old_path.rename(new_path)` call: `old_sid.json` is preserved intact as an immutable pre-compression archive, `new_sid.json` is created fresh via `s.save()`, and `parent_session_id` is set on the continuation session so the frontend can traverse the lineage chain back to the original. Even when summarisation or `s.save()` fails, the original conversation file survives on disk. New 106-line regression test file covers the no-rename invariant, parent_session_id stamping, and marker-only-result preservation. Stage-353 Opus SHOULD-FIX applied inline: the preservation block previously cleared `s.parent_session_id` before saving the snapshot (writing `parent=None` to `old_sid.json` on disk) and used a `if not s.parent_session_id` guard when stamping the continuation. Both bugs broke fork-of-fork compression lineage — a `/branch` fork that subsequently compressed would lose its "Forked from X" badge on the snapshot AND the continuation would skip past the snapshot back to the original fork parent. Maintainer fix removes the parent clearing during preservation (preserves the fork lineage on disk) and drops the `if not` guard (always stamps continuation to `old_sid`). Two new regression tests pin both invariants. Traversal now consistently walks new → old → old.parent → ... root. - **PR #2222** by @franksong2702 — Settings → Appearance now wraps the "Load older messages while scrolling up" checkbox in its own ``. Stage-353 maintainer resolution adopted PR #2227's stronger structural variant (each preference in its own `settings-field`) over PR #2222's smaller in-place wrap. Regression test `test_session_endless_scroll.py` pins the new per-label per-settings-field contract. diff --git a/api/profiles.py b/api/profiles.py index bebd8201..35440b47 100644 --- a/api/profiles.py +++ b/api/profiles.py @@ -16,6 +16,7 @@ import shutil import sys import threading from pathlib import Path +from typing import Optional logger = logging.getLogger(__name__) @@ -960,16 +961,78 @@ def _write_endpoint_to_config(profile_dir: Path, base_url: str = None, api_key: config_path.write_text(_yaml.dump(cfg, default_flow_style=False, allow_unicode=True), encoding='utf-8') +def _clean_profile_config_value(value: Optional[str], field: str) -> Optional[str]: + """Return a safe single-line config value or raise ValueError.""" + if value is None: + return None + cleaned = str(value).strip() + if not cleaned: + return None + if any(ch in cleaned for ch in ("\x00", "\r", "\n")): + raise ValueError(f"{field} must be a single-line value") + if len(cleaned) > 512: + raise ValueError(f"{field} is too long") + return cleaned + + +def _split_webui_provider_model_value(default_model: Optional[str], model_provider: Optional[str]) -> tuple[Optional[str], Optional[str]]: + """Normalize WebUI-internal @provider:model picker values for config.yaml.""" + model = _clean_profile_config_value(default_model, "default_model") + provider = _clean_profile_config_value(model_provider, "model_provider") + if model and model.startswith("@") and ":" in model: + provider_part, model_part = model[1:].rsplit(":", 1) + provider = provider or _clean_profile_config_value(provider_part, "model_provider") + model = _clean_profile_config_value(model_part, "default_model") + return model, provider + + +def _write_model_defaults_to_config( + profile_dir: Path, + *, + default_model: Optional[str] = None, + model_provider: Optional[str] = None, +) -> None: + """Write model default/provider fields into config.yaml for a profile.""" + default_model, model_provider = _split_webui_provider_model_value(default_model, model_provider) + if not default_model and not model_provider: + return + config_path = profile_dir / 'config.yaml' + try: + import yaml as _yaml + except ImportError: + return + cfg = {} + if config_path.exists(): + try: + loaded = _yaml.safe_load(config_path.read_text(encoding="utf-8")) + if isinstance(loaded, dict): + cfg = loaded + except Exception: + logger.debug("Failed to load config from %s", config_path) + model_section = cfg.get('model', {}) + if not isinstance(model_section, dict): + model_section = {} + if default_model: + model_section['default'] = default_model + if model_provider: + model_section['provider'] = model_provider + cfg['model'] = model_section + config_path.write_text(_yaml.dump(cfg, default_flow_style=False, allow_unicode=True), encoding='utf-8') + + def create_profile_api(name: str, clone_from: str = None, clone_config: bool = False, base_url: str = None, - api_key: str = None) -> dict: + api_key: str = None, + default_model: str = None, + model_provider: str = None) -> dict: """Create a new profile. Returns the new profile info dict.""" _validate_profile_name(name) # Defense-in-depth: validate clone_from here too, even though routes.py # also validates it. Any caller that bypasses the HTTP layer gets protection. if clone_from is not None and not _is_root_profile(clone_from): _validate_profile_name(clone_from) + default_model, model_provider = _split_webui_provider_model_value(default_model, model_provider) try: from hermes_cli.profiles import create_profile @@ -998,6 +1061,11 @@ def create_profile_api(name: str, clone_from: str = None, profile_path.mkdir(parents=True, exist_ok=True) _write_endpoint_to_config(profile_path, base_url=base_url, api_key=api_key) + _write_model_defaults_to_config( + profile_path, + default_model=default_model, + model_provider=model_provider, + ) # Invalidate cached root-profile-name lookup; create_profile may have added # a new profile that flips is_default semantics on the agent side (#1612). diff --git a/api/routes.py b/api/routes.py index 3d3c5a15..dadc17f4 100644 --- a/api/routes.py +++ b/api/routes.py @@ -4892,6 +4892,8 @@ def handle_post(handler, parsed) -> bool: return bad(handler, "Invalid clone_from name") base_url = body.get("base_url", "").strip() if body.get("base_url") else None api_key = body.get("api_key", "").strip() if body.get("api_key") else None + default_model = body.get("default_model", "").strip() if body.get("default_model") else None + model_provider = body.get("model_provider", "").strip() if body.get("model_provider") else None if base_url and not base_url.startswith(("http://", "https://")): return bad(handler, "base_url must start with http:// or https://") try: @@ -4903,6 +4905,8 @@ def handle_post(handler, parsed) -> bool: clone_config=bool(body.get("clone_config", False)), base_url=base_url, api_key=api_key, + default_model=default_model, + model_provider=model_provider, ) return j(handler, {"ok": True, "profile": result}) except (ValueError, FileExistsError, RuntimeError) as e: diff --git a/docs/pr-media/749/profile-create-after.png b/docs/pr-media/749/profile-create-after.png new file mode 100644 index 0000000000000000000000000000000000000000..12c1d58dd4654c5fff0ba0b2fccc3a792d480255 GIT binary patch literal 58905 zcmb@tbzD_lv^I(X0)j|O3kYmLK)OM?yIX`!cQ;CRZ;F)Rz`o8Df z^Sk$czc0@ELl>~u+-uG`<`~a-o-u;uWyMgD@sZ)+;7}#Rg%#o8;LG6Po^2sM1%A^w zbdL)M_Zm(@SU}k&Wp^H4TX_H<;cz;)S>QQ3HkNQ@bF&uX>*flr3gDk+?uyE0Z0wgJ z%CFI}VEZix`@@b0^roI~p%44k2fMo|oRv%6u1X|8x71(FgSWpZgGWVbXtY<-^`0|1;i~ z&(9SQ|M@i*`TuO_sIlf;$pcjy6yVcKdVYV#eMd)<-|A7qb`wgY0dY)Xb+}%;SLUm5 zUr0$5Dj3Q(uXe2tWCT9{Wiceb*nIHud)^f5XMTjrE#_G`k7afqQlMug@g%4yDk2_o z(z)RgVe*52an;*9Yw#5m7hbk;{#re1S-h?{;oh%K*HU*;&fTuNu(BwXUl4{i5IqCN z>yeU_6y($Tto%3&M8VheX9ZTI4=&EXgT6VqStMrmwQ{!s7(HlYZaRI;NRL(=TTz~w|xn<}KN4{FR z$h9))prFgwPGBq118>aH<>gAD;13-w+~I~3s5aXlxE|cwYopOy$U`+{W!XM_$T4o$ z7%z%nY%nS+DUmiZn%IPrvTmc@U!Je!e<_#IibN;DX0pHjzAV&KPyj**6rMq~^@72a zhO1BSwp6wkwiyl1h(<2tMB4eyIeMx=jOdq z-aFod1-_eGYTWIV-db}N?J5szRUG>iwxzRbU*+=B+&`9h{3QGFBz+u_i$o3%3)`Es z*VNYjJT!UuaB!$q5fc+rlv&mb>4UIl8AH|DuCFy4oe2mDGt2YAI@R8ilK5&u#o|(O z{4Q&f2@&DDVh-ing>y*|%;ss1$IbfE^68IBiuY!1t>lkH6>K#)A3S?!_u4kCoF7C@ zox9!_vF&< z8?A>?e`I8vSae_N9Nj#?p`RxwC$Dx|f49ADZu66HbMJ9`-;&rc>j3{pvE<}_67MN9 z_ui((q@aLTQCY93D0oWOwRzI}E&lZ3l$Ct7I|!nfi;|VSy0U_S2Rwsiebt^wzwyVb zNEDiCPaNiFMdjpRxm7&v?eD){x)8}?`tZT;(dl44|8u&4JGhV02@eXS-)R54T-4*3 z{}iRnGaUmYB4A4uI(_Uk#=^=SAoiF-TWb+8V*{+$1t&$ z5EDc8Xj59TzO9R zr!1egmS|+JG{%}2e6Z`!V&1e0<(jLrRo#q``MioD8mZT0n(F(t%}G(QH=C+_ubU3( z8ebHZhnVmK+lcpN4>K8Ao>HJ_NC@&-5{ldEo$c3H&&fd*gcCU1pJ8#$wcQPk)hPQTuNy(rrrICWi>UUhXlYL_kL)!o^nc74{6aZC zI=VTgP#;SU?3OCKJu-mfwbw(mZ(xc{xHAgE@i_Svh~za`L;WH+G?d@#R(o$|d`tao zZ`Sf+pByEFgVW2!RU>rpH+3P#8GsaYn=2%AbtBvh^NYtz?U^O|w>iV*!IB|b8!SPpb2hfr zV@&_oRQV8Z`q!?9-+fomuAQ78?$02!4-LUW78bYXdoL0{*>rmt7;p(FN=i#_kL04J z_RF)`t_3aaqcP~U;c+|J94zRlmd^CjVPj&}yPdJA+KjwZEmVw7J6P~^xW9FD3nMhe zeSMht1PiUO(3GIQK^EV-xTwhEbZLa1mr9DI!NG}F1VKYX!+?su-3GQGxH(+sIisNw z4*<{4<4wM_39?yiL^EtTpqz3U0xR@hhVAi6ugjil+aG49Of)oXJY^#*(ftBm03qdoRr9*$ZS=q}M&-WH<-{!Xtg7Z^w@A~=Q|1sKj^n@=q zrif}$Z{8gf1ldI$y8cm4+3~%xFBX9l$;c#MD_vSDCrF zjMfWSWxFd?tn~EvFeN!I67$72k@+Upg|;(C`{tFMo9HKNLd{MCj*hjBRS?Kh;KX1V z)djFJ*K>{LB_JEkidusk(G4TYfuynB$^6nwEhZ+99~e!_91f==_d=V6pZKjLig6sz z&T2GSibV>ah+r$1>9r%bju(M-++-ysRTUL?4Mvl)UT?>m5%apHjuuf#Yy5U}Kffhf zWY53y@M=9Em;AQW+u%@K#H*wTAFFmSeMDDmwO}*`;9=#hDa+1z0`9`0THtudndEBw zW|S|dm3yiW9?wz#@wJC~m~uj1La(y84<5)O$soQJKC;QZs0g->j(u_l4CT&OggnRg zNvy@~#?U0ko#%S9X&kn?%5ugrHy7pEE57C^7h%;|Nws@*TnQQnel<#6TK zgY*nU#F__J8%&ud%9F~9PYgz41I~)=5|XFSO>r^ZlHKJEKe8IFOAep3zF^pD)W#!s zqh~PA+4ZE3Sn4dHxl|`!$4~jrGZ(6ie0&R zdF`G%%?90>60xE~1`{Q@%C4}HfsFxzp+1A|!MyzZ*(nF32k)6glCz!393Fq9)yP0J z-Udl*?A*arE&Fw`$h1H|Kb2xt)2*Sla^2QkM-2^?jPg(+p&xi38SPJ}APc-&wHCT! zEyuk-l%6g8%LSZ?Y3twRWmj)n#^`R(gm=e@9bVn8hjx!jU38a&w1a}ehKDEK@aHj% zd)yPoj9O}JIhRUgZ`U928Fc3OHk+*XB@9^*xVK)(kI2h$Oc#AtRAd_8+BUHx?@Hr4 zF@lfYl>GxYZ|j9QgFyF}o~A)c(R~8y0t`{qWY6_Z7TO=)@$gg$`rCo~;*C0!I~y7- zGL=fa?wU~F3`vQK8f^~#fTp*{tJ63SB(vv$VT=wYBnr79Axvr#kz9_??YVT@Ja*1@ z>LIjR{ptLr&Ig0T!<7W=`}%NQatHSjjEqMstXNz>yC~%K*A9t+=%(0Fkh5?zncvy2 z-R>svnrw&x_JY5|hR#Ye%7ChDr1~aX?Noa~Ti$-PPK@51r^VWKPg8YlbG@3N!Iq@F z#iQEN^=<=`Qd+JoW%i?KP*YRyx;;TdJ-wd2@qf-X(819W$e?I!F5)ulr^+)}{D?*9 zUg(QBD2spmo{+{HXndoZ&Uc=5T%f@GbJ5P(TNKUHlSo5jIwK=0B_1P@X}z21%lQF+ z+MXlwG`;wy-N{B{&+p%fiHTlU7=#1_-EhbeRV~_iuc$Eq5Y;>*-DqnXdRbZ+IL*LQ z7bu28 z%p<$f))*Ji;sHA&u*yqz3B?w8SSyH{^9v9aUwi8$`_WV96T0QuNqAh3ol+S7``!4iMdM6cp!#*pTE zNiz+0|GScegSE%uZVj%8N~yY}TFua459(3EX$p29#&^~%@k}VeoTKG&LH56)YRDj&HWzABJ~WLBPU^t)V4V?K92r1xBXd36e%QY zm)NF4zM-#jL2FALs4B&p!IMK$MgQ6coPW%F z+J-8yl(|`v(pTta0)t+Bnus-EVk3Rqhzck(7!9LTWAa;?cS%h8dM zg7;KZlcieC{r%Fz%>ZAu9!E{y=q#7s=CC#N7ux_6kmta9kF21kwzJTBcY9UL!`qs; z^fWP?o?a`B*PX&lzSV7=T1j+zCL*`0wsw84F?N2g>}NOCBi;0PeG$y~WbY56=^eGV zu>oBikK_^nnc)hmpkOC7rST`E-3yyVNmcbfC-ei_k4;wP{eTpl1VHqrrZn&a_QFGZ z|KFSo7;(jm61h-dv-5{DNiGlhWPD%ze?Tf zX0RYQsUi2)#G+M?BThWe4D!pKwvA5914ZSOk0meMbj69 zg<`*Y{+aX_Z>f%~*K~9Oh94}{+e=8Ud>lp&>B3(dVM@!$u(GiD+$s1F`gLE1b#ESB zcAgnmmPmK_CQySm;sV|fj(R0E80IK$)S~)g5}+f>ef?m%ft`2TJBB$qhqvuLl}|_H z2cmA;qC5{kTz<(Bh@Ydy%HwE~a-Gc4>rZkh|72XiiKqv*IyfXGZ!;KkbAxJrXmoVC z#nn_>o98Cmj}uWY;Kz6(s zRgPm)fiTOUjOHw^oZxj)B;xJPi@B=Wa3$fLdhFK~Ep9#)BV7T7E_;*6V-i!uru2_a z^pDB+g$4InvL&*iViX*WvhxcPB3prkkV0b`k3UkdhUe#}>gy+wwe@Iu`~Q5W>)5x3 zdw?Yc5m!>|!JyL}C*vgdz33Iow1T|jOtdCZcSu1Q|93wY*Ah06sZpLA$X#|43a6DX z%1gCZ#{1N1OB!l!r4|giD7}lVGh?%a-3* z=LfvY) z`?<|f&l_ioZszK$^@*Z7E~!_5_wmcq>T6&itrBA> zbT%Q>TVPQU4H#ar<^yRr^3VABRdjBfIMSY0&$< z#~lhGcBO%T-lxDn{yxT0T+bLtCVQ=d{y{) zHc{IE>F12tws}rEdf5`^Z)G01Weq^rRg8iQ`-fPfi6mYEQjALMpVNOmL5arm_g zZkvj0|ABG|MBC!CVc%2FNaU3IxrT))R>>8ekqNsmHzbL*Jk~^q)c>hZz1Q)W_bdWZ zu4ImabQEPv0~LpM{CQB_VwE;cF0s!ON{te`D=d3V0W`ZRpNzmAF$u<42J&yI!X5;C z&k<)vfmvva`@JPvrLSkCkN#z6w8))gK3Ams^g>$9;6#D$GsOC({yD_C;pIyffdi>ksSMK7mdV{Nj~I(fNw*6-GO&~Z(a_bL$Io8 zzU3(neQ<9jZe?MXU}l!cwZ9RlMgc55R|J6rS=7U&MYY97jg>M&&NZ-3RP@KT#DE!< zZcBdB4T53|le6#sy5(2BAK*r>pM{{80gl4LFOSiY-z&#eGmT8=ktgBdwE$-tbib6O z!i0%Mzn~%^g^Q9Fry{9%>cC{huaLL(73TsqN=kN_mKIDyYZT8Uo!^?> z;J4nj7r%`)DjpIh>zSU;%A#1o8+W``6NHkkQvOZ4QS^YV(%?o!!Dy^Tm2AA6_i#_C zV01EWef<~tdYrQEu@3*$r#T+YM2h@O^R zotmU^Q+=3{>UFf34Q_r<@7f!Glr2J`1HNx#tfiWo9ISw$%tZ8e|7L-m#z2EP6?jkn9`L4wb5oegt^^CWUemB||# zM0OqSOKr>)t^D9C-=FLu$89e7yi^w?Gc3Mf0xx3v)j0fqt3TiWx>ul%WO8n$h%?h0 ztLuq!A}NaKX-ykErWp<1`xjNy^GWe91(YGr@ji+-gjEDuyMBr8h}=<9RCL8kD&ft5 zkb1<%|L%{OYjFz40KIVC$Xz-T4elgT2HtT!Z8kecECz z@%p05`bPaCL6XgKMRQVa={Os3Pe9b5q8l}C)O3~)#hC`&kw0~EJCoKM{TiKr4?zyrQKR70#m$CM#Spgw#(_NQ_-Jz$ z%i1no2O)`L@w-&*oAuoQD5SsLAAZ=@qgMdMVdUcdHCLTp+$3H*bkdVRStf2Ps<}HP zQDXZ$J)^@hRK*Q(lY~x%?5-yygL#MF*!@83;qCGm0fOm{aX>-wt)A~U7lB*-3|etT zjMyt`Y93Bbwh}RidK_Cv8miDF&ucQVs~7$ZwKNoHTUgwtpRm}40y)xb_-k32idDsN z_V6WSu~EYD#whZXMlVMws?+aHs0}!kyuM=GQ^k&R!p-8{`si~N5p%r9%97$M?1hQq1Rr^Ww)^5Gvr}`$8XJhc z|K$Rb5s*;cs(CB}tCkqMzV`FSP&yGN{Ga7}Xd)x_M;yGXu41ZY8f6wb5P?s7g&p=B zJ>o@X)zT{_*lC)LsJuQt#-WPUh9)o9j+HWRrBUu0JBim^Zte8z*mC`7LE5Attw7VJbf0hJl4O4{Orh3F*N+3v|2L*iET_?vNLZ#m-lx{kFNs7;?vpM&mEAWi(n|zE76qt z6uxa=DkF$#@DK0l(H-U?)~eLHu@8FByU(vy1jJ&y*i3uLo<6W;5+;wiu&_FG|%XvXDySH;>oorge6{hQj5BFn36_19dj$Neu9&Z^9;EyN*iV>X_Tch*Aa2446Z$gKK zJ~JbVgrq=C9n8rJn$ji(5~5;NO9GCeJkOgASGI_V2(4N(+MCfTzlXjhFw#n-G_f8B zeOj{_C37g)DAqSBqhi;YhdMFA{Z*$QdpD#kXN~NF&<`nsSZbi3QlsHYJ=f9KZ{iGd zaN*j?UtCb}JloMk?KtesXUr-+HvZ}7xE?G8@jnyv`h<* za@Ih6RzPm90Cz{Q{-r(cNgq@Jb+}6|UVT3?Ev?cdI&^D&p;gS#@KRQGwAsm$fjIj1 zVMPOD-Ss3M;7?JB=OS_95)$;9&!JG)zhb|)LdX8wll;4WB15>h3=ii-hQ~Si`2;vP zgUI3v3JM}3oMdD%f8O?E^l|b5Q1&3db}Rg<^Eq<>;@?!`a&zhboKxtrHu#j0Fsdaf zDVZxpQ0-HoRo~R;ig#`t#C0&5ADWaz!^`Dt6}zc;WpTbUHa-sM!Xof8GL8hvgS++D zd+wPTZ}rMjs3W@#{>DLhtR3lb5JLmhU>5)*e^A|R$-uHykTKBNggrFc0cQdh-Rf4@<@6ga&{sFJl!otc_ z9jN_gnWmOn4jqr<_Ge8^{2Ljs1KluU-U^Ls1m&Loe$5t_c|aFd-XF^B$`EK>Y;iqU ztBK+Bq%B6yI#*C&{1GSz{`-!HiyZ|~dK6StQk*>tt=(>C__jwYs07KfD+hJfi#~R* z#kwf~={Y1MgqYju11$?cqM0O<@ST40A5Z1p2mW#!&e?O2o0~h_;`#$n21fL6Z#hja z551H*?F_wp1u!sU8*Is5;+9ob6F_-8e~{nZJ^P3Bxy=umFNj+HVX0MT@pJP;uiZ=RDT##VP7Xlk=4D<2=pY^^zc8<%E6^Udhi)*H>q9ElTv zt<7OK{TXx*XzpfaMKmbA4g5pKWnezTWWwVzt)*EsR zKH$s3*L-QohP}{!k<9C^!IumMgC#8BoZpxp0INA!Hov@lq^P4~2^&dtbK`=+U{+RY zuSodl?uUbZb;^gZ*l%3k-*u0W7HN)$#4E~2Jsfr{cIY#<&gMw8qLW)-V_|{xKCrOZ z*lEIcXgPxdBBq+1+f-GtnV6Win7M40{I=*kJyZQ(64lhQ!sxhKZqA9aRisnRGwqGO*+4KtKn~HS69~}6jW5}sR|qsQY`vI7msVEc0fAU z*Y|1pK5V-Sn9a>adPZl9tCDDVQYI+lll8&J&E>mm$Jy2!lh28i@efLDGt);NXGnT=IMgoi`rm?gR1)#-2a z+eVV`FV^iX^+Y?xF)G}$c;D9m!qoDQe8n4uYy|nFkIkYa1Mze>1=24BYFz!e5#y5k zQ=7@i$?b=;@Emtky^q({rz(A|7h2k#4;bBVzUJlS7QBGX=S%joiiUktZTA}J@V()2 zIW$0&_C=`m_3@#Su``>k(@5vj0Tc__oh-DAwcqZ5f~Q$$Q5P-SlV4rz9wqm zg&?u8jKSiPR}cUzF2gjFqpHc5)yV<XwUhP)aNy7J}H zuRIpAL|(-)$k&mj`N~TQ{`P6TLm6(skR;UBt{ZyAW+E@8qSDpV^C90#t!yqOCPq>K zi9!Ge$7o@JFOKPSYgj-?C>$dyhC=G+uj`F`jkE2<9|6;Lp1RFWn`b-DSluO>wc%NB zHRFrfSy&UP-`F7^dE;cGJ^19V54v8Yf<7W6)!0Q9Mejxr)zWQl62ouVQ# zCQ9P86cm^(x0}OD>>{=D_ifv;R1EU^i){vDCs!wv?&rJWcp-s-RFhx$I>yG7xwPlv zM>{elXT+@vjiI{33&GZKxw5Ce0=D0N1}JdVnn5tvh39@5hO&ia5f1m@UkU-0Saxr4 z>NmskQnUBny=ex0;#b=b4mM&V#dod7ZK8`Dkdyc8}NP=JSB&5+ibnH z+O_Hfpxt5lvsf>DQAFd4&Z~B##;zI&DIvl)YSB`u=0E_aBjEg;(&i*V&ZcrXw6-1v5tn9SLj;xot@nx zAEnhZK99q67E@h-=+>+;nJQE=N9GeYK;`qeT!UQ&$o7f!;lJ5xY~TRG-`47?SaDxZ z&nM2;me1-%t@h=%_xch(^#&g=z6XKUHU@6Aec7!S`g#yIvZEW!0&O#>T9f1BPCR1(H%y#z!Df$o&3Ijm2hbEm5MG#eUuLQ!GOME!fm_WBCXuHVjIh zRP{Ij?MF9I_n&N*!$#v~=sU25j*pMyY=TMfkbVTtj*xanMe&^hQHm8?Cq>@B3(~ZiFvn0 z0hQPzn$6gJty z)g}BZD#QWEQ=?SFv3CQc6kYsD`}4DvEtfYhDBry+(_n7bYqyF!Gi)|1s{%CQ&SJk3 zR+h0eo-5mV$veC*@3-!IW36J%v$6A!swD)6R`Octs5 zH)GNmXw3P)!2(&#)EKXcbMNPUc!8F-hHq?ik0=ZxygKZ704nPM3|5#1-PCEY;bmd* zSnIhrG6D~#HrH9s3cP%IlFF@9U~6Z0JXZL!YW@SVp3y+kM+I>^yWTLomm>4b%j0C2 zRIm8m970V>x|7-Yd=bu^9I>ShmNzeckB%mKpENmgcZcEq6ycm(!w2jX zaPK(IDt&viXh4u1crGwrAGxtJIdsrhr7fM_X7dwq7AQmk)cI=X1A0zYC3*QJRR^Hn z?Aov|fuVc6xlyOCdPhQw7zc;6t#&%TTBTHzg8pgtkG|T2adSV1>P(@V5o0WL^sXgn z1(THh8=SzSw|{KDF@t5TaHpFb7n{)F_EqywW7j8MXMMn!9Y=QF~z%g8+MK;ffE>*m{e`~Gc!pe365*kiKmJf?qbca zNz&ggM1G1_=A70x`ifm|w?4=1Oq|N^U8+_d!Rzh>6rj8(dL7Ib=OF)Cuo8D&enbKl zECX->6CY z!?YjVI@a`{1gQ*}Zx2o?G<5Ur?!)F7A}T5rJPqJ@z@KlE=G)u3Nx2c^90jIwMhK%$Y1QZR8LiHdj#%X zWz2J@IJcSptbWh<`VGxZ!Y2fwuPYoh&+jP!MCTge^wry4S$uc(Z7Wc&y7=eyzX;Oq zmPNYl#q8=`h>7~g(P?QaDW%eS+`f71_4Qd~H?7jIpU?wL%muykM=|n{iuA>wBL(;6 zDYXsONV#5pna-@88Y2hAv-CVog`?XNUPpWSU3*I zqW%?JMYR72fiiByY$YVlqi=xHWvlra37KRXZg4M%vLQJvL-emCh^1CQ{a3OIktd?f6lxMwhjCf3j$Nh;?z45FHs;Vp7+)fsz=Chtx#{(q% z2tb=bVF5^jp}3%6C{Jc|y^kFgpM{Z?b$q6Y?AaHx&x?bNkq3LHryQ@(uRa&!)UL0u z)2Hg3j6V?a(x+<)F%-&32+fN*JNqH%A|f@|td1bapsE!0*HKJ28(2j>XlxHaZ-kRo z9Se-2bOIT?tf(UCbBWo?QYBe|y5h^zd#u_cPx}`8Zqcmp=?XXGGf{I+?_PiC=3g7T zZ1!SAUS4mmlD|BKF{iq`*Ibj&mpw~lPN1ZuWL);=0i11K*y_4expusatSkT^iP)_W zSr;nwFMv>l2L~`un%iJ$sq0IG2;%mY;O^vVDm8UAdiHKt0^SnZ#8l3Tzkz_J}G*vvyxB0iI&pYQf3ua*HBZ;`b~&r($kV5e7U3SQ<6IU%lQc zd#4}v?B>GKePfr%3=;>a46P;yKntUznN~PqbJ#+WPVvfCH1C@~)^V%TwevI)jpUX} zCTX(PJQ;@$-)VbnX2Aep({~pV?R#z0S;7nNF!j^)*n)+~j#f3Ty-! zDQWQMS7q9*X8yi`fD(Tm1az&a?#?taV)h@E^sk-(HL592&Gx%%;o6$}+%D0?c2!jf z2s4vq{FQsNqAU&BmiZE-nbFD>u<6d5)Q3yz;zEzJ>)2uP=Hdb`0xLF?DIa5og~rt8 z*-TI0rdnFdDUZLUAm8{lun;W6w11Wk}BnEb=D1 zBhwAwa&IxC&_9~Nt zlv1g|Md7L4a8>Jc8Q`M>xR!f8_{vp6XSU7$G{(WfA%FGJd5cLv;C#I159FzN09_&l z4}WDky35SWEP{IJ(Uy`j*WpW0APsLuNRs{?IXo(=;_EZ2g2F;ds(hQ~3eOvX{nC6n zUiUM60sp>)c2=BLROVZ2UjGBt}GJ%}C z*u8S^!;LgmZSKU*VO3s$e`$Cp_#8hJ{+!`I-c| zb0toe_hy}APA2(G=_q);WB7?pG>h%CcGBOarz;rkFqQly(X8QN`t;>J=`N zn+%!LR``F((Du;BPC{f(Cyy3B0W8p8Y%?wV_^Kr)z>U-I?H{x9)|%2GIh&!F{!c8>y~7zY3Gk9|z*@&( zv_W%e$dWEtpz&8o98ApBQNDkk!(!{&0oqaiUh@5<|Ivx_zuZvy_~`$u7%GIV9a^<6 zqx6?JTMN0j$m37L1KKseWbIF2`UBeTUx)Kw{$h2*xGtcR_5bnAV4vFl7;CP|sL(%; zeYyXX$Da&~G)8y~bR-{)Ta%h3xkg?;zRVYk;q>0q7tD9l{T~s5uA$qPyM!#{+0|)H zUWCR3{u;`Eki<8eH0A4)Z};MP{16zL5yGPWu{zwPn0$}tTGq;;ZtzWla009B-=Nu* zyl6bFC5PoEH{9vShygSleQ)=@4^D3o_Wg@W)=+SJ9={s6{x5n}uTa@XYpaSr8I1n! z+u?=i=*<6}EikD5nUn$|uFp_)!X&qw1h|a&>%YJQOO_wcKPd36tSoIK$PeQ+kmn!@ z!@=1pw0rFZ1@$-|cxWhO=jF{*fk&0{2P+o``b)wx^@D-x>Z+&LF!+ZQ(eQ2f7lD_T zmz7zCuZe-iV4%&l?7O|c{O$5C4}@4b@3nB8uMOyaYucUzGvYP+FS1lTxbNvTcI&tB zFO90Q48DI^*qf>CKc`bsfpmo$pSbV@+mY%U8gjVU=$*f)F&lRn%HS(m@^b6oH(vVA zSEEwWL*p0tSZ%pfPdioc+G;59Qas8+;Vl`TV2(U08c;bF8X5}i?fndQCC0drV9Unj78^O-{;4N%4DL-`?Mq0qPqP5|UQ6QD~`UIe;q9 zwpsn4n=5r0U&Ue>)2$K2T;>l+3aqo%4O-b=C}!T=1D0jRr)_7 zX6p}(o2#kh_V11<8XQblv1!@leUUIld;0oDj~whYlSU!rfbt*~v73>Nj*ri0HHR|8 zjofGi)s?mepeZ*61yJ1A_v#hqk00cc5GLTGx|N^rVyU3HxYE+nF?CJ;emx%VdnEYgj{(j1T|nzg7h!j#HT3)%w+O3kJU9u705^-2l##LWlwHrn zGp%K+%No%eS;GBQ$(a6QOr!Ed@AV!OhroKKQ{@?z80|RCRUaFbnUamFcm7!COa1M{RAk2trQRpFvL` zG#b*WTnWTj-tyL`C1qu7fY!&AnrBz4ISzcO@G#uj2g@X-MmzA<*yKo+2hhAUSvt$+ zu;qtAfkG))2X*4kRRg+7gx&Us4PJvuR@O;{Ea>P4y2BFryzhH~F2IRWEhSmm2q%En za=*KY%o4mgS2fCZ`Iifz!)4GNFJBBA8yhQ9p#?W{QBa7?l)bX#1y9Ah3m4TP3mI*CO}OsrTeQa0{VxyVrBP6<)u z>ZaDb-Xy_v_V(_X$sW+_kjXe^6HR~HT3o>}xyX&)zdYtz*(h?H6OS@acqX4(a>DjizuPGFGo?lQVm2iJ^L6W_< z>}3UW9m-$?4$00$sc&XxM-cim*r9A1Px4brnxVb}lBi#oM-hOAoD~HEmI3O1E_YdW1Xc5{C`Bv?3 zKRDLYv&HARt1&FBCo-~Fa{37_suwSRc$(~!Xw%RQR^kHP5XmM4hu>4LVL*b%Yb3;T%&MTiQ1WIwSoiFm++DHoLN@wBr z=To`SrluTnTRvW{d;Fd(UmSv6hhPt)k+{j@$3#VmQ{A4b0{I$Dz__p0OeJBVCq*^2 zG@dRQ@Cbk^ABprM2my6_u6Z*pI=a&N0KM$V`l~T0kmabBF9_-j$ld`?kb{iu_|mri z$ul=C^*CrD-k!U*_AQ{wfj+F{LBk^DGU#rP*J&|RD$6s+hp%|{bh<*YO$@5$HMk^~ zm!p*tU%kqG9&&!v3rPk*-GFIsT!o8E%hId1O55LeH#*&sB*QhP&$#LUT#1!8R;UE% z!RB2dsHZI!(=(V<=ZefQczdpj8a!QH>%!MKI0}F(pXv4>W-+aKQdVYMaCi!PDbdQns=I=hx}SUmpjPr^2PzUj3z~T&$WH z@hyFkibmz>;_}R6p z&3qI5Y2Xr&FQ=yDscR+y=eNe|F6lJCF0i{#E}aihqau3s+MYwdRYtX~%(l9-wtAdw zcn&0~Y?b`z+qv_BFQ&L=VPv$kc_YOM&w6-em zHnyw3c*(Od=;>vjJki^t<=AEh>ce}YM*$H~r_qicXszl`W{0#bIyvb=`rOia-Bq#! z9L2>iFORD6J{}3Rn*i#db|M)X7kRGtYd|~{3w!e#$SU^dAj8>#03CRBqPA5Zi6j>T zF~<_HT%fV?r!V;Z!lgrhb+Hbt@?9-;*pn+ z!gahkTwb+cK>BSu4pgB{H2jK_0c34qc7FRs%Xu$;~K}QiW@fkFFp;(SlM^EM&R+?r6n8#Ab_a;8;pjfJc=!o{#%n zu?vLN;E6$^5MwA0w}Xj{Kb2fsaFVT7r{y!xs*#r)4xf~ilqk;W(_e&Ru#~;M{sKx` zMh3VJ?cAS{gupDZS-Bmyegd9jrrw&>M1GN&mkW)MLvuEGrw^?z~ooFQ87ITI!x{pYkU2x0Wd8uJ|GS_{p79-Ul3T5u}&7XiuI90G>pr z%Fu|9n}nx9E)*wxEAkkSMnN<*itiOGKf7KhC*!==s$*fjyk?DSb0X$xV24mkFW*Nz z0NVtx!uEO$r4jM#Z4b{u0iesR$?_Me>Lb)C5fOFGH<(4I=UxCIJ_-;>BNxkNW@cFA zx~*=H?OP6JGMnzRb$gx{g9-Rj{e{x)VvgI&`3L9YW6FTvnaP!MH#aZ-_HC-sK7r5W z(9e7{OJo($Axm|d9mfi&9o#gElz#&>l{~+LndJPhE{dV19CoHz6(wCEYY0##16=`g zwGZ_7b9r3;Z1WU@>3z7)mu{g2IE1ScBA~&{!kQmqH{J`OOFWEk&7x(sJ6`Wo10ox9 zHPflJQLbeCdv72_2}7Nn*g9Je2knh<>5{PV@I=1$0CVmifM+fmYHD~w)R=uor`JZv z`-+%na9lp=J8C!{QcDI64LmMBD%o9Dz-28pTg~I229Nq8k319w z1_X>o&P5R2FzB{WrU+6ZK`9j!6p;o41f`{sZlpy*y1NDG zRJyxMx?d%8A7 zPf1ppCRsP0=0HYpXAEmY)z}Z!=G9?u*=%{M<6Q?*mQdT{ zT@qYyR463!N;9b??ZX-=Its`QbfmC3%oG{0~)&&z%r&%_L;22FEB`iNScPrqJ65s-00Jy`w^tKLv9m zI-}SfG34{=tou@w3eyv|-Oxu}J%7rOR#wk0_ua3Xn;DgnNZ`O*%28UOqou{h#`b^2 z$a8+o$RzTJLC^V+I!0)-sOE6WkJ@nKpl}s2;H_o5q(bDWIZS#(O0KG$evJ)V@rvn7 zR@VCZSso1L6aB59KVQIUnxZU@_D$+)rF9<^^KIu^TF*C*&IjuVgr*O@sSzAfqP3DG z1_Vn>`eUVZe~vy_9ovrG@^Go9ip65}Hi5q7!QzG3J2hF?H$eZH-Srl?qEc7>hPa2- z4bDAwOy|FOx`J4sXD|d#RM{QLpOR>x=?=a{MRoThVAdVTum(#7*xT&S&+5ZoxkS=u zb}5bbl^Tz4&AM0H>3*evwEGtNjs<>#y*FD9C=Z zhwhoI;r+DSjl_Mh)aZqGY!fT8v17fcr?1}uPJ<|XP~t!%++z0W4n4)h{5GS%6ltLo z5OF-)R8n}up5`$gUI$vK&N^j{Ub~4&{!F-Q1FzSFes5B3*efo5J+~iraaVaV?@n&B zhzH6h%b90ZJ-G@_@soY0g@GZhjujoEF=2Ww7IQx5HW>meiXaNkEXt z5~^WspAvQYsL;;APsr*6+>p=;@pfHs@bE~^p4&gVdDC-7mdH4fz%)F=#bF=z-bTZ6 z>T&%uTkOx8GHw!$#`rVW3E9SHiz4KgFdWwOL+za2gsx; zO5Lp*K2r|IRj8K?5BttmQzvUI8>*~d51CP66o{)C*-^|rl(oCm7}DV6F*fgzK!x=8 z1Yg|Ot4z;ymbhQDFLw3nH^`ESch1MsZ&|_?gxuG6Fx*p$yW04TZMw_;^YY_2Jr&?S zA-8GSX$hj#C^Vkk{_(?um`}u*ewmXx_m1E*_Kt1S?(HMS{8bFWm`Ea|%QK|$+|eZM zaxCkz!OmnP|Hj0)p1v)lj34|-8J^mrJ#vMxCvNORX&jH2)2`2Eh;F>$oLh8rKmGdS zhmo2Zu_yjMGqn=a&TxV309fv8Pdy$tPTFivwNBMm!8HIAm!wqKFjXX*+-+&}jmn$! zt=-)m+1w^CTvHGrCV!~vV`C?RNkp;Qjw*G3H#IviZ`uPBxg2oTW^;Kew#4>;Nan-Q zkv(F_kUOU1%GDaPH61dxw=-a@tFl4YbQDr$(>lK?JJh$^vRFz9ADmM{GDtN>uCvW0 zg4doVFq{u45{(r;DVyXVrJ|x6V#_aMVIwBqSs4m|ax3jLONwAf*8LUV>Z?9VV7LpS zNQC1^=T}Ri4;2>f4MRs{=@PXC%WgTT%Ul_g*zU9?_!w4pR>y~IPj$_-yGjR4-EVF|KEv!CA#zX>zDptLFF#K z_y5vB|Ng-LKVBV0znOW_{G7U}O^I4_2m+x)EerGuaY@OJWR6C!`ICc<_=JRC|K5w& zWp1ML@Q%n(LiXw^6Af>@$!w|Cnaye8{)Nry4iOQ_QUNsj!CVz?LE~1}Xrcg?tLcG?IIL*^ zE{nqVAz(fnueeiX;~U0m3o$(K1H#d9v{>IYE9-W9Nm9}?#Pl@R9ZEO}WNUU%Vxdz` zGAFzLrv=Cs3yFw?GnqT6tG_;3RIh0N`+JD}YR&)DG~w{BFJ+t5;zUtBnc2ncwr^Z5IoAM6@ zjMOzWpx$6+^nsg7qb$LGb*zlO=*}(gr2V`+W7y^Tz9bNn5)*SZJFbu6_Gby;X0`_M zb-(ib&nKF;c|$>bH!<$X`Ls)oOZ_Jui^I(YxElxrQ3%+`NH$yCb3{0mX)Wh#KBtkg$f;39Yl@Q>v?T%B;ho&{Ju( zRsOllPsnJ%GXbLi(IQ~L^nQxPB%8`Y!pIo@{fbSAcApKnpdP>cSQ)GG^M@)jf7}NS zk?wB1QOuS!p~A4;-{ZNyvnV=RZBG)7u(h#)6RY7kC7wmMvJXDJ3j$0;LZ451k)SS! zKghFK!%$IiM11AEoKaX@T$rC>v@+-do1%DKZ^c1NTG|619v)%gy>!XNT!j+JI)w)?*f!4(@24UbA}{?pgx@R7D>mSfUpe~iFf{R`T-)$ z7m*$qUH#xLaK?MLZ;t5q`tA%%01ggLm{H4nPpo4p{=d$|`&>Q`-zeDCgUOFYFN{XE z+G4Gp%8NfC+G0i|@=A<35@64`nV z8VxAsQERU}y#?bq>)nc$IT*z|A_iw}iG;oM$-mP^!A*~YC0=QQJZ7bQ{MP7GZ_+nK z&UK67bL)?@M3qJ4>`YnwW(Kxz|b#?iRY(Msn%=uqY3}(PpM!gU0ltM8q&Nn69z7el6=#MTX$CKHThCPTW=R9|z*oQ_^v85~al- zPJxkS3kBRz!p$<3ZV9M8uj1>0MaVr$LD|yMB9`$K5%LKGY>gw9l&L8x_LE6wgd5GI zuWGfkKT_X$(}8yIYrsQO95Y++S!$6{>^bE8mDa_6rW1)5Kk` zutVlehlN)jjTB}qTC8^_X+O{ECfEODwK%fBTrfz$YT=5!52hgzLM8EuU+Obb_kpMA zy0f}MkN0SoJ}cn-*~MD_?h8)tEp>yj(%g)UnYq^*Kb@3eN|m-j9T>u4{shdnOWp6y z&86Y)yk7t{WN_911P-2OXn1&V1m#=v8V4kyxrje3)4lDm;!ji_{Tv#KB{U;F-_zC7 z)3XDE-;f)j;_39#+Z;#7+PK>QMgfOROG}#G(C=&oTbrTYUPaij>gy%TAAf_1NI*c7 zGZxR~t(TjE`HhVfG{e+vdpNJV5A`KhK$tNq0MbLra?!Q5wf*mBNs?O6N%}w#>ILWVBpC9)}h1cWLr^iW&~ZP z%95cD4+{=2({FxHDs)xj@F-fQ%)GrEc~b1Swm01${&2O1LB~pz=`10%keG$gAIYZ} zB9f)lhnNeG>{6*t%#L%cEj{Ku3;eU&qDWNox?XrE&6eGitC*m`vJ6yRGMs;>ZGh?s67!7=|2F&N{9ajfp*L0QS&JKb#o8LG+1dyLF|it` zlTxO~yN#s6i1mpoCeSQiCve+^?$q2PHvmLUjtVQy%a^6feYJUcH*sm&$I8o*o7Ii; zROV`~3fkCQUbi1D8W=HKx+}{Mtp=WJP^`qOL>Vwh?nIp*z984o`xtjlqlCoS97xk+ z-k+o}R6f=0GkA+GX)iq59O+s=Rz5tGj#X4cNOrJNkSR_Y9|N1}AM`ue)3U zX%Kn5C|T>60-U^HIfF~tYA7VOdMrK7&bl1JtE)w%q=e+<4Tg+?XDfbnOIN{!Q^l~i zq^Um)?TGOlhOF5{GL%dr8@Am?03+AX*l7BqL{DyE{VeGF4cPL;N%#Z>iJ6#+-?`Ak z{M=dPE^LPc8|hy_4Ki_c?c{|*NV7B%o#wCKl}GQ24YSR|nObrJHG*R}RO(A3E*BGM zc0Q1(S)OWX`ThF`vn0Wg-l(yJILBGSsLe{-!Y=mw`LgaJVc?Z3F5tOht7J4?ZgUyT zMzprJvDh!@tF7F{q&P&8tFb8;_74G2qKb2!&3^QL(@A23jW$iEDc`b|?z7aS_2ESZ z`vs*e@4xvH1Tm-T1uH9mjHXz zE`<*VcZKiQm04(;;;wA(+%q6}qwQK9Ggv=bkuKrZm0B9Fu``05lJ%kB%%}q&mrQg? zbkDC3_0H;~@pDxPG1K#NzE@;ZWw#VK2By&en8X9WORVk`X$;-RK=gH}iP3kd=yx`#egHEKdjBd_YrJ zccS#@>mU{uewpTckN|GG@t(PkG?Ud_!gv59BY}?B$5VC`S2v!Xrm?bvsF?@Lf}}ft zZDHi6UPCCfUn}ytczJnWJCdE!!-k}J$yMm))p5WUkBtI(txZOAj#Q*s&}24?I^6z+ z$CP%<)l66(BeifnXtV>fz8n?B^`05coyXR_?TaratgH7iCr7|i$ZmTULVJT!rPS=j zZo!;=#nme=NH&L*-RTAWJ2vTw*&JP9D*I5u@p87yuftSpRKBnvRo|4^GF3#Fs=|SQ z!N54VWM&qd&sRanHD+8vY=l-T3_Dmmv&jcRlINw2ymk->r?c18@z{^B#N+LjqxO$? z76bgxoV~A=`HG*i70@TA__J0rS?bXOp;kWBxpHhqqay5Oc|sPVcOF$LN1?*RKc^#^ z{Y8zxikn|V*O~+Wlr-}w2A$^3E4KhoS6ctQFW%v(jf_;rsD#=;Ek8IG{bGZ3;#?0+ zxNAUq<3;X4-J&HhL9?j(LeoBkg6e7j~ASc}p= z%EuMWaVsh9Nlx9$5&FVuVuIH0?&LJ3SJE-GVcM|~*wRGy%(EPKoS*6yg`7=D9~*=I zU{)9yUHHG;s%rObYO}~S%^TBrOo9V!IzK!OAbai|cc3zH3t0vGD%I=@S=}VW#*qE? zpl)YkF;I(nb_R<|K4e~5g1jEr9+mHokB4SxG0HOwb7oc~fKm(*g*Dd)jTxvzEWs#Oby|DOnXAAw6$k zFOgWD{QdhUpmredk~?q+Q>a}XA&_~eD=QK|R$H$5c*MTV33%KeFl?g*$zbId;OCE^ z&2vPS529iy-QBJ*`X+j%yK%Ur7fJ;_3;6+p3dMQL)x>^Doy8#rfXYPEIR2aDNlR4!V60DPYMGA z1I^{A!uCR#x#?2x7z|fp=>M*YWJXR#2P#+ap!CUMa4jFLwhjcjl@iua_DrSTF=u=8 z=Uj+Z7VF6g0*C2Mei8Iiql*-xn?Pf5qZd$rr^NSJ{O zoG@-F$3P)wbt_D9-v$~M^z<07$OtRsSvhmFdxvf$RBhU=J-mNF6RtC&!_BQuJx@_+ zy)ZA}8(tdp-umFIFUc55I5`RdjJ<8?lTsgIs+DsFx>2r|10?1V!ttoh`~ddZ(xSzQF44yb#lOGEnW^=JP|44}lm)t}sq1cH+!BYW zVkk~e*WhvhCHhp6=(hAP-@k7s3zmFP{-lO&FlP7NHZmzm-R8$>e8I8kWffDyoud;E z&sb&eLgs@Q;aJ*D@5#owIVlZ|#(?gYXj_p2=aXPKgji0VONtc(19d3D`0)`({QKvg zxMW?Az9Q@5JG=gzYTm`~(OCw>`+#{82V-OMq{pS!^3E75O;*JLqNnXQ|M?d7i;|rZ zI@)de{+Y>_4sB?YcVhn>w%>JvLT~h@!`!5e89gsQ!>Rk)rKycu=-wlxjlsBr%_53w ze?GP{%HM_Qu(VT5O&P>Rk{K*WjY&g?lfNISzcUY!jLbX*YU|>MJ30#xGry<$?`xM_ z>$?=61fDmQ#{LghkP_t~?hL|aaM)UhE!P@Tnc$B*^RIvks_!GTd#(USOnm+Iir?w$ zdlT;us0~tX{rh>Yd=Tc?M_vhM$+ert2NcS`e-}$T{RKk32JP5sdao*~rP6K7M7;mg z*CY*?d#cWOT-8cDoZs971LvM#=B&;YV*MW$A_H(1U#jBQ`JTOXu&V%|LYvfN!J^Th z#|y6^c6fmT8Gi92Z<)GWh_~|8^e_1XScfuy>sf!_h}UI({lu?d(}IE;qVP}W((Ynz zJ#3izPp|^NB<|t=yyr_i_y51?&2lEF){HSx;|R{4`M+LYs6ylB-#%jo!yFur(=#*w zdrpT`7p+3Pn4uDXhO~tc$YOt-V5kLTd4qFumB-5^Q;S#qm%HQX^~1PHV!Kk?K>qss zBTs`Ib)-D}{6b=4a-5wx!F%|hede#5<;xe2hzNWrw%xjywZFe_ZV@A2oCWPOgg$&| zm}y*r%5FlwOZ{)C`Gba=o(YGsSSIst_ujmEm0-il8V!~)kZQW#D_vKz^au-p0m;&goOv@bH(Xo*=wEVqYiC7%S2xKCcXpAybk4ISlIleXJ&q_hc|b+%th?4$QsZy@7~>|DS~W0 z!n7?&JSa)bX?r)F%$(U~_lbbSGZ}8r)|p0(pm=Z{+aK>K9d8w=X?Ndr0)<+|`MklVxp-Y`55|Msoyvp<;4 z*zkg=jH(mt*uSI%!F+XszpA2ehlVV*e<{SV0EX?PnpGUydivcfR8axtQhoBRaK;mmiE+o zC&go;D4)`C>ZhkbFf}=eF<8w0^%nCN+|Awk6rZ4_LvXn-5TwWcK z67Ari%pF1&hutOZMBY7!j?v(tCh>s>yB`unZf*`wLi9Ex>6VfiB&DF-vgN? zP}%>heV^7ilA%Gq>{|<48mW7++}OEs;0#>pT^R( zf*()7<+?d}G{g#+%@I*nu^kcgNj$4-sXYjw34_VoD>GL%S5sYmwlM848I5CAn2bOjnebdz%2yi*&@;zKTL# zs5jqsZ)`UWkWF#Y8>5!gspyH)l99Mn3lo*r7dR4d!T{W=460^VogO`UYvf~ct&PKG zf0bL6TTJYwtV-S|6q}Sum30jxBYsyjXG~?#;$V8rQchOeckvK~gv>98AIGB}gh2cw zYEVm0aT|GZr*|)w9o5+NqNIT%0Vtq@Z5Zv7C$BxgiTmhl8(7Ca)nV#@<0}P>;E^Wr zz;5A^?;J zROpiELSU}}fLX-$x22^IP~f8`+A0#8$_IHHilwi0p1rMs&0W6K$oIF*`*m;c_K>5U zR5|&GgOwrQo1$sOhV10{QdchZk~_s+OH!#JBoPdGYqi-Nka_3vHJ2LL$IC(?^-BmDB2fH=DY&KQT=J$491tY<<(EA{34(N1Wu;W7eYgtA^w|evNGoZV`cmH+xMBW% zNU4qp&2qEifHju%r@PsDT`~2Iy5yA)UVVyicCPgElMxfUA&ZBF#T#rE!xaoZHg9}( z$1^Bo=YeMc>_iE;W#uuf7OPP)gwa*p9tYHU2~cFw*GFlWU}RwM%Zy^R4Nv2MQu^Uj z*rKPltjx~tVPQptgv6{hU3Dr2yb(k~#O_)n`pa|%vdY@PV4jpTClWn!?YcueOCI-4 zBp6)jRFB2torgE4uadvR?5O6@&>1WEOxE^-d@#upg3J&B;$1eU*LfC3KDVx9xm>a| zbdgDc;kUEkt7%#p{ht<)R&scF&GS0cql*iv*&VCvVbua7@VkenOW!`O4?q%GCf7h; zPw{)j6i*Z!U`D{vxj0d7ZaDR`I>82P*Hl!sQKW^nfuzG^WMs4De`ci<3sO?NMO5(p zd))aaPj}5TtuUTGMWf|j65@S|+UmKRUlwP;L%eqR30Z=%G@w{ECToU9OV~j9oI!u| zC@S>1IX=6?wP1?7a+OxNxKYueFjw+T7mIhj7d9UM^zFRM5F_g8k~qsvTG?W-G6+e@ zLd^~xpo!o_3e@lfgSkF1I5@r|u89B5Thj$+=+;wit}CG&7!yVaCFV}7Ze+8>qXi6skkO_b64zd-Yb z@UgeHwqjA-lqMx1G3~SPxEPfIPebwE>~Bmy!p3F>!=0zin-Uk%7#5Y%ZXN{%DnO6T z`!vta5A!<1pQxy;-Io`KC|un6E9QU5jhlD=>;2WbwP6iixST!_jlPm&MDPC|mciu= z`n(1SY-6428~|^QspWPU;pfNvo+Eni)1NUMzz(+%NMPL!uBx1Pb;)Vw87r&WOoLo) zEm5zbFCHB$oNoX8R_};pevp6VytqZrh~F?ak@tKDr+Qp=_H(_Jt5<9OE*s=yaJPe- zRO%|1l$u&!cpWAg+5fo`T?5WEW(pxyqpqUTcvN(1FIV|1S5n14ef=)pjM&>#H*HBJ zr7i(QT4K(gn_T$+ygip(n+!cJxbgF^Wp50aYX6s;d#AeDY?u<+=k#|zf-qR)-}UF$ zg1@}b|IaJ?oNnDxpQ?c(42;OWNm|ov00=25(O4dQz8&}Dd#J3G^Z?A(;NalDch5!z z8yk560XsW8bsZhrtFJsb^JR-Nq^oS`VUeXm-iz(BG#{t5S)Sf9S?)zo2(7Tpm64R3 zZ+rF17%FF)=M=gtUa*zC{l`h8hk;i7<0T)?71xlAjF9qjWeEv8Jw0+{;@@}c_2$@F zOj%h@cIX)e1p_5zSgqy7D^}Z;m78Zm+;Qno`yCAY*WYZzfd_Y%laNpc_^gSl9X01` z&!dq;>tn{Ls8Wm*Y!!chr}6DJ{f3s*p}8 z!YeyRcEFYdh&)Vbi~r3egNOzOhBqjxyNH2r&9elo<>o(~j43G2?^`^;N2Dev!x%=a ztQ;RZ1TCq^$Ut++G&Ai)I9B!bZu@b<$v5PA^!qKedD6c`G2vkMJBAK0VW8GWJPT3< zDn?XX8=HN(*>bPj@%iDa00vq*xQLk+<`ohY68dz>(K{pK z9&2+W&)*>(!0AXSiJy=xeMODyZKLi;|Np~n(-&SD74?zfG6_i|7RfG!K^(S~7e6%e zvN}Htgtji?kGd-k_&pze6}yrU_oT-D#0!86euU$nR8>iBytgsiFd&(=H1~SGJ6;&Z zON(jXLRTzreADK%B!%SCL{(LCG9&gJ1#RKIkr;4WS+0$QJbfsCYp+Cy4~G0@Nm-x@h*t_+Jr%l9;a`Np_{g5$U9$#{joA3i-X z9i8q>1E$pS(%W@#K^DHfz;E;V{Gd@P?=RH86%{1|m?YD7CT7v(Jq!XS*H01PyA?l& z$C^6j=C>9=WUn>Q!ZBrdF>z#vxG?@q(|}vYE^_bRN1s_~ijDEQ_Gc@wK7Hy{@$n+N z4PwDGf|xiFvRqs!va%(BetAz#Z@I4CCJ?si9J)388SD}$*X+WXEm1T`Zr$$;W3hgw zaZgbYfL#ckqitbGH&N96C|Yws^z#TXaVzOhR0d6$7$3bF@PO17Vn87=Q4P#XLlu^x zaGemmxHNFmgkpxFm{2>=Jq|#e8oajL!*Z- z+e0TSi#mqIdV1qAKROHRB%G?mYa1HKsi~bg?^5>3XGob@QE(-$AEGYz_ig-U& zk}@))gK+-N{U@@!pXrcWkMQssysALe0?`{3-m>zAk}7EVAv;u%)$QRe2zTAZHt2eg zU?VR7EheUR_Wg77^D{MleVTpyb$?itPL7WyF*r56uu8d|xF}lNf)z?LH9Moq#%dhz zNcKs94UZcgygLgU=W>;%Y_WV)xccC6$%5ditY&Ll8#(z6UW>0^Z#)+_wsgEmG#wa7 zeE&%Jv4{M&fIb*W$-{2kzMb&_a7$jwRof{Yvu!x)-8K~4cMX4{6HZf>ea?v2#KW5` z=9c>CjE9#{>RaY`{@%#w0WLV28{Rye%7y-dzP{*x@s9zS{r%kL=JwZ7d^yR7;>_wV zWVumEGl{f>0Ju$CBKq4}wcDEgFRzWzV-Kt>X-VhkZ7ukU0@aI)3#ERQLQzagDvtUI z4b2*O{AQxzdXmcLj{zN{czGHNb%$7J+fX~(uG@me90+j-eO4eI-kTTrIA@BBT z2puorqvb`rq531 z-Uc8z078Nj9`1*fWMm4-0z4z~`!w&TH-=4tkA(#xCBWb&&^&(m({0~i>ZdZqDlVLL zR}U4`HRg?K{+*S2Vmo%5>0DwT;64?4Gxnip_sFyx8f)0>A%Gf}3`aybV!LIgPC<96 zn*i;BSSc4Ihj?~g#mL?0o=3$P2?a2A2`(u7@MiW$+T-zQH<^BndlEKMn~_&v5^1s zeH3W-O%&;NKtDy{c_6|W$jP64C!s6rNUU^2K=yHSS#qk(R2DoufC4)KQ=Q_Y=O6xV z@J@9e|C_$B-~0eCIE>Nsbfk!x0y`cj4o<)ETx6nQFS8)^Od%NsFfbU4jiXfLErOzv zZ9TocV&dZQ4yB?G+uMGjPdjnl36ohr-@VxPr<86( z_@7n$*^f874ogJQxeJSYv9J;(B*6G4R+%CUx$L)Z-|7LH5$7_%J99tedEP{o>$YZV zyxY6QA;Nego`sX;``y@w!6DzPTMgEqC7>c`z;9~v5k+5po$&^C=h8P&=2ygQXnN_# z8py2~{>j=G)o2idfit}I{@vv>{Rg;zPgA!OIjgCZ6FIs6(IcP@uBhGrh|YQ!d6A)$eZQws#cyg@xgmKHYw!xS_WWz%93_ z-a=DExKtNU^|~hN4*p;<-R~3>eJpbq2RE3O;p4gE(w`S|2>rw)d*jki6*ax2)ZEm@ z;5&rXLU;Bb_YCz_S`FLx^s-9j$T_||ssGg>fa1=Ur&+|J}`lDJ`Xb0-E zJHExZ`2B;NYH#u-y68iJ`-e>e*?aQ1G_5Ymiuox0<81oowZ~wGsA`$i8T-k&@^J4kr zu<_!^Lif*GDyL(EWkOg3?A0ZGeY2NnerNFLx1*(WjUAwk*s<6i|E9&8Ub;gG1KD!9 z-(&QW&JTwHb!VG*M5k=D!aR8;;OoS;4RSquI*N zT?Owb6g@si?727I;_Z>M$;J=K3>Dqny7`FZ)3;p1xc2-l>8$gO>e;J$z`m8V+$ol< z=X>#9NMNG6^&90%e{n)`^)**?f}+E=A~18BIuZnG>*p~Eo&yS8_6nvTW&sOUFskI`R-(7 zkF3}pEF+a176iS$bn?ZI!C*OWvA+JJHrl1y&G8HiaZcfJFa9>CT@@7B-}Ce1GiNM1 zk?oNAtVKseSj_Bp2(P5fS1W&yiRnq`c#B4_g-fsdVINRp^$W97qE&lK#Qf@D6$Nkl zWCrruhUJ;iTMj*c1L5>{*4#3ha36Y$o6m}4y>8yTk6xAMeCy|bTEOJ7Xhd;H+mNBn zp|zto*{a?sG&0p5eNQQBu2^H)tSBHI!?Ne+D?DXCY22P+kJ2p1HL%Dvb=XstcDY?p z#2w>ebWPm{P>s{4FU@C$Zc+wX*W)Wc4o#RMPm1=eelWj!WxZ1zC@8z0D_QWA=V1_v z9r)j{eH!no$<^-up5_6b8T;|#7By86II-g&ea#%s8}*$>th$~keJzpE9?$PAdPpb* zBj)QiN*hOM{$%r$l{QU9Mm8c(s{R}exac*`KbeC@?e;cBQnHeszJe|0rrXLDetvEz zi9?Ev&!4}dpm3!MeR+56E??o3bmiK83ElezV^aBFKZ6X*pLsu7o5aq6#I4vNXj zm4A9XFjuCWkdi}9`S9T~^c)s^ZMD42_1?wvz2~Lr3>wNH5z(#|I@H##k;KGVAz}0~ zT3389=_&&32r=9Iq$dnt+iVW?cQNyt#pgC3^For?iP#y0cDr&bjz6({ssfN^l zV_yAGj#3~zLMMC#AFt*xP9%*A0jr3kR*_Q)3=Iu;`b*i^m z%Nb6#w^lEfa_b{&7F$7j3JPsLKP7-XkH8|p?4EjkmhS*-Bf$9*X(g%awjThXO50rc za^QwS!209oSXR(%;pIh<9KF7b=L4wM+{74EVU3N5$hRW<@`dP2EZ6nAKj)lyl!4zGhQTW z!NIs?$ChlDK@cc>u2ZAe^MLe$*S2G1P~X3e0=LW;OYqD@tr^@{=xTukc;c z%Cq$WKKdm`Q9VV@H<5Vm2OXBIr2&~+cJreJT|$&mY__(C-Os%j{S#0dNk%PV&Q3{! z2s4KW@YE&?bQhcY7tXl4&=vf=Etg(??rS9$G*F%h3l82JY0ouDHjyf|K3S#>MFut< z*c<6StV-f{wn=O{xuawf#_(}q`(}}@T$R<4a%HTNZ5LAqzRl7S?)vubGuws1isY+uug?tKlDnSkZ}dNOhX7sgY)- zeKg>FD0HXI7|7}cv~=kXK+Pg0h2RH9>IZi}BAUJ0jrNj(oA-CO(34#H3KZyUxOtmM zZ{*BlR?=CX?ceLrfvF>^!Q_+dv&ZwWk%rP?sY%%6@0pP45v(Kk}Tbo29P{Wtvj zUn|>vV$k-euGZE{W54P&>E%#x#4mcx9zFtwcK!GA z%M$ksAVGK+3kwvI5PicY-ecA29;g-e?tw#=JJ8JtTt*aE0@8lH7g=GoGyy3{H5pM{ zNR0U{k5T^tA0Ho7CSDzYqmh{pC@13LY)_x^CIGAz@8LsmVt?;rqXf&Rb_R+)dT82E zU!TBxk&bz+m@5QK7i(EdV~xGelZ0&jpn$u<-@k`Rx~%fKl2e`4f|r7n`d5PVM?GLz zX{fjmFA*t;w(`HT2(-C&-R(z|{TWuoxs3qHhiX`;Nyjil?k^Y4lw?Iqcz)fGEc8lD zd-`P2Q=DHy!b>Yf+E`UpoLUxz$?W1KFIl&dqJ5kGjBHx@WWt%r|GuNGWe!p*EwQkw z0q^8*`TY=On48Fv2o*D%oaiRlh2A-^8aX!p`TnUPb!^ubWcI_=wrP>-KmP;>3rmea z-p%ttq`^^X-hcLqQ>C!dKNUduPydf7+-Cjyv0d5pXs$i=iQKk{9JB)K;o=~?U-|E+ zy^ALeqxzcfgDc5(M@j56%23|>)4DBH70$UdJ@o(v+vth1(b68`OQ)>M%i7SwZ})F# z?#buF0=c=-!t@}wAI?+?lpPxKOJ?_xbZ=0$_(Cr$UELK{rkq@;%ScB<6W z=6_`iJmj#DBMaSOV;N_}fIy|0sB1gN4csM-_HxhLm!=Fo{r#mR>OQ`{cz;eT-GA>> zDn6XArReGs)f;q|NTg|D@gt$9XQZG21iSm6J^UTU(w&95IjiH@@Y)x=M7j332$`dr zS^gKX)<9ssVID*v)g}znrlrt|yX=w6q>y0;o?=WC_y>^}~KRYIkq7J5$Ko7JJ$+ zzHnUeq&?vSheTsz<7bU&UdBtVB34#TAu=}!2ojT?d6i?oBKY&TogmFuS(*R+I}{68 zOzs*(>M@|TeXoMSf1~@u%bm6&_YB*v(_i{pUSDZ7gk-Y9cJ_3aN{tI1T*6@!7q7i} zvnL~C1c5l-^=JEYrX`XkxWOY1vcc_v7aDe=4RCT<-o&8*IPfy^V-$6$Q4B>|! z_AUOu7nUcM@QVF8QT9J}4+q%aD)FnUo5iy2{}1{zKh_6w5yLgyn*%GevH}u@Bs~Su zYOOVoJs>p&h9pXI@}#7sudc3q+}!V9zoey{o|(aU@BmsJ#;2!O!=2I4Q04Ptx<-2h zglE3G@=z;Rvazz-ci?|UW8?L=Na6v^^k}MRD9|Y$u_B5M#;*WW5kd>epzmA;l}koS z%EQ}xvgW)2cm$C97AwndgnKuXrkFo>azob%+x=4Iax+r^EknKVHz4yt{(3gJcVrr{ zOKJ`7jDN%Qkj{Y?E&h>uJyG_adttu4rD6@a&Sq#IG{^Gs^)01MCQ_7pivA6Jd%?jp z&|-mt0z8*afE~uA(tP+Zbob!S?OWbi(wS&gk6wNRn+hOUb08F;rFAX&L19ZYvp)pD z)8le-c#*dW$5MH`d2yUs>=AMm7W7^`&MsW+cAL2}*%HWOdJ44k4|y!~08_%?Ap&nk zLO!ry^oB^P{xx}p=xZ1_0LhoFP6a4ZAARjsU{qq>Sp<1lVCcdc5oC57psH{=W0aJf93Byppji%0Ya+zRhI6Q%JrlAE{99ZF^Ur&BM#^Vh z(}ewTBJ)W#jFjA9x9Iv~6j=Jdi~_5_<-9l%{po~v?>5YCf$~DsronbwR1YdETT>@faVqhc3$InSk?JGCO&WKm%{$%aN0@2dd)h7F{ z7gmr^-E}maJRVF_9fycFVyDjaA&%?q2i<`P!*QE{zH)Ld%*j9bD0tz+M6h1YKk1V} zEINiOKKG>%i=3pQrdE6{>ybu!z(d{>r^hKMsD_ZTef+ov6xhr(a%Sd=N}Ij?w%}3Z z$-zrH=*$Gq2kRDigoZL@)f&CZE_9Nq`i6!j!~nBG$$AZ>3lr`N3!_suG&MCglZk~p z;{taak`3iEGylMg@YHGSs(2T8J3266dF4@rt{T8cF8%goS4d+S#)*GG8UQ0MlDzZx zA)zcSBg166KnqwI$Fo!OoL8;{lc60rG+>aJhvY6iZs=smKxi~qY?d(oXe^>UcDcNpAnU8Vz|B4jk*Z-FqvKiQya;64j((!3zOIzFVDWeB& zH+;*#7j(E)Z6>X`pc28kmz(`x1;{B-7)K%?lhvVBMd809&?T}+fV0lOKp#BRrTVXe zGzFWTy88ARCqGAK%TJX5%xRmJTLsy|LJO%W$l54prc`P07Ed+U-qLO;4 z=Ewth7_eqRI8@d39T0Q$^~xn`2a7|?%kfXHLT4gA_fVt(SkZtxcF4TaHol>x{k#eU zWs8-;Z}W}a-A-)62zMmT@qku;S`7Dm?8(-l67+(pu-y1vYHZ(ghqsvd;(cynoBSf4 z!9H@-(z{_U7)=LnMSZS?BUN-mrATLbYqkPd7cZ!&N(B#`E?2=7yY;LRymFz`;gVJ5 zMOJrrRFI9a+I8$T)O2(&fp;K@Z;`c{aZ|xtCr9^iq`clz|$R7mC8=4s5+A0 zfF%zIJNcD*zkgJkucQE&k$RFmOrg?>!Jq7K!zxoo7!@5se761=32zvxI$SpaOBBC^ z%4NfM@u4_~7`*Abcz8*g6qM?%t+Z_H-pGhwLdx>ifehzI$SR%p z$rV_WKm-AB7R{<*x+FGyfP0k?Mp$jrEBkNsg8TRu3RYc&-*EU5kSt{xAMO{V;QN_4Xo zoX4w{PHco3FHPPjBk%Owk>}fU3Nz z>NMaDA-_G)EoNyf2W6iD3~CAK z%2i%&ZeTQU_V=F*qA-2*h!ns=-7}~dddriJ{V-Yx9xa?4J3M-0059vS%>%Twj$duN z2zqry|0^IfiHHcMZ>0!Rt&dq-&9%HADSn~iEEviFc*pwo&|Kj0@IMqCEz@X^0jgcM z19Y>S9IMoW^-4>t^a z%(6ew1w%WNkxcf-&VhZeM=JG(c%lXMun4gEnmu8e2j>PjeLhs%#e~br>0Ee*G};F} z4GF6nky4fRD|BjZblIU6`?JlL)xBr6t>dbW(6giLsR8vx)N zfxD@Jl7=_~(&?Xqfk*(5Bmhr&BhpJq1Q)b)bi_^ojR$c>*UZr1U`8t=s)KO&j!}!(fKAkNsNpzw* zTwOuBe;Q%-^NNe-*`I{K_g{cXbaW`AJ>}#>HpVMf%FRdJFrvj0zShpQ?k5cNq)!1q z3;6LB7De7ZJ}H53V6l)_0^^u`kxse6_+YI|GXTGhsS*M$n5Y(H_>d5-G#TYxEGd*=B2g~XvVg@Z zI+``w78HI7Wo5s7CpZF=ibOG*F4RFKmV^xj(a_!fu`7nl<+^V&&QEaR-V~`ZWyUwV zu27aAY*a;C*bd!#l8THXL)U;L=GpCTzO%qOG6~HE!9J*?%WN|8I@M&p&12tB>;@;< zCd|*oLXS4HccszE6IvWzUZt6`+hZJ%Rz+h2R0UwHl-gpJenp9FP!PB8_q7(6{BH=S zz_Hkp>HR%+Gc8Af%TW2QaXf#u<;erR_?F_tzf2?$JO+vw^7RFI5(|~GThQ~4Na57x zGtMJQZQH}3~IyV1wTo*f})ThOA)4w6jBZHW)0$F+A` z=l_i}Q0K`<4(%LtbmWT-;gkE`+4o$joMSQ2>^tx0AL8OY;9m3c^BV@AI-DuPKHhb> zNhx{JXtm$18jF{_x_L^U&4V#EO%?WC?O|a-R4@ zsk@(}K^S00FY8C=4)@DzxlmF~0o@R&2voHojanvof`^W-Hn24vNJ#GKcLZ20VTv5l zbhwqP^7!#_1T}hbtJ94Sk*4ByPg?qF8vji#P>@ZE?3M?r&<){7=?;2JlcnY$|Hh%^ z3HL0BJU&Tq-MV@n1m1k#_u22Pd;?14lpF7xXwm0g1y+NFr)88uuYuAj^3Tn|4(c{r zOJe8g>18cGpx;n)#LxHT%1jSCzLBX>Wi2*{-~=YtDcMZVVbGZk>3RjD7}%+w%?`w1 zo^`OlU%|nrtEbY_ak>VC9y$m&hrp2fkT;yYAo$=@ntJcGaB@2WaRBxlQMVjgn&n(T zo6`Pa?i1rYohN+MGimk2(LJwVi1*j(D|@CP5+m%poL8-{3%(R~ zNX6Ft@o|A?iFsedQWwQXy(-}obO3Tk4G`^$C0hXnV;clT;WSaObXLaP6#CyUIvd%i z!mP{gX6C>PmOqxK=zmfRlCaeEYr7YoIOfHGbAYLrVod78*z8o7Oj7ET#?pCXiEES_vwUyF|v?4D~s@ECOnsC%-cb_t6ySG!@ zy-;`gJPnP?_@aX`B)O_J;BfiEDY+#gLPIt7D3x{e@)$xcEZElNPI(!d*IWItor2#c z^UvKFNL#YN&t|mLDiBQC3h)v~2lEsR!{5kahjqlokw%S*86zJcmGRiN{?XNS;Z|>j z!!X1k=!by2;nms;!cH_|(}ijjU0Z=Iv9S{3B>pO_8Dlf1YQ-cIuLapI$4Q`0$ee~K zJX+x()_MeCo@||YdG}m{M7d>J25Rs02PW#Sj5>QU>#w))Td``QY)>9cs3(n6wY+;$ zW<52Fn*xgn(A!l@mx@%QU%|du!M%%1=;2b}v=@FyNKSC7o+;;?oJv9%bbezHAZ1U_ z`?29naC?GIc4nr@-i3oNPx9h3>un7wgfqh#_YOE<+8>w{2?un=p@jK=j85PM(zdqN z+dHhfm5vFuFKvcPg(5*!8M3qCWSJC8oysbS4?H!%!=A0q2CC!;?IDm~KtvKa&hF7e zv~+as=w;y37<=qxMzCn)S>hnd2sfnhr1w2ugITI zNMHc=m717~_7RYvM{Q<%CDC_D0GLqf+YGSD0!(+m2V+BU| zhQR)hN&s{s&<17Jq`T4KTi*0x%rECa8yN;NAdFFgz0{f=@60~N(~ajrK2S|K#{`F+ z$jDplq3~ z<{B3l*IfM=(l0XdL>lu34>%r#^;81&w#i9>oPBc5=xs!VV#mh#(Wq?Q5S`Lgi4(%5 z5kG%qYpsJ6Z8VobzIKthq@ zEC$@$Z5l2-ySloONLAu=yIz~Ahp=0oW-btNabmH!o)_40%(ll~pH^}$@O}y7A{Ywe z=R2&*@sNua?^J;jF+lKi)P{x=jX`$b*8}VKUyN3ABixpj4ucMk`1qUzIhm0W&Z6-w zuvY?BNMGLQm!ugmhz!Uy%LJo8kim$s{|s`19GaFt$Dm%ao9AE$b(b}u^as*(n0zfD z3cuc#{PjP?71;@4`m`zcK#7GI;#y)%4CH;8ot>Yc+~m@ks(*8g8{D+twQkw6oUosZ z9lqdi6~3}xF%5F1(`|8I-i$Yj2%bvE>DIWn?yT0`Fizs?ovq*8qkUs}A$lg3tohXm zj=hap<>`;s)-+X4^LHb`*8)aiyFN$_&t$uHb)N4k4Fj%LdHKzs{9_=8=;}JTyE)9R zsq40q^t88|wepR!S3-hmr`sJX9v91X(Thmrq2n7fdXPqEuN8rP?j8>Dn`P+fnG-&w zMIsJUM3lOgYpVNaXb56zgB2AFsi@UM)XsN2;+)&kQ)TqyQnYeujn%*>;8NI+@O}h> zzY4lGiT9<){HDb+Fpq&x_405wJ=FiV*Zi-~N4}806GxE^!MVCq>lYXtoN|&X&1$Gv z!4TVklC&4HK0j)&Adfnu;kr4e1k@A|C)Wvc?7laF#a6Td;|i#Sq0)GvgF;)KT|7M= zE9l20|6l{6l@#4bERPVQ7$E>qB4%*sm0qOTqtYp041R(_RIc>~e^ z^BG^GrqZ_9B3VZTWhy=RQ+?}ZZ=NUM~}cPgC<`?T|LdF zv_XXe3_U^2EmO_&-fpG%ojdQT-#B*Qq_b0uuPvb;72L%_e}4?{9eHdt$%x^@x#p_3(I zJUzt&*g<1iBj<7A=|)D3i?j2yS0eaZLa4(ba7fJb1U)XZp5rcuP>l_M%<@6*ebfw? ztMc;l>KYiB{*ojXPDrvjnz;&uvcg3rNf>4Uy{i;TAK(?%c<6EIRmvkcb@&xjRD2I# zj1^!zb9KmLezulF){fq|JY3U!nxS%Yo(3qq;k6p6>U=cO z6(FF*q0=XAC^He*c?2deKToe$*C3|a96m_6!OoT3lZ)G3HA;G2cO~ls`8*Kahi>l{ zA*b6}ib*%Lx%7my6=T&LuO2)4>LY21ZiW342;XkUe0S%s@;`dGB%>+p`K69*OSFFbY! ze_r`8(i8sbuu$%j{N!c03ErX_Eb`6?W30d%w$zFkoL-qLhfvLLYr%~ZxKOD)&mp(I zUcHWfk$ev{cj@T9yi8U<0Hq=_dVcS(-k@d2eUD!?uGafMu_t5im)6MB3U*$;JDzy25y{y&-#74Fcv^*wn!A1u5SE=!MpbS$qUc31rLfYMKXo^v62y&kYGF20k zzIy*xzi9vJlU2!gXqdcGD74BHcmN{Tz|i!JbCY)Gdfd+TjG*Rq`Soe*^MgLM@6+3& z^uwBgqsgwx>*A=pFjJoDi7OnfDxl41zGz?;2KFX%xcZ67`o@}QFY zR}wYMRjQ{8LU}n-pPE`&c%E{EMm?58t}I%7?QD`?9FM8|bbIM&<>27J*>788Y#8g& zN|tMV6aVT3SgEIfe?~M&$7kLGrW^#EAgPlLs77;rx%V7SsI>e zlP3h)U!B>wlhH7{CniwFp=e9d;-9I0g5~=SI(a3fv`&I=D!mih%En<@dCG+SuSIKu zlUBaI+pn*5kf3OPdP>?G7elLRd2jUyWk^5ow@GQCf9COn?@9nZxw2CnZ@RoyRv!?SD}#*IdS8V|}mwI978Z z_I6!z$wMCZhdJs+Q)N{=YM-SIZgsOZc;5g)E7Zn}_TA4k?CM{yAZfl?4l6LZ1)xDR zQZE1FR8Pid<5vDVURUHCN&X06dKvz;Vl^!D*mu^v%y{nMOM0TO$6ciMoo%JDT+%eR z1ATVX8lRb&-Dlm0A=(ic?!hgX&iq3sJva=^%d-Z)?QpT#5C+u&ZYrcq;*qBtWn{hI zydj~NI8An8#FP2jwMQE3KvQ0tdNsoDw{_*OWhxFD$-2)vFUJAHu90pP#kwO z?1+TklPxyDpl0oY9+UFDlWDik_nS@IqU92ItOG78ET3RyW)3?a4lMEpkMy7E(1-%p z6c`pp3psd`h+oybx*OvvTKnQqCgjztr*-AM6;)82wT}wibA0_BW;VNWonOc(21t8c zcbc4iFj zDW;ro{=21wXL)W~8t&b-d6z}uoXpJjTH|y3VjdxI&kPR?+`e&Rc2>P3Cr9xKaG}G& zO9Yy*y4}w#h7%HfN#~n#IRynH=3^O0sIp*}E_Z%N3-3AeK&PC)xK+yM)Y7u+cAiLX zNNKEJTrF|)C0nx!lb zEG(1lc)LBAg&iZVcOF6yQ+pqqwDIyvYNooZYQVi&wNj4reCeYZDsM{BnxN}72W5$v z`$qivaA;k1J_9F*PN2MQNnz};jEf;KHb7vT+dW!J4HeCmarA?!gMTnjqK6UG`Krt+ ziPbABuCpMc*#aVm_K}dE@CXQumMGkg{0Z50nI*-@_vM)`o_}mi6)YD*wMS+~kZ_iP zZ!i?<1pVfV0%fg`_=YkJ-@kE}vqnCtXcvSMVY>DGtJiSesJ4OT7<9blvyHw63bMT$ zsCGlcC`TR|l&iB+d0(pe964qQuwh)Q5)+7qwqRGmjjpX|>GD4A(rwT~how?3DaF@AKyjpBE;qYZ@gWJE@ ztfyEe&<958!MyQFt>+e4%(g~ZJ$3uG)l8$;Flkcx&t|&GB+zp!MD-LE2Nld)-wChs zyngehVP8&K#pHE7``?k9hn|yk-c&nB={U02OiUz}=6_+=Re5z-?=pj!pM}jbWFAFt z{z8XTHYWllVa6&UAp^I&8)&|;;65}MtnlCg2+)N`MKx}Fn7)@IBi;s6ae7Ib)KLqm`fTcFlYU3G8~H)7Pqa;k-@aw!GAai5XC6A z6;%C#l}up*OU#4JR7Mv3*sC1PZgFtXQ&7M##Txh|fx-CuB*!sv1aUN?>n7J`N~lS{xd_@%DgvGjiU?rn_2RjP zVGGstU{Q2jOvL1S`6Lr)r-Pj}qp0gUSYnv-Z5W4QZVV16;_WD6Lb{dqekYDzES*BFEnRV5u7$QX5LpOpRrc%G;RN!}tQ#mHPu zZkYWXV5<1{J*@QnGY>dF=ui&REbM;$H2!Al|1mA0qO$Bwk^u?~Tu+LlPRrUtru;53 zb7652i(N0!%*~?GZ~pd8GgFQG=FL0X);1&M0=7xPH3viw1VBRq8?d6c2;7m1G-Dj}wynpi z;|{KiG78l2s^s`IJ+kkB`H=nn{p?5C;DvVpCQK*K(jFY>{WE*u{jeZVGG?V!M|F<* zieC8Jx6NzQT`8t|Ri&dP7Sxo=Bv<$+u)dDW?0)v=PJ=+gSt8__1GVw0ZNJm$yh!_v z8Rex$6}S-V(;^S=e4SpOrEwT4t_TYQW%TIx660a#zX2ZxjJ}}9=lulWPjCPzgV7sc z2*SwvaLN4BmwksDvw>g@1ao9YhK9Q7ie`V`nT}nMB(e$)UKqI(9&I__QrZToh?P~- z9ip9MuA=%)A-TOje!S<+RKdJ%3MDadTpGt{0c9Y<1qM3GtcDFiyB#j7y<_~xyu3=| z)+I35Dt^(m1G%qsM?D(?E`Sj5&dL{bl;H_!{Lz`YIln25KX1ZIl0>!H zrf!txB+(%ybRnOARlEu#;&C1@XqW=+Pmn`_RLy#@&>wt*9vz0(h`h|3t0hNZuD!XN z^zxpc+im`*L98pH#=RNX$AcSx|*%(O)6{n6~Ml54=?HaDhMo3!MY_8jd z*7-alrM>;Lc8{?g7;{aou06t%Pd+8?HFMQ0-LbG-%wnC3x7$%YTa(%D7KF zSc@3{=8rY$bNbxOwEv~ahcr7Yf1FVOwU1?580uZy%tx87PF&+LRkkrR1L`3BTQi$J z-=Bvt9r)CuV~tx#mgzw34Uco=cn%g)GcYhP;deF*1{#Co@GImJ7hIyzX(d(5$ZcYv zI4z>q1@Jf$gYsKwht-B@m4w~6qL1Pmos>#SZJ;UCNg~I5cRUK6wUd81hhKQVl#_3> zvlfk^=y4fY4d?RwwO%&5Rkpae=$)T=2upC-gxb%-uN<(IT~{?oPRhvj==GtW246#!c{nTaUILc z@5gioywViLpTK4DXH||9v;*JqImKtBB_*w6o(^t=B|IwA+uKv9pOS9U5_Kz^=Vwd+ zzOXMhyX_sXxrWn^U`8Gb^ZR_fmZ8$!2oo47k(F&?u9c~(beGP#^{(klE!!Em_N4cN zXvarJI{TbEx3@yz#w$7yksBy9o`nM`I!qG& z^?D=63}5a_rk;Z@mzmWFgrv9UZV=c}a(+~VhU8W0KdIb#wRcB0XwuSNx3 zHajcab~O&BgaEt1ipq}1SX~d7^s3GK`0-;-jvA!VUQ&Jn-&ad3iXCkm3m!0In?f0Q z(yt%eAs6u68HkEXhbN>2eFMb94IPL9xUYti8U$iL^{?|z`ji~X^g5P{et=cL? zpo6aV-pQHy2MJO->%Kn7x?=>vMN`&Gqy>0*WjVP_~eL#O2QpuUERiD zdaz(KbIu{X^!Pjn*A2RdG3pu`R1PP}$6O3xkhf!5jI+15E+8ZgJkMCK;LRbXIQxB8;TO(uz89Od<( zb{jG#eLAiWS5QktM7y;qqU_I`-xj_+hG5|CBzRsrPkqniP7YDk6(7_2^b;t6`5hq% zA8$qLId63!x8&4&@;uwUjx=yj|MH~)0Aq8bMI%fiCK zcX3zHeK%^-T$Yev?CtJ;*&%^{f-GukXAJok-b6-shYg*`ZPYT=w%KIcUzyLIC9OS} zw1Ai?C_1rfUpbRJ*u)_4AQ`XiZO#?Nkrj-ZtS>(TTkMxA)48pgcJxmSMI;h@d= zNZZ|2FrDaefmfi6Dk@a^JSnGsnah|PYQ*xz00rM31(9P1e>p=UzvSH#eAC(pgN;1pf1?qPJB9IV4NunF4L zAP=GznnBjw6Wf@J+sMx6?AVQli@WyP+J4k!>vk}`R=C6`iW6DczL<^f?wqnY_#hA+ zeXmqn4fj11d~Adls(=qJL+l@~8bevd#4tH6ff7|~PP&(d-k*Hbldj~B`)!O?kD0-N<{ zK0}etC8m|hWn^dIr)On(`Of~j3R=|7GRO%Uilw%{NOE(l6ds)PTnpEdofVu-#S)V< z7CTuSsH@!azZDwGT`PtS(&h%9r>}~L)&2Tc`?g-%MImUu`8OXW!S^_j22*LQfau#~ z4ymkM#5VP7XhhfyeEQvwL5kgP=0p#D|Mq}VP_2zWS_QK%$R}vdA++6?Qdx62QO-806THjss?9}k^ zaP-YgQ0h_|36i~zbX;%i7hCzo|XXT6bnXX>D3=XYYN)>nHN4b%PZ>;EZ z62W|2x;tv3KYiEPg6Re3UXhqI1+p()OY|PC8ZNTt%3=_CZ{T6&wxHFwDHNf=Da4a! z6zlrLz+*9&QG|XSL}t`U{2|k^eg!Tup2oTDvAyS${9LxF(HWHfJotYF&0QaI( zzh1mkLMOBH^Q{F+w8v7fETi@hr-9bmbpz4;m1J6WK&{q(`ED~H&+k!VS7HQzy^-fG z4?eQ>np}MJ2N=)r(KLJ%pWmIt!U>F+O*7^e4YAvq%|OREk^WQ>b8^@4qJ7!)&~0g? zPI$N(H{B6pxjGq+2~n_IahpyUGkV#|DPr+GCQLwhAUL?MEq;w48qKD$+5l-H(x34+Sr=hTtB{!oqBi8 zM!Lt}pSE_)wl0kuWAUR>;AC%but-(D?NG6N7h>(+a=3~(9#T2M(pwUYzZT2-r>2Ko zvB6~^l}JZP&u>|S4e?kTI&b`8@5oW#b1tj<>-oPcrhB!bI}*hlx{{;MNCdasM()pK zBtAKhT`8yIo7|n}65BX~jcrj0r>HPpn=IgV4}C+?#XK+kQf4cTd3SkXL1fvoU4oK| zT%%t+M8DS4X~aylsNnfl6^@1RB`G~}nniB)fuB89*cAzv`w=K1ix(fRIUN?3iUU#AEM<(UOGymFfiHmx^Z@>GKj#W7H z4-|+++kk~9dRpuV(N2v>3zhwHO{gQDWbA{@(fzRo+GP+DW7;KvJu9b;vsLL;q>H|p#3HGyNL_hO!P^O&7wo}k=8iLqJIId?t$f!~p<{;se`At&4!^25UEoIsvzWPp~9Xb!gQMWd`#Fr}P z!(Qj|;LpS~U-Djl^$jCha=R~Ba&>o}W6ii-*rKl`a-M95b(e8#sYm-s<+5k&ty@;y zdaA0mR>QUH(1Tpqd!uZGwehKkWXg@wzb$0`Yv!dbrtqeG$7Mmi>1x55auD{5jf|99 zuH7qmY|;{82kD*jmcF3~c6YT2-5RPtI1UzU6p7HW4M(l8UN1CC-D`IqZ*ooch#$TZ zb&1bhnvo9_o|ZYDx0xhe((~S z*Pm}vr9NHB$z}Y&RilVfIfho|#(U-Z@`V=-?uKo4-#RdHd*4m-FogYlY6misqC7Rq z?K^I3<#Nn~vng?NutVSA@u35{>R0Vv;&%hrw6tqD^|M5sE{Mz1XO7HRB|B<7dQ^YS z$8D8(KL(i5efwVCex%&GgrscknrtW|E>lHM4SgP%Lc7M5iXM)G@w|C012`(ID{h>G-J>HC5D;IGI zpPT{~+_Q@(Ahix9;)Pr+2DMa?(b#uExwR6r&m2$_xQeGU{XT?xNvjN|Mp=9D1MPlF z1yd9(S%xmj*G65j#@hX5M-7lTA*05Hy(c4(*Su`)6ZVjC+_uiRU~Stof{aaHqwB+!l=>8^`5>(+$Oo~iyLA%P zQyV>|^+U;DjP+!nZ43;$CV0+BO)ufqgpypjrN46MPT2X?w5RA>x*|2BT}kW38~G=h ze)-R-J{C{RoYCY~HNddoBX>g6_Gp%l5^cz|Qy<+x;igH%w+bq7ZOz9+B@Rd06WVUw z%8lb!s@)n2EX-TynpChJRAYKQ#*rt;H7syuwCF`wD|bv#YmW-Xwp}P=(zMeRvUrO= z%NaYaP|>w)+9Z8QS8(?dQ=|UX3uvpXY&?e4v)=zLaY)8=Y-*oTYG3nL2KV})DQcSc z%6z{KBhQpT6WPtjEA!37-1|#UI@*aDT`NBgKuoBD_pwgCBf9hRtLGGC_n~2UR&l#t zSYGwVg{51Iv||SDv$5Phq3vq}MuF=r+QK5JJ)xkl^{rf7foivH#vXZWJLf?iWc<66 zk*Uvbmonuy<9J5V(=Y1<>TXB;7u_cO5#v`bNzFhJaQ}9|hn@NS{2Aec=@{CTrat5( zOLP;W@eT#o#NZ&l>WN2uu*kR%SVznD_-AZFar2{JU~6EI&w~Gc){OA9f~=^E8+||! zpVM6JdTtQC7A1WY+Qb+S!$*2YCJy(|0kV6P=<+*TVu{}Sj;sY%t1~h-0kT|u`}LF^ zO%KM_Ra?j$C0AX&MK^!E8)!bowE7@0vOYX!Q6#%Lj$-OcnByY$z0*8D{K@K>$mnQl zae)X453%J>7RtIV_)}_@>ti(yZmoWiTAER^!7b{_sj>Ut1xNSvMr00eWbK5D5yGZ7U%ST%#1BGZk;k^xp77!d)8BI;v8t&icnnBVO zT*K{%HsYXxm0z=^sn`)O#ApARP!!(Oe*AN#L2q)}?OWyIf|7tcKN6UyXT7vo zKuV}29Ms93G%o2ezwI9nlV-WoN|}FS1JQ=_T6h0EIgzBkDPFk+y!ug6++9--sVC=tLGflK_slC9&{ByHk zYm(l9s%}q`_#0Vq5sWk9j;6?lx=zI+4BGE_x*BhI@29X4JARIqbxvxUd>Y#AA^ekz zapkwxz@X8&TKWv3IlSQA( zqes0Pdnkdv{PFW?Kc8ZIX{muyj2JHUNfBiHg=kSBv8OT(@q4lXXGN*aI34B?3cOl$ z&nw1Uy9uN>PH%~8MIq*)xkY2!AtaLLA!+wjQ+<9@z)slxOsbg+j>h-I_ z!j`SAK0q#aqa|d$i8h=e%#605=~CbDgB#iyLk^X}5=wudE&^pNzx8FHx?<^^#Nwe} zNonbCQ;pwZHRud_q9mi`J7MKe?biMlx@6YdOMOvM4Aj&tgaOL@U_}SQQ3d`nahqr z>T+AwM^vTYaWDNDMB3ZAIf{k`nZ-p0XdB?-3BP-#=OZ&TV<+Abkm(IFS+peF0f(zh z82%TXNu{Nwu=lxyMMP{WXQP%3IC{ha;b}x0C*gU?hcz(+fH+n>m3q%tP&MfDMldPPPAdM%mFv(d8WgaNc^nCLDy894t_%ge+R9utLxbz z<}%fjkdOfMpZ(o_Op)WP4sKtT39(i+esJ$sKUewBc(-+N`wlV8NJY^NxO}@MEXse@ z%YCexe$D@NET6^wXV1LIhkCU-g6F$ZWC8B}R8v!PTVkRamTq0UNV$6Q9ZBtKFc)eg z1>H6+dk$beud57gs?6)t<23zcyF6o`AD6=J9@o=dl)dC#j zpcOL$IZ|bQMZPbMHVL??__0jhQ@}9R}!|`E>(uoiQQ6=%PBCD zZK@|nuHd1wKxCp;DZ*QaZ7zUP`#9N;j|K) z7fvwOT|>j1>-9XEn~!(CsURIEn<-e)q7DrKk+pVkf9+m^s530S+ciJozPHsF#i^d5 zjDwGOBlT?)6KWT8*pIi1$qw+IZm-#)AKzIs*l(bLc}#i-QVVlYL6alNh9 zY%0#fb*1$fx#)Y?iUE+LQ!2~Xa0alm! zE)&1y<3~=L%|k;1Bo5G!`n51BB_j!odIYulbRGYT=`b@d4>?vH3PW2s0`N0dlVGsh zZE!G%K9HBH+ge89Lp)>m_g+MCq4u6~z`J%YN}iiD)6Q2_=K4a{-R0sjtlycM@+mFVBi8v${G5m^4MNCv z9DFW`D1MHso|&o1K;e{0xio`<)0%{5R6*@&-x4B z{Kd2W9zy?hc`h@96dHp>ZTen3gtSDbzHjR3L4mD)6py@dzkf?zSEL=q_J>L!C!j$X z#lQj;d4BcUesXg10)kegbeDyxqPlov!1KmXNxwcXpfE>{1?1Q6zWN~53g`Vy=z}|6 zya2kqSQ>FKoESe`r16fOj(2!)_HcMuhLob;Wez2`j5AmiL4Pbi2s%a;;BR z)|wpoAh-RO6B+%ze9q3!CbBaGEM<$(!U75BfVTFKuv1b{U(U^K@$>V`Y`85HG(ec! z5CKR~&F<@I%60!2Ox}dz-=g0-Xwt5UVOtd1jqnPVkmpR*0RbP3nnHjt=j1#ITL=(} zJLs`;yZKQUiCPaA4`;<&I;HLt_1scEX8}b_8n@Fp^)`S~C4LwB3D6jc~)C z0G0_1D2f<0R&U!e!5)n^KyCp7K`vGdhw4ixJ{zIi4JlJe35U7GcnIJ31dn$7u0bfI zM-5*A)j~jjfzU?Y<^$lo6iQ$tBXy)hUk=u^O_*6yQA!Fs(U1?79NGz?YYgcfx6%FJ zOWM5yH=N0`vV>WQ+Ylwpctr(oflpp7fZl^ zB;P;QVd{I35UA>68-X2Ci*2A8*DbSF@7vV=0H}u(B-8`V*A&KF=X3c+1@dca?Vwdy z@Euy1gv)7giTdc(XFDq`0Rhb1KSS@@!a9?0eRv0#i|wMX{v*e?9QmSg_^HP%Gek=;!l_nhY&GhtyuYqQY# zpu+47S=fl}{OnOux&;-ADl##IS*j&D6sT&4P>F@Suy3HAZrV4%?`}dzp|95pwerO~ zOcXFo>9EqGqs z+Q@!)i_Cj>q2w2HwKWU96=dKa46!C@JWSH->h~CKV;B+xSWLHKEdd}r#hBaI(M&zC zXA%HulxJl?Etb$c(jrG;gCl((tEj53^7ZS|%1?}W&=i+0g?v5V1Ks^{$c0{9h!g0S z=^v;ngY(3RJIv`?%;Tqng}q{Z>YDt5S+e3{Rzs;X6gIULz(@6AMSF^`J@_?}w_IH$ zbf&d0ca!A8a0+;Lat2esi zbV`44X{*s2KOguMu(OH6Z|^0d4od(-nLt*R7G*VE;OAQm_~&!39-&LZbFj0&7jiIH zlx}FAhE}6IVbl2Y*oK4T(m%X_ckhnaAzE(qOjH&W%=)t?8Wfq-F>4aQ5>ASXFq=^5 zLh?0OKtB=BE3s;>cvG)(u8}_DEZv=*9V}~KFW-I5nS#Xb?suM~dK{U$7^I9i1KqWE zO24Wsp#&jWH@XJJ+a=4o`#~RrI@Qayfyy&cKkj)!=CciDwav&;mpMfIa*a-uw1_lSAa&})d(L6E-b&9EWcHrS2Q+u z`z0&o8%5pD+>JoG;oia$l9xW}x@T^V+;fYX;q#7Muvwe5D|lAG631^v4|n@iT>daB zcA$Eo8RGOV0|EHQ(D8(1XIpq4;`)<)>VLyN9jhu^hm|pr%`32*ZVc8zZDwmteUBBg zn}`8mkK!I@#pL%HDrlpPKtl__So7M+?lg`L;rYoguZclw0Eyouz_VnlAR&x+<1ZiH z2mr7kQf#Q6(4I#Da9%!h1Gf)%?Bw*N!IEsJ$>wK|9#PB4V8kMfMk|%N9)jArwr1(_ z!-#>>V`Da)5+|R-9n~cQ@wfOGCuNnoU_2ZmyOdD!9gL^S8(rW+me>|SqW$JI9Z&jX z#y7zvXz9KFKJHTEI1A2NK7@`Nv@ajOiL7wwIH+gM3&O!2Ujxvs=QlvK@1M~wGBFB0 zcHh3>NE3sLNpVnl%10hmHO`ui?|uvbwT6n7x=y!`Upk<`Fj8E7C6hBbn_eUr`7q&Sg)R*;~PyFt*muHIiOEF0I?8kl1gDKTmDQHr|`iL{J%|MrwK zG~F=}k>So_Tyebs;cGr1D?7uu=Dt!}#4R07)6d-0c;j3ht+-8fu)&xk#ao{RQUV|I z6@_QYj~>bV2q3^)h)J(j)SP<1%;sYZ(&3rOVQj+JHpso~8v^(!_)d~@T3L;b8j*G> zt@U_roEuGr2=44U3@9Gub37Bc2Q5K_u3T^5+gccmJ3`cHu(AB%-WNX#Y+M}u(2z5O z&aGb~sNyvz{_-*p?vpt@{b@hEb1ziYU-i2lf7KhI#E^vB2>(3jn8x#gc zg#o}VUvUp0wxJ;l2&q|Wa=-L_4CF0FACNgqe;Bb3abz5uKpnd7S!F^mN2m>+6leqI2Q zQ6l2$zXX>5zApjKJpccbK*2-*EsyBmFZ+K{tNy(t|6Y=R@3;R8PU62e&c8R#zcB|M&g*KXZRxdQEl5qAv)LJtqLD zpyC2RZjm+lVcdq#>P45hXCDTq__!|2B%Zhd)CyyxB(c#}b!V=P&pjYcPp3fp^HJ78^Q^Z2E`N!{ih9Tr< zt7DmUE@=Mvp|Ve38T{`^avH;#*+BA}&jLyTf2?P0l-?WoAk`md~x zIB<#YuY^Otc?AgP?ILn{=_ZpDPHz>@yd;O}orowEE2iG8ij1}XMgQC$sHWI%gz}qr zOXC#;HQ!G9OLk|zRo;;mr$|eg|G|vuMJVeNN_|+wl#i9}Pn_QXI}g47UA4R&qc3np z?(i0mH`6FAt8DSq`}a3=N^{!(Fc_Yc zvqTBs6V>#nGQ#(vToHtuXC@)!iz+kW=Lqlr>EjbmPeg>rcSpOzSE7@Ih(n&`!aIkK%v?=QE&~s^@%wlbyz zA^xUHpeR0VX?x>_Dq>4$#mA*Dg{zDho4dM<)4T)e32@=Q%z^AbLo&wJV_UzNK>2Wi!TCX_-N~j1ZLI9X&L>AbSTpt_b_Zq zlCEHp1g+vBK{=myBl}e3WS=`$Nk(j%QlsQd=ezvO*}%httu&~YjwRjS@|x)H-44a8 z$8*=vsgxaCQ8{UstNN3QYub~l(|IfN%}y$Z&1@aM!ncP@R%SeytjFnnu6Dy1`OJtW zTC>G#SgfpyKYunPY?Na%fSq@+zgAUK3lLUPRMc$W^zsr&-^WCSPPx`?7e!mfxnpjR zi%Uqbve7q~x7L^IdnAAur1etL@J!9ni21#z>ZhKED!l>Ti<&MR4R}9aVyai6>)*YF z-5Wk6WHLE`r5_()oP)e@vfGcVpAiUe8RKE4uXytO}%>l{hq18ra&fF1<-Lj-V}Zh>%^JUol(EcPC4DTM0my~`4Znz_^3@@hKQ2p zDCxQPs*Wp$MaX@;e_*|@5-IROvS%(H7)~^s;uv}y-W#IAsVM(lZMOL?lx}_9LQJe( z2}5`#shoe%sfHHPGG#uPE4J=7eu}py56k}r-PW&PUNrR(eaGQ!R1WVyQ)#Y<;eQ0& zwF~*rY$CY{@Y0fVbGJBmhCF@R{hc)CZfD>6>$?~Ec+L1}3tu<>;cF8FGGiQ6>i(UXviKfb3Uko0K zPW~MbmGyAh@r73TocGw!&<78r_Qea4tudIOL&wif`-!u3E}y8(C}QpD7TcMUwQ(;` zr#jgUquVU`%O-(>0@&qx2vu{~Gn4!INcywweR*R(JiUNgs#Fc;1@Z!)#EC4=(`lbWfB0}8q@f#j5w5WajFR|q-x)K?0A=Y30>l5!WRSy5B- zB|=V8Qqm0gN%pj(53649pFMauG*n-@02U*qp?T>3mG>2zSe92ym)esjLCnCFzD?i$ z%nR@piF)5rfcCM||34RY|Iq)+IjZ*c5#DdI`$JF&=goQwBC&X3!JB?ATbI(n7E^FR zuvM%6PU7A{00aIsFwXfJHTJQeNxi!+$-O<@AOF?O|66Wa^*>yHqt%+|FN>;cl)QTne1DMWh?TL*mxfKUvDVt`I=&F@D`I94em1m7pY@+H zVM3dW3udVH;EJ@GgyGjA-hEi8hd?0Re{K;k6{X%SknaDq#kz)yTID zgb)#*+f-fqepu38zt-1L0TPqNk(%fC!xFT-julutn&SFABt}X}DV~_Px_zdiq~ze> zFf=@DiX@P4iU{gU9W_T*>~ulL=Pd0(t7CzLIR(ZTC-He+i$^E6*e&G@VK;6IfIj~n zCv`yqWqqmYE9Aq6csx8?Y9*_mOk*UMcXl{!Cyi(a5F)`GCB@z|(ER-6_ONlE^ZCAJ zdX*06!{r5he0)`T1%A_e&e6ShHzkoso*!!MSlai5%sDIqK^2m(S zX$%M`WkTH^tJ&x>)C=R8fEMjP^8bNB&{F3*!C2htnnfs;8Gh#CE`T$xs za@SB$SQ}1z%}W$@X*pY6kXB->t=$0eGG<`t%g`}v&|oyRGmEE{ygKjpxhUo%GPfUo zr=M9E9&ud%%U*9n{H|fd?!(9aUv6SMVZ3gqFtsb@`Z=2W1@paQ3gva#(QY;COSB%h zlc9UdR>Wu48{Oh1AucXnVIbMa$ePjjaI@li2PN+XC;Zi%?b60Y%#Hj*p-F!f1v)j_ zt!-V<@2~uCIlcL|vIiE%%1|&cYAK|#(wL29qln0glno5*H%F9;i)o{XTeFd^$3VpV zO;Jfn{YgwYL$jIuUhN59UXOmm2X6^r=_?<6CXnZvkBkFD@y3b&I82$b$(x#nov ziqW|~21%){J&$C_nB-hG3dHHNQbwnsujE3dF*21tsj*hKQ0&hrVP<9DoUKXu++qix z9UdJ~r6$Pfd1~xl3=O#(%v+8}Q`p_9sj69?w6-crV%TZg+q)RKoepfI?09nA9|$s7 z*OHK!n(PT5GqN{NDak>gxX392Ib6MQuk$Br-_#gLiqk!Mpf; zPcV1!Uc6{SiuYghAkI*>+f^pK)Qe3TlX7>sSCUI*Dua{Rs4)`dlidoI(87AhdJ&lsY z8V%Si+^~<_YM{WBFjQFj!<0%h2}4Fhu~u_>)E+JxVbSV(NNJS6BzdtC+~AYs;{<`L z$2*h!5>3o~R#JH{_WD0hLpV*wjz7zK;^|2btCP_*x*Z()mqoM#o(V{ViyM*(JOj3Z zn>_YJO3Wq@ZiRp2qo6lQTF|v0K^y3o&%3CH3I1Q3Ot?sr8& zHOen{XROD{bOcwHI{T%zHe?;=TAZ;I2Ead1Ff$iv*?~HRjYiH)kq<(?IcFEwO>R8T z1G13E47JzP9|(zqK)BB4J7zmOIuugb?ndbpHmlrEq-7Fit>;>}9(5sOC)oH<&=?pa zi`v)--+f;ca`5E8`?29%IiAXHrx`(){-KGN@fwHk$HVeZ>@`;L3fTF9K_L?BO8ZI$ z@vJvN${JBbt&mj441Bm9O$#p5%{yWNHwMIsxM+v;QCJ)iXZ?jgtr{qSqwZ`zq1wif zF*2Rs^Ehty?Cf|VO*cm?Zj+wLahB%3ZbDK#w-|p}NNRvUrbjVE22HABWUP5!pL20= z>~4QbPMaoyCXM{0ov(-2(aZ|~s_uEEgx0!T$eOeMa-Qnp# zBZ;blD`eD9)T-&}=*Z|y`B04yjE=6N#XCsSMT8$48!i6)(N5Y`Hr3zYVyB#2cVnQJ zI)I?+=Vj7uFlaQpXsDsn*8W0Ohw(Hbzl|J`U}j<>i5T(~5z*7rrjfj9ATedr6^u)~ zwdYMukMF@gJ_c#(dx8t^2aj~Smw)8{)!tad+v=mFAfLmvkfr2d-@_#TuMY_Wr<*PW zxz&nGtExUd- zQHBT*@w)b?ZLV9?*v%x<3Ai7>qo>dHyimTmx;t6zL(xu3(|O9hgoYVqf+StA_l>J& zHiLtiBf6}~ZOihCV{sy1r<(BQR1c@h{ys6teSwCX$`1YBHvU7G$LZjC;Ol>}fZfw# z(tUw~ioS<>X;IU|(mIY&G4gZ{;7FAPY|L}pn z5t82#b$5m#cy&sMIOGnb$Ibs{`YS!b%F0S!9>bs|pre!Oy>C+SrUZ-Q(Hx{}7jK7lobph z(Z0)@M-N4y6iNQ%l$7QAaG!(9@}wE5;HoY;O~eW14r|gsCg~Gzx_t1=G5TScxz%R+ z)tH?f#pXwsTjBCUpdU=0m8ax{i_ylgWSBO35Bb`zfX%MZsWsPt;iBHAjhx6 zHS|euX-N@`CVxSW7{#5pRC$ms_zXR4(Jtf4`svV+LDO~g)v0jK{>0JQHtvPozkBHL z5~wR)xitpxBIGr_b3wRWf94)25g2Xxa({YHGHop5ULGis0z+AkG4@}Sh)g#`LTc5z zVtfraxmM4o=6`;$FLUE0-sqJVAEbu7Ezx{gB%bm0dKo1z8c3hOyVE_xN5&YoynF&H z(@043Nv`MT=zl6h-#O!JW&eb@C2xB4`b$NB9P^9bC{a>f49DfJ6fz0kf9p;x{T2h& zsVJ6>L0Y#@Yxyh`Lr$z=#gZ%nT@?sz>$8o@>$T3@7t197yu9>s7VG524tEmqDVY+g z<2~GPe^6&1;sm<7dvE`C_>aPrI{6c;-rv(mitqk_clUn@hLGGNN`DRtKkCQ-e2quV z{r6^y?|>w3X0B&?`tyTt+yZ@t?8gNqMUl)7$j-u5Io#g*kGss1g8fl(Y%s3n3UBTs{ZE>-7`F51I* zhN_MksHjlfwQ__lX*=5~Ja4x<|CukOL-b52)F~5Z9q_(WwQ|G5!_d;493kW!MQX1k z#~1AE?4Jb%O=;7)oe#c!j;r6Bo}MP+|Q#KjkWtV9NSd+SA8U4}~gq zy=KJ&*SEH6?B_gZo7Bn;TFn=qnQ#DMedXeabLa^+Z9I{Hx8&I_S&?o*_*SXb5-%?! z6(!|8#BzW5dXm^X1zK1Y4?9^{d^kH?Y~T9+-LMk<$B%akSuI@&BEoHb)ivz@E|TEw zKABUXiYAlz_4N*S*2f_9U(@t0B@PjmPH+r~h`6(3ee}rdv~&MWROihc z9KT1%^<4~gp`ZyUDtVAE7kBUdgm>@zMvhSg#3q@@$||}3rf%Vyp@4q;*g1eH>dM{S zx*Fdw&PhhjS?La=B8HhZnCW)yOA4O3i#5?6ajyGjs=f=t${LM_UF!W%fA|-r86OUN zlqUPe4}=U0L65{8PZ+GIaH{0))=IrW>1h9eFVwn#*}uUHA@hIms3GLG4;L#gsN6Du zJnf^qd&9zl(l-3n8VPTQIWK=yXHuy_o2c-CKNS{km5hiD{m=<0K&+S5aouCMSJC?D zIg`(c2Jw*#Bq}xa3pe;HPCt{*57M2*v2TT$sTmzwbhS2WoJu+}$A>wdclcKCoSkEG zGT#T+jFiXP*u~Pk*uQQms^DcA=u^F_9T;F_2BC5izUq7zHEWRolC~ZvF>lH@%mKc44M zi?p%0apjZFnVQ8*)hqPrp9+&+8FFh2>)GaHs5LC=c=G4fi6(dRUlvz2u`>7OuT{Z8 zUVeuJfnB-uL3g%-awg%@RFkHhXI@FG+&o?tWoOQKSWk|~{I6Qe2Ca0K# z|IeuQ!>&hkNiROTZa+1M^)EW=v&K&u=NNjg{#vv!crNm3>svAtVQH~8W04jyQid&Z z#<#e3R`GbR%MWMQ=8lC#^gvd6iYbc^+0~Rj7HPw!#P~0vKJ~k0FiL%v{o=FD=8lq6 zeEZawlf`!L)P~${D-iB^Nty$0R|lg8c6_4+Vnr(u+s}~n#|aG|6d%FX+;_XLlAfr1 zAEeCSE}fa$b((M8V$hNmw8St)nU>)rG)yWu5WoB(izab>`#Mr_cYc#vQN@@B%Bww- zrhtDl)rtT1%j;AZ^w%u`P@6)3e{CShahq=18R<+7Q?|! zG8DyqqSVYt_nm==oaoemeE~K^Km|nB?N{(;S}q&1C0j zarE|34>PTLAinM_&iSFg*^*E#(UyOaX|bRuQuD)+wC9zkfBgYctK{r1N!*^~D$2q^ z`;rhfN`!6js)u)OZWx z=I^_yU%5-Ug;uX+zaL$T{frrptSC_N^e)Bsr;;PGoZ|0sW(m0?#U2U?0S zh*a8Wd8}?hfbT;;O#aOgpJ9Bd+Qbd4*ZDGxyH6ujA$++zV1`6-Xt1kq$d?30#!t1c z&$0_>G2H9CtJwlQu@AP%E2s9k1gA5J_=T(tl@>wajnf?+EE%Tu7D<{ghde8(X;#9B zzTk-TG~6odWl;}4AJMi`ZJb#bmmN_%4t@m4z@ zZck>8;Lb(Ne9``YXZ2gT+Pp;I7ZnWtCFuL3$-`kEWx2NIH|`p3SKJV(E%%UO+FZCk z{>kOUAfglHCUo*k|7i`I7zM!)wMBBpY`8x61cYY-GFb1GwV`eR^B8{DTo5YZ$?H|( zb{lD@`!MSe!`Qz!6&q%p<10+pcZ_MhCjM(r1<$T-}S zxxLS8H=+&AD9fcH$U_C{%pmD)fzQC8A=b8^6g~B5J@u%+rbi&;?Y-njW3O#Pi7XuU zkZM#P80g3pmC;n!^kg^Z)dhG(b;`{gU<_j6Wn6OzSi4rcdQh))+r7l*FHvMkaExG- zTa*BW<@6TWt(X)WT=kDDwY{ zf!3Hc^#}C-TBGRqDB)xi8`P-I2$UEK*usIy-dCN1x(|x3=h|T&7snZtxPht+WJE;5 zF`eBtLPH%uFiCGd$x8M=jJc8Vmy2M5uwQ2pspXN@BTSw$^=@<@kcu6{Scf z?*%%#L)B@-ZH8<6w5E5hhP3%4r|iJkC1>mW!SARAMtLQ*ZVt4KQSQiDuWRiRsz6iGDeQGkzHkllUQ6E8>likuX(-mC^DkOG;}nl^?CE#srCz31^>yJqE)DK zUmUa(z7qm9=;8~rFNW!u$gc@V7ErE;YrYuIH7FN!JJ9!hAfp*?6)2Cft>YJ+NlHv! znua6J)diTGPUM@&-IpQ`NNQ%%elJ<`%D)F>%2OhOtkmHJE5a}I7#yCwz=6KoSgbG#8ZTyhzaiMW^9$a3{%_(J}%NK%(>NpLpt?GHxIFi0%G2>09Z8Gln z0!@X3`1Wiv1+beZy|qS2_3zDpEr((wex=v1uOQ&Mecf?avn^hnPOC{79qRiQZ0#b9k(6#d-ZH|?;NhWiS#|e(N_&9Bp`!pyO@4J6Dzc&$u zzv&<57aDJ}j+aT?if-%-jnmWK<8S~S_N(zH^a@y6r#M)+?Qfh2Y0X}ZF=?`#1c_Z< zS{hz*-&wv$qK*`xmu;7lcBC~RnTJ9v9uOK$u}c;ybE{4E-i6_>5M#BdGA2xxs9pb_ zWuAUcSm_#j!^ZI>r7GV@j>-F;uPQ~asA*&;&)2QDYV z?o04FMw=NPJku&^Pcxn<9uIx{g$J-H#VMm)zN#z*F!SXVVtiQ)a$epZv@XlX^3IU% zu6{7$Up+g>k>Qd^Bxgm=EP`mn{}&7JB{-mHO&KnTP*I6P7x4kf{wa2muw0ON(Oza< zg^3Esycc=n%}KehTIWjs#e^3%p&cCEoqa~m>L)!E?fas}(zzrqos&!!spszW|U4}rNB%XJu{D!bgo8GxT~+K<7Eb` zHS5!syq|?o$7VY!O&!0&SiJUYw3FP$;ZXMHX+LzexnNw%ey`>}?UAEane6KrcgxB! zIx3oG79>xMg^drLv@f7Q1eRd7b*6B~l+o|dYjQEC6Kxd)G5hKc3=O5Tm{#jTYHCJ* zWo+^Co@Q~^*f0FROJ!}|HWeDRZ&@+h8G+KJVN2fpQ_5;O2ir*?WiE0X6f|&;K*u}wm+kBdt*2$_L<3Se|o*e%_T)`?HH9pCX-UG z=Ee{O+;+-iwYR-YM+2M2=wh|6F+N@ue1>+s_w!^6yuD+aksfOI`|HvWWGg;1Ir)v7 zt1h+H5JdE8AvPVyY=d*uA3rE4lvi#Kh*X|FJ{u2P?abK)_s=LmJy4-Lb9 zUUnZ66vK%qiU;Rqi3~d6`ERG)aT4G?eo1XE?`zr1G9?WSR#sMsX4~j!O74qdT-3+I z1q>e-wZu+?0s_jks>F13w)Ph?+C#YjWkFh6+HB+5dQXDR@$WhZtvqq(e`s7RO1Dgo zlY=GPMY6-|4V_Vs;!sHkXS zV#26hZFPHXIb0Z(q|RYIR-}*xD=s#;%UL>Tc@hYP8c+>)1GIoV&YWPV$LfJA4Au@+ z%oE3U|72TQ>gWswR7Svog%!An!6F+Qq`3V3Y7Z&elh{wP`8qnvF<9Zv*aPHYM3Vj9 zoR4mELt}M;{amY&kr6JVF7}%@p4-1+)1bwzw}SmwXT&_7=j4CEi62Gtb3)>Y>#dkb ziY$nv^0f}|r#ef;nwlE3Uj$hQqTJkE6=h`}7aO%Q?G>{={PYhM=GW(je`{8>m><}I zNWOCcK--u4aKVH-F4@R={?kS>xp+0&av1WVHOEK4GRgG zX>i8;`+Q+?dvNr{jQ27I3(`Jc;1vc7mx_wY@ZcbTM;g1Ce9X>@iHV7i@BK6Q?2ni1 z;OGZP)S3W=3#>M&gTui;Z$kEe&ck;x85xyASy3kl}MQG@=h*->P8{P5V1WFE3-+rFZ!uTf3hU zwDY|q%e%S$7ZtiTpqVL({`{zs(?&C_f34N)D#z8Kb9Y8!d!ou^xPUK;h|i$zQ)p;t zPdv>tI#p^umu*3AFoVvR?R1?Gz&-+t&T2;g3?1E|%FIq&yr9hX<>uyOP2*JUO(_mq{D$6+%E#~XBBUdhfP-*#)#Z2HkKdLcBYY-8GgNJv=YIS~D7Z+M zi&I-#MC9hkyp=`;XRy(EQx)LG8-s$LtUOa!#{ovWf0{@vDk8DHBw-H_rr5;m~W!JU~HYMn?VuvOE12tfk)-P!IAO?Y%m2@FQF&UW)4GUlM&Y1*~q5WiPFKgiPxN52}%g+hw1&*p+FZDcKfm1yiyM;Pr-)p0>E zx8rr;mEQ&_{r|*nYR)W@(KH3NTH?{uV|C+wgC6Wa)iP~nO3HhFQI=PKe)+4RSF*`R z4iA(05)#6o+~%k5u>HH$DR2N<6B+5!pP2{j0QIs|R=er!mt+O~sbVxiT+L}Q zG0avY&uJBdHDJ>PKVr!4Su2Da)Af!2x##SUKox3(Y#T8Sl$`j0*uWeSDw)m%#l?H( zYw|ljJMGryrlyXL>G)14b{euD8=5rrQ%45}_q*9JYT5*e+GA zh=kyMHqZFlXbF6-w^(h88ZFnf-kpvv4EX1exPGGxTqcPlUPbZkrNuf$vy8*g zx6gdb98C1|eq&;RU0v&kD>8-osL8Hfy+rQ%&F)hRKXr-}0f2ZyE$f3rCYr|?5hN3E zC}S1IGChibyrhpkTj4zeLj(pcdCs$ro8}>sBvaUz|q^`b>bi2`G`Qk$h3CvXGR(-nV zoq|D*Vx)k+1q=O?>24)5CBJ#g(YS%_hRzM#UO*8`8Q?{w`PM~Ke{H6mKj)3j1bl#} z=fk=Q;>Qmkz)9E(@cH=kWMrzg#`lJPwzXMojhTYbZWjDG$0%xwIyqgDpu#r)0qemdH>-6g#8-)W|0I>{cOnPky^e`(r`uuDT zg+}5%2Zw4pvVTZn`g^@<3tBLvUTN~9xaS7|8w&wcX{z3*+X*c#u$C60tbY5EA{R}~ z$8oYOjsT(Up3dv`c`Kkc6h}!(37BC^SJ!x(JJ6*bR9Q<~m;0Giv-_yW>GoHLrCp^w zGv$Gg#z%XCQQ6t^fFKQ#8Rt~x+M80fxNnHrBb2`omiypQTb>d%cCNWXzXB+Jaq-n^ zzroS|!Vxb!5MI|#BZ;t{IzWL4ueVX}adyh%QkpF+DhdJ;AIm}uhsm?fD1$CK#|qrTH`& zr(15KyzJqU{^2@i-~YrM!3Q@`S)cdA zS$)r2lweAv3Ykrwm&c>q6HCd<+|MleGKMr@x`~aiX^r3Q3O`4~;;^0MbN!^STk!ts zENdSBS>WB1cUX}CZ38}9y{UJiQsm3(=kdAKc6D8z|IU}59-7JL;S6LDjEui{z_9!d zC=~jdvbW#yC$(n^zZaVrDHQ4lxHic~^Vkxxj&MBJ^L?BR%_#6*)8+AoH{!LKfbe6d?<1PMXXIoph`sT)lvRy3VZQthB z76k>x+9&7d!DFv*lSmp1J34|wlbn|;Qx=sSJtP{VlatA(qFfVI*+&V?J}1-|wUH7bRPggmv|gT{{uU(|ENgA|Q~D{xm7L#5D772MsqwTO;{gS@LAKH}3dtTwaK zRZJecyb=FfK2&m6dW1)a^(41Hk^P@|xaOf5*`yGvv=@2l?+{!xSly;Cv~rK!CI|v< z!1575szZ<{CnE!>y7GuBd8i8ESa6{Oc{Z*uQT?Ne)a~e9Ec0EaReOw(x@Xf8KONTw z^KfSx;aj66#^T}~Ky(Y`LXGo8!$L9zm##CIb_t=u8xoND3R7ABSbWzY#Dn_^$N2I` zdAx%vDi$T6+MXlac^K%bDtW#1u}b@5o%j#q=j%zg7@5@K@v=bHd!^`wgoKBPh!+eH zg^+lBeiYS7r#kEs5WCya(uiy9b|dtI#_t(GnBYFGN)bpWa~UY}d>$!y`kp`}jD zjaje935a-y40h}E;Leq{Hu8U1A*5)`{i6|W6_t$4l~t5J46uxNUu3;wPT~ByU?&E$(|tXzpZQd zP}hL-myp@_IU&RC!qNp6^ck)^je2ip4<-?>PR-`rNS^an2e6AXnT@poPY&duh4Om& zb?4tc&%EU*ZC^X`_y0+$pdXz|`|;0P02E?2^>{TDs0e^%h8eUv040eFsCsy8Y;jYk z*5-G!$CW99g{9@jx&;km2^2b*FEs=F^JIgSl7XR2HYN5s655w$9&^5y#-o#A zpLc$YY*zF7xpgx~!5%*z^`p3EXg33AL-d~k4ms%EFl^I7Np@4e^a1w|q+ z?HFi1Z+A-4pod|5DfO%<@BfVFe94;yZDFN>#bEyobMeRxm>#Gys6$$BUg&%#)=l z9PUh1TG?F53&XA<;&j_t-gwJE9}c!j5l?7n(8lt?a{h`h;5O3`A;IWg%4kq~o(u7y zl$)|JDFWY)NZZL2X}OB_W-rKGUkeAJ?+QZy^3=WpGWCqn7uOT^KqYEB#bG&+ZC0Wl z5sZ=1J8BM;(%%k%iY6VGn8m~~jYDpF1~Fcu;dOJ_YCq%t4Jq4KQd&AE*&i(ezs}m) z`gEPAlZoWGyXuS~b##3ax=>t$a&lbl=Gg)X?52sDl2FiHODtA|wcYwBG3t4Vnx08h zOx42V0_~d3hpQ43pRi**i=f>#q0^HYRyY3nBagxf6<>7NxYZRJfPQ0qbFx z?C)AXPx`=pa7zGM8tQO&rX}EZPx!M_zY*u_;&v$p3|5&3N4y0`;j^oV1=<@MizNVr zJDIpFCnqPKfcGa11P+Z6v(sua01pABJu4~cU|-pXN4|b!%rt>?s%6Td_l+;t+qaDF znp&x!L|C6Z*CW8eX||kcV`?D+m)kQKnQG_O5srfIN}i5a>ZNf55$3mKt5fh3pg-n` zYlb_>Jh-eZ5VqTzGy-%3_5YHu9XT9aDu2{B+k6Ho3Z$c=^2sn>FDt~1({=lc(aiVv z=wQXBri%9iZ2|R`z3ejb@}?IZjbMF7MtO-yo13dWHGcm4d^Jfm3;-{Z7^YNftlBB% zHiu+VDDq8}K7C3qF5XOJkijIJlr0C8;RvK`B=@7Sw9FY=5GUML9+NfA?6iGK2~dQ6 z3@mOY)Z?MoY${34JDJU>Y7#(Ex|t5-fiP^mBz)a!)GZmx3kafQ5)?9u1+ zUxoA}I zk<-07Kx?A71UTMA`+z{P<6S;&1qDt(&bIU8bmyub4&*sA&|wl<-G<|uisLdMOLPo$ zSXv!mR3VAI$Jw$!HaPA`iHonMEFn-ZbV>_Lnys(G0jb=SbLQdkE$sL>97C@#li$Pq z$M4LqycPw>JTxF<6yh zj?Y$|UmNgENUZFCNgjNyu9BmK7#!K&7dV2Z$G&^RYea*M!!*ZZt=)bx}1&k;upQPZWI3~e0liyMm=2Mbin=dCtMkcmoas*Ni;qzyiTN}T8gGGrI z>Zpm#P?VE{LrB>F#{=HZz1wx&Xv8(_5jB{TC6RoEy3Dk#2;%`XYmz{UMx*X{l-VOC zEiHA)u|*sF>cyR};wfL~vxoOT{&tt)I3x6LNR21>pLAUR7h);jhrLviHFYBRe*s&9 z!K}XHPS!_HfhHnF-x<%`!F=&o|Ep8B0>v|ha`gYJQ*Q1h8BN7CR?2Vwp0ybu?maeV zy*cO=dt32nfl-NG$HHv(*zAxLr6 zsfB@i20p%dEnrsh;LrOYb-iQ+Q0BkKf2EB3-_B?kQ(X!yO(z6U2fDd?=NbpZKY+KvciC`?B@Hc~Sr?s({FO}YM?(zeT1rXBX z-axYOgZvB0%=Ps*loahOe{GMS-%sdvpg^u_VBphd!Eb0l6+eT+fbVm@A97c|Th3CEG-+VtA$bEl&}v_nKm;~{*Od#MdM_ygPOD1I zYBfUA?#ORwYdZ?xGuY-_A1#roGDFvzWw%m=1C$57Ku-Vo*jOsI=EZ*Wz1dznx`hc- zPj)drj-kN)^7R_XFrzw`n31UI(T44-!@`_utP-#he->l^*-e-3y-ag@nt#RfCd@=q zk}k0yi@^%+dC?mky&pqXSe5nONOX=?tp|{SFU&L=2q+RDdB=YKeA|<71Y~8y!>sZd z+;IE37=IKv;NEv`Z>SK7eM)L-c${`-5a|_4d4dUu%-!J%LN=96Swez`gTwA{xgG$5 z(>NFkUE3!oH*aq`fhMlShMwNu+uIpPF1D|v$W(lKoAEQ#Dl%oGnL?xvbZ?1 zvdh_K37I5V-jC~xVZfv3L4YK!%KPS&9T+oe@cLl8*l=qG9= zI0I&=kNp^QTnrjr?jZyKJO#Eq2M34MTuaj86KZY;qo{Iw->NEOY3a>cTaTi+r>}#y zHa7Y)n*(Mc%`IM6-vM~6NbBQ#Qm)vJr5><^09H^RiU#x$nFC>X@lvbNB_=OV#H#q? z&mcm$-Hgh#)`YF~OvBYc&J8{%Od_cm&67~D9xav%L^DNyehkzjO--I1 zQCU*08T<>}yD(Ytt#xQRC3dG5Y zOA9Dqlli?!;dp@Pdva=u-k^n)nOVvXd!!x!KpW#s?HvWMb!9HO<{F$w=f5xg_(=w! z#Qpp_PGzoq!7Pq%8VyaA!e7gyQC(VG+$a~h z{26&eaM>7rdpWOd0kVagP z|HT5vi`6n_b5;1cBMOHHCu>TEQ&>lPQ`r~3`%}#{Vq!cC)2z05@;Xb~dMIVNNJ&Mb zY*JKDNiK{3Ct$!+Fui90R0;fQFl61p2c6e-|3mxZ5jBAGE>hSuTx^?Y55M&jC zHa|P}sy|B9T(zZnd+5r#XJ(`zR2eoRkkwy!eX}{5Hp1Y==I#ApWE9wT)V2#a`OTUY zMn8X73R;Yo2w`Q_wmK}$cTwgh%<@2@gP4x$cnlw`>WYdKG*S* zYI6gREjeK*fLjd&0WMJ{7|`wKjkfw=hHg$)Z&cXNDQyN^)hApT0{jZR#QMNt$xP8z z0@=OW_Q{Rp@fK(7D}r`4Y8Sc$y?X;9xJ;0emEHcWS+WNPruiZoVSPsMo7^WTm96HR~$|4QT@O z;ALW_{2qOQZB$CC8~yDVz=H2h!F5X1 z<%;AY@YS$5SsK;MLs%3yqlI5EcG76T*woC-%yuW7sQLMY93E9}t!4Q{DqqD>_2c8= zt$uBIgc7MjmBsIcfqE|7C>tCT(mA>Au*az11VF?ND?JgiEb(NBj08I!D=XRz_%J`l zn*pbjO$MxN6ZjC|hXyy!04Ne@9kJx3kpkNOowvq{G|J7)3ibg{JQ8G;$TTNtZO{N> zpdjPm5G#t!O(|3`7)tT{^oe@Z1pIMt#zU41*~?Sb^FZlfnwU*2CuboulbGLgKlIC& zVpV8*SQx9bn8S11-?0=1cUOlq#0>WK#FrXCBjZF$3SN~tlbL~!-QCeoaRFnX7y)w1 zvx9@Yht12}6ZJ<~U0oJbg}I?6ireb6jkA?k&}_EQM$r=YlOBMO_|r=nC^^d*9ixk{ z;)nRKo)LxG<2TqESApRbhnFEEd+A!U}}ND5o`8k709vRx4DqLRM1~@Gh)xd=GOB zs>8#d!|1WlHb4gep2+780-%*yfDR}sP|9mKZWKwFF2~N87;-W(!OD<#GT10AEbIm) z&`ezb;cfl;?qF%{!2=0bB5?BcT58G3 zvESR)+t&(Y+?8He>Of%7ZuRaiR!aj2sh^eanjsiv@jO_-xattpRnu<@arjQo(528E^iqq$~dp^k74lsv*fe3=!*iqQ?{H#uGj*L&OX{ zY1B4WvrS4_{65a>0}bFk!%zX6;|)pcB9fc0b$3ATKU%w8>r~pJ0`eNL?RF+>s5M~m znVGu>OXl~&c|p=xxDx4fv!kg!IvF7;i^nP2L<~tKXX*tjAi%AtC;(J0dr5ghro}PV zA_jUxS-&nX7xy?e-pbQzl&BxvcrdwZ)jQVT%Lr0_W!u=4Hh^C4Wdk6w*Qh!`GTGY; zxNFtgbOWBc%cZEStOm3JlGdd5LPbSo)Sq@ZShTF)ZnB?)q2rI_w&nx-CKn2oszCL! zmh*8M_5+$5Mo7rXrw0^U?F|mTn4+oF3A70KoO&HB+Wy*tj1E>FLnt08O2-EP5{1w5 z^oV#GOCzIeU`6Zd&VkyJ`)#Y|MF&J?d_C zmvpzZ(jm1-NtIBMP8Z!B(kx1)yFeflK>_=Y1c0FzFvlRn} z^S~QCJFGO%?Z`hC3LmykPTh9g-9G+OqiNvE4$Da$Vck1Y1nkmoCx@eA!Ct8H@Ncds zV{>gzYEa)xl{t^_lFW=4VF@fQDS<17wT>+RbB}f~uGT+jAEMcSXcoWfKRI&Qr2XCxy;UNJWn_CXzz&TKK-uQ@g;V< z6-fw_uDYYazkI?G=?qM*7EeFiSssfQ%!E{K@mD|;o4c!My)RLJvDtMz zys8f$_O)H>NLbf?o^EyA$+(7rF;;5z!3HN^-BYJTo_%k3eEO`2kK2ckWuf+y^?66!yQu$!!jbt# z&4-fB11?9@%O869_~&9km8=&jT9t$d+GwsflfNcis)i5pbT`>T(J?So3k;6D@d~J> zCvwatSrPR<$su*{$^HoeNak=kT!EAMuUa|Wm-qiPW{^SgxqH-lt((qTfq8kaBqcTM zeA6>weOWBR-ma|7$;la^3)+_Abg^crEc6ibN`)?6H|tlfoQU#fnLNo%Q8BSuhGtpv z@{1s{OEimN(!by08MVhP0WC354Izf3YTBEt)KjH>Cu@$tvghyOUsgs~_cVl?_?cyt zmU6nhRddLb)uEjvOg}%rleH<-AmgBW*r?Zr0~fgPN3sI3K2MD#uv>V2`jq#Sd$RH5 z>yxG~T_*gS)bbi|Vo>W+${jJ$)Jlt;@oc}7h%ehaZU4L{f5+#lQwmWb8RoMY;g6*# zJe7Ob1Xv`GeP?6u-W72BY2`NA)c-YB*zF&Mw*uO6$S-%h!e86mCp*f?wRlGHP}<>$jFvDSIJ!5Or!&b8+5`HJZFz{uTTN$CHZ1w(jUF`7s zDK2#mS@|287h0z+rFu%hCaCf5;ykR9vVcN4mDm1q zZaivncV~GIwtkH&=YC(JJ(GT$l7fON#OyBoH3ge&!sbIgYDN-Cfz8;t_#xhi_TP{u zKozYGwBnIbaNh7BA`P0=AoZ-be?;7PKzMpjHtiNJZq(5(;!_j61P;jgF=0P>iCZ05 zu4_7Zo!@SigRWAL{?BhN;9laz^R%3~6j)9EK}_=ebi*U=L3IFp_ur5Ie;uHkED8#` zEG&I1V`hW-@t~JzksHV{gTlDA5oj$p?sId1l=rV_?E=MHs+lu`tvQMYKQl(nA&M4z ziBJT)gC$N8{Idm00+cugOMkAmsDxFM5ZuQ1h*uFWJRwK@fJL81O9MG~#hb0G2u!F& zN3vPypb+MSgiBeSO^DyzI5DT##KOl$7woOsT1>#PN#$tp!l`)&RvOePvCnN~>}I^*uoHit4j?o?7yar-rabayukB)fx4C2KG_ zk1v`!o+!LC(A#?x{hv$~3%A4V&?#0UQ`3_jm0_@}@2riom#=cY*{lZ4L>ixqyiP)9 zX7raYHd}L*@JF1T?9mt(K;2U&mPd^W7lc&y!^Lj6M}vQKk`OG+%*^mHQcDs%H6mNR zw5lj9Yyb)c2d*(tP<^<8eCo9O?7qLu(IzNSpuOBkj6;d)_qu&gNl8h2{5wb>yTw)g zj7XqnCbqWkdR3y_K1b@!kwp*WbS zl6srM+n1OVVoc0!27LlW8C5T6jZfC3A|oR?IPq6Uowh-?4I1mFT9s&{2qZzz;`ZT= zo5FK}`K6H5q?8nSdA@bb#RANy<=0Pi6N0BI+R^NHgCgjk5zYXBqKd8IhnMi zMK!0cw)SI$?>+YDKg-P9ZduR)*~k;);aMN;3eqTGJl65pcdpW^TnfS8UKxDX%ymCk zt;ib^&$d=vty0Tq6X+X3A`}!AwYk4>-MkwU{yztbcz?OXLlR!s80jv+KSAXY>2Nim z5>$8zN#DD=qy+`t#k`_ks6{9Ma7(v0jX>kZ6R5@yVrI(5Z@;}birNIZpiI=Wj@s~& zr0#xss);Fi9|7;5KOO40IUKid6ro&C7_K}~$_P=Bo21=MG^+iWC36be?3Hzrkl80< zqM```Z4qnRaZzdV$xQjz{qA$W&Bt!0PGZ5mEmwh99nz#Z+v?cJ(?zr10d7^&wD1)S zYOt(3Z7*D*V6j;c_F0g)<&~cPWPpy2ZVJ*yn&-m8;f&gclQr{-;9;OzrK3=A=84@T z3>1CdQOK=WgP567eA-gv;o)J;E%-yJqExpf3{ycqsK7KXCB=1Ps!b-=`H%Jctq14{ zZFm@?NkSwTo?YTsd+~xCk7~yO){CUIaaAs=JGZ`tA^RUbe5jBT#oy7LDa88v#g~|v z)8m84j~}UMX(hyB{e69XljzZIEC@rN@#+(?=En|}9dI2%b~0LO<-ZK&2pL6f$Yh~N z;j%v=#d5Tpy*`4n4IB8@SypAHmy(g;t-(v@pHxYGKiC^jg4s%dG$($4V#|o!45dtifr-hQ58FNGMwY0fyu!zegV{oL z7&&_+RfqEv2Mb14n=ew8Jy#Xgb{9zRhrBX3Pe@52Bqk1?B^)j?m0m9^alA zP@}Tki5&!{4NS6*EmKapXOF4NnCRKN7u9T@@+! zJfXVd+nF?jHkU9tuKBRld$DdlJXiBnB`uVmj}t`+PO3$P!%pDIH%x+`fqvh%DOSOV zs(be6?3lZw?Bn3L6W0QXB@eMI-bQNdf6sxbqNuFwuOJE{4qFp|K%~Q>TWmh+A;w^A zg`jC}6N2LC2`pWpzGq5p*1nF5>0II#FT1~)Jf9|aBI37#j~8m|@I%wS#<(}F_(KE5 z5Dkj8aFJHe?oAKP zwV23MiCG!`?rkxAR+Qx+39^{AkvC8yB&Q_Ee*&e#uta>uv9Yq9munguHc5pmP*p@7 zdU%lMs5id_D3GYg>zW*VIR)r%YvDGt3)KRirqyEZM4JKYnqA`ikxBJ z28UJU^d8&xUj=Z~qCQew)B4+ME5oCJ&c-|(m3-&#{q@z=$EIaVBsXIHaVs(~Up=1C#mYTU0a)UWopjQL)7u=&t~2aFHD8BmopD z!2VEEBTt^v)6*Xc2e+RM$}qFB0Z^gkjc9Rk@g0_c%3=ym=c;`oX%k7$^|3QgeOt+e zik42yPZF}ys zq1}k?u+4YfNopr1gaE?%n%~0yKrIL`X8R>fk({O(t`b93+Gn^XxcjbN2>O878>h%JGw4QEcc~D5OFxO$Vo)Bl{rA-e|KwL&T)5w z#PAU(CF(-9%9(1|9m?Lb8W9TweA4bJfw=1aho&H0m9p0@w4r zz_N&p>}-m@9`7(l0>PH|B4h;|1*$ALeWd1_rDC3i|S0N6Vdy@8b2v*-ed&?|vC*+LRS>MWy8A2%kNd zO-{FUALX12qn=faH`&XHjudsf4b(dZhb%^w;(vAymUdE8vW3yRtIj$Y&llHY?Z42K zcgM&o1m@n!CIz$|btbEuoc3}G3JM@}E#Ibp_h2=A=7A*FsBtr66Thf~L$5ufRI2SP zCEBYXep(F+R1^OT ziE$X)_#4Mg<~5paCQ`0Xb`Gw?{ZnLHNJaUg7$MWPG%HPlgYA>hW9!(`muxit&e~$k zaR{ZGn4erXx!Eh`; zDp&SwfAoA}LvEb?JpB+bpt&edRkQ{gWu0w*da(pYKFtumB^-OvT2k_c_X{Ke!BSIB z^!uy4XA_{5@pF?ZbJ@Ex;Fg!r-#eLMdz7g{FSrqqJ05=D#ZaSS^W}a(`*vJ16#?L& zt>?!ih782-Qb(4a{jv?euMiw0uS`$;sKmX{9-LD?geA_$GktgNP&(PSwwdRu3z;x7Hoebj723~a-aGInE|N9pbS6D@|EA_xN_;v$S{Rl^hdDi^ z?=nS+$z_*OM_XFWZyO%{x9{AqG^pE`r}%8OqeK%vy zMlDz8lYR+1(@2)|)8jg{<_Brcr&FW99vmFmeRG_~!)L5|)a$D*b2i$LA}CN(Ykj!# zlPkD58)&12X24ZdNuLq^R8vncvXEU{J45;qUoKwv=xRvuHo@b_W;86#dpt?OBQzYg zIO8(n5)wVl-5zE1aw9zDl_}AiJ2=|pjb=V`CCF@Q7MJ7R0^1gjY0B&bTRDe3qs4LC zWyS9P{*`WB4EoLerr|Jp6WisX*Mk|A2-CfdlWw<0F7v&bOS#)CV>+8QRxdYxZ4j+} zeQGNIutiYnM}RCj1_oB*rIxGuhPYvx6*jTWN~03?M(V#I_I&(X3UcUdI3B6ig^i@8P*s97QpvPjq6E;(>Owm4V6#@r)_DR83Ac)dFX(x;up;+YD@kv@MnG zKk`GJWbSFLz0}r&OMdd!6N_<|xl7mmr?uy45@Ldb74YznXJ#2k+dVvHf^z&2M_)$K z2uWf?wkS~{mM?=^oE_~<+s!Tn`-BG)3;ve)9E@XYJrE2;3wM|O#ovMZUR1jbg~x06 z+Nt2<>A}CX05Dh(T;QwPTWC@TZ>cz*gt#fZ(Z=QmzwuRmt*YDOQ$u6z-cE~4Q=*L%S?(H@ciy=qF;&*_0`}8S(Tfc}#f5C${*R)AmRP?#8$?Sg6a5OAL z8Oh1W)VfMuv}P??T~l5D@|sPfRqu@u&XDxpP`g;BxSv1&32W1u?`-N@_74h@ulHY+ zt29BnVMV1z3|Q1oYXjO@96JlZzjarVN4xnudwO;^u>wqg)qIFp1{Qoy0o@^@jf@~@4KcCIDCCg)GR(^d*4FmwdK*$E^K@I2WV_&EbmYDw0iFa z&iM7#h%i=Kug@mDsTr?)CT_U7%tpL)@qDN$Hk$=! z*g%n`N`z=GTOcc^>yl%tc`#VxvNAH55F<=W%4uJ`K0fc>MVx4tZN6M==Jq90b~&{? z+wbCTkNL*z)`cZj;HK{Fk2@U#S-* zCR3Y2iL-~Qg)0_Ap9d@|ac&2dVkhX9h$)Aq*ypTsxjAZP@I7|ezmzgD{pc+3VL2$% zOVmP{T9j8^_V?S|_MQ!6E9R(%QOl1CyC)<}Q+LKsPiwT=?SG;8dmOpOCBqTtT)rkL z^lHr8f!R&@gZ3wDk&Bn8QU#ouMB|^o0VmJoV8MKU_EDsZe^r%qvNr_@ zw`*ib$SQH1q|}YYD6Vienc1y_V%9sj|IAo+P!bV+o|r&KU45hWIe{AI@M)HIvQ(;7 z;lrIJMGlwOeJcm*D!IcQn~ji6gioMD!oRornjYYac=o(4mHj!XAXcTO*ovX@*tWYwAa zFp#jYJ30?k%D(yp8{- z%smrvGsMT%-`^zmD3G&Jw*ChY^4>v>VBrT}{mF-1&E~@O-uOV@qJ!y2F|aY}8_b!c z2~9pWIYz8^@c%v|51gO}P#QVc9&>W?w6-n#9|4>TZ+RKH$PA{#9!gRZbG!bLl+RFE z^rYCWjYM3+TDw{{Ue^}oUB2{N+Y05?)4&occ!vGS5s5fg8nj@6xVVlC2vN$ z%<#XM#717=$$hoJZ*<;k#?QI9_8*qwL9>4=UbQA=O=+=5mx)2KC^pW{&aJqSrO`IeE+I; z1I~WIu#`cWg%MQIHWR_%rvLwwsrg5uDoc5IXmE)?h%bOn<;*=%AW6^Srh8=F`Dua& zA5ZxFxn%gy16Sk!Q>^+wnUDY5lV{G10rCyi8Cuo+XMes0oJ4`pA7}o_$*8cfu&OGC z|NQvUeDAep&=xijCPeR5j42d4`v z@4&DnBTKkLuSSB4D>+N8ARNN5nvjtpu1U;kw+2aVVQF+UOJ5}T<_!!E_y1{)spR73 zc0WY2niT@|*c*eFf?{X=8#Z)JwXK9ceQLsagaxjq6juSkhjZ4>rz-+-zM&F;bBj?>k+?YUN@MxKsp4&Cif&MqfF zQ3;QTXm$-e*h&T1NQUk5T6YAqA=U_L>*ZknPJU*4W8?PjE>INi<3VAG*LnY~YC%|q z!$!pK;w2xCf`hQ9ES8S0t`s|Z=pwRN@!^25l$7u7575r1()qQ6`O()`yUJO3W6F=8 zpA@i-tZZz_;k_vesmil0;R$I|D}%JaOoa+7I2ZtmAQ3K|$_l!dYv|}H$#)oIgkAhd zcs+t}F=V09B{hmg)c+v}7lkLMlW)|8+bj#pN^n(YWwnOWAt^^`?Dr6{yhrC2lzFhF zCr5xNgVjiumYe$os@@>G#QhvXr>bE!O>m*}n~w8+Zbr>AyS4~=5*`P34vy{BBmARK z2UW$5{gDi6=lC7-q3x3J0YiNJdFXkIkI!!Wx#wmCJq;B15aH2#mDl5*Hf#*{tf=Ispw=34Dr&@Cb+_XRSjbx zZOC$Wr@umxscZ&43>j(Z_!-Yj*Xik{4Cg`Xa%m6`6vvVBKCn=wNU2woKjbkQ1{sHw zbWDZi#CI|Kz0F`sOvv$4BFbztySD0m%hO|PYm?4B9_~a)ven>=-`PS$K&AH)1Ke5c z&JL-bp6obh!s;Mj3?&ndmt9yqu&Vd*>}?$z3#0M%xv_wM)}QSZq9fZP9@^}CpZn)` zK3>qoP1i?5b*#Omd9cW|WbvTdGZVD5$xl80TnMMi4hc8SxkTGp?lp^)QoZ9emXn+8 zKr(9`f_8kv?UY?BBjkEAxk8FhoOLRouIF1-p%D0d9XvIp!=*-YoESWgduz|BKNZSH zSc$4Ag5%S1cXxMsi47`%<=mi`-9A384A;|DJRc1Z8DqTK%?gwggv+J3xc&{MgZX(e zF35fgH_bsYpubD$uJvg?k`N#lOnhwG0{% z#?#x|+d`jHWOwsiPsVe#-n2)ueagRGhj(yzwKr2`w7(dAFW@ejWx-{(41I~txMyLtiRD&|rfIZ_mC+G=WqINBAg3gkLVOD3>1Ee|lpYwLLn zEU!taQc;rOPvbWbd2p zGCzp(Dd=9k3MAom+*=(^HtF+z@?--yywIdilnVD`XF#?o{btA5Sc(RF$=Te4vxEzt zVf30qo{{&9pvO_TRO#ezQ1YtK#H7IaAPZ`|eOZg$wNbrC2A9t_52^R#M|TSUy_l8cz8It+nz+%1UeLzqo_RE!)Ht= zrK9kPiPiITkU5&e-2-*d@^Rdns{!RwdcGvV066yu2$x`GJnl-IhkD!RJJ~qs-4SfL zpvj&tEZm09AG#+r7(2wJYX}vfAgWIj6rg$i3WG%0>$q$v(_^qmh>59wed*h(+_Zju z=Xh=O5wHu+?dLEO3Ie275I9it z*{?@af)w?`2RApr3u<98P=kNLAY0Pkul(xOBwTMdCLVSEhG)|zfo?#)%9)^<5sG^N z!coXp(--G++##Hs%;Tk@aokyIi{>n$S1-o(d;lH;Zp)YI2qyhN+I0Q#s!_X@pL^Sj zEp3r1uwWu^K0Y;;cRSd`%y;MX#%C->%pQAq)M}Pvb-G?v8yjHKH*s`4Y>z(MUfdcuKA2M1;053Q8d*4W zmlbrnzqvvC?rK*{Yiq0Ra7eJTS^2e;XMQ7i|Ga@_$^@7a?r*5cr*p2$SmV zuHd0R{}YyhcdgMHcWUwAQ$Dt_6y*HW_mJE~=hOS}x>SDtTMPL8T-*!bks(iSz!;1G zVmOFt_^|8haU(1-{~OKzx}GA%jhOKnp_In(UGBQklznl-Hua|WFA1K0i85^hHIK3_>+7I1Ikf3+NosT;{wRHdn z%h0NGdIPjmk{In*)v{AlTSBL&ZXfQEG@RxF_Gu7W&B2ctlTyLY(^G0?hL3OfoHT%! zfI!v6cri7JyuRT>5AWgM&+EeX0RB@-iXAoe#*-)UH}oE0G^v4}6O=;%`nWm<20>70 z?=ifw#{{v#t|mlTSFZOvA1~C@l4@K%aw~T^BIUlz7cYEP)nl#Li~lDQzrB6sm9Ve| z0udDxbM55EJpzL76GX|M1^%bUei-= z6)LukU!~5!Ca5#GK$_CvKUPQpP$$@uPUd5$6(Nv_WHpPBJ*%pER~RS|9}odD@;kJ1 z0TB^p*7Nb;k^p)g-HXR{KYs??;j&*FI`<%j(eaoKQ4LAeDcP?M6-!0d_r6k8Y|T<_ zsjf+c^8?G`P2vwQxeA)umClP|Xsz?(OQ)pn1oNCu(Nw!Jia9?9JU=5aPvJ@%dqrH4azp|NVtHY>{Ux(Xmwz^%IOneasSs@!aE`omaWH^I+608uvRj9Y`f z73Wbqv}HXZPAq}`8jevVwCz&A7y!zn7sNNi)TQyd!@1fjYAlGG`?|e-EJcOef$qO= z$eFjNFH?9U7yS*d-fm{0fy%@=%V6ZnLo}?YdruNbR7i-4oo1WOXzsC3b$xSVLnXti zETVcXSmPIyNv{uVmv7%P78uZ{X6gNS-!xs1nbP{+G(9mN$O-$r- zx+?9NS( zxbJ0={qi6SfUqGNV01sfj`eoeOy9n|uV7>As~~^-@7DYA^mPhvOk$!t!3+z=#`f_~ zly&Aq5ybEqNLm6P8osCs3#cOlushrtcO+Dm@`Mk~W3Bp}7u+}%yQ z=h2KyVfpF82l*hFsbi_q7RBR|F5-^`GsGZ@?!F4G_Pwp^L90<6^IhV}k@0|88V#}t zB?B!NCgw(?-`B?*6g1$o0(FtU6B~sP7v5JJ+^fl~IXTj}lK))28V(thoe<#1Qro7R zarHVKsW$`6zGL2>q(K>G#2X-y+9l7`UQUS-=#=`R?AOJNjQ+vX(Vf;~Bbw;w?CkXQ z$2RBN)7HSBp@GFmXi|${asAO+fRbQ<+y0~xJuz_xTQ!v+yqS3 z43*pp(D6|cTxD`OyiEg(ee(dD<=RMSNTjR^tjN{xi8-+veJf<2{=xUapgGUx5_4{c zjVXGS-1vAHVT#)NSgz-Vu{AFs`W`?*MXh@ z!c=_=!J6p}DDpt&hgk5wMBMyv#*UnG#F-3{cg4&{!xy$r!Yhx@DoL?ef`_>pOa8Ug z7Z;m<+abX`|GsYp5^u)h>xumJ#RttUg_;iaGHL^V^WhzaD9KxV;D+6tjRY6MmFRhe z8}WBZ^upb5Hb2yRcx@0RXG~oexiTlo;21Xs#|{roxl?#9%KdSZ&wW%Ye<>E;K*Ea} zDWA!c*!5-T-@E7CnJ9XT857fX7qBbo^7F7{bQ9k97h#Ern6iZ&z{)iBLwY)CY)7#9 z7hm5xdro`HuQ`fMz9&&$n3>QQ()|XUQ7u498lw%8Os;8_IaoRE63Lc?(uN1o}_+#gkaWmlqWQNPmh++WrW zDIQPXT_Pe`r1XPyNz+`-a-B?N+q1(=R7?z3$t&As<#v>zw~9$W9m(z6KQ?pZ5>13Y z4_WFrYr85r@E`c0P#Ywl1?cFd;3~jdUQCl0-!uz;I#gu(ow#p=R<4@A3}0jLJKsQa zbI1uszQ`x}YxMM(yEuBh;;PV~g||29&oT(5NiN8ol@)zy z=|;ttJ5lp~V_d<;Ku1T}t=__ek&8XOCVkCXRnEL@*YD68wA8YF$1r?jXkb9zCd;7h z`W*wGTt(-kk7~O1rvHgB*evOTu_<`9+&sJ+uJit`j~9`MN;2DeQ;}YGgbWXFgpLX znOPg~Fr45@xJBlf`1Ijs3 zm6dqW%U&MOVO^qQVQCv0s<2!2wit6zN}CWjb9QkD;UojDcbSc`_Plmv z1nvbnUW;)@1rR>zn43$7V1P&yG6N1SE;Uef4nci#ur8VE3Pvn18W4KCq$B(K`b>JM zEKE&*Om8ec-LHpU#fZL!chHp~Y4Zi&SnXdYM~p^JdPJQxAlTQ_)dh>g!O9@#(B^0S zb>LqZ43N6qF&pYlbO)H8^K^Y;T3TtDEp1O=d`X$Th1Gn!HOD1Ikn^x+`$_jkvgHcR z{|XB;033&v)wM$ZA3vr#TAG@|{O;OwQ6I(4fBi}|nEx7=?4%Y(LXK4&Y%d1$s>n1H zC{jNy}jLY)g3<-J<9RS{|N_xwcgABfv-!5Q`1nQfukU#O~?tE;xSh zLYdbUK|)apYD)LiR5lmBTeqHojnf{KB2LZOqIq6G(C+RyhKUTz1NPy{l$4Y`VX}a{ zE_s*w5U913F5$(j92~pTBD{;8L{sY|@_9O9=b4D?_w#8=vKTgNW~QcMKSYwn&2w^u zPFf@#LT?ZI}4c=?hl8qrg-e0a#=OQe#@+*e>| z(Zw99|45?|$D27TOLFl!clhceT{Pz)Ws!+e+zrq6<6Mn5ak;s}2|{L+s0RWNBS_mY zYP<4TuyYJ4rptRRL8>m2+DyW;uTe&R-&J6~qwt#~)AZ%&5qTTL>G5i9ZHPgeNtY`3 z>ch(AmDe(_8cvRK(=hR$0KVVpc;+Rld^kjnfesn*~oinwe#h z$?Oav6!MT|m98hZxIz4$qST``(@AP}qwXng_{ZnfjyoB$ZNZN$sC^S^Cyx&}6-%wA zpD1;&DSRaxRHgU6dwg6K#qGq&z>p`GxHOVXqLdkyEjzi4`4AUryL$!;?-p^4wq1Ds1(8!8I7B@hS;tB>Pp`zT#6^^8k zE?IFM6O+c|YpSj{RZsVuTtc>WHL5DE?+EG-Sq-+e=X*KExmHwOhJ8qXnfjl2rOpQN z*jp@d#PK@_3pq@o*V`LSt5;4&KD(8b7uN~ey; zVzL5{-sR-@fdXwio2Rdnz}OMf;ws<2wE#!3$>%QcGcMM~NLPdORc3a+V_Z(}rLOMA zq`Sr1fb=8iMf6W@e96n(zX3APaFj+sv2S}YD&O6G2W~7N^?aG}DUphF?0!BsR3tJo z0P~nQa2YxcdL-gyf!}ye+#8NBC?KBY84+7=i}ZKeHWC{aW|0hHv@~pymM$)AiRC%q zby*UFd74n~uWxnF?;J2gDStI$M= zZ6537M6jabQX1cni^;bY<4zJf-(f(NQxc&p(-Gn*%UuE*%e&bToU%bKh5Or0>-!tD zNTfi{#Z_BN%TgVru7yQtObkp-wx%R7pQ z&`eTtb2Cft3=R^^7?=RpD>+z?V-iv;h^SE`ds~C?H{QoEGu1vy+g9SrW}~F^bNbAA zz{b=a?$Sh#KOuTm^;h!zF~TU2QM&?_FH4osqp7QVnE@lvfZ^ITv5_0Mz$RQ|s?y!n zl@L~Fhg#Oiuf-&Ydlo03EFYwKlLU>UJPb=|f-*dL$5mZr)Bb3t{W}U%H%OQEwu_;} z!ZXV&Lk4OijiMEtFvdM6$nh}?i|basdJdib>nuj@q@b}WGqXB2`S?VUz>6wkB0mS% zK8mIE#l=z$em2FO4+%ARTKHt7H4$zXTwZFpVQhttVvg>4@c2QL4T|)r;xI-eXLyVr zZ}SIi?H+f#cR?(NdGRoMR>NCfU`PtN>)fpKWnV<@*p$qP_&oOG%tnV%n_CHFYc076Ar*n2*{vj@i??bBz8 znfA;@ig4;qJNbnNZTz?$O~$td?};$Y3l-1zg}B$&);c+iNJ`=LrpdLpt{fG3BdltQ zO#Mr{XuaV|p?1hGD41b5j=yw-skax%v#`HUK4>o`d1K*5?DZtQ7WwTT;QwgcPN^YI zE-n4%@@36I*R(3F6RXU<)1?)&Xru?@8#PN``S>=T)IMunAs4#bJZbNl|z;=zPAV3eLAres%@%jGqSXm;)L-H+|aMMP#7tMzIfkJw6sEdjL+G|1KF$dQq#CNcbnvIslB*l7I z&znm`LJ$Y7iH~CD?qtzlrgxTQSWJ}{defU?xKoqyLpqUPA$b}t3pMHsDbT1q48W=@ z8SeD1BF@W2^R@e?#l2@f8lfP6laMg^nKorIZ-{B*sLXu5Z-WihP~k0$N71a>-x#Vs zKaPH_5Eqx3DfA&)=YhD=$_gDd&oj4EzZvw8Dk76tTsTlZ0z598)^^2-{-KDlg@tF$ zbX1uM4$D(@PLfQO==yhp#Mqb?3Z`?Y0(WC;o|BHeOYjE^R%)*x3PG{ZFfrTWk1P1N zNkm2@S2-KQW;@OBuwuc`eJq(P*?OK*Aifcn#3|OgWqVx4g{DpSxMR_c2AQ?Q5bmHe zJH~JCb6IRW^cndR#MSWGvZi|;xq*SBd8d@>1LCH+$?d@jALSpK6*ZMfNy6r?s&H!G zzW;bWZFQEYY)HViNIT5EQA}cV1>;Da*gN&K?%>QcmC8{wS_x1!l#(z3{6;ov& zd@xmCShnG)OtMxpSN4oGG&UZ}Qf-3{GwrAVPpph-U{zs3feGB(Ihv`8N_A|n0@WF1 z-V>=l5Yg0>GN*cO2isGA1?79JTgl{)q&0#gk)eV_Vvi2;GXvT;g?3Imx(R-Emf9~XXL!6OSGEM^H}KyKi|sA6YBW5j?a;rO6HegZiOwx?B-s$ zgNU%BFS94^c+04t6fJ_$%yrmgEhM~y{+no6idZ%_h2-JdE^aN0-yPo^d~@6hgbSYU zqT!9%bJAWp)N1vPKx%w8{+yf7eRHc`%(V@wq>RQ+4@+Rj6qmx#2a;qe%y-ct+ zXuN~&!_IHLm-|Zl(aol*ES8pEp5+x3Eiu+e_pdASUXLGlCQ9eG@_(6;ZIl|N8NIER zBpofDEb+O(fn(n7s6TS}3(2#}@VN()2)!@IVX4&SZvz8)u27MZ1|nwZ^pWm*s+;7B@{c!yPpI5pVO1ksetd>y#mkG(e(&D-IlUwW6K77_Khih{=ImOu@;}SSn93t1 z>vEgJ?CN?VDekTRXO6D3^FOpcH*U0sPLlXCYF975W-s4TdiMY_y*gE{(+lQm0VH48 z-*=NSGM<5GQ|)-LV9%RP>_804c(C@e>v5Bk-s-LuFTTMptE2>M4qi5#5cqt)(?5qV zK0X+Ul*UFK(g}MWS0C^rglWaaf8YXDZ=C;8EPIq2fL0M-_O?sJrKOdk@L9u4)x*Ay zKcu6h`Cz~J(W)S=Ih528-3Q(=uCtL0L+(g{?Wa;rwDaG-5}-E8eD@EI=H|Ld)NjGF zem~G~!vD&;-roMNd`jGd#HwMr#dh7i&CQwNsV$3KHU{-}r)$BMFoOJ6G1hCgPZQCCmucwuO_8wMhz{fA6U-AYP*3&`K!f^YYiVL?`I zPl`NY^=5k)tIKTdFEQFSnem$qBxXw#-7Rcdgr`5Ce>Jg(gMPcOuZWpx>Q84)&;NIM znLzY>q~#9HBkhXJn%M^)7~A=;`t*S7D?&~wY-;?9{C5NJyM5;$HsYsPZ-E;&%nx-H z^-KX=%mgwiGJ1Lz3JNWmj=#DO)&*>X!vf@~gTaFhm_n;=;hUjo5igTy0ulms(U4!9UPqUGQ7Gl5hB&MiUI9WfPEu^|`ePX3e+TPg# zN23tg2o>4`w@*Gd9y8@XeUc|FCMGE%QEwyr`@ln+4w_{EkAh}dBmc~?BCbF^J+p;6 zZ=R6Z#tf|r$-)}@$-|O(>YHG5Rj8<7IfG(~M}Uc->Be=BIXdc1c%Wzq93^7e-Z8Y~KN$He33V-!9gAMioA)!5pq zC@3iS;3l++g@x)GS-ut*YoHKzFJFF*kAD{*54OWh$bW(H@;)&!+S^7fO_3aA0mBk*B zaE8@<%gG_gQ(L3h>!GOtgKB_w^~Ax_A673=O`Nqyiy)RUFff!ylE8KQuiJc|+x0O< z{5`#zi-|jEKKah}dL?&Fetqb<*$kZYEEH2RsfH>8rX18pm6Yh!dKoAv`d}mwE350l zCIOJIj*l;awV76hL4pwga`ZQoAXbcsjP&>*BInKj8QA%vFogpHBn7=P07(E`nGk6s zc+y5kTNLPS6B3>t6lfo8CPSI}xtwTIP+hteh~20#0Plqx3h=Jb*)m+VKRtZFhFWaF z1ZfIl|8XOIsFym@mYW*7lKhLF@d)zcaj6HDorzJJ0&5_W8Wd6JIQ|5ARPwd?!2E{t zKCt=hU}z9D*|d^Adh$JR*l7+{6L(5eFCpXxh6E>z5Zx2b(B&HIdIro4tbjX$)T+6|%j(aWpe-t<|B zzh%5TfWEjh(|*mj5-_?9v}NxD*^mkYV9^46e2@JboR0UCHLy82riiY}AejWzAaxWR zrKF%xSBvP&)pj?Lj;(s$B)U4Jl>Pw_{`uzXpr;koSw61j6cih-2<($?|8GOp+LQeWT_bb(?=%cukcN6G(w=6-gq9Qy179F;Hg zuE=`~zD){|+O%Y3@*FB33n}M?sJh}_S2r%KraAmu3ut^#i+YBOP1AF$`J)QZKkgq9>fzjkThgKbIux=#XB{sEcD zXI5G^HgvQ2n&riP{rw!!4VitQ=ms;Ca-Mh+kB8xjhpV9w(0+;qz+#!LsR+m&futa_ z1Dd+&urgQ8ir%9=t?gr&`k{h6zbgN85=daGc7aA{-jCSGLNX3%q21*FTU~=I;x^;c zFs-Vt4h`4TRKpq9bP{#^?;UaDSukDTPZvK<@-KhofojevTB;Pi9w6388Y!QX$;rw- zZb^g}{5}51x1H-~;(uXF#UC~(|8{D?FTOXCVKlY$-RGV4&;D1y`!-kzH;86m(4FP< zr}y6%UwEeaoD?ZAMuJXlgoiBskC^wA&NZy4DgC%`d;E)n?0g}{pKk@n)lfeYwvH{g zo}V|D!Z`jk_TbIjG^E*jq@-uBcR!CHBx6ykpa1-`;}*u7MS@a>e_wkVt7z>Ssq;Ar zmmL3sY$FusRC3o`7dk%y3FOanJP8>TFTSmg({HIiAB32vn_ZY<+;gZ{!wvHiErtp; zL`2lpKwL^NSZCUs1_cRD@K64IDe-wX;6?5za}mVCgbtF0~U|5p&?*2Bxpc-D7u?nZchTHds~<=I5~L^c|k3j zbj0``?V6=PQ{zV%JuNraE(v#8ruMhBZS!(Fdg+)Em5dPD0oZQ78Ma0IRow8&js2cE zpx+{lvRGd*(oPiC53?vVAAJE->y{D+F0DKrtnT&tSZb_5c6<(~u&OSxO{iD?-V!Wn^V$C3Wn* zvPXmul1->kMhKC02rYZ>O~x^@Wsh^N=h3Inb^Wf}=X-tsxc;p_+>Vno-tYJ8{Tk2L z<8gnGQ$!_P%ZxKR2U?5>+2;Iy}HneXy(Ob6DE-4H+R};w$9MsY>KaVdtfh$Cz`4D?L52 z!R!1MW%M@+oZ4S!5|Uc)%;go^FKsO0dPQ-TcdNWUKcnMdqcE(Jn5Zd&5Uf@&QrL}u zh4kJxT7wiYP6fCAF&G~*K|WDn)6VvwGkqP_nuB?x*LMOu)@BYVXoJ+l4%jv) zi3q^T9o)o&fPIdPh?GwJ((^oi(-7VCPv8M~!_z=(8OEcn>M`(h zaX16*prvZqnO;5JqK|Z5q>UlHFeGd@?t$OSnI9-hXz`s%95d^TZHxQ*Pxcu|!%}M? zjj6dn@P>5o-KIpr_D^C-O0PHOZ`cEqk2%VF^W032J7d{k}*afMb{A@RD$ zFO~}LincZ;MbaHq5L?>>#wC8R-!f2zJ4ywKY8~l{6y`4y*uRft8C1DFc+gQ~;hgEQ zG2h*jbIzn60KZm16#x?rY@hL2^b`QE!yYqK^Nda^BVnz27gQnlD%Vmwzf^~0fPzP? zob2@Jdamb~d#J!u!#nH5fuu>)XU{60Z3dw{r1t^M=5h&Rzx0exDLUr+PuHbU_vZKy zs;rbSqY2oE5P&I!Z9}xbx+HyUl{bUcU32pvEiVI2&&_RKjYSZP8X1yOwOm@WKdiIQ7^7oS5DYB3| zP61sju&)*H@F#{kxPBGx&PvLyGefS+fKDpa7Qk!a`0+BECl5eo1N{}q3fS+w?(55U zpynBY=psdD=N0GSH@8S!Hs+lmI*l#$yOG0@r*M^E;8QWI3%>_qlaBLG`UVGYNl7_i zKx56yd`Is^FFWs{?)zl zGL)OXMq%W!;It>=eXG!V^{QQAe=tWRsGTh8BU{umxD!Cb0%Crsc|}>8|4)v}P@wc+ zTi$4CYtlY+12X(y1J=R44!J;!PtP{a&sW|PO5sY6F>4#l-`5$sSy8>3Fc5*VlJ^4}qQ-fdb8CKJ1pc~*> zh0%%UsO`3vXCEJNzp}Em9SPf%lQr5ZkM9|mTz`2O0$|g>0AuvB!Wjty`CAKf)5f799)I(lP+A z2`V1zR?pUqh&(KkRASuxC_=XIL3OMjpZ(p>Jgz7a$*jb5E;KQdG3y*8s= zFsS_a)XR@{MnbshFVUcBQcM1-k*izsMl**UM8t7CqYuW(42h68Z_HUb_cjK`moV?kRv&Mp+9q`NuLrh z*dX%)ta#+RYkomCpJvAv76u_42C!Mco3sS3i27O3byHKbne8!MyXH%DSUjO{>a(9o zR#sMrRrsQ`t!*Fh*GgAmc2_EqB=Qp4rm*Ku`-e%vh(h6>J3pze&Ok0|1t$L&y34heEqS?dhitkL!%xVu-w?8CVwo(oinsq`*mLMJ7 z0x&TgJ_im3r_xh|)zT2*J{Z!{j+0DiZZ3~Gm`$%KiXZ_jZp)*lM$nixYcvjBKCol*d>d*yy_5EZO3bM?^YUvhQ&5kVJx z$4Ej#6><@`J-i@sG%ZB!2$)L_RGQD9UuU^-$!)vC0R&Hut1l#NfX0FZC=e1{D4&>q z#*~%`fo~5BP9UMQ{Cs&iIoFMOeotq`kn`7VB@7I-^z}n;3za$3 zjAk2s^2sxC1NO0A>l*BRBmzjb{UfB3f+-=R(BDF`d|jO;*ObwfJ}p`Ps2R$g zhT~W1mePO(?}^VDn7sRMD?V6T!CIh;nf8ZPsYOi!VX}Blvwu900$=e`A`+^$*G4B zftQ(S7fTO>OJ_4@kj(Of(vmy3As+6CB3aV*g+bD@tnsC#F8${xle~*z-*;|8W(jmk z2YFTqRv+k)>OlVsGZB7Zfw2bysVD~ACr*zZZ9y`NI(C&A)fnrkV87k;{OS=>`Vn&a zBv$0W)U~GA-vW^YSLJvneJ=r)cH1fM_m_fu%fR+k3w|wswN+?v;3V zG^+ks!*SL&KwB|lXaHOE>YAMJ=%Iz)0;5DK8t?T6FcZ0hgv>Z{g%U5?qO$6HAM*OB zj*YSL6y9cJ3?a7`y+U`G#Ek}YthK8v?vFZ5H31N8x1;!Ky)0QZm7K2ia9L|VdS+vR z-zdsxZA%>-&Sy9*e0d3Z^%^GDWf?-;8yOz!pLa8v&MX5lEt6u@1zqI ziGJyeu9ad?rYVi;tlC^(UR{l8={XS&YWW%nV)k#H4q^Jcy1-fj;b1yC2@rAtM!l#W zAco}wQIm}=^QBM`FE8)bqdcmsLUXD3e&VVRPH=Wz{MTwPc@nIl0EWA=^6s(jm#@_y zo+QM_TaJ8u!p^puyfjFa5ePFH!`~~z?HZnPzoz_$Cci6OV%QC}JAch%emhqY+Xf@A zAvIli4h2CMlpKGTO%bbA@ckkp+JT+Mraz#eBgvB)Ni`HxiC{ni8bP3>F-*A zH0+375b+pE7H#S+wr0TV-NUmO1k> zHn!n=)vCwirm?RVw0mfJ%s|YOyD&bka7Q+d+X`I!x%%aP`$Cj?K$WMxbNo{)A8$cd zM~AYU+|w}94DYpr1M{(e!*d)8r;3UTs;c7;A4r_7`&5{T<~MDVI)>PW{0($)u-m_j z>j@YmA`YFb+|Fc81vx1gT7LA|F>qW5YA-0YA3_oL?c3+zo%9csi2CgwwX0T~g(j@)713QjF_DJ7VRx8BIK9y$EY?`l0Suw2gJTN6wDUn*tM|H)(DTovQWv4$OuqJnsNlwN z4u;NjfEf=c_0#h6ue@X_m0yfEf2$3rs8>uUoSE!+sV}H2c+y~g;pSF`m#GS9x%`^S zpwB^pw)EH#`xA+a6!b5=NwEPW#DJG)yOk2FscCSDe0JRNz7Zb_BD~|@)!WY`;O2TX zf4vR-@KmTd;%|kSr1X`heeWLuS`=J?2Ji2y+S~sCSYkZtXf4De02L9A($#evQZt@? zAqK%$fzfSPv`h~zz(5OO&_HSCkr$MY<-9=7D020UMw{e74b%oDqM$ahIOzP&8&}24 z=MTgAkS+iL4@W!AJp#F(DW;(xTFyy?J@o4&n;{21&=&Xa-3h{tdC_yAYO+R z^}w90S_yawF2b=dUVK4#@$WPfom@ltN95!T(r?Ke6m^oxSiemZ^tbm4QXG#w3aI~` zq_TMHL(Jqsld7aFuT-=^d(IY*X@Q12SZuYkIhy?(r9&2fnjY5>o-7f2<2XgDp&!}b zWyJ3#YBj8raUr3h^g@nANv$+;sQxJka)lU%`@fIU+aLa7Z1Es@2LIgl*#lY*{vj&~ za6po!K%o0B2j?KTPR@K@KE~eOmQ}(AY-@6J%}q}g6iG1DAT`wgSc=@0hSLHOJ}na~ zeaftA=`Q;_8ht!KCFY`_kffsW>P+WHg&h=r#0-6jQ3x?@=v}UvGANM%*_Sy7*r(@_ zP)&WC8H7WwZIZ%@GGCU7U8_YJ4|3g*EhfBun_^=QBrn|T?A+xi0_?>GVR+ft0t66q z5>Cx9n3I^80z$6evKs2?Jt#6a%DdH;_U3~UF~?J%W^R0WlGAc^mHLD*pi{xB>|O*MQ8e};$ma) z%pP1WRy`;|`V`pO*?H{tl*^v}0Ox3N)SGRS+lX;#bT^tq>q|q!TKS#hMn{_yx`|Gn z^xWGbi2;`&1P>=fMgpU8VRpN}qoYvVj~%jMfV+F8o}cs7DQRJ0>xPZ{Ha5&;snyk< z6`>`Gx>p4SFN0wcf^9&%1c+4_QXOYIq9dP0GKZL%o5Ri&BxGM>V@tChZjc573M0@O zuRAXmS9qT0}{;@#A|FHQgW*X?ay4U9SD+maDGrZ5Ab~Le?X0E8~}{nH|YMex4%V z;K!Qmx;8`N&j!WgAty3^H)aU1)fHWFtBLV`kddQgB zobl=fu&TDFD|%*a@7-Vx^m246f(#yTYI^*fq5#n8*x_nwm@kKgDKG!rC8wsAMhB>{ zu5O%4Jsc%I_Lk-9t+ehgivr4DeI82D3R(f-CU4TH)m(%sZxVMt-$1LKnyM)Xl(jyrH6Z-Iziz7@eBDxUY9OdYMSe^1f%1(J z$=Zw9SnihqrqQpiy$s_L+`a)4!SCO{-Evt$(Svm@YKr!}TO2tFv@lS)o3xIwZA3*f zwzX{ut()oTy@rhQH7+3CI{bC!%uGPQE#CTT*+T;#2Cp=TH#OrbUP&7m$P5I%Ud8BV zeh#A0$_(|BjBr~Yq8eY6mGe$WT>iB_Q3#8eDo0sx7rg z2#y6*dhN3@Fr>;w{fO3a{Cv z6DuwS=WY#3o(+tRbzu$8$uWwZ!`P~&p-?E*F4g?ky0KQK&e+k!0?7vjh4*(Hd_LlZX6h z$UZA3A0z*WLqlAi_KAIGA5%=|_Ogs6#pQq@mzuAQNZYeD8+FdYk6N~H!a_nqo5)(h z5Ap5w%1f@w$gkl0vF1}fZku?Hj?Q(-eQCcv?AfM_{9)Fy`-8>1*)c+nGw2YSQMbv6 zKx*nNa?P6BT9MuUD(qT@a}4L|7h;~?-jAydVU5_Wl_Z|{E21ilu#LB-oqs3vf*)k1FQ$ zAMW#T=1eb-O&8mEfB%_;`&KKmaanZhbHonvIx%sT_i~!IN=xjSE_38wrt*T2!<3$9 z|F}g!U|?fh9DTuIgwJ40TPzp-J6gCev9RRU_>{$7rF~h+F>A2heT1(+T$FaMCp0!e zh4HpGsxv(_O*7gHXcqn1_i+9^^W5DN8KTH;`gckFvj*=?T1P#mZ{pSmET$Xnyg%B& zrStN_HrU*&!alR!T=*dr&2c+j`{RcB=diFyec$?KzzH=c1>f z73G5!eGArkJ3f0jb~Yc1`}Bm zS_=%-PLIMdd3!T5qI*LQJUSVuS=jb95Yiq1S$U6=S3$H+yNROO>t>cOQXx-=i%+ z1@npHjQ;QwA)ZPGKNF%O?O$|#I9OU!F@~(wSZN|T*ALJGav7v&7%boShu5EUy z;qDz8V#g@&LHREm&O$8a5Ps}os8fumDwuS|KlTZ@JN7Od>5eV#b}Pi6sk>^L*EvvM z18(-_e7JHEo_Jq#mjgf1J6<4U;m^qlX9t03c2Y|_V`Jy2#zK4Dzbi^Sm+Gd_%S-0?Z{Bv715WGHNA8d8SKrbeoPtjFjPM`M1X2e% zue37(s&%nkn4i7Do6Bgh(*Nu%S#%XDkeMt({(64*t(fU!9Y`D7t58;^;Ul*woytfq&OfM@hEH^3nZP zxIqy27vRPCrk~wH6d?;w_!yVLyJ0s+MFooO>c8*p868|2({y;JSQ%*bh@RLn{3{u1 zK7EkDAJC{dQj=b<5zZ>M8lFdx;#-Cf`&#m$Q zT9o|hBmVRefBFbA6qRZntnp@NJ#%^<;_EMBA95s!*yvF8_4156h9dVR2!dox3|34Mu8e?i}!XpPDoM z?+t&7;gVl1wkICry?OQVD+!R$A0d*H5?9ZM{bC%Ou4k6>74;2e;T84%I0pNvrv3tb zT->Nr?-tZa-uh^0czxj3yRHUbhe^8%o4dVz+envJWcgjV(zI;$x~b=obt~tMa+lQ2 z_f3}gg>2iIBY9M+s@H?eyUg&`G#YBNn&+SIs za;VLoMSp|%_T8}F(>`4Shb$Bu`(gbrh9{xUeIdbZW0$d z72uRsc#oNna}T01T}jF7Ev;VW<%6@%cXF9`n9ro8SSM`#UiwXS9)i^#-QnHE-8Y2v zLw56hL2x8IUinUIGdOyYJxkAhs6Euu<96+rzfmabPkVo9bR08Y=GBK4d|MH`!CfM= z5|i76@h|pNZgA_K_1MN}72DuGjZ}DVE`Pmwn{azdaB$eV1DGbt1rop zKMyr$1`05K-9D!-coejp-}l^i8zvY3QPQ-g3`z~UnZ(O1iy$MsOYkmhHPLBYDgzpx zEU&=EqV?v3lHEq;i6b8sO7f0AQ$<2yqRd%Ac`3VAH%F%NemPQ2`Pi)Ese>YrVnHOO z>RK-m8-J?h{x-w93+@Eo59f1ByI$ww?Jnh7P7(MOVVX|WLZtnmp4bTgTY?#tu|NL7 yJF5R&*!uq;L+bLN!QpVUYDV|qvyS2KiX#Zm@ltC2_yGK;Bjlu&q;e(h`~EK$79Fkt literal 0 HcmV?d00001 diff --git a/static/i18n.js b/static/i18n.js index 1c6321e7..84a13810 100644 --- a/static/i18n.js +++ b/static/i18n.js @@ -1030,6 +1030,9 @@ const LOCALES = { profile_default_label: '(default)', profile_name_placeholder: 'Profile name (lowercase, a-z 0-9 hyphens)', profile_clone_label: 'Clone config from active profile', + profile_model_label: 'Model / provider', + profile_model_hint: 'Choose from configured providers and models for this new profile.', + profile_model_use_default: 'Use active profile default', profile_base_url_placeholder: 'Base URL (optional, e.g. http://localhost:11434)', profile_api_key_placeholder: 'API key (optional)', manage_profiles: 'Manage profiles', @@ -2164,6 +2167,9 @@ const LOCALES = { profile_default_label: '(predefinito)', profile_name_placeholder: 'Nome profilo (minuscole, a-z 0-9 trattini)', profile_clone_label: 'Clona config dal profilo attivo', + profile_model_label: 'Modello / provider', + profile_model_hint: 'Scegli tra provider e modelli configurati per questo nuovo profilo.', + profile_model_use_default: 'Usa il default del profilo attivo', profile_base_url_placeholder: 'Base URL (opzionale, es. http://localhost:11434)', profile_api_key_placeholder: 'Chiave API (opzionale)', manage_profiles: 'Gestisci profili', @@ -3303,6 +3309,9 @@ const LOCALES = { profile_default_label: '(デフォルト)', profile_name_placeholder: 'プロファイル名 (小文字 a-z 0-9 ハイフン)', profile_clone_label: 'アクティブプロファイルから設定をコピー', + profile_model_label: 'モデル / プロバイダー', + profile_model_hint: 'この新しいプロファイルで使う設定済みプロバイダーとモデルを選択します。', + profile_model_use_default: 'アクティブプロファイルのデフォルトを使用', profile_base_url_placeholder: 'ベース URL (任意、例: http://localhost:11434)', profile_api_key_placeholder: 'APIキー (任意)', manage_profiles: 'プロファイルを管理', @@ -4203,6 +4212,9 @@ const LOCALES = { profile_default_label: '(по умолчанию)', profile_name_placeholder: 'Название профиля (строчные буквы, a-z, 0-9, дефисы)', profile_clone_label: 'Скопировать конфигурацию из активного профиля', + profile_model_label: 'Модель / провайдер', + profile_model_hint: 'Выберите настроенного провайдера и модель для этого нового профиля.', + profile_model_use_default: 'Использовать значение активного профиля', profile_base_url_placeholder: 'Базовый URL (необязательно, например http://localhost:11434)', profile_api_key_placeholder: 'API-ключ (необязательно)', manage_profiles: 'Управление профилями', @@ -5285,6 +5297,9 @@ const LOCALES = { profile_default_label: '(predeterminado)', profile_name_placeholder: 'Nombre del perfil (minúsculas, a-z, 0-9, guiones)', profile_clone_label: 'Clonar configuración del perfil activo', + profile_model_label: 'Modelo / proveedor', + profile_model_hint: 'Elige entre proveedores y modelos configurados para este nuevo perfil.', + profile_model_use_default: 'Usar el valor predeterminado del perfil activo', profile_base_url_placeholder: 'URL base (opcional, p. ej. http://localhost:11434)', profile_api_key_placeholder: 'Clave API (opcional)', manage_profiles: 'Manage profiles', @@ -6526,6 +6541,9 @@ const LOCALES = { profile_default_label: 'Standard', profile_name_placeholder: 'Profilname', profile_clone_label: 'Klonen', + profile_model_label: 'Modell / Anbieter', + profile_model_hint: 'Wähle konfigurierte Anbieter und Modelle für dieses neue Profil.', + profile_model_use_default: 'Standard des aktiven Profils verwenden', profile_base_url_placeholder: 'https://api.openai.com/v1', profile_api_key_placeholder: 'sk-…', manage_profiles: 'Profile verwalten', @@ -7414,6 +7432,9 @@ const LOCALES = { profile_default_label: '(默认)', profile_name_placeholder: '配置档名称(小写字母、a-z、0-9、连字符)', profile_clone_label: '复制当前配置档的配置', + profile_model_label: '模型 / 提供商', + profile_model_hint: '为这个新配置档选择已配置的提供商和模型。', + profile_model_use_default: '使用当前配置档默认值', profile_base_url_placeholder: 'Base URL(可选,例如 http://localhost:11434)', profile_api_key_placeholder: 'API 密钥(可选)', manage_profiles: '管理配置档', @@ -8498,6 +8519,9 @@ const LOCALES = { profile_base_url_placeholder: '\u57fa\u672c URL\uff08\u9078\u586b\uff0c\u4f8b\u5982 http://localhost:11434\uff09', profile_base_url_rule: '\u57fa\u672c URL \u5fc5\u9808\u4ee5 http:// \u6216 https:// \u958b\u982d', profile_clone_label: '\u5f9e\u555f\u7528\u4e2d\u7684\u8a2d\u5b9a\u6a94\u8907\u88fd\u914d\u7f6e', + profile_model_label: '\u6a21\u578b / \u63d0\u4f9b\u5546', + profile_model_hint: '\u70ba\u9019\u500b\u65b0\u8a2d\u5b9a\u6a94\u9078\u64c7\u5df2\u8a2d\u5b9a\u7684\u63d0\u4f9b\u5546\u548c\u6a21\u578b\u3002', + profile_model_use_default: '\u4f7f\u7528\u555f\u7528\u4e2d\u8a2d\u5b9a\u6a94\u7684\u9810\u8a2d\u503c', profile_created: (name) => `設定檔 ${name} 已建立`, profile_default_label: '\uff08\u9810\u8a2d\uff09', profile_delete_confirm_title: (name) => `刪除設定檔「${name}」?`, @@ -9730,6 +9754,8 @@ const LOCALES = { profile_name_placeholder: 'ex: Trabalho, Pessoal', profile_provider_label: 'Provedor', profile_model_label: 'Modelo', + profile_model_hint: 'Escolha provedores e modelos configurados para este novo perfil.', + profile_model_use_default: 'Usar o padrão do perfil ativo', profile_model_required: 'Modelo é necessário', profile_base_url_label: 'Base URL', profile_base_url_placeholder: 'Opcional, ex: http://localhost:11434', @@ -10769,6 +10795,9 @@ const LOCALES = { profile_default_label: '(default)', profile_name_placeholder: 'Profile name (lowercase, a-z 0-9 hyphens)', profile_clone_label: 'Clone config from active profile', + profile_model_label: 'Model / provider', + profile_model_hint: 'Choose from configured providers and models for this new profile.', + profile_model_use_default: 'Use active profile default', profile_base_url_placeholder: 'Base URL (optional, e.g. http://localhost:11434)', profile_api_key_placeholder: 'API key (optional)', manage_profiles: 'Manage profiles', @@ -11823,6 +11852,9 @@ const LOCALES = { profile_default_label: '(défaut)', profile_name_placeholder: 'Nom du profil (minuscules, a-z 0-9 tirets)', profile_clone_label: 'Cloner la configuration du profil actif', + profile_model_label: 'Modèle / fournisseur', + profile_model_hint: 'Choisissez parmi les fournisseurs et modèles configurés pour ce nouveau profil.', + profile_model_use_default: 'Utiliser la valeur par défaut du profil actif', profile_base_url_placeholder: 'URL de base (facultatif, par exemple http://localhost:11434)', profile_api_key_placeholder: 'Clé API (facultatif)', manage_profiles: 'Gérer les profils', diff --git a/static/panels.js b/static/panels.js index a81a597c..8ebf44d6 100644 --- a/static/panels.js +++ b/static/panels.js @@ -4720,6 +4720,11 @@ function _renderProfileForm(){ ${esc(t('profile_clone_label') || 'Clone config from active profile')} +
+ + +
${esc(t('profile_model_hint') || 'Choose from configured providers and models for this new profile.')}
+
@@ -4736,6 +4741,35 @@ function _renderProfileForm(){ _setProfileHeaderButtons('create'); const n = $('profileFormName'); if (n) n.focus(); + _populateProfileFormModelSelect(); +} + +async function _populateProfileFormModelSelect(){ + const sel = $('profileFormModel'); + if (!sel) return; + sel.innerHTML = ``; + try { + const data = await api('/api/models'); + const groups = (Array.isArray(data && data.groups) && data.groups.length) ? data.groups : []; + for (const g of groups) { + const og = document.createElement('optgroup'); + og.label = g.provider || g.provider_id || 'Configured'; + if (g.provider_id) og.dataset.provider = g.provider_id; + for (const m of (Array.isArray(g.models) ? g.models : [])) { + if (!m || !m.id) continue; + const opt = document.createElement('option'); + opt.value = m.id; + opt.textContent = m.label || m.id; + og.appendChild(opt); + } + if (og.children.length) sel.appendChild(og); + } + if (data && data.default_model && typeof _applyModelToDropdown === 'function') { + _applyModelToDropdown(data.default_model, sel, data.active_provider || window._activeProvider || null); + } + } catch (e) { + console.warn('Failed to load profile model picker:', e.message); + } } function cancelProfileForm(){ @@ -4752,6 +4786,7 @@ function cancelProfileForm(){ async function saveProfileForm(){ const nameEl = $('profileFormName'); const cloneEl = $('profileFormClone'); + const modelEl = $('profileFormModel'); const baseEl = $('profileFormBaseUrl'); const apiKeyEl = $('profileFormApiKey'); const errEl = $('profileFormError'); @@ -4766,6 +4801,14 @@ async function saveProfileForm(){ if (baseUrl && !/^https?:\/\//.test(baseUrl)) { errEl.textContent = t('profile_base_url_rule'); errEl.style.display = ''; return; } try { const payload = { name, clone_config: cloneConfig }; + const selectedModel = modelEl ? (modelEl.value || '').trim() : ''; + if (selectedModel) { + const modelState = (typeof _modelStateForSelect === 'function') + ? _modelStateForSelect(modelEl, selectedModel) + : { model: selectedModel, model_provider: null }; + if (modelState.model) payload.default_model = modelState.model; + if (modelState.model_provider) payload.model_provider = modelState.model_provider; + } if (baseUrl) payload.base_url = baseUrl; if (apiKey) payload.api_key = apiKey; await api('/api/profile/create', { method: 'POST', body: JSON.stringify(payload) }); diff --git a/tests/test_issue749_profile_create_model_picker.py b/tests/test_issue749_profile_create_model_picker.py new file mode 100644 index 00000000..06548a7a --- /dev/null +++ b/tests/test_issue749_profile_create_model_picker.py @@ -0,0 +1,74 @@ +"""Regression coverage for #749 profile creation model/provider selection.""" + +from pathlib import Path + +import yaml + +import api.profiles as profiles + + +REPO = Path(__file__).resolve().parent.parent +PANELS_JS = (REPO / "static" / "panels.js").read_text(encoding="utf-8") +ROUTES_PY = (REPO / "api" / "routes.py").read_text(encoding="utf-8") + + +def test_profile_create_form_exposes_model_picker(): + assert 'id="profileFormModel"' in PANELS_JS + assert "_populateProfileFormModelSelect" in PANELS_JS + assert "profile_model_label" in PANELS_JS + assert "profile_model_hint" in PANELS_JS + + +def test_profile_create_payload_preserves_provider_context(): + fn_start = PANELS_JS.find("async function saveProfileForm()") + assert fn_start != -1 + fn_body = PANELS_JS[fn_start : PANELS_JS.find("\n}", fn_start) + 2] + assert "profileFormModel" in fn_body + assert "_modelStateForSelect(modelEl, selectedModel)" in fn_body + assert "payload.default_model" in fn_body + assert "payload.model_provider" in fn_body + + +def test_profile_create_route_passes_model_fields_to_profile_api(): + route_start = ROUTES_PY.find('if parsed.path == "/api/profile/create":') + assert route_start != -1 + route_body = ROUTES_PY[route_start : ROUTES_PY.find('if parsed.path == "/api/profile/delete":', route_start)] + assert 'default_model = body.get("default_model"' in route_body + assert 'model_provider = body.get("model_provider"' in route_body + assert "default_model=default_model" in route_body + assert "model_provider=model_provider" in route_body + + +def test_profile_model_config_writer_persists_default_and_provider(tmp_path): + profile_dir = tmp_path / "profiles" / "research" + profile_dir.mkdir(parents=True) + + profiles._write_model_defaults_to_config( + profile_dir, + default_model="anthropic/claude-opus-4.6", + model_provider="nous", + ) + + saved = yaml.safe_load((profile_dir / "config.yaml").read_text(encoding="utf-8")) + assert saved["model"]["default"] == "anthropic/claude-opus-4.6" + assert saved["model"]["provider"] == "nous" + + +def test_profile_model_config_writer_preserves_existing_model_settings(tmp_path): + profile_dir = tmp_path / "profiles" / "research" + profile_dir.mkdir(parents=True) + (profile_dir / "config.yaml").write_text( + "model:\n base_url: https://gateway.example/v1\n", + encoding="utf-8", + ) + + profiles._write_model_defaults_to_config( + profile_dir, + default_model="gpt-5.5", + model_provider="openai-codex", + ) + + saved = yaml.safe_load((profile_dir / "config.yaml").read_text(encoding="utf-8")) + assert saved["model"]["base_url"] == "https://gateway.example/v1" + assert saved["model"]["default"] == "gpt-5.5" + assert saved["model"]["provider"] == "openai-codex"