From 8ecf510860300a8259fe7c11fd93e860b4e492d5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 13 May 2026 07:09:56 +0000 Subject: [PATCH 1/4] fix(og): generate static PNG OG images for landing and guides static exports - Root cause: Next.js static exports write OG image data as .body/.meta files (internal format) that Cloudflare Workers serves as raw bytes without Content-Type: image/png, so crawlers never see valid images. - Fix: pre-build scripts (scripts/generate-og-images.ts) use ImageResponse from next/og in Node.js to render the same JSX and write real .png files to public/ before next build runs. - Landing: generates public/og-image.png - Guides: generates public/og-image.png + public/og/[slug].png for all 39 posts - Extracted metadata into lib/metadata.ts (landing/guides) so it can be imported in tests without hitting next/font/google. - Added explicit openGraph.images + twitter.images in all layout metadata and per-slug generateMetadata so tags are always present regardless of how Next.js resolves file-convention images. - Vitest tests (apps/landing/__tests__/og-image.test.ts, apps/guides/__tests__/og-image.test.ts) verify: PNG exists, valid PNG signature, correct 1200x630 dimensions, >1KB size, metadata contains /og-image.png, per-slug metadata contains /og/[slug].png. - Root package.json: added test:landing and test:guides commands. Agent-Logs-Url: https://github.com/PackRat-AI/PackRat/sessions/313eb9d8-a587-40c6-b39e-368e98256d3e Co-authored-by: andrew-bierman <94939237+andrew-bierman@users.noreply.github.com> --- apps/guides/__tests__/og-image.test.ts | 111 +++++++++ .../app/guide/[slug]/opengraph-image.tsx | 105 +-------- apps/guides/app/guide/[slug]/page.tsx | 2 + apps/guides/app/layout.tsx | 43 +--- apps/guides/app/opengraph-image.tsx | 95 +------- apps/guides/app/twitter-image.tsx | 72 +----- apps/guides/lib/metadata.ts | 44 ++++ apps/guides/lib/og-image.tsx | 210 ++++++++++++++++++ apps/guides/package.json | 7 +- apps/guides/public/og-image.png | Bin 0 -> 194112 bytes .../public/og/backpacking-food-planning.png | Bin 0 -> 217223 bytes ...ing-packing-smart-for-a-memorable-trip.png | Bin 0 -> 227000 bytes ...y-hiking-destinations-around-the-world.png | Bin 0 -> 216177 bytes ...ils-pack-light-and-explore-hidden-gems.png | Bin 0 -> 225024 bytes ...us-packing-reducing-waste-on-the-trail.png | Bin 0 -> 221035 bytes .../public/og/essential-hiking-gear.png | Bin 0 -> 216235 bytes ...estinations-packing-for-the-unexplored.png | Bin 0 -> 224567 bytes ...king-planning-and-packing-for-all-ages.png | Bin 0 -> 222493 bytes .../public/og/family-friendly-hiking.png | Bin 0 -> 211943 bytes ...ily-hiking-hacks-packing-tips-for-kids.png | Bin 0 -> 217525 bytes ...cking-essentials-for-your-furry-friend.png | Bin 0 -> 218973 bytes apps/guides/public/og/leave-no-trace.png | Bin 0 -> 218510 bytes ...of-pack-management-for-multi-day-treks.png | Bin 0 -> 225006 bytes ...affordable-gear-for-hiking-enthusiasts.png | Bin 0 -> 225098 bytes ...ist-hiking-how-to-pack-light-and-smart.png | Bin 0 -> 220804 bytes ...packing-essentials-for-overnight-hikes.png | Bin 0 -> 222289 bytes .../public/og/navigation-techniques.png | Bin 0 -> 221024 bytes apps/guides/public/og/night-hiking-safety.png | Bin 0 -> 210684 bytes ...y-gear-essentials-for-capturing-nature.png | Bin 0 -> 224478 bytes ...o-organize-your-backpack-for-day-hikes.png | Bin 0 -> 220762 bytes ...echnology-into-your-outdoor-adventures.png | Bin 0 -> 225932 bytes ...cking-and-planning-for-high-elevations.png | Bin 0 -> 223694 bytes ...ventures-packing-for-springtime-hiking.png | Bin 0 -> 227928 bytes ...n-your-hiking-gear-from-summer-to-fall.png | Bin 0 -> 225620 bytes ...acking-tips-preparing-for-winter-hikes.png | Bin 0 -> 226311 bytes ...ssential-gear-for-emergency-situations.png | Bin 0 -> 218616 bytes ...-nourishing-your-adventure-responsibly.png | Bin 0 -> 222608 bytes ...d-planning-for-eco-friendly-adventures.png | Bin 0 -> 226386 bytes ...afety-enhancing-your-hiking-experience.png | Bin 0 -> 221392 bytes ...ing-apps-and-gadgets-for-trip-planning.png | Bin 0 -> 222669 bytes ...-apps-and-devices-for-finding-your-way.png | Bin 0 -> 225296 bytes ...ightweight-backpacking-tips-and-tricks.png | Bin 0 -> 226220 bytes ...e-to-urban-hiking-planning-and-packing.png | Bin 0 -> 221651 bytes .../public/og/trail-difficulty-ratings.png | Bin 0 -> 212475 bytes ...ghtweight-packing-strategies-for-speed.png | Bin 0 -> 220966 bytes ...gear-tips-for-unpredictable-conditions.png | Bin 0 -> 221487 bytes .../public/og/weather-safety-hiking.png | Bin 0 -> 220780 bytes ...anagement-tips-for-long-distance-hikes.png | Bin 0 -> 220324 bytes .../guides/public/og/wilderness-first-aid.png | Bin 0 -> 213869 bytes apps/guides/scripts/generate-og-images.ts | 67 ++++++ apps/guides/vitest.config.ts | 18 ++ apps/landing/__tests__/og-image.test.ts | 62 ++++++ apps/landing/app/layout.tsx | 35 +-- apps/landing/app/opengraph-image.tsx | 92 +------- apps/landing/app/twitter-image.tsx | 72 +----- apps/landing/lib/metadata.ts | 36 +++ apps/landing/lib/og-image.tsx | 96 ++++++++ apps/landing/package.json | 9 +- apps/landing/public/og-image.png | Bin 0 -> 137725 bytes apps/landing/scripts/generate-og-images.ts | 44 ++++ apps/landing/vitest.config.ts | 16 ++ package.json | 2 + 62 files changed, 767 insertions(+), 471 deletions(-) create mode 100644 apps/guides/__tests__/og-image.test.ts create mode 100644 apps/guides/lib/metadata.ts create mode 100644 apps/guides/lib/og-image.tsx create mode 100644 apps/guides/public/og-image.png create mode 100644 apps/guides/public/og/backpacking-food-planning.png create mode 100644 apps/guides/public/og/budget-friendly-family-camping-packing-smart-for-a-memorable-trip.png create mode 100644 apps/guides/public/og/budget-friendly-hiking-destinations-around-the-world.png create mode 100644 apps/guides/public/og/discovering-secret-trails-pack-light-and-explore-hidden-gems.png create mode 100644 apps/guides/public/og/eco-conscious-packing-reducing-waste-on-the-trail.png create mode 100644 apps/guides/public/og/essential-hiking-gear.png create mode 100644 apps/guides/public/og/exploring-remote-destinations-packing-for-the-unexplored.png create mode 100644 apps/guides/public/og/family-friendly-hiking-planning-and-packing-for-all-ages.png create mode 100644 apps/guides/public/og/family-friendly-hiking.png create mode 100644 apps/guides/public/og/family-hiking-hacks-packing-tips-for-kids.png create mode 100644 apps/guides/public/og/hiking-with-pets-packing-essentials-for-your-furry-friend.png create mode 100644 apps/guides/public/og/leave-no-trace.png create mode 100644 apps/guides/public/og/mastering-the-art-of-pack-management-for-multi-day-treks.png create mode 100644 apps/guides/public/og/maximizing-your-budget-affordable-gear-for-hiking-enthusiasts.png create mode 100644 apps/guides/public/og/minimalist-hiking-how-to-pack-light-and-smart.png create mode 100644 apps/guides/public/og/navigating-the-night-packing-essentials-for-overnight-hikes.png create mode 100644 apps/guides/public/og/navigation-techniques.png create mode 100644 apps/guides/public/og/night-hiking-safety.png create mode 100644 apps/guides/public/og/packing-for-photography-gear-essentials-for-capturing-nature.png create mode 100644 apps/guides/public/og/packing-for-success-how-to-organize-your-backpack-for-day-hikes.png create mode 100644 apps/guides/public/og/plan-your-perfect-hike-integrating-technology-into-your-outdoor-adventures.png create mode 100644 apps/guides/public/og/preparing-for-altitude-packing-and-planning-for-high-elevations.png create mode 100644 apps/guides/public/og/seasonal-adventures-packing-for-springtime-hiking.png create mode 100644 apps/guides/public/og/seasonal-gear-how-to-transition-your-hiking-gear-from-summer-to-fall.png create mode 100644 apps/guides/public/og/seasonal-packing-tips-preparing-for-winter-hikes.png create mode 100644 apps/guides/public/og/survival-packing-essential-gear-for-emergency-situations.png create mode 100644 apps/guides/public/og/sustainable-hiking-foods-nourishing-your-adventure-responsibly.png create mode 100644 apps/guides/public/og/sustainable-hiking-packing-and-planning-for-eco-friendly-adventures.png create mode 100644 apps/guides/public/og/tech-gadgets-for-safety-enhancing-your-hiking-experience.png create mode 100644 apps/guides/public/og/tech-savvy-hiking-apps-and-gadgets-for-trip-planning.png create mode 100644 apps/guides/public/og/tech-tools-for-navigation-apps-and-devices-for-finding-your-way.png create mode 100644 apps/guides/public/og/the-ultimate-guide-to-lightweight-backpacking-tips-and-tricks.png create mode 100644 apps/guides/public/og/the-ultimate-guide-to-urban-hiking-planning-and-packing.png create mode 100644 apps/guides/public/og/trail-difficulty-ratings.png create mode 100644 apps/guides/public/og/trail-running-lightweight-packing-strategies-for-speed.png create mode 100644 apps/guides/public/og/weather-proof-packing-gear-tips-for-unpredictable-conditions.png create mode 100644 apps/guides/public/og/weather-safety-hiking.png create mode 100644 apps/guides/public/og/weight-management-tips-for-long-distance-hikes.png create mode 100644 apps/guides/public/og/wilderness-first-aid.png create mode 100644 apps/guides/scripts/generate-og-images.ts create mode 100644 apps/guides/vitest.config.ts create mode 100644 apps/landing/__tests__/og-image.test.ts create mode 100644 apps/landing/lib/metadata.ts create mode 100644 apps/landing/lib/og-image.tsx create mode 100644 apps/landing/public/og-image.png create mode 100644 apps/landing/scripts/generate-og-images.ts create mode 100644 apps/landing/vitest.config.ts diff --git a/apps/guides/__tests__/og-image.test.ts b/apps/guides/__tests__/og-image.test.ts new file mode 100644 index 0000000000..266df9ff13 --- /dev/null +++ b/apps/guides/__tests__/og-image.test.ts @@ -0,0 +1,111 @@ +import { execSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { beforeAll, describe, expect, it } from 'vitest'; +import { getAllPosts } from '../lib/mdx-static'; +import { guidesMetadata } from '../lib/metadata'; + +const APP_DIR = path.resolve(__dirname, '..'); +const PUBLIC_DIR = path.join(APP_DIR, 'public'); +const OG_DIR = path.join(PUBLIC_DIR, 'og'); +const ROOT_OG_PATH = path.join(PUBLIC_DIR, 'og-image.png'); + +const PNG_SIGNATURE = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + +/** Read a uint32 big-endian from a buffer at offset. */ +function readUint32BE(buf: Buffer, offset: number): number { + return (buf[offset] << 24) | (buf[offset + 1] << 16) | (buf[offset + 2] << 8) | buf[offset + 3]; +} + +function assertValidPng(filePath: string): void { + const buf = fs.readFileSync(filePath); + expect(buf.subarray(0, 8), `${path.basename(filePath)} PNG signature`).toEqual(PNG_SIGNATURE); + const width = readUint32BE(buf, 16); + const height = readUint32BE(buf, 20); + expect(width, `${path.basename(filePath)} width`).toBe(1200); + expect(height, `${path.basename(filePath)} height`).toBe(630); + expect(buf.length, `${path.basename(filePath)} size`).toBeGreaterThan(1024); +} + +describe('guides OG image generation', () => { + beforeAll(() => { + execSync('bun run scripts/generate-og-images.ts', { + cwd: APP_DIR, + stdio: 'inherit', + }); + }); + + it('generates public/og-image.png', () => { + expect(fs.existsSync(ROOT_OG_PATH)).toBe(true); + }); + + it('root og-image.png is a valid 1200×630 PNG', () => { + assertValidPng(ROOT_OG_PATH); + }); + + it('generates public/og/ directory', () => { + expect(fs.existsSync(OG_DIR)).toBe(true); + }); + + it('generates a per-post PNG for every post', () => { + const posts = getAllPosts(); + expect(posts.length).toBeGreaterThan(0); + + for (const post of posts) { + const filePath = path.join(OG_DIR, `${post.slug}.png`); + expect(fs.existsSync(filePath), `missing: og/${post.slug}.png`).toBe(true); + } + }); + + it('every per-post PNG is a valid 1200×630 PNG', () => { + const posts = getAllPosts(); + for (const post of posts) { + assertValidPng(path.join(OG_DIR, `${post.slug}.png`)); + } + }); +}); + +describe('guides layout metadata', () => { + it('includes openGraph.images pointing to /og-image.png', () => { + const images = (guidesMetadata.openGraph as { images?: unknown })?.images; + expect(images).toBeDefined(); + const first = Array.isArray(images) ? images[0] : images; + const url = typeof first === 'string' ? first : (first as { url: string })?.url; + expect(url).toBe('/og-image.png'); + }); + + it('includes twitter.images pointing to /og-image.png', () => { + const images = (guidesMetadata.twitter as { images?: unknown })?.images; + expect(images).toBeDefined(); + const first = Array.isArray(images) ? images[0] : images; + expect(first).toBe('/og-image.png'); + }); +}); + +describe('guides per-slug page metadata', () => { + it('generateMetadata sets openGraph.images to /og/[slug].png', async () => { + // Dynamically import to avoid top-level JSX issues in test runner + const { generateMetadata } = await import('../app/guide/[slug]/page'); + const posts = getAllPosts(); + const post = posts[0]; + + const meta = await generateMetadata({ params: Promise.resolve({ slug: post.slug }) }); + const images = (meta.openGraph as { images?: unknown })?.images; + expect(images).toBeDefined(); + const first = Array.isArray(images) ? images[0] : images; + const url = typeof first === 'string' ? first : (first as { url: string })?.url; + expect(url).toBe(`/og/${post.slug}.png`); + }); + + it('generateMetadata sets twitter.images to /og/[slug].png', async () => { + const { generateMetadata } = await import('../app/guide/[slug]/page'); + const posts = getAllPosts(); + const post = posts[0]; + + const meta = await generateMetadata({ params: Promise.resolve({ slug: post.slug }) }); + const images = (meta.twitter as { images?: unknown })?.images; + expect(images).toBeDefined(); + const first = Array.isArray(images) ? images[0] : images; + expect(first).toBe(`/og/${post.slug}.png`); + }); +}); diff --git a/apps/guides/app/guide/[slug]/opengraph-image.tsx b/apps/guides/app/guide/[slug]/opengraph-image.tsx index 8c19a53c2b..08c0e696de 100644 --- a/apps/guides/app/guide/[slug]/opengraph-image.tsx +++ b/apps/guides/app/guide/[slug]/opengraph-image.tsx @@ -1,9 +1,14 @@ import { getAllPosts, getPostBySlug } from 'guides-app/lib/mdx-static'; +import { + getPostOgImageElement, + OG_IMAGE_CONTENT_TYPE, + OG_IMAGE_SIZE, +} from 'guides-app/lib/og-image'; import { ImageResponse } from 'next/og'; export const dynamic = 'force-static'; -export const size = { width: 1200, height: 630 }; -export const contentType = 'image/png'; +export const size = OG_IMAGE_SIZE; +export const contentType = OG_IMAGE_CONTENT_TYPE; export async function generateStaticParams() { return getAllPosts().map((post) => ({ slug: post.slug })); @@ -13,98 +18,12 @@ export default async function Image({ params }: { params: Promise<{ slug: string const { slug } = await params; const post = getPostBySlug(slug); - const title = post?.title ?? 'PackRat Guides'; - const description = post?.description ?? 'Expert hiking and outdoor guides'; - const categories = post?.categories ?? []; - return new ImageResponse( -
gI`NCjeaiQ-CVtO-!6^EdmA@_FtJID!xI*ogL|21EC4 %>=8~pEwHgviUe;@sLkPR&a07d4E7}N5$IDm1&?Ve~ zGa_-Ci#!vdx%I?%2E+Z1h;YeZ)Wt0`*ez!QcU(qR0J`egoVqQ2+Rfr}2x&(n7#cW? zG%@wFIq&T`9T*w!3tvu6uJ`S@#?@)$b-*=|*+8_lD6TVCtEz?_y)rLyrY~AEw#r2s zQ>CWCps=Dg#rR0NWa^6h%8ec)o&a~Ou9Sw;c?Dn0EAzK6wAxsDRCJxUJkk7$JB|D5 zctVMxYt?fu>w)>je+igXcUQ)OqBHMm=%sa8LOsmiK!Xe&I;OgU#oRtf8TK8gJ*1%U z^ep%3&3jq&Qe;2cEwj>>%CcT} C;3(7?%uk*9_L6{U& zM=!(O*?lCI92raz*Cw<-zRrf^zO6m>)@4a(c;>5m(k1 9WZ%j2fznk3EA0 |MGBrEOpMIxYK-R&O6Ya{3zAOHm*i(+8Wy!skF1 zTHLqyu8b*p6Q7VKGdC4pAq0%gXDxNj1~X2!mfZqA)vA=W`;)>F>vSXLzZs}0B-m{n z1HAnV(7J#}|3(BzYOA4%8R)ymnF2Dw`c4(0;)!%pzCxA{eJpsS^36CrSBx;>2SWmG z+Y2Y!$8486xkO0p2R9AeZ;|tA-Ls{sh%>rAKtWpNd;(@$3&{7T5SMMvma^nP^S8;e zml{7?zNinL;(RP?c+Itq5B9e1 za&K=Ggo?Ur`|l1&J!PK%hIJJ8m}C6bkct99Ae`Z=!$hV8kn4q4w$h?;X2!QfvDXCa z{OLZiu7T3j7?e;!IDDG#7VF6XkclZQ9<1SVpgrlLkp-*rg?+*;x7p}u#?@(#2QJz~ zyi8tIx$#sT%M{OGfoe3)Fluoqjm=PgZo6{KLf@M`p!-^tze`~lEBYLJe|)`QkmEZA zb0v)c$BN8EOj*N23pveT^AYKG49}THCD@1A5mEd#7BTN$-m)%#gT9tq!3%0Ayypi6 zmn6bh$FDDKVcdbsx1agkiSPV0S1@zoGzSw}{^}j03vY2uVbV9ZhBZ_l>MSmF*?%Oi zVpq{Ykqc}g7jKpANe T>D~B!Y#ai>~cD zC!n#O1k91-7;yb|hO@MXr@2nO(2+R9oCe*#EthX7@2XyhO(KDcn!+$Op(CFwc45!V zJW_YQy&pppqZzrIOGW8?(X?l(-|(YrTLN}3S8NYmtR9M27`Z>Q_qwvGIy(=?M1~fj z`b4i`E#Z@wYh7;AL4$V2>og}!&g|SZ+FQ1V>HTP3+9^0e#E`Q!u$mp+ixLYes|+($ z_3vB(Uzy-O|KWZw3;A1$;>6VtM@@y@L{ zUkpJR|25lb=<;xTy>-Yz{Tf9&@7~d}O^4MVUqb6P%VKZ- slx$VHIkqhmc< z?`!YB;gb|D==^%W{ 7t5+86NxugYt;9cX(W0%eB;PY}&K(02=m6>E|uC+#L}5Clvl=WY=|2X{Nf=2pP z)_$=n+@9(qF}CR%e_v~;Ur3DAlfsPG#Lt=zmA;r8l00@PG)~CHlk`xb)|8Byo7K$U zG?sEVvb$=caNb0A&dOz&XBhCj =TpznZ1q|`&hx~7iXnAjM91&zN^$KyLEGyuQLi%=T1##_YN@BZ zotAb!b!p0HM$SU?;z+5OH)FGg@yE*mg7wz8k#Pjdr~Y2-O^1K50mLB8;KI3QlifC| z+n?8-;XW {=eJI&tLUu1s1IAZI=MeKyq zMVne8J;yq)Iu=LIUP@Tz-)bEs8HtM#j4%S?+P0$b1{5=TRP90LOkrw>Y7b2Lr$}bB z02ZOh4Jkv8(d}~Bn|TJm?Jpk|l(B9a3G%__NN~|e9sjvAnomHErTx=lj4OhY!fUK9 zj$#up0>UBM!l=smlYNmUJb6W4#^Wl>O6~L2Rc*)e+-lT}Qs$y)rI@Zut1TV|{7f77 zK|4}<5KvmfGB((f-XEq8R+MiI)MrAkA*Zgz6K01P!9rEnZ`bRahE~B|Fa-vH!rEuB zrUOyDikn91q)zu3oAjGDlvpE`fZ|J^PZ2v$==2u( Q#4iD*n;8t(EBs5+!szU^vu0CG56GdE~Gmi8`0Bw=(8&qR}&A+)mhkjCfc#~ zE2KL>GSVF~5!&mfX~AmQb1?Zn{~j_g95JcM+~G}=DSPpD(?T& zqXvxqJj*_`8w(}3Ozn{>*mY7$PfX$R@>JOtHT$h8Gm 7C#Q=S2xTkt2 ^M6#L)SX5XxZJsD(FBk{Z_iZx>xzINw8YOB8xKqecVb)VE1 z6|8jFo>6>))9~={Ry8@!E4~SO 2g8)7Lun6A1{4&Su^(jberh!0fvS}JUZhrm9He3 z*feu 6Ie`;+ z{6_rM4W{)lwUWy*CnU;!y3vvifdQqho+b*>oLG!I#{4{aF3z=#DJSu%nti0dSI4^q zpD*31eosJY`(nYkl(}SfXAA^&Oz5n`67kf4_37&!=L6$x%Ti1i`8i0FEveq4C;i_8 zMaHn0E~gcCuUL*p;{P@YYS8iBL;G)PBHf4w_E|pAa0Q`^z4VB-msS3v?}8w#al~Qo zKAcfYqWt81Z&GekE9v)~<&+)0yXw%Ut947!frm_)p_GgN~2)kLN!d zpU*jS4-Dn&F*0e2PfhmE2c;22r?QL~gDn@L%X@ZW=PKWB< z7B=81)wU0n8!v_-K4~3A9uGEh?i6h4VUWgde>p$Om>JSApYPEE6uI}nQRa}cyW)SE z{j7M&K0Esf@yLct%RF0cxc6>Nj*83i_3FExARlJ#9j((Kz|suVpY)gm8+ILXZ}+Fu zl|4jvMqt}S_l0RT^t~(F5Bi@!HS+k5UgW{kn%weiLZxO#F}rlgjAMUwn+l|$U{}(4 z_UDJhPK|!6_Hv)Q<}L4hTldAI3mT_OK40^$O`a7Ynr?!29|JylpXNb2sWs%)Yhk@D z+PK4>Z7rIl*`2jlOA|wxgO7)rCYlu&XUO0Isu!xz f%xe4(4 z=00I{%-WYdQ}geL3+;$_n@9}>#;_2ULp%p)T5l~s?7XNi+ 2Zf%ZlqD^1&dBOl~O^F0K2C5`PR54yv-&APkvy&dWv^TUfWeq0+hQ4ck zpur&8dZi^%ZZuwBcWZGm+TSw9U;5+^1nW`Mp8Y$VkoBswi4pRt2iI>W_#hAJ9u&3#5Izv-XI2QETcVU|~>qS~Ak^oSx z6`|+jPrh`W0a^moVE{EOXf%cPy94|x4RO=`8cE(lI^qTGZfwU4^4M(q$E?UAn)>FD zRKFcUs}fyZQY;>^Edk|TXZ=myGoxSYBRvIQ(w{_tUu}*#h0!WpQ}@bWi^0|2VowM? zIMT?f;S%%(_bRu)(TELQ$)O0;3b@Qv%rdmFXO7SU74>kVgGeR!IfvnUxrgON8$oHG zrIW1MM|~XQ9JRb;B@;;y+Vs9 mAqiy9nZ zzvmgOdjGaE no!-7D<7vGJ>qBp45eIMclm`uJ8n^opGSh1I4= zp)Y*>9J$0buVK?j%_}7QJmSnVRKU(Ne13XP$QG^81yI`L7Kz(IG%;IAuYyo70`7pq z^mZ_1>W${I*Ljn2&7SIdoqFiE(A}8Jct_iH+=jhx8s}=k`sPG1%=t5`SR%#**|N6h z!r|*uxEUIU{#GLKT}TE_L&&7mr? iLa=5U9EK(AU2XLRyFZ z?N8lz?;=f%7|V(_7mP5M>n*TdTliYP&@2EX72ECz6jXSOv{XDVxxtz-s=_B-IC0)# zcL`p-On?^WE2GL5snryk^&AW>HQaXcjvPJIeRe0iKW5=-*|F~YjL$PZj%O>+SK?y& z@l*QIM~smM32qBo4x8ptU){9{n#1K^?45X*u320joxEovL(0z|?68eHHFb?cq05Z1 zg0!`)zSsPjD)tQV^fBm4jAdN;^Ag(VNW$Tu<&+QL5tP0j1g5lUmFC1ipL|h7LZQnx z+M-2srP~?8FxGg%qqON`m*MR@_p_ioI$1BsJn2Fyg@7E@m9ZVL$~f;&NO!EcVJ=Pa z)0yjp9OYwIJK9|^uNsD4o`O3%NEPw6Ag_!gpA0L%Et1v 0-9x `z7igvyhRPVAwT5yhIn@E~2Kb1s`^0l;<=kG=g6z>d z$4KC8t)+Q%$tOYr<2@jE uI_+&i}CHwGljjO<|LdwciIRdeEfHl}5D%K8v=; zv`a5;9u2l*Owp@U!d`lK%5nRL5_L>5vCA16CH!6Ebw$kCr3ddz$kE! Knw=Rzz(? sdm;3lo52oMRT`7HW*S5EyWX-E^2$epd@uMCdU# z;IF(T+lv5*wKtO!Qi+#4c{!=~Iy<_~5V^=dvaXUt&VogQ$3o*c)^t|NwXX@iWaIT+ z3lFwTY=lQW;Dl{~YiFC^ig^;(3oy8h(J4t4`gl!$-|XHQ;~ha$`yaSXSfw`YVntv7 z+?-RcHW~3@q;^Opj;jt&^YV(rRA#i5#{z&jcjZ0KxGCrNf;UZX7ZacnfHMFZ(PLfK zomyDNjGOnQ5)aXhpu`NlkS)pw*wGzA`@IFfvY`VU7=S;0 dv}TTz-;NQnAtn6Sh7Z?)6=dzC3Q93MhNk&JI14T zmOImLJsjL}a fF)~?0R6ABuoztG*|vN@RN&1LX(6LY%|~*Ei^In-1tEV2~~AeKp$*F(|TMR$NJLR zV DXW2n*x^Z!hoX=jdvGEGsz97lO-Bo_Cm~OrcFSuZg z-z<&oxYjz-KD}JKe8ia$v;Q&Etvaav(fhvD`{|*8ks1R%THkz!*$1C Guii32+UI&)I4th^L48S4VTUv7 z!}&&)jEs_nUJaKEx9OyIHn<)DNXOj^#KTQ4J^8?(gMNv#PTr?rX>1mM)5HC_@O7HM z)o=BZ`&zKJKG -{hQvP#1_qCq1I4P}rPhk=#eA0tykO`w2hQWul`fAQPie{B z3#o%G`l189TUb2L-Jm5qj((7zzk708811zsmk)|r!EEFrudeR1(4F&}`0kBu1|}Qy z3+U3>?69N`P>nAWKnDq15iz}dF9C|pH~rQNHk7Q*J~bKGSeUVI;;Ra;8|of6?6?>5 z;aUbzs)vsiI()TXtM`0)5itD#R AMfD19P`$)L2(!i1*Txw-YsX+jD-M$FrVFY z9JljzAU=n(=?v-XJ|jv4t#-D(en?MU9wAp3n%2D-c=e$;gtR1tC?1cvtLOxfqj*QH zo|54PwR;RuVn`dj50>5Mo_OP>-RGC;wQ`BY+nqc)AeXiZ<%Go*lay2aoRAgc2x2rs z&QZ+5-6~{ej5i1h%*3SJIz!js?e{fLlco4=!;mQgUgoqIBavEgK_e@b%-MB+i?gpQ zuXryLos=Wz)889PNwP3i6*}@>lmWU0P~3-g#Z8b=& zDLvVO*;S;7hwG4UN4 Z2e`k)%AvD zVD1*l3xLZ#HWY>_31vTTK5q)p4G(x%VyMyyL3)6%^8h)2( @-FJsIm2O|t zL0UlRB?zb}(yR0)Vx=fm1%fE3bOGrQdKFZZ-cdn1f^-NSloAjDsi6o#I)qRXLcRme z+?n4k-cjeyGv7Zx4}YMZbN0L6z1LoQEdyb1aegj$m2RIjEKA*LtvJw#f;>Csyh}3B zELW48?%ApK2Z4&%6qq5sGM(G?F4{5@PYLrwsoA1JNAlp~f$9RayHes?C9#=PQ1VD! z0I$a+<=o*)h -K9%ObKs z V{hz4ah5mpbN@!~W$wb}!Gi2z00`T3ETL7MQG*3OQ8ZMzxG;MC z2)GL9hRl>exn6_OyKX?OB^uCp8bb*b1swj+O7fM6!ZO604m-& WI6Z8B3}6E89I9ao(Jo z4>S&JOi>jP3Sa|Zbovg(hmYecy3S>L#_(KD#J;|yeW >5$BFi zdeDh)efl8a4otLM0bD7+JT>|45&qOr$GYo*>^2vyc! ekjP!;X7_(~> (Cj4k%3oDmP6 zz(DTHO|aA82I4-Hg|*deo!Jd)wmIpO%cue>?aH*ufd5J#v!b5DiUFj9^X5lUTj0z0 zL&_dXI~g|(|9ehZYkI?Sm-YfM$rG)gx^n%eN*hTDLj8=#Gd^J&CjdHG+6h5`PxpZ( z*Dv)ALGGfw1?-`pk%$LKSMd@|tD)CLZxi6urdOfnjjR+Hc~cCb>hPvFQQc?z0mhfN z*{s+6tr`MP4&LB_%ArH P zJxMIk3iVxv%1$c)jaQG`WtmNDUBxVpTIrNTL7kmWT<2EjhYp`e{$?c*rAMUts)WaI z8Ou9>A5_StYRC1WoIdCiJf(`_In~OObLHf &tbonqBRcPzi3FxbNwM*vHwuH_2NwwQdCpufSqw9UJZp^@la|CTR}@#G zml284v11Xeso0php&mQAnr#e17bf#qW1Fg3!fUVp4QM$WzqgCDZ!jnn&oXs7ox^=s zD1D#9yV1h_gN G3a*7JWNeaF8s`4XZB&AhWOLDa5u`KIXAdiwRH)%U#@{ZSj`rP zURhOjzH-F7K;H$ZX`=#5_!674?4ojLNY8c%!AOx#piS4FQPc!)+*@m02GR`nHdpD3 zp!Y^1%^`Oz_n0vQ4*(#@-*WN-4|Hz%bnJc+jxzrkw0{}gBR4eP{-6eX^4MG4jG|WX zaox?F2?`vCr2y<*Qsq?Js~v63tbC5P{W_E0wmSOpCAu>@CspAvfGNbL(3X!llYuch zlul }_wmk66Nz4ds;2-HHD!IR z9+YdVdd0vfW@Mf=>+z$MYNnLxx2rDIDFFF}ss?qvbn%2}J)5cuYoH;6#TccJ$KW7K z-SGaaj5~Ei>YQu2-su|m&%#=9#^c^XyFqZ)mGlFe_(tGQgjhocby3xo`#%+8r)oU= z&})VlXJ^4)uD7RbmT0a6^8s5B=YW5~@&05DBSNNTbqUP1NH-cR_q-Z_dO+?|1YWbf zEBSdGfqQq^4LL}6e<|$feezC;c0zqeZ~#tuD_`e%G!rD*Peb7Y(oC>+S6_UqFE-=8 z+9ab_;5K0l-t%tuGNs%dCZNnquK|WT)1*7REHqHu8xV|EMPF`}O%=B_W!0{~nk84L zdh$FlcaxdzbXkc)PPN3{1E$dMsbcmoHUVmLLSmHs6qM|9*ke+jW60HPQiMGbgIMxT z!Qh1DD9EKX8pw+0UCaV+O0EtuHpDjzx+qu!O)-Co^`t}u+Z=~G05oOcKbEiA9d}Ak zHKKfU@>qsk`I$M(DH Aq36K!^HqCQIE4>=1BCCY6~J_#* DzGv7?wI-Y2L~%u=O}VkmtWlV_cDo{^bE_Y3j?KKB zjo1Q1hsYG`*Wu>pO}PhLfk{P@u@`32m9XZ-IYkDD&SOT^{ZA@E$OL>+L)UHF+0}a^ z>FbrixH@5o3r5Gt@~N-#T8Mgst`IO8wWEGf?>nwpF(FvkYVCibo=3>|tdh$@#s`4e zN`|oK+1Tw=xU1o~{V~>DV(%`IfNT~}wA+>q-{u5X6IR2#t&Tb@7=XluoM>yw3_JS@ z4;5Fj1Q{?q@cNbdG(=_tRp--ixz$VFcrC7 {tV}~JME?50bR=;OBd165+*vmJ+$^BVx@WEvdop}P2w_UEngR+lJ zfgSQR90lJUD&lZps!1_9Dl9uInGbRrR8EzY-1@kpZ$_qKQl5mP)umY?2v>^YX7CeK zef%7c3P;*=5DWM%-@3lp%bM*u=XO^Sl Bmlw@~!{DX3iLa;3$@Y{ed23|3oG z8_&8j4#R-27Q^1I%Ie0<+k{dy-z+6$N^W}-#SsFrFph8nvcVf TpU_wQ* zw_ygbrruMV_m3Pxc7FmZ &kp@Gp&qPNE*mO2-4 z<(uP}_@-KrqP|y F2KO7&JS4XbCbhy*k3MSy{Z{65OG4ncXjK1! zV))B94f#M1Id$cy(jM&>-!WmF9^FOdIvD{rczyx3aVCK(S%ek0p$HOl8)OFC+< z6&R8nzH}YR7!n;iS6m}ZB;bza+F~bE+ou`Mc2emZaJ>OP_>#5PU*Y1kL&zj`Rm>5d zpIcolfmG{BhA?C&J2X7XC%AXsl#oeu>v5>{Np-uXk*!Z9bWHM*PXaM>r*AhAD+ab* zZC$h@lXtiKsOThg1nJpg|JY*lqs^KN`esB`I=oueyrpZ~0|w$v^?;#h<)!Wt3nV>k z>3nxX*X2Qrp8#g`wQ(edEk}s#m3lofxr*JL#5aB6)Lto!xcH8I7lnY-cfs_{^16ZQ zx^1jYv7qF(P6a7(pjMC6k!E;m>^WvkQRp3%O00BD&SmoBdn=0MXb#8_N}JTM?0LFT znn+}0mY0irI&+3Y&z5~_V0m2M+Kg(d!dvSG?`*ayU}KC>gCZF;)}_wHkorJ_DNuiZ z(JDaSWqLt6?n!#NdiS``X%eG_<4Y>3&XT*G0+{=dx+e_#q(%zik8IzXy!;1JBQSZ9 zR?9D>Vgx3U5 #s2`uPD @&TzbN&)x!#JUK;XO7J|zL8R$d($62&~W}1wNiA{0P@nLw(RbOia~lzUT(g$ zQ5M>>m)yS(rEd53blZ?f&?kN&U8I&TEpDv3$58{R 8Fyy 4i^W1|I*g44K@!= zdlCT^FU=2b_#BKz-%C^lS}D$Ob qt}Hp1bjM;4GPf+rg6pp)~m9g@rE( zs95i&_SGD|uZaB7-*K*~P2%2ti?IT|XYtDE-)u1ejFq74rp))KZ~GHiiG=n343>LY zjc;^r2QG!L+3eGHn3J#i(sa;Vre%0-=~Zd4|8D}nKKzaCw-WPz9*OTK=5PrPR-(Mj z7B6`Yox~s7;<&0X=?W|exKAqKrj>ME%z!@w66}-IxWMtQH#~?L@i@GK(U=z?3xUI% zoqgd^T71A6;Smj) tsf+i0kE*xBd5ud0rwoYNq2n2 z{qt2CiN9P>_m}sUxVlooSS{VNDZx?yoA^I#8d3ZMOFX}ZzsMU`XiEs&53PcH#Z!O@ zeRBEXSr3U{lD_sdz-)szwf*BhjuN<`dxc(1{`&6@wv(%qz)m(hso2Kvv!H8K>B9M| zCCYxmz}0y2RR58$S2CS^z`c}Tcpz1#z)<8HOR6MY4I+>JWl8n7e5WtPbg0O%_wmm} z{7_@Ul>yVXJY0mN&U0;V@X&s^OGfR^I5-aCe3aEcyKNgr?bAY@u$ <@>)9v^mvK=_G>TjN|Fdtu z%?zRaaV$WcEiW(rGjX0pa{7;m0DPUd?(ecSY~3B#jPqMrb7=u?`E1r&8*SBo2JWWJ z-+fHwV2!q?QB^ue)euihPl(OEJ1ASATj#4Ik4aJ;a}CL#@_Tw!f$(dR``zwJCT{99 z^jlrmw># v4 Z zaUCaNtGB+zb^HbaZ@-HB0J+ok+1?bGqW<)AS1Ig$N!@G6D_ wHxFJPMkI3fK!H4mo!jryPW{oQ(x*Z;^Cz&@kE%lJjZ`-BTFh!cOp zd*A_guP12jXq0r9q?!$Qw_fXF!*4{zu}(?gYWKVFWcf8yybX8 +@;bEf&uJuAhQJoJWSr+7-41*3(6 z^P?=t=1PQ%_jp>1kK&rC-d!{jCT|ADE*v@NP)oSSz_S0Fh~f1l9Ps;A#`rc)bC5Ac z>&)4KDeLhMA*dgv5bcXPoR#M}DD1v6^}fI}D`P%uA0wmpx;^ygWs2T4)sAoNBK;R0 zz`+T*hlnJ|rAJ=-LH6OkLQIJ3*@HgrtAfRc)O~RAPtOKwu21@ZHXAsY9wjk+bSCvj z)*}w8+x?K|{o1h~tZzr}$^TDU*-k0}u5Xog-<}oo(C80b4#Uzyi1N-QX??fG&u`Z| z_Z0ot{`6o+ %j?O(&>+rySW|ovP-jPJJs={nw8B zAT8g!t^lxI8}u&y-5)mm NZ=3$5 z1NlFh@rBeG-ukgc*k8e+7ZodyUp@CV)g>{k(Z2FGzl7SUj;s6(#{J8U%lf(HJoGq~ z-rxM=&bdCh{SyP+edzD&*G+dUK3zZ0bnb6{cDZYm@Bbv!`H$zl&O{`T_e}eTb}0Wc z6vN-m;d9fUar3GnZ`F1JD~r!>{>=+365)v9p9CwvR#rWgbAsfAF(psc{@y7IgjA>h z(S_ju(*sf`hv(nntEbez`ZqttqOK~({-mJhsg|cGihIuRHxKHG7H#QoRh0i_Wp01` zc7SS#ISGYzP!vUmE{|NebMt!@TmIr2TJ=wQ;)g=9q=wHOzE45-FK-7){*-pGr;^3A zo3@C5`umh6|MHrW;9E829~e0PdJBtIUG_l!fADp8|D-F4#TdMt42I~n{>ZBNUkK7o z{z>`ymebIfoM3%U#E&Rd{AE=ZFD4`STVudKKpdE=Q%lef>Ta2P1KToGh3c_>pN#uo z-tv?FStUpB9Ur@qJgTCc@xOV>`t+?v=^ILE|F;cJcNDE!Tp5#SBhJey|32yFUr2vL zs=*-|U#GeUV(%w#Zoks6|75z?9KpBn*gpzB17w)Yj=gbjM;E9bTK~Ju3I5`!1~^`p zKgaR<70F5t2f}*gVF?FBul8@9sT*MR4u4WZydT$H66Rr`q9PI3@6sgyivxRD*p}#L z$h(F{;-{A7UfjDgcQZl=>mlCd|N0?RPf+)79oqQDAm2alijwYIybLIhz199(w-8<7 zY~LiT{?UojFB$BzqewrAVZZ9%x{>(AEb+5ktzY2}7URt=i-gM8{Pj6ZIX@s2_Lr4k zO+NI^KTXxyA1?tQm(vg;5m;LYDSou63_YHILiD>dP5;sk*_FHRo3nqvSx8*#KUs49 zyV*a0`|KBCfQ~eqAHjm5X{ve~?R}y@Y|-_X&&0!7{=~8bD9vX+s6iQrRMfv$x$7@% zrwISNcIqI!RRKak3$4!I`6Dxb>mz?}<`x%k(V>H!a+y2!$K5vma!kbjTMfo{VIup5 znE18B@r3$~v^>6l*bD4GmD{&FFMFV4Ear2|lx;dQjw?x&BXD#%42wYDaX6(*+GMaZ z8O^WTnz!9+W3dCWQ b)4xyRY14`vxUYN;u<^2k1i4OaHnkbJ&sgQv=7&@RCmY zUUT4V(8#g|;|H^}SO3^B;5vW8x;RB dWC@*9!<%L~A1F z&fhPHuNgZx``Kq?Odb=<*U8OQ*FK8xNfph74lTE~1W(Zqmdq$gnl>ANBOJt5>z_1j z7@OW^stHvcC~K$@-tEb&k-_ ~ z`S{h=YpZdWirmisz9oO8;SIe5Y@LRR=E5*i^4A}__90h4)sq`Wo@xBdX>war79*Km z1R{#&Rq_Vs{OeLKpdQO8s@?mKy 2xW`tm4?gqgn2~A)v{eg^AVHY4X zz6qNqHLV@EY2RO{GjlX4;Ey>;waV1EFLkpgevz}iO^aWQ61m0FzFSKk&6bfrMx#Dh z^u4v+2hmqFMQ>c}DgL-u*g;?ZvO}a^7B^y$*tgn$j_w5g?-@lR(JrpVGHc1$M0UGs zILA)0o%uQc6_o=u{K^=K{Vl!Ra=HiLmxN3z+ymmNWfpCgLNt)>{73(1FOTgr!KHgW z7ryRo^_uVSStg(djXM@sV}#A0oww=$#7l)wQWsr+#rkyx9lAA9z$*r tWO6{}|e5f(@EKO!FlQ zN*RvS>?R}48AN{bMGY%3`!DN_zfwQG;$8dqMiV6?VT_Fc@AnoR++&3L!P-}TPyJ83 zHJ)B56?}O}iW~4op#wzA_ji5VF%(4tPrCkjr?+&KP~Xq@{4X!mU(w#{9T654&jEQ` zR(j+P@T(_@|7FYFh6zy6IhP6ou3AwG&D3%Yw7v?DaQ)%mU6tRIf%FMpz3-2dAM@M_ zsMU#o2$lTZt1C47clM>f+YJ5JS7&~-nd=Dw6=w^{_jpPG{nt}9+9DoRMtYE0{PNLZ zr)gvYdcfr@4>Y=&1LWzhUpRhdgBz-&2JkWcd!&WJ&jM|Hv%Zbz7&zolYnp zKl(Pe98>@-p}i-tg0utf4W;B>ASVsR+ADyhE0)W%xiaQOuNKfVBpI1-A&9-WHg3?_ zad~rXdt5LJ791#)pNGLeaY8uq9j&gMK~`zjlGk!xd$lAQAm474pEZ=4EVr^#>-HHQ zWqzClaKOw-oqm+!p9*`M=0lC}K-Ih@&Lh`;t^!{ZcPJnk<8(wSfTlfD>nTK#ZJD;# zqAL^0U3p$*=K>u8CFY_T+C*5IcM7oWgjjXi@(`G?ROGGa5yq&Kl6dvFqPK#St__)? z&^eAb?2;`fYW9-85EB Oap}=DIo+6N1mP)7T~fQ2u0yE~Rgo1YqH_hsmWoTK zT$cyLqV|wSdhlJN4l96Xm}v-(4DNq#3AJ~G1Wd3AV4PKguCuXq$#sN8)wC%o!AS)DvTtC#PN8AUmTG?> DPE>udMlvtd9;*8%kH%luyZ=Ga1!l4bND3eZPCU5^lBs8N zVxa%d;_xEis1!zZ%Ft-NS9&V2K4I3E9DkeE3vc9_jy oq1m6Z4q!zid3d#G%<->&qHP5?RVz$x#f-R zNJ0{&@NP`HQ6(mpFIyK>tQlC0zdoHeD6l?!IG2esXVzz4wG%d+h&+R< zSy)Xn2@hlOY$7s)qED*I4V#mbXmT^y3d*C_`P-*hyhG#yg_hv;!*qlLRyvcUsdNyX zcBf$vlW^w4R#T+IM^?{(%<5OU7R^`j(!1{#kTtd%0sL~e>`2`4-rh5k`wpW#A_#JK zCc(=0YqK)z&_fiGCML;IRHQOg@SCB?Y44KlvA*2ZJ8L`A6G^u9{Avq@Y4K@2^N(xG zMWf4nbo7FI5N%T^gT&*pLBfyogK454ik$X#3YM9S(6d x|t*=IGxN`_;>>l!Whw(+=zJyODfVL+UpL)6PdzHJ2Z8FjKT zS5JD(c!{s}e5ya)Qv0B7FeRD~HsS`}*wJqq=Nw-@E`Oa?{jT$>$&G1`>r}ic{pGj; zjzd1ol*eetJ#ycdHz>xt9QC}pI&*r>Wh=mFFO)T|0d5WGGMhMp#@}7`n0dvrBOe9> z{uu<|OeVYL#-gf7zVh~Yd|;vFR3(kkUZ!bW2@H?o517g(D&M)LJt>obla!x=`F<&c zB4W1f($*3^H)MJpi$5X#8)GZUuVn8U&+Qobp=7XcM(8RO5J|gs(bUB_degS)$D$>? z1Dc62>HG3g9X_|}TpP5s*H&vc Oz;}$@zm-7V;FzMI3vO z-UyOp6rdq2!F&^aI+LcT-Etr$vApJFwh?V=Uksj_H|5?D)7!LTR^j{;lW9H3Qbr~5 z({{^yh%D|67Zs$~7e@Bd?zTXx(pOhTNe~@U7G42&xur+< 2t}*^V0% z6`3uivI9Dk!RYMV7J_*NT-=zp&I-JXd17IG0Oue$WOs=~7nCrRwMT##RBGw;!JY1O zN &*bqi(C`+SEuF z66SG(@p{)VuBD&T@bDmh$_y0)Hwg_ZGU4B^4!aikX}-U0{lY>)?n4JKu$^un`OfV0 zUI-9HzDjZOZUVM-Oo!ERvqd@~8s (JI0sLS3YZ@0PUi2;h*j zuB1QLIvT1y-K&Jp8uIR-5xswA`6J^k0(F;*$@b0T7UH`y0iGdO=wDC+YMO_-kKbm2 z3_ZRdxHIKpVktFJvBo1*vo1wqqtrI+%i;_;0CY _qr>M^#Py!$-GZy;b@UYR1j>dkG{22 z;Wl$bk&guwa2dYWw!*cD#x|G;*SD*x3?v;9&Z&!itVopC(zb$JYHJ`hv=nv~?8eCe zuOs#duGXfGK4nEkq-f%jk_6TG`hDF` k}*Q*&wIgO zag>saObU55lj{Dzw6u_XWJec{obB4uAna@u# dZ@qziGfW47AT#C|!W!Ly4^-+7QUDqR*UD}2Z9ipnPR{{SZf6zv#%9>K-dE z6)s7hQmJa;Zu@$!w~gk$l& y zW$(zHI2n;cBw!KFw>Be2T@+%j1#3-u&@7a_ics?2w1sVHQ7op|4!HPnQ^swYx?Vu@ zk$Z(;g2yX}`7g~lB2wuz6>_}`P9`Nh5((YoP<65DMH ?qWkF H-F%yHKr;KonVnBxEVejJ{3wMl2Duo}q!mr& zMRhiYH)c(#ulZYaYrtESI>Buhn?&}-Y6pg5M ^lG=n;mcR%0do5W_UhICub%$ue+d25wQeGV$D zC602{f!6U3mDA1diH!oPsmyUsS 7%BQRl|L~8W $CR)32FC zLT8_6pCqZr%XwigCc&Fni~s KiE~U+^>0RGOHc3%Q>Mk3x@n+mbST7b z59dlrqb!%gyatq4S1aN-$_nFp%vm5b>E+|e_O1LYo~N3xpYb?M^u!quqil#b0I<|5 z;^!dJi%yEojMC#anzGpW2~R0;6e!-1T;i-IlrhL491chv<7!hUVYPfBZ#ZO0g-f&S z43^X *odME2!lP9^(KZ{Fxcqweq${Pf&7$K) zq)!8k%aBy4`5mH$P^AN|W7KZ7r*fq8g^hG0;3^Izm%G7Nl~h`$w|ERG-CGE(ij2`W zC=pfc{8d4_U7grnPy$$)d!SKTD^E3&yI*meGTx_$)|ue#=Qkt0!Kn`N!6XXORJ0?c z2rL=PWTlZiZ%X2bj?sWA^JGWctIS4c(B$|bilF)OFEnvAOF{jE7kX&D?vNqU{5Qpm zX5pg+dy0#dH<8I5kvHTEDW4B`bc+Lt{Q8&~T25E7iNLBqYDHYm8Z$aS9UXJiJF9Xc zr#fdMWckw*qGt)B=H5kf(D{V(39naR6wx$VfPygl*67DhkEXJ0z#@HE&tj%)OV53( zf^{UpC|X)QaOF!kdDkJ+YQlzalmfSX1~h!!R)fQBo^ew%&o?CvtW=MY;RnwHL+obK z!O=&Mr9eH%+uJk3oih}Okolb*E9?%C+qi9^>Z86zU!oD13yeHKK=FCc^>B6uTp4Vk zz?xv$QNDJ0=VpK^5q<{KpWTk6NBNfMCyvnh(QLhxdl~65)}hU5f(DV!W2%h>j>3uBgeaQCIa)K$~8oFjwMW zzEj*>%gXPCetZ^pv;0MVsIBbCPKppWVN@DeXHI{GQ`{E*4iCZ((t !n z7D~%mzoqA|q4P! lxRO;64g?yE-`6~| (P6RaA}h>M?c0%tysmO0o8J1(Z@sr>o0c B;Rx~C&3mMVdu3^o z>3&3cYMb7y{GL&%H+_}6>j3c?z$0yIAn!=sBh*_wXN9(i^YGd=ok`2pSJhpk@S9;d zzICa`sZ4_@)2SN^{U@752`3TvRsiGh<9ziAjs&DyBbgaUnucyS>5K;~@_HLFRiwcq z_)Y!YIZemLcqQe2Z7_sJis+%&4c*ecJM!z=+YcLHaOE>~=g=tGC1Zw2C0|Cas*?Nf z4s9ZnCy4T7K1Hd@`Zea-d$p%~*y#luo-V+UrUakXk-R)^Ywq}AWJ@^^Hj?P$uWWNX zN6J>Y1+7EyaCp~C+vsGH-1^z7)0sHjI|=xgU4K4ZZWc5DEUwJ^C37~>be}&hNCM3e zqTbw}>*5nQ(En`LQpEU~0KTxALrExK+`QbY*(A?+V^G@ay_Po9aQtSfUoV8qvr-o+ zYNw@3agWX (z8C0E7fGIMLm6Lxy_SGJm%eqO~_He12-Zbqe#h)kKkuUvOD#V z80tOV?7f#wXEKV_a9j-*R+$kgDoBZrT8=_Clf9^h<7h3sf&d8BB?Medp@LQLX+HlB zQn({dm%UVcir<`e=hN2xD4<|?(2d `?gDVW|%2w{s7uD2!*ym|%NPy6y_wgEd}u~DcV7ogo`Zoem_H5JZFU9>4T`BY!z zY|oZ!uivTut@AFLOXWwmv80y}Z^={IEGK2Q6Nl_3Usiy3^WUy$j91jg*Y&k#UuIO* zsh@chAunZEO*uh}`J98fIch&2CtfHXi~mfht7r=XB5b@fnup$I$(CjB#(DDp?C<#R zsFVAXOncX`)ifu$b~@?4@=k;>o}n3+b;Xny zs$|>K0PzBKp2Nl-Ep?+~gy-}{s@j)WI5Q7?&a4ZG51Je^*obLR8!smjm#0E5+HCqf z$C1x~HIfGcs9l$H 89&{x JW@-+NNU_crV@K+omN+qLrQ zFB6X$Ik!)gWar407Ss?kw#CVis|>!PxEqoLTw9j-w}+sS_!E0KT!~7E{j%nh0?FCj zPjl8jxBnnl7a7lOP60jXG)ybm%_~#CF8yX h!iX*-&eKbMRehHJ*$3275;HY@&vhCK*?~qBP}(?c48`3u+}Ko@_c~#o-(lH1 z!k0K!KI7g7KuPs)LHDU@A8BK11i omHTB8q^W*qr<%;r zWtW`)k~5g1C -Cr*mYYw zv5lav_le8ulG}=OBJ`*_` 5K z&uM1MDXoro9kx=I#t+H)kE2b@gA@zzZx7Tn4vyYY-0olSXI9y8*|B!)_SiZXh<{YK ztLZpZ+2!NG<=z)*G2ETVl2IkT(6*I1C3Byj^wN#qvMyso;*-ySW+{=k-W_S1-Q%HC zJxEhDm!Cn7!`|7B-(f#TT;$Upz5UdlSl~-{4tEx~I6QuL9j(oZ3Ul!!kD}RNs<-3u z B0GW7gQIVvKUG4^c!DK#XWIA$htN-Z^dn;I`i%y z1hg25A uU(DpU7R7H#TiQOCFu+CrB?PN wE zf*g5;(cTuNR(>l*QN$#eUVd~uB8OeEo{i-M0384}ZK1V35$|hbBsyj6`5ZqJN*$Z$ zt-o&H47S*oxklApF)Dzcw8^HhaMUI@MBb hWCbCUOR#=ZoYC&`>mbFB z97>h(J;_c<0q )-r z4JKv1L7Gi(pAjr{xNZ~!2W@JQ{6@kK`HD5|kjH6Va|+jPjqM$ekMhCGwa#8hT^2~C z%UxrKBV#nqGW@I_ Bz2Vxp_?Y#@HN zZkJb$Yf%#%zz*phGawhf8F?`r&7x}7^YqB8j0}-Eu=ti^?qz1B?T;$kN{0rN14U*+ z>?VrSDIMpv`I#WSTSd(L^SFDtgH%PD=b$sAW|Cfm%!#DISI*w)^een+KIcDtJjXGi zoG+(Aar-`txIq#I!(WqGKFaCv;ZEFiv7$#BPiktvqSZ8B#At2pUeNNoJA(>Y?G^i- zepu^8%00w|kQ4Rm9(AE@gb|W~=PY4%l>C%2-ZqNc&lj}m%iMr488fKn^Z@f8*QcFt z^p3;6g10yl7rG(MTeASa@d=@Pf2B ^PnpOiTp zzYUcowG&6{WsQ$OCQDB(ejqdC^IG7WWsmLii6u@00mZX%4P*L<4%Wu^eH@6VCIe&? zo82fBaP} $r0&QveXy zd3ofXd4Qo+BGw0QAdYH&?hQc# r18TK2Q)yE8)nmLC!Zyt_e!qY$vLr- z8A|h ?@}`JQ_}khmJi^L$z$xff-HYZ`nGd-7d**+`v6lR&p49 z&7AODdhhV_m+M>s=Qk1wg7=I|fm7o70w_8)xScZK5%&v@D|!Kj9Sy5ZtM_{kQzm&w zgwaWn4-=fGeyM6L%moo_m7!JQwOSvk6Cja^;lJrV=%m}D1J(0s$I$I~95Uj9lY5=` zXyFfkoxu!qvSh<~f{?ce2Wag~A~a|LPfO_+!;@WE)5T`!*r *Az^+BfvFlM# zll54d(IAFnfiN~!T$q#@0ZDcvJp*K$%0W__U_Ja=8Q@c-#6lv(#4c+Cp#OleNOz^6 z;+~{Ma2Gjza#F=qnUR8Xi%qwOlu#e-#aS-Qe|@1YI=sjP_{G=)4tbFI_Ksmw-tGo> zHhqQ ;#>A$7s$q1oVCps7_$BvcjPlCzp;m zTydB%g#>pF20(2Tj62lCdByW_kvpVz!>s01Ub9EMCa~*P-ubSVxT$%zCqK%#QnQLn zr#z(FYexI}RYV(P5OEGPl^@c_g=fR=fyoRX+C0|*ELAfyFd|z%WAx8O`8*#f-o^<{ zKbX|8KJVP- v4J>FFAt`1>8UNZKtr1qf_LeuL8e`*o z6##05A0LKruD#}xa&f2G5Gr+%HkWc`BQY#dqJhbAskU50*R^g25e~$!c)pEa{ot&_ ziV9pA57J aj7k@7W+k>Kk9g z+_iG?->~Bb1Ju_K|JlCqH~E==!nRaLy*wz2{EYq5BL#Gzjl9E$Z9*Ow+6g&1>nOv) zn)`yaDwFg!p;9N?57hhoe_3?UH)MhsMR9Mad||jnW8^fz*or&q963tR;obcl*M YUH1vk}&Xs}Wy&!I{~9zy$Zwbb!7xD&3Ld>^^>nB4$p z3S#o~Lq!$k%mZY^IjeV8WehQZ@j1ZLd*!^XM{f8q^yM(1a;JyeX1k@9wWOU6E+ja8 zrret-Pt=3&;|-I*gn LL?t+Wo?J6USKQ z%9({+Q3cr(dV!k8CV;=}W-AKg`H|vU 74Xfu8T&CZlA_$wRMF3UZw#Z z$rZ1ao!-ZDtt}<1XFideHaVtM!@KvOxax}lu%pC2th-pTgUTsirSX5oy|G#2C hPI)X!JCrDoPp6M(sgD&xvvIcnG?^hq(k9{!CqxFr z4cI*AWmCSq2pk+y$Jt&WXAQO-eH6>(1>QKxKTp)Ka;?)vsRFb&zITY%yv}uPX%=-= zMCx%ZBjLb}1%d@4d4ATpJ5}rngL-Un`$&c1)HwC?I`{J#dpq|p+&BVw3Zuf&<0Od2 zqY{*T91ju7bku!NmS3Db!X^Hd$M!7J*M3za1SUNEo+u9z3(4la#E`ZcQg)V|=kr1$ zm9a5HPf75#eNMi%>)9I_G?Zconn1s@w|P4O3(_cVz50Mc?p%HRhfXD+JO~AtH!IDl z+ZxWdpw6SOPj_D2j&3V8uru<3Vjn5NK*D<~>WqY0S}ym8s`Eq$Y@w2qrb_;8XQt^P zT{|uw Wz1BQDJv(3J6S@aLv1WYw2e9h0BKxbH} zvsGWdAjn;dtHDvN;T8iak^Um{r6_ucv-VQ|C8)Zc`Y01)or`oD8>H3`JzGj1!CgPh ztkN+dBk$S6r%kGwPtcK2#Z_ZVeCm31u?aRK!<#bJ8b8b4dxJhJeI0px7^igZ&g;!M zrER08n(9__SS%ez`rU@{TSBG;6(fLpMln(ils4)`3>)u(z#$UA$n#fAeTiF!AL9kO zI?HT9ok6G5N6yv3C^a)@6S z?6-Kt^WFg$gL&)Og!I!tiu!BMHy(ZVMo>~u7$6U}>O%t^snS;}*%#CwBSfCPr!1l~ zp$Ce4^;36mZSS@;nJkFkj*2a`)Ku`~(~TKf_Gs=2t}AD0PibZz^Swiy2ZRE0T8osp z_Oc7Hanr{4Gq7KpALZDkpIWgx^&>g6PDHqVU4de2`Lz4OQLj(3+=#$C3J-u9fvFLz zJxPj)* CXC#*(8EmrXeg78f+iP8{Z49)~FfeJJz)g&Bv3W7^4 AW zG5EMRDr%;lYTi{F8Rivuv*!uCp(CoV>166vmDiTPP`C|fJbFB7BV)(Skz`GRy@4Nx zQo`Fz*F1rN;PyCIYsg*s9EHf#Fd!Ze0rA+RegraxpUAWrUPGqw5cv~I1q`z@Zbt1} z)iR#1wBwEdmWNF2%6*#wK7pjAu{#xiI8AbyT40rUJsbOmZ8#eOE0Xr$Zay}PX7Q{M z6m71{R9yy?3gP62wiAF6?O cQbpNZ#Aqc2D`6S>5&0 zk02%Qk^zfZ(<;AY(&OdK`OC)oSD=BUK!;NdRAPV!po=DsL9c05FhI|+Z;jQE<_tN9 z=v;ny$>u1vX`(@Dl)6CWV&uH|8(lJ5Pw0#X0C}AP2sWuUu&4lnj?F?bp?QK_#lQn{ z&RO&biPEh?z*$c}b}aOL9G8H*4dZShCe*`He_D_HDn;n0{m7(k+GD4KbSa|Avjy}{ zI(Hs@R@HOpC6R&-x{N6A)f1vD+4_w7LmrjXFw6MX@Qc#VF47i}O)^fB8TK3Nu>n>{ zx; 6Zt@7wgcFR zP#;wbIACF@^UMg|?zF=5RRIe%#RSv}5}U4Lj-ZE3V(HXgOL-QK-QCMG?&q3PG&@Zh z`zkZTF@wNLlAqI&HV*3eiI8z~xAXX`oh83b`Jm6FfLAg-V8mN#wW&6ms@#%^r`y`R zplesn;T?j#(hyuB{z)#YOzlo*9x0OhGge_gvKJEomn_HZaZE5YD4QsUVBxJGe;yaO z;0EZ{UV~h`+U7VLV>jPA_wuHVU*Wkxod4tdIOjpJ4y83R-3|F>rRK5aYDWHHmr4g8 zxe3NpMUn;_+bnG-r{7zl97lK5X`Kd?<7oh%Nq}2^AUEtnO@7!-B*7c^jm# _EARyXmVXK%YFopNopN`{bw4fuIz|Hzp}-7=3Cq1)ohEi-lY6;;Ys+^K zaE%!z8~`bzgZLpC@caZ!3YAD7sV1!k aLfU*bfvUWWtxJid>^eHI~g^EtfI!n@7qyyP*f_(DW99D%t8Tx5j)|!xTHmraUSL zV`_8fO>}Ke9+Sg=mS)E;EOSXm&n5*81(hhtc34-fRZ(<;r3;g{7;9F2I7$fjJ&1V} z>e<9|>s*i3wMkME33z}t>Ix3M`~cL8qQ?{f{;*nBO=D;B9aCND)L_!Z2Q*xep%aSF zrtWPiLf?x4e6U2)628nv#L`P8Q9i*+O2#G@A_B_l%`)MO))h{~{G31uv=HD(A0Qt= z`HB!_d8HXFtR^{XE}0Yb5K0Q-;IKW &Ay193)s@8VsH>zMXNJQ^4GHtiq<4MCbC>5Vczn_{y` zZL4>T(D7<(h*h@i)mjaryn8FxEtY-eM0L+jtLPGHb6)H<)|1YhGIHI{?fPhJ8W!e` zBM3iZ*|0I|=Gyi&5=n?R_MD>WLfIc6t=lmMW~s4hjXSm28{L(`5!@8RS(G^;?=(`U zmoA`6HQV A;BFpwPz4 zu&QG>ek9(=!#W6Hk6NM65$9pt4r(VxRj%2(RZ|xLZTbkhd3*Nq*!#;PZbwjarg)2o zi7sG^5fg?JT^>!RwOJh-2fq+ctehilU1hZAz*wZGo|!X8XlQQ&Wl@*3XUxv*{_#wW z xZ}0 z5V`LEkGb!Tr?UV5Pc|8)NLG@}%&dq|lrkDd$qtnrGS4}-gj7=5q^PVTij3npW*G-3 zdmM-CagKd(ob$WTJ-(lN-@m%^? mUR?vP;rx1}lp)N}Y> zgfWIIub2RH{K#Tz36!J p51j(vx{V>6Rlk`_Sns3TnkIy-)+%T=8j z)kN D%TR7*_xknWA8 9snERE@8#qnQ6=g(8T3}Sdnz`mxJgTM7K?~D8t z+Hd1|KurJ=)%NNDkex3~^d2q-RJrXw0?FfZMGUuWXabJwvcr_|j%7`240+c5Xn1RZ zp)AiA7~zv*V}Q7eYQ-}Jx8&@`-arqHNY~tcM^BbFArsf`Ll}e!%Mn103OxXA*&&y3 z2&f_nNK;3HemA){lD;d=#zjvcmLUu_I9JK_K7uX3156Us{@L!rm7*Q>Ar`r6!J`<> za`?P6(5r0wpbeoEo=Y|VxSUsk+IzW(s&9cq8tW=@AvnT9W%b${!{@R#)%xYf1boLe zUmeIoD!&R@BkYekx3+R{>^MS_ltOFMZfg8Iz|4Jg@5;M)U1DKh G#Qm z_}v9w%?5 bIpqcSN)OcZr zGHy*JejV+@YXdq?E;?oXdZUctpA9^{RM`vY9c#{%@4H1<&niVF6h(mhyPJ)fkYKFo zSiVOc*W4^NUX$4~7|8p=qq?$J*T4gq@@E~s@G_VY*t6Bm7pYqT+(YTbAglo- d-M0!2CN|q$zouINno0QZLQ)*ZSG5KttSCQYqj`g%& zY_I6S`cyUGzi2gFz2N|u>MoZRT^ RD{TX0<#}1|SAitXhxRSr{vhIX=j- zQ2MvvD}HV6FvY(}B^@!qyc%fo1dY FO3wQR0$}XMvulGx1Qd$i! 1w+=*i1&MS;92rSF@pMgCuWC~eh4o9zfPrV}( z_EqT|ojT_jg3g^l3FJ=8p_xs^YZP*Cj!^PG-Dr#i1Z&P%FYyqLlS{z<%!F*DtSwUQ7Jks;wtw26+5evMR5!lb2{0)`LV_|wIW8&Q0 zYGoT%^Q7n8Bc51&p!q0_E7k4>vruR*#FKYa2UUlhBPzJ7mV 5>)bQCvuF|w;C}9^dX-eT8Fy5&pe=fW~?`aoEv83bCIfwxW%yOcGqO8$bSWS%1 z@h&yDcSCaz^#`^l5oHAwAVG8$m~CNoU8R&u#X9YOh`fsPx;ZT!L=Qb;A0}asi@oed zjUpgT?qk=N_g~?OK~w$oz37>hfwDBumoMzW04a-t}gS9-)%JIA+lL z`D`{Iv_i0~N=z!b%g;efU3MbUcDVKmYVMkOsIvmBd}&^SG{BW<8qgH1EMSM1t$a6& z{#-%xNbvk~KmVD*xTP7VLSF#k8Wl%ccyeJ 7TKtMQfvYBP%@Kiow z!p!P=YDr0*RX(t)@i3SkdUu6dhKz-hKf?rfsg_=s^FA%jgF9$o_! Run7j9)Rzz(&are&)HHda*8) sH zVsvrtoLARso5{7yOu&2#{=Lwt+rV}p6}J>KgUcu0FLJwHUfd}<@vu$0t+S<5HE? 2m8~bUUJ+v>0%A2qlT}qDTG-_cWcn?B^?s;!{J|L7uZ4MUHXEonVAN4E(S4m8} z8ZeV^AVg30S}|EnQZ+Uy1ZN4l%qj=xoeC`xm!r4Um0IXIFwLEr*9tUX@ruK0LQiJ^ zctNGs?x0@mJrZkDpd?c;kLIC*t8Z~9BcLi1N8pIFXDH4sAaE}Vv61t6m`I9X!+GVk z_2cL1@;qG24#YGh(kPA1WMe{83U_8zd`Qe6*r9|3v?L`k&`J!f2IO;4b5SYLGw;f6 zgj)oz*9>UGEqR@MAVHINSg NlM&jDq{f(P9u|CY zoGYo<{Z`$rpfh`w&v)P9i(pQd0Dvg3QD1WiUWt+~RzU#7gRV3MhI9^I)?$FtEayWH zk4e8xPmS7nPzZjgw{TC5GxquO9g_tgmPTVzkROV 1UmN;(pxwcM5y_ukM=34pi^lk=dUqrj%4=DDa?#OJ78}l!xkxBC{jsLJKx^ zV&v6p<5-0?r{Fj7OyFrM*9sXAVE(D1SXXYew6?#ojdI H^ zwM2ZPh5WFDJjt5ogRB{3dP1kDQpHD~OOHWe8GqIY!um#5Tye=)No$uZbMv*z|AoVy z-taqUyP>+8#M^yXeCY$51<$*7g2+`R&XZem9+>L?^N|B0jO%1B4YYaqpSC-jX XR2Wd|x-*#HwZk^JfC@b`zaH90H{1{hq+0FuONkSB<@x<6U5P=weJe!>;@+0Ac#}I+%0SH4uo6P zJ?A%!<7Y!he5&4%R1fFSiiG&N?+`A9?%gSR{4|GH*NHKQpoKdKUI-Gv(iQU AY{$1rCjo?nzYlkdnomQR`?`uigRkp%VIuSvza~t&IJR+O6XJsZd_r%%meB& znW%p7nJmIos%O>m%tk}>0!_id(URD{!k+zURC8VHT(+rm3U1i!*=r8L$xNhPLp0IY zbxxrJGdi?PLov-|0JH&v`gP8D+zB= 8XpwsWDE=}#jfYy=!a^Ht^Lnjam%>Ps`U&lfx z=%6%n&tVoud)53I`&!)Emz`?s)KtRVLfe38WB5Ca&@&hI%z%w8EnA(dS{|G=5V3Bc z*>GDq1+?GXolti1)tx%-_}H_#ojdq=jzd ;d0fKF92`?%o
c6_<=Qd(X{r zy`_gdmsG7j63&J)c>>8)h9)W(B^F`WnBoh4N38-dUT#e)v#-D~m4ICZXt4Q8Sl4 zkMecJeCnk;smS9!i)C!7gZu3dKDf QV=1GQ9G0RqUJkbl~= zdf&XM7*-XJ*kM-}bX2a2Pts-v-x%nbN0gtSfXeheeAiX85Os4Ge4XjUb2_+ZmL{8< zTszM7ks$5{c7ved*RtT_-0|hki4)n$RqITHD_j&i7M4rr@ AW z?{ rtZLCh-T%ENivFqYvpT-&s=UQg)|$lhv?nV50#&8CmU1~*c<1d7ktmE zjk~}Q@KUu$lR{OFE*vr&vPELpU)`0Y5MGd8vi _E4sM2CkfDEj|6Y zgKN$4cTV{ggz?@ |UjV@#ezOv9|CV^lBQx*AT(TmV8ai70)Qk6B>L_J5{yaqKL ?-;{{`6UpEfx#anZ^+p?-!m;Tf&4h&$4ZB)=>i$SyR^9VL3v->|=c2(ET>TBZy0y3GneE-$DZHFqls)N=qsTI%=XIO5W_~I`@@=(BiIwqJ~IQuvVyP> z$xFvIFfq;lxGC&J4fK{@F$2Ap)I<9x>h@4>CW;|6E2|@FhHR7zQ<%qqmNeI1?v^Jv z0t2=*Bn8`8?r$}Wzv?a0DZpEOJUykH9{ip%Usdv}ewb#m3gw9J?GJc^Q#@!sCeKYJ z`9Bt%z6*<;Ic_}b!f`UIXu@zL& dgqq{z4{3``-9QVzRhc9gMag8jE z1r?!4ar|7{NI)hyOt?bbejnT8#}feYi(p#k4jOL6G2M%<@mEdRxOE3JSu`}9&Y8?& zI`*$l2WDb@n;Vpe=^E%FFyR$jtMsC3e9{ifGl<;^)~snb;lC}*^uKd41dt-IC?BZF zY);AWuZ`6UK!M$&=yXRIq<$l3IwLs>r?qJXwzp$4u~G~E(+lyqvHa@0iyff!F7W(f z1K~;uFh-r~vu3{PRp7rVdHg53(D+6}-&^UaOi^ZDs1t3Y#tbU+VF97jaz054w^l{o z6f*Ad=v||B#Ubb~tZ*m(p@4Ly7jH#n-B{(9@k*2&k8d-0w9hai3A#oXE_RPKyt(dt zPg#lcDV^AA!BVY*HyA^1Mj%8|{}Fq@Kom0s%?K>TG$UxC0sl5$zKXjFtk)G@upR)U zm4AD<7_u;s-2la|L4eSUYa~e8;Q7SP^y)3@l|K=g?rxMzB5Ekrq&nNpj2iF`tnz7S zb@wnZ|H*ySyi=3c=)~csFb(Wqvl;f@yI0Xt(g_Ma&2~Ec^o{H3)BPs$hcX&0_nPuE zAET~3_V0b4IXi`ss`@{zoPQS364mx|=h-P*OfIt9$?kXkpMTKI+qieg`i39?(~fs6 zV6^Gp$hd7*VhZCortOQ_pRsO9j{iwK!Ng}^SNBLebg&tggPZ}*B7b%sx|}Cwi|6vc ztSuR0Gckqae;{5?E`G3>_Bueq0LPLnH+IQZs9;9F8(6-9XFNm$9a#bQt?&GIuJN#x zMLol;ybZ*f)Q9L{JY1Sxruw@q);0k }s(Y=dMLhdtHFSoSDrX z>>p}ANdKS~ZTa9Z1@9%Dd}C&oE5-7ir4xR;rTICi;|&9XRGI0l?;rE9>b$l@Ce28H zQ&xRx^fXVF!_j-LYz9K=`LEyCcSSrC>UtJA|Mci^FI5YVuJ9z)6YcT}>u&QpJ^nW* zE3jrfV{?{%iPCj%nF=3nK7{*8r$P6zF#`X!N2*UiMUfQz>YMLot6?D`mN4}+Px*=G zekt -A ze|(RDFO9fk>mY)5r8c1Wb3QJW3Z4-^Z~!X%zK-t<>RReq$uoNb9tdT09laYSYQkx6 z>JGmf`zSK7QA8DSkS174Gp eJv8`OJn!24bEfw9tkoarGasjRUG5pS*JyZb z-%zts|Kzq~;8>IZ%T4n79D$ (AgIQ4TAR7!O`nd?X`QD)NNAmF?SG$FFIep{N&AmdB!eIt6kK7 z8X9T(maKI0gqWAY@|{BDwfif{{E%Zloa1}w-LBugm}hbQGtWt?`;sB#eh+vbdlgs7 zbS1G-PK57nuVM9~xEUvMOo-~N8ne{!u@XwjhcCke8#5XAOI~{G0`=lQv!5bWZ{&=t zTu7rekHir4fsOQai0MK_cl&dB4~rP7WAV325*jy7r%N8vb+O5Td42Z!Nb`79EtP>B zNF5kY-d3+n`JG<*bFdY8Cge;cuX@a@os{JeP)dC`*`20?^~${(0h SbV+<@$Jimo`b7Huj88-M9~lSsD}t&priwnR!=@ z%Z-?4!8;itzj9;)(yQE>#Z^1G*q>jv-_O2C{b2KG4qm6RP7-s`em{EJfAx_6yS&rf zs&ON9+V@l+F$bMjXmnIPe|>z=eEv;fq^E0FZN*5;K?~*}wOGE!zWuUKLGXx5wYbIy z>s~F?cE;g@y}|mQn(g0A- iowV z`-F0Pp;6hpM9(=%V+IbR{M$6!>hsPaPD20iHvj*9-h&3# 8m*GZnEHI`7d7tXXG8@pFeXoSYTej8S#K z?C8&-HZnpZvr2TYGhXDEZ@weBWm&$JpLMK``K4uL-76Kp&B(QbS6y)4EzIui330ju z;&gkmB9G3|v>r3OadFq9po7;x-Mm9@dFUJ)kZ5p805|mCI;)ShHQk-?Zb6f6^}<1H z6e8d2g*B~D9Ck3**P{OZ7JS)s)=C%Q6(_b<6@xlwx^8H+X#07~djCca(h%;y=Q~B@ zFKKTFiJVP~R0c2I{)0@jssuc#AU`x2sw}e(Cy^M8B5w `w%N;6>b$K{7P zU;niwf3^~JFpzA1J`KwjvD3eSdOY8#qzFIvFY?vRs}eE4^FKNfw>&ged#dMFC5Drq zi?Qu ?H8y=6eb^m{J zVchbOzZ}o7%NN_E`B&qmnxL+QNw!iC@0Ce0)nF@Drj|c8sDY0Vj=%6K!0mCwo?ocF z#J2K2Crdw7`%;tK{L~Kdf0G *fG$^V9 TKfIMoX@zVi`&*Skm$=p6t>e`@;j1%3186v6c{2-!+cwue>>$NE zCC+$_vK-(rIyII4$EB`bGCu#$D_w@tPIn*M=PF6Xb%pNM*>nzZw_&li)Sk3~2lsyB zyg5??{V+vt!^zreA2NjuS2pUox_4A8>tcw_C5NZ^>_Fux$uTN!{OJP&@F#pP8}uf- zjC5L%XMWeCIhm|tU(`zuX)0cRjS5u;Qwm$;k4ww DlG865LmXP_(sNk=SAU_$9+@9HimO%$ySTL}eYd8upCjhy<2&JKX#=(0U`D zIN1}Vd|zoP0hM94T2XtR3``z=x35zQu?#r^BjH9{b$u<07v{tV?iA4`!sB+kXY>j6 z+xX-1Ve_p>%Qnl!HPzpi;L+g!{GRR! uqE@+;Q zlAoL@dbDy6OG3&EfQJYII!r2)jz%%=_fK=kHp58#PN!ae=_{Y*lGjB^Lq;Iyc@Q@G zoo9SnJXCHUcj|ILc9hwASKEo# zyctnU!Vi?v?xVr>uQUtfz>l z23TPNAZri}WJXSr&2g+5QSP!q(qa&`j>=UKkD;ZNP#K4avrrCX!4Msg zJbU0;j3|eZ_-bNdb(S=S{#r<5%1KWFR(^ZSGD5&PsFo5|h$$YtBi{6YTiUIz$8^od zYoE8tLX*NxJx9C3lU&7ew7BPyW`PW)@p)R<;?+eSkP^5l+9igDv|d@#fGEjhMI33@ zCCw;8uO1|+_Wn-k`ce5WN>_NeNukFP09Oh3H8yO2)0{3e8t-+-@9DpQWumES&o63p+8^hM*D?#uqAd2`=Q+-#BDT!4rfU|=@MM_l zVjVn>S@yZ R}5)T%X!wo z=bn1!zxYND%*^4;^em@B F`>9J zqV{LX!IAbA-8zmdDywfv!K9q0R@Ed<(C>Wuus{3s9J2sQQQFBh2cX0mVsj2AS2ES& z(-WLVy2wob4baRJvv1ip;i&xgHt-FoS+v>1@We73>ALqQwMt~$r*jbetk?WF!R!Nb zJm=&{n_A~CueR_csiWAMZb$PID=o{l8eJXcG8W`h*)GyYZ3a?G@jkF4#Cov504b9c z()i4M=!TcALFXy@vVz^0sDPhxC$1yCXD3G)a`pjNL^j8CZlb*AO#=<^qt