From 2626d6ae478645cfcfa1a21d0acd74009f3a9156 Mon Sep 17 00:00:00 2001 From: Ketan Kudikyal <66976099+KetanKudikyal@users.noreply.github.com> Date: Sun, 5 May 2024 19:09:04 +0530 Subject: [PATCH] Initial commit --- .env.example | 6 + .eslintrc.js | 84 + .github/FUNDING.yml | 14 + .github/issue-branch.yml | 9 + .github/pull_request_template.md | 15 + .github/workflows/create-branch.yml | 14 + .github/workflows/issue-autolink.yml | 16 + .github/workflows/lint.yml | 44 + .github/workflows/release-please.yml | 17 + .gitignore | 42 + .husky/commit-msg | 4 + .husky/post-merge | 4 + .husky/pre-commit | 4 + .npmrc | 1 + .nvmrc | 1 + .prettierignore | 41 + .prettierrc.js | 7 + .vscode/css.code-snippets | 10 + .vscode/extensions.json | 9 + .vscode/settings.json | 17 + .vscode/typescriptreact.code-snippets | 193 + CHANGELOG.md | 431 ++ README.md | 133 + commitlint.config.js | 24 + jest.config.js | 30 + jest.setup.js | 5 + next-env.d.ts | 5 + next-sitemap.config.js | 13 + next.config.js | 50 + package.json | 67 + pnpm-lock.yaml | 7929 +++++++++++++++++++++ postcss.config.js | 6 + public/favicon.ico | Bin 0 -> 10990 bytes public/favicon/android-chrome-192x192.png | Bin 0 -> 8899 bytes public/favicon/android-chrome-512x512.png | Bin 0 -> 50301 bytes public/favicon/apple-touch-icon.png | Bin 0 -> 8545 bytes public/favicon/favicon-16x16.png | Bin 0 -> 937 bytes public/favicon/favicon-32x32.png | Bin 0 -> 1583 bytes public/favicon/favicon.ico | Bin 0 -> 10990 bytes public/favicon/site.webmanifest | 19 + public/fonts/inter-var-latin.woff2 | Bin 0 -> 36532 bytes public/images/new-tab.png | Bin 0 -> 565 bytes public/images/og.jpg | Bin 0 -> 149123 bytes public/svg/Logo.svg | 1 + public/svg/Vercel.svg | 1 + renovate.json | 9 + src/__mocks__/svg.tsx | 8 + src/__tests__/pages/HomePage.test.tsx | 15 + src/app/api/hello/route.ts | 5 + src/app/components/layout.tsx | 17 + src/app/components/page.tsx | 461 ++ src/app/error.tsx | 38 + src/app/layout.tsx | 62 + src/app/not-found.tsx | 24 + src/app/page.tsx | 72 + src/components/NextImage.tsx | 58 + src/components/Skeleton.tsx | 20 + src/components/buttons/Button.tsx | 160 + src/components/buttons/IconButton.tsx | 116 + src/components/buttons/TextButton.tsx | 52 + src/components/links/ArrowLink.tsx | 64 + src/components/links/ButtonLink.tsx | 146 + src/components/links/IconLink.tsx | 97 + src/components/links/PrimaryLink.tsx | 43 + src/components/links/UnderlineLink.tsx | 28 + src/components/links/UnstyledLink.tsx | 50 + src/constant/config.ts | 7 + src/constant/env.ts | 6 + src/lib/__tests__/og.test.ts | 20 + src/lib/env.ts | 20 + src/lib/helper.ts | 13 + src/lib/logger.ts | 19 + src/lib/og.ts | 27 + src/lib/utils.ts | 7 + src/styles/colors.css | 550 ++ src/styles/globals.css | 118 + tailwind.config.ts | 56 + tsconfig.json | 31 + vercel.json | 13 + 79 files changed, 11698 insertions(+) create mode 100644 .env.example create mode 100644 .eslintrc.js create mode 100644 .github/FUNDING.yml create mode 100644 .github/issue-branch.yml create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/create-branch.yml create mode 100644 .github/workflows/issue-autolink.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/release-please.yml create mode 100644 .gitignore create mode 100755 .husky/commit-msg create mode 100755 .husky/post-merge create mode 100755 .husky/pre-commit create mode 100644 .npmrc create mode 100644 .nvmrc create mode 100644 .prettierignore create mode 100644 .prettierrc.js create mode 100644 .vscode/css.code-snippets create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/typescriptreact.code-snippets create mode 100644 CHANGELOG.md create mode 100644 README.md create mode 100644 commitlint.config.js create mode 100644 jest.config.js create mode 100644 jest.setup.js create mode 100644 next-env.d.ts create mode 100644 next-sitemap.config.js create mode 100644 next.config.js create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 public/favicon.ico create mode 100644 public/favicon/android-chrome-192x192.png create mode 100644 public/favicon/android-chrome-512x512.png create mode 100644 public/favicon/apple-touch-icon.png create mode 100644 public/favicon/favicon-16x16.png create mode 100644 public/favicon/favicon-32x32.png create mode 100644 public/favicon/favicon.ico create mode 100644 public/favicon/site.webmanifest create mode 100644 public/fonts/inter-var-latin.woff2 create mode 100644 public/images/new-tab.png create mode 100644 public/images/og.jpg create mode 100644 public/svg/Logo.svg create mode 100644 public/svg/Vercel.svg create mode 100644 renovate.json create mode 100644 src/__mocks__/svg.tsx create mode 100644 src/__tests__/pages/HomePage.test.tsx create mode 100644 src/app/api/hello/route.ts create mode 100644 src/app/components/layout.tsx create mode 100644 src/app/components/page.tsx create mode 100644 src/app/error.tsx create mode 100644 src/app/layout.tsx create mode 100644 src/app/not-found.tsx create mode 100644 src/app/page.tsx create mode 100644 src/components/NextImage.tsx create mode 100644 src/components/Skeleton.tsx create mode 100644 src/components/buttons/Button.tsx create mode 100644 src/components/buttons/IconButton.tsx create mode 100644 src/components/buttons/TextButton.tsx create mode 100644 src/components/links/ArrowLink.tsx create mode 100644 src/components/links/ButtonLink.tsx create mode 100644 src/components/links/IconLink.tsx create mode 100644 src/components/links/PrimaryLink.tsx create mode 100644 src/components/links/UnderlineLink.tsx create mode 100644 src/components/links/UnstyledLink.tsx create mode 100644 src/constant/config.ts create mode 100644 src/constant/env.ts create mode 100644 src/lib/__tests__/og.test.ts create mode 100644 src/lib/env.ts create mode 100644 src/lib/helper.ts create mode 100644 src/lib/logger.ts create mode 100644 src/lib/og.ts create mode 100644 src/lib/utils.ts create mode 100644 src/styles/colors.css create mode 100644 src/styles/globals.css create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json create mode 100644 vercel.json diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..7334213 --- /dev/null +++ b/.env.example @@ -0,0 +1,6 @@ +# !STARTERCONF Duplicate this to .env.local + +# DEVELOPMENT TOOLS +# Ideally, don't add them to production deployment envs +# !STARTERCONF Change to true if you want to log data +NEXT_PUBLIC_SHOW_LOGGER="false" \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..241cdcb --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,84 @@ +module.exports = { + env: { + browser: true, + es2021: true, + node: true, + }, + plugins: ['@typescript-eslint', 'simple-import-sort', 'unused-imports'], + extends: [ + 'eslint:recommended', + 'next', + 'next/core-web-vitals', + 'plugin:@typescript-eslint/recommended', + 'prettier', + ], + rules: { + 'no-unused-vars': 'off', + 'no-console': 'warn', + '@typescript-eslint/explicit-module-boundary-types': 'off', + 'react/no-unescaped-entities': 'off', + + 'react/display-name': 'off', + 'react/jsx-curly-brace-presence': [ + 'warn', + { props: 'never', children: 'never' }, + ], + + //#region //*=========== Unused Import =========== + '@typescript-eslint/no-unused-vars': 'off', + 'unused-imports/no-unused-imports': 'warn', + 'unused-imports/no-unused-vars': [ + 'warn', + { + vars: 'all', + varsIgnorePattern: '^_', + args: 'after-used', + argsIgnorePattern: '^_', + }, + ], + //#endregion //*======== Unused Import =========== + + //#region //*=========== Import Sort =========== + 'simple-import-sort/exports': 'warn', + 'simple-import-sort/imports': [ + 'warn', + { + groups: [ + // ext library & side effect imports + ['^@?\\w', '^\\u0000'], + // {s}css files + ['^.+\\.s?css$'], + // Lib and hooks + ['^@/lib', '^@/hooks'], + // static data + ['^@/data'], + // components + ['^@/components', '^@/container'], + // zustand store + ['^@/store'], + // Other imports + ['^@/'], + // relative paths up until 3 level + [ + '^\\./?$', + '^\\.(?!/?$)', + '^\\.\\./?$', + '^\\.\\.(?!/?$)', + '^\\.\\./\\.\\./?$', + '^\\.\\./\\.\\.(?!/?$)', + '^\\.\\./\\.\\./\\.\\./?$', + '^\\.\\./\\.\\./\\.\\.(?!/?$)', + ], + ['^@/types'], + // other that didnt fit in + ['^'], + ], + }, + ], + //#endregion //*======== Import Sort =========== + }, + globals: { + React: true, + JSX: true, + }, +}; diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..fd592e8 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,14 @@ +# !STARTERCONF You can delete this file :) Your support is much appreciated! +# These are supported funding model platforms + +github: theodorusclarence +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: ['https://saweria.co/theodorusclarence'] diff --git a/.github/issue-branch.yml b/.github/issue-branch.yml new file mode 100644 index 0000000..1626600 --- /dev/null +++ b/.github/issue-branch.yml @@ -0,0 +1,9 @@ +# https://github.com/robvanderleek/create-issue-branch#option-2-configure-github-action + +# ex: i4-lower_camel_upper +branchName: 'i${issue.number}-${issue.title,}' +branches: + - label: epic + skip: true + - label: debt + skip: true diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..a1738cd --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,15 @@ +# Description & Technical Solution + +Describe problems, if any, clearly and concisely. +Summarize the impact to the system. +Please also include relevant motivation and context. +Please include a summary of the technical solution and how it solves the problem. + +# Checklist + +- [ ] I have commented my code, particularly in hard-to-understand areas. +- [ ] Already rebased against main branch. + +# Screenshots + +Provide screenshots or videos of the changes made if any. diff --git a/.github/workflows/create-branch.yml b/.github/workflows/create-branch.yml new file mode 100644 index 0000000..b8d5195 --- /dev/null +++ b/.github/workflows/create-branch.yml @@ -0,0 +1,14 @@ +name: Create Branch from Issue + +on: + issues: + types: [assigned] + +jobs: + create_issue_branch_job: + runs-on: ubuntu-latest + steps: + - name: Create Issue Branch + uses: robvanderleek/create-issue-branch@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/issue-autolink.yml b/.github/workflows/issue-autolink.yml new file mode 100644 index 0000000..0da8924 --- /dev/null +++ b/.github/workflows/issue-autolink.yml @@ -0,0 +1,16 @@ +name: 'Issue Autolink' +on: + pull_request: + types: [opened] + +jobs: + issue-links: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: tkt-actions/add-issue-links@v1.8.1 + with: + repo-token: '${{ secrets.GITHUB_TOKEN }}' + branch-prefix: 'i' + resolve: 'true' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..aeede5c --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,44 @@ +name: Code Check +on: + push: + branches: + - main + pull_request: {} + +concurrency: + group: ${{ github.job }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + lint: + name: ⏣ ESLint, ĘŚ TypeScript, đ Prettier, and đ Test + runs-on: ubuntu-latest + steps: + - name: âŹď¸ Checkout repo + uses: actions/checkout@v2 + + - name: đ¤ Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + + - name: â Setup node + uses: actions/setup-node@v3 + with: + node-version: 20 + cache: 'pnpm' + + - name: đĽ Download deps + run: pnpm install --frozen-lockfile + + - name: đŹ Lint + run: pnpm run lint:strict + + - name: đ Type check + run: pnpm run typecheck + + - name: đ Prettier check + run: pnpm run format:check + + - name: đ Run jest + run: pnpm run test diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..3659c86 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,17 @@ +name: release-please +on: + # !STARTERCONF Choose your preferred event + # !Option 1: Manual Trigger from GitHub + workflow_dispatch: + # !Option 2: Release on every push on main branch + # push: + # branches: + # - main +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: google-github-actions/release-please-action@v3 + with: + release-type: node + package-name: release-please-action diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c4e6a2d --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# next-sitemap +robots.txt +sitemap.xml +sitemap-*.xml \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 0000000..0bd658f --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit "$1" diff --git a/.husky/post-merge b/.husky/post-merge new file mode 100755 index 0000000..1fd4a5b --- /dev/null +++ b/.husky/post-merge @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +pnpm install diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..c37466e --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b7425b9 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +enable-pre-post-scripts=true \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..790e110 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v20.10.0 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..b04160b --- /dev/null +++ b/.prettierignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +.next +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env.local +.env.development.local +.env.test.local +.env.production.local + +# vercel +.vercel + +# changelog +CHANGELOG.md + +pnpm-lock.yaml diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..5c34464 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,7 @@ +module.exports = { + arrowParens: 'always', + singleQuote: true, + jsxSingleQuote: true, + tabWidth: 2, + semi: true, +}; diff --git a/.vscode/css.code-snippets b/.vscode/css.code-snippets new file mode 100644 index 0000000..82cc815 --- /dev/null +++ b/.vscode/css.code-snippets @@ -0,0 +1,10 @@ +{ + "Region CSS": { + "prefix": "regc", + "body": [ + "/* #region /**=========== ${1} =========== */", + "$0", + "/* #endregion /**======== ${1} =========== */" + ] + } +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..44bf298 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + // Tailwind CSS Intellisense + "bradlc.vscode-tailwindcss", + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "aaron-bond.better-comments" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a775463 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,17 @@ +{ + "css.validate": false, + "editor.formatOnSave": true, + "editor.tabSize": 2, + "editor.codeActionsOnSave": { + "source.fixAll": "explicit" + }, + "[css]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, + // Tailwind CSS Autocomplete, add more if used in projects + "tailwindCSS.classAttributes": [ + "class", + "className", + "classNames", + "containerClassName" + ], + "typescript.preferences.importModuleSpecifier": "non-relative" +} diff --git a/.vscode/typescriptreact.code-snippets b/.vscode/typescriptreact.code-snippets new file mode 100644 index 0000000..1fce740 --- /dev/null +++ b/.vscode/typescriptreact.code-snippets @@ -0,0 +1,193 @@ +{ + //#region //*=========== React =========== + "import React": { + "prefix": "ir", + "body": ["import * as React from 'react';"] + }, + "React.useState": { + "prefix": "us", + "body": [ + "const [${1}, set${1/(^[a-zA-Z])(.*)/${1:/upcase}${2}/}] = React.useState<$3>(${2:initial${1/(^[a-zA-Z])(.*)/${1:/upcase}${2}/}})$0" + ] + }, + "React.useEffect": { + "prefix": "uf", + "body": ["React.useEffect(() => {", " $0", "}, []);"] + }, + "React.useReducer": { + "prefix": "ur", + "body": [ + "const [state, dispatch] = React.useReducer(${0:someReducer}, {", + " ", + "})" + ] + }, + "React.useRef": { + "prefix": "urf", + "body": ["const ${1:someRef} = React.useRef($0)"] + }, + "React Functional Component": { + "prefix": "rc", + "body": [ + "import * as React from 'react';\n", + "export default function ${1:${TM_FILENAME_BASE}}() {", + " return (", + "
Next.js + Tailwind CSS + TypeScript starter packed with useful development features.
+Made by Theodorus Clarence
+ +[![GitHub Repo stars](https://img.shields.io/github/stars/theodorusclarence/ts-nextjs-tailwind-starter)](https://github.com/theodorusclarence/ts-nextjs-tailwind-starter/stargazers) +[![Depfu](https://badges.depfu.com/badges/fc6e730632ab9dacaf7df478a08684a7/overview.svg)](https://depfu.com/github/theodorusclarence/ts-nextjs-tailwind-starter?project_id=30160) +[![Last Update](https://img.shields.io/badge/deps%20update-every%20sunday-blue.svg)](https://shields.io/) + +~_$lY>c1=SkgJK`{bU3-}-F;Rn zLnrZ?=ob72ob(SK7FZ zlR}ZTM_B+6Qan``%YsjHFah%Y#a~jNye!eH!%2wuaqw+d!lQwfI0$L7B&f#w9!N+N zRRfWQtX~$%Tna)tCz{E%mg3A&(D`v}SAI#!nFmuNAraOm!(~ `FDXn- Y!$^F=$_DvP!>b5xnje>gRj;mTNR>fkiEv;5RTg%2zIW%b$bs}&kX)2c-8*=oG z#{RHdSC8*9mALDcxX;`0VT@F2A_2^ealf0Q))86a|5_#EqNH8XV+zCKpjr~UFSAG; zbM^HhLdGH2`UAgEMq8<0{W}NonJ)o0FjZ*S@+kNc 9{`mF%eb9Q`r$Nwz8QR}=6wMMrnX^}Crue41MJsxW9Yjs3f+;a1FJfSl()83Fa zx0D3uU*}}gv(@D#2>01R$(izv7rQ)O?oKdnsXnf@jd2n_GY B57O_`T^bJ^y+Lz#;r;*l0XFWF2*>sOAOddlwqxHmprH 9!NK-J1zcUCtUGmO!*hjbwN6~Pj|s2PNH5s zT~{fOCBdh8{cYGfLf8J Ru{5c!}*-hnvpu?rQ 3|XeP{BX}Ze< zsd}lHp?eHq1Yl{9AUmfr3+%m}m)Dh#EYJ3<4!r#Q0e%_O#&i~qrTeBVV-wu5KnX;k zPmj9y@r3H!o&-Gdb=CNpIv&9vtgYQ(v%MrN_lu|d e(y zb{?${5KcL0QnE7DSM1du?~M+qVq;dF-b6Fut%YCK(p)jw)%sf*VJ`&m$^X`G@%(*v z76d&=5HC2ek^v^lUcmkp*Mhlv{i&kr9C57{M#sf$Z_@`}Mojjq*KBh^-w32~0Fbq% z725(g-!A<-Pl^ AeQv^`Y1gdDSmt~uRoo#r12E+@J@<8F(xQB#|wm% zzI9jF>#G((gyzhO8?L`}nCMA}F=87^kfj;exUQORwzevLPw?CP_d8Mb>85%iu>Y;I zVEVGyXKR#QNM5pfKLhCAs%l5dwlMkTjeWQC7nIKLvT2*4Z23Ws_k*0>j6?d%0n-^3 zNJT&W@C miY_S)k5Dwyvf7hO0W0l zX <_`YM0h0ar~ zfb<;6BR)0G^r2>Xk8+9Xr;tu~O>R~2v-!a&Jr6-l(%9!hm |gx;~5I^7@2Z zI`&!nO>|^#&W=r0jYkBg;Ff?at%KJ$*8{)t`{ o#KhmaF%bzcVeyHRQ0^ zQ8{QB`8?h+b*t{O!}NV|n3R=K1vyHM({NSnr@Q6&aj#^H&)MeT2H>Hn5FAW6iyXrL zFBugj|4{=TTQXm_n>CTN&`e-Pew4B+`{RP(UfJPTl!QLE!Iy&+0HCnBK~j9J;w{3x z)~{+A?I&bIm+jKvYO1w+k%bx|NnD+vXzn(%ll7 zAQIlre-`^QrMVtb)pfS}JE#@ *TqhX_y>Fx_a3zZo zs55;zy!s&-VE(uV|C6O(400$;){Llex4J7kJAO&b=gK2vI;9&RbvIssO 7@8)<;t${I)2k+*v&UhJqJ_~^N?3(o&3l!!m_YL__rS0>rT8}f1+o~} zD~*1pqPFdC#iOxOWI`6p?rY!=X)i?MjrOWByp_<09uD~5k-3$^o^8gIP$?<7Q)aPx z*L8{`qXQ7(uPJIybisRqqV@IjU7SBwjjM#zKi}PdRXjaEZs}oVEbxMb1N2(J5BFVX z@Ry@1W5N>95xl#MLtP?PnY3-30~yeG{=s{pzXzQ8&0rX3(v!j<@)Rc`q0W6dVdpl! z%zBLG0#iL9B2T2{9{ya)kt)jnG`kmTvwow?CouERiyKgo_PLF%h%P?Se5oOZ0F_jC zc@sc@k|Fqs_>ZJ(#p-gAsb*k+Hg_W6pYHd@mlH`rQKtl?-j(aGW9xTVUry?zcO mXz=9d91{Zbb&~%VZ`oB%qRO0t4CAM z;;u=}hmYV4{f|d|D3X1nmxt%`>ijA+HP-1LQn~bKq#6DkrlR+OOiy5SVuHu1?zo!o z*WOye-K?vOz@9BBt(K@_xQB0i%OSR;T!#9Zbm9}*Rg`8*2BoF4eobH|$KIpzkVpw-V;tsc;43}KN9-l=t98ZsdK zBD>P)MDT qM#ms&7*?>P`UUz(ax83!NEV0q4K;|H&o-{46gS_^ Sh+!xAIXu7Ct^Cavlj&dW;)J7vHFKN z%?6oBdGz_S;?e)?{mu?I``N$Lv8qHL?e&3d{Y||GPs47XK9pX!7WA($tqTM9FXXK& z4aGHf0!tK5;mwc;qK y7R4*&pJIZ)){dyLkWFX+GK%BRZT9%4o#15z98Kf{n0 zU9<+1{biOd%Btd9MM`IEb1mGDLVoG6Iku3q@V{7p9M4ayIdollIEr|KrUIpiTjx_? zA?YBk(h&_AoGYJOQF+h084L*7nf&Gr #z@oI;oI($h{_Mhp#vWxT?^b)3vbfKxrIcsJ6aYt{F{B| zU!m~4^9?f8nq%0C#o-OS^8GniZ&+}gKvM}SblI=HwC5m&R(eT*%wg$JCd78Eihy%f zZ@ELe$dje4Fs)Z~q^*%)y?yGY$_z_eA(AQR@xs7_M_9AIGc59za@-JJLy}uYpsk#1 zgzwCw6AjE$2xb8$E@8j @SeK7> zLXk;1vq+*g>%l};b=N&d!LmfZO!VshEx#NdjV(IJC~$Avn6 =jEQu4*4WyrnDd}VULUC>GI_)A&ivI=o05E%7fJMcZ`{t~zv_c?E z>72S@KOUQLdwcqi?k`v{X%30?fc1W+(9_K#Rb+14FyV5{YpxZ4|D5IE%-tRs+t>ay z9Ve#*@5N)WnLkaf^-hF5at_WdXTOP>4L1Q}QRswU^mca@shAU;o$uX@r6;jCR=h2p z);S)`=%Oa&U%rAjQa_50mp3q~XwAv3rA jAK+Wh32EW3l>^M*^ Kka@xof#)oG{|m{`z%y z`M9*TOy*86hEKX+yzejf>SN*o^<~YY7nwm A497)O=%VM+Q%6n-}ZV2w^`)<}d}e++#1?j)?pf8O`Kny}5Xe*4kHbz*Q|yjTwV zgir2h=vjv&2dB^vz)<==6qWQAmuUS5zAPsX`Q0g5IL7>JF2t4cv$<7Kz{ud;*~`>r z@@mx=n)=*VsP!Y@!9-h8@M5kESj0A)QNr!-VZGtcWGIE?ox4Q?dWM}Q5qJtt2m`2J zc?y@8wiGF~g`_ARdojc+^7fs}Gx+e+bL1xu%dt=(h0OsImeI>7lP=b&jLW&oxq0BK z#|COO0jFB!bUVq%;Uw0XK!&BF8IL*5hreFLK-uwjO)(*o&I(L^wVX`RibpS_m*eV> z@H^C#PTD0ke3`^X+5455*Ou-8Te893RwyDNXNrf}XP`1Xd~98Ka^>k=HXH@WPuZ5b zMA9NNYMf2wd- q*W0 z^a+-hD(56u|5mpNKI_5ObW)lCno+ebKB4XR74XZxAa7&pa$Vo-_jexo!~T}jn9V42 z)THHWuE8LC^*1Mc3pE}Sio@zStm@O{nnv$>US7HMH=dIhd}^J5gneN;lY5 r6&Qq-H3!kX{ {orRqY zIFox4KtE_}X+K}mZj9rHOYR5TDX~mpQ?u;(bW%F7F(V66lp{>+VNd gH$s+Pr zhx94;FV21gW*QrhBK}2moAp=N&LsSPXX`7*(an3!E3a$bK9!QuGD36IpU#jGZb^~0 ze_i6*0Un=dVTuH~8{hzv*ycbK6%$dNACB;mYOKJca2<+8T!Hx855+1G+?{1!C0+Cb zF)pfc&y(;2k>IqePI#x)x{&sV;vr!g-Cumv$o|qjfAMQooR-%EEJiZ&Lg%Xb4s`zZ zhQ3S{xj|yW^b6x_)}~#~UXD}x>&^z9wVwq1(8EeMWsp4ak0qQ-*qO<;P%Rv*YELlK zogRBW=#@22^uH^UFA<&)zSxYL0-9GscTdFgeGB1{HZ1Kfe2|*{G@?!YFEZO$3F|Vl z*R+Tozq3qME=ttv4gBiYX~rDPRvD=gqH6LmQrh6t_;m2wN4+1HthjsOiKQCeWP6B` z)0dIlU9g(hb+t|6k;t&~ilcJQ;P7KitLV3BKO;7I0}10+az_E`fm$IVub|VisiQNa z#|G@Gla(F^reD7)ODi(tJ*8T&wz3c`(w2TjQ^g0pIEWLi+4=odW8V%(XX} XDf!{saNZ#RlmF<%zXb@ysKP6oor`vG!<&EGQcHUi0OmkVL z>n_)2L WWKcczdZv($o4&~25ynB1s?>yG%$sox~1DLi~mh|?UwnkMzLSX(O=&@&+y*M zNKc^M1N{o1mEqq^_0N6YUq1%$uK)Z3UMvJzu%&gsmL~jsY!<1= uUEgYY(pwMCvm7oT> zA{?JnBK REtThc8660fY^Y z4}4p@F72K7*)DQS=(FffDjss&x-3KNl~=i9>)w~`DI;?z?`EsAhl{e=UQa_5hwO*r zHOi7Cx)H<(TYMb{N0=i=rQS3~%Mssw#dJ$_+3}2#wH=|;vNja#HOhcWAnx#F*X}dw z?5)THEe#aCXhoA7rUn!^*_7;h2<@tra3KJA!u(d^K-~0lP$2nlab5(9-^M_iN`J=Y zW$sq2@g_8cUot>X$*|nTqw~CQruUx0VF~fth6(V=Xpej{TBE;^f$3w64C&v=hk|5| zjzHC2j`@R#Y$m>!H%LeTU_YCbGe$c@mY(J+I;a(EG7VrRi%cq{gcg8-BPr(eB=r}C zqGtfe@0_HDtO8Y1ntE%yLfx>y9Xf!i34}dX?)~X@K@#AO3aO-h{U)2GhYK_cr`xZ) zsb{HOi9WpHD!KYE8p$?9GxP8@R$1gLF?tXJnu!vkCnc6MeeDH>l&Az>>A}xh=AZvl za4p|mp`g9y6HFrM0U1QScD=9usWjmq$X_#Col_JN$`UtmjW*Yl4g%l4S9Z6<{1V0q z0{QH-PcHqF0fEG9>1>8W2gZQb)N};4VmMzQ1#aB2Whks+GR?>`c {%aTFCC7xb-h-(+J0OwbI3@~&Ic zm%Tt5od%iZ9}WBWEVRr}l+Cfv5_&POJ1maKN-t6bcfQ2LeLa#9J lU#zZxU`p!`Isk#x;>ikmH$Kl9#%@czZ18gfI{EGJUHm9y8!pO=wx0 zg(?4Eu3+Eil2^X{VBClH6L9-~xBM)(piI~npHgw9$6(Vr<{y>6-23G<{`F)yBIRiP z`()|p3D>Kt*3IcHa@~dnn5tKCH9_}EwOo uIsp4<(bwy~xJ{DEWuH ziGjL`9$&7M>8ZDR87#BfbQJ?h>lpHA6_}CtU7Hj8C u`}c(4IdO1rSmk{eE{* zGLa pnn(IdeL?}G7Ezu*reL-^tn;DzEqyH>i}K_W*Iw?4%C#r$*U2FM zm4^?`1RG2|#6S7$CYb|l50>${JK0~12@;Bld^MQ>vQ6esp%4ah+NgKzHXJ^D hGkZ{QMAUxG2vCV+h(xO+S{}43IW;TDTm4eRlp+ z{yA%#lDe9Pn+Zz~E3cL^|2s6|jEpB7q$LfemT!q8QXqcHTZCRL8yb-`L7aZbiV~vg zSbHj_Ugb7lphae4%?w_DzKhAc=Zc12%MiMjMTp-Ynl<2bwY36!Z1ZX62j7 uw( z;Njum5zyl12lMlTc?8(Fxxw7rG1aNg|Hr|}#nR5&_y2czykwtxb l6S0 literal 0 HcmV?d00001 diff --git a/public/favicon/android-chrome-512x512.png b/public/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..05cac45ee975b989712f82182103837016b81b35 GIT binary patch literal 50301 zcmXV11ymeOvt8WXEiCTt?!LGOcZcBa?(VL^o#5^kf;%K=Ah
$k8;Q;^ul8m&t3IG89aS9HA{XBT%i`9G_AT31XMF4WB1^fj7T$urYV?zLdHv<5``Igh6%>U5 MibXHW{1{bIFUF?sea1dTm$v zUH&`1_ucOHyxt m>kyLxS6)pre8x8$U|ZV!vSv`x1*fA_oq5 z4&Ctqdzn;p!cb8MViVM}Z7_r$2GP;M!O;w#H%`z1aIk1_GWxc?u)}pkOfk5`*n1d> z |u qjot-MaFQ6& z?iII;cLJ_gcXC~k9gPJbYN>@e16F;|i71O{GyzA>GKp}qLUu^3tuW$9BmKXF6hGze zwKxpiHpd>~#D|iFGD*1-BZr(Q2Xtag9l>ybcn*&kWy1KY=gjb(Z{l%I;S+T(6f6av z{0<3F$#V7r_Rf?*OX!GTzo8CJHj6Ca05bw=`PXLKb!jJpTBkhzNzv}r5qw}o#6+T6 zT~jU qvTkYc}SNt((c=s`dZFfxC|RFO)@I)$19ypaLf zP}OqCU;hcCmP@2JRphYhp{P1* lcqMarIUHFQ`ks{vN3~vqrmO!@;|(Ju%5`IhGA7a_!s AS|E6^v+W342JlpyVK} z+b%$qzgFV}a_-PV)m%a$zXoChS;Y5%njzFxraP4yRzrC_U_oLDDhfkr5WWFgb28Ge z)wUsXJVA<8b_yUV=nh^C+FAx@G%F7mQn?(?JZ|N!JR{TVm%^-LhGB`pHvl3j4!Z?I zHu<%v5GXV;f=%>xDQD>@DQf}4A%`FckeI1Gf$%(55|V0cSfZhL@|BK3cQpRm%RbOl zo$arcN)bC^Em(;11ByEe0FpE&KJ$Q%(FF~toDvc?uh@lMD*5Mp03lK154#1X)SOg2 zoHVDO=4wkuWRh-L31V%{*fYXo0JZEHND uo~bfsRX2#H5*S(wf-MP2 z0uGphadp$PhU%>4CI}!V`fj^miLwN8wIJ;2lnTmP!!F`x?fpw-4UwMf(^LbixE+9z zIa5qL55GR3uj%9f2UAJH&3v_Zu(Z$%Y$Q?S@Zj4)BZ;-xW0k7wm%ibW+s4Vw_V7n7 znZzK4>QQur|H-Zz!ulmnI?mzuvS>G(@GE^ (2Y9U^1v|J2PlN@8%DstpKwFs5S zBX?T9%GFwA85eoQlx^R5qi2=ck{|)AF_htKWKN@>EMSCPwCI}l8kLV8njN*5eJ(x> zfv6@nabPAd5@7peqAJX&s&DHW7Q|R&=<2uQ)qr_3!6=nMSG5cRC_^iRQ(vqPur*Lx z)qc(3`d(3n$!eFu#^9T_P+yd^7ekeLJeI&ya1Q5P4O0RQS*lHkFsoLVPiwJEwc}2* z#$fjh`c6_hs8FgOK|p;nxBsmU4_u88W=T;w5znx$lSHY~<5xw*t!QmQ!Su6qWu;oZ z>OYv>IoV3;kdi`r79lHEZeyhiEv%qW@klyFp_j89hs2)vS6p3KyV-98>L6+1YQEHD z@l{JAl!1!0bJ2E&iaJIcS`E7ddWo X-#$3wb6@g++CH^Gc@|X%BB&T6Ww5 zY}RV3Q4xo^@7=Bwz!C&70(kLXil&wM=%xudObYMaOgix8Sef=>xIi{7!dx3b=vOgi z9QrR@(9jtJQ3C3kCGe|1UNMapVvx6{;zJr{ZX{?h3UlJU&Ga1c&5)#jHA8%-d`2jS z&$i=hwgMgSPP(Oew)z=rGkDhx@v1tfyX9$_**^?1(pO0|=ZJ5KtgsYGaIu2o?Cds4 za}D`z@MSi`0J8Qo(kc~Za8;VPeC6C!#l0RDnBW@h@)@d?m%Ol*=7SN%ytsemfGsL{ zJE+6aR_+OT(99?%d$EQ;AyKWM+ycUGol@Pb9_0zl%%v5^I>8$RhemMWb|&5TM43~9 zNnyPj<_tx-Jj`?uu|$ga&Fh8A3LGZXe(_yU tA}QIdw}cEfJ9x^Pu4itEHxib27-k zkffYwPdIIMa5nz7tiW&X-Nl86h#K=q^HHsBOU-4+F6J&KK_^`;LN(daT|NO%-43 zz?FUr_G+E_M{65sYllQmP?0LotRIw_6=4J-4fR-B+Z;dHI>DIl{5I3e>BB4$S-n1n zSFq@^UlUn*-S6f7W8t?<6Bf@ol(xjQt>aU?QwMB2Iz;2&!_*P9E{UTotsAr5#Z*tA zhZS`P9F&m`NuSn@N =~2|mV)blF;`k) zE>S7Lz5$bVWpPDVq$46MZ>uzz>o}3kyERm!rUYq?ui&H1Hfa%s)Q}>z7S)#J`lg;1 z>lztU-=&)Hqr{T6V8B%$n-LLdrpSj8@llHS_L)tg$e+YiOZ+_uFo` g6U92YL+Wo{JbD*KJx7 zbWxFFIThyI=1ySe3d{S4?Zu0%r)un4%_EWF=wQ8M0n)6tK0LJ8*Cg|G0qfYHVS;FX zr=(Mlz@dfbEw*@O#+H$veJ$?A#TGr7io Rm z63o!ZJj`}ock`(689FYMYw^bM)l1Y4t1VC`rpjMHQ)PpsL%osn(GsW?r(7td=%kks zgblkP%a^XcrtH6JC@QIPE2Ivs$_wvE#=|JvH27E2#O@G1Fm7EWQLym0NG$O|PGT_( z*g_(+?O}+iS42u$it5T)w8%z_Ux3f;N )gvpv z|G*PV9{}Cj+6Tzat>BwU5+QuihyumdN|Gopuz>=m0Cbn zYh;BzNa+mA;yG)LIbFEIj0qrGxs&KsKw@xDBoqx5Y8Lbp P$<)RiesB4^Y` z3=vG(=s7X*-1APx$+Nte?0%exv`v{l6w%sJ+wf88^qt{qzbo0qD-d<`RNcVlu+|8n zqwULWu|ub7nqAe~BsWOP i|ILrMQp61AZ>NiF=Be;=!D4- zw2rg$mqokq-^)(&ELVR_iA7fO#ENY7_$J)35lg{yGEXX(AR&!C`<&{PFJ%!Wi^K1d zrM;m8*GpLP7>4aZgaHCN;h=eq5)}x11;bLcQb&bElABr4X8S|f%n~@pL&raB;&}v_ zYL)h=@npqR#4C}ci9vc WU>26M)VaN;+Z9n{S)a8h`7csUn^Y K~9RTb9HR#P^Xi2ZJO$&Fi^5yg=Z%Sclk%5rK)-lj|t1bMnfoY&6pRD&4ga% zUL!IcvKUWM2rz3-mjjE@)6}4qoIB_cMW82UDF<|RosD*kP*o%vNIPaIkqYvHCyy7) zy>-aGh~YcKD^wuSr~OTohbL0&PwP6-*g#7TTI|#uY`R-05g9iYc6|`-9}(qX%$^~) z%+RA{G=+pEBYd>fo(CS~(gqP0(7&OYl~Rjhjz+isc9W(Z$Lva%QKW`lxNYl(4)cKT z{MWE}JBBwY$67^U#dWr;qmEYDNfC7z<6I&Q4GEx!E^qaWHIUY@m>^Y%u~n$klYO8F zoy_?$Tnr^s;0tzuo^VerSqlcq dw@iZob z$FyW@+3!mWT@-|>cTQSKPC=5wfu%Wtl?t?Bo3pt#0!f$wen4(7qaVZVK!}GFDxA }YYq?k3qmQeHv>$0gg#B&;FvVroaMs$1!um%{n>Y@?v9YW{RMEK)TCT&K2xn+5;fFwCu#bxIL1&QL2v;70xm;*c!Fv;W} z+i-Yt0`M5fl`Rtpp_E${3z$cj(VbCC@eqS9Gnigp;aW|c6YjmPCEmDmDLdBD<3NhK zsk}fhIi%T$7-pm$rv_G6>r@$mfOaH}!|b}$-MYjDN)rVAlqsg&66=41GI#XT3$}0Z zNgk9TY4i+XVf(GM{o{1v3CLKTLf20r 02>v`u2t9a7X zJ;cO?+9mpeXLjT-Ee+%jwLf=6Y`_J|_S%5aUwo$08T66qldw?yE9@ #N8p4Z>t*!YOWUYGkh*lm|lL8f^Y%!6% ze{;BgulEco*=ANjAN#56Iq>i@CA*S`+msl0Tq}DIQ9rtsWtsR@X)lH*kGB`wo9@*x z$xcE pWEbV@ih>Q<5n&?!3%yOroUQ^-*vmsSOBXgv+HlSr*+B8i|&)j zWB(1?rBy28l6CVkGbWN50<4$R7=5?aHTX=)fXRxIyBsBc+DvI^?@s2F@+gMG*I*}k zexZg!eds**@i??(^)kf>jU_%m8Kb`y@qxNN@(kOXs*OBx&ORw80l7tI6Z_2@63S^5 zI8kurdsYGi-hQ~w!!%H6tggG{ho<9{poXYa(`P8wYqP~DE&es!lAA(!X~(IhO4)0S z)ztmsK-1M}O@85@LpU0h?u~M{9-hrrEYo@NQx~Pm5jANiY8wyf^)GTO&A5&OlsDDy ze*y{zybJXL) %b2F3q_G!sqohn9-KhOM zO_-l~L?dST{Unh^Av+-zAHV|do&hYOkzEbt8_i42uEVT_9tzh?P3z!^CcwL?mJEu? zHObgcKhiq*hiUA3?_EZO8C=H`_cJ#r)h49epHjo z=6G~%5Cm`h_^XX3&1U5S8{GmO S@rF};%Of||LCj>|~` zftJ&~NJ30Yis~ kyNqw^-{YCD{Uvv>}LmPwQ=*ywcywXPeLD^0g=Fp5F4rvu_gs%ZlR>ogp6L$5PII z7Xg8<-1taL(_M`UHe{{h2&b{ !J9$<7VmbASDxp48r^mo&rk>YZ$D6Xn zxe9OGG!#`bLW^jlTbU-1WGGg-K O+G?Cw6;cY0M7QC zS3P2eEJQ? Dj zePabgk*GCeiOXkeb3*s 2Q%NaUvwDn9M${&eB=Isy$Z~4O{NhZdCG{Pq^hJiJqYdB-BJe&AN;f8 zv{E(m71bFWLXmA^N75M+b^9$6Fn6a|Df!X*%@*cjLt2R*9}C+%6$qq-qDNG-!w!2A zMFF^e_;VWE_BEOUy|KitvDP+TidcB%Oi?`PN>)Ag1@6P8K^Ck6_RH+bfJ?d}kpNDL zYAk*=0hRVoyWBruyDy*6!`ikkbThP4WUnL9 dy-J&381E;UYy%rweEx {=a z?+320c|XFPVrUC2z&?gg7Tit_2|yiD;|^> PG9$HuvwD<-#pp<^cPai)R!|YU|8r#&Srub0%{ip9IVLf4vvGY zGxi_YM;sfFg!w0$8Z%8MAOb@?1(?y<$4je{gp~@V0`_&?>^|XA2C2f=p=#8J)7e(6 zkH&l;#5>?Uv4^e&LjNxhUx7HIi(l(AXc?aY9;j3#?6C5kM2NEMJsaSHb?pDP0#-h3 z5bA{5CUe zgoEs*5%V0 *z zwm$I5kOgI@m!Ft+L-LX#B#7(=N~ =8qkGxmHEu(6X( zpMJg)eE>D8-1H6Z`xtFCa-2=-_&B+EeB}!9|F|!)C+;v@VO(rz(qp+o`bSr}orV0; zXSRne;FF0|2~)pJSgc}@H>Pd~tm83U58w8z3f3cl@sOWfJOa;D-$MM2Sh|;3g2bNM zZ7?7q0bXeN>VCQXNjId4(+%bPlE!aiPz$vXa#ca{VnSeGAOIyK zgtdbOXcw@rHY;pEt2njFN|L~*%2g2O-tv9qlRdG>3-m0=H}~~?Q09!@er*pqM7V|^ zfCsQLSI@bs Dvv2mY&CiW `FwM~GlVz=O?Dr(ok%xsLpoySHDFqPypuIH*SZ;7REw zHM0MChC&+*Arma$@PmsG7e ISEvn%RaO zu@z#L&Gbvqi=4O$)>=BlCi$?l;siM;@UBOB#e#G9WA=S_VAn<$y9~CH63i9pe>TWp zT4?-W {vtI$<0(ep987t!(bh9)%NVykUf`_Fp4Ph zS;OGA$3rZr;U|HYrbiuQr}&^zxQVP`oKAo1szwhr0yH^>QcnoINt~9baD(ZZ&dC3Q ziLP}Lw>2R5HL$IYd-BXgS=~GCUFo}0N${QTpHHw>N+$}X#BdGoFa^MO+BXG`pr>%X zEpovv73R276XxEnf2KDM^6(^N?p|jGS-$Uzn|-H?{SBu*fO;>)`Nw}s3B8^MRWXpR z4f036RHQ7B%)GSWLsaUD*~25hc>GUrVCbDis+t8_=mkyiPV(h2`9z%VS)BPUy8d5r zQl@g*uE+k^F$!oD^0!a}jfbfzVx2#w;zn4aFFp#&SSm&U9G}`H1U^9>Uo>tkS@hGf zG>A-wo{ct%(7=gq{SYvJ#QqWtkB*jZVJCvWEAJV2162RbfV`;DBP^<~!u%BR#g!$A z|AvI=v0>E{UTExh!+@WVgKsN|pE`ixP0n^@08{w}j*t%)IYuJT&>R&o`SM8}J?gr; z_DhpYXhs_pSoz6C8XfP-?7=;}u#}_i#s5%CIfZ02F;DIqvILiN9~vL#*X@Nn@7Lcq z*-raOE*+#6#m=Z*O&f6I>YfG-TSQp{peUwD9?{XCk3 #+F?0J^AYlOk5mC8D3Bu1{{P1I+G6grq z{)XA!%7f9|9smzSM~jq=R_Vbj`P4s@6y+=>cj#|I--3m;^ocnDEnC%HrP%?W{(S|S zcX2J-8vT4jofeO=i8s^Z2& wUkt^F1{gQ zcM6bRY5{TH|04--f9O;TVFb_134)!P3W*g-f`unxjR?^P|5F>S$e_Gb!b!pzu%ylK z*=!@cQC9R>GTe} S+_J=m|PJ!50JKlVcPNEYuxQg5&Lg|_%7OJ)Wij*FEUsBm#=^c+6)H~5Q@*a zM?93%hYJ K^t*^SLtbL;-*M%%i}19o8so5;6^re9P9w`U$Fshy c5S_7Reg!mlJ3xR}=62nuUNBM}iJck}uqG2BtlS=C&<;oJLp2LsUXxejS@ugrTq zXRxP#B(Lujt 8CarzoQwZH{jLb0 z3jDi4AS@Nkxv`2ceDA_wcJEjZ`3V0X-xx7FxoTMLV3k%@H5*SF@OVtAk|81zB}btD zo5WYXHYeut%zbY(q>KFLC9erlYSY#hJcs@Z%KuZRq3fGktrQgLpHyoh{_5}8ESjZ$ zJQ8_SBe*RzOl?m=GH!nX9{`4?97RR3p7~4ijeRxxH|^&v4Z^ZU6W)Z|xU!|a28&gv zZFgD(MB%$0@O+s42100A?4(Z{U4x}8LV}RUyQ%p>O)n2=|MmfdIGTaAYXPa#^qt;Y zBH$@Z0Ld)D<+1cKmKu0G*k=x{$PUf_!tR17 >9lfjj5oWPZdIm-IHLL#zitz`>Z+EPA16=w82n$3Z3>eG z+}Vy*tcfuIq?Oit>;crI(e(D`Z=YdYaVmi&YEfVA6SqSO3k3{p>Qqxo&qp7;6_!*1 zK9bl_+Bf#9(~0cF)7`vhLO;Pm$-dG7i3Y^Zl*~Q+)SjCJ_uxpDk8%uK+p(xWmrjv= z!`!sp-^7yUhe(m>!heaR0cP*hoGn*n@PzrA*lKKE40ltTycb(V0^8%Xhxax<6{ZY2 zYJ9VtO~}9gRShJZTG|T~6{R6IvIolt{6~LkjiU(%C(n8w9`@tbuXGx^L8-g{5kuCH z{d|vqhW|U&p1SU;iz0POKm+<-yIg@ZTgVGl2l}TlsX|=FV@{edqSw}-{UjK;vA+&F zF*sHDufJDDwn)%$sV8~7G?a2xkf!(|-pGIDZJ2EW7Y^Y1L{M$~kh2U|E(+DD2MI*A zkZQ8<+0I2MP@T2HHPFUFehtTNrVMFm0Y$q3@$>JeU}OXB9*xay#l8?!rd^IqlMr+o zvlsc6UwkeeKeQ}C$5q|^X0D86%Db1ng4CXrwG~Hca%d{)KaW_4hEM`aQDnBJ5ZGY@ zB0{7ALzMxfYf_KUUgw`rjynZYaeQGI(Y>l;pwx(lm>Lp64&RjsI {A*dq!tZJi!t&D`u%N#9S9B}ho><`tq`%q7Y%_f>>u|4?LteE;m4O- z%{`1P!qqB#bHz&6bTq??2!N%6OomgS{)QOR)}m$*Wi(1zIP%)i2rfJgW-{_GlUC{Q z?JrmX^5`@;I8YRRwU3f*cf2-p{N-e#(3dX!u9k46)92gy#2?=(nETqZT!T%%US1)t z% sMRTk6_Ksh=I=BWMoIT%MeJ&>+22y8-tJn^i;%5x( zYZ=(1C)>J$k~2aPeFfXlei!ocqDEL)|MniXL@GdfDru&{#iN6Uc3|&P2MUwsdlTYK z-yIjui%(v{m0M9>H_^e|(Gzd>dMrnVuE#TMdU+h}{n pK--Y{hc2XOYR zm!mfF`%u3}*+FD4s_W{0(KE2FWt__C=Jq~*nL2WIR?N@ze!4kvJ{-YejIY%lU4#QD z1>1|Sky~O%EVbKz4QC)}%I2DQtHA!E*^IP?1ZLUj-Q{D;WhctjG0U{jP~wGf)&u4K zClFlBVS%X3oC5!-0#B2wX~tk+Kb7FIY@Gm78Ut8xY3cfYHmnmzzu`UElD^&Z?S6cC zJ-(K3iz_ofJI107fr<61t+*{wS`rHSN-IHz9~W6(l59gD>m)Cn3 C&&DFRvz`e91WZ4i?03GeZ*SbLWD 3wZzr$eXT zy&X=^{cZ8TWs7{i)@OqF)90%}@1Co%6KAFv>@-*(N-d1W@t%}#i_%=~_QVhvo3b2% z4rKMylFQ_RC0d=pJVI2na|@<&Ge1WjRidIju^~wX^qe_K8(He2GXmU#Gd2;p*~sja zf!ZuO8UK+E`;=DdL5R6MjXQ#+hQ_jzr9!3I_XIqAdgKKWuw6C#HMgcYyCpsc*sset z1IKTh%leL^!>zr?69oDlAACy{=mcc1ELAZm8y45{mG00kD4>F``y>n{L>y8w)McLJ z8MNKs{kz|CJcDq^_WUz&7M{29zUpxHJkWZO=hdVAmD1(kFVq!sQXXhNX2uv~(e!AO zjA$fdslbXTJxsN1(S*2|Fln}qn<>4i2>Ls-Fd-SS@Z*cXQc8qWNK&KiJ8SWwVR!ME zpXVZC#Ri>|ieg^hVH2wJlf@FzpoS-mG2Q8=MI~ioYw!D3&f%X>N{6PA!E-<#qOp7? z=y{Y|*YR+tsqcSeSLJ<(!Goqjvo6Y~8GKMt=>6MmzGW*nV {18U>-Pmg;Mj zIR$@je5(vf=Ny;&s^ 0aI|gOLLCa*#&AY>NBNJp)9yT z#d8m$0u#s?x%b_1`QW+9qET>w ziOy7aI7;pG>0R7FfCd#?aj5sXR@>oSlh9Rdx53lhAC&jUEhay2pEvY2y)kgM!KES! zYf;*m`9v>}oM4cRi8B{r ^RH2vQDG-qOu-y6^RtuE`z z)>%XMssQkWAG3?ztVt#QL-@l!gkI>6J_+ZNM-fVXCPQDEKxlm-s2a$peDA&vJvVpD zQ$jaGiQCT${X)-k4<}Ih(3sq+)R`#S^2t3hfz ;fmhRZLQ!C8aa z+OcjYv|Cm1Y;u!9ixE|s0~y>9eYUTEs?D6(h*`aPl582z`t)1#b@iyYV;{0aZE@fl z$>`Ubm}xMb@)z(a`JZil_J7@XOi8Kv^M%}2NUURG1VQ7R33%Rxf8l-)cF^j$wX|WA zLCYb@s>@9p=HFD9v!bsukHpuxLLomYn~c;F8?Dfy8t=z+m=M!IpJC!r^O*|+04S?E z&Fi|(_LqAO^O}V2YRQP7nu7iBN-tNV1(C#IO~97qn)OM)z(qms4h_m;LnpORBi#PL zb!CB-)tM kHcL>Q!prnI?2
kfpiHEyul{_r8FI|A}|} z%g=nGm!aT~qU8L+uyEto!CzHTW(s{wE6#&dM}&A%T8nQSwY;IN7PQeG@1jrCV`-pw zb+q!=2pfa7BF`1XZwY(#S=ICrfswaa%_0;TyX!PQzHjY2%G#$Sln~>{kfexTPT9$l zto@ICxHg!RpccI1TwjI-yWkQi _S;5;Lfc6Iiu%uNT>MTa BDu-OKpY-yIzT=lw+{frm>b!uMOD zt=F1SUe_!fmZAE})u(pmEOj4nQQYr^tFsRkQf?dObR^XR!)S9 Kdee+CQKQwS({MukIM@2|+nNC M 5dIS-G%Qd=lk2i~+`+@szH`jZ{ABx1Tclxij zwwWOZH92lWRPbfX*k8o0_ iqxpkjdcmOqp;HD~^__o*w0U(nX1+Fdp_q^-6 zF0n@aUgP6m-oBgv)GwL+sRA`t2I8iOwn{BHMc!45Zj{P!%d;HGxZ(|XC=X*^`Q8aF zhpa6&>_+JnU%vNt^4+N90HxSpCEY-E1J5KveCKKPE7^%tDNF&bcQ?FL8_`5 _=>D^ 2#qHH5 zC;m3}-xqKYY40)BSNz=yqEzyz5s@M^eXr}Px^3^#27~v%4ciYZ4+9h{c=~~c*=gEO zUg}l~ 6MxH%#hw?VyU)_x~oQw zrYoSJ^)k=s1l%r3BqB<_%bS)Q@o%ckegHtmFH^s}4HTho$A`WCmrG kEwW(0LYsvBs+yN-ig7gI`6$OJR}O7K zr{C=c55HS9H=QSYUurf{1nj$iN5kk^(uVfU*{T)^a6?CPr4+f)kA&UdSWd1+rjBRG zmVx${gG`J_`oQNEu(YWsCe( om zDLUP;{6iESu8Tg@ C49odT0N3wOG@pk6kg iB4_c`MUq>Mb ztif&!%!J}+ao3C3?gaP;O1ZjkR(tOQ>FWI8fWzX`Pr0(?ZyII8Yyy4eNGD3MrrD<3 z43MQ49Ct(&Pw?H$*r2tbv4P=(;pW;f(|mGBt+wl>?{8K423?0gFnX_Gila64Hy%ri z_rBZlDIqqP2JVVpb6-x^i#3xsSJP>2h-{gEJ>T#nyQP?d(xZ`UB4MZI=vW@b{l%Y3 zUIn}VC9|XPW24aZo+K%j@38&K75HFW$ZS+fe8C!gGL8SD!j_rQ;Q?D?ctNFv93ax` zW4F%@O>LP9MiRCacs7I#OVUho!|C_(n7iNz^HHXkv24ZH(|d+oZpf+Vk^HaL89`L6 zwNk$%?UL(jVQJZ#;G}J$bC@5q3>Sf$3xv%3Uw4s$6J=?*4u~>ALFJL8+iJtbQmnNK zcV~WYb?;*Xxl|6%#Qwf# CWq)fND@@a!+EMmILq!zClK0-z zN>3!@H2QvVe(!Vp2d6 AktOKO+*L{2Zf{g^?6K^Z3?_ %5=M!X DVpkEZr2fmkqZl3+fGmeNWYD;KbBUty*Fv2@7ejh_hJqO zj`NJz^iYfT7dVT8_%Uyf#>f$c5+EpbEZ}Zc_8D2}@vq{X;Wg%))ZLIK4_50Yn!!q8 za^Zpxf?w{v?>po__qXERw?B&LS-WeiaLFf6+tN?UE0bNSnOBf0My4&Uvz~3pr3|%+ z8mJA1L=f%%a|q?gGBCogqf5L0J7PSqUYi*0ed2atgEP^ tWxsBvot=)1 z%gJag^;4j xB`6(pvbBOXg2m&!xyf}W<8!vM8@36jWIM!HCt8a22s>Lm z 8T%4n!_CXpZ zt?u3g@IbQl5_{{s(k5Y7XoA`zQ;OU$Rdpy$tkbLWV;VxMCT@o6!@t~QJ^l&85cLj( ziA)i=l_Dh{1aHJS>`4gvj+3UtI>PLPtmKMa2{+xQ^sJX8Nc+|++g>vJ{V1eJzS$R-R_y-Q?>wT) zKu=AxRCxQ56Wy~lKDHSjP*MVliPpOvUT-w*K7m_@^bhpFXa8@1YIlV(&~r 8rjw~tv;PYE<_AEJmQ6*Drcj3vp!eZ90;5A*3Tkc~tGH!G-JZJNNxA@t6UNc`b z7z@BB`&kc`X88bBQR|YR`BRdqCb4sanw$*LyUW!!JxH`iIuV{9g0 $Dh9LBhaZt)kJh@YfBd9mZ@1zJ%pwvCqVSaWkVW z#vgyt^lg{(|DlH$jJ+aNcC}?uOZ5t$xVAbT$w&1xZ@0`%g3CE=&Gdqk(hsPpR_>*g zg(dy>UiYq&W;rT=+A5l)hLM4o=jKM}p #8b@RPGg6IZIy$Ax!FwEL{~d zq@Bb1FJ4h)EkI_xaw!>~G_e`GMLE8oCu$a%$zeL&Y-xCPW8E&F(s91%>aKry47Lds z|6d@T`i)~O^R{x%dV)k$#e!bnh*9&KoT_1YDP~W|A1b7yty=9aMChWCNZk3D9F92} z0F}$@eyiXsiofj#ngE%F1&eQL{u+()rkMvPn&i6cbV1{+i?*8ac88J87?9QaW?l9j zo)&?O^*l5byshM=*1eJ%SXdmz^a;I6asFBKx!hMb{*TVf`mQKjQ_jN1BAX`xc63DT zI^xM?+EE9{Hu$LK(fvKu1X1>{ym+vUm^y9Z+;C0JKe Sw?B3S!!S ztS`wZ%j{LkW|26cB+)-uadDnv#$~pNl#gj44PN<=T6f!mkik>mi@1RyPu}rkhtpk> zy(oe^k@qq2+e*u`J%WZ+@~Kqf5@jsATlV?1ocX~1n|zn=)YjMml3=zHS`NoI!P*?z zAo&VfV@74mq}6*g0YxoIt@?XW<52ma>#GyLSyoAx*Db#MH=&o4otjajMxv6{+u$NR zLWIT<@G*fyFA8R+C>HYOV;y)7*-}G%CFr5KV8|=5D*FIx9<-Z_=Ye$ej#BgljBev? z4%#Bw>7^5*X~pgveNE>Q>(FPe7m5V)Dpr3hK4%r#p9r4F%s#3q@#S!x{_2q;Sym3P z3e7$qpHPQLCvL+r5=GstHWQJS6fjwlj*i7fQ87@7Omf0+V_eg|LE9m%d<@{UQ84@Q zg@eYBoBy{m9hP&u-$kk@CmDIj;-tgVhjK;tc62!0|6sPPMzFp+sFNLGi4D`T1`5Vz zoKRMr_QN*|s0HlMd<#ghL!*6(B2U#0;+0G?em$ZW&F(-5{SCT}f?thYA)hbPMz|yH z#%&`bvK7L*wceM7o?jazdlrJrm|MWmDLLLgQ8%Wi rxt$4Fn ?+*SZa%N$jqN zsp~6y1U6}s@lYptm`^bm?Fc0I-l%G&5B;^Q#}YcNu`RhL6@DZR>2gq=Vyu)5)aqwu z+h@l2A Xxo6wng zdC)2EFGq1_E7t#+MW_H6A?zFWmqn6mKZKuj-(r-^0taM30H!=E(kI=)ANjHJNc=^_ z$7kAikp|EWzz+d6Sx{Xu=Ktnzc)_&=2*A0J89e-j@Zx{mHHC%*+LAPfT57ppY|D zhJdszDktbfvt~0^*?brh4K_O=fYZ^gjX-P!a{My4kfBuO!Kg3NLXP0R5#N+$+qdzM z@MBD^`l>; a#)rxgOAVT(m$ntaA&TO_SCmfev{ZX)-UdE22t zgOtnGz{&Yl>fUp;Fw^VaXcH#X#Vo5qbbF^Of83-rl&lpzlzfYK?5|bwT|ROA{{SpO z)4m2=?=MvS!H%rmNkD>C%hN>AN?DYwkCe{{B|yDS{mw}_Fkd0RMXL&}9NhQZ-~Fo# zcinnZ2L)03V;t8+N=?wTi}?9;${A>vsd}n`Kxwp;@-1ZnNIbJB!uQi_`<>hgixs7^ z*K-X+5r?Twh7c4=RtP7RjCfmK*Ln>oU4)D+&8`25Hr#N4Y}=7iB7^*xDz8RplTw9> zT&efj8OxXI*w8#!n+lxJ!o4S+{V)E~^5Okz5Qv}3$ibd|utJz;)O0`uiAwh0QP0pG zg1yzOk7U&+480qJASU#0shzM6L)@991}4^cmOPYZiuPXDUVis;fBPpUdv;GftYG87 zOenj-D6Uj^(YLO9ExDHI!m!$ zR-WmSl0BvZ=imRfb3gPBxcOj&<|%EPeU&B>YBhjpc*JNJLotSt-3e86?#Aqe>wMvX zg;+U56U6+9S!EDiM(di1oiU?_a5L~(x3*0$f(UYE61Fg}Gt;RYaOP$J13Y)!@F&lb zI-6gojqpU|TSx>cAWjVGt x8w#tB`1(@RhP^t)(0G87@nHc@*$ z;!9xfFskc}De6CNMO~NIh2YXDAcV~M1PuXGGgelc#pUMOV*Iy&OG`MJWS$94`>#s? zVSFSq7jx7yohCd}xLWCy?a_*aE3S<%-V-Uz ?*#H##U8C$x0p;IqH*zU9OF_=?~3yzRab zY%CIQrqIfgswVX!;dmd5r?@`PmsC+w<+4Gj@J}e^3;_^ng3HS@m#&RpxHR*^rI{Bl z%$~k5x_E7T;mYXxA}+7s%4)u3W;~gjS=}?gx^MUL(F4oJ4lW-*w0wBq^3em6J@b>% zIKE}^N}Qt`E+V^EsXoM|+Ro9PlSL1SQ$eOYA;87=zWKsuzH;ObK1tJEVloVJJ3_ lFp$onI>W|;Zk#LVfNJd`A43afB2c*-+5;C zxwGR7S4Nkv 1}D2_SN82*IkJD@&J)+~yW{%HZeO_fw&g?n zC$qDF(JsZaJ>)%9al+qIy?7SMG_Oa&^-MXB&me~E1)xS&HaY>o>iqoapZTG^UwUZn z)C)Jo9KhyCv|l!!M>!+5G#Hlztc9FpW&%Vhbh1~Vxe=%(3b~0;H{2s*Y!H}!ip&IP zLm&(dz^Z5fr~zn@nwx^2rgdm5o*Y*vm)`oa7k=!`X5v--M0uWKTUibhlgbs}vPz`1 z3{zd0-7)F8xFC!~G;`_7{KL=e{o;4_eC@IM?>;*|f2CPm4o{cYa^TRxMbunhoV~U% zck0}puRjJK{_N_Wxus)=uD{~0E3bR$l{dV6;m+fe**OFNm;mLO3$nVKdwN#y*feI` zv-4+fdFv&pU7XN955nZytL{DfWADA?U;f8IM3_FLH~{&Fv|Xc)9|Hgo697tip+Y{? zQ|--RE!)OOvX&aY;Y&)^#C^rYw{gQM%)vVfL`%o^pZc5Mw{mbVz@!{(S;Z#n6yboW zO4-fy2_`9rgCKQpilITpu*YV3dDo-Q9sIMe?f=X-cYXJ{(belXp_b#*#x+08;la(d z#reli%|G_sp^tuk`RIYGuX*W(_q^`%1Fu* XpbP*7F}8I>^G(5&^Ai9Fn(?J8d%yJE!ykEY-xnSpzi P1lBabWXHHQXM4dISf9e8dS#i5 z$Hj!<*c`}x=Z$#ncF7*8!LHH8WOPaA{sS cR%#x{KHQj{p~-y z@V*CL`0;lw+ eqi@E9%&Yrx9u?DhCvk &hTK$Hss}P#E$=A7%b`h-D;)vHkV~uuXgRHUUm17vFsE`S-rM{RIHsbF}c> zuu+*qT1ZR2Wu2xF#=of4QtZia{?TWT|Jo-G{n3NtOV_BuDF=7)&eb3Q%s+nWwtxPc z2R`-H=YQ_~m)`N($;?c
RE7>BK)Uqy*Ia$= z%lH5JSEn|E4j^!vxp;!HQl_s(#Ez5tfW^fneR$36em)7T50rd_U=T5<`UUQ$0tn&Y z+HKqc!)$HtSm_WTTG_w*^iRKIb>DpS{SNV|K-{lJhUx>fZ5mqJY?D|>iDfMO5qPjE zTPT8~>r00|^5BVo_p$lMP7%QN4C|r>fneVkzdirR(=YtQyPyBr_pcm1l=7(*!f4IZ zOd*S9$Bj}`7$>U(2V2!5NVv4JZ{OJ;de`1Bev2=L*iL8_&gjJu?;cJItFmRt8uySy z(u|diB4 83cF$jwrJNnaUBFEX#V_qN`6RUpB|cfab&>+eZXD}&UfykRFw zGY==V4!d9{5DV#*3v|4uX!mdCo;`c=-~8d>KlpsJu)IB4KL<6<=<>A_|LzZWKlH>i zfA6ncz5gCvK-xw**||j;iw;cc>MHEc-v*!(L5$y}%Wr$__51GH^YurzTR2ckGfx(0 zS3QUHnZUQ(gtvQ12=@07AwA+AggfA|Y` z|KoqR_siei`pih1K;s5?J$dTRfBGxOe(jH8X@%MJNs&Xj#IfLSWyoXSy-`lb(Y8h@ zSyMQB@g1*Uy#2)X&Jc&viPAxZ{MI4;6F-_V)~ zT=?EsUcc|w& D$S(M(wX|3y;vf)%2eJ65wcI>Eyrt=*eIHXmf4pMyJ5r z8W3W0ec|N4{@tU$`Ei&~6gLqVYm!6@v@)#}_AT-!>2k>e0+6 CWKX&rp{xL2t z-!v}YAwX=dF5L33fA`SGJ};@L1pIs?k&HXS1_(4LA{P nCl(8+PBR`RT-~L+Dqam(Nj{oW>PW 3nOZEbV%b)5iy-YD#4tiFTLe8ODB)QHd6v(Rt)H1+T1Hp_L#;bnR4^;SpUI7 zkz<_@%9jLkFIB($x4(Vd{-c1C$<_Psyz;uc3yHInP<(^YteLlRe@a}FLhpvOi*=CT z(8s>?VzT^{pa$ojdj8gb{vT)0oKO0aY6;-6&qMZni5D^rE33X3t*gmYS1xQqm@M9Q z{K{+Y+iq@vY+hvVsHOyzXB8TtmIN}kRt6=CkW)DtUYy-cPo&@WM*{X`|e-azsI6m$Hs@0xqQ2QJE}24Qk?BTEnchH^X2c}_KUwazHs$L zW%()J6mj2!4;}vxe}pT`V0pUYfXVwJSmZ$ULr3?d+ojr*eqFd72!O^jm)`nXnw^<8 zdGt%hIe=-JR>3snRs2rS0LqI|kiO`( $}5L>Q@5*&OLYbwqN|cxu;*){tJCK3Pd0}`rDt_|LL!# z^{3owMvUKC5>PspMXQ>Tr1}W$3@)~KqpPpEZ|TJ0ZDj@GMxOLu<${2Yz|e*|ZO1j$ zx7B0a8@zD@N=iZ^6zn~#W2nD$A-jmIRKqWJR kObh}d zw#=TEZaI4O{+Hr5u>vu{Tru}@Qsl{kl!2>hbpp}hm~<&cMd3u@U!0Mw8*z<=WEi9h z6sMGe+tVkh hon+H%}=Z0 jJo% CFmP9~te zl6GKdAAyo>Rfb)li~}We %JWh{wJ#o7wPPAV;Pm k%x#ODud!$ zV8;3o09N +jy_zZUDBg0%eY4Iu@w-i94}NZZa@ta@Bk~Mp z_7P7q%70*-|t(`|O#6AN#x&8eJNuK}q*umT$`><3^rVT8 mAEg zO3=*c(p&GF%+2*uWlcmQYwb4MDzfS;Zdude4?no)8&BT!x!yJgoJ 32H4&|h0TE^n@69yGDlQIVtbE&^@41}AM z`hhc%O#&&K&qgX*_t~8ZBw9Ya_v&lz1b|-qPcH%Gyo`~Xh@)!Rj-@K#uE(A~^1FYI ztJ^sZ{Z@dQX4hlS?tSo~#H w#RA!A~5zv zR_<}W2(I)8G m4!*TDIjBIAk9~QZ&@ZPl7617?YFB+P-66qWELZQjg-}~II$4|fbmwgRD zv$%Zl6JKnW7u%nli`B)@4!Q;Fb=YLPFro(!4x-v-z5Tbkd+z#6@7x}(f+<);g%X(R zkqktRw8i>dilRILOp@)AB`S7o2<4m{ciD`7cop3i^Garwp{H_34`|d}e&F88{2TyS zZIOTR0@b*R_5h+ (3 ztCHe=s_L?QBsvFF(^4~Y?Y_Hcv@Ps%DCwZ4L;d98k6;^(s?O3(^LeE%Y}{Vq0D#aW zg|84<*jg?}L8Kf)d9zG8-|uJ;t?u1*<#l&ge81|aRa>WI3C& 4zwfBT7<3zrkSW@o}*$=vdfuE<@A`}M>_G9 P|?hU421zd1tsJc%3+|zg|;%) z%_pW$iJKMGc<_9j@ppY`P5>1(So;QK4GnPa4@4_R_FaGJNp`5)Z&InI78*xs(bu4n zM1Xs~`Q)B&KIy?f8i=E-*LQvQX#gTrvbkVfMpQ*CCw}I$j6X65y;?}cYoqaa>6T;L z!9!!(C~J#L_^ae7pm+v(X{A+BD4AG{;SX@!AW+_uoKUzGb+cMlAa9>8;Di?LII?u> zp>;1Lszu-?S0d#w!(_Zei$fs*B25l_;_IV}S9e_Aw*kP(Wd1u(;bfIZ HjC{Yiy=H_3;t$<2twYV L)=db2i? ;Tt*wxWv7%=0pe{^S_kZ@=qlKlNvhCMe(ctXq^LPK_e>K@Pn-bvI!H$Y| z*@GjCSjyoa_ZmZxY!F!cHH*v5HrSydMXaj#1^%?`9kER$nYKA27(?8ULP!2E2S}tu zvZtZ)jksQLqY)L;U EFLrgWTEEj zM(Nwk3zznO=}{j{9l+(4-QRg~+D{R%-R9}4rq7>QmLP;NOHODE05QP|J;AYY3}rfr zNpHHqv2(dU01z$Sb#!t}+GCpsN8OFm-H&sB$i4`MgmbE^H3X{CA$6d-m*hh%MR9 z*luiho1iZHi!$ZeaboeM1AtY{tYu6k0Cuh8#v$5(FeHM*O0M#C*1bbH4mG&&lH-$^ z8H}L~xb~hLT?bLN$~Bo`C)yg36mx*d-Y uMv%&{4$r~<@wvlNO&QWro~%V1l^j^;HqGhTSf@%C$6DkRih*1ePRYX@pYvuGS7 z;! SS}Z6V!}ePV6ik`A^?WPz@7zY zGZ85tvi~bqq1Ugs_65B`=g<{QrcH2%&H+SA#}BL=+{45okuZa_%+o_;GPDRa!(t4( zD)ooe-48w8EP4JP$J!9P7jr$;mpx-%0g*Az=6t3enBq@5 7aRCbBAsAMH zX*WRkEsAfTE8cNHSUz!ZGCKyb!qE |Rn>Ms}c z49@)taOQ a`d?2dO;aRnCw68zjd_)QyzC}QxZ((XO|D}g-rGk-P0LGx8_rp z{FIwJJ zvQ)>fd~~PgfgoDlyNm4t*0Y4N?>t+dq3_e$?WlSQ007KC`n>M|<5)ZR$}Q?N?J|dx zJl$#lIj)cjdr;BD({617N>6ELg6U<0NH5<{+H2wep0 ?8{&@o5v#4u2T)dRaHyJpydZkS0@#D!_4O^V&B)FTEF0gkUM%shVqJj0D+ z%?Np1S{XxiJ5y;b*++w6A%G$KlzD!-_Of ^B7v#Ds^k#&mY) zGLlULnGTrtRN4?ACLbHV2q0lVxbRNG^0ECi-b|?*!Dtjjp7;}46UGC8;} p3zgWw^#rH&5Ty}&Zh&tq)|eXov~H@ ztcL0$FMyNP@r5hXrikMvMvUPU;<~c`a0f2Q)a6Yr{-m_^6H_I2sOY%KuoW$q`^ShV z7lJ>J616!_w}*abP6 (X(5RWr zj0zGkB^oPNRt}>neTn3Xz_NPenE;nonuVnu+7OP7!r=V;km49-m~sPYt|(Jk6>5Pq z`pt$R73wp<7)o(wa5^`G#q8MDoa~x`QCtBd&QRSBR0qllBaah|D>sNJZQ~~9<7ROg zS3C`zV}n30?As1qvBD?^o8&N1Q=-SdgN{uC4PZPt=ulB}XLUPn7C-=+9n)y7%Ya2X ztpNqwbsE|FPsEqp$8~>8E4aGqiFF<80~xkp!*{EVH<-gZn^Xv;GOVgFX9CBDkrn{! zeSUR($&E?GirKcbgFvIEu$bkB$g3^H*>3BQtcOQWQ&_VhlK@2xU}*(cd=Y?Sorvlr zVa^7@kLSPo!Wd}SVCbEg*0Pt9zUl1Uactv8A>@ZKGyo*zQaVvyUZnX~P4lb9xbNUu zoM>iD#r9iiEP=u0sna@y*+^Hcy1}?UAC+yW{j$93tH2x^fle-1g@^`9J$%eBtuH1P zd2Bl-7RTm7MF9Z-7)wlRO+g*g^p2jtZ|G_k>7OT{uI1X32~2z>Io1bMJlQS;06EOO zNCrnSVWG?=n&TDFQUz4)j?IG7u`;I;M!L<~$!kZl9)iith(?VXI2)h^)h$D0S=cb% z4x8l_oVW(ySRZUI-NH_4SR8E_uWwVzg*-DL1;|>w|BhrKn}uXmKz>M_Hm}Q>LUXDh zR8<%EDv|AeI||VUASjQSl51WEfa(fs;f74I<&u+Q;|S3`t>1}?ATu5mRCDz;0AbO( z4p3m=J=Z(#)}UyPC^p7qV=NDlp#pj{bpZR0t}86ZHpY^^8^yd6J8s@}Y&N<^y>i@E zlfgk@b^s}~KqohGMzdiIaMB`%^?LHUC||B^5is=?c+rDMS<&)Zyp7aq9<7A#(hdy1 za@;tS!Jz!79Unq~!3m7Wt1z?BK-i4DBT~_^R$zxPD(!DE31~_VowtYVsGX~ABF}{U zzT=v)Szg5nkJllPInyh^WFV?86~ oQa(=k#O8N|Boioj@k%rAaw{WbS|J&RQu_4s-+p5i7i7fPj-pnF&sOme*JzbQaX2 zU^|{P|C|}qrfyB_*kPa~-_@cwQ%UngLze7s-)h?Ly3?Q{RMgzt#f6Z6445f)8c3VY z;#4^(b86`#ronz)RAUm?k$2AFNZ9BqpQbFIwPLwC#`F@q2D>Rx8dlEw!+x)w?4GLC z1Y!ujw9R4`j72mln~IrEZs3zlW=627d(%61Ak0M0R^}c NWif zV6yzgodsdSRuc`g@y(5CX0(InV#g*xnSjtZYZ&=kv7-qGQe-r0X;gOGU=8vPyLq4} zK30u1?O)XTKtiwZYV)rcJGSGd23(yqi!0&n I@YRb zs1|Ma)X{S;H2sciNW_)N=-MK4jfe#Sg%V(B02T-_5;Fx}=zZS8iR8wi(P-s>PXLZ} zg0BH4<19eg!;?%IeE{vQP-tGvGRYxG>w^cG-*6;XVVVY*pQb&)nqh5Lpq=Z_N5GZU z(dC8qSGhitYSSfOH(-%EBzen=IC7o22oSO8BWgw~hxbjJB90di>TB6mFhcYJ@GH5| z*<=vRAK=(H`WZHcEegY~ZEZd#is}ImWb9pvN&}DW0O0cK=<;>r_~1p;<|GmGHSt3z zHhY#K*{xr0<>216Z&2)Tw4hQD=d7C~S8oM)URd zAfR#!CL;~iu8^mi `uV= z+|^<$u3o*C>PLkQwpG?BCeLM)fZB$P0ATs}fyvyAi&Bm?LB`|gFhVmq1Xu^degHfJ z1XhX$NoVr{QFc76)fu%CMxZ$_r`yCTNyXV6%KZUg=KK{9yRnCbFza5Fi_w|Zu9FFq zba!op0JL&w@9OTkY16}TvqB5zl>z`D@>#_%O}koANk3Sakl2OxQenpiQBsu~lzXTh zo3E4a?_73YV&;X*&C042Z?gAx9n%2CLCBLh0d(mV?U~g*yOxja!_C^}*|9Sq^Oq10 z<57KDd2?0YZenO*Ff3T>$MXFkjt&n4-3%C6oH~nG+@znqcg)v2l<5${=+gD($|7h5 zH-t#nodG=*3;y{q=3 2RayR=luwmE^n>fXW##QnEF^(ML=H|UCm1+&O{x!rmF%U;r7snT_f-tgm(19xU z(OOY#9re(mn5FVF 37gUP;rQjZaX>UQJN}?(l4=U&Inioep2B7KyfE-NN zrkBw =nUD1?`AmQ-zr ((>WGOSc^IKp@9D zP D+i8y2+)l~DUMRK?qGGL@4!G&13SDCXP>*!TwCI#7_Qpd zP8Br2rXxg^votqz{l43FdV4t53$tJK<%NkFK#W)uN(5QApm@@kf^8Cd{pf@QZBEH{ zD^G|{V9jdQDLf`q^^OA}&Yrn6zIcr |k3vIH@1v_}ta; zxhsRaa2FZd$vI5T(d%N)%9UE^`n@Mt4((g-MDEzpK*{~VG$U8KUc+P6%0zE5(N&IW z16h}M*c*-D2u7e*5m-+JjsghH!qWVsr`dtd(p@LQx|*7wofi+e{NnF8?r7 4qjzBumNR(}GpW1j#gy$WWujSH z+4cD8ZoZ9@w}*r5yR!Q5^%>UeK-M<(K~*f-?J+F_ z&ies`j@h~acn^+Ws2n8DR5lH@F^^R2_mho6X(e#YbBXz~?g*isxDq&G*JEdzg{7ni zLlSY4XWdE*(HZQs9#x_poL63R_hk3n4sH#{T9GaD7`=q1ADHtG)uo#du$(6d;SFY0 zWyvKZgj-k6EJq3KjmM0ewzV^KAtp*6&l<3!S925M+*4=Am##yPfqxKi=w$}YTY>EQ zeYY*%cEp209fQ%z{um{e%#RBrP1V@Y5F*KI%7hZ)h5&ihsVl6TfikQLWfO)dAPQT9 z={yh+HM%u6$4=)o2s39d&pmUFyU+r`rN0Y%Wd3+zS}F-^BW`=i^3i=)UwgOvfqOtP z)rQjv0J3=pk>zP7X=cQF=w`zhJ*BCnuqef4jqJEbgKiii_>gm%+`SpmlYIdZ%Yqdy z)t|y_XNG|Sgp5GD9yuk$=d92jYmIz3B`T~gjvS!l5jEpWZ+-b>*UYr(vW Xe2hCxu;?$~-? zriCLCbL%Uui(=xI<>Ln~zv*SWA9-%tblHx;2`%1n;@l6ub#>1k04Tx|McK;tgr;-d zcNq__x of5N*4MUIkzjN(B0MM=ne)jy_)8}QB^hRisCvIiZL&)m2x&T9QBph9Q*Y~XK zn|Duu0fg%>y?wHK4q*jh6=8y~3gPdX{!M^ZfmY(b)%*`u0ag)K5mo?J+P^@n00b~$ z|7iBPGtJ`C_E|~E<9yWYXX%=S=v|!?s)+hnR0$~|}N>}f{>)NaC^c7(x zXgs?1s+SOsfF-{KO9?9>*_LicBex19j)*BuGOuU$+0(*yG$kbeV6k|MMQrNg!lTv5 zb4E(Iq)PDR1DuwQ%|eZfi|%O%9c81LFxqOn2r$zFu1xlR(1uhT4L#{(92iXor?9 z6=UrPOg#Xi4R>|#?(^UOn#qjs55qtJM9YWvU3>XmVA((U_)wX*dt @U+ z_v~q0S)Ddr`0AkcCn-;D?HyakFCjE6t_o#cg&`>QY)Ku*rl2d3oVk8OE+Bz{Zr;8i zmK_N~-2JU*XU<%z8(Od-Az$WB;M}g83PX1px(j zq2MoWg0Lc4KgjDdX%YAgBf7j}y+AvDD=)N5=7d(Rw3Gm=3E0(&=TP^BI|>cXJ$HWB zW2b8~C==Ih)}6z2sZ@|vSP*sE+}dWEEZute+z-A1ng$#Z)Zmo|Ub(twz7%bXNM|h1 zYRK3i#qo$BnO)UbYk!O{UY>jA^mfSGfswhhSaG2Mu~UQ~M2egXC=nUhdg79B>|oxH zium0fn}^(s+Z2-s7$cVpR74!?uiOCu&9%jS4?bFr=%}-i7MYiz7Vo*8nq_tE1`^=; zA9(H3t%uzc5J0rLf6wIyUX`u?lE?sElWL!WjKa*{T3m}tnNbDjo_T(J{?fJ?MfnxE zqk_Fejv&d`VEEU_nvhGQ23aMm*)9~g$&t1Y=RGwyL0tDp60Cy$)n1Mc;Dq*k+## z>*1%&aT3?b4CBSh>4wNnK{4S<_qsd)pvAjRoO}Q4ebc=bIH7B=xcl0DcXY%u^rAXL zgqgVwacqYcwSqsfe!$1(u1B99UA?|dOh8=d;C!1+Vd1OEBbwsv${Rphy+TOD-CH|6 zig42);;tCGupGWvYzeb5?(c0#4bFe}^sdLwK)Xgpg*p!-PiZN@81j#C1sL}bSQTJ$ z;t@7y|MHs`?>fFsR-8^3G#*`e&l^_v?ujiU%nmhkh56k$*0O!EJ~k?SQS=g5uCDBU z=rLT~J{}s1ftplj1l*I6Gd=)M2d!udaw!3_8xZ4F-aR)1+K?7jWAKKFOrPvT&{|aC zS61&TYS_U*9ACJ)?+cGYSNMIu5)d?POfh*ybQWdiqApD$Si6`LffnvQarTGb1fw0_ zKoeTL_2{Lyy&5H>QqnHh*;JI3W!f`LNUd6p{7CqL#M11HE?=8}_=#;ZZZfMT86B%S zANLk;8(P!7lr6;u*+wChva4g=h|E|uhh891Yb?s5<=_;pRhPmJ1WsuGXCE0|T?FWu z1-j;d I>E_IT!!QJv;1ftd z=#fCV%()h(?kZdhYH EXSiWRbsmk<7PvQqK$jX>WKiekwz>A&Q9Qtr5+qbbaSl9 zTP^@`eDT`;Pk&o3deMbs4w*_#0Byo<3hra6zQuL-!JwDVku2B#rSsqS+KcagHPB8~ z0uavq;9IWWcPEGt#;hlkeNi@VT2Vk)o5i#Fj)XluSF*Ca_siejJ`Mn8IH;0>35Uju zH$5a#_hR}fL_djRgNRa0rBf!Su)(f{0JMfU(EhVK4oI~BvyY6=Uul1?zhAS3zC?VN z25v6R(@eQ$hx4q-{H{}f 2JvRIN zS=a{2x}`K&4O>%vEV-Jp6S$Bfg``jN9&8!L^hxky0&39)`2IfWSmH8lOPCI;bagog zvM%m!fB=Ni)y0D!{{}8E0~FB?#i8P?&Cn@?lSEfqk;nr(eueo0&wk*6b3gRPX%lEm zfs@IV*T4LQAAJ`Ww_~S8lzW0vcKr5L+w}`WLgctyLwQ4Svbyi{UuzbZrcE33wUAF* zQ0c5B4gA !yJk=QtslJdx_ftuA&6-C$bnP;=?7L09RQf{ zSVX>~LK6Qu@9S 2v$O_|UXTBVew6u)3CYEdfwaW>oyE zCRucaJG;MOu%t)Brr!!FZ69qn1{fNS)@j~zv_PCaeevL@!XTFdP!D6V1uh~8dpNU* zX~kNs>(WPBg|m3;k!SvQKeBZD(VdVVf=12hpZxyIZ@oYHepSFu8Nbu(#k8krRRsV> z?V|PL^I2l=mmivY>eRLh04;fSB{GVcv6BBJrh*{mce1&BjE&8%7nx+$`N;afLca^T z$M7Ilu#GB7;rqzLbi2b7YjbydTW`J$oJ={IK1UIIXAUF&2o$xflnJAs=ZP`eDE zJ7!Ke9Ti_gpewJx=js3bk1ikH_afH=CUoJw51jeQ_d(O7t$UR )I5&fKfhlzd5J0oCbl{T@HVaGJX}H+_BxSh*85pZVNpciWihpXUU -exDib%!xK30Cy`t;139!9DO*8-Sv-|)2JK4%G1X$xr6ca$ld=Oox zYQt5-P7nfJc<*bU`&;jy?4EnEI)rgT*IxCKXaDmbUpcTZy?Y_xWP!D$oGH+7+XjN< zg4wf{PsivMj74$o@#pq_>7nhjS2N@1gvIzrt2dfrVgr)7C+V`+rBFoII@W`lz+xB9 zO8{s<@gaA2Xf%r}hd%n1(benrAnJtHzM~ld1 z0O4e^aQm^R{^8FoyyUhv@}~&I6vQDWlIB_}wF_2O)<|(-Q!J6D^tQqSpZU`4>2ur1 z5FROmR646=F_Lnkg2)AwuTgo-tuP~dU4di6=wb@Ur{*$rXw7i@PYG&p--D0t|J)-i z*lH++bFMOIT{cmk%tk&Du2MHh8%KkMVs?D`XWsMd-}y_E`4`t5FrlTBN1pyKfBMSn z?@J`&{o9-adN=$^P#lff#0h{9Q3Sw9f9TBliw8gc`IwVq8_}F9?7rmt<=W>K4FIHl z#xtQ2Q@9$6i7@*asJOjjjX*w)3L{(lM+W{ENyezJFIIg6+#%#)pc;sytBZ#}{H11L zv0On@L!@NhIUAE#F`S=t1Zea&BpZV?nH``0nfE;R3x8>{d)JG@AAl2DK6&J+|Kne~ z_?|cPb=q(R`yWd2v?Q|dS*kqG1kv#uGIfMgVF=>BFMMPE;m5b(7ClL%K(=hneDRdn zPMvMkTA(~>=zXWOk21|Fj*S4Ru1l#U0O4Q^0a}CfN5Y5i({>-I!F`{7WZxGbi%zmN z5G=*2mj^rQ>Apc0&f3T?0-7D4{+aha{SSV8`Pc#2Hkk?52b@e6Z#(wXKl<78?|q;p zoHE&?U|k5I_b2Vj2nv#9Q^zfHxpFeZgdKp`EG{1U=wFPkFHW0I2FwVM(t1zKbfuVf z)9ODpTU#<*mj0>Xi!U4