From 83a8878f4a773a0e61ddba4c5da94150643b5ec1 Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Sun, 22 Feb 2026 21:20:42 +0000 Subject: [PATCH] feat: redesign HeroSection to 3-column MinimalistHero layout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - HeroSection: 3-col layout (copy | concentric circles+dashboard | display headline) - 'use client' + framer-motion entrance animations (slide in from sides, scale centre) - DashboardPreview inline component (compact portal mockup) - Two floating stat mini-cards (Avg Tax Saved, Response Time) - Mobile: stacked layout, right headline column hidden, H1 in left column - ContainerScroll: simplified — removed 72rem scroll container and scroll transforms; now plain layout wrapper with CSS fadeInUp entrance - Header: logo size increased h-10 → h-13 (40px → 52px) - fix: escape apostrophes in ProcessSection, SolutionSection, TestimonialsSection - fix: remove unused customSize param from SpotlightCard - docs: update CONTEXT_HANDOVER.md with session 4 changes Co-Authored-By: Claude Sonnet 4.6 --- .claude/settings.local.json | 15 +- .env.example | 20 +- CONTEXT_HANDOVER.md | 249 + Concept.md | 41 +- Dockerfile | 4 +- docker-compose.yml | 3 +- implementation_plan.md | 212 +- next.config.ts | 3 +- package.json | 16 +- pnpm-lock.yaml | 4201 ++++++++++++++++- public/logo-axil.png | Bin 0 -> 57924 bytes public/logo-dark.jpg | Bin 0 -> 49625 bytes public/logo.jpg | Bin 0 -> 46797 bytes public/media/.gitkeep | 0 scripts/generate-importmap.mjs | 23 + .../admin/[[...segments]]/layout.tsx | 31 + .../(payload)/admin/[[...segments]]/page.tsx | 17 + src/app/(payload)/admin/importMap.js | 51 + src/app/(payload)/api/[...slug]/route.ts | 16 + src/app/globals.css | 258 +- src/app/layout.tsx | 31 +- src/app/page.tsx | 86 +- src/components/layout/Header.tsx | 276 ++ .../providers/SmoothScrollProvider.tsx | 28 + .../sections/home/AudienceSection.tsx | 100 + .../sections/home/BlogPreviewSection.tsx | 102 + .../sections/home/FinalCTASection.tsx | 67 + src/components/sections/home/HeroSection.tsx | 270 +- .../sections/home/HowItWorksSection.tsx | 68 + .../sections/home/PainPointsSection.tsx | 83 + .../sections/home/ProcessSection.tsx | 97 + .../sections/home/ServicesSection.tsx | 129 + .../sections/home/SolutionSection.tsx | 81 + .../sections/home/TestimonialsSection.tsx | 115 + .../sections/home/WhyAxilSection.tsx | 89 + src/components/ui/Button.tsx | 84 + src/components/ui/ContainerScroll.tsx | 23 + src/components/ui/Divider.tsx | 11 + src/components/ui/FadeIn.tsx | 40 + src/components/ui/GlassCard.tsx | 21 + src/components/ui/Heading.tsx | 16 + src/components/ui/InteractiveMenu.tsx | 79 + src/components/ui/Section.tsx | 13 + src/components/ui/Spinner.tsx | 30 + src/components/ui/SpotlightCard.tsx | 127 + src/components/ui/StarRating.tsx | 22 + src/components/ui/StatCounter.tsx | 40 + src/components/ui/Tag.tsx | 21 + src/components/ui/icons/ArrowRightIcon.tsx | 24 + src/components/ui/icons/BookkeepingIcon.tsx | 32 + src/components/ui/icons/CheckCircleIcon.tsx | 25 + src/components/ui/icons/ChevronDownIcon.tsx | 24 + src/components/ui/icons/CloudIcon.tsx | 25 + src/components/ui/icons/MenuIcon.tsx | 26 + src/components/ui/icons/PayrollIcon.tsx | 33 + src/components/ui/icons/PersonCircleIcon.tsx | 20 + src/components/ui/icons/ReceiptIcon.tsx | 21 + src/components/ui/icons/ShieldCheckIcon.tsx | 26 + src/components/ui/icons/TaxIcon.tsx | 30 + src/components/ui/icons/VATIcon.tsx | 31 + src/components/ui/icons/XIcon.tsx | 25 + src/components/ui/icons/index.ts | 14 + src/lib/gsap.ts | 8 + src/lib/utils.ts | 3 + src/payload.config.ts | 72 + src/payload/collections/Categories.ts | 31 + src/payload/collections/FAQs.ts | 22 + src/payload/collections/Media.ts | 32 + src/payload/collections/Posts.ts | 100 + src/payload/collections/Services.ts | 127 + src/payload/collections/TeamMembers.ts | 29 + src/payload/collections/Testimonials.ts | 51 + src/payload/collections/Users.ts | 26 + src/payload/globals/Footer.ts | 54 + src/payload/globals/Navigation.ts | 28 + src/payload/globals/SiteSettings.ts | 123 + tsconfig.json | 5 +- 77 files changed, 7826 insertions(+), 550 deletions(-) create mode 100644 CONTEXT_HANDOVER.md create mode 100644 public/logo-axil.png create mode 100644 public/logo-dark.jpg create mode 100644 public/logo.jpg create mode 100644 public/media/.gitkeep create mode 100644 scripts/generate-importmap.mjs create mode 100644 src/app/(payload)/admin/[[...segments]]/layout.tsx create mode 100644 src/app/(payload)/admin/[[...segments]]/page.tsx create mode 100644 src/app/(payload)/admin/importMap.js create mode 100644 src/app/(payload)/api/[...slug]/route.ts create mode 100644 src/components/layout/Header.tsx create mode 100644 src/components/providers/SmoothScrollProvider.tsx create mode 100644 src/components/sections/home/AudienceSection.tsx create mode 100644 src/components/sections/home/BlogPreviewSection.tsx create mode 100644 src/components/sections/home/FinalCTASection.tsx create mode 100644 src/components/sections/home/HowItWorksSection.tsx create mode 100644 src/components/sections/home/PainPointsSection.tsx create mode 100644 src/components/sections/home/ProcessSection.tsx create mode 100644 src/components/sections/home/ServicesSection.tsx create mode 100644 src/components/sections/home/SolutionSection.tsx create mode 100644 src/components/sections/home/TestimonialsSection.tsx create mode 100644 src/components/sections/home/WhyAxilSection.tsx create mode 100644 src/components/ui/Button.tsx create mode 100644 src/components/ui/ContainerScroll.tsx create mode 100644 src/components/ui/Divider.tsx create mode 100644 src/components/ui/FadeIn.tsx create mode 100644 src/components/ui/GlassCard.tsx create mode 100644 src/components/ui/Heading.tsx create mode 100644 src/components/ui/InteractiveMenu.tsx create mode 100644 src/components/ui/Section.tsx create mode 100644 src/components/ui/Spinner.tsx create mode 100644 src/components/ui/SpotlightCard.tsx create mode 100644 src/components/ui/StarRating.tsx create mode 100644 src/components/ui/StatCounter.tsx create mode 100644 src/components/ui/Tag.tsx create mode 100644 src/components/ui/icons/ArrowRightIcon.tsx create mode 100644 src/components/ui/icons/BookkeepingIcon.tsx create mode 100644 src/components/ui/icons/CheckCircleIcon.tsx create mode 100644 src/components/ui/icons/ChevronDownIcon.tsx create mode 100644 src/components/ui/icons/CloudIcon.tsx create mode 100644 src/components/ui/icons/MenuIcon.tsx create mode 100644 src/components/ui/icons/PayrollIcon.tsx create mode 100644 src/components/ui/icons/PersonCircleIcon.tsx create mode 100644 src/components/ui/icons/ReceiptIcon.tsx create mode 100644 src/components/ui/icons/ShieldCheckIcon.tsx create mode 100644 src/components/ui/icons/TaxIcon.tsx create mode 100644 src/components/ui/icons/VATIcon.tsx create mode 100644 src/components/ui/icons/XIcon.tsx create mode 100644 src/components/ui/icons/index.ts create mode 100644 src/lib/gsap.ts create mode 100644 src/lib/utils.ts create mode 100644 src/payload.config.ts create mode 100644 src/payload/collections/Categories.ts create mode 100644 src/payload/collections/FAQs.ts create mode 100644 src/payload/collections/Media.ts create mode 100644 src/payload/collections/Posts.ts create mode 100644 src/payload/collections/Services.ts create mode 100644 src/payload/collections/TeamMembers.ts create mode 100644 src/payload/collections/Testimonials.ts create mode 100644 src/payload/collections/Users.ts create mode 100644 src/payload/globals/Footer.ts create mode 100644 src/payload/globals/Navigation.ts create mode 100644 src/payload/globals/SiteSettings.ts diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 5cefbff..a8ccf0f 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -17,7 +17,20 @@ "Bash(for dir in src/components/ui src/components/layout src/components/sections src/components/three src/components/cms src/lib src/hooks src/types src/payload)", "Bash(do touch \"$dir/.gitkeep\")", "Bash(done)", - "Bash(git add:*)" + "Bash(git add:*)", + "Bash(git commit:*)", + "Bash(git push:*)", + "Bash(git checkout:*)", + "Bash(source:*)", + "Bash(npm install:*)", + "Bash(/Users/aimpress/.nvm/versions/node/v25.4.0/bin/pnpm:*)", + "Bash(/Users/aimpress/.nvm/versions/node/v25.4.0/bin/npm show next versions --json)", + "Bash(node -e:*)", + "Bash(\"/Volumes/SSD/Projects/Clients/Axil Accountants/docker-compose.yml\":*)", + "Bash(\"/Volumes/SSD/Projects/Clients/Axil Accountants/eslint.config.mjs\":*)", + "Bash(node_modules/.bin/eslint:*)", + "Bash(node --input-type=module:*)", + "Bash(python3:*)" ] } } diff --git a/.env.example b/.env.example index bf7cb69..9fe3826 100644 --- a/.env.example +++ b/.env.example @@ -1,21 +1,17 @@ -# Database (Neon PostgreSQL) -DATABASE_URI=postgresql://user:password@localhost:5432/axil +# Database (Docker PostgreSQL) +DATABASE_URI=postgresql://axil:axil_dev@db:5432/axil # Payload CMS PAYLOAD_SECRET=your-payload-secret-min-32-chars-here -# Email (Resend) -RESEND_API_KEY=re_xxxxxxxxxxxxxxxxxxxxxxxxxxxx - # Site NEXT_PUBLIC_SITE_URL=http://localhost:3000 -# Media Storage (Uploadthing) -UPLOADTHING_SECRET=sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx -UPLOADTHING_APP_ID=your-app-id +# Email (Resend) — настраивается позже (Feature 19) +# RESEND_API_KEY=re_xxxxxxxxxxxxxxxxxxxxxxxxxxxx -# AI Chat Bot (optional) -OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxx +# AI Chat Bot (optional — Feature 25) +# OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxx -# Error Monitoring -SENTRY_DSN=https://xxxx@sentry.io/xxxx +# Error Monitoring (Feature 32) +# SENTRY_DSN=https://xxxx@sentry.io/xxxx diff --git a/CONTEXT_HANDOVER.md b/CONTEXT_HANDOVER.md new file mode 100644 index 0000000..a9e9783 --- /dev/null +++ b/CONTEXT_HANDOVER.md @@ -0,0 +1,249 @@ +# Axil Accountants — Context Handover + +> Last updated: 22 February 2026 (session 4) | Branch: `develop` + +--- + +## 1. Current Project Status + +| Feature | Status | Notes | +| ------------------------------------- | ----------------- | ------------------------------------------------------ | +| Feature 1 — Project Setup | ✅ Done | Vercel removed — self-hosted on Ubuntu | +| Feature 2 — Database & Infrastructure | ✅ Done | Docker PostgreSQL 17; local disk media | +| Feature 3 — Payload CMS Core | ✅ Done | `/admin` → 200, importMap, layout fixed | +| Feature 4 — CMS Collections | ✅ Done | 8 collections + 3 globals + formBuilderPlugin | +| Feature 5 — Design System | ✅ Done | globals.css tokens, fonts, UI components, icons | +| Feature 6 — Animation Infrastructure | ✅ Done | Lenis + GSAP + FadeIn + StatCounter — **this session** | +| Feature 7 — Header | ✅ Structure done | Hardcoded data, CMS integration pending | +| Feature 8 — Footer | ✅ Structure done | Hardcoded data, CMS integration pending | +| Features 10–18 — Home Page Sections | ✅ Structure done | All 10 sections built + animated, hardcoded data | +| Features 9, 19–35 | ⬜ Not started | | + +**Working principle: One prompt = One feature. Don't move to step B until step A works perfectly.** + +**Homepage:** `http://localhost:3000` → **200 ✅** — all sections working with animations + +--- + +## 2. Feature 6 — Animation Infrastructure — DONE ✅ (this session) + +### Packages installed (in Docker + package.json) + +| Package | Version | Role | +| ------------- | ------- | -------------------------- | +| `gsap` | 3.14.2 | Animations + ScrollTrigger | +| `@gsap/react` | 2.1.2 | React integration | +| `lenis` | 1.3.17 | Smooth scroll | + +> **Note on install:** Packages installed via `docker exec ... pnpm add`. pnpm-lock.yaml had EBUSY error (dev server running) but packages ARE installed in container node_modules. package.json manually updated. On next Docker rebuild they will be installed fresh from package.json. + +### New files created + +``` +src/lib/gsap.ts ← GSAP + ScrollTrigger registration +src/components/providers/SmoothScrollProvider.tsx ← Lenis + GSAP ticker integration +src/components/ui/FadeIn.tsx ← GSAP ScrollTrigger fade-in wrapper +src/components/ui/StatCounter.tsx ← GSAP counter animation (WhyAxil stats) +src/components/ui/icons/ShieldCheckIcon.tsx ← New SVG icon +src/components/ui/icons/ReceiptIcon.tsx ← New SVG icon +src/components/ui/icons/PersonCircleIcon.tsx ← New SVG icon +src/components/ui/icons/CloudIcon.tsx ← New SVG icon +src/hooks/ ← Directory created (empty, for future hooks) +src/components/providers/ ← Directory created +``` + +### Modified files + +- `src/app/layout.tsx` — wrapped body with `` +- `src/app/globals.css` — added `fadeInUp` keyframe, stagger animation tokens (`--animate-fade-in-up` through `d5`), `.dot-grid` class, `.gradient-text` class +- `src/components/ui/icons/index.ts` — added 4 new icon exports + +### How animations work + +- **Smooth scroll**: Lenis initialises in `SmoothScrollProvider`, syncs with GSAP ticker so ScrollTrigger works correctly +- **FadeIn**: Client component, wraps children in a div, uses GSAP `set(opacity:0)` + ScrollTrigger `onEnter` to animate in. Accepts `delay`, `y`, `x` props. +- **StatCounter**: Client component, drops into server components as a small island. Uses GSAP tween + ScrollTrigger. +- **HeroSection**: CSS animations only (`animate-fade-in-up` Tailwind classes with stagger tokens). Keeps section as server component. + +--- + +## 3. Home Page — Design Overhaul (session 3) + Hero Redesign (session 4) + +All 10 home page sections were redesigned in session 3. Session 4 redesigned the Hero. + +| Section | Key Changes | +| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **HeroSection** | **Session 4:** MinimalistHero 3-col layout — left copy/CTA, center concentric circles + dashboard card + floating stat bubbles, right large display headline "Smart / Accounting". `'use client'` + framer-motion entrance animations. Dashboard scrolls naturally (no pinned scroll). See §3a below. | +| **PainPointsSection** | Charcoal bg (was emerald-deeper), 73% as editorial element (no box), numbered grid cards | +| **SolutionSection** | Numbered features card (no emojis), gradient text on "better way", slide-in from both sides | +| **ServicesSection** | Custom cards (no GlassCard): coloured top bar + icon in tinted container | +| **WhyAxilSection** | `'use client'`, StatCounter for numbers, SVG icons replace emojis, FadeIn stagger | +| **TestimonialsSection** | Unchanged (CSS marquee already good) | +| **AudienceSection** | Clean white cards, CheckCircleIcon for perks, featured card has coloured top bar | +| **HowItWorksSection** | Bordered grid layout, gradient step circles, CTA button inline with header | +| **BlogPreviewSection** | Cleaner cards, border-top on card footer | +| **FinalCTASection** | Charcoal bg (was emerald-deeper), dot grid texture, FadeIn | + +### §3a. HeroSection Architecture (session 4 rewrite) + +**Layout:** 3-column CSS grid `[1fr_1.05fr_1fr]` on desktop, stacked on mobile. + +| Column | Content | Animation | +| -------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------- | +| Left | Eyebrow badge, body copy, 2 CTA buttons, 4.9/5 rating | `x: -28 → 0`, delay 0.65s | +| Centre | 2 concentric emerald circles + `DashboardPreview` card + 2 floating stat mini-cards | `scale: 0.9 → 1`, delay 0.15s | +| Right (desktop only) | `h1` "Smart / Accounting" in Satoshi Bold (`clamp(3.2rem,4.6vw,6rem)`), gradient on "Accounting" | `x: 28 → 0`, delay 0.45s | + +**Mobile:** Right column hidden (`hidden lg:block`). Mobile H1 rendered inside left column. + +**`ContainerScroll.tsx`** — simplified in session 4. No longer uses framer-motion or scroll-based transforms. Now just a plain layout wrapper with CSS `animate-fade-in-up-d3` entrance. Kept as file but only used if needed. + +**Header logo** increased from `h-10` (40px) → `h-13` (52px) in static header. + +--- + +## 4. What's NEXT + +### Recommended sequence: + +**Option A — Booking Modal first (highest conversion value)** +→ Feature 19: BookingModal (Zustand/Context, Calendly iframe mode + custom form mode) +→ Wires into every CTA button on the site + +**Option B — Three.js Globe (visual wow)** +→ Feature 9: Replace CSS globe placeholder in HeroSection with R3F canvas +→ @react-three/fiber, @react-three/drei, three — not yet installed + +**Option C — Inner Pages (SEO value)** +→ Feature 20: `/services` + `/services/[slug]` (ISR from Payload) +→ Feature 22: `/blog` + `/blog/[slug]` (Lexical renderer) + +**Recommended order:** Option A → Option B → Option C + +--- + +## 5. Key Technical Decisions Made + +### Stack changes vs original Concept.md + +| Original | Decision | Reason | +| ------------------------- | ------------------------------------ | -------------------------------- | +| Neon PostgreSQL (cloud) | Docker PostgreSQL 17 | No external account needed | +| Uploadthing (cloud media) | Payload local disk (`/public/media`) | No external account | +| Resend (email) | Deferred to Feature 19 | Not needed until booking form | +| Next.js 16.1.6 | **Next.js 15.4.11** | Payload 3.77 peer dep | +| Docker Node 20 | **Docker Node 22** | undici@7 + tsx@4 incompatibility | +| Vercel hosting | **Ubuntu VPS + Docker** | Self-hosted, deploy via git pull | + +### Design decisions (session 3) + +- **PainPointsSection + FinalCTASection** backgrounds changed to `bg-charcoal` (not `bg-emerald-deeper`) — more premium, editorial feel +- **WhyAxilSection** converted to `'use client'` (needed for StatCounter) — rest of sections remain server components +- **GlassCard** no longer used in ServicesSection — replaced with custom card design +- **Emojis replaced** in WhyAxilSection USPs with SVG icons. Emojis kept in AudienceSection (decorative only, removed in redesign to use CheckCircle for perks) + +### Tailwind v4 note + +No `tailwind.config.ts` — all tokens in `@theme inline` in `globals.css`. New tokens added: `.dot-grid`, `.gradient-text` CSS classes in `@layer components`. + +### Code quality hook — known false positives + +The `code-quality.py` PostToolUse hook fires on **every component file**: + +- Flags array literal keys as "KISS: Function has N parameters" +- Flags sequential import lines as "DRY: Duplicate code block" + These are detection bugs. **Ignore all warnings. Files write/compile successfully.** + +--- + +## 6. Project File Map (current state) + +``` +src/ +├── app/ +│ ├── (payload)/admin/[[...segments]]/ ← Payload admin (layout.tsx + page.tsx) +│ ├── (payload)/api/[...slug]/route.ts ← Payload REST API +│ ├── globals.css ← ALL design tokens + animation keyframes +│ ├── layout.tsx ← Root: fonts + SmoothScrollProvider +│ └── page.tsx ← Home page (assembles all sections) +├── components/ +│ ├── layout/ +│ │ ├── Header.tsx ← Adaptive sticky nav (hardcoded data) +│ │ └── Footer.tsx ← Dark 4-col footer (hardcoded data) +│ ├── providers/ +│ │ └── SmoothScrollProvider.tsx ← Lenis + GSAP ticker +│ ├── sections/home/ +│ │ ├── HeroSection.tsx ← 'use client' + framer-motion. 3-col MinimalistHero layout +│ │ ├── PainPointsSection.tsx ← Charcoal bg, 73% editorial, FadeIn +│ │ ├── SolutionSection.tsx ← Numbered features, gradient text, FadeIn +│ │ ├── ServicesSection.tsx ← Custom cards w/ top bar, FadeIn stagger +│ │ ├── WhyAxilSection.tsx ← 'use client', StatCounter, SVG icons, FadeIn +│ │ ├── TestimonialsSection.tsx ← CSS marquee 2 rows +│ │ ├── AudienceSection.tsx ← White cards, featured top bar, FadeIn +│ │ ├── HowItWorksSection.tsx ← Bordered grid, gradient circles, FadeIn +│ │ ├── BlogPreviewSection.tsx ← Clean cards, FadeIn stagger +│ │ └── FinalCTASection.tsx ← Charcoal bg, dot grid, FadeIn +│ └── ui/ +│ ├── Button.tsx ← primary/secondary/ghost, sizes, arrow +│ ├── FadeIn.tsx ← GSAP ScrollTrigger fade wrapper ← NEW +│ ├── GlassCard.tsx ← light/dark glass card +│ ├── Heading.tsx ← h1-h4 polymorphic +│ ├── Tag.tsx ← green/blue/grey pill +│ ├── StarRating.tsx ← 1-5 stars +│ ├── StatCounter.tsx ← GSAP counter animation ← NEW +│ ├── Section.tsx ← layout wrapper +│ ├── Divider.tsx ← emerald gradient hr +│ ├── Spinner.tsx ← loading spinner +│ └── icons/ +│ ├── index.ts ← barrel exports (14 icons) +│ ├── [existing icons...] ← ArrowRight, CheckCircle, Star, Menu, X, +│ │ ChevronDown, Bookkeeping, Tax, Payroll, VAT +│ ├── ShieldCheckIcon.tsx ← NEW — qualifications +│ ├── ReceiptIcon.tsx ← NEW — fixed fee +│ ├── PersonCircleIcon.tsx ← NEW — account manager +│ └── CloudIcon.tsx ← NEW — cloud/digital +├── hooks/ ← Created, empty (future hooks here) +├── lib/ +│ └── gsap.ts ← GSAP + ScrollTrigger registration ← NEW +└── payload/ + ├── collections/ (8 files ✅) + └── globals/ (Navigation, Footer, SiteSettings ✅) +``` + +--- + +## 7. Docker / Dev Environment + +```bash +# Start everything +cd "/Volumes/SSD/Projects/Clients/Axil Accountants" +docker-compose up -d + +# Verify +curl -o /dev/null -w "%{http_code}" http://localhost:3000/ # → 200 + +# View logs +docker logs axilaccountants-app-1 --tail 30 -f + +# Reset DB (when schema changes) +docker exec axilaccountants-db-1 psql -U axil -d axil -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO axil;" +docker-compose restart app + +# Install new packages (while containers running) +docker exec axilaccountants-app-1 pnpm add +# Also update package.json manually on host +``` + +**Note:** Containers are already running. OrbStack must be open for Docker to work. + +--- + +## 8. Feature 4 — CMS Endpoints (for reference) + +| Endpoint | HTTP | +| ------------------------------------------------------------------------------ | ----------------------------- | +| `/admin` | 200 ✅ | +| `/api/media`, `/api/services`, `/api/categories`, `/api/posts` | 200 ✅ | +| `/api/team-members`, `/api/testimonials`, `/api/faqs`, `/api/forms` | 200 ✅ | +| `/api/globals/navigation`, `/api/globals/footer`, `/api/globals/site-settings` | 200 ✅ | +| `/api/form-submissions` | 403 ✅ (not public — correct) | diff --git a/Concept.md b/Concept.md index 0162c80..157abc9 100644 --- a/Concept.md +++ b/Concept.md @@ -24,27 +24,42 @@ ### Colour Palette -| Role | Colour | Hex | -| ------------- | --------------- | ------------------------ | -| Primary | Sage Green | `#6BAF7D` | -| Primary Light | Soft Mint | `#A8C5A0` | -| Background | Near-White | `#F4FAF5` | -| Accent / Dark | Deep Forest | `#2E7D52` | -| Text Dark | Charcoal | `#1A2E1F` | -| Text Muted | Slate Grey | `#6B7280` | -| White | Pure White | `#FFFFFF` | -| Overlay | Dark Green Tint | `rgba(30, 60, 40, 0.85)` | +Two brand colours extracted from the actual logo. + +| Role | Colour | Hex | +| --------------- | -------------- | ------------------------ | +| Primary | Emerald Green | `#3CC68A` | +| Primary Dark | Emerald Dark | `#27A870` | +| Primary Deeper | Emerald Deeper | `#1A8C5B` | +| Primary Light | Emerald Light | `#7DDCB0` | +| Primary Mist | Emerald Mist | `#E8F8F1` | +| Secondary | Sky Blue | `#1B9AD6` | +| Secondary Dark | Blue Dark | `#1480B8` | +| Secondary Light | Blue Light | `#6CC4E8` | +| Secondary Mist | Blue Mist | `#E8F5FC` | +| Text Dark | Charcoal | `#162520` | +| Text Muted | Slate Grey | `#6B7280` | +| Background | Off-White | `#F5FEFA` | +| White | Pure White | `#FFFFFF` | +| Overlay | Dark Tint | `rgba(22, 37, 32, 0.90)` | + +**Colour Usage:** + +- **Emerald** → CTA buttons, borders, service icons, active states, progress elements +- **Blue** → Heading accents, trust badges (ICAEW/ACCA), stat counters, text links +- **Emerald → Blue gradient** → Hero accent, Final CTA section background ### Typography -- **Headlines:** `Satoshi` or `Cabinet Grotesk` — geometric, modern, confident +- **Headlines:** `Satoshi` — geometric, modern, confident (via Fontshare CDN) - **Body:** `Inter` — clean, readable, professional - **Accent / Numbers:** `DM Mono` — for stats, figures, financial data ### Design Language -- Light, airy, predominantly white/near-white backgrounds -- Sage green as accent — not dominant, used for highlights, borders, CTAs +- Light, airy, predominantly white/off-white backgrounds +- Emerald green as primary accent — CTAs, borders, interactive elements +- Sky blue as secondary accent — trust, headings, data - Generous whitespace — premium feel - Subtle grain texture overlays on hero sections - Glassmorphism cards (frosted glass with green tint) for service blocks diff --git a/Dockerfile b/Dockerfile index 974ee58..de4abdb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20-slim AS base +FROM node:22-slim AS base ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable && corepack prepare pnpm@latest --activate @@ -26,7 +26,7 @@ ENV NEXT_TELEMETRY_DISABLED=1 RUN pnpm build # --- Production --- -FROM node:20-slim AS runner +FROM node:22-slim AS runner WORKDIR /app ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 diff --git a/docker-compose.yml b/docker-compose.yml index d0abcde..343350f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,9 +9,10 @@ services: - ./src:/app/src - ./public:/app/public - ./next.config.ts:/app/next.config.ts - - ./tailwind.config.ts:/app/tailwind.config.ts - ./tsconfig.json:/app/tsconfig.json - ./postcss.config.mjs:/app/postcss.config.mjs + - ./package.json:/app/package.json + - ./pnpm-lock.yaml:/app/pnpm-lock.yaml environment: - NODE_ENV=development - WATCHPACK_POLLING=true diff --git a/implementation_plan.md b/implementation_plan.md index d3aa197..4dd83d0 100644 --- a/implementation_plan.md +++ b/implementation_plan.md @@ -27,63 +27,56 @@ - [x] Create `src/` directory structure (app, components/ui/layout/sections/three/cms, lib, hooks, types, payload) - [x] Initialise Git repository, create `main` and `develop` branches - [x] **Docker**: multi-stage Dockerfile (dev/build/production) + docker-compose.yml (app + PostgreSQL 17) -- [ ] Create **Vercel** project, connect to Git repository -- [ ] Configure Vercel environment variables (production + preview) +- [x] ~~Create **Vercel** project~~ — **N/A: self-hosted on Ubuntu** +- [x] ~~Configure Vercel environment variables~~ — **N/A: `.env.local` on server** --- -## Feature 2 — Database & Cloud Infrastructure +## Feature 2 — Database & Infrastructure -- [ ] Create **Neon PostgreSQL** project (serverless, auto-scaling) -- [ ] Copy connection string to `DATABASE_URI` environment variable -- [ ] Verify database connectivity from local environment -- [ ] Set up **Uploadthing** account for media storage - - Create app, get `UPLOADTHING_SECRET` and `UPLOADTHING_APP_ID` - - Configure allowed file types: images (jpg, png, webp, svg), documents (pdf) -- [ ] Set up **Resend** account for transactional emails - - Create API key, add to `RESEND_API_KEY` - - Verify sending domain +- [x] **Docker PostgreSQL 17** — сервис `db` в `docker-compose.yml` (user: axil, db: axil) +- [x] `DATABASE_URI` прописан в `.env.local` → `postgresql://axil:axil_dev@db:5432/axil` +- [x] Verify database connectivity — healthcheck в docker-compose (`pg_isready`) +- [ ] **Media storage** — Payload local disk storage (`/public/media`) — без внешних сервисов +- [ ] **Email (Resend)** — настроить позже (Feature 19, когда нужны реальные письма) --- -## Feature 3 — Payload CMS — Core Installation +## Feature 3 — Payload CMS — Core Installation ✅ -- [ ] Install Payload CMS 3 into the Next.js project (`npx create-payload-app` or manual) -- [ ] Configure `payload.config.ts`: - - `serverURL` from `NEXT_PUBLIC_SITE_URL` - - `secret` from `PAYLOAD_SECRET` - - `db`: PostgreSQL adapter pointing to `DATABASE_URI` - - `editor`: Lexical rich text editor - - `admin` panel configuration -- [ ] Mount Payload API handler at `src/app/(payload)/api/[...slug]/route.ts` -- [ ] Mount admin panel at `src/app/(payload)/admin/[[...segments]]/page.tsx` -- [ ] Configure **Uploadthing storage adapter** for Payload media -- [ ] Configure **Resend email adapter** for Payload email notifications -- [ ] Create initial admin superuser (seed script or first-run prompt) -- [ ] Verify admin panel loads at `/admin` -- [ ] Install **Payload Form Builder plugin** (`@payloadcms/plugin-form-builder`) +- [x] Install Payload CMS 3 into the Next.js project +- [x] Configure `payload.config.ts` (serverURL, secret, db, editor, admin) +- [x] Mount Payload API handler at `src/app/(payload)/api/[...slug]/route.ts` +- [x] Mount admin panel at `src/app/(payload)/admin/[[...segments]]/page.tsx` +- [x] Add `layout.tsx` with `RootLayout` from `@payloadcms/next/layouts` (provides ConfigProvider) +- [x] Configure **local disk storage** for Payload media (`/public/media`) +- [x] Email adapter — deferred (Feature 19, Resend) +- [x] Verify admin panel loads at `/admin` — **confirmed ✅** +- [x] Install **Payload Form Builder plugin** (`@payloadcms/plugin-form-builder`) — installed, re-enabled in Feature 4 +- [x] Downgrade Next.js 16.1.6 → 15.4.11 (peer dep compatibility with Payload 3.77) +- [x] Upgrade Docker Node.js 20 → 22 (undici/tsx compatibility) --- -## Feature 4 — CMS Collections Schema +## Feature 4 — CMS Collections Schema ✅ Define all Payload collections and globals. Each collection = one content type the client manages. ### 4.1 — Media Collection -- [ ] `Media` collection with Uploadthing adapter +- [x] `Media` collection с локальным хранилищем (`/public/media`) - Fields: `alt` (text, required), `caption` (text, optional) - Image sizes: `thumbnail` (400×300), `card` (800×600), `hero` (1920×1080) ### 4.2 — Users Collection -- [ ] `Users` collection (extends Payload default) +- [x] `Users` collection (extends Payload default) - Fields: `name`, `email`, `role` (select: admin | editor) - Role-based access control: editors can manage content, not settings ### 4.3 — Services Collection -- [ ] `Services` collection +- [x] `Services` collection - `title` (text, required) - `slug` (slug, auto from title, unique) - `icon` (select: bookkeeping | tax | payroll | vat) @@ -99,7 +92,7 @@ Define all Payload collections and globals. Each collection = one content type t ### 4.4 — Blog Posts Collection -- [ ] `Posts` collection +- [x] `Posts` collection - `title` (text, required) - `slug` (slug, unique) - `author` (relationship → Users) @@ -115,14 +108,14 @@ Define all Payload collections and globals. Each collection = one content type t ### 4.5 — Categories Collection -- [ ] `Categories` collection +- [x] `Categories` collection - `name` (text, required) - `slug` (slug) - `colour` (text — hex, for tag colour) ### 4.6 — Team Members Collection -- [ ] `TeamMembers` collection +- [x] `TeamMembers` collection - `name` (text, required) - `role` (text) - `qualifications` (text — e.g. "ACCA, MAAT") @@ -133,7 +126,7 @@ Define all Payload collections and globals. Each collection = one content type t ### 4.7 — Testimonials Collection -- [ ] `Testimonials` collection +- [x] `Testimonials` collection - `clientName` (text, required) - `businessName` (text) - `businessType` (select: sole-trader | limited-company | startup | other) @@ -147,7 +140,7 @@ Define all Payload collections and globals. Each collection = one content type t ### 4.8 — FAQs Collection -- [ ] `FAQs` collection (global FAQ bank) +- [x] `FAQs` collection (global FAQ bank) - `question` (text, required) - `answer` (rich text) - `service` (relationship → Services, optional) @@ -156,10 +149,10 @@ Define all Payload collections and globals. Each collection = one content type t ### 4.9 — Form Builder (Payload Plugin Collections) -- [ ] Enable `@payloadcms/plugin-form-builder` — provides: +- [x] Enable `@payloadcms/plugin-form-builder` — provides: - `Forms` collection (drag-and-drop field builder in admin) - `FormSubmissions` collection (stores all submissions) -- [ ] Configure supported field types: `text`, `email`, `phone`, `select`, `checkbox`, `textarea` +- [x] Configure supported field types: `text`, `email`, `phone`, `select`, `checkbox`, `textarea` - [ ] Configure submission handlers: - Email notification (to: configurable per form) - Webhook trigger (URL: from webhook registry in Site Settings) @@ -167,7 +160,7 @@ Define all Payload collections and globals. Each collection = one content type t ### 4.10 — Navigation Global -- [ ] `Navigation` global +- [x] `Navigation` global - `items` (array): - `label` (text) - `href` (text, optional — for simple links) @@ -176,7 +169,7 @@ Define all Payload collections and globals. Each collection = one content type t ### 4.11 — Footer Global -- [ ] `Footer` global +- [x] `Footer` global - `columns` (array of 4): - `heading` (text) - `links` (array: `{ label, href }`) @@ -187,7 +180,7 @@ Define all Payload collections and globals. Each collection = one content type t ### 4.12 — Site Settings Global -- [ ] `SiteSettings` global +- [x] `SiteSettings` global - **Brand**: `siteName`, `tagline`, `logo → Media`, `logoDark → Media`, `favicon → Media` - **Contact**: `address`, `phone`, `email`, `officeHours` - **Social**: `linkedIn`, `facebook`, `instagram` @@ -201,46 +194,57 @@ Define all Payload collections and globals. Each collection = one content type t --- -## Feature 5 — Design System & Base UI Components +## Feature 5 — Design System & Base UI Components ✅ -- [ ] Configure Tailwind CSS with custom design tokens: +- [x] Configure Tailwind CSS with custom design tokens: ```js - // tailwind.config.ts + // globals.css (@theme inline) colors: { - sage: { DEFAULT: '#6BAF7D', light: '#A8C5A0' }, - forest: { DEFAULT: '#2E7D52', dark: '#1A2E1F' }, - mint: '#F4FAF5', - charcoal: '#1A2E1F', - muted: '#6B7280', + emerald: { + DEFAULT: '#3CC68A', // primary — CTA кнопки, иконки, border + dark: '#27A870', // hover / active + deeper: '#1A8C5B', // тёмные секции + light: '#7DDCB0', // tints + mist: '#E8F8F1', // светлые фоны секций + }, + blue: { + DEFAULT: '#1B9AD6', // secondary — заголовки, trust, links + dark: '#1480B8', // hover + light: '#6CC4E8', // tints + mist: '#E8F5FC', // светлые фоны + }, + charcoal: '#162520', // основной текст + muted: '#6B7280', // второстепенный текст + bg: '#F5FEFA', // фоновый off-white } borderRadius: { card: '16px', hero: '24px', pill: '999px' } fontFamily: { - sans: ['Inter', 'sans-serif'], + sans: ['Inter', 'sans-serif'], display: ['Satoshi', 'sans-serif'], - mono: ['DM Mono', 'monospace'], + mono: ['DM Mono', 'monospace'], } ``` -- [ ] Set up fonts: - - `Satoshi` (variable font) — self-hosted via `@font-face` or Fontshare CDN - - `Inter` — Google Fonts / `next/font` - - `DM Mono` — Google Fonts / `next/font` -- [ ] Create CSS variables in `globals.css` for all design tokens (enables runtime theming) -- [ ] **Button** component (`src/components/ui/Button.tsx`): +- [x] Set up fonts: + - `Satoshi` (variable font) — Fontshare CDN (`` in layout.tsx, CSS var reference in @theme) + - `Inter` — `next/font/google` → `--font-inter` → `--font-sans` + - `DM Mono` — `next/font/google` → `--font-dm-mono` → `--font-mono` +- [x] Create CSS variables in `globals.css` for all design tokens (enables runtime theming) +- [x] **Button** component (`src/components/ui/Button.tsx`): - Variants: `primary` (green fill), `secondary` (outline), `ghost` (text only) - Sizes: `sm`, `md`, `lg` - States: hover (scale + colour shift), focus (ring), loading (spinner), disabled - Optional: trailing arrow icon, leading icon -- [ ] **Icon system** (`src/components/ui/icons/`): +- [x] **Icon system** (`src/components/ui/icons/`): - Custom SVG line icons for each service (Bookkeeping, Tax, Payroll, VAT) - Shared icons: ArrowRight, CheckCircle, Star, Menu, X, ChevronDown - All exported as React components with `size` and `color` props -- [ ] **Heading** component — `h1`–`h4` with correct size + weight from design system -- [ ] **Tag/Badge** component — pill with colour variant (green, grey) -- [ ] **StarRating** component — 1–5 filled star SVGs -- [ ] **GlassCard** component — frosted glass base with sage green border, hover glow -- [ ] **Section** layout wrapper — `max-w-[1440px]`, horizontal padding, `py` spacing -- [ ] **Divider** component — subtle sage green horizontal rule -- [ ] **Spinner** component — loading state for forms and async content +- [x] **Heading** component — `h1`–`h4` with correct size + weight from design system +- [x] **Tag/Badge** component — pill with colour variant (green, grey, blue) +- [x] **StarRating** component — 1–5 filled star SVGs +- [x] **GlassCard** component — frosted glass base with emerald border, hover glow (light + dark variants) +- [x] **Section** layout wrapper — `max-w-[1440px]`, horizontal padding +- [x] **Divider** component — subtle emerald gradient horizontal rule +- [x] **Spinner** component — loading state for forms and async content --- @@ -782,21 +786,71 @@ Allows any Payload-built form to be rendered on the frontend. --- -## Feature 33 — Deployment & CI/CD +## Feature 33 — Deployment (Ubuntu VPS + Docker) -- [ ] Configure Vercel project settings: - - Build command: `pnpm build` - - Output directory: `.next` - - Node.js version: 20.x -- [ ] Add all production environment variables to Vercel dashboard -- [ ] Configure **preview deployments**: auto-deploy on every PR to `develop` -- [ ] Configure **production deployment**: auto-deploy on merge to `main` -- [ ] Set up custom domain (e.g. `axilaccountants.co.uk`) in Vercel -- [ ] Verify SSL/HTTPS certificate -- [ ] Configure `www` → apex redirect (or vice versa) -- [ ] Run production build locally (`pnpm build && pnpm start`) — verify no build errors +Stack: Ubuntu server · Docker + Docker Compose · Nginx reverse proxy · Let's Encrypt SSL + +### 33.1 — Server preparation + +- [ ] Install Docker + Docker Compose on Ubuntu: + ```bash + curl -fsSL https://get.docker.com | sh + sudo usermod -aG docker $USER + ``` +- [ ] Install Nginx + Certbot: + ```bash + sudo apt install nginx certbot python3-certbot-nginx -y + ``` +- [ ] Clone repository on server: + ```bash + git clone git@github.com:YOUR_ORG/axil-accountants.git /opt/axil + cd /opt/axil && git checkout main + ``` +- [ ] Create production `.env.local` on server (manually — never commit): + - `DATABASE_URI=postgresql://axil:STRONG_PASS@db:5432/axil` + - `PAYLOAD_SECRET=STRONG_SECRET_32_CHARS` + - `NEXT_PUBLIC_SITE_URL=https://axilaccountants.co.uk` + +### 33.2 — Docker Compose production override + +- [ ] Create `docker-compose.prod.yml` (production overrides): + - App: `NODE_ENV=production`, `restart: always`, no port 3000 exposed externally (only via Nginx) + - DB: named volume for persistence, `restart: always` + - Remove dev-only volume mounts + +### 33.3 — Nginx reverse proxy + +- [ ] Create `/etc/nginx/sites-available/axil` config: + - `server_name axilaccountants.co.uk www.axilaccountants.co.uk` + - `proxy_pass http://127.0.0.1:3000` + - Gzip, proxy headers, timeouts +- [ ] Enable site: `sudo ln -s /etc/nginx/sites-available/axil /etc/nginx/sites-enabled/` +- [ ] Obtain SSL certificate: `sudo certbot --nginx -d axilaccountants.co.uk -d www.axilaccountants.co.uk` +- [ ] Verify auto-renewal: `sudo certbot renew --dry-run` +- [ ] Configure `www` → apex redirect in Nginx (301) + +### 33.4 — Deploy script + +- [ ] Create `scripts/deploy.sh` at repo root: + ```bash + #!/bin/bash + set -e + cd /opt/axil + git pull origin main + docker compose -f docker-compose.yml -f docker-compose.prod.yml build app + docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --no-deps app + docker image prune -f + echo "Deploy complete: $(date)" + ``` +- [ ] Make executable: `chmod +x scripts/deploy.sh` +- [ ] Test deploy: `./scripts/deploy.sh` — verify site responds after restart + +### 33.5 — Verification + +- [ ] Run production build locally first: `docker compose build && docker compose up` — no errors +- [ ] Verify HTTPS works: `curl -I https://axilaccountants.co.uk` - [ ] Run Lighthouse on production URL — confirm scores meet targets -- [ ] Set up Vercel Speed Insights (optional) +- [ ] Verify DB volume survives container restart (data not lost) --- @@ -830,7 +884,7 @@ Allows any Payload-built form to be rendered on the frontend. - How to update integration settings (GA, GTM, Calendly URL) - [ ] **Handover checklist**: - [ ] Client has admin login credentials - - [ ] Client has Vercel access (viewer role) + - [ ] Client has SSH access to server (or handover to sysadmin) - [ ] Client has Resend account access (for email settings) - [ ] DNS properly pointing to Vercel - [ ] Google Analytics connected and receiving data diff --git a/next.config.ts b/next.config.ts index 94647ad..18804e8 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,8 @@ import type { NextConfig } from 'next'; +import { withPayload } from '@payloadcms/next/withPayload'; const nextConfig: NextConfig = { output: 'standalone', }; -export default nextConfig; +export default withPayload(nextConfig); diff --git a/package.json b/package.json index dfb838f..454f557 100644 --- a/package.json +++ b/package.json @@ -11,17 +11,29 @@ "prepare": "husky" }, "dependencies": { - "next": "16.1.6", + "@gsap/react": "^2.1.2", + "@payloadcms/db-postgres": "^3.77.0", + "@payloadcms/next": "^3.77.0", + "@payloadcms/plugin-form-builder": "^3.77.0", + "@payloadcms/richtext-lexical": "^3.77.0", + "framer-motion": "^12.4.10", + "gsap": "^3.14.2", + "lenis": "^1.3.17", + "lucide-react": "^0.475.0", + "next": "15.4.11", + "payload": "^3.77.0", "react": "19.2.3", "react-dom": "19.2.3" }, "devDependencies": { + "@swc-node/register": "^1.11.1", + "@swc/core": "^1.15.11", "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", "eslint": "^9", - "eslint-config-next": "16.1.6", + "eslint-config-next": "15.4.11", "husky": "^9.1.7", "lint-staged": "^16.2.7", "prettier": "^3.8.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed13f51..2134d75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,24 @@ importers: .: dependencies: + '@payloadcms/db-postgres': + specifier: ^3.77.0 + version: 3.77.0(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3)) + '@payloadcms/next': + specifier: ^3.77.0 + version: 3.77.0(@types/react@19.2.14)(graphql@16.12.0)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@payloadcms/plugin-form-builder': + specifier: ^3.77.0 + version: 3.77.0(@types/react@19.2.14)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@payloadcms/richtext-lexical': + specifier: ^3.77.0 + version: 3.77.0(@faceless-ui/modal@3.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@faceless-ui/scroll-info@2.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@payloadcms/next@3.77.0(@types/react@19.2.14)(graphql@16.12.0)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@types/react@19.2.14)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(yjs@13.6.29) next: - specifier: 16.1.6 - version: 16.1.6(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: 15.4.11 + version: 15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4) + payload: + specifier: ^3.77.0 + version: 3.77.0(graphql@16.12.0)(typescript@5.9.3) react: specifier: 19.2.3 version: 19.2.3 @@ -18,6 +33,12 @@ importers: specifier: 19.2.3 version: 19.2.3(react@19.2.3) devDependencies: + '@swc-node/register': + specifier: ^1.11.1 + version: 1.11.1(@swc/core@1.15.11)(@swc/types@0.1.25)(typescript@5.9.3) + '@swc/core': + specifier: ^1.15.11 + version: 1.15.11 '@tailwindcss/postcss': specifier: ^4 version: 4.2.0 @@ -34,8 +55,8 @@ importers: specifier: ^9 version: 9.39.3(jiti@2.6.1) eslint-config-next: - specifier: 16.1.6 - version: 16.1.6(@typescript-eslint/parser@8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) + specifier: 15.4.11 + version: 15.4.11(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) husky: specifier: ^9.1.7 version: 9.1.7 @@ -61,26 +82,18 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + '@apidevtools/json-schema-ref-parser@11.9.3': + resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} + engines: {node: '>= 16'} + '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.29.0': - resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.29.0': - resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.29.1': resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.28.6': - resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} - engines: {node: '>=6.9.0'} - '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} @@ -89,12 +102,6 @@ packages: resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.28.6': - resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -103,19 +110,15 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} - engines: {node: '>=6.9.0'} - '@babel/parser@7.29.0': resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.28.6': resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} @@ -128,6 +131,43 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} + '@borewit/text-codec@0.2.1': + resolution: {integrity: sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==} + + '@date-fns/tz@1.2.0': + resolution: {integrity: sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==} + + '@dnd-kit/accessibility@3.1.1': + resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} + peerDependencies: + react: '>=16.8.0' + + '@dnd-kit/core@6.3.1': + resolution: {integrity: sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@dnd-kit/modifiers@9.0.0': + resolution: {integrity: sha512-ybiLc66qRGuZoC20wdSSG6pDXFikui/dCNGthxv4Ndy8ylErY0N3KVxY2bgo7AWwIbxDmXDg3ylAFmnrjcbVvw==} + peerDependencies: + '@dnd-kit/core': ^6.3.0 + react: '>=16.8.0' + + '@dnd-kit/sortable@10.0.0': + resolution: {integrity: sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg==} + peerDependencies: + '@dnd-kit/core': ^6.3.0 + react: '>=16.8.0' + + '@dnd-kit/utilities@3.2.2': + resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} + peerDependencies: + react: '>=16.8.0' + + '@drizzle-team/brocli@0.10.2': + resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} + '@emnapi/core@1.8.1': resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} @@ -137,6 +177,499 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@esbuild-kit/core-utils@3.3.2': + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild-kit/esm-loader@2.6.5': + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -175,6 +708,45 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@faceless-ui/modal@3.0.0': + resolution: {integrity: sha512-o3oEFsot99EQ8RJc1kL3s/nNMHX+y+WMXVzSSmca9L0l2MR6ez2QM1z1yIelJX93jqkLXQ9tW+R9tmsYa+O4Qg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@faceless-ui/scroll-info@2.0.0': + resolution: {integrity: sha512-BkyJ9OQ4bzpKjE3UhI8BhcG36ZgfB4run8TmlaR4oMFUbl59dfyarNfjveyimrxIso9RhFEja/AJ5nQmbcR9hw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@faceless-ui/window-info@3.0.1': + resolution: {integrity: sha512-uPjdJYE/j7hqVNelE9CRUNOeXuXDdPxR4DMe+oz3xwyZi2Y4CxsfpfdPTqqwmNAZa1P33O+ZiCyIkBEeNed0kw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@floating-ui/core@1.7.4': + resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} + + '@floating-ui/dom@1.7.5': + resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} + + '@floating-ui/react-dom@2.1.7': + resolution: {integrity: sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.27.18': + resolution: {integrity: sha512-xJWJxvmy3a05j643gQt+pRbht5XnTlGpsEsAPnMi5F5YTOEEJymA90uZKBD8OvIv5XvZ1qi4GcccSlqT3Bq44Q==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -360,63 +932,156 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@lexical/clipboard@0.35.0': + resolution: {integrity: sha512-ko7xSIIiayvDiqjNDX6fgH9RlcM6r9vrrvJYTcfGVBor5httx16lhIi0QJZ4+RNPvGtTjyFv4bwRmsixRRwImg==} + + '@lexical/code@0.35.0': + resolution: {integrity: sha512-ox4DZwETQ9IA7+DS6PN8RJNwSAF7RMjL7YTVODIqFZ5tUFIf+5xoCHbz7Fll0Bvixlp12hVH90xnLwTLRGpkKw==} + + '@lexical/devtools-core@0.35.0': + resolution: {integrity: sha512-C2wwtsMCR6ZTfO0TqpSM17RLJWyfHmifAfCTjFtOJu15p3M6NO/nHYK5Mt7YMQteuS89mOjB4ng8iwoLEZ6QpQ==} + peerDependencies: + react: '>=17.x' + react-dom: '>=17.x' + + '@lexical/dragon@0.35.0': + resolution: {integrity: sha512-SL6mT5pcqrt6hEbJ16vWxip5+r3uvMd0bQV5UUxuk+cxIeuP86iTgRh0HFR7SM2dRTYovL6/tM/O+8QLAUGTIg==} + + '@lexical/hashtag@0.35.0': + resolution: {integrity: sha512-LYJWzXuO2ZjKsvQwrLkNZiS2TsjwYkKjlDgtugzejquTBQ/o/nfSn/MmVx6EkYLOYizaJemmZbz3IBh+u732FA==} + + '@lexical/headless@0.35.0': + resolution: {integrity: sha512-UPmCqOsdGGC7/8Fkae2ADkTQfxTZOKxNEVKuqPfCkFs4Bag3s4z3V61jE+wYzqyU8eJh4DqZYSHoPzZCj8P9jg==} + + '@lexical/history@0.35.0': + resolution: {integrity: sha512-onjDRLLxGbCfHexSxxrQaDaieIHyV28zCDrbxR5dxTfW8F8PxjuNyuaG0z6o468AXYECmclxkP+P4aT6poHEpQ==} + + '@lexical/html@0.35.0': + resolution: {integrity: sha512-rXGFE5S5rKsg3tVnr1s4iEgOfCApNXGpIFI3T2jGEShaCZ5HLaBY9NVBXnE9Nb49e9bkDkpZ8FZd1qokCbQXbw==} + + '@lexical/link@0.35.0': + resolution: {integrity: sha512-+0Wx6cBwO8TfdMzpkYFacsmgFh8X1rkiYbq3xoLvk3qV8upYxaMzK1s8Q1cpKmWyI0aZrU6z7fiK4vUqB7+69w==} + + '@lexical/list@0.35.0': + resolution: {integrity: sha512-owsmc8iwgExBX8sFe8fKTiwJVhYULt9hD1RZ/HwfaiEtRZZkINijqReOBnW2mJfRxBzhFSWc4NG3ISB+fHYzqw==} + + '@lexical/mark@0.35.0': + resolution: {integrity: sha512-W0hwMTAVeexvpk9/+J6n1G/sNkpI/Meq1yeDazahFLLAwXLHtvhIAq2P/klgFknDy1hr8X7rcsQuN/bqKcKHYg==} + + '@lexical/markdown@0.35.0': + resolution: {integrity: sha512-BlNyXZAt4gWidMw0SRWrhBETY1BpPglFBZI7yzfqukFqgXRh7HUQA28OYeI/nsx9pgNob8TiUduUwShqqvOdEA==} + + '@lexical/offset@0.35.0': + resolution: {integrity: sha512-DRE4Df6qYf2XiV6foh6KpGNmGAv2ANqt3oVXpyS6W8hTx3+cUuAA1APhCZmLNuU107um4zmHym7taCu6uXW5Yg==} + + '@lexical/overflow@0.35.0': + resolution: {integrity: sha512-B25YvnJQTGlZcrNv7b0PJBLWq3tl8sql497OHfYYLem7EOMPKKDGJScJAKM/91D4H/mMAsx5gnA/XgKobriuTg==} + + '@lexical/plain-text@0.35.0': + resolution: {integrity: sha512-lwBCUNMJf7Gujp2syVWMpKRahfbTv5Wq+H3HK1Q1gKH1P2IytPRxssCHvexw9iGwprSyghkKBlbF3fGpEdIJvQ==} + + '@lexical/react@0.35.0': + resolution: {integrity: sha512-uYAZSqumH8tRymMef+A0f2hQvMwplKK9DXamcefnk3vSNDHHqRWQXpiUo6kD+rKWuQmMbVa5RW4xRQebXEW+1A==} + peerDependencies: + react: '>=17.x' + react-dom: '>=17.x' + + '@lexical/rich-text@0.35.0': + resolution: {integrity: sha512-qEHu8g7vOEzz9GUz1VIUxZBndZRJPh9iJUFI+qTDHj+tQqnd5LCs+G9yz6jgNfiuWWpezTp0i1Vz/udNEuDPKQ==} + + '@lexical/selection@0.35.0': + resolution: {integrity: sha512-mMtDE7Q0nycXdFTTH/+ta6EBrBwxBB4Tg8QwsGntzQ1Cq//d838dpXpFjJOqHEeVHUqXpiuj+cBG8+bvz/rPRw==} + + '@lexical/table@0.35.0': + resolution: {integrity: sha512-9jlTlkVideBKwsEnEkqkdg7A3mije1SvmfiqoYnkl1kKJCLA5iH90ywx327PU0p+bdnURAytWUeZPXaEuEl2OA==} + + '@lexical/text@0.35.0': + resolution: {integrity: sha512-uaMh46BkysV8hK8wQwp5g/ByZW+2hPDt8ahAErxtf8NuzQem1FHG/f5RTchmFqqUDVHO3qLNTv4AehEGmXv8MA==} + + '@lexical/utils@0.35.0': + resolution: {integrity: sha512-2H393EYDnFznYCDFOW3MHiRzwEO5M/UBhtUjvTT+9kc+qhX4U3zc8ixQalo5UmZ5B2nh7L/inXdTFzvSRXtsRA==} + + '@lexical/yjs@0.35.0': + resolution: {integrity: sha512-3DSP7QpmTGYU9bN/yljP0PIao4tNIQtsR4ycauWNSawxs/GQCZtSmAPcLRnCm6qpqsDDjUtKjO/1Ej8FRp0m0w==} + peerDependencies: + yjs: '>=13.5.22' + + '@monaco-editor/loader@1.7.0': + resolution: {integrity: sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==} + + '@monaco-editor/react@4.7.0': + resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} + peerDependencies: + monaco-editor: '>= 0.25.0 < 1' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@next/env@16.1.6': - resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} - '@next/eslint-plugin-next@16.1.6': - resolution: {integrity: sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ==} + '@next/env@15.4.11': + resolution: {integrity: sha512-mIYp/091eYfPFezKX7ZPTWqrmSXq+ih6+LcUyKvLmeLQGhlPtot33kuEOd4U+xAA7sFfj21+OtCpIZx0g5SpvQ==} - '@next/swc-darwin-arm64@16.1.6': - resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==} + '@next/env@15.5.12': + resolution: {integrity: sha512-pUvdJN1on574wQHjaBfNGDt9Mz5utDSZFsIIQkMzPgNS8ZvT4H2mwOrOIClwsQOb6EGx5M76/CZr6G8i6pSpLg==} + + '@next/eslint-plugin-next@15.4.11': + resolution: {integrity: sha512-WSY6ZwahlbR3JLfXrBezo2H4OmCeF2aFpguZuTkGV/n7+C10wYP17gxsCXbKVI6TpWmHZysp/AhwovUObPjfEA==} + + '@next/swc-darwin-arm64@15.4.8': + resolution: {integrity: sha512-Pf6zXp7yyQEn7sqMxur6+kYcywx5up1J849psyET7/8pG2gQTVMjU3NzgIt8SeEP5to3If/SaWmaA6H6ysBr1A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.1.6': - resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==} + '@next/swc-darwin-x64@15.4.8': + resolution: {integrity: sha512-xla6AOfz68a6kq3gRQccWEvFC/VRGJmA/QuSLENSO7CZX5WIEkSz7r1FdXUjtGCQ1c2M+ndUAH7opdfLK1PQbw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.1.6': - resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==} + '@next/swc-linux-arm64-gnu@15.4.8': + resolution: {integrity: sha512-y3fmp+1Px/SJD+5ntve5QLZnGLycsxsVPkTzAc3zUiXYSOlTPqT8ynfmt6tt4fSo1tAhDPmryXpYKEAcoAPDJw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.1.6': - resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==} + '@next/swc-linux-arm64-musl@15.4.8': + resolution: {integrity: sha512-DX/L8VHzrr1CfwaVjBQr3GWCqNNFgyWJbeQ10Lx/phzbQo3JNAxUok1DZ8JHRGcL6PgMRgj6HylnLNndxn4Z6A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.1.6': - resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==} + '@next/swc-linux-x64-gnu@15.4.8': + resolution: {integrity: sha512-9fLAAXKAL3xEIFdKdzG5rUSvSiZTLLTCc6JKq1z04DR4zY7DbAPcRvNm3K1inVhTiQCs19ZRAgUerHiVKMZZIA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.1.6': - resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==} + '@next/swc-linux-x64-musl@15.4.8': + resolution: {integrity: sha512-s45V7nfb5g7dbS7JK6XZDcapicVrMMvX2uYgOHP16QuKH/JA285oy6HcxlKqwUNaFY/UC6EvQ8QZUOo19cBKSA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.1.6': - resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==} + '@next/swc-win32-arm64-msvc@15.4.8': + resolution: {integrity: sha512-KjgeQyOAq7t/HzAJcWPGA8X+4WY03uSCZ2Ekk98S9OgCFsb6lfBE3dbUzUuEQAN2THbwYgFfxX2yFTCMm8Kehw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.1.6': - resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==} + '@next/swc-win32-x64-msvc@15.4.8': + resolution: {integrity: sha512-Exsmf/+42fWVnLMaZHzshukTBxZrSwuuLKFvqhGHJ+mC1AokqieLY/XzAl3jc/CqhXLqLY3RRjkKJ9YnLPcRWg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -437,12 +1102,276 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + '@oxc-resolver/binding-android-arm-eabi@11.18.0': + resolution: {integrity: sha512-EhwJNzbfLwQQIeyak3n08EB3UHknMnjy1dFyL98r3xlorje2uzHOT2vkB5nB1zqtTtzT31uSot3oGZFfODbGUg==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.18.0': + resolution: {integrity: sha512-esOPsT9S9B6vEMMp1qR9Yz5UepQXljoWRJYoyp7GV/4SYQOSTpN0+V2fTruxbMmzqLK+fjCEU2x3SVhc96LQLQ==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.18.0': + resolution: {integrity: sha512-iJknScn8fRLRhGR6VHG31bzOoyLihSDmsJHRjHwRUL0yF1MkLlvzmZ+liKl9MGl+WZkZHaOFT5T1jNlLSWTowQ==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@11.18.0': + resolution: {integrity: sha512-3rMweF2GQLzkaUoWgFKy1fRtk0dpj4JDqucoZLJN9IZG+TC+RZg7QMwG5WKMvmEjzdYmOTw1L1XqZDVXF2ksaQ==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@11.18.0': + resolution: {integrity: sha512-TfXsFby4QvpGwmUP66+X+XXQsycddZe9ZUUu/vHhq2XGI1EkparCSzjpYW1Nz5fFncbI5oLymQLln/qR+qxyOw==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.18.0': + resolution: {integrity: sha512-WolOILquy9DJsHcfFMHeA5EjTCI9A7JoERFJru4UI2zKZcnfNPo5GApzYwiloscEp/s+fALPmyRntswUns0qHg==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.18.0': + resolution: {integrity: sha512-r+5nHJyPdiBqOGTYAFyuq5RtuAQbm4y69GYWNG/uup9Cqr7RG9Ak0YZgGEbkQsc+XBs00ougu/D1+w3UAYIWHA==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@11.18.0': + resolution: {integrity: sha512-bUzg6QxljqMLLwsxYajAQEHW1LYRLdKOg/aykt14PSqUUOmfnOJjPdSLTiHIZCluVzPCQxv1LjoyRcoTAXfQaQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-arm64-musl@11.18.0': + resolution: {integrity: sha512-l43GVwls5+YR8WXOIez5x7Pp/MfhdkMOZOOjFUSWC/9qMnSLX1kd95j9oxDrkWdD321JdHTyd4eau5KQPxZM9w==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-ppc64-gnu@11.18.0': + resolution: {integrity: sha512-ayj7TweYWi/azxWmRpUZGz41kKNvfkXam20UrFhaQDrSNGNqefQRODxhJn0iv6jt4qChh7TUxDIoavR6ftRsjw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.18.0': + resolution: {integrity: sha512-2Jz7jpq6BBNlBBup3usZB6sZWEZOBbjWn++/bKC2lpAT+sTEwdTonnf3rNcb+XY7+v53jYB9pM8LEKVXZfr8BA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-musl@11.18.0': + resolution: {integrity: sha512-omw8/ISOc6ubR247iEMma4/JRfbY2I+nGJC59oKBhCIEZoyqEg/NmDSBc4ToMH+AsZDucqQUDOCku3k7pBiEag==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-s390x-gnu@11.18.0': + resolution: {integrity: sha512-uFipBXaS+honSL5r5G/rlvVrkffUjpKwD3S/aIiwp64bylK3+RztgV+mM1blk+OT5gBRG864auhH6jCfrOo3ZA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-gnu@11.18.0': + resolution: {integrity: sha512-bY4uMIoKRv8Ine3UiKLFPWRZ+fPCDamTHZFf5pNOjlfmTJIANtJo0mzWDUdFZLYhVgQdegrDL9etZbTMR8qieg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-musl@11.18.0': + resolution: {integrity: sha512-40IicL/aitfNOWur06x7Do41WcqFJ9VUNAciFjZCXzF6wR2i6uVsi6N19ecqgSRoLYFCAoRYi9F50QteIxCwKQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-openharmony-arm64@11.18.0': + resolution: {integrity: sha512-DJIzYjUnSJtz4Trs/J9TnzivtPcUKn9AeL3YjHlM5+RvK27ZL9xISs3gg2VAo2nWU7ThuadC1jSYkWaZyONMwg==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.18.0': + resolution: {integrity: sha512-57+R8Ioqc8g9k80WovoupOoyIOfLEceHTizkUcwOXspXLhiZ67ScM7Q8OuvhDoRRSZzH6yI0qML3WZwMFR3s7g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.18.0': + resolution: {integrity: sha512-t9Oa4BPptJqVlHTT1cV1frs+LY/vjsKhHI6ltj2EwoGM1TykJ0WW43UlQaU4SC8N+oTY8JRbAywVMNkfqjSu9w==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-ia32-msvc@11.18.0': + resolution: {integrity: sha512-4maf/f6ea5IEtIXqGwSw38srRtVHTre9iKShG4gjzat7c3Iq6B1OppXMj8gNmTuM4n8Xh1hQM9z2hBELccJr1g==} + cpu: [ia32] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.18.0': + resolution: {integrity: sha512-EhW8Su3AEACSw5HfzKMmyCtV0oArNrVViPdeOfvVYL9TrkL+/4c8fWHFTBtxUMUyCjhSG5xYNdwty1D/TAgL0Q==} + cpu: [x64] + os: [win32] + + '@payloadcms/db-postgres@3.77.0': + resolution: {integrity: sha512-/UO5fWMrIZZ5FSlQsDu39I8GYMPcEFUUqQ7qdixJj1iqJPlikNW9vETJy5WNhBHEDYriGYO6KogFjOqbTHuizw==} + peerDependencies: + payload: 3.77.0 + + '@payloadcms/drizzle@3.77.0': + resolution: {integrity: sha512-GhcTK7Hp6alDUukCI4C10xX646+9A+24iSnoefIFIWo7F8cApax5ITuUqcYtNTbP2q9Kpu8uFTJ7uddSlEnw3w==} + peerDependencies: + payload: 3.77.0 + + '@payloadcms/graphql@3.77.0': + resolution: {integrity: sha512-OcJxsf16u38mvgWLawGrGoN4pFlu34vE6gANYAL1TYapiHgO7NerVwMrg3GQHlriSlaI/K9naLbhXdLp8R/nYw==} + hasBin: true + peerDependencies: + graphql: ^16.8.1 + payload: 3.77.0 + + '@payloadcms/next@3.77.0': + resolution: {integrity: sha512-6MvRjNdjMTJYoulNXT2XJJbFvzMKT7m1NV7c+l8rMqRc8HeIdi2zSGXuNdFAOFp03cgG5q9U+lrrgh4tll/pjA==} + engines: {node: ^18.20.2 || >=20.9.0} + peerDependencies: + graphql: ^16.8.1 + next: '>=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.2.0-canary.10 <17.0.0' + payload: 3.77.0 + + '@payloadcms/plugin-form-builder@3.77.0': + resolution: {integrity: sha512-E/BKr6tsHUPKPsUKhQsDXaVH/4FCoo4Efwh/q562G6Savgt1nbMemv9LHXIJKSNvwES2POZ+IF1jp/Q2Wuc7yQ==} + peerDependencies: + payload: 3.77.0 + react: ^19.0.1 || ^19.1.2 || ^19.2.1 + react-dom: ^19.0.1 || ^19.1.2 || ^19.2.1 + + '@payloadcms/richtext-lexical@3.77.0': + resolution: {integrity: sha512-hDTAHMRvuEzI1csL4tCw4HK2r7ybYsoQH9enhPXFehfL2uOHIYManqwuBPLxmCpIM7/ia/cF8RXUODvHF+pAgA==} + engines: {node: ^18.20.2 || >=20.9.0} + peerDependencies: + '@faceless-ui/modal': 3.0.0 + '@faceless-ui/scroll-info': 2.0.0 + '@payloadcms/next': 3.77.0 + payload: 3.77.0 + react: ^19.0.1 || ^19.1.2 || ^19.2.1 + react-dom: ^19.0.1 || ^19.1.2 || ^19.2.1 + + '@payloadcms/translations@3.77.0': + resolution: {integrity: sha512-vDlliIsB7JJqBKuL/YKnzSPfrgfkROudVohJQcP5wBCJBIAtcPqBAKmGlGf4nfUwexN7brixmg2uV2L1B0DKrQ==} + + '@payloadcms/ui@3.77.0': + resolution: {integrity: sha512-CCgsehZEyLgS9Njb1NT78ERIW2lC0VEtITaFIa7MBtzGBQ0Uzmk0T7ycE8qbdqz280gNJsPTIocQ9rc237Yy1w==} + engines: {node: ^18.20.2 || >=20.9.0} + peerDependencies: + next: '>=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.2.0-canary.10 <17.0.0' + payload: 3.77.0 + react: ^19.0.1 || ^19.1.2 || ^19.2.1 + react-dom: ^19.0.1 || ^19.1.2 || ^19.2.1 + + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} + '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@rushstack/eslint-patch@1.16.1': + resolution: {integrity: sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==} + + '@swc-node/core@1.14.1': + resolution: {integrity: sha512-jrt5GUaZUU6cmMS+WTJEvGvaB6j1YNKPHPzC2PUi2BjaFbtxURHj6641Az6xN7b665hNniAIdvjxWcRml5yCnw==} + engines: {node: '>= 10'} + peerDependencies: + '@swc/core': '>= 1.13.3' + '@swc/types': '>= 0.1' + + '@swc-node/register@1.11.1': + resolution: {integrity: sha512-VQ0hJ5jX31TVv/fhZx4xJRzd8pwn6VvzYd2tGOHHr2TfXGCBixZoqdPDXTiEoJLCTS2MmvBf6zyQZZ0M8aGQCQ==} + peerDependencies: + '@swc/core': '>= 1.4.13' + typescript: '>= 4.3' + + '@swc-node/sourcemap-support@0.6.1': + resolution: {integrity: sha512-ovltDVH5QpdHXZkW138vG4+dgcNsxfwxHVoV6BtmTbz2KKl1A8ZSlbdtxzzfNjCjbpayda8Us9eMtcHobm38dA==} + + '@swc/core-darwin-arm64@1.15.11': + resolution: {integrity: sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.15.11': + resolution: {integrity: sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.15.11': + resolution: {integrity: sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.15.11': + resolution: {integrity: sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.15.11': + resolution: {integrity: sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-x64-gnu@1.15.11': + resolution: {integrity: sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.15.11': + resolution: {integrity: sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.15.11': + resolution: {integrity: sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.15.11': + resolution: {integrity: sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.15.11': + resolution: {integrity: sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.15.11': + resolution: {integrity: sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} + '@tailwindcss/node@4.2.0': resolution: {integrity: sha512-Yv+fn/o2OmL5fh/Ir62VXItdShnUxfpkMA4Y7jdeC8O81WPB8Kf6TT6GSHvnqgSwDzlB5iT7kDpeXxLsUS0T6Q==} @@ -535,29 +1464,79 @@ packages: '@tailwindcss/postcss@4.2.0': resolution: {integrity: sha512-u6YBacGpOm/ixPfKqfgrJEjMfrYmPD7gEFRoygS/hnQaRtV0VCBdpkx5Ouw9pnaLRwwlgGCuJw8xLpaR0hOrQg==} + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/acorn@4.0.6': + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + + '@types/busboy@1.5.4': + resolution: {integrity: sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + '@types/lodash@4.17.23': + resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@20.19.33': resolution: {integrity: sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==} + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/pg@8.10.2': + resolution: {integrity: sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw==} + '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 + '@types/react-transition-group@4.4.12': + resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} + peerDependencies: + '@types/react': '*' + '@types/react@19.2.14': resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + '@typescript-eslint/eslint-plugin@8.56.0': resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -725,6 +1704,11 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} @@ -733,6 +1717,9 @@ packages: ajv@6.14.0: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-escapes@7.3.0: resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} engines: {node: '>=18'} @@ -749,6 +1736,10 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -795,6 +1786,10 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -807,13 +1802,19 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - baseline-browser-mapping@2.10.0: - resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} - engines: {node: '>=6.0.0'} - hasBin: true + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + body-scroll-lock@4.0.0-beta.0: + resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -825,10 +1826,15 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + bson-objectid@2.0.4: + resolution: {integrity: sha512-vgnKAUzcDoa+AeyYwXCoHyF2q6u/8H46dxu5JN+4/TZeq/Dlinn0K6GvxsCLb3LHUJl0m/TLiEK31kUwtgocMQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} @@ -849,10 +1855,36 @@ packages: caniuse-lite@1.0.30001770: resolution: {integrity: sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -864,6 +1896,10 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -878,16 +1914,39 @@ packages: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + console-table-printer@2.12.1: + resolution: {integrity: sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + croner@9.1.0: + resolution: {integrity: sha512-p9nwwR4qyT5W996vBZhdvBCnMhicY5ytZkR4D1Xj0wuTDEiMnjwR57Q3RXYY/s0EpX6Ay3vgIcfaR+ewGHsi+g==} + engines: {node: '>=18.0'} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + cssfilter@0.0.10: + resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -906,6 +1965,18 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} + dataloader@2.2.3: + resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} + + date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + + dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -923,9 +1994,16 @@ packages: supports-color: optional: true + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -934,27 +2012,136 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dompurify@3.2.7: + resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} + + drizzle-kit@0.31.7: + resolution: {integrity: sha512-hOzRGSdyKIU4FcTSFYGKdXEjFsncVwHZ43gY3WU5Bz9j5Iadp6Rh6hxLSQ1IWXpKLBKt/d5y1cpSPcV+FcoQ1A==} + hasBin: true + + drizzle-orm@0.44.7: + resolution: {integrity: sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=4' + '@electric-sql/pglite': '>=0.2.0' + '@libsql/client': '>=0.10.0' + '@libsql/client-wasm': '>=0.10.0' + '@neondatabase/serverless': '>=0.10.0' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1.13' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@upstash/redis': '>=1.34.7' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=14.0.0' + gel: '>=2' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@libsql/client-wasm': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@upstash/redis': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + gel: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - electron-to-chromium@1.5.302: - resolution: {integrity: sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==} - emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + enhanced-resolve@5.19.0: resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} engines: {node: '>=10.13.0'} @@ -963,6 +2150,9 @@ packages: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + es-abstract@1.24.1: resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} @@ -995,18 +2185,37 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + engines: {node: '>=18'} + hasBin: true + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-next@16.1.6: - resolution: {integrity: sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA==} + eslint-config-next@15.4.11: + resolution: {integrity: sha512-JgvFtb0R8tFyGRRzPZhX4mX+bgllh0v8WP7VxlRXWrh829ONZCi+Bv8OGH4QeQjmFIvZ7hgdQBRXHPf2TYgvsA==} peerDependencies: - eslint: '>=9.0.0' + eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: '>=3.3.1' peerDependenciesMeta: typescript: @@ -1065,9 +2274,9 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-react-hooks@7.0.1: - resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} - engines: {node: '>=18'} + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -1119,6 +2328,12 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -1126,6 +2341,9 @@ packages: eventemitter3@5.0.4: resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1139,6 +2357,12 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -1155,10 +2379,17 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + file-type@19.3.0: + resolution: {integrity: sha512-mROwiKLZf/Kwa/2Rol+OOZQn1eyTkPB3ZTwC0ExY6OLFCbgxHYZvBm7xI77NvfZFMKBsmuXfmLJnD4eEftEhrA==} + engines: {node: '>=18'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1170,10 +2401,18 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -1188,10 +2427,6 @@ packages: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - get-east-asian-width@1.5.0: resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} @@ -1211,6 +2446,9 @@ packages: get-tsconfig@4.13.6: resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1223,10 +2461,6 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} - engines: {node: '>=18'} - globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -1238,6 +2472,25 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphql-http@1.22.4: + resolution: {integrity: sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA==} + engines: {node: '>=12'} + peerDependencies: + graphql: '>=0.11 <=16' + + graphql-playground-html@1.6.30: + resolution: {integrity: sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==} + + graphql-scalars@1.22.2: + resolution: {integrity: sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + graphql@16.12.0: + resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} @@ -1265,17 +2518,24 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hermes-estree@0.25.1: - resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} - hermes-parser@0.25.1: - resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + http-status@2.1.0: + resolution: {integrity: sha512-O5kPr7AW7wYd/BBiOezTwnVAnmSNFY+J7hlZD2X5IOxVBetjcHAiTXhzj0gMrnojQlwy+UT1/Y3H3vJ3UlmvLA==} + engines: {node: '>= 0.4.0'} husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} hasBin: true + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1284,6 +2544,14 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + image-size@2.0.2: + resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} + engines: {node: '>=16.x'} + hasBin: true + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -1296,10 +2564,23 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -1308,10 +2589,17 @@ packages: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-boolean-object@1.2.2: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + is-bun-module@2.0.0: resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} @@ -1331,6 +2619,9 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1351,6 +2642,9 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -1409,6 +2703,9 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isomorphic.js@0.2.5: + resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} + iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} @@ -1417,6 +2714,13 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jose@5.9.6: + resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1432,9 +2736,20 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-to-typescript@15.0.3: + resolution: {integrity: sha512-iOKdzTUWEVM4nlxpFudFsWyUiu/Jakkga4OZPEt7CGoSEsAsUgdOZqR6pcgx2STBek9Gm4hcarJpXSzIvZ/hKA==} + engines: {node: '>=16.0.0'} + hasBin: true + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -1442,9 +2757,8 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} + jsox@1.2.121: + resolution: {integrity: sha512-9Ag50tKhpTwS6r5wh3MJSAvpSof0UBr39Pto8OnzFT32Z/pAbxAsKHzyvsyMEHVslELvHyO/4/jaQELHk8wDcw==} hasBin: true jsx-ast-utils@3.3.5: @@ -1454,6 +2768,10 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -1465,6 +2783,14 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lexical@0.35.0: + resolution: {integrity: sha512-3VuV8xXhh5xJA6tzvfDvE0YBCMkIZUmxtRilJQDDdCgJCc+eut6qAv2qbN+pbqvarqcQqPN1UF+8YvsjmyOZpw==} + + lib0@0.2.117: + resolution: {integrity: sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==} + engines: {node: '>=16'} + hasBin: true + lightningcss-android-arm64@1.31.1: resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} engines: {node: '>= 12.0.0'} @@ -1539,6 +2865,9 @@ packages: resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lint-staged@16.2.7: resolution: {integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==} engines: {node: '>=20.17'} @@ -1555,28 +2884,129 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + marked@14.0.0: + resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} + engines: {node: '>= 18'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-mdx-jsx@3.1.3: + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-mdx-jsx@3.0.1: + resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -1595,6 +3025,9 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + monaco-editor@0.55.1: + resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1615,9 +3048,9 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - next@16.1.6: - resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==} - engines: {node: '>=20.9.0'} + next@15.4.11: + resolution: {integrity: sha512-IJRyXal45mIsshZI5XJne/intjusslUP1F+FHVBIyMGEqbYtIq1Irdx5vdWBBg58smviPDycmDeV6txsfkv1RQ==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -1640,8 +3073,9 @@ packages: resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} engines: {node: '>= 0.4'} - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -1655,6 +3089,9 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + object-to-formdata@4.5.1: + resolution: {integrity: sha512-QiM9D0NiU5jV6J6tjE1g7b4Z2tcUnKs1OPUi4iMb2zH+7jwlcUrASghgkFk9GtzqNNq8rTQJtT8AzjBAvLoNMw==} + object.assign@4.1.7: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} @@ -1675,6 +3112,16 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@7.0.0: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} @@ -1687,6 +3134,9 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxc-resolver@11.18.0: + resolution: {integrity: sha512-Fv/b05AfhpYoCDvsog6tgsDm2yIwIeJafpMFLncNwKHRYu+Y1xQu5Q/rgUn7xBfuhNgjtPO7C0jCf7p2fLDj1g==} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -1699,6 +3149,13 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1710,6 +3167,66 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + payload@3.77.0: + resolution: {integrity: sha512-hIdQ1sWpu0KPb9Okd9HahZxaddhLdFBo476AR5KX/6H9o4NRlQ5a2HZN+pgXO51M9aPbIBkArk8Ph/LvI4U3LQ==} + engines: {node: ^18.20.2 || >=20.9.0} + hasBin: true + peerDependencies: + graphql: ^16.8.1 + + peek-readable@5.4.2: + resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==} + engines: {node: '>=14.16'} + + pg-cloudflare@1.3.0: + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} + + pg-connection-string@2.11.0: + resolution: {integrity: sha512-kecgoJwhOpxYU21rZjULrmrBJ698U2RxXofKVzOn5UDj61BPj/qMb7diYUR1nLScCDbrztQFl1TaQZT0t1EtzQ==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-numeric@1.0.2: + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} + engines: {node: '>=4'} + + pg-pool@3.11.0: + resolution: {integrity: sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.11.0: + resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg-types@4.1.0: + resolution: {integrity: sha512-o2XFanIMy/3+mThw69O8d4n1E5zsLhdO+OPqswezu7Z5ekP4hYDqlDjlmOpYMbzY2Br0ufCwJLdDIXeNVwcWFg==} + engines: {node: '>=10'} + + pg@8.16.3: + resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1726,6 +3243,28 @@ packages: engines: {node: '>=0.10'} hasBin: true + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-pretty@13.1.2: + resolution: {integrity: sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ==} + hasBin: true + + pino-std-serializers@7.1.0: + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} + + pino@9.14.0: + resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} + hasBin: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -1738,6 +3277,41 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-array@3.0.4: + resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==} + engines: {node: '>=12'} + + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} + + postgres-bytea@3.0.0: + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} + engines: {node: '>= 6'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-date@2.1.0: + resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} + engines: {node: '>=12'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + postgres-interval@3.0.0: + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} + engines: {node: '>=12'} + + postgres-range@1.1.4: + resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -1802,28 +3376,95 @@ packages: engines: {node: '>=14'} hasBin: true + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + qs-esm@7.0.2: + resolution: {integrity: sha512-D8NAthKSD7SGn748v+GLaaO6k08Mvpoqroa35PqIQC4gtUa8/Pb/k+r0m0NnGBVbHDP1gKZ2nVywqfMisRhV5A==} + engines: {node: '>=18'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + react-datepicker@7.6.0: + resolution: {integrity: sha512-9cQH6Z/qa4LrGhzdc3XoHbhrxNcMi9MKjZmYgF/1MNNaJwvdSjv3Xd+jjvrEEbKEf71ZgCA3n7fQbdwd70qCRw==} + peerDependencies: + react: ^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom@19.2.3: resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} peerDependencies: react: ^19.2.3 + react-error-boundary@3.1.4: + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' + + react-error-boundary@4.1.2: + resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} + peerDependencies: + react: '>=16.13.1' + + react-image-crop@10.1.8: + resolution: {integrity: sha512-4rb8XtXNx7ZaOZarKKnckgz4xLMvds/YrU6mpJfGhGAsy2Mg4mIw1x+DCCGngVGq2soTBVVOxx2s/C6mTX9+pA==} + peerDependencies: + react: '>=16.13.1' + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-select@5.9.0: + resolution: {integrity: sha512-nwRKGanVHGjdccsnzhFte/PULziueZxGD8LL2WojON78Mvnq7LdAMEtu2frrwld1fr3geixg3iiMBIc/LLAZpw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + react@19.2.3: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -1832,6 +3473,10 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -1875,9 +3520,27 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + sanitize-filename@1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + + sass@1.77.4: + resolution: {integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==} + engines: {node: '>=14.0.0'} + hasBin: true + + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + secure-json-parse@4.1.0: + resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -1931,21 +3594,58 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-wcswidth@1.1.2: + resolution: {integrity: sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slice-ansi@7.1.2: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} + sonic-boom@4.2.1: + resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} + + sonner@1.7.4: + resolution: {integrity: sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + state-local@1.0.7: + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -1981,6 +3681,9 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@7.1.2: resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} @@ -1993,6 +3696,14 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} + engines: {node: '>=14.16'} + + strtok3@8.1.0: + resolution: {integrity: sha512-ExzDvHYPj6F6QkSNe/JxSlBxTh3OrI6wrAIz53ulxo1c4hBJ1bT9C/JrAthEKHWG9riVH3Xzg7B03Oxty6S2Lw==} + engines: {node: '>=16'} + styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -2006,6 +3717,9 @@ packages: babel-plugin-macros: optional: true + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2014,6 +3728,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + tabbable@6.4.0: + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + tailwindcss@4.2.0: resolution: {integrity: sha512-yYzTZ4++b7fNYxFfpnberEEKu43w44aqDMNM9MHMmcKuCH7lL8jJ4yJ7LGHv7rSwiqM0nkiobF9I6cLlpS2P7Q==} @@ -2021,26 +3738,58 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + to-no-case@1.0.2: + resolution: {integrity: sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg==} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + to-snake-case@1.0.0: + resolution: {integrity: sha512-joRpzBAk1Bhi2eGEYBjukEWHOe/IvclOkiJl3DtA91jV6NwQ3MwXA4FHYeqk8BNp/D8bmi9tcNbRu/SozP0jbQ==} + + to-space-case@1.0.0: + resolution: {integrity: sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==} + + token-types@6.1.2: + resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} + engines: {node: '>=14.16'} + + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + ts-api-utils@2.4.0: resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' + ts-essentials@10.0.3: + resolution: {integrity: sha512-/FrVAZ76JLTWxJOERk04fm8hYENDo0PWSP3YLQKxevLwWtxemGcl5JJEzN4iqfDlRve0ckyfFaOBu4xbNH/wZw==} + peerDependencies: + typescript: '>=4.5.0' + peerDependenciesMeta: + typescript: + optional: true + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2061,18 +3810,15 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.56.0: - resolution: {integrity: sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true + uint8array-extras@1.5.0: + resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} + engines: {node: '>=18'} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -2080,18 +3826,60 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici@7.18.2: + resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} + engines: {node: '>=20.18.1'} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-context-selector@2.0.0: + resolution: {integrity: sha512-owfuSmUNd3eNp3J9CdDl0kMgfidV+MkDvHPpvthN5ThqM+ibMccNE0k+Iq7TWC6JPFvGZqanqiGCuQx6DyV24g==} + peerDependencies: + react: '>=18.0.0' + scheduler: '>=0.19.0' + + use-isomorphic-layout-effect@1.2.1: + resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + uuid@9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + hasBin: true + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -2121,59 +3909,66 @@ packages: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xss@1.0.15: + resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} + engines: {node: '>= 0.10.0'} + hasBin: true + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} yaml@2.8.2: resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} hasBin: true + yjs@13.6.29: + resolution: {integrity: sha512-kHqDPdltoXH+X4w1lVmMtddE3Oeqq48nM40FD5ojTd8xYhQpzIDcfE2keMSU5bAgRPJBe225WTUdyUgj1DtbiQ==} + engines: {node: '>=16.0.0', npm: '>=8.0.0'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zod-validation-error@4.0.2: - resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.25.0 || ^4.0.0 - - zod@4.3.6: - resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: '@alloc/quick-lru@5.2.0': {} + '@apidevtools/json-schema-ref-parser@11.9.3': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.1 + '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.29.0': {} - - '@babel/core@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/generator@7.29.1': dependencies: '@babel/parser': 7.29.0 @@ -2182,14 +3977,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.28.6': - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-globals@7.28.0': {} '@babel/helper-module-imports@7.28.6': @@ -2199,30 +3986,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.28.5': {} - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helpers@7.28.6': - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - '@babel/parser@7.29.0': dependencies: '@babel/types': 7.29.0 + '@babel/runtime@7.28.6': {} + '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 @@ -2246,6 +4019,44 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@borewit/text-codec@0.2.1': {} + + '@date-fns/tz@1.2.0': {} + + '@dnd-kit/accessibility@3.1.1(react@19.2.3)': + dependencies: + react: 19.2.3 + tslib: 2.8.1 + + '@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@dnd-kit/accessibility': 3.1.1(react@19.2.3) + '@dnd-kit/utilities': 3.2.2(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + tslib: 2.8.1 + + '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@dnd-kit/utilities': 3.2.2(react@19.2.3) + react: 19.2.3 + tslib: 2.8.1 + + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@dnd-kit/utilities': 3.2.2(react@19.2.3) + react: 19.2.3 + tslib: 2.8.1 + + '@dnd-kit/utilities@3.2.2(react@19.2.3)': + dependencies: + react: 19.2.3 + tslib: 2.8.1 + + '@drizzle-team/brocli@0.10.2': {} + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -2262,6 +4073,302 @@ snapshots: tslib: 2.8.1 optional: true + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.28.6 + '@babel/runtime': 7.28.6 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/hash@0.9.2': {} + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.2.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/unitless@0.10.0': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.3)': + dependencies: + react: 19.2.3 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@esbuild-kit/core-utils@3.3.2': + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + + '@esbuild-kit/esm-loader@2.6.5': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.13.6 + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.3': + optional: true + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.3': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.3': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.3': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.3': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.3': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.3': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.3': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.3': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.3': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.3': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.3': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.3': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.3': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.3': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.3': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.3': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.3': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.3': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.3': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.3': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.3': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.3': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.3': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.3': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.3': + optional: true + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.3(jiti@2.6.1))': dependencies: eslint: 9.39.3(jiti@2.6.1) @@ -2308,6 +4415,49 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@faceless-ui/modal@3.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + body-scroll-lock: 4.0.0-beta.0 + focus-trap: 7.5.4 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + + '@faceless-ui/scroll-info@2.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@faceless-ui/window-info@3.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@floating-ui/core@1.7.4': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.5': + dependencies: + '@floating-ui/core': 1.7.4 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/dom': 1.7.5 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@floating-ui/react@0.27.18(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/react-dom': 2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@floating-ui/utils': 0.2.10 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + tabbable: 6.4.0 + + '@floating-ui/utils@0.2.10': {} + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -2435,6 +4585,169 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@jsdevtools/ono@7.1.3': {} + + '@lexical/clipboard@0.35.0': + dependencies: + '@lexical/html': 0.35.0 + '@lexical/list': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/code@0.35.0': + dependencies: + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + prismjs: 1.30.0 + + '@lexical/devtools-core@0.35.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@lexical/html': 0.35.0 + '@lexical/link': 0.35.0 + '@lexical/mark': 0.35.0 + '@lexical/table': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@lexical/dragon@0.35.0': + dependencies: + lexical: 0.35.0 + + '@lexical/hashtag@0.35.0': + dependencies: + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/headless@0.35.0': + dependencies: + lexical: 0.35.0 + + '@lexical/history@0.35.0': + dependencies: + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/html@0.35.0': + dependencies: + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/link@0.35.0': + dependencies: + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/list@0.35.0': + dependencies: + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/mark@0.35.0': + dependencies: + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/markdown@0.35.0': + dependencies: + '@lexical/code': 0.35.0 + '@lexical/link': 0.35.0 + '@lexical/list': 0.35.0 + '@lexical/rich-text': 0.35.0 + '@lexical/text': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/offset@0.35.0': + dependencies: + lexical: 0.35.0 + + '@lexical/overflow@0.35.0': + dependencies: + lexical: 0.35.0 + + '@lexical/plain-text@0.35.0': + dependencies: + '@lexical/clipboard': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/react@0.35.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(yjs@13.6.29)': + dependencies: + '@floating-ui/react': 0.27.18(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@lexical/devtools-core': 0.35.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@lexical/dragon': 0.35.0 + '@lexical/hashtag': 0.35.0 + '@lexical/history': 0.35.0 + '@lexical/link': 0.35.0 + '@lexical/list': 0.35.0 + '@lexical/mark': 0.35.0 + '@lexical/markdown': 0.35.0 + '@lexical/overflow': 0.35.0 + '@lexical/plain-text': 0.35.0 + '@lexical/rich-text': 0.35.0 + '@lexical/table': 0.35.0 + '@lexical/text': 0.35.0 + '@lexical/utils': 0.35.0 + '@lexical/yjs': 0.35.0(yjs@13.6.29) + lexical: 0.35.0 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-error-boundary: 3.1.4(react@19.2.3) + transitivePeerDependencies: + - yjs + + '@lexical/rich-text@0.35.0': + dependencies: + '@lexical/clipboard': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/selection@0.35.0': + dependencies: + lexical: 0.35.0 + + '@lexical/table@0.35.0': + dependencies: + '@lexical/clipboard': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 + + '@lexical/text@0.35.0': + dependencies: + lexical: 0.35.0 + + '@lexical/utils@0.35.0': + dependencies: + '@lexical/list': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/table': 0.35.0 + lexical: 0.35.0 + + '@lexical/yjs@0.35.0(yjs@13.6.29)': + dependencies: + '@lexical/offset': 0.35.0 + '@lexical/selection': 0.35.0 + lexical: 0.35.0 + yjs: 13.6.29 + + '@monaco-editor/loader@1.7.0': + dependencies: + state-local: 1.0.7 + + '@monaco-editor/react@4.7.0(monaco-editor@0.55.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@monaco-editor/loader': 1.7.0 + monaco-editor: 0.55.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.8.1 @@ -2442,34 +4755,43 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@next/env@16.1.6': {} + '@napi-rs/wasm-runtime@1.1.1': + dependencies: + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 + optional: true - '@next/eslint-plugin-next@16.1.6': + '@next/env@15.4.11': {} + + '@next/env@15.5.12': {} + + '@next/eslint-plugin-next@15.4.11': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@16.1.6': + '@next/swc-darwin-arm64@15.4.8': optional: true - '@next/swc-darwin-x64@16.1.6': + '@next/swc-darwin-x64@15.4.8': optional: true - '@next/swc-linux-arm64-gnu@16.1.6': + '@next/swc-linux-arm64-gnu@15.4.8': optional: true - '@next/swc-linux-arm64-musl@16.1.6': + '@next/swc-linux-arm64-musl@15.4.8': optional: true - '@next/swc-linux-x64-gnu@16.1.6': + '@next/swc-linux-x64-gnu@15.4.8': optional: true - '@next/swc-linux-x64-musl@16.1.6': + '@next/swc-linux-x64-musl@15.4.8': optional: true - '@next/swc-win32-arm64-msvc@16.1.6': + '@next/swc-win32-arm64-msvc@15.4.8': optional: true - '@next/swc-win32-x64-msvc@16.1.6': + '@next/swc-win32-x64-msvc@15.4.8': optional: true '@nodelib/fs.scandir@2.1.5': @@ -2486,12 +4808,375 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} + '@oxc-resolver/binding-android-arm-eabi@11.18.0': + optional: true + + '@oxc-resolver/binding-android-arm64@11.18.0': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.18.0': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.18.0': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.18.0': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.18.0': + optional: true + + '@oxc-resolver/binding-openharmony-arm64@11.18.0': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.18.0': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.18.0': + optional: true + + '@oxc-resolver/binding-win32-ia32-msvc@11.18.0': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.18.0': + optional: true + + '@payloadcms/db-postgres@3.77.0(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))': + dependencies: + '@payloadcms/drizzle': 3.77.0(@types/pg@8.10.2)(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(pg@8.16.3) + '@types/pg': 8.10.2 + console-table-printer: 2.12.1 + drizzle-kit: 0.31.7 + drizzle-orm: 0.44.7(@types/pg@8.10.2)(pg@8.16.3) + payload: 3.77.0(graphql@16.12.0)(typescript@5.9.3) + pg: 8.16.3 + prompts: 2.4.2 + to-snake-case: 1.0.0 + uuid: 10.0.0 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + + '@payloadcms/drizzle@3.77.0(@types/pg@8.10.2)(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(pg@8.16.3)': + dependencies: + console-table-printer: 2.12.1 + dequal: 2.0.3 + drizzle-orm: 0.44.7(@types/pg@8.10.2)(pg@8.16.3) + payload: 3.77.0(graphql@16.12.0)(typescript@5.9.3) + prompts: 2.4.2 + to-snake-case: 1.0.0 + uuid: 9.0.0 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + + '@payloadcms/graphql@3.77.0(graphql@16.12.0)(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + graphql: 16.12.0 + graphql-scalars: 1.22.2(graphql@16.12.0) + payload: 3.77.0(graphql@16.12.0)(typescript@5.9.3) + pluralize: 8.0.0 + ts-essentials: 10.0.3(typescript@5.9.3) + tsx: 4.21.0 + transitivePeerDependencies: + - typescript + + '@payloadcms/next@3.77.0(@types/react@19.2.14)(graphql@16.12.0)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@dnd-kit/modifiers': 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + '@payloadcms/graphql': 3.77.0(graphql@16.12.0)(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(typescript@5.9.3) + '@payloadcms/translations': 3.77.0 + '@payloadcms/ui': 3.77.0(@types/react@19.2.14)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + busboy: 1.6.0 + dequal: 2.0.3 + file-type: 19.3.0 + graphql: 16.12.0 + graphql-http: 1.22.4(graphql@16.12.0) + graphql-playground-html: 1.6.30 + http-status: 2.1.0 + next: 15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4) + path-to-regexp: 6.3.0 + payload: 3.77.0(graphql@16.12.0)(typescript@5.9.3) + qs-esm: 7.0.2 + sass: 1.77.4 + uuid: 10.0.0 + transitivePeerDependencies: + - '@types/react' + - monaco-editor + - react + - react-dom + - supports-color + - typescript + + '@payloadcms/plugin-form-builder@3.77.0(@types/react@19.2.14)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@payloadcms/ui': 3.77.0(@types/react@19.2.14)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + escape-html: 1.0.3 + payload: 3.77.0(graphql@16.12.0)(typescript@5.9.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + transitivePeerDependencies: + - '@types/react' + - monaco-editor + - next + - supports-color + - typescript + + '@payloadcms/richtext-lexical@3.77.0(@faceless-ui/modal@3.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@faceless-ui/scroll-info@2.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@payloadcms/next@3.77.0(@types/react@19.2.14)(graphql@16.12.0)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@types/react@19.2.14)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(yjs@13.6.29)': + dependencies: + '@faceless-ui/modal': 3.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@faceless-ui/scroll-info': 2.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@lexical/clipboard': 0.35.0 + '@lexical/headless': 0.35.0 + '@lexical/html': 0.35.0 + '@lexical/link': 0.35.0 + '@lexical/list': 0.35.0 + '@lexical/mark': 0.35.0 + '@lexical/react': 0.35.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(yjs@13.6.29) + '@lexical/rich-text': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/table': 0.35.0 + '@lexical/utils': 0.35.0 + '@payloadcms/next': 3.77.0(@types/react@19.2.14)(graphql@16.12.0)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@payloadcms/translations': 3.77.0 + '@payloadcms/ui': 3.77.0(@types/react@19.2.14)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@types/uuid': 10.0.0 + acorn: 8.12.1 + bson-objectid: 2.0.4 + csstype: 3.1.3 + dequal: 2.0.3 + escape-html: 1.0.3 + jsox: 1.2.121 + lexical: 0.35.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-jsx: 3.1.3 + micromark-extension-mdx-jsx: 3.0.1 + payload: 3.77.0(graphql@16.12.0)(typescript@5.9.3) + qs-esm: 7.0.2 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-error-boundary: 4.1.2(react@19.2.3) + ts-essentials: 10.0.3(typescript@5.9.3) + uuid: 10.0.0 + transitivePeerDependencies: + - '@types/react' + - monaco-editor + - next + - supports-color + - typescript + - yjs + + '@payloadcms/translations@3.77.0': + dependencies: + date-fns: 4.1.0 + + '@payloadcms/ui@3.77.0(@types/react@19.2.14)(monaco-editor@0.55.1)(next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4))(payload@3.77.0(graphql@16.12.0)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@date-fns/tz': 1.2.0 + '@dnd-kit/core': 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + '@dnd-kit/utilities': 3.2.2(react@19.2.3) + '@faceless-ui/modal': 3.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@faceless-ui/scroll-info': 2.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@faceless-ui/window-info': 3.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@monaco-editor/react': 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@payloadcms/translations': 3.77.0 + bson-objectid: 2.0.4 + date-fns: 4.1.0 + dequal: 2.0.3 + md5: 2.3.0 + next: 15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4) + object-to-formdata: 4.5.1 + payload: 3.77.0(graphql@16.12.0)(typescript@5.9.3) + qs-esm: 7.0.2 + react: 19.2.3 + react-datepicker: 7.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react-dom: 19.2.3(react@19.2.3) + react-image-crop: 10.1.8(react@19.2.3) + react-select: 5.9.0(@types/react@19.2.14)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + scheduler: 0.25.0 + sonner: 1.7.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + ts-essentials: 10.0.3(typescript@5.9.3) + use-context-selector: 2.0.0(react@19.2.3)(scheduler@0.25.0) + uuid: 10.0.0 + transitivePeerDependencies: + - '@types/react' + - monaco-editor + - supports-color + - typescript + + '@pinojs/redact@0.4.0': {} + '@rtsao/scc@1.1.0': {} + '@rushstack/eslint-patch@1.16.1': {} + + '@swc-node/core@1.14.1(@swc/core@1.15.11)(@swc/types@0.1.25)': + dependencies: + '@swc/core': 1.15.11 + '@swc/types': 0.1.25 + + '@swc-node/register@1.11.1(@swc/core@1.15.11)(@swc/types@0.1.25)(typescript@5.9.3)': + dependencies: + '@swc-node/core': 1.14.1(@swc/core@1.15.11)(@swc/types@0.1.25) + '@swc-node/sourcemap-support': 0.6.1 + '@swc/core': 1.15.11 + colorette: 2.0.20 + debug: 4.4.3 + oxc-resolver: 11.18.0 + pirates: 4.0.7 + tslib: 2.8.1 + typescript: 5.9.3 + transitivePeerDependencies: + - '@swc/types' + - supports-color + + '@swc-node/sourcemap-support@0.6.1': + dependencies: + source-map-support: 0.5.21 + tslib: 2.8.1 + + '@swc/core-darwin-arm64@1.15.11': + optional: true + + '@swc/core-darwin-x64@1.15.11': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.15.11': + optional: true + + '@swc/core-linux-arm64-gnu@1.15.11': + optional: true + + '@swc/core-linux-arm64-musl@1.15.11': + optional: true + + '@swc/core-linux-x64-gnu@1.15.11': + optional: true + + '@swc/core-linux-x64-musl@1.15.11': + optional: true + + '@swc/core-win32-arm64-msvc@1.15.11': + optional: true + + '@swc/core-win32-ia32-msvc@1.15.11': + optional: true + + '@swc/core-win32-x64-msvc@1.15.11': + optional: true + + '@swc/core@1.15.11': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.25 + optionalDependencies: + '@swc/core-darwin-arm64': 1.15.11 + '@swc/core-darwin-x64': 1.15.11 + '@swc/core-linux-arm-gnueabihf': 1.15.11 + '@swc/core-linux-arm64-gnu': 1.15.11 + '@swc/core-linux-arm64-musl': 1.15.11 + '@swc/core-linux-x64-gnu': 1.15.11 + '@swc/core-linux-x64-musl': 1.15.11 + '@swc/core-win32-arm64-msvc': 1.15.11 + '@swc/core-win32-ia32-msvc': 1.15.11 + '@swc/core-win32-x64-msvc': 1.15.11 + + '@swc/counter@0.1.3': {} + '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 + '@swc/types@0.1.25': + dependencies: + '@swc/counter': 0.1.3 + '@tailwindcss/node@4.2.0': dependencies: '@jridgewell/remapping': 2.3.5 @@ -2561,29 +5246,80 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.2.0 + '@tokenizer/token@0.3.0': {} + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true + '@types/acorn@4.0.6': + dependencies: + '@types/estree': 1.0.8 + + '@types/busboy@1.5.4': + dependencies: + '@types/node': 20.19.33 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + '@types/estree@1.0.8': {} + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} + '@types/lodash@4.17.23': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + '@types/node@20.19.33': dependencies: undici-types: 6.21.0 + '@types/parse-json@4.0.2': {} + + '@types/pg@8.10.2': + dependencies: + '@types/node': 20.19.33 + pg-protocol: 1.11.0 + pg-types: 4.1.0 + '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: '@types/react': 19.2.14 + '@types/react-transition-group@4.4.12(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + '@types/react@19.2.14': dependencies: csstype: 3.2.3 + '@types/trusted-types@2.0.7': + optional: true + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@types/uuid@10.0.0': {} + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -2738,6 +5474,8 @@ snapshots: dependencies: acorn: 8.16.0 + acorn@8.12.1: {} + acorn@8.16.0: {} ajv@6.14.0: @@ -2747,6 +5485,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + ansi-escapes@7.3.0: dependencies: environment: 1.1.0 @@ -2759,6 +5504,11 @@ snapshots: ansi-styles@6.2.3: {} + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + argparse@2.0.1: {} aria-query@5.3.2: {} @@ -2834,6 +5584,8 @@ snapshots: async-function@1.0.0: {} + atomic-sleep@1.0.0: {} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -2842,9 +5594,17 @@ snapshots: axobject-query@4.1.0: {} + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.28.6 + cosmiconfig: 7.1.0 + resolve: 1.22.11 + balanced-match@1.0.2: {} - baseline-browser-mapping@2.10.0: {} + binary-extensions@2.3.0: {} + + body-scroll-lock@4.0.0-beta.0: {} brace-expansion@1.1.12: dependencies: @@ -2859,13 +5619,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.1: + bson-objectid@2.0.4: {} + + buffer-from@1.1.2: {} + + busboy@1.6.0: dependencies: - baseline-browser-mapping: 2.10.0 - caniuse-lite: 1.0.30001770 - electron-to-chromium: 1.5.302 - node-releases: 2.0.27 - update-browserslist-db: 1.2.3(browserslist@4.28.1) + streamsearch: 1.1.0 call-bind-apply-helpers@1.0.2: dependencies: @@ -2888,11 +5648,37 @@ snapshots: caniuse-lite@1.0.30001770: {} + ccount@2.0.1: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + charenc@0.0.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + ci-info@4.4.0: {} + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -2904,6 +5690,8 @@ snapshots: client-only@0.0.1: {} + clsx@2.1.1: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -2914,9 +5702,25 @@ snapshots: commander@14.0.3: {} + commander@2.20.3: {} + concat-map@0.0.1: {} - convert-source-map@2.0.0: {} + console-table-printer@2.12.1: + dependencies: + simple-wcswidth: 1.1.2 + + convert-source-map@1.9.0: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + croner@9.1.0: {} cross-spawn@7.0.6: dependencies: @@ -2924,6 +5728,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crypt@0.0.2: {} + + cssfilter@0.0.10: {} + + csstype@3.1.3: {} + csstype@3.2.3: {} damerau-levenshtein@1.0.8: {} @@ -2946,6 +5756,14 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 + dataloader@2.2.3: {} + + date-fns@3.6.0: {} + + date-fns@4.1.0: {} + + dateformat@4.6.3: {} + debug@3.2.7: dependencies: ms: 2.1.3 @@ -2954,8 +5772,14 @@ snapshots: dependencies: ms: 2.1.3 + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + deep-is@0.1.4: {} + deepmerge@4.3.1: {} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -2968,24 +5792,55 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + dequal@2.0.3: {} + detect-libc@2.1.2: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + doctrine@2.1.0: dependencies: esutils: 2.0.3 + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.28.6 + csstype: 3.2.3 + + dompurify@3.2.7: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + drizzle-kit@0.31.7: + dependencies: + '@drizzle-team/brocli': 0.10.2 + '@esbuild-kit/esm-loader': 2.6.5 + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) + transitivePeerDependencies: + - supports-color + + drizzle-orm@0.44.7(@types/pg@8.10.2)(pg@8.16.3): + optionalDependencies: + '@types/pg': 8.10.2 + pg: 8.16.3 + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 - electron-to-chromium@1.5.302: {} - emoji-regex@10.6.0: {} emoji-regex@9.2.2: {} + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + enhanced-resolve@5.19.0: dependencies: graceful-fs: 4.2.11 @@ -2993,6 +5848,10 @@ snapshots: environment@1.1.0: {} + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 @@ -3094,26 +5953,116 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - escalade@3.2.0: {} + esbuild-register@3.6.0(esbuild@0.25.12): + dependencies: + debug: 4.4.3 + esbuild: 0.25.12 + transitivePeerDependencies: + - supports-color + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 + + escape-html@1.0.3: {} escape-string-regexp@4.0.0: {} - eslint-config-next@16.1.6(@typescript-eslint/parser@8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@15.4.11(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@next/eslint-plugin-next': 16.1.6 + '@next/eslint-plugin-next': 15.4.11 + '@rushstack/eslint-patch': 1.16.1 + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.3(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.3(jiti@2.6.1)) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.3(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.3(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.3(jiti@2.6.1)) - eslint-plugin-react-hooks: 7.0.1(eslint@9.39.3(jiti@2.6.1)) - globals: 16.4.0 - typescript-eslint: 8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-react-hooks: 5.2.0(eslint@9.39.3(jiti@2.6.1)) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - - '@typescript-eslint/parser' - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color @@ -3200,16 +6149,9 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@7.0.1(eslint@9.39.3(jiti@2.6.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.39.3(jiti@2.6.1)): dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.0 eslint: 9.39.3(jiti@2.6.1) - hermes-parser: 0.25.1 - zod: 4.3.6 - zod-validation-error: 4.0.2(zod@4.3.6) - transitivePeerDependencies: - - supports-color eslint-plugin-react@7.37.5(eslint@9.39.3(jiti@2.6.1)): dependencies: @@ -3301,10 +6243,19 @@ snapshots: estraverse@5.3.0: {} + estree-util-is-identifier-name@3.0.0: {} + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + esutils@2.0.3: {} eventemitter3@5.0.4: {} + fast-copy@3.0.2: {} + fast-deep-equal@3.1.3: {} fast-glob@3.3.1: @@ -3319,6 +6270,10 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-safe-stringify@2.1.1: {} + + fast-uri@3.1.0: {} + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -3331,10 +6286,18 @@ snapshots: dependencies: flat-cache: 4.0.1 + file-type@19.3.0: + dependencies: + strtok3: 8.1.0 + token-types: 6.1.2 + uint8array-extras: 1.5.0 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 + find-root@1.1.0: {} + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -3347,10 +6310,17 @@ snapshots: flatted@3.3.3: {} + focus-trap@7.5.4: + dependencies: + tabbable: 6.4.0 + for-each@0.3.5: dependencies: is-callable: 1.2.7 + fsevents@2.3.3: + optional: true + function-bind@1.1.2: {} function.prototype.name@1.1.8: @@ -3366,8 +6336,6 @@ snapshots: generator-function@2.0.1: {} - gensync@1.0.0-beta.2: {} - get-east-asian-width@1.5.0: {} get-intrinsic@1.3.0: @@ -3398,6 +6366,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -3408,8 +6380,6 @@ snapshots: globals@14.0.0: {} - globals@16.4.0: {} - globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -3419,6 +6389,21 @@ snapshots: graceful-fs@4.2.11: {} + graphql-http@1.22.4(graphql@16.12.0): + dependencies: + graphql: 16.12.0 + + graphql-playground-html@1.6.30: + dependencies: + xss: 1.0.15 + + graphql-scalars@1.22.2(graphql@16.12.0): + dependencies: + graphql: 16.12.0 + tslib: 2.8.1 + + graphql@16.12.0: {} + has-bigints@1.1.0: {} has-flag@4.0.0: {} @@ -3441,18 +6426,26 @@ snapshots: dependencies: function-bind: 1.1.2 - hermes-estree@0.25.1: {} + help-me@5.0.0: {} - hermes-parser@0.25.1: + hoist-non-react-statics@3.3.2: dependencies: - hermes-estree: 0.25.1 + react-is: 16.13.1 + + http-status@2.1.0: {} husky@9.1.7: {} + ieee754@1.2.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} + image-size@2.0.2: {} + + immutable@4.3.7: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -3466,12 +6459,23 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 + ipaddr.js@2.2.0: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} + is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -3484,11 +6488,17 @@ snapshots: dependencies: has-bigints: 1.1.0 + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-boolean-object@1.2.2: dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-buffer@1.1.6: {} + is-bun-module@2.0.0: dependencies: semver: 7.7.4 @@ -3510,6 +6520,8 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-decimal@2.0.1: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -3532,6 +6544,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-hexadecimal@2.0.1: {} + is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -3586,6 +6600,8 @@ snapshots: isexe@2.0.0: {} + isomorphic.js@0.2.5: {} + iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -3597,6 +6613,10 @@ snapshots: jiti@2.6.1: {} + jose@5.9.6: {} + + joycon@3.1.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.1: @@ -3607,15 +6627,31 @@ snapshots: json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} + + json-schema-to-typescript@15.0.3: + dependencies: + '@apidevtools/json-schema-ref-parser': 11.9.3 + '@types/json-schema': 7.0.15 + '@types/lodash': 4.17.23 + is-glob: 4.0.3 + js-yaml: 4.1.1 + lodash: 4.17.23 + minimist: 1.2.8 + prettier: 3.8.1 + tinyglobby: 0.2.15 + json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} json5@1.0.2: dependencies: minimist: 1.2.8 - json5@2.2.3: {} + jsox@1.2.121: {} jsx-ast-utils@3.3.5: dependencies: @@ -3628,6 +6664,8 @@ snapshots: dependencies: json-buffer: 3.0.1 + kleur@3.0.3: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -3639,6 +6677,12 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lexical@0.35.0: {} + + lib0@0.2.117: + dependencies: + isomorphic.js: 0.2.5 + lightningcss-android-arm64@1.31.1: optional: true @@ -3688,6 +6732,8 @@ snapshots: lightningcss-win32-arm64-msvc: 1.31.1 lightningcss-win32-x64-msvc: 1.31.1 + lines-and-columns@1.2.4: {} + lint-staged@16.2.7: dependencies: commander: 14.0.3 @@ -3713,6 +6759,8 @@ snapshots: lodash.merge@4.6.2: {} + lodash@4.17.23: {} + log-update@6.1.0: dependencies: ansi-escapes: 7.3.0 @@ -3721,22 +6769,254 @@ snapshots: strip-ansi: 7.1.2 wrap-ansi: 9.0.2 + longest-streak@3.1.0: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + marked@14.0.0: {} + math-intrinsics@1.1.0: {} + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.1.3: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + memoize-one@6.0.0: {} + merge2@1.4.1: {} + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.1: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -3754,6 +7034,11 @@ snapshots: minimist@1.2.8: {} + monaco-editor@0.55.1: + dependencies: + dompurify: 3.2.7 + marked: 14.0.0 + ms@2.1.3: {} nano-spawn@2.0.0: {} @@ -3764,25 +7049,25 @@ snapshots: natural-compare@1.4.0: {} - next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next@15.4.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.77.4): dependencies: - '@next/env': 16.1.6 + '@next/env': 15.4.11 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.0 caniuse-lite: 1.0.30001770 postcss: 8.4.31 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.3) + styled-jsx: 5.1.6(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.6 - '@next/swc-darwin-x64': 16.1.6 - '@next/swc-linux-arm64-gnu': 16.1.6 - '@next/swc-linux-arm64-musl': 16.1.6 - '@next/swc-linux-x64-gnu': 16.1.6 - '@next/swc-linux-x64-musl': 16.1.6 - '@next/swc-win32-arm64-msvc': 16.1.6 - '@next/swc-win32-x64-msvc': 16.1.6 + '@next/swc-darwin-arm64': 15.4.8 + '@next/swc-darwin-x64': 15.4.8 + '@next/swc-linux-arm64-gnu': 15.4.8 + '@next/swc-linux-arm64-musl': 15.4.8 + '@next/swc-linux-x64-gnu': 15.4.8 + '@next/swc-linux-x64-musl': 15.4.8 + '@next/swc-win32-arm64-msvc': 15.4.8 + '@next/swc-win32-x64-msvc': 15.4.8 + sass: 1.77.4 sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' @@ -3795,7 +7080,7 @@ snapshots: object.entries: 1.1.9 semver: 6.3.1 - node-releases@2.0.27: {} + normalize-path@3.0.0: {} object-assign@4.1.1: {} @@ -3803,6 +7088,8 @@ snapshots: object-keys@1.1.1: {} + object-to-formdata@4.5.1: {} + object.assign@4.1.7: dependencies: call-bind: 1.0.8 @@ -3839,6 +7126,14 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + obuf@1.1.2: {} + + on-exit-leak-free@2.1.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + onetime@7.0.0: dependencies: mimic-function: 5.0.1 @@ -3858,6 +7153,29 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + oxc-resolver@11.18.0: + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.18.0 + '@oxc-resolver/binding-android-arm64': 11.18.0 + '@oxc-resolver/binding-darwin-arm64': 11.18.0 + '@oxc-resolver/binding-darwin-x64': 11.18.0 + '@oxc-resolver/binding-freebsd-x64': 11.18.0 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.18.0 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.18.0 + '@oxc-resolver/binding-linux-arm64-gnu': 11.18.0 + '@oxc-resolver/binding-linux-arm64-musl': 11.18.0 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.18.0 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.18.0 + '@oxc-resolver/binding-linux-riscv64-musl': 11.18.0 + '@oxc-resolver/binding-linux-s390x-gnu': 11.18.0 + '@oxc-resolver/binding-linux-x64-gnu': 11.18.0 + '@oxc-resolver/binding-linux-x64-musl': 11.18.0 + '@oxc-resolver/binding-openharmony-arm64': 11.18.0 + '@oxc-resolver/binding-wasm32-wasi': 11.18.0 + '@oxc-resolver/binding-win32-arm64-msvc': 11.18.0 + '@oxc-resolver/binding-win32-ia32-msvc': 11.18.0 + '@oxc-resolver/binding-win32-x64-msvc': 11.18.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -3870,12 +7188,121 @@ snapshots: dependencies: callsites: 3.1.0 + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + path-exists@4.0.0: {} path-key@3.1.1: {} path-parse@1.0.7: {} + path-to-regexp@6.3.0: {} + + path-type@4.0.0: {} + + payload@3.77.0(graphql@16.12.0)(typescript@5.9.3): + dependencies: + '@next/env': 15.5.12 + '@payloadcms/translations': 3.77.0 + '@types/busboy': 1.5.4 + ajv: 8.17.1 + bson-objectid: 2.0.4 + busboy: 1.6.0 + ci-info: 4.4.0 + console-table-printer: 2.12.1 + croner: 9.1.0 + dataloader: 2.2.3 + deepmerge: 4.3.1 + file-type: 19.3.0 + get-tsconfig: 4.8.1 + graphql: 16.12.0 + http-status: 2.1.0 + image-size: 2.0.2 + ipaddr.js: 2.2.0 + jose: 5.9.6 + json-schema-to-typescript: 15.0.3 + minimist: 1.2.8 + path-to-regexp: 6.3.0 + pino: 9.14.0 + pino-pretty: 13.1.2 + pluralize: 8.0.0 + qs-esm: 7.0.2 + range-parser: 1.2.1 + sanitize-filename: 1.6.3 + ts-essentials: 10.0.3(typescript@5.9.3) + tsx: 4.21.0 + undici: 7.18.2 + uuid: 10.0.0 + ws: 8.19.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + + peek-readable@5.4.2: {} + + pg-cloudflare@1.3.0: + optional: true + + pg-connection-string@2.11.0: {} + + pg-int8@1.0.1: {} + + pg-numeric@1.0.2: {} + + pg-pool@3.11.0(pg@8.16.3): + dependencies: + pg: 8.16.3 + + pg-protocol@1.11.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.1 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg-types@4.1.0: + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.4 + postgres-bytea: 3.0.0 + postgres-date: 2.1.0 + postgres-interval: 3.0.0 + postgres-range: 1.1.4 + + pg@8.16.3: + dependencies: + pg-connection-string: 2.11.0 + pg-pool: 3.11.0(pg@8.16.3) + pg-protocol: 1.11.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.3.0 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -3884,6 +7311,46 @@ snapshots: pidtree@0.6.0: {} + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-pretty@13.1.2: + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pump: 3.0.3 + secure-json-parse: 4.1.0 + sonic-boom: 4.2.1 + strip-json-comments: 5.0.3 + + pino-std-serializers@7.1.0: {} + + pino@9.14.0: + dependencies: + '@pinojs/redact': 0.4.0 + atomic-sleep: 1.0.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.1 + thread-stream: 3.1.0 + + pirates@4.0.7: {} + + pluralize@8.0.0: {} + possible-typed-array-names@1.1.0: {} postcss@8.4.31: @@ -3898,6 +7365,28 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgres-array@2.0.0: {} + + postgres-array@3.0.4: {} + + postgres-bytea@1.0.1: {} + + postgres-bytea@3.0.0: + dependencies: + obuf: 1.1.2 + + postgres-date@1.0.7: {} + + postgres-date@2.1.0: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + postgres-interval@3.0.0: {} + + postgres-range@1.1.4: {} + prelude-ls@1.2.1: {} prettier-plugin-tailwindcss@0.7.2(prettier@3.8.1): @@ -3906,25 +7395,99 @@ snapshots: prettier@3.8.1: {} + prismjs@1.30.0: {} + + process-warning@5.0.0: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + punycode@2.3.1: {} + qs-esm@7.0.2: {} + queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} + + range-parser@1.2.1: {} + + react-datepicker@7.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@floating-ui/react': 0.27.18(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + clsx: 2.1.1 + date-fns: 3.6.0 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-dom@19.2.3(react@19.2.3): dependencies: react: 19.2.3 scheduler: 0.27.0 + react-error-boundary@3.1.4(react@19.2.3): + dependencies: + '@babel/runtime': 7.28.6 + react: 19.2.3 + + react-error-boundary@4.1.2(react@19.2.3): + dependencies: + '@babel/runtime': 7.28.6 + react: 19.2.3 + + react-image-crop@10.1.8(react@19.2.3): + dependencies: + react: 19.2.3 + react-is@16.13.1: {} + react-select@5.9.0(@types/react@19.2.14)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@babel/runtime': 7.28.6 + '@emotion/cache': 11.14.0 + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.3) + '@floating-ui/dom': 1.7.5 + '@types/react-transition-group': 4.4.12(@types/react@19.2.14) + memoize-one: 6.0.0 + prop-types: 15.8.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.14)(react@19.2.3) + transitivePeerDependencies: + - '@types/react' + - supports-color + + react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@babel/runtime': 7.28.6 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react@19.2.3: {} + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + real-require@0.2.0: {} + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -3945,6 +7508,8 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 + require-from-string@2.0.2: {} + resolve-from@4.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -3996,8 +7561,24 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-stable-stringify@2.5.0: {} + + sanitize-filename@1.6.3: + dependencies: + truncate-utf8-bytes: 1.0.2 + + sass@1.77.4: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.7 + source-map-js: 1.2.1 + + scheduler@0.25.0: {} + scheduler@0.27.0: {} + secure-json-parse@4.1.0: {} + semver@6.3.1: {} semver@7.7.4: {} @@ -4092,20 +7673,48 @@ snapshots: signal-exit@4.1.0: {} + simple-wcswidth@1.1.2: {} + + sisteransi@1.0.5: {} + slice-ansi@7.1.2: dependencies: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 + sonic-boom@4.2.1: + dependencies: + atomic-sleep: 1.0.0 + + sonner@1.7.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + source-map-js@1.2.1: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + split2@4.2.0: {} + stable-hash@0.0.5: {} + state-local@1.0.7: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 internal-slot: 1.1.0 + streamsearch@1.1.0: {} + string-argv@0.3.2: {} string-width@7.2.0: @@ -4169,6 +7778,11 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@7.1.2: dependencies: ansi-regex: 6.2.2 @@ -4177,12 +7791,19 @@ snapshots: strip-json-comments@3.1.1: {} - styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.3): + strip-json-comments@5.0.3: {} + + strtok3@8.1.0: + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 5.4.2 + + styled-jsx@5.1.6(react@19.2.3): dependencies: client-only: 0.0.1 react: 19.2.3 - optionalDependencies: - '@babel/core': 7.29.0 + + stylis@4.2.0: {} supports-color@7.2.0: dependencies: @@ -4190,23 +7811,53 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + tabbable@6.4.0: {} + tailwindcss@4.2.0: {} tapable@2.3.0: {} + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + to-no-case@1.0.2: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + to-snake-case@1.0.0: + dependencies: + to-space-case: 1.0.0 + + to-space-case@1.0.0: + dependencies: + to-no-case: 1.0.2 + + token-types@6.1.2: + dependencies: + '@borewit/text-codec': 0.2.1 + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + + truncate-utf8-bytes@1.0.2: + dependencies: + utf8-byte-length: 1.0.5 + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: typescript: 5.9.3 + ts-essentials@10.0.3(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -4216,6 +7867,13 @@ snapshots: tslib@2.8.1: {} + tsx@4.21.0: + dependencies: + esbuild: 0.27.3 + get-tsconfig: 4.13.6 + optionalDependencies: + fsevents: 2.3.3 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -4253,19 +7911,10 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.3(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - typescript@5.9.3: {} + uint8array-extras@1.5.0: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -4275,6 +7924,31 @@ snapshots: undici-types@6.21.0: {} + undici@7.18.2: {} + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + unrs-resolver@1.11.1: dependencies: napi-postinstall: 0.3.4 @@ -4299,16 +7973,32 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - update-browserslist-db@1.2.3(browserslist@4.28.1): - dependencies: - browserslist: 4.28.1 - escalade: 3.2.0 - picocolors: 1.1.1 - uri-js@4.4.1: dependencies: punycode: 2.3.1 + use-context-selector@2.0.0(react@19.2.3)(scheduler@0.25.0): + dependencies: + react: 19.2.3 + scheduler: 0.25.0 + + use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.3): + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + utf8-byte-length@1.0.5: {} + + uuid@10.0.0: {} + + uuid@9.0.0: {} + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -4362,14 +8052,25 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.1.2 - yallist@3.1.1: {} + wrappy@1.0.2: {} + + ws@8.19.0: {} + + xss@1.0.15: + dependencies: + commander: 2.20.3 + cssfilter: 0.0.10 + + xtend@4.0.2: {} + + yaml@1.10.2: {} yaml@2.8.2: {} + yjs@13.6.29: + dependencies: + lib0: 0.2.117 + yocto-queue@0.1.0: {} - zod-validation-error@4.0.2(zod@4.3.6): - dependencies: - zod: 4.3.6 - - zod@4.3.6: {} + zwitch@2.0.4: {} diff --git a/public/logo-axil.png b/public/logo-axil.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f1ee406047c747c19feff9aceef38088f5d9c3 GIT binary patch literal 57924 zcmeFYXIsBDeiLRx9h>G;3C`F`6lTei=AYF)*P(->AfgpsgD5$iB(lzvefPhHv zC_wO{zg%=sI0lsU#d?lE~~pr^_B7sp=^2!v7V zj+zk!a(os7`Qz+K2Jk;^9@l0dkiTS|RaFhVj5Kfmt);FiBOxavBXUDj0s`@Uk52Hp zXZ-U*cz3;Qy}_F^uj6`Los5p&VXVIsD|$`h&okOh|3EIwsNH+4W*D1u@`m8AkSx{M zlFP4O95F0e_=8=o&*Skq&IGN8h3pe`sFlul6TI6&u4(n%V~#6<12vF;$f3u--o5{4 z$mxvx=YG$%yo`!)v^jC)^eW`oBgn7ErKPto>}VWKJ{m9-`6!unhpoPb>F?eBYrV>m zUm%BRan)v*B_IY#k#p-iKP}nWe%w@qy}w$i|0AhFO1Dc~yX&&qvm2&wz1FW=1Z*YS zGs}@~JXc_E_v)IoU!5Kmn2M4++YlLR!_GE$a;N%61HWA;QY%cQ6)|1H9-t=!5qvW$ zI_qWp@R5k!8^IgTM5a)XUw3|3uj0k-cXYG1Gq-egn2VmhlKYaK-_kfN>Md);@9u8h zxrmkyaVFU)zDbFpWOg&I-<}YMZnD`qlpFi!%ko1vxxt$$(1WKYz{=>`RG)B~-0s-5vaL)V_W1ntZ%_dNwV5 zhxY`3s-`p?KIVHRGl^K zT1+9EAC>wWqONj`sKPmajJ4^HiYAsS2=lLFM{fzf{KLaW;@7it{~S^Ko9$dkdHTh; zXN5Kb9~ivTS)@W`9$!R0wfiM?^MvTrcAGy&j~IzFrG^Nt{?(y!=J|{7XU-diBmY+Y z&h`1l{eL*8j~!QKG2n_jc~$lHoulVf7SfGAaOH;)GaTkE<^_=)H4sMC%5+1gvwP?L zPVkBUne)Z`6U(FHr8fFEPewmy`|@M;#!X()XO&IykBy;ea(JHBY-*Rq;hoH zB|+B6KZ~BI zy>iLz(vkrB^4R72zu*4Qc*yLjV0L%>wmW~?r3ryX!}M$Sul*sodd^h1PY`*{($F{O zB~0qx#y!iANyYaweAPVetmU1x`f=w~;WtBb%)Kn+Jwh11?1srt4Y_-As;E-Wi1p($ zn&+;!yqr}1ZTMPnU(iv|?%wl!eS72TKJPvaq8affqpD=i@g5^*Oc}x{v`pyy>(^-Q zGVN6Ds5X!DLfjdgxMTB#jT?Kmd)|BUCL$*KCJjXXewlvZ{Nn!E52z1o{n~xQ{ThAa zd6IpBeZ75^c|Lg)y(-R0&d*(^T^4aS3)YZKZqe;r%kSUFh0l!+JeTg2;*)|oE%$Qu zydS_1toOFz^YPHE&3o^PmNL-!^{V^Nx3ZZ`u)3P*rK)q;U3OuAHNTDR`tWc=A_pn$ zec*kyX0s-=M$)g<&(QCM-;&?<#-DrF53U?=@73=aGe8+GF&t+oWT<3Z3%lNYt{EP7 z5LO%&8TBAi=At*d;tf+tCh;y=cj*S#+cF-qW)658&(3ppZ8vl!$K3pWo|Y+<)sZNW z;Jgvu$=z{$wze}|r00U(h1(Gf5uA6=_P$MSeqX zFh~gv%?kaV(P@jvHA&z~2G$rNTK}?hb3pstmPg4IK7r0|4E+3Jwiqz9%f^iSm{pQ~jKFK;`yyP_j>z4gl+3(ZVJ&t%WArxE|{Li7xA?FeE zBcma+A$cm;rue6Ux3bfZ-|D}`{H*ht`WMAZkMG!g-}UHl+)^FZeyQ!?Hcaynnd)G&+A1i!O%DDM^@A8y7Dnj)7!2S0PJ3D7v zuD-vjc^3Cd;+4p&6}gP}3|$-e5KOsFZq=h@(Ph@u6NnRtH!E#obNW}R`Qrr?wV&vY zrz#{*rW(br-)p*X?^J5;UhV*{*3rs+amR|yD#LM+Gnd9DN_l?Z%O>J(Cs^^o~hypo9dtI zy6pn%fuu&Or{-VaIE!?PPZc&u%v{@^Nl!kezz?=iENZUU(2D4MTK>G;*)>?OO!T@~ zK((j?TtC(nmy%hs8MI&#asIV>i>yr5qYoo5hXsdjRyi-{Y4_+DkxDbx|xoquWVDi75GL9!#yi6Ex!&u9o#v0|MES(UIs;pn zVP(W8ozFVv?3O>__6FtU#6WND%{x&rUH?LdrJUixT2yWE;@VKJX|4&(eA~U)W~I}w zaj%OZE9`Y(QlQ*EkBo-wR&eKDO|@25UKyb|=ywp|>C0n*ozb10A}J#Fg^vrez1MBN zerccZ4elLleN=$RtxV)O8h$05C-~jY(q{9maQ~Q3(Pe>-J8-uXCL9SSBm#05(v}1cJ(@bEAL+^ zdKHS*Ayyyt{3Oi)VpF1Bc^hw#Ok>Bo6qO+o2XC-!-v4BQOz;auT0 zV)F21_Egz`$=Cbwy|DV?)Y=P=m+;@ovA-7#2NC0UsxH<4sNJ16-7B1{^m6YWHS=N% ztej58*T3FR+2#zAIw*k?|5j8YDneInzJ$u#jg|-~+aGQO)y-epwQYIcrAFc#(Zuox z3WzCN?f8I>kNaveu*r&9o8oKuu4|1l&lCVCk4&#Ufft)&W+Sh3p%#_oU|YF*x?#Ll7BwF zW99{ci1JbY9r48|KY>90hG?nXy65|TaqLtQ+CFf5|FGWlhSp8JkZb4l?^{>anT`)v zYQCySId&w^FX$=NtNhk^RETW)!`?>G!7Y(oQ-psr(*udF5(QqH%MXV;QZa&zEVkdW{*aTL z+xv4jPpyTHrTr+rd01=Dnz7v>%uW5Kildh7`^}`J%GDRR?^vvD_@TpQ#sSYp0p@d( zJZUOCZA!JEQUI1VX-6TE0-DJ0E0}{NJV(ztyI8zOQXIVsX0)x7t~M)BzZF~Yel)Vx zQ0!%#HTSVoi6*=*7k|IvZ8(`~rKqHsiPCs9w%T77I1iWbUg4cHVGArkav_CjTUB^< zU>~i{DA(>VXQKM{h+}+FYYNW@gWp@7M4qYk8F5S?ZaHJ&?%|`SF!j>4TIc=Mc!|w}-*qm%+uEA9D#bgFfjt|^WiyKc z*a60skI~&iW48z2H7Fk}WTJlQ;43o9cfZAMCony8w@Eqy*3R=ekF4h5xP~mbx5dV8 z>&sm?su6YLRgwt$wBJX5O=`4&o`fdb@_?o3%-IF{BVtU7WOVGLJ;q|*SuFC{?BRpq z8%QH7>GfT_L{Hvn5?BaP6sV<-bOiY{3bvoxo4iGhLg8LHHPJQbM7 zE>xs95|#pV@kxk&s`r4d%Pr^jcR~CqBy6*wzL}7bpXM+W>8Rv9eSon`H@-M~1RTxp zZq0+uXTBYi1b_e9Kt^;rOVq}4+2&~R+*_G(Qy}pvUE&}xw_E>Iabj1<3A2k)vkAy% zv&K06hE;1Ftco+;H9T*CM%Ovk^6}iOXM$uHE;PtSNhQo=m=+*U$33JUiN$%}EGDY; zYi0a$h@!8a!ojF?Kgk}Wntp{I5#9I2729|%YmROSVo3M|#t~9Jslgn2Tw8+f%8)Ye zohqm7xy0p=`cJ`|=JjQMN_ohWasO)U>70#wnI&s!RC8?0Tw5SVWKQ%)flN>h@~^mm z{rf~SZGV!u=8TcFNt1dvXA;vbfcDyT*L6(;>WtREV>Tj>s+P|jiG-K z9q7k*u#h1;Z2BSzr;}nG?7TO3KI7R9Wa&qj)$wp4{E<|Rd{DEj8$Jtre>jG}Y9K)W zF;UxsG9Ti^vo(T|x4Cekl|s_XPn|FWU;fuHri4#Z`Pc(($EJ_j;vKy{^ne)4XTiqn zh5XcMj2-u%rR>hIO_0HxRqql<*~O#PPP2PrZgy=?!g z;e3cc(qr10Fenw+O#cF!LHmTtJCts(?7vI$455%=m;B$k?Em>MhyfqXco0b6ciJWh zMEV9T3?M2|^j-hEgzE4AwF@oH{%L+X;O}Iy=m++)^iP=ca#vU1Oes{4 z;(8nS4VkIc*#_4CCy%R;;S?KrI#Ns$p zjnHhA!4;=_ycC?|7$H~5`_yGOUdj_S%7e|W!&jya((CZF?*%e}#VXv8zBXz`RRQI= zy72<;rkp1f-~&qn&uia%o7%qao8(caY;TqmdO1tY!RO^BF8WM(*#+&kOo(!ygm}@4 zfQlQwKX-{OoF_;-+t*EvG#9+{<*Om`4FNrA7K<-^aCjhtSyJVFY3h1Ct!%9VZwu+s zqv3?v(PN=x+ZamL&Bay8d>>}vF;&>b4_0zwuQf>O0Kp0H<#ct5jqd!w8$x=R=v(d$ zH`tnRJ=wwZul)&-mU(xy6UBa5rcA`h6(01vHCUAU4@jvkwMN_MWsA)5uyoFvutd$p zyJu)-BOj=dh5!J4UllktgZj{a4gCj1lD0N|319Jh;5tbeTsz^(TO1+bynn|{q} zgnGw@QRbJ&(>d9xFv;m%pHueGXWJ`A?^%OB3VXSt7Aq&_@B?1@9RhA-OTtCS5F72F z!6YdxQS0`LGv4%#9s9Sc34m$QcNw0)Ya z_Ns5LdbsA#ozekfLTN4;@+W*SF2D)^Kw6)GHzVwo7PpC2|BA*7L00W(3T?H;6eR@P z5txQFPhg)tE$=6V;V=Eyk9t#iVud_0g6Jdr*IQhB`*Yz*`t|F}V7quH?EvFigmMh4 zO&C*DGm~<)Uyu*s3?zvL1Ann#L{#--9QI}aPPCJ=Vh7@&&uPxk9C*o=s25_U<#Bg- zy%jrWg4p#VoP*H%kk#)-ezyQX#GH$IItS~9#W5X$(D04FRA9V^6dSo4e9l#<@HF^O z?k3t9Ql%ME;Q*FB)Z%cKS~n;#f&LLf`S%Rj*1~Xzo9ANyp|kSm#NwHbq&Lzm<9p?> z00}A6he82HI!9Y=(``hy#;~Rbt{dyHK|*Lp4UexNzR<}e1R6-1eR-^+Ur_(2F6W3~7wx#su2OSAdl^y+ zL;B7C59p@KXp|K@iD%|EKZy0emyJ51-gON3NJ`rWm+RS8vM``OlaXOchzox!6LV-T z^~OIK|1;ft}uKN69N3oztB?;xl17*R{F zEwnX((gw=S3X7r0wQpZa{tnBMSPjN*nEcZNS9(7vau`5(SuY*f9s_Jvac3-gtttT7LHHo+Oa0Wu(I*)Pvy!!`PKd%6u7oVn0%EuBbgXfk30iD;ssKz z|39MpBmp(MwJqXKBrxD9xg0zS!{=~aAATWkw}yx`Ae>7w?yameJCmjZ&ik`|4j94j zoh=WKM$IGaVf1X1X8zP~jD?M} z9?ULT3ndZlvuGQgfceSK%XViSHL`X~h`uU>3rXc%Bf!bQ#!$P8b>hT$ax1@RLG+lv z4$qLR^PaHLa9vjXplD+q$oCM)l6_M62`#%RO?AIt+Ndmr`tl_Ga33@=^^uW`kRX)O3W-g9X%w(tR`<6Awhc9CX>L^1aI*w&J zJmx4z4(^F_LTGECZ(M$Gy>L|2p_f(t;s72@Ss`WNwmjFIA7-WssoG!Bs0rgCoj!`oii0qr0slinzT`0=8Wye z*0r|cxqCDUlZF+Ipbxsr*3aYaEadlQ0d?!~ZB>u3dHui97#*r_xSJIMMWi`|L`OVK zytxF&jxN1LbS#)s+z79$-wcX13P(j-a|yxCfvSn?>fo$_-$mTO#+rAwsgw%Blvu>M z?(66yZc--oo8$E}!T2Ko36{`^9KdZkOdfIc5ha@kz*a7W2Ibu2HOuNNIxoOfa&JuL!o)`ce z%U0V;_d-H&HBueE-XpY~Q}XIm!PE@KB0Y$Z4a^pcI#@4G5T*KH0vuESgs2%{?JzW1 zqssltAl8Sv5LVowF^Z*7#R}wKeUGd1l|Be zOPa7w{lmXIDuGUWmRX!ahh)Q0dwLu{J%KfpGLR?Aa1R%|4t&bVF-vt* zDa7s#vwp%F#yH&}=5=Tc%6&7y3zS_5WGf0-Leh7&jp$)WIPH{1ZV1@>d{~TB7eYDp zA2=f?$#*O85Lkji^d7o^?~UzB`5*^EkAu$?T;T z{$T~Bvr$Mp@adK>`tPh2IjG3H<~eZun~rs4`TkVHw99V2_gtZc-D=WEf%1-KA~khE ze8rm;RJN=5)2cTXFnl#F$6%c?(af5!-7ps5R~nw|;a-jy=mYf)iS`y&I+M7xb35Bt z0{}CCpLr!ajv-%=v7i7V;)>>Fs{7lVNgF04LMVNI5Wu57yUS7g0%F&>apeQWJC7fY zuT>K_bTG!$@8H-YKxSeyIT_~`p-zmL?H$k$equg~=BD5tdY zD_L*{mm^P6#oO|vznvj>1+;z+7D3}!a~=q$co-9?nH+#amAM)Le4KxKrIuCY#uNy1 zP<1=-BH%ZbVCu1p3f75shlNPB820?}Cvnl#U3;K(rAv-+*RIrlK&lo0a7~ELEm_l7 z&vuM=rRHY-I@QH7>BKyjPfPvV#JK2rHsFB~{Lqdri?cm_ zYa?~5dbIGmnebs2*qYqYEYVH9OprcM*?ZW7&J_BKig4o)>w7b401ogLMt2L3fh-8w zUth!t*|63lzw}-#yDwq;ARbYG#P5bo(_!Tt~5BL!2hXwD89 z2O0?qVP{aCuUF!`(r?Jgoh8lIr$eQ+bHQdvJ!mZqx{9h+8rrorS5;95C6&3jSB0^Y zKH8Q4_50lhg~s1I^4hRf8)H6}&bMDps8(*`0=ADU5niqj_9C35)Ydt)B;tp@G4`)r z{a3U-5N+4jzs~KF?`a*h(Ruw&$k0-&^`Jm4DxIkK+agS3^FuCbzom9x7W@rQ95*a=pl z`h402=&=AXSNsSmSf^@1kO4H*Y)El8;bPKZ8?o#YlKSAR=YYCkL3y$ZjS%Mk zvN$bi8YCH|YYFGJhSgB-%zO|KAvfc)J1()CKy07oy%(-dt8^jDp!G_UpNRgk=(5Wb z3(k!IFg~AHl|z?2M*Z;Io4TM~IEK$DYit{Sj>J}116_haY2US?9(`>^;-{Y`;pDI| z^|k_kgHR*T{k;tQoy1xg0T-Fb;YWrWg#|10L#qz~I(! zcbrw}UaJLO8@}4|0yQ7!uj6Qt_1{1-5DysxUhm;KJS*Rb@+O=l#={P`x}=~Daz>GH zv?Nvo@Mb!<=ace)#$jnWj!+T|Mg_LCt$>{p_n(L?)~hjZ03Bt#PY!NPHx|G9@5#X& zD5;PO@xxAdMHqeS*8f1KVE=poFwM_hjR5a$X$+sBFg31nJEsyg_~7^HwxcchzIznb zP6{z?xXj@U_x8I-t0n2B;3hdNFO;~>)oN?@u!FSZ1GJ9d!vHRbdNwq;|Ki4SUEQh$ z%VOwTCw_Xb$Uk_DBlHti=~s0QIIg2(@WCMWU_x|y>GZz%P$zD?3WAnoITUHMe(86Zue2oGvp7lGeCL3Pht&@Ft7PE4fP4f@uW$0iL7Rbi<$ zwaDY#kLF~HqrYHN&Com+^srL^>IahIch(2TjiJxF62kSWWkI|fa8Fp#)u%0pCB1`- zbX)yIVWlOic0Lj}cIfAK1YxsSPSyv_{KDmgc&3a~cMl)`0@(&|SO4C3GZ6RwE1f7O zr_abg;M48aC?ADQEl2g&eDr*Q2Co0)Ly>qgzGnq%FBQu{_{X*Kk6UsV3(>MOlBrpt zY22wr1J*9dC$D^vdQo9^@#TgWtr~}P0r&boJUo+DJr#)Io7d}|=+VlOmjSd`0^I?Cz@6Drx-sc#jq88j z0-&(1PEtkmDia5?{SY6ly_dgt;ungBqGIS5AP)G+*Eg80a>+0FqbT~87(kNx9Ah3< z*`sfyXs z3uZO3;e0I>^rTH&&cGkSKm}f%DATYM(HHr@!BB`FxBwL62E`}i6(SE%gfn|hR5Yf08itLbUtA(E z%#IjP+Z45lj{)sSw<*?Ig#KYH_^@g)t1IkLO#c&@xs3plPFi1}>t1 z3)P8Vlait2z1;XnGeXlSQ1n0qJ7+hx&fLNQ_T4X#J{L7>9Y@9Akl9pQo_Q}3;9V9f z!;+0#v$%|zqiZpn0Df~!i}1zAF<|u6hsWNE){1 z73My|?0SP43t|+UaN}CDLQk;gX+XItQafguDBXZEs8TV#zJR)vK0!9ID&5Gzv#h?% zF;~Ss;<82?(WAWnG)X1+2dWBrbTO*VeRmFI_wa%#58n5e2D3H4x$;@#sTPq zaA|oA2;WoxFVG_{2@Js&HRr9P42K?_y_@3awRx3%zTY{WW~WapVDpNzE+ZKISI7O| zh=f&{{eCmM>Wd)Y|f}TC=K|=GxKI9QaL%iFl{S3#usv2lR5%Lr=Yhzq;J4QVs zNXdvCbBEv&OS;s*oBrMTR`%%iG3>{?8qxj*bLjrLEqRv0;OMbJF>KKaIZ$b{Z45I7 z&?_)?7#D9lh|&rqLmy&Yq(70Q{DCP#J5eQ9XGLkD>87uZb9Pys--=nuVbEde-fA%8 zs?fpwt}^eu!{L(g(90z2dhRDXfnY#1$2X^Mir|e|3EVeTRfJFnVo$C9p^>pFe*)bO z6M)kB(XQH+DgxSk-DoyVF*&8owOWa)PkvjvAC)T8{rnxWr4F8$f{Bt3ek;Qb=W?K> zA_3Yc!C5h1Z|~t^iiFwLx8Vp-tM*7w~vJHg7E6on18x0q&tC)|LmM`nm(IKaWCX9w)9O@Q_Y zQ5>BM*bzKFt*T95Kg^Jb3u4C`HW+VSVJ_FFR5@gZyv6GB|d~jzb8w`GVVTXG;0VYYz zS|!9W9E?(uflEJc`^-wdKx(Na*# zz#YOO;3>kv04)0sX`D4^Rl*D5EHxXf3@}FCjN>zd$McEOAJ1>~`9nwJKtbV)ZNeE6M#DO)fxXV^03y!XdOZRj}GV zZqY-BoBg(+MJTfvmZ^ijF-*<8pdnR(Ddddq7C>*mqLQLW@bst0&0Io`Fuwlj1Zoqp zau+4mg2=cL_cnkp%D?9x{3g2^XRSROb(x`^7u3ogMbAfI@&L$J24vKj zPop%$mNoD$pm9n+KVF-WPz<@Psofo;EWgcM&>TZPk|2D zCXHL-=E1SZw0qEFTX-!n*6!}2&5$nvM<@Zs7~Q|q7~Yff=JG2j|I?!8)@UX%^ih9d zH`LS@oF(VMA)ucV; z>P34L#0dzOzvMj>vb&0vKMmb9FJ+DyF zwXvhjLb9g!iuLD%NSwVB5B*?NhKt&a%&V<*x|)JH^vQX%+T|)42DZi$C>TcmMUFeC zqb;EFj*FE#Y~%?8OQqhH_;0@h&Jf%GZ9HS5{Rj-O=RGi8q5PN6mjEhI% z&_BRF(AYwMY*<^uMVO_(gDy!vYI*3Q5Zt2XIK|jq;pcUI=49RoX4LJ?#jOAcgnSN! zmYiphJ{bH6VZIdvCHFsr$C3}Bx^BXa|qQK%b>=eyqt= zIa|6)B}u3F`aN7}=#RGL{d+)G!UD3843g5mwx_cP5BtJNzh?TUhkT^SbO<~ zGeW6`v_{nrJi-;6X`u2oc$SX49QC{Z-06fVZiwZ;aw3#u-cLLxb4xo)=+NlgoyVJU zWE;9DdvLl)F4!C(a!P@y{s6blPlwIq$s;8;zoh$1N6vX?Z3-)K0ggBzduM`%i_&4> z)|_1~qy*X$PCCp!^>5E@DIOsqw2O5L5W{g;({Y&b1-Eq?@vHhD;+MXusLM5VTMWaO zlo7DHqVZZ&@#_jyA^K56onJ#v^p#;@K(XSaWY&HXcM51|Kb;MTsu|E|>GrtbWqU0wlU+8R+NOk90iP0|m?+u(Yy?zK7?b(>SK?am z;>?QDHJP!Ey2mwlSF>>Br%>r#`Ef%^xYz0Kki zojEJgjr7imwkC}WHY<&#SP)J-@WU&ne&QZ2E+}Gy`P@==X6k|n*4 zl}!S-(oAUB*biiZ5A9=pplK^ElZ)V>;(M*EsY*5NZaNK6|5cp1 z?{`tvJ`XTd=|)riWbf(2-cF*M+vZly)^Wq)0fS9vDe7xcm3IJfKk|Z%w>&8s2`lbI8dn}-1rp%wFkIqi4FF7~ zB{trh;^OUxZw~B!KP}Enofr-KTiZ!jcfxg?*8I6qSKkk^uxcca94hh#?iJn_6^(Kx3`b-dlh*pd37nIF;^EY6nC5wa6CKi z)#;rnoRl2U*_SCLmS)&3meBRXZl$^+GIiZXq>+c)#1zam_3yeBipIR6G9e-E0P7DE zwB4$sIt z?;Y_0?owARzAJa2(%DFq#DC3-F6iRT-yOslZ|TM4G_;lo_3w#rg5XFp2Ep+zZlOJ8 zs(~H;rDIxyFIRVDuwss_d*O|3gKInh!fyp~+>1qHV(3CZ(jWfau+iirLscotr{V9J z4OX|^axW+pks6?9R=;8Fw!7)vSnnK2)DgS8oN@vff*s(krN{8~of<8-b=d3(5A|e!u>v^x# z3&tS!aX0G7yu*7QPHBq%twzCz5k@4DK&ruy0c_@C%HOuSj?jelJfp}=h#Y=uh~p?I zApPXtxnFjRU2e7%6+ldg>($Amj;_*2sDZn5mw9=Zi~CE*jH^KKb;fBn@7d59V^WU1 zM!nW!*%A2!qY14aa1vPmSOwTCP&-+0j@Mrw$sls^4qu)Z-@>gtiNmP=-8W2u3NEH$ ziHF{)Nn{o6U3(mLj?|+|y?|}eag7V^yP^rjbqD*sw@#q(KbcdyyQVB;;(o_7BR8gu za%W{tQ({U95dcJh*a4IT(Gc&;u4JnT1l^oZmo>rea#KF&Yun>o^GS@{l&Ze$kLG*T z3QC)lxZVP~J{CZqfq10;a6C3kGO1djV#dSSY0c~sZyoObTWqWQ^{lMkOT1|V@$keP zg`t4=QH?Ng#HOHC-X4_&&tc0hi_enK&?BYi08vSo2A4w|LVo#P@d} z)+$KsHV`9jIr6@svOjR}$g#{}Vr-pIGk@AaG$v{@HzUjR1ni@3*zR(Le>cY2=GXbW z-3wo-QtSZ8FC3l*R;ZkxPc+5yGP!*xe6K@|#M*DJ*WQ*-D*61Rg>8Lj+TXaVID!^$ zKLOiQHaX%v=MI9pWYlT847Fb~A06mvO)A=D({${4R=53`SbU+lsE8rU7znYE0UeAa ztgZD%&E)v}Y4cCcBcF*oy*T#$Y2@vOC+pa@VN5VD`fEp=2{u4T|87I=-osQD8aq}B z>RnPE0yDO4&C7i&!ZVfIr(OADEW>&VF~AggQp8u#I&~If{I-_LC;c)6RU}!6F#LIW zXFro_>XJ>z0%e8-4Ii>>?sUO&T@~#XU+TCkhxn05`qqcIGGRmYtR}cZ4wLVk=M)hU z(di}!u34vezC0_l`L#%_Q-VIfus9s3&cWsD<}IyEE5i=pGCcm3(_U_mobjPbs`J>l z&1+nHGas$#@r0*#D&>aX=m8E0GOL_iR*>+v^WM#wrw#^_z!Uzar+XSHqRR;@PY$B` zowq3LtKZ6;zU1}qa^o(Q*}$r=G0qO=&g$O+%OQs?kGSnae&%O0+CTj1Lyez+{u62c zT;TFFM`G>ToV}G$?TjkrCG-(z39%Sg}(3QyObam8PUjLdF@Ge0P z)!T=&?|h^DnknPBe~xT6rPa)N>oAT=1tTMEd4`m)!i_azYL%g($?XCNf{v!B73-LX z%HGzPvs=>21EBICX{T?*NN-M)I!S1H1a9CKb`aln!u=(Xq$vuOkWL#Lhg&7dJ___R z^XZt-2=94DI8me|ti zj%n;rZfgEGf&gaZE~;H5Xs&Q6u#Z z@Tf$baQnOvvj(gulTs%mox8NW^}Ni9;@rRM213r#%=>G!f>L$$-q_6xG)b{kN!9X8 z~IeRPuggbXM+L_0%d|sr@5|AI9&Fq3`lGr zyepzj!m|T8F4?nosMDk|_w9qh+%KVn*|U7FfdCsOkbPpN+isLhX3U>7mon(ODhaa1 z?nq6G4e1mgz%JL0AyF1C)3b1rKHYA5AO#)vZ)}_gH?|1)2f5QETrkC~=2-T_1NC72 zWO6gt@iB@x1&O9{p{e{U8lY2(>JMv>XHl-XRxwR@ctdTBi=}jmGWAL@&?3eBa$+XHoPqXd*}e`XX7lS(x`bt1-+p zaZsIlgH&>Xi{iBR9_*3XCRow87_|>;;Z5=n%(A-wb75B2=h&utUYkdD;W+m;u zst8=1we1qNz61XF43S%Q1^V2SajP&dI%+;Lx{dIuY<2!^e!;seV<%jfzq__-M0asf zDhJJiO8_{HicB0^kFN|4hR&xCs`)&3$}ayQKCzjy;t`9@71fs;J41_Zur$1Si5DNO zPtnuX$&z>Ke|CJ%6uXOKzZImUfA>J!tbBS3Bvz+6#T7l(hzU!$q6p1^!+==yGD~jg zD6Ouw<{4S9Dg#v+$NdEaP_P2@*?>a8AbG3Z$bIx2UCu)wXJMtct9CpQ|9PItTv}>l zk63jR$~RPk3K)@WUtMpEX39`cJH-3xI+U?*xfoBOX zj$TeW?x`Kf*S}jff5yBwpgTgL;Q${;s?DN7AUJp#D0|>mdAOY=T3K=ek3TvT)AW6o$cjGg+aa!%V#U$Q=g|_iagwAkX1F2s z3L^g$+3V}t&gEmXz6V$2qZtwWiC}nj&K0odwT3wxT6}*xL&~>jAwObm{wxp!jThh- z%Tvm2B--ku}X?d?vfDmI1&0Ny#kCMLcymZhFWuLVz z5+oq-UA0R808gDYkCSy*zP>4Is^Qb&*(uv1-Ld`5Um2yt0VS69uaF%zsS|V+s?B{O zrB{@qqSF}yqojWfuB==-d<61N_D3t|dH8MDtubk32{}{v_*uF#5{pfvt1#y|UN@~D zd_QX8<47#4@x-&ThG~ikVb| zx|Tj4x%^Mek16BsYt1^88#T`d;s}H{vie2(a)&{*GEUv2SRC+VLNcWn54;zLUA`&E zC~{MvCM#k(uKkWT2#n_(k=Gj)-G(X2#L_)4dfb6Q*+vav(S6sdgbFX#04A!@2}1E4 zuBzMb96#jxk4nAgUX5*$u3q8+ge^riJ5<4R`XIXL#dUvjEqdP0YHkQzR1i0^hjR#qCY zQBL@6Ms4#n&pjt9&j_LI$j?^RaZLyoXRNho5Rd}3`MGF?Ame6z0~7%ugSWl!4>V{E zisE`>X(>|NI1Dup2lt2t^?(S=?-f(?K~}cr2h2tdCiplUmcu1nCgQ5xwRq%iE;(4!<7HL1t_mk;HTBbE%2t!Ps5BC zuA;b}FF%KAKG7AmJa2m}4>w3Y^noK!O8=BpOxXi(!ht(#0GH|4oZFUf&kHUXfB0s7 zJ`_~4EG#;^ohFXLrO(5HUWB_$dhP(L>$ zmg|#vr%tEijx{IuZC!1%G*2ZN=?P6B1>yiEl*rmQ%K$q(it0+|KNSNlf-3Pr?V|6; zV=F9S8n9)0WD(M4U*(Myv`^78?k|6d4%NzcsaCvbl_-wgy7}jF(>-O6*V^+*{#mLY zv`D$(d-zlIHX~^U{0YXGlG(uZ5gzVaitDp(nmHO1hB$67?X1XYjj77^4dg355WN8S zwoe)J-jzesk!1`p`PfI_iU56QsR4C?4#nM{gyE(3f>SY}#Pj~!AN3Co1n$A2XeiuQ z3WSRJ46D5_;UV()=66n7(e;;k^1PuhpcLL55F^Nk4Umb^AA95Jr$vii1;B413qLE> zgm5r!#9Z;&(J)Jq)jhaNk`TmQ>a$INvYQ4qr!Nac*8=D)pA!2wKhwh3_X;?ZUKZ|1pOek%DDkE;)Xu$KtaI=# z{C=0k`po=U7cZ?%eUgVvAnp>7vI-`)8T$csAI;a-=1&r1Wdr8_k$SwEEToy(fjZ`F zWoClb%vAlLX;!}B1#bC4ziYexZLm*#;o@w@$RZj9z8L$>olPMyc4U{D=_P$zu{JkF zf8wioo)Y(8z48imN5KxW$-F49Fby#NvH9I`{N_K=Hv_zpCk~hYkqTVp%qR5&8)SV9 zqD;)Z`mt?NTwzRW&VMOOcBsk<`44Ie7-aD=xsLzXSH-cD1?1A+VJjYqW(oVK=Nh~n z^B2`UcC7d=r3(;iP1h%tjWYc2Cj6dB15F4|HSW7JsiGXmO_l}Z4hM&yy7%Vt{5hiG zK+(?a)FeNIH_DvmA2OIjBco{kaT^Z0>mBd}$q;iT21Jaay{6sVS*#=`IxlGqI3%7&yDNe|fn}U4p4M_t0!3BQ5(ewna z3p~Wo+q;m(`az#3jl3I2DpvPdz0c8!JB?Y)nNu%mIL>~8|F`Mwd<_s z#57cYL{XGAfRNAbEn^^^w-VQNX-U2VjE<8!UpuyMzo{cc3*(kI!y~Y_|f^ zJ&*kuzIggo9_JfG6;S02_~ZIgV=e#QJrJ93|E;LNBH(%Fwz{J@cJkxB!5ovn=;q@A z=2NOn1au!O_pPYZ+MR5ouP@-81f8$Qax|Lc*qJ=;zkd@#GRi-A)kZMplN+W>v zGT(z7)06o==(5{*&?E27-}C2Oqz;IRp^n zTLpQzZ4!>V?}6Kmj_tV5vsH-yhrK_Khx&W}$8n`n&$5)_i7X{avXm|BkS!FlW>-Q; zvW{V9kV++#ecwg4k$oK@WZ(B?DvaI4V9X5WduDpSKEL1h_5JJn=l6Dd&p)~4F^_Z3 zb*|-p-LLB$*v*br!(Mh;h!L*>h<^9!tO$gSTcw9H44=uG*Mpi5Gi=n?i1oF@rrv6} znS=Js4}Co#0N&rt4faw*o0JYBo(@l%pGhY%eu>F>xDi)OjLMS8)8nu{Tvt$%wQevG z3#V$B?S?oImA=6Q;N`6Gf65j-y-rm4xzAP~lz_}E6xi^!0H~)nLz;!v8Fi`-i-W@Y zBk60)qosaC8#PD$G!VR)b2Knrneus70V{5W#l4F_%hF0$UU9?V9-f^%f&hIeJN}Ek zH0w24w-~u}(s}eL=+pv9`{eI(1+*&yf0pVmpDw0uN=laG*ZRR}TGjvxqXXKtIUg?K zCzj5vM4=9U{054$JiuMv(7(Gg}P~ zhxHN#bC&?1H&hagXmGUSP+VvNZnJ##aCPu!Q;+5a#YtR zmX^G{PD#~5+oy*5e@l&wM9~yr$?6U4q@j}jXyIPc(m%is+Blt-mOd>p$zeI120n@9 z^;Z2|)t3DKUsfDA3yxd;>t7I{V1XVx1LW!)UeV1hi_&>RoGqIRf@WtN?{O<7F0+FT zngq!3tafe98L~(5K=)ZE|et!_h&HRUo8vvrb2^-pV%tp7J&XPYl6nBDT zYP#qNg40BJo!dRt5NTW@MDp*>JdO|PCC!v>#5V#M*P{xpNCbe;iYU`7;$pQg&3+{-?4~mI)D;3?qQ_xXBOIY;mFiJT z<0}GZAA$LeM|E!71A7*B+v~sN^e0`SpkV2|Lx^CGdI`sa4^mcG}Cvb(xe{rP-LPL4a}4uS{mf+X7u$vmgU1KO7k zd~#>%0Q|MvN|0g7=4av!->@AeZc2L1Z;lXyfhDcsZT#HiewWCYq7HfA(FP*}WN?72 zE412t4F=oYZn3fE4!9;4JdyWR8pJ7G*w}I%es5RDuop*j3+dD^H2CByg4pBYk@aZ^ zyY7-DA72sP$!d{iVZx1X2je_jw8H7AYTCpnLO7_wN(6*Y|AyQTH^`5@j!8{XqbA^t zPn4Mj;JIW3K}15`lB)$S59#DAiIk@~Ptd#`vO5tonA(-a|1>yqEC*B|ZV)oz>+=yY z6*?3^1t%h$7s*4PLdEinQ_oVfQ)L3knWmzlaa8WQ7U(MQg&#?Hlm=9MRccV#+A0O} zFZZ2>PC&6?-*xEZqfY$Ig=ydOU(@!7+MMN9;o8pe9ysL{X1HYx4Uau-0_O)qt?$kE z0BZy!R^JDj*yMo}L^|DKr1~iBK*?iJ4S3DLZ{I?*9Yctz}G(Ge1Q0fb;Phky}Of7X3Q?25yZiWK^xfLtvHSAcRw^c@? z5|)(S!16F|(fC-nEY$`JHulkg5g%S+s_iA@)b9NG7YruOlu zHt=W<`J(_A%*b{oIVCaTY7l*uTtwJR|3wd=vlA-|RXIIVl=@oIGELEILm%-t8$Z8Z z5JxctShv#-dNKM9TQc{I${6V@m{Vvzz6k7Z!9BgWdYFf#)E17$F7<iLHjGzXk+zl9@t#(*-4Q zi89@U^it=J5Ku_SE$FiOYZCInj+k=x{miPig@L12(Ou1CUAjQrt0!hbtW6*k9N>KOa`t z!k^QSWLerH9&@OwnRmA-RZlg1suZNUP=G+TvDAn~DAv9L0r7YA(C!lTK$QbHT3e1i zq(Yf2{yZCycjg*oxxqktw4=&O-=fiCDA*Gl4(nS9f>$9A5XWJEbKx>@pvwHgAfx^I zR~xWiMo`@elLOJX;acO(h#7Zd4#f??zD(Ns`AJHVl-Q_C`L+hkC!r3q4qHkDpehcP z;OCqeryIVJ?x=W)u_wUQ8|e>Ft1#GSmDG5WuQyS+iFV-gF+d4lB4?L@ZX1b1QHh|JUVUKGSA^Q+QHKYPkU zt7q>-Gm!SaL_tstdE#9oNwe(IZN@Ci-iDL>r z6Qt9m+^A=?exBvP{`!WHQLJ`U^*XlGWrs^hd&7h<^kVRA6IuSS6U3r2wp z-iN$!rHx`2Ch4_(7Yx$tP7O!V0Q&J#NBOU^vaJs|W*!8yF!P+2q3*xBW{N&{8c#}7 z^3YunkYrxf|9XMCZjb0Bj;~y&kz3;a03}go;&`h201Ual2z*Vq8LD#(IbTHEUnZ)! z{_h!aJTRA%M(rB3<)2J9bw~ZidZ(48;kZ<;nWkhZ2xGT=u3RH1A4yLn0bRDUj-QsI z-tW-}knUlPOwMxHz}a#w8;>f5f!ZY1vL#( zr7v;;d~&aRCO~D`2Jg9+6a+NQGZ~zRpX%NIS=>Wi&azF6Mu&_$ z>lo~DDQO=YN2AwSzyZAo*J&VQp@^9pamJm-jG9-?H?~g0;9GHBe+DT)X{Ia<4u;^# z_ibngL*2nj@<1UPEze`6l5}GQqL`y_KIKS6I&7@|5n2-vZIC#S;h{*Rxtr$HDaC^+ z-PcO$`g2M?Qz8%W*0BvKZ3xQo4y`f1W=<3lYJgu&Taodr)XyS#jp0;jvzzZ~;3-R0IubTM_l{EA06wzs7Sj zN5}%Xtxf~_cv(F1Wv*t-CwrT2)~H5fL}?$5CQdH{lDBcau^QeeCihZ$S!_{iOm~S> zmU;2(*Q&UI0mT8K^8d=0`(@w2_LwpE$`VSZt3J!^syluQa-r7aXDk0JX_f=$fSAb| zRGbb>8?1*MWe_k2f^Ph$WTdFxGfG9N^F({5A&?$5Z-%dYUhzce(o87@>=gnOO@>HY z6C>^_UMIROpU(n+hO@8hig6NeRH|_SXE|+kLA=qn(er-~yr&UJtbPt-Zp+uwgDRR) zV_ZNffJ+6yuV)onkYW^W?i8=U6i(($#B74GIP+ zR3eUR{l6;7lU?F{mIN`UzHNExS`?&5)7ZEhadF=581|Gq{?R}K`sNJXbYxR_sr&f$X342cs7WJqk)N;D4KG$;@Pnc;B>9=ZL-U0zH5Pnt*d& zUa7uOOFudPW%+GxL%AGK!B;+sv+)KP*^$=fCF)foD~|Dw8$!#%PKyu>ONxp`(fuCs z`wY{Vw!0uNF9+Q=Q?SP#nIwbVQQ8=^$2*quZ~1iwQ^%Oy9^lnQ1dD}j1Xgw~J0{|? z^xwqY14Uk4%uMuPliMU=mP(RugHBFQ9W7{X3KRpN6W0!7ad9}9WWNs#qxS~5xQG9z znrs;bi<0(gR_V+Uh7O~FYK%YJugL1703)rLm{8K^Je z7+&yp>G%_*zM|emP&-w!pV=fV^h9wP@Y`IVZ9a%@%41!2|B1M-eh@z>_$=D@Xr`*= z_G=I}eEm7i>p$1}8PHx`1ggg~ZcBOW#_hZjy@7n8gPDgz1^6~#?YSR{_jOa_C-tqK z|Me@>K2U~v?}6hi*B6aJy$|(2df{6BKbdhFlb^@mw^Cc)MIzk%tveB*#Uc>&D1_f$ zvmYT=0q>Yb?H~d6oftjzw{yfC^yt=FYQ{%uV(uwfUjlhXZ5P8?h%EH=lHmf^iYGV`Nz=R9BR%xz@cA%$$lisDkF1$C; zj6WCa(kzZy^_fQ4amsDiudMXb5V}Jf=nBuNf3(FgXp6M>V(1oyIZ?G3RL#?Xjr>2- zUD`<>dB)Gi&I$O}@`?W{^L`7W9&He$g-XWyOSSY4Imx=cNmW)4O~fd< zV2^=tr(-~|7o~)ep?QWEKf%5cI5=--$%(!P6L#iXKx6fy3xUq{_{`!rB+K`DMn;Bc z+{SHjuoDIIUqymJyH!5$pd%h~iZ&A7PN4ax7rcD&R~@#>Ce~x_uY8$6L&}nx!aePZR;=82k`RYFxcizHcd;}?O?#4)#{2q2ECwD#_Vw6Vv?W1}siIi0 z%Ek4vM#ZT^fq8*8elXqf`h)S6z3!zmOXnb!jno66rgAQ-G3pSTAi$^@0-h}a z*AOV1?v2$gU_kV;5|HWbbDZ6)>#55J1@bg%s#*&$b|5`f4O+0Sxkl}aYL3crvX>R- zN`PAgx(HtK6F|x!GclWkPpwXe^#xh->B0*Ni8A-ljZ}Y5+smJiKsU^862#ZZ8*Ts& zJbY0dv_)6SHC_gd;NV&bfG^@lwmyGJ(?Srtfz^44^(9r!P&Xu)HUc=))cu$|`^S4| zx5_vUF(A^v!-*JMlyKYUa63l5+W}y+Z)+7!Q(uH~`LiU_H5G=qnt-eMwg&n{9dZH? zEn@|l^69zr@UJp2sa%&Yn2yiZ8&p5j=^^D={S+GxZmMVUq;`IJZ;hv%9?Co<3gtpI ztCagXMkvzH0}MFKc6VrNi7x{`WQiE1Un-oBx-_@Nugs z3kUiaw7nR_9S_uH-4EU`QLn*S0&t_-ome@LrY)N`UH{?v5p1F0qR47oOw1}En!yva zmZ4%{VrF#MmU0PtdvxU~)efnswdGnqJKJq7ns zciYp4$(Xilc%AsB6xP-{Lc4-Uxeqj*T#RvR`12>4!G>q%$RC^sX`$YJJFctqD}|fN z;nA&AdwZ@kC#S&~=^T>K!}TsmP)P#6D35x;giVJ}9S`{|Nr_%!3Zw{8%+dDSu!Zce zdTMdh3D<$tTJ$=8G$$FW?ntMQseyFyw&bDmA$042ES9}WnYBPedR8Hdwe&x4-srN> z0E}h$fjcezD+lQ>HW7w!$)9_l)3$fc0 z$!avx%2>mq53ZYNiC;t`5JICASR=ZD?wz&Badv(2?eH+s&E*ZaT6U z1cKQbO%oHeBIVMc0`(T`?hE*k*@xVqYnSd~U@|8HG~Gl*Fj3;s&^!JEZ34DLthIIVB-EdfOAAyUDGnS5Skt zseq~LpWB);>Cu5y`?`8DeCu9d-HNT+_cDV`002Q1BR6F{tXy@I_Ib%E#l~aV=Q~bfj13{(b`c~%-md+LW#=*9CT97 zMikIXLfQJOT(3bFg8p+!kJ{FmEoJ6Tq5yF;w5>B#jPkcQ)Ey0eKOo`;d*r?U1W77BeR*O1Z(bV6`Kb(+7BUZ%DvpyF z2bLz64%uOp#>|sIV;LBm)^Z{cw)PxmD+=>Q?=*LHhNAWwL4iIZZ~j~g&{u0e*WJO! z)7ir^>jX(pYL|u@+I5>ff9@vG8t&n=Ep#0gG+*Cw^-*U~F7lY*PSFpw^pV2Axcu(A z)l2hY`*i)fW;Mhblz!a=b1{vEf1+3)#iozVCyCV;Cc|6f043deFmOb_V35BtH;KY? zn5yNr95#k+;d#pxXuh*EyvoW0>OFqSv$sfv!*LN28+0edKb~NiwM@aVaNiL@b92+} zbYk9%=BcM1`gjTj@eFdIdJvse`)a2f7BYDJ5Y2WVI~9AHjm^5a?|LRaYwHWFD@jaD z7`5*Kn%1r_2n&(tKJXaqBBkUq*eGz^*dViLs%}rC_Z_`!4V#nGf`on`fd(fWJ2*3P zBn9ZQXdL9lKtyg(P@Ec+?ilAi1YR_+*X;x7@5_OAi0kRq1du`pPI+Hjyr&TDW`Vg# zL5hQW^9ET_Jpm&+6wyC@_6t3;GC{H+ou7H0-bg&j0I@jJ?VY^m|8;4mMK zn1m&mrE9_)>PcJHB=`N59jEwQ)A>Gi_TkS)sQZ|q&(Q5&7uH?iC2Aj{iOsn=O--gi zL%NUR^C>AdDHu?0K5b&X)9TgLDqm2bJ|NUzyR|rQyyE(Tm_ctB$j{mQbNv^0WE)n+ z4AR`3hxoNuQpT>Xfo?yqvZf}y0X~fRNZ$O|Vv<;OX)=7oG*c%&;g+J+mg_3S*oudB z=BS7;v3Ti~`2r7_@JN*GYzEW9DI6~3m?AFCc(~&era^mcP;AV0`@pGw(7(E5K*XL# z@-g;8L~7}6*%E9JR?m1 zUeaV1FY560W)47uy08pVUhb$I z;DN2Kxz#L@4KUw0fR2~-zceC^881pv`}JX)_Gvv;MU;@0EzK+oTWsh0!Zvh0yg1KF zw8{jCZRVM&--|KsfwL9ljnt{3xf6*to(kCL4dcXswr|rwah?y$l+?=cTueD4F1)b) zW?z2M%GlbwXAJb`XGG50Ab2oWYzF~pNCIgj?59epI{j)c1E%iqHF!|vG@zAHp-hk7_~1xA zlDB;y+&UZx(x>GkS_da890`G0oMJ%je$aLxK>}oul(i|i#XtS9EUnNZ$>I$k=eG3xC zT@!Yj<+2)(7O--Q&(%R(x*xE?KXBF+9~a=I={HIt8SIeY=3f6?toA^79Z>_66MKh6 zFU)eq|2N3Q0!3fEa6a?FXz?^?xz4bZHlhj^JL`o(;NFKnEr_%9aI9VU-DhIj7p@yb zZ!p+qefZgo<6t}$K1I4evfw=+@*+?vNw@ZyOCtJ8ExjB#kTR3K`Mr!rNzv8b(REzJ zSU_E26K~u!a$o%Hd}o)|T^07cK&K&7i=ZQPP z?2I{Mmqiwm--TrI zPZlL_B{5?yG%<-Dhebc_r;SW@{$w%5W*xW+~3{@O{aPH|0YfW6k=~Z-6g91h9DqXT(vMuYGIrAz%}m-j zx#G1tsv>m$FoU?v0EZs;6-PYqslR=FBoY^XMZ+y%6Z56Bzl69cfhHfl@r(P*EU~@k z{N7NjvvC+N(d>Z;Wpuxy2O1D4aAq~N@4z3ELI=Mr&Mf(IpG2A1uNj5P(4}7zBEojI zent6>u^&!CO-no~t*bb>CPiSd`)dWKvioeh)>k~iOD)7@@Gs}(E929U-=U^~?V=&vyMw^s3DC^Z!CnieV!yp6-OW>+9CivB}j)k*-bB$+m_m)bI8vCC(zSzjx*#m z6k*`JTQg^eHF5v?S%tCdy)|G!5RO-euvsB=A^6|k8179K++IvoPX+NqjkK#)k|u({ z;45}uKe73{!(p;xizndEZ}x>Ov1if}og(PEqtkOD33X*dsqcQ)@dvsAd6paUPBU*53t=hJ5uHRG59KMM`9Qn|A-s*rMy5zJ^#Xh@~^d9q-G%^A|hTELs{pM@!#!GSq zJ2?3Ao5Dv2h}^i{;rC@|9js3prxiZA0cBJJN zjLY^Rt`724g9M#Vk_j*fAWges6tz;gHJN{mr?Vu72nGm@)QI?z7Y`e7;n`suLI)P! z=sng*L)7~j^^;e0DUr_tHu>th0|`J)vqy+cdWjHT{0t-A54H-uFa#-Wg}adyi%U&M z`n88*j2bsX(>^l8$8hnD$Z0U)d)sgK7u^mD54V@)(f*MdznEUy7{z2X-om(=T#;J* z6b)f7f_$lJ+-pb6N1FKgFBhy-h3_MrT!~irF>f?E`11oP9Gbp1cf0ko;#-b~N5S4U z2cP7iFQUpTBNA3Uqo@x!WSg%K zO+|#0H%@*u0V;gnz%CdfN}R^*P?ajLFAuZVYBK^x#%#`m z6Vo6+>-2u`iHzms2Wa4~Azq8@b>;ep^cGg3MfBP-G9~zD<__fXBfPOqRL^Dh?=J_ z*iFRQY|osn&hQUG-ai<{+k6@wwUG!oAOi{B7~tRPO*#1MP4qZFfu&NuaQZt$&5uIF zw7DfI!&orD2grp4vS2NtHDIBRKkP2;R*he{)++BIh-NS%3TE$#ovfO z!mJ4tki+}%b)#_2egt`gf$m8X>G+O||6xLc_OjiOAaGupli>q;=N!fy^F8t6iu)Mb<+?p+(0N= z{-`A9QM~f|yv|R&5^)PAm;<`N&*{UCBjb*`pWNdV{n}Azdo)7jU^4X)adre^hdhiX z`gMC&eY76o>(VO-xEkQQ4Q)Bj^IgpiLh{E>;l6zReYK;D;;i%m8sAt&-e5Oag(RSC z;-F}}i{GLc#SxRzam&Jg7EYG+-euPw+&$ut*>BIx?xMc43~MFf@H~T3w*lLHkL#ri zdk;L*RXIvM$Nn|U3|-*WO+@7Co*BMjt&ab#=EM9Y0dh{;d&qSdQEOm@H&K4Qy}Qx9 z(e-)d#yTzu+97<)^uV=YuGQ@XWm0~=!mvjTcg;!~BU&(U01@Qoo>Kc_jfYzFeo{@| zq$Hxmx~8YyI(P#PF(nUU3tt?W$LB}OU!}BsY7~>Ln3=u>aXMTNffE>K5$*5;odG{f z2ZyWMWj3|Tb*jo){J^`s;`Bds(?NSDQ9W7|QC*5OtwWj!P+A3(jhlTyQvK@PqHeA4 z7y-X)?n%kIwgc@Ri_l*0udBGDEM9PEUJh4{J~Wj0P2&Gz(s;eW>mNLDVAGYS^S#xwp|{(S_@+zFWiIN8e23T zs0y$lAb&wb_8~s?OGTbNqLwTP|1=_X!*~xbJtzv$d&&KDMYEg08$H>8KkJsFX1V4< ziNm@~!r205;B1s2qeaos!=V87RIa1n&H^PdhcB)-eq>(a-39KGu2dJdKV8*bwfV;- zh*Y775x|fec%!FAG_UmCuF2@>u{_2jTV ze!-LC3ga#4#O7e0hrtEo1`)SLgbu}s7>nDmB{m;tCGUu_QR+xNhc64wjagD$Bv7KK zpN2UXtLq&0a(jM4iv+-lDDO?1*_|1IbPn-fbOx8Z*&Yl3OGlUbD#z`x4Zxmy(|`F$ zIzXlWAb%Y_9eTs8v<1o#h*h!uOH>1j<`{59AjPMC_*9Pl<+#DmcUgj{2QFxzb87$l z`2R}g|LaQ7?`7mvcz<5L<_WJisZx}!phM{@O}+2(AI0A^%o*@mw!}MP+eZlddSxDq zDZImJ2lI@)2hJM#`{r@5F3LON*BPkI2ca3to&zT3$7SPGcnf^$XB}@Fqh}Z-c3$c^ zk|2S#urY`*&4R8T3Ti|m?lCCs%|vCQ$v6R0JhU+&i-<3H_n%<}j^f={_k$F-4%6#L zM2jLWiem@@(^;Q$$Z3ftE$oDM1|Sb=T{2k+MKE&o-@A!VW{QUlu|&(bRj(+q&HlB` z7m#CEyYmiRybpgG5}mLgln4^K_kD%O=Q*Nb;u(FtX+6jC%u&HJ(W> zoPWQ;tY)ipwd+T0n&v3HdC+)J!_}|_g}YKG$7#X#W51>q3OO2GLaUX5ziY%2AJNrP zwy^j~3a63}UY#uBB%v-|rG%}qa4o*1J^uHV>5ss3P5+eAo>Mp1p8Nr~g;jwI&pwY< zMwQm9msCG!rZVZ^({;yIiK(lPI(j{WidNEAtLo*IY#jPugtPBfGLJ97;Ngf?8rrJtdEfAMh8Aq$6o8)=9=z@N2(`;0^KKO(MeXDm727`|A#LkZ|RBQUi*Q`A6Se#{{2)Nc}dxjyH*LJ2O z+VuU44fLBeFwyc=LaNkCC~&a${NgzMSI>wuFFn)30>i_AXwZ=U#v~xQ?%d3?GwW3 z3_OtH&L}+{PVLG0VGd(X#D_>}g61jeXdZdW?C7@YFWssY_>jb z?P$-XzJt5Dy;2OVN}99(N3J`U#BtzWM4B3WERB?=&xdbbJS~Z{XD{kbV`BT3oc@Y> zwI}$j+_9ZK0-e}8EfOh((|S0F<-pIK=(BQ?!O>e3FWdw#=kV6v$312F&+hX5a}+OH z-9y_l8NaHxwKopwzi|!!nOCWM__K!hOL`|eLwDL?AKm{M;__v2-cRIb#MiMMiG=S; zi}?z$JIH`827gP*mgMU2Vh>xhK7qwP%RyuI1b$NlkH|{EUt@}x{9CO+(~Vm zkPR`wy){Dpn3gvklAZ$xzNB=V87{Gv0M8-;ZHooeBH&CU9l?OG_jZ>vj&(*H0bJq!t=*1WO}<^d5^Mji3On63 zxFpW20tc!T0W?&wc5kf^wlQQd_}PNdW;%-@_4axVuXX%bMjy?qTzf=+MaTHPU{4zT zFB?bujdk987Cx%6ua5jk!R9(<>)-Wz;Mc$*j$%f3F1*KXuCGEanOlEKNO54w>I6 z>^tMf<$LVb%ZJKsf9LHSmpCDt>mQ+eWia^Fu{2p%S8zjgg3ydabjN&*1`N3|r6*!) zj~&H2kk+h4J@2pHWqg`2+Mo*g_t$2~6~?;eGVJa;?{FXdQEe(kvU+jeBQDchIbtc* z;4UQbD`K(z-XFrbO zzuG-cxG>|neJ3&nNKw81ul8KA5^x>X+G!Qjle9Q>0WXh=9n}PalT1i|qKOu0pq4>~7jKtWIU?-;UbhYsjxJdEm7%VXiD4xBY#- zDcb9Js2wpjsE}cKWDmcpUIEuGhhY{xtkC4LyN-X*EEN)G2GgW$7Poh^4AJr@6h4Yb z^*^Z2)*!GZGb9EXI1c+hDE(LYjYa;g>YUhP<(Zr zz2J|;2+?WLNim`^0!=PeIITi5%r{UFslr9C_T1A6Q(ve%*V$H#@ekg1 zxR>8$79UuEZ%uJH=c8=o;+h<{F_s|_FP@09%}`rqbtt{v%)xj!hxl`UJg8{8D(I?h zFn%#~-OvAv5R^FA^zvN7>u@D}R03wffMv=ow)Zvnhu7X^?tPGx-DAQDf8A(lUUm-` zn*11~{lCVbD?x&Nqz$ce!0*MH$Hqg;K#+{|Ort%jX*4D3dZLvWdp??>K*yiu;&T@+ zar*hQ2}!~-=DR*c$bfbpi66K)qZcXMksGSIDYppOBejCpe!aZP z-o5OxeqeBI9A-6HI%j%$m&g!Al)Dlq()i~sKm_Mw%VnP<6_)D6GCeA@dyGbP@?VXO zb6^fmKD~d6i%*LH+`(0-p zelW*(yh8-YY|YPGRooy&sl4#5_q{`i1?0?NOCDam?%HEkYfjGx^9O6VM}79UZLNbJ zCDd3uXRDu+JVKTonDlw~Q=wmS?d4aNWH;+a=Q@vcph_KI6O~W{Ux~!_{^%dmmuB$4 zFR&K@71AvIYYxlUB!Oj1yH(pF!gSQgBUqeOD)}s`S4v3e5x-%N-;(IhmUH0A$(*7Q zq|ytB<(n6)c`)=ALP%`jY>weZ9&ncs zy9*fT$P3XYZ=4@I*Y(b@D#6A|8iyY;ND)yNnb5FBzK#T8+xJN+R`DP0$>jR#se4PJ zK^LTs}qM}6c3T~2pc!Qvt?C$r|Ij ztjqg%=xe->?`w(G!5%gwkY)Oht--FvJg(aix|#O;sPjH?C)3>Zs9F^ceWf$?Aj+mf zVx{-NQM~Yipaqi049~L+K#Z227ME;RCkn1cfUF}1R}EIQ$ImE8t=DlWmp#;|+^^e$ zZG{@+EplVy>dctF zB6XnLPDCGaLS^?6ZZkZAbvRP&{PoC#^(-C3m2{4aZqXK1ev!SCOwJwbqdcrJTz9wJ z4WBm5TZkrgOe!@rMDHC)#$Ul&B*G$}dTZ-86t)3YHDQ%J_z-*Q{uhb8XL)CKv+bd* zfwzx05l1{${g??E&rU%FCT|c^(B#N-T&wrr^NBZ}LxPQ+_||IDhj?nfeBFuP-w3vq zyb%EJglbxrgz94TB2L?!rbfmag_P;4Ov>9rB0+zyH8^vt9Zuj^ug%H&qY=r#l-Rx! z*({fokuoBO6&`usrjy(KYCptV&&lQ-^N%Z=N^8=q&9#i!12a=Lc9vkDPnNHNt=$-A z6Dlmq8(2Kq>!{|5)3!7a5z4$(juc?vV~w}DN&#M4aU!!5P)&vzcWyi;CayOZ;4Lofqx_ zwn7=(!>~xeX}54l=B4GIdHx9=I+L*q@rkllHx@$r*4QVX>=rYXD_u~P<@#nzH#gKH z!~7Zmb_K$dhUE|h#J4DiE9Sb*Me%^oms&oalU8nSenuoQwLjY`B#K|NIdxUO8j>UU zn7MQ8>NRPXx9R%_6Dd!#+?AAFtM2?VzU1j5R6&}JVXs_CWk>C8oZ)L~nvuS3GhO7b z!;hAy=X>r@KS_&$ZdY$(;$KQc8})|6PIbzw*&;axqeL2Q>CNy+PzLFY^4VF91St%I zG4XeehN8c6jLqsTUUjEyjmoFEzJ=6+yhzGz6u$m(%v;(bX9{X#u=aksmd7ntnl(CP z$Pcw~uwPM~$oz7vsOkCZ;%Xj#Rk@y!4FT=9e8$moS#6SM~)M11o^DVN+G zPxydCN*<%46;f$m@D=gKi(fiv@Z7DkvhKRxGhYdH69%%Xpq1r74$5&x?`-4 zut;zvi=7uu^4~M*RdPC0aTE2pyG}u7p?Cd4O0Kf);U$B35lBQKQL>tdRl*;Z2ppsC zPw;ZP3Lf#p6JnwkBet89eGEi>I$qigiVKM)@UWi#-3!q&!S@hN+w(4&J6?ZwMlDQv zqj%2VxU4{WI&NBF?Xl%PkT1WhoL{^V?pewnje1aH=w3n5H~;LKz%vx(2H>$h5|gB3 zMc;HezSBE#5p%-cb-7ya?)t~c+w5(qj-my}(?!FXiCb3gifyXnr^YULGFsk5?8O>+ zuM@{`mP7Ko(+~Fp;1uulXU!1^#*mF=#ik&qD|>V2?a~xEkyk z*vmb8?}gG#^GpU$@K#g(T!BNfeVYks(g4q-69#Ft_ENf6C~YSyz$-yum!H-C?B&7j z$#N9W9Mws~2;^9hl`#y*Swjj45RNGy_qbv9#(Hye-VEyAB!j%x<#Qp-zu#r+bfS#f z6kiGQzQb&NN#vQ2FMcXqI2=JTv#E@X2aQDfe?Rka#L%In-Z1%u;LeNWkW+7PR=f)? z&sg>@c=jbebaIOKf4O_wY_K8_fy|m8miS$HW3X^ZUbvIZ{N3cy5jhJ(v~c)toc>tF zi?mhSAZp%~O37_mmFwUnVh@r6j8o+I|5Z7gefNR!n^!;K3eAh&KRjie>ry5s4{tn{ zFvJoj*0NRqw1^h6ChJKV!yaXE2%?k!v?Sh);&3rukb=2jo3(X#UfazR-M5B+Q$+R< z`8AA@QMu1N;<64!P4XR??${zv3H8z_h<~#4vhUZ;2gh{ZPbGgAu=-r}pkRJD$k8AV&9ziAIiM(@C$_vx$=~E{(clM+J(oMANj$A4eV|uJzV#Rj5Wpb;3*g zBG7yzHJ)EBPftbYYPtTd7W=VfAYuV>33lzsy#u-6^dI9v_ucCo1LZCl=j=V2F}&=4 z;)fhpvYU&4%ZE7`N5nN!dy!(u#4f?}!{HdOHi-oUs3-LOjxHgSY$v+=4obIvLif!kxmT}uMC%T)X5!ko zrqP76E)&izyTaYSH&AYwnSx$=PUG$bw!F>XHznTOeLVIM+$;i5SPQL$&QCj|aYA87`*Hi!VToZBoWP82zHD2iD&ifL$+m|H9 zLgp0MSCGy3_Ro?lo*q7mGBn{CDm!&wqG}~I4M9R1~+qaq$Xs!jY|#^KztaH#exLs9Rv+&TM>Hx$8&Cjmbm9%bp?dv4hmU-^C)C z6RX|{M@Y7hZ?RhN6;;}Pl>gV1oWW%<0xt5M_x_~>XMV=yQa4GkPPTt8J;^N_&8$+J zrzB#{ZcL2?15)p=049cEN}MCS^2Z~YJHxj{7BTJSNyYg+&J~(O~@{6<9!i_GvscS z-$wg^cd?e%DJ~%?ZAB!X&f^ZS&m)DzO6j_I4%4>xj6TU9EvnuOiHoPQ@7g~M+u;2a z9!{S*torh+-<94Q6mhbzJA2hsk*XwDX1M3E06U@ z)0W&&NHn)1#%r66+x|(JQgl*!A$(?w$6&56;=OZ)$^?02rqX-CZtBQ|i$+N{7Z#gL z1!j^q?k$M>lfS-*d|XzAE7Q-O>)DQw@psY2&d$cPY5i76YC>tGah+lg+z9=3X>vWI z4SSP^pYFZa1B(HHWe0b5cpezMBAMPL25@lO2?Xa2xNX9!9xDxa5vKE85pB-PzANc~!`c;cD~i z_Z#YzA)`XD%%0gnexFCVXOAKu@j{bUf39NXZnL$h76KjHCB0v#vrku&zTLPH$vM+l z@nFM(ZpGwuZv;D+^M~kD?qM+3FD>#_GP$xGOGvhJuda*LKfanE9lP_~OeN{3G`)=;3C)pjp?X(#}{FELzRf#(;X)IkEa}-SL$Hz4Mx~Y)>6Sf4Q`_X48p98Ne~z zLd{G^^yY15vLx$ie6X7pzU5hv!EU@Bu3wk+VxYJ+sj1jbQ;QpH%*aPtYN!`699=%~ zr4yBgZ?MhkWS4oxut(GYa4Sj;Y}|syvyRaF?-We#HPiFf%~TZ<5>DwpOX$%m3G$Vy z4T$pcT6=c@eNYqCJ5_F`>fu;0%QL4^ajJyjb$%zf7rFCUvWlg#5L0|d&8jNYF()6o zx}H-OK6U>?k)oTDsZ2tje4WnFf^V7C*7~l5B&&SH$D6y!r@4}ORZ;{i!?O$e0ra`CZliHKfHW->jECO za*L2L(!O)I!-h9HkP=51#$ zboTf1KZ!t~7EM6HV%0oXrA-gyZ-ka+^Q0^N z3zZKnO8L1|h*w@6c~ljuC2fc%`KY=r+_x;6t(lq$sjamjNF();sf_pXJwyDni`E%y za2fU9o!`I|<8Kjuj8^JU?e>9D%%w}Wan?8NW+x|96Ha%wzy1clM*mkGqU5Ux2?XOR zUoj_sM81M-KAAU7drQTbSRsnP$=d$wi7-eBzvVtDTX2c4;gz->g)4A0tF&pW#-X$< zUERMgH29kgPm5}c-LUZ$xy_Tb`b&d+?_oIKZHQ8}Mf6ZgBA4;P>#)k={1)jWP;4;X zPSbCE=7{9$%>46^r)}kAIP{94WdzLS-L>W0izO;7@o91IfOB9>7Kpz|Dod-+cw>WM z=jmOT0$l&WTT!JXTLel0Fkx30LFR2uKg-N(H6;jk&~$!u=Z(VBh*`4}R7GDf8Nnnn`>QZrbs1 zI`X@n$h&jWfi_CitmW}&y@%Xw^rb2{$KT&_uDoWz$#q{G%=LD2`flcbzh$#RoZy2+ z9mgxlXJ1#XgxgjnvAGrz=?fBU`4|4C@jG9%ADryfWDkdp)ww+2eVjYfc{aZ4R*VR* zL4KZg7Jr9>=3LOA;h=+ZO1-Zx&j0c#bJvTnpdz3gg--(b&%G4e()6_;IL;x*d`5kJ z#&6zI^s3dTgw{om0I6Sda>k97(;)BI($*40M@5%bk zbWSYC7UdU4ce=%D+dJ*=d>nQ37R!-X9oP;co^j~vvk*yv*anD+emH;ESc}U)ALis` zSQsi@P!x_&08{w{plC71%8pb%i}dQW^6ybe;a!VOZfX5gQ{^8oKH9Wi zAwGR??4?zpcpA)qW+cfJ;k;d=S|2e$C)cBvn+bv{P-BPmO07q(tq(`Y?Y#bsSh79=2W~t3YP=mxaS0w0gGU29jN9^oxa>j#@z*)EFm+o zHF>YldqTHdV6Z{%zzk0+o>c)!ABY0N3F%(LYTO~lP6E5@&U%zT$Ca@dkFjXKnN1KNK`->9G^K1`|U_uYd; zIq|e#v@9m~K2RCgP#B>`p}UZW!HD?#)kZ+G6Ssyjr)ylVl%r*(S#H7Bx(p0MuO!)9FqfCY<*_QaXra+R97KHPNUa1a-G3P=y%1Wd zn~VEd0mBp+V#!x?i+qZ;Kq+mY4%SD1c)KHZ%)^-QCWOIw(fZc9y5(Ix7|?3z+gJH4 z1*yqP9y~5-G*OoC;@Pp6tk27^BhsMj#k%wt3oF-M&$ROFVGb$l^DptrE93s}rfw%U zjGaxksVw;rR!|1Fehg>1KXd|{#P>I@W|7nWeXtPPcTBhr>1xyx#bCu9p08^?eXZss zN6|*|iw0J@Z~w@GRGp%Q+nY8v7ScUdab-2;H^_*+G^>(EPo5mRznChGV`Wd2!buFHw7Z8a~uS{oer;!1JnI15WL*Vs$L z@G|Pm#>WeNl4f{xURV!n8FQ=*E2^q)Or0osY_8WeBcGI0v~G--F*Tc#+C`2{It1gB zPW6hZgl0WC-&QXwX>U7gSh-&~4fl*<3@_N4|46J0e%5RcHq{=Kr9ZdsKJv^qaSrLI zZTM1r5x7c8kPxD5{4kBrAaWOEzeSH0!UT9dhggE={9Y$aTIq7~^I1Yn$6k)|Tb{mD z1UhKNG~G07Zr^3|P4^AP8_=Q$b9OLeV$#>Kt4Y5$meN7<&OP``Jae{2noC@>9DARv z7EAd5%&U%L6*?=M0_O!7KIwc+`LguEQrW?mMTj(|Xy%B=H}|v^6{;O-PHgF1;n0vl1*q7)38JPNdIw^}R z|79lhw#YxdQ)MNVeKG%6QC}Su)%U%PBA_B6Du}d#h)9E!fCxxQNJw`HL-&vZQX(x~ zN_P)6zz|Z>IWTk$QZvE;!;tSqKi}Uwf6iKWoqhK?XV>%WeItt1&MHxCyY6$GpG2ll z!^>_l=sC6m&Jeijwu+`AcF<9=Cd-_h#By$=Th8Wn%tG}#y1Aw@PNP3DvsN-R;Ku3e zDW6AqdAX6j@-BAzmFU5Q%Yv#q=~`a^Yx=06FHvIeJO1a6>O14HHfs4VK;i=v?mX0u z)*cUpJ{AbG9o`b$y&3Vu&DoP<;MahjIw_*>GvlB4)YU}RvRPqp%1X7pned(4ftZAL zn&mgmtHL2$>Ip!+Ml{AWwbU%ez_REZzH}z$+-NV$;oJ3IRH*`xF|&GoxRq;3Sj$&_ zzmXXq1DJr58xj1SRAeb>BWy6S_Zedd%hQpX?8{=G(dN*Ek_T`v0MnMc2B_6tacw4# zK`zOzW%?soe0C|WBgbA`3X*^1!W@ONnB4jn@17c40&2H(jGgr5f(EsX;O}*rX6z8VtiJ360W#gO&7n81e{4Qj5JT^|QVSH<@F7j-N78mR7S@S+q)%V{ zNdVAmn>q7-iRQOW94_kGRubMH;OE@dzf$Yn(lWlG$Q3-KJIe_c=M0F=9q0QwAFex( zO61I2@m(jo@8M{88>Ce-y5V(m2>)U-5HoBi0JmTXQG;bzW;^%!Wlj%YiO9&>_e@ad zw_`!kb&Oy2`r%Is$<8>O0xvfgAlKylJkt5>-ku@F+ru=8#Ck{#hR9vvTU#;>;JMV= zOzO_0$jGbjef(>NN#A-m=#Rd`#i6?Br%N zLNBQ1)Se2xg7TVs+?8g}D4g^X6uX|tdUGg?VeWY&qY%2`pa5YS^a=23t~a}nkzQZf zgcj|oaH(QK42dMJe{_lqvg-rDO81hni5x}=M1<6~ZH5V~b|d0_JNJNGQ4T91PzJ;# z#AG7-)&-3pNI5E|e8_)df#~D4?wa1?#KfwDU<(FDjSLP&zXT2Vm&;^sh4lgY&AMq}d7I z4rc+9CryDSSSW?|C;#vp8^csrVSS#WmE|N+Yf1lm#T{kWLTlj6+VmSuo@RRX9!1%( z&1EJrRwKusv9Q=7IzbkTYL~2aD^D4ccOSkBmbxn^xA8X=Js)uR;|05u|D_UN` zyjCd{>UXoZpLjQtL!aG>u$pSF+0E6&H3gygYsjD<&1Xc#|A<>&U*HUO8|`1UW->l| zeUcjAxnLvu&NDN%K|2WJPDR%aW)$eiO_^_(97F+s^lSlM@>@Rf5EOws%7Fb5Csj@O z!L;b>_-1=E|K@=AuSA$-5UT$awv{w6`%9AgQvxGMJW>td3W(|VK5AOLEc_KeA7_ip z^S-+M;oN%SCmR7%IqVlIJ2zU?Tph!jdVu>+q|fo|o^;sLlkM*oB3^>2+C5k|VVlj_ zC`2FQF485txGB9Bf5L=GC<|01#8sw2JOul3Rkj5SG19rJuq`b4SQIK^&6(SvuQ=o0 zTdF&AhN8{i3w}%e8cYkbflGjT}3eUGs(h+nIp2tNHzsya&j=?iO2DQ>jO zdgk!t+w(|znExL=tY}|D@gg_inQ9$lI2^Wfu=Hi<%C~wKPfvc-TvQ`ViVd7OAB~yY z$Y$#^J5&l$1P@iX^VcrvddAGU2Sd6V9Lqu@^?`LxqSQML65nry3rx6VrTt&KY(6L>4DFZBGVEf(pSlhdQg3`nZy z9`7Xxpr5t5VNtb!HPt$ROI8WR-PTn(MZM9TVay>B$I~Hi&RQiMik5&SVD5i%EhN|o zZDrc~Iq(H&(Fg-tC%*jHt##r?S|k;MQb-59`xD`6hE6GwqUiLa%CO4PAo18&Er2Pt z@vJr%KZwF@clq|y;pRCtu5eF!<)PGu_a1d;*I7dgPy13mVj-r3Lvdwv!7nSM4s7kN zW8OcLJX$M=k*!Ck!kMGdpRaNTjE?=)XP5!J#q?y-% z;KUPh5Y^P*p>Wf9L`KX@cV*Hg*gY1hbvFIYYo;{8W0o_rV!ifxiB2P|J|pY8XXq2 zrS{3LO^Bk>`_%N#kxrjT^;W^5RLZ#+d+wf-x9-yT0T7nj{jc2?-mKqyiNhA}D7N2^c^!I8A0)P7+Xliv z3w9$VeeW<=3iizJqrZ-4v@=u%Sc$lj!e7Q@fT5rRx`-McaV?PN4K+9z*u{4szNFkc z;AVYI!AqS?Mpk%0EnL%OD8{`wA z(fUIn_&n-Ad?79LKxz94q!!m4<~PCN#!y7>HBKkwF#!9 zC7+(A{v$pXsSV+oM%h}I#``X0a9*lpvYK@R5p+)8)WO zj`;hXOss4`#f#Ab0FTnhAW$x0Yb&RC0Mt@VSh40K4D8o^gn?ARl1vLt(1R$#A8g(5n8tKz^A4xfi-^4?_X1v-l-~_9LZ%e<0p62H` zvYEBx3Lj!b5*yo^J&E6%S|LQkeP$NMtFv_=+aX58LY(AxLcHaH?Z~Uqq zkUx0;a#^5}i}~?0Cn^ueR<)f8vAhtSpG4I!ZVqV?I()uWz6W@4I+XR9^g}8aG8vs$ z1qZJA*D)8>>+8iN`A|DGn7Ln4y#1`tv#SGT8I^`TwvT49i<1U4=0*z?LkYL9r;Le;Zxrs#;!n5vw|2EZ_Pq||@$wxk5sp75|F)8;m2De6%`= zHb5KCWjayP8@xdLmCWHUWq%QjiJt+@jK02%MH=g9EZf%q5n#55^?tTqpg5IRGqbNHJojZ6ILCc}L zRy?kZxJE(2S&9DeK=fNU8(?eBVo)5rkw5J4*zW`TL}s6$PoC}}Dqi!KQ)9E!J2f32 zx$=FThLm!1oEMp~KYz_EN17h`%hvKbW~HL;EPR^R8{O<8awm?}pzd=i?tZ_gJPi=R zumLX2uwQfDd%|g^o=EHi#P(#4uH}cc%^*}r9cjiXGFDrBlDd{Xtfm3f>zX!XC=<5@ zIo?+gg4kx5PwD2oyeS)iOC^+Vpfa>lcMj6BHH3PuB`v@xu%NYX<{h zzG0D%R=8R}`EMfY-}8X_eVesadm*-l8uK3CGGpt^xPFk-c_a(zvMmbFRdpO4Q>WN| ztc+9=wO$`3^%i3}1;;xh`D`I;T8+~W0 ztshAU*!lI`B7;2vE*I6eT4AtL{TfgiinQ0YZ|(CYk)yMk*=ME5`rhj1D}8(0_A-Yw z8Nsqhzj&_N4^OA6bDqJG9L71YTA^*nkJMMwHST!8zPfXU|`Y7&{Xctd7`ENR$; zxa@y@Oyxnl><*q$7YxzWZIDPi{6@`plMO@w6sGZ8mhrQxv*MIjg$Cg?6Mz-oleedc zPzB;(>d>n<-1f2sLbjiz_cil8JIBP~AuiF4c9f?4!yFCQT~{u47F3ens1IqwT0d za~E9w+A?lG%{7Qce6*{=7H|H}kf%B43D=#KpY810;|6X(vk-?u2Jp!PvCo;nJ$?kl zF}s1ksWITkMWjR9jqJ*A+6P;us*0PKw}hKa!rMYf2D}FoD-sgrzoGn{-z2c^Mj#)n zR#Uvx>*V}&z8jMJ+NbL&<;)&d%x{h(X zRRh^Qf3|g+JI-mlxsY>@^JLOh-+)+G40J&oweaIk??#r}c+C6>DwTv*_KrBag-4P3 zA20P$4+Vf!_L4@rroDDL5EI;C0iaDESP#RlNdus(ELOsjYA|qn9HI-{ZXBxFnraR; zB?d4ovwd?4Gpz4N(qR?wiI81DD$C|Sv+6a`d>T(W5Mh8vX0=s->#~tKAuAoB0FY-Ek5_<0OwH;;kg!3z$y(s0SZ|h!Zv)a*Kz~r z+f6;He?Cl?piBfQ7JVP`IpA>+U;HNDe6*y;R_elSHPVh63b`|I3g|uY{8hOVCaoaP zC30}erHaliFLgf<^ejW7QvK1>XAUz2S@0&;OZD+q@9V}qR*-d8wRlM$L9IBShzKXC z7dn`xjV^W@pJ!fW>v)pOP1eFzhC#oBYy&&oR&^aqkHG7eww@bNr}(?YmTyucXd%+Q{&+Qbl>N7TsZwWdI zuh1!#gCRXKjugU?COOp{aqZ(f2=Y*8-2K4W{6_G$ARix7a9|6U@J(}y`{fMqKw@RU z9+dy2SetZ#)4r3P?YyHF%d6mhuwfE1de&@n zk=jV7O}6GdF#A;pBYfz(_OkZf@GvV4CpTJ9&+xQAG0Ov+ao5`SXX~Et9g0+RAn3lN zs-aBDU1TuAw0u(>XbB2KXW~`r1Bq1$&_?Y_Kyc-;BHDZaaWxMg@Kw9HD&Le`_PP;Y zqu}(b@49k4QSg&xUB^y~y5^}0A?u9=OM}VA!SyB<#Q-pCM6c5~dK>ztjo$>C)H_T< zWadU3LYH%v0HspsGMRHYn@jPrP_hcoBYZ_YzXm@bHx~{pH-gzua>gDU=?$Gk4 znc^*R(1P_XvcQf*mpTaCW(7FQ`oyEcLy6G^Uk9(Vy4g!uw1&{Sc8k)?#rX7}^pa@q zf=R*x0iw<;TVY@nyS@q^!A3?DIPDooJe|)&#z7wT@={%j04ZkGpH-P>e)j4J_};~! z;s(%p@G+IR{BGesd&cAF%>DW3j~Z6mAy!F%A_oUG>zc(&yrT_0k1t1qw&v&K9KfBD zihJgR5q^C>Pn+1Z3Y>ceZmhn^-{NF7L7wQamDXT$e?v!XRU6c3N5t}$f75|@72bB~ z@G7HnAI(cx)O60(!twTZqZD`v@>j|<%Uf+O!X7=;&PX9h*1u3E)lEsLUw8*EhY&)Z z30+ntR1cz1JDH?d6`(A6;dR7=`{eK&m|#mWLX7&4fQP2iBAp>0m3II4W7 z*($Vb6&qNJa|KTjlKIdQ?j$3MLX7-n$X;#wYTX|BI%nCRw%y44ZOGsiIH@!9q0OL{ zl`J#tmu6$rp{1z_{;e1J6|cG3O76=JY;Qli_9jDPgQ#L_SGE9RF#{%p8e_#!zByN_H;EQc#X94!QCQv_OcVeJ(CrqQ1FSsWVLk`rXm6+}%A0_kPs9mgfG4om4n^3NB8#g}m$1l=1WnGZP z;`PTBB=?f3fQku#m@IErG4xuNmh9)wKV4Z~`&fT#4sPxr0aFVbC0 z4Ij6~<=>N`iEtEu7TKQK=7b#rtpmdCS zjY)mehCdn`tJm~SXzLo@-v-&y4Ts!$bV7ckUEhdU*oEUOo#()&sjlus;67(R%|eVG zJf3a6=#bsAdKQRECJUYiZ9H;js;)$RpQbP$eQzZG7Rc}_6rTPHzpkyocVlBv%yVKc zh;B&KR&9h>t6Ias@IMF{GyN3BfgK0hzW0(ixcV%F?LI#IsMchHUM483h0tUp}ANkNp`VAR(y58}H}+`&-F?R$A40F#x=>^}8_` z+z#Yg?W#E%xZzQT_-?WX(iwRCMQK;pF(v(;c>(}l)LB|%1Hl#aeCSF0`m(Ki;bO8! zz_%SmPN}yTM^Z$`KSppJwY`dM&cT%FoN?5sqd)t zs+BcE^gpbA99C-q8h4VS0u8>p)u=0Mj(T6R9R`45Gy7hT&jYMZvqff<-;-4%? zyu|XxSIYwPa9Vav1!b{7EO(ERls2r}rMNhkz~zdiVUKTgD>ft5W4+_AScn%twGig;ZK-JM$=1W*y= zcW;GL4U6BiD+1O+Z(TgF3a#rTR=YF9T~Qr0Kr2RBoqkk}`#s8q9J_=#PF4~dpxX?+ zIGJ?P)_m-R|4Szp{h3aTh>Jfb20Q<)G|iu(yrwNmy6W9FM=6Ih2gFM0}mJZ|)s z>ejuQt;|pb60_dIaVa7YQ4GR34GNb_Ih6%^D~k6!rrs_Z0$&jJQ260EX35bF8Br|} zkTCBFwC~AQpwmcL@d9d$T2HL%2&tumA$2}qNbGyGvaRf=-cf2b&Pl34DfdejxZ%4~ zZ^d5l7qS_py=anfP|(6Yy;vw6ib{t6Gz5_vZY)(UiqGpk3SamzATpJCUy#Li=kuk_ zhhbH@CjflzG74bBmiiz42lO4q-+g}Qq+88;tZ&;=Iz)EFztd9W9*uIJ%51t^0T<(A zGC_YK7`gLYO{%O6&CYlWOuk2~iQ3hsXSW`lc=c_hvOy2OK9BVK+1ld^=-^THx>?My zXbVFKQA}nf^;9|Hj$7)Gq1tL!3(4KuCfVH<=uz@o$NUW^hGMVn;pk8zUJ=8eysLU? zkooVT4<~@u8=#5myAQc4Kf0je=b_*23Ie#OTLt|U?j&21JJZ;u`&TZl~F0t#!sHG(5;NR;T4v6HZzJMjsRLE=2P z^m*jgvcOS3`>VB=_h!!nG??_n36Xw6?&d+`J9?s??4{ms=d6C#r3E0V`IgR-=To;E zcBgL;ak-V&v@dmu_Pitv@CwcQOj(jJ{cw)`xt7y{ryWtJg(mn%L99D>A*M?#&Y_C< zEjmg*knuN0%XGHf2b9lD7i`C4o>w;upVB8jeUx_u154QR4Z~VUS03IQQaCJ!;eP>% z2Jf8rb)i3a+x0|1#~77vYOi;G&?&*>Ea1c(cn+QgsrTSdxKB(Cf;WRbSJlRf4sK>i8RkqB}5clB4 z*TN}2%g0`@y|5Hl$cF*Yp*Ag)Y6p`&M24bFfUY&|K5`ptCRFL4oA#0M zENS$W%%x)k&CrhuGrsFw*iWdI4xx_4(d{$`%X>mn- z1x$fhw}+8_wfyaN&t3~$A{e3;MI)V7^+92Kh$ys*ND{np%T_USJ{|#_j=@AY7tVV} zWFEZnxmJ9Ijk}@_Ak_*|yowBc4x3^r?m8@9SD3z42YYv(Ud>`hp92I4H)r;FoU;TN z%vU0*u-!s`(3E{fq@>dm9%OlT-)YT>sHSGV9_K0ED4e4PlC{a{UmXMbi&iJ2=Oca- zJqu;Mua-7vxHMe0 zluWV=Cnx{}62MhQF1?;4RPRrP2`%q}OYBy`1N~-Jh702L^or9Tp&6Sxdmg`cPX3I{ zGO0w9nG??J-*QYBa0te~EHJ%^d|}#6R_vyyOZcmOxmn`zJQOdQ<+BR8}oupv#eWcsNlz$nZ!61e&EZ zxA(rY7P7&%!!ry!f2V`Q7}e|W-CcZuF?*rtV|6?E=yq@hvL?@*k8Zy1JVv&z!lDOp z)eMPUd}!EDfrAY@zzi+CydqwGQ)4dJ4r}ES%}^`)+;N zxO?!YlN6?8VQhG2*`M`sX+R$uJPHr&Ce-xv)q9eFXLF<2r;1Bk^Pr$kbrN?z{+MS1 zZqSPFz8qe2=Tlg3qRN$@EK5mgvCMV|iru5L@o~s@GfgydSxLdXdda|Q-{KDGc6S~D#2ZzamIdt zzNWCMY!bV(h5(r`_kn(V;4QR>F!&xTMC#F!RlJaqNOwJ8*5lXMl;xs-Ia;e^_YhQG zrV?IEKPDz?Hq1-re(qW-O5KUOi79^p5u@)bA=t>8wL!@~7{&AlbWBTe`$^B)k*UcKn~v?MuZSBn<duXY=nBv6 z!L&sqAUfwc_t9L*!t(%H^%H*3v_n)A;A>?m#GF)$1E2jOa2U4H_MwDwghZ3gIa95; z`2xHs_43Ay*9MVC3S20Yk021ljxEOdK%Xl_H?@`rc0I7>F|#}zxb1#Ev6?@>`MU0k zi4&GHd>F9x5ox!s%Z5Iy^aPSN z+MQ^%tfR?};?l=v2K#%00BI(4&67oWHjbN~VKKmF#^<4{x0hoz(!j>91|B#(FjWE! z%~+Q4$2LCcM0^inCEEge0K9kbM;g*C`?ur7XnU3PHpw~l&r*cIQ7e5wBb=t0Y@GtY zXf0Xcw0p1Kzfecb;;muv@#Vu8Ah1krrr&hk!0Ah^{_eVf;^-8Z-M2UG=cJ#Kw+FWu z#+WqO5c1MSw7U{*-Ag#NGS;9jiagdG)9~Mon+b&XL2l&?GY<*xNHEoD7_@dBp0Wja zVS=Co=$JM8Rs<+BUL4a3fyi+s!~8Xi5rjLSigrB*Lmivzl+BkQiJ1XA%mSRDgkaYh zBJZQteoWvs-JGQ^Tz-4_z7VrQS5mH;-Wj6O(O_m+FwdxnHC|j>e{^fJ($7BWbZ8;8 zJRekmzYqkZ>H5_GJJmO27aa?Pf;^}buL|6$bL;xjn>U}QD&!y{2E)zIA9}D^@LfU& zr|ryW4g46(upGcl#^SbSk}a=0&xZ+#3SSD*+y}sh(~v_Avh-3g)m7tAay1skoWnCou6GM$X&)FNWMU@cj1n|t&B_EFJYOopgsw&h|F{RTPK zZP+dLrB{c~Lf%RxJhVxmMo;864MqQyH`gf+VQ|XRP+o^Kc&AfYnhKE%bsVS#hG*2= zLf2kjlH^uq5Upk#r7P#T?XhG35*E$D^c!1RjnMuM8ilzIUy`vobI2{}1WepOcG`kf zbQS`}Ixo3MR%RDzV*zeU;L2t;6G%K2pp>>_mcLG(8j=kPg~(m7gO&Pjp*1D z9Hn<_2s*fz|9iPlP&GV*+UzC(D4zz>l|zi(Uj|~1u)-dmz>r6S{aV$9XZBxO$7{yC zU2Oo`6#x?3wv8^XLM_O)HP$0g*NNGI5k(n)D<89~jWlEcadtx#v|zcE@xR`&mLvR+ zH_ZDh-UXQt>Y2P%wj?~Ssysx>W(s-%T>r*gwrAi<@iyzV~lu$Mo z55a9Z_C=P|FKx|OTX31-{?W8kqswV&t+**)g_uQRi~vlnm>&TE;c79vZkGUInyoKY z5WP()id)#JB740R%K>wa{3hVQ@#tXoQ^IMG2Fu)Eum36To@ zn!wbPb6Qrte)SBlp^y{|iNrN`Rrf&mY@aLYs>|F06*6dz?PoXrjPrh|IC4_z=mpI>; z{ak7>@gO7mT3c0VLcpya*Q>rNVCpdK!F<;Ju>0TYn~9JuR{avpq76U(i;SIE04B{k zKz%|!lIsjb?3agr1I`BPBo!<@BPi`!Xm4VLQI5r+-ZCRNNyO;v%UYnHpxIk%pdq={ z1==IqNJMj{VMatBfA*Xv9j$z_r{1L=QYZFt%ICr^E(*fR#>K2XirS(Ex2$f&yr3vVTvV{O-mE2Vb{nE|7WH^uJYb;Yft_ zkBT9@|3$AatX$#M$QDACzEq=-%FjxVY_d58^~Cw>hkZWV-mPe7n6$RHcklNqy~g#O zNf_9>q|~QC$4HRH;4ra`T{KdEL znc<;6CtGe^(f`J!>=MP$N7bxf4g1LlIvn9)Iv7j`!KdiY0Vb#7A49&c3AixKCYf)h zhTc+`O&9g~fY4P*!H!Zcp36&f%clUD#A{R46LZ%~0yful+w4xt0_nvWkO%28N-n(v zn{0q5n$VYV7pYrqrFD!VT%o$+bUJ*F2*cxj5kXWKGP6=wtCZEqFbh_n+Mp8*;w$x1 zd{X}CAf4w5QLy*p!vuur_Qm$G?IkGzFGB$|XB%;WE8y+T>~1Y@A~9r#$HI-3W{K&7{HaT+~mG?f6l22b+l{ zZvL=V4^s;9)Rgt9-Y>$T_I0oZ>qG|C2yZ`mb2Du|7FdQSp2zguX+K9Sr+={NhYDt$ z*e22UXZ3yh1P@k%lP(1fJ%x$U6$uR_6JOn#ey4X&+AkXDxSTrO)OwHqF(-+*kp7}G zT8BCvdxlLsg(9ozLMr*Ht6s()G*$u0sh_T)xLMTFG490tkr$UB=V8XVX{)fcB}MAatxpN8rnYOWRd3QC z&iukYO+qFxOWD)t_x-Y18~aGdT)zf4V*jCEG-Ay~gip%Qnv4qmZ7bttC;8%;>_oG!wy#o0?hE-ALwl_@1sX zH)(}PE)d+SGd|UyNWCbk0l&g;S0sJ=;@6k+i>%%0K9K#T2-nuG=fL-(2}=X9_F5i1 zjhIB04{=3ckEPxCale?l!;Yh;;xYOMEhu%r?>nsV1?xDkZz0!kWh(*OUsBFZbxAKV z#>GUT=cZbwIsExvtEpB4^;(29Wtn4MZ_=~nW0k{*@ShHN_-8(FS+Z#oU)@Q!wSDJq zN=NZI5_lbnY7rrH*P_+NoX7rqY=#dHunJC&y;^pFc74qoS3U=B=WPF5`c8_w876~mPx z@H)CPiRhQdWs6D^)VFDZ%rH1>;V3A^6fNh=p>S&c{#BUBs>7gPy0f^L7VosM$2;K? zp2lyr$IRQxIfF6D7&aSh?erYsX4?JD&kgl{7{2m?Q-$fEYZr0Hkzv=swv)8!u;%Ca zOH}F;t<{fS)3ng0Uv@5EDi2pJp}H3PI#HtFF<;i`6Yjj+<>pSVRzocQeulMV@wa3+ zs_6W&pfxTj^MdzDSDgPmWZ_0GvVIG-#}-CTTKh}B*7XaV_YeLVB8d!o4u#iGnpC}5 zyJw9%>XozcD-p6oNwD`L7uNYA1NtmG_|pl}Qp1h2m@@{q+9vxCjs&Tq<={UgtB`Lz zi`XO{a$(o&7m?M|rceC1h8pj!R?~|6eE2#`=mp|yNmH?<7G`rdt)}07oyJeJ0TbF7T18nnIW9!N z(B0>Q6^$$e{-qD*z_J+aZQO}|0W3>YoVy|`vEIe~;NV`%27H;wNJ&G9d#|1$n2k?Z zG%IW20&V%6ILP!ilh4x7^k{rUxENwhQBb4s42@4xOai2YD6@j-0Yo>fHav&4)CnicBD>N4wWXCXuS zO;;3Ed8qHxy_0Zh?|!P@6Lg4o$z^G2isSFQ(y;mM6Z`=d_2P-tnCHU_Phtx&SN>~YvfYHWG**k8QHnN_L1bF5sDfJ=FB@7V8a z@o>>w*|*tb)$M>HSM$1!v&EK(LN6yX8jgQfz*q#dVQX~(mvhG;GrhCcvlzd1E>;E0 zm9(E_S*f$H2YBj-k647X(OLZtp?SwGmA&3S#8%*kCC5((Ck%fqo^vrYT~4sdGjGw{ z(`!9UJYzmQF`Zge-&?FJG?4vZaX1}xj!f`W^L!7Dn*X&WP96BFmFs1v~yylkyXu4cQR#v1GW-XWcK-*5!N0>O^;4-4|h&Rfk5_3Wgf%c!_A zM^Xv#KAq3-@>De(!USuKDD&#!bPg%4-FEO5O!WPCF&;vIg-^uNJce20luG*VIYIB1 zwJ$#bD-EV8?7n+Q95DkHeL2#qndeIZJN*v3VdQhbXRd0~qJIEH|skaynWS06wp6*4R%^T%52KtmdY#*e_@H zF9Kt+^l_$}b?$Uy$=?wlw>t_4+4+j^p(>^>y@|W)YlSlleE*xcm0}Hp2 zcn&8gR39m4^e@7hvc*uowc%v(*J<(--9=0 zLMbp?*5J>qR7JQ?y3<1L4e|GwuFQ^lku1K`_HX&)6HgR!8x_#yNfD*q@R&`IsU&VeoLEX*1oDs*qmq% zFYcKe<^i1Q10918n^gdJr@NHxmwUy(avT;gOaf8{t&R< zi$1{NxZf2;6ei`B{E?gR-b>^2o1Li&5dFXBR4C}Ko|{UEc-kakCM%&gS#DmR%3({Y zYz@E5UaUV1NGp7+EQ3k_F$p^`1}A8%w?X znoL7hUcl6D`y9e&YAy#QwYswRAE~OS#Ah7xi!IoavmhWRJ?9Z=VvpV5ZR!8FwXM>G z$icN8Cbq-_JvBylQh9891cj%K_yXF&20m)eI>sHl_f*tx>qoeapHcwNuCDZLK_ypz z9wobP{{)Fq?qf!#5xa+s{KB8P>u1xdy}zq+QrquHx%<0_diU{>og28LB{3-bl6qzK z8O~0mRR6z;@4V&f0XQK6AD(d2PaJ{DgK0%ux7d>J0yjq>ma2$e&c3#`XdF)FREkM+!#N0xzXn7G8uqhPf*}c&$%l&1E7X@an#(Wz z|B@C%{;p@FS_HnQ8Qqv=^6u@Vov>n&Jq-9>kqFbU{rEpcS{mVFBy-oxI8I&5Y)FLf z);oZ6wFA9u7NjK(!i61WwsA&U!y3eCf-_u1iSIO^C{)NFFC*vEO9N4_ttxk>-cRKn zu;dD=Oq-;CR}fKJ(rPKIA^~2Mm@zUnl;D6pR`E}H?{lHQ7Zmrjcqlx%=8MI%0wmcS z<@t?zvyGjrBlWylA3yWtk#=-?+SZsXkeKe_$8^ z3Cp5=mdM$-Xk<?-8ec?u+smnH(P#X?4Kk?0Db~R)pZau+VM7bg;l0DVq}F1N@Dz` zu&?*Qy>mya0!_%jt@wnU@ijFR<8aWD@89lMv1#RbRxvN$<^8y%KOP}dh>2Km#~u)k zeE1!6I(@)lC;t9_Zi1~2`0O0_7*OJ@_2Iq__%TZJ^JY3S`)pm9ygf<{HG=zUldI=rxa(#1X3%mROwo=CV%xx1N>^Aw7@0UQ3h~hJ?T!Ti!rm8 zmbL8vH2J!z+2hJVxW}YS_%v69j=<*h%qy{CAAlmNo!i2^XtBYUSr;G0G_ZKizn!k6 zLaPkKC-!*rt79NCfbXdI@>vbjHO7L)X!8m{%#~hlS?oT3gQV&dP@gpUYh&+T;-qJ`Utmz5{KbPy15@FAvI?~NVT*?sd*A>^$dtVk)jenBcq zncKO50ND&Db9zfQG!cjh>%~mKiq=}AyeEZW=fGJCd6(x72dpui^WQ9bJQHt_v3PQ= zPe}wgyK^i#6@5D|cu=8+gZRke9IVqsmKjT4mlvCc;yb`E_xZPA+i7#gU)LO!b9V%OL&(F-0CcK(_0%<){8j2oa! p*{?cdod2R{^B9Q#>}J*(-Rj*3$!^Ngn^*5CFQY77{>C`){{iZPJZ1m@ literal 0 HcmV?d00001 diff --git a/public/logo-dark.jpg b/public/logo-dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c0623dab202230cfbd00bdf6700668ff29f87167 GIT binary patch literal 49625 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�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 literal 0 HcmV?d00001 diff --git a/public/logo.jpg b/public/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..353fcdd65ebe0cf067bdc9bdd20be65bd387ebc2 GIT binary patch literal 46797 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 literal 0 HcmV?d00001 diff --git a/public/media/.gitkeep b/public/media/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/scripts/generate-importmap.mjs b/scripts/generate-importmap.mjs new file mode 100644 index 0000000..1d53148 --- /dev/null +++ b/scripts/generate-importmap.mjs @@ -0,0 +1,23 @@ +/** + * Custom generate:importmap script that works around tsx ESM resolution issues. + * Run via: node --import tsx/esm scripts/generate-importmap.mjs + * (from inside the Docker container where tsx is available in pnpm store) + */ +import { fileURLToPath, pathToFileURL } from 'url' +import path from 'path' +import { generateImportMap } from '@payloadcms/next/utilities' + +const __filename = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) +const root = path.resolve(__dirname, '..') + +// Load config from compiled dist or source +const configPath = pathToFileURL(path.join(root, 'src/payload.config.ts')).toString() + +console.log('Loading config from:', configPath) + +const configModule = await import(configPath) +const config = await (configModule.default ?? configModule) + +await generateImportMap(config, { log: true }) +console.log('Done!') diff --git a/src/app/(payload)/admin/[[...segments]]/layout.tsx b/src/app/(payload)/admin/[[...segments]]/layout.tsx new file mode 100644 index 0000000..c203068 --- /dev/null +++ b/src/app/(payload)/admin/[[...segments]]/layout.tsx @@ -0,0 +1,31 @@ +import type { ServerFunctionClient } from 'payload'; +import type { ReactNode } from 'react'; + +import { RootLayout } from '@payloadcms/next/layouts'; +import { handleServerFunctions } from '@payloadcms/next/layouts'; +import { importMap } from '@/app/(payload)/admin/importMap'; +import config from '@payload-config'; +import React from 'react'; + +import '@payloadcms/next/css'; + +type Args = { + children: ReactNode; +}; + +const serverFunction: ServerFunctionClient = async function (args) { + 'use server'; + return handleServerFunctions({ + ...args, + config, + importMap, + }); +}; + +export default function Layout({ children }: Args) { + return ( + + {children} + + ); +} diff --git a/src/app/(payload)/admin/[[...segments]]/page.tsx b/src/app/(payload)/admin/[[...segments]]/page.tsx new file mode 100644 index 0000000..9dcd1ad --- /dev/null +++ b/src/app/(payload)/admin/[[...segments]]/page.tsx @@ -0,0 +1,17 @@ +import type { Metadata } from 'next'; +import { RootPage, generatePageMetadata } from '@payloadcms/next/views'; +import { importMap } from '@/app/(payload)/admin/importMap'; +import config from '@payload-config'; + +type Args = { + params: Promise<{ segments: string[] }>; + searchParams: Promise<{ [key: string]: string | string[] }>; +}; + +export async function generateMetadata({ params, searchParams }: Args): Promise { + return generatePageMetadata({ config, params, searchParams }); +} + +export default function Page({ params, searchParams }: Args) { + return RootPage({ config, importMap, params, searchParams }); +} diff --git a/src/app/(payload)/admin/importMap.js b/src/app/(payload)/admin/importMap.js new file mode 100644 index 0000000..d275fa9 --- /dev/null +++ b/src/app/(payload)/admin/importMap.js @@ -0,0 +1,51 @@ +import { RscEntryLexicalCell as RscEntryLexicalCell_44fe37237e0ebf4470c9990d8cb7b07e } from '@payloadcms/richtext-lexical/rsc' +import { RscEntryLexicalField as RscEntryLexicalField_44fe37237e0ebf4470c9990d8cb7b07e } from '@payloadcms/richtext-lexical/rsc' +import { LexicalDiffComponent as LexicalDiffComponent_44fe37237e0ebf4470c9990d8cb7b07e } from '@payloadcms/richtext-lexical/rsc' +import { InlineToolbarFeatureClient as InlineToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { HorizontalRuleFeatureClient as HorizontalRuleFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { UploadFeatureClient as UploadFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { BlockquoteFeatureClient as BlockquoteFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { RelationshipFeatureClient as RelationshipFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { LinkFeatureClient as LinkFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { ChecklistFeatureClient as ChecklistFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { OrderedListFeatureClient as OrderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { UnorderedListFeatureClient as UnorderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { IndentFeatureClient as IndentFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { AlignFeatureClient as AlignFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { HeadingFeatureClient as HeadingFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { ParagraphFeatureClient as ParagraphFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { InlineCodeFeatureClient as InlineCodeFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { SuperscriptFeatureClient as SuperscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { SubscriptFeatureClient as SubscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { StrikethroughFeatureClient as StrikethroughFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { UnderlineFeatureClient as UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { BoldFeatureClient as BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { ItalicFeatureClient as ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client' +import { CollectionCards as CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1 } from '@payloadcms/next/rsc' + +export const importMap = { + "@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell": RscEntryLexicalCell_44fe37237e0ebf4470c9990d8cb7b07e, + "@payloadcms/richtext-lexical/rsc#RscEntryLexicalField": RscEntryLexicalField_44fe37237e0ebf4470c9990d8cb7b07e, + "@payloadcms/richtext-lexical/rsc#LexicalDiffComponent": LexicalDiffComponent_44fe37237e0ebf4470c9990d8cb7b07e, + "@payloadcms/richtext-lexical/client#InlineToolbarFeatureClient": InlineToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#HorizontalRuleFeatureClient": HorizontalRuleFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#UploadFeatureClient": UploadFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#BlockquoteFeatureClient": BlockquoteFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#RelationshipFeatureClient": RelationshipFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#LinkFeatureClient": LinkFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#ChecklistFeatureClient": ChecklistFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#OrderedListFeatureClient": OrderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#UnorderedListFeatureClient": UnorderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#IndentFeatureClient": IndentFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#AlignFeatureClient": AlignFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#HeadingFeatureClient": HeadingFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#ParagraphFeatureClient": ParagraphFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#InlineCodeFeatureClient": InlineCodeFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#SuperscriptFeatureClient": SuperscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#SubscriptFeatureClient": SubscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#StrikethroughFeatureClient": StrikethroughFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#UnderlineFeatureClient": UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#BoldFeatureClient": BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/richtext-lexical/client#ItalicFeatureClient": ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864, + "@payloadcms/next/rsc#CollectionCards": CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1 +} diff --git a/src/app/(payload)/api/[...slug]/route.ts b/src/app/(payload)/api/[...slug]/route.ts new file mode 100644 index 0000000..5571fa6 --- /dev/null +++ b/src/app/(payload)/api/[...slug]/route.ts @@ -0,0 +1,16 @@ +import { + REST_DELETE, + REST_GET, + REST_OPTIONS, + REST_PATCH, + REST_POST, + REST_PUT, +} from '@payloadcms/next/routes'; +import config from '@payload-config'; + +export const GET = REST_GET(config); +export const POST = REST_POST(config); +export const DELETE = REST_DELETE(config); +export const PATCH = REST_PATCH(config); +export const PUT = REST_PUT(config); +export const OPTIONS = REST_OPTIONS(config); diff --git a/src/app/globals.css b/src/app/globals.css index 37d72f8..05d1372 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,26 +1,250 @@ @import 'tailwindcss'; -:root { - --background: #ffffff; - --foreground: #171717; -} - +/* ============================================================ + DESIGN TOKENS — Axil Accountants + ============================================================ */ @theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); + /* --- Emerald (primary) --- */ + --color-emerald: #3cc68a; + --color-emerald-dark: #27a870; + --color-emerald-deeper: #1a8c5b; + --color-emerald-light: #7ddcb0; + --color-emerald-mist: #e8f8f1; + + /* --- Blue (secondary) --- */ + --color-blue: #1b9ad6; + --color-blue-dark: #1480b8; + --color-blue-light: #6cc4e8; + --color-blue-mist: #e8f5fc; + + /* --- Neutral --- */ + --color-charcoal: #162520; + --color-muted: #6b7280; + --color-bg: #f5fefa; + + /* --- Typography --- */ + --font-sans: var(--font-inter), 'Inter', ui-sans-serif, sans-serif; + --font-display: 'Satoshi', var(--font-inter), ui-sans-serif, sans-serif; + --font-mono: var(--font-dm-mono), 'DM Mono', ui-monospace, monospace; + + /* --- Border Radius --- */ + --radius-card: 16px; + --radius-hero: 24px; + --radius-pill: 999px; + + /* --- Custom animations --- */ + --animate-marquee: marquee 32s linear infinite; + --animate-marquee-reverse: marquee-reverse 32s linear infinite; + --animate-float: float 6s ease-in-out infinite; + --animate-float-delayed: float 6s ease-in-out infinite 2s; + --animate-pulse-slow: pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite; + + /* --- Hero entrance stagger --- */ + --animate-fade-in-up: fadeInUp 0.75s cubic-bezier(0.22, 1, 0.36, 1) both; + --animate-fade-in-up-d1: fadeInUp 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.12s both; + --animate-fade-in-up-d2: fadeInUp 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.24s both; + --animate-fade-in-up-d3: fadeInUp 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.36s both; + --animate-fade-in-up-d4: fadeInUp 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.48s both; + --animate-fade-in-up-d5: fadeInUp 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.6s both; } -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; +/* ============================================================ + KEYFRAMES + ============================================================ */ +@keyframes marquee { + from { + transform: translateX(0); + } + to { + transform: translateX(-50%); + } +} +@keyframes marquee-reverse { + from { + transform: translateX(-50%); + } + to { + transform: translateX(0); + } +} +@keyframes float { + 0%, + 100% { + transform: translateY(0px); + } + 50% { + transform: translateY(-14px); + } +} +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(28px); + } + to { + opacity: 1; + transform: translateY(0); } } -body { - background: var(--background); - color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; +/* ============================================================ + CSS CUSTOM PROPERTIES — runtime access + ============================================================ */ +:root { + --emerald: #3cc68a; + --emerald-dark: #27a870; + --emerald-deeper: #1a8c5b; + --emerald-light: #7ddcb0; + --emerald-mist: #e8f8f1; + + --blue: #1b9ad6; + --blue-dark: #1480b8; + --blue-light: #6cc4e8; + --blue-mist: #e8f5fc; + + --charcoal: #162520; + --muted: #6b7280; + --bg: #f5fefa; +} + +/* ============================================================ + BASE STYLES + ============================================================ */ +body { + background-color: var(--bg); + color: var(--charcoal); + font-family: var(--font-sans); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* ============================================================ + COMPONENT HELPERS + ============================================================ */ +@layer components { + .hover-glow-emerald { + transition: + box-shadow 0.3s ease, + border-color 0.3s ease, + transform 0.3s ease; + } + .hover-glow-emerald:hover { + box-shadow: 0 0 32px rgb(60 198 138 / 0.14); + } + .hover-glow-emerald-dark { + transition: + box-shadow 0.3s ease, + border-color 0.3s ease, + transform 0.3s ease; + } + .hover-glow-emerald-dark:hover { + box-shadow: 0 0 40px rgb(60 198 138 / 0.22); + } + + /* Marquee overflow container */ + .marquee-container { + overflow: hidden; + mask-image: linear-gradient(to right, transparent, black 8%, black 92%, transparent); + -webkit-mask-image: linear-gradient(to right, transparent, black 8%, black 92%, transparent); + } + .marquee-track { + display: flex; + width: max-content; + animation: var(--animate-marquee); + } + .marquee-track-reverse { + display: flex; + width: max-content; + animation: var(--animate-marquee-reverse); + } + .marquee-container:hover .marquee-track, + .marquee-container:hover .marquee-track-reverse { + animation-play-state: paused; + } + + /* Dot grid background */ + .dot-grid { + background-image: radial-gradient(circle, rgba(60, 198, 138, 0.13) 1px, transparent 1px); + background-size: 28px 28px; + } + + /* Gradient text */ + .gradient-text { + background: linear-gradient( + 135deg, + var(--emerald-dark) 0%, + var(--emerald) 55%, + var(--blue) 100% + ); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + } + + /* ---- InteractiveMenu floating dock ---- */ + .interactive-menu { + display: flex; + align-items: center; + gap: 2px; + background: white; + border-radius: 999px; + padding: 5px 8px; + box-shadow: + 0 4px 24px rgba(22, 37, 32, 0.12), + 0 0 0 1px rgba(22, 37, 32, 0.06); + } + .interactive-menu__item { + position: relative; + display: flex; + align-items: center; + gap: 6px; + padding: 8px 14px; + border-radius: 999px; + border: none; + background: transparent; + cursor: pointer; + transition: background 0.25s ease; + } + .interactive-menu__item::after { + content: ''; + position: absolute; + bottom: 4px; + left: 50%; + transform: translateX(-50%); + width: var(--lineWidth, 0px); + height: 2px; + background: var(--component-active-color, var(--emerald)); + border-radius: 999px; + transition: width 0.35s cubic-bezier(0.22, 1, 0.36, 1); + } + .interactive-menu__item.active { + background: color-mix(in srgb, var(--component-active-color, var(--emerald)) 12%, transparent); + } + .interactive-menu__icon { + display: flex; + align-items: center; + color: var(--muted); + transition: color 0.25s ease; + } + .interactive-menu__item.active .interactive-menu__icon { + color: var(--component-active-color, var(--emerald)); + } + .interactive-menu__text { + font-size: 12px; + font-weight: 600; + letter-spacing: 0.01em; + color: var(--muted); + white-space: nowrap; + max-width: 0; + overflow: hidden; + opacity: 0; + transition: + max-width 0.35s cubic-bezier(0.22, 1, 0.36, 1), + opacity 0.2s ease; + } + .interactive-menu__text.active { + max-width: 100px; + opacity: 1; + color: var(--component-active-color, var(--emerald)); + } } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d3ef21d..dffd279 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,20 +1,25 @@ import type { Metadata } from 'next'; -import { Geist, Geist_Mono } from 'next/font/google'; +import { Inter, DM_Mono } from 'next/font/google'; +import { SmoothScrollProvider } from '@/components/providers/SmoothScrollProvider'; import './globals.css'; -const geistSans = Geist({ - variable: '--font-geist-sans', +const inter = Inter({ + variable: '--font-inter', subsets: ['latin'], + display: 'swap', }); -const geistMono = Geist_Mono({ - variable: '--font-geist-mono', +const dmMono = DM_Mono({ + variable: '--font-dm-mono', + weight: ['400', '500'], subsets: ['latin'], + display: 'swap', }); export const metadata: Metadata = { - title: 'Create Next App', - description: 'Generated by create next app', + title: 'Axil Accountants — Smart Accounting for Growing British Businesses', + description: + 'ICAEW-certified accountants offering bookkeeping, tax returns, payroll and VAT services for UK businesses. Fixed monthly fees, dedicated account manager.', }; export default function RootLayout({ @@ -24,7 +29,17 @@ export default function RootLayout({ }>) { return ( - {children} + + {/* Satoshi variable font — Fontshare CDN */} + + + + + {children} + ); } diff --git a/src/app/page.tsx b/src/app/page.tsx index 52bc732..e473972 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,65 +1,33 @@ -import Image from 'next/image'; +import { Header } from '@/components/layout/Header'; +import { Footer } from '@/components/layout/Footer'; +import { HeroSection } from '@/components/sections/home/HeroSection'; +import { PainPointsSection } from '@/components/sections/home/PainPointsSection'; +import { SolutionSection } from '@/components/sections/home/SolutionSection'; +import { ServicesSection } from '@/components/sections/home/ServicesSection'; +import { WhyAxilSection } from '@/components/sections/home/WhyAxilSection'; +import { TestimonialsSection } from '@/components/sections/home/TestimonialsSection'; +import { AudienceSection } from '@/components/sections/home/AudienceSection'; +import { ProcessSection } from '@/components/sections/home/ProcessSection'; +import { BlogPreviewSection } from '@/components/sections/home/BlogPreviewSection'; +import { FinalCTASection } from '@/components/sections/home/FinalCTASection'; export default function Home() { return ( - +
+ ); } diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx new file mode 100644 index 0000000..0890dbb --- /dev/null +++ b/src/components/layout/Header.tsx @@ -0,0 +1,276 @@ +'use client'; + +import { useState, useEffect, useRef } from 'react'; +import Image from 'next/image'; +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; +import { motion, AnimatePresence } from 'framer-motion'; +import { Button } from '@/components/ui/Button'; +import { MenuIcon, XIcon, ChevronDownIcon } from '@/components/ui/icons'; +import { InteractiveMenu } from '@/components/ui/InteractiveMenu'; +import { Home, Briefcase, BookOpen, Info, Mail } from 'lucide-react'; +import { cn } from '@/lib/utils'; + +const NAV_ITEMS = [ + { label: 'Home', href: '/' }, + { + label: 'Services', + href: '/services', + dropdown: [ + { + label: 'Bookkeeping', + href: '/services/bookkeeping', + desc: 'Accurate records, zero stress', + }, + { label: 'Tax Returns', href: '/services/tax-returns', desc: 'Every allowance claimed' }, + { label: 'Payroll', href: '/services/payroll', desc: 'On time, every time' }, + { label: 'VAT Returns', href: '/services/vat-returns', desc: 'MTD-compliant filing' }, + ], + }, + { label: 'About', href: '/about' }, + { label: 'Blog', href: '/blog' }, + { label: 'Contact', href: '/contact' }, +]; + +const DOCK_ITEMS = [ + { label: 'Home', icon: Home, href: '/' }, + { label: 'Services', icon: Briefcase, href: '/services' }, + { label: 'Blog', icon: BookOpen, href: '/blog' }, + { label: 'About', icon: Info, href: '/about' }, + { label: 'Contact', icon: Mail, href: '/contact' }, +]; + +function AxilLogo({ className }: { className?: string }) { + return ( + Axil Accounting + ); +} + +/** Nav links shared between static header and floating pill */ +function NavLinks({ + pathname, + dropdownOpen, + setDropdownOpen, + size = 'md', +}: { + pathname: string; + dropdownOpen: boolean; + setDropdownOpen: (v: boolean) => void; + size?: 'sm' | 'md'; +}) { + const textSize = size === 'sm' ? 'text-xs' : 'text-sm'; + const px = size === 'sm' ? 'px-3' : 'px-4'; + + return ( + <> + {NAV_ITEMS.map((item) => + item.dropdown ? ( +
setDropdownOpen(true)} + onMouseLeave={() => setDropdownOpen(false)} + > + + {dropdownOpen && ( +
+ {item.dropdown.map((child) => ( + setDropdownOpen(false)} + > + {child.label} + {child.desc} + + ))} +
+ )} +
+ ) : ( + + {item.label} + + ), + )} + + ); +} + +export function Header() { + const lastScrollY = useRef(0); + const [atTop, setAtTop] = useState(true); + const [floatVisible, setFloatVisible] = useState(false); + const [mobileOpen, setMobileOpen] = useState(false); + const [dropdownOpen, setDropdownOpen] = useState(false); + const [dropdownOpenF, setDropdownOpenF] = useState(false); + const pathname = usePathname(); + + useEffect(() => { + const onScroll = () => { + const y = window.scrollY; + const direction = y - lastScrollY.current; + lastScrollY.current = y; + + if (y < 60) { + setAtTop(true); + setFloatVisible(false); + } else { + setAtTop(false); + setFloatVisible(direction < 0); // scroll up → show pill + } + }; + window.addEventListener('scroll', onScroll, { passive: true }); + return () => window.removeEventListener('scroll', onScroll); + }, []); + + return ( + <> + {/* ─── Static header (visible only at top of page) ─── */} + + {atTop && ( + +
+ + + + + + +
+ +
+ + +
+
+ )} +
+ + {/* ─── Floating pill nav (appears on scroll-up) ─── */} + + {floatVisible && ( + +
+ {/* Logo */} + + + + + {/* Divider */} +
+ + {/* Nav links */} + + + {/* CTA */} + +
+ + )} + + + {/* ─── Mobile slide-out menu ─── */} + {mobileOpen && ( +
+ +
+ +
+
+ )} + + {/* ─── Mobile floating dock ─── */} +
+ { + if (item.href) window.location.href = item.href; + }} + /> +
+ + ); +} diff --git a/src/components/providers/SmoothScrollProvider.tsx b/src/components/providers/SmoothScrollProvider.tsx new file mode 100644 index 0000000..0ffe28f --- /dev/null +++ b/src/components/providers/SmoothScrollProvider.tsx @@ -0,0 +1,28 @@ +'use client'; + +import { useEffect } from 'react'; +import Lenis from 'lenis'; +import { gsap, ScrollTrigger } from '@/lib/gsap'; + +export function SmoothScrollProvider({ children }: { children: React.ReactNode }) { + useEffect(() => { + const lenis = new Lenis({ + duration: 1.2, + easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)), + smoothWheel: true, + }); + + lenis.on('scroll', () => ScrollTrigger.update()); + + const tick = (time: number) => lenis.raf(time * 1000); + gsap.ticker.add(tick); + gsap.ticker.lagSmoothing(0); + + return () => { + lenis.destroy(); + gsap.ticker.remove(tick); + }; + }, []); + + return <>{children}; +} diff --git a/src/components/sections/home/AudienceSection.tsx b/src/components/sections/home/AudienceSection.tsx new file mode 100644 index 0000000..14627a0 --- /dev/null +++ b/src/components/sections/home/AudienceSection.tsx @@ -0,0 +1,100 @@ +import Link from 'next/link'; +import { FadeIn } from '@/components/ui/FadeIn'; +import { ArrowRightIcon, CheckCircleIcon } from '@/components/ui/icons'; + +const AUDIENCES = [ + { + label: 'Sole Traders', + title: 'Sole Traders', + tagline: 'Self-assessment made simple', + body: 'From freelancers to consultants, we handle your self-assessment, expenses, and tax planning so you keep more of what you earn.', + perks: ['Self-assessment filing', 'Expense optimisation', 'National Insurance planning'], + href: '/services', + cta: 'For sole traders', + featured: false, + }, + { + label: 'Limited Companies', + title: 'Limited Companies', + tagline: 'Full-service company accounting', + body: 'Corporation tax, payroll, dividends, R&D credits — we manage your entire financial picture and help you extract value tax-efficiently.', + perks: ['Corporation tax', 'Dividend planning', "Directors' payroll"], + href: '/services', + cta: 'For limited companies', + featured: true, + }, + { + label: 'Startups', + title: 'Startups & Scaleups', + tagline: 'Built for fast-growing businesses', + body: 'SEIS/EIS compliance, R&D tax credits, investor-ready accounts — we understand startup finance and help you grow without financial friction.', + perks: ['R&D tax credits', 'SEIS/EIS compliance', 'Investor accounts'], + href: '/services', + cta: 'For startups', + featured: false, + }, +]; + +export function AudienceSection() { + return ( +
+
+ +

+ Built for businesses like yours +

+

+ Who we work with +

+
+ +
+ {AUDIENCES.map((a, i) => ( + +
+ {/* Featured top bar */} + {a.featured && ( +
+ )} + +
+ {a.featured && ( + + Most popular + + )} + +

{a.title}

+

{a.tagline}

+

{a.body}

+ +
    + {a.perks.map((perk) => ( +
  • + + {perk} +
  • + ))} +
+ + + {a.cta} + + +
+
+ + ))} +
+
+
+ ); +} diff --git a/src/components/sections/home/BlogPreviewSection.tsx b/src/components/sections/home/BlogPreviewSection.tsx new file mode 100644 index 0000000..d6bf40e --- /dev/null +++ b/src/components/sections/home/BlogPreviewSection.tsx @@ -0,0 +1,102 @@ +import Link from 'next/link'; +import { FadeIn } from '@/components/ui/FadeIn'; +import { Tag } from '@/components/ui/Tag'; +import { Button } from '@/components/ui/Button'; +import { ArrowRightIcon } from '@/components/ui/icons'; + +const POSTS = [ + { + category: 'Tax Tips', + title: 'How to Legally Reduce Your Tax Bill in 2026', + excerpt: + 'From pension contributions to trading allowances, these are the most overlooked ways UK business owners cut their tax liability — all HMRC-approved.', + date: '14 Feb 2026', + readTime: '5 min read', + slug: 'reduce-tax-bill-2026', + gradient: 'from-emerald/12 to-emerald-mist', + tagVariant: 'green' as const, + }, + { + category: 'HMRC Updates', + title: 'Making Tax Digital: What Every Business Must Know', + excerpt: + "MTD for income tax is expanding in April 2026. Here's exactly what changes, who's affected, and what you need to do before the deadline.", + date: '7 Feb 2026', + readTime: '4 min read', + slug: 'making-tax-digital-2026', + gradient: 'from-blue/10 to-blue-mist', + tagVariant: 'blue' as const, + }, + { + category: 'Payroll Guide', + title: 'Hiring Your First Employee? A Complete Payroll Guide', + excerpt: + 'RTI submissions, auto-enrolment, P60s — setting up payroll correctly from day one avoids costly mistakes and HMRC penalties down the line.', + date: '1 Feb 2026', + readTime: '6 min read', + slug: 'first-employee-payroll-guide', + gradient: 'from-emerald/8 to-bg', + tagVariant: 'green' as const, + }, +]; + +export function BlogPreviewSection() { + return ( +
+
+ +
+

+ From the blog +

+

+ Accounting insights +
+ you can actually use +

+
+ +
+ +
+ {POSTS.map((post, i) => ( + + +
+ {/* Cover */} +
+ {post.category} +
+ + {/* Content */} +
+

+ {post.title} +

+

+ {post.excerpt} +

+
+
+ {post.date} + · + {post.readTime} +
+ +
+
+
+ +
+ ))} +
+
+
+ ); +} diff --git a/src/components/sections/home/FinalCTASection.tsx b/src/components/sections/home/FinalCTASection.tsx new file mode 100644 index 0000000..988bdba --- /dev/null +++ b/src/components/sections/home/FinalCTASection.tsx @@ -0,0 +1,67 @@ +import { FadeIn } from '@/components/ui/FadeIn'; +import { Button } from '@/components/ui/Button'; +import { CheckCircleIcon } from '@/components/ui/icons'; + +const REASSURANCES = [ + '4.9/5 on Google', + 'No lock-in contracts', + 'ICAEW & ACCA Certified', + 'Free 30-min consultation', +]; + +export function FinalCTASection() { + return ( +
+ {/* Background decoration */} +
+
+
+ +
+ +

+ Ready to start? +

+ +

+ Take the stress out of +
+ your finances — today. +

+ +

+ Book a free 30-minute consultation with one of our accountants. No commitment, no hard + sell — just honest advice for your business. +

+ +
+ + +
+ + {/* Reassurances */} +
+ {REASSURANCES.map((r) => ( + + + {r} + + ))} +
+
+
+
+ ); +} diff --git a/src/components/sections/home/HeroSection.tsx b/src/components/sections/home/HeroSection.tsx index a713dd7..5adbd1e 100644 --- a/src/components/sections/home/HeroSection.tsx +++ b/src/components/sections/home/HeroSection.tsx @@ -1,7 +1,9 @@ +'use client'; + +import { motion } from 'framer-motion'; import { Button } from '@/components/ui/Button'; import { StarRating } from '@/components/ui/StarRating'; import { CheckCircleIcon } from '@/components/ui/icons'; -import { ContainerScroll } from '@/components/ui/ContainerScroll'; const TRUST_ITEMS = [ 'ICAEW Member', @@ -10,16 +12,15 @@ const TRUST_ITEMS = [ 'No lock-in contracts', ]; -/** Financial dashboard mockup shown inside the ContainerScroll 3D card */ -function DashboardMockup() { +function DashboardPreview() { const bars = [40, 58, 44, 76, 52, 88, 68, 82, 96, 72, 90, 100]; return ( -
- {/* Dashboard header */} -
+
+ {/* Header */} +
- + @@ -28,52 +29,54 @@ function DashboardMockup() { - Axil Client Portal + + Axil Client Portal +
-
- Tax Year 2024/25 - +
+ Tax Year 2024/25 +
- {/* Stats row */} -
-
-

+ {/* Stats */} +

+
+

Revenue YTD

-

£84,200

-

↑ 18% YOY

+

£84,200

+

↑ 18% YOY

-
-

+

+

Tax Saved

-

£12,400

-

This year

+

£12,400

+

This year

-
-

+

+

Net Profit

-

£51,800

-

↑ 24% YOY

+

£51,800

+

↑ 24% YOY

- {/* Monthly bar chart */} -
-
-

Monthly Revenue

- + {/* Bar chart */} +
+
+

Monthly Revenue

+ Apr 24 – Mar 25
-
+
{bars.map((h, i) => (
))}
-
- Apr - Mar +
+ Apr + Mar
- {/* Upcoming tasks */} -
+ {/* Tasks */} +
{[ { label: 'VAT Return Q4', date: '7 May', done: false }, { label: 'Payroll — April', date: '30 Apr', done: true }, { label: 'Corporation Tax filed', date: '15 Apr', done: true }, - { label: 'Self Assessment review', date: '31 Jan', done: true }, ].map((t) => (
-
+
- {t.label} + {t.label}
@@ -122,75 +124,137 @@ function DashboardMockup() { ); } -function HeroTitle() { - return ( -
- {/* Eyebrow */} -
-
- - - Trusted by 500+ UK Businesses - -
-
- -

- Smart Accounting for -
- Growing British Businesses -

- -

- ICAEW-certified accountants with fixed monthly fees, a dedicated account manager, and zero - HMRC surprises. You focus on growth — we handle the numbers. -

- -
- - -
- - {/* Trust indicators */} -
-
- - 4.9/5 - Google -
-
- {TRUST_ITEMS.map((item) => ( - - - {item} - - ))} -
-
- ); -} - export function HeroSection() { return ( -
- {/* Background gradients */} -
+
+ {/* Background */} +
-
+
-
- }> - - + {/* Main 3-column layout */} +
+
+ {/* ─── Left: copy + CTA ─── */} + + {/* Mobile headline (hidden on desktop) */} +

+ Smart Accounting for British Businesses +

+ + {/* Eyebrow */} +
+ + + Trusted by 500+ UK Businesses + +
+ +

+ ICAEW-certified accountants with fixed monthly fees, a dedicated account manager, and + zero HMRC surprises. +

+ +
+ + +
+ +
+ + 4.9/5 + Google Reviews +
+
+ + {/* ─── Centre: circles + dashboard ─── */} + + {/* Concentric circles */} +
+
+ + {/* Dashboard card */} +
+ +
+ + {/* Floating stat — top right */} + +

+ Avg Tax Saved +

+

£4,200/yr

+
+ + {/* Floating stat — bottom left */} + +

+ Response Time +

+

< 4 hrs

+
+ + + {/* ─── Right: large display headline (desktop only) ─── */} + +

+ Smart +
+ Accounting +

+

+ for British Business +

+
+ {TRUST_ITEMS.map((item) => ( + + + {item} + + ))} +
+
+
{/* Trust strip */} -
+
🇬🇧 UK-Based Team
diff --git a/src/components/sections/home/HowItWorksSection.tsx b/src/components/sections/home/HowItWorksSection.tsx new file mode 100644 index 0000000..79a203a --- /dev/null +++ b/src/components/sections/home/HowItWorksSection.tsx @@ -0,0 +1,68 @@ +import { FadeIn } from '@/components/ui/FadeIn'; +import { Button } from '@/components/ui/Button'; + +const STEPS = [ + { + number: '01', + title: 'Book a free call', + body: 'Tell us about your business in a 30-minute call. No obligation, no hard sell — just an honest conversation about what you need.', + }, + { + number: '02', + title: 'Get your tailored plan', + body: 'We put together a fixed-price proposal covering everything you need. Onboarding takes 48 hours and we handle the transition from your old accountant.', + }, + { + number: '03', + title: 'We handle everything', + body: 'From that point on, your accounts, tax, and compliance are handled. You get a real-time dashboard and a dedicated manager just a message away.', + }, +]; + +export function HowItWorksSection() { + return ( +
+
+ +
+

+ Simple process +

+

+ Getting started +
+ takes 3 steps +

+
+ +
+ +
+ {STEPS.map((s, i) => ( + +
+ {/* Step number */} +
+
+ {s.number} +
+ {i < STEPS.length - 1 && ( +
+ )} +
+ +

{s.title}

+

{s.body}

+ + {/* Mobile connector */} + {i < STEPS.length - 1 &&
} +
+ + ))} +
+
+
+ ); +} diff --git a/src/components/sections/home/PainPointsSection.tsx b/src/components/sections/home/PainPointsSection.tsx new file mode 100644 index 0000000..e0a27cd --- /dev/null +++ b/src/components/sections/home/PainPointsSection.tsx @@ -0,0 +1,83 @@ +import { FadeIn } from '@/components/ui/FadeIn'; + +const PAINS = [ + { + number: '01', + title: 'HMRC penalties for missed deadlines', + body: 'Self-assessment, VAT, corporation tax — the dates stack up. One missed deadline can cost hundreds in fines.', + }, + { + number: '02', + title: 'Tax rules that change every year', + body: 'Making Tax Digital, dividend tax hikes, NICs changes — staying compliant feels like a full-time job.', + }, + { + number: '03', + title: 'Hours lost on bookkeeping', + body: 'Reconciling bank feeds, chasing receipts, producing reports — time you should be spending on your business.', + }, +]; + +export function PainPointsSection() { + return ( +
+ {/* Subtle dot grid */} +
+ +
+ {/* Header */} + +

+ The problem +

+

+ Most businesses are losing +
+ money to bad accounting. +

+
+ + {/* Editorial 73% stat */} + +
+

+ 73% +

+
+
+

+ of UK small businesses overpay tax due to unclaimed allowances and poor financial + planning. +

+

+ * HMRC data and independent SME research, 2024 +

+
+
+ + {/* Pain cards — editorial grid */} +
+ {PAINS.map((p, i) => ( + +
+

+ {p.number} +

+
+

+ {p.title} +

+

{p.body}

+
+ + ))} +
+
+
+ ); +} diff --git a/src/components/sections/home/ProcessSection.tsx b/src/components/sections/home/ProcessSection.tsx new file mode 100644 index 0000000..a7ec3e4 --- /dev/null +++ b/src/components/sections/home/ProcessSection.tsx @@ -0,0 +1,97 @@ +import React from 'react'; +import { Phone, Zap, FileCheck, TrendingUp, ArrowUpRight } from 'lucide-react'; +import { Button } from '@/components/ui/Button'; +import { SpotlightCard } from '@/components/ui/SpotlightCard'; +import { FadeIn } from '@/components/ui/FadeIn'; + +interface ProcessItem { + icon: React.ElementType; + title: string; + description: string; +} + +const PROCESS_ITEMS: ProcessItem[] = [ + { + icon: Phone, + title: 'Free Consultation', + description: + 'Tell us about your business, current finances and goals. No pressure, no commitment — just an honest conversation.', + }, + { + icon: Zap, + title: 'Quick Onboarding', + description: + 'We migrate your accounts and set up your Axil dashboard in under a week, with zero disruption to your business.', + }, + { + icon: FileCheck, + title: 'We Handle Everything', + description: + 'Bookkeeping, tax, payroll, VAT — handled every month with zero input from you, filed on time, every time.', + }, + { + icon: TrendingUp, + title: 'You Focus on Growth', + description: + 'Monthly reports, proactive tax advice, and a dedicated account manager who knows your business inside out.', + }, +]; + +function ProcessCard({ icon: Icon, title, description }: ProcessItem) { + return ( + + {/* Decorative connector line — visible on larger screens */} +
+
+ + {/* Icon container */} +
+ +
+ +
+

{title}

+

{description}

+
+ + ); +} + +export function ProcessSection() { + return ( +
+
+ {/* Left: heading + description + CTA */} + + + How we do it + +

+ From sign-up to sorted in days +

+

+ We've made switching accountants effortless. Most clients are fully onboarded + within a week — then we handle everything so you never have to think about tax again. +

+ +
+ + {/* Right: 2×2 grid of SpotlightCards */} +
+ {PROCESS_ITEMS.map((item, i) => ( + + + + ))} +
+
+
+ ); +} diff --git a/src/components/sections/home/ServicesSection.tsx b/src/components/sections/home/ServicesSection.tsx new file mode 100644 index 0000000..4bc5ea6 --- /dev/null +++ b/src/components/sections/home/ServicesSection.tsx @@ -0,0 +1,129 @@ +import Link from 'next/link'; +import { FadeIn } from '@/components/ui/FadeIn'; +import { Button } from '@/components/ui/Button'; +import { + ArrowRightIcon, + BookkeepingIcon, + TaxIcon, + PayrollIcon, + VATIcon, +} from '@/components/ui/icons'; + +const SERVICES = [ + { + icon: BookkeepingIcon, + title: 'Bookkeeping', + tagline: 'Accurate records, zero stress', + description: + 'Bank reconciliation, expense categorisation, monthly management accounts — all handled so you always know where you stand.', + href: '/services/bookkeeping', + accent: 'emerald' as const, + }, + { + icon: TaxIcon, + title: 'Tax Returns', + tagline: 'Every allowance claimed', + description: + 'Self-assessment, corporation tax, R&D credits — we file on time and make sure you never pay a penny more than you owe.', + href: '/services/tax-returns', + accent: 'blue' as const, + }, + { + icon: PayrollIcon, + title: 'Payroll', + tagline: 'On time, every time', + description: + 'RTI submissions, P60s, auto-enrolment — we manage your entire payroll cycle so your team gets paid correctly and on schedule.', + href: '/services/payroll', + accent: 'emerald' as const, + }, + { + icon: VATIcon, + title: 'VAT Returns', + tagline: 'MTD-compliant filing', + description: + 'Making Tax Digital from day one. We prepare, review, and file your VAT returns accurately and on time, every quarter.', + href: '/services/vat-returns', + accent: 'blue' as const, + }, +]; + +const accentMap = { + emerald: { + bar: 'bg-gradient-to-r from-emerald-dark to-emerald', + iconBg: 'bg-emerald/10', + iconColor: 'var(--emerald)', + tagline: 'text-emerald', + }, + blue: { + bar: 'bg-gradient-to-r from-blue-dark to-blue', + iconBg: 'bg-blue/10', + iconColor: 'var(--blue)', + tagline: 'text-blue', + }, +}; + +export function ServicesSection() { + return ( +
+
+ {/* Header */} + +
+

+ What we do +

+

+ Everything your +
+ business needs +

+
+ +
+ + {/* Card grid */} +
+ {SERVICES.map((s, i) => { + const Icon = s.icon; + const colors = accentMap[s.accent]; + return ( + + +
+ {/* Coloured top bar */} +
+
+ {/* Icon container */} +
+ +
+

+ {s.title} +

+

{s.tagline}

+

+ {s.description} +

+
+ Learn more + +
+
+
+ + + ); + })} +
+
+
+ ); +} diff --git a/src/components/sections/home/SolutionSection.tsx b/src/components/sections/home/SolutionSection.tsx new file mode 100644 index 0000000..bafdb75 --- /dev/null +++ b/src/components/sections/home/SolutionSection.tsx @@ -0,0 +1,81 @@ +import { FadeIn } from '@/components/ui/FadeIn'; +import { CheckCircleIcon } from '@/components/ui/icons'; + +const FEATURES = [ + { + number: '01', + title: 'Fixed monthly fee', + body: 'No surprise invoices. You know exactly what you pay on the 1st of every month — nothing more, ever.', + }, + { + number: '02', + title: 'Your dedicated account manager', + body: 'A real person who knows your business, answers your calls, and proactively saves you money.', + }, + { + number: '03', + title: '100% cloud-based', + body: 'All your accounts in one place, accessible anytime. We connect to your bank and automate the boring parts.', + }, +]; + +const CHECKLIST = [ + 'Onboarded within 48 hours', + 'We handle the HMRC transition', + 'MTD-compliant from day one', + 'Real-time financial dashboard', +]; + +export function SolutionSection() { + return ( +
+
+
+ {/* Left — text */} + +

+ The Axil way +

+

+ We found a
+ better way +
+ to do accounting. +

+

+ Proactive, transparent, and technology-first. We don't wait for you to ask — we + spot savings, flag issues, and keep you compliant before problems arise. +

+
    + {CHECKLIST.map((item) => ( +
  • + + {item} +
  • + ))} +
+
+ + {/* Right — numbered features */} + +
+ {FEATURES.map((f) => ( +
+ + {f.number} + +
+

+ {f.title} +

+

{f.body}

+
+
+ ))} +
+
+
+
+
+ ); +} diff --git a/src/components/sections/home/TestimonialsSection.tsx b/src/components/sections/home/TestimonialsSection.tsx new file mode 100644 index 0000000..df08df7 --- /dev/null +++ b/src/components/sections/home/TestimonialsSection.tsx @@ -0,0 +1,115 @@ +import { TestimonialsColumn, type TestimonialItem } from '@/components/ui/TestimonialsColumn'; +import { Tag } from '@/components/ui/Tag'; +import { StarRating } from '@/components/ui/StarRating'; +import { FadeIn } from '@/components/ui/FadeIn'; + +const TESTIMONIALS: TestimonialItem[] = [ + { + name: 'Sarah T.', + role: 'Limited Company Director', + image: 'https://ui-avatars.com/api/?name=Sarah+T&background=3CC68A&color=fff&bold=true&size=80', + text: 'Axil saved us over £8,000 in our first year alone. They spotted allowances our previous accountant had missed for three years running.', + }, + { + name: 'James K.', + role: 'Sole Trader', + image: 'https://ui-avatars.com/api/?name=James+K&background=1B9AD6&color=fff&bold=true&size=80', + text: 'Finally an accountant who speaks plain English. I actually understand my finances now, and my tax bill has never been lower.', + }, + { + name: 'Emma R.', + role: 'Startup Founder', + image: 'https://ui-avatars.com/api/?name=Emma+R&background=27A870&color=fff&bold=true&size=80', + text: "Payroll used to take me half a day every month. Now it takes zero minutes. Axil handles it completely and it's always perfect.", + }, + { + name: 'Michael B.', + role: 'Limited Company Director', + image: + 'https://ui-avatars.com/api/?name=Michael+B&background=1480B8&color=fff&bold=true&size=80', + text: 'The dedicated account manager is worth every penny. She proactively flagged a VAT issue that would have cost us £4,000 in penalties.', + }, + { + name: 'David O.', + role: 'Sole Trader', + image: 'https://ui-avatars.com/api/?name=David+O&background=3CC68A&color=fff&bold=true&size=80', + text: 'Switched from a Big 4 firm to Axil and never looked back. Same quality, half the price, ten times more personal service.', + }, + { + name: 'Rachel M.', + role: 'E-commerce Brand Owner', + image: + 'https://ui-avatars.com/api/?name=Rachel+M&background=7DDCB0&color=162520&bold=true&size=80', + text: 'MTD compliance, quarterly VAT, company accounts — Axil handles everything and I get a clean dashboard showing exactly how my business is doing.', + }, + { + name: 'Tom H.', + role: 'Consulting Ltd', + image: 'https://ui-avatars.com/api/?name=Tom+H&background=1B9AD6&color=fff&bold=true&size=80', + text: 'I was dreading my first year of corporation tax as a limited company. Axil made it completely painless and saved me significantly on my first filing.', + }, + { + name: 'Priya S.', + role: 'Retail Business Owner', + image: 'https://ui-avatars.com/api/?name=Priya+S&background=27A870&color=fff&bold=true&size=80', + text: "Three years with Axil and I've recommended them to five other business owners. Genuinely the best decision I made when starting my company.", + }, +]; + +const col1 = TESTIMONIALS.slice(0, 3); +const col2 = TESTIMONIALS.slice(3, 6); +const col3 = [...TESTIMONIALS.slice(6, 8), TESTIMONIALS[0]]; + +export function TestimonialsSection() { + return ( +
+
+ {/* Centred header */} + +
+

+ Client stories +

+

+ What our clients say +

+

+ Over 500 UK businesses trust Axil with their finances. Here's what they have to + say. +

+ +
+ +
+

4.9 / 5

+

Based on 200+ Google reviews

+
+ + Google Verified + +
+
+
+
+ + {/* Three scrolling columns */} +
+
+ + + + + +
+
+
+ ); +} diff --git a/src/components/sections/home/WhyAxilSection.tsx b/src/components/sections/home/WhyAxilSection.tsx new file mode 100644 index 0000000..23a8acb --- /dev/null +++ b/src/components/sections/home/WhyAxilSection.tsx @@ -0,0 +1,89 @@ +'use client'; + +import { FadeIn } from '@/components/ui/FadeIn'; +import { StatCounter } from '@/components/ui/StatCounter'; +import { ShieldCheckIcon, ReceiptIcon, PersonCircleIcon, CloudIcon } from '@/components/ui/icons'; + +const STATS = [ + { prefix: '', value: 500, suffix: '+', label: 'Businesses Served' }, + { prefix: '', value: 98, suffix: '%', label: 'Client Retention' }, + { prefix: '£', value: 2, suffix: 'M+', label: 'Tax Saved for Clients' }, + { prefix: '', value: 12, suffix: '+', label: 'Years of Experience' }, +]; + +const USPS = [ + { + Icon: ShieldCheckIcon, + title: 'ICAEW & ACCA Qualified', + body: "Our accountants hold the highest professional qualifications in the UK. You're in expert hands.", + color: 'var(--emerald)', + bg: 'bg-emerald/10', + }, + { + Icon: ReceiptIcon, + title: 'Fixed Monthly Engagement', + body: 'One predictable fee covers everything. No extra charges for emails, calls, or ad-hoc advice.', + color: 'var(--blue)', + bg: 'bg-blue/10', + }, + { + Icon: PersonCircleIcon, + title: 'Dedicated Account Manager', + body: 'One person who knows you and your business. No call centres, no being passed around.', + color: 'var(--emerald)', + bg: 'bg-emerald/10', + }, + { + Icon: CloudIcon, + title: 'Cloud-Based & Paper-Free', + body: 'We connect to Xero, QuickBooks, and your bank. Everything is digital, accessible, and automated.', + color: 'var(--blue)', + bg: 'bg-blue/10', + }, +]; + +export function WhyAxilSection() { + return ( +
+
+ +

+ Why choose Axil +

+

+ Numbers that +
+ speak for themselves +

+
+ + {/* Stats row */} +
+ {STATS.map((s, i) => ( + +

+ {s.prefix} + + {s.suffix} +

+

{s.label}

+
+ ))} +
+ + {/* USP grid */} +
+ {USPS.map((u, i) => ( + +
+ +
+

{u.title}

+

{u.body}

+
+ ))} +
+
+
+ ); +} diff --git a/src/components/ui/Button.tsx b/src/components/ui/Button.tsx new file mode 100644 index 0000000..3651b37 --- /dev/null +++ b/src/components/ui/Button.tsx @@ -0,0 +1,84 @@ +'use client'; + +import { forwardRef } from 'react'; +import { Spinner } from './Spinner'; +import { ArrowRightIcon } from './icons'; + +type Variant = 'primary' | 'secondary' | 'ghost'; +type Size = 'sm' | 'md' | 'lg'; + +interface ButtonProps extends React.ButtonHTMLAttributes { + variant?: Variant; + size?: Size; + loading?: boolean; + trailingArrow?: boolean; + leadingIcon?: React.ReactNode; +} + +const variants: Record = { + primary: + 'bg-emerald text-white hover:bg-emerald-dark active:bg-emerald-deeper ' + + 'focus-visible:ring-emerald/50 shadow-sm', + secondary: + 'border border-emerald text-emerald bg-transparent hover:bg-emerald-mist ' + + 'focus-visible:ring-emerald/50', + ghost: 'text-emerald bg-transparent hover:bg-emerald-mist ' + 'focus-visible:ring-emerald/50', +}; + +const sizes: Record = { + sm: 'h-9 px-4 text-sm gap-1.5 rounded-pill', + md: 'h-11 px-6 text-base gap-2 rounded-pill', + lg: 'h-14 px-8 text-lg gap-2.5 rounded-pill', +}; + +export const Button = forwardRef( + ( + { + variant = 'primary', + size = 'md', + loading = false, + trailingArrow = false, + leadingIcon, + children, + className = '', + disabled, + ...props + }, + ref, + ) => { + const arrowSize = size === 'sm' ? 14 : size === 'lg' ? 20 : 16; + + return ( + + ); + }, +); + +Button.displayName = 'Button'; diff --git a/src/components/ui/ContainerScroll.tsx b/src/components/ui/ContainerScroll.tsx new file mode 100644 index 0000000..748abb2 --- /dev/null +++ b/src/components/ui/ContainerScroll.tsx @@ -0,0 +1,23 @@ +import React from 'react'; + +export const ContainerScroll = ({ + titleComponent, + children, +}: { + titleComponent: string | React.ReactNode; + children: React.ReactNode; +}) => ( +
+
{titleComponent}
+ +
+
{children}
+
+
+); diff --git a/src/components/ui/Divider.tsx b/src/components/ui/Divider.tsx new file mode 100644 index 0000000..a72a058 --- /dev/null +++ b/src/components/ui/Divider.tsx @@ -0,0 +1,11 @@ +interface DividerProps { + className?: string; +} + +export function Divider({ className = '' }: DividerProps) { + return ( +
+ ); +} diff --git a/src/components/ui/FadeIn.tsx b/src/components/ui/FadeIn.tsx new file mode 100644 index 0000000..b57c993 --- /dev/null +++ b/src/components/ui/FadeIn.tsx @@ -0,0 +1,40 @@ +'use client'; + +import { useEffect, useRef } from 'react'; +import { gsap, ScrollTrigger } from '@/lib/gsap'; + +interface Props { + children: React.ReactNode; + className?: string; + delay?: number; + y?: number; + x?: number; +} + +export function FadeIn({ children, className = '', delay = 0, y = 24, x = 0 }: Props) { + const ref = useRef(null); + + useEffect(() => { + const el = ref.current; + if (!el) return; + + gsap.set(el, { opacity: 0, y, x }); + + const trigger = ScrollTrigger.create({ + trigger: el, + start: 'top 88%', + once: true, + onEnter: () => { + gsap.to(el, { opacity: 1, y: 0, x: 0, duration: 0.85, delay, ease: 'power3.out' }); + }, + }); + + return () => trigger.kill(); + }, [delay, y, x]); + + return ( +
+ {children} +
+ ); +} diff --git a/src/components/ui/GlassCard.tsx b/src/components/ui/GlassCard.tsx new file mode 100644 index 0000000..9ce89bf --- /dev/null +++ b/src/components/ui/GlassCard.tsx @@ -0,0 +1,21 @@ +interface GlassCardProps { + children: React.ReactNode; + className?: string; + dark?: boolean; + hover?: boolean; +} + +export function GlassCard({ + children, + className = '', + dark = false, + hover = true, +}: GlassCardProps) { + const base = dark + ? 'bg-white/5 border border-white/10 backdrop-blur-md hover-glow-emerald-dark' + : 'bg-white border border-emerald/15 shadow-sm hover-glow-emerald'; + + const hoverClasses = hover ? 'hover:-translate-y-1 hover:border-emerald/35' : ''; + + return
{children}
; +} diff --git a/src/components/ui/Heading.tsx b/src/components/ui/Heading.tsx new file mode 100644 index 0000000..8ce5cbe --- /dev/null +++ b/src/components/ui/Heading.tsx @@ -0,0 +1,16 @@ +interface HeadingProps { + as?: 'h1' | 'h2' | 'h3' | 'h4'; + children: React.ReactNode; + className?: string; +} + +const defaultClasses = { + h1: 'font-display text-4xl font-bold tracking-tight sm:text-5xl lg:text-6xl', + h2: 'font-display text-3xl font-bold tracking-tight sm:text-4xl', + h3: 'font-display text-2xl font-semibold sm:text-3xl', + h4: 'font-display text-xl font-semibold sm:text-2xl', +}; + +export function Heading({ as: Tag = 'h2', children, className = '' }: HeadingProps) { + return {children}; +} diff --git a/src/components/ui/InteractiveMenu.tsx b/src/components/ui/InteractiveMenu.tsx new file mode 100644 index 0000000..36386af --- /dev/null +++ b/src/components/ui/InteractiveMenu.tsx @@ -0,0 +1,79 @@ +'use client'; + +import React, { useState, useRef, useEffect, useMemo } from 'react'; +import type { ElementType } from 'react'; + +type IconComponentType = ElementType<{ className?: string; size?: number }>; + +export interface InteractiveMenuItem { + label: string; + icon: IconComponentType; + href?: string; +} + +export interface InteractiveMenuProps { + items: InteractiveMenuItem[]; + accentColor?: string; + onSelect?: (index: number, item: InteractiveMenuItem) => void; +} + +export function InteractiveMenu({ items, accentColor, onSelect }: InteractiveMenuProps) { + const [activeIndex, setActiveIndex] = useState(0); + const textRefs = useRef<(HTMLElement | null)[]>([]); + const itemRefs = useRef<(HTMLButtonElement | null)[]>([]); + + useEffect(() => { + const setLineWidth = () => { + const activeItemEl = itemRefs.current[activeIndex]; + const activeTextEl = textRefs.current[activeIndex]; + if (activeItemEl && activeTextEl) { + activeItemEl.style.setProperty('--lineWidth', `${activeTextEl.offsetWidth}px`); + } + }; + setLineWidth(); + window.addEventListener('resize', setLineWidth); + return () => window.removeEventListener('resize', setLineWidth); + }, [activeIndex, items]); + + const navStyle = useMemo( + () => + ({ + '--component-active-color': accentColor || 'var(--emerald)', + }) as React.CSSProperties, + [accentColor], + ); + + const handleClick = (index: number) => { + setActiveIndex(index); + onSelect?.(index, items[index]); + }; + + return ( + + ); +} diff --git a/src/components/ui/Section.tsx b/src/components/ui/Section.tsx new file mode 100644 index 0000000..0a15751 --- /dev/null +++ b/src/components/ui/Section.tsx @@ -0,0 +1,13 @@ +interface SectionProps { + children: React.ReactNode; + className?: string; + id?: string; +} + +export function Section({ children, className = '', id }: SectionProps) { + return ( +
+
{children}
+
+ ); +} diff --git a/src/components/ui/Spinner.tsx b/src/components/ui/Spinner.tsx new file mode 100644 index 0000000..6287e97 --- /dev/null +++ b/src/components/ui/Spinner.tsx @@ -0,0 +1,30 @@ +interface SpinnerProps { + size?: 'sm' | 'md' | 'lg'; + color?: string; + className?: string; +} + +const sizeMap = { + sm: 'size-4', + md: 'size-5', + lg: 'size-6', +}; + +export function Spinner({ size = 'md', className = '' }: SpinnerProps) { + return ( + + ); +} diff --git a/src/components/ui/SpotlightCard.tsx b/src/components/ui/SpotlightCard.tsx new file mode 100644 index 0000000..dcbb065 --- /dev/null +++ b/src/components/ui/SpotlightCard.tsx @@ -0,0 +1,127 @@ +'use client'; + +import React, { useEffect, useRef, ReactNode } from 'react'; + +interface SpotlightCardProps { + children: ReactNode; + className?: string; + glowColor?: 'blue' | 'purple' | 'green' | 'red' | 'orange'; + customSize?: boolean; + width?: string | number; + height?: string | number; +} + +const glowColorMap = { + blue: { base: 220, spread: 200 }, + purple: { base: 280, spread: 300 }, + green: { base: 150, spread: 40 }, // narrower range stays in emerald territory + red: { base: 0, spread: 200 }, + orange: { base: 30, spread: 200 }, +}; + +export function SpotlightCard({ + children, + className = '', + glowColor = 'green', + width, + height, +}: SpotlightCardProps) { + const cardRef = useRef(null); + + useEffect(() => { + const syncPointer = (e: PointerEvent) => { + const { clientX: x, clientY: y } = e; + if (cardRef.current) { + cardRef.current.style.setProperty('--x', x.toFixed(2)); + cardRef.current.style.setProperty('--xp', (x / window.innerWidth).toFixed(2)); + cardRef.current.style.setProperty('--y', y.toFixed(2)); + cardRef.current.style.setProperty('--yp', (y / window.innerHeight).toFixed(2)); + } + }; + document.addEventListener('pointermove', syncPointer); + return () => document.removeEventListener('pointermove', syncPointer); + }, []); + + const { base, spread } = glowColorMap[glowColor]; + + const inlineStyles: React.CSSProperties & Record = { + '--base': base, + '--spread': spread, + '--radius': '16', + '--border': '1', + '--backdrop': 'hsl(0 0% 100% / 0.95)', + '--backup-border': 'rgba(22,37,32,0.08)', + '--size': '250', + '--outer': '1', + '--border-size': 'calc(var(--border, 1) * 1px)', + '--spotlight-size': 'calc(var(--size, 150) * 1px)', + '--hue': 'calc(var(--base) + (var(--xp, 0) * var(--spread, 0)))', + backgroundImage: `radial-gradient( + var(--spotlight-size) var(--spotlight-size) at + calc(var(--x, 0) * 1px) + calc(var(--y, 0) * 1px), + hsl(var(--hue, 150) calc(var(--saturation, 80) * 1%) calc(var(--lightness, 70) * 1%) / var(--bg-spot-opacity, 0.08)), transparent + )`, + backgroundColor: 'var(--backdrop, white)', + backgroundSize: 'calc(100% + (2 * var(--border-size))) calc(100% + (2 * var(--border-size)))', + backgroundPosition: '50% 50%', + backgroundAttachment: 'fixed', + border: 'var(--border-size) solid var(--backup-border)', + position: 'relative', + touchAction: 'none', + }; + + if (width !== undefined) inlineStyles.width = typeof width === 'number' ? `${width}px` : width; + if (height !== undefined) + inlineStyles.height = typeof height === 'number' ? `${height}px` : height; + + const beforeAfterStyles = ` + [data-spotlight]::before, + [data-spotlight]::after { + pointer-events: none; + content: ""; + position: absolute; + inset: calc(var(--border-size) * -1); + border: var(--border-size) solid transparent; + border-radius: calc(var(--radius) * 1px); + background-attachment: fixed; + background-size: calc(100% + (2 * var(--border-size))) calc(100% + (2 * var(--border-size))); + background-repeat: no-repeat; + background-position: 50% 50%; + mask: linear-gradient(transparent, transparent), linear-gradient(white, white); + mask-clip: padding-box, border-box; + mask-composite: intersect; + } + [data-spotlight]::before { + background-image: radial-gradient( + calc(var(--spotlight-size) * 0.75) calc(var(--spotlight-size) * 0.75) at + calc(var(--x, 0) * 1px) + calc(var(--y, 0) * 1px), + hsl(var(--hue, 150) calc(var(--saturation, 80) * 1%) calc(var(--lightness, 50) * 1%) / var(--border-spot-opacity, 0.8)), transparent 100% + ); + filter: brightness(1.5); + } + [data-spotlight]::after { + background-image: radial-gradient( + calc(var(--spotlight-size) * 0.5) calc(var(--spotlight-size) * 0.5) at + calc(var(--x, 0) * 1px) + calc(var(--y, 0) * 1px), + hsl(0 100% 100% / var(--border-light-opacity, 0.5)), transparent 100% + ); + } + `; + + return ( + <> +