From 24cc41effa369ec97425b6dddad543c42aacfe67 Mon Sep 17 00:00:00 2001 From: Kareem Ebrahim <89863279+kareemmahlees@users.noreply.github.com> Date: Thu, 29 Aug 2024 23:01:19 +0300 Subject: [PATCH] =?UTF-8?q?refactor:=20several=20improvements=20?= =?UTF-8?q?=F0=9F=8E=A8=20(#93)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/afraid-chefs-protect.md | 5 ++ apps/core/package.json | 1 + apps/core/public/connect.svg | 9 --- apps/core/public/{ => icons}/cube.svg | 0 apps/core/public/icons/icon.svg | 16 ---- apps/core/public/landing.svg | 9 --- apps/core/public/splashscreen.html | 24 ------ apps/core/public/splashscreen.svg | 9 --- apps/core/src-tauri/src/cli.rs | 5 -- apps/core/src-tauri/src/main.rs | 23 ++---- apps/core/src-tauri/tauri.conf.json | 13 +--- apps/core/src/bindings.ts | 3 - .../src/components/create-connection-btn.tsx | 2 +- apps/core/src/routes/__root.tsx | 2 - .../connect/-components/driver-selector.tsx | 70 +++++++++++++++++ apps/core/src/routes/connect/route.tsx | 71 ++---------------- apps/core/src/routes/connections/route.tsx | 11 +-- .../routes/dashboard/_layout/land/route.tsx | 2 +- apps/core/src/routes/index/route.tsx | 17 ++--- apps/core/tailwind.config.ts | 30 +++++++- apps/web/src/sections/Features/cards/cli.tsx | 2 +- apps/web/src/sections/Footer/Footer.astro | 2 +- apps/web/src/sections/Heading/Heading.astro | 2 +- bun.lockb | Bin 528608 -> 527472 bytes 24 files changed, 133 insertions(+), 195 deletions(-) create mode 100644 .changeset/afraid-chefs-protect.md delete mode 100644 apps/core/public/connect.svg rename apps/core/public/{ => icons}/cube.svg (100%) delete mode 100644 apps/core/public/icons/icon.svg delete mode 100644 apps/core/public/landing.svg delete mode 100644 apps/core/public/splashscreen.html delete mode 100644 apps/core/public/splashscreen.svg create mode 100644 apps/core/src/routes/connect/-components/driver-selector.tsx diff --git a/.changeset/afraid-chefs-protect.md b/.changeset/afraid-chefs-protect.md new file mode 100644 index 00000000..16089d1e --- /dev/null +++ b/.changeset/afraid-chefs-protect.md @@ -0,0 +1,5 @@ +--- +"@tablex/core": patch +--- + +Removes the splash screen + replace background images with procedural ones to reduce bundle size diff --git a/apps/core/package.json b/apps/core/package.json index 6fe6f609..a10bc05c 100644 --- a/apps/core/package.json +++ b/apps/core/package.json @@ -47,6 +47,7 @@ "date-fns": "^3.6.0", "hotkeys-js": "^3.13.7", "lucide-react": "^0.292.0", + "mini-svg-data-uri": "^1.4.4", "react": "^18.3.1", "react-day-picker": "8.10.1", "react-dom": "^18.3.1", diff --git a/apps/core/public/connect.svg b/apps/core/public/connect.svg deleted file mode 100644 index 323c8733..00000000 --- a/apps/core/public/connect.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/apps/core/public/cube.svg b/apps/core/public/icons/cube.svg similarity index 100% rename from apps/core/public/cube.svg rename to apps/core/public/icons/cube.svg diff --git a/apps/core/public/icons/icon.svg b/apps/core/public/icons/icon.svg deleted file mode 100644 index 1a8a13e3..00000000 --- a/apps/core/public/icons/icon.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/apps/core/public/landing.svg b/apps/core/public/landing.svg deleted file mode 100644 index 7fbdd948..00000000 --- a/apps/core/public/landing.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/apps/core/public/splashscreen.html b/apps/core/public/splashscreen.html deleted file mode 100644 index ef3e2369..00000000 --- a/apps/core/public/splashscreen.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - Splash Screen - - -
-
-

Table

- icon -
-
- - - - \ No newline at end of file diff --git a/apps/core/public/splashscreen.svg b/apps/core/public/splashscreen.svg deleted file mode 100644 index 323c8733..00000000 --- a/apps/core/public/splashscreen.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/apps/core/src-tauri/src/cli.rs b/apps/core/src-tauri/src/cli.rs index bb7dfd96..163291ba 100644 --- a/apps/core/src-tauri/src/cli.rs +++ b/apps/core/src-tauri/src/cli.rs @@ -62,7 +62,6 @@ pub fn parse_cli_args() -> (Args, Command) { /// - If `--save` is set without `-c`. pub async fn handle_cli_args(app: &AppHandle, args: Args, mut cmd: Command) { let main_window = app.get_webview_window("main").unwrap(); - let splash_screen = app.get_webview_window("splashscreen").unwrap(); if let Some(conn_string) = args.conn_string { #[cfg(all(windows, not(dev)))] @@ -86,16 +85,12 @@ pub async fn handle_cli_args(app: &AppHandle, args: Args, mut cmd: Command) { #[cfg(all(windows, not(dev)))] free_console(); - splash_screen.show().unwrap(); - let url = format!( "/dashboard/land?connectionName={}", &args.conn_name.unwrap_or("Temp".into()) ); let _ = main_window.eval(format!("window.location.replace('{url}')").as_str()); } else { - splash_screen.show().unwrap(); - normal_navigation(app, main_window); } } diff --git a/apps/core/src-tauri/src/main.rs b/apps/core/src-tauri/src/main.rs index 40e373b9..b032ddd6 100644 --- a/apps/core/src-tauri/src/main.rs +++ b/apps/core/src-tauri/src/main.rs @@ -14,27 +14,13 @@ use commands::{connection::*, fs::*, row::*, table::*}; #[cfg(debug_assertions)] use specta_typescript::{BigIntExportBehavior, Typescript}; use state::SharedState; -use tauri::{async_runtime::Mutex, AppHandle, Manager, Window, WindowEvent}; +use tauri::{async_runtime::Mutex, AppHandle, Manager, WindowEvent}; use tauri_plugin_log::{RotationStrategy, Target, TargetKind, TimezoneStrategy}; use tauri_specta::{collect_commands, collect_events, Builder}; use tx_keybindings::*; use tx_lib::{events::*, TxError}; use tx_settings::*; -#[tauri::command] -#[specta::specta] -fn close_splashscreen(window: Window) { - if let Some(splashscreen) = window.get_webview_window("splashscreen") { - splashscreen.close().unwrap(); - - window - .get_webview_window("main") - .expect("no window labeled 'main' found") - .show() - .unwrap(); - } -} - fn ensure_config_files_exist(app: &AppHandle) -> Result<(), TxError> { ensure_settings_file_exist(&get_settings_file_path(app)?)?; ensure_keybindings_file_exist(&get_keybindings_file_path(app)?)?; @@ -86,7 +72,6 @@ fn main() { .constant("KEYBINDINGS_FILE_NAME", KEYBINDINGS_FILE_NAME) .constant("SETTINGS_FILE_NAME", SETTINGS_FILE_NAME) .commands(collect_commands![ - close_splashscreen, kill_metax, // Connection commands. test_connection, @@ -138,7 +123,6 @@ fn main() { let rt = tokio::runtime::Runtime::new().unwrap(); ensure_config_files_exist(app_handle)?; - let _settings = load_settings_file(app_handle.clone())?; builder.mount_events(app); @@ -154,7 +138,10 @@ fn main() { #[cfg(feature = "updater")] { app_handle.plugin(tauri_plugin_updater::Builder::new().build())?; - if _settings.check_for_updates { + + let settings = load_settings_file(app_handle.clone())?; + + if settings.check_for_updates { updater::check_for_update(app_handle.clone())?; } } diff --git a/apps/core/src-tauri/tauri.conf.json b/apps/core/src-tauri/tauri.conf.json index 32857517..a67f056e 100644 --- a/apps/core/src-tauri/tauri.conf.json +++ b/apps/core/src-tauri/tauri.conf.json @@ -48,18 +48,7 @@ "resizable": true, "title": "TableX", "width": 800, - "center": true, - "visible": false - }, - { - "width": 600, - "height": 350, - "decorations": false, - "url": "splashscreen.html", - "label": "splashscreen", - "center": true, - "visible": false - } + "center": true } ], "security": { "csp": null, diff --git a/apps/core/src/bindings.ts b/apps/core/src/bindings.ts index fa2b4d80..28d2a270 100644 --- a/apps/core/src/bindings.ts +++ b/apps/core/src/bindings.ts @@ -5,9 +5,6 @@ export const commands = { -async closeSplashscreen() : Promise { - await TAURI_INVOKE("close_splashscreen"); -}, async killMetax() : Promise> { try { return { status: "ok", data: await TAURI_INVOKE("kill_metax") }; diff --git a/apps/core/src/components/create-connection-btn.tsx b/apps/core/src/components/create-connection-btn.tsx index 4367aaa0..dfd35b78 100644 --- a/apps/core/src/components/create-connection-btn.tsx +++ b/apps/core/src/components/create-connection-btn.tsx @@ -7,7 +7,7 @@ const CreateConnectionBtn = () => { return (

Start a connection

diff --git a/apps/core/src/routes/__root.tsx b/apps/core/src/routes/__root.tsx index 19c62e53..33e01d41 100644 --- a/apps/core/src/routes/__root.tsx +++ b/apps/core/src/routes/__root.tsx @@ -1,4 +1,3 @@ -import { commands } from "@/bindings" import { createRootRoute, Outlet } from "@tanstack/react-router" import React, { Suspense } from "react" import { Toaster } from "react-hot-toast" @@ -14,7 +13,6 @@ const TanStackRouterDevtools = ) export const Route = createRootRoute({ - onEnter: commands.closeSplashscreen, component: () => { return (
diff --git a/apps/core/src/routes/connect/-components/driver-selector.tsx b/apps/core/src/routes/connect/-components/driver-selector.tsx new file mode 100644 index 00000000..f5c5d888 --- /dev/null +++ b/apps/core/src/routes/connect/-components/driver-selector.tsx @@ -0,0 +1,70 @@ +import type { Drivers } from "@/bindings" +import { Button } from "@/components/ui/button" +import { Command, CommandGroup, CommandItem } from "@/components/ui/command" +import { + Popover, + PopoverContent, + PopoverTrigger +} from "@/components/ui/popover" +import { MappedDrivers } from "@/lib/types" +import { cn } from "@tablex/lib/utils" +import { Check, ChevronsUpDown } from "lucide-react" +import { useState, type Dispatch, type SetStateAction } from "react" + +type Props = { + selectedDriver: Drivers | null + setSelectedDriver: Dispatch> +} +const DriverSelector = ({ selectedDriver, setSelectedDriver }: Props) => { + const [isPopoverOpen, setIsPopoverOpen] = useState(false) + + return ( + + + + + + + + {MappedDrivers.map((driver) => ( + { + setSelectedDriver( + currentValue === selectedDriver + ? null + : (currentValue as Drivers) + ) + setIsPopoverOpen(false) + }} + > + + {driver.label} + + ))} + + + + + ) +} + +export default DriverSelector diff --git a/apps/core/src/routes/connect/route.tsx b/apps/core/src/routes/connect/route.tsx index b0a4f72b..ab94116a 100644 --- a/apps/core/src/routes/connect/route.tsx +++ b/apps/core/src/routes/connect/route.tsx @@ -1,16 +1,7 @@ import { Drivers } from "@/bindings" -import { Button } from "@/components/ui/button" -import { Command, CommandGroup, CommandItem } from "@/components/ui/command" -import { - Popover, - PopoverContent, - PopoverTrigger -} from "@/components/ui/popover" -import { MappedDrivers } from "@/lib/types" -import { cn } from "@tablex/lib/utils" import { createFileRoute } from "@tanstack/react-router" -import { Check, ChevronsUpDown } from "lucide-react" import { useState } from "react" +import DriverSelector from "./-components/driver-selector" import PgMySQLConnection from "./-components/pg-mysql-connection" import SqliteConnection from "./-components/sqlite-connection" @@ -19,66 +10,20 @@ export const Route = createFileRoute("/connect")({ }) function CreateConnection() { - const [isPopoverOpen, setIsPopoverOpen] = useState(false) const [selectedDriver, setSelectedDriver] = useState(null) + return ( -
- - - - - - - - {MappedDrivers.map((driver) => ( - { - setSelectedDriver( - currentValue === selectedDriver - ? null - : (currentValue as Drivers) - ) - setIsPopoverOpen(false) - }} - > - - {driver.label} - - ))} - - - - +
+ {selectedDriver === "sqlite" ? ( ) : ( selectedDriver && )} - bg +
) } diff --git a/apps/core/src/routes/connections/route.tsx b/apps/core/src/routes/connections/route.tsx index e7e925f5..ff991ba0 100644 --- a/apps/core/src/routes/connections/route.tsx +++ b/apps/core/src/routes/connections/route.tsx @@ -101,20 +101,15 @@ function ConnectionsPage() { })} -
) diff --git a/apps/core/src/routes/dashboard/_layout/land/route.tsx b/apps/core/src/routes/dashboard/_layout/land/route.tsx index 41378cbd..81804581 100644 --- a/apps/core/src/routes/dashboard/_layout/land/route.tsx +++ b/apps/core/src/routes/dashboard/_layout/land/route.tsx @@ -7,7 +7,7 @@ export const Route = createFileRoute("/dashboard/_layout/land")({ function DashboardPage() { return (
- cube + cube Choose a table
to get started diff --git a/apps/core/src/routes/index/route.tsx b/apps/core/src/routes/index/route.tsx index a1e98f25..d26640f7 100644 --- a/apps/core/src/routes/index/route.tsx +++ b/apps/core/src/routes/index/route.tsx @@ -7,25 +7,20 @@ export const Route = createFileRoute("/")({ function Index() { return ( -
+
+
-

Table

+

+ Table +

logo
- bg
) } diff --git a/apps/core/tailwind.config.ts b/apps/core/tailwind.config.ts index b7d3400f..ec678108 100644 --- a/apps/core/tailwind.config.ts +++ b/apps/core/tailwind.config.ts @@ -1,6 +1,10 @@ import { tablexTailwindPreset } from "@tablex/tailwind" import type { Config } from "tailwindcss" +import svgToDataUri from "mini-svg-data-uri" + +import flattenColorPalette from "tailwindcss/lib/util/flattenColorPalette" + const config: Config = { darkMode: ["selector"], content: [ @@ -8,7 +12,31 @@ const config: Config = { "./app/**/*.{ts,tsx}", "./src/**/*.{ts,tsx}" ], - presets: [tablexTailwindPreset] + presets: [tablexTailwindPreset], + plugins: [ + function ({ matchUtilities, theme }: any) { + matchUtilities( + { + "bg-grid": (value: any) => ({ + backgroundImage: `url("${svgToDataUri( + `` + )}")` + }), + "bg-grid-small": (value: any) => ({ + backgroundImage: `url("${svgToDataUri( + `` + )}")` + }), + "bg-dot": (value: any) => ({ + backgroundImage: `url("${svgToDataUri( + `` + )}")` + }) + }, + { values: flattenColorPalette(theme("backgroundColor")), type: "color" } + ) + } + ] } export default config diff --git a/apps/web/src/sections/Features/cards/cli.tsx b/apps/web/src/sections/Features/cards/cli.tsx index 58739259..428c21af 100644 --- a/apps/web/src/sections/Features/cards/cli.tsx +++ b/apps/web/src/sections/Features/cards/cli.tsx @@ -1,6 +1,6 @@ const CLI = () => { return ( -
+
diff --git a/apps/web/src/sections/Footer/Footer.astro b/apps/web/src/sections/Footer/Footer.astro index 7754ab84..b8f2e01c 100644 --- a/apps/web/src/sections/Footer/Footer.astro +++ b/apps/web/src/sections/Footer/Footer.astro @@ -3,7 +3,7 @@ ---

Developed by{" "} diff --git a/apps/web/src/sections/Heading/Heading.astro b/apps/web/src/sections/Heading/Heading.astro index 619522b7..8f11d55c 100644 --- a/apps/web/src/sections/Heading/Heading.astro +++ b/apps/web/src/sections/Heading/Heading.astro @@ -66,7 +66,7 @@ import DownloadBtn from "./download-btn"

G!$=N68APAC(2x6Xv$e=-lnCE#Of*^z-=INl->Y%Nj>O!les;HVv z%tKqPd8lepQ%P{#?ltbU*Is+=^jvze zo3o3(Te+O`>cL6(MxVG;e?i{Xf3$BglJ*7;o10yS;&m@hOfKd|0%P0I;f3d{|R0Okc20R{j!uh29HaE(G=@IlZA zBR$hK1eOLyt*ED}%zy?jr1N;R#GM?NX zSWI(jllLG{2t)*sj@JQM;vgVPJRcYce6UW_iU40%`p-%q37z)aq0{~oU?}iqU{T-@ zU;wZq&@5=u;897#HLV%+oFx&_Cp9G%y7uZeP0I!Sdmx+MK3+EI3fIj1LC#Omkc^!L z^aEz@kj1LIQ+80F)ZR&OqV0s91Mz(Z_Z>vt-Qdr5guCOP?XVZLv(wWN?v7DC=;=Ur zN4PuEJ)+zlnwU0Xcq$6CX^-s4r{Bry4NOZN5(&P4(vY;VL;7g#_sIcJVYjUCEBmRV zqmmKeh**FK_GJH*)ZU3HX<7p$pxzQZTV@-OLv~2WB#A9qIX z^aBseA>16uj;sa@aU$T($R7lUqC2DRdu7kx2a*p!ck>za-NED~_2#sN7L)6tZ?n0hCsB~^;5u1#0^P#_&2JR$AR zs1{ido&4;RvZWG$98(LxbBOQ%S?V*O^V%Ax@W3g}W;ShMSGmBVoj074<vXO#+m6hy>N^k=B7CKvf4Una5 z2tF_QOEP}k=;RT724JA|yDSTk_c!VAK6JKPJH>+JU6sBvkOc?>a=h-oCjIs4lR9$92n@7WcFT6Hff91y4jrDHHh5r~RuMWA6a%v6 z;)cv%=1om20evKpGmtN^81Tw1S&;cU$ zU|`~((s3Oi2Y5-P`vGb9=Us^>fV^UIAsq{N7yRX0;~Y$ z2fqO5WR1Ut0Uft{BrnAXATtgGGJ{)xX<8}Z5g=>26j&Cx0qK~2{Znc836L32({z)6 z6*^le6-fWBfJK3KblvR2C*?5EnIM;|b#RcgyN_-*csE>6WE&}r1hTxz=qPr`8&+vo z0z9wNajAVZ{`{35X4B2=asmSpf7g)s6zOR{#8;+IPOCIJEk)CAL5F|m zG=dKMBv(ov(l1rJj)WZ32Z4EkD}kH>-vhG#qZGOe*bO=hItP_z$2`rUn-wY_EU%pd z?@NC4faE>{Dh(ZcJ}27?b8bB(WP)gg#elrn0u<&@nBk|J1z8GY0ovx4xCqFM?_#oN z&;Jf&g+`?HNgdL!&!C~hQwI+nk*3|tqnq)AQj$gvM@5HL8a6U1*T^JoO?h3_kzq%axCYrQ>?9T%^#lEPqxhQeFw zMNCvU2*@7ntgxZNNQEU_dqT=Mn}zD;unh-t_~lpn!@|0GeVqap0lxuQ5;z-J3^-2l z9f7>SBY|9^1Ohp1?}bP_0c843O8*$hd|n1(X3BxNbHLc4SRRaXjV(OddAGD~cH$4! zWoP^jot@HWKw`=uH2$_}l0Ofgoi-|Y1k!5S@YIx)kwdX^`QKH?Ir)ECpUHib`}Jdi zQimrJwE9(K_eBAD8I%Qb6cz?@^!fuiYNcHWW=IgMS*@zl5Oa%Z@Q%w-q^NUKq#R{K zfE;B#fppsv$g8by;)tY5{f4B~hfXi|UCwCGG!ysZ{|5<1Mgrby@KI z(0M0v>rcS*@^I^?ptGXinLI9gcf>*vm?9>R0CHfu`AF!TKhxr6!eVAZZE|Q`*%3LQ z)8TFCoTq*TvLlWI*)d-OS%AC=vVeCZq`n?{0Vg67&>?Kr6oE&*AAqd*p9U`yR; z&X|o_%7l-B9J@PUz^TYR7#BfjhHn8`pfSop|2A^QjRTei9}FxFOh!Bh@q>19ZaE3$ z9I^$-xnmBHbIjOwsnVc}GN=vYWD*8s4SazdT)(xI3G2Wy<6}C@8vh7n{Kz3gQ%3er z9x}U&?wfEuS8$1<&ej9e9TLc9ESoGx@G6C$0Xdn>0&;{-A1Iq^ z9CS99d#xUh^c*M&K;Btfq{so}3*-o|0AxP~EB)kPb9^`_e}e#r{LsYyN&S+C^sR}0 zrd|ff5t>iolOZyLt3VDo_i8>A8B+HH^3q&2Ox`tmr>3Ux0c1$(2sDPKEmr*dK-y0S z=HgnScb}n^sz+gi287pxfbY5cd{1u8jbvztc`xgMC2u z*%~0P;YupQ5>uq(LeSZS79b~yfT^-Y1_H_7KnBET`QVpjLC&ZO;?dhVJb6feZ5aqQ ztpKtKX8>8lJfF*T<2Tb}pXy5g~v{Y49FVVUY84zt4co$WXs-rP1ni+djL86 zg}y0UV8NTHA!}Y85$5Q9OU=X3S+o2zso6RP0;V;U?ks6<^=}c73Uik!zaHe%rAf-4~8RXs*n4(GJ@(O=|*8 zcZIc#);GF>PsTY0E!VW#l4~99_yHR3xU^^!?I^fH(;AstVy9?FFKBI`SzKXB(T;DR zy<}>MJ)#{?l!kO2V(cq5t%Dhrxi#8&8(M8w_a3p1{Rj;--NCuhVU?!!aGicq(~dv` zH|=-`jfrImTCLW!R;H`O-qDT)&{~*r=}9s6HJaATW0(rfQ#Hp%Xmvete?e>K(ORy} zl7X=ZS}#}kGd1mBYFclP(d*E>?Qj5EGk2UG>eb+@`p{4PRmT-`Hk+7YOZ zM82-f+0l-`ZE{dpT#4*d^NW9<(~rJuJ^bV?$wpb&PhD+%D5;E)JO9 z&}5%vwup9Ygcb?Q+#Fh#>)TyjF4fk%y5?MpbIjWzo#b#O&Wm>3gVxk^nSLZ%Z{zBG zInFV2r)L}^(|yotnnlR$5^eYWO2&!w`POjPyDjXFXfPZ#x>@|!pvm!-I6TG*rGsl8 zI;O+NxQ4_X2>k(m?Sw#)5vCPMAZ zCccPJ3p1aHZ#lx4qYI&CX6P(JO=zc=a|K_EGe+ZKxGrOGQO>y*XZd-L>*TfC#gyGtNW9IQyff^#J>)Zk zy*k!7f>0gT=|i!`yN59en4!H0)igu4BbqkEv>Sm?H#2k?A(^)9_hwpn8GukzzmiBiJeJq5<$MAgSYYv+kOuHvk&%&Rf>Q*u(Yip)m3N3)nNPa=*k zapl5Ejni@rLqi51LgQ5}Gd}>WIy7Hb7;Xdl8MK*9w=TvGr41CjD{-i)aO6w>j~I6$KdvjrEoV*#j*anvW~JbF@Rt^jLE0 zfyQFVyTNp&$!Tc|G>(7SLWRytFF9SjTw6n9I#{A*r$MU&&1&A&cBwcFqwO)=V-A;w zvtsPONRKwt?pcRw-Lv?rIWq0TK!!z`eb026N7_#}cLmTMP%H5S~7#Zh;*2R;<#6Po?%5fT+H(kSf zS>qN%>)`SEIGfh?zMLz}9Q1YKL~cFKa{s<4lm`t~@qz3RS&0eII0mG44H`#bPIC-2 zd+4qbmwY>+;ii~W)Bcz274*Z|7+)wXhIb^7d!%V2%z|>f-!CrwBa7h zicio59_@W-W89iO*Hf9L$|c=l2hrP%WS?Rt=iX93$oNdLaTDrn$Y*j)BlPMx^#B zG6=D=uuvgjP7 z$LTA@972pZL3m9B7u4e%$86FPt3a&Siu>y3b%ENPiLpar2686e3az^7GAtv;*RGq_ zpXY{XZv%!kkd1vJDAwoGI_1BcQQr$SVbX z42_+E`wEtrPn0I-^166^!BWYNdIcJ*jm0SL0o$R`CmOs}w2>b#GO&*BQqzt=9OxXb zuy)aoPoQ}wYx_-TF^E&;{=?y$OXlsVnw}!&grcQZAcE=4jE(EiuwH5zt5+1Ai|BF2 zAU~66A8Y>(A>JE29_)GWCWQ6zFpfmU$Z22=G}cKo7d?MKH8 zBgCT0#n4V@QLcGwVjVhOlh9sveJyAlX0m-!p|S1l=4`zg8aoMhJKXZ`LSwGDm1CNU z_Lr6zp7UeuPifb`msRK`7JKXvZq0VVR6eK`SFK z4CJyYMquMQ&OR1YcIRus(19%2MHTOBwoK8ovS9Ll(G{8;E$M5b_1R)h1ZI*0AiIir z5xB6*mP3on;1mQEdkVp}lC4r6T_uBWA($+KcM(jK!44HX25S-QFWEvBF&1Rdi6FX{ zxt;L_YgO_jn~R`nP}7Q#DovZp=zKGkV=02N4w!TuC!ke!H@u^B6?rFUTlrc5y3UF-gy)y zy42Kb`*eubT|alJrN1psfOhPQmUYAgofK{V3tAK8V@~IyRU6&m8>5>G7S9B4UkQc_ zV=v=ZL#`>j%wRCRv)LR1V=j!`8yoggFUcnGrWy%`we&KZ!LTX3%u_Jg{j`sjwKZ)- zD?gMOjCpyPc^w{V61}py=~xrfb~a`q7*EyBotJB1=myQ05^ayIC9hCVQS^yoPCN$n z_lSrS^Wybb-CqRP#R6oQ=nOE{*2V%v;N@Yg?k7%=X&FbxH2p|)u7_T^6es4^!!4(D z9dqE*$ygDbfS3z)M3)4;wq9Dyfoi-SuWL=kyaYYg@BLsh|B=4 z+!~|clN!n83~o3*qV=t!a}(73AxP{movdkZEQg0oza1I}0yNy!o2bi4r02!H0kk%r zjE+EK$I4{UO+Cp_+!@f+W!NUh4uyv1W#fo$=2x5R3!6^tzSC-690bByU76jYjiu0fxkA^} zw06_A)?yy65l0sUd9TKEHnv^gh9=j%9JU9cMI$b^IXN5M=jqVo zl9V^iZ=kWe%;y%1(L)sKrq{N_^bp9bwlSy&*M{A@p)wf=wh*C-XrP`P2PWAR!FDn@ zAHhCcbQ_jlY#%ee3xfSkawkH{lV2k4mL@p>p;ppz1A;wGGN`wQ?2jPGUNx-PzA@ zs;DQ4F1^_f{lr|LV{AY74Gp(G%hrCPP#>^Q!A6;FM>ev*m$83-^2#>v<@RmRyn8%YgV}Qo#-)@k{TMK`F$-_M1FcKe zczg39>L%vdOIr(uD>pf9wMor7iG2jkJCk0>rd1p&YbetVho&Zf4CVFEIC#y)tNk`K z4s35N>kN~A<%9f2Xk7l8^P&9?G?vG6|8rCrE*C_&dBAsPXwsVP?1Dz$s4p(gOlZ8= z(7M=y2upJ>nvu@ZK24lV#>H|JYsaXThLqZL*F7&rTr z25%T))nAsDSY%^EXB;$XiMhzW8=AMqd=4u8O4hC!4~?CH+rvSuzM*k}fKI#;W1r@( z820b7JUu9_^R{ zjpdOKN@ZWywZUfYm|ZNhUKb}vBmEy>Yk)<4K8m(fdP8&>g9$L>4KWvJ#J6Z(>cc7Wqfk^L*sSz6c z2M_pg<^MLXIVLiOBiLL9w}=fkN5$A@ zxf6tSk2Z!v>mu84FM_pYf`AX)Hr%7@2#uGx-OMl@T6>RHRLCWljOz!@yTJGg8rw*2 z(np0u=os4UI=nnSBC^FuGZ35^S(JiJaUUwxR-Wtu+M z-&tD2t9`4c`2Yt3^8qISeSt3n@qg_#{-cm~Z$LMI?*Mh+yDFZ@;QNZ71*H9KpanQr z>GPC6--=^abo40*8}M@#@rBaY0O?>IkOkVJ;Fw z!@HBANBD>JwV?9UZ9vx30n869toUMzF9FN}zLMgr0$IvxDn1fuhh7WFc1louLxoL% z%&(P!2B$$s5X`tMFabDU87uYtJdt)gfh_1(K<4+Y;l#gY zK(^yPtP!3@~9sWk6(&nkk(~ zhs_nXATMTosK#zvsO;)4r2hl5Jl&O>9twK`*+YGRjPIu~8HoRDsrZN44+XNA!%0eX znh8g#h%w4=ERc>S0CNGS1NkG;!5d1?ikv)L;F;0;DxOF`Lg`tNe&*QJ*qx&ch;%R) z=m%U3WXr5j@mY~}D-};2q=K>moV=>s6sKUS!t^wbR?ES^7i2~BDHjo9V3&j7m#!7DvM0%&zhAe(WX53yzXk8Tc z1kyntAb&*K^;4J(WB~^OS&$SUe_4^~hblfR;!Lcj4O0Q zh5sm|-Bjqrmlgj%LN<|^KwSG+4=Trsy{7zRMe=W`eBNZdX#OoOUIetalsS?0d{^m2 z7W+LQi|0~2k^1{8{sW~8rOyHKmlf&fL&ax7i>8ayEJqOH*Q)scA5dPz|2Hyb!+eQ~ z@gIC1L3$TkOxaoJcIO`3Z6Jr z#S^IyQ#z6QaHSKerzxFCeT341O-y2>BA$m#FiIsH4di@05y&ok2gr)fWW1QTSTBmL z0!^Dm75D*=gJB+!^;!$$*vnA-HXxcp`xeMwR;1hAihmw5-C>pfIFOU==^U7XneePi zNMytXAPaO+;jfCn3gqvm}R~UgStHkbnjCRSxVx zwoERi`vExw1A+VznNbjs>4Ftcq`$&SFYH8sj*2OQ$b?}^Cvw>u4y2=MDn0_piMNT; zn*#YG(ylp>P2L{Jg7r{(KOp`0SLhso09$pqG8hNsk4Ohofo#gxfE-FQfLt8SRr&%T zYqStZ$DacEBeLLY75}B;iR_ARB=6LAsR$w+d<&$*J&Gr?g$^h^E3!aG6;Gso0?22s z-xW_}`kPA6j_7|9Y_i+R@K2@RR|$wL*aM{#%_$R;A$gsX;xot!Siv)6JCH5tr|fep zd!qUHlwT29kp&7+2?7-c0m%m|`>e=}LctTmR6LOdDG6j3R|c}cRa89DNrzPtVADmb z2qF`{1Z1V_tN5nC63~YL=_nP*^urXU0r?{`{V1gqIhG~?X+K%E-X%5c5*@8-sHH#^ug|88#lySX7BQnGGp@Xkt|Ypv&PYA~MszndFuiGMdY{@vX8 zcXQ)^zPa&Q=c9T?=cAVDLxj=5r>Qs|@8c)BBcxXlOB?uf#MfPVLqH|bnNV4*CR7oQ zMu2dUNT@0{5~>OR#()TsOsFn)5+X%#6F`(0Mu--B2r(k8DWHZJOL$2fA;gMu%>XsU z6hbX=f>2vjZ4QVNuM_HsOhUY<(E?Cc%p}wkzY!8dd`m!mF^AAV+#)m-java4iF86^ z@qo}ov~CS(DwYDo^ya9rUmH}ox#-*mL`(}1TS>GOj2AkH%Qdz3`h|(34_IN01?xfqv|idUp^@x`9aQ4q~iWO`=nG5CJ_vj2DSL zK-hbL*hONZ@b3v?1BsD6K{&-u5(9dIDAfzZ6fvw9h=RR993%0v2ulR9o5Zw45YxmF z5@QlUMD_;pnwZiXMA_aTE|Pd%RP6)eIEh((K)fk3NlfnpqJCcxGsMikAY%H0xJ%+4 z5uXI&GKob=AZChNBxWapXx|TnOQiP$(WoB?qd$mQqIG`|_ercHA%s2v#FG9Xk_Ld7 zBUY2>Gyp_EGKddFVloJOGKgIy<_Z6SAU2Q~IS|Brv6IArfgnl^0+B9;4FXYc5Qt+W z7K*SG5W7iCO98P+93e3#1w`av5R1i>!63>G262(ZQc-mXh~p$?4FR!CWRjRZ1VsH* z5X;5PR1h(#AnuY_DdLBMxJ+WvP!OxdEfTYbf@nVs#9EO)3`C=0AdKN4)``}`LEI;? zjzosg(?Bd44k9TH#7422M5iXuiIF2gY!^F83>XQb z)F==;#jsHz3XTGCjKtR>Y&3}7B&Ll9u}d5wF=jM~$T1+k6H~^3C_4tkMG|{N)v+Ls zlbAIY#6FQpV)|GR^~ZrYAZCsO5i<_NT@r^x{CE(TNh}%<;)u9KV)l3t?I(aZD$*x_ zXfy$YF%iTu(Rw0?`y|$p_(|xKKrEREB54wc6Jj-qPLq86G6I}FH>!lL_+0)?r9LUi zmGNhB&E?_X#NmUI`fA!28DT4ZZdi=l2e5%JR=?&`6kjM=9qzvcJx#=~@ky1j8UCky zmRT~+edKc?+rI+L7N!bNe}{E)){K%eGPn7Zuo&a=;4f8)DewDa&@@LeQcKCi-qJL7312~{f9H-LXbvg%S>7^rP%+qkNrPcKU+wv&ZHUB5Bn6fm`;kV z_KBfUVN+fIqfcMm)vHAT#`(Gb;9EM*$>(E<&yqIGztfhHIoGFz=}c@n?qfGbjz+0j z!j%>QpH^S~)v%$j=wjt-K7)(2!Z}{NkeJ+6A?s%TS?@|IX`5cn$bHIZjm7U%oFXj* zqiw(<%|rp9cBzf;>Lhul3Eb=A=HUH4a~$irmelI98OXkPmH{+IJaFLaPKQ_va*W@ClohD zadpAnN0=AYR3I9YpBriq6!*5W3rhfbkJZG_eVn^K!lxDYu1Nm@BW)(^$uxvSs3`X- z??&L(gX85i3wCVX#tehwG!+)7dPM_hHQ z5XC0w3b~`A)+!g>z}-{b`K7YMmjT)X#bqeB_y$FL1g<=Aqe|No;i0%wZDd6%e?uz23f(tZ|l!>n@ zhc6=>qztbq!&ksPMz|i3pJA|%r$L^e*%E*^MEVI_o;Ow0YoN{{ssZqp;-(`U4Xz>Z zw&Gq#_#1Hi-4VCw;tv(|CMXX3#=yIZdkf+BVBQ4yr{ZQHJYBiCC*n`S1t(e-@Er(U zGy^_V+`9iuIcAWJdiVQPZ0hdVg5L{Sipslqwc$VfHM3Pks6BVP5T;P?wsc1sZM>uXZx7duS56jEDFM4`ORll&a=vZ_fD#VrF@PjN*R_XRkfs^z3o zOmWK*W>;}i2~*q(gn1g5lS*-Ltno?+M*t_4lFH7x3d#qHETzcR(D$H9oIpw|ZVkfM z5at*uqqwyQ|AsKfLs=kO;Y&z81YQGHP#cf15Kyl%U+XOC1aqf?wHiHXRTs7FS6}CWHBQv%{b@o3q-U@jc z!XLksqTx0OYs}Fdtuon;@Iiz*7-N9+y#sO<;ZK0E%5EpZ97h}{H5K<2!mH5l?0SX?LxSTs!1KieG4uO9BUb`xbF}yuI%c9V?}mDra@TA z1ZB4e;a4HdU#qXky$G}4XxKn;`w)Hu!XLjCqr?4>?igJBHCA>95bkd?DUIKfv33U` z%}|(Kz@~~jgfJ_|!Z$N;1Ek?$NGXskeRCMH0!JVm8!P}mN|ScH-Qic@j#Z4mYb_+hVb#Ezk!ugG6Dl3gCIj7Lm|T^%7p+Y*3jAuVXer0f;qF52LGDAi z8hrxc!=n!Q(IF4|KN3lot#Ou*e8p#%tzDeEL31I)=Q^mBujwQ zhctjRgoKKj*R3JW?~rsOWD8^~WE*5BEg{t)-@su@ zNGnKdNE--mE_s1Gly@27-yl~ZH^qS))(Yh&Ac|i;@Z*CN(1Rg$kxv|C7{c6oIzzfZxEaOGC+;YFoaKTxgdTJF37n6&kNzAn+xg!kN^nR z%v>Ws7VU3a``6Fvp04>Rg1Mg$3H+Ae9*_?Qd=|(9@qt(&$Ax~!TGTlO zRp+7q(GaezCT0mwMVPB`Cxq|Hli-@4!_-0Yx)6S3^f4AL^C7G?zvc>ra3RfwGoNX= zSmq-WmxWvppNG!x-M9|EV&Kn*a4EPS3LUJ4)4Y(&;J5(p1mQ}JOF}M=xfl+G_=sb7 ztUZ&E-b{WNcpNeh<#3nh26TRzegMLi{@koM4&gS-Wxa*trdlEB&5EG zFKUE1c`@@jfosNk2p0twfz&~GDa;o`;t;L?>49)}NL{$%&UY%8*J{t+ZAVfu?XuVHz3S`>A6?19Kup{fX??5oq)dr zI|8{jem0(QD=eD$FwF2P&qQ4yTtG819Z`Bg?+NJv;exuGRcy;`6ml|-1xW_C6F30K zLUBu;e%K7mpdYX=WDCOEAYVXEK)A)vO1UeUg78G}gMnO;4~K9??p~qu$(7BT8#t7I zR)lR$XWak&0m9lbVPUigaTH`Eq$KpQz%h^%Bpwaq6XX(vry?!{QV3!|xO(L(HXh+> z5c(evoq2o%`5eMRPOx^Awdcbch09;I$Vb2rA#91c!0C|L5RU%$fiofRLf(cH27F}8$JqVe-QFg49ygV{qM-;`yw@0U%uw!x};$xwgGDXG=9Z!8TWF2HJgf?G7Hb62Uv|~Q&A)6o@A&mdhiv5JG2yB7S$#zIq zr&(*k(z9T+W0;xjg6xEl{|53kBx?;BcI&jK?ROC7K|k^Q`1mIT_CoeR7NQBaL+Y?K zfQ)++_#^Nr@M1ZQn;Dpw{6hkCuNMGL4lYQ@;+EO!SC0`C5r1ks#eDTxVuqhwhx;yVR6px!cexymHl;%Hf}gDRYd39MG%7 zZ@9KX9GYYNhU0r1=Nc6(H$E42Y_@`q8%Q67^sPi?>sJ$#Y&XaJ-2|u8h2W#m^rhSrKu=VT-`g#no$|)f2UH*ed8PMCv>v z*wF&JrlBxhDrU|z>a#>(5qWDKRwB|yYGL{sk@zv16;V8Ax)I?io@|p37W_S?gBTq6_v%P{%k|ZwNMTzKRoQ2q%BFh8 zD2Ka6WZG(CLAsIenR2)r*<0X3Vu!ztrDmf(n@{$BRUIVL>V~+t(D++#cpbZ2!tO4X zcq_(MNN*+<$JoMSBCycFo+k&-(#^fDES%bJlvNL}91&4D5_fUL1R&2(Z)!s05{MGs1m@u*OC0n2s

bbi!oSb`9fY?0a?pptmTWFLNyl7-LdVm zwx-#>5!e-MzXZ8`FJ51Q>m^(qT4ID*GIxmEON?e%-Nr37f+KfgqQkS+jFexzz09zM zjKNHiALW^LZj!TC@am%$y;|i+jx$V_ECc4DTRv(ynR8cuUrd6C4it|WElVwDFivtP zTX0AQvMvm#i`Vt3^L6fnOTAf}^B!F=2Xh(=5G%egn*6PnQR2pmXKLxLGX4;ipfo9)o$#+W8hon@T_}KZw8(?bBJ0^ZNVY#|K$4z35A|C zuJPqwBnZcNts0{h6Wue=q7}rEO@L@IlUhBoEW_xJ1LWzOjUb;0>?Kv&06JOBkHS1T zN+eQyMHH4yuZNwbrj|E0PwAQPQYd2l^$Mnarh^}0Xx>xc}q7xpv1KDb~fd)}lvN zHd{@bE_7BuUBtzp(3?c$Cd>eFBBUm??m{Qv=yw@gkWY-}5(i?T%N9dJe^Ay|(DKV( zk?U)tnyPll{k_;6Mp3Fym@)hIgf(YmEs&cQECz4J6%@12d_J4p@O(=B@;fs&x(&kd zH%Zax!T17T=hsGnIK0`g%C-#^KWs7rF$w1R2Gdf1(Q=Csiympd10{V$Oxc0yP-_Q zrtUOaxlLukQP^m#ViR{60XBBqnWJLDE~B5A{uNrq915z+&vbo24c7Ac-Ord{^m|bZ zjLzde-Fi3R%nEnKW3(7CQcVF3h5nuQBF8r) zgE=t_5G}##<3u{O8DcYGftW{fy|_W`pg2M;LEJioK9O?-wDjE|XN%CwZp%O`rnc<7 z(op{IpX1@s0g%f@Yj_Yf_rUiC(QyyP{Q(ib*EC<xpL>znQsKW3o-;%Rf-I@%u@5oJ#jvVa2c8wJ zs$kN%aaOF@he=wd)qO=K?Pal%jFk|T_Z!u9yXdpuh;YxMh+4hhSjW#*4#Iwlm;ysj zq+(@qWfM~G0=Bg=?0)><##?Xg^1p?0SC{2(DMAn8D$eFhL>)v~C1tsEL2NpRna$(Z zY%ZB8R!6aiP=qF;{UJC}eWD;(Y-OCMI%c{x_>u=R@wdOqRo}(Ompa}l`Bh$&CsLM2 zC04z!5-a#tI4j!%#n!_{Xm+_|ul8&^zE-YG zWECN^YA0qMfnE02?Rpk`!r(l!dgL1TMip;f%|&Jxo2Qe+l^@W+s;Z5|l)5NqudA|2q8i>?_|t=; zA9-^eDR!PljtX8CQ%-vG_q4A514_N&l=SgqtyYDb^llvkA8L5+7A=230sm8Dh>uvX z=M^?XY(9oA&NhHW$}w1HZ$HzndA8;W)@4hJ4nJZnt1DKB%!{aotc^JSBOH0IWpkwX ziq`dTLDl&QF=a$%9W+twO}Xr8uxx6|Yh%9Mh3ctMoFLx$3Dp}31FlQcc1^vsW@Qtr zw+&~Crzif_hK1z}pc+>81A2w7+^sE3VYzZktT>JS&A4^@D5%LBkN%o z;?M2)aD6Us)>TE(^Khu#Hxj9*p!E=|SsqpH7x%p?w^I!J1?F;?>2t&_`p7yUBH-V2 zoR!RO!XlU^Y6PhQDJ@G~3ZJ+uw+vb|i7!97#lE@Ty8L-pT>lyEpz4G#BUq4s!~)d1Q$l8cHqL;@54u5LYD%c572^r=rfE6-K&(28DOA}+ ziN|L#da@1okOdFrf^c!UknXFGb@oT2sA+12aGrxNc?}eP@eo&QY*CYU80B0}qajQG zGWTL9@3c*QqeOu#A9`E-h-jIKMfEKhltPzmC{TELP@yIDy#|4g3~-F&fgntl&AYREh<%?lj` z*to}uPZP`uS>>Y|L=Gb{`I1pR*{MEN#+J*NvH!MuQ#UH} z-prN4GpjA$P{V#h+jRHQ&0X0mixxzE@pJ7UZY^*d7W?|9f&PY=c@=G)EZYBO)Hj4x z*NTe7YetZ7O@$c<`CarHL6+8=M)dG8ed`wx$<`uE5lFcr$m!``|atr zrC$9FrW>;;ZN)FYV-i^;g0A6l5dVFuYexH!d-$#~2h2aYI-LYOCSthuDRZSb$$d#hHJTQ?0wOBh6URt7sS&Rmi|sNp@Y z!5|eA)olOz^!L6T=Z%>t=F#`NFyLeQCrc*{ylyY`z1Lu&I06Ga0$c?Y-UB;6wD0z9 zB^q2F{FT@4bUsn+2KEkbDT}YP>kUi)W~t+~z^er_?awdwYf$xrlRLdJc*?$kLR3-) zy#pUP@)Rxbr`I4}q{9GD)0=6R47&gn;^UC;O-Fz0)5U8yN!)-z84TMz7OA&a+6eSS!Wa!3;x8~e)CPE zG42t@E$pvHh%&c~DHsk*Z=r);7N>8aTp#0`Q{E}pJ^lT5jzW7&S#?|qF}xTy3IE%0 zej-Fvyp3Ixdobi<<=Rr#?%|iG<@Xu}ik>hGi7c#}yS{I}^Z28T68=}b1|7xB`$m3W z>2{o0PV3pQE(UkeWtPWO`|EH6uk{9z$$U>07LSs`g#rXiz;{E zDLhoxAkX>5(vpxN_Kc*D&mgITeBOT-yl^(pHd!&Kc zJzV0>dVmKD|0?Q(=y87Q-zc7UBsvDW-JH$}i(hC^76!Z*EqgQl)v12>`oci10-{9K zhiK#aqUl3)V141FR!huzh{y4F#HEKA^uZ$eFQa)#nQC${-Md|I%b>s!b;`1zBAH7a zapW%}IDaw>@*tBQ6{6OE-pr>+S^U+B$A1~AcsVxs5uCpz(jUS3BC+`qyyE(MYy?Lg zMIufxpEobF{pnkIzbVd#26L!+Wrwz8V1$mG~XOC-1S|3=jWGK{(5+!2%`JB$ zM8&75RF3M>@KVD5kjMfbRxu6DW-carJ~e`!kuYGS&A{*_>Ih&-;KccjwDw(lp*91+@Tyw~ZR6q=;-cP?Q``~QkTnD_(>S{~X>(AO}i^%W(iv-`NU#V97 zm#Vdj72Qpa4tJR*OxsE5$cdE(;xIMRY|LV)vc0tort8A`LhKMP; zZ3?!IeJr-I>J6zeK8l~w-?G{Q@P|THTWrC`IWUFA6pJmOg!{#8-^39~mHG`ytM%U7 z36JBqJM%%_>S@=4vi}d-40{(t+h;Uz7q)$;dYx9+gdZMi1obb zVG8q2kLT66`}K%?T@xVQwb=sQoG9Y3<#Q|UH$7&dRjygHGGF(Y>8*I@liz0hKgdEh zg80!Y%fMInp6s*aB_{cL%O&vYs8IHj{$uIP+P%m#-{EYq+sZT7tTx&FXH&3s#SRb) zR8uk4|FzdiEQ-_pZtB?!+Tyu5{~pt~w!GB;9;3y*D8_xMKa-};2Nrp)83sF zWd={{R4>%%@dIk0?!cYI{5;519+jh^ZzvFHEP2cS-@~iPXHFjQ;tA z#XJ$`Z>#S)aFMNu9yYJYlMkKKRdmk>@A$(_SwOX(Dpr;QFe1Ewt${kC;qj!bRU^M4 zbeur(G;;PMH4DXK9?$vjJca}`k++IVZ-jKydzKC`A3wRy(Xuz+Gg)S9%@^hM>;aSP z9+ivdAB=hK*!p{0=^yJoH56oTVOlj0S*doH*{ZDEhmD>cVcGjg`T0)+?77|W z&z}GDd9my*n7s)9(_>@L9|F%CWbTV9#L+@7qqkJL6CXA2>*+j4VxGCfYQb#PEZz4H zm+b%Rk(Iq&)U~ggM~$<8JW!WyV)@UN{`=7Vhq^yA17|O4mgf8C;nPU?m$n554Qwgz zx#`=!I2?aA>Ak#qcQWSEGRuvzmV1@?7_nS*4{P3R_Q*PK@ZAXyM?~R7{@*;=@##Dl z^*zP%(pYkxixMYG+p6UdI1By~XnD4z0A7(t;y6QeyDA|MZcTo3e{ctHOc%s(8>Q{w z&Xdz_zx%$5ae^9)sA9kaUl_p^Pv`u@n`jPVN+9NsjS+(yo%-vXH)acB_+Z|r`B$?N z3;WIS#++0coqtUmy!u$X+}@Z6DxWjkHy2*@+RjFdQG1CoA{0kzJV$%f2^(|sk%x5D zxs;E@d>*{XdSJsmK|m98(=zxU&e(*Bu=2>_t|4lcw-pS@iCs}XhSmDkUbe0MyLGZ# zIcheG)bh6eg@5cUo46A9+WpnRrMO!hrQWZ+%9kXGUW9x@`-72(zTfhCmwc& zMFbArMBuQ$*jd3-odV)!1w32GEn6c3IjD0O5!k&|+pc7@jS?}cqHTblBjapETWdYz z)2g^QyiK4Lo5TObksI|grMswA8+|D?F|@Yr zeV@_&@!uvKXtWX?<80BE-TlS8akheyKlGQgbnckY7F*^o9b{g{IP!|GY7kQZ&76O$ zR(V>#o!lDajRhCD%ENpu6v*?+_xp={b!^qtksyoT0MV0J%>abh=N>N5lF= znZC`<#pfKiQTxH+1H=lX4T-{QQ_fJaU61{>d|T6;NUJvB%=e|uEeQiecswq`)&oS7 zc+3m#x1>0M5hRw!+d|dLHjDCTSvuf@y0&KS*Ol2{ZD)HiXepa44%f96ESzvs9Gs6$%j z(JQ&_Zt+bKJsRNC1$l_a5}YD()rTq%+E^;2h&oV1TBOK*xJB(|x6Z71o`+M_Ua@)V z>%|V0Blo*Qwbw5*Q#=3eB3Ql|EQW+5vy+46?qb9IuapStceNEVQ|~~trE@30Iz*g9 z4Wgdl&uMbdp09tiQI3i!gE(uMZ|Agpsd7`Y$CXa^%fFV8&l^)FRa9<>ENjAoLoQFp zeV5;z@Z+0ai)@Eu{`qv5s+>FmWSKrp{LTYm>I9SJ{b8b5xUE`Y^Ur)Dt49y7R37pq zw5GS0-SvO*wPW^5M98XPI{zbflf%=FeAD(x`v+bZ+0N~Ft_z$Vs9yNRqw7D9&?RYN zRYP0(lH1Z`LzW#OM`~Quna(9E-ROY=V0MVa)G=v0TtwJ(oHbz5v-6ydd4 zg%~cN{2C@N^eNHwJ#Wmx5u#Zmw3zZCCN;vV@;AktMz#pc`y<6c#;N(mT{Rra!11x* zkd7zhw+Ic6{8X^|y1(YYDNhk$-jt^j>GR{p*nWE%|0t!Jo?9GgY-?^=KUx%PV*4`t zWF6@mBd^yBzi%qEquApkW;vtz<;6V2aM_)I$iBmuU8NQyhT{{NsWpjQKe)?iSu#ev z)fCs1EUWtrf@TayhTdQ+pZ;1G2(A4{I6(`44;TdCPfh=_&tUOTfHm^ao z86?JvZ<=9fErW%*`5tuO zmT~e5pK;i?Zk}%aXM4RDLJVKIy*EUhcyRGim^Y@QCUvzH6qRvM)AIjScI`n?RbiZagLAICx~wR&dROD2MkXmKN@)yM zhNFan#;717E4Yiu0xmwn5y4T(tR)}&HD-#9V~&6LDD5_yBRb~jq>Z3|)G!9-3vn!L z8k)+Y@9a63WqD=$&)s{!@0|0U?|hGQ&-tC*Y41SRToi=^wsd86M$yR$WpE`0rA{t` zdnqK@dbW&jcm_p5|CtX*Fesd8=T;e{%tlF`AP3tO*mwGd+Eg^_xKGw0P%#@d+Zn&Y z^n5Oj^o1zlC4+rtva>!nY z*PG>V4DWFt0TEL}b^8~wlc%$uKr(*5phKaAk{MFelin3q(>3)8V6p%R3gz@vZBNa2 zAXMd_0iRHZEuS5i|JA*3|N3x z#^Id8hUEN8$XtLr?HV^a0h7H=T8D1rvz3gy>D4W7N9^)REllly38RKq@;uP5W>sPP zp2}9N4!0E9(yCX!32Htvu-Fkqi>pt+dU%P9XcWG}cRWMD)P;X#-L9AnRPv3S5@ zknuIpo`JFC!X_A&Nyb>OZsJ)V6M%Qgq3ZO(ddup%v1aMkCdketmZ0B|BhtIduXw+r zI8ZYaq2ebpNs9dGW(Zt_b4Yx#i^psEm@Pb(jdVA--+KHbPCit8!rnP1;+4%W)_+&C z)-cbQ?4!&;3Y$GFT|R2ny;T(Bu3jb!DQpYkuw(V|sJ07uW<;lyB4r>_&IY@3EM9FC@OQ=KbAAihZ?* z!Oezmd3u`HF^3~b0kY+;w+KqwiF2au^-YPXw2@AWmxaMf!cTy zN+;kEk$_H$3mKXB0goNMm(&{!hoeh6TC)BpziM)Ge`{>rX}Ps@{vDq~MnG&14ndq7 zl5@~Xdar7S8#d&Sm((%UT*wn?+mAFmOB`4gJK}~ONZ=|~HL1IXF#^Woxh?E0S7d1W z**A~dzyH!(6yZ7eVp$DV8#ez3R?Ywf#W&24lrTI>$Y1eLQP}((>^HRVQ?-J?$0lVMIGtpa_K}lpkix!VzpaIz+J1`n zYM5FYpAa4k=I9`cmQ+k$JFJ~l>Ao*uZwpnl{Ofd-A;IL&jLj+gN^5XPs{!H{~5 zz6j^)XbO~HqqF)Iy6iDFd#-Ic6#qi3V5y_~U_m{-q+PsA=SqP#XGyN6+^3RcNVK_1 z3dXq{g=?YWC<%v%>vS5dZKh$`)MhG=HUt=W*TM}j!=#LcB9jtsu#1P$M%Zmq{xQrq Za;7y#&U7glnQFzuCNGl;1I)_xe*t<=(qRAq delta 49748 zcmeFad0HedEf8*et-2m&+S_GweB_FYwfl7UOT-rzvP+4 zCFfMDSn-SZitfEp==ADA&L#_HesJLXcW#%7kI5hUEd4vsY@GKd>9(eSr;uMKvuYwb&P$76_sW2v(#RumJEG68Hhn ztAx9OvUMrztv=();(=$81=<0xERrfE>um`(^WnBqaVM(&jznKL>&W_jsQL4 z5F$8|1LG6=#>OXUBawjmc<}6*Ye4qMkfgYze#p2#;@O|kKn}ooCyml_elI=ek7KfBd0_{W z)SXC2S9JBn^A&aF$8;&26HAbQt~wM*SNsND$;s3=HYu)Zt(w|;rN0Mc#*crJ_Bo;F zgMJP=`7eK#J(UP#7asy&82HC8Qr`@nb8D%>N55(|vum3DgbF0(Gy-49fsn{Zz##UsFpZkj?A}q+c$+E(@5Ya1@Z~zPKR^ z9In!L1F{0Gf%MnkZp!@n^-CB%d=wmQ&3@Uhai}33H*w_Pq+vsnv@Xz@pcRlU-*a0Q zu>Fpvm4?0;$Q3IDSQ1$Ho@_`W^dRU1fezr_`?7~d0Xgg|mHq}WkdEFH0WMXIfxf^u zf0r4@1L@!~O0Ny1T`7eIkTWJ6=~zL(N3y^UD3~p7h>Ekv9FJw!_XQS){xh&3@DMPC zExw0@%sBNgITd>YS#U!j3n&gO3w-jYZ0T`e1?U%$j_J=mlXi!JEO@P^oBS8h{h==e zGXDv{0APScH;3?PML0SWgge{$7D<`mrJEf-9rK6mD21^=);Apk#R1u9m3D2xbDoY% z=&$itPwA~~x>;NpknIgrSXsrtn?t4_oK$s8Qaq||*O`Ax>Rd!Pkf483+$d()Z*bMY z!v`d2#gLFb{TLO<2mA%dC2$9j?f*!jtAf*^v!V;oXbw!}T)NqyO1^ULd^1n-V+IZG zH>hgjuspfhUs!V!kdO)bDQpGg6pm6@OW}EM-K@xQAS;lPN8(W+3l4-GN4_YK4H}iy zFJbtAenS&SCJaj)m86x^g~b&*6h0^*)13oyppQrlPTi)6Ul}{O4TsPge2axU;sq}I{j6kX#SOR##U)Q)J_!3wWxD-hKH6SN=ERb82 zhCsS)X@v%mc9;Al|22^1tOjCb%89jeP;z3NrY&_Q`;SQpEU%k`_i;jBlk$Jsp49$>2Ml0^5=O=nv=PrX;-(I9J2X9&eLf?E}Xek1>ZsbTp*4#mosJ~Foi9SY9YJuL5R$#X-jGFD|E*1 zQ+$V3vVfJ)xe1t~Fd4`m>JMavngV&{3T-2Ms4{d;(SkrW;90Qb-)XC-m@DR}wlZPG z80ot=V8Erw<%~z6v%pP2R_GIzfwR3_afbpcfR6^21EwRMPF%K=Tw82Ft|3=C%C%!J zkZa76jtSCWDhL`30kWp8fowqtkj~`;(|zM5 zT=TgHa&7LD1`QrM7%g{gQe2x4*WSRj2S{+PEftV5C|>s8E+9uSa+vJzuM}wocw+c;>o)e}!kQes2MCrdJfSh0rfpnu9O8;eq>7FU6iLnFY1`HnF z|LRCNK;Hv7F?K3k31r6efgH%b{SvFz4AZn=6hymgqhz`vqh-bZ1ae7oIm$`sbjMvl zHn4=MXdYlbu4y;M$c&P3H5(S2s3paYH9cqESlRO3(0GxsAOSsPYO?H!vkJ!p86PlS z`t1nl>@gqc#7Yz7MEniN3M5UG6?y>7%{A?3L~!El1hPwin9}VP?3S*uU>_t(`NmMag_cPWB6bZ$!UZ@4cV@`-Qi@edL_e zqNx4zJ@@u)EZaGB-J)jGb!UwhHJr;@)L3_>#r(G%*D+W%P@?9{+z{pnUa4sfu&suZW2) z(L#hgIdoXBX?@*kHbBE}ggu3NJc8EB)H1&dcRo5DX~brLaXvX6VXQ)^jT!nAp(bW1 zW|P_Sm$cU!tw2a}j%}{Aoe)CW*>$Z5^mNvnTGzT=(_)K5kM0j+`A{xn$T-YNSAKGiwQ5d)3sG$;M!EogEa zGTVeXE!Q$y(CV61$V7!gcFQv$WaZa3E*S^P9u{5M# z0L^qrkvR%3@g*G6bl_Noq)X5$6Ix$)zNPoNTq5nqa4Qt#3!mSPP)E}!?QytuADscT z(Ho&YW@slut;|rauTTe$qu$B+=tiXRG4zIv!BkAX8EMJ!wR6kO`o@W`H7(q^{bqz? z(Lp&17?W;c`ghLcTak{uhmal01J^f9@9umAZg*DB$ny;yZ2OT2V*o-8oKJ2==u4fC zZb#~;oVD*n8XQHhu==Qju>>LHwl>0ef=~l9 z-)-M=#d|ix^@O&B-f-X z(CGQHf0~?=8RT+us!oKaEYYuPp*1jz;_7`@#mRJK&&#DlR;m*;=4mr~avL-*9kPm+ z3$o8;=@HOag2U{|nb0_@(()KISst5R;-Xv;bI{U08(KG5ilCxiHJpiU?2fBodbrcJ zza+=Y;>=tTZim9<6WOB2a^M*?2f=h5dsk@eX-`JW!88YhH5A2qU6E-W=8$~?O?HTW zF5C`-@y z71#)k)s>q4MpmsGG*1cpps^{YrM>V?Sv%RV8fP6jKxA*}7hoD90on%l&v8pu$!-?g z37Tvvt26^zV^`LWZ=gj$!_t8Zko~r(*G#$44NmGihpF) zQlRy9S?XuS<~(|&rOYGoI1f6j%Og1$($kkgO>_px-qT;@QGh1Su`hF)|NS{u`n zTEw4nSj>U2r$A$6Jg&U-FHIZePFw6r)`m=hCacGsE-EV{Xqm9t?! zG`g*vDOaGer_5ErQN~MGD=%H-6=)%d!|w9yFvmO4>bSLUp)nV$NNbL*3EnZpaEstb zM2Kq>u8HV{bI>>;q|22tbkogsb1m!*jq}&bnK>j(|4h^_qDSh#h-5;4v6-+=JOViM z9MTdyKuM*CUa(Js#`?>CzO&h31yRHKqL^H?Oo>zJbMz&*^(F0l?v+f%Z3O5VZvG2JFt(J4*7ZHxC`J}xZ?ZME3UDb0e zgvJh+*X_&DI5N1p;R+v^UzTc^Yj;0rw3JuA1<>k4!yv#vPpCLkvlJ~Lwv^KA8@`1w z>SB8-J;E4>U@IA1=LtUZ1Y7#J4FrNMr0rP*o5^6s!tUS*PjIs*s26b?H1`DOn!zXK z^}1FM8CVn^q$*|xpOi(shrI6z*7n7yNYja)V5TQ%6muIiH-k^gV0}P{eI;l19%!5k zxZ{}^=J5A}vzu{x_b_7|v{3P+3ew*>}y z2I$&gx3(QxtXnHlGOOiyXan7G=b**8wWfi(*4wQu&88WpvgXnkn#VE|ny1#qO6yu@ zcP=BKg+lWdQ31FGgT_fBcSrZ2v4`a4tXvsae{rUEgGPU~Ix}%8pQSX@U+p`f@tUDl zlA#WJS(nRlxorcDg_sk?@fI{r4|yrt2aU_EU8Ke8;W^4>U6Q!zstZQCJ98Qd&69Qo zG*zYTVUAywhHWvXLY4AzVqohO6Q&OlkAn0_`x20z6>rTRhaCiSkTuI+K}P2=Ct6Er zteLz>OoJxfCGCqa<4b68ms)UFgu07~A(&hpE27tBa20}zwO4|dNVYqIJ!Nncf`er+ zuri!O1}7t^3{E3BP_j*`z$avIC4#+WFlSYFa4>=@***_jwwk*-lMw7|CUYD|P_`p; zf4IH6u2o~_JJW`n3NK)C@Q)*ktGj$y;8#N~ie{YNTRaNK0{bCIu08TD=p-~I$J&Dx zyK0c^JUPf?pm9yLI)mC&7d7hW%^Y8YV*XfIyM$Tt1&b|p^hu62p>niw;kX%QJb{Lr zyUr1g4z+aG76lK$_KHUl*y&UV6Lsq9^}QyC>CUa)>gij==DMiX!!X%G&8hDTw})d9 zGiycn83BzOGdysJpp!Idf{R!-wq4I20TGVTa8PaAye$#mHB8aCn7l-1y>iF z0gl8*as@y&u~AzCO?DENUdM0Hc=^S6-3)W|Y%Cqe)bs`7Q4^G`MTNp(6ex|R$_B= z)OudqgR-IRn%?)vRrf5h%j9uG_?_eb{(4Z6~=XM;qnz~E1|V_)!6X_njBZg z^=p|m-DYTNHlb~fRon`a<&uWV&E);+v#|EG;v&n;|W5nAlB+v z!t^zwc00J&{r0*x(tIKm*Fl$0sPtpv5u>6z=~{pBq&-$&g!&4kk1%q*f*B-(LlGPz zgU1nsDGh3OcH1sQu!m$HBG^j?J9R=8&IIP91kq)82Rz4#GWZjM{dgl_)a`GM zH&e|+aG**4iIB>wX&f%%CixLUF*5l*1o8ZST3zb^H@6tU-lm~8(4D#!f-?1|2;r$d zO0*8brQQt1A*8Cg4#D(;p#oX%kV!FqO&< z5s!PZABKoJy>WxKZiwqTi))eP;SjNfZ0(_0cEOf}p`uP7q}ef4j04)o#>>I>jL}Ij zy!OeBPwQc>JUL>=l_u|pe1}W7kypPPD291+I8n#bxIYHFiF#9ZM zTjSm zSTcgRHZmCSs<~7#n1WzK$z~!5A0_KEhAzRNV<3W_GFL(4Z82{3XNNiTvGQ^vcWk|& z)k2*4SlIXgS~cgyE)m8dghHL$UyHEl$zohQ9HLILTvM<>^$T+dXmZ%Nfw>2bE4#c& z4IL-*gyoiS`}i!+P>fHY)pgdp65%+*kXb2sh`rH-Y~7vW$T3m6lY7J*bHVgS0z5iB z7;c@UYqg!*dqgj(C9LrWQ9_6^~{LnOn}Br-0}7^VB+0OjlPZ?sd9u& z6OmY7ci6$u*DNA47!PUE;3v)}c-$})A^M2y$-U5IgD{p}-jj9b_~Z5MljT}vnivbA z;bmZl2#4i0*8pLCcXWrwH4xi{ZsB&Nzz;`<+owo7#B4MbX@>c2Uy7*gO|`zBbxgWK zd{ZbR#2CNN@Vn^$IL^FD%YWi}P&=;kwa^LE5YgBHm*c#d5N z$<0vaI=u3kD>KEc#Y^-UXbqebUx~2HnJel{KqK#f;p-yAJHw19oF{1Re9|q#@diTC zW+kJBU>-W<4Yqk1baa8nccSp_@!`07VUuh&%sx-Lw@pO7h8u5aT;t4VX~t4$xazPC z_Yi!=3_7-?%aN9E26DgSN}=}*GulAwCQ~d!u)a)j-))oGKin>)6QScjFqKXy54U;? zOocl#yLqqHcz)LH$0BI#Af&=_a0MEB-Mo!Dvvk_U|3TS+8BC7(0Jt?CaF2u09H35xRK^b=mnzYR98*YD3?t@Vp z24FBWZj$nHf>;*4m$7Av{%-!1^4Qr7vTB+aa44_cF`wp2%Rj;@<(%egV(|T&VO9l)lJ{J56S^1cVK^Qbnv%`Z^#p*a&2WwyXG^KnL{w zD*hmlKOzhI23Qz)UhyW1;yd&rqQB5%#Ctn*J4Qv*t}BDA$QIoIPrRw(vmy()4c;QW z=j%lRp=tM&8Ij5EE1hT+-aGXoSavn-k)nwVKEXe1wio(iF=pHn1Pg4Z47vbWa1UT(;35^j6qpzK1|WYg zLgu$g#b-qpyi@T++U+({WKH*gV1ZvL10wtL0FcySrGE=#OMeD3gOiL@$QGZ1PCN}{ z`m@UJg5oa%S`pUQK{ z{0o357F6*mt^kp9tSpcjmItzhm6Tou$b?ma{1F*nL-9e1Co&j@f0$2gAk)jUwtr7=L~Xd(#{nXsACiEL48r4x1WvF^VR#XFCEp)ZG>TPssZ8f*tGETVWp{ z^XU&{{6K|6fcU?bh<|85!Uo@EJ(I{PWWq7f$tNqraX@A?5tth|1IQndb~BZp6}g7Y z1J8oeRXmaT%vbt+8+?~P63pmb6_FL0!9wu7QCtRO&#YEY6i;M_Zve7En}MwO zULfuEDgNseMH~e3N2I|aAa7Vt0-3>C#h+7n9>@w`RCpPf5BftOe?+$QF_7t>Dzu>X z)NMe0R;NYoUlXKxWVZ$RCjfzoPi=3i|+=L4P2BMA{8hI0VQF#sgWAVL<+}BGZpB zd0bv)Kq3>2R0)Wz&=?^3u?mxcEMPnk|JNq-ABDOYwpT9_OLdB(|0l>|URUXeY}a(9 zXGJfu3dNY$oi|nVi;&HntKx~QwG+r<<|&>?Jzd2MrO#LTyFmW3BJ+7KhbEFf)bpE_ zcwZT1#Ue0TulWCmC@1j$!vf6S*?@-RLW6bzxx#;^8uncdwSagC#AY-2f2VVJe<*{R z&`o|)HF^;`MAgN5d0i95_rq&gp$o9)s9ywfR^C+lEtShZA=BN49oMrzf$R@&X7b;m z?6Chqg8w#Sw;fmh!m2`l$3~`|X+S?Nstk#2nJ2>0A|3A%y_QK z_-$q^PJW{Ym_0sE(dne|BhvgGr4y+OrN0OnKVR7`0CHXb5J(SL3uM2oQ}OE+Zpeu> zo<9W40yZklP`C+5uiFV^!;S;#**_`%3=n;;T>O*yi9i-GLg7dt zdv}70p918M$n>*-?5Vjx`hoy*m-LC!R{+tV6m1m(%=mL4e?-=NyW)2!p2*2_Sn)>` zPh|RUf$X7UiYKy%PAEMqvO*_K9^=mdiSt0-ef_Qy5ShVarN0Q-V}B_-E_&20T>KQW zVqQuo(wTDt$>$e_r?E z*N*?{b>fkOZ4TY9f|^bMS;3qATNq#DaE!V3Ge7K!_Mjs3|fDp`v0}KrNBk z01zg8qX6Mz1fjM#K&T@E8v-IkGNG3!->S5S_%}mLS4oKzu`@v+!*N z;tGk0tw3}Y2T06s2cl|g5Zy&`YgDI)I7;X#Dz*Xi5^03q;wM5M5!4nCD`o&hmySq! zvn`VL6SZSN*gJuEKL$jcxJqIZiPr5v3>0@cG=oI*_JF}+F#(?s5r&F(9RTrSIboRa z?Tn;jyCCVr&PbXd4v?tO6-3o8AV!GfE+Bp+ags!mNW<8Q>D@qF>j`2>4-gZ@T@rtg=+qNLidfte#Ijx> zj9wtpM7v%fy7UIIfy8SuY#i0uPnP%MbOBxZ>Gu^@`} z1u;4n#7vP%Vn2zpeL=h_M)U6(M6*F4mJ9^(zPL-` z4-%aQf%s4?9t2|9U=YS&5Q{~-!63Q}0kMI^$3hOGY%V-cANbC{%Xb|>SLBx#) zu~)1mv5ADwt02A-v9E#{GzP?85(h;7F(8VL1u=RIh=U@N#C{TG$Ab7qj2H`IY%+-B zB#wx{WDpg`fp|R`#8GjS#E&FG$ALH|(#C<9J|4tH630c*co5+eK%|ccaYCFWafL+m z1Q0)oxf4Llp9tasiC;w2M9kJ-GZswr`m=iRpI4X%OH%vA53Ytk(rZ2=92PrrXk33y z`!QqfDzDoXqr_qSXq54F1(zWM#+A1~tr zOxK_B911S4ES81DFs10R+spo+te>x>RcF$SqDQ=nTA0%!s)qR&_{7?&Ufs=%*R1vm zXF`9AX*}zgSAR2^x9bnXwZWaoV*Q?A`;GVCT#>i{5|ItNd-&vv1BCNBANH zuRu?WM~AFY(NCYrpGhK$H>=#7n?L9bvoyY^;m<3J4PU?UXBBDRSPOQwBZ{WxyC^dP zPsfxwU;p?jE|=o?k}Hs}ZSc#j(o$`qxID_vA@sx6g7x@@sg;V#r=nP^){4uoIKJCy zqqqW!^A_!pMPMF8#i*!4DvFKhpg12f0%j?N5ycAg@KiH|`SS;|FZiCimEr<`Y%t#j zzM{B5Aag4O>54G>v!b%|LAbB7tE}Sqx>~3XuOhiT=9||~6j@c|KZ4d*Q+coxm#L^4 zDi4gfwpMXLit_`vUU9)9mRW?TsN#sa$a>>fQ*k8_zO1-V#RY)7p}1ONEwczyQGtkB zqN2hTR|?!M2n($Zj?twd8zKBf2>n}RQCFFl1+|Mje)SYr4&gl}gF~u{D-S&<#-831 zDcUiM1}dr|sB?Vzj9--EDj|GWaSg$794kYPDz2GWj4V=GAd0V`(=UBIy+)gglv*G<{g0LNFEbd&Dj*zh1oL&fz1$GH#;X{5M*(k_L60z*5iCe;9y zA-;Xl_R-Dp8>l#ZX09Do+#to(0>`r+^u@v8SV0`!)_Sru{DvwH-{)xk6*ml=IWph| z@VG6VHW4KI6(2TeW0c_-aCBPyeF<$6INFU>98R%oJSj^q861<;gQTjolayV3aMKjW zH^Y@(Ua7vEpWnwC~^;bCh{B zqE524`0>y=%WncXt+=JEam0LQs~KyiZ+ zZmGC~;8>+0kXDL2B)JrAD9CDR?(!7Wmrc1dw5lRz$3548?uN?mHE=~0cT3q#0r%93A{rsUFGM)*uaiW-H3r^M z+*E|Gf{O;;Ropa$&wy(JyeE#Hz*OMZBg|q3OE7O6XD+#r=f?K?L5fO;9`Kf;?fb0VI+PQ#l3@Y3B~cF7zFcZ0wn#0KdZ?9 z6Y69r`vssl+WgrR_b$S8F|L99poUFd2ziEui;J2=aql6V2kyiLEEhQT&ijzOipv9z zRrvtIuRi$8E4dWyLnwAd=2ICi0_RX1-HM49L-^?kSHyyf`v~D<2=hl*V+B8ke6P5| z%I*_zQ?RrQ0Mh-K-x8C9GY>?7{zq~tWHt=BX8D3+OFo4Z0>_`fvRj6593~Zi{IrN^ zmqVJVrK*JDR)CwL8WNzmmEd@2k-w7MA~5l1kjBc8-zbq=1>s9EE<2?Z_c_AzAzXG! zD{eKyJW49DZ8}@(=EuAS6s>$P!6D(Tw*FHavj3A5T>hCRNQ)m zuOUnysRU%tY=AUEU>dNhvfGI8UT~ag{J4q@$$&V)%>q_e+$Mx8da1*zH59oSWFh8^ zUy$OqAncCw!4*+lh_c%T&R20Y!Lb*%L)xJR>9*yW8CcL3oQtSNr{W{s8k8WISOJ=8>T z2N5m>j^%4jL9!PPL0*Tji<&FLZxEge;je|_4kOGlryak8V+kHzBtnhafx#djTDL5poG~8FB@36>=SN19B5`3vwHB2XYs34{{&E zJ!o}E4MDliv_W0@rj~DQy&-uZ!Qi+ttqG|GDT`4k2PqG!2&n|A z0;vkA2B{9I0SShbgxrL16MF}87g87vFT&4Yd=cQ;c{{`b$qC5?IR^fF$bA_926+H^ z2>AnY0@4YU=nUxs=?bX;83cPD#1)0)L2u=Qcn(FrLrYaK)OWr|?5kZwR*-+);1`!QBCO1G8ZFCWPN%KSOKk z!5`{Fc(S|(Bp4C`sR;>%lz|k4@WSr{u|je{9-@c;fbim<8{!Sg3#m_^Xn=?)NFzvN zNHnA=gu8;~kQR`ZkQfNRM0^dx-2p!YZ3ih2z9NLX18xSQA^iB1AGd4;?ttusWI}dB z_CU@e?i}QN&PaGQ0{lqR{N53n{0#jU$gAM^#SJfS-(bt3TY;yZdm<_= z48m_AUV+R;7IPqdAhD3XkRA|T7yh{R#OC!n^&a5HHk#M+lR|-CNeM zlu5|FBd&|Q&EUInp4sPJI`7K)p+F3z9i%;kcjdeb=Uq4Nvd^P|p~$Wqgg3;SA^b{= zH^P_MH;`)(-k<&q`2}(k!h6#*kh3}PppOUncu&EbgcXpLkhPHY5Z;IKzHUPh!IzYe33OG?Sk@q(P=Yrez89GY4+;XF&Mr!vJJm4qXz3*+SjCLH*4~4W-b{WJ_!H!P)WcPuJJ2sc4nw#>JqbAnISn}jIR!~W zk*1(+Z2MG*KV%82z>TRB$Snhvao@@vrj`+T-|C&e?5~L6wVyW-d;r1+BVR)n zLq3FXV^u3-nAND9FXO#J#&5Q=mB55T_^h8#_P&SkT>x)O@<2X=zDjh>Z3L992|5!h zpWE*S1_Og2H6WLuR|i%VK>JOXz%x-WM^_xJrz%+z3fYgW7g+xH=ShaHIyMmU;l*UZN#LR@5F;iyVT=*6@ z{A_Iy+-MPRvY_Gk4HE85TWD7)4TO z&W9SSAgonC=sy7CfE>R5KyI*~k7wNH5T>EMD=mkfZwg#oJi*9y2XQQfTl_N6#{c|@VkHhutnA3|4u5BLV;T}UWw_*C8rc^fhZ zG8u9Uc6^l1axrqj=2m$F2-gs@kXeX)4YCaN{1h@1;pvcRkSStDNyD%8>j<8O=>gc4CM9)B@h(1Y-4m1LMTn@#D|7<5KA}z$OK*NrsAqN664y*@#C~IchpznapL)mlnPUqC*GEQ5Rk`4}<*c6@iu@TZWakR=f6%!~Q1 zfVjAoR_tbJvJgk;S$Yb#iLR*ZHGvyiVKdm!ZZLH0tjwvb_$PJ7xOfUpea z6UDF1e?s68#KBDXtod89xC|Wou-IJ2i1axEQ|{uq2jL?*KB_w=yvrJ;o487R z4HUyJof)y#tTAgso;6{OT{Ww~EeL)s5Wn(IGd zn(xu-3Er2QmqtubHT)0xi8s>?U%z)&U~h+{o5bk*AD{a0Rb@~EeVvh+Zg}Z_nXvGN zMd+gaWz&x5X-|t9)q=vS)i^9pzhgAciJ2mQKZ~luxQf$nMdlloEq*J-qSZ!Ghu=!< z!;pT0$X~$bi!)zA-hh>2Z9%|panuiRUfeAVcqWeOwt}KW5u43Y>@!i)-&PcdCH)o{ zzIenlHy13riNM9sCX2=X(2~SiX1PGDEeZHU-1fKi#sR1(o#7LkkJGXinG z#3-N)6{VjNI~O98%i^bn?o1FD0CSv(L}Ag-CFm>KtuhLVHj53LxU<-(g1W9aD!`G5yqlgK$ z6$&6#7LQ{~VB9xme)L7H0vDHfj2nrbFvgitJ=Er7&^ArXC9_zp1o&-0%ECxF{zl(B zxnEoUkyXdM3#o?c92BQ%cUA<|v=t5j@c^d9V0ydD$@DxeHWcxg=FJe*J~4_~%4dkw znl>LcCS1gRg4C_WctVs&{{%Z*Rdklh$m;pOy#A_{X3b^8|Dk8ht_#t>5bKtpw5Q_o z5;$-VQFW;iXz|VzF-tK{!^Qhc(e9g>=G|QC)tNy#I|UZ6YT>fN^+t;qM_~Y0iCk^? z3hSpv8#!4EijvFW_3@t?O!S4o_@(zjLX8V zWkyl_U1h8$1#@5_!l0Nl-^W15VOhhV5Nv!j#`?F zN1tBec9_}zJ-;j_TpeoIY=wmX=SGX? z3O1XFA#l>r=1$^~Q7ESwpb)5%;_~=TR8Jk^JH8iuci+I)0Mv5S|*X%4;!RFwkiD8*oc${L@ zW+MXUy;p8WwbzK#+p(V1+JgUz%Qew%3+k?Ns_Du})?LJGHLPOO7Ne$Tz+I(^5?c*_ zMVoe6!(#YWtW|C&aaU0F)Egq#Hq=8_myU+cDU5BJnLsteNA%f=!k2C{E19_sm8>Uz z0r>U$7WdugkFN_q_Q{#|?s3^4HLHc;_A)OTroSUb>~^&Yt53CXnQ;*@YP(S@dnd>` zsxEVb*_})o=Bkp}KR#m44x>c2Bt^uT9Y&0cG8-f-uKyu+?lyeP(a-t4NZo0ymk#2q z+MCrG*t(ZE18Z+OgD?K0RM&T9Z&sFi%A&J07Jit0@Us}3{Y+1lJ?e5`b68aOg=85P zvniNtW-|t$u~B=BG<+npn9ko&oZN%jxBAIEYL|NFUguZle>C?Z1|^8Qgc^7xlK)Fo zJ5E#v{KJG#61`#In$q}aVni6SpC?u^*-~WB2|WAoB!VuvP4O{L{tl?P%0_`ArKQ;P6`b14gLbj4Z6Vl<1@1>4nc|x$o3H4&9|p%o z0w}-pr{whaX;}EHY8|FkQ%%R(CG!^BXe@K{H_phb^q4Udx{iMH_Z%K$zcV8D0bJ{4 z3HS;surq4ut^}JUW*xvx$A?h|j1c!Ys6r}yZM=t#+G@6bl{o!%mOfQ%qAqwbn(gM&iBjg&WEf*WmYN=%BXSub2BQ%HbtEqq?WSWD)hPd)R_qeK$(XZH0Qyx-R>tR?~+cpLi7To~OjcBKAkrQ^6M^ zKWm-6o0N}?J!%y5yYQ>b=!beS{w?~p3r9w{yJdra6RVK)KlMlmzQM{?&-23f7=~Jw zXfe)+`5kS+&vlz=)7n)lHFaeNi*hH8V&d>IxSZnmh|Ke7f^3O&#%z-vbK~xD%!Uu( zrlB3~$XohDfxZoj?;F+(%~38m5HSvnQInOExjol^ zYCTY$D#rjLqSBciE^A>ad{5;50rOUwhKtA_&>LB*=-2qZ+@_4U5OrqP!i~8-L)TMe z{(z!Y_M^l%KS6s#`i;VO=k5~j@et0y+8k}IMqR%W1e1nX$gLQkEByYkL(z* zv`fTfi(U!$Vf-l~HTqei2pYIS+}_1N)PwCv7qa_t|4MkBbz&Oxz73> z|I>VYo0@5x{6^_Q*A{xl=!sZ`w0_0^!m|W4ZBrrtRYi&|i}o1cyIRhx-r`T%rNXWp z>^|E2N9lJ*HspGz?jV$-e<92<_@}Y^XOk>G{tvFD=84-WnCictn#v*7By;DH)lXg+ zrURzXd|H<$ zbyBa@r+aPl7)bw6t|4ZfhnuKU{~qJFR@2Q}6-WAm0uc*Zeur$7KfWl$F~h&J|EbuB>byk->1Q7t$GH@E8Msm5i)DsQZO zY&CEz5oi-JmyM#KVK&`-l2UJKbxBDn?(!?c_UR>oud3U+H{0 zk0GRfbbVaqQ9bTYQ|5SbbW~Knj_RHg(btWT(6$Be@gnR_o!a^S%HZv_`Lr%Lh!6H+ zRm|Ycb(ht&4ZGxtNfN7&gWv1QAoJqfWd(~gedsa3r^+m1x%iWI+hE80gO8R^8gk2C z_B)T=5mEgHR?2hAz@EQ;qA0Kcxvu5aPL9C-r@{qC_FCZ53{G))=o|2;Ke!Y7@a9)onm zaC`cJUyUutuJ-HZiCH09-$dTKV8F+3-bET;{owOgzw#LTfRj6@!wsa> zC+}sH&VS8g@S3;_1AVE;bq97|!mcFj!pg4-5B~GpCLX&BA`%9n{Ex))nR3TdI~Py; zEv=Zxpd4a+5fhoC-GGtP5A^rMM2a_=cMlk_eRXi~drp#?p+Qca5RCB~N+r^*uZ#D_UL@y$=j5pE2OR z(N}l0LWj~5WtZc=?mBv2b$aM(MDo$a)EhSAQ6-{W=6o z$9j0L=(eGSM>VLxr7)C5#f$2X4BsN@FvyFNdR4BqaYZYy5*766V7$fI5AYghH8QH64Ugt;p_hlwp?^pv@XB%*{pnDmf~%N`OLpyi1_v~t`e0) zq~luO+M02w$S)mW5nL^p6Z7S-A)AWgf1*qKBPkb?WmP7>(cw40a%NJ~%aTPq80d4v zP};489lf!ty>{2F4fS7P$M>1&&3)oS8vF_a&Mw=iE^}K~Iex}tAYXXu55!H_g}(f~ zXRexZ+4}R?vFLi^*KG0RutMOCD4uluWz-A}gcU1Xb@htCc6Fym!YZ^{C>vW#rN7+x zkY8w_h1JdU<}l#DtNoYZn-U8HUNYO>-?gU8oH0dU5K;}VRBLLlBZdQ%{LYBRxprCJ zDW#7E!fQ(Ko(G1r{|Jx`KCo!_yVY&|u9VWh1d|KQeITn?_{0yR zH`h%METvyzOn*@JP}#<~?oH;$d!@YTNmL0jOtdQHY^&8XyN)lVmjJ_pB7wZYzY=q+ zb+?iBBu`9d#PHSDC+jObIvx711G$OKPmBb(Y{jQWh!|VJ$d`-V5MB)p#UtRkVEtwy z6&u@NS+$^rcNf)wL0Gj=?7i?YBz+ruf=5r`ewW1fXGXH?P3ouVd2PPNr?vPO0FJ(k z=lQwA;B;nCAD7+}Z*fO}$d7!@H&H%fqs3M@eTA)*{s7r#hiYV$>skC~BrnY4x(bra8Q*ln5bv(+nayf3mM#(dMw7fDPlUnD6- zy-8|iu@!ypwM$974O(omnXlAKT5ZA4y+o3AS4FBfIc8aAD)kP@M=bKP75;BCR&UX! zTVGHYPYGr{`38^go?LJ3_)f@dyvNR#rT#n;;I4lb6ZH~t6Ir;aPDv>XXam~r+(lmI-A}1yM^|>g-yd)7~Tm^k7 zayV=}zi^~f3`y&?h_qO5m^Lz{uc*3mW#Ya@o4#R0r!ap_mPBdVnp%3ANCk7p5(@p z!6{8-%X8<9tM5N3;2~f9nimPp^f>qFlfNHIaGj0tTYxOM+HHHdSe8=>Jglx?);hTWh~*_^(NG^;+Jx_|f;?{%)%|B<59izPOF0 zPgkHiTD8DjJN|a`McJrP*eJa7+kD-lknKQ?-;w6>(!I;7?>jSkz>l8h{$tirB7x_2 zviIt91^vB~LvsE|;}meDOESZk9qd&5?Uqu`hP0 z4kCgLRAu}_bN`EzOxgWDTf^k*et9xTooaG*&CO|SF%sw=Np=RHON*~<=ZZw z&Nd-yyN;lZYAaXoW37K_rS(3)&RhcV1_KAB5yRc^;vJuT8+AJF?R@$SGHUl{UIgp8 z4)ImQ=k?qLk7(U${^$m8@LdP5ZM9yMOHJ4^--n7;&6%w$jGq>=J}9;dCbE7 z7X7)G>M1@Q<)eaLi>qA!=$G3)t@5@E=|T|0jrFL}JHo%LG^vayrZr;t@H05){WCse z-oir!^HvVb5XA85f#0LMsWT7xzT%0QiWolp=rF8nYSO(q^HfX6aOv`M>m{PLu`*)RhMJ+b0sQu-xH~6|ds9Me1*o?SN^{8_+=F>x8{Ea%E zSn=DBWNg&XhZ}3wzt@lt^vn?na~%sYPZ{tuj(iYl9x;)l6#DmPmq=R+rx)!WCCKMU|N9s9e5q~e)?36h#GdozZ=nbD7E>D9 zg8j`uG>1m~_4rz~;ZKX#MI+P$k;%Qqga+vD`Mt%YI%tf1VJ%AFU5($$-n#j2vqsX< zFFQQ#^vIJc+v{pq^Z0_Nrt1lrY+%N+%C_BJ7I~PgsF+e6#|`Dwcb_OTeaIJoBvhRr z%TdFo&X1V~ZQ#!T`4HK5oDutnGbLFMk*RYz?sH@~bW_9{rl}F~FNVWj+$-j6docCu zMJH>SO*S8dzUWXHUpZz!IF>gUj`m+19P1fuYc0>*hQM)f;FkC1IBjd5sy0uJ`WWzS zd?Q{p1aam;Qy&`{dH%GhrR+vAAp`@~Nci!XnR$fOR~~5f383NPjq;uKt?AQ$wKpAs zr;O%7S~%_o@r0S0=V{FX%_FtGc#hMuCZ<~640-Ip-|x}Piy?V`@FXm69;YpeLq9l6 zTet+WY7N^$=&zPz^cL;z|C-NZ8zsI$W~xGFTT~TggN%G;&9Uc{!~)dS4(^Z%@<8#RJd)P*V>^v{*0;-Bf8hN zh51|JCCn6M+XVa>i8`_bcPp7fWh5_Yv}So&U>=+7&OX zb#W7|-s5I}@t^IDsbAzU`4D)NcTeS-!M^bHZF&j>fAKoX>re} z#U+YfG&B#(y(BkvIdHu?Rc}9JNou8cm2Xj362D(Y$fu`G3r;CrWWeuHN@v# z^T8`~Cj2ndW1)t?qK47`rnlgpy6WU|wte>Pfp5YK z*SasV#n5HA{g&7>^dHVpsE5k?4G;Pv1J6p=6)a!Fdc`a{({*62t*F-u7#WEc=o}Pd z1*y_)`d}wC*P2LFw9g9o9t&|iC%1|On-hGpAbdQkACLvHD&*xME>?7 zg}rg)Lm5)&F3XTEEp=0SUnsCqsCO0po|ybp619cyW&9glH96l z&SozsH*?(5+IFT-$2M^{Jr0P|UJJ!nSOs!u*V8rUVFNv-0*(c9WQt(Ufjbj1-*@FO z1cRUF^Bb~BvW!dA32`Ec6RR+vOi(vG>l1x0_AZh zM67~erlFY~b}!khyl;* zvCvTKKA+RJT=-z77|>@=F5{@gi9THp$vd>;toPD0fl65!Qar88H^SLmXqt(=6F%j$ zM7@x+8Zu{LpN8jT_Tuv$c^=cPf5D}K=({yIQs2j`!RgrNffPEQ%s#bcnPRGIl#Ma~ zDRjh5O7YLQmO(0Ql#xiGd$7B;OH=yYJBG(tBxzHSLSL%N+)eX;xM8`$DKIBi>@6ha zK~^j#mw_`yjTtA92Ofl4757%c@cdaG>_d*wBINKuF&_n<2u>K6{1C@Zq)?^8_Rm{? zt*8W-x1_R%^Pm;Ws?Hn z(W8}K6T6~yaiWh~xOnh>J+tAc?E2UxSHFrBWRgU-Ga4q@rASvYoXCN!{gjAA1Ga$#v>YP!}cgKIN-9y%3$95)X|^+Xp?8+x^sjorWS z;@4Kj5W3KGbOV?v$FC@g!UGHy%G>fDc%qN06GGRxu(BHD5cpGdx{$@Ca&q~=0jb;B zxi+gm8ldY#k)&$+kgZBq1}UnlVoHBPk)i01XRwtNtE$dJh`CnPF}I~iV!Tz*Jp~BIvBY(aGbWYtu{D(H0bg zg%ebVxg%?V==qpYcEk>;`80Z5gVR)yeQH{K62&B$ssdR0xyTsGenI8y2d1fqHz;Kd zuqjF0Bvb$l*N7v8%wjNU#0A2-VoS9~On*++WSOAFWlc{>LUAg+X9rhU3?d9t$a_Iu zis+A*5a9I?a-EnXQ$!dT!(cZ{;bJj)_aIGXTDrz))MjYZiK$7Npfuf*WUU_m*69+` zjN17+joPS5G-*@yMmY5;>27iJCTqR`*Lu<;+7VNb`f(!E*bz`Pl_`07_#-vLz8^_n zDpv`ib;P}&#Fl7E*9Doh`ej&KYWhO_oeA|4lU9dX>7efs5zn7S6K~jBLk2_dS~4Dd zt4ViH8=EOrZ8W88^~tcXmK+1~?*xC@D4Dpxr5f@E1XPnC*t1krLEvR_95U+2Xb2xm zLT}3T;%^Oc836kyj5|W-u;E2Mt90I7~);!-ily)7a)EnDk+l+N?hgV F{sTFhH-7*C