From 82cd75e4321b2738c95a4dbac13847e7925196df Mon Sep 17 00:00:00 2001
From: mroxso <24775431+mroxso@users.noreply.github.com>
Date: Mon, 29 Jul 2024 23:12:30 +0200
Subject: [PATCH] initial commit
---
.github/workflows/docker-image.yml | 61 +
Dockerfile | 4 +-
README.md | 9 +-
compose.yaml | 4 +-
kustomize/base/deployment.yaml | 19 +
kustomize/base/kustomization.yaml | 3 +
kustomize/base/service.yaml | 11 +
.../environments/beta/kustomization.yaml | 2 +
.../environments/prod/kustomization.yaml | 2 +
lumina/app/dashboard/[pubkey]/page.tsx | 32 +
lumina/app/feed/page.tsx | 61 +
lumina/app/global/page.tsx | 32 +
lumina/app/icon.tsx | 40 +
lumina/app/layout.tsx | 30 +-
lumina/app/login/page.tsx | 20 +
lumina/app/note/[id]/page.tsx | 39 +
lumina/app/notifications/page.tsx | 34 +
lumina/app/onboarding/createProfile/page.tsx | 23 +
lumina/app/onboarding/page.tsx | 24 +
lumina/app/page.tsx | 44 +-
lumina/app/profile/[pubkey]/page.tsx | 42 +-
lumina/app/profile/settings/page.tsx | 34 +
lumina/app/reel/page.tsx | 31 +
lumina/app/search/[searchTag]/page.tsx | 57 +
lumina/app/search/page.tsx | 24 +
lumina/app/tag/[tag]/page.tsx | 13 +-
lumina/bun.lockb | Bin 175381 -> 321868 bytes
lumina/components/BottomBar.tsx | 55 +
lumina/components/CommentCard.tsx | 123 +
lumina/components/CommentsCompontent.tsx | 34 +
lumina/components/FollowButton.tsx | 97 +
lumina/components/FollowerFeed.tsx | 54 +
lumina/components/FollowerQuickViewFeed.tsx | 73 +
lumina/components/GlobalFeed.tsx | 2 +-
lumina/components/LoginForm.tsx | 189 +
lumina/components/Navigation.tsx | 16 -
lumina/components/NoteCard.tsx | 199 +-
lumina/components/NotePageComponent.tsx | 41 +
lumina/components/Notification.tsx | 112 +
lumina/components/Notifications.tsx | 86 +
lumina/components/ProfileFeed.tsx | 4 +-
lumina/components/ProfileInfoCard.tsx | 157 +-
lumina/components/ProfileQuickViewFeed.tsx | 63 +
lumina/components/ProfileTextFeed.tsx | 51 +
lumina/components/QuickViewNoteCard.tsx | 86 +
lumina/components/ReactionButton.tsx | 103 +-
.../components/ReactionButtonReactionList.tsx | 12 +
.../ReactionButtonReactionListItem.tsx | 43 +
lumina/components/ReelFeed.tsx | 40 +
lumina/components/Search.tsx | 62 +
lumina/components/TagFeed.tsx | 4 +-
lumina/components/TrendingAccount.tsx | 55 +
lumina/components/TrendingAccounts.tsx | 57 +-
lumina/components/TrendingImage.tsx | 84 +
lumina/components/TrendingImages.tsx | 27 +
lumina/components/UpdateProfileForm.tsx | 102 +
lumina/components/ViewCopyButton.tsx | 91 +
lumina/components/ViewNoteButton.tsx | 10 +
lumina/components/ViewRawButton.tsx | 6 +-
lumina/components/ZapButton.tsx | 122 +
lumina/components/ZapButtonList.tsx | 12 +
lumina/components/ZapButtonListItem.tsx | 55 +
.../components/dashboard/RecentFollower.tsx | 36 +
.../dashboard/RecentFollowerCard.tsx | 23 +
lumina/components/dashboard/RecentZap.tsx | 45 +
.../components/dashboard/RecentZapsCard.tsx | 23 +
lumina/components/dashboard/Statistics.tsx | 120 +
.../headerComponents/AvatarDropdown.tsx | 63 +
.../DropdownThemeMode.tsx | 0
.../headerComponents/LoginButton.tsx | 13 +
.../headerComponents/RegisterButton.tsx | 13 +
.../headerComponents/TopNavigation.tsx | 37 +
.../headerComponents/TopNavigationItems.tsx | 42 +
lumina/components/icons.tsx | 31 +
lumina/components/nip05.tsx | 45 +
.../onboarding/createSecretKeyForm.tsx | 56 +
.../searchComponents/SearchNotesBox.tsx | 65 +
.../searchComponents/SearchProfilesBox.tsx | 65 +
lumina/components/ui/accordion.tsx | 58 +
lumina/components/ui/card.tsx | 10 +-
lumina/components/ui/dialog.tsx | 122 +
lumina/components/ui/form.tsx | 176 +
lumina/components/ui/input.tsx | 25 +
lumina/components/ui/label.tsx | 26 +
lumina/components/ui/scroll-area.tsx | 48 +
lumina/components/ui/toast.tsx | 129 +
lumina/components/ui/toaster.tsx | 35 +
lumina/components/ui/use-toast.ts | 194 +
lumina/config/site.ts | 18 +
lumina/next.config.mjs | 9 +-
lumina/package-lock.json | 4261 ++++++++++++++++-
lumina/package.json | 20 +-
lumina/public/.well-known/nostr.json | 1 +
.../android/android-launchericon-144-144.png | Bin 0 -> 3029 bytes
.../android/android-launchericon-192-192.png | Bin 0 -> 3591 bytes
.../android/android-launchericon-48-48.png | Bin 0 -> 1842 bytes
.../android/android-launchericon-512-512.png | Bin 0 -> 7878 bytes
.../android/android-launchericon-72-72.png | Bin 0 -> 2160 bytes
.../android/android-launchericon-96-96.png | Bin 0 -> 2404 bytes
lumina/public/icons.json | 452 ++
lumina/public/ios/100.png | Bin 0 -> 2446 bytes
lumina/public/ios/1024.png | Bin 0 -> 16587 bytes
lumina/public/ios/114.png | Bin 0 -> 2626 bytes
lumina/public/ios/120.png | Bin 0 -> 2679 bytes
lumina/public/ios/128.png | Bin 0 -> 2802 bytes
lumina/public/ios/144.png | Bin 0 -> 3029 bytes
lumina/public/ios/152.png | Bin 0 -> 3062 bytes
lumina/public/ios/16.png | Bin 0 -> 1447 bytes
lumina/public/ios/167.png | Bin 0 -> 3327 bytes
lumina/public/ios/180.png | Bin 0 -> 3402 bytes
lumina/public/ios/192.png | Bin 0 -> 3591 bytes
lumina/public/ios/20.png | Bin 0 -> 1519 bytes
lumina/public/ios/256.png | Bin 0 -> 4354 bytes
lumina/public/ios/29.png | Bin 0 -> 1636 bytes
lumina/public/ios/32.png | Bin 0 -> 1658 bytes
lumina/public/ios/40.png | Bin 0 -> 1758 bytes
lumina/public/ios/50.png | Bin 0 -> 1854 bytes
lumina/public/ios/512.png | Bin 0 -> 7878 bytes
lumina/public/ios/57.png | Bin 0 -> 1935 bytes
lumina/public/ios/58.png | Bin 0 -> 1929 bytes
lumina/public/ios/60.png | Bin 0 -> 2002 bytes
lumina/public/ios/64.png | Bin 0 -> 2070 bytes
lumina/public/ios/72.png | Bin 0 -> 2160 bytes
lumina/public/ios/76.png | Bin 0 -> 2187 bytes
lumina/public/ios/80.png | Bin 0 -> 2229 bytes
lumina/public/ios/87.png | Bin 0 -> 2297 bytes
lumina/public/lumina-lightning.png | Bin 0 -> 733625 bytes
lumina/public/lumina.png | Bin 0 -> 781085 bytes
lumina/public/manifest.json | 459 ++
lumina/public/sw.js | 101 +
lumina/public/sw.js.map | 1 +
.../public/windows11/LargeTile.scale-100.png | Bin 0 -> 5076 bytes
.../public/windows11/LargeTile.scale-125.png | Bin 0 -> 6001 bytes
.../public/windows11/LargeTile.scale-150.png | Bin 0 -> 7096 bytes
.../public/windows11/LargeTile.scale-200.png | Bin 0 -> 9262 bytes
.../public/windows11/LargeTile.scale-400.png | Bin 0 -> 21018 bytes
.../public/windows11/SmallTile.scale-100.png | Bin 0 -> 2118 bytes
.../public/windows11/SmallTile.scale-125.png | Bin 0 -> 2297 bytes
.../public/windows11/SmallTile.scale-150.png | Bin 0 -> 2485 bytes
.../public/windows11/SmallTile.scale-200.png | Bin 0 -> 2929 bytes
.../public/windows11/SmallTile.scale-400.png | Bin 0 -> 4692 bytes
.../windows11/SplashScreen.scale-100.png | Bin 0 -> 5385 bytes
.../windows11/SplashScreen.scale-125.png | Bin 0 -> 6556 bytes
.../windows11/SplashScreen.scale-150.png | Bin 0 -> 7952 bytes
.../windows11/SplashScreen.scale-200.png | Bin 0 -> 10853 bytes
.../windows11/SplashScreen.scale-400.png | Bin 0 -> 26639 bytes
.../windows11/Square150x150Logo.scale-100.png | Bin 0 -> 3094 bytes
.../windows11/Square150x150Logo.scale-125.png | Bin 0 -> 3503 bytes
.../windows11/Square150x150Logo.scale-150.png | Bin 0 -> 3929 bytes
.../windows11/Square150x150Logo.scale-200.png | Bin 0 -> 4901 bytes
.../windows11/Square150x150Logo.scale-400.png | Bin 0 -> 9061 bytes
...go.altform-lightunplated_targetsize-16.png | Bin 0 -> 1480 bytes
...go.altform-lightunplated_targetsize-20.png | Bin 0 -> 1542 bytes
...go.altform-lightunplated_targetsize-24.png | Bin 0 -> 1602 bytes
...o.altform-lightunplated_targetsize-256.png | Bin 0 -> 4694 bytes
...go.altform-lightunplated_targetsize-30.png | Bin 0 -> 1652 bytes
...go.altform-lightunplated_targetsize-32.png | Bin 0 -> 1671 bytes
...go.altform-lightunplated_targetsize-36.png | Bin 0 -> 1760 bytes
...go.altform-lightunplated_targetsize-40.png | Bin 0 -> 1806 bytes
...go.altform-lightunplated_targetsize-44.png | Bin 0 -> 1884 bytes
...go.altform-lightunplated_targetsize-48.png | Bin 0 -> 1921 bytes
...go.altform-lightunplated_targetsize-60.png | Bin 0 -> 2054 bytes
...go.altform-lightunplated_targetsize-64.png | Bin 0 -> 2112 bytes
...go.altform-lightunplated_targetsize-72.png | Bin 0 -> 2226 bytes
...go.altform-lightunplated_targetsize-80.png | Bin 0 -> 2301 bytes
...go.altform-lightunplated_targetsize-96.png | Bin 0 -> 2524 bytes
...x44Logo.altform-unplated_targetsize-16.png | Bin 0 -> 1480 bytes
...x44Logo.altform-unplated_targetsize-20.png | Bin 0 -> 1542 bytes
...x44Logo.altform-unplated_targetsize-24.png | Bin 0 -> 1602 bytes
...44Logo.altform-unplated_targetsize-256.png | Bin 0 -> 4694 bytes
...x44Logo.altform-unplated_targetsize-30.png | Bin 0 -> 1652 bytes
...x44Logo.altform-unplated_targetsize-32.png | Bin 0 -> 1671 bytes
...x44Logo.altform-unplated_targetsize-36.png | Bin 0 -> 1760 bytes
...x44Logo.altform-unplated_targetsize-40.png | Bin 0 -> 1806 bytes
...x44Logo.altform-unplated_targetsize-44.png | Bin 0 -> 1884 bytes
...x44Logo.altform-unplated_targetsize-48.png | Bin 0 -> 1921 bytes
...x44Logo.altform-unplated_targetsize-60.png | Bin 0 -> 2054 bytes
...x44Logo.altform-unplated_targetsize-64.png | Bin 0 -> 2112 bytes
...x44Logo.altform-unplated_targetsize-72.png | Bin 0 -> 2226 bytes
...x44Logo.altform-unplated_targetsize-80.png | Bin 0 -> 2301 bytes
...x44Logo.altform-unplated_targetsize-96.png | Bin 0 -> 2524 bytes
.../windows11/Square44x44Logo.scale-100.png | Bin 0 -> 1884 bytes
.../windows11/Square44x44Logo.scale-125.png | Bin 0 -> 2022 bytes
.../windows11/Square44x44Logo.scale-150.png | Bin 0 -> 2171 bytes
.../windows11/Square44x44Logo.scale-200.png | Bin 0 -> 2436 bytes
.../windows11/Square44x44Logo.scale-400.png | Bin 0 -> 3572 bytes
.../Square44x44Logo.targetsize-16.png | Bin 0 -> 1480 bytes
.../Square44x44Logo.targetsize-20.png | Bin 0 -> 1542 bytes
.../Square44x44Logo.targetsize-24.png | Bin 0 -> 1602 bytes
.../Square44x44Logo.targetsize-256.png | Bin 0 -> 4694 bytes
.../Square44x44Logo.targetsize-30.png | Bin 0 -> 1652 bytes
.../Square44x44Logo.targetsize-32.png | Bin 0 -> 1671 bytes
.../Square44x44Logo.targetsize-36.png | Bin 0 -> 1760 bytes
.../Square44x44Logo.targetsize-40.png | Bin 0 -> 1806 bytes
.../Square44x44Logo.targetsize-44.png | Bin 0 -> 1884 bytes
.../Square44x44Logo.targetsize-48.png | Bin 0 -> 1921 bytes
.../Square44x44Logo.targetsize-60.png | Bin 0 -> 2054 bytes
.../Square44x44Logo.targetsize-64.png | Bin 0 -> 2112 bytes
.../Square44x44Logo.targetsize-72.png | Bin 0 -> 2226 bytes
.../Square44x44Logo.targetsize-80.png | Bin 0 -> 2301 bytes
.../Square44x44Logo.targetsize-96.png | Bin 0 -> 2524 bytes
.../public/windows11/StoreLogo.scale-100.png | Bin 0 -> 1854 bytes
.../public/windows11/StoreLogo.scale-125.png | Bin 0 -> 1993 bytes
.../public/windows11/StoreLogo.scale-150.png | Bin 0 -> 2185 bytes
.../public/windows11/StoreLogo.scale-200.png | Bin 0 -> 2446 bytes
.../public/windows11/StoreLogo.scale-400.png | Bin 0 -> 3705 bytes
.../windows11/Wide310x150Logo.scale-100.png | Bin 0 -> 3263 bytes
.../windows11/Wide310x150Logo.scale-125.png | Bin 0 -> 3760 bytes
.../windows11/Wide310x150Logo.scale-150.png | Bin 0 -> 4216 bytes
.../windows11/Wide310x150Logo.scale-200.png | Bin 0 -> 5385 bytes
.../windows11/Wide310x150Logo.scale-400.png | Bin 0 -> 10853 bytes
lumina/public/workbox-bd7e3b9b.js | 2456 ++++++++++
lumina/public/workbox-bd7e3b9b.js.map | 1 +
lumina/types/nav.ts | 6 +
214 files changed, 11930 insertions(+), 377 deletions(-)
create mode 100644 .github/workflows/docker-image.yml
create mode 100644 kustomize/base/deployment.yaml
create mode 100644 kustomize/base/kustomization.yaml
create mode 100644 kustomize/base/service.yaml
create mode 100644 kustomize/environments/beta/kustomization.yaml
create mode 100644 kustomize/environments/prod/kustomization.yaml
create mode 100644 lumina/app/dashboard/[pubkey]/page.tsx
create mode 100644 lumina/app/feed/page.tsx
create mode 100644 lumina/app/global/page.tsx
create mode 100644 lumina/app/icon.tsx
create mode 100644 lumina/app/login/page.tsx
create mode 100644 lumina/app/note/[id]/page.tsx
create mode 100644 lumina/app/notifications/page.tsx
create mode 100644 lumina/app/onboarding/createProfile/page.tsx
create mode 100644 lumina/app/onboarding/page.tsx
create mode 100644 lumina/app/profile/settings/page.tsx
create mode 100644 lumina/app/reel/page.tsx
create mode 100644 lumina/app/search/[searchTag]/page.tsx
create mode 100644 lumina/app/search/page.tsx
create mode 100644 lumina/components/BottomBar.tsx
create mode 100644 lumina/components/CommentCard.tsx
create mode 100644 lumina/components/CommentsCompontent.tsx
create mode 100644 lumina/components/FollowButton.tsx
create mode 100644 lumina/components/FollowerFeed.tsx
create mode 100644 lumina/components/FollowerQuickViewFeed.tsx
create mode 100644 lumina/components/LoginForm.tsx
delete mode 100644 lumina/components/Navigation.tsx
create mode 100644 lumina/components/NotePageComponent.tsx
create mode 100644 lumina/components/Notification.tsx
create mode 100644 lumina/components/Notifications.tsx
create mode 100644 lumina/components/ProfileQuickViewFeed.tsx
create mode 100644 lumina/components/ProfileTextFeed.tsx
create mode 100644 lumina/components/QuickViewNoteCard.tsx
create mode 100644 lumina/components/ReactionButtonReactionList.tsx
create mode 100644 lumina/components/ReactionButtonReactionListItem.tsx
create mode 100644 lumina/components/ReelFeed.tsx
create mode 100644 lumina/components/Search.tsx
create mode 100644 lumina/components/TrendingAccount.tsx
create mode 100644 lumina/components/TrendingImage.tsx
create mode 100644 lumina/components/TrendingImages.tsx
create mode 100644 lumina/components/UpdateProfileForm.tsx
create mode 100644 lumina/components/ViewCopyButton.tsx
create mode 100644 lumina/components/ViewNoteButton.tsx
create mode 100644 lumina/components/ZapButton.tsx
create mode 100644 lumina/components/ZapButtonList.tsx
create mode 100644 lumina/components/ZapButtonListItem.tsx
create mode 100644 lumina/components/dashboard/RecentFollower.tsx
create mode 100644 lumina/components/dashboard/RecentFollowerCard.tsx
create mode 100644 lumina/components/dashboard/RecentZap.tsx
create mode 100644 lumina/components/dashboard/RecentZapsCard.tsx
create mode 100644 lumina/components/dashboard/Statistics.tsx
create mode 100644 lumina/components/headerComponents/AvatarDropdown.tsx
rename lumina/components/{ => headerComponents}/DropdownThemeMode.tsx (100%)
create mode 100644 lumina/components/headerComponents/LoginButton.tsx
create mode 100644 lumina/components/headerComponents/RegisterButton.tsx
create mode 100644 lumina/components/headerComponents/TopNavigation.tsx
create mode 100644 lumina/components/headerComponents/TopNavigationItems.tsx
create mode 100644 lumina/components/icons.tsx
create mode 100644 lumina/components/nip05.tsx
create mode 100644 lumina/components/onboarding/createSecretKeyForm.tsx
create mode 100644 lumina/components/searchComponents/SearchNotesBox.tsx
create mode 100644 lumina/components/searchComponents/SearchProfilesBox.tsx
create mode 100644 lumina/components/ui/accordion.tsx
create mode 100644 lumina/components/ui/dialog.tsx
create mode 100644 lumina/components/ui/form.tsx
create mode 100644 lumina/components/ui/input.tsx
create mode 100644 lumina/components/ui/label.tsx
create mode 100644 lumina/components/ui/scroll-area.tsx
create mode 100644 lumina/components/ui/toast.tsx
create mode 100644 lumina/components/ui/toaster.tsx
create mode 100644 lumina/components/ui/use-toast.ts
create mode 100644 lumina/config/site.ts
create mode 100644 lumina/public/.well-known/nostr.json
create mode 100644 lumina/public/android/android-launchericon-144-144.png
create mode 100644 lumina/public/android/android-launchericon-192-192.png
create mode 100644 lumina/public/android/android-launchericon-48-48.png
create mode 100644 lumina/public/android/android-launchericon-512-512.png
create mode 100644 lumina/public/android/android-launchericon-72-72.png
create mode 100644 lumina/public/android/android-launchericon-96-96.png
create mode 100644 lumina/public/icons.json
create mode 100644 lumina/public/ios/100.png
create mode 100644 lumina/public/ios/1024.png
create mode 100644 lumina/public/ios/114.png
create mode 100644 lumina/public/ios/120.png
create mode 100644 lumina/public/ios/128.png
create mode 100644 lumina/public/ios/144.png
create mode 100644 lumina/public/ios/152.png
create mode 100644 lumina/public/ios/16.png
create mode 100644 lumina/public/ios/167.png
create mode 100644 lumina/public/ios/180.png
create mode 100644 lumina/public/ios/192.png
create mode 100644 lumina/public/ios/20.png
create mode 100644 lumina/public/ios/256.png
create mode 100644 lumina/public/ios/29.png
create mode 100644 lumina/public/ios/32.png
create mode 100644 lumina/public/ios/40.png
create mode 100644 lumina/public/ios/50.png
create mode 100644 lumina/public/ios/512.png
create mode 100644 lumina/public/ios/57.png
create mode 100644 lumina/public/ios/58.png
create mode 100644 lumina/public/ios/60.png
create mode 100644 lumina/public/ios/64.png
create mode 100644 lumina/public/ios/72.png
create mode 100644 lumina/public/ios/76.png
create mode 100644 lumina/public/ios/80.png
create mode 100644 lumina/public/ios/87.png
create mode 100644 lumina/public/lumina-lightning.png
create mode 100644 lumina/public/lumina.png
create mode 100644 lumina/public/manifest.json
create mode 100644 lumina/public/sw.js
create mode 100644 lumina/public/sw.js.map
create mode 100644 lumina/public/windows11/LargeTile.scale-100.png
create mode 100644 lumina/public/windows11/LargeTile.scale-125.png
create mode 100644 lumina/public/windows11/LargeTile.scale-150.png
create mode 100644 lumina/public/windows11/LargeTile.scale-200.png
create mode 100644 lumina/public/windows11/LargeTile.scale-400.png
create mode 100644 lumina/public/windows11/SmallTile.scale-100.png
create mode 100644 lumina/public/windows11/SmallTile.scale-125.png
create mode 100644 lumina/public/windows11/SmallTile.scale-150.png
create mode 100644 lumina/public/windows11/SmallTile.scale-200.png
create mode 100644 lumina/public/windows11/SmallTile.scale-400.png
create mode 100644 lumina/public/windows11/SplashScreen.scale-100.png
create mode 100644 lumina/public/windows11/SplashScreen.scale-125.png
create mode 100644 lumina/public/windows11/SplashScreen.scale-150.png
create mode 100644 lumina/public/windows11/SplashScreen.scale-200.png
create mode 100644 lumina/public/windows11/SplashScreen.scale-400.png
create mode 100644 lumina/public/windows11/Square150x150Logo.scale-100.png
create mode 100644 lumina/public/windows11/Square150x150Logo.scale-125.png
create mode 100644 lumina/public/windows11/Square150x150Logo.scale-150.png
create mode 100644 lumina/public/windows11/Square150x150Logo.scale-200.png
create mode 100644 lumina/public/windows11/Square150x150Logo.scale-400.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-16.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-20.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-24.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-256.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-30.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-32.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-36.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-40.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-44.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-48.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-60.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-72.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-80.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-96.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-16.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-20.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-24.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-256.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-30.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-32.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-36.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-40.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-44.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-48.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-60.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-64.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-72.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-80.png
create mode 100644 lumina/public/windows11/Square44x44Logo.altform-unplated_targetsize-96.png
create mode 100644 lumina/public/windows11/Square44x44Logo.scale-100.png
create mode 100644 lumina/public/windows11/Square44x44Logo.scale-125.png
create mode 100644 lumina/public/windows11/Square44x44Logo.scale-150.png
create mode 100644 lumina/public/windows11/Square44x44Logo.scale-200.png
create mode 100644 lumina/public/windows11/Square44x44Logo.scale-400.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-16.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-20.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-24.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-256.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-30.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-32.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-36.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-40.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-44.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-48.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-60.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-64.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-72.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-80.png
create mode 100644 lumina/public/windows11/Square44x44Logo.targetsize-96.png
create mode 100644 lumina/public/windows11/StoreLogo.scale-100.png
create mode 100644 lumina/public/windows11/StoreLogo.scale-125.png
create mode 100644 lumina/public/windows11/StoreLogo.scale-150.png
create mode 100644 lumina/public/windows11/StoreLogo.scale-200.png
create mode 100644 lumina/public/windows11/StoreLogo.scale-400.png
create mode 100644 lumina/public/windows11/Wide310x150Logo.scale-100.png
create mode 100644 lumina/public/windows11/Wide310x150Logo.scale-125.png
create mode 100644 lumina/public/windows11/Wide310x150Logo.scale-150.png
create mode 100644 lumina/public/windows11/Wide310x150Logo.scale-200.png
create mode 100644 lumina/public/windows11/Wide310x150Logo.scale-400.png
create mode 100644 lumina/public/workbox-bd7e3b9b.js
create mode 100644 lumina/public/workbox-bd7e3b9b.js.map
create mode 100644 lumina/types/nav.ts
diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml
new file mode 100644
index 0000000..b9467d1
--- /dev/null
+++ b/.github/workflows/docker-image.yml
@@ -0,0 +1,61 @@
+name: Docker Build and Push
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - main
+ - master
+
+env:
+ REGISTRY_NAME: ghcr.io
+ IMAGE_NAME: lumina
+
+jobs:
+ # ci:
+ # name: CI
+ # uses: ./.github/workflows/ci.yml
+
+ build_and_push:
+ # needs: [ci]
+ name: Build and Push
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out the repo
+ uses: actions/checkout@v3
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v2
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Login to GitHub Container Registry
+ uses: docker/login-action@v2
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Collecting Metadata
+ id: meta
+ uses: docker/metadata-action@v4
+ with:
+ images: ${{ env.REGISTRY_NAME }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}
+ tags: |
+ type=raw,value=latest,enable={{is_default_branch}}
+ type=ref,event=branch
+
+ - name: Building And Pushing Image
+ id: docker_build
+ uses: docker/build-push-action@v4
+ with:
+ context: .
+ platforms: linux/amd64,linux/arm64
+ file: ./Dockerfile
+ push: true
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
+
+ - name: Image digest
+ run: echo ${{ steps.docker_build.outputs.digest }}
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 83fb74e..c42e560 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM node:18-alpine as builder
+FROM node:21-alpine3.18 as builder
WORKDIR /app
COPY lumina/package.json lumina/package-lock.json ./
@@ -6,7 +6,7 @@ RUN npm ci
COPY ./lumina/ .
RUN npm run build
-FROM node:18-alpine as runner
+FROM node:21-alpine3.18 as runner
WORKDIR /app
COPY --from=builder /app/package.json .
COPY --from=builder /app/package-lock.json .
diff --git a/README.md b/README.md
index 7850f12..b602fcb 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,7 @@
-# lumina
-A Nostr Client for scrolling through Images on nostr
+# lumina.rocks
+
+A social media for images and pictures 📸
+
+## Docker
+### Quickstart
+`docker run --rm -it -p 3000:3000 ghcr.io/mroxso/lumina-rocks-website:latest`
\ No newline at end of file
diff --git a/compose.yaml b/compose.yaml
index 2cf66fa..40d6f4c 100644
--- a/compose.yaml
+++ b/compose.yaml
@@ -1,7 +1,7 @@
version: '3'
services:
- lumina:
+ lumina-rocks-website:
build: .
- # image: ghcr.io/lumina-rocks/lumina:latest
+ # image: ghcr.io/mroxso/lumina-rocks-website:latest
ports:
- "8080:3000"
\ No newline at end of file
diff --git a/kustomize/base/deployment.yaml b/kustomize/base/deployment.yaml
new file mode 100644
index 0000000..5d43bf4
--- /dev/null
+++ b/kustomize/base/deployment.yaml
@@ -0,0 +1,19 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: lumina-deployment
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: lumina
+ template:
+ metadata:
+ labels:
+ app: lumina
+ spec:
+ containers:
+ - name: lumina
+ image: ghcr.io/lumina-rocks/lumina:latest
+ ports:
+ - containerPort: 80
diff --git a/kustomize/base/kustomization.yaml b/kustomize/base/kustomization.yaml
new file mode 100644
index 0000000..6d1374a
--- /dev/null
+++ b/kustomize/base/kustomization.yaml
@@ -0,0 +1,3 @@
+resources:
+ - deployment.yaml
+ - service.yaml
diff --git a/kustomize/base/service.yaml b/kustomize/base/service.yaml
new file mode 100644
index 0000000..62907a4
--- /dev/null
+++ b/kustomize/base/service.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: my-app
+spec:
+ selector:
+ app: my-app
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 80
diff --git a/kustomize/environments/beta/kustomization.yaml b/kustomize/environments/beta/kustomization.yaml
new file mode 100644
index 0000000..fb7dc89
--- /dev/null
+++ b/kustomize/environments/beta/kustomization.yaml
@@ -0,0 +1,2 @@
+resources:
+ - ../../base
diff --git a/kustomize/environments/prod/kustomization.yaml b/kustomize/environments/prod/kustomization.yaml
new file mode 100644
index 0000000..fb7dc89
--- /dev/null
+++ b/kustomize/environments/prod/kustomization.yaml
@@ -0,0 +1,2 @@
+resources:
+ - ../../base
diff --git a/lumina/app/dashboard/[pubkey]/page.tsx b/lumina/app/dashboard/[pubkey]/page.tsx
new file mode 100644
index 0000000..fdc92fb
--- /dev/null
+++ b/lumina/app/dashboard/[pubkey]/page.tsx
@@ -0,0 +1,32 @@
+'use client';
+
+import { useParams } from 'next/navigation'
+import { nip19 } from "nostr-tools";
+import { NostrProvider } from "nostr-react";
+import Statistics from '@/components/dashboard/Statistics';
+
+const DashboardPage: React.FC= ({ }) => {
+
+ const params = useParams()
+ let pubkey = params.pubkey
+ // check if pubkey contains "npub"
+ // if so, then we need to convert it to a pubkey
+ if (pubkey.includes("npub")) {
+ // convert npub to pubkey
+ pubkey = nip19.decode(pubkey.toString()).data.toString()
+ }
+
+ const relayUrls = [
+ "wss://relay.lumina.rocks",
+ ];
+
+ return (
+ <>
+ Follower Feed
+
z(6NSmepH0gd6FM$4*gnPF24_@^?4jhdF0?3?*&=l>8NhlD}U5J`oz$Uz# z@;Fv%DDzhv$eb?hXx~KpM@IQaO45Nw@_AUXu^gurl;YxjsPPSt48wS=f*rNr0ZRV% z+RAo0>}0iuABtxo@}!zzd7Z>W2H6BhNm4{iSa08OKYts0nU6z!=CCV!S;l`gyB`yswTyQ^&uh>~{n5G_GHfCw@HgC7=;d9AWX*h2Od^a{Mcx z*oyIvD5vY&J6HK!OoEcXLqdl^Es$RTwT704J+)r|S^#S4Cg;~<9;iI7tr$0`G4d^i zc7jsB8;ZQC$e(wY%Y!h+l(r&I{Vaoe>d!ZkzYnE2M?fjQxgsA!2R^uH|Ii3J7%O#< z 9{fLgN zQH$bTi9GeYIoctAk>MdBF%h^9i}n5YI=t3JKF4r^g>(o1_xc>>Ew{th!T)tVMLosq zr;+Dl8pfU0Ur4y0CJF<=_W_9*PO=LR^QFtA)GJaGK?C&neLxbfS+vfB!UFvxgQBB? z!U95qx&=m02A>P%0Z}$MF(Nf4XodU)M}>#cjidqc)bB> I{H+Z-sx AtNr}g3vd+Kiv EF#iHWqpE6BMP1jMVg&x+72Hr-9Nu)__v~OF}8GoKWH=QU6Tz z>moFDpF^p>A=ZWwbOZ7f&p>DqXb_a*(O}$Y-Y)c!?P(p<#60-Zp^Ox)>7KgIXl;Z9 zMMd*E<8`iy>K%rqCh1{4P<#*K Yf!seRf%nvf`I zIP!UrpE+3m+|Un7=e`e=>>c5k?Cp@Zf|i3ljd!qo8z}Wgp5p8XrSrGKaG6^(Kt50F zqMSIsKkuyxp<$E4M@UjJly`yVhnm2S*1;h+dERSJliM|e68`~;Te|pp)8%+7jFQ(; z%2YYtn?jF5sU82QnCKw%ZwT_`k#9Crk}5!R&XUJv8?+4a)1lP 8hg0P8UC?sK&w$c7(FaQ0`UR4N zA&z%Jz9O_Nl=`U;EdkxWNbb+g$uhqJO7<(qN>XKLktK5f#x0e{I}l2I11PmO81@v0 z25JqhBib1Xp6qfWPw{p{p8EZ0k{sVID2-cnloLN0d5S-e;JPAT9r;^haJEAmAy4h+ zgw}vQo+!o>S{C`~LZd~wJ+vCiji6+|3hh*dzM3F^Zao2|aT<+snxDnU)A$aD(ztbm z+CV>!mgB5|JdH=p7D=iD)kmKCcLDV@j6l`JGT|cN&!1>kg%Uw}jIAwT4o^SAwH{ ze;p^se;G>lOQAGg{h(y`beG(2|K0MsZ;5j1hXy>^mqMP}`6 _d3iGqU4T|L%+0I001U(|clLu%} zXi&5iVG|vR@T9q?<^J!{k=tJZH9>nV&&m6}5tQ2Z4T*}S@fePJx?XVJCp;v&DkjY7 zg51t@DA|t`>W^bDB09+T;6?fVU>&po>X$+dp}21kq>lJRhDU0`{3M^S)NV=j!Ban@ z0yU`xOD@ay#jePzff}QJ3zYnY`qfOen*}@KDuK@fJ#$sII}9a%yM+2g)x>s@Bp*DS zu|dy#f+DKc#)kCq_YJIGElsV_4$Vgd`dtuOowo!^ZNd`bshRb=39Wz3;rka6d&(nJUZ%0aW8u*+u<`~bhN*p z 9AN#Zpcp8_9ujDxRb0FWp`-S^PM+SxYTfvUjMK&m%&rcr8 B+-?$-#$)O`Sw}!=y_R?{``ZkA8pr8SYPW*Ozs5vUT>Lz1$w$#Y zdhUt=Pe7j986&h0l;$%8O8dlHlt2C~uZtF6 3qQmt4OFd5UWul=|W4-y=p7B1xK9e;Yh{@Sh~gM?h)352GCu=r|pnRQrOuI;rc4 zo|}f^MvU)obD^B(Azs*pLdnnH_m?Bl9__!@sHc6k2ze`LA$^(mgVMM}pq%EdYj&N~ z{aF%9{c8X%2_0@A+w=YG-}i@luqzI`=4gk;qbij6GFY<|=Ve2k)cte 1$h?mutpFkpXd;2~?{98yHzLiN7}4R0GT z;qkTP!V?Zn(Y@Lue!5+?3Qv}eGQM&pdxYElCEcg^tZkP!Wo=xZN6kwNz0-d{*TU;B zHXP=9Z2gRuo=$UbtyoZS=a-RdYvgsPQEqze-3D8CTDTrf^7CnCc)+$;+p3e-U%7EC zp;*GrJFz=WpB|c3vQI+ZXH%@QmJWME;qMpzr0NkUq|Cl z!>=y4yuZ7~%CBEb2Y&3)$4MIUC~xtp2KjWCZuYf3Xmn=zf<=B2M|Q^MPl{RS@atI3 zA(|lvTP%(AHcK=LIX}XA=cFF`y<2GBUP*NRay&%;^}@DW4oBpg)yg#TSsUNJtw)#b zKj78#-VL11=3a2SH1w@!OcVXjeh;4AA6ezy`&CbudG8;)_*1N(yU~$6ZX>U(Ddy>% zvrm#`-c!Cdy#v~heP!Ok#c^of&LJT~bY@3opU}^DM!ncKhx$d#zIy7SrS3hiHm_bq zblCe!e|GZAvhCYkYSrc4@w@xXOJ(2b-Sy70-ao^u&nse=xMI?CGt&!0Jubc|*(W@2 zhoaVZOYAeW-riAXc9PTQxe-4?bk;>!JKR_mUUgH*E8oNyejPn-HQ49iQu)Aw!Y2-z z`1B~*&^DKGo%5b6&Ncrq_hCluFyG-wEw^XRDKEI4!uj)uv@KzLX^&gbLEWDhC$#P# zvg_vhjjK+Dj{CgO^_|nQitTT>=YMw9*7Wv_dV6#9%lWi@(Z=(}e7z90_vdA|28LIR z>W1YvZP9#|>DFiFLw9xW{dV)Uq{h4Yr{weR{ n z>f*CSp2U3qzOQ!5N&hx}gV*_=EnnAl`@-O!F};6wD%z~^Xv2}tch1d9IAPu+bX%@N zYkJw|*Kz2(p!yY;xr gbpi9Jj*k*=dRA0GbdiO%rUUS<%N;wyKm?m zHL}^yO^Zv$dAnMcv_5cUv}?-2&Aaq`X4d$cdw2V(>%C$vg3jF?;q|V_@&UKkJl-t1 z9N5_Q$}XQ-Rl?6EOf1;1rd_Vh(yCJj##C?d=+l itYuR@kd~Dh9{l4`l^41L0^Q_kPboLd8 z%U5pp{Yxj4ckFlM>?`f{+U4HYYe>MOO0F?AbI!SYV~D~1>WRa4Hd*$=Xi3$^i%P`} z&S(B%N&eZolL97i`QD1NZq)ZE 4l40yNz}*Ubi%Q?72~XW45#lx|#UuOH9fTkLQy%=RRzGwaxT4))v+C z*C}uyPj@`9T~?{;the*3v=6wr?v~;90)tW(Z~UP*Zesr@ z*PFFD+SBZ6z48_NpK3It)`7hiNd{jB#hmE;rRcKQoU3 IbnX6p?vR@7@YOmeQc)N}IM0Rx`oH+(%~VAadf zCKV=oCVJMpqI=M{nC_A{CjtVuRX7&bF~Rk8nLfO}>NuZxRc)4eZ1qXLefH0p*RR+l zm!SBTZcBSUJu_k4 QZwwreP!lgmpYnHtq?lyD%@s>Y}7Mj>6_{Y*VW9qt^lpnOu zGrwWkTT=@BT&ek(!_lg~aq%*H0 mj?W%WK pHLrn6m{Jn=_5R~R*{TqB>6wT<+ F|J?ujI+l5N3@*Y`t|&!9goFz{vLAh zN2^Y;-dhVDzIpE4&j-)zYc$8Jxfp&Lx}|H?hM{kxHciUap-@3xX ^Sw?yv6tDos1g0Ftm-~&rgYa z9LG3357_2e_wtlo(zl#vY9)Di8ShPeKij@wqqx~|qZ7xveYf0Md(q>vOV|8d?$xkX z>{| @NKUduNnG!qr?fp`Tg_B U @9mnaYK3Q2uDCcYeLntf4KK4clbqrPBp$jmFLJK;JBz#% z=AK`)>9N1-?q%Z}J#Bt3a_y#UI@6?NUeEaoAD&+5T%9Y6$|sMGX q-Ms8?I!a2{(BudZ~k>Bx$_;5v-by9X=&E^+TZJQ z-24q5Kl+{Z;OpSu*VDZ{$|SuQ;B4}!b)RglJQB7(TDpE~KdViJ_ucE+a86y9OMD-2 z_~f(A{k>cEIJV9{VMeSb=b_ox&y +e^cbsgKD8PVe4vdeYu^h_>aJ1P4ngKyr)8fA~3 zxIV;(_i3jhN4Lb*{P~Rcr*qA&2IJ#)bzQLkUhmQu$JNYZ_NC*SF?aeo_O_q7bH8Jr z7i$~NH`(k_)?oI;QzZsJT2R#D$AF0|9v^S)^{(gFCUaN4**aoELXL-Z78uRg9y4~Q z?T^N7j&BQ`o^aV>-%a;ThZe2Nbt5!(=$4C-KUaRea&Jtj5(Avdy?;^Mq}ic{W-gH~ z?Ms;KnKSq5`4<)3w$E){x=-`b$NJ~GdOG===c>-{tU}x_x%(PjsW97Xt7QFj=;%G? zrscZ+VXEhrTs^`QhCEqRY~S5CxeEpdUijL|bX=^}&+Dg?=OyH P4r9H gQuTH^lfS3G_dEBYr2+3w$q*!>Fe(KCjMmW@}*N|IvoC9xADmyqo!?Xu`oyN zL!T#@tlgHdv|yfkkv?7x3$5&x(>c^?Ow8N?c{+Qw&;QwA>@J@Pdf&Swz2$Yr>)dRc z+iL5T*GqRYcNx89)q{oyuR6RK__%M$0|Q*{hTq=l#pg=>-InvmRd;E;BKyZ8#jAb_ zbhvUb;lbWQYY$#`t(wm$@@(}jR#VsMF8&tq<7~^)=X@q_N-1_@LVV&j)8-G`<(X9S zephqX+Oyl`Iz4W%RO7Dsi6e_P9lE^v>iA~QpUj-;Uin~4vjUG=mL1V-zn#g-AoI2D z`j$Gp#Jx eRB!v}w%<(s zHk>f~YMRsd?PYsc57$;>C-3<@+xYIVZ70S)5AHk6uwJdX&)u9GJ%8Z#yy?9V$MXBP zZtu`%(e96?$!o& u)N#%rhTZBW~=BcX1n%`TqRf^mSLv *2z3&b@ zE_tJ#;n>EzPBoiz;Ay{I?(y~a55Ki 6JGCo}a^C7Ys;I}7tvg#B@3m**#opd+=S|$xJ7Cks6-};P z&0}EtC}G)`nws%LeXh(dwD^_P(^;byzka>@)cw#vpHliwPF5K>_w@KWN1D1dTX9lz z%lqM%J4ZGaym(}Q6uZat@s(wdcW*sCq0jcv_a*FSY 4A;FJxNmXE z&eaEx+&tsgxhpPSdkdcqTe9YThsie^E$w*smw)20J$)9qrqq44@Va&E?V2Cnq~t64 zy3gna9Rhmgs8i(P44($ernrBXY*wVaX!>?_@^(GRTY7lT|HHgV&)$C@d(vpzM*UmI zo|SdmKd<-uaej{Goetly=vJvs?c;}=xE$Yqzu3GrE&5*ev*;hPY(x7dYkx+YwaXWj zdthxFTd!*CYPGqp*;o5i&85SVYM&^Z?{dA*t-H*5)^_lb&uzLC>YtS3-s+LFlJ>dx zxLG3ho?X7Z(|wztZqugo`+RPm9S67DrnC9^)Me)Lwimaq;A4;{!GC&mM`kY%6EJ7fQB6>_-^r;ytP!3z*n;d+YPp<9XDyFoAvQ4tCqGqzV7+b zzHbJM$aQzHUazN4JJx=#^M3zn$9rMb#@x!i^82~i@`v)z-n6rm-K6~!7JkcFzC-7H zr){?H8yqqE@a;P@>KKgMKDnm#K&uCaPaf6qJr+=-lR;e_hozSaPAO%vc!l}Ou3KZq z9=qJ%!mON6@|{y7CzlzZ@p$F(#ja|vIaAJAw%w?2+;(2&M%i|cN+=e0d56iX*6qhV z$rs`toTFjT!e{!y?O#qDk #%-_KUs z*nD$~GarhNyVi9;(Xd~aUd}NzDd#`-%rmzm$FKP>3645+IO*in*MVzp?tEbtRnh#+ zgWVA`#(lhfKVR)dJ9Dhnvs#td AkgfUU=lQENatmf2sW00Y}TvI9SjmcR$PA zC(XBx$&=?^={NQp%kJ##`gZ&NfgeVAcWj#&FuI^e<>{4MJa&oM?HyFES&1SRn#9-s zT|(lTjA )66X%h yy>@ei&cdr+)JbHdV7 {OCv6{^J%?(ZmIZ+6^8ozylxQEv)samzT4Zz_g$NJ*%y!NcPr$#Y|*E9Pv>=! zCeHg}w|}gyU$6Pf>N!faYTmNbs5;YZrdS=!e|+Qd0h8>zttz$6cJ7%L(you!OPnq> zq}dBw)4c0<_8A{GBP^xvmsY`UMcSD+J8$`R * RT__&^*cl*+sEtV^;RR8!S&&IO;OA0y$o9!A=?eUu46WibG z@p;A++e4SOc^2Z&fqefy%A=f<&AEfGHWapOvA;kGgL+k4v^5`idsRc1h~7nq9%#^L zM4JUE-XU>j`W=e86diorzyH%-ksa z24 {n%2u$b6A&EO^h>Wh^>?)Iq+_u&dFx=)LUSsb>7H(6+V1rIiX{$t*;UdF4C(gS zLOR#_(2u6~?;ms6dv@#iMlKhZ%x~Me`t;*JyNqxD{DRZfc_+H%eYr!=dso*ddxz^L z8!qgy)$#ESuWg?Vj`!@kd6j3S8CK<<*;!ZW`}v*Ce(xm#BT5@eYZFV<;PKnD>cgYk zp(*Y!?K*kZbTz5_dEJzz**f)nF}lKe^F=jXt5wamVgD2FVYi-UKl8j`fw&76U*dCZ z+Pi9Ca@QJdhu642;(V`#zf6saAK17%YGm-t4mFxB4qJ20GP^ CM4XNvZc+iM^*U#cHf;rCyw{_3T;q&S=GGu6XxgI M UF-N zxoN3<153D{s{1KAcdp)(C$>BjF=(_^@Uq=wJ~)}Y?tKJb`(-KV3c51hRL1uJ*^sC2 z400%Jm3c3`sREubV)5OaqQv}Syr~Z!-ziC4rlbM3{fIZ!v%r@{$8EvWc ;Yf{p|AZVUT}%al3e% zZeqJd;HwG$c&nPf0?0x1pT{6w$D)$`n;S?{Gr?mhQ~RKX_W|!F;-@y1#=!oMfT#6C zd3q^bN6gcvBcA=TX4D7f>w#}4{8Rtc`kw&4k?>D#QX5JV`#%FdI1BN6;=u9B0>1@3 z#gA!7-G6G&F9Uq3> X?5AzO@#w zcK+<~1v8x=?3Y!k|MlRzW`WO#FTb6&c(v=d6L@ @8jTowBlDg{}r(49kh70;};ITWfu6I;I-Eu?PDd0*MDjJ5)$oy>Nm}u+V~se zmpf_;zJwCT!iN3t1m6Zc6_amFhoZ!MZu}BQE%3bV=o+ddF>epPB6!Lx9Xo2D`HA59 z{8#E*n@ *-?Eg9VYVeO^ zIJN(zN)q#a_@$)A;3;lm)yBUYd>!yS_iE$+2%hd=$v4NOCjKh;Wh}aX;p?u_Ib>hG z!PE7V^J@El8oUE|=D3}V`oMPi@XKs`|3 }TWa~5_|Rkv|FmwYO||Q1I{0?r zm2%u4j{hZiI)8ZlxjrLhz5;%Uk9dk-O$^NU1aA+X^J>TM0C<`|;^;+jC`s(^CwN-_ z)PJSEseR__;FluFKdrya@X> z%;ock?3J?Gw(;P}KlPt@rDMpx_JD5&p4J|*YIzI%@++@jr7Yb1?rTTE^ZBE64{-eZ z!PE7V^Q`0}y~K9!|KihQwCk8JW%1|rN82X7_sqwFw-@7|p8el-% -Hd`@y8`&j8ua;rSn9jd>j?7$!3PLFBcIy!%s&R-K#S*nsBQaC@0l-A z9RJn byP`iFwTV?J3F%f(X z_*c4bsPB}x{}+URj-SRrNn+m2T3&y&?r8s@IYo*2j^ORZ_!G$G88yOov%zbxzl=Dp zXZ{g*9zPmGwd>csg#7$~`c8@4m2?08lkEb*)At{gC;!~ezmswe^E1HH`Ae*t#QX*D zG=A(??fe%hnYH`JF5qeZ)4oyaoBGM|?*pHe`Tq`Hd;FD-A^WdbN`C&SrxlZuHkgkC zPxn8WoxdI69kRgx1g|~+`bvV=>T8qI^7^CxP#=`eA@{!@c;0{Hn#<{ZdWr3Jf~WX- z->UVmUq&83?zdXr4Lt2X_McwN+I1ZN7{OCssc&kB`Sakb!auS2D6cp%uUq!d=YLAq zA@la&Y5X~UrF~$&KX_XIeEs3_j5@-0yTJ4LN3nCcQr@hby#6R|+QVw&cLq=K)A}J+ zt^X0=`S}~MIq*`F*v}2{)#0Cf<58&M#C)Fe^89nZX$+Jk=9_?bgn!CY8@!J)YJ>SH z;B7_xT$T|_^=x||yptBMcKw#CAdf${r#AjT@Rfvr>c3k5)4=ofi(=q7sE_F-wz~kH zKfh7zYW)|&!+YYXJz~}Jtp!gU?_s>nFme1Nz|-}M^1KE!gkiw^E%45Q=Q1^X8Jo26 z%gp?FgQxlDb)z%}wi^rHPVii&CjK+vdHjf1I)>~kKZ57;D>Hm+@J$gvUH@ &~<@hthdxK~HN_`{D-{Ut^i{~++`iv6WUe@9%elAza=f%xWLyRBUXXgBC1)kPF z@wA4OCXRD7c)osT=K6a=D}HWMNepajfQOfS{m%nX=^QeD6g>Bz%GC1t;T&CvH&Ve; z|JZ*xZvNe~z#jnbkp;eBP5JpvX5*)S%q%PM?+4!|3-RZ#m9_YTz-MLr_JD7Zh4>9| zc)DhR_XJP(Pqg=G?W$eBd%^Sir*)~8{{bF s_FoSdFS`Cvab~XnG2pR< zGJXE60FN%DuAj{Gzdk;EI)EpZUP{M+`#%@FZ5H_3;G2Wz_LN@3*uE?Vzik%$-vm$V zpXRP(Ci-6+7jGx #wJk1|*#H*dZZ{X?t=X;Nw)R2P2 z{(Ir@q4i6A5d|EZFn DD$;&_|W-D=9yW)k>Kh4q;aDcw@dA%m)LF{ zc-sGzH^EEo{C@zCTaeWAm(EVLd>LE$`)i=7ERCU(#PNsQ%Flmk>?m=$ocs5mYye+hY7^+?0+TOn>`dtHpB+RG(2||F6O0BT(x3nHvy~ zqf*|^UcP?O-p$PZjR8;RKgC1+*U8ASsOR`sgKrI GL<8U3C7aeSX{6G41(}Id~dFC5iphe+YtG@YMLJOzrq>0ngV@+I!q? zMlrD68}PUUrurw}B{Bj H3}7{+|R-^PgE>zggPnugvt{4m_qHp88EOsO|r7 z@O1x6 HMR( zsSR!?qc)hYjfdw=z;m9SgD6RC-v_*#h@Zw_1XpCx2%DV(-%jv`88F(_%v@ zdusW+;OYD&F0WD;cI?lhW7_i@75HzyEqMO?OT60sGY&l6|8YEO`3vCb`b+ok^irDG zpHn9}ex-i7edgoA)8|*_S=sL2l=)5I!$kaK%jN&ZaXH&rWAoGJ4=Sf?ASWOHXicRm zlC*omv%~$%>7{TvEA!#t8-VBYkLxp1=1+j9^Ox?wDRH@+`}d!0XVyjj{b3$A)_*7E z8s?qA+YA3n?;WTG=0||1{l_eqEA{^cd` %DFi?B{*A_gT-_#zB!S8mpo&Cdmwwo#Z zlV7F2sX6A8!PkL*HD`x5Z`L*K^8=MDje-3KfNv!HQ<>WJzX-fNc;e{uztVoN|3~0y z{}WFywY;@P_D}1F=3nVLX8*&$cY}Z8&G0h8OG#q>C3su#H13(Xe%tt@JwM2YHcXW` zhYkDp1&?F)_x@2kerv$<=SOl)bD$)#|4+g{aZ1OY+GoDB@1NH%F3%_iw(AI 9S!1y3x!=rgR6#C{%vr}fJWwV@<2Z{_#r{g2WyWWIyo*{{+y$oxd`wEvk` z5{Wrki z@%kY~?fCTpPv;-U&8pP@roVXoj6hM({nWw3Q(AxIm&=qi!M1(D<0EjU {wzmyG)J`**eD9|4}P zztsQS8BM&X=W*H$o}T|IJ$JZy=5s}7jn{y0nFar=!Q&Cu@A%cOAH$eGub*mp4R|-< zpT>mlLzN^Rzm4Ftvj0=S)A`5euiEufwdbGvM@j5t!}0e8Ukm;@ulD>~58fU;#Z7%s z%fAQD&p))|qW9?~j<<5JKhJM2PmiTKwi^t-nO6U~Tq%DNJk38}x770aV*l(vx1-d5 zEAZOauZ%dZ=Q!tsZ-@AK{bgr^43zoL;CcO1nbLEJ`4+v?e*c7As$D ODEKW6Ay7_k3kf~T?PJ)oow=I?>0{YxyplqTlO z4oJIy%?DU*{{z6&^^ewFX5zmIp7tN@+k$wh-Tz7P^7C)ncbV~TJW&4q?Z5k-`u%G) zNg6rF>g|({&27>AABo4WC3u*{^Zb!2NzC^LUlBazDF!ajs13GT0iO47MvQhn^Pj-e z`IXu6?=mQB{+EOI)bg)({B#COlC2i6cKz%FPwS8Ne{Sso%HTbZU!EcI`IFi4YYv`% ze}H&1ywqMlwu0}h#j8F43k>~p{4?nG?`rOUcks4Z82^>v{k7sZ`RyV7H|#&}F!}ny z DmR*f5_0-cKujwc|f_#Gm(1bOtI(?EfhETJTTfMyy)?2Y4^7_|=YIr;+mYm)D Wb{sqKID>5_y;(7$ 73|J7PN^+9d?)(H~+dscb; zXzlR+Ge&s m5u@PcHrsyNxag%L$=IEfp08$rE6cC-vHhhJbnJB*ww~w zIyde48SOugi+rS)*scwDFZj>w`LPy!h~P7`e~QeL=bx`XYWH6Pczgx*`~F`oZ#X|| z@yCG2Bm7MJe+r(iKbh^n`+~Ij%gp%S2aj90OwWJNLP^3SxJ<`?A3T44$V~ig7D-ZI z7W|(9?+%{!3Z31&FDRd0VmqtFS)2c<;CcM1|FnmdB=+yPBsKWd@izjf^bBMEF!)|t z<45O^lEnOqrGMUktNr|=zbtM3>H4WQ{wVO;>rYASWW({l1fP}jqswyn-`~&d{yhj@ z`}|Nl|Fu`h_n+iH2VQE=zeV8tYt6q}|JEzh)=y^qCxFk&`Il|gpZ9NS aLZfQG(CR{yzvl zFbn=GtdpcjEnewoAU;3l{Kc#7zw!F4#or6O_Vq)p{~zFa{4;a?8NNZ1hKTXY%=*o> zQU3gy+4D0Le6ZI1sog(U!TSn6GyA{ZrmWpRE& Bm9}Hf5 z{i@|(g3rq5uMXQKDK-o9cOHCKEuQv}lEm{@bw}2&-%G*s{aa@4e+%yX^ZZvk{v*L_ zkH6aU=OcLS`!BWrqjvo{erkE+-D&qfwEs+$Odf1_{u01<(AvLh`FG&?`a%0w?e(|k z9!cu1wSU!)|6TCBe#pPt@oTd;jn5BW?fJbQJn#R^tltXz(ypJGx&Dp?AEvc`)%O2e z7Wtt4X`f$mWBl^qr6lqCdj}qmP*Sg7rdr??lv|*@*sSY4?-)BQ(W**)%lza6k~CYZ z|8yUsBr#w4pd=+~@oLBKG~qntwHYCqL}J%;~i2 z2bFO-*`$})t`m4#|Ky)uT%I0Fb!@i`d@bj#%9=?B|7fv*Su96M`9Z7?4X-X1*J zH&6=0migP@J;2lc*G`eX)v8i{XG_h`^M_aD)vlxW%nv&!KmW-r{}O!jEcmZ=UcUZQ zJSw{XJN^Lho?`sy{8E~@|9iCjD`m-!`B&iS{*z)?vxb>>z3}J#qtZ3Z{A2JA@K3&J z4wa4}^A#@sdHv>cG?i{*yKwNdf3w4y&H$z70P{D&cLdLIv!?4DmCV<=l=k=UiBZcB z0iTuqy9Yd-KjfEQO4lIA|KTs5`k*8+U;eWE|3}dL=T-s=8|J%!=ldrvQ_>9Et_5Ec z{ii&|kV^>+8|EK?r}5`JYevnmU70H~Py0sc+*8}kM}T*Nf8uEkb2-_hm)PzQc-nvD zTj}1VcA3v{HSPQ$UhV#A0G{WM+NC*AlGuMA@b-wG`c8dN>;D#b8b4y`#qHv4x{2*d zTub}+YxAc|{8`Do7kFAfJoXfWlEnNB@bvjpX}`H`=8u7|0bc32|IL3FJhjJT$TsOI z`>%3c_RsnB80|W?_Y*w(R@x8dXMm^iCyw?$ts^Cg`3vA%g6DZtdw#m#`19|N^E${V z2KK)eytD96F{tHzlH~q#{H#j-&j# mA@Jou)FpU3m>`^bMA z2e!WozP{)`pF#h|XqPiz^H$pLpHi9H@rwrEP|LrzkM!QN|MlRT37&i_Jx7=?kev4K z50F2# j mS*wnFHpN!PEV_8kT%9U+B5q|2!xwL=_4X^R2 v*{ITG*=bz)t zNSWUPzL{44mBzq)j+gTJMe%c4M!u<@Z5_bV=VxB`T%J)IY!?fj&TrbkGzX+g67w6u z)A+G}wf%n!p4K1tpRQp_68kUnO6JM0nl;3H7w|NG z-W&P C`inkzLj~-vu4x;+XaB9 z=f61sWaj>H7I<6m)E@O+={&Okui$z860dgrn!S_#)7n+K_F?*a{^ko_Y23t8;`r}^ zw@3duZdTdq-+wY+@x8qND0ZbRwaR<|_~!6W@#mxpg^BsK;N1kTW(=6O_#l7(L#&!> zF!SrcyTU)6A69sAc}Cq}yIUXA{{L5PCd@xJx)K)l)wBAcH{SI0)~=)X%$t9bd1I8( z9#A?5%(n+m=VxB9c{0II1aA+X{L+iYK}ll&7ysgw?g8daKmYmf2dVY10q>B7_!onx z{`3A-dJX0HzkzQp{8JlTp3xYxo!6H?pWkx1QhpV9>Ob#awd3~&Jgt9TceD {i|Jn$HCM6EBBvOY5b+W$@i}u535pM^B1qy z{~Yji|Hgh $LR^ao!0nsxzhO8fOppFe?}bFv!5@2`RDqK zlzEpQX`kPD3^HP=p7~+mJw^YC=kko&V7p}SJbsxue`@@c_a9w5>H4EIvHvsR?X~7l z?dO-WzvRFFLVhWJGlc=L|AFA?{*A|8X&;zB3!cwUD&uxC3WNCqAhh?N+ViI=_&SK6 z&ON1PH^s*O2Y{#esf?1^{vQP206c&Gl3U66C;R^ez72TF7sX5M_#M&FN&WZBY21`v zdnh{gUtCuw_5MfcxD!i>`HtXe{CV%G9luH7s|jAa-Bc&({9ylwMEq<@W2huC{}VjT zKaV?WMr|-}pG_xq|4?3O->GfpCxEB^)A&=F(lyNd0q_;UQ=Vd1I*-i10`CPLXez7r z{AsDDBl(E&qc+w0Ujsf^^glDtPfF_RNVeeh;G4#d`-QjZCbo+P-%P}xF7Q_+^ScC3 zu@}Hg?fMy?T_^SaEwlW6@J@(7vwS%NdHyrYPX=$RHGXR6{~~xg|7q^%45fKgl6d?L za>(Zw#jhqYZwI~>{44d#KA7(Xp6(wqJAS9Zw*XJ;CNt}|kfBcMzaK=;os_OU>I28$ z7rZ_E(|sq6K|ZQfkeGh}-U&P* 57p052gcJvHVX(|gt zdQl>!*eeLF1f~8|7Ruv7O667YqVvuHFY=2uEYTdg;zdbYsa-d`Xn(iIi+J3#rzTS3 zI^#v 2;YH &X)D>?#*6e0UX=kiWtrZ%&0s zq*QJp%8QEf^py5dDPc!SZ%Yd;Bg#ps-EtzYtyEMVKS(PGtq7%dYfzz3;%kY#w$l99 z6 Pg9dhRBnWT_Tj$=K@i`NYtmN)Xoyvk?B&Q%LGSC z{aPu?S3#-$bt1nWN=b=QJDUWzS#a7)MO#GqKPgph74_*U^=G@VBc-=HL|$9TZkH%0 zrGD*$Qk(}x`9CRD9l{S9?-Rm~l-`~cc~W|NO631Z$^RMDlfU!Aj+FMtbtu&*K`E}= zP}=Vgpp;0d{E5hulKnHGFQBE6&qswq>1_f0AjCwdDU|wA1WIufgW``=oPG!;dn@Eg zt%a6=lK(PL{E^Cu^752HBBlCDqP(&wSE3Y0HDUixN^w+2J=xU~cBE8ZTjWV;yc&q| zhC&-biL(=Vdno=$4x+rNC~roENZLy6Hy8EJqMnr6YbEmkq%^+nqMnr6X)E%il=pyA zQF~FYtyI)Ol#|l9b`g0}dh0Fn+Ddl5qFh_4yc^2t89)S-;*Sz`q*UKa Kq+Y}#dkp19~E}T zgdP`q0*XJ M#XahBdHW2pON_GuJxwcY~ ztti)4x^H(D<=RT^v_Ls&ODOfn1xluE=!a11kB7*U(pyjbp#A6tCEi Qejpp>+giVouk#dTchX< &zM0pD+#nVdUTZ_D#(6*wyy~uZf;*Zot zly?>C3#E4aMLrNp{SOlP5K$i{G(wa|iF}O6$3p4c9tg!BX()bByThS0KBGi_jL>mV z{E;RJodzYl1Ss`45lZ|#p$kO)Vv%1ebh*%#LRSl23#ERngHpR2q4* NV*;i2ObHfB&jO1hUmEHp%1P;MOOYp~{ iw}OkAPBpks?n@?L~>awvt_psP74-^)ehventr$ z3#CL# _(ALGB$W8GP-_1? zRsM@oyBAPTdQs>lp_heTfs)@OD7AYVO8t8y>fb^sX)Cq&PL%(XQvG|>(=&a296r>p zAss@0DcR)|<)mb11f_Cgp?O6;DUE9ZD8*X{O7m$2C3|ZqB~l8lER@ElyeKE7bFvzg z?5hi{A+#ox5-D-DMV^%G>p-cfu_)J8s<%Zs#n(jC|E;J>eO6zV-XM{Z{eREx<#AYu zv7m8Wgx7!1?f?0CJ%%RrIX EswD_mz^<+oobm{)@xxIYd`R}>CJP!Xox0m-- zS8OWUQvW@-r_ }gZ z`^^78&+UI2{}j)} d0uG$a$DEnuMH;dOqp{x=+%*B##bKQT6AtzS102myDnQaF8U0ial7>Fg_GW( zgw+XC+U0)#HL;}C)j{441KVn*M)rSWcFg$OYWqBO-}~49G3wRb$|Yu=?Ckj9@T7bN zOBEjf;H<^^mZP>8i+_86EgIr>#mAD=ruCi-F0iIl={?7ex>XO&TYrxKx50MKW?ecv z7c1;gxLkuP{R^2^Uip1_zt8&j4tTWR^d_{_( yG<|F1@W)HD=>)k3Sd<*(UfqALlf7oErOW w5XVc;9ysYuudu#B@UISEx=($&CCA=NkuermYnLypTUxKd ztBK>TJ@9^KU!u#TaeMmZPu|nHX0dG5S{U7a-leV8xEgO-^l&Vn^A;N7cE#6UsZHxS zUTE9Dz22?E)ytPCZ=Xwdr_0bruiHisayh?sM#z_@wMW(qo?*D9%*}Zf+&^xuT5p=p zmI E*7~E`9gKNzc6I zNbff$i;8`?byp|2@4(qZ=UBzotM$&&uvea`rTy*~3^`RsvucLU{H8GxLG@m}bxG-F zdt>^sp9wBYR{eV5Z%p4g@HiN9qfk9-pZRO6HQ!k3c$`^mc>P@lIsLkOS^W55bHR1? zv5o^86mlO>{IUBC-+CA8NZ}u(Qybn5+E}+n^prY=#m_v|MAn$B)h_*R5huMqQ2+Y6ps)GzS(m1K)) z@9Ms{ic1PV;@0f`a5Tj6(s%2e^dzUMmbdN~a)10|^@6s!&E9VgYdtdGC6Bgci+!t| zP5)JdyOHhl)s2rXxqWPvb+lb 7S7P-7bAM%SrFV^ng;X z7emb6U2EVI_WYaQ=B?RJx6bcde|GF4>FSdqlU^5ayu72%s<|D gMlD-@kIa^g9Ba^eP#d9`(3xw{qZp&6{NVoh8p~80&e*Ok@A}O_A5h zFJ51XcN#hPMi0H!XG-VH)*#=^eGc1~ga-ROs5&U<`l!dYH|eb5cIi82PI~@ F%o5;l@kFWU^J Nw6}ZiruJ7Bo|?aInC8Zi8nNv=JifB5&VAFDd+N7EL) u(H_Rqhx zWpmSZ%WNO_s`J|K)eXC@7pKQ~`c1oB#QevE@Qc%XZfl%#R*9*zzKvWR+oD|f?c2FF z>JRkjv^{abM(uTG%8f$x&XxLF@J_QEXS+;vUU~7r&{evH D_Rii54e>b8@9J>U(>!>(V@=WC-aCw*SN3q+HtJ2+M7uY6OI12oXzcySl-9)$ z54;xQ=omk!kbA+&MRr{}dnRybeaq `^+(``*g~}3gzu;EV}Wl!|ci@=1gB< z80$3nf2g|4sHmcL58%X5($XN^Al)U>-QAMXjRFGFpp F+YlBMh@NJB4p+vf3;D^s4B)4*-U=4ce)z5=@9vTdm6tVB}cVqEc< z-!JJo9XaHTJAa)p({euChH=?d5i^}!BN~Ig%fMXtzkKV(XqtO%{*3IJZm!5OThO!( zaDl%|0IG{VQn_O?%VNAK3)PEKhI8$&$X*}$m?io0+oC@W0;{=Q9jZ%~-qVhdz3jMJ zsmVDpU5=aZvjJL+I*PTjCa_;JV82zZ{G6z3w|X_L$tga|^;l=bc34k#7%Qfmuz%a7 z+A7~PH(Azm>%WY4t;#DQ+l+BFAabEaW72TnC1bs%LeB^EOAd6Uc3Bo@ze|h|lkh9r zJ|H_hC0+bQ`|vkDJDE>%I8cY9-6yGnQWTGbwe2DO5tsk{ZFx8D{iuy9 zz@-4X*2zIp$gW+O3W&$$|4_XyuqrE?CBMt_G9J6EIs0)Ej;2|8oQyOvd?}vD8x9;? zdFJ{=cw_jfqbN% 5`L| B-s!%=)!0nfw9B5IqOM<9!=Q_zZEF(m6<$mO195oXuV87B7zBx?t7 zse!In!=bxAq0(^b)Dt_&cVl;({p*z#oxZBE5#2(vbtA>f^r;iYFt~XA`lDEq3|$?V zoYoxQq51*m@Gcm$EG1TeO9ONrjSKUAr;nm$2uLc?q=x(1W}6Jf;**xgQcX{02M!0T zIKQBqt~y-jb&}~_s30w^#|Hl4x|`4C2?=G9csK&i2U?(8j7Vohu(cxL)^w)-ZK_U= zcm{(>opkF$m zdnP@L!Q2|Ywu}9m!|SyK<1uOTC;b`o0 _>aEL4Xx#o_2 b~A!Nq18Em8*9=6`0u{{)%R0$b|qr3F!Y5fxSg1v9)`0* zcy;p>N#@x~X&1ukpts`QWqe$Fb?FUUPclJKa0N-OsFL4@Up{ B;EWi7h*C4JJiP|eQHN>ghyP_DdK%eqk|A~6MQK*s^{eKTl4 zQrha2# en3YKiXO#e 8lYcJpu1Ruc1fNH`}9R6bO=s&YOVm^f0)S< zr;nC3M6Ott{mRL89zBfK<_OO5q_kSV$-GPc0)gPGWwe8NoNl|#^D)5X0=kl(X>N;^ zHm|t*oe8C3x@KO#6|J6jUOL30_dgFs@v_;^JN~vspIx7_lsg-5fYrAu6AG`xfTL_i zt``#}dYuMvA$tvIK*r9 )e2yaKKN`H6UD4N8e8= !l~`niFB3iH1K{SMAlJ;vcMZV6s}n_7Rw z9GO<4d>l==?Sv~~aUe5M(0WUsyixbo#up}w#J!O;vLeC807NVbM@vbG5)vXH3UGP< ztAghlpHHB|rEy?)K(351A(G;`44q$Bt{mH|uPMfucbn~k57S~#ncWyYDHEChFkJBQ zn)FD?6%p018uaS>(i)^404^WUebBOqn)v(n<#^6yDXq*8+v g~FkDLI{)iAaXw$+x)?%jQAS=keq(4{5cmr_xfv(WNN>t&ztxhz_#KiPE zwvm;X(%txm`P)*VT$+mQ 833Q@7bQ&6-xH>p=u7nI$+hPG+ z0ibKD79L|moKhFxj}cX!vWG-4)iwBcu-~}mJ%7;_@9db{n;nlrlc>*lMm-NkWOq@T zTY^S(i0cR}Lu x$;BI?nUf-iRBYHuOH2acR6lf^WVqs=ag1@ z^AU}|P1J6tA()X}FLJ^TwJ>R)`igw?WBjLNZM}@<7NB1tp!;J})mU>%)$IE9XLU7i zVI5S$%^~7ULWaFs_3vY#nJPn^VLl;6#t$@ZgXC_HNphST`0aiN{5y{YQ z=sXh!x*cWTq+XcQD M`gr0;RB`QBJ3?LP7dS5)%e~SL` zbNxber6+%G(2~8C=I|?>+Y`VQ0lMRig}aAsRm?99C?1RFGNX*T@o&W$2jxG!Ua(GN zeTB&<*|dD(UP1iP2-&4_is%hvbSFECz20V%+MXb`ak4nTh0G0TKpYGUqrFl5=wuzR z`{NQE1p!W77&S30N+doG-d}4Eqw!wEOuj)moIek3+)MvWr7?;LYH?rXGJa`?GOKPH zya$G$;{drvpaG3m`Ib?=RncFLrj>BAwq;NoefR5Kg9^IZE4`IaXG|Aw-W3C*1h`E1 z+?k&oxBhz})7$tN4a*2`Uxyo8B)o*|;i2wZCqL;5YU`tY~vD5qc=g2TH~=w6-0O5?L%FU#Yi4{RQB1pq*&{dLCK+otQnxL7|?Y; zYFj}~S}m{QX^^4%LsY;=5os5p@esiF@ZBZWSKvc;UjN$qDW`U(*k_q6h2h|wuL7k3 zF2{2sf*?d=nAdLsE@Z5s0oAZh=tkG74*lG(eu;mb-C#fBZeE^8FnLE`JFmgua3j>< zlo%^R6F)b%D3j&Ok*HRiUrQ9%{T5~kRXC_s2?Y#6`;~yA;0pR$k*TFFxap3igwM24 zDjD?t!%yYmm%1ACs7M=;1Ek+6`*exY#?L6n@Uppa5}XEF)tNy#b$d*UnHfy&O%^Ty zR}$!E#S8By4>?(s`E*g?>f@Ec$k4E1)%oD{?}zC=PB_a4kcMYwzA++Ypmrh=pEM;h zitz00xF4$nC2(!v@4SQjh77b{DWFT{I)*}e8r3K4aDdJ_PyIe?x6e1t&m451YlqSJ zJy$-`HY?d-`&ZV?eE!*3$>i6aBIMt}e+l#F4q;lb1`>+_t~AhPGl94MP9P`8`w&&q zJ{VD(GN@v0i!Ua*DN^6DpY0%D_TF0I)ZAW8`QHwvn(+(1T4|*KJ t2HXLI09< zR`ppog^$o~x280V_=M^}7vRbQUHjjU7qBK`pDQEKCr_FB^oWbfR*R*@Xw><)*W=%> zt04B{|EY86b*x6FjM~1uwd+(w_M~%)2xb-Fx@DK2Z3eh RfyM zXO~=_!|AZVf7DL(p87Hgt#w!*1n M!gyS~t$TOMcWK}N`) z4f?ss16?QK)Y((v?& 5!F zS@EasF*EfUc@`zQWD_MKwT*l&4H;zb3hfuNSB3`k&Btz;*T!t#s%+I3L-5e#+M}G* zf~4d89)*!vt;x%)(s+c Dia=HuYeqE{2LhvwqC5iIlpAbU#x*R>l zc>p;!OBWk_bg2DD#Qpqnd@$tR!jz(QTi!IBd#Tq*IpG})P54mp9kVjsigkDf`~ z2tiY+ZUrHOa@_7f7}9q~+|V+=ZNb8YFH;>&lECLYWX%ce^lmzGeV_^hhUB9W}=7AePd%7MJyJ4wFbT@Op#n zHJ|~#YEswToQxQ|8{;1#xqsq)WI%CZO|klm2unHWyNd4nI|$JMsr!J{^Ky+oqp` 8(I`#)i$5u^d1aBUC3E5G$2o-(jFSe z1o322ZZnLki~WNUQ`@NSz;O>u+_xB%%}4s;y~dK~mP TNg`rDFDaN8J!kSHJMi>4y|Tix(=J*n zIx;`$JNP=fM8#9i*~-(&p >_2+4ms z8x%UUqPJXT9no^1@3tn<%$ue7)|T+Yu71Xbw{YhS(Y6CtXDJz$`bD}1J7iA*b#;Jl zc0s1_Yukd~Aqg#gI$E03WXs>~3Xzv+`}s#c2N{m}?}~Ndm%;iuKj>wpG-qv@V7~W_ zP;kpH>D&Lpb2t({3~(WH0~%27Dt?B0s~?hue;Ap_N$jgd9$m~gX@8dXd-A+UXV1!8 zN+-nT>Uvg5ZH_+u9oKe+9e=%VaC*kcsrU42rh{b~3_<(VgQDOHdd=x3q6WhH>o*+3 zb>qy9y~=6S&It1=R6k~GJCxMyh3@iWaMdAARocOcMp)mkQqBD n=bp6U$n@rn_Pa`PC|hr-Zo{0mhG2~`ISy44j;*^CX=~SY-Dfk z2w}D(KSpT3!Bs>;0aK$QHyPj>0Nqx32S&|(iWEaP&HzW0sXG$GpFyyf2k0Xg4gb79 zhLl{MrIx_*S*5|P%N1s5VbfqZWiBCybw({pE9S}icLV2xA<#W`8SU{qFj _4 zvQ$O}7rD$+laxhzl$lv8_{w)#0C-+v3`M~egmrdTYLGl&D3{MPoKDY^?sf1RK5dUz zET;oGJSyIX!v9$H%dEHrM={*U7Xsd1LLU($>&j;q4y;SUaL4LnH?RTi*97Q3@;=iJ z49y$8=b=Z;X;b7~rmvgkv8L9J!LA^@q z@s@ONHrg}f8iTs;fNqMsXU`?oc3o0<-%()Dn)B0bQf~yAB#Gtdk@?=7>F=K?iUj4- z@kKH_yh(Ml$solN*#H?SzDq_0d%cF-M-PB&3Ury|4MGXbyKTSKnm3?XK3zB}Yv;VO zCzp{VIe9m36WG*)C(Ad1sgUYssfa+m!DbOSSyR?GJ*wM(q*As`&;VRVnE_oHsZ-4? z?dGn{687NmcZC!bk%c;N-y+#%jI0DG9#O~~Z$lP7Fq3&IB%`QOD`aw&qM$lozE4%g z@XRb%ug`(J(}a$LInbT`mt7G&obajnkiTJH9|z-^QyQfXub<3ym?iHIWpxJpKaQlO z!CyEX)CRSh+gcjZzomN{Q+Ki*>Dt2v8fc;bt_9HbqOmFD!=x-#qv)vDD4_R$Ccqo{ z$AJ(kw(P;du6i`*pLW&lcj@AImAFP)vqvwfHV`P^(T|R35E2@24$H6va4mtZ1Fh*m zY{ax8ns(642*TTpY6b(Q*go0Q!wAjfs216h@iGaA(qg$zdFqNFu0>Tp37w2IR%E{_ z%z~2KZLN2Zvm)p?K+Zs+0i9>Fb!xpNOYSM*=I_3UOnmHjA#m6g6X55>qIt#Ri=oEm z$6@p9yk5>t$-~y|>y}mba$Eh7zB4THn=L)YVrMV}bs^6rXh6)C{062bJ9M)rZ!X-M zpGK-^s4(Q{zo=xXA6GB?sfZ3lVUjdudKG-*$bP&{%BAX>^bJQnW_=tae(Hj!ptuJ^ zP}drYf-A_Kv-ctvV}8|?X4vwT#-!bdeFVo6*JvcmrG@H8&3ZMw-wQZJY19ux-(MD@ z?bb#3j@>fSojpIj^h`}#sM7+jqilfg+pS9PTl*x2b#su*KFPyKks`sMfwaBfPuS|^ z!)~|D@W=J{wQLq&f9uCMbokpf7F4kOMP_&Om@8q+6^Lno^a$ kdRUA7!ng@hfU%d%H64T;Qh6@uH;TosVP>VT^Fm*(s3yDvc)Uj{Z^d9OH1N ziuwuQ+5uf5B&UA{pQyO9zu(sNT}r%HKa_-5^F88svb7^{OX7e#XL)FJU_;QxDl4am zWd5SITPQME>90(Tlg}RC!&m~@vqAfXtXZJ}{aknr8 GVWg$fnGo6d}s#EmAls z6X;Y#BrYZ{c!zM0)UmpoL9`CZ^7bd+;6KeP85O&0&{34^C|!hOE*OHkkh3XhKr_?g zwWSs1cX$rleH&~jc%lyTi%nbpMPHt|bQ`_0|EBIr(s%R^-TMA%j}rbEe)e4D(D0<+ z%PJf0jcTJI;{}GGt|Jr$SCACrBS9r* 5iw@O{2k%&Pj6*X25}xcH*RPWMI8T<> z7mJjx_zMWHIu2D*RxI&4YWtq);U}h4S|wG;X~P3tC!o8(W53nHr$3Qf n0cN!eood_?5Iu1XfT7x-OVn)l6z=ae`2X5n2jNbIixF60`4 z281@!hD`u6u>JMkeDBU&rv-gwJ2XL7w?inljIO9Bxt_XhiWN7n*{Y_}Il^dojkH6Z zm(Sqc8kekl;Ww3?D0eUf9S6uB92yX<(y^!eXtXJ>CS}Ojjxe@Q7rG&+m^AJD0l6J9 zuFmtVZY-JBs`V_)zX@8wyJSft_Xr1ORyH{EZxq@kxVVrtB-C| X=O};_A!W*;t5^*!cqPfv%WNj{rk(yu3M4_c6vWSj6FmJoYI8m(im8Dt^%K zv~y_!;6k2t(13~$L AMZx0I&SHwg?BX>>ydPnKgwXbWEX|2!4TAiJnNtV z{ZY;JlNJ2bbCJkoR4-`EqQTTkA*sWCT=%I*^3Co1!Ta|e= pcp8++PR_$X|6< z@@7U^T4^F`_ZdaHWP%~6`vHoAE2w!ky74@0Y?~v!rW&cp;!@LE-~ipzlce0Uf>@bz zz}PnN)l+zgc1vdP;(h2V{rPc8boG~=&x1oh{>mKY$`b+Hk3iR7-=DJO>o7CJvrEGd z!svxRf;ISpSeMT-Duv&8FKW`|?f88VoV&JkL#k!B-S|oQL{I%1>O9J8?s5*ByZRmh zt|!p#-B-7x>|ZN @WMU@cBEk_-~IhE97K|Dw92rfcq@S9tIka$t&bDi5x9t z{G#F@w&UfgcEQhK-mrePa>`z$XP$!-!9QK+-C_+*|5V(2_4&;-DaxKa8`(7mei7lK zaJZ{n2Sd<)A@^cvKsmmpO|Yt+&tny$bf RW ?PQx{xz3Xh0VgvoGOM3<7=X`)5VjD5j?k zB@m6AU?qPLwCklZQ1kCTyZ2$DDx*Z`kYMo%4XcbLb0Jf#xBs~oO|P4bQx*h6P}diV zf-4ASlR^$Avye)+ xsfnkQ@&7VxAjpY*D zw9(F3iv9Jl0VaW>;;8a=vZ5w}O#&?@A^csIf2-{~B}i;Pe}{&rb(M2ro}1RU%>(-N z2f7-I{g-`>zT>~YQF jnnIRbZ*d1T~o)6r+R^9COj20uY zX?Z&0w653Kzdl9 1NRRENbjjxf3S@Yd0< wS) z!{92#O#~>gKQ_ZQ9kHmw_k1)(y5S~LKzd+#R6EOEUAa8lS8cj0vW}0;=J?M~Zb9cm z5YXk_iIS_xO31&X%} a*BWauwo9D;$aw5-aTjM|Fqj<=ZCkqhs~<}u+6?l(S~Qe`fkMtj1i zu~An!#uKs}^*;PufobtspW$N^QDPqV(3+)B`*F>G3vfe#?yZ+=Bg3|E$pA_3iKG*L z+dGv@5@FF+*E_1O3WYlQ0TiseF?|zzs x`Fc{4CrFC9{J>}90adKJ$^}*3!%M9 Kn;Dt+@KgMi$x8+R?n3x8|1gt6_oNp5+{ ziQ*6zO^n{wPvXs~!>XW&7Lnoz!2JqzEjqDH4+ZmuGln*DKlHZ tTUqqySXc6vC&? PACRa0RJ1 z!hpz|9OQdpUXdhi4S?k5yRMHku0AOxW~DZv`2J)MC#n6y_O5q2NP{`otACXUQy>~e z(V+N5;dAY_&g!G*$4V$5|WcVwB+hXftv3tKQ;Q4vz|ouPU;1 zmGpoWcE6>jLnCedY27bjPTAGE37(?wLt#U!0QVcv9i5xovSU% Z1%|akJfyCf3J1=D?WD8b9+<`vR8rj3%RDD0iAYeR8mAZH?ZC0MQQYw zt)k0~3A}AQ;VZD9q%slgO-=IJBSfAWPcy!d*hBpN*IOsW)6n`!1*c7p)u@_Zl>!Vw z-2^BKuAujyduv5pD_8kFmcL+1*hJ9Cgy1823|@q__F7seKHTT%v+;FIedMvFHOmg> z+tIF8yjHR&j!dC&!4|1BoPnIZK;6Xu=i=m4zpgfi8;tQ*u%OT4Wp=3%5&1oL-B#(I zmQmgpN`_dt63Ksn|0?o)o4WKNnaMv)PT4mILgMLp z8|)Y=+!0z++sAV7Wl6V}RIPCvxNk{;qTmXeUbO}(zQbA+{bqdwn_3RyV(f+QZp4K_ zAPumm_^Z`-4UBVd5_nHt4ZybJrYK+_$Bf{t%0(9H>>EnC30 z9#^lzgVk#I$CW*;(;y?oSrK^fJ12nNCED;Xb}aSPsXR^38mqWz-U1C~pSJvlp*+IG z=z`t!NEX0N1G*flzpy}zN5eg?4u2U<(ee4QZwKi lRj}QpSfFMKn8e^?9oyKf_f{{IWvQ!hICZ?E&DX1Ksca^LIPN zmD>lWXDfZ33kq?sdEdMm e%W-t`Ei7kbyh!;C~O>VMHl zFwRODCAJ4}Gk`8jYV4UQK4WrlVzt)xC*#v(Wlt4JJgN4#H9S0nH#8-Gzv&pE<&Yy( zE1eBDDGtA33z&Sg7!N5gxV=1)b~WSzxRAXZG@yNd7aDfreD{oxABHiWs+U13T@_fk zy~Ic^r%7C5YTO&>s~@}=Tb^C~mh{%fN%MY<$L%e1PI0hYA&!^4W&%DhAfF*LASt=9 zSyndI&PJW0Wn%SO!qnk1KDd8w20O6Vu sM+b}UeWZSW)+2~^o#_zSN zbBms_W >Q1kCJ!iA~Q9p6bGlbXNWlBNb!#VE@aOI4XDfTu)6WLoU*VfjJXxo zr4X`qupQ_97N-k2$t(EsnFbz5-%AS__yKo}mq8zG>?h8uyI?Zj|ELdio9$ix^MBvl zhC%iRgOD>MXh2t{BwDy{i!&DR^n)!THGjxPUl_g5{o=uD?lSb^j?~l#wkM@Z{=L`R zjWixS8pW{%bpHFGW6LEvC*koolE;v>G%Wbn1O34jvWI~NWaP? CAl+jKdz! z?tWKLT4lp{&PN};U|=q(D6#*OIx(-bZnQ||6QMf z{^RCDQE&z2X?Q93y*hvH&$s*dcN?n!^DRSwf5GYm>u$vf-q!PDb!n2X5K-bm4>@lZ z+({u__`b}$^)cc+B|Dkc=o`xa-Os}yV}UKm83#0=@`mtt1|Ll3h!E)d|Gh?p @H&q1Dyf@kRe&o>|{f`TRf%IDhblXcXFFF_cxPHmN?&x-@m)7fv+AO?~)RK@d zP9iNhB;NZpL+yy*Q$w@-VFP~im@-M}O#^rHqfpJJpU#V{f&+kC40I*Eg_H)KqV;st zYFhe~q6Yl;K7Igi@fZ6 H6V_eoa18)yB;IJdLY8_ zR@%S^!%-fTh6-@YfG(xcSc~iw7q8t%Z@oW*!?B_g@KqFZspF%?-$D~x+}sUZf7G@M z&$ev-3%HLgdPe3l$Es)eVg1^!y#M4ZhM67UmIGZ87GcU}D!aw<+Q*szqu;Da0)a#` zE*G=^q^1QNB$o;~XmUak6qF)=-{S@Ba*p0hzr)UoGC+Mxl=it)M&kdS_f-I0sT!{* zfe`0uac3T{y!rU_mxKR4ap@Uho_<)l)w#`JJERj$v0)7-VTfjvvPKAbO4ce(_7eO} zK2-L(C^& +%qFl@+}B`=e(-ms*49BZ$f}8v-Cs64m((F zBRe>H(QEq&onxSEqj52OrokqBHj9g6vlrl20o`*-RY%OfA($@19_WgsgfBm#Bh+Vw zJWV$E?6cKvA<}e8-B0{AG|YN4OE+jtmtJyEuh8mQAwZm$;Q6!k&q5Qxg`8DF1LEix z==hjZG?zTCUA^C+IT)?)hv~S~a_5?l{M*9LOf2xCz9D#&H_EOmdg|%6?&lB2sUgB^ zv5O1d;q*HLP#+kA&a)aQ3a%iWz;r!9>(|~@!mj6EmXu2nSIQILMaUneS?Q?j)JJ)J z@!KSSlqzxKK{@Kv+gWrOT0k*ja_ QY*E=}TH`qbho6*X(ilM*#Wm(VBT2R%Oa|c!70d5`8 zH8P<%V+}Z#OZ?&?Y&(dC9j@Jp!Q^&zKx6Z}w`TTmz>P5{%z}%BY_LIbMare_(*u)M z^TOxu7iLr%>;*67wg4{VUI7iLi_tR+K4o`s+MRjx^F^=~H!t@yYrH3-7mn)^SErM3 ziH5(%x~Re>VU^>%&Vp2R|KtySJ&*W*qcmh+_ZoZ9f+6VmLhi-TfUK$mjQN*nnrpQq zOtY0fl<>}`uT$e!cN-@e9}mGf{b=6F72RFxW I__J>ApxOaJ92t$ zG=bcCB4=yMN4BGg=HON$gwtQYZMsW85b7dztlnMV?Hzty7$XxigxqVO{r-fa;0lr- zR{5X`w-vFD?`bCeML0Cq`gxrhw$|ySNps_Fj?hiZ=eI8@4T2rMge=?*g<6A|ZS_x* zHy8nbDu@1WZYraxAkf%MkJ%nkRJobe~o&`GQzR7waO|pBp zMSim-L}ahUJ;-;z9;0`o^NtnN^Um;F$SST(|2)8L0lF;1J4c;yDo^CiS-GF7a+e4% zD9~QHM By-GYA=x40Nyfc+HTpH`H_(t`LwEoc~c&>V;T*Ep}p>w}Ea#RG**SP(%P|2pn zBi@*hKQ#Wt`BcDn0CGkGbs_gQXh5JG6@88FjOnA>$ !It z$ZkrqlSh`T__{U5qj1x>-fZnRm>OGpx_#-sgv_}4^z`|RO1M_kmi<-(Lz9o}(^BfJ zzh@QzE@aIL4X6owW~Fsytc%msHTklCwak{ScP220BS
|f z9LL9}l<)g2p)3z739=)S_u)^U*tTipHr`|0^ Cl|(XifrV(>!M~PzyvD zWGaavdw8hZ4@JQhRFN^2r#$4cSjbpi8Ib29MrC(gohYX#pfJfaV^UI3XML)Y;+1_K zk0J4~TZL~UXuoOK%ptMqA<)>?(d;hJ2;dF?-Tbu+e$*Az6FZ629!a~Z3eIh_i)nj? z?-?1gN2Ch26kLCC#S&DcIblV;3qDRfEzu&7AMu%eXPc~U!1!l73p__01iCw!Ns6oR z9vq3{%85~()Ga2m0XZigC5FC*-KPu^MC*bMJ@hH OT`_q}mP0E-f= )BU&5uYAXc;a{N;nQMzSJ2%pCV(i^@H1_% 6pyBl}Bf@HxEQM zXjByF#pT+ge6ZX;8(;|9?*tSDSJ3Y6_}McW?nE0roj4|O=Ta&W?s;tqLc&-=X7jc} zn-d<#5Hn9`CE^bRx0k;h&~C;1b~i&n*!xW#oNI2(h_3+dB+xy1$hl1Pa+%ok`B$Bl zMPGK?88>G=b?P#QiQmA@ki55up7X{J$Im%pI>tykW8yuhPgc1^=v<#_54|}Pc@Pu8 zodUX?i6B1n;t#W2eHY)7ThmpICnaL3$T} bklDM@!ia|DmfB`S@mY z+C8Mx74ese+d?IYTsh9Yim=mYtmuLP?eFpUUfwB+0Nfd%Yt!;vyvr(b$ESv~hAEJ$ zp+1y$BpfSRmmYA+RFjSW3;gQp^M{ahcMPH*z2D9x>~Kp+4{ON_V}^6D2h{tH*8uJ; z(2Z!O8{B6U;WBCuG >i zceQ0#J|!4-Z0V@k6>|0hoey(BmrgZOXg9}Q{KXG7m-t+AZGT*CYp&y7p%KxIs}Js_ ze8tt2JF1Dwqcm)-!6|xP2!?FoJ~eTaHyiB=cvc7A`2ZL4%!dX ;l$_bAUwi~Ue2(rvlgq@fvjSrxoEQ6mgjw9f?j zZWy#*$QlJ2km>3SHmj8`%@3J_D3#TzRe3^ndH?r|3PF7>K}(xyy@l`0ez|Dw!N(jC zxZBkbxaxd@A?%%1w^e+1^v1ne8M20ix{$d64akD`js4xvQSRQmui|A0BI)J0{{AT< zB3ShzN|vTho8xVYi?0H- 7 z1M5{;iZnb4A!|Kozso>(mHdk9DDL+g>y}ZpPg&+iCbFDkn8u^CCB!?EJbbV YOPo=TX0iI>QWe}4a-n-n%dRYDv^ccuS^lZfD_*^M40q(^AKt3Wpu z?aksHmOb31M7=vl6mrSpJoj#V-4pYahVOV4j2%pJU{Ts})n x(h4L_9h$e#Y?=C&?mbM@-~$Ay %Wz?GETIU z?){UX%6~-pI`UT{%yJV$ng>-EqRTb1Hd8aRmlME+Tzk-f))sdeZ|25FlxFZm7snp6 z7CZksU*^een#xxnzWSl=Qw- 1{~~{wSqQi8Fq*AJ)z?Mq*N!E1>5R z);Ur+fwh$`jPrBj@E}PC-+RkxOJ9`-`1zXvMgG5}d*Z{8|61$6{X(Ak(12WA`ywA- zZHTNT#>tB@*M9lRbTp`O|MS#0Wv!^mkGiH6G<&xx@t8$h>G6wNBBK6_)fihu>;5g7 zMctmbw)iO+f{w! k@FmU65%feI_EWhLcuO2~ z-bO0#{R?^0pDF3`(7exmjrK2pa&;p`Qz%U^eGgUZP?-|=esdS-#> (#o|-WU($r$7UGw31utV1{fMW=tYwpMEvZeD zvjF`<-swOC8a84Vu=5#Avo$u)mX3bV%jrqO$9iY}_K=l#=Aw)-B$&A`>2Aos5Pz@y z+eXR1ujLJre5-+cTGxyXS>|>^=3odq4*O6PTtP2Q6>aN(7pM8Uh*vzqz6yWKm?hcX zOTcJp=l|U|;b?)uf}t>apn%b3QfQgjQ|jmT#-c48d{Du(>fy~YrcE@!Jpj6{=Ipsy zE)QKHVI)IkMdN1X-cNDyrU9MB4Rz=bvzA?vwC1k5KbMLp9zK#EWL3l-AEC`k-5K@; zX+Ak8YAylaOCJK={d7!E`w^Pa?jIQ&FS^#TUyBjXJPWK>qGaO0t80pc(*>h_yqFo6 znbK!wdAa5LyY+?g6KRG1Xx@I9sGk6%5}@BBpxZXPwhWqBJ1n{SPI1xKFlha)h`Wr7 z_Rmy-ndVb9!@C5PA)j}dVa3tg+v`OJq#FOUNoyX3NKtt^ISd@bo+Sb9G0^?qP=}8# zc*IQ*7?CwMH@fZq%EJ~tAe%Kuyr1$sghEOlzSQw?*Rr-?mr9RLA;-?}MFlO+Zo~&Y zCSgH5>Oa8s4rC7w4TyK+03k{R>Fi&xa@o^@nEyHz%u~OB|HPV80A3s_{Xk``91JPS zoS$D(aNDC0^3@MZ`s}rZH$*J%Us+w5EMUP9bUr}t70`fQk1;L|WAa{a#uV^;HgVdw z@Y+Z8q3v8>g+o!+tQygw>o15CAWS!V6Mp#daZt$uTfr{hDL+~^98RW^?Av?=7=pTI zP!wE2=%4ACUZj(tzM9-rFNyF ag2%t&;IX=7I>11^tm0_I)y{Aa`4N%Fz3dyVkP zu`;j)Sd13Sb*mG{0+vf;2-gYfStU$51(Nv_5iEnhxC30sUKtuto-|GN6QlMCGhbgk z9Smp8g7_lyow^ %jP$3k3 z1VhkqxP+qM3Zhtbp{_j>yciGUBcC6oK-E6T@@^N)3+xOb4i3t32w^?T7X7`#D m*^7;c8ObFS@})A7i+DNN_K z$XXhkK^ptFi)!|D& -48^16ahJ|F$(pJ4!!-<&f8}3hJA7N- z#f=O`aD)NeYoKfT^P0M7*C(I?g*?Qj?7?*S7*ytzUH_3~XLoLzKkovDULf}`LJGxI z$pFF3c}E*P7RGMF)}N!*YW_i)Z4DuS3pt~M21GN~5kdfZplu+sB4*qe-g)rsE6Utj zO>#NfZ?NVJo@tXCpeX6N5}dt=!y=h?FWL?*n-ZyLUzQ1MI%{XgTn9tYakzz|;0kg+ z7;37MJUYwVL&eZGp0n*EUqhVA^UoAij)`lUI>GqFt~0A@;&{l61;Pn35nl~po+u#< z9d}Ot -vQlKw;!?b&%@cC1QMOFp9bcyw}z`rhrUv%&!6EC#5_HXj=$h} z+sL#NOqX9`QXjXhvVpC-PNao=!lRwPFZD+l(C w&*ujfs_c~eZo|$v!t-wrRBt~dx9|VJqx|8x@fzSh0NvO3 zdJfc8%CT^Z1N57?7awVAW{TPj722?QPV$&f29NrMT=PDhx-(RI$& 0XZXqx{zxR8W0y3LLyaX@#Keq&N(5m z`d`lr67;8)`0n;56({yH9vPo|DquE;PVT*z-oG*XO^F<@=h4EDZq1{C6ii|-2V(|? zpzaeC1y|5dn6vMO2xL~B_H^RKD7JfoA}o=x19LJ4Jo^QVOT#l29a)J|O7sVQNNs zgcqcMeqn)bYHsLZtY+za6R4R*wjfT0FJx-qRXvjKAQ#iFlTEn9hjjtRtG1-jDst)A z)fXSJ6~^@ ZH~KeT_vLZPlGI+hC&$8 zJ*(8oQq2;>sZlklQ;G;-{aM%aZ6?cyND-NY-c$N6_2X=9Wq=D0boJooV~LL91OLrl zsl>@LWa%&R5$(I5C{&$R)wbw@SigzE%4tSd-VD-~#Zu$XIgexRAe~R|f`93Uo?zm% zuoB>cfbLV|uU|B^6 >V)zRy;g&htvR{zlq#~5dJeWz|^+!bL;=G&S(Sxkfp)MlOE!K_l+C PG>6g)L0GpEeDA0dZHowCIhW7MVJw2+d=uX7aRn z-s>VNuLE2ppc^n?T>Z{%=sZmFRQqCOMpyO1HBul5`4qS4LT6HH%}R(MgVSQ@Q_6Gv zl9{Zoq2~>MdMQQI&)t45 %5Qk_^8RrXHQYki=-S&K4L*}hEpC0e@;p)@Fb=qXLjk($SeNlm6uI}c zK~^><;s|jIM$+%T`oooae>pbA`f1jIiDcbfcj;0}I# )}Xz(oc2JIg=STCL7%!&ux1TV>qaWc$NY zi2Qz?K *b0eFT>pD`JM{&|DozGqk`DNy@4YgN=SEicXzi+ zcS(aZNOyNjcXxM4N+XSQryz~wd(OS@S!>_<1|NRwzaEA?d!E^Q<~LS+b&_c!{L-rj zK`Y??_g%sN$=h77w;p+ EjBNXzd9qc` nR* zd`D;W8tI|{8NxRlivE_pTsPVDch}NxGwHhIdxuGD C1c5DgSF zd_N G-g)B?it?owRPe1Fw=E2xk(u_<0%XlGmNB0I=N4*8U|t5%?i;+N zz2R;L#%9ddHw4o{L%Y@V0|l=R?gDUtiwe4}3)vBMDBUUQa&Q0CUR0^r%**l}y!QRA zxFi}(3;ntEAcK5|Xb7>V1lzl-G6;d&u&(mPaiVPdP~b{wAJ#w{aM3`wN86M{@bb22 zPY8dTT9;lwVSPjl_Dxm-!2&v3x!L(E#I5600sVZ5v)q&TV7bp{blyvCSX{0FTcZH1 zFI$~7fcqYF-E*Dr3s|{Xsc&U!yML|UNn=~g?533{XjM6hjB)Gkis>$#5?^Ka!(JeL zOTU?}BgdVE9H`SxNq@<9{KIQU1-R&-Yvm`BO+l4`q)V6c2*(fihry|*Kl0qC?CjY% z$n3A@^vJEmA6%mou_n=jBLh`|4ZN0*6K xz+*7h` z6B)>h3A$$Kqr>~(89lF0niAn5&o3w%_Vv2;@iY+!ZRN@o{#j vSfE?!k&i{FpOPDQV=_j<4F3~l^A-LtwMJAT9T`eV zsR*Jv!81(rr;h5ft+e8?JvE%`BuK|fmTr}Fxsxgn88+}bgbljqJcAHdtuJrcL?B2c zam&9-*OT}qxEhvQd)lZv5yEk$>fw~ Q&zQ|Bo#Q87{9#{5BNO43k6!YG z!HKrh{(5HHJx-?9n+q>ufQt*d FiU&6ejMyNTc3&Hb)e4 zG3qciz$(An=6gQx{xMRx)Pu9`Vqv8kR)oqA>HH$~Z_nYs@fQztS7>vOgG7t=*Ugw! zKdg|5Pw9jbaw-n&ew!Q0ob9}%O-yUd9Sh%R=i5{jmD5f{M>XV}6WLW--!I*t6 zmlbSjx*E>Ev!e65f0VjmR`$ZL-fiT~^40fL$$b!d0molL&~@Rn=#^PbMjj0$`s9pD zC(UVuhJl^`DxCV$_GVt;=5Ov#TSQSxZ9QL=ZKkST@` A&}qsV?dPwCfwMDc{MIYSL|Bc? z@3T(OI4+cS331UHCJT7qO$@sIU&AbwkO#lJFH2&FC)#kHq>}WWW3|7SI=0)WJBwG* zjc6QiZyz-Wwc56~6y>!H+j_Vom|`YBPOc}Cgy*&ac}YOGwNl4TjFdGoFA6?z-w&pw z)~Z{C2l<7+JTaiDz%CmZ4h~L7dr>KL_-|I?mqe?h1C?<+#g&Ph>iv*<4*753yqXkr zaSKEaqMv5A^t~-ed05m@Eh-t~O=e|hb|ETHNPpcr9w)V{F`PpNv1ZfaENAJz3k|;( zV>$>95r19m6K19R-}SWr`&|t((4{rQ)X?CG{AbN{ia*kx&||Rn&rvTvdW^+Mi*x6j z?pW`T(vJSIPn0*<#^WsI 35mUP!Jr3Dw(MmTnHW?I)IcP13EZ6Doo(k29(J z)oO`$rDJ7W^yU<|rfi~qfJ+IwY)jp~%a#<2EZC9i8dH;19KW$OaU&0&u*w|Y{9>vq z)5SFUpsCl*1raKTvy0FZhVlORrX#Ia(ZNvyV>>kgJRhh)SB%r-`}~iVXaSZmzf#Kk zJh4iD#h}tR4Gkto319F;Lv}LuB{Ze6wx|a=`R-f$wbH7H#zOz5K%T@A;u%Q11)u9t zgKllU!Qugt2;RNS2(y^II0wJM7Uz*Vrj*rU^~{FLMVs5S)(X01Yv;`3U$yM#Una>t zq3v(JO?){Mb$I^cGywK#X+XED(V~(_@*_-5a+Qb5fNwc$FgaCosm&kc1~Y_=Z* Pri{YJ#}rWw?@aTNhE`{mxOg z;XNHYRzAI~?~`Mu@1E;xggw`>hSAFeD!nlYB~wYNct1?=qI702TVdnGJ01Tm1zbAN z75#(Jv{8dO&4>vH`G=(5c+J4b=2Izr#PUGk3Cs6CYpccI-#}hFl&ntTA%{GZ4paJ} zUrqg*x@3B5h*UeTg9o_upnGmU DiQqB=3A*aHT&xRL)wh>&dz2V!@DkTQu~7h*0dy_DXW0hjl$hpyO-IPMcmw@@ z>&fqlhMR9QDD9ey5!SHt`Ca4Ytt^9A!&f3Jb~g9s7UV>#wex hD^g&^@?l e3hm4@`2f9LJ& %YNz71T^p&V@L9R#Kw|8)MR>~$7(}w=a52^#wegPjTD!KnA8y(k2G6W z9$X*UQ4FP|a^)W=5dZB-{#OT9(0!x+XHCr2bK&?Ta>kNbBtv?~Q{~rX%1{}{X`0(F zGIHANZt)}@1B#Q#*twj$6lGNw43FB4_sRk+e`7tHAi;SF8|Wr2g!{!dizlOr;1bx2 zg(^bDTDqwYxoW*vMK_Ipiz&inA(uU;96fqZICUHLW2xPImYqM tQe`-=I&uoQwTWON9Q<`ov_rxG z_rLG6|MM#d=x4g~treCLC{dp (NV`v|1r9&y{=DcS0B{~;}ezQJ| z0n_MQel&+)dO0k$ZWhiuD+%w5%K?`g%$xW)Wa%Sptlpv{5QTU>&Fe};;(5$dVP1;; zWrFo+G6{DaiGt>b)>2JSCQbtT>X2Lj%-2y3daPEL&@@uS?C*ff^MBm6u;(s;iYR8R zVQl!0W1sJR)qI2JG^uq+Vd^&$ryE>4zUk$eXCJ3^d@wV|F0`b5@5$iy*dQbM#-@<# z0w@6Y-|y1@cR=&}rX{wNJE|fzvnRAVlWAd{A}?1>x#W);G#`{eYeA;z)vHY$QIakG zjl+^C?4MixF3QGofq(vqUgzuIizskB;{)B`AKYf _c7nn5@@1 zx-d3yy@mkj?k!Qfm{f!Z74MBKStJ@+eVTY%P>%gJ5boh*PFbtgoDA 4hX_wTG}&QNzetji1)O|HmDcjawv zk}QC{!k}A+-;|Jwd`I@%1XZrPWY&XNZX%wA-#Kx_TUz-H(n6r`&_e|`OeW}(J$C+# zR%z5wfZFoVJ-EL%mhnSt=6CRUfC%X7JyUC)#n+u~V~lk}=IBIF;-{xs9Wncsoc;M7 zJoOYO9nu8#PR8E)q?emMqrGHVi+^3^wcqGt<=ZbmX?o7lfxM!i%P}P^ynLt6xkZ|G zlhpbdGZ#`}4^8yzLa_cDsB3e+SJrOCs`5DO>%i7D3|4u HLgq z?SLx=y2-?Juk#(j=?Xe<(P5BDr*lM=xL2Z(=aHi&3Y@~e?-_;gwN!_uG~9KN;J3(B zL_Mc @sE#hTPWW}rXFOHj5b|)Gp6JHZ1~VUKnb`Kpj(kVHTo+UH6S$3 z+?XX|X;HR@5&uApi0gH$6!xR~T34iQ9oO)C%g-8ScTq&sSfv`y_SB^1ftl}rA3G>L z GFtDVG0-nLEzUsn2WR zJW2+1&+>%AUSs~Y!rY8V9PH6R>kgcx6~R)Ptj`2gt9+O~WXTXQDH7hK4=Q5x8y~6N z+Krw?U@H;0ZOr}NLBT~2_WNW(7s-8k@Iq@qRV_CimL^|d%nA8@wCnYp5EeAYB}4Z8 z2+#O}7VgqUgHnbX-^*K!BB<)P<&OkxGCd9=v0Ky?;PqGzbT?U~k)uMBCS)WozBxwe z55aq!GcmanxnUH!j4{|_4DnmgWpY11u^S|O&pD<9i?xf)NaPKXsxM zoX6~s?n(0q%Y+4mzEcPOZVI65R;|PJ3C|7x$nFo9Ws_b?ez`_=OU$mhxms0X1!rxL zSL;6=h%VOBsQC&^gZbTK `#yHaD!7CjV0P=M7|>()-r^(W837Z3EeIhSSNZ7(r0h- zE?SycdhYyu#hKhYV8x`QKcK6)jR6+WN+Y92OxYj?<&o)3ZE$NjzI$VBEmp;hd8Z-_lo>RkRD} z)FQe@$h`>JF>GT@#osDOBxm90f47&$NM` qP4YLft(v*o5}!W_eF@md%%g~&NTfy0e0%A=+;Yovvfyk zv=4QtDb=B@q_F{+gHjJAD=J22Z!2qL42!@%fja2MX|BpFnJ1aLB+|hqHl)&0)e FcoKE?cECuVbrsJdu^?LF}mo FMQQnE5|Nt!~-pa%=L352K %PLBG6 zAF}QRa!B*_!CcLix=nC?vWE)}SGI!zV>X+4S=f+x+mJoNhHsq zS!($$_0%FCJ*f5BouFv?N z0q4~^plb)K*CT?+lx~U{9bt<3p!8JD-A*3Uz1Jthm##;j8`WiWl2B9sX``z= zX};+~0%sBy@s20N;dr4evG~2O8W)gP7j%*S#KPvMWZ&ry _>49#eVv+$*P4ro* z*G)&N?P?Tzl(n* Lkyw<{&&L= z7Z ;!i e)`f=gWIGSY(;pq?*9Qj}BY3qqrGOE_i?G3$n z@+;$xZyfzNQ(R^COp!sm$1e3DI;f?d6BMC+g*11^se-mL1YASV9VZs6-oZ;3D8ABc zrp%gS^Z6=}S1Hbq;1N^Txi(CZ4GB5$4z4u5{g og==La^;y%)ef y4NqefCJJSI&brbqR6X@|uk#dBgFQ?{I^%Dbh0% zK9cJ#v!)2