From eb8a4d27a118bd6038b12763d06b5d725e7b942e Mon Sep 17 00:00:00 2001 From: DrJfrost Date: Wed, 18 Feb 2026 00:56:16 -0500 Subject: [PATCH 01/55] new app website-v3 --- website_v3/__init__.py | 0 website_v3/admin.py | 1 + website_v3/apps.py | 5 +++++ website_v3/migrations/__init__.py | 0 website_v3/models.py | 1 + website_v3/tests.py | 1 + website_v3/views.py | 1 + 7 files changed, 9 insertions(+) create mode 100644 website_v3/__init__.py create mode 100644 website_v3/admin.py create mode 100644 website_v3/apps.py create mode 100644 website_v3/migrations/__init__.py create mode 100644 website_v3/models.py create mode 100644 website_v3/tests.py create mode 100644 website_v3/views.py diff --git a/website_v3/__init__.py b/website_v3/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/website_v3/admin.py b/website_v3/admin.py new file mode 100644 index 000000000..846f6b406 --- /dev/null +++ b/website_v3/admin.py @@ -0,0 +1 @@ +# Register your models here. diff --git a/website_v3/apps.py b/website_v3/apps.py new file mode 100644 index 000000000..73013178d --- /dev/null +++ b/website_v3/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class WebsiteV3Config(AppConfig): + name = "website_v3" diff --git a/website_v3/migrations/__init__.py b/website_v3/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/website_v3/models.py b/website_v3/models.py new file mode 100644 index 000000000..6b2021999 --- /dev/null +++ b/website_v3/models.py @@ -0,0 +1 @@ +# Create your models here. diff --git a/website_v3/tests.py b/website_v3/tests.py new file mode 100644 index 000000000..a39b155ac --- /dev/null +++ b/website_v3/tests.py @@ -0,0 +1 @@ +# Create your tests here. diff --git a/website_v3/views.py b/website_v3/views.py new file mode 100644 index 000000000..60f00ef0e --- /dev/null +++ b/website_v3/views.py @@ -0,0 +1 @@ +# Create your views here. From c8c95d7a25c74468f878017eaf9eaa7cff8c8b11 Mon Sep 17 00:00:00 2001 From: DrJfrost Date: Wed, 18 Feb 2026 01:29:29 -0500 Subject: [PATCH 02/55] documentation of the flag characteristics --- docs/django-waffle-v3-flag.md | 133 ++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 docs/django-waffle-v3-flag.md diff --git a/docs/django-waffle-v3-flag.md b/docs/django-waffle-v3-flag.md new file mode 100644 index 000000000..934d922b2 --- /dev/null +++ b/docs/django-waffle-v3-flag.md @@ -0,0 +1,133 @@ +# Django Waffle — Feature flags + +This document describes how **feature flags** work in the Boost website project (django-waffle), how to assign and manage them, and how the **v3** flag is set up. + +--- + +## How feature flags work in this project + +- **Library:** [django-waffle](https://github.com/jazzband/django-waffle) (v5.0.0). Flags are stored in the database and evaluated per request (and optionally per user, group, or session). +- **Middleware:** `waffle.middleware.WaffleMiddleware` runs on each request so that flag state is available in templates and views. +- **Settings** (`config/settings.py`): + - **`WAFFLE_CREATE_MISSING_FLAGS = True`** — The first time a flag name is used in code (e.g. `{% flag "v3" %}` or `flag_is_active(request, "v3")`), it is auto-created in the database with default **off**. + - **`WAFFLE_FLAG_DEFAULT = False`** — Newly created flags have “Everyone” = No; they only become active when explicitly enabled for users, groups, percentage, etc. +- **Evaluation:** For each request, waffle checks the flag’s rules (everyone, superusers, staff, authenticated, groups, users, percentage, testing cookie). If any rule matches, the flag is **active** for that request; otherwise it is **inactive**. Anonymous users only get a flag if “Everyone” is Yes or a percentage/testing rule applies; group-based activation applies only to authenticated users in the chosen groups. + +So in short: **flags are off by default**, and you turn them on by assigning **groups**, **users**, or other options in the Django admin. + +--- + +## How to assign feature flags + +Feature flags are managed in the **Django Admin** under **Waffle**. + +### 1. Create or open a flag + +- Go to **Django Admin** → **Waffle** → **Flags** (`/admin/waffle/flag/`). +- Either: + - **Create** a new flag (Name = e.g. `v3`), or + - **Open** an existing flag (e.g. `v3`). + +With `WAFFLE_CREATE_MISSING_FLAGS = True`, the flag may already exist because it was used in code; you only need to edit it. + +### 2. Choose who gets the flag + +On the flag’s edit page you can enable the flag for: + +- **Everyone** — Yes/No/Unknown. “Yes” turns the flag on for all requests (use with care). +- **Superusers** — If checked, the flag is always on for superusers. +- **Staff** — If checked, the flag is on for staff users. +- **Authenticated** — If checked, the flag is on for any logged-in user. +- **Groups (Chosen groups)** — The flag is on only for users who belong to at least one of the selected groups. This is the usual way to target testers (e.g. `v3_testers`). +- **Users (Chosen users)** — The flag is on only for the selected users. +- **Percentage** — Roll out to a percentage of users (0.0–99.9). +- **Testing** — When enabled, the flag can be toggled via a query/cookie for testing (see waffle docs). + +For a **group-based** flag (e.g. v3): + +1. In **Chosen groups**, move the desired group (e.g. **v3_testers**) from “Available groups” to “Chosen groups”. +2. Leave **Everyone** as “No” (or “Unknown”) so only the chosen group sees the flag. +3. Click **Save**. + +### 3. Put users into the group + +Group-based flags only apply to **authenticated** users who are **members** of one of the chosen groups. + +- Go to **Users** (or **Auth** → **Users** / **Users** → **Users**, depending on your project). +- Open the **user** that should see the flag. +- In **Groups** (or “User groups”), add the group (e.g. **v3_testers**). +- Save. + +After that, when that user is logged in, the flag is active for their requests. Log out and back in (or use a fresh session) if you don’t see the change. + +--- + +## The “v3” flag and banner + +The **v3** flag is used to show a banner to users who are part of the v3 rollout. + +### What was added in the repo + +- **django-waffle** in `requirements.txt` (v5.0.0). +- **Config** in `config/settings.py`: `waffle` in `INSTALLED_APPS`, `waffle.middleware.WaffleMiddleware` in `MIDDLEWARE`, `WAFFLE_CREATE_MISSING_FLAGS = True`, `WAFFLE_FLAG_DEFAULT = False`. +- **Banner** in `templates/base.html`: `{% load waffle_tags %}` and a block `{% flag "v3" %} ... {% endflag %}` that shows a grey “v3 flag enabled” bar at the top of the page when the flag is active for the requesting user. +- **Data migration** `users/migrations/0021_add_v3_testers_group.py` creates the Django auth group **v3_testers**, which can be assigned to the v3 flag. + +### How to enable the v3 banner for yourself + +1. **Apply migrations** (so the `v3_testers` group exists): + ```bash + just migrate + # or: docker compose run --rm web python manage.py migrate + ``` +2. **Admin** → **Waffle** → **Flags** → open (or create) the **v3** flag. +3. In **Chosen groups**, add **v3_testers** and save. +4. **Admin** → **Users** → open **your user** → add **v3_testers** to Groups → save. +5. Log in on the site and reload; the **“v3 flag enabled”** banner should appear at the top. + +### If the “v3 flag enabled” banner does not appear + +- You must be **logged in**; group-based flags do not apply to anonymous users. +- Your **user** must be in the **v3_testers** group (Users → your user → Groups). +- **Log out and log back in** (or use a new incognito session) so the session reflects the group. +- Confirm the **v3** flag is saved with **v3_testers** in Chosen groups. + +--- + +## Where it is in the codebase + +| What | Where | +|------|--------| +| Conditional banner | `templates/base.html`: `{% load waffle_tags %}` and `{% flag "v3" %} ... {% endflag %}` | +| Waffle config | `config/settings.py`: `INSTALLED_APPS`, `MIDDLEWARE`, `WAFFLE_*` | +| v3_testers group | `users/migrations/0021_add_v3_testers_group.py` | +| Package | `requirements.txt`: `django-waffle==5.0.0` | + +--- + +## Using flags in Python (views) + +```python +from waffle import flag_is_active + +def my_view(request): + if flag_is_active(request, "v3"): + # Flag is active for this request (e.g. user in v3_testers) + ... + else: + ... +``` + +--- + +## Using flags in templates + +```django +{% load waffle_tags %} + +{% flag "v3" %} +
Content only shown when the v3 flag is active for this user.
+{% endflag %} +``` + +You can use the same pattern for any flag name (e.g. `{% flag "my_feature" %}`) and assign it via groups or users in the admin as described above. From 26ad1c231e9b08bea0aea62a28d1800584f395fd Mon Sep 17 00:00:00 2001 From: Gabriel Garcia Date: Wed, 18 Feb 2026 14:14:38 -0500 Subject: [PATCH 03/55] feat: v3 css foundations and v3 as a context processor --- config/settings.py | 1 + core/context_processors.py | 6 + static/css/v3/border-radius.css | 30 ++ static/css/v3/buttons.css | 325 ++++++++++++++++++ static/css/v3/fonts.css | 115 +++++++ static/css/v3/foundations.css | 124 +++++++ static/css/v3/index.css | 6 + static/css/v3/primitives.css | 62 ++++ static/css/v3/semantics.css | 112 ++++++ static/css/v3/spacing.css | 35 ++ static/css/v3/themes.css | 92 +++++ static/css/v3/typography.css | 59 ++++ .../MonaSans_SemiCondensed-Medium.ttf | Bin 0 -> 101484 bytes .../MonaSans_SemiCondensed-Regular.ttf | Bin 0 -> 101336 bytes .../font/v3/mona-sans/mona-sans-vf-italic.ttf | Bin 0 -> 359864 bytes static/font/v3/mona-sans/mona-sans-vf.ttf | Bin 0 -> 348692 bytes .../monaspace-neon-latin-400-italic.ttf | Bin 0 -> 84300 bytes .../monaspace-neon-latin-400-normal.ttf | Bin 0 -> 79712 bytes static/font/v3/space-mono/SpaceMono-Bold.ttf | Bin 0 -> 97256 bytes .../v3/space-mono/SpaceMono-BoldItalic.ttf | Bin 0 -> 103288 bytes .../font/v3/space-mono/SpaceMono-Italic.ttf | Bin 0 -> 112912 bytes .../font/v3/space-mono/SpaceMono-Regular.ttf | Bin 0 -> 98320 bytes templates/base.html | 14 +- .../includes/v3/_button_hero_primary.html | 11 + .../includes/v3/_button_hero_secondary.html | 10 + 25 files changed, 1000 insertions(+), 2 deletions(-) create mode 100644 static/css/v3/border-radius.css create mode 100644 static/css/v3/buttons.css create mode 100644 static/css/v3/fonts.css create mode 100644 static/css/v3/foundations.css create mode 100644 static/css/v3/index.css create mode 100644 static/css/v3/primitives.css create mode 100644 static/css/v3/semantics.css create mode 100644 static/css/v3/spacing.css create mode 100644 static/css/v3/themes.css create mode 100644 static/css/v3/typography.css create mode 100644 static/font/v3/mona-sans-display/MonaSans_SemiCondensed-Medium.ttf create mode 100644 static/font/v3/mona-sans-display/MonaSans_SemiCondensed-Regular.ttf create mode 100644 static/font/v3/mona-sans/mona-sans-vf-italic.ttf create mode 100644 static/font/v3/mona-sans/mona-sans-vf.ttf create mode 100644 static/font/v3/monaspace-neon/monaspace-neon-latin-400-italic.ttf create mode 100644 static/font/v3/monaspace-neon/monaspace-neon-latin-400-normal.ttf create mode 100644 static/font/v3/space-mono/SpaceMono-Bold.ttf create mode 100644 static/font/v3/space-mono/SpaceMono-BoldItalic.ttf create mode 100644 static/font/v3/space-mono/SpaceMono-Italic.ttf create mode 100644 static/font/v3/space-mono/SpaceMono-Regular.ttf create mode 100644 templates/includes/v3/_button_hero_primary.html create mode 100644 templates/includes/v3/_button_hero_secondary.html diff --git a/config/settings.py b/config/settings.py index 515ff7991..b6d6f428b 100755 --- a/config/settings.py +++ b/config/settings.py @@ -179,6 +179,7 @@ "django.contrib.messages.context_processors.messages", "core.context_processors.current_version", "core.context_processors.active_nav_item", + "core.context_processors.v3_enabled", "core.context_processors.debug", ], "loaders": [ diff --git a/core/context_processors.py b/core/context_processors.py index a931f6398..2ec0eaca7 100644 --- a/core/context_processors.py +++ b/core/context_processors.py @@ -1,10 +1,16 @@ from enum import StrEnum from django.conf import settings +from waffle import flag_is_active from versions.models import Version +def v3_enabled(request): + """Expose v3 feature flag so templates can add html class for v3 typography/scope.""" + return {"v3_enabled": flag_is_active(request, "v3")} + + def current_version(request): """Custom context processor that adds the current release to the context""" return {"current_version": Version.objects.most_recent()} diff --git a/static/css/v3/border-radius.css b/static/css/v3/border-radius.css new file mode 100644 index 000000000..8a9de939e --- /dev/null +++ b/static/css/v3/border-radius.css @@ -0,0 +1,30 @@ +/** + * Border Radius Tokens + * + * Border radius tokens define consistent corner rounding values. + * + * Naming Convention: --border-radius-{size} + * Example: --border-radius-s, --border-radius-xl + */ + +:root { + /* Border Radius Scale (Desktop) */ + --border-radius-xs: 2px; + --border-radius-s: 4px; + --border-radius-m: 6px; + --border-radius-l: 8px; + --border-radius-xl: 12px; + --border-radius-xxl: 16px; +} + +/* Mobile Border Radius Overrides */ +@media (max-width: 767px) { + :root { + --border-radius-xs: 1px; + --border-radius-s: 3px; + --border-radius-m: 4px; + --border-radius-l: 6px; + --border-radius-xl: 10px; + --border-radius-xxl: 12px; + } +} diff --git a/static/css/v3/buttons.css b/static/css/v3/buttons.css new file mode 100644 index 000000000..93c165b54 --- /dev/null +++ b/static/css/v3/buttons.css @@ -0,0 +1,325 @@ +/* ========== Base button (size, distribution) ========== */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--space-default, 8px); + font-family: var(--font-sans); + font-size: var(--font-size-small, 14px); + font-weight: var(--font-weight-medium, 500); + line-height: var(--line-height-relaxed, 1.24); + letter-spacing: -0.01em; + border-radius: var(--border-radius-l, 8px); + border: 1px solid transparent; + min-height: 36px; + width: 128px; + padding: 8px 16px; + cursor: pointer; + transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease; +} + +/* Row where buttons expand to fill width equally */ +.btn-row { + display: flex; + flex-wrap: wrap; + gap: 40px; + align-items: stretch; +} + +.btn-row>.btn-error { + flex: 0 0 128px; + width: 128px; + min-width: 128px; +} + +.btn-primary { + background-color: var(--color-button-secondary, #fff); + border-color: var(--color-stroke-strong, #05081640); + color: var(--color-text-primary, #050816); +} + +.btn-primary:hover { + background-color: var(--color-secondary-dark-blue, #00778B); + border-color: var(--color-secondary-dark-blue, #00778B); + color: var(--color-text-reversed, #fff); +} + +.btn-secondary { + border-color: var(--color-stroke-strong, #05081640); + color: var(--color-text-primary, #050816); +} + +.btn-secondary:hover { + background-color: var(--color-button-secondary, #fff); + border-color: var(--color-secondary-dark-blue, #0077B8); + color: var(--color-secondary-dark-blue, #0077B8); +} + +/* Primary outline: white, blue border and text */ +.btn-primary-outline { + background-color: var(--color-button-secondary, #fff); + border-color: var(--color-stroke-link-accent, #0077B8); + color: var(--color-text-link-accent, #0077B8); +} + +.btn-primary-outline:hover { + background-color: var(--color-secondary-light-blue, #f7fdfe); + border-color: var(--color-text-link-accent, #00778B); + color: var(--color-text-link-accent, #00778B); +} + +.btn-secondary-grey { + background-color: var(--color-button-primary, #efeff1); + border-color: var(--color-border, #d5d6d8); + color: var(--color-text-primary, #050816); +} + +.btn-secondary-grey:hover { + background-color: var(--color-primary-grey-300, #d5d6d8); + border-color: var(--color-primary-grey-300, #d5d6d8); + color: var(--color-text-primary, #050816); +} + +/* Green accent (on green card) – filled, no border */ +/* Default: Accent/Strong/Green #CACA62; Hover: Surface/Strong/Green Accent/Hover #CACA62 75% */ +.btn-green { + background-color: var(--color-surface-strong-accent-green-default, #CACA62); + border-color: transparent; + color: var(--color-text-primary, #050816); +} + +.btn-green:hover { + background-color: var(--color-surface-strong-accent-green-hover, #CACA62BF); + border-color: transparent; + color: var(--color-text-primary, #050816); +} + +/* Yellow accent (on yellow card) – filled, no border */ +/* Default: Surface/Strong/Yellow Accent/Default #F5D039; Hover: 75% */ +.btn-yellow { + background-color: var(--color-surface-strong-accent-yellow-default, #F5D039); + border-color: transparent; + color: var(--color-text-primary, #050816); +} + +.btn-yellow:hover { + background-color: var(--color-surface-strong-accent-yellow-hover, #F5D039BF); + border-color: transparent; + color: var(--color-text-primary, #050816); +} + +/* Teal accent (on teal card) – filled, no border */ +/* Default: Surface/Strong/Teal Accent/Default #64DACE; Hover: 75% */ +.btn-teal { + background-color: var(--color-surface-strong-accent-teal-default, #64DACE); + border-color: transparent; + color: var(--color-text-primary, #050816); +} + +.btn-teal:hover { + background-color: var(--color-surface-strong-accent-teal-hover, #64DACEBF); + border-color: transparent; + color: var(--color-text-primary, #050816); +} + +/* Error / danger: light red fill, red border and text */ +.btn-primary.btn-error, +.btn-error { + background-color: var(--color-surface-error-weak, #fdf2f2); + border-color: var(--color-stroke-error, #d53f3f33); + color: var(--color-text-error, #d32f2f); +} + +.btn-error:hover { + background-color: var(--color-surface-error-weak, #fdf2f2); + border-color: var(--color-error-strong, #d32f2f); + color: var(--color-text-error, #d32f2f); +} + +/* ========== Hero buttons (Figma node 55-204) ========== */ +.btn-hero { + min-height: 48px; + padding: var(--space-medium, 12px) var(--space-large, 24px); + font-size: var(--font-size-base, 16px); + gap: var(--space-default, 8px); + width: auto; +} + +/* Hero primary: uses design tokens – override .btn-primary */ +.btn.btn-hero.btn-primary { + background-color: var(--color-surface-brand-accent-default); + border-color: var(--color-surface-brand-accent-default); + color: var(--color-text-reversed); +} +.btn.btn-hero.btn-primary:hover { + background-color: var(--color-surface-brand-accent-hovered); + border-color: var(--color-surface-brand-accent-hovered); + color: var(--color-text-reversed); +} + +/* Hero secondary: uses .btn-secondary colors, same size as hero primary */ + +.btn-hero .btn-icon { + width: 20px; + height: 20px; + flex-shrink: 0; +} + +/* ========== Tooltip button ========== */ +.btn-tooltip { + width: 32px; + height: 32px; + padding: 0; + border-radius: var(--border-radius-l, 8px); + background-color: var(--color-button-primary, #efeff1); + border: 1px solid var(--color-border, #d5d6d8); + color: var(--color-icon-primary, #050816); +} + +.btn-tooltip:hover { + background-color: var(--color-primary-grey-300, #d5d6d8); +} + +.btn-tooltip .btn-icon { + width: 16px; + height: 16px; +} + +.tooltip-wrapper { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.tooltip-label { + position: absolute; + padding: var(--space-s, 4px) var(--space-default, 8px); + background: var(--color-primary-grey-900, #2f313d); + color: var(--color-text-reversed, #fff); + font-size: var(--font-size-xs, 12px); + font-weight: var(--font-weight-regular, 400); + border-radius: var(--border-radius-s, 4px); + white-space: nowrap; + z-index: 1; +} + +.tooltip-label.top { + bottom: 100%; + left: 50%; + transform: translate(-50%, -8px); +} + +.tooltip-label.bottom { + top: 100%; + left: 50%; + transform: translate(-50%, 8px); +} + +.tooltip-label.left { + right: 100%; + top: 50%; + transform: translate(-8px, -50%); +} + +.tooltip-label.right { + left: 100%; + top: 50%; + transform: translate(8px, -50%); +} + +/* ========== Carousel buttons ========== */ +.btn-carousel { + width: 40px; + height: 40px; + padding: 0; + border-radius: var(--border-radius-l, 8px); + background-color: var(--color-button-primary, #efeff1); + border: 1px solid var(--color-border, #d5d6d8); + color: var(--color-icon-primary, #050816); +} + +.btn-carousel:hover { + background-color: var(--color-primary-grey-300, #d5d6d8); +} + +.btn-carousel .btn-icon { + width: 20px; + height: 20px; +} + +/* ========== Card link button ========== */ +.btn-card-link { + display: inline-flex; + align-items: center; + gap: var(--space-s, 4px); + font-family: var(--font-sans); + font-size: var(--font-size-small, 14px); + font-weight: var(--font-weight-medium, 500); + color: var(--color-text-link-accent, #00778B); + background: none; + border: none; + padding: 0; + cursor: pointer; +} + +.btn-card-link:hover { + text-decoration: underline; +} + +.btn-card-link .btn-icon { + width: 16px; + height: 16px; +} + +/* ========== List link ========== */ +.btn-list-link { + display: inline-flex; + align-items: center; + gap: var(--space-default, 8px); + font-family: var(--font-sans); + font-size: var(--font-size-base, 16px); + font-weight: var(--font-weight-regular, 400); + color: var(--color-text-primary, #050816); + background: none; + border: none; + padding: var(--space-s, 4px) 0; + cursor: pointer; + text-align: left; +} + +.btn-list-link:hover { + color: var(--color-text-link-accent, #00778B); +} + +.btn-list-link .btn-icon { + width: 20px; + height: 20px; + flex-shrink: 0; + color: var(--color-icon-link-accent, #00778B); +} + +/* ========== Icon button (library) ========== */ +.btn-icon-library { + display: inline-flex; + align-items: center; + gap: var(--space-default, 8px); + padding: var(--space-default, 8px) var(--space-medium, 12px); + font-family: var(--font-sans); + font-size: var(--font-size-small, 14px); + font-weight: var(--font-weight-regular, 400); + color: var(--color-text-primary, #050816); + background-color: var(--color-button-primary, #efeff1); + border: 1px solid var(--color-border, #d5d6d8); + border-radius: var(--border-radius-l, 8px); + cursor: pointer; +} + +.btn-icon-library:hover { + background-color: var(--color-primary-grey-300, #d5d6d8); +} + +.btn-icon-library .btn-icon { + width: 24px; + height: 24px; +} diff --git a/static/css/v3/fonts.css b/static/css/v3/fonts.css new file mode 100644 index 000000000..be85f4690 --- /dev/null +++ b/static/css/v3/fonts.css @@ -0,0 +1,115 @@ +/** + * V3 typography fonts. + * Reuses v2 fonts from /static/font/ where same (Monaspace); v3-only (Mona Sans, Space Mono) in /static/font/v3/ + */ + +/* Mona Sans – v3 only */ +@font-face { + font-family: 'Mona Sans VF'; + font-style: normal; + font-weight: 200 900; + font-stretch: 75% 125%; + font-display: swap; + src: url('/static/font/v3/mona-sans/mona-sans-vf.ttf') format('truetype'); +} + +@font-face { + font-family: 'Mona Sans VF'; + font-style: italic; + font-weight: 200 900; + font-stretch: 75% 125%; + font-display: swap; + src: url('/static/font/v3/mona-sans/mona-sans-vf-italic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Mona Sans Display SemiCondensed'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/v3/mona-sans-display/MonaSans_SemiCondensed-Regular.ttf') format('truetype'); +} + +@font-face { + font-family: 'Mona Sans Display SemiCondensed'; + font-style: normal; + font-weight: 500; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/v3/mona-sans-display/MonaSans_SemiCondensed-Medium.ttf') format('truetype'); +} + +/* Monaspace Neon – reuse v2 assets in /static/font/ */ +@font-face { + font-family: 'Monaspace Neon'; + font-style: normal; + font-weight: 100 900; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/MonaspaceNeon-Var.woff2') format('woff2'); +} + +@font-face { + font-family: 'Monaspace Neon'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/v3/monaspace-neon/monaspace-neon-latin-400-italic.ttf') format('truetype'); +} + +/* Monaspace Xenon – reuse v2 assets in /static/font/ */ +@font-face { + font-family: 'Monaspace Xenon'; + font-style: normal; + font-weight: 100 900; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/MonaspaceXenon-Var.woff2') format('woff2'); +} + +@font-face { + font-family: 'Monaspace Xenon'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/MonaspaceXenon-Italic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Space Mono'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/v3/space-mono/SpaceMono-Regular.ttf') format('truetype'); +} + +@font-face { + font-family: 'Space Mono'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/v3/space-mono/SpaceMono-Italic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Space Mono'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/v3/space-mono/SpaceMono-Bold.ttf') format('truetype'); +} + +@font-face { + font-family: 'Space Mono'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url('/static/font/v3/space-mono/SpaceMono-BoldItalic.ttf') format('truetype'); +} diff --git a/static/css/v3/foundations.css b/static/css/v3/foundations.css new file mode 100644 index 000000000..dcb5fac9b --- /dev/null +++ b/static/css/v3/foundations.css @@ -0,0 +1,124 @@ +@import './index.css'; + +html.v3 body { + font-family: var(--font-sans); + font-size: var(--font-size-base); + line-height: var(--line-height-default); + letter-spacing: var(--letter-spacing-tight); +} + +html.v3 code { + font-family: var(--font-code); +} + +/* Typography utility classes */ +.font-sans { font-family: var(--font-sans); } +.font-display { font-family: var(--font-display); } +.font-code { font-family: var(--font-code); } +.font-comments { font-family: var(--font-comments); } + +.text-xs { font-size: var(--font-size-xs); } +.text-small { font-size: var(--font-size-small); } +.text-base { font-size: var(--font-size-base); } +.text-medium { font-size: var(--font-size-medium); } +.text-large { font-size: var(--font-size-large); } +.text-xl { font-size: var(--font-size-xl); } +.text-2xl { font-size: var(--font-size-2xl); } +.text-3xl { font-size: var(--font-size-3xl); } +.text-4xl { font-size: var(--font-size-4xl); } + +.font-regular { font-weight: var(--font-weight-regular); } +.font-medium { font-weight: var(--font-weight-medium); } + +.leading-tight { line-height: var(--line-height-tight); } +.leading-default { line-height: var(--line-height-default); } +.leading-relaxed { line-height: var(--line-height-relaxed); } +.leading-loose { line-height: var(--line-height-loose); } +.leading-code { line-height: var(--line-height-code); } + +.tracking-tight { letter-spacing: var(--letter-spacing-tight); } + +/* Border Radius utility classes */ +.rounded-xs { border-radius: var(--border-radius-xs); } +.rounded-s { border-radius: var(--border-radius-s); } +.rounded-m { border-radius: var(--border-radius-m); } +.rounded-l { border-radius: var(--border-radius-l); } +.rounded-xl { border-radius: var(--border-radius-xl); } +.rounded-xxl { border-radius: var(--border-radius-xxl); } + +/* Spacing utility classes - Padding */ +.p-xs { padding: var(--space-xs); } +.p-s { padding: var(--space-s); } +.p-default { padding: var(--space-default); } +.p-medium { padding: var(--space-medium); } +.p-large { padding: var(--space-large); } +.p-xl { padding: var(--space-xl); } +.p-xxl { padding: var(--space-xxl); } +.p-avatar { padding: var(--space-avatar); } + +/* Spacing utility classes - Margin */ +.m-xs { margin: var(--space-xs); } +.m-s { margin: var(--space-s); } +.m-default { margin: var(--space-default); } +.m-medium { margin: var(--space-medium); } +.m-large { margin: var(--space-large); } +.m-xl { margin: var(--space-xl); } +.m-xxl { margin: var(--space-xxl); } +.m-avatar { margin: var(--space-avatar); } + +/* Spacing utility classes - Gap */ +.gap-xs { gap: var(--space-xs); } +.gap-s { gap: var(--space-s); } +.gap-default { gap: var(--space-default); } +.gap-medium { gap: var(--space-medium); } +.gap-large { gap: var(--space-large); } +.gap-xl { gap: var(--space-xl); } +.gap-xxl { gap: var(--space-xxl); } +.gap-avatar { gap: var(--space-avatar); } + +/* Spacing utility classes - Margin Bottom */ +.mb-xs { margin-bottom: var(--space-xs); } +.mb-s { margin-bottom: var(--space-s); } +.mb-default { margin-bottom: var(--space-default); } +.mb-medium { margin-bottom: var(--space-medium); } +.mb-large { margin-bottom: var(--space-large); } +.mb-xl { margin-bottom: var(--space-xl); } +.mb-xxl { margin-bottom: var(--space-xxl); } + +/* Spacing utility classes - Padding X and Y */ +.px-medium { padding-left: var(--space-medium); padding-right: var(--space-medium); } +.py-medium { padding-top: var(--space-medium); padding-bottom: var(--space-medium); } +.px-large { padding-left: var(--space-large); padding-right: var(--space-large); } +.py-large { padding-top: var(--space-large); padding-bottom: var(--space-large); } + +/* Color utility classes - Background */ +.bg-primary { background-color: var(--color-bg-primary); } +.bg-secondary { background-color: var(--color-bg-secondary); } +.bg-surface-mid { background-color: var(--color-surface-mid); } +.bg-surface-strong { background-color: var(--color-surface-strong); } +.bg-surface-weak { background-color: var(--color-surface-weak); } +.bg-surface-brand-accent { background-color: var(--color-surface-brand-accent-default); } +.bg-button-accent { background-color: var(--color-button-accent); } +.bg-button-primary { background-color: var(--color-button-primary); } +.bg-button-secondary { background-color: var(--color-button-secondary); } + +/* Color utility classes - Icon (Icon/Brand Accent etc.) */ +.icon-brand-accent { color: var(--color-icon-brand-accent); } + +/* Color utility classes - Text */ +.text-primary { color: var(--color-text-primary); } +.text-secondary { color: var(--color-text-secondary); } +.text-tertiary { color: var(--color-text-tertiary); } +.text-error { color: var(--color-text-error); } +.text-link-accent { color: var(--color-text-link-accent); } +.text-on-accent { color: var(--color-text-on-accent); } +.text-reversed { color: var(--color-text-reversed); } + +/* Color utility classes - Border/Stroke */ +.border-brand-accent { border-color: var(--color-stroke-brand-accent); } +.border-strong { border-color: var(--color-stroke-strong); } +.border-mid { border-color: var(--color-stroke-mid); } +.border-weak { border-color: var(--color-stroke-weak); } +.border-default { border-color: var(--color-border); } +.border-error { border-color: var(--color-stroke-error); } +.border-link-accent { border-color: var(--color-stroke-link-accent); } diff --git a/static/css/v3/index.css b/static/css/v3/index.css new file mode 100644 index 000000000..eb9e16b16 --- /dev/null +++ b/static/css/v3/index.css @@ -0,0 +1,6 @@ +@import './primitives.css'; +@import './typography.css'; +@import './spacing.css'; +@import './border-radius.css'; +@import './semantics.css'; +@import './themes.css'; diff --git a/static/css/v3/primitives.css b/static/css/v3/primitives.css new file mode 100644 index 000000000..8923a867b --- /dev/null +++ b/static/css/v3/primitives.css @@ -0,0 +1,62 @@ +/** + * Primitive Tokens + * + * Primitive tokens are the foundational design values that are theme-agnostic. + * These are raw color values, spacing values, typography scales, etc. that don't + * change between themes. + * + * Naming Convention: --{category}-{property}-{variant} + * Example: --color-primary-grey-100, --space-default + */ + +:root { + /* ============================================ + COLOR PRIMITIVES + ============================================ */ + + /* Accent Colors */ + --color-accent-strong-green: #CACA62; + --color-accent-strong-teal: #64DACE; + --color-accent-strong-yellow: #F5D039; + --color-accent-weak-green: #E4E4C0; + --color-accent-weak-teal: #C9F2EE; + --color-accent-weak-yellow: #FBEBA9; + + /* Error Colors */ + --color-error-mid: #FF3B30; + --color-error-strong: #D32F2F; + --color-error-weak: #FDF2F2; + + /* Primary Colors */ + --color-primary-black: #050816; + --color-primary-grey-100: #F7F7F8; + --color-primary-grey-200: #EFEFF1; + --color-primary-grey-300: #D5D6D8; + --color-primary-grey-400: #CACBCE; + --color-primary-grey-500: #ACADB1; + --color-primary-grey-600: #82848A; + --color-primary-grey-700: #71737B; + --color-primary-grey-800: #585A64; + --color-primary-grey-850: #444651; + --color-primary-grey-900: #2F313D; + --color-primary-grey-950: #1A1C29; + --color-primary-orange-mustard: #FFA000; + --color-primary-white: #FFFFFF; + + /* Secondary Colors */ + --color-secondary-dark-blue: #00778B; + --color-secondary-light-blue: #F7FDFE; + --color-secondary-mid-blue: #6DCDF7; + + /* Syntax Colors */ + --color-syntax-strong-blue: #1345E8; + --color-syntax-strong-green: #289D30; + --color-syntax-strong-grey: #9E9E9E; + --color-syntax-strong-pink: #D31FA7; + --color-syntax-strong-yellow: #A3A38C; + --color-syntax-weak-blue: #38DDFF; + --color-syntax-weak-green: #72FE92; + --color-syntax-weak-grey: #A3A3A3; + --color-syntax-weak-pink: #F358C0; + --color-syntax-weak-yellow: #FFF173; +} diff --git a/static/css/v3/semantics.css b/static/css/v3/semantics.css new file mode 100644 index 000000000..449a00097 --- /dev/null +++ b/static/css/v3/semantics.css @@ -0,0 +1,112 @@ +/** + * Semantic Tokens + * + * Semantic tokens provide meaning-based naming that maps to primitive tokens. + * These tokens represent how colors, spacing, and other values are used in context. + * Semantic tokens can be overridden per theme. + * + * Naming Convention: --color-{context}-{property}-{variant} + * Example: --color-button-primary, --color-text-error + * + * Note: Semantic tokens reference primitive tokens where appropriate, but can + * also have theme-specific values defined in themes.css + */ + +:root { + /* ============================================ + BASE SEMANTIC COLORS (Light Theme Defaults) + ============================================ */ + + /* Background */ + --color-bg-primary: var(--color-secondary-light-blue); + --color-bg-secondary: var(--color-primary-white); + --color-border: var(--color-primary-grey-300); + + /* Text */ + --color-text-primary: var(--color-primary-black); + --color-text-secondary: var(--color-primary-grey-800); + + /* ============================================ + BUTTON SEMANTIC COLORS + ============================================ */ + --color-button-accent: var(--color-primary-orange-mustard); + --color-button-primary: var(--color-primary-grey-200); + --color-button-secondary: var(--color-primary-white); + + /* ============================================ + ICON SEMANTIC COLORS + ============================================ */ + --color-icon-brand-accent: var(--color-primary-orange-mustard); + --color-icon-error: var(--color-error-strong); + --color-icon-link-accent: var(--color-secondary-dark-blue); + --color-icon-on-accent: var(--color-primary-black); + --color-icon-primary: var(--color-primary-black); + --color-icon-reverse: var(--color-primary-white); + --color-icon-secondary: var(--color-primary-grey-700); + + /* ============================================ + NAVIGATION SEMANTIC COLORS + ============================================ */ + --color-navigation-hover: var(--color-primary-grey-300); + --color-navigation-selected: var(--color-primary-grey-200); + + /* ============================================ + STROKE SEMANTIC COLORS + ============================================ */ + --color-stroke-brand-accent: var(--color-primary-orange-mustard); + --color-stroke-error: #D53F3F33; + --color-stroke-link-accent: var(--color-secondary-dark-blue); + --color-stroke-mid: #0508162B; + --color-stroke-strong: #05081640; + --color-stroke-weak: #0508161A; + + /* ============================================ + SURFACE SEMANTIC COLORS + ============================================ */ + --color-surface-brand-accent-default: var(--color-primary-orange-mustard); + --color-surface-brand-accent-hovered: #FFA000BF; + --color-surface-error-strong: var(--color-error-strong); + --color-surface-error-weak: var(--color-error-weak); + --color-surface-mid: var(--color-primary-grey-100); + --color-surface-modal: #050816B3; + --color-surface-page: var(--color-secondary-light-blue); + --color-surface-strong: var(--color-primary-grey-200); + --color-surface-weak: var(--color-primary-white); + + /* Accent Surfaces */ + --color-surface-strong-accent-green-default: var(--color-accent-strong-green); + --color-surface-strong-accent-green-hover: #CACA62BF; + --color-surface-strong-accent-teal-default: var(--color-accent-strong-teal); + --color-surface-strong-accent-teal-hover: #64DACEBF; + --color-surface-strong-accent-yellow-default: var(--color-accent-strong-yellow); + --color-surface-strong-accent-yellow-hover: #F5D039BF; + --color-surface-weak-accent-green: var(--color-accent-weak-green); + --color-surface-weak-accent-teal: var(--color-accent-weak-teal); + --color-surface-weak-accent-yellow: var(--color-accent-weak-yellow); + + /* ============================================ + SYNTAX SEMANTIC COLORS + ============================================ */ + --color-syntax-blue: var(--color-syntax-strong-blue); + --color-syntax-comments: var(--color-syntax-strong-grey); + --color-syntax-green: var(--color-syntax-strong-green); + --color-syntax-pink: var(--color-syntax-strong-pink); + --color-syntax-text: var(--color-primary-black); + --color-syntax-yellow: var(--color-syntax-strong-yellow); + + /* ============================================ + TAG SEMANTIC COLORS + ============================================ */ + --color-tag-fill: var(--color-primary-grey-100); + --color-tag-stroke: #0508161A; + + /* ============================================ + TEXT SEMANTIC COLORS + ============================================ */ + --color-text-error: var(--color-error-strong); + --color-text-link-accent: var(--color-secondary-dark-blue); + --color-text-on-accent: var(--color-primary-black); + --color-text-reversed: var(--color-primary-white); + --color-text-reversed-on-accent: var(--color-primary-white); + --color-text-tertiary: var(--color-primary-grey-700); +} diff --git a/static/css/v3/spacing.css b/static/css/v3/spacing.css new file mode 100644 index 000000000..aedd5f1f7 --- /dev/null +++ b/static/css/v3/spacing.css @@ -0,0 +1,35 @@ +/** + * Spacing Tokens + * + * Spacing tokens define consistent spacing values across the design system. + * All values are on a 4px grid. + * + * Naming Convention: --space-{size} + * Example: --space-default, --space-large + */ + +:root { + /* Spacing Scale (Desktop) */ + --space-xs: 2px; + --space-s: 4px; + --space-default: 8px; + --space-medium: 12px; + --space-large: 16px; + --space-xlarge: 24px; + --space-xl: 32px; + --space-xxl: 60px; + --space-avatar: 48px; +} + +/* Mobile Spacing Overrides */ +@media (max-width: 767px) { + :root { + --space-default: 6px; + --space-medium: 8px; + --space-large: 16px; + --space-xl: 20px; + --space-xxl: 48px; + --space-avatar: 40px; + /* xs, s unchanged on mobile */ + } +} diff --git a/static/css/v3/themes.css b/static/css/v3/themes.css new file mode 100644 index 000000000..37dcf0210 --- /dev/null +++ b/static/css/v3/themes.css @@ -0,0 +1,92 @@ +/** + * Theme Mappings + * + * Theme-specific overrides for semantic tokens. These override the default + * semantic token values defined in semantics.css. + * + * Dark theme: html.dark (set by theme_handling.js). + * Naming follows semantics.css. + */ + +/* ============================================ + LIGHT THEME (Default) + ============================================ + Light theme values are defined as defaults in semantics.css. + */ + +/* ============================================ + DARK THEME (Boost) + ============================================ */ +html.dark { + /* Base Colors */ + --color-bg-primary: var(--color-primary-black); + --color-bg-secondary: var(--color-primary-grey-950); + --color-text-primary: var(--color-primary-white); + --color-text-secondary: var(--color-primary-grey-400); + --color-border: var(--color-primary-grey-800); + + /* Error Primitives (Dark theme override) + Note: This is a special case where a primitive token needs theme-specific opacity. + In dark theme, error-weak uses reduced opacity for better contrast. */ + --color-error-weak: #FDF2F217; + + /* Buttons */ + --color-button-primary: var(--color-primary-grey-800); + --color-button-secondary: var(--color-primary-grey-900); + + /* Icons */ + --color-icon-link-accent: var(--color-secondary-mid-blue); + --color-icon-primary: var(--color-primary-white); + --color-icon-reverse: var(--color-primary-black); + --color-icon-secondary: var(--color-primary-grey-400); + + /* Navigation */ + --color-navigation-hover: var(--color-primary-grey-900); + --color-navigation-selected: var(--color-primary-grey-800); + + /* Stroke */ + --color-stroke-error: #D53F3F; + --color-stroke-link-accent: var(--color-secondary-mid-blue); + --color-stroke-mid: #F7F7F82B; + --color-stroke-strong: #F7F7F836; + --color-stroke-weak: #F7F7F81A; + + /* Surface */ + --color-surface-brand-accent-hovered: #FFA000D9; + --color-surface-error-strong: var(--color-error-mid); + --color-surface-error-weak: #FDF2F217; + --color-surface-mid: var(--color-primary-grey-900); + --color-surface-modal: #0508164D; + --color-surface-page: var(--color-primary-black); + --color-surface-strong: var(--color-primary-grey-800); + --color-surface-weak: var(--color-primary-grey-950); + + /* Accent Surfaces (Dark theme overrides) */ + --color-surface-strong-accent-green-default: var(--color-primary-grey-800); + --color-surface-strong-accent-green-hover: var(--color-primary-grey-850); + --color-surface-strong-accent-teal-default: var(--color-primary-grey-800); + --color-surface-strong-accent-teal-hover: var(--color-primary-grey-850); + --color-surface-strong-accent-yellow-default: var(--color-primary-grey-800); + --color-surface-strong-accent-yellow-hover: var(--color-primary-grey-850); + --color-surface-weak-accent-green: var(--color-primary-grey-850); + --color-surface-weak-accent-teal: var(--color-primary-grey-850); + --color-surface-weak-accent-yellow: var(--color-primary-grey-850); + + /* Syntax */ + --color-syntax-blue: var(--color-syntax-weak-blue); + --color-syntax-comments: var(--color-syntax-weak-grey); + --color-syntax-green: var(--color-syntax-weak-green); + --color-syntax-pink: var(--color-syntax-weak-pink); + --color-syntax-text: var(--color-primary-white); + --color-syntax-yellow: var(--color-syntax-weak-yellow); + + /* Tag */ + --color-tag-fill: var(--color-primary-grey-900); + --color-tag-stroke: #FFFFFF1A; + + /* Text */ + --color-text-error: var(--color-error-mid); + --color-text-link-accent: var(--color-secondary-mid-blue); + --color-text-reversed: var(--color-primary-black); + --color-text-tertiary: var(--color-primary-grey-600); +} diff --git a/static/css/v3/typography.css b/static/css/v3/typography.css new file mode 100644 index 000000000..e87b11af7 --- /dev/null +++ b/static/css/v3/typography.css @@ -0,0 +1,59 @@ +/** + * Typography Tokens + * + * Typography tokens define font families, sizes, weights, line heights, and letter spacing. + * These are primitive values that don't change between themes. + * + * Naming Convention: --font-{property}-{variant} + * Example: --font-size-base, --font-weight-medium + */ + +:root { + /* Typeface */ + --font-sans: 'Mona Sans VF', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + --font-display: 'Mona Sans Display SemiCondensed', 'Mona Sans VF', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + --font-code: 'Monaspace Neon', 'Space Mono', 'Monaco', 'Courier New', monospace; + --font-comments: 'Monaspace Xenon', 'Space Mono', 'Monaco', 'Courier New', monospace; + + /* Weight */ + --font-weight-regular: 400; + --font-weight-medium: 500; + + /* Size (Desktop) */ + --font-size-xs: 12px; + --font-size-small: 14px; + --font-size-base: 16px; + --font-size-medium: 18px; + --font-size-large: 24px; + --font-size-xl: 32px; + --font-size-2xl: 40px; + --font-size-3xl: 64px; + --font-size-4xl: 72px; + + /* Line Height */ + --line-height-tight: 1; + --line-height-default: 1.2; + --line-height-relaxed: 1.24; + --line-height-loose: 1.35; + --line-height-loose-alt: 1.33; + --line-height-code: 1.3; + + /* Letter Spacing */ + --letter-spacing-tight: -0.01em; + --letter-spacing-display-regular: -0.02em; +} + +/* Mobile Typography Overrides */ +@media (max-width: 767px) { + :root { + --font-size-xs: 10px; + --font-size-small: 12px; + --font-size-base: 14px; + --font-size-medium: 16px; + --font-size-large: 20px; + --font-size-xl: 24px; + --font-size-2xl: 28px; + --font-size-3xl: 32px; + --font-size-4xl: 40px; + } +} diff --git a/static/font/v3/mona-sans-display/MonaSans_SemiCondensed-Medium.ttf b/static/font/v3/mona-sans-display/MonaSans_SemiCondensed-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..95babb5b45d553c927cdaa3059fb971d2d1fd0c3 GIT binary patch literal 101484 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®#$ya1Wei|tb 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 F`F|$^u~Gm4 literal 0 HcmV?d00001 diff --git a/static/font/v3/mona-sans-display/MonaSans_SemiCondensed-Regular.ttf b/static/font/v3/mona-sans-display/MonaSans_SemiCondensed-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bd275a8b2d49ae45a54f913031f139493cdfa731 GIT binary patch literal 101336 zcmcG%2YehwvOnJ4yV|vK&S{nNYPC_4mBUK1CCfpMILWeX3vA1_WQ+-SaL1A1I5HgR z?o7@(9vo*IY-|h|6ATy(7?X28u=M*@_w4RS7QFZV|Mym(ndzzNuCA`GuCA`G88OZn zi^9psSX)c0x3b1{H)CQRV?3j6diN~b$7h|#*c*>Cc6UnKtl3SOPnh0gEc-*o!td;! zRc>E!!r*-5{SjD}&gyCGc{{qf824A;esSNL-gPew{usfS;RMEl-dx!`w2o@S^Eg~5 ztz5l%#cR*a|BkV#HpVVIZ&iQq@|5$wLS1|*p1W58U|wua#C;9!b62eyJ|XX#b#;s- zCNUQJ!s@}k-j5&NF@v$-9^n6YP45Zo4BBt7g%&)8)92)+D zojHXu8|X{9blryjb*oJ0{R#QQkl*|;AN|wa#`AH@_~^H{a)!Spx4DY)Z1*Ty7I-$%fa0-zcDRu>uGOd|6-P(h1T{a z-e6(uVk#lR#C}{Xs%~(NG4wvTo5VucTDFwUV?C^swXhoIWW_8S6m!sV0Qop*;p{8f z8WW&{%XDm=Oz3loQV#>-{x;4{VBSEix3flbFFB^xm(P_d4t%5^U30mIR8of3FiyM z1vp{PTR zf|au>_B(bvyPtb_JMZGZ;}`M2@w@p4B2{?AGva{3Xb3aJ7*Y*6hC)N7;c>&iBI+~# zlyPmwPnI}KiY3F6ZOOOTEY+44%R0+u%h{G&Ew@`9wLF;>o0XWAon_5hoOMZdPTi8a??2mqyR2pyzr^tR=~krqNR+=^3`1YPkjUJS^!+kn|jr zb)lpuT1U_F+@+G9U7)85^c)X*Xmm1uFKE*LzV_XWe1#Dqf202#ePHy?(c4F_AITlb z`qs+SM2z&FhH@|=Lt2eve*!cRU;B!o`K$ouVf-Q!d$36k9F+#i93^o^| zburt>Hn9`f$rw9lvA?pb+27dT*{$MOF;yHV?iI_#N9+xZsBhR$7*UZtiYM@7UcgIu z8Fz3e#@7r!i}&z(7-P%%CVm1x1#*0bSS2nN1L7W0BbvpP;(BqF_=mVeoG(5Q7x1^l z3F2UG@_%wbj@8>J|D*k&ulb^<7*=HEP2QY3wXDRGkmd<`) z8SF=v%D%%``47v2p0Pvs<*`v_<&&6$hqHVP^eP_9JUp6B=JBi=GhrR{Z7ok^Q+Xci z;5n=bv)2@!%UXE~YvB288ZTzkc`2L8t*nRJ*eqVoX7dU*huhhF?qbJq4_m<9Y!Rv*cE)3UCU2oTllH$26h`ilik73X1DXR*s-b5q06u0h>{ICM zLzr6+vvBqS^xcOn6uR5U-h%c!$js~=Xv}w65PO@I^I%rNLz$CDutLmu#oWkBcn~Y) zCRW4^tet0L*0QjbyqOK~R@TdFSs$-w%XtIq=Z$O`uVcsYHnxU$u(f;&8{|{jYTnMy z=L77|{5bX(zJ^`Q2iYZj9lMmTXBY9c>?Zz4b|e1-yP2QPZsC8znBD~KKP)ziA@O%{ zo%ox$R$L=4hvt7mJSH9&{}fM(hr|uy4skn1;hk(3dll041smm|Jdx+{a!ArtK9~3L zL4FcHlV8lQ!XB zmxOEyxj$rE$i9$6Azz045?T}59@-OnZ0JRy*M{C2`e5k4L*EPiIm{du8U4PyKo*J9-b7Q6K)N!4xbV}Cwy7>hVb8o zpA&vn_>JNBhCdPhZ1|z@FT;O{Fh|5hq(>A*xFQ-NIwR&r^hKUSj5#Uh%$SQ~{t?^VF#(p0ApEy%oOk7o5Yuxm>g>kFmhT~3+J1_2vxGiz_#XT9f zEAG{}!*O57o8n{Qi{f4Jjq%6CuZ$mx|6Tk=@z=!P5`TaER|!c8xe2y}nuPX*6BF)A zcr4+WgqITDOZXz;=R|X2Y+`0&NunpQIdN8EU*b^W9}_Q5ye{#!#0L}qos^%{n{;*3 zYe_#P2PH=*rzQ6$uSwpVe0uVQ$yX=8o5E6ZQ>LWMPFb3AM#@Dg*QVT>@?grpQ}(31 zo^m+l`&3hELTY}hJGCiwTIzz-6{#Ci&q}>J_3_jlsryn7rm?jAG<#ZI+LW|8Y0J{q zrk$8}LE2SmH>Ta2_Rq8(X|JVynD%WtOOHxVOD{}!rZ=Q_rq4@Xo<5ZR`}A|u|C)YN z`hDqJ)1Oa&BmI-~A2JLXkr}BO_Kez$g&8X|hBAJaabCvd8FyqnoUtwA`OKuu+)P_$ zO=f52yv*g9>oQNyJS+2x%q^LBXFi^}BXeKo!OTxHf3z4aQLsGDw_Itt!E%q~pO&4L zeU^ikPc1)Y8MC6Y>a+fk^?25&*%8?d+3T_|%YHul`<$|zMLDPE+>!Hs&X2jJxf^rO z%Y8a8F0Uf*FL`h07w6B-zdHY$g8YIF1v?8y3YQf=QnBS!CIavg67gF8hzwU=6dz zTQjT$R-3iT+GL$-?XfPi4p~pPUTVG3`jB;pb$@wGd4BoK@{7xFDSyjmu}!v}ZQEtr zXFFg!Z2Q9YV+F4Wsfeves{o1kn_RJ^;<$=U6=zo5Sn;&oWcS*a*f-m6v+uLNXaCy% zv%}~}apXB_9UYF@j(*39jtd>z9X~tG&RA!W)9#$?Y;(?XE^!{`+~oYD^IYe}&c8Yz zcOGzsx~g1LT*tUha{bk{!}XopHOvm-}`1$L{}lOrCg8x~Ir9 z+q2AblIL{KEuPOR=Tz>hJW%<5)zYdrtA46pRlQ?!;pF2dUpINzn)z&(%sZOLsFZHwB@YrC@T z#pPS(J!Sd0?A_2&0zfEDWo9*)GhuVf<4q z9m5j1MjPyyY<|B6j{_gh(bDmlspn|v1eSr7mco;Wbc&WvViB;76g(ML=L=do1@_eA zS~?XLg4SNxM1CIfbXW~HYI!nXO=x`JnXnix(BKwW7$*8rF-oZ4YeC0bE;QEw7W1<*c7AXR~l# zgD2zR(@=7QEW6sDrx~!dDASMgkSu*Pq=~Ht_C9u;#5fEby{rl4R->Hn>Z{Xt-z9Mk zz?NSF+kSwp1g*om@&Q;6uq{JAs$&DJ*b`B51F&1L3K&3{RY(otO11j%SWtp;6E8MO z`Yo`*Tjbp`VCsiWPGzXQ{cJNZto+TVy`XUr^-;}zz)YO50FRyq!nRJ*Lb(RmivLy_ zqIoseH3O2z)V__tvTj^W9q5nsctUNWnwO)lVNlV5b1%vdfU3E8;%mRcN4)7m&b7!h z3kUTead{Z{hag$y_#>LBZ&%2C!x}DMZ(9M~0NyA`8bZxpEuRG#2T^JmT=7vg0Ib9n zqQ-||xonY=AZi`aL@k&F+B7?Du;?foTdxIq ziJD$^JPzV9NfGtDzR!Ab=f&D=hRit(o>=}ra%dCyunAPrNLeX4LiMi!qz^Q&kx%LQ zO3*?)*a&KT&stDsE#MYVvKBd1`CdpYUeJRLn6%OLecgKxx)=bat(+T@=P zC-sJs4oWHAa5P@aIJ^NolR;?@=xkz>kCL}v$2XqNu~h%hXd`OZVI0%AQ<}uW>}aDM ze@aHE-zUO39c2dDv1oN4cuhU9QT7kXJ;_huQSvZR50<0WK);rwztyNCEu%PF#7K?< z8jD&>T4V#{lXS9P{->eL8bB@3_&%Dm;b&RK?83%k{!fm5z?;LoVh$^w@R*KgbR5fK z>40C-`@eF$0GvapbE0E8o-H3eB5;LY#4AG8mAyIo4G#E9M!x{O9!E3MKjT`6>p@(j zaD4+liAdi8o5M>7zhT^Q2kswb@!};sU->J?deHZOa2N`KHyU*Y<2W5@H?I04gk{6q zd-PEPn)jn^;|}ys&HvhAXEBB%mN5Ph;HgMp;lFjjE=$lKN69N>Y`pAH|D(@F(RZ@1 z`R(Avc%JLpM|AmUkaeAe`=?PauK(Qw{ayTP2mb;z{vRCTEtUhk^?V1sMiU+SI$uDZ zCy;;d|F5Hv%CiyJ%kKlGDcxIzETr^fwNyTdF2HCM>fBYo2~K3A;FB z4yW{mujtc{l=$b#yh(H{c+H2MYg(HQ;{Z?$&H_JBq| zJ*XFBwoZ3M!!KM1?|TAp2I~*t4W_=wj#$qB$+3-v@CgoTo4-CceA}Qy=6jEYiMwzN zVQf5$<2f8}VIDN2Z+8R!0Pf#KdKkX)U5X3(?4*#SgJeAuu0)#>#ND z@)sdT|6zql7aJm(`+xHgY0QPA3WpcRWE{CTT5;6iXu?6y+&Emk8@Bz+kc)iqx{Bpu zy&KOP;j!+7=Q@F z;7J$O;M0+w&1}3EJSk<#@bMQRUGm?}hdm5zY~i>Odlh$KwX0o40q$SM+8hUe9Q8bo zJ&i}uMg#bshQ2F7y)~ns^J>Vn%9F(wAbm4dd^ce)M7xS&+`kID0SCrd3XUw)Q-(c} zGG-nbd)XE~6a06u znTCasGddbs57~%@C{`}cX9d_J&gHw9m1IyjnM+=GgJ)NOf1kjb#{vH37-q8thCA6z z!o}Y}**umd5}8$8&hkYSWH}SDSLJc>Q0Pvy14kisg7 ze%XfCVbwF}uK&BE=zofvPXj%7;&@LTd^L3D9PRMp8ieBn90V^x9?VDB<%D;OPs4Z; zE#A%^9<{o6crEn3i3K+UyOrvIXZ5p5vKDE=hSmfxl;xwm)qFrU-cJJipo_w}t=$D5X~9bCg}R&40)k<;&WE>e0jFWbBa92t=+h01CJQouzW2yt-}pxLj!A9u>TAV*(%tVINRA_oE_{< zoSkeh&MvkCXE%ESXAip{=Sp_#(8gs$Y|GHbbwljhVc=o3L(VZ~=^QK1(b!Am=zYeM zWvT$FB$+~l0PG5Snuip{&v5J?GwjJyDhH`JnZjC-$I4U|QZW*%I;SHo;6Y52Fp6m6 z=yf`W$}`0jaqynb7Mu+}DZoAPI!MY*5OzArbIf7q5k5*4O}g0}X1delHCcl`4SFr; zdK@dTZ)Y=pYdmax&3KjZEaN)-Ei?8Qy+*sS$MCV?O~bX=8(d&$GB^=!a0d3SE!dNO zjs1&Vf>m`7uo7m9Vj_9qh(w`#1rv}_GusCp{t9&QYivJz9h3+}158Gahww){(dFek z_)h*T-^F+H=MX!Cyx93ioA@RC5?x-Z>s37Eh!LRZhX4*6GxOW|9sEwjkKE1gfwdHP z23q)y{3d=gzlGn5J<=B?{xS|d#INF4jl+MI#9z;*j={eLzOFl==kI3sz=M1ryPrM4 z9z;7H#{Bgtdkh}tf3hdoliWl10>7-6&4$Nn1^gVV z5v_1OyNF$fUHBW>9oP$hpMA`Jj9?=#VJd;}xb5X(TcoT0%tk5bxz}I4z z`856qel|ac|BFAxU*@m!{fPdklhGfIh!AN;^hYb=D%!*}u>gD9LvnYU_PMuW=l(@# zG?ErN+QH*ANDcM@n2AF+5Y4e4=VY`X7t|*~&xP^V04d|>Z_xA#&cEaPaE|0JGXu`a zz(aRSa3x8gXsALKEjmRPYClFS6n$d3=ohQ85586migjYWct^Y|-b3DK(Ao+rXM>|l z#8T{)Q$))uM35YdD3q7QtFVrISUGP3MgBWx8hw`}1R_eKjC7r9Q=E1+V&*mQYEg@O zj))guN$lAmM(!=dgW&*_V$T+{HxO%P0uF(8%bfs>7>?ExR))wA(w~cw2m2b3vGGr6 z9Qg2aRyX>+hAUsg6@#Z%4Ogccl?&2VafoCR2AGpQeh3%o*q{M%<-1YfhbJm01b#EqMc74_I6n57x1&7(@y5c^L2>ETFw_EvTP>rk}#=*hR(UiLKf{he5e{GDBmnGms>u=#yj_6?;^r4}uK?y@3E$A-SQ zL)*X0-{Xh)`}{EffPct8;ve%*phHLxc}WhSvlgKTNOR7^U6+`PbElXMUcHMoYml&s zYLOx0pml;oxu_E9B34X7+A1nVnxJ)WkSIgkWU7c3CZtP+Tcn665rlM!aEW9QiS>Vw zC`SBSl86unq>B&@mng!q-VG9k!Y&dJZ_AM`5EUX`grZ{ve-U%3z^r)>`s*sppLgT# z7Je7bH}gAjzKP#~^NsNN30}mn#5t2+it{B{VGHp0DV)#8N=0Bcd=Tfi5N9dC!#y}Z z!jK1Z=x&@Jf|Wq>Eyo=%M$FV(6U?{)o8lR^gY9I`!awjlZ08rzGcUp4{up$tZ!X5T z9XlVh*ZF@{v_tJews0FX6?8Ab2jwB zQS7R^hq@OD;9mJpWo+TX3v!K*5V0fuA}CAzXrGn96Ng6cQX&G zWL4M`t7i?+nN3(Nw_)DxU{he(biy83?6(M@)5ci^55XgJ0MdRCF>~)?Rdfh3bsr#} z?jx)^KV_dGKJg3KUjeHjibwMp9?Ro2+o9TTIY3t)Wj$P?vmdw+!XS(yNSK6KOcKG6 zy9CH&667@nvYZAv&lqE6w7|ZYB4_Re6U^O5Ssj{ABV8tcqr<#GrN*8qZWfw%Cl|1V zj68^&xS2g8ZK4oF+=U_LFB~z85zyUH*loHKQT%z(@JA4fxtv-LZvfg44izFoFdp{* z4n*lCL8ql)4to|+^XY7t#+@w8p2gr^HqU{+%Y$DfA6l;z8g@5k#OE+F{sZ}c9x<<_ zq(k7ZfEIx#rh=72lTZ|_3%z24Kgf+p?n<@-ej7WD0cb3WF0JKth+M2^FF}VjN(-)q zw?d<}@pkqXX~R0uhwv%z4#XEvWp4O44zZsR5k8G~Ba(DFVr*yfS&*N7yazV?D)@q4 z;d2mcIFHZg3o!pJ#C*6IHrrBog&$dU7trZpZ%Y%Meg#?h;YjD3PBxS~)3uf0?FZ^>)90rJ&a%Cm@dY zL~#-#;7=K|?m8XOwP%Pk#aZHPM7=+b)$w=id&I||hq&_#5O01VVs9@(T>2&AQgIm~ zd#^xb`c;UbzZwy_*COKgdc^$x9drIa;Ma*nw08!(4R*{wuy6c#tRT;X9cqGoR*yLQ z8^n#`CdAj@f(ZND#O;U)zEj+VnD%=RF@K-9Upyclgmpyg(k8?VKP(=RKA^>HDSY|x z#A)%wPlzYwy41IJy@lN>*Q`OXtNtaPLX`$p}mm2b40 z8`t#qZ5Ui@ZX8@WxVHbe(B{5@4SgHetXSQDLP+!S!QtM%zW%ktrk1{5Wvjwz-N9s8QKW;a)wJG6>AR7Iwa;epl5`$Gw-&Dm&k*eXJ& z1Q4mp9Bxx*Z{Nn@ep9Ev!L|xVld%&dn5L;m({zuVE<@|um8uaf8XsD;#pTuSgV!RC~x(Z(sH$E+-|jncdy#Gc4hB|jcZo-ZX7mutM-{@DynAc zsB*bYvm`Wh*0>hhD>UM&T8%y6rKv|(%q^?7*((}NvvoXe)#z_^2h9%9+o~b*YOQYd z(XY|n+8RE44860p{+O-$BWU)9fwe15vt_TC<|=aM2FMMbyL_O3L;ujgkZJD94ZX+r zht3Z?R4ns4P4nd=?N;Njx6-sgq6=Bz7o0FTxSHHnI94mvO=GjXiD>lIqkm?TH<5v1 zp?lb@utc{s5q^%Va`PuB=T+q*1Dut4O&xTxn>(h+YiNh$zm}GwB-2qH zfi9GQv3#&cj^%@0Yn0@JJ+wpiwJfJSkeslGX(L@d(T2Oc2~}fWrcG^h@r1Vd$w68Q zzl2BW6psW@6{LOSP2|}A^Tdt4uaKEcy}Ciu=v6}5i= z?Y>F7YULXp=3Z?e^=f*&FTm80KEEKDmdnPO`Xy1Oe*ZYHXl>GHYu4&&)^Im#v^Bdz z`u%uR^-UT%O-<&0t@{2k3cSU%Qq~ZKz`_YAKDT)qWO0r8gT_ zgDBHl^=Pf`k<)GH_p5Y`Gc8*4TQm-}Xua0ro-q_S0`yVVo4 zF+gXl);h1&+EyRk8ojOF@Qq{W+^BWQMopD(l&XBAQstWznVSM+25<6d64NH7$~Old zs{Z!6Oq=zpT;r>^%5h!Y|-D3}^%qX*yP3f=MEE zPg@lJh`}+4G}WhXQL96iir6?o##WaOqgORO!rvdN+~x_&c~!Z{0N-U^(`vdnLe-Gc z(o*hZS}9G3oP`|z_8|Mv>fWJMGK<3C)L}r{kHM+O;Phia7C#23sh1GBLVKlTXlW_r zGOZZY=+)gQVQ{G@O_B+|8_7D~jcl_ksy85=IwXzisfJ$iUn|!rg~oRyd(C$vJJ=P` ztLL!qnW7`K*FUZK9%wXadR~#BDSLSn(o5q_CPRDWpp$8n1i3?3`gwu0pR?{Loo1%| zZpCW5tj!%cR*Kzm<3<^ksE8fg4hf5v85>n&BqYKw$8_r$d+UrFTahg1p0r}g3M=iY zhaj;8Lj_5|Hmk(24>G)DSVGJz)EJ8lOq$vPw+&!geE8V7$I8uXblj^61#rm;4s#(Ygevb282F-0=9hF z1Q3adS{EbBA&){upa==_=ZKWIfyYwWwK|lNb33Ynht>=rGw7Ei!BZh6)LW^k!HNnc z;T08*V3M~ry&y^EtfZ}WJ)xd;^Pt$ zkt-+LDsr;vCPO&v9uzIeb~zpP_&DD+QM(_1^^D8M-P1NUF1>wd==PfXt=g#Si zkDVk!(yC*UY{|*Cq?oGo5N?i*@0*iuib+YzNK8wJ$OsLM%gc?8i(Y0nne$9RrVt#S zN#;pO+OY)JNy#fOo|kc(KD7 z8;W(r<`@cc%m$AqD=}uz`aLr)O*ds+S{TZW_|Vjm0+Dv|$wv;|*Vu^YMOo5tt0`aZ zN}CZu@FMg0;Wzu?&$5lo<%1i;{P6ug_~@X>H2CrtAP#Cfdfg1)`o!g49|Mo~<9h?U zOo4iW{qQ&0ppLEpy*seq<)_zZ@aI3^%P;Bj^TMS z@56UkC@NL;>u!JkUD&Y*;5pY1-^~_b4_!&nW+|u#UYt!!j+&=P?z44-kWeY_hl`h{ROFUcrrMTxFaC3DbJOH4e=D%3)Yo1h_V>*z zYPL=a3bwZu*B?{S*x_w#t+Q0+*SAp=Me*nli28UJd)llO3c=;9gEB}+NX#MSK)QmI zgWK(KL+|O2d6(CB9#=Q1+g#S>sGn7wRPHTzbd;F8&CP3q%NCutWa)Vetu^bq zYo-@XIcu?ZeRomG%<8%8NhW1ovd@yGY(I_Y0OIL*_)hE~DR?B&241WDFJX^}`euCo z9sc}ii{T7^{%wd%puPb=vA4J%yIuIEpX4VP8X<_0b!aiPV~%(CqLb>fS_axrImO!U zOs$w#bBfqMZ_D}_XDoGjv)k8q4V*R^HA_sg1r#-F#`lFzl$0XsS2T(J#(b8Ug0Ja` zcRoo+?g^k;?{4$!nrKLhC%Pajp1ZQ*z5I70Pen!X`jMx2G6W;?$fc29KD()jT1`^1 zP1c>GaqnJPw}O-AQ1EB*CN*(;eEyw?xFfEPhwsqA-;)|Z;W>b~H<^EQP**Q$fSY9f z`f}Thqybd9w|wP5?{iWEDEQkt_%tPS2}q~OKx8K z@`ldU^^>MgDsQi7m|a9;&oiSW`2bI-4GIdMJQD-(+{H^TSZJNRy0dm_E(T!Ry6z(P zswwW|`jJ!5E^o^6jh|XM*SKX*KFcnb5<}yvR!W$H??m(p@nSrDhaX;rop>6bD*s+Y zH3#rhk16;z#Ep0mQ3uJBv#f!cDOMdLF**x}l>F(uYWm1hzEaMwm}B`IuNSyRkDv^I zz*Qq@eFbr*Z>wI$d`a_?g73gixCgvN9qcmnghAo=PA7z#RP2x=w4U%FCgV+Cf3kNZ z9)g?1(*?>W~9a|~y7l3{y75?SV^QjuxOUJ+noRKx z-(ppLr|DNE0T_$3JPxw~4Mf?`D_Uv~%JO;l-+$zd0G81zss*(Z7PHt3{YfpC*mdv) zh!P?=y>D=vl%yF*n#8-GQA{y%Bc5Zwoc*I6v55{(tRp%n+5;<+Y{|rE?`bFHnsQG* zt;=AZyrFabWV1o+A1S)@QvNE0{e}+?j`Z-G-}_*Mz8XrnvVeRR9s* zqJ-XQgFcKUdnaIpkhv2f3Z#t_uts=geP3H%URz&%{qnZFd{`q5Jy3*g<@LB&+k(p$ zp1)-2`3uXe3(s4+^!#JWyi?9v)V^+7v1W`=`(%BRPm47^edX74Z94c4M28TcWPUj_ zs{98Kv7+FEB9NbE#={cd*m5*8s&a4n%b~q;W>oOE$G~Z3RPcj(xYRHTz7=m~`0JPY zSHWfdK6-WS*p9d-e>|fpUT8 zdO9X5ucv3KpPoSZv2>9f61{=vyEPp&z8{}KY?H4&ZBj?7c0R}cput~5e+dnrNxWw& z@^i~qi&;qQQYybUMBzP<6vScbq%t89vpfCKEN?PFJU!8JeNF4?1YXy)5;k(%%BJ|z zIDYcT3w+YZkK8tLdR$plLSa-?VM5Eil9G8L)`jOUU2^_HYfzA~{*8F)$|O2Wrm1Hw zT68vEDpK0-J7|FfIo7nry)ycx_3w%H?(JA+cP?u?|E#ttT`d7ZQg!&%k-}4 zQzMQnp|M3;jI=%82WD)O9HmYSCR#ga%Ly~I%W3DdPL0cRWuJ4QYi4D-V_Dm->F0W< zO)IR!X2%>^?bC@SITlXP zbjEfmQ>3f)@SWPal5{JmgsiFjdl7X=y_!Ax1HPpE4&rJdQ~CJ?4z<2=p;HR12A>}% zu>8VOOt#R(Cr$6SA@nx8xx!kX6<1JGT+-o4b1Z6XTO`4?Ma7lrx$W)(ugBu*3$8iV zJGnDAy}B@`B0D84++uCD)%BD*mNdDW(lcCnR(DoZSY~;Lr*57VV?a_RTZaXx9N~}1 z){Ten#N0?DEPFJPT7lN7{4e31G2+tr{5$;ltH$Kt3(cy@xcqiE-f1MO*&L50net-! zI*@wOlNIgd*I$$#-7v4z)z`A1ySuHkBj?JIpTz#IL+OdOg^jICDjMguOrK)=;>d9% z^<L-!QrC1V0Tbj zLUKxBS!iKVqSanKQ&#v@L4HIm9AqhJ!Ab2Q?oekzk>jf|^}}94J>b2ne=oi-M7*rQ zxQs*nFiJ?Wq**8H_gQ$nuyerEUC>tU^yW_U36-4WJ_zpz#2jC>5D*skQ&IjPMx>WG(>?gUp#MqZB z*l4sZ*5F8lnGfGyY)%2(d*;Z!kIw72nQSZOKDu}Qa8*$C5Z+Umx4o}#`^c>$r@THi z^g3D$n;vhkkS_{)$&VrW-Io`vahjZi^IqY({DG0RYez<=j?lM~WPaJAziXp$o1}0& zdmcD7E3hen;kvq!TbReq9g1>cP~6=+on z4)a&EUU%^MFU9=;QM9a?Yj zSL9k+<==+)k_jF&x_*q${4nfUn!Wr!bNM{ryY@XFBERxSzK{2KD8F}f{TL6~VMOQ?zA+v$Sr7S)s2=5eCfjVA#HZlzqnsa~ ztY5(;KCS**ncpq(ypOl6kRMO*9TkaRt@97PDzN~1nar)A?^`t7zJ=0ZSX zsppjhz7HQL&G{s;{g8UiqqPZ>JGuSHg1B`0^SpcH9^PFedXHQu=CrjPS=-izx=}`) zF8v435HIl-^X2|J`sJvQaClmdmo&*bq%Vr#Ch=@4d3P0*WLrUZ#1j1qN~2#vw@R;* zf|5T@VcrI7P3DGY7u5UVFJe#8*V+IjCb2yyfSWXe!m>y68!PPOky3R&XI8i?`Fb7h zeRy*-fSdG(%Dvk_+Ji<`op@KxaKF9_p**7G72uxw<=)(aj=tKi*Dhk_np6>q;6ejU3Y%_8B5#OPb+q>Xs^p@nA5dkYA(?uYnI&I zCnft??DP2cD(Yl!DELmDFF+3uto5s?1!$MbzZX_Y06+0w!MEX^JmQb4mn2HT-^V+X zG}{Bt?-KN;bOG6rfvsIkHShuzx)&Xq zeozk=5BcF+S&v2+)t}&pOTPH{=%>q!x2l%<+i{m6(w~11J1+niH~Hbuu@((p$sg0< z--q`VHR(gWqyGH6*k&D`C;af;tRCOP!uMxJzsGxF37FGq{USF5v4g3^jJ5&&VrR~g z`-F)OiaW><<}8;(bJ1x#hO}XrgC!95F79gXNOyUQS1m27OfSRN_p{;)Gtx_v@KR~< zG7)Jj6EzhuL<#;lqv&zyc+>@r5o!u2RJqdT=bcW6pu9)`%ycbcYGis@h8$WU zNoAP}V2Hj}=Fx^%J%*E`%av9#&Dr6cR!nQMLX75HL_F=TstIo~g&SU#Z?CVcBxo+;}+J@rU zb?&KU@g+SC*d$EmUpiY|=p~G7ehnlsiS{iqwlTO>$dEZpdZ0)I4FwJ}`OYxj-*22# zQarn{Wmb-1WFJp=LY2y4xW_8EmG|Q*cSw1bo`A&18}vat2WO_pnoR_-O`E@aJHy&?qb%t>ky2f6Hjk6*>;x z>%pd8z2twQMXSdBQs| zoiyVpx_2|1oN?%DWnW>OAXZ{18cti#?T}MWd^|4EU5$-ZZdZOr+>9A~Pu;RgM_oqB z+`19FY;iZg0drLzwU{K@?@M*TNTTRAO~j?;pLyjqS$N;?zQWq9M}j zD5xz-ES_57@J1R%hjn%}##*W!VIs-N_Iq*~N;2}Jv+BzhmAWmBy^RYtc${T(N1~@5 zQ#e}GVQa%gR6eh+ex6n7P@)Y|j;}zF^gqjHNGUHIB{-y6gYRS=vRB8$cj(~;=Fk5; zyF-^BQl{bA#;%dv#F~yj0B$A`HvbehDAvD9XoJI~eCvVC-y#Fh#8 z!!#bXTK0_oAZvdW@NdZ?)8NmI-X-$~VMqRQKQ{uk>^nfU>_w@c1xABbYWL`^issSz zyjMJ8RB&IZ0{Z3$N)S)qkhOj>I$vu8ESdnXM+r{6#;9tO8z2w@+S`xLOik#FE6cxW za*9RN9r&qNp-&J_U{41}U zy&|a-(v;u0d(X(fU+}E>8}%~0)hL6OVwMJ_d+~iavW%2e_~SGn6)H|cN`;iIGUPLf zr!#0(1Sl^>&C;Lm+tYst^Z4DJa;B!;e2Vgj9j!w9sWw%5?JH$l53#OsHWepGcBjImu6j}%<(tfzXWRp^H= zp`Kv$%2q!hCD|!C|1`T-${2A&4@X>>f}^KUJ9ww^@5NWleB66L%Bq6z#uwz|xQ47g z2x_x1-zZu0>lhf&(4?1_*OvezD!+^W{NrAFj<_zrmcXk|?B*UA3iD*pl4F$zAY!$bDRwGyAc z+@oZFXyxAWm-~TlC;LN#zpaBmO7@2aKd6UGt*7eW%BJY*r(RTWS^os>+s@|r+wrK> zYbyU9_D4T_mssn^^8$|={Yt~L%g-m;{Qw-}`f29l*C2MMeB}bq^>j>BUQf?1KRto+ zW9cHzN%RJu?`Cd4-THofh8?Galb%-Xe2z_)@VwD&*b{{3LBdVqHGHbcCk?(@C?){d zl|15$BKSX3w6Cu7&Lo=s>)T4I%`Hq6B^nO*OmQietFQ`{WG z)1BG5?o6KMDXQ>b8Eo&i*UyQMj-T70m+JE1{I=zFGf!-8sN&TP#a%0FU6HNRbMt33 zS!x$LCs$NX&1C-G*-p^6Uod z$PS<8&5>iRN7G5ln}pp5u7~f$$Ryp91`UoHAaw!>?A$hYt~H?~H!VLYBqG1YR^F6D?NOAF^*c{%&zX|$ z@$j82SA$0q*^^7B zdx{!LLV`@TZhPy}iiTWoMO(Y4y{e|6we85~Si96wUtn*Pjo>RxwA#TMO)hvma-kEK zfMw6a*7A;y&bf1Ah4peS}k^2D1bz>xlFo7LLU zF?H^on1u2VYimC|8V_jTUHI~m#3OB~3GloI+iG5b8Ziy-kbB4BLXXBE<{@4@h#p#k zmZ67YsE1-;g`t&x=w7H?&Z;nD-UZtf)Jy*ZnWlmG1nDQ*V{6XtBs0OCMrJ~EXK+zZ zJ)b}FKt*kO=`<&NLEkR2xlx0{MUu1}_0sI4)n;WNt-HqO-=WQx3QlVWm47Rn zCMB;5UIftUhrdYsL=)7zoz2(slb@Pa2MW&~c7_iQ+1m`uQ^8;0U8BD!Jb)k2;53T? zKBgUmx^jW%IyxpSucJpyGDIGQe=J>39QAxRI7^y@_;Rn*Jc{mT*jhjQF1gxK@aM=D zl=;d39N?GF|E%~6|FhQqU2KC656!O%kE|Cmg4Hs=1Tr!vcHnP+nckIS%;}o`7ZEnH z{o;%H)<3iD*smYR~*1eh1h|JE6<&?DAX9TXy#d$%vli{6m~3+Jn~3l;v>I|eECdD$}_|p%wvC6 z?VU?n%8l2TeK8XTINPm-aVasTB>s;XGctqHySi@+&9!IWR2QBW-%~8YM_xYhL|$^_ z!2)X>+Ny97jla{z&smc8@$eliPY0*As{C77kq%D%uHY|{?|B0J+nF_3IjI64q`cyt@&ly^KHc7nW z;X4VhKR@{@RQ_#jm4r`*ZvavTc#70#(kH;wT0Q`kYj}8|*F#4H_PP$U+hyH>Ju-R@ zn&h5Zf$%*K>^aeM%x>DAn|u!1Xk~GW^eB@r!Ytlr*Gk%QP@mqjc^G@`^jz=Ryhgn0 z_plw(_MVhy6>DP6^Y%XZicpWjhn0c`m-uA;_Z@QbuHd?C0J zu=k0}|IoM+Sf@QIsZ)0UA^f)&YP~8KSSQJH8hoPli|@J8Xw+Jzxel>K5?_^+hJXe< z%x=_XjP(<0a^G{MT?n7jB8Rkflp2WyS0myOtCaO1(woZU6>jdrxnCZjfzc+$xj!jA2~lhrk=1+?pLMv1=OQYo=zk03!ohD zNWx-(L}(U60Mi376&7gNlrv^5&S+Qzpa7I9oO?ggYT{1Wp9CeJ%!{%eH&*BZWbEjR=GC8mV#p+g_s_jM@ibWxJ$xbJWhM$G5sL%Z*bNtt=hgSZkR~cQsB; zv3pCF&MR`I+6qc*CdC$7(n^xm7HL6kQ9?viLRn6p(GWc~xVxdSt}xD#Ql4ooca*=H zYfo0&pz*~`<=>_!)#m5qmlB5+MWhq&1z*TUx=Korf|HG;;LlfzGUqTpLK&jIZ;p~wCCU&Q-_ z6Y+h!<}p(IB^y!U*~5nX?R!w#R0{qaE79PU{NFnK`#5xkub*g7U&FJDEz#j2n@Zu? z&GMlE@YPn>4UdWA@NN8JRt>*Jw7x3MlDve(((Js1)byl{(`FR5m2ciqT58R|IzFXjm7}Yqq|2es z75Le06<4Q6x4V*xvv2ZLTNIw>HA_$Bf5eYx8&m66HIoJG0y%?eW4$xT7%|Wy}ZbA1nNn{J7nyO2t({Iy+ODYx^!oO;95 ztNDHLsj0Czj;a@CIjW^YEKi7yOG=81!Lkwm8y;_<^??d_t)$NxHgLQ_wrA|lp|%cy zRm=_2EKa2q{UCqQ?>c_7d2b?fqZKmWUBR`+XT(;LU(1 zqOGiai_WRx_iKVJ$bn;0RqDJD*Kctip^*a9OIsi2&56>^1cY_=A zJADoniH`g{Lc?aom+oESApToTF07Y;3RXdYw7)&xWqEaWMQWPel4A`OhRVqzv^*@) z5*=+xOv;MNlBdH-Yw2)K-bwBIvypU2TED zDCM*y@8G>9HJKT;C5^2aHKj>eu`$_6iP^C+IsBC3=^jsa>Ec`p%?sOM^$ceWu#;D#OxG7Z;A)RO(4t zI!*e09FB~%7+MF1jsC=62R86oz2~CFe-`wb@+Z+d5&VYiqL?jR=sB-BIwCmAG%4Mj zY|Z4WM_hbYW8=t{*yJ#SVX_ehrC??7kiLb!iw?Yhs@(aC0rZUs3T~sIi44JmTr)hW z_TE-p(i}^@cttEaI@_6(jaS8DvYjEeMduuI(w3R!i_ckb(w14xS?$9!XAZSzXLStC zoH^W%%`*I7Da=wIU}p##UdlOM<8VY@b#_v9rJ+OQ)YsaNlp_~qy%Ybv1`;p?dosvp zLE;@Z6}f{r*dTLOe15jOvB{m4>c}Z_r{KRclrN~Oon4mcsH=137`QE|d}e!dV^e!! zaaDRzTe)|6rEN~NwcFcJTV0byUn9tb<@zY5G7c`fL8AEJsWsQsMpa|Yk{uTHW!dP##!+`fJ@g8|JuZ#GMUo?`< zlb49|M%Fad@i!%(%0T~47VQdv-5 z8`_n?*NnUt6%^wwwYJ%kor{Cry$uyjS%uw|HJ!Q6Qhs&IFWi!6sh#8QUQ-2$v7*k` zz%%)U1N|GzcyZ4_l45qKNWY1O5T8`j<4DY?>~R&h*fWfs#<+EJ zf70*Ifl;Vp*7ji>WW!V5Ox#ra10I)dpFrm}SG!pO)ex)SF~Ue0u}}A;XHG84airSj zPp+F+p6US0Gh9m>OKURICzqGkq-NC?mbg+vP_VP3q+x-rF}Ja#q%J47zR1>K;m2gxv6>$XxC02Ll|6}bu;G`(B$KTa6n{&=PX?JHf=M1~-vSf*i zfT#xoiuulPVosP(J@w9b>fbXbP%)la&v0hNh#&%z1w_dL+yC#Yp4nXlPrT2sd%C8( zy6V-dSMR-g6}!HD_#l6Efj6hBth~Bu-#pSIwO<}}bH-n9@1q1uM1;`M8P^t_R8T$? z|1XPRZ0j(eH_zMARM6;F&0cqYfzRvmxeKXh{d@;Ar)fVdZyns?Z;Et8H+bvX@|#Nv z%L;w2($YYozqGi_KLCZ_pHK4j%!*&~NiBvh6`mulmP&I!lq#AA3>b3Xf^*K5OXh zd24eqL41u-&dBCK6e&p;fZ_}k&KtVTpYa$)-K2KIbSYz0r`h367M;Y&j`pv;29X>*exoNB}=J(5L z%IYerN*bi6B}nz~BJ(xfui$5`&PxaI5Af}-1Nj%TrsqKZB?jxt4gjZ=FVGywzl?9w z9LT?%uWlX4zk+pv2lB6E)!a+_aFdUEe%t}MDWn1Pt`;d$OQqW-Q5#&cpyyHaR;6}v ziPqS!Xht7)@$lgnA9mQ>;lt-nDyVfQDtCK%T{~q{kmdHpD@Rndx3DJL-BMKG^SgY7 z$@_Cz$+*AIKK913V{bfm_TR^uf$X|bRfip4+1lXCFB#k9_WIgNsyf`&b(CF0iKjSK zIISLAU=6l_*z~ZTEuDQvpkMF&)@RlGnRu@f>c=u74n!|BV}Y&K z_A6t4b7YWTM(b*m!q5g=ZYe0P%{E7}E6BViwY<&S=-E5FX)xxNz2nCh;QU(_|0r)` zXGfzqx6W5$Tl|M(@mFB+w>Mz%*Z!u(-wJKMBprLEIP<1MUs8B|pE>-&|ADn48}KFXW9@HB(zEhS%n1S9#ceur6fv`#LLrY4+z-4K20p z{_0_6w%t#@)$WkppV4dgkBnKZuI?#TX@4-Ubo87SH2k605c09yw*2*~p5DDQ?7C|| z%U>n5A68|K#`MRA%fq~`Y!lP}_#Z?ELSAb{Rco$yKyir}|0QMhSqb?S2QvQsT~!$WwIhGi z_}8_urIuk~>o!@3)>sE`{j0Fn3Hz5zd6PR{g-4a!Kuxwu=+75xjwCH6n9 zvciUbt+Jr~Kay72@770p74d)9M^~#Uzom~6HtvTt@(4D98&WPHy zqRhh5!p!_^S3V!H98g!=obL4(WSRd=$ge366qjbY++_vLgPW^!t4fM|1<7TiISa^P z3~-raP9H|ST}KIUt!xh}UmH`iUO+G?@_c?tPB z`R+ksgX@df*}=;k_gt6P?`;|opHr0Ks*Z9*R2MW1uyf6KY%jNWearxPPd$46nWT#r z^=!YXO`RCFxU9HG=e!yWvj}OIfWHqzjBH;cOI`Ym?C^W)Tg^J<&GC4Ad71fPwXq-k zKXy|t%&2L|s}Jj_D=4feDJ#iI|E~PJgp{t8ZW< z>G#s#ROrd|g3p?xGK99G+U6k+2%X4{h<8s1sSXo*hfwkdsS7c>ZxZG8g zW4*7grPS|n7x`TU1D*HD?&;x4w_*6Ha;#`Uk>oRnh0=9{Y(LOTgC>Tr0F3J%mWutwn36rIL7}M82 zmH4=HEV8eCvVkmnSVfr9yDf0az$ZuJBLyx#<;2RPz(V911o{AWiADV&Yi$e z^f3S4ZblF)ya zHz_UlMFLZ-uZ+9Ym7;|w+jb}F zX!gVepU-RvsP^(AR}VdX^etOo@!jET^*&X(QK@JOsAecY-|^%mTO+d(=bJH?ZtD5^{viQ%v14UbnaYL?iWP{T^3CKcrB>1! zvv+2+^nBP#S@#>;73KUuW1iWpl3ghU1x4;GZ+LV3ipQcIF(sMwZ@WORwJ5hBxt89H zysX_dSE-Z~Z+l5qCj)ZA37_&6=4(URnI1`7JBO5WQ2Fn#oS$ZlGC{f9%IgL>8=ZxA zgDJYoTUeXbufbH_zeO~rnHJH&QfU#@m)4dxl)6epG>t6EJdfO>0VapEGyTGjw3G8{ zT{l)LXHIE;Vqok=r?*VLsC zNtrhgc(2%#=1wWiOZO&2)l#Th7ow`}?>)#i>Z8AGh8Dyfpc$&J?MK$)u}vA7*~S+Q3ZjCO@NoEa%8S$VnX73Br7qAhirvNpk_Uk_c4tNx9@hOhmZ z2ci8YqF4DSn0C~8T_DYzHbIfsIXE|&L)KoqC zp8YR1XxXx!S6}VTmbBq&iJfA{?oPo@NofrA^#bF9WMT(L#Z`CDtIL+DL4DETJTGIA zx3Q+c!+LAx;@g(2FuRztSS`9!-8*BbMZtmG}qNPds1KOMW6INRx#Vd%HD)f}m+Cbw2}Rb-@j3O%VsQt)I~O$s5vNaFZT zmN6U{0kPx1!P*}!D?#UIs@wK^c=!=n?u6{5Y*&2tH}1@&taw*eVzyM%=#K@)YIPQ4 z%o0NiDir0Syo&7XioA-(tnvlf<+*v~*-d4+<=Mh}>J#jkMY8gtyS_1k&ge$jNHN1t zX-71&qhdrxMugv=k#=@WZCPqrOAAhIOdz_pJh`m7xjd!3Hd=jB+wRZyW@lt(d9(cO zH8t&iZZb3Q^0(JQN$eOilQeSB&9q6Vru0=S-L`3%<@)l~`_htlanoFmfmaPYpJU)v zS6#KC@xI2dIr!VKVT1DBM^3Fx)_m0pMC_ko*gwh2IihFJ1V`x}3?0R);rXh|emj}B zyLkL7c2+3?NCajkK4rJpDaGW+oLLtKTyY#{$SE~&QO)prs4l5HO~4(Jr?r6 z?kF`*{K0FLDpvkpy!Nc>lujw_e^bcclUA;dlNZ|GZ0YB3#s&SYSJZLfK)RFZHZ4~J zI`sE;%BjtY)wOJvJk2;pc$4Rw^z-!4Gw|g7QLHpq*e{2vSVxw~`DA;@mGzix8BBBT zt?Hpg>4DaQp}wX-ntw>y1NFB(eZIT{6LN+kQ z$V{qDd(`9dXJ%$*6}dc@T~O-w1ul4?FjtlOOWR8Wsxr5*wdcL+7N;|OV0q7n*k{Vf z1a_Sbn>H%TNM-JoSX}^>R7gTMrfCh_K{GciBO|NG?YZ=P8u-QMJF*IMdp_5|dp-fU zst*EJHLbut1lZ}ojsS0PV^w$BA@5#%@dJ)m2kv<;l)ACP4$&>`4Xzc0aAfTnG|(|z zV3b&|@x6j9nIEO;j|~x`|1%}+K3{vu(EOT$WbZ(Kd*u~(cTfE16_o|kPC2`6(mj`o zNkfa~Rb!PSQ{rptV?~9ie;88%d~KyeUDX9Cz5xM8X5|(CoY;ML5WwWSFDoa0y7d|x z==aiI`V7F6&I3`L`_g{iezb2d%-t0zZ7U1x%q?uOjH*_LGrX;=r-z21*we3Kjb%!y z3gu-4#HPHAlkQ9TJ3Vf@RQo8O*&j4b5kN-_EK_C+kPiXp1JJ$QF{Nd1ZYXWzJJP0P zLUjM`-MMoenR^~=F;})A7eTuXIl!*6pK1GwJ!RWjZN@yL%QXCIry4xi7Sq-SH}fylFkr{OqV6z^+o>tAKD!Tu#_jv3xkxAB$mmN` za&JZ&SFm5TKsLhZY8i;(>L0pyCFNztvc+sN8atV)+it&|>6HLQ~uHnjiU>Y))EsXqWShIAx zHW2WxP@gL{Xra{3qqHJ$AL3t$zd_%Fj;F1m_N1Xn>hoJpJnoQi_FDk%7KY6 zIqdH>B~I1ZyWEzk5hWp>`8jJUF1B*gSPe$H0QX-fOx#On)od zD~vt+9$^`5C6IC%H7Jo@3wHbn_KSx`yZYwC>tQ^tKvGCSQkn2=`=KS7*`H{GKeHS$$Y*T3W?Wzkg^&T3YL2)nk4mtIC*Y{MnI)ErJ9e?P$!PS1teD+B?yESm!FJ zk9I}{;?0=s)QqB>gyH8;82ZOCfxwtQ4Q-v~Ny{2KrYWyDOR2QNELU+_YQfR1C*N}9 zwA)V^$i%Yl(PwmJSGsF!OD49}jBjyOmW|uwuVyOasES$Fk87B9#rW};&8RQPFU#;G zDYJM)bycUQ^pNVRb{BS>pS>kdhRdtTx8?`RzuzYhWTs?{;iJH_gFC?XCGwW*4MImJF{b?=0|jRk@i}Q0gr%i%juk{nK4j zkrkQ1R}|8FuB;zh9vD{PE2zyKRMR*rtt4&G*w@MulAY>$HQAAn5}w~2_{rN+TbWTi z!e7`~R&q#Zb|AgB)m2{JP?GL1sqri>t4cK;U8ciXF`=Pm@{o+mmMz=&MB0F5z~|S0*dVxpc~miiu5X_|#Fys2j~Gqe!r0@3H1B zdyf@9sbF66bx>@8?93>$F@rmtY1>nb*@nhYOB%zpcLxW10|)za1K}xJQ~05^=8lZ? z^lys?Rbq^^w*_r8CrDHPUj?U?Iu0b_5C7xl;&BHv* z@#^sY^Oy4|_nCtt?UH(9xoIH9NoegMA^b&SOLy`9GdlV3gYIF{mOjR!=yKUkHE52? zO`6IYJiEoyHnF2=FHPCumO z4}%LkPCKN9@56bUW_1jm)zCa^aM!H*i7K<$o9zi#;khZT&cukYnD~aoR8LlVdiqwu zKSX~SooEFAAb$PuNy_*wqWk7{3?AGuene48Y2l!f15tVI6g~0h|1pJnV9U_5;?mOM zp6eg{@5H5lP2H_m8zsps{|?!ohH(r!DcH9aqf3NGDvl)8K61Qc{2}!YM|XL*X>OnT z{SoSJ)wpF#&pTI~v~Al-SE$I!%ATDfO9Rw=b%eRxNDy16-x`Pgy4>F{=_oAhC@CFO zSU9M(prWFHOU*ADQc*disAx!K`4FtcN?`g5-ZOow zfuGaZ%iq?zEUoacZV>5=Q16_4-w~5;KX%67ChXld3vCmY+ z)Xv(mRnC!Nx#fCm;rymTPemRxkZQ(FY-nis1A9revo%^^{6K$QF1rgijAVD=#z1>_ z@gFX{&^+S2^WYGV@ki51-;kcePOC{5P$PY^ws{)*$V~*@vf6_2@3V^(n2jm_Lqbw= z!nE=ksZ0{9OPx_ZEio}EaeA3N=hdVi?XJzst95&7^Yd%}ST-ZAJ}18+b$a>CxP