From ca833d293900563f8f8c6ef8fee11b54242648c2 Mon Sep 17 00:00:00 2001 From: gzukas Date: Sun, 19 Jan 2025 12:49:45 +0200 Subject: [PATCH 01/25] feat: api --- .gitignore | 51 +- .husky/pre-commit | 2 +- .lintstagedrc | 6 +- .prettierignore | 2 - .puppeteerrc.cjs | 14 + components.json => apps/web/components.json | 0 eslint.config.js => apps/web/eslint.config.js | 0 index.html => apps/web/index.html | 0 lingui.config.ts => apps/web/lingui.config.ts | 0 apps/web/package.json | 56 + .../web/postcss.config.js | 0 .../web/public}/dashboard-dark.webp | Bin .../web/public}/dashboard-light.webp | Bin {public => apps/web/public}/favicon.svg | 0 {src => apps/web/src}/App.tsx | 2 +- {src => apps/web/src}/JotaiDevTools.tsx | 0 {src => apps/web/src}/atoms/amplitudeAtoms.ts | 0 .../web/src}/atoms/areImagesReversedAtom.ts | 0 {src => apps/web/src}/atoms/exportAtoms.ts | 0 {src => apps/web/src}/atoms/graphicsAtom.ts | 0 {src => apps/web/src}/atoms/imagesAtom.ts | 0 .../web/src}/atoms/largestImageAtom.ts | 0 {src => apps/web/src}/atoms/localeAtom.ts | 0 .../web/src}/atoms/orderedImagesAtom.ts | 0 {src => apps/web/src}/atoms/rotationAtom.ts | 0 {src => apps/web/src}/atoms/scaleAtom.ts | 0 .../web/src}/atoms/sensibleDefaultsEffect.ts | 0 {src => apps/web/src}/atoms/themeAtom.ts | 0 {src => apps/web/src}/atoms/waveAtom.ts | 0 .../web/src}/atoms/wavelengthAtoms.ts | 0 .../web/src}/components/AtomSlider.tsx | 0 .../web/src}/components/ChangeTheme.tsx | 2 +- .../web/src}/components/ChooseImages.tsx | 0 {src => apps/web/src}/components/Controls.tsx | 0 .../web/src}/components/CopyImage.tsx | 2 +- {src => apps/web/src}/components/Editor.tsx | 2 +- .../web/src}/components/ExportImage.tsx | 2 +- {src => apps/web/src}/components/Graphics.tsx | 0 .../web/src}/components/I18nProvider.tsx | 0 .../web/src}/components/LoadableIcon.tsx | 0 .../web/src}/components/ReverseImages.tsx | 2 +- .../web/src}/components/SeeExample.tsx | 2 +- .../web/src}/components/ui/AspectRatio.tsx | 0 .../web/src}/components/ui/Button.tsx | 0 .../web/src}/components/ui/DropdownMenu.tsx | 0 {src => apps/web/src}/components/ui/Input.tsx | 0 {src => apps/web/src}/components/ui/Label.tsx | 0 .../web/src}/components/ui/Separator.tsx | 0 .../web/src}/components/ui/Slider.tsx | 0 .../web/src}/components/ui/Tooltip.tsx | 0 {src => apps/web/src}/config/site.ts | 0 {src => apps/web/src}/constants.ts | 0 .../src}/hooks/__tests__/useClipboard.test.ts | 0 {src => apps/web/src}/hooks/useClipboard.ts | 0 {src => apps/web/src}/hooks/useExpireAtom.ts | 0 .../web/src}/hooks/useImagesDisclosure.ts | 0 {src => apps/web/src}/hooks/useThemeEffect.ts | 0 {src => apps/web/src}/index.css | 0 {src => apps/web/src}/lib/utils.ts | 0 {src => apps/web/src}/locales/en.po | 0 {src => apps/web/src}/locales/en.ts | 0 {src => apps/web/src}/main.tsx | 4 +- {src => apps/web/src}/types.ts | 0 .../utils/__tests__/atomWithExpire.test.ts | 0 .../utils/__tests__/atomWithToggle.test.ts | 0 .../web/src}/utils/__tests__/readFile.test.ts | 0 {src => apps/web/src}/utils/atomWithExpire.ts | 0 {src => apps/web/src}/utils/atomWithToggle.ts | 0 {src => apps/web/src}/utils/loadImage.ts | 0 {src => apps/web/src}/utils/rasterize.ts | 0 {src => apps/web/src}/utils/readFile.ts | 0 {src => apps/web/src}/vite-env.d.ts | 0 .../web/tailwind.config.ts | 0 tsconfig.json => apps/web/tsconfig.json | 0 .../web/tsconfig.node.json | 0 vite.config.ts => apps/web/vite.config.ts | 12 +- bun.lockb | Bin 0 -> 267162 bytes package.json | 87 +- pnpm-lock.yaml | 5976 ----------------- turbo.json | 29 + 80 files changed, 178 insertions(+), 6075 deletions(-) delete mode 100644 .prettierignore create mode 100644 .puppeteerrc.cjs rename components.json => apps/web/components.json (100%) rename eslint.config.js => apps/web/eslint.config.js (100%) rename index.html => apps/web/index.html (100%) rename lingui.config.ts => apps/web/lingui.config.ts (100%) create mode 100644 apps/web/package.json rename postcss.config.js => apps/web/postcss.config.js (100%) rename {public => apps/web/public}/dashboard-dark.webp (100%) rename {public => apps/web/public}/dashboard-light.webp (100%) rename {public => apps/web/public}/favicon.svg (100%) rename {src => apps/web/src}/App.tsx (96%) rename {src => apps/web/src}/JotaiDevTools.tsx (100%) rename {src => apps/web/src}/atoms/amplitudeAtoms.ts (100%) rename {src => apps/web/src}/atoms/areImagesReversedAtom.ts (100%) rename {src => apps/web/src}/atoms/exportAtoms.ts (100%) rename {src => apps/web/src}/atoms/graphicsAtom.ts (100%) rename {src => apps/web/src}/atoms/imagesAtom.ts (100%) rename {src => apps/web/src}/atoms/largestImageAtom.ts (100%) rename {src => apps/web/src}/atoms/localeAtom.ts (100%) rename {src => apps/web/src}/atoms/orderedImagesAtom.ts (100%) rename {src => apps/web/src}/atoms/rotationAtom.ts (100%) rename {src => apps/web/src}/atoms/scaleAtom.ts (100%) rename {src => apps/web/src}/atoms/sensibleDefaultsEffect.ts (100%) rename {src => apps/web/src}/atoms/themeAtom.ts (100%) rename {src => apps/web/src}/atoms/waveAtom.ts (100%) rename {src => apps/web/src}/atoms/wavelengthAtoms.ts (100%) rename {src => apps/web/src}/components/AtomSlider.tsx (100%) rename {src => apps/web/src}/components/ChangeTheme.tsx (96%) rename {src => apps/web/src}/components/ChooseImages.tsx (100%) rename {src => apps/web/src}/components/Controls.tsx (100%) rename {src => apps/web/src}/components/CopyImage.tsx (97%) rename {src => apps/web/src}/components/Editor.tsx (98%) rename {src => apps/web/src}/components/ExportImage.tsx (98%) rename {src => apps/web/src}/components/Graphics.tsx (100%) rename {src => apps/web/src}/components/I18nProvider.tsx (100%) rename {src => apps/web/src}/components/LoadableIcon.tsx (100%) rename {src => apps/web/src}/components/ReverseImages.tsx (96%) rename {src => apps/web/src}/components/SeeExample.tsx (92%) rename {src => apps/web/src}/components/ui/AspectRatio.tsx (100%) rename {src => apps/web/src}/components/ui/Button.tsx (100%) rename {src => apps/web/src}/components/ui/DropdownMenu.tsx (100%) rename {src => apps/web/src}/components/ui/Input.tsx (100%) rename {src => apps/web/src}/components/ui/Label.tsx (100%) rename {src => apps/web/src}/components/ui/Separator.tsx (100%) rename {src => apps/web/src}/components/ui/Slider.tsx (100%) rename {src => apps/web/src}/components/ui/Tooltip.tsx (100%) rename {src => apps/web/src}/config/site.ts (100%) rename {src => apps/web/src}/constants.ts (100%) rename {src => apps/web/src}/hooks/__tests__/useClipboard.test.ts (100%) rename {src => apps/web/src}/hooks/useClipboard.ts (100%) rename {src => apps/web/src}/hooks/useExpireAtom.ts (100%) rename {src => apps/web/src}/hooks/useImagesDisclosure.ts (100%) rename {src => apps/web/src}/hooks/useThemeEffect.ts (100%) rename {src => apps/web/src}/index.css (100%) rename {src => apps/web/src}/lib/utils.ts (100%) rename {src => apps/web/src}/locales/en.po (100%) rename {src => apps/web/src}/locales/en.ts (100%) rename {src => apps/web/src}/main.tsx (69%) rename {src => apps/web/src}/types.ts (100%) rename {src => apps/web/src}/utils/__tests__/atomWithExpire.test.ts (100%) rename {src => apps/web/src}/utils/__tests__/atomWithToggle.test.ts (100%) rename {src => apps/web/src}/utils/__tests__/readFile.test.ts (100%) rename {src => apps/web/src}/utils/atomWithExpire.ts (100%) rename {src => apps/web/src}/utils/atomWithToggle.ts (100%) rename {src => apps/web/src}/utils/loadImage.ts (100%) rename {src => apps/web/src}/utils/rasterize.ts (100%) rename {src => apps/web/src}/utils/readFile.ts (100%) rename {src => apps/web/src}/vite-env.d.ts (100%) rename tailwind.config.ts => apps/web/tailwind.config.ts (100%) rename tsconfig.json => apps/web/tsconfig.json (100%) rename tsconfig.node.json => apps/web/tsconfig.node.json (100%) rename vite.config.ts => apps/web/vite.config.ts (58%) create mode 100644 bun.lockb delete mode 100644 pnpm-lock.yaml create mode 100644 turbo.json diff --git a/.gitignore b/.gitignore index a547bf3..0f9e84e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,37 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +# dependencies node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +build dist -dist-ssr -*.local -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea +# misc .DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? +*.pem +.swc +.turbo + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* +turbo-build.log* + +# local env files +# do not commit any .env files to git, except for the .env.example file. +.env +.env*.local + +# typescript +*.tsbuildinfo + +.vscode/ +.cache/ \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit index 2312dc5..27c2b64 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1 @@ -npx lint-staged +#npx lint-staged diff --git a/.lintstagedrc b/.lintstagedrc index 41b9545..298889c 100644 --- a/.lintstagedrc +++ b/.lintstagedrc @@ -1,6 +1,4 @@ { - "**/*.{ts,tsx}": [ - "prettier --write --ignore-unknown", - "eslint --fix" - ] + "**/*.{ts,tsx}": ["turbo run lint -- --fix"], + "**/*.{ts,tsx,md}": ["prettier --write"] } \ No newline at end of file diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 227b71f..0000000 --- a/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -build -coverage \ No newline at end of file diff --git a/.puppeteerrc.cjs b/.puppeteerrc.cjs new file mode 100644 index 0000000..d940443 --- /dev/null +++ b/.puppeteerrc.cjs @@ -0,0 +1,14 @@ +const { join } = require('path'); + +/** + * @type {import("puppeteer").Configuration} + */ +module.exports = { + chrome: { + skipDownload: true + }, + 'chrome-headless-shell': { + skipDownload: false + }, + cacheDirectory: join(__dirname, '.cache', 'puppeteer') +}; diff --git a/components.json b/apps/web/components.json similarity index 100% rename from components.json rename to apps/web/components.json diff --git a/eslint.config.js b/apps/web/eslint.config.js similarity index 100% rename from eslint.config.js rename to apps/web/eslint.config.js diff --git a/index.html b/apps/web/index.html similarity index 100% rename from index.html rename to apps/web/index.html diff --git a/lingui.config.ts b/apps/web/lingui.config.ts similarity index 100% rename from lingui.config.ts rename to apps/web/lingui.config.ts diff --git a/apps/web/package.json b/apps/web/package.json new file mode 100644 index 0000000..2a8454a --- /dev/null +++ b/apps/web/package.json @@ -0,0 +1,56 @@ +{ + "name": "@shadowave/web", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "bunx --bun vite", + "build": "tsc && bunx --bun vite build", + "lint": "eslint . --max-warnings 0", + "test": "vitest", + "messages:extract": "lingui extract --clean", + "messages:compile": "lingui compile --typescript", + "preview": "vite preview", + "prepare": "husky" + }, + "packageManager": "pnpm@9.0.0", + "dependencies": { + "@lingui/core": "^5.1.2", + "@lingui/macro": "^5.1.2", + "@lingui/react": "^5.1.2", + "@radix-ui/react-aspect-ratio": "^1.1.0", + "@radix-ui/react-dropdown-menu": "^2.1.0", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-separator": "^1.1.0", + "@radix-ui/react-slider": "^1.2.0", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.0", + "browser-fs-access": "^0.35.0", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "jotai": "^2.8.3", + "jotai-devtools": "^0.10.0", + "jotai-effect": "^1.0.0", + "lucide-react": "^0.395.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@lingui/cli": "^5.1.2", + "@lingui/conf": "^5.1.2", + "@lingui/swc-plugin": "5.0.2", + "@lingui/vite-plugin": "^5.1.2", + "@testing-library/react": "^16.0.0", + "@types/node": "^20.14.7", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "3.7.2", + "autoprefixer": "^10.4.19", + "happy-dom": "^14.12.3", + "postcss": "^8.4.38", + "prettier-plugin-tailwindcss": "^0.6.5", + "tailwindcss": "^3.4.4" + } +} diff --git a/postcss.config.js b/apps/web/postcss.config.js similarity index 100% rename from postcss.config.js rename to apps/web/postcss.config.js diff --git a/public/dashboard-dark.webp b/apps/web/public/dashboard-dark.webp similarity index 100% rename from public/dashboard-dark.webp rename to apps/web/public/dashboard-dark.webp diff --git a/public/dashboard-light.webp b/apps/web/public/dashboard-light.webp similarity index 100% rename from public/dashboard-light.webp rename to apps/web/public/dashboard-light.webp diff --git a/public/favicon.svg b/apps/web/public/favicon.svg similarity index 100% rename from public/favicon.svg rename to apps/web/public/favicon.svg diff --git a/src/App.tsx b/apps/web/src/App.tsx similarity index 96% rename from src/App.tsx rename to apps/web/src/App.tsx index db80e5b..563ab06 100644 --- a/src/App.tsx +++ b/apps/web/src/App.tsx @@ -1,4 +1,4 @@ -import { Trans } from '@lingui/macro'; +import { Trans } from '@lingui/react/macro'; import { siteConfig } from '@/config/site'; import { I18nProvider } from '@/components/I18nProvider'; import { TooltipProvider } from '@/components/ui/Tooltip'; diff --git a/src/JotaiDevTools.tsx b/apps/web/src/JotaiDevTools.tsx similarity index 100% rename from src/JotaiDevTools.tsx rename to apps/web/src/JotaiDevTools.tsx diff --git a/src/atoms/amplitudeAtoms.ts b/apps/web/src/atoms/amplitudeAtoms.ts similarity index 100% rename from src/atoms/amplitudeAtoms.ts rename to apps/web/src/atoms/amplitudeAtoms.ts diff --git a/src/atoms/areImagesReversedAtom.ts b/apps/web/src/atoms/areImagesReversedAtom.ts similarity index 100% rename from src/atoms/areImagesReversedAtom.ts rename to apps/web/src/atoms/areImagesReversedAtom.ts diff --git a/src/atoms/exportAtoms.ts b/apps/web/src/atoms/exportAtoms.ts similarity index 100% rename from src/atoms/exportAtoms.ts rename to apps/web/src/atoms/exportAtoms.ts diff --git a/src/atoms/graphicsAtom.ts b/apps/web/src/atoms/graphicsAtom.ts similarity index 100% rename from src/atoms/graphicsAtom.ts rename to apps/web/src/atoms/graphicsAtom.ts diff --git a/src/atoms/imagesAtom.ts b/apps/web/src/atoms/imagesAtom.ts similarity index 100% rename from src/atoms/imagesAtom.ts rename to apps/web/src/atoms/imagesAtom.ts diff --git a/src/atoms/largestImageAtom.ts b/apps/web/src/atoms/largestImageAtom.ts similarity index 100% rename from src/atoms/largestImageAtom.ts rename to apps/web/src/atoms/largestImageAtom.ts diff --git a/src/atoms/localeAtom.ts b/apps/web/src/atoms/localeAtom.ts similarity index 100% rename from src/atoms/localeAtom.ts rename to apps/web/src/atoms/localeAtom.ts diff --git a/src/atoms/orderedImagesAtom.ts b/apps/web/src/atoms/orderedImagesAtom.ts similarity index 100% rename from src/atoms/orderedImagesAtom.ts rename to apps/web/src/atoms/orderedImagesAtom.ts diff --git a/src/atoms/rotationAtom.ts b/apps/web/src/atoms/rotationAtom.ts similarity index 100% rename from src/atoms/rotationAtom.ts rename to apps/web/src/atoms/rotationAtom.ts diff --git a/src/atoms/scaleAtom.ts b/apps/web/src/atoms/scaleAtom.ts similarity index 100% rename from src/atoms/scaleAtom.ts rename to apps/web/src/atoms/scaleAtom.ts diff --git a/src/atoms/sensibleDefaultsEffect.ts b/apps/web/src/atoms/sensibleDefaultsEffect.ts similarity index 100% rename from src/atoms/sensibleDefaultsEffect.ts rename to apps/web/src/atoms/sensibleDefaultsEffect.ts diff --git a/src/atoms/themeAtom.ts b/apps/web/src/atoms/themeAtom.ts similarity index 100% rename from src/atoms/themeAtom.ts rename to apps/web/src/atoms/themeAtom.ts diff --git a/src/atoms/waveAtom.ts b/apps/web/src/atoms/waveAtom.ts similarity index 100% rename from src/atoms/waveAtom.ts rename to apps/web/src/atoms/waveAtom.ts diff --git a/src/atoms/wavelengthAtoms.ts b/apps/web/src/atoms/wavelengthAtoms.ts similarity index 100% rename from src/atoms/wavelengthAtoms.ts rename to apps/web/src/atoms/wavelengthAtoms.ts diff --git a/src/components/AtomSlider.tsx b/apps/web/src/components/AtomSlider.tsx similarity index 100% rename from src/components/AtomSlider.tsx rename to apps/web/src/components/AtomSlider.tsx diff --git a/src/components/ChangeTheme.tsx b/apps/web/src/components/ChangeTheme.tsx similarity index 96% rename from src/components/ChangeTheme.tsx rename to apps/web/src/components/ChangeTheme.tsx index 5e77951..7154f68 100644 --- a/src/components/ChangeTheme.tsx +++ b/apps/web/src/components/ChangeTheme.tsx @@ -1,6 +1,6 @@ import { useSetAtom } from 'jotai'; import { Laptop, Moon, Sun } from 'lucide-react'; -import { Trans } from '@lingui/macro'; +import { Trans } from '@lingui/react/macro'; import { themeAtom } from '@/atoms/themeAtom'; import { Button } from '@/components/ui/Button'; import { diff --git a/src/components/ChooseImages.tsx b/apps/web/src/components/ChooseImages.tsx similarity index 100% rename from src/components/ChooseImages.tsx rename to apps/web/src/components/ChooseImages.tsx diff --git a/src/components/Controls.tsx b/apps/web/src/components/Controls.tsx similarity index 100% rename from src/components/Controls.tsx rename to apps/web/src/components/Controls.tsx diff --git a/src/components/CopyImage.tsx b/apps/web/src/components/CopyImage.tsx similarity index 97% rename from src/components/CopyImage.tsx rename to apps/web/src/components/CopyImage.tsx index a599de7..fb3b3cb 100644 --- a/src/components/CopyImage.tsx +++ b/apps/web/src/components/CopyImage.tsx @@ -1,6 +1,6 @@ import { useAtomValue } from 'jotai'; import { Copy } from 'lucide-react'; -import { Trans } from '@lingui/macro'; +import { Trans } from '@lingui/react/macro'; import { cn } from '@/lib/utils'; import { graphicsAtom } from '@/atoms/graphicsAtom'; import { Button, ButtonProps } from '@/components/ui/Button'; diff --git a/src/components/Editor.tsx b/apps/web/src/components/Editor.tsx similarity index 98% rename from src/components/Editor.tsx rename to apps/web/src/components/Editor.tsx index b632537..950c9c1 100644 --- a/src/components/Editor.tsx +++ b/apps/web/src/components/Editor.tsx @@ -1,7 +1,7 @@ import { Suspense } from 'react'; import { useAtomValue } from 'jotai'; import { Eclipse, Loader2 } from 'lucide-react'; -import { Trans } from '@lingui/macro'; +import { Trans } from '@lingui/react/macro'; import { cn } from '@/lib/utils'; import { filesOrLinksAtom } from '@/atoms/imagesAtom'; import { AspectRatio } from '@/components/ui/AspectRatio'; diff --git a/src/components/ExportImage.tsx b/apps/web/src/components/ExportImage.tsx similarity index 98% rename from src/components/ExportImage.tsx rename to apps/web/src/components/ExportImage.tsx index f8a2de7..658a1b8 100644 --- a/src/components/ExportImage.tsx +++ b/apps/web/src/components/ExportImage.tsx @@ -1,6 +1,6 @@ import { useAtom, useAtomValue } from 'jotai'; import { ImageDown, Save } from 'lucide-react'; -import { Trans } from '@lingui/macro'; +import { Trans } from '@lingui/react/macro'; import { cn } from '@/lib/utils'; import { graphicsAtom } from '@/atoms/graphicsAtom'; import { diff --git a/src/components/Graphics.tsx b/apps/web/src/components/Graphics.tsx similarity index 100% rename from src/components/Graphics.tsx rename to apps/web/src/components/Graphics.tsx diff --git a/src/components/I18nProvider.tsx b/apps/web/src/components/I18nProvider.tsx similarity index 100% rename from src/components/I18nProvider.tsx rename to apps/web/src/components/I18nProvider.tsx diff --git a/src/components/LoadableIcon.tsx b/apps/web/src/components/LoadableIcon.tsx similarity index 100% rename from src/components/LoadableIcon.tsx rename to apps/web/src/components/LoadableIcon.tsx diff --git a/src/components/ReverseImages.tsx b/apps/web/src/components/ReverseImages.tsx similarity index 96% rename from src/components/ReverseImages.tsx rename to apps/web/src/components/ReverseImages.tsx index c65dde0..0082516 100644 --- a/src/components/ReverseImages.tsx +++ b/apps/web/src/components/ReverseImages.tsx @@ -1,6 +1,6 @@ import { useAtom, useAtomValue } from 'jotai'; import { ArrowDownUp, ArrowUpDown } from 'lucide-react'; -import { Trans } from '@lingui/macro'; +import { Trans } from '@lingui/react/macro'; import { areImagesReversedAtom } from '@/atoms/areImagesReversedAtom'; import { imageCountAtom } from '@/atoms/imagesAtom'; import { Button } from '@/components/ui/Button'; diff --git a/src/components/SeeExample.tsx b/apps/web/src/components/SeeExample.tsx similarity index 92% rename from src/components/SeeExample.tsx rename to apps/web/src/components/SeeExample.tsx index e439f17..1141eea 100644 --- a/src/components/SeeExample.tsx +++ b/apps/web/src/components/SeeExample.tsx @@ -1,5 +1,5 @@ import { useSetAtom } from 'jotai'; -import { Trans } from '@lingui/macro'; +import { Trans } from '@lingui/react/macro'; import { imagesAtom } from '@/atoms/imagesAtom'; import { Button, ButtonProps } from '@/components/ui/Button'; import { siteConfig } from '@/config/site'; diff --git a/src/components/ui/AspectRatio.tsx b/apps/web/src/components/ui/AspectRatio.tsx similarity index 100% rename from src/components/ui/AspectRatio.tsx rename to apps/web/src/components/ui/AspectRatio.tsx diff --git a/src/components/ui/Button.tsx b/apps/web/src/components/ui/Button.tsx similarity index 100% rename from src/components/ui/Button.tsx rename to apps/web/src/components/ui/Button.tsx diff --git a/src/components/ui/DropdownMenu.tsx b/apps/web/src/components/ui/DropdownMenu.tsx similarity index 100% rename from src/components/ui/DropdownMenu.tsx rename to apps/web/src/components/ui/DropdownMenu.tsx diff --git a/src/components/ui/Input.tsx b/apps/web/src/components/ui/Input.tsx similarity index 100% rename from src/components/ui/Input.tsx rename to apps/web/src/components/ui/Input.tsx diff --git a/src/components/ui/Label.tsx b/apps/web/src/components/ui/Label.tsx similarity index 100% rename from src/components/ui/Label.tsx rename to apps/web/src/components/ui/Label.tsx diff --git a/src/components/ui/Separator.tsx b/apps/web/src/components/ui/Separator.tsx similarity index 100% rename from src/components/ui/Separator.tsx rename to apps/web/src/components/ui/Separator.tsx diff --git a/src/components/ui/Slider.tsx b/apps/web/src/components/ui/Slider.tsx similarity index 100% rename from src/components/ui/Slider.tsx rename to apps/web/src/components/ui/Slider.tsx diff --git a/src/components/ui/Tooltip.tsx b/apps/web/src/components/ui/Tooltip.tsx similarity index 100% rename from src/components/ui/Tooltip.tsx rename to apps/web/src/components/ui/Tooltip.tsx diff --git a/src/config/site.ts b/apps/web/src/config/site.ts similarity index 100% rename from src/config/site.ts rename to apps/web/src/config/site.ts diff --git a/src/constants.ts b/apps/web/src/constants.ts similarity index 100% rename from src/constants.ts rename to apps/web/src/constants.ts diff --git a/src/hooks/__tests__/useClipboard.test.ts b/apps/web/src/hooks/__tests__/useClipboard.test.ts similarity index 100% rename from src/hooks/__tests__/useClipboard.test.ts rename to apps/web/src/hooks/__tests__/useClipboard.test.ts diff --git a/src/hooks/useClipboard.ts b/apps/web/src/hooks/useClipboard.ts similarity index 100% rename from src/hooks/useClipboard.ts rename to apps/web/src/hooks/useClipboard.ts diff --git a/src/hooks/useExpireAtom.ts b/apps/web/src/hooks/useExpireAtom.ts similarity index 100% rename from src/hooks/useExpireAtom.ts rename to apps/web/src/hooks/useExpireAtom.ts diff --git a/src/hooks/useImagesDisclosure.ts b/apps/web/src/hooks/useImagesDisclosure.ts similarity index 100% rename from src/hooks/useImagesDisclosure.ts rename to apps/web/src/hooks/useImagesDisclosure.ts diff --git a/src/hooks/useThemeEffect.ts b/apps/web/src/hooks/useThemeEffect.ts similarity index 100% rename from src/hooks/useThemeEffect.ts rename to apps/web/src/hooks/useThemeEffect.ts diff --git a/src/index.css b/apps/web/src/index.css similarity index 100% rename from src/index.css rename to apps/web/src/index.css diff --git a/src/lib/utils.ts b/apps/web/src/lib/utils.ts similarity index 100% rename from src/lib/utils.ts rename to apps/web/src/lib/utils.ts diff --git a/src/locales/en.po b/apps/web/src/locales/en.po similarity index 100% rename from src/locales/en.po rename to apps/web/src/locales/en.po diff --git a/src/locales/en.ts b/apps/web/src/locales/en.ts similarity index 100% rename from src/locales/en.ts rename to apps/web/src/locales/en.ts diff --git a/src/main.tsx b/apps/web/src/main.tsx similarity index 69% rename from src/main.tsx rename to apps/web/src/main.tsx index 302c312..749fbf1 100644 --- a/src/main.tsx +++ b/apps/web/src/main.tsx @@ -3,8 +3,8 @@ import ReactDOM from 'react-dom/client'; import { App } from './App.tsx'; import './index.css'; -ReactDOM.createRoot(document.getElementById('root')!).render( +ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( -); +); \ No newline at end of file diff --git a/src/types.ts b/apps/web/src/types.ts similarity index 100% rename from src/types.ts rename to apps/web/src/types.ts diff --git a/src/utils/__tests__/atomWithExpire.test.ts b/apps/web/src/utils/__tests__/atomWithExpire.test.ts similarity index 100% rename from src/utils/__tests__/atomWithExpire.test.ts rename to apps/web/src/utils/__tests__/atomWithExpire.test.ts diff --git a/src/utils/__tests__/atomWithToggle.test.ts b/apps/web/src/utils/__tests__/atomWithToggle.test.ts similarity index 100% rename from src/utils/__tests__/atomWithToggle.test.ts rename to apps/web/src/utils/__tests__/atomWithToggle.test.ts diff --git a/src/utils/__tests__/readFile.test.ts b/apps/web/src/utils/__tests__/readFile.test.ts similarity index 100% rename from src/utils/__tests__/readFile.test.ts rename to apps/web/src/utils/__tests__/readFile.test.ts diff --git a/src/utils/atomWithExpire.ts b/apps/web/src/utils/atomWithExpire.ts similarity index 100% rename from src/utils/atomWithExpire.ts rename to apps/web/src/utils/atomWithExpire.ts diff --git a/src/utils/atomWithToggle.ts b/apps/web/src/utils/atomWithToggle.ts similarity index 100% rename from src/utils/atomWithToggle.ts rename to apps/web/src/utils/atomWithToggle.ts diff --git a/src/utils/loadImage.ts b/apps/web/src/utils/loadImage.ts similarity index 100% rename from src/utils/loadImage.ts rename to apps/web/src/utils/loadImage.ts diff --git a/src/utils/rasterize.ts b/apps/web/src/utils/rasterize.ts similarity index 100% rename from src/utils/rasterize.ts rename to apps/web/src/utils/rasterize.ts diff --git a/src/utils/readFile.ts b/apps/web/src/utils/readFile.ts similarity index 100% rename from src/utils/readFile.ts rename to apps/web/src/utils/readFile.ts diff --git a/src/vite-env.d.ts b/apps/web/src/vite-env.d.ts similarity index 100% rename from src/vite-env.d.ts rename to apps/web/src/vite-env.d.ts diff --git a/tailwind.config.ts b/apps/web/tailwind.config.ts similarity index 100% rename from tailwind.config.ts rename to apps/web/tailwind.config.ts diff --git a/tsconfig.json b/apps/web/tsconfig.json similarity index 100% rename from tsconfig.json rename to apps/web/tsconfig.json diff --git a/tsconfig.node.json b/apps/web/tsconfig.node.json similarity index 100% rename from tsconfig.node.json rename to apps/web/tsconfig.node.json diff --git a/vite.config.ts b/apps/web/vite.config.ts similarity index 58% rename from vite.config.ts rename to apps/web/vite.config.ts index 39a99cf..4e6877a 100644 --- a/vite.config.ts +++ b/apps/web/vite.config.ts @@ -1,5 +1,5 @@ -/// -import path from 'path'; +/// +import path from 'node:path'; import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react-swc'; import { lingui } from '@lingui/vite-plugin'; @@ -10,7 +10,10 @@ export default defineConfig({ react({ plugins: [['@lingui/swc-plugin', {}]] }), - lingui() + lingui({ + // Specify the config path as the Vitest VS Code extension uses a different CWD and may miss it otherwise. + configPath: path.join(__dirname, 'lingui.config.ts') + }) ], resolve: { alias: { @@ -20,5 +23,8 @@ export default defineConfig({ test: { environment: 'happy-dom', globals: true + }, + server: { + port: 3000 } }); diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..0ede94a669475dd997ba25d8a9d85ba769d07a17 GIT binary patch literal 267162 zcmeF430O^Q^zctaQJO@95|xB#q(Y-6Lm^UxG@K?)Iz^FWh(u;8LS%?cMWzf1smLtz zJR~w@b`9TJ?Y(a2dfeKlzVCVd|L?i)bI)1l9e!)AcfG@Y_dX|AtFwNzAX48aC`_Lp zHo22ebXaS6^$ZF3o#-DF!td!H9vSK#)pN2z>t;M2PcuGeqjLF##Pd43+9gZgoZ6b2 z^1?SdV8q#k)I*Py<4sz(6^B+l-X?4eNs9t>GHCr%pIh3QlsGzV|K}0OCoNebD=p6(fd8l`?cL>jq&yVQI zpA<5@CDYy(q%3gjSUwpf`guiyDfi?1LK)@RT z5c)F^WNVON-eKWEemovu;1eAb;>T+Tom7JIU*KeWkX5X_!pftp%m#_^TLDrLWCANg zSn0t^J60O7QjL|8to#U0VB8MdB(Gk#La7r86 z-vOsk9s;QaG8LpI$SEK@f%E{W0n(h6s;vAD&UA$Gd#o&EWfn+vD4)y9V32B%cVVRw zE0sXv{P+P*tAcz2QU#>1w=WI{ZzjBO+;IFO!ox#Q@?-eEf+)Y9urU4}HyRJ>KgEgS zP4S?(7lLy*UKGb1$m94>yl7l#Txoo0ylI>%{xohBXBt162Q)r34`^Ize$e>R_?Sb# zVW<+Kq9c96;q%@u%(!m=iQ~Hjq&&z3khtC^fyDXl3li5?L?k~dDu^H13s{&s39;Ux zA@GrBsLSLdg8ZT)`Fvhi$fKR^-IzH0M0)%31w7sc$YXgWNYrQEov9BA5=2EB@pv~N zkL%(bNL=TWdNA@1NaQs27+C^&m?{ZJK}vxPVCyY=GV8_|B$gL}9^?*z#PR;Uogs7t z>j&sF{;ULvTzD8iDkzlCQ#4@8yFfeiXA9)9eh;fJ(%-LkLUn}xqJEr1-Vl#g&=;73 z3EvHw{=5Z=Jnkz!C-P&Tu=$%HQQt;mCeEKhV*jb#l)xb0K+qQ?0L>sTKzsDJ7$n*w zKSP5;gM54XhqYtT7EFu<$rpqKg+=jr4rUC$4J3|l2!C=IRP)xe0gFBco8 z-`>9Akr%hHwq?p!LLTQG#kcPOrr&|yf}Y?*0L{B*cFZ^q2Z{0V4z6{JcMI~k z9~FZ{J<*XtJ%a^sy@?Ks^$qvq&j$Ut4#QbH!$IOcXa^GKg{C7TsoscfFAWm?)CGz5 zltE&AvYnWI1q*uCE>-WyfC%qM0Y3xEvHj(Nj64kz^-mbY^b-fo8{+k)596oSU}hh? z4|&{2Pk=ei%~^*FL@gR?Jc;$9T^KiGB(|BF|@K zBwr97GMUdaa%HX$x*)M%svxl)#5;US7>^e+g7Le2I8z@HgHwZQH+0QL88CkfJ1+^+?lxT0x1i5e{Vt5B(NLF zj~1W{zJcKrgZ#WBH+eAregY{E?IQW!ettob5#C|3aL)1#6h!+*dJFhG$1#k*5kZkK z+XcMPsn`o1Psfw-8%{Z4s8@!~tANDu>H{3=tzBf${=r!0`g0K^`gs~8_WR{Hwtqok zK@r{p!SCz%2(-ig_wr)6&LB}g?VG>vzqBvYeoOl>wWs|@_av$Q``j;AiH z9}4ZTd;lwh!=q{sc)cMn1LbzGxwZ${8zhe7jUi0?C14%n3iCB87EY3FpdRPbtYD_z zH#{Uf5D{(WGO4g2tTJwPwUH3amaRD?WoLqnPQ)tR-!1BvzH z!kF=({iYhifPVOf2x8Fu706@!BKdyNSdbge^!qfFquzrcQBPZ#oEVSq5loy9KpyAE zPLQ}B1kf2ZkX2BR^E_6-&O5knz!37jKpyqMrJ$A@2@=PteKe!j0`fS16)b-Wqypp@ z!th~yt3aZ?sUWeu_Y@|+QQkg2-aaAx4d5s8PS6P)FLf6lPZ^{%NF0Zc&P@GGSQi?Q zw*`s)ehB3lk2F~I=)WhF>wrv%W6qb|A&+{7Oy}`BgH(h(`tuXoqudhD^lK4FY&V&e z`=B2E@rFG1vl{Z~_gRprr!avz$0kC)EtZ2HsIT2D#*gna8UG%ERE6@(AhG{>&`t&9 zT9BwW0i-%e_c=^I#1omgKZiW_ryL}nV{_TOAGF7EcaUvBT7txQ4V=g5%VlL~I7|dc z*^tL^j}D9UhLH0Hv79nU)T=MX)Y~p#`ezIh*8$wCzzXCGq*?u$3z_njAaQ=r2Z?qg zSXq_A^dB~N?+|Z4{vF7-f%+1VI6fbSF!4p7(4TEfn0_w?iSdbM4w0TRch zEi1n-X2#_iNR0Pokf^^HB>Hm%B+ln2U{4OD8}twTm0!u!7eP64`yh|ppjAxV%t7Kj z(`BW3Dl@(vAdmf^>w4{e(=$jQ59Mgbk3T6IZWDQukjH-Q2K_i6mV%T9c`KdaNzbCy zO#TK)v`6|Z*>Yo$=x?(OW}IKHVftGPc~vOC4|&uZv6ivZ9onN^ILGnBAhs949`ZBR zG3C)9(a)bCah~xbBf}$m@?&V9It}fyelGZn+?Pz|-1c@ZGtV<2kM^`SGV^66**XK0X(jkXV4Dq+=hDGj{^8%g4i%$Ua%lMtT&Ixy9<6}{3#A}e-g5diT5?& zG46hFm4)Ln+>hg94<2s^lw&{X`m_M@7?+?NM$-D&4SDo4D$=A6nBzr5JB)wr^#Jz3 zps-2NL6Q7O%biUBqCz9E8SfnAvE6czsMli`V-NQANI!lQkM1vMpEibe80UuWPw3p= zoz>r&l~I9_;n4wsJpZ78XgEvp=-e6-?&mFlYfEGdo;rEFD0Y9R^9r3$A|?jlaU6K& zTu$e4I-mc3E|2IL1*dAz>mBOn4U*0yzn?$o+(GA!@JMV8&j$80>#-e39M@JLaXfzJ zGjW*WI|c461L1j$zjt&w;+?@+p_sg*8UQZa?n12 zAJr4?nRvZRnQ_wtiT&yZ`fz`t{U;(aJOJjsz?ALBjWWi5tatQOoHAq1GWp>kk&obq z)ea!tU(^1v;2cv=<4xnt4~Z27L5OJ|k1uE97!4Bj`G&*!A0lcG^8x)f1&Q(K1rqD~ zU0~$z*QcouruntcbkDW8WHQgtULpAA&mQmJL=RfN-bpFjC&*%mnvUx3=@WauZD~25 zzpRC>?2OS?&C65YE^*yhc3}C$f#Iw656+S_J@xskJb&U(lk)UlvkSCGYd%ogzvG74 zoVZS>tR*-0*!jhBsC>+eETxm}wSVZ(8a!jR&hVlcE)T=+7mT+Y-|WcMH z3!Bqv#Hi?$g%2<6fA)6pBbRP&L0&TwPg#t5X8m~dkWT$i+N+j)POa89*q5&#?Bq5x zNv5K?m&*IAvO6puIL@D@{=jT|QOtvavqOGFTW5xps(cCgxM()d8FC*2$CeZH)Eh~&&3*RmonP0SlBnD6v+-)8MNub~>+nne{0 z%llPp1*fb|@@fCQm8^#1r|t^6#$pQ|Z@4|%-@$OztrJDO z*N!?>&8(HbeKT||>%%XR7?$erJhVts-m=F*u@&c%#CHUG$@h)fxGg^TwPcse2DYoc z4z!eQ)@R7M{Tr6;n|k8u((JZMj-M-6Mb&Ju`cx2fsDHLe%g|@{?j2v7V|3JfSjcTB z+08afm(5fg9Y6V_?zqxP_I87&U;Z*aJ>Ddv?ALat(R`S;D#rw$c+ z8h0%rDRNEMyGaAv$UeGcsQ3Ns_X?weUnw>2V)?(SYg((8btzD6uP|M$})v2*KPK3sU8b-R??m&WV2+dTNbFEZ!I9 zmdW)F6!$P1S>AH{>F)YY-@kY&)>K9~hsanuW^SGTim&6X>sTG7JJoza7v~=#VtXPq z?QW@SKGZ5~rFm$KSjKIK&+8*b?p}XMPwv63p$1$uUydAf4g9L*YUxh(pGN|++fqH)vu-NCqz9IE1XcZ=7EmX z<6!iw~2=*GwNhT7ANY4NPH$c1u5OjN@Ef%|7rN+k*3cSIjX>$`feIIgtuGfpG$B8CkF(Q~O3iptA!8n<&~EU+3y)_S3~4|1hSF=_e*IqW z-*RYV!nECT*6c+Z^}$y}PMZ-erzcwRJnW+=8i#!_qXGJsLm!_3Mby$6vR|xc5r8G$l?(soAv{ z_u*Ha$JLZR4Et*S#W~ou!zfj!OB(O?mQI=D|E$;0=-#c@KD;$Y;<2&5tfY^|(!DQU zxE7b*;BN_DH@9Fw_79mYGS7l!RP%=m9OK$<@EQMb>!{&pUA*P?ow=^nUm`Jf-rSGl zhAsRdDC@4j)w1weqR(`rkiGBAE(8Xg>E@L%<)OdqrOf+RckS2M{`0x!htE;%(nGs- z^x3|`XQ)ca(pGm9_vFNMf6yVW@KjiZ@yF+F_UiH{TC7N#bmh*OElT#m?T;iGRql#i z>i%fb=d=~pr>-9KP`>$jvESj$C-2szYaer7zV(B5QRmZ+X(}HVZOC)`G5vxY#n=9% zuWxzR_mRu*1RieVal4G>ozEm~3u`G^vr8V^FAn^${^`e|D`c$i46>PHb+yBwizSXX zlXQMsdM35%+9siRY>(u*-7J0Po658pS5jrNBYMxh>JPWH+HKhO*s8DL;E}2`@9!8h zuk%#%{7@t5{X z=}szAv$`1dI(D#^tKd!1DjT3g688+>P`mW9OEfe({zN9DSdNeYg*1K_1eDCz3 zUr**A5%*cGW~^Y=<)Zf5(K%W#+9XasVi0~IeW}v)-nxdHFLZbw{rP*L>DROT;eNCC z@Go>XA9^S&cye^?Pfv9xs|Bs*4|;HMO?sK?q|k#>Hd6V#9p{P`8V`Q3WD)V_RMSDk99PwF`+ot1_`6=6a8d`1Y z5;t33^}`m0jAqOHm(aXCuD9k^KR4w;<uvg_5vcOKCLT733< z^5XG)gPQj{sQF{L3ZrV zaO2DlHtV)8d)dC-yr{vZH#(6&rX)DsAw7C`gqI46+XL1o#IuE zs7VRvajj2$l9{ppiu{CuGAH!xSaewx#XXak{pu?YhX% z)EaT_=)w;Uif>|z%|As+OT{i<8nNEdzJKi2r9Wl_tm!0o$spryr+LHkTI@L7V#6l! z(yh4?ie8G-s%&?E3R^WxvGo?M-`D?7e^*!ETkZRI8FuEmPC?D|Gq-B;zuYkT*#4)c z{qfyb7D;cvc(Jc|Mxctp@YR=_<@HaB`1#^;)~(B0+L<=ZlA;&Uelyf@eV^wZdiO`% z^L*@iH$h5jNw;R7PW0;GcH4Zn)hF5Y#xBoydg$m`epLO-NdEQZUGpV^yU%)%*ZG7( zzmHx+mYvnTW3kwDSY^rF>@hD_ubey7c9VZ%dD5?8>-x2Sd{uqSi^K=)UO zW7*{b$*(&myH|a$I%jJo%~$I#KK%ZEsp~Q|PRgFmPTcwVA$aTNf~c3xwFWp!gm(Ao zt8rW~>R_(tw(8hh+@JYV*vY+N%-=^{Ss7cPZ9gh3#o_Cch$y%oovwm%6%=d#!w^ekR zxaP>`&0k}0jo!IVCgf7mpn_%6t@)N}ff}E`=>&e9G}VE(ag$#}aY2m2?dUAKUnRZg zc+WXGcx$9r`}4X3_MX2f=%$}+f8NwBWzJMLe~G1D@(U}IJB$_c(rMR0Zp4>4d09y< zqdb;6>s@=0tv4%q#D@+#7VRG|RBop$cckZgn?7q#CY@D%s~z4hb!(xxSn-2s{~L3j z$#q&OA>V9kzOVI3ne*Ff(r*==+wS|$TwgtVd19-9oqj2cSFijuXI+1(#7Sneyf58U zUDV>(28q$D?Z0OZJK~(~?k0afdG+q@HAMr5*eY&HIp8?Pcb<~OD(lBRigrfEPmt>s zJ^XCn%bU92TM#|4+o0;KO$KY7zh_AWehD(!esSZco_i98J-a()x=}BUqPER79Sg^& zPHWdA(s-Hg)Dvqnr-!Fqkd03ok~-|ohOJ{t;>LatIr+ocGsf$H^65JlFaCV;vY)qi zsgX-7Rr#DnNiSxHCyp(dFmp)j7dDsgpUm*w61#8B@#}Yhm-Im(vyc8|^<3a^=Tb(;0dr^n0ZCc79M|)+S?nRf53mzW&L1Etcut?sxmPYe$_J z`Q~G{9iNf*{h`emuU&TvsyhqxR0Df^ZPC|zwX$FG#yduxzn-{T^(^U5ua#-EPkpm0 zahaqx?~GRRvOZt0|M=MFqsD>p{@>TH9rfn@yXU9Rv~T-th;EY8i7uzNjOf}SSbX2t zj<=R1tUG8Dmy%W!mv`@F4uA8y%j@?StF`^Pwn|o+t}`{Mdn#1pI@h!t_;gg8W!jHN zPu+C%W4n91#@~F~%Oz8FzUr6ISK9__Ccg}xHn&yZKI>%%INX-CcxCp|b&%!DC$2AT zhq?`QPFa48&LKSiW2as%nRMsn^VO?I=${cgsqoqk-BS2>-ke9^3e*2nqXn*Gv8=AP*5|L{h7{+t1$Bfrb+%QARu zy~IgbcOt*bmE>vh%A?Pk%eJ+Sls?|psmB1t$!hUyVsHA&?3jJtXJ6@V%fo&n`*-@< zMl-*ib>`c99simfpu_fXoBKh9sfPwPvm$~6KykNkfApmPVEH>A6sRUWr~L#Ihw?(!yg zRSC>luwm}3HlO`Axoz5>es+v+v#D+NCu_<@mw9MOsra^V*`9t`R_EB>VM?2$LiznK z{y5#;x%|S-Zu8E*YT;p{bG%Q%XgA}8 zmBi6+MGtqo)4X5&^3itFgx7yPxjXz!&@1)vyMuDBoojony+y!9zqon9+R9z$cwfyl z8fI4`R`c{&RAC>@BJBmcd0StXI0SXb3@ll;NY%zJciryqJ7z6Cm+$2Dz3N`*k>nOv zmTk&*J^j_|Q^D9}qZ95+it(e?&A6TY%T(UYean{4O7~SOe>hAWe|C9n`I+kW(}pL^ zt{A2BINDBr@XEP&%EhjocE~%?V%F+>@2+B-9H!=5)|BkAO;3yQZhb1_=J~F1lmGhY zwfEF2&*=GgI!w0sJ~LwTK|y(Y)hQ!hSUzy+G5GMed2%wZH{`CBAHIClRxzi|Vn@tl zRSrBjzqXkFBd4#r`HYW?4!5aXos}tnEZHe`{Qj|0`woQny{CLA=cIS!qzkPk-QRNa z)0OAb=S(@d{LoHs8}a)GUw0{4{!TK8*4>`h_vX)&@U-9L=QVxfknj;kN;`C>8ph3Q zU75L}r}gpvrY9EcUp3(2g*MTT9gj3W&@=X-&&kmNnuBToDH}O{`nIf<8QZ0v8r@hw zU}~q1e(eX&Ua=@--Q6|O?GN#flwRdO3^1^=TdIDvd;hdm*;hZNeCy?$N%z;Zf2zt%sQJEyFU1G(C^nLF?e>{l+=ucok5zwb6CuyPD!@B zAwm2MfCe>zF9qHbc(hGA8?ue{)K&sMxUlw{a{<{l#E*v$eSs&G$|?VElG>%g2lxW4 zHh%xs_D|)+pN9|DEZ>;;%Rr}XS^wetNBmBPQzH8lfp-NSZMWb=GL48o3cL}^i!z49 zzX85~6Z+pnoEbmV*O>V6fk*$rjar`kYA6)cE*1Eu`2PTSTh>0>L_fGBvab(=)(?2> zJEoS5Xz-o*VBl%~HYR?VEKh!u-i92Yb``)kC4LIfVFTztsA<&rjRl_i-;mG3_2mCD z;LTY3SWo4`ZU6L{+LZy1`yb{p{xpt%VuZ_xmz03tva&qZi^{tIPx~)d7VVJzbl`FS zB>zRdemr9RN81nz&WY^nfAzqyVf*`ENsE%3-;nW+3m;BoyTM=$u;U?Tg~z~lLY z`i}kJl8EmCU$UD5j|}`SrZxunxuHb79{flE&kxwXG5l2EhctmNZX&M$KfY*+{qarY zw*!yozsAPz1Mp5w;QPam37W#sX(E5FiM%5GD5NR=k8L8qsfm1b6L}N(Q3zhY8ascc zHjyuEBHt1Y+)eR+2=I1I=>L)?@>iS4D=Re3|FKQvcLNW`MZjcbDcYn#Y_Ya;Ki z!sB^1!T-D_@@-UkywOdt@83lJcoTW$4m_TF6Z{Vc-mMAzDd0ymfmc%F@$`YmdndS+ z!rxYMN_75p0G{sO;3&>H5uX4&-oMbkOXUqIqIL&a9^2zR0F`s)-vW>KKge>ucR<}_ zM@OA`en9u07(*_J_$c5_!9Fsul>gR?`T7#^6~NQ=zcIWjT=eMt(HMRL@O1uc44(~r zQ~a-PqJ0ziu`}KOG{*k~;F}V^V&Liir!n^BIyEhRBY|(q_+y;0KO^XUk!YJxc=btN4$37b&yMH#x^qS!aP64JhGzl#lX9O{l@Z&I!yc<%TE9v z=TBq#?ZD&sHI}ad-k}M+SyyKK8*6_d@Md5i$4wkwsE13Ub``)|0S}LHYI!a!wjsX1 zE^~gud`o!IIS|{_mxvDm-V*F%TkHdsW4^vb?G6Hu=Ra(V_PHkFUjvWp2V;jxk`WEQ z6K~wD?);4Yi`xHC;OY4{8WnZ@K2cz}q&#|E@iFJZs=-{2Q`M^<;lK%VYnkjM~&EsqHi1g~zWxM!1f6 zJw1jOW$mFJ;sb#n2K~oz=Q{U<`GdgY{?Qr=MTsHV|IGT&b==W5CgRYZa&jcRF568bT{5|0D`q9|^OVgmvfAov159Gf;@YYSRp9?(pAMJ9rjee5- zH^BD;p7M%V$stku?uN|uA8m^=2E>m69-lwawUg@}MEnZi@%w+eZgY(R@oE6$`IW0( z3JvkWz}o`f*!jN$cx#py#Rsxq4LqLz8oU2#8#DGvAN8*xN$vfB$N5L=hwB-P_*~!} zfTw&zcB!7)i^Ji;7I;x&hdPLN0G`gzqO2j}(}0H|_}hOfCqMs9QoFL>_!@8<3&uX}8&uAf=L3)NW)@|)_3e*!S>|8#z!`i3O& zecjg-hkQc) z4JB&38F;+@k^fZAm2YOtL5N7csxHK+Zg^T@HqacuX!WvOFJ<8FWq;^f(|Z;{C5T32J9o#82^_8 z?*=@@jbuYUkp1Vtp%L0`!JV8 z{=WtuZlMy8!D|TDM0{5`yfo$hc`WeOU?2NVI=T2jZ3}>>=Z6@3QRA;Pkh%VgGWXCw zvhNH$tsg8G)qW!I)@=VV23!-_zsK_EzbJ|Lj)R!}m;5H#kS^kbfXDeS%G^cW#AgAI zzuyz(+AqxC0vNM*TkvyerF#G6#t_8&Ws_ zk>@&xVA<3r_*Yg1`cwEmY?iYi`-!mlaQ)G|k>IF-__qMVEkN!3LI34NW zjXsdxhSX3y4LH2n3HeXuT=`Jo@%qa(?xdIOYyckPhkeIHKaj;BA1%c}r#g zPSw>=TZ7?D|1o}4R@ds^KT+E#;Nb{S`}-A|1OHCd)e!#(c-%jcZ4a;3bxrF1MEr1A zJpL?SFYsF>@dtpX^CLD9b^g8w9{Z2_KB!t13Zl%`b2&S`}(KP)UFVCx_)B}xyF%r)ltm+ zMZYlyqWbRwJjNgQFJwtCe5^N7yM@5x^@CW+da1ff;_m@Z>lbyPA6ydg`tZjqXrJ<; z@?pSR3;EB*Hnt&qM}c<`;zb?5<{r%R7wo$NSK~tV`vBjEwU0QhgN9U*{~^HR{*Qj+ zHHd2>J`Z?Y|Cq-!*F^jq;BDFXp>0v^8;)h>FLJ1p#-SlU$o>N04Z%L1yO0%i|M~|y+FuW*x2kIu?3;6zEpY{$>z~l7?xpwg4x{k^Jbl`ijJnF!Ha7o0UVR>4=RNjydYWER% zJFt&=+Cv&*v7UHyK6CxSvp0=_DExfjjlq6n`6Iwvv+)z>Vwi11{uXqg*HU5i$w+8=l?I0^Ee;#-v;BoC^pG4)QC)Um1#`r%5c-+6hbgg}g zE9UD<)NUK_c>Tn-)Q9>wsw2J4ggw^feT>Fl?$xbNnPECkkKJc{u8uD4Vp6piwkNw9y*Vv&R;!VTro}VMn zRR{3_zz+iZIPba6ePR1ofye$+>_xTTGNSJKkM?mMa!KUBHSl=fm|@!XCvY{^jv`TquZn!o4+*F?N&WZnMPnDJi>`~>hH$DMR? z@qyaD0p108%wylFydfRb?y!K_ztBFuxb}hgmQl?7#XODy>fn-yHv`^|?LSu*^%EZl zJdGdvE~@{hfOlo%hdM>&HKLjIN4}FpAL~ox|7hTG{*rBsA(uq_Zs2kJaqi>%71e+9 z$#uVf!t0kB7vs=|>~93#k@X+@PUQ`$p>|(^$NdLcoWG(z|8|(dJby%cs1wgHToTz& z1Rl>1WM5Ri2zdPdL6o(J{*nD}z~lHecK;k1!(6|mKqtOLoqwx<_W=8V)?PbAuK=E|zoNu| z`rk33?*5ajZQ=M$0Dgjy|DulnBjA06c+|}$k^gox|9O7l+6Us3fT#J3WmMjf57f?Z z)<5@;hB&Gxejf0{n$Z92z~lJ|`%N#hQJ*CH-Ddyu{8=9(Tt|EW@WTF!8vg^p#s8dwl8Th7Lf3kod3H_(oi5maUO|p*bi-8{?#ETmLR!PkFH`rP9f%;W% z=Y`st0*}wnuzhQIiE2L*cq8DOqXH2U`MC-Bri|Y`;NdIq1T@_eUf2gNiR^z)X6|2P z0Fs6m*M1N`ashMw#q+-?iTF(59hwloXTX~QkNXCWKi5R|do5(H-xxR4p~z7I@w%b2O9)pJS2Y!ysDUm(h#mx1a#*WGx zQbO(K0^f(Vk7KXf5XjaOe|bsW{ZC_fgQd*%AN$`JKB#riPXdADCToUo>E1CThuf1*ICCLSbHpGty-VW@`36*hC zL3|1D*1*&Ciwlcwi1%8>{QnEE3}c6Wa7o1H0gwAH#a-0v$4B6?|2TJ5;YE5I@`2iU zrZRuOgFOCrNz~_`CxA!)I{=G)z&Xezk$v$r=K75+m5IXJ0&foXY2I_yLG7jikI$dc zKG(H}{t= z-@@8&Z2voEF#rD=8V~e=OQQBufFBC+qqvK@e?0)+O^7Ew4f#O!d#`1#pS1ovHw3cv z#Loua3GBCH%SE++7I<90qKqAyBKs}Y)!qMcojbz3De!pzgYy=B7j^uSfJgtijvLy> zME(~6Px~j8F)iwUr?wr|GtXZ!kN$Iw0rAs;$NdXAZ{1+J6r` z_8;SiFVYJi>rK?oDwDZ?Y3%;3zJdAvr?LDz;C;aV#`0Cb8W%Y`7#EzZ1ZZX+r!vY~k^&h3sP-xg@gh3A}9+ z_&nfo|7h&^e+J$Ncp5)0zGEBmzuVTj{x@d+1_6)jPYQHOb2Tnxe*^Fiz@tCd2d;_y zuLK_NzbP*&Z=B8S{}KSIa)qHC*_#Bs1=#<6-uv*QynDgG%wOC2-SdwFt$$Zd{4U^e z{4kF%t}!6~0q`!sH+KAcZL915?|t~)XW=~ApANhs+kd==rgGu7fBH=Ab^$*CcyYE7 zmH&wmE~9qufVTx6*Dd-_<-%?M^qJZjZ)fH&#;@g{8vaWe@e_f^`#-deFY3p?V1E}A zp98!#@R)B*{9gj!5BS!sX0AHOzD^Dkf5atO9Vlw&uK|yDbjgd;@!iC~3RTs9BwheK z?O$ANqXOcO0FUdJ;zs4a+xtCF?Id?F|Y>#t5xgn6PC*BWuYp{=b^nuFRX8$Uv-6r7i{Dch~GyiU}_R)77 z1JaB7>Pys4b$8wT!+Tg!$KMTjy8l6Y!g~N0`^$mH_21a}a{+j}Ch%?dF#c1&xsCzF zZ#eKcevQ3;%mW_RAL^qyTwmO%j_e-?9_K&iaSm|RLHt*ir~Z@vh9vRExlI2tk2*vh z{~(q}mUK2`8|$gPLOHv5xE~0gv+s<41F_Ay$|#{Eg?r3iDrp$LkN;=jyvKueZ1E{*kL~VcrLL z+<(x%D2d{i*+l*x@D%^X*l)k@pX-OK4)T8p@J7&o%u^W`9n>}+cw^v^=>RV($9#Q> z+T{Xo2t1uzxXuCM9|4c!NBR0}3fEElPWjCBi|kXmaN9q9rgokz-`Ml-D&TSd#r*>l z>1A^N{!Z;K0^bXGT)U0gzfJcu`yX238hdO@_U8d_2lho_h5568b_}D0pM}{HI}aeUJv-j_Fwy8-T51@ zKNJ_P{>K1M<1fk{N_NfwkLwrbFP2dpxY}=VsP6oOjHvOq0N#YPkJnyN?N0@s=1*h% z-vd0|e>CR$`vQ23KeCu8u1xOV-<{a1+JFDmJ0j@cTmHF*>`Xh%?4QcejBD&rBk_s_ z%PYyu4h;50@?RG%B(+RasQ!yV4M09 z@r!}S^9P>2Q3sXR$6_6|dky>`;4zP}6E%Kj$LgLRqh4Bv__@AB_Tz!K0sA;>8e{)B z@Ob^8aTC@5cfjNPA-_paeZFHI`QQ0?-Tsezuc+h42Ojrd;zYH-19;p&iEqenswe-S z0gwAP@?5VSsDpU5LWU<+)c6MiZwdBMAI^W$10U;6WIwl%`S%|&PjjeVkgX(M;zXT& zoCBiTw+G%D{KtNyPOjrX_7j1}^DFX=x&Pe@e1Db)6(X0%0%IFfyeoa z_db|J_5U-=WBl&BnP5dCNo}=qmN| z74SIzSk@9=Ty+rNt)%YzgEqj6qaqH8ct7BA{nPlN4_p%QyMT8R;;FnL9n|g<@HqZt zS5*HUOPTK_@20`|%f$ziUyA&%_^X zl1}{GP@=YjfXDkk8aFEE%Etqb`!{l2S=3E!i&_8CK9ym8L+S6f7nuDId3^P32xRMt zw*wygFA3$ihT4e8#{iG>UlBMQLm3hIJm77BN876K;(Gl+GdNfAg`76Lu>W1)g$X70 zu`6aE2}_(~-Qk7pd%z2mutW~yi0xo+s!b@-H&`pR99(m26H3%$%4BOLUW5C=3)@@6 z3zK#2d;JpI+q3OZqFx6!j}qhS%H~m`e{O94PZF=EA#DBsM%fO0pUL|FzgfycAC|yN z1zy|O{`~(W@$9&p?N?(Yu3`8Zp*HjjRRwe8D5V)~QB_UCGA|0!{OUV<0uxe70AR{<~d=Q=BIfW-1!@WO-=>u+NQ z5=zY9!3?DOB%Vp0*0%bmME)6DE-cZnDtKZ23$|WZV);w9{7(|=tJ(Vcq!zT1g~k}? zb_lT&`>h0dEK+96>yy|-1>TVBz_zbXViPsC-Jc{@slyxU(_q`7#E+d=*_oA^SO^Iv ze$;|DHM60a|&Y+hJmkr`WFpG13o*>=Jb%lkt)R#~w1C~+P-uz8gD(UHxgL~bCPM~NQ? zv3X&M@o{F$g(dPs*>aRPzal|mkpSM>gPac%+tI(VE-Wz~i?J~)vE5S0WBE#uXg7_m z7nWF*4sR$|v-K$P;~F+!pF}%r*>=Jb_lb>cIZFJP1#j4XGb^`ZAtaReF`Lb!#E;w9 zJW4#9<+9~@Y&lB&xEJ0~Z$3!82R?#@ze()>aVW>CLROw&+x z3rj3I2X83L;SJkgzzi!<-!;giA2&c^)lIe@C6?b|^THC#@3Zxf*!n+7Z1)uE(QYN% zP85m!3*Zoa$;xV04@&&_ij}Wf`35A~dk0b)29OQ#QqTVo83P7U%$splBUJRR`#^$GkM7^`wd?K4) z021$c(m`TEiFz_vxgI1|ZGbnlw}ma=1`^|$$L8}vVnT`M#Zw@$sF;-{AaNhKh=r^~ zeb*q5@)k%bkWWG4e)$(j?Duz&cu&^~oWk*t0|`Yu1(3)ou~Lndo!NRVkjQI;#PlbL zjQV#|dk7Dd4u+L_AA1dv!h8{UwcgPDJk z$R)G&D6#zlRxV^^3S0jtiSuI_TaOaQXBC@AiTYC6ys+#D<@szmN*wniAaUG|vE?Xn zo|l6}JD1sVVTt;$u;s!M{kRV0sP867)c*h^>Ujzhxo03Tp~R0>Y#t?YFWEdw%)esu z!V-(#!W-)S$kq!>^y4dAE-cahH?|xl=KlhTML*ecVTtv>*mku+hCE7~-)%r5A_o%N z$)izLVqSsG3rj3-%a#jEELVhb>~DLv9wnA5vHAKWwo_)?2}>+jVarkCdgu%i%Qac4 z#Y%0EXkP~;CY0E&D=T%`a$$+{xEGWoXTa8@M9z?vMj&xN?Z?*tNg{8-wzp)Z726&q z#@UvY_H4ZaTQ4k8j}u!iEYY8VP>%D(1tj`Cl5K|)^J73FKb9>=iFUo%ys*SL2C(HQ zah`{<`9De2Gl{K7iFO1av1kgsp?@)$VI{Vo26>e6AhBu|TaOak&t~&~lE}@4dbE?o zwx7?+WR^pT{a6MP+ph$P?Nix$l$cLv^Yuy8vw>}&#kNO@dbhB7l=yKwn@5TL$N`CV zcCvCeNaXTBV&WpP>3(=aeFs3IzC$dJ63Y*>d6bwh0EzRVkS#}vc2BZ-lvrQF=DA4J zTMF&b{#lTiKgY^)Ru2^Y_k0v$@TcdZ7#l4A@A>HejOVL(4*2i+D9*}1KSym1<$roE zitVu+_ksVOk76{K=cKqFKC8|BQ{ui`1uv`@elChlF^}bcdM=9fSdR7eJr~7xSg!>y zS!j&c`~RMgLJ%Nzg?M26@wq4_l=!g+n@5TBxF=iw-}6z767#$i<1&OH@cw%~%EaMM&q;9!{r7y7xi0+S!X=c7Mmf3o*f%uM~i@DBRKc#K|Q z)#4Rz2RX0N){wom@$?Iufo`LN97ZV4cP#F?Kxcrq*m%z%S+S?z21jLY9H+CW%;lT? z*@AYXR#>0R;#p7KnqX7;g1IMV^y0lBCGih2%L49HWnV5^nb+LjcdJ-%W`xYUf;Y;i zqt-1`{ov!UruwaNdndo5DDOZUB__4%bm0`nUuMlar*QxZS% zu(`snn@^vd>2DTO-21Qh_t&exi?=F%o-{1}@~4XPt181z^!V;KW~1`)gGITsPmMN= zeR_3)^@18jbzi-Oy{F-CZzv8zkE40wiG!X6O&B-Q)bMEX)-rXA^HpW#ZC9o2ACYwD zNR+(R(q8xGSYMoRDys`b*D2bOIiSl?g%-Ja+2DsL4jPT%@({mA&G?_3!kqn@!x&`8D%f5hlL)-3=x2+jf7QmiJs8 zs}UL4uC3MHJ1wm49#w1G$K}BHXX`%MMc(N9_=8Glr&9URN8=7vuGB4fki90ogUsg- zs$u#&FTY)CDdaES`%)6$bET}~_bj)c56b#0JeFS`6#lIBq`0D(SMzITDyVq{!Y58$X&4_$-r>c#*6p8>eq=BcvC9`#?$jdcm5S4|@43msTX2FJIfC z!xI^U+)IhG3)k)nJ$cq6%qr`=sos{ju0>Z~B~|$y%slu_Z-7O=1^(SPj`r(g(dEo2 zA-(w99!la<#Iq0gTAOmGL)_@3nR!}X{@$813)*V@EY65ba+2&|_H_PYLsiFaosE{S zS~v4SNl#Uq$;qD2J|B=ZzL(0+>=YrS7r)!3Bz`;6Y||*mG>I*)ao|w_UHYgm8EjTiCMaXl(l)WRYTXq`n zW;&|R5k_o%VFNn1@dJ=T0eej#l`aTiKNjGgu&ZA+t|}^p%P#_~6}iA#idZHZoS-XU;VV0#%Mz4$j~l*HG&8`L=a zUFp~@q0O<6Q_n9MyVm(ddBj?Qht{D!GeRbLUy*$sy7kP2M2p;t$}pS9H=Wbe@Alg^ zqk6i8f^SS(0rQ(OCJt>$DM<16Jx2d{=a>^{)_ z8Iqaw$Z>d#ZMGb*TTA8OK0)ngX&jMDtgu}Ae6GAxVv7PHfAQ}!D2WG7^q&#d+%ro` zZPK9xy_oWirUz9Ibn7rF*3(4B(6MT559x~Pqy6p0I)_iT{ION}UBHE}1%i^KyCsFT za?5mgSqbUI-{w;iKjKo_O>NHLp@WjEZXJrRoZ@Hk{n*pF^Ud;nf7q`$8Dl9u>ij2} zwcAbH1oy89p6+Zh(te-#im6i8H+JpXwQk`fKOw#N+a*fk^U|%Jx5Od1qTFLhwOcQDEVknzR5d3qZUSARrWr? z-vrWp!0-AfiJP_Z{Azja!HenrB>WZy_VQNUI_c)5Cu!L;nkTppT(0!IJSxuEc~kYH zQ`V{(XO*VPT*$C4G0d@)NRl3@BmLwNKFcP(_%~OS#I?+h*h^@{XRhn*(IUCo<^`U5 z%UnBbiY@X!pRg>t*e7A?ti0gTXEm?;eY~+!ZkAtRMnYw1Y3~9Ry`l32rh*D_A-yW3 z6r^~F$KgsX%hPGv-`!|}&bqv_MREFf<75>kZXG{Z@Zq|$LD#J(77bsU5uoI@ydbK0e$uw&Jma9Evv=Jb+6(FJKuST1Z{K$E zx|ZULn^ub^FWgwxse|@%zhBDvPQ2-FEiz8VxBd3`^qEToHi|FL)6D9vHCrKDF~T9m zsB%Zdj0wHWcmJF&FQivZSZ|fz&F>3seLs8?Z}!}8@|=ffgFdSq3rJV~nQo)FK?l9lA&T3$@>=TFHI2At1hhf`DnqReP{hbOKwU5CQ)qRTVC9hYH7hHYzkT=B$JWVae15>SwO8D`r=K3G?VoX~yWF_6 z&cRw+JkutQNte2)`m}dm^DE1XCyq7vD@7;{orU!dk6zea;rt2LHE+TtU9ZY|Dcuo>%SFU--YaY&dt1W%(pvzXN_tI)wmn2>F_sR(hO7_f|+2QoC_m7$nQ1!AF(yJ+~ z_w<>0w@M%89~<(?W4lc0oRjM|PmBMS-p5aV#$);8mrh-ZoZ37r^*~DAuvDu{0~XiZ zDX{;pJ7nRc$Dh{S8q;ylsgXi@@jDet;vSdpKkXW~A;V?OllNOvm6w;a>)ZTi>Uu-d zUU9MmZ@UU|&HY9lb8qH8Us35$XxgI1d3jI2E4OZ|eQx^HZcowb=EbirM(>&=xk>Ze+vWbd6+Wy#wZ+NiMqJtWT?!_n?Cw7v^f}Vw^o4eY zUAKK3vBF9J(#S0{b85$p`Tc4aVZEKR&!@df*4}v_%yM$n$P~%5#@CvEl*#HVXm<5@ zbp8P8+~u0>W6#`*k2J4Led827r-$UZajwsoo{lXOt9W{}G_2NNMz4;r-WyZgrO!-P zE@`W}w<06s!i{E^H`-WTeC?RnTi;{u$-DD>4TiQV`YhKlt77MAhy=;X3=q_IoRB zJ1bLP#ootUdrf(?)2ql%4(()y9#jdEdwOy4qhW(;^@`X2u1Hr{?~_#dGl~O-ExZ19 zWz{bUF{z$aayN?-6sL#Wo1eQ#X0_7QeKYUfUAZrP2k*_30b(bmb`+@u{V?q_Qq${V zafwD}{O&{ye?0`Uo3LKN;M9-96kEvL9b%A`Q>|X&^Stm(sN=hADZY8<`Bv2yj#pPT zyPVTe_IQ4Umh3IR!KPQoN}d|Ku$Qu7sqMKCh3~9hT*uvo^~$zR-IlRy`4Y|10iTE0 zJhC&2l{1a`Y}U8m9krF~o(wztX|(*r2a#Fh*MB`wH2V6;4mKYZUVfIB+_1-|gR|J; z{>*)rI4=Qo_7K(^;3VUG@9U_KFUodR=6OxI&~n2h6PH;zuf>X+yB^=&_gAluZC$&y z%^Ptqf0>l6tozX?$&0&bx7H}IaVZTLJk9!Tt-n0UPM}jySg+b%=acs*<$aI7HQZ)I z>$Y$0ZF75EGU+|3Puk5_dn-RLx?R(3X!*m6l55`Wi`VTe?|Qdi2eaAXc0bmX_KDTo zx)=Wj0{&};XTF}ode6T!->ddQe97n7xQJuM(WR~Ar!HwTTi#+-^HsMtR<1s-x#U#U zT&D-)UpYED4|?D_p+?R9r9(u_)mps?wZH4`C9JnX{@RaqGV<>YHtjvK zYhBSX4;z`7YN?2w`&O3BQ9kxW^6T!$V#j-RoF((N)q&$b6?Y7M5-u%Pu(v$4*|)(r zBg7xq>J_imt1ql~e%|giI>y}#$9tWL)7mTX!&t+k_X(vbo{zHn?$s~Y`AXSK=U5N- zj%%iN{TQP@)LTyZ?7>9o^u%p{IX~$?-e%iFCJvH#?`9yZx9dGW6XlQR9nOuvbWJ1N zv*p1hWzChgCk``j$@?;A$CV$O?^?}RX4xmJ&6X`&bL`Xx=)`UsX0Y1E>TcY%3a?M2 zTd{gE$cDmtW%n<(w{N2^7onl{&f!~J<@U$JqU=3KuC*2~8#{eNb{lQ6RUhYU+jzxy zn|J$+RJ(VbLVo%4D^~8Gu((B9pw6ZtwR)M&$4FT35v@1nx>fxrX;ze^PxdTab@JW# z@f9IYM~choo|u^VD9lf^VGC}yb2i)@@dZOC0oL!0Q_mkM5hh zG+}g_qHE6THkV5zFYg%Wb;)dg#V?Hs6bH~~^0!vlf5#;4H;lW!@U+yVA_JqyI}3Ci zA4Mb?tz6Qq-0Z`Kjz;e@OnBFdQxwJL$WHH;D-p4(TV=p3nd;H0gO40A-u$X3{w6^T zb{(9*y@mDqe7P>O@ly8Nr#Ek3GV7zWTJ6h@&nvqvsM`E4t(%s^6dk|j&QXuI5BAg^ zq?>Z<%$eIdvkuuD@my)=SGfD!=#)4Y)?eHo`UvaIeN(#7tIaB(l^y1{(X3u&==JI5 zs&zXwwg>4RGQ4#?|K8ForTTk=XPGAK`xLlq%isaYw;$G+*vF4;si>%SdWA3ZT!SZ> z06I;D_2x^=xK>$OU|jTKPh#QVv-u^*PhA@8oZdBkn#J2u&Evey3V+$IaGPEem%Q6( z(8%|lqs$+lJ2-BHmePa2%1DPV+avXDij{J*jhAazZdgCgFMRf+mO1Qi zLL@Q1=6`F2ajV#`?vkJ7cj_)T-!oOh?gI|}R-oC^VB_=G{Sbrq&kV#fcvdyFwjC%`~1DP!VPq1i8qJ}lz2Jy{AumUD*de`YOnDR@nbN+6um*lt?;i-yyN3?Z7g~g z`nFJgu&f|G9mi!f1N1#YS;=N-ln?b<5%tO--$c!u;{;?kT=F zIHn~~Zo5&;4t_rdXh*+%c9qpajXp7VpEm~ie3q4qG`hy&;@dHK_}$>oyHue6wYER? zzzcM-TNcYp5Z57H&-EBX@CkqrfgM&NZi1!T1*chVg1x8XXVq)HK+@vDN0L8BrT zAo{HD@+Td5{V}cH`EZK=b>HR>d_dO&LK`cY?Y@-avlJYzs2!hWncE6_oaG+DAnxP2 zoaGTcBvHq0+>f9f73Ojk#f$)hgjt?d3)cl|H6OwC(CI(#%KiJ@_<=5TpY{m9fO>;5 zvSuZ8w6&$R0e3b6VxLqZD&z3`6)d%Coj|5i5VN@5MLsZWZ0wIGRr8*vTi)2VKSMcB zd9hmnt^m;G%|l^9FM%T*SvBPqOo1HC^80K(hZzmu7iXZShvjAXj*@P>X3=8Zm_!b& zMPBYlL%vscs9M?-DEGezsMj4nx~v&M~F4v<#~9 zdd-&!rE)r z((LAHcM0xvFOi}`{G4vUX^kOrFp8%V-`Fkl>-c9VA}da9>P|Jzn*I0QqSf?Lf8HVd z)BpPXXNm&dLX2_c0qrSrT*CW`_Hs*ZZsxl!39wiNmAy=2ke^8W4DC4eqcNnW*GdI$P;r{ufMTb_DpU--{6uKP`rs!zA-;|NZg#{ugw zR!WItzf5cE3tQI{3k>ZI6C6{%cn{H2U~%RC&;8RsNCI8;Sspan_!6U!ko?s$`{85H z7f3uwskW5d!5Jo~PsEE1f&+;&RP?I`>T4y(g}35noDiRU)B^F5wp*UfK^C-L}ys8hv&7>#OyU}0h30L5$ ziVLZ%NQ)4{@(k7*&b-_{Nz8i(cZFLp!zP5Xc3UB!;k#6d|8xH|W*MOS{FANNLu7@& zTZ}oBc?{WF!>1g!-oQuo1J`yAi?6i2p|3<)X~R+9vzW`f(&(iNh zVGwJ;xV_QU7YbhKs-Tr*+a@1-iW-N#%QRCw(s4L_ert#n*TJTdaYrV)^#Z6oCzp&KS%uQhFsINUr1659LC5bJ9q0m@{a! zS#qh0Ug$y;$Q~8e$4-CVP5-z5pa67ja^JU1q_5(xBFcvb)Wm~AU;hB>wTEkb45>&xsVVp2FNNJM0194W+in=%jVh`kc6O#kXh&a20{>^u|ob_i)u>=~T>? z#13+#As>cv@o^n~v*Mn5li!_dO|zU6&)r%l_iQ$}j6y8)AX3M}j(Q6F=ZoJW5;cR| z0Per2P%NerRFQq}cn%E6n+aL0DMQ05mz# z=;S5KnI@Qn6sU&x3-f59PWt3HMmm69l6m^O; zKJPd3^dn3d)9u%+E=XpSuu9Rg@0_03v%&HBm{e4sV)^+s@$mt!3ebfdU+4w#eK^^5 z7?abEeb+{p&Wlm{+$L8T1?C9xBlUbaK8n?2Qpj?EZ2m0t(2h2F&|3pPi48`$oU+;Nj%uiX^S+HkpMY-ZL69=^$<^XYvO@d!;ohCFNqqP{8whsno95qxenZZN zx_cLb2CNG`i4rs6dNneoR<9%imE?V`2Ny>=r=R=&x^LsW2GFIW6cN@Fq*9dTpw}Rs z`5mHZQ6+Cx!mypu`aQr6vOj=U@GkePaJO06pCsIB=7AuOoP5ISWm@yPYX#fu*zT=A zdz-Io0^LA%OD*eddufr5bOiha4pYcLT$#IZRF#Pl8^^^YzS-V!r8pUXlSDJz)$|Md zZ7QX!i<1<%(HS@zl42wi#&3V~zU>oe0o`B3Q^#Dg%sCVk?<*&3p=gZ~UF{;C9hR`J z<_YXB+!)K$=!+{)Y004;zfhz8gxW<0176+um4Z9Z>MIj)sb_qE<(F zh;98mWJZPCuiLwY(*kUk%S7=mKL;zE&OiM5M#SHJqyJ1@pxd)G@>}~<6j!Ek<%-}# z?a+H27*}&bp@Q|m_z|k!CGC;vY5@YSIx4tD6VJ4?wh@D-H}2D>t+TX0!|u&NXKuk> z!&?oR{8;&lnsJomT$(?R6fdajyt-Na=d&r}HTST;Fg$;1rAfcJf9JpYKzDN|P}7l@ z5XXf~Fhef6 z{)DM>`0Zc!ZQWu3bZhW1DnL^9>n#>KKcsmZamP)Nbhd5VDb-oHSLqj(P$ue+P)OsW zeLH4=Q;4n_2cT5as|c*NJztyh8kl7AgkvNtN{?fmU+9bg1> z->nOnbdsYwi{%D1?zt=H#7+xT_eIVM?s=^y4QR{8QKo11z}%FVhggh#c6WhJFIJnS zs6yfpufIea+Q{Af^R145`wzxIxBBU(&hTg8fSfN=Sd*H5m2`N$Vu z=&$>>?luLwS)wt_511sgY&V(i0qOA$VdRr0r8sMGdD47_TNfP)&HHd(IQ&2SWGJ=Y zpOfy_hiRd*n(X3BWKRqFYLe=C{B_^vJ7z#v?zXi{{`uw(^C7qrIbm_H+s!9l*zmVY zFewyxY($M&_%!AH8lSZ0Ved~ie#B@^QgD^q&d)4Sclf- zmYk9wiz;Y;N^5yCO<52TJ`uN?MUpTfc2$gi=kPd7$pv+0s;purP97YPs$2JAJ~f5l zC}`xiatN#Ae|i7RqrL!Ljh)gocxban1o4>r;oyTFOl|9?pptJ)tsXk?>jTkbVDpa?-h?-vNJngEe$_{FyfHwW>{m_haOK01A7u zqbFCopm(s3v{B1N!Pf?|CCv&f!~f;|<5~gp+D>h_WtXV;S9|siac(_uz$qnn!bJ4C zrOB(4!XC_;wc6^^{$^bIB-ZNEA;jbl>cj=j$>H4z@#7^TPSl?1$6xntu(t-f4VLe> zP>o=&#k&-o(=pp7RGHSPH41U7Jy{TK9bfv9?T16?GSn7t#%2`nZp1NziHDa7iWtE0 z;^>b}StjcLeADI6e#w6_h|T}y;;O=Q9tWfFLw$u4u8wg98)YA9FRtDr%M{&?;(f+X z@HdGzN6feCSw2wQ$r<=6gs;5??@&d>QkMb?q1_ws*L|Bu*#g~be+(&R2>jPTLA0y2 zgx}Sys?Yus?u56sGouUU&FD6Bcq%12TQ#PV+`pSYz542KGqElZ+s|F5Z-wx?9kaZx zW8Yjmpo<_lCjbq0fxe{}Jvjyi)e&Ee-IU4+zOL^o6uN`gExniec~r!JaIN8+Q*9Ji zNYYQX_Y-(*>0Z7$24*Hr&u@9(<|Xz(*U=h>M)Q|;?YLeIY&ad|b@inIg_S54s9V&g z>1?6D@!0c7iGcvqSi&$agiQ4~JcF?3L{tjN;}i>S*JL}-m%sJ!wjTNlbPdtO+~=D1bV(`TBFO3jf*M$H*BYMIGP^Q!8za-UgK&+l?B z;=6$N9HIX)#%xcN&#re|Un`Ns-&v7`2>aK4+fQ`_y4*It(gD=r<*OVbmUeEHC#yl) z^VEc$`nret%*fj>zSVa=sdeELS@6!AlC?RDW>WU%zSMb1Lou2kxOSbW_WuIl0~_Bwp|zO z2-xjv9nR|shB??nv;Vn&>cJW4y14x2@NsZZi#os;ydIir&JL^ELDkpOOT}+Mt*SWS z4Z2Fn3YWQ*IAx_h*(@Yj8N&Rl@5`!r#9t7zV)ZYNE3 z)(cH}SJ#*FcZO&Kbk}L$-)$M8fs7GJ;9Bmc+bEjS_G6UtxuDT4U9iB8jkzut^(IL) z16)_2t2pgnBxWE)m2p;8Yie=kLR<{8$v2zuG& ze2F-!H=i@@(CTxbG2t&K;QdKApnKMi#m`a1e#0AMYms+5k&c-E!@+%p@#w*Lb7$M# zBz%&)AUvWu7iz1l{meag2 zAB-xd+020cDX#5nS)A8oDCOyNM1_?S7*TSlTeOT#(25fL%epq9elB@SIl_U!|Z1zH&Rba`?R) zH}VRNW?`H25@FT(;>+exuANmhxCL-MfiABH5fmof6tWOM5_py%-zPS_)53d4(%DZ% zjrbPN8^NNRJb~G?OtmOFKff^cHcxd1yz(=`2;*T_Nd&$tVS@m;UO@M~?5T^xc%(j? z3Q6FPJsuQ~9t3TOB7)S*r+1xDv2`v2pJE7ASIuTYo`1gQdQ1}0aR{@bp`!;gj3!nq zMn?yp&wB&iVW@eZ^B}R964C_OV)FGtk+hCQ>}5f(CSxP~14&64NRPxK zPc^{x1G?J^xn2@n?tNDY)H?NCy0psF?ZhJLET?tueIk4h^GBwpT?n1BEE|2&+YYci zoKm;lm28<2#wIFIY6Cjqc9{UzALxb=EuFrfi(1As1$IcNt*tWhO5a?1iI z394dn0?C9)Th025<5GNY?Cu`wEe7JAp z&|A9*1iI<>niw-I!IuHwpeA6oZ)bSvf5(dS;$*7EWHLo8?$XHDi|l|evBvX7_k@%h zko%7}GGrOAM8WtKR$|TsG`*c~zPUj_w_zZTR4DPb1K|Ob?D4(8qnYHm?(5i)w$#~k za!sO?+=_N@EMb=vhVjSA+p5w&CYrCrv8|Q|VgU6J40OL$WU4B0Z8;#z zVp1=Ziujv4HOq~nep04@gWe1uB1j_{_=J->aY6C}Bbx;+-e#y>i3TF4?tpqRGlROb z$;b}ih5+3YhonsiybT&Ed(uM{Z6?vP-`pOSB+R{fQw_f?t=W)hQN;Kp@J_mI)BzcX|n z8|w@`eV}BZm2$5$m=(!~-}g|;o0@S7OtQm8%c@H127YGV7Cao6j4z;m!+|ch-_5f?nI!m_u~%juZSU&ihUFU;Q7Z*O@cfUf1*?<>&H zg5H&32$Sd30~)x6WvfMEg5*jZyBl$)8}d+tnA>$${npj*NFsKxA1u0M-no3R2@9a( zWPV_fnteOZdUGRz?j1!N>Gb5$!ouDjOmI)9N$ab~fUC-(oaU2;gW!TBqm=O#C@)ld z-3EjUWRCL&1*vlwg;mw=!w-Wcx`u?3eLy`#0bRV&QVWNU)r_ED=ESVHZB7M&MsU?$ zW9ASI3YAv+_r9IuyycAsx>l62 znNZ#lrb+jp8Q2)jM1`<_^V({_5!F~F^r~g^lzrE|K~rw>kuVhx zrjAL>XZGd~ZUE$s0lJ)OjjfC1kZs&H{TDl*Y!yP`b6%<^$|^Vu7w1^P;F@3D69vf-a2Jy%1a)`mv#xAnPLvu$4+RCVv_ymfdEkqwl}JRuGPb0wbbWJjw%}qE1n;BX)1O^YZnOjw(gZu3(4G|PhMj?CTfloPntI% zlzg&*Te*n9{oi3Olg|iGH3k2NXl#I#W$wA}ywh-p&Kwezydmt7>of^+&&Cx5w39mbATbJO@3P zP5N)D&l7UrbDQp(pxC#XRa%9ue!Vi3AB3cgY=ChL5oTEE#`nh82KCyg0oz3)&{cW) zts{J?u9xfUe;;89qM(xBYVxfJ<*AtgH(%8cs?LwuW(_8PmWv7mn1UNXj&Vl_-GSKapHscc}_HDaic#aAQES)KFG2aah zXLFMnoe{$>h?vu>#`7;wbbXo7w+GD`{z_7NR$1U)6q=EbNz;fvJaq|p9#ViV$tCz8 zEG8)@p?15jPS;i*BD!VKChbzovvjN~kr>0;h>GX&9R$zn*?rL1E$gcC8s+Lf-fee( zjNZBbkwC~Yz)c0ZrE2%=@#LbS@kvcJBWkHpu88>oH|%EZOt}z(U!PWtE!pQ8R`2aD zy&7#L69Zy$7p{A-tcD^pcN$Ec?;5Iz0d5-5eR&k6goWOrq+JQ_Aa7E%0WX7rjsn4s zUz>7t1FalJYFs5c{|e4#q7yBCbsgEIOFDhJ7LcG*V*1OPLV){l0^p_tU3E%R*ZP$Z zRVR3n^k132Pqc6mRCTfS99&?s+us7gkUvc_dClt9*ZbT(fu2=o2Htr|{d)9>lSUh@ z?eo;7E&#Y0K-XatwSXI6JJ{qk6qxRSh*Q!ZeIaatUQBRYOH>dwntL~-G;q2OaC3ofvraUp;a!I1 z$*4(q;Xq7ilfmucSFD(g;P_xOBDqk;fFYJG^7QJdljd2-)nSuUkgwJjfy3iM=@wsW zsl=Uu^PN1P8|`7S%w}#dZ&J4U1(ECc^POWkfe~KU754N)UvU+Oz zGP~sk4D-(^g#~m7kxvH8%k1JNZ}(o`ez$y}dw!mQiKjj2`M9>BS=!Yr?r+_PRSwP2 zY7Cx}!tyTNj^MDaRA(Vzl%Wz&ZgD#h+o3K;Lnf&)j(-II*-aep?VjVC`yJ@!a%Qqi zWjxW6)iToNMDkP$uazd*GDyCQC#yI_{JgF4Id%-Isq|9?HlxwLl;keUG=DjzA-f>TB0&&oB7q_^m#QTv{O{1=|E!OTfUfFy zn40L%Uf!b&q^jAYQ=p4ww&}66rFpw)-!r{ba)Pn%RK-p~YBnIgfrJ^s$gX&m6MNUXh;(X5rQMKLgiVWrB!tPdN zF@AZ_5|`@G@T?@Rd#k2jL%6dAvVRHM^89uWPXc1<;zAB_Rqf^S{)5+M)(mH>A?-l`Q~hpe%uNaU7ZK! z%^H0}_Z#Cyn{pJX-bIm`E!m}Dqy_ii!Gu|E0=VTs_Xng#OGKhwGLeF0Syo}>nh=6J zMwSIJm@~`l8vQ9Ju*`2V%0YB!2Y2E=WXXRTSf!)Rt&AmfoT_s94LYc<%*ODCA}AI75#1X~iu1&XPWW)xXrG9-kym!TkkQf}b0?uMmHK_04$>n}E(=%R zNw`|@_Q>kDICUc%0|tMXVUzC2mqWr5pQ5*Yxwq$`3g{kuQ#dn-@5jPnsX??NAem^k zt1eNJ2tqJQ$Ko*!oHCj%G6*DbxkZ46&*5#5c964eOMYp);WbG#ovYC_$+!dLtp>XA z@6Qf`H;acqp0Y_9+FcfUw3H-&+9lOUtq(`6Nk>7C)G;Dp!r&!EnlNa)>V5it#~d<3 zfUq%6Ye}b{v%upFaBG0>W8Gbo7sO6=z!}m0>hX&76LNe)PyRQz5gWu$nY!wgEhpU6 zNmoned`INSv`cO4IhBtBD89kSTZ8H{jpoQy0Jj$C>Z-@*OjvgrA4OPVnTsrfS&rGN zxn5@>gIk;rs?zME;)h`j@t?z`D{P3RsH{tu9nF_GX^~?*b(o*Qo=+FK1Kc{G+aV6l zSErGufA>!x)7@k&`GHbJ-iB|hGnL%{z-m%zl3;LnSLs%TZQ4ur!NdJ%GrxF zuabkKxv9lyV&*%}+Spp?cOz`_;OWdL=IJj={@k%i8s0=5)N9F@jubC4#NIg2X$5c_fi9<^@Z~|H z+O*Ie;q0+gmbXJfPWAEqnxFhT#^xp_L0>9=8;9U22kVo7chi#YIFM;+h+jBd@pRlo zeOSK^$h@8NzCFK9K$oJ$Z4KQ3jE9wlk)c<$HO%V;nv{mquvrHJWISV*v*(6qC9NlE zPyO0qpHW}}f>-flfSp(Qs&EHQVhJR82oWG}Gtdp8iNa^pD|37zvgjjwu`A@|9w+IZ z7CCHz%}EJUP3~>k|NH@VM<#m@GGP)lNrLsdH7k!@lMwQoov+rhW>5&gZ2`K!sn0i; z8HT|Hy+Xta`OOZ4?(ul1$_0)fye#An#KaqN8q^l39qoEedeHlfBeJPBMPt-$4OkUOsXw6!Pc4=^jU?H%K^HbU694(V{edEBvrfR= z6C?}Ip^+fGBHmmJ0+%1`JqZa+U?3+yz-f`ekGn)*@wR~14ZUR`86@K#z(D`cNtJ;EKn}Wzo2wrug9H70&v@bF67+7=%ITZ z!Vetlz$g-NP2oqn4f`mSopt-|k#gL@kE?O(ukR@vTAe3mAqt$8B6=zkI0~TR;o43p z%hafU0rPeM-Tp%*3zEV00zI?_wV+R}->n`3=EjqH^EzV_QiX)KkadvU^)K0X?(T4_ zYWY$eBTZ0@e3SkQU04ZWv3aN@1<2b8bR}!jKo${>WoN@e`b=JUX?G==yqNId@W#_A z%cPi4Y09fs_umI=aeLKzp@bfSg6Ho^U<#aOR!EBDR3^Ecmi%(RTIjWaC7 z?nBZ_{*SztBv7rK-%xmdlCzp4y8>m;Uq?{|k zh0E~IfM)youQA&C+ZDfD2fSvQWF*dBbu1eFLV1~qtsW~k0B$ePJ)fA+;kAvg>GkF5 zt!*VMUHCd7J&$y<|J25mFW%(ozzAzFT@D-9&5I`U=R~4|GHBqz?DUY|yROHe7z2IHPvIV~CL{f~73bnSA0d znUq)ovl-*g_3Pf);Jvd0813;HH&#)dN9x|$9jL;PA z+SaZFencfIZl}ZOtKfeZ)h&Buvgk5K+yrpf=3f@Q1-~`Q1P2^>h!-RtEL7K|RyPCN z#URj?^-oP7zrX_*tB!NBQ(54Fz1YrV%y4-uF%F!qrUd=LXD5GS= z$MPqLpYUNj@?9t<)@mYHweGc`3xaf=#*f^R_>3EThASj@^J)m9BdqYk2N!1d+` z(DiP_N55*6v=c8Ra8>ZF5y|R*4^7)t;4rQgvHGh!&v&238FzG6L`%eN=nfK}7R0Z} zI{JAevb>=&dJmjBXcUll6zGC|gd(57ww+GRX)W+u+<3|pZ#wc@K^zN1(M2d6TlLl^ z5$5X`J&;cL?E4z|4H?_rifABD=ANuuJAJY~>*4MG!`t{a26Xc<#G@U&k(2J;&F*WV zOKTNppQQW2h(rD47Qr>Rv!A7$xmNz>DX&E3Rr%Uf8AqiC(&^=C6glRe%2E+t67qJR z>&+bpx|{W`kT*`Lg+FCdI@HtTdFNkD(sDw=rkg-q{fF_(zovX=c@>7o5Y@Bq_B8v^ z@f~%0)zZV(EXCx;x`51r2)OS40d&3HqVEEj?s$CyusVrmh3>WClCy#h8@HQ;-~F^4B5Mkp#*8)pY)@z?~^?*!0|(ZVlw<=~)pyZqqb zBmqJ7spWMjZ(SA^(rCEUGwSyop$1D8O@!Jok7oR;u9zOD=`8wl{cogdH7R3H2`I)R zfcq2Z+EtqO&L1SJ!}489>mo}jR63Yk=30|Pwxh~ga~c}9a<^1I>Yagdvt!q#2K29Z z-c`GqK~spM?AZyfOq3$O{hvs0^*af483qN!c146aB4oFOFF4>!%xuMV1VxcnAYO~< z<_IJ?*H?NFFE4dN{6(xhe;H33d&)n7&)@sXaNH0a2#sDq0P;=&-AO30%l0M$6P_O| zrU*>G#7Nc=sxY(4k8J$LqSRb$<;Gjc%4%l6mP{HhZR7$Jl*liHCMqA`qrP4QtiPj%=-e|S)gmL+j3_cDjRJ{zxD$w z6kW(#Zx6Ylh0^Hf%BNL*1Q1#@{V6y#0VX0UpUeeDTuFDDV+T8X8lp7P(fB4^L3`l* zcMjFAR@67OV8R6MYH1D8?enJ(7kScGs1=bZEbyY48iJ1^GU^W zB(NFeJsG+g2nMXHucX#9An!cTr8XU*clw35qu%z4F!$?TuH1Dp zHdo6N8>dr8X48Wqu=%vN7>YFE+u{ZZ2~NzOm3E38r0em>sZoKhQ&S7zH^l5vzMRN zza;A9+&}Wd#gv8*8%u2ZjNG0{#kCl|KY%`85kgJa9dc)y86SKO0;hK| zGa8m51wMx88pWf&-P?ZaA69{`C<++g(9^f`OPf?!{ZU8)YIF3(lc*ObPL)Zj4rcyT ziqDXu>#QazTnM)N18^HLh)E;AMVRuFFa1-RU5qEEQ*Ykj`o=kvTBe}4c$V~NK+ZSLQeV5%IbJRZC|!_`0)YBm z2f9(tvvhFNc^R!=Jd%gvf@J-)@Q(L0py<&gn^Vp4XPG*(kf{m;!WjH+%rgnBRfX7m zV}o!y;utxMW%8l?iGlY(Hh^v-mUq|Zu()+-lYpKERSPrs&%p@`-^&|V&$Qgi$edWl_C%@fL_5e~Cv^#~@54laL}aSa8teK5X$Ci>BZ^dhgs5nDE!DrY} z%c5Cr_zl6u2Xa;nM8rI+D$n8_9iPryW!vwfHKzDzC;^Gw^{bvXG2O%Wf?xhqQ z^vl{}$oL=enJv509X1$@BQ&f*l~5&+Us2nv;2(qr_O}8dP!5~AnAX42KmpemyFmAA zlPs!+V8UU)jIGgVg-K8)CXzWG`wW+#ES{YFdkMUi{Y;kNUP5yoYJyn8^`25(J0(4#XEZ_61{miL&K5(nZ)D3*O>nvPOcRkAD0UjC{4y5#sqDEQe~RW{Eiz0oSX-}HAJ^5nX4eg*MO{YIF0r$a=fNneiC#F<@qXZiW0wYR2^CZ=d4zIK= z`O>yG=0;$g5+RAh;j9&WB*nN~8SBXh`B5oS@#ZEdWKEPE!K0aFXyAFkG0^o<9DYKU z%kyp2z)_q%zsKw1dM*$kDqBH&Frr0Hk)!XvE$zbdY8FBfxY`aHXQuY$ASv*A^`ttn zv*~b(Lj?!a!wJy!s0cf2(=M&Net?Q*S_qVrUM3WfX47U8M>(V_Lz*TyyWbW%=tE0a z?Eqb}g)1T=V6B_Z(9RVhu4i__EVcvoXQx2duQpF*+JoQ4@Pqdnu}J?sJi)x)Y8I$) z9tEL7?1KIxl?`lTdQ->duTmNCh{5_^ke2WCR&`zUlLW+_f=v9=fV^iw_wah;Kh;)bRemS`Ot|pKYYwgE|TeyQSdL{+~k$| z00~7Hf5gMAXm6fOcR(Y?WDGT1DFSdWfbR9VTJhd87MJ?Xj+aJ7XwE&4^}y(3pZ>jiV3TFS!A_{9T4%{pZH?3B;`L z=0AzUfYP4_p&d7%hs8>w&xRDWH|}+rM0oL)63MhYTJF(Yu?TB75_0u}{anpILu>tL z4ycD)pqo=9*0BvGq5~Y0&K^-P{n@w|E^zN1sS=Kcvx`v-C4Bn4Clg zZOl7{H=GfAL%BdU1iQPYsvh9p0bQ@i@CIuWEz&&ji=0t~PqK@T$p&Wd3q2=vO)Us@ zAlxYMU%IXn$Je$R8FSNIaZp;eAV3La*X=Fl68E-symh zS+2uQ%Cj?wQe`n%-B;t|0QV8-)_!g5&QU4r_u#)>!g@`S%TT|y)zDIFf?iw9WPw~L zz%*011MjIp$D^sf$wM{UUqwj-39C$Wt}wCcQ7GRA_P@V?Zch>)t#j@OWm(^&NQ}(P z(dd=5`Z4k8m_PQd=SnM|4YofAodrR}idrYqUH0skG_KTDvg71qaP*{!r3IT@;5y(5 z;Ql}V3HJY=Z$1Ms2y5Mfe9!5Vh#4%rN_f%HLHgMyZNa$2Pp5 zcX{1}8dvhrOB*qM+su#ixvYUfw8Bp(`GETU4Rm`w`xdh+C75sOZ4^zm)y-#jqaBa1 zSn>r=_|1YE!fx^|Z#D;E>3dWMC2prJK`)R)1Tkz09VO(KmNP-}p1A<-3(yrFiS~F% zd1USV!HTW1?9<&_Bb1x`jubU9so&sX9?7qRxYo-Q|eJII9~5BXFGt5?MCP8C9Dg@hT4 zz{Wzc*!r5yStrl^}{ zH6v3&q!#?m$zb%!9u1(;cz?Z1`8;JQWn^TD{jF ziV2&RfmidN8G{tasHW7Sjv0_RKMqq#ifEN6o+uNxDlL-imLjY0XI@nB5?0ShrF-X9 zh4j5RcUM)95s>%Ko%4SMLa7l1f~d(#sviU&FL7rGLTbL}?nL?4T{a;rr3uEfnIQzP zHk4kkf7)M}Cf9Xv6$gnk5=KU==uFzXc9$EL9^n2N^ZykH0;tpFo{D%n0Sd+ryEMZ) z=@IDF9&`%nju6&QO6xQH)ybn1xC)jHQpzYvBl{Z&cUZ$YW4`EQ2BqXpmo0k0cKm1W zOE3YC1@{QMM6!X0;3(6{!PA3%zevoF=&TbHa0qm#c-vL#}ZG?A@yV;lapc{8~RGi8*ZQ zOOA3KRtHC@1j@DfFym!|1RyUQ(B+1wCd3j@_VgvTD4+yNQdnx(rpp74z*@vH1ZpGy-?jTMgB*s64S?2=s zA^_c)X`$NEit<;w6h#)l^4% zwCcKnnK#&H`=|A*L>{)2<@H6pr7J$1Jge3tl_V8QY}RU?7aEue$(1IF6_RSe^#wA} zbzthhib0%T)h8b{##f%S7_$sxTw)#%r@b~(a8{{T#8_KED@-MO8c9PffZwkR^ZfBZ z_2J_61=S@bb)im`43HNE=nCvqx;XuTrync|07Uz&EOYg6xw1ciC;}dX82Eq8E72 z5e?{`j9Ah4v)C6xIx{hM?F{BpsoxU{mMzt|H+a)+v__Mme2Wla{8%DV-i-_ie%3!( z8WOhwKdrW>69mB~L$mPqowB!mu0P+H_*WpVDrQl^VYK`_>IY}}>4~SOwS}Q{Y(Pay zusStTD9JeXUmXUJ;N)P!)bWtnxku%HBr(4u-ss%E<4>=fjFkh9^B6!EWQ$l5B(s3@ zQ`he>kTqo*;191Bl*VG4l#Yj`Aj`@~gC%J|U|JO6vPz+lz=F z=W^X>fyn!@8U8d&jxD*94~%COHshRJER@!RdXC&~sZu7qVeM^=s2vpEPsnJkkX`m7c81Iu4umr2naT1*FwuV}_lISC(eN zQFWFgwd9WD0pQ{Q-9255;dqaO2Jd(t4OzmxqD~NW+1Q`H(hR>_K$}iz6~OzP^`Y-s zaHOH1Xn!kSGmCBDlXn*`PJOY12y(tKPKVc0Vd*z(AWhDepZmw{xalTNlF|KUSppxDR)Rs$NJ4~o5!zv7 znW$Q2Kp!I%gaPiKJ+FTSLV0oUdZ5vBVlA4)F-d-gUx~7YCM1e{^9SJE+R532Kkk*ul09+aJ zB_Aq1MN;L)hJrwHXdU);7}H)m3&X)PYw=_>BW(K$Uxh|KZUGMjF~VE}@SK+r=o)pS z=pS?C^JI){<~j|wa&=$U*Klj7$D@XCh(Bnz;0_-ypU)?iKqksHAw;Vw8nG>YO$*rFP7U^-EO zu*B$V8|M&aLe4F0rhO=Qi6BHP)+G zP$*AI`ARadh`f5y*P~o9cUFt3I!>D;m#1uqk3r!DDZY3K^PO9*a`CF-$czEgYLL9K#xo&~y45UE!LTnb1rafeRALS#X>qlX#Q-T(E%^Ab*g!_Av?=Km6YnPv7 zOrpmMZhztq@_k_}x~8qrm(1QoAFKBLObPOQlc|FR}9jiSl#72RqIs=E!^DeO?N7rS@f6corXk zOAd6ab5DrsGxhzqkgTNektue5|{CD z4k1(y)K&xJ=SYgs{!Oq6zA%d!NZW?P+eK{V#-DrBr*xKVTRA_sG ze1G^kKRpU&0*QbB5>DvSPGS*AXQi>?(4%`=dwcB$Joo0-f&NYtL=hsu9!(gof>qXfFA(tA|JYGSLleoVJw)zvwqYOf+V=)u|FH!F>7j3Tq> z%ki3b9R_V+j!N~5b#1I^8|i{^8cDzZ<{*SOCeT{=&-(W~{5jM4S0Kug(S%&l(>*P* zkeKAZD=B;QuJsqRmf{425gPWZKNwlByab+Tb&&r&(0P21sy6zbYGp+gnLxeCPEJ2+ zLt6>pQUl#{D*J?E9O3KP<%LaTPG`l3gTsU;AL`J`7*fbvA+Y5_s`ttUxCo6KR3>Aii_gDY_sJiQ@sJ`!U_yR+Nba!`mcS|>tA|k0s zcekW;cXxMpcL~z1fHYFid%mA%*1EsF`1`dsXU@In?0xRcjqOW_Dmv()W!eoBY8SY1 z{Vh8fTCAM^CT-SgewIMULjjO4JJ2oJtyj{8QvL+Hh4JLA8-s!seamRa>5zbtf$DgN zV&Js6=B#Ad_?gEHjZ~I+GM2k=?aiN656@bq(`-wVg(e$-3$D2!0U|26w(t=iLgE_k z@;Xx_HCbX_S>imhs(!tCy6t80T=ee4BrNEc*`ZS$a&D5G$zY{kO6^QA@Xnqt0Xf{o!9TkW!Lw_i|YnD?@W2FjhmLfJg$>G{l1J~LRmmBClYJZHHxfaKq z&Ydl%kt?&VebRzv6W<#7g5YiZ<3WkO!ncWD5*d;HN+z!?Qu2M5HrgL;CJGMH!kjC* zzp9y{0G9{o3XQBs6)juqMib4<%x_^BeUeaqnBF!QFBi(AuG&wIev^(7(S7N{6*L`# zzp^RNi}=`UXn6L`&aQVoc(m3UTmwP!R~ZfgeeU_hTlfjrX0cJ&Gn65j}9Bx zS@IX}@h(m|iXJ!@nMC>G7!5ockv>Fe?Fkyu!fnB_jBO4^*4!KeTt1*{?u#Qrv0f%& zgA`{e_47=@y{zr@A=fdY!1Bj&Zh5r_AHlSEqD~t%-h%vA@fVDck0#x75eUD_rd$6j z7Ui_|04_h!E!$Bu)|ylMaLeqgq3$89i;TZBMwo?9e^jrLJ_TB+F~l0@6MDzsLhU$8 z=J=eXz^RGb?Q_C^@LV`&!6AVJt|=hnAOLiGDq>}j%;}U6iYtREX^jX+CTMI3i_E%MsLVhQzysnJE7jk-BzBGD9m$hzPimeY6ER9;QcT%55&^o>VTyPBo3D7h{(cx)V z4HM>j^5>GJtSF;?+e}E2X-ohdpeNu1wUf} z2@vVGDMXU{{5Bg+Q_^-=@OF?) zz1q=%(5P^_wNvSTzfF3@x~TT5m%@i{b68g%N_a+jq6cundu&L6*i2wPr{gIo@IFSB zc8^BZr;Mt8w#Jo^-Vtf+InJ?Dtg!s7bZ%~|uJUw%rf!VHS1+sVukW_XA6o2UC-}NJ z25`lJF85B+75>KwgeyEUsI?cBH%>3@Y3dS_35b=6#j&eV%syVZg8@6Rav!=aO;-FTl3 z=gT_~7l%7`()oA%`auT|aC z(?y2q)OQACee&DB@?CsWa()zO0^4{q*Oh!CruV5Qhnr^<2^GItS zEs$&SWIu$&c1k`(=&vz=_acya2JWRn0wgzrEW>L&mdQ6}JN=rsllSnN@32%^ zaIQQ?@KKyf+o7}%_>;39#th9IsmX`_ zu_AH1DVK_uC{RhuHORKO)RL56?g6;q8U_*|k+4hboiVBP*5Bzf$IwTAXUKWW*+ctz zr2F)o;q6r`-s{sNZRWpPKE4!B3l~gve(xt!8r--r4qK8Iqncd+*YJ?>l?S?F`}RwP zo0EqhB3eWFS^mjuGPxVZmA9JG%z!qQjpR#HPU9w zjq>vL)zSw3iH|vJZLGcQeOn6})-y)ud1GvkbN4@7KR4R#55&4h?ReIjI$}-XfPBF< z0VF`lOtr$+uln~kiN{R{-3#BGiI@2p>7i*s!e?>OD|;rFl2k_V(Ouq{zq$;0NMSgY z-fo^6X;DOTUnn`qFd_lZ(cb}GnK>;VUC_oL7b6v;Br%57vi5F*1ZK{Q4B_r5pn(S$4V#=QfgZiF;w8 zDcJi0JhC-7Khhlcjm-i1ssdeXq9CM6)4wJ2#(r#|sPb!KIHZsgIp{c>O|?kc?Wpon z+oPkhbqmcAgu<;)@P5;dw0|QF5Y9rq4aW8ZZrg$DCis~fNPs4ak3i@*Ey8?NdKaWh zPTn^8Hfo;7qN) zBvSr`c+`urLXgB4qe;~I%=*9?fr&b}lXUgxr#DL-3Y!sd{({d?Apzog9~(RBRSDf) z&wkCkVpood#+p(@_=TCD82e1)5Gf&Dm6mUGpGSLYf2-hOQk40Xs+QPCNu%;UKXay=s>?xGNm8>YwKGbn` zg74uO)%06&*;)4O{=+QYH2KkSg7FT^h98y+qOsH5j}tGooErYKAoD>V=zb>fbdDE6 zpZD;V2spDS<=~nmwMdX(D!%=h#8;FXnxw?5`u=mBN+uOeB_jN{=D|RbZdrONbu}ti zl7HI6Mc^I@#5DlAb%cvHAlN*C)$WRSyRyZ@eg!#PFW%|w&&lQJ z?Aq_!nz4w#whb#AM(rD?=VGLC)sMM@&q5&Xd!S2=_8Nyk(Ab`G<=!&U^i}7$HqYS+;Yyt?OngwDhH388@UKQLn(U5 zl>s&L_f3D2p7%;WPnT@${#}}jtTK~hX{F@g{^ig@xm4Vz!QMcSzMjQH1LOLvAUgiD5xI2z}4RFDGOGto(xRNRb?1`4y%jl#h*#6rv z(URZMSv+)rv@EDdMAd>Bv$kj>f5cz)H^?U3nTwXWSV!C6P*{)sby-tr~&n=-{;u5+LXBZBi0C+CZ`_S=%G4q9A>`Hy>@-1g6?k*RT6t&@*Ja zIy}hQjayGobaJXh`o~_Mf4yznmBh<6GW7oD4hQ_c^hcme@aC^&ywN>Ucj>$LNOoGy z0+BD%UAi4(eyW_DN(y1rcnB2w8AE2bZlb4G#z*&)3J%w7Gx=`Y7#P=<jq1sm1v*#ApFhBu=wFJ9e){ zA&ER=pZu`&X3H=y%?}oQ_6Tu50bPoU_~5VPG1n-@Z=5KsB8E?>MR;jed0NNg~7B$@$~50xjqI-;v1x7kBN?k0c>q*J&S{+I1KE z0Pbg?OQS|sGC$w3)?7ojNCGX6hvi#ykCfF{j*Jr5Z0y)GlUdP^h`J0C_?h0$7TA)6 z?_x(ktl`$q!D?EH`naA8e169Y=(>kDNSNAb)aY24HMsf;@|&_R7kS_P*by+`g>Tx` zryX{mE!_V@pkLN@AQj>-9p%xB@K)TLf_6UeQt@U*5QcW33Dz37iyV*tl_%uK#UioC5hakQNLixqHZ)hFoFGLK=80G!8k#ie zaybCFHb9qabAUD1!}rr?vU z&d~lkD$qQx)>0Dg zWhIz6Qfhj03B5f&kYp4j4s&ziC2{N%wcZ~u8xhpJ`Y-`pkL`f&Ma6$V%R*Y)ws^80 zow?fPm7Oo2!_VOR?<`FUS9gVdXz@7Ar~cinP(Wm)O+b@zrT-|p>z6Aup1U|iQSE>- zU?0&Q=q84++XS#ocby?m%uKFCgcUp9pz?5IrHG`{Hw09O-C9S8FovY#3x`2d$n^utY3c76~_OBBBRe_ zNNW4kA6>uq=k>roIkJ==>ehy{G1!j}{|)oje{b$M2j>X6E*ybwc~M<{&r;5<=B%#l z&Y%8YzYYC%Ro92Bhd(!cQQ_O3z=aEVu{u^-5Z*J4u35j=wB#X`vm(^du{@U#h!~DJ z1-MQ?m(e^*jMOAcdxZum;Pj(tGBhc)N=x7Ly5`%Gl*l4EE)3BUx(_89iYuMBF1xeD zjT`NcPA2}0K9lgfWpPWg;2H>$uQSlaIs7_X^d+9SIOmoICNa69$B*+%v4W+3bEzZE z+o>M|ZBqNTq-Mu5RvX%wUa)@%?B%8%<7Z8MTa7!Gzsf~|dl?Yd1?c9)+28rkeA!8K z*-H@by2wf`%Y2Be*%He@@c5DoKmR5ur&28CE?KjfuP0~m%8^=dds^C4!!R%5ZVt+Z zyZa}=1+Phv0F5PoqEVf<#l2h+{$PLl__47WZc+`?TqwhB;LY+;Q2aTT%wijVMYcf< z&5%RjNnqt<+7PYi$yt~DS5ih{mNBsg-&wQF~Fnn^e^7rU2~(y2%J z@SQh6Ye_vEdurVYhIQC}G5r&T(&8@F@xS(^^pxvy>7i%V#&1XY;Mx^34(>qrOUYa} z(PB2E9W>>xy-Xz5gGweTjkk~#v`Lm4>#QYPtc0atFY$=3Y0xRUJ*VkkN9(W%A}Pe! z2kxuj=O|GSt`Lv4^g86w zjH}JU;K3@Vhwu7sCxQaEI!3#H2}9O-49M3L=-zhMMQ#@PE8o2-raB6lzYUTU>c*|2 z&Og~)$Lm>wjrab%9V5U2)42#Ut^SpfpyT&VDDDc^>hV9GN&S&7PF zyQkjBy!`iCm$jrHj87}Wa|-L(98Jwsiu)Vj`U2fH>-yZ0 ze!m4-mECr!o`g-ykE9aNB{2j}L+(m&|HNUqo6`=H>Rl78d4kt$9q?TB*|3f{Q zr)mjTb8+nJfLTD;%OWaoK8h@&&lpd7oK2RtT)!n;-|98lB5dd@%%RPSC z+G?dbez;pDC^wUPKA4}LNvu{7@jSMzc2#23*6M@H z16)}4qE;|?&O%)9UJVkUuQT^*EGzdKIOF=i63`ZWq<+~Y7dyST9&su9EYGObsr^9e zAi}K$!?MGAR+PNo}6vX8_lIb9In#!u!CypDr_t_ceL?sp1$9LW#iA7D`kMIVh` zZS-)Z)f&Gp#pthnlTBRtu{`|k`aXT*>R-TrkCw1^iW%u6u2p}p-p6r?S3Csd8w_+A zsykKME4ynuxC(z9)8)z7KHhz3El~`^m#8-^5yz@f(Ss8#`1_=JE^qDu&G}MLDiB%s zvK;zcvx=V+w>wb>a6^D@O&g)hajDEBRZ;zu36FUpJooo%&XTVVGml#DK2fdS{ZZY0 zZ9c6-0g-S*`3dJ-FY6UQou`<7_VkM6&iQf$497Fdk$LJ zlSvNY$*Q$>O5XS#`JFspv_$cm3)-deplZ?xUI-@a7_&P+`@ov zr*6+mh^K;Rc1w6jV>SUmpy7*^q(Od77S|I zWsk6@!at~w_Jk;k0B$(Yt@)ayvi_CVdwk>XQwjVbo^!f-M#lS%IWE0BZnY~z{Q3*g z;C<=&@!rM@0R?Dr7c z!q6=`p-YAjyp!;rHVMkY68o4nW)}po>_J<@3n-@NXSgcDa$# z<yM&)QWMuomm;el zX6<=uu`(YLd7Rnnf&2A%pbN8Eh=BX~bDxD)F$TOy3OsqpJ)=u=X-~%Jq+NA#xUFSO z**%Sfwa*B9Zaok19An_VMY9hWFZ!4dfNXi$b9$#bdBs@J8i-YUAk7^5j&bf zDcnIP9)2>$R})oF_a4x-r$MKRCypB7xyA^v(1@UPA?g&bYJSYNs~Z6U9jl4yMWTCMm1aFc*8Pob5?L-k+EEQ{9r2rd_0 zw|!zXOFxXpWBn0IyQWNOrw^(~YS5SP*mn&6*cm@FLVsdm4Pw=@T!gZl((l~O1Kebw zi=N0tHIWk982x>|tSG?1S8pHN|CaU96xt-^t3ecEbxVk7i-mhkEOa#P^jW;{-4`kk zyQNnsZAMZ_;g|g+c7U4#bn`rxvR`f!kwC3I2eckftrK%RLiwsnqZw$+hktrv>9s|_ zGhKRr>j((5YS9@PAmw~Ka7kx#BtIE;zG0T>1D~Bk=0hsbWoy4M&~lFBp7|B#8K~KS zfZ=M&T&E(2nua<1FGV9H!|za{&kI9QE8)0~pi_)(u7OKA=-6cTJcZ2$I3Lo0 zu6*Xr_@3AVN_@!TsN;m!FE&lHr5-OApMQ%4S@)x~x#m;DS{daW!d+pQGZq7-*yqf@ zs$YjBmo#+!(-Y_JOab|(1KpZct@)C?E?6`P~ zm@4#X>&<#>>(P<%lyT&zIQU;JGzN?ZTqSR?L~$IGU5yhRgpe_DE=N9lJ=}f26A%Qr z;JFM55Ui4a7ib%k952*#seNO)RxE9!u$-`rhR~p_KT&H*qP_T5Zgo5`VbWH*-qPHO z7?!nD?fY$NUoIE=Z|C0>;Cn74-z=cZ2D&Sx|9mZA9{3x7CEq2jZTpnv1ig8)Ay8WS zd#~EL@yurBTp-q%_uehj%cl~i9xIHDHf7p&lZ{3fSV0;b=@$gaFjLmjg%6% z-&`N1>rPQd6Mt*jr9}+7uj389NyCjh7?whZPIzI6I~*QLC(2=KyyM!o27RNVE6}yhOz&WhSIpD>^a(U_jw1a_o@tfxb75N@vXT|BJZQ8wS$BzjYI#KEodyg z*wF@efCqC!ysJu9J;61z9^mEzUG;YYSfSlN`A0NJ}$T%bgAnTp<3+sKS*vB;t z!93GI4PC+$xp?X->W1eMEq5+rVzP0$E0T^1m_j(S*95qEKsVf(2dc~X>vSE)i7eEI zj!#&e3_h&3x{|zWG&=*&Xi|xowVlGVG`=MBlK2;AKE24PgSw&}ui3BPwCf%RmL~vi zKG218%+U$>XBH~=#y+soG0KXh6SIo0v!$cz)JFHoqS{Ffp`U1zG3F|Pvj2Hf=7g(~ zrfYk7Jhr;rQSbdO%)%4EEdaXXTN&7fq=_`gEU99DuAtT|hzJ*-6Dl%%HF4=`(%$)F zj4^2^Q*#`#RSXWOXqt-C*}o0Xh#VQ-U4BKWc6aD=tPcP2us^-QZ?KOu33Z<=SlVto|i-H~ZsD69s0s*GJ3` z;2s|&-%_A!dckIUL-J43CIwAyp&|U{rE8AhZIT`PC0e^puN_t!jrHec*M>Su=y!HI zpE?RMr`ArL`+Dn_Kt78|%J(~C0JjY2+A|ih(^P@*A2F~?{XQn%>1iqw%vF-jl4}!l zmn^j=k)v)57vM>!ehbK-*R*!Rw-?tcvaNY;VXq}O9xmTQ0l45A911Rp=l)@i_LDFmvG7Edf&|*48^!#IGy}DO`-du^dl1swH1WKtti}4C zJOFy@FskB3u+n*Xs?b=GW{Sd^PlUz<&OIvUqf=s`pXH8o8I<(s?Q3n{(&*9$C_n!P z-Ty4ee5eMx^V9t>RS9@iDoKej6v*%C7*CW*sNNwe{1c*!drLJ)`ofeVU}`5W5+5ty z6SVZNEJduT=%tHdmMSem#(F8E3*goOUAf%FKkj*T3J9-L3P|iMl3S{>XX5Z#`~1lY zSQWNwIR@@T?Q_pi)>?!$mpn&RTAsMakgqkQ*uEeC;|o{VW+kcnPmj<`l> z1bB`Eu9YDH>KdZKoE*4?zJO6bendT)I*(K1Fxl3c|2q*;ssWvwS@6eP^Z_MvrGsmf zztuh;5tkDB<;vY=*RV zk3+hr)CHF=6gm+Ch#{%tLawGnD~&`d4`pyk6{>+3UcYA(E$_}w0B!@&&DxAwT_0&% zR3892EV)q#=Tv)Dn_Y)|uqJPwR0?QB9M^=93xp_L* zb|Z{4MPQ6pJVekPd5-!oVzq#}V45QQdO6*l+S@M24(x8S8{jyAYZyp??AEBCJ;%tS z4mDC~GL2)_i0#O`1^ceIPUg=_j7upiY5bYXsJGn8J({j{lbWVP+9MK466G>=i- zD*b?>Ax_A>ng3uGhC|VxLM_kovaVo|pB|1)NV+TwQGGIN7%jb9Bl6Rr;`-DG%spUQ9cN;n$V7aaccOsQH`z@&98 zABLU&>(BzgZ3nu-Po>cI)?I3khC`C;MEUNcYeK~TeGL{?ZtEmoMcn2kux=!Dj&>|h zuF_iU>qY$|T=<`*CemDEt7P;?84fgAfZG9d_2qBN3=JgbTLSY>_9r_D_;B%sGcTEx zuDJIjQb5QeqaHn!VLK&_n~0iaEbxv!NKkDv1R09mYzc?NMxI zXZ+2}O}8~a_50zXn)Iyiy$cGp?O?3uAU=F?LD~TSK_$w|oK(%H)YO`;!i54>KSgjUSDG8Wkw?V@dUum0cstDQ2Yp90x zhb^lX*m z^sHe(Sss750b!n)&q2BzHxD- z@AzvyP+r-mpQyG{KNnBP1pO)soRr6WR91MxJ*%Ph z1pE4~6e=U{|NU;q|K4}o3v{<@*}4Snib4fou}+^!d2UIwjW}3ayR)k@9Foyh&?`)h z*BUoO=VwJSjcLB3X87NA{J-~af_u!60KNWWGn#oO95@Ji zNT$_3q-ao!JB>WLE;nO*Y@tGR7`0KKlbsEJJ7bQrTD-szvOzOmJf_xfFc5$7S0`JV z16;d;-&>9TAJ`9cTSiG*krTFRwd3q7hhE=kAhV=&&GXK6;5vY9j)S>2Uo{Xh4A??)d1x?y5B*866}R%UuIrv{d@dYuNUjp(S1iIap zy$RoZk4~>2Y_<m0`y5;Tvt0-6kkW`m9&mIC-wB>mkj~KP!!JDS!p|1 zkZEDUd8k&GWrPeNGe6dUFP_VD4>JFWVkDvF5%{M|FY)pJcfsR340N&Yr+P)^{GwxE zpl*bQw)ss}r%tZ~4aeM=99VMltF}km7rp3nY&dwLEyM=tXrXT{9w;+?l2`6#6%#BL zIKXS#e}4#IcLeBeH5r*}LMb|5swB4h#A?0n$U+mal87Z{X!Y|PVb}+{XHspSv*366 zAg6?tV9@x~+U_z+;I(n85(*yw3o1SQKlgv{V;u#$EZ8-u2^d&!dm@fSGcu!~8$G5F|8E@r_xoC_Pfik#Ir@GI$15p^kzwElQBdhJdE9nZ9HJ5&a9=V7bo%{0ztG}RQF2x z^h`z8>MFgSUj$r&tbN7X;W5ZX!oKdj(WfMni*XMkGG#P$0b7v!`ZUn({1YKo{7UOG z4KggTH9PaD=?qlYBlI1-^j6XrMjfEwa?K+v6~>n6*Y#8Sl=?O>k+5%xaIS)&@8dse z*_z=PfI9=>r;Z#2|opIOq~lyp$k@!5SC!sI_+BQC_mk+jGg^@~n0 zD4KAQ);}?a^y5svK;2%qP^4L-0^C`kTXUIrM(7cR4N6Gps_ed>ia?v=$LWj=6;M`N2}T z=5gSa_FshV=>dKdyMmx=94-xK<`5bcux(9jTPc`xG zfFYGYJdPqX2=z&|lo69wWJ8SA|6-*>q_od!rz7Z+{`C7jZ~G74TPhiCz&I=dU5sCi znuVi|UlU~>K+=hU)1eAI#qD9OMYKaxgy&xs4N&FZ+mRR{T)s_!hI=gg)|$-v9>0EL zCwMg(J@d_siax+y0=g2NrsF@##j@*BpZ&YMHvaqRe&uItBTd4|_P(4FJH|rW-CLxc z@5?*TvDAs*c+NAdxm2?yOOU0Y*R^RsI|ro#+-0DPOw7>yF63ya49$cDO5zLV9DG>04>U9GE-k-c?Z$#_uASq+snKJOqII6X=E}ZP8de zQ2%7NQ#nCubZQ8QMJ#Bx*X*y#OB&wenEE}w%#kof|7=JTSxNbu`mwe7FbU=9Onzyvq-U}^ij!Yn8kAJ-R& zV#qq(jPwB5U&4erH3uHy}$o34NqL0i$~uaxh~5J^^_Y>2gc zQ#`-fiS253wthAYkAY*G?3e2N6!B|;?kw$lwWp%n+eb?xdh#<%KSKL_I)M8N=zb)< zAT5d`FciDR{_%7gtd1A*dzy{mq~R$u%g;a3<$f6H6C*yzY|_0lfGtP+z`fN$=BJ5) zz~p$nZDgSRA7Ec@6X=Spetil2%Xg6MVlE=5jHtz?qh$ci!WrJdqZIJLrv!czG-0bd zW%1Ph-;>gAlg!g&0kP`=H#RR(r6^=x*=n|9r}k zAl{DG-Ek?uZaX(vFaP-iuCB-UlT}GdnnXR;BbOHV-Ux9IfNqhp|H5Kgf{9%YwfzY~ z?<8qwJ%zbgVCLVC;wFD+Q(rBh+2g|dru3&%t8wLqpYdb`Spp=yn@iHzv(t?FGlBCA zytjk|hzIfUjT7CEYYpb#Hn6pI)YEI)Xr*=%y4GF>Gj0*J^;JFC+-UbPfL52iEVGL^*hhp#6bf$BKhB()6%%2my6H<-h zTzZFGVoGDw=TgePLUQxO6eSgDOj4nU_1+gXJ)eFzep{D{1&qTn(4~s#lu&&q`9hEW z`@R8cv|;_m5jk?mJ9rb1c#Xzge=SlpkuJuYP~*4Vk|~E7M_2AS^v6Np$FhZOR&r_K z6L7BxGQQwi4iX?j+csQW8pP-`eg%DX+Q0c0&?vt2JqjXsCDit9wthA?)b)IHEki>l z@{SGceWH{d+X7IZbfkwfP-i_ua`UkP?kUhM8#cK2rBW^=nBSEoD$Eyca3T`H zX)IiXnh5qWp_XZ&2dj@oE$RoPG90yU<3d&;0Qwgt;UwqpX z!wjFpd=o!tD|L3)_T7!VM&HdlQ4Msh?2m*LvG1F^B2!^IW0XM@e$fH!!<+-%VT!L~ zghx+t^uD>do}cSimhtjLDv|dNM83U>QLC-GQH-_MsR&OCwdjS%-Q(47_$R2p~67lbkF?P_gqI^_#^ zx42FpIQlWABZzQthfb2!h9BXJT0_+doYDI{Ruwc3tLO=$y&ng}v=c?VDZn}aT!TXb zG`-LMa(Omhg6=s?_E|gdER$X5m5kQt;0w?8rjy2_BJNM*g)(a0@VA|Qjq$80P=_xS znkWC@v@m9Rzx)0bS9Oz##WXyZzo2U*(9m**_#ljoxrSkG&FolrFA>qx%Fk zz;vAFFUzWYYUIX3!aNXGg*R*TK9*R^Hoj>pR zg<+*!L|$Q~q~4i*j3au8)y-j!OT8P6Q9nhnyG_HXzBXaVAAFp@k3#7gbjE!TaBqO_ z31R#GC-tt~EWKTB)>QqJf>~4l!`m1%CpgwI3zY}t+2Z5x^!e<*<4a@3+V9V>UU>^L zHgOxB)QR5Kd?lCj1h}_Am#s849ZHHRCqGnw7NPOjru1mpMLr@xYPvP^2gmv5rj-ie zyv+l5rh>B7@stNifx-FC=RJH(bq4wy=3d!O9e{fWbhpsvkh*W_o86<^RoD&J7U%BZ&gVqSv-^ILc7lwoc5e7$FCGtohCSo7cF~PlW$ozc(x)h#u*>Ti)+X}UPFfHotm?QCd?@3et*v`;OJfLW|A%(Mq zN4R40XkS7JjyowRwN$zDTDCH(B9;j0TdjX1%K*6lfUf7$`Qn&xQI@;Yvh-KxVjnTx zGp_^&nIpA#WX46Q&5E>I$AO+}Z zjv!Ja$#)tItcu)I}kDZi?-?SLL zC9rQ>LAUyJ6po?*_X+4S{t%aW!$*bu62;ElwuqzMwtb&!Q?34G_RIs{wg-EE^3SRm z?tL2S7i7{8tt$eCWWh0OJ~>q5lZ(X_AU%5U9Ds~3xMu(fkWDb0L}3hB_9p>n{0yij zPsDWzR?017K9%Ru92n7h3n}Q2oxFV=gs~H>HKC$Pu&OPtOa)W9QkH8;kFvpkf%hG7 zPX-boSklD~_C(_IvY+VE2BREGIipwxahYBH!#qrRaE}W#B?|W$@VLxjP?`6oPHEQN zoM}UM>f%B8TUj@>4}y%$KnuRwR;ytX~Zoyn35(}~kFM-HauC_(*`(zo8Tak-B= z(JY--FfffIALjnv^gJ9n!Ptg%y;s$-b#$#m*Dm7$+&BOAY#{+^a(=T-#FY9V z&sEqatu>BAGorHU)Kjum^li(8kv(@%wX%tcMP?56>z2wiRAOt`M5qNkb(|z8>W4{x zX!*!yfC~k5tEA$Ee~Uu7Y&FA@+c@*L4_M_?%b;ufb0hv&Ht#X(jqg#v5F+jy=In@B3txf7t#-18|{%?&?sySn=d_^svBLaT$?GbE8{e_u>nDe+^4d zU~qfvyQ@x&h%%<@qCfC?Fgupt(zF>--{P>>=OKRQKlb^AU;=PqfUW|jTU2 ztZV=-2bY(@?;8JM1&Sg$26T9F3T#wtk0UM(LBk)^2iGAsYB)&9MILB$AFg0n-~jWXBB?e+D zI$XzllsIF~B;(K@&x;8`9l(7FGSD?PPx5T8Bk{l4?%UA%#~HXCP3Ey;avo7Ec$tua z`F@jSeN|L*a4NZ1hyIAYneY9j_KZ%hcfbaC%4 zzG`x?XpEejT#VJ*lTa$vME@+UhE^aQx>T?0DLm0rCXwKa46Op>iw1O^f=W=GlcZo7 z+bAnWvrq%KmsiTs*y=8cb7%UXg3(b&J{M(d9c=s~NqerUv1WRcd!mql$8npKRK_m+ zb6_m=E09*{9>y0r_G$KYw_Yz0%J_i?qv2f(^nJlJ@P{#Xr z-%3eq8)b346f;U7)~xfA!vw|nl$C2Va?YdT53|Vj;1SXV@YxvTbHfC>)djpueHG?v zRLa`sg8SU7I!IazaMTO%QJie`q0)AzRc247A5{DCMT*MGTBLasf52;$%SbnU#OA;2 z?(xL~_lh7c7SOeNF{x|#qWk8B9k&9MeuhG?Ig@jusxZ(armO<@hd9#%yNp)9SfsU* z>o`~$-oJBr?yWUN(wKddRYzNPqzpU2#Rj_Lf#hq8ze7@`?I`Mpn~El$km$EU+JfT5 zF7h$f*?&l=5NZ>Zmnyb>547OYkGGX`O1C-;GxClZ)o51wtO>GakO#Cb*>~p=j^}3*D4wL3~f;*Fnj_ zyvRxpIl#pQy824(vZzv3fkL^+L;6>FZz>zJyWj%%?me^zB*Nc@tVgLH?*VY}fUX&ue>%|*|6d74iOu(ZA-;@pBhHHnqOy%h z5C2Mbco4Orn;`Z*G=X~a^ZF!reuo7|l%KygHvaD52NbVtb1`j7zmM;OCJ0~*ipdH$ zaM+yyE&dDiY`@!ics&a54h1dV}_ujUSG zWe?S4V^}Iz=6)e{0u1zf?5j}l87yR;5dvMxyqU;wmAP+FJIf?0Kirtfy|JUt%Ifr) z8YB;mrL%B7N^oBYdZ|nvGTq2-bpk6-6ujBBM zm$QfKn8?)KvW2^{KuuZ4XY9O7m&GYSXg3b`I*QZBAlI|Iiz|M>v1xI2`uR0u{j%4v zpcAGV;1UB}YP(DnvEQ{JE_Iud7%l?Yfy%jOc zQkLEe=6>SQ^<&QwG^p;d@Dvr{=~zUy7Jw%=wwrfb|_#r;Eeu`~) zG7(@L$bc@Infko*hw57S_Gn$$sD@PDm*<2ecxC1&RdZ+9KUZ!r710FEqB8Z}m*ZXJ zE59_f;rIumtlxGq@hpEe!_ftwVL|2tIneEP#LJ8&?((XM;{kmN4}%)F@NCdEI?NOx zx#>sr)G;hEJVTFMD(|E#=7BBt)LNHAkYrQ8V2*0ERm?0B6RQBY6hPN3jgM(E9P*qN$SIa;j#H#|I8b}p==A6Qoc!6^H$GFC0ZVjShxX2iI8tTeFGv}Z zEeXK7kP_&oiczADZO?lI5@3JILCsCUv>Zyc;2>*wRVWh+OO68Lc&&O7@rWeJzPe>J1b- zcNnzSq;EUS1k&$C9XI!M(8m3#zr_S5`OrySzmBY(1y-h-6~Ltiy3LALaMeQTu8R&o zLs2En7;WoJ&W-a6|3CKL1g@s<-~T^NN@yk`O-iJ>sE{HN4Wd*eO{aO%EJ>-z5Dh3K zg-|kPP9z~IkrGK{D2g&v#`wL~Y4>g4&#mA8d++!Ez2AF(_ngP)`C0qCUwggR+V8dY zT5GR;kd(Ohd5fjQuS%hg*IzrYlLny!q3cQ{`S1txJ1K^D9sH zn;H7Z_MPH#`6=ca$2KrJLn^xK-CY+%*yf&=ll48akb+l$@=vWE@v>0ZLr4mp;cxvxf$mrC*KMw0{OcZgNyJw)F_RgS$9{dCc-eSKSRcO$qQyv%=7VZ0$^i{>=xLxjh z3q`kca#v`673qFU0=iu-a=y!z{B9Mg?rIdR?)qt};!(bN=dT{dO~vOWK4oWP>}2dE zB`r^=oL5fMuK(QjXvo)X4ll3sIhG`i9YgawiS9S~@-h>dO=j)}E-BlsUkOYKKBiy) zYgln%$wm|3yOJ%o4>BEpkJ)?0Wv<7PtmZeFs>_P_VtdRcze%3-`_-Gn>Gb(xGTpD< z;d`ljxD8*7`NVv5=ZRlupi5Ql&fwXqUM`%gR-ec4mJ>A|8Jv^`f^c&x6t!iDH|Vhuu6M zRunDEnUZ7}sJiQ@(>BJ>h7qq8)AzYl=zi}U!7rv4D2ED2a7=tVWLe=exkf&b>56$P z%y>F?ty~={qkVEyYW(klZ3a(ubhoXU@!pZgJBnk7@1d0f;)m+ShSKV*O7~lI)+2xX zTuYvlJC8>!DP5O0BwkM8{868e0tIeE_oh!i|IB30khh6;e6GT)zY8xNyDceZ=f3vq zbE4*${Ls$(>@|w!SB>uXnkScV`*`MCe)aicXrv;pB|Lj;T+8o7D-yHcm zOYiQ8o!*8Ey@MSucfa$FzaWGmric55Y5M-es*c~SMZ*O*-ZxGPJLPjX zXX%>dn}=ptTzXu+*3tK2wCH{V%KSc5{W|{G zRWc;srFF^>@#?#?om2VeDgBPx?4_@gw&%2Zoyk=vFu zzEgECKRl8a2W`6Fj2WlQgdL8#=6qi>*P0teIM>R=^w_pA}W8X7A{tqqfqK*cITX_N!P)y1MZ(P=LTIcTvTnY zYb$uo>8ISV91~i7_2_>8{F#w%oib5MzI4jRUmje9}?c z&F>7lUz3YlW}0g$ymU_pJ8dW}?fI-b{+Hx8Evqn&P*kND3#C-h`IU8Ws&KX`z;sIJ5TS&E(awk{TKGI2h3VMm)ALe^x!(HR@}+N~qVS+E-3S z?Tw=i6JnxgUJa^0dtz2ZL$})8Ihosx)fD#zm$q|P#HDG-$BIt$4lHU4D5L-W%#iNa zcdy*MZ^_$Mn59}z*y?3aQLu7$L;GeO_jk%3Rq6X@v*~`{TuuM7*W%``HFK2Azlmv<-@H&0=vwI4V6@5Aho^p; zR7}WC=WmxRM=@@dpmGkSHIDcfh9PaeWrTT$qPhGb;wIu&4-)>Kzhm7fdKLvFh zV$3L1TzRhT%AqayZ>89MP#7J$Q?_W2@!exQr^arcyZz^Jjy**!4!pNEf8VWf>{zav z^};{*N40)Quj~v|p~Yby-LHL6>2>AF@1~v({B)(IgB$;{DgXOWhuRJGp5yQb-yRG6 zc3Yx73sT=P`= zv25#3leQ7es7C!syEGFNILqP^bw9>Q*=BY)jEj?Ab9Mav!smD7M{_U+?G4R??>~yfbO@}cX~jT4m9%5bPm8xVKT>(L zeT>}3Wuh;~YBv`xUT$>3_=`91uiRfEwda=R?BvR1OzO#QHaGMO99z7iiQXR;(*1UK zyw8+A<`VGT?kTrXL}V`iSW)tXCsFs#Nu$YA$EQBLRQf_~ ztJl?%QD~IcH+n{{&1RKGrHds`>GF`m#=zqc+%;U zF$Y)SpGy63dZ&qxPb(Uel^`%>AgiU#0rHdppKd44a@>X7~7H zT*l}W&4ybG*7Jmy+bE5?7_xD<41Xs1GYozG!Gi8rC`?28@@WpO}n+_OBXF`GOxI^cB*8p%l#82&)i}frx()KQH$t) zLn`v(rq|V|=^TV8Hn-x+?jkn3}I$MK6v z3VWwVW<5;N8r%q>18HQ z*Lt7Ze6JHDZ#~?kT00@&q-WCj#`Q}a(%0Oj`L&_@{j~JC-KV?0S5%(AiqJVGppmq~ zVw3m`wd-9au20TH?2+;d5@%*Sy!9{}+sQ}Pj+79$So>&1F4wpQORrS!*lC-7 zDYpeyYJWfWKJHFc`k}G(eGNOh-?y?$$Ir1ms1TUA(z2u{$MKcjI_u{9TVl)Vi`pYa z3dUJH=l#w*{M_pk-g;dNG^#_MUc58JXRc*#HRJ7zk>ecc`*O?Zey!r{h z#%#x-;*L|>WLzp9ujdzWc&tCVSKKga%a7(Yh7#M`ZL4iQTy*sMF(bL~ z`@Sa6_FG23)6M&p8CQAK0tez3@ZSQEQ*5EvA*O z2Sv`xF0%Zov@^eQ3-6^vU)nwDMntA%w1%Zk`7&nZk2Q{7Zmq`I2O^7K9iaJLLHC<& zb7+!Z}8RpQ9KZt~{HIs;>Wl{zl#ctweor)Gr3tH@gOz3I?N zFcsKv@5#(Kw@M4Ew=};FbiW^J3M$3)zsVla+WtB}_wihZJBkNu?61qTEm!mi%_Z#VBBzNu9DgRX`zPg;b zFlQj=gigYtK&#)B6)Qe{$gg z^4pre``D50S5U^HL3Gx$n1=>0cBuZ+(oKF)y=+0a*QWz@ymsY@!cX3u&kk5&(Gy025rB9Hzl-TVE>T~5>D!w>v4$|XBjc_g{`h3s+u9XGNg+}-MA z{=9YzYf;H>dOw|Lad4sgtxmgH`F8vW=Xn#N6->`sJf6Xu_+WLx#kbv03(nQ3bBc@@ z`n3Az>RZzF+r!Klhb1=6>lqfuWwr3+?+?;@zuppvr1^EF``u%yKE_Y2!)EXBy)UI4 zatsRX7Oven`ItzQh1TeaHEG;`UVSq&TCRAy{AN$p)vu$EBvq9175S;&zi~Yxe%XR{ z`tO36biZzK=Bh<exsw)_t! z?vpNDh%75~Y0bVrgK;@Cx@Pz2=fI>45FsU9tpx7Qz4x6@ zpQ=6bnDbgyoGHz(2i@;xt0_(2ucg&(UF$YABykj9{G^@olRlVnS}bonTBfZ&&%w<> zs(kOIMLpsHY75>tE}D_VKWphv`vsCRlQNUmm59*%deZ%lJ$ixbD$myXi~E+fnP_V^ zOLoLWURMZjw&h{+xa}6!l`eewVp3!A7P-S|tGMJ74aP4X%N-bNZ;@)LA2#xj0DWEJ zMfa;O+H>9Hrt-<68oAF6jmI|)aB$iIYZ(ObQ?sct(x z4YE`wuUu;1Hd8>^_VwCXv&Bb0Jl!(?G2g_+^yfD}y5FR|tMf$F4^+HZ^85UZf-b&{ z@62Fk>6dXTRQze6Uc^D&hRQsvDEz^yW#tb*pV#5o6aK<3)>u zKizN7b4)!tcgMXeF?fBk@%59*@sl5oNT2W}=F_CA%G1x+5C8hB;bZpc+3_zP*(MJA zR*)k)OHJJORjk|XM7w3V`tv9|j;ETvLE)8^XteZL%eis<{atLT2u&8fSfYpi+Q zsG(lsl)=g2mp>X*AB=I?G6 zR6AdEC5RS>K)T-_@3l7v@>+E&dM@8sIW8^C*EygnBeRjSLf?D&tJ!sY_beyeD|p@b ze#y!Ad}i&PMYn(Om5Wrp?hKJ?bu!>+e?#*dMEASn(WdC_=jZGcHW)K5VD?5cuI-*- zR<}a!M65)aiNi-4sCX>Mtg%Qe|0Y@0oly4pvin2L>1qBo>n65T-4ePS_LJr}nC>?% zF87y~PsHY);;V5*E3TTqp4b*fz^ zn=Vc==(L{~%vtolY8B0I2;Hx_+i~?U@5i~82_x2*O}`>>C{ko*747yp;_;@r&j+lwDyus_3KSExfYAs_83r&z%`Ra%aY;)DKw|XZ)IERL=yi z`Jp&$`?FWq9rd&}ISk|Z#cAOve}(>DFP!f8Yr=y2;gR`2lG1!^f>yovkPxuX3B6zX zR)3!OwIO9D&ZPzI7f(rCO0u0;KYNa3k;O^X!2BM`Tc;Ab#O$}6wV6z-?`pc=iZzQW zyyTd{ADQa+^Uhxt*4WoH>FZU#!i!^a^y6#o_M~5ZdH8Iie9zJ)+p-VKZ(sH0`Uc&@ zYrpv$Ei9Yeq%Z!N<~M@wS8w}SBSY(!=WSKtQWL6^62=5XhNcKl3dy;Ch9Nd3Gf>L5 z$@gulOEcqWEK^VI{JLK;>4NWyKL_gX*2*?Aa-ffAYv_KP&X2SSjn=sT(7av$R`Fx+ zV;Y@4o7$e&@3~uaIwthq(U&3{3|d5-8zi2uT$BFu^Z2AKg_^wPzK?D!+cPG3>{oh! zh@|^X6kC10A?H}}A>H=u2<5e--P}v>9pm=lNegg%uwHqz&f%--$2q^+rN*|uofKZU zUbpEAPtYoxosN^mE-@ySD_9qcL z^Mz*eTs69CuP$w#V7zGRyRvg)ub1;Fdm0_B9XZ!1rid9H?@Wtt6y2|Tvb(ai-GY#x z%hVjJJ?31P=rDKRD)nMfrjE;<31Z{(epfFP{Jdb#4d3Tlxe^}FpL`xZY;o124squF zZQsLt(&*1`>*#)8KYX$7Ua^I1YV45nnKh;-x4D?+J?8ctxg_e0#r&+_>u#wHxsdfE zoB3I&eh&9$SBF@OPOBGINAqe>U~LYJ7&~H-_%l z+|E;7>cjneK1b!BZ@=f<6dGMMCZ)O7pzerQ(UalDo&|C(Hp;6%HtfG({q(0*zP|aG zCF+;?TUEXHWhQ1m{!ah%=rNMV9GRVe&sXkr&W;zf`o_}zK7KNP#0)Xp)ZpEs z_jR8x;+HWE%o)p=Wi}7-QaM1Y!KJ?uvty_zq`D9 zcPDQ~7xVJ@w4Hl$H?>(`8Kvu@A-*cSo#r>5?)SFk>`|+nqq?~Swd$v=pZ@66rOO{b zu7471I(I3T#EXatkxMlNw2RXwjxYUgbWq^In_|1;ofY|hM|rxgS#P^~iauX#p!>aY z(xTwVvh7^Y{gqhYt1<~M=vS9EFD4$FmCE=r{O z$cX#Q;kj|d-sxJL&v;k%ktI(K=;Y4(%>F(KJkc{X+$%yY2$|&Si-K zV&k^ODmlI1&$*&|V)KQ}m!IB*?%y!t2+i+iy5AS#(lvk7;}_-yDqdS?ytYK9>^P5w zdTX=h(j#|YiNAK=Ab6o(a9#6h9C}=-yZ%Yhl`2I@#j$ zDurOiThToRAClTsrD=Y*(*16GmlI?#fAQH1N0YN;=k6|;SgctvdzrL7pN@Ojhf1w` z3w*|GG3TgV>u4XFb2b0m6xob-!lLi5@d&=3IDvzETNcf4BHi!%ZyV2EV!poMt{AIU zXU6xl!eqsG$K|eScAG?7W&OR4>oz}H;N4YmT;bWC5p7Ra*Kca*nf-3xgC+GE=b7TQ zYfsVqZln7htz*@_Cg5WJh82$t7ju`bX{+1k(HXVJO5`Dzs>Okj#>MAOib^EEKeMj! za`DVP1#R62=al=UlnxoQ^=ZleKbAviez(*8X6=zW-!p7MbF8b`-8IoqC#~DO@WF+* z4fj?nx+|Oy4Oyb<64@@+M^PDdA}qEv>6`PIGcG`TeyJy*^|Egha|e+ zBO8k3a(-mCCv1p0JS1zJPsX`Di!N^W>k#U;>2w(O>gN-Sz|Y65UBx12*?g%9kTSfy zJ$7vP#^jmm&xY@5sc4}8o;I28*Q#UQg+IB^9QF8q@*3Sprqwrv?l-{93;)v0jR}gC z`}1laoSs*5-SLq__BW%DImYvE-4|SSs(z8?%16r^Uy8joZun()X4`fHJNK6T24Z{> z$0L5uqOVI*>3+pS^RFfDxD+N6Ha+TQ#Qx<=HtbyF@WW?Wy;nkYx^5ZA6a7zaE}?p% zXZQbd)#kdlE5>O=XMR(U*NaIf4ve{8M}P0MgYGv&I7)n3F>}$0-vN56aeL2TH& zH$T1GEF~CD8oOI~iPrO@-3~p!7(pRdzb<*tg%e}f@4rQwZWG+SDSoZ$o zP_3n{?+qH%+HHP1*Q(v4#djCo?+;04(wS`6(#P8pw5=AHX!%vT?##GU87pAXdgf5- zT%m0avaeQ;SW)+L-*Ln2qZL-sLjx2a1+VHkk(>K{bYaS4n%^|K-`m<9;k(nm_-&9l zZW?axku*#EX4bN(|gHO=h#4!^qV|bIFjkZwp%DPJDZ_g#1~$zWZV~-LK&d=40EYaaNv_^3K%M4?iM( zaAH9Q{soBQa}$nwpY0mXXLC<*#}Z(m3HCb#wKz4$=3k_tO1N+n{W+-fR6xzn2paJ=v)m@VwJ2yDM3!eQJKg zo#Ib%Zzjc_-go8vdGUZ33-e>9icH+lbL`Intxhp>)8f02?zc1V&-U1JZ{tpWQ8SF&BinTDo@32xv4Xt$MK!}ECniSDwy!Hl ze7`e4V}q`@V^mdZy~(*)hJEC^$#pVAvTmtl(EMi7{p!~7+=^VX_v7#>pNe1bUzoUP z;o${x_P@(s_$}h$tbC*O{k6fL6J|R3{9Jx@mHWEaez`Nm{+Cnj1xw|ZVqI7M?4bGG zPxqTw5-^-k&+h9YquZ}qUvCZ2tj<}}{6~u?oTuyZOPja^iHdcy=O#7?it~1-s;scG zshcojixGyzbVEU7K-%wx49p2wcl_JJ+3kN8tS+#W-S#x zEZ9TFQtc*3@{J(86s!d5L)+C%euknUGu(bnlL*}=2<^DI}T9*|lZEw`j8?* zJ%gD+!3@S69P=|6(F2_~kd5T!gcPHv$8VCG7kB?~UI7+vkzLtCM{CQgTfC zMsP@=vp-Tr`QAB=*#8wDQkQ^0W^k}4Gca-@gZv$~tT{>rb}~1W!iHgtWn1m!>qF}3 z?CGcCJIKO`<n&5%|X=K>EFti+`XW((i`<+WGt+ zzZ$lO|7-+EKky1tW-XJ3ny}YCeQ_jf-#+?me{V`+>Jk*h401ub=s&jC_a7-EkQwCf z6Ut=NS+e(J{@%E;&+Cr>>EGB!WcBlY>woVfa&Ni&_&bwYuCf2`x5oVM9lif|YR8(l zJcB*S6|HdnuN(hJxoepW#&A5_u;0b}ztf-oqgO)u0mGyBd66HBXyN~6&$|E7>tUbI zjsQCX>fLW_OaJHWjr=bT@4x)gN&Dh$ihBs2%v7`f@iFXQenGSfkZTKK`i3$Cv1gL=&v{ow zem=PGFoQ9Y_B=t#_3GVDWVA!W&$6On`j>oq>*DXHjnbRV|NGs)q<;BXy>s6Fyx#O* z5-4_|>XX?iI|A$oup_{Z06PNg2(Tl-jsQCX>WYr0_+H|BfyRT zI|A$oup_{Z06PNg2(Tl-jsQCX>WYr0_+H|BfyRTI|A$oup_{Z06PNg2(Tl- zjsQCX>WYr0_+IWYr0_+H|BfyRTI|A$oup_{Z06PNz zKStnj1}Dqg#{<17|BRqO7Zp#xpkOB-9~B>e7jHLDAEt^`Ad{&tt)V6zF($6#@}0+-+y{PY&NeM$Kn;CTu7rvWNCz{jpSx`^<7O;_g zJYW%Jv!u=&0-HT$TTIz_VS5kAX9;EF!|@lEg~70*Y@{B;0KPJ;DI2*I5kNjmDH}QG z4(dnhX+znD<9IPuXIsiP0=C2CBz){Bn*feaQ?_N4O%S&Ilx;a>6M`)hHsaDAHgTlF zAe}ldh&qqdErYTJQ#Mi9@+eyfWfOyKC1nexY$IWdK&(j2!eGOHj8R|>6~EQgd8F*s zlr4ffZ!~OQDO)6U-Wb?k0`gf)*(7jW!m=tG|-I1Ut3wpiFmRVBeZ zK-y&kY@{CJfgvF6vXAm7g=0r5_L-DT8n&gdk#^Zn*<^5BLB${oHvGqs1-B?0>F(r` zzNDTCVC}n#L z8~$TV2Xe5HHmIj;GjP0-igN>OBvv!Q4IGfzKBH{4wh@OgZqH|3uZqN$;esbjE71m~iftac;KL)?*ZpNv_&fDe%I zfy@^Rz(QaO%mA4$$oyal7K0_g3Rr`szy{a?JFpBa2W0M80UW?e;0T<6GjIW}fC=1y zJMaLWzzcW-AK(l8fIkQTtH68I@dIcF9pEGQ1U>^Y4|Rer&<(zVZ{R!l0e*sCpa=X0 ze*g&z2jB!;fE)0DA%GX~fuVpO39xJKt4DE&VmAP5}W~KUM2JB0dNXr0Wx1^gX16#khyXnAoJs1 zkORU&FbD-?j$96S&^@`q0vyi(Gl4#s1q^^8&;`?h9$1X)u>u0Ixv_xCU;3>)8|(plK?c|dGQob31+u{ba1a~!U=;`eejpI|gS8+E zgn|gL4n%`U5C(!kFjxb^K?u+QQ-Ly=4rYLvU=|>Aya6x*@<0KQ^^6m625!IwxB@1) z4vIk`xC-n*Ir>i-AnTjEpcLE$WNmXDTm!GbYw!YyaxxfKkQM=1AOpt2&v-Bn{K0oc zq?3RWm;%UJhpcUQ0S_1sxBw>@3Wfj%7zX$NH_!k&Ko{tNX+R5*bxsmk3nD=jSOeAp z58w(sfeWwz=D-Fl0oGsY$O1Vq4vYojfEVzAp@6KjhJ!Yg zF%QfK#$Xyy2WsFQ!q^HX;8+ewfiXY=w835q3c)$V@hsR3wt_^k4QvNVAQ^;!P!I%y z!74!3O`gC9_yTv}4N?)W9pFBA0BXQXl=%k8;rJssjbpOLB5SGLf;}J|TmePkDj@4BvW_C_CbCX41@pl?FbPZq z0>A|4Y5;j44Q?YoPr(&%5p}o#c7qJCAM60(AOeJejbH;${O zCa?}fgC?9m7wHkC^~iS+$A>@;NCW9$A~*?c7`TJugQyRAh71D{$Y%z0z&z-NpaSQR zXQX22P8125nLY=Av*1-5_*RscIN8UAI# zca+5h$5EGjupgWU7r-dQ<_*rh2`WG(xCg4h15gbff`4W`Nqh=WPkV3=^{fQ-pcAOU zrUFEOIFJK9u*U#@;0sD{9XCKJ_=)RL2V^~84!?K7El>vPKnh%CT1Y-C;5=;Q{AQtt%3wt@3jXKW+dSDt50i=G9!3*f*xB=-X@ zg3pYS-t_-#olnNlpE#fNU$WjLb1#`Y`{rK~6BNZ-TaHIM4)6oA=2`+414|$Qguxhq zOJO}93`Z&o$Xb-#8@vEjWRRLsTU7rpA$f-Y9ze?B1LXXn)OX^OtZ&JA#7@d2=Lmv6 zXJoxA0>l8($+;xoXdn(o0pepMSOn%q7Kx6Do_DrjWPu&fyrPJPy`c!0+0vf+DLsYfH^P&reGmh08GGq zK<*`DFc%nsIbb$01O|YtfAj%a3z4x!8jx%Ld#;rp1ApZ41HQlqcmprs2|R#1a05)> z3S59QZ~~5CB_QJ-8LP40qK(&U@wRTYe6Jf z10ujW5Cx(^3|J5LfZbp_*aqT39M}RjfX!eN*a#9pBG?MjKnh3#L?ii$M)HvFnG3w$ThZukKhaV3_8JAK=Kg%2RI4H zv)(hXn6r00ChHWk_OJq#fUH5t{CWmR<9xD)>p_}_^c2ViWX*B_WP>a~*2!dzyb){w z@xT)-0+zr6n1cm?ti8xO_7{8-zhqrY*0gg0iL*4|!LckL&xWFa+#@1L*CLe#LO3Sv zO`Z`205{+QoPY!ThQ>hp2T24V`TOpFqDcd?zd`moNLl1NA5va01PlfIfb4?^1EP;c zItq*gQ34bCYw(x_ca0N9i&+mIfprdCn#Em4Zgr=}|}t#AXN#0C`59 z4CKKCAO{q|B%lB$Qs32(l4osopaPTudA2?Pe>(utRRLM&lDw_(1ZJJcL;|)(1vlD8A1|I)^$oL%I-vya4Gh9)JmKfGb!676amoK>Cg|a0KKW(r1Z%DX<1aa{@$P3G4vTY{3e!3^by? z%aPgx2jBuoKH|q6xB(Iia-R~r5AX&=UkgY*BSA0-0RDhnLtp&@aZK{9qHM$-L_1!C z6IpkX6Kwmrb zoloq0z!tC*q=Ph&43fY$unBAiTR{RK^&p=)a2W zBjowVgZ*PI7C zxqs<-PExjGH2Vo0=Y!*b3h%!h%aJmL)r>ngIC}=cnOG~ z7oZ7{^X?&iOWB%{z5y*%`VMK|TB#k!9{{;VQrC~5155^=K;LsL@yQQnaANKR?D8~AZvk= z_T)%>NnAv#9SH_^u5W;5)gFc}V-}ZH(i&zzEC%L?;$%8DX<2_PTJcJDX|lq4Iq7we3s*Q z86X-tZyVA?5CWLM6*zzuzy&x1G7gd0JK@+7koQhg@tw2{v6Jf{?Y0U801w~>+<`ZB z?1|J1^w#3fAAcPC0Utol@ueVka$XP!q|#udk$}{9Bhn3ED~JMXK`7|c!*IMBgo8C8 z0&D?&dIFC7e5}JU$r}TrK|F{B>j8PjBhRJeI1Ys3I{SR|rJG^j1W3IIJ8+x?wu5^( zKLu$rNChM|y8wOcBC$w^t*<@y;Wz{A1$zL|NqZjv*?{;wh%}%C|HEfCc`1nx|BU4t zQ&)uO;73_g|Mosz{onp5O9bZ$;4*b}mCn!1lTVQz;uH`Nr0NvlDNQK_JI*d;j%u@~ zlrW|BxfRlJrCsp{XHeW%5N=D)Zk6MR|)X<_ZiK2{yEm!TZiRMjVLiF15akr-x5cKi`@yE z4n;#nmw4MuDJ9`A3h$csgm7|bpaQs1*3J)U1u30a^IE?+>3$^>Dp6j{+q6dVg-#x; z9ChL?ms0l67eDIkIn$J-Xb|Nrl;Oy;>-@rleA7z5LP4!jIgMf{BcK@Y9Z)*{P2Zxw z9I}T(`djnIg)hw~S$p;?WXFUkJ*w*$u8UQ$>{s4V%K7}qI&qQGrTq%o{SZQ)#RtkS zq|gRv7X*XLV5CA=}Sk*f>f5m3XfNitG_Qi9*b!? zpZv&OTa05ezLAeAypdQt3aNxx-qow_SIByY^u!?xZ|~2q?^q-Dw^&<4ArVbhU6!bD zZlC2E!N>urA?e<@gSV*!>h^Er*4L}ZyVtQO=esb| z`?pr*Zqz_sMVrKW@N$X~)q#76kAFx2xqpPiTMvrg7&QUja3_#z4<3WT>y`>n1NZpB zuk;~zZ{14PnK$`AFLYql06iPCQBWBCVMV3k@T9K((Hk*x&uOV(IQr{I0R<5tF_7iy z^``H@d8MXQ?vEQQ?lK>@27OO}QtZf&YMPnCl!9ehL@{CWnDPBCgcaI9w!>FtSJ zE604P5zL>78sN?*ql+aJ5;s+^`PMNB0*_b<#xXMTF$0vDt9;77roEq_cJ>?;a-~oP zX*sGNggW^!UfG#S&$uyHf+`1!i<1ipD5L$#kl!J#g8ERVVkB4B`gakf%0Zt0%-H*o zxA#g7vV880`R3CFZ={cEkv3&jfN|(-Y3;eX?ekf6Qzxw*=1_9gyd$<3FG~80Say`k}1GHDA*+^h+*$^ul&6!Uknr-^bjpghFcIb zl<5~7bTMhYczk<8BR5ABHJkY`kpZ7QGpgT~kKp>)f7b^&^(u>7W^Wcw_6Vmb!K-~j zkZV?^lcs=vd~v@L%nS@-24Y3Ae%YTRavX-No~T87Vo->?Qy?5(s&uKj##45pKhNM} zRS9437$0>pB&bZMRs-H}FOrGj9u(56#CJ_u{p@&8Yri)?CqI8rSInmtQWIoL9&JGk zFl&v*DdqZ`PrkZec}Xb=-1#0Wh4sSwl`cx* z6V_L{$g!iMU*W?ICx&v$co(G^zx6HYSH@Aw=pR4S7ne_E_A6?XQo?ATr|^!`pkFbf zl&7(7#_GH3ulFmqlrmXFQIliKtL%Qohf*mFhTtce-@${$McaXj$nQSv3jeq|(<$O^7TNGfUTsYP^=cu`@=ZU-?BT z&4%)PU2}{|`xOavT|6~M>wH{eAt1EzLBFC)DFyP}E7ab`i}owFlw!H3z1<+|!S8-0 z42m?oO`CXJN8{&x<9;O#iY$~Z+j}xD$O*UhE0>_iLHXveJ4!2~{7=8q00lcc(JSt( znrpORE$-94DwWk_Qbs%M3o33^@O&<0*_0 z97J|KF`t--rEhEHx{A3(3(r3o<5xTR`Vd9y$M7PXou?h3kaZRAxdBIimNMXI$x;R! zU0BM1<0wlRaI9h}1CIVIWx%nDr3^SKvy=hnES56hc+FArPl%)(fFR+vWXIhqW4853){!_fgdB5E7!X1oxo23jmH?ovs{sx-;Ny+^r|MOVn&~L}$DABdSlg02YoucDGvFfuT|beL z3r(P?ljkOw8Fu>C_7=LDvQ9gUi zirdTMqM%?3CN)q;9x^6648Iy)`Rpy8OQ2|y@!+o`1r!bBLEW4Kom`kfcq1bAc*x}& zEmEviC+n$g@}%AvSUbM|^CQWr8wv?2@?=9Hb({I6_;k6Dwg(hEdl01s3fYa|w$-qz z9Flhv3iXtuJGs}}WYzhh)&0a@IWVV|zO&1$kCMA>Mj?I8Ft~ z8r4IguBQkJX@&Q$%dDTxC^mwkPMSfDQ3eH5YP8kK{ST%Hy?9HM-WoJOA+?s2ZIUY< zDtn3Lja6&eDZR=vj*O?qU-t(^X z$%H~(sk};Wt@YgUf>I|sc(KZ1#XubjsR3jC)uUy`fn;ZndJ-QX2Bfu7&fv8kynP0& zHS39G@Q4mx&fwk#hyisygSWyQ)!yFw&LpSll1;REe+>Nnn8BXDOool#v6YF!9BKV= z+lf4+wXZJryutbVA=yX52tuMG2FSe-zqN3@|FstKJV({wFcgxfJAF@{N4DWmC{#Zf zpd8ZLIR6$}d?@lfGB-Zbw!KLUdC;YZQU!&yoZ_d(jv(=mA^rL;-#di`=H(U0L+&}0^N~_QZ8RhkBhAa9ko{gLzo3x&CudjY zdmd>=LzcqIGZbSF8G8e)t880r0@p#IYEAaIl)ag&tAnonu3bEX#DMCfVIH0?9vDX} ze7Ai)Xz|$?3bng3KprxVq6P-r?lHO9a+#xCRt50|uFTTRYBK zAJ6i}noEqJkQgl6C=;Q3uA7X?sKHb`w^>3V*Q2Mt&`KiaIq4y!C!#(5p^#d4*2|5| z&V4nDm4`Jq{`+S@RvuhsELDTDcUt)&ryAcQ59x2}+6*VJP(&K?k{t2U#th|y(njpoh#K~ShMqy>4%y`8zCaL&;lfx}S9NP%+5-yIN$ zTDLB~b>}hjFd5^ud$05}l}A;O&si$Dfb?s$4%yA~3{rOY@poo~#kn=BScGUpq2ktq zJXk+pYo=& zOL>RP4H0ssYP~BvA7-c@DN>V9-ps^w`DRMNU6PADq~*ddbxq^ZGa+qCS{r?I@Vfo` za-yhm2G6rwuQzUX*V=h98b2tqYOPM*n{_}Tvy6>pjoFINcbZrVtMBwcArZZk7%3pm zSsUK_9s`wT_|NE7`1du{$ML?>WYwCrejB78AZ~kS_V%}>mUqpagwEbZ9%^PfOeyms zMYEk9SYs8{cLJ30w_G>{GwbAL@W!v+xB+>n-U|g|Y%rs1#iFe}LFJR7ka+<;WUqd2 zIjTqWi<{$}$w*FG4n1VbtlnDRp0qMLtjP`UW%~LkrV-Zg^82l9=hxtov_$I^HO=Na`3(nYd&}*_mA(S@y>ZWoGm!<{uBivIu8wc%kiGMBVpCU z26Cm;Jm=)%A4odFlds!dFK4|beFx9sr2Cp1_V)Pn9R{T}7i~wg@~~FkgO4tM^(Mse z9A3zNSjg;NZ%!pLH|M2~A-nG6Eh%C!VBJ__)!@niYb0ugqBp0v@65g7;!-*BOCZXj zR(2jvLCT1oduoHnNYd!@~!AK=-LwDurlBD~##H!}Y`Nl^H$zdV7g56E2t zr5*~2QrxVXu?y~(&7*37=mdoLt#A{Ggd@p=k;Ds^{{5= zHL1$iS><4MR{y`u&V!E!|Ct$Z@Y!tO`G*9X4AxGVWmK+SRGF=zSdChfeuyqI_~@T8 zzjwTDJbz5kWpNIkHCby4MAR!tne~9U?a3Cw?+5eA3We$+gOB7#;Y}2+U~&9G*oV3? zWX2$4JiIvtx(DEe36oQ>y>@9y<1Hvu54ma58|z~-wg-O1{~_-v$!Y^FR}F>CCGWpE zKU*ovM^?Ag7~;5~_g-ilEkY>s5k=hw zzn%f^Q}TlfjC_Cn-G&f{q-pQ&^aiA443XQMGWC01PnTlvNP&Kx424{e+Un4Q^GsR(c5rI;CduM%U{_o9-9ArpD7RE^^B%aQ*8@qKWXX^)X-IPyr0loyVXTT(&t=wJ}hWW0tVM7$Lqt{xrsU`n5&#^{7H zn&c5awk@GG)?X20;xty>hMVsCG$y{P$F7|FxB9d-Zuj-M##JlHAt>wYg3@=i}v zhcO!7$nO3wgI7u=#{;9FkR1%n!J1G=L>GL!G(eLdp6w-3{ z6z3G&dlEE>rLe~9CMaZlTeJ3QmAlyOy#730P{g6kh9{E?&{f%fAe9oQ`J@P)vKykuU@@+RVA!nw=aIY zu;Dj*9EudI=D6W=?#BT}e7H0rYj zcHmiZ_EB3uz5ih|I0Y;M4?JMo8rVj^xZh{7-Ot#Wv7x{FM-D{_an)a|XI?a60xM8J@qct(!{e@I?< zLOo#$d*svQ@hyg=|l#PaY{WN~Uhna!l-BZ_SewKoj!vPS=VzWL`)l zln=_6_x{_M>&EnMC-e{uxz7#TeA7|+K{Bl7U_T*sS6ZclSC1}XJvyfHf^ znE>s}W}mv#LH!=%6byU#)f^|@*(S{hmQLbDCtcRoa7+v(1;-oNkDB@tjFc@3@#UY8sT7#iEN^OK)A_2~69 zFGxu~9x2q@Gk$yOO~Wo-Olu~YV#t*K*;jA)!wzTCECc^H8mOjBnQ-?WpLd?sv=k{= zdr<3~gOskowsX}sL-u-Y&$&pE>z_X$g?Q(<@1I?=w0+%;NFl1x28)nFWA3^8nh)8g zV#FDYjaMx2N-#{=Cyzh!osI2h4kF!B($;OXp!(LTw?@rh{QY30&{zPrQfn)7FQk}n z|L|<)-Y#?An$(FY$#X=`v@4N99CC2SC6Rkxe&$kHAGD}1_wwq)w;Zld&#|I)7EW#|wrrlb z3$USlV&8p{Lgk$IN8{B#HOG;yliCdUbgjZ@S?xJ*TE0?Z`0PbGc-F3yu1!V?O!z;q!jKCBv``88lA7jC$rz zC%m<^?k0&XsNJBeRz`jR3~|*ZiK`!2y86ZU9SS;}C{mu<|EARkj_YwWQvhk@I~Jse zWZK9#7~qtD-?q)o?dH^9$uLY?@MsKJn}O>3m|2*Lnl}CY=r{V0y6jZO#**SC&_*1; zveU>nPhRrX?}euyCfdjzkRz{^YCH0M9?gLC0U^{TPBTt(? z=jdZ(O;L}$Q8cN!yX<+`2?t%XzwkqWg5bBmFq6g)U`p#VQ_7H7rX?LK#2ddWet-VB z4Re-YB_Ztxm`f6gWIoq>x9fJ?rT5rNIE8CkDtBhewqA6S;KUJK{&;)gve#zw-Uo@0 zNU7Xm+K>{k?+mKH1-5QzgT$o|pO{=T?@P1+H4k8X_e;R@0V&)%r4(4wWw(=sM7nAF zM?UX4Yv~k}Lz@VopmcA_8o_MBK|j@xzwFDN6Gk0I{X;;N{i}hEsGk1rZe3rFM_ah( zXflhWrvm{0R*ijg*1t|F9?JD$%^{b}W9@E6&iZmg%h02{&qs>vpCf>cbeGS^#LpOg z$-dZu0&UDYTTc`+e(|@{631`-d}l6)TW3e4bOy}Wi{H9$*OQL!;9%QZ!ff%M#7Cch zcyWIR1|Go~;;M~b-?RRXNl#zat|E)Pq<;jLlTK!mIrx8>zrFIz`1J?C>cMMTwA<2C z#H_ij=U%^keA4ObkRrLtXH`G~7TmiWFf?b)>Uv5lb$-RoOj{+XPp=_`HY?C@+ zk1lUYY~X`+Na>E0yE?tK`R7CbN^2RCZ%7HSXd=be9?$b>X?y93$|!i z@d3VUk1syENwB+6i}pBOP+i&KUmN-yzFqrv747kbc+=PF!M)%^wOsA`&<5E;<@oHv z(XtIK8UTY7pM5}S)%Dq%k~)PC)pGaJhw5Mo*y`>}n@sVctp==v-rlQD^umPatH*wR z^!H@L7fcnYffhu)@xkVm_w75d^YzTvEZ=-RnbD@OivfmKMlJtZ^7gw2EftaiQfy%4 zVWbd0oPJciWABT{tp+w4jcDs2Yy%^7Mu9kf?1#5axw`KD69sJ~6wgEo$%S@*n|k(j z2M^efX=7~O)dw^oxyA^F=~OSu`RtC_UEX@@x4Cu|n}DCjKrl>cIWGeXtt7qctgg`C zU~ooNy=!##RH7a#Su;5)w_qtl?e_8^2X!)b?gNe|`9=!QqevkMd-0Z&`<%P(!QGvd z3HSu+kN|VUurj6NuU?J>qexYuZiRT0T>!##~m@h z`m>Yv7n%^aHC+)x6kL?s{Q0VdtH~+_#euMOMhd~?<{xp`(3ac(z$s*8i|j5_cI-dq z##QYe9Eud4WvU{BkV4wVKlU7c$nB@@dkDkuR@Vrmkc55vse9l2Y4wJONUOnML^-9s z0N*d)7VTPbKd{i=mvWI?bdyB@57$D|BcH*0n8y}-ro-?RMWjizwp`Kk8eD) zT}5wvA>ItGskgVgRty0QaY!lERti=hg%Zx zS1njg^`U7T|9q*2<~=x)nk=Y(VfDr(-@QHH8(>4f(Wo!2PYd!=ed@3{t%RPixqj@} z`0DP|KLkS@l1*jvDDUR?dR;i?!7XU-5JQprG=OS!(7C`$v!-N%jJ! zU8!9e8U<<5bO{Z?JhsIxi`u_<`vXh?>wKjaXN$ID0YeRo?t1OD1KQu*$S`d8_it<3PAcuw3anqK zMSXTWrSv})Il3ap9(yi0xZOoX;y2mWKJ$W{vx05-zO)S>Y571_P*OGOvwKh4dw;P8 zgq@AXPog*tO+N13n)?s>w#)pk6^|irPta6apBXvP#?Rq*8{`--U1A*OPc@q>c?09>54}HL!MXY?e#Kc*1DNzoxbA(q}7n85_)bEQb_XcyJpxG zgGYb5qFu!h2p6zsWZS8tK2L9R;5UYKg zL2}Kek)Brh}i@@{z}PKJEpkjSS9_7NpRa z8+O5QD;~K1*poPg*XUlE=$wWqrTTneL2sY^9e!zSUwr?-t|JEi{yK@RKTbCI(Z;f> zE#>@L*t!=5_wIVbnsw72-+n#Ur_EFc^c=>|FH@gj9{maR7>a%=9Y0n|Ay!uxt4kTb z`~IG$@#{BHO{IQ4y-CQBcecFj)A1Kxb_Y^OUc&}?DN?!v>yEQdI&_yUPNQ`e=^?03 zDTiRLucnisr4(2x>w%3%V{FX3H~)S0%!8b^ZVR?S&0-F|^SE7Jzj@B8#~B+-mw@`f zx)PicEG>_ONTwNZ%=-^_{M*(WNy5?^6g=Y9`5gK7%Sygr+Ge!~Ngg}@*<)_cPwL*T zf@V#K#K`qXAz5|A#1A5~Ub^6FC*>iekR+eCb?Wttj(&WOlkyT$c1OysixRo#AD_03 zNP!56`~xZ5AmxX>8^4)4{cu>EsT>UY$Y!Jvhum|-LnA)hrz7SCDU>7I!L~suf4g(H z51$x#_YV%XK1k_-lsS7{`|w|nI(WQD0aHZ|LCTIu8T3Ghj#a%g)l#=aig(9Gz)(#m z0%mW(RD6@)^1|+78I-?yxuaIeD$m&=q*kN)A#xAvNX{Sr&|-i8#?#TL%nZQA^~3t(-v zQiA*Rm*t({`UF!DJht0XpI~flp&+@6;cm9J5FLLS=+@gO6Oizr)PiOCRO2wqTw-+#N)x|ae z8)-t*$JKB7he_SAA8d{7;Qk5Lgo4NE_U8&cvES^&UKu>@GNtE&vF+jIYW3WCRJTY5Wq{WJc2VOw7s{rceQxz9pU&;l98Jk44r zc%1%P{S(|ezm^mWUTZ#p7NwQz?Mvdd&u;z7osJw`iIkm?a{eb>dtI|-H+agDOe6^# z+&{n8`t&nN^|JOA&#x=izwOW#EDwU`toE~n&F-b1|J*aX{dJaq2&x)jp+(BC#XG^4 ztp7b%1@l3$L<;VO|NS@(mQ`)3&#%QH!Q}+c+rjk-#`eq3SzaG!*!iSCMezQ@dlv}% z+szMNa%p9!ExO@Wv|cl2^n%IkpGYBF+T0Vr`ubm=Eq`GpaS#^tFIr;tK(R{PbdY0rN& zKjoyXmML#lo&CXO%Z@nTN%;mTGy}dle)WT|oIU1#C#BnLk@9K7jE{eO<@PmBN)#z% z>wMytX9nDP!d?G%QjSGRFQmNk?$OP2cU<`wCnY6QzB+Dv&htnOI z0`7}3%#MxUB?sR1+O6ONIy(mAZPg{x|6t*w{&PoeT8I=m77jrQ*`gQqS$j$GsNa*v zC;J${@Agt*sn1^jYL}T89ZP#t*omY~u#06%)tvbBr{^w!$G{AHAs>Qk@JqX6M=U$- zx-+)lk37KXv=?^a79gbyQqCOEceiJ@{SEo8V<6Dphp%Tg4HAF zUnXcy#Cz zpL1*nu@?&ejOvm*@VZt^yF%Ehmg2VqVAc*A({gIhx#Z12Em~O>c^)a9kaGB4Ki|3Y z1BY~xDUhS9kV0*6XU#Rau{&;@-yS;O;JyPv^(RQ7n(njyrIqJxJ94&@vI!})!|~4N z7hSiru^%uQK#P3>7etRltYn1V|$mL^Vi?~ zc&}ZZlv8BNxK8V5855=-;iMFiLbibPsOnDVnj>-Zm_@-AGUcJ0p8DIGPZr+jq}+)V z@<%y%)%(xhJn^;`C*^shQ0u&O;wHWyImu&ZIvDR{O4nC z#J<@~c)7s=&3_*qhlvLH=$5wv3ys3kIoL{h2sxDDk4nL2czV{oif_LO;@NP&Uemin;=DxRg`z_`yaeFT$GEzDt zrR%&|SN-LjRpcp49t+ww*cUL}0CV(`pVzHDW!*Tyz@32{RcmBQ`-fNUbV?+*H&Uc` z;L%8-`RC#vKhHO=Je6b>&5bqa0r;oU_;I}4Aa{5^^&O3zQgfZKvVAgo`fo;#yWtV0 zU;v@x7L6v&E4Dv1_UFfLB)=MVysFgrPWpJY5Y_$Zg#XkcF20PcJ$>K_7Y_UoYg(2r z7>(XDcSw|CTKsj^+ z5Tx>}NFho7)LGYW`rzP`Nxn&s&(%nw-X8Mfor@;6WX?j$fEspq3D&E8`Hfo#=TD6c zq~F+G_ny}6H>Y5I3OUNO^|?{>>4jU&+4tQ8-^EU(bt%o(Gca^6M?@%3(V z+pQb8%|o9e1p{F)w*Q0MzK2mong|Sj{ zbA`5k*ZQ-~A@BEl)`9Uooy$5(@af#*Ji&>LgC^b9Z~rf@0d4Z6(^*KNv3=i~$N#ar zxj&r{lViIEG!pk(cYu>;DX!v$g!Pp!%x^|MpUp>&Y45H7JG18*JGoJa+u#LBe^LJblpbeqEVaLKlJp@osc3&RxVqgOu-BI z?2n)C)G&Pf2S|b5KxQ`o8xQFqa_I@aDzPkyByh3<7tEN$=3GAFr-PrwelW^m&yi$i zYB8BN@^8#OV`h&DFV!FgH?)%%RdIpn(+T-aTR*h0|A$E7!yT1=Cqm>r7jT*gy5%Ln zMttzmKOXD3tk+MkV-Cg_k^|S^mn6kQ-|xEm%CqM^$`tV3wF{6!T0r-0KRI^ai;kq; zhQ37#X|U`KUV+^sv0ZZUmM2{i%X|%Na%4R!Dd}?P;qP`C_QeoU4k?QM(vrG6_$1A8 zVCxF1H%va`f~^jyo^MfI8Tl(xNbY=p(X~tez5dU15>3t}pCE;Fiw&RMc;oT?o;}u~ z&AX;W3P}o#h2V9tcO~wW^Bu~e6-)IuyFGGR{U)MKQsCbUC}@CxFVF$Hw)BF3i=v#W z;QDymz_B^(ajRHs?zQ~3|rH_D6kuV&^$~(pbP$M!nErWXzUKJaT%^;|AY+V#k&3DqaCi#Ml1q zMuX0u-zeo>z|#Kq5r0n|*5~O*h(l4KC)jvIH}$jh#J(y8fpGNtEt=`Zd) zruS?oWjT7gloJV?uk7V=f;n-^g+jB7)Ia&$7gtVQgL0^K`eVLA3a!K^OkecGH`}ij z{{D>ZK%|gOXyA;?uHQK0!L<%;!7b`@&WLyvZS7r~0UPunOf->YD2K++^E+?5dG7iy zJw!Ql#D5i1c16mDyN$*3R?UCdp`ay}qU#VN8?XE0TRms&z7Z)jvY=N5x9H-z44z^%^^NuX63gqhDpF@aygDLRkUcrezcXZH{(Ldr}4z*4YCl1o^TM$do(~WvxIm#lHrJ<+A6SiPA#y3+bFtbgVH-Ur@r!ULqC;4TzYC*otXqZWm93BEOmPq>(oNbQwJ z_Skod0snX^2GdU@KaK7)!nw`;x7}iP|DkhH4zAOqa)R~IR5lSaapq{*-kFwOMZdG(U5Xr80d2yBJMe74xo7^%K|>-T1TypvdcKvRSizgK93 z-LIa|$-J=evIEmcru?(_=xs0j{tm1$FfWi$j`-a1DYe^xQ;dMA0yfeH_q*bz$i2O< z0X7guj@c2PyF?-VsTX|CDoRVqaA2cZv&*)%`A$!5d!(cqO^SBQCyYX5?XEvI<@Q`r zg%qeXMD!i66 zRQsIhl@iwHc1hZ>Cm87EWUo?gFC?lVM}2lY>2wreO7HKTDa&c~`FivmtT?6T>)9F} zaK0WC{DSA}K|$~-dY`)xgZrF1C%J=~`kXqKlCSj4H#8Ks`v;#b_c^I9Y4g$F==3(2C%Bv&4iMv1 zxo?oLf$HFM;&rgs(ZA(=My`DIo!?)G){&z=SSB{dn{k_UW8^ODKr|V-u7OkX`dY%kpjwS%mvpc7$#xV$BLZ{I~g$429K}$r0x#$A?i6&RM86ocibRl zDPU+`*!|spr|omv?y%X-l(wg-e-<;-_^~%fHh=ZQUld`x2a?gn; z&NX@y)o2C05{Z7}cfJ}q@#CNN|CZ)PsC=Nn zN9Pk)_C!7aOgF%EIcmk}o!2b8qg};Y_(CnY5x-QQ%Xi%Whd-|Q?e!=}jvsoaoH%i} z;=1b(=rCaiv>Rp&DkzvX-*pM|fiKm}*TJ*}Q_#$M5MESmf7F?eUOx0C(1yDiU<;1? z4OG*--DuwT^ABC_PV&1IJhneT3f1(rLED`$Va>m{BpW0d{s%;+XA|7((drL395Lc7 z=x^8{q|C%aRMpx`~E5MO`v-k2AX zU+i)kr*Jtww|B_(Pk`15ssm_4Tl>mH);a@pWvHsTqEHkMfAHxo&b@I-47AC){)VRn zj~;W)1#4DT{B=2}@EwwMu{toY+0H(Wn0) zy>QJlLSFAvvFPyWONNt$iP#z~>I=h?qB)P3U7_?nck?^1>@%YY;}nSa-v!T#)-is% z`+!|)&iV$}q?YC@d-;6*m4NArb{nw6J$p~DoIx`!jRl}wfRt`XS(KP`=B>wOkC!Qs zAwK#W%E8nSc>pjp8lRkfWXov}pVCoMfch*$3dxr!yybzp-Nqn=WKr$ZX;0cO!%$yQ=HkP0I z>Q+-}%#rNHINkOIF@pd2<=Trc+;ZY!NCC~na68MCN59-_#Z~|MU6Ns#59n^;WI7gk z_NqVM8#}l?VUzOhjat!juKTaKe}eC}55{)M0)friXTtl9bk{3d)Mrgg^+8H&I1%E5 z{{_IH-GWEs{x6Dl>s^6<5Xen1`_#0N+T#^#&C zGoa549nwnB5-Uzmf&SFI_iie7|Fa?bhr0XizX;yxwQHjLQRiKKIm=PLF(-KEd(2Cs zJ|q6H%M*QuUVklHJ-D||MhbD_(ih(}K4|EF5K>SZ8b3KB!z$MuZ+>&x4}C{2U>NT0 z;92vMmqj@@j(&aP$*){X5|(5y$F#5Ak|_w@tM=6sNhD%T+j>1Qp2bb8 zm@}?=W6?*I$A7T}>VsCJ-Y%{bHQlq@Zd)NZKHOr((R-{t+AKCHa_bQ-77 z$VnvmdNWjkxGKN;^y1O&U6;@uQN4IIQ`*}z>4s-W*#ln{v@Lw;`j+{VS7B_=qzh4S z%T6hbr4jphUSZWnlkk=D_4C(if5YRc!%#CH@0-k+1#HXo6}v-y51WQ(>N2s^@r8Uc z(=fbOrSm}g5Z43g1-dd7|Car@-QxV!S8i9A%=DvgUDhrf`sFTDA1mNi)jW3aPJN@- zIb-XO`EK2wf4d+_q%k|}d;Q_7A_t3J__}L* z*&Fm8ePz&d^pRS#Io=Pi6BuS=ERk)FH5s*bh+d^vVt9$3-l318V;hVF-7aOu^T}L+ zoTSV`-}Gd&u~5jF2lVTgHyY@9vX;J?9KQC=<{SEnO#PxV5G9Tu(znnsogQVbGcxf; z%E9;5*2=tis@a&9Gvb9Pl|}jTv1Fz$+nkOy;FTQ|09LXx^V=y_M1WbbG*k^EZ^iP( zOvZ_snOM$j%ods(Ti}$$#YZWJf|)&lTcY*ZJgydPB%LmbXUi>g#U$Md2f0hW^SGW3 zp}zfVxpDf@<-1nCx_q`7oLg%o8Vo9d9);@Hl-9JE1?egu4d{wH?Wn<|G#%iTSd;|? z^@0Z4r)hx2=PPKTMGLTjL*i5F@P7?jI}ecA;V3oVfDnS@1MCDRo?=JA1gEct)tpw3 z6S(aBvKmokI>4$?P)*O$4kij}C+Cys;$|b2>Stz)`M8me<)ZYqL|oGt8YrUEjR(C( zqF-NK_F)1n{{n(~S`T40kQg8U6@juE$AaZi2vGhl3zFY32L%5{X>+7pI>oRCs0cWv zK^WojrD!vrhcfb-Mt9`{9#K-QE9^K}vs^b;jLl*_`ExkkQ_%x0qO?H6w};!{LWgNfJ@ z57Yyh457y1W0)UjGNuxk6$BmO5<{Vh$+s!wcCHNR9Zv;;!SjV_55uBNWx$}scyRJ? zwr9XH=2D)jfXIe%SjI4;>1?8yGNLKGQ>PyRuAD@d8y2+D>P0U&c=-ZY{*CgRrXdh% z6WP-ylgwj`v^=Uw-%uUGsxm*f%59!XHZ&G!!p7y1^yYHZNY@#Ogpts&pLI(&uvtM6 zLl>Cpt154;2bc^+S#c()Tr!>&+x|jaM@jB$tK-TCl&&~hoVZZ|!vJlXjSKk4bE8a?6Dsupp8f_&eh4p|)iM0}s!q&i}#9E0*un`X#;89|2 z!o$PS#>25T;o*^Gb5td)2yt`T^YSR3)6E}+N4gIFu^IFc1;oJcFN zI3gQZoJcFN2yP)M4=hfkl~|lf23VX(E3t^C5WQrFTZzM-5uc)%T&6xH-3D~#IOf;@Hc7UW6(FAAcTciPokjyv_gEXM9&zf$bP|Dq6u z%e+M>No^`Xj39^09sJ&uHlbGsH}!^t-kZ`U^xhHfp!cS<3B5npcWx(~hO^8+9z#&-u+9tGCjnSA6R^?-xkUFZ5gVXs|9?Ezu4q*I^ z;$;|eC(_%f$TrRUdjPV-Ft(9TPdH>QnMGg)b`RL|RFa$~6w2w$NkGD?nq1TS<*FFWXqe^xZlR6nLcK zW@EAxxwha6uno0hR0x{1HqcgMlXgnGhBDr!R`<1pw3;G|vqf#&&PRZ>YlUztYoyGG zz@o(3h{vjxg{dv|a%NPJ#{l|luq#U>+C0rs2C>I14T^s zrWM7U2j?p@YQ>c?<;u@3ExuSF{3(p6s4KTkqU)a}PEE5MW(hO*S$xwUZS6Z@|E8sI?Z<#gmcBoM(7<9ZQ z8q1i;RF-buqPrz=oCAn$QFnt((bg%l(* z$znu=S%(XuHWp=QusE53#fiW~Kr43r*!LqHSo}U?{V!ciHMA(L0yIi2ic|7Z!fC*r zuA&C9`;B?QX%M`wn=(u=b$u}fhjX+xJ9$QPSqNec_5cVJ6_DcakOnKaxF89blo&c7 z+>OW?K>&6lPUkT~IuA-N-xy@^V&2T^2EIKwfzS>|`57jx?J(wU*bu@%^Ysa`HqsA@qSn_-JX@^-kR8U9Ptr{fNp{T`RgQi! zE6N>i@Hd1#j`ot!6d~wq@P))_lx8$r9)}LZXPn5O;|Ec4yKO8&%Zm!e!E@m>S>UP^ zFkZ%JhGM8wIDB%0Dxa^c$b_|@ixA*(#hrns>3X$VK%hneA3kSLb3~^Y3GM_8T`FjXJ1*m|j>Z*EE7BClGqRI3!sKtQ3}klJhADg)&L) z8dgKAIRR`1nbUcU&l{F4ZWiqW>!dlq677E2#!LoSQUgZJM4oCScVpx%Uj}3t};*bRf zSh&b*ESghjbn!1V0lHHjqK+1I2B!H;LBFOGc>pg0gg|c1U_XNwu~dU%CRu2)vWOF5 zC8^B0xts(;#c6qq2y-DYH47Pee&^BvV|Jk8f}V`TlYoGc<4|QSezqZ&noN{lr2b>{t#; z%K(;sKx8rcC)+`w0_R90)M}xgoIvOK0&?&lPdIgWMg+HfByc*T z5O2ibhpm84YG~TX$pp+!1T7_%FAc1_IHJr|J_v($8PeM7_yYzt3NcUXJAH4JHOPUu ztb9yyn0ku|kmL<;$`DUStlHv(F|9zUnpSf%2^10nV^&(Tbg+(eBVZ?17H4A(g_Rru za)4FGu=Z6%D*%-k*3aR+EAJ)*qzpOgZYoQLEY{RnbHZ}aEa=WyE4hGAiIt@eD8&I< ziE%x`MzeKaA{88!zW>Fh>{CPlo)q-7}?%= z5-7Z%Sm$Fr^|(MzOs5(KbTSbx8-lwaY~WD#f{~Db2%#~;{Z=sjHvxoxPzoty5C}Y) z#g$hYVwGILpu|{R4JFsDa}e3?FWi@*OIp)9H7sw5;kh{+3XG8_jnXhV1j!_g{B!~r z_ZZ+722IVKOpL;UC~L7uch(prB}9PCigJY+!%YeqC{EL~C9@)@DsPOc=J>)4m)y-FP~xOBfdaLg!sM!(!3cU47rUMxATQtPgOP5sg_AvD;x27AQ@)fARD5- zgJd4YBEx8s@U^_3_RL7ge(6@Kc~pkU2=`)#)IgpR%wmpodJ{S@wj?yI=*|dA+#j&g z5ASAZ>rqID20&ZEvS?>>ny+ElZb>E|mB?Vo=&Wn5e4xV>=P}FjLVV7|(z?!dGTDd- zf)%we?K3u+q#gc}eVX}VA`nQqC^u#PJq&`@^LLCDq-(ztGu0XK)zEM@eL zkh=XGlLWw>2&j;|r#kW_4kBBjKHU6d*+ZBW@#K_ankl0+QD~m5=T;C(gOrEDXcC1h zmMQl#d90A72X+jdCM*omuG}cW=PPR{+&?rQ$_KObrYM;S_+$tJFMPWN{t|pK6u_*Y zBQrG(rM3ZJ)hK9}lc6x|$h#cSTG><+t{{cOh6b^k4T#lfSu=~POdxQ@opFbEJ5#Vy zp$CKQHFh4LvBTUmVIq}QTd@?$KpBd%iV_B9u`DJ%+xSOiD^X?STDh}zlj$-lG0kYI zMv23q2Q7S6D#_)D7~SWr0rEZh|aLWxT7p8#F_Pl-R zDhbc*KEQ2t&q*83dx+jqYRf9M`Q6guCk7&=suOESRO7VufuV1A#kEOK~H zVfZlKm!cCFxP_3~0H*Ug;w`;kSCD#&AU>^R+^hnUtVtvjE!kq)h-IvsU@+SV0YR2^ zn32-4RC2mB-(<}KRaZ!F3m^l&H4?QDklA=YyxoUulT!Jjm72=N5~P(wKv|zmBZVf0 z!5nkw2H)K#1R;A;2GNQp*ELOx~9=(4isZe|5)2%HsSdbR#;YHg-XrVL@vc%y@Ewh zCNvGRB@OvKMXXRY#f3nEjF246Q(=?4Ln$>M?dvnyj(pHi=&m#1-5+Su4)dkqpd;ztWc{+zo~r5-xdl=QN@HEP91C|T z>~^R0S73SCQ({BQa!-fp`f4cvRij)*7JIxI5@ql70&aBIbde_~FnYc)(l9GKvCUMf z2>k-Wa=OqIoHvT5kRUPyFtTRpdDVLG7-d;OaH=%uLkL4+Lbd0;FiqL+jKJmoz+KAi zDA8eK5s$uNcUd=xOY#D5$v2=5H%yZt22dwJ_b|rbrAis0gWI8h3p|xrM)d zzCMO^0{d%d^;5s>DBtfhEyU?b0zLoal2`)4-G=5Z4zaKfbMQz{2S9o{I*-hkC;`nI z#XCM}IEu+h0}CMR1s56(a)pUP251^m$wifMU@!zEE8}u@>bd^ChV~j5j!D5nLOX1- zP^br_5<~gn-07+?;9YSvXZYTG30DA1$v4nKk4mDk`D!P_Ow(uzx$%^y3n1fJgPr(U znoh&n@giA`crDpu3<{s1W4KY^uN zSjTvY0ygg_o|nr~ZACqqAn3Lt1}fm+!eod?KWOnQ9-iP3AGyKeGIaOa&I9~*Se%;( z8-nD+lf!TUq!q;0R`}Fz`~FBk7Il19AZ*I?xcLCy^Mxngu+Fi$2=I0o-C>!gl4dLx zH_3cZOxEV6G?3wlR$KH8mxhnLS%KXKBbgR%GOkri1~^l|-UzJu!N>Uk;j|}C`_ziZ zaMVvxT>5Hd6UTaLnJFrTC7d@0WfuFCMy=Q=w&R3DQ%yS`2(-iOyd1{N4h;ZxBJ6Dv z)@MvPTR;KpM4(F2Y@wej)CQ6z!+0o;@X-1sjL)G{_?`Iys(=*mQn)QcIi>_mO3ZOT zX>~7P!(L2l8c1Dh*orwFEaP)!VW-yI8L1*JNZyDF;|rzko|dR7W6@(fG6U8Qmo<9@ zs5-!-C_boxyck){ZsOF1@E}%h|HnQwbRnrQX?j3Kqi8hg#v@)IWCek~^v8Z?Av*;tA`N0Y53t%{R<^^&wOwmK+F_Ci z;T~@4t^(CY*<_$WQ6m>Cr@=S}nZ*@?xgIqV!LSW0bpwN{#k(6~KLd>=uXNJ22?5xE zup5MnUH1-(4Qp+wpjJ?Gc?{L!j25=H3`jFD5?= zi*LNWPRH>@6mldvosSa0W!p&Un8+Uht>B*^)HvoZ>SEgBZFL`eNVdzeD?v?e9Vw}! zeKs<|&ZBrYc} z5IT`4_6o|lpA8mFDhHr4#FIdn5+s__%_(+u+@H~~(gjA+E0Sfi4jv*M+IjV+sjQj} zC8^P}rgwHZqgs-;9_mQuJt&GIDzqR?>1s9`iPW7ct@@eRq@j~E&B^K0Q@X7)cShiI ze?W^#>n=1()+>@`qlP#o7jP*tAPN_*qH5Cr&#s${L;lr-&aeUlIq=!wwl`lGBMD{z zoMajjonbSHYajwt@B(o`8T{^ILU*}g>&;r1TmY<;5LoWuB|N5@)+BgdjJD&gSH3hI z=aZYTmf|4cL>3tR%0>)Ix2R@(r4pQn4C_L}hmlByX2QyvIvZ#Rcg-3o!W9Rxazdtw zMVz!D%WYi8!``ew>ixuXaabR@opsAudHKzXR3)Fu5))DQ)E-Zn(*RFDoIkAB0;g*r zv8QebENQ_@;+P|!*n{>4Vt4{#?Ttg!@clI%$EpDk3l*W9<+5EKpzJW%r%D{))Rg7c zN&wE<3E70?V4+(wr->P~rmxOr-o~UlCpvg)>#^6*EXLS> z;i8jDiBAPIGLA6D$h{>C6~^F`d-ZV6(A3S&gKF7fYL)Q)&45z5Q)r-;&;tv=AmNHy z#A*RYL_iva=PJQ--9OO=t5t zocu{|A3xFq#mOBlH8un%^qRB+3dktLxaNF<>odp6bO@6r%`wIk8_ypm_XQr}rLRwB*h_s0+ zm4$3<>c=)=_3u?1zkf29#5#bts@{pe6~oL6>ZZZ1IfO6cyo6coZez7Ra9vm(^nwsU z|jaB_v9#-0+wv4_u8ryG)_iL;ZoO~|Rv<_yvk^~m)RKP5(>qA+ZYK6AT zvJj_nZju~Md5K>JGFN_7!4-$8Mw&0+YhgCV1`MjMl^Nhb3QtMlQ>Z=X;Flleurp$w z3kZ`0=`6i!fxo=76XroXyoRJk&o3%J*+yw7hPd1eTZ<>t)7iZ;@ zbw%ur)FRLnYshNxXc(grM;uzD9nlWcy#hFA&njngW315JfKxbW-YROwVao*Fgh?0Z zgdHX+%?xHM{RqQaIPZJtAVhA;${Im*BPb5KliRix#6FhXz@#$l_cFTh07x9;W|kdio%xY9R3S?1H+ROGG0sg z!3R3Rf@3-4F@`%;;e?B`LHtBU)P*adyM@so0Oa^5@O;e`!x8P=g3vM&Wav1dw`fm_QxrwlA>Y zX=2}H5Zf=SH7!+(iz(RR4|LM-Ke+EeG5t^y?LI>=b0#>f!Fp=}MCG$Zc=oI08^0Rm ze1(vP#~?EDv*0!Y=QBMw>}1DFOL*jwvh!Qsp8Sm4jYt6S(~!Xseq{(;0WegCeCeA= zXf#r=JZTrGrIb22to9X^M!`-J_`quOa(W7f38;M>+AY-H@2$malSVBsp7dpw@P2PC zUQhS9$+df}wOCcE#4Eui#L_FlZE9PK_uQmfUt5b)P|DCHt!jO3JI<226UsK!Tzz28 zs<-;BwG=wy!Gn$HYfZ1P*kK$T;(0byXwpz**#$uUWiWBeif)hz7-a4HSGoctGP0+$)Z zq=P$>V3cLAPuOOmQP<<@C|&0ZPf`sqiq)hN9fLx*|6LsjgsymWz+h_95Op~C{?Kx6 z#1X8__sd(sC?CuSQ-GaL^Y)m3yAaR3B%7}8KK zh&1I|1|a2XGT=~Rj#=WgDpvcX3J9*O30DI#NAV45xDg6yvD&P6@JVNQcp=5J*z>2v zWW!|07mF`-4l1sEK<$c02h>3IVQtgCyrhb@r~JhB4YA$eLyXAO${GkDwJfTa_{znF>NSEAZg8OC zUm^3V7*y>Ld23fVi2{qT*xE>?0hboqg5@=M?6C`II}AM~T$=KWD}dr(v;dW+x1cB@ zh)Qz=68xCyN*6#g>3k&v-`qe=rXk+W19Wy6c93ujnNtpf;?Tah2g07a`1F^^MGt>Q z>tLXS^8z2C(8(Vy9LmzBV-(1PpqfgHQyd1JB(Q>*g~CtsD5rk_s>Dc=g--X*L;_$Z zg2twk@#wj}IF$k6FD4`XOlr-CxV8Yu@Yk8IC?d`<(A&EGso7(F`4INO;quVF z3xT{{nQm^+n8a8XMp+edq)P%b%+}y-y605OKCagBfpyx*C$Y41C=)Ik!xALsrrKGU zh!?lY?lCW*Ly$M6mHlQD%H3zjlsai>wC|(=upMS54_nE!zyXj%7tP5W;>nDmXklO) zX{bDUi6-&@g9z~a8CI;jH{|v74i5pD*5yI9rxuknH#L6V7Uj^s?J0` zXwQrN%Vn^O{8M1Qd3- zEKLIQ4;~)KP&-;dG+y|PDY-1Yx zafA%n@0!>TLW8f6rfWp;7tMl(;VNcve@{9GZ&(eSod?i%m|H1KIyhtj)QO;cc1Zw> zW8>ixbZR!BRiiv`!-&Fhf4D)BRwqLsC!8PIsx2J7iB;4n_&I!$ zO)I1*oe&4G9Y)Ep#f0&i!aM+0V%(2mhDKsWdN?gh?%z(t;T=uS<9;5nD2|O=@a_*~ z;Sg`d;|WiGu~CTuI{cob(&w#h_eKrf@Uy}x@p`&Y-3pc^)9vvJKsyY`@Ow1uAuk(Q z+znWcJ7NKzH^qiVz{wEG3qQFFV|@{w0Vo+lYldro@}PoTkMm`SBoh2S^Y{+i7ZqY1 z7(@UA0b4cTXbfyk@8qZPE$Q@w^-whipFY3)I63C|GPuXAp%!wF?<6n}kV8#&Ma@`V4N?#cBa+~?y zr%UvO)ycL$P~Ta1>(VLaaAn>9&fBu|P5X*klxl~|(&MsuYES%yDlbP}D%(J>chun( z9};>d?)Jv*MJCL~e496UVKy0v;qfWn1efn~7`oRh{Ia85zt8B_aNXQZjKHK&$FeP~ ztJKN?gBk@h(!HX3sim|Nz?B$D$xudVj`IuxNEu?9!1M&7it&wUmlQGQw zu)srh&^@NjNz6bEbn9&nPvhc#8C-Bm?{1N6to4EYt!Vt|4S7y}%uW_;6pqhwu+`ch zZRcpq=^0N&B$B*vuNu<7a^MjAN==ye3t6lRZBXoTyp`2;;Oj%mqyUrRH%{Ia91 z{62$C%COXXR^#sO2BiA~M6bMONy7=)D#Uw>fE58|b1s+S znD{XL;sPk~jGzXMod=lgFe3|7jW~CfD3BpQk#B{*k2x>XEkmq^>qVDX~$pW4qsh6l>?9y0c`kU$ZjEk+F?MJVGgrd zm1<~5z)0bDx#x;($fO@;SJuQ0yxx+n4;Q1Zd??!$2kG*ll!o`{jyC|(59bf#dwSv` zM+;dI;D!xbJSYp{Xm`2%QpzcnLQdI0XXQ zi8yb`-~=jGj`e!w+sQ;U*bwOIaO>`5vyNsE`r-Ux?Bw)2pqvQr_k>9X!6a7C1K$0i ztnxj~L`dB1>N#I0;Vy78zo-B5W`!xB;oec*f@m3@5h5A_t~aELEY{2|onGU;i|T?a|uu< z0zDn4SwiMGyTJfzhe^XHO+r6CmWVf?DEY>m5#}~bP^#pUh}2JvCyYTzSH)8*0GA<1 zX}R2oe5Rd<0-dCdQ6@TU8>*F*W(Mxkk6cU`aW(}&VTYM>!(?>G@C818?ASG?(S=w= zg~>46^a&hxnB<0>1~fw$5)1E3@RMOykOy&?=u=i-C{&3tG_$MiXI-4G+i+L20aZ&3 z*=f9lyHs;lHwd>>eIkm(?QtV74L|XGylQ}^4b*Hvr$(v$!=FC13k0+sE>HSHUjk5$ z)Fv`8h4nNI2wP8gBH+JpSj8a*MJh3#ow;P_FYxjzH0oU1>^wkXhtXjq;`EZnWqu$M zCd~n~MEDko*QSU!^(DB zDhUe=mSwTKZR`Y)9R?)U6)bI~>}b~UtDOfp*gywkY?ySDFx~^I=%TPrR!^a#Ks8E( zl$IOdzKHzSd|dt*b9C&`{@vR1ms;P75UdeO~`+4}tv!s*6_Ot!v5BvMne z-^0W1+H20Au72o5qx*(aE|Nf>*}!H#-ZzOCVWBJbm0qy#CzpL1-7&;M!V-&WMG!_bKXs!uHr8QyC^wcUXpDz=J5&bHtq72>4# L|6$X&5%vEAz1nE` literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 7d38eee..c7fc33d 100644 --- a/package.json +++ b/package.json @@ -1,69 +1,34 @@ { "name": "shadowave", "private": true, - "version": "0.0.0", "type": "module", + "workspaces": [ + "apps/*" + ], "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "lint": "eslint . --max-warnings 0", - "test": "vitest", - "messages:extract": "lingui extract --clean", - "messages:compile": "lingui compile --typescript", - "preview": "vite preview", - "prepare": "husky" - }, - "packageManager": "pnpm@9.0.0", - "dependencies": { - "@lingui/core": "^4.11.1", - "@lingui/macro": "^4.11.1", - "@lingui/react": "^4.11.1", - "@radix-ui/react-aspect-ratio": "^1.0.3", - "@radix-ui/react-dropdown-menu": "^2.0.6", - "@radix-ui/react-label": "^2.0.2", - "@radix-ui/react-separator": "^1.0.3", - "@radix-ui/react-slider": "^1.1.2", - "@radix-ui/react-slot": "^1.0.2", - "@radix-ui/react-tooltip": "^1.0.7", - "browser-fs-access": "^0.35.0", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.1", - "jotai": "^2.8.3", - "jotai-devtools": "^0.10.0", - "jotai-effect": "^1.0.0", - "lucide-react": "^0.394.0", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "tailwind-merge": "^2.3.0", - "tailwindcss-animate": "^1.0.7" + "dev": "turbo run dev --parallel", + "build": "turbo run build", + "test": "turbo run test", + "lint": "turbo run lint", + "prepare": "husky", + "api": "bun --filter ./apps/api", + "web": "bun --filter ./apps/web" }, "devDependencies": { - "@eslint/js": "^9.4.0", - "@lingui/cli": "^4.11.1", - "@lingui/conf": "^4.11.1", - "@lingui/swc-plugin": "^4.0.8", - "@lingui/vite-plugin": "^4.11.1", - "@testing-library/react": "^16.0.0", - "@types/node": "^20.14.2", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react-swc": "^3.7.0", - "autoprefixer": "^10.4.19", - "eslint": "^9.4.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-react-hooks": "5.1.0-rc.0", - "eslint-plugin-react-refresh": "^0.4.7", - "globals": "^15.4.0", - "happy-dom": "^14.12.0", - "husky": "^9.0.11", - "lint-staged": "^15.2.7", - "postcss": "^8.4.38", - "prettier": "3.3.2", - "prettier-plugin-tailwindcss": "^0.6.4", - "tailwindcss": "^3.4.4", - "typescript": "^5.4.5", - "typescript-eslint": "8.0.0-alpha.30", - "vite": "^5.3.0", - "vitest": "^1.6.0" + "eslint": "^9.17.0", + "husky": "^9.1.7", + "lint-staged": "^15.3.0", + "prettier": "3.4.2", + "turbo": "^2.3.3", + "typescript": "^5.7.3", + "vite": "6.0.7", + "vitest": "^2.1.8" + }, + "packageManager": "bun@1.1.45", + "engines": { + "node": ">=22.0.0" + }, + "overrides": { + "@swc/core": "1.7.40" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 2dcbb57..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,5976 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@lingui/core': - specifier: ^4.11.1 - version: 4.11.1 - '@lingui/macro': - specifier: ^4.11.1 - version: 4.11.1(@lingui/react@4.11.1(react@18.3.1))(babel-plugin-macros@3.1.0)(typescript@5.4.5) - '@lingui/react': - specifier: ^4.11.1 - version: 4.11.1(react@18.3.1) - '@radix-ui/react-aspect-ratio': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dropdown-menu': - specifier: ^2.0.6 - version: 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-separator': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slider': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-tooltip': - specifier: ^1.0.7 - version: 1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - browser-fs-access: - specifier: ^0.35.0 - version: 0.35.0 - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - jotai: - specifier: ^2.8.3 - version: 2.8.3(@types/react@18.3.3)(react@18.3.1) - jotai-devtools: - specifier: ^0.10.0 - version: 0.10.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@5.0.1) - jotai-effect: - specifier: ^1.0.0 - version: 1.0.0(jotai@2.8.3(@types/react@18.3.3)(react@18.3.1)) - lucide-react: - specifier: ^0.394.0 - version: 0.394.0(react@18.3.1) - react: - specifier: ^18.3.1 - version: 18.3.1 - react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) - tailwind-merge: - specifier: ^2.3.0 - version: 2.3.0 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.4) - devDependencies: - '@eslint/js': - specifier: ^9.4.0 - version: 9.4.0 - '@lingui/cli': - specifier: ^4.11.1 - version: 4.11.1(typescript@5.4.5) - '@lingui/conf': - specifier: ^4.11.1 - version: 4.11.1(typescript@5.4.5) - '@lingui/swc-plugin': - specifier: ^4.0.8 - version: 4.0.8(@lingui/macro@4.11.1(@lingui/react@4.11.1(react@18.3.1))(babel-plugin-macros@3.1.0)(typescript@5.4.5)) - '@lingui/vite-plugin': - specifier: ^4.11.1 - version: 4.11.1(typescript@5.4.5)(vite@5.3.0(@types/node@20.14.2)) - '@testing-library/react': - specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/node': - specifier: ^20.14.2 - version: 20.14.2 - '@types/react': - specifier: ^18.3.3 - version: 18.3.3 - '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 - '@vitejs/plugin-react-swc': - specifier: ^3.7.0 - version: 3.7.0(vite@5.3.0(@types/node@20.14.2)) - autoprefixer: - specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.38) - eslint: - specifier: ^9.4.0 - version: 9.4.0 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@9.4.0) - eslint-plugin-react-hooks: - specifier: 5.1.0-rc.0 - version: 5.1.0-rc.0(eslint@9.4.0) - eslint-plugin-react-refresh: - specifier: ^0.4.7 - version: 0.4.7(eslint@9.4.0) - globals: - specifier: ^15.4.0 - version: 15.4.0 - happy-dom: - specifier: ^14.12.0 - version: 14.12.0 - husky: - specifier: ^9.0.11 - version: 9.0.11 - lint-staged: - specifier: ^15.2.7 - version: 15.2.7 - postcss: - specifier: ^8.4.38 - version: 8.4.38 - prettier: - specifier: 3.3.2 - version: 3.3.2 - prettier-plugin-tailwindcss: - specifier: ^0.6.4 - version: 0.6.4(prettier@3.3.2) - tailwindcss: - specifier: ^3.4.4 - version: 3.4.4 - typescript: - specifier: ^5.4.5 - version: 5.4.5 - typescript-eslint: - specifier: 8.0.0-alpha.30 - version: 8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5) - vite: - specifier: ^5.3.0 - version: 5.3.0(@types/node@20.14.2) - vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.2)(happy-dom@14.12.0) - -packages: - - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.23.5': - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.23.9': - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.23.6': - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.23.6': - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.22.15': - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.23.3': - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.23.4': - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.23.9': - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.23.9': - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/runtime@7.23.9': - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.24.5': - resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.23.9': - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.23.9': - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.23.9': - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} - engines: {node: '>=6.9.0'} - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.17.19': - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.17.19': - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.17.19': - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.17.19': - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.17.19': - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.17.19': - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.17.19': - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.17.19': - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.17.19': - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.17.19': - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.17.19': - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.17.19': - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.17.19': - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.17.19': - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.17.19': - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.17.19': - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.17.19': - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.17.19': - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.17.19': - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.17.19': - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.17.19': - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.17.19': - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.15.1': - resolution: {integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.1.0': - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.4.0': - resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.3': - resolution: {integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@floating-ui/core@1.6.0': - resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} - - '@floating-ui/dom@1.6.1': - resolution: {integrity: sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==} - - '@floating-ui/react-dom@2.0.8': - resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react@0.26.13': - resolution: {integrity: sha512-kBa9wntpugzrZ8t/4yWelvSmEKZdeTXTJzrxqyrLmcU/n1SM4nvse8yQh2e1b37rJGvtu0EplV9+IkBrCJ1vkw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.1': - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.0': - resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} - engines: {node: '>=18.18'} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.3': - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.1': - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.22': - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} - - '@lingui/babel-plugin-extract-messages@4.11.1': - resolution: {integrity: sha512-ouyUTVy2QbHQMv5ib2zFzimjpdBYALCbqnzOJI0YKCOIJD/+sCIPKcCzVrLdKEu90qwy18J/Ho7Z66BhffGAkQ==} - engines: {node: '>=16.0.0'} - - '@lingui/cli@4.11.1': - resolution: {integrity: sha512-jA5pRB7UKwto704hMl2ohO/kGuoPEnf0lSg0qPlbVAfzQCTzq3TxJTgLEAoLQ5AL7aqXXysqrWOM9MEy7pJ4+w==} - engines: {node: '>=16.0.0'} - hasBin: true - - '@lingui/conf@4.11.1': - resolution: {integrity: sha512-rjMoHl80QhLIo+Zfs1s04Uh+Twpy9CZN01la48oti0g+zAniLk9RN8KlIGC4hyruVh1CsIwjabjLAdwj3cOKKQ==} - engines: {node: '>=16.0.0'} - - '@lingui/core@4.11.1': - resolution: {integrity: sha512-iG8Oz46kuYFugWFlCH/SRvnsMqhD2zc3csPUVD7RZN/374v6Djd6EzlQEla307J3qFrhfJDrhhZrIH8v0GANCw==} - engines: {node: '>=16.0.0'} - - '@lingui/format-po@4.11.1': - resolution: {integrity: sha512-8qeiL8tXkGjW9kjUFzO00ZibpP5S6fJHdvTprm7wMAjpLtUYbMlSn/XQi2uLpG+ZB+9/EPTKGhNOaa9Fktq53Q==} - engines: {node: '>=16.0.0'} - - '@lingui/macro@4.11.1': - resolution: {integrity: sha512-CwZNfI00ad4jmXkd/0cBM05pNALw96Xu9EmqRubQzqsN7FON9d48ZYUyK1lBnfZNkQjS82ack8tjkW1o3X725Q==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@lingui/react': ^4.0.0 - babel-plugin-macros: 2 || 3 - - '@lingui/message-utils@4.11.1': - resolution: {integrity: sha512-6dufjX9YdGZftgnzmrakvgiE0srp83GhrbK32dz33hASgAbF5vGHkxyOZLmnL3xYO5RgsrCJ5HGyiB/oQKlc9w==} - engines: {node: '>=16.0.0'} - - '@lingui/react@4.11.1': - resolution: {integrity: sha512-pqnAhp1gYJKz7dgDAIb1G1oaBq7OcuQJrXDq/ekrLqSBLozlpPskY5bmv20ygtjgoUiVOlD0+32UWDLafasc4w==} - engines: {node: '>=16.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@lingui/swc-plugin@4.0.8': - resolution: {integrity: sha512-zWvfFAvo2NOV+yFAjTbuEE0x53XEJlBS3EQ1R4xswjWSgpXWbLg45Rg37Ai2Ud0qeQkQLZnL93yt7dOwstX5eQ==} - peerDependencies: - '@lingui/macro': '4' - '@swc/core': '*' - next: '*' - peerDependenciesMeta: - '@swc/core': - optional: true - next: - optional: true - - '@lingui/vite-plugin@4.11.1': - resolution: {integrity: sha512-7frcYbHRvl2QwEyyU1o56s2/p+4ECY43ipBkvcihVWx8gwfN5y7lwFIpFP+vKKdigttcLlL4r2WmxW2YzosSmQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - vite: ^3 || ^4 || ^5.0.9 - - '@mantine/code-highlight@7.10.2': - resolution: {integrity: sha512-fzWUSr4Vj2s8y0k0l1FrtcBmYrOkP13lKzPbyYN76TSiACN8A5BimDQCGdd2V9CJgI4KTIPtD+F3Di3kBUPuSQ==} - peerDependencies: - '@mantine/core': 7.10.2 - '@mantine/hooks': 7.10.2 - react: ^18.2.0 - react-dom: ^18.2.0 - - '@mantine/core@7.10.2': - resolution: {integrity: sha512-sPqJY2A+zHAhi7/mJKL2EH92jKc6JDACJY17gXS+FcbIQgiaY1rxA/tdcybpq8FbswSgUYZO6CRL6XWEhatw5w==} - peerDependencies: - '@mantine/hooks': 7.10.2 - react: ^18.2.0 - react-dom: ^18.2.0 - - '@mantine/hooks@7.10.2': - resolution: {integrity: sha512-3m4flbR2yv3Bl21pHl5BKOOnqrInp/gVD72rozLeu/jzIZqQy8yFRTY2bUWCebPwNem//OD1rCORsBXNXvq31g==} - peerDependencies: - react: ^18.2.0 - - '@messageformat/parser@5.1.0': - resolution: {integrity: sha512-jKlkls3Gewgw6qMjKZ9SFfHUpdzEVdovKFtW1qRhJ3WI4FW5R/NnGDqr8SDGz+krWDO3ki94boMmQvGke1HwUQ==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@radix-ui/number@1.0.1': - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} - - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - - '@radix-ui/react-arrow@1.0.3': - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-aspect-ratio@1.0.3': - resolution: {integrity: sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-collection@1.0.3': - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-direction@1.0.1': - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-dropdown-menu@2.0.6': - resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.0.4': - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-label@2.0.2': - resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-menu@2.0.6': - resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-popper@1.1.3': - resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-portal@1.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-roving-focus@1.0.4': - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-separator@1.0.3': - resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slider@1.1.2': - resolution: {integrity: sha512-NKs15MJylfzVsCagVSWKhGGLNR1W9qWs+HtgbmjjVUB3B9+lb3PYoXxVju3kOrpf0VKyVCtZp+iTwVoqpa1Chw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-tooltip@1.0.7': - resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-previous@1.0.1': - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/rect@1.0.1': - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} - - '@redux-devtools/extension@3.3.0': - resolution: {integrity: sha512-X34S/rC8S/M1BIrkYD1mJ5f8vlH0BDqxXrs96cvxSBo4FhMdbhU+GUGsmNYov1xjSyLMHgo8NYrUG8bNX7525g==} - peerDependencies: - redux: ^3.1.0 || ^4.0.0 || ^5.0.0 - - '@rollup/rollup-android-arm-eabi@4.18.0': - resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.18.0': - resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.18.0': - resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.18.0': - resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.18.0': - resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.18.0': - resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.18.0': - resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.18.0': - resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.18.0': - resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.18.0': - resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.18.0': - resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.18.0': - resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} - cpu: [x64] - os: [win32] - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@swc/core-darwin-arm64@1.5.24': - resolution: {integrity: sha512-M7oLOcC0sw+UTyAuL/9uyB9GeO4ZpaBbH76JSH6g1m0/yg7LYJZGRmplhDmwVSDAR5Fq4Sjoi1CksmmGkgihGA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.5.24': - resolution: {integrity: sha512-MfcFjGGYognpSBSos2pYUNYJSmqEhuw5ceGr6qAdME7ddbjGXliza4W6FggsM+JnWwpqa31+e7/R+GetW4WkaQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.5.24': - resolution: {integrity: sha512-amI2pwtcWV3E/m/nf+AQtn1LWDzKLZyjCmWd3ms7QjEueWYrY8cU1Y4Wp7wNNsxIoPOi8zek1Uj2wwFD/pttNQ==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.5.24': - resolution: {integrity: sha512-sTSvmqMmgT1ynH/nP75Pc51s+iT4crZagHBiDOf5cq+kudUYjda9lWMs7xkXB/TUKFHPCRK0HGunl8bkwiIbuw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.5.24': - resolution: {integrity: sha512-vd2/hfOBGbrX21FxsFdXCUaffjkHvlZkeE2UMRajdXifwv79jqOHIJg3jXG1F3ZrhCghCzirFts4tAZgcG8XWg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.5.24': - resolution: {integrity: sha512-Zrdzi7NqzQxm2BvAG5KyOSBEggQ7ayrxh599AqqevJmsUXJ8o2nMiWQOBvgCGp7ye+Biz3pvZn1EnRzAp+TpUg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.5.24': - resolution: {integrity: sha512-1F8z9NRi52jdZQCGc5sflwYSctL6omxiVmIFVp8TC9nngjQKc00TtX/JC2Eo2HwvgupkFVl5YQJidAck9YtmJw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.5.24': - resolution: {integrity: sha512-cKpP7KvS6Xr0jFSTBXY53HZX/YfomK5EMQYpCVDOvfsZeYHN20sQSKXfpVLvA/q2igVt1zzy1XJcOhpJcgiKLg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.5.24': - resolution: {integrity: sha512-IoPWfi0iwqjZuf7gE223+B97/ZwkKbu7qL5KzGP7g3hJrGSKAvv7eC5Y9r2iKKtLKyv5R/T6Ho0kFR/usi7rHw==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.5.24': - resolution: {integrity: sha512-zHgF2k1uVJL8KIW+PnVz1To4a3Cz9THbh2z2lbehaF/gKHugH4c3djBozU4das1v35KOqf5jWIEviBLql2wDLQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.5.24': - resolution: {integrity: sha512-Eph9zvO4xvqWZGVzTdtdEJ0Vqf0VIML/o/e4Qd2RLOqtfgnlRi7avmMu5C0oqciJ0tk+hqdUKVUZ4JPoPaiGvQ==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/types@0.1.7': - resolution: {integrity: sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ==} - - '@testing-library/dom@10.1.0': - resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} - engines: {node: '>=18'} - - '@testing-library/react@16.0.0': - resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==} - engines: {node: '>=18'} - peerDependencies: - '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 - '@types/react-dom': ^18.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - - '@types/base16@1.0.5': - resolution: {integrity: sha512-OzOWrTluG9cwqidEzC/Q6FAmIPcnZfm8BFRlIx0+UIUqnuAmi5OS88O0RpT3Yz6qdmqObvUhasrbNsCofE4W9A==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/lodash@4.14.202': - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} - - '@types/node@20.14.2': - resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/prop-types@15.7.11': - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@17.0.32': - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - - '@typescript-eslint/eslint-plugin@8.0.0-alpha.30': - resolution: {integrity: sha512-2CBUupdkfbE3eATph4QeZejvT+M+1bVur+zXlVx09WN31phap51ps/qemeclnCbGEz6kTgBDmScrr9XmmF8/Pg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@8.0.0-alpha.30': - resolution: {integrity: sha512-tAYgFmgXU1MlCK3nbblUvJlDSibBvxtAQXGrF3IG0KmnRza9FXILZifHWL0rrwacDn40K53K607Fk2QkMjiGgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@8.0.0-alpha.30': - resolution: {integrity: sha512-FGW/iPWGyPFamAVZ60oCAthMqQrqafUGebF8UKuq/ha+e9SVG6YhJoRzurlQXOVf8dHfOhJ0ADMXyFnMc53clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.0.0-alpha.30': - resolution: {integrity: sha512-FrnhlCKEKZKRbpDviHkIU9tayIUGTOfa+SjvrRv6p/AJIUv6QT8oRboRjLH/cCuwUEbM0k5UtRWYug4albHUqQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@8.0.0-alpha.30': - resolution: {integrity: sha512-4WzLlw27SO9pK9UFj/Hu7WGo8WveT0SEiIpFVsV2WwtQmLps6kouwtVCB8GJPZKJyurhZhcqCoQVQFmpv441Vg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.0.0-alpha.30': - resolution: {integrity: sha512-WSXbc9ZcXI+7yC+6q95u77i8FXz6HOLsw3ST+vMUlFy1lFbXyFL/3e6HDKQCm2Clt0krnoCPiTGvIn+GkYPn4Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@8.0.0-alpha.30': - resolution: {integrity: sha512-rfhqfLqFyXhHNDwMnHiVGxl/Z2q/3guQ1jLlGQ0hi9Rb7inmwz42crM+NnLPR+2vEnwyw1P/g7fnQgQ3qvFx4g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - '@typescript-eslint/visitor-keys@8.0.0-alpha.30': - resolution: {integrity: sha512-XZuNurZxBqmr6ZIRIwWFq7j5RZd6ZlkId/HZEWyfciK+CWoyOxSF9Pv2VXH9Rlu2ZG2PfbhLz2Veszl4Pfn7yA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@vitejs/plugin-react-swc@3.7.0': - resolution: {integrity: sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==} - peerDependencies: - vite: ^4 || ^5 - - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - - '@vitest/runner@1.6.0': - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - - '@vitest/snapshot@1.6.0': - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-escapes@6.2.0: - resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} - engines: {node: '>=14.16'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - 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==} - - base16@1.0.0: - resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-fs-access@0.35.0: - resolution: {integrity: sha512-sLoadumpRfsjprP8XzVjpQc0jK8yqHBx0PtUTGYj2fftT+P/t+uyDAQdMgGAPKD011in/O+YYGh7fIs0oG/viw==} - - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-lite@1.0.30001616: - resolution: {integrity: sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==} - - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.5.1: - resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} - engines: {node: '>= 8.10.0'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-table@0.3.6: - resolution: {integrity: sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==} - engines: {node: '>= 0.2.0'} - - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} - - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - colors@1.0.3: - resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} - engines: {node: '>=0.1.90'} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - date-fns@3.6.0: - resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff-match-patch@1.0.5: - resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - electron-to-chromium@1.4.757: - resolution: {integrity: sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw==} - - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-react-hooks@5.1.0-rc.0: - resolution: {integrity: sha512-xBc+mRT2KSyzKm78GyaOFPyF4EnSRfTSmre88Ak8jG1HnpNGEiHETbCuXih8Xl796DryrJej/8IdW4oQ+m5kPg==} - 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 - - eslint-plugin-react-refresh@0.4.7: - resolution: {integrity: sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==} - peerDependencies: - eslint: '>=7' - - eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.4.0: - resolution: {integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - - espree@10.0.1: - resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - 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==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-east-asian-width@1.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} - engines: {node: '>=18'} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.4.0: - resolution: {integrity: sha512-unnwvMZpv0eDUyjNyh9DH/yxUaRYrEjW/qK4QcdrHg3oO11igUQrCSgODHEqxlKg8v2CD2Sd7UkqqEBoz5U7TQ==} - engines: {node: '>=18'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - happy-dom@14.12.0: - resolution: {integrity: sha512-dHcnlGFY2o2CdxfuYpqwSrBrpj/Kuzv4u4f3TU5yHW1GL24dKij4pv1BRjXnXc3uWo8qsCbToF9weaDsm/He8A==} - engines: {node: '>=16.0.0'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - - highlight.js@11.9.0: - resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==} - engines: {node: '>=12.0.0'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - husky@9.0.11: - resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} - engines: {node: '>=18'} - hasBin: true - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - immutable@4.3.5: - resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} - engines: {node: '>=18'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - javascript-stringify@2.1.0: - resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - - jotai-devtools@0.10.0: - resolution: {integrity: sha512-ltGzJMam7sXbC827U1A2H6rMg+iiK5VzaBmanVfVpWS4fK9/8Mq5NLaG3n2OFtsQgI0nUDaNl/3NObI38sBx+A==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=17.0.0' - - jotai-effect@1.0.0: - resolution: {integrity: sha512-eCgKKG4BACDzuJGYTu0xZRk1C1MEOvbAhC3L8w7YufQ2lSLORwNX/WFnCuZxLFX0sDLkTUeoUzOYaw8wnXY+UQ==} - peerDependencies: - jotai: '>=2.5.0' - - jotai@2.8.3: - resolution: {integrity: sha512-pR4plVvdbzB6zyt7VLLHPMAkcRSKhRIvZKd+qkifQLa3CEziEo1uwZjePj4acTmQrboiISBlYSdCz3gWcr1Nkg==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=17.0.0' - react: '>=17.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - - js-sha256@0.10.1: - resolution: {integrity: sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - 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-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsondiffpatch@0.5.0: - resolution: {integrity: sha512-Quz3MvAwHxVYNXsOByL7xI5EB2WYOeFswqaHIA3qOK3isRWTxiplBEocmmru6XmxDB2L7jDNYtYA4FyimoAFEw==} - engines: {node: '>=8.17.0'} - hasBin: true - bundledDependencies: [] - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lint-staged@15.2.7: - resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==} - engines: {node: '>=18.12.0'} - hasBin: true - - listr2@8.2.1: - resolution: {integrity: sha512-irTfvpib/rNiD637xeevjO2l3Z5loZmuaRi0L0YE5LfijwVY96oyVn0DFD3o/teAok7nfobMG1THvvcHh/BP6g==} - engines: {node: '>=18.0.0'} - - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.curry@4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} - - lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - log-update@6.0.0: - resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} - engines: {node: '>=18'} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lucide-react@0.394.0: - resolution: {integrity: sha512-PzTbJ0bsyXRhH59k5qe7MpTd5MxlpYZUcM9kGSwvPGAfnn0J6FElDwu2EX6Vuh//F7y60rcVJiFQ7EK9DCMgfw==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 - - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.2: - resolution: {integrity: sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==} - engines: {node: '>=8'} - - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - - mlly@1.7.0: - resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} - - moo@0.5.2: - resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-types@1.1.1: - resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} - - pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} - - pofile@1.1.4: - resolution: {integrity: sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g==} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-plugin-tailwindcss@0.6.4: - resolution: {integrity: sha512-3vhbIvlKyAWPaw9bUr2cw6M1BGx2Oy9CCLJyv+nxEiBGCTcL69WcAz2IFMGqx8IXSzQCInGSo2ujAByg9poHLQ==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - - prettier@3.3.2: - resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} - engines: {node: '>=14'} - hasBin: true - - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - pseudolocale@2.0.0: - resolution: {integrity: sha512-g1K9tCQYY4e3UGtnW8qs3kGWAOONxt7i5wuOFvf3N1EIIRhiLVIhZ9AM/ZyGTxsp231JbFywJU/EbJ5ZoqnZdg==} - engines: {node: '>=16.0.0'} - hasBin: true - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - ramda@0.27.2: - resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} - - react-base16-styling@0.9.1: - resolution: {integrity: sha512-1s0CY1zRBOQ5M3T61wetEpvQmsYSNtWEcdYzyZNxKa8t7oDvaOn9d21xrGezGAHFWLM7SHcktPuPTrvoqxSfKw==} - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-error-boundary@4.0.13: - resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} - peerDependencies: - react: '>=16.13.1' - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - - react-json-tree@0.18.0: - resolution: {integrity: sha512-Qe6HKSXrr++n9Y31nkRJ3XvQMATISpqigH1vEKhLwB56+nk5thTP0ITThpjxY6ZG/ubpVq/aEHIcyLP/OPHxeA==} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - react-number-format@5.3.4: - resolution: {integrity: sha512-2hHN5mbLuCDUx19bv0Q8wet67QqYK6xmtLQeY5xx+h7UXiMmRtaCwqko4mMPoKXLc6xAzwRrutg8XbTRlsfjRg==} - peerDependencies: - react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - - react-remove-scroll-bar@2.3.4: - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.7: - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-resizable-panels@2.0.10: - resolution: {integrity: sha512-1cQl5rp3VDWRL04XXX92lzM1hej2Fe5x+vpjYXcldfOjKwLV5JVrt5T6q0cTB5yfp4Wh+JIdYQ9A5EnZypO1DQ==} - peerDependencies: - react: ^16.14.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 - - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-textarea-autosize@8.5.3: - resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.5.0: - resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} - engines: {node: '>=8.10.0'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - redux@5.0.1: - resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.3.1: - resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} - - rollup@4.18.0: - resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} - engines: {node: '>=18'} - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string-width@7.1.0: - resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} - engines: {node: '>=18'} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - - tailwind-merge@2.3.0: - resolution: {integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==} - - tailwindcss-animate@1.0.7: - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - tailwindcss@3.4.4: - resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} - engines: {node: '>=14.0.0'} - hasBin: true - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - - type-fest@4.18.2: - resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==} - engines: {node: '>=16'} - - typescript-eslint@8.0.0-alpha.30: - resolution: {integrity: sha512-/vGhBMsK1TpadQh1eQ02c5pyiPGmKR9cVzX5C9plZ+LC0HPLpWoJbbTVfQN7BkIK7tUxDt2BFr3pFL5hDDrx7g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unraw@3.0.0: - resolution: {integrity: sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==} - - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - use-callback-ref@1.3.1: - resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-composed-ref@1.3.0: - resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - use-isomorphic-layout-effect@1.1.2: - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-latest@1.2.1: - resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite@5.3.0: - resolution: {integrity: sha512-hA6vAVK977NyW1Qw+fLvqSo7xDPej7von7C3DwwqPRmnnnK36XEBC/J3j1V5lP8fbt7y0TgTKJbpNGSwM+Bdeg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitest@1.6.0: - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yaml@2.4.3: - resolution: {integrity: sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==} - engines: {node: '>= 14'} - hasBin: true - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.2.1': - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - - '@babel/code-frame@7.23.5': - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - - '@babel/compat-data@7.23.5': {} - - '@babel/core@7.23.9': - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.23.6': - dependencies: - '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - jsesc: 2.5.2 - - '@babel/helper-compilation-targets@7.23.6': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-module-imports@7.22.15': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/helper-simple-access@7.22.5': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-string-parser@7.23.4': {} - - '@babel/helper-validator-identifier@7.22.20': {} - - '@babel/helper-validator-option@7.23.5': {} - - '@babel/helpers@7.23.9': - dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - transitivePeerDependencies: - - supports-color - - '@babel/highlight@7.23.4': - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/parser@7.23.9': - dependencies: - '@babel/types': 7.23.9 - - '@babel/runtime@7.23.9': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/runtime@7.24.5': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.23.9': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - - '@babel/traverse@7.23.9': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.23.9': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.17.19': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm@0.17.19': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-x64@0.17.19': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.17.19': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.17.19': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.17.19': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.17.19': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.17.19': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm@0.17.19': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.17.19': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.17.19': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.17.19': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.17.19': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.17.19': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.17.19': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-x64@0.17.19': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.17.19': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.17.19': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.17.19': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.17.19': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.17.19': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-x64@0.17.19': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)': - dependencies: - eslint: 9.4.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.10.0': {} - - '@eslint/config-array@0.15.1': - dependencies: - '@eslint/object-schema': 2.1.3 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@3.1.0': - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 10.0.1 - globals: 14.0.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.4.0': {} - - '@eslint/object-schema@2.1.3': {} - - '@floating-ui/core@1.6.0': - dependencies: - '@floating-ui/utils': 0.2.1 - - '@floating-ui/dom@1.6.1': - dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 - - '@floating-ui/react-dom@2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.6.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@floating-ui/react@0.26.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@floating-ui/utils': 0.2.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tabbable: 6.2.0 - - '@floating-ui/utils@0.2.1': {} - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.0': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.2 - '@types/yargs': 17.0.32 - chalk: 4.1.2 - - '@jridgewell/gen-mapping@0.3.3': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 - - '@jridgewell/resolve-uri@3.1.1': {} - - '@jridgewell/set-array@1.1.2': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.22': - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@lingui/babel-plugin-extract-messages@4.11.1': {} - - '@lingui/cli@4.11.1(typescript@5.4.5)': - dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/runtime': 7.24.5 - '@babel/types': 7.23.9 - '@lingui/babel-plugin-extract-messages': 4.11.1 - '@lingui/conf': 4.11.1(typescript@5.4.5) - '@lingui/core': 4.11.1 - '@lingui/format-po': 4.11.1(typescript@5.4.5) - '@lingui/message-utils': 4.11.1 - babel-plugin-macros: 3.1.0 - chalk: 4.1.2 - chokidar: 3.5.1 - cli-table: 0.3.6 - commander: 10.0.1 - convert-source-map: 2.0.0 - date-fns: 3.6.0 - esbuild: 0.17.19 - glob: 7.2.3 - inquirer: 7.3.3 - micromatch: 4.0.2 - normalize-path: 3.0.0 - ora: 5.4.1 - pathe: 1.1.2 - pkg-up: 3.1.0 - pofile: 1.1.4 - pseudolocale: 2.0.0 - ramda: 0.27.2 - source-map: 0.8.0-beta.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@lingui/conf@4.11.1(typescript@5.4.5)': - dependencies: - '@babel/runtime': 7.24.5 - chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.4.5) - jest-validate: 29.7.0 - jiti: 1.21.0 - lodash.get: 4.4.2 - transitivePeerDependencies: - - typescript - - '@lingui/core@4.11.1': - dependencies: - '@babel/runtime': 7.24.5 - '@lingui/message-utils': 4.11.1 - unraw: 3.0.0 - - '@lingui/format-po@4.11.1(typescript@5.4.5)': - dependencies: - '@lingui/conf': 4.11.1(typescript@5.4.5) - '@lingui/message-utils': 4.11.1 - date-fns: 3.6.0 - pofile: 1.1.4 - transitivePeerDependencies: - - typescript - - '@lingui/macro@4.11.1(@lingui/react@4.11.1(react@18.3.1))(babel-plugin-macros@3.1.0)(typescript@5.4.5)': - dependencies: - '@babel/runtime': 7.24.5 - '@babel/types': 7.23.9 - '@lingui/conf': 4.11.1(typescript@5.4.5) - '@lingui/core': 4.11.1 - '@lingui/message-utils': 4.11.1 - '@lingui/react': 4.11.1(react@18.3.1) - babel-plugin-macros: 3.1.0 - transitivePeerDependencies: - - typescript - - '@lingui/message-utils@4.11.1': - dependencies: - '@messageformat/parser': 5.1.0 - js-sha256: 0.10.1 - - '@lingui/react@4.11.1(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@lingui/core': 4.11.1 - react: 18.3.1 - - '@lingui/swc-plugin@4.0.8(@lingui/macro@4.11.1(@lingui/react@4.11.1(react@18.3.1))(babel-plugin-macros@3.1.0)(typescript@5.4.5))': - dependencies: - '@lingui/macro': 4.11.1(@lingui/react@4.11.1(react@18.3.1))(babel-plugin-macros@3.1.0)(typescript@5.4.5) - - '@lingui/vite-plugin@4.11.1(typescript@5.4.5)(vite@5.3.0(@types/node@20.14.2))': - dependencies: - '@lingui/cli': 4.11.1(typescript@5.4.5) - '@lingui/conf': 4.11.1(typescript@5.4.5) - vite: 5.3.0(@types/node@20.14.2) - transitivePeerDependencies: - - supports-color - - typescript - - '@mantine/code-highlight@7.10.2(@mantine/core@7.10.2(@mantine/hooks@7.10.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.10.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@mantine/core': 7.10.2(@mantine/hooks@7.10.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.10.2(react@18.3.1) - clsx: 2.1.1 - highlight.js: 11.9.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@mantine/core@7.10.2(@mantine/hooks@7.10.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react': 0.26.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.10.2(react@18.3.1) - clsx: 2.1.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-number-format: 5.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) - react-textarea-autosize: 8.5.3(@types/react@18.3.3)(react@18.3.1) - type-fest: 4.18.2 - transitivePeerDependencies: - - '@types/react' - - '@mantine/hooks@7.10.2(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@messageformat/parser@5.1.0': - dependencies: - moo: 0.5.2 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@radix-ui/number@1.0.1': - dependencies: - '@babel/runtime': 7.23.9 - - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.23.9 - - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-context@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-direction@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-id@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-label@2.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - aria-hidden: 1.2.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/rect': 1.0.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-slider@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-slot@1.0.2(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/rect': 1.0.1 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-size@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/rect@1.0.1': - dependencies: - '@babel/runtime': 7.23.9 - - '@redux-devtools/extension@3.3.0(redux@5.0.1)': - dependencies: - '@babel/runtime': 7.24.5 - immutable: 4.3.5 - redux: 5.0.1 - - '@rollup/rollup-android-arm-eabi@4.18.0': - optional: true - - '@rollup/rollup-android-arm64@4.18.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.18.0': - optional: true - - '@rollup/rollup-darwin-x64@4.18.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.18.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.18.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.18.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.18.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.18.0': - optional: true - - '@sinclair/typebox@0.27.8': {} - - '@swc/core-darwin-arm64@1.5.24': - optional: true - - '@swc/core-darwin-x64@1.5.24': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.5.24': - optional: true - - '@swc/core-linux-arm64-gnu@1.5.24': - optional: true - - '@swc/core-linux-arm64-musl@1.5.24': - optional: true - - '@swc/core-linux-x64-gnu@1.5.24': - optional: true - - '@swc/core-linux-x64-musl@1.5.24': - optional: true - - '@swc/core-win32-arm64-msvc@1.5.24': - optional: true - - '@swc/core-win32-ia32-msvc@1.5.24': - optional: true - - '@swc/core-win32-x64-msvc@1.5.24': - optional: true - - '@swc/core@1.5.24': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.7 - optionalDependencies: - '@swc/core-darwin-arm64': 1.5.24 - '@swc/core-darwin-x64': 1.5.24 - '@swc/core-linux-arm-gnueabihf': 1.5.24 - '@swc/core-linux-arm64-gnu': 1.5.24 - '@swc/core-linux-arm64-musl': 1.5.24 - '@swc/core-linux-x64-gnu': 1.5.24 - '@swc/core-linux-x64-musl': 1.5.24 - '@swc/core-win32-arm64-msvc': 1.5.24 - '@swc/core-win32-ia32-msvc': 1.5.24 - '@swc/core-win32-x64-msvc': 1.5.24 - - '@swc/counter@0.1.3': {} - - '@swc/types@0.1.7': - dependencies: - '@swc/counter': 0.1.3 - - '@testing-library/dom@10.1.0': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.24.5 - '@types/aria-query': 5.0.4 - aria-query: 5.3.0 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - - '@testing-library/react@16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@testing-library/dom': 10.1.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@types/aria-query@5.0.4': {} - - '@types/base16@1.0.5': {} - - '@types/estree@1.0.5': {} - - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - - '@types/lodash@4.14.202': {} - - '@types/node@20.14.2': - dependencies: - undici-types: 5.26.5 - - '@types/parse-json@4.0.2': {} - - '@types/prop-types@15.7.11': {} - - '@types/react-dom@18.3.0': - dependencies: - '@types/react': 18.3.3 - - '@types/react@18.3.3': - dependencies: - '@types/prop-types': 15.7.11 - csstype: 3.1.3 - - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@17.0.32': - dependencies: - '@types/yargs-parser': 21.0.3 - - '@typescript-eslint/eslint-plugin@8.0.0-alpha.30(@typescript-eslint/parser@8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.0.0-alpha.30 - '@typescript-eslint/type-utils': 8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 - eslint: 9.4.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/scope-manager': 8.0.0-alpha.30 - '@typescript-eslint/types': 8.0.0-alpha.30 - '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 - debug: 4.3.4 - eslint: 9.4.0 - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.0.0-alpha.30': - dependencies: - '@typescript-eslint/types': 8.0.0-alpha.30 - '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 - - '@typescript-eslint/type-utils@8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.4.5) - '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5) - debug: 4.3.4 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - eslint - - supports-color - - '@typescript-eslint/types@8.0.0-alpha.30': {} - - '@typescript-eslint/typescript-estree@8.0.0-alpha.30(typescript@5.4.5)': - dependencies: - '@typescript-eslint/types': 8.0.0-alpha.30 - '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) - '@typescript-eslint/scope-manager': 8.0.0-alpha.30 - '@typescript-eslint/types': 8.0.0-alpha.30 - '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.4.5) - eslint: 9.4.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@8.0.0-alpha.30': - dependencies: - '@typescript-eslint/types': 8.0.0-alpha.30 - eslint-visitor-keys: 3.4.3 - - '@vitejs/plugin-react-swc@3.7.0(vite@5.3.0(@types/node@20.14.2))': - dependencies: - '@swc/core': 1.5.24 - vite: 5.3.0(@types/node@20.14.2) - transitivePeerDependencies: - - '@swc/helpers' - - '@vitest/expect@1.6.0': - dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.4.1 - - '@vitest/runner@1.6.0': - dependencies: - '@vitest/utils': 1.6.0 - p-limit: 5.0.0 - pathe: 1.1.2 - - '@vitest/snapshot@1.6.0': - dependencies: - magic-string: 0.30.10 - pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/spy@1.6.0': - dependencies: - tinyspy: 2.2.1 - - '@vitest/utils@1.6.0': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - - acorn-walk@8.3.2: {} - - acorn@8.11.3: {} - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-escapes@6.2.0: - dependencies: - type-fest: 3.13.1 - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - - argparse@2.0.1: {} - - aria-hidden@1.2.3: - dependencies: - tslib: 2.6.2 - - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - - array-union@2.1.0: {} - - assertion-error@1.1.0: {} - - autoprefixer@10.4.19(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001616 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.24.5 - cosmiconfig: 7.1.0 - resolve: 1.22.8 - - balanced-match@1.0.2: {} - - base16@1.0.0: {} - - base64-js@1.5.1: {} - - binary-extensions@2.2.0: {} - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-fs-access@0.35.0: {} - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001616 - electron-to-chromium: 1.4.757 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - cac@6.7.14: {} - - callsites@3.1.0: {} - - camelcase-css@2.0.1: {} - - camelcase@6.3.0: {} - - caniuse-lite@1.0.30001616: {} - - chai@4.4.1: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - chardet@0.7.0: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.5.1: - 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.5.0 - optionalDependencies: - fsevents: 2.3.3 - - 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 - - class-variance-authority@0.7.0: - dependencies: - clsx: 2.0.0 - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - - cli-spinners@2.9.2: {} - - cli-table@0.3.6: - dependencies: - colors: 1.0.3 - - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.1.0 - - cli-width@3.0.0: {} - - clone@1.0.4: {} - - clsx@2.0.0: {} - - clsx@2.1.1: {} - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - color@3.2.1: - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - - colorette@2.0.20: {} - - colors@1.0.3: {} - - commander@10.0.1: {} - - commander@12.1.0: {} - - commander@4.1.1: {} - - concat-map@0.0.1: {} - - confbox@0.1.7: {} - - convert-source-map@2.0.0: {} - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@8.3.6(typescript@5.4.5): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.4.5 - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - cssesc@3.0.0: {} - - csstype@3.1.3: {} - - date-fns@3.6.0: {} - - debug@4.3.4: - dependencies: - ms: 2.1.2 - - deep-eql@4.1.3: - dependencies: - type-detect: 4.0.8 - - deep-is@0.1.4: {} - - defaults@1.0.4: - dependencies: - clone: 1.0.4 - - dequal@2.0.3: {} - - detect-node-es@1.1.0: {} - - didyoumean@1.2.2: {} - - diff-match-patch@1.0.5: {} - - diff-sequences@29.6.3: {} - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - dlv@1.1.3: {} - - dom-accessibility-api@0.5.16: {} - - eastasianwidth@0.2.0: {} - - electron-to-chromium@1.4.757: {} - - emoji-regex@10.3.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - entities@4.5.0: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - esbuild@0.17.19: - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - escalade@3.1.2: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@4.0.0: {} - - eslint-config-prettier@9.1.0(eslint@9.4.0): - dependencies: - eslint: 9.4.0 - - eslint-plugin-react-hooks@5.1.0-rc.0(eslint@9.4.0): - dependencies: - eslint: 9.4.0 - - eslint-plugin-react-refresh@0.4.7(eslint@9.4.0): - dependencies: - eslint: 9.4.0 - - eslint-scope@8.0.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.0.0: {} - - eslint@9.4.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/config-array': 0.15.1 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.4.0 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.0 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 - eslint-visitor-keys: 4.0.0 - espree: 10.0.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - espree@10.0.1: - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 4.0.0 - - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.5 - - esutils@2.0.3: {} - - eventemitter3@5.0.1: {} - - execa@8.0.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.2.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.7 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.2.9 - keyv: 4.5.4 - - flatted@3.2.9: {} - - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - fraction.js@4.3.7: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - gensync@1.0.0-beta.2: {} - - get-east-asian-width@1.2.0: {} - - get-func-name@2.0.2: {} - - get-nonce@1.0.1: {} - - get-stream@8.0.1: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.3.10: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globals@11.12.0: {} - - globals@14.0.0: {} - - globals@15.4.0: {} - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - - graphemer@1.4.0: {} - - happy-dom@14.12.0: - dependencies: - entities: 4.5.0 - webidl-conversions: 7.0.0 - whatwg-mimetype: 3.0.0 - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - hasown@2.0.0: - dependencies: - function-bind: 1.1.2 - - highlight.js@11.9.0: {} - - human-signals@5.0.0: {} - - husky@9.0.11: {} - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - ieee754@1.2.1: {} - - ignore@5.3.1: {} - - immutable@4.3.5: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - inquirer@7.3.3: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - - is-arrayish@0.2.1: {} - - is-arrayish@0.3.2: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.2.0 - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-fullwidth-code-point@4.0.0: {} - - is-fullwidth-code-point@5.0.0: - dependencies: - get-east-asian-width: 1.2.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-interactive@1.0.0: {} - - is-number@7.0.0: {} - - is-path-inside@3.0.3: {} - - is-stream@3.0.0: {} - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - jackspeak@2.3.6: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - javascript-stringify@2.1.0: {} - - jest-get-type@29.6.3: {} - - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - - jiti@1.21.0: {} - - jotai-devtools@0.10.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@5.0.1): - dependencies: - '@mantine/code-highlight': 7.10.2(@mantine/core@7.10.2(@mantine/hooks@7.10.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.10.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/core': 7.10.2(@mantine/hooks@7.10.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.10.2(react@18.3.1) - '@redux-devtools/extension': 3.3.0(redux@5.0.1) - clsx: 2.1.1 - javascript-stringify: 2.1.0 - jsondiffpatch: 0.5.0 - react: 18.3.1 - react-base16-styling: 0.9.1 - react-error-boundary: 4.0.13(react@18.3.1) - react-json-tree: 0.18.0(@types/react@18.3.3)(react@18.3.1) - react-resizable-panels: 2.0.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - react-dom - - redux - - jotai-effect@1.0.0(jotai@2.8.3(@types/react@18.3.3)(react@18.3.1)): - dependencies: - jotai: 2.8.3(@types/react@18.3.3)(react@18.3.1) - - jotai@2.8.3(@types/react@18.3.3)(react@18.3.1): - optionalDependencies: - '@types/react': 18.3.3 - react: 18.3.1 - - js-sha256@0.10.1: {} - - js-tokens@4.0.0: {} - - js-tokens@9.0.0: {} - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsesc@2.5.2: {} - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json5@2.2.3: {} - - jsondiffpatch@0.5.0: - dependencies: - chalk: 3.0.0 - diff-match-patch: 1.0.5 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - leven@3.1.0: {} - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lilconfig@2.1.0: {} - - lilconfig@3.1.1: {} - - lines-and-columns@1.2.4: {} - - lint-staged@15.2.7: - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - debug: 4.3.4 - execa: 8.0.1 - lilconfig: 3.1.1 - listr2: 8.2.1 - micromatch: 4.0.7 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.4.3 - transitivePeerDependencies: - - supports-color - - listr2@8.2.1: - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.0.0 - rfdc: 1.3.1 - wrap-ansi: 9.0.0 - - local-pkg@0.5.0: - dependencies: - mlly: 1.7.0 - pkg-types: 1.1.1 - - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.curry@4.1.1: {} - - lodash.get@4.4.2: {} - - lodash.merge@4.6.2: {} - - lodash.sortby@4.7.0: {} - - lodash@4.17.21: {} - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - log-update@6.0.0: - dependencies: - ansi-escapes: 6.2.0 - cli-cursor: 4.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - lru-cache@10.2.0: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lucide-react@0.394.0(react@18.3.1): - dependencies: - react: 18.3.1 - - lz-string@1.5.0: {} - - magic-string@0.30.10: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.2: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - micromatch@4.0.7: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 - - minipass@7.0.4: {} - - mlly@1.7.0: - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.1.1 - ufo: 1.5.3 - - moo@0.5.2: {} - - ms@2.1.2: {} - - mute-stream@0.0.8: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.7: {} - - natural-compare@1.4.0: {} - - node-releases@2.0.14: {} - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - npm-run-path@5.2.0: - dependencies: - path-key: 4.0.0 - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - os-tmpdir@1.0.2: {} - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@5.0.0: - dependencies: - yocto-queue: 1.0.0 - - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-try@2.2.0: {} - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - path-exists@3.0.0: {} - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-parse@1.0.7: {} - - path-scurry@1.10.1: - dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - - path-type@4.0.0: {} - - pathe@1.1.2: {} - - pathval@1.1.1: {} - - picocolors@1.0.0: {} - - picomatch@2.3.1: {} - - pidtree@0.6.0: {} - - pify@2.3.0: {} - - pirates@4.0.6: {} - - pkg-types@1.1.1: - dependencies: - confbox: 0.1.7 - mlly: 1.7.0 - pathe: 1.1.2 - - pkg-up@3.1.0: - dependencies: - find-up: 3.0.0 - - pofile@1.1.4: {} - - postcss-import@15.1.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.38): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.38 - - postcss-load-config@4.0.2(postcss@8.4.38): - dependencies: - lilconfig: 3.1.1 - yaml: 2.4.3 - optionalDependencies: - postcss: 8.4.38 - - postcss-nested@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.15 - - postcss-selector-parser@6.0.15: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - - prelude-ls@1.2.1: {} - - prettier-plugin-tailwindcss@0.6.4(prettier@3.3.2): - dependencies: - prettier: 3.3.2 - - prettier@3.3.2: {} - - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - pseudolocale@2.0.0: - dependencies: - commander: 10.0.1 - - punycode@2.3.1: {} - - queue-microtask@1.2.3: {} - - ramda@0.27.2: {} - - react-base16-styling@0.9.1: - dependencies: - '@babel/runtime': 7.24.5 - '@types/base16': 1.0.5 - '@types/lodash': 4.14.202 - base16: 1.0.0 - color: 3.2.1 - csstype: 3.1.3 - lodash.curry: 4.1.1 - - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-error-boundary@4.0.13(react@18.3.1): - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - - react-is@16.13.1: {} - - react-is@17.0.2: {} - - react-is@18.2.0: {} - - react-json-tree@0.18.0(@types/react@18.3.3)(react@18.3.1): - dependencies: - '@babel/runtime': 7.24.5 - '@types/lodash': 4.14.202 - '@types/react': 18.3.3 - react: 18.3.1 - react-base16-styling: 0.9.1 - - react-number-format@5.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react-remove-scroll-bar@2.3.4(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.3.3 - - react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 - use-callback-ref: 1.3.1(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - - react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 - use-callback-ref: 1.3.1(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - - react-resizable-panels@2.0.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): - dependencies: - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.3.1 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.3.3 - - react-textarea-autosize@8.5.3(@types/react@18.3.3)(react@18.3.1): - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - use-composed-ref: 1.3.0(react@18.3.1) - use-latest: 1.2.1(@types/react@18.3.3)(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.5.0: - dependencies: - picomatch: 2.3.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - redux@5.0.1: {} - - regenerator-runtime@0.14.1: {} - - resolve-from@4.0.0: {} - - resolve@1.22.8: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - reusify@1.0.4: {} - - rfdc@1.3.1: {} - - rollup@4.18.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.18.0 - '@rollup/rollup-android-arm64': 4.18.0 - '@rollup/rollup-darwin-arm64': 4.18.0 - '@rollup/rollup-darwin-x64': 4.18.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 - '@rollup/rollup-linux-arm-musleabihf': 4.18.0 - '@rollup/rollup-linux-arm64-gnu': 4.18.0 - '@rollup/rollup-linux-arm64-musl': 4.18.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 - '@rollup/rollup-linux-riscv64-gnu': 4.18.0 - '@rollup/rollup-linux-s390x-gnu': 4.18.0 - '@rollup/rollup-linux-x64-gnu': 4.18.0 - '@rollup/rollup-linux-x64-musl': 4.18.0 - '@rollup/rollup-win32-arm64-msvc': 4.18.0 - '@rollup/rollup-win32-ia32-msvc': 4.18.0 - '@rollup/rollup-win32-x64-msvc': 4.18.0 - fsevents: 2.3.3 - - run-async@2.4.1: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - rxjs@6.6.7: - dependencies: - tslib: 1.14.1 - - safe-buffer@5.2.1: {} - - safer-buffer@2.1.2: {} - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - semver@6.3.1: {} - - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - siginfo@2.0.0: {} - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - - slash@3.0.0: {} - - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - slice-ansi@7.1.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 - - source-map-js@1.2.0: {} - - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 - - stackback@0.0.2: {} - - std-env@3.7.0: {} - - string-argv@0.3.2: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string-width@7.1.0: - dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 - strip-ansi: 7.1.0 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - strip-final-newline@3.0.0: {} - - strip-json-comments@3.1.1: {} - - strip-literal@2.1.0: - dependencies: - js-tokens: 9.0.0 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 10.3.10 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - tabbable@6.2.0: {} - - tailwind-merge@2.3.0: - dependencies: - '@babel/runtime': 7.24.5 - - tailwindcss-animate@1.0.7(tailwindcss@3.4.4): - dependencies: - tailwindcss: 3.4.4 - - tailwindcss@3.4.4: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.7 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.15 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - text-table@0.2.0: {} - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - through@2.3.8: {} - - tinybench@2.8.0: {} - - tinypool@0.8.4: {} - - tinyspy@2.2.1: {} - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - to-fast-properties@2.0.0: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - - ts-api-utils@1.3.0(typescript@5.4.5): - dependencies: - typescript: 5.4.5 - - ts-interface-checker@0.1.13: {} - - tslib@1.14.1: {} - - tslib@2.6.2: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-fest@0.21.3: {} - - type-fest@3.13.1: {} - - type-fest@4.18.2: {} - - typescript-eslint@8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5): - dependencies: - '@typescript-eslint/eslint-plugin': 8.0.0-alpha.30(@typescript-eslint/parser@8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/parser': 8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@9.4.0)(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - eslint - - supports-color - - typescript@5.4.5: {} - - ufo@1.5.3: {} - - undici-types@5.26.5: {} - - unraw@3.0.0: {} - - update-browserslist-db@1.0.13(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - use-callback-ref@1.3.1(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.3.3 - - use-composed-ref@1.3.0(react@18.3.1): - dependencies: - react: 18.3.1 - - use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - use-latest@1.2.1(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - - use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - detect-node-es: 1.1.0 - react: 18.3.1 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.3.3 - - util-deprecate@1.0.2: {} - - vite-node@1.6.0(@types/node@20.14.2): - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.3.0(@types/node@20.14.2) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite@5.3.0(@types/node@20.14.2): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.38 - rollup: 4.18.0 - optionalDependencies: - '@types/node': 20.14.2 - fsevents: 2.3.3 - - vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0): - dependencies: - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.10 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.8.0 - tinypool: 0.8.4 - vite: 5.3.0(@types/node@20.14.2) - vite-node: 1.6.0(@types/node@20.14.2) - why-is-node-running: 2.2.2 - optionalDependencies: - '@types/node': 20.14.2 - happy-dom: 14.12.0 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - webidl-conversions@4.0.2: {} - - webidl-conversions@7.0.0: {} - - whatwg-mimetype@3.0.0: {} - - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - why-is-node-running@2.2.2: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrap-ansi@9.0.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 7.1.0 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml@1.10.2: {} - - yaml@2.4.3: {} - - yocto-queue@0.1.0: {} - - yocto-queue@1.0.0: {} diff --git a/turbo.json b/turbo.json new file mode 100644 index 0000000..653b384 --- /dev/null +++ b/turbo.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://turbo.build/schema.json", + "ui": "tui", + "tasks": { + "build": { + "dependsOn": [ + "^build" + ], + "outputs": [ + "dist/**" + ] + }, + "web#build": { + "dependsOn": [ + "^build" + ], + "env": [ + "VITE_*", + "DEV" + ] + }, + "dev": { + "cache": false, + "persistent": true + }, + "lint": {}, + "test": {} + } +} \ No newline at end of file From f30a6fb898ff3cee366cae3ce11586a50d84546c Mon Sep 17 00:00:00 2001 From: gzukas Date: Sun, 19 Jan 2025 13:03:32 +0200 Subject: [PATCH 02/25] feat: add uncomitted api --- apps/api/README.md | 15 +++++ apps/api/package.json | 19 ++++++ apps/api/src/bun.d.ts | 9 +++ apps/api/src/index.ts | 27 ++++++++ apps/api/src/routes/screenshots.ts | 76 +++++++++++++++++++++ apps/api/tsconfig.json | 103 +++++++++++++++++++++++++++++ 6 files changed, 249 insertions(+) create mode 100644 apps/api/README.md create mode 100644 apps/api/package.json create mode 100644 apps/api/src/bun.d.ts create mode 100644 apps/api/src/index.ts create mode 100644 apps/api/src/routes/screenshots.ts create mode 100644 apps/api/tsconfig.json diff --git a/apps/api/README.md b/apps/api/README.md new file mode 100644 index 0000000..688c87e --- /dev/null +++ b/apps/api/README.md @@ -0,0 +1,15 @@ +# Elysia with Bun runtime + +## Getting Started +To get started with this template, simply paste this command into your terminal: +```bash +bun create elysia ./elysia-example +``` + +## Development +To start the development server run: +```bash +bun run dev +``` + +Open http://localhost:3000/ with your browser to see the result. \ No newline at end of file diff --git a/apps/api/package.json b/apps/api/package.json new file mode 100644 index 0000000..a7779fa --- /dev/null +++ b/apps/api/package.json @@ -0,0 +1,19 @@ +{ + "name": "@shadowave/api", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "bun run --watch src/index.ts", + "start": "bun run src/index.ts" + }, + "dependencies": { + "@elysiajs/cors": "^1.2.0", + "close-with-grace": "^2.2.0", + "elysia": "latest", + "puppeteer": "^24.1.0" + }, + "devDependencies": { + "bun-types": "latest" + }, + "module": "src/index.js" +} \ No newline at end of file diff --git a/apps/api/src/bun.d.ts b/apps/api/src/bun.d.ts new file mode 100644 index 0000000..66b5af2 --- /dev/null +++ b/apps/api/src/bun.d.ts @@ -0,0 +1,9 @@ +declare module "bun" { + interface Env { + SHADOWAVE_HOST?: string; + SHADOWAVE_PORT?: string; + SHADOWAVE_CORS_ORIGIN?: string; + } +} + +export {}; diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts new file mode 100644 index 0000000..fabcffb --- /dev/null +++ b/apps/api/src/index.ts @@ -0,0 +1,27 @@ +import { Elysia } from 'elysia'; +import { cors } from '@elysiajs/cors'; +import closeWithGrace from 'close-with-grace'; +import { screenshots } from './routes/screenshots.js'; + +const app = new Elysia() + .use( + cors({ + origin: process.env.SHADOWAVE_CORS_ORIGIN?.split(',') ?? true + }) + ) + .use(screenshots) + .listen({ + hostname: process.env.SHADOWAVE_HOST || '0.0.0.0', + port: process.env.SHADOWAVE_PORT || 3001 + }); + +closeWithGrace({ delay: 2000 }, async ({ err }) => { + if (err) { + console.error(err); + } + await app.stop(); +}); + +console.log( + `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}` +); diff --git a/apps/api/src/routes/screenshots.ts b/apps/api/src/routes/screenshots.ts new file mode 100644 index 0000000..29d294b --- /dev/null +++ b/apps/api/src/routes/screenshots.ts @@ -0,0 +1,76 @@ +import { Elysia, form, t } from 'elysia'; +import puppeteer, { type Browser, type Device, KnownDevices } from 'puppeteer'; + +const deviceType = t.Union([t.Literal('mobile'), t.Literal('tablet')]); + +type ColorScheme = 'light' | 'dark'; +type DeviceType = typeof deviceType.static; + +const defaultDeviceMapping: Record = { + mobile: KnownDevices['iPhone 15'], + tablet: KnownDevices['iPad'] +}; + +const defaultColorSchemes: ColorScheme[] = ['dark', 'light']; + +interface ScreenshotsOptions { + deviceType?: DeviceType; + deviceMapping?: Record; + colorSchemes?: ColorScheme[]; +} + +const screenshotService = new Elysia({ name: 'Service.Screenshot' }) + .decorate('browser', await puppeteer.launch({ headless: 'shell'})) + .derive({ as: 'scoped' }, ({ browser }) => ({ + async *screenshots(url: string, options: ScreenshotsOptions) { + const { + deviceType, + deviceMapping = defaultDeviceMapping, + colorSchemes = defaultColorSchemes + } = options; + + const page = await browser.newPage(); + if (deviceType) { + const device = deviceMapping[deviceType]; + await page.emulate(device); + } + + for (const colorScheme of colorSchemes) { + await page.emulateMediaFeatures([ + { name: 'prefers-color-scheme', value: colorScheme } + ]); + await page.goto(url, { timeout: 100000, waitUntil: 'networkidle0' }); + const screenshot = await page.screenshot({ + fullPage: true, + type: 'webp' + }); + yield [colorScheme, screenshot] as const; + } + + await page.close(); + } + })) + .onStop(async ({ decorator: { browser } }) => { + console.log('closing browser'); + await browser.close(); + console.log('closed'); + }); + +export const screenshots = new Elysia().use(screenshotService).get( + '/screenshots/:url', + async ({ params: { url }, query, screenshots }) => { + const formData = form({}); + for await (const [colorScheme, screenshot] of screenshots( + decodeURIComponent(url), + query + )) { + formData.append(colorScheme, new Blob([screenshot])); + } + return formData; + }, + { + query: t.Object({ + deviceType: t.Optional(deviceType) + }) + } +); diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json new file mode 100644 index 0000000..1ca2350 --- /dev/null +++ b/apps/api/tsconfig.json @@ -0,0 +1,103 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "ES2021", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "ES2022", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + "types": ["bun-types"], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From c49a302f0828e43892c4c9f87e788205e80d2de5 Mon Sep 17 00:00:00 2001 From: gzukas Date: Fri, 24 Jan 2025 14:45:00 +0200 Subject: [PATCH 03/25] feat: initial image import UI --- apps/api/README.md | 15 -- apps/api/package.json | 7 +- apps/api/src/index.ts | 2 + apps/api/src/routes/screenshots.ts | 30 ++- apps/api/tsconfig.json | 104 +-------- apps/web/.env.example | 1 + apps/web/components.json | 13 +- apps/web/package.json | 52 +++-- apps/web/postcss.config.js | 6 - apps/web/postcss.config.mjs | 9 + apps/web/src/App.tsx | 10 +- apps/web/src/JotaiDevTools.tsx | 11 - apps/web/src/atoms/amplitudeAtoms.ts | 6 +- apps/web/src/atoms/exportAtoms.ts | 6 +- apps/web/src/atoms/imagesAtom.ts | 36 +--- apps/web/src/atoms/importAtom.ts | 46 ++++ apps/web/src/atoms/isImportOpenAtom.ts | 3 + apps/web/src/atoms/largestImageAtom.ts | 6 +- apps/web/src/atoms/orderedImagesAtom.ts | 8 +- apps/web/src/atoms/scaleAtom.ts | 6 +- apps/web/src/atoms/sensibleDefaultsEffect.ts | 28 +-- apps/web/src/atoms/waveAtom.ts | 10 +- apps/web/src/atoms/wavelengthAtoms.ts | 4 +- apps/web/src/components/AtomSlider.tsx | 6 +- apps/web/src/components/ChangeTheme.tsx | 6 +- apps/web/src/components/ChooseFiles.tsx | 40 ++++ apps/web/src/components/ChooseImages.tsx | 62 ------ apps/web/src/components/Controls.tsx | 25 ++- apps/web/src/components/CopyImage.tsx | 53 ++--- apps/web/src/components/Editor.tsx | 71 +++--- apps/web/src/components/ExportImage.tsx | 88 ++++---- apps/web/src/components/ImportImages.tsx | 204 ++++++++++++++++++ apps/web/src/components/LoadableIcon.tsx | 8 +- apps/web/src/components/RemoveImages.tsx | 58 +++++ apps/web/src/components/ReverseImages.tsx | 41 ++-- apps/web/src/components/SeeExample.tsx | 14 +- apps/web/src/components/ui/AspectRatio.tsx | 5 - apps/web/src/components/ui/Button.tsx | 56 ----- apps/web/src/components/ui/Input.tsx | 24 --- apps/web/src/components/ui/Label.tsx | 24 --- apps/web/src/components/ui/Separator.tsx | 29 --- apps/web/src/components/ui/Slider.tsx | 32 --- apps/web/src/constants.ts | 4 +- .../src/hooks/__tests__/useClipboard.test.ts | 4 +- apps/web/src/hooks/useClipboard.ts | 6 +- apps/web/src/hooks/useImagesDisclosure.ts | 30 --- apps/web/src/hooks/useThemeEffect.ts | 4 +- apps/web/src/locales/en.po | 93 +++++--- apps/web/src/locales/en.ts | 5 +- apps/web/src/main.tsx | 5 +- apps/web/src/types.ts | 4 +- .../src/utils/atomWithExpiringWriteState.ts | 32 +++ apps/web/src/utils/client.ts | 4 + apps/web/src/utils/rasterize.ts | 2 +- apps/web/src/vite-env.d.ts | 8 + apps/web/tailwind.config.ts | 85 +------- apps/web/tsconfig.json | 26 +-- apps/web/vite.config.ts | 9 +- bun.lockb | Bin 267162 -> 262498 bytes package.json | 8 +- packages/schema/package.json | 12 ++ packages/schema/src/schema.ts | 9 + packages/ui/components.json | 20 ++ packages/ui/package.json | 47 ++++ packages/ui/src/components/alert-dialog.tsx | 139 ++++++++++++ packages/ui/src/components/aspect-ratio.tsx | 5 + packages/ui/src/components/button.tsx | 56 +++++ packages/ui/src/components/dialog.tsx | 120 +++++++++++ .../ui/src/components/dropdown-menu.tsx | 94 ++++---- packages/ui/src/components/form.tsx | 176 +++++++++++++++ packages/ui/src/components/input.tsx | 22 ++ packages/ui/src/components/label.tsx | 24 +++ packages/ui/src/components/separator.tsx | 29 +++ packages/ui/src/components/slider.tsx | 33 +++ packages/ui/src/components/toggle-group.tsx | 61 ++++++ packages/ui/src/components/toggle.tsx | 44 ++++ .../ui/src/components/tooltip.tsx | 31 ++- {apps/web => packages/ui}/src/lib/utils.ts | 2 +- .../ui/src/styles/globals.css | 0 packages/ui/tailwind.config.ts | 79 +++++++ packages/ui/tsconfig.json | 25 +++ 81 files changed, 1708 insertions(+), 914 deletions(-) delete mode 100644 apps/api/README.md create mode 100644 apps/web/.env.example delete mode 100644 apps/web/postcss.config.js create mode 100644 apps/web/postcss.config.mjs delete mode 100644 apps/web/src/JotaiDevTools.tsx create mode 100644 apps/web/src/atoms/importAtom.ts create mode 100644 apps/web/src/atoms/isImportOpenAtom.ts create mode 100644 apps/web/src/components/ChooseFiles.tsx delete mode 100644 apps/web/src/components/ChooseImages.tsx create mode 100644 apps/web/src/components/ImportImages.tsx create mode 100644 apps/web/src/components/RemoveImages.tsx delete mode 100644 apps/web/src/components/ui/AspectRatio.tsx delete mode 100644 apps/web/src/components/ui/Button.tsx delete mode 100644 apps/web/src/components/ui/Input.tsx delete mode 100644 apps/web/src/components/ui/Label.tsx delete mode 100644 apps/web/src/components/ui/Separator.tsx delete mode 100644 apps/web/src/components/ui/Slider.tsx delete mode 100644 apps/web/src/hooks/useImagesDisclosure.ts create mode 100644 apps/web/src/utils/atomWithExpiringWriteState.ts create mode 100644 apps/web/src/utils/client.ts create mode 100644 packages/schema/package.json create mode 100644 packages/schema/src/schema.ts create mode 100644 packages/ui/components.json create mode 100644 packages/ui/package.json create mode 100644 packages/ui/src/components/alert-dialog.tsx create mode 100644 packages/ui/src/components/aspect-ratio.tsx create mode 100644 packages/ui/src/components/button.tsx create mode 100644 packages/ui/src/components/dialog.tsx rename apps/web/src/components/ui/DropdownMenu.tsx => packages/ui/src/components/dropdown-menu.tsx (70%) create mode 100644 packages/ui/src/components/form.tsx create mode 100644 packages/ui/src/components/input.tsx create mode 100644 packages/ui/src/components/label.tsx create mode 100644 packages/ui/src/components/separator.tsx create mode 100644 packages/ui/src/components/slider.tsx create mode 100644 packages/ui/src/components/toggle-group.tsx create mode 100644 packages/ui/src/components/toggle.tsx rename apps/web/src/components/ui/Tooltip.tsx => packages/ui/src/components/tooltip.tsx (60%) rename {apps/web => packages/ui}/src/lib/utils.ts (72%) rename apps/web/src/index.css => packages/ui/src/styles/globals.css (100%) create mode 100644 packages/ui/tailwind.config.ts create mode 100644 packages/ui/tsconfig.json diff --git a/apps/api/README.md b/apps/api/README.md deleted file mode 100644 index 688c87e..0000000 --- a/apps/api/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Elysia with Bun runtime - -## Getting Started -To get started with this template, simply paste this command into your terminal: -```bash -bun create elysia ./elysia-example -``` - -## Development -To start the development server run: -```bash -bun run dev -``` - -Open http://localhost:3000/ with your browser to see the result. \ No newline at end of file diff --git a/apps/api/package.json b/apps/api/package.json index a7779fa..12aa059 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -2,17 +2,20 @@ "name": "@shadowave/api", "private": true, "version": "0.0.0", + "type": "module", "scripts": { - "dev": "bun run --watch src/index.ts", + "dev": "bun run --hot src/index.ts", "start": "bun run src/index.ts" }, "dependencies": { "@elysiajs/cors": "^1.2.0", + "@workspace/schema": "workspace:*", "close-with-grace": "^2.2.0", - "elysia": "latest", + "elysia": "^1.2.10", "puppeteer": "^24.1.0" }, "devDependencies": { + "@tsconfig/bun": "^1.0.7", "bun-types": "latest" }, "module": "src/index.js" diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index fabcffb..ed6d6e4 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -25,3 +25,5 @@ closeWithGrace({ delay: 2000 }, async ({ err }) => { console.log( `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}` ); + +export type App = typeof app; diff --git a/apps/api/src/routes/screenshots.ts b/apps/api/src/routes/screenshots.ts index 29d294b..8600a3f 100644 --- a/apps/api/src/routes/screenshots.ts +++ b/apps/api/src/routes/screenshots.ts @@ -1,12 +1,11 @@ import { Elysia, form, t } from 'elysia'; -import puppeteer, { type Browser, type Device, KnownDevices } from 'puppeteer'; - -const deviceType = t.Union([t.Literal('mobile'), t.Literal('tablet')]); +import puppeteer, { type Device, KnownDevices } from 'puppeteer'; +import { url, deviceType } from '@workspace/schema'; type ColorScheme = 'light' | 'dark'; type DeviceType = typeof deviceType.static; -const defaultDeviceMapping: Record = { +const defaultDeviceMapping: Partial> = { mobile: KnownDevices['iPhone 15'], tablet: KnownDevices['iPad'] }; @@ -20,7 +19,7 @@ interface ScreenshotsOptions { } const screenshotService = new Elysia({ name: 'Service.Screenshot' }) - .decorate('browser', await puppeteer.launch({ headless: 'shell'})) + .decorate('browser', await puppeteer.launch({ headless: 'shell' })) .derive({ as: 'scoped' }, ({ browser }) => ({ async *screenshots(url: string, options: ScreenshotsOptions) { const { @@ -30,8 +29,9 @@ const screenshotService = new Elysia({ name: 'Service.Screenshot' }) } = options; const page = await browser.newPage(); - if (deviceType) { - const device = deviceMapping[deviceType]; + const device = deviceType ? deviceMapping[deviceType] : null; + + if (device) { await page.emulate(device); } @@ -51,9 +51,7 @@ const screenshotService = new Elysia({ name: 'Service.Screenshot' }) } })) .onStop(async ({ decorator: { browser } }) => { - console.log('closing browser'); await browser.close(); - console.log('closed'); }); export const screenshots = new Elysia().use(screenshotService).get( @@ -64,13 +62,23 @@ export const screenshots = new Elysia().use(screenshotService).get( decodeURIComponent(url), query )) { - formData.append(colorScheme, new Blob([screenshot])); + formData.append( + colorScheme, + new Blob([screenshot]), + `${colorScheme}.webp` + ); } return formData; }, { + params: t.Object({ + url + }), query: t.Object({ deviceType: t.Optional(deviceType) - }) + }), + transform({ params }) { + params.url = decodeURIComponent(params.url) + }, } ); diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json index 1ca2350..97083ef 100644 --- a/apps/api/tsconfig.json +++ b/apps/api/tsconfig.json @@ -1,103 +1,9 @@ { + "extends": "@tsconfig/bun", "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "ES2021", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "ES2022", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - "types": ["bun-types"], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ + "paths": { + "@/*": ["./src/*"], + "@workspace/schema/*": ["../../packages/schema/src/*"], + }, } } diff --git a/apps/web/.env.example b/apps/web/.env.example new file mode 100644 index 0000000..9eff286 --- /dev/null +++ b/apps/web/.env.example @@ -0,0 +1 @@ +VITE_API_URL=http://localhost:3001 \ No newline at end of file diff --git a/apps/web/components.json b/apps/web/components.json index 4870358..121058e 100644 --- a/apps/web/components.json +++ b/apps/web/components.json @@ -4,14 +4,17 @@ "rsc": false, "tsx": true, "tailwind": { - "config": "tailwind.config.ts", - "css": "src/index.css", + "config": "../../packages/ui/tailwind.config.ts", + "css": "../../packages/ui/src/styles/globals.css", "baseColor": "slate", - "cssVariables": true, - "prefix": "" + "cssVariables": true }, + "iconLibrary": "lucide", "aliases": { "components": "@/components", - "utils": "@/lib/utils" + "hooks": "@/hooks", + "lib": "@/lib", + "utils": "@workspace/ui/lib/utils", + "ui": "@workspace/ui/components" } } diff --git a/apps/web/package.json b/apps/web/package.json index 2a8454a..c30272f 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -10,47 +10,45 @@ "test": "vitest", "messages:extract": "lingui extract --clean", "messages:compile": "lingui compile --typescript", - "preview": "vite preview", - "prepare": "husky" + "preview": "vite preview" }, - "packageManager": "pnpm@9.0.0", + "packageManager": "bun@1.1.45", "dependencies": { + "@elysiajs/eden": "^1.2.0", + "@hookform/resolvers": "^3.10.0", "@lingui/core": "^5.1.2", "@lingui/macro": "^5.1.2", "@lingui/react": "^5.1.2", - "@radix-ui/react-aspect-ratio": "^1.1.0", - "@radix-ui/react-dropdown-menu": "^2.1.0", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-separator": "^1.1.0", - "@radix-ui/react-slider": "^1.2.0", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-tooltip": "^1.1.0", + "@radix-ui/react-alert-dialog": "^1.1.4", + "@radix-ui/react-dialog": "^1.1.4", + "@radix-ui/react-slot": "^1.1.1", + "@sinclair/typebox": "^0.34.14", + "@workspace/schema": "workspace:*", + "@workspace/ui": "workspace:*", "browser-fs-access": "^0.35.0", - "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", - "jotai": "^2.8.3", - "jotai-devtools": "^0.10.0", - "jotai-effect": "^1.0.0", - "lucide-react": "^0.395.0", + "jotai": "^2.11.0", + "jotai-effect": "^1.0.7", + "lucide-react": "^0.473.0", "react": "^18.3.1", - "react-dom": "^18.3.1", - "tailwind-merge": "^2.3.0", - "tailwindcss-animate": "^1.0.7" + "react-dom": "^18.3.1" }, "devDependencies": { "@lingui/cli": "^5.1.2", "@lingui/conf": "^5.1.2", "@lingui/swc-plugin": "5.0.2", "@lingui/vite-plugin": "^5.1.2", - "@testing-library/react": "^16.0.0", - "@types/node": "^20.14.7", + "@testing-library/react": "^16.2.0", + "@tsconfig/vite-react": "^3.4.0", + "@types/bun": "^1.1.18", + "@types/node": "^22.10.7", "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", + "@types/react-dom": "^18.3.1", "@vitejs/plugin-react-swc": "3.7.2", - "autoprefixer": "^10.4.19", - "happy-dom": "^14.12.3", - "postcss": "^8.4.38", - "prettier-plugin-tailwindcss": "^0.6.5", - "tailwindcss": "^3.4.4" + "autoprefixer": "^10.4.20", + "elysia": "^1.2.10", + "postcss": "^8.5.1", + "tailwindcss": "^3.4.17", + "vite-tsconfig-paths": "^5.1.4" } -} +} \ No newline at end of file diff --git a/apps/web/postcss.config.js b/apps/web/postcss.config.js deleted file mode 100644 index ba80730..0000000 --- a/apps/web/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {} - } -}; diff --git a/apps/web/postcss.config.mjs b/apps/web/postcss.config.mjs new file mode 100644 index 0000000..0c2a10b --- /dev/null +++ b/apps/web/postcss.config.mjs @@ -0,0 +1,9 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; + +export default config; \ No newline at end of file diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index 563ab06..a810a48 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -1,11 +1,10 @@ import { Trans } from '@lingui/react/macro'; +import { TooltipProvider } from '@workspace/ui/components/tooltip'; import { siteConfig } from '@/config/site'; import { I18nProvider } from '@/components/I18nProvider'; -import { TooltipProvider } from '@/components/ui/Tooltip'; import { ChangeTheme } from '@/components/ChangeTheme'; -import { useThemeEffect } from './hooks/useThemeEffect'; -import { Editor } from './components/Editor'; -import { JotaiDevTools } from './JotaiDevTools'; +import { Editor } from '@/components/Editor'; +import { useThemeEffect } from '@/hooks/useThemeEffect'; export function App() { useThemeEffect(); @@ -17,7 +16,7 @@ export function App() { - ); diff --git a/apps/web/src/JotaiDevTools.tsx b/apps/web/src/JotaiDevTools.tsx deleted file mode 100644 index d2e1573..0000000 --- a/apps/web/src/JotaiDevTools.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { DevTools } from 'jotai-devtools'; -import css from 'jotai-devtools/styles.css?inline'; - -export function JotaiDevTools() { - return process.env.NODE_ENV !== 'production' ? ( - <> - - - - ) : null; -} diff --git a/apps/web/src/atoms/amplitudeAtoms.ts b/apps/web/src/atoms/amplitudeAtoms.ts index e4ef5d9..76b478f 100644 --- a/apps/web/src/atoms/amplitudeAtoms.ts +++ b/apps/web/src/atoms/amplitudeAtoms.ts @@ -1,12 +1,12 @@ import { atom } from 'jotai'; import { atomWithReset } from 'jotai/utils'; -import { largestImageAtom } from './largestImageAtom'; +import { largestImageAtom } from '@/atoms/largestImageAtom'; export const MIN_AMPLITUDE = 0; export const amplitudeAtom = atomWithReset(MIN_AMPLITUDE); -export const maxAmplitudeAtom = atom(async get => { - const largestImage = await get(largestImageAtom); +export const maxAmplitudeAtom = atom(get => { + const largestImage = get(largestImageAtom); return largestImage ? Math.round(largestImage.height / 8) : MIN_AMPLITUDE + 1; }); diff --git a/apps/web/src/atoms/exportAtoms.ts b/apps/web/src/atoms/exportAtoms.ts index 0cb5d9a..5939502 100644 --- a/apps/web/src/atoms/exportAtoms.ts +++ b/apps/web/src/atoms/exportAtoms.ts @@ -2,13 +2,13 @@ import { fileSave } from 'browser-fs-access'; import { atom } from 'jotai'; import { rasterize } from '@/utils/rasterize'; import { atomWithExpire } from '@/utils/atomWithExpire'; +import { graphicsAtom } from '@/atoms/graphicsAtom'; import { LoadableState } from '@/types'; import { DEFAULT_FILENAME, DEFAULT_LOADABLE_STATE_TIMEOUT, LOADABLE_STATE } from '@/constants'; -import { graphicsAtom } from './graphicsAtom'; export type ExportFileHandle = Awaited>; @@ -39,12 +39,12 @@ export const exportAtom = atom( exportFileHandle ) ); - set(exportingAtom, LOADABLE_STATE.LOADED, DEFAULT_LOADABLE_STATE_TIMEOUT); + set(exportingAtom, LOADABLE_STATE.HAS_DATA, DEFAULT_LOADABLE_STATE_TIMEOUT); } catch (error) { // Disregard errors if file saving is canceled. set( exportingAtom, - error instanceof DOMException ? null : LOADABLE_STATE.ERROR, + error instanceof DOMException ? null : LOADABLE_STATE.HAS_ERROR, DEFAULT_LOADABLE_STATE_TIMEOUT ); } diff --git a/apps/web/src/atoms/imagesAtom.ts b/apps/web/src/atoms/imagesAtom.ts index 60d2269..9ddf708 100644 --- a/apps/web/src/atoms/imagesAtom.ts +++ b/apps/web/src/atoms/imagesAtom.ts @@ -1,35 +1,3 @@ -import { ExtractAtomValue, atom } from 'jotai'; -import { unwrap } from 'jotai/utils'; -import { loadImage } from '@/utils/loadImage'; -import { readFile } from '@/utils/readFile'; +import { atomWithReset } from 'jotai/utils'; -export const filesOrLinksAtom = atom([]); - -export const imagesAtom = atom( - async get => { - const filesOrLinks = get(filesOrLinksAtom); - return Promise.all( - [...filesOrLinks].map(async fileOrLink => { - const [name, blob] = - typeof fileOrLink === 'string' - ? [fileOrLink, await (await fetch(fileOrLink)).blob()] - : [fileOrLink.name, fileOrLink]; - - const dataUrl = (await readFile(fr => - fr.readAsDataURL(blob) - )) as string; - - const image = await loadImage(dataUrl); - image.id = name; - return image; - }) - ); - }, - (_get, set, filesOrLinks: ExtractAtomValue) => { - set(filesOrLinksAtom, filesOrLinks); - } -); - -export const imageCountAtom = atom(get => { - return get(unwrap(imagesAtom))?.length ?? 0; -}); +export const imagesAtom = atomWithReset([]); diff --git a/apps/web/src/atoms/importAtom.ts b/apps/web/src/atoms/importAtom.ts new file mode 100644 index 0000000..bc31184 --- /dev/null +++ b/apps/web/src/atoms/importAtom.ts @@ -0,0 +1,46 @@ +import { atomWithReset } from 'jotai/utils'; +import { deviceType, url } from '@workspace/schema'; +import { client } from '@/utils/client'; +import { readFile } from '@/utils/readFile'; +import { loadImage } from '@/utils/loadImage'; +import { imagesAtom } from '@/atoms/imagesAtom'; +import { atomWithExpiringWriteState } from '@/utils/atomWithExpiringWriteState'; + +export type Site = { url: typeof url.static; deviceType: typeof deviceType.static }; +export type ImageSource = Site | File | string; + +export const imageSourcesAtom = atomWithReset([]); + +export const importAtom = atomWithExpiringWriteState( + async (_get, set, imageSources: ImageSource[]) => { + const blobsByName = await Promise.all( + imageSources.flatMap>>(async source => { + if (source instanceof File) { + return [[source.name, source]]; + } + if (typeof source === 'string') { + const blob = await (await fetch(source)).blob(); + return [[source, blob]]; + } + const { data } = await client + .screenshots({ + url: encodeURIComponent(source.url) + }) + .get({ query: source }); + + return Object.entries(data || {}); + }) + ); + const images = await Promise.all( + blobsByName.flat().map(async ([name, blob]) => { + const dataUrl = (await readFile(fr => + fr.readAsDataURL(blob) + )) as string; + const image = await loadImage(dataUrl); + image.id = name; + return image; + }) + ); + set(imagesAtom, images); + } +); diff --git a/apps/web/src/atoms/isImportOpenAtom.ts b/apps/web/src/atoms/isImportOpenAtom.ts new file mode 100644 index 0000000..9daa023 --- /dev/null +++ b/apps/web/src/atoms/isImportOpenAtom.ts @@ -0,0 +1,3 @@ +import { atomWithToggle } from '@/utils/atomWithToggle'; + +export const isImportOpenAtom = atomWithToggle(); \ No newline at end of file diff --git a/apps/web/src/atoms/largestImageAtom.ts b/apps/web/src/atoms/largestImageAtom.ts index 6d305f9..d90d013 100644 --- a/apps/web/src/atoms/largestImageAtom.ts +++ b/apps/web/src/atoms/largestImageAtom.ts @@ -1,8 +1,8 @@ import { atom } from 'jotai'; -import { imagesAtom } from './imagesAtom'; +import { imagesAtom } from '@/atoms/imagesAtom'; -export const largestImageAtom = atom(async get => { - const images = await get(imagesAtom); +export const largestImageAtom = atom(get => { + const images = get(imagesAtom); const imagesByArea = [...images].sort( (a, b) => a.width * a.height - b.width * b.height ); diff --git a/apps/web/src/atoms/orderedImagesAtom.ts b/apps/web/src/atoms/orderedImagesAtom.ts index 07e92ba..c680aa5 100644 --- a/apps/web/src/atoms/orderedImagesAtom.ts +++ b/apps/web/src/atoms/orderedImagesAtom.ts @@ -1,9 +1,9 @@ import { atom } from 'jotai'; -import { areImagesReversedAtom } from './areImagesReversedAtom'; -import { imagesAtom } from './imagesAtom'; +import { areImagesReversedAtom } from '@/atoms/areImagesReversedAtom'; +import { imagesAtom } from '@/atoms/imagesAtom'; -export const orderedImagesAtom = atom(async get => { +export const orderedImagesAtom = atom(get => { const areImagesReversed = get(areImagesReversedAtom); - const images = await get(imagesAtom); + const images = get(imagesAtom); return areImagesReversed ? [...images].reverse() : images; }); diff --git a/apps/web/src/atoms/scaleAtom.ts b/apps/web/src/atoms/scaleAtom.ts index 711fb4e..5e19e03 100644 --- a/apps/web/src/atoms/scaleAtom.ts +++ b/apps/web/src/atoms/scaleAtom.ts @@ -1,8 +1,8 @@ import { atom } from 'jotai'; -import { largestImageAtom } from './largestImageAtom'; +import { largestImageAtom } from '@/atoms/largestImageAtom'; -export const scaleAtom = atom(async get => { - const largestImage = await get(largestImageAtom); +export const scaleAtom = atom(get => { + const largestImage = get(largestImageAtom); if (!largestImage) { return 1; } diff --git a/apps/web/src/atoms/sensibleDefaultsEffect.ts b/apps/web/src/atoms/sensibleDefaultsEffect.ts index 673c191..74583c9 100644 --- a/apps/web/src/atoms/sensibleDefaultsEffect.ts +++ b/apps/web/src/atoms/sensibleDefaultsEffect.ts @@ -1,24 +1,16 @@ import { atomEffect } from 'jotai-effect'; -import { largestImageAtom } from './largestImageAtom'; -import { amplitudeAtom, maxAmplitudeAtom } from './amplitudeAtoms'; -import { wavelengthAtom, maxWavelengthAtom } from './wavelengthAtoms'; -import { rotationAtom } from './rotationAtom'; import { RESET } from 'jotai/utils'; +import { largestImageAtom } from '@/atoms/largestImageAtom'; +import { amplitudeAtom, maxAmplitudeAtom } from '@/atoms/amplitudeAtoms'; +import { wavelengthAtom, maxWavelengthAtom } from '@/atoms/wavelengthAtoms'; +import { rotationAtom } from '@/atoms/rotationAtom'; export const sensibleDefaultsEffect = atomEffect((get, set) => { - const abortController = new AbortController(); - (async () => { - const largestImage = await get(largestImageAtom); - const maxWavelength = await get(maxWavelengthAtom); - const maxAmplitude = await get(maxAmplitudeAtom); - if (!abortController.signal.aborted) { - set(rotationAtom, RESET); - set(wavelengthAtom, largestImage ? maxWavelength : RESET); - set(amplitudeAtom, largestImage ? maxAmplitude : RESET); - } - })(); + const largestImage = get(largestImageAtom); + const maxWavelength = get(maxWavelengthAtom); + const maxAmplitude = get(maxAmplitudeAtom); - return () => { - abortController.abort(); - }; + set(rotationAtom, RESET); + set(wavelengthAtom, largestImage ? maxWavelength : RESET); + set(amplitudeAtom, largestImage ? maxAmplitude : RESET); }); diff --git a/apps/web/src/atoms/waveAtom.ts b/apps/web/src/atoms/waveAtom.ts index acde64f..d18b7e1 100644 --- a/apps/web/src/atoms/waveAtom.ts +++ b/apps/web/src/atoms/waveAtom.ts @@ -1,16 +1,16 @@ import { atom } from 'jotai'; -import { amplitudeAtom } from './amplitudeAtoms'; -import { largestImageAtom } from './largestImageAtom'; -import { wavelengthAtom } from './wavelengthAtoms'; +import { amplitudeAtom } from '@/atoms/amplitudeAtoms'; +import { largestImageAtom } from '@/atoms/largestImageAtom'; +import { wavelengthAtom } from '@/atoms/wavelengthAtoms'; function round(num: number) { return Math.round((num + Number.EPSILON) * 100) / 100; } -export const waveAtom = atom(async get => { +export const waveAtom = atom(get => { const wavelength = get(wavelengthAtom); const amplitude = get(amplitudeAtom); - const largestImage = await get(largestImageAtom); + const largestImage = get(largestImageAtom); if (!largestImage) { return ''; diff --git a/apps/web/src/atoms/wavelengthAtoms.ts b/apps/web/src/atoms/wavelengthAtoms.ts index 218436f..fbdb4a1 100644 --- a/apps/web/src/atoms/wavelengthAtoms.ts +++ b/apps/web/src/atoms/wavelengthAtoms.ts @@ -1,11 +1,11 @@ import { atom } from 'jotai'; import { atomWithReset } from 'jotai/utils'; -import { largestImageAtom } from './largestImageAtom'; +import { largestImageAtom } from '@/atoms/largestImageAtom'; export const MIN_WAVELENGTH = 9; export const wavelengthAtom = atomWithReset(MIN_WAVELENGTH); export const maxWavelengthAtom = atom( - async get => (await get(largestImageAtom))?.width ?? MIN_WAVELENGTH + 1 + get => get(largestImageAtom)?.width ?? MIN_WAVELENGTH + 1 ); diff --git a/apps/web/src/components/AtomSlider.tsx b/apps/web/src/components/AtomSlider.tsx index 8fd7a86..27ad1a5 100644 --- a/apps/web/src/components/AtomSlider.tsx +++ b/apps/web/src/components/AtomSlider.tsx @@ -1,8 +1,8 @@ import { PrimitiveAtom, useAtom } from 'jotai'; -import { cn } from '@/lib/utils'; -import { Label } from '@/components/ui/Label'; -import { Slider } from '@/components/ui/Slider'; import { LabelProps } from '@radix-ui/react-label'; +import { cn } from '@workspace/ui/lib/utils'; +import { Label } from '@workspace/ui/components/label'; +import { Slider } from '@workspace/ui/components/slider'; export interface AtomSliderProps extends Omit< diff --git a/apps/web/src/components/ChangeTheme.tsx b/apps/web/src/components/ChangeTheme.tsx index 7154f68..c1682b2 100644 --- a/apps/web/src/components/ChangeTheme.tsx +++ b/apps/web/src/components/ChangeTheme.tsx @@ -1,14 +1,14 @@ import { useSetAtom } from 'jotai'; import { Laptop, Moon, Sun } from 'lucide-react'; import { Trans } from '@lingui/react/macro'; -import { themeAtom } from '@/atoms/themeAtom'; -import { Button } from '@/components/ui/Button'; +import { Button } from '@workspace/ui/components/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger -} from '@/components/ui/DropdownMenu'; +} from '@workspace/ui/components/dropdown-menu'; +import { themeAtom } from '@/atoms/themeAtom'; export function ChangeTheme() { const setTheme = useSetAtom(themeAtom); diff --git a/apps/web/src/components/ChooseFiles.tsx b/apps/web/src/components/ChooseFiles.tsx new file mode 100644 index 0000000..0ca939e --- /dev/null +++ b/apps/web/src/components/ChooseFiles.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { CoreFileOptions, fileOpen, FileWithHandle } from 'browser-fs-access'; +import { composeEventHandlers } from '@radix-ui/primitive'; +import { Button } from '@workspace/ui/components/button'; + +export interface ChooseFilesProps + extends React.ComponentPropsWithoutRef { + onFilesChange?: (files: FileWithHandle[]) => void; + options?: CoreFileOptions; +} + +export const ChooseFiles = React.forwardRef(function ChooseFiles( + props: ChooseFilesProps, + ref: React.ForwardedRef +) { + const { onFilesChange, options, ...other } = props; + const handleClick = async () => { + try { + onFilesChange?.( + await fileOpen({ + multiple: true, + ...props.options + }) + ); + } catch (error) { + // Disregard errors if file opening is canceled. + if (!(error instanceof DOMException)) { + throw error; + } + } + }; + + return ( + - - - - - - Remove images - - - - ); -} diff --git a/apps/web/src/components/Controls.tsx b/apps/web/src/components/Controls.tsx index 7bcd315..12b35ae 100644 --- a/apps/web/src/components/Controls.tsx +++ b/apps/web/src/components/Controls.tsx @@ -1,7 +1,6 @@ import { useAtom, useAtomValue } from 'jotai'; -import { Trans, msg } from '@lingui/macro'; -import { useLingui } from '@lingui/react'; -import { cn } from '@/lib/utils'; +import { Trans, useLingui } from '@lingui/react/macro'; +import { cn } from '@workspace/ui/lib/utils'; import { sensibleDefaultsEffect } from '@/atoms/sensibleDefaultsEffect'; import { rotationAtom } from '@/atoms/rotationAtom'; import { @@ -14,16 +13,16 @@ import { amplitudeAtom, maxAmplitudeAtom } from '@/atoms/amplitudeAtoms'; -import { imageCountAtom } from '@/atoms/imagesAtom'; +import { imagesAtom } from '@/atoms/imagesAtom'; import { scaleAtom } from '@/atoms/scaleAtom'; -import { AtomSlider } from './AtomSlider'; +import { AtomSlider } from '@/components/AtomSlider'; export type ControlsProp = React.ComponentPropsWithoutRef<'div'>; export function Controls(props: ControlsProp) { const { className, ...other } = props; - const { _ } = useLingui(); - const imageCount = useAtomValue(imageCountAtom); + const { t } = useLingui(); + const images = useAtomValue(imagesAtom); const maxAmplitude = useAtomValue(maxAmplitudeAtom); const maxWavelength = useAtomValue(maxWavelengthAtom); const scale = useAtomValue(scaleAtom); @@ -40,9 +39,9 @@ export function Controls(props: ControlsProp) { renderValue={rotation => `${rotation}°`} min={0} max={360} - disabled={!imageCount} + disabled={!images.length} ThumbProps={{ - 'aria-label': _(msg`Rotation`) + 'aria-label': t`Rotation` }} /> diff --git a/apps/web/src/components/CopyImage.tsx b/apps/web/src/components/CopyImage.tsx index fb3b3cb..9a540f6 100644 --- a/apps/web/src/components/CopyImage.tsx +++ b/apps/web/src/components/CopyImage.tsx @@ -1,14 +1,10 @@ import { useAtomValue } from 'jotai'; import { Copy } from 'lucide-react'; import { Trans } from '@lingui/react/macro'; -import { cn } from '@/lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; +import { Button, ButtonProps } from '@workspace/ui/components/button'; +import { Tooltip } from '@workspace/ui/components/tooltip'; import { graphicsAtom } from '@/atoms/graphicsAtom'; -import { Button, ButtonProps } from '@/components/ui/Button'; -import { - Tooltip, - TooltipContent, - TooltipTrigger -} from '@/components/ui/Tooltip'; import { isClipboardSupported, useClipboard } from '@/hooks/useClipboard'; import { LOADABLE_STATE, MIME_TYPES } from '@/constants'; import { rasterize } from '@/utils/rasterize'; @@ -31,30 +27,25 @@ export function CopyImage(props: CopyImageProps) { }; return isClipboardSupported ? ( - - - - - - Copy PNG - + Copy PNG}> + ) : null; } diff --git a/apps/web/src/components/Editor.tsx b/apps/web/src/components/Editor.tsx index 950c9c1..e064836 100644 --- a/apps/web/src/components/Editor.tsx +++ b/apps/web/src/components/Editor.tsx @@ -1,25 +1,20 @@ -import { Suspense } from 'react'; -import { useAtomValue } from 'jotai'; -import { Eclipse, Loader2 } from 'lucide-react'; +import { Eclipse } from 'lucide-react'; import { Trans } from '@lingui/react/macro'; -import { cn } from '@/lib/utils'; -import { filesOrLinksAtom } from '@/atoms/imagesAtom'; -import { AspectRatio } from '@/components/ui/AspectRatio'; +import { cn } from '@workspace/ui/lib/utils'; +import { AspectRatio } from '@workspace/ui/components/aspect-ratio'; import { Controls } from '@/components/Controls'; import { Graphics } from '@/components/Graphics'; import { ExportImage } from '@/components/ExportImage'; -import { ChooseImages } from '@/components/ChooseImages'; -import { Button } from '@/components/ui/Button'; import { SeeExample } from '@/components/SeeExample'; -import { useImagesDisclosure } from '@/hooks/useImagesDisclosure'; -import { CopyImage } from './CopyImage'; +import { CopyImage } from '@/components/CopyImage'; +import { ReverseImages } from '@/components/ReverseImages'; +import { ImportImages } from '@/components/ImportImages'; +import { RemoveImages } from '@/components/RemoveImages'; export type EditorProps = React.ComponentPropsWithoutRef<'div'>; export function Editor(props: EditorProps) { const { className, ...other } = props; - const filesOrLinks = useAtomValue(filesOrLinksAtom); - const { open: openImages } = useImagesDisclosure(); return (
- {filesOrLinks.length ? ( - - } - > - - - ) : ( -
- -

Shadowave

-

- - Choose screenshots featuring both light and dark themes to start - waving. - -

-
- + + +

Shadowave

+

+ + Import images featuring both light and dark themes to start. + +

-
- )} + } + />
- - - } - > - - +
+ + + +
+
diff --git a/apps/web/src/components/ExportImage.tsx b/apps/web/src/components/ExportImage.tsx index 658a1b8..46c0b18 100644 --- a/apps/web/src/components/ExportImage.tsx +++ b/apps/web/src/components/ExportImage.tsx @@ -1,22 +1,18 @@ import { useAtom, useAtomValue } from 'jotai'; import { ImageDown, Save } from 'lucide-react'; import { Trans } from '@lingui/react/macro'; -import { cn } from '@/lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; import { graphicsAtom } from '@/atoms/graphicsAtom'; import { ExportFileHandle, exportAtom, exportFileHandleAtom } from '@/atoms/exportAtoms'; -import { Button } from '@/components/ui/Button'; -import { Separator } from '@/components/ui/Separator'; -import { - Tooltip, - TooltipContent, - TooltipTrigger -} from '@/components/ui/Tooltip'; +import { Button } from '@workspace/ui/components/button'; +import { Separator } from '@workspace/ui/components/separator'; +import { Tooltip } from '@workspace/ui/components/tooltip'; +import { LoadableIcon } from '@/components/LoadableIcon'; import { LOADABLE_STATE } from '@/constants'; -import { LoadableIcon } from './LoadableIcon'; export type ExportImageProps = React.ComponentPropsWithoutRef<'div'>; @@ -37,56 +33,46 @@ export function ExportImage(props: ExportImageProps) { return (
- - - - - - Save to - + Save to}> + {exportFileHandle && ( <> - - - - - - Choose file - + Choose file}> + )} diff --git a/apps/web/src/components/ImportImages.tsx b/apps/web/src/components/ImportImages.tsx new file mode 100644 index 0000000..1e118ae --- /dev/null +++ b/apps/web/src/components/ImportImages.tsx @@ -0,0 +1,204 @@ +import { useAtom, useAtomValue } from 'jotai'; +import { Camera, Monitor, Smartphone, Tablet } from 'lucide-react'; +import { FileWithHandle } from 'browser-fs-access'; +import { useForm } from 'react-hook-form'; +import { typeboxResolver } from '@hookform/resolvers/typebox'; +import { Type } from '@sinclair/typebox'; +import { Trans, Plural, useLingui } from '@lingui/react/macro'; +import { url, deviceType } from '@workspace/schema'; +import { cn } from '@workspace/ui/lib/utils'; +import { Button } from '@workspace/ui/components/button'; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger +} from '@workspace/ui/components/dialog'; +import { isImportOpenAtom } from '@/atoms/isImportOpenAtom'; +import { + Form, + FormControl, + FormDescription, + FormField, + FormItem, + FormLabel, + FormMessage +} from '@workspace/ui/components/form'; +import { Input } from '@workspace/ui/components/input'; +import { + ToggleGroup, + ToggleGroupItem +} from '@workspace/ui/components/toggle-group'; +import { ChooseFiles } from '@/components/ChooseFiles'; +import { LoadableIcon } from './LoadableIcon'; +import { ImageSource, importAtom, Site } from '@/atoms/importAtom'; +import { imagesAtom } from '@/atoms/imagesAtom'; +import { LOADABLE_STATE } from '@/constants'; + +const importSchema = Type.Object({ + url, + deviceType +}); + +export function ImportImages() { + const { t } = useLingui(); + const images = useAtomValue(imagesAtom); + const [isImportOpen, toggleImportOpen] = useAtom(isImportOpenAtom); + const [importState, importImages] = useAtom(importAtom); + + const isImporting = importState === LOADABLE_STATE.LOADING; + + const form = useForm({ + resolver: typeboxResolver(importSchema), + defaultValues: { + url: '', + deviceType: 'desktop' + } + }); + + const handleSubmitOrFilesChange = async (imageSource: ImageSource | ImageSource[]) => { + await importImages(Array.isArray(imageSource) ? imageSource : [imageSource]); + toggleImportOpen(false) + } + + const handleDeviceTypeChange = + (handler: (...event: any[]) => void) => (deviceType?: string) => { + if (deviceType) { + handler(deviceType); + } + }; + + return ( + + + + + + + + Import + + + + The side should respond to the light and dark themes using the{' '} + prefers-color-scheme media query. If it does not, + choose files instead. + + + +
+ + ( + + Site URL + + + + {fieldState.invalid ? ( + + ) : ( + + + Start with web protocol, e.g. https:// + + + )} + + )} + /> + ( + + + + + + Desktop + + + + Tablet + + + + Mobile + + + + + + )} + /> + + + Choose Files + + + + + +
+
+ ); +} diff --git a/apps/web/src/components/LoadableIcon.tsx b/apps/web/src/components/LoadableIcon.tsx index ef3ccf5..2e631f5 100644 --- a/apps/web/src/components/LoadableIcon.tsx +++ b/apps/web/src/components/LoadableIcon.tsx @@ -1,4 +1,3 @@ -import { LoadableState } from '@/types'; import { Ban, Check, @@ -6,16 +5,17 @@ import { LucideProps, type LucideIcon } from 'lucide-react'; +import { LoadableState } from '@/types'; const defaultIconMapping: Record = { loading: Loader2, - loaded: Check, - error: Ban + hasData: Check, + hasError: Ban }; export interface LoadableIconProps extends LucideProps { fallback: LucideIcon; - iconMapping?: typeof defaultIconMapping; + iconMapping?: Partial; state?: LoadableState | null; } diff --git a/apps/web/src/components/RemoveImages.tsx b/apps/web/src/components/RemoveImages.tsx new file mode 100644 index 0000000..57f32a0 --- /dev/null +++ b/apps/web/src/components/RemoveImages.tsx @@ -0,0 +1,58 @@ +import { useAtomValue } from 'jotai'; +import { Trash2 } from 'lucide-react'; +import { useResetAtom } from 'jotai/utils'; +import { Trans, useLingui } from '@lingui/react/macro'; +import { Button } from '@workspace/ui/components/button'; +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger +} from '@workspace/ui/components/alert-dialog'; +import { imagesAtom } from '@/atoms/imagesAtom'; + +export function RemoveImages() { + const { t } = useLingui(); + const images = useAtomValue(imagesAtom); + const resetImages = useResetAtom(imagesAtom); + + return ( + + + + + + + + Remove images? + + + + These images will be permanently removed. This action cannot be + undone. + + + + + + Cancel + + + Remove + + + + + ); +} diff --git a/apps/web/src/components/ReverseImages.tsx b/apps/web/src/components/ReverseImages.tsx index 0082516..e049c9b 100644 --- a/apps/web/src/components/ReverseImages.tsx +++ b/apps/web/src/components/ReverseImages.tsx @@ -1,20 +1,17 @@ import { useAtom, useAtomValue } from 'jotai'; import { ArrowDownUp, ArrowUpDown } from 'lucide-react'; -import { Trans } from '@lingui/react/macro'; +import { Trans, useLingui } from '@lingui/react/macro'; import { areImagesReversedAtom } from '@/atoms/areImagesReversedAtom'; -import { imageCountAtom } from '@/atoms/imagesAtom'; -import { Button } from '@/components/ui/Button'; -import { - Tooltip, - TooltipContent, - TooltipTrigger -} from '@/components/ui/Tooltip'; +import { imagesAtom } from '@/atoms/imagesAtom'; +import { Button } from '@workspace/ui/components/button'; +import { Tooltip } from '@workspace/ui/components/tooltip'; export function ReverseImages() { + const { t } = useLingui(); const [areImagesReversed, toggleImagesReversed] = useAtom( areImagesReversedAtom ); - const imageCount = useAtomValue(imageCountAtom); + const images = useAtomValue(imagesAtom); const Icon = areImagesReversed ? ArrowDownUp : ArrowUpDown; const handleClick = () => { @@ -22,23 +19,15 @@ export function ReverseImages() { }; return ( - - - - - - Reverse images - + Reverse images}> + ); } diff --git a/apps/web/src/components/SeeExample.tsx b/apps/web/src/components/SeeExample.tsx index 1141eea..469e84c 100644 --- a/apps/web/src/components/SeeExample.tsx +++ b/apps/web/src/components/SeeExample.tsx @@ -1,20 +1,18 @@ import { useSetAtom } from 'jotai'; import { Trans } from '@lingui/react/macro'; -import { imagesAtom } from '@/atoms/imagesAtom'; -import { Button, ButtonProps } from '@/components/ui/Button'; +import { Button } from '@workspace/ui/components/button'; import { siteConfig } from '@/config/site'; +import { importAtom } from '@/atoms/importAtom'; -export type SeeExampleProps = Omit; - -export function SeeExample(props: SeeExampleProps) { - const setImages = useSetAtom(imagesAtom); +export function SeeExample() { + const importImage = useSetAtom(importAtom); const handleClick = () => { - setImages(siteConfig.example); + importImage(siteConfig.example); }; return ( - ); diff --git a/apps/web/src/components/ui/AspectRatio.tsx b/apps/web/src/components/ui/AspectRatio.tsx deleted file mode 100644 index 5dfdf1e..0000000 --- a/apps/web/src/components/ui/AspectRatio.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio'; - -const AspectRatio = AspectRatioPrimitive.Root; - -export { AspectRatio }; diff --git a/apps/web/src/components/ui/Button.tsx b/apps/web/src/components/ui/Button.tsx deleted file mode 100644 index 43a3320..0000000 --- a/apps/web/src/components/ui/Button.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import * as React from 'react'; -import { Slot } from '@radix-ui/react-slot'; -import { cva, type VariantProps } from 'class-variance-authority'; - -import { cn } from '@/lib/utils'; - -const buttonVariants = cva( - 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50', - { - variants: { - variant: { - default: 'bg-primary text-primary-foreground hover:bg-primary/90', - destructive: - 'bg-destructive text-destructive-foreground hover:bg-destructive/90', - outline: - 'border border-input bg-background hover:bg-accent hover:text-accent-foreground', - secondary: - 'bg-secondary text-secondary-foreground hover:bg-secondary/80', - ghost: 'hover:bg-accent hover:text-accent-foreground', - link: 'text-primary underline-offset-4 hover:underline' - }, - size: { - default: 'h-10 px-4 py-2', - sm: 'h-9 rounded-md px-3', - lg: 'h-11 rounded-md px-8', - icon: 'h-10 w-10' - } - }, - defaultVariants: { - variant: 'default', - size: 'default' - } - } -); - -export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean; -} - -const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : 'button'; - return ( - - ); - } -); -Button.displayName = 'Button'; - -export { Button }; diff --git a/apps/web/src/components/ui/Input.tsx b/apps/web/src/components/ui/Input.tsx deleted file mode 100644 index 07fb60e..0000000 --- a/apps/web/src/components/ui/Input.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from 'react'; - -import { cn } from '@/lib/utils'; - -export type InputProps = React.InputHTMLAttributes; - -const Input = React.forwardRef( - ({ className, type, ...props }, ref) => { - return ( - - ); - } -); -Input.displayName = 'Input'; - -export { Input }; diff --git a/apps/web/src/components/ui/Label.tsx b/apps/web/src/components/ui/Label.tsx deleted file mode 100644 index fba3aeb..0000000 --- a/apps/web/src/components/ui/Label.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from 'react'; -import * as LabelPrimitive from '@radix-ui/react-label'; -import { cva, type VariantProps } from 'class-variance-authority'; - -import { cn } from '@/lib/utils'; - -const labelVariants = cva( - 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70' -); - -const Label = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps ->(({ className, ...props }, ref) => ( - -)); -Label.displayName = LabelPrimitive.Root.displayName; - -export { Label }; diff --git a/apps/web/src/components/ui/Separator.tsx b/apps/web/src/components/ui/Separator.tsx deleted file mode 100644 index aca42e9..0000000 --- a/apps/web/src/components/ui/Separator.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import * as React from 'react'; -import * as SeparatorPrimitive from '@radix-ui/react-separator'; - -import { cn } from '@/lib/utils'; - -const Separator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->( - ( - { className, orientation = 'horizontal', decorative = true, ...props }, - ref - ) => ( - - ) -); -Separator.displayName = SeparatorPrimitive.Root.displayName; - -export { Separator }; diff --git a/apps/web/src/components/ui/Slider.tsx b/apps/web/src/components/ui/Slider.tsx deleted file mode 100644 index f347df1..0000000 --- a/apps/web/src/components/ui/Slider.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import * as React from 'react'; -import * as SliderPrimitive from '@radix-ui/react-slider'; - -import { cn } from '@/lib/utils'; - -export interface SliderProps - extends React.ComponentPropsWithoutRef { - ThumbProps?: Omit, 'className'>; -} - -export const Slider = React.forwardRef< - React.ElementRef, - SliderProps ->(({ className, ThumbProps, ...props }, ref) => ( - - - - - - -)); -Slider.displayName = SliderPrimitive.Root.displayName; diff --git a/apps/web/src/constants.ts b/apps/web/src/constants.ts index 5294657..62f0b51 100644 --- a/apps/web/src/constants.ts +++ b/apps/web/src/constants.ts @@ -5,8 +5,8 @@ export const MIME_TYPES = { export const LOADABLE_STATE = { LOADING: 'loading', - LOADED: 'loaded', - ERROR: 'error' + HAS_DATA: 'hasData', + HAS_ERROR: 'hasError' } as const; export const DEFAULT_LOADABLE_STATE_TIMEOUT = 1000; diff --git a/apps/web/src/hooks/__tests__/useClipboard.test.ts b/apps/web/src/hooks/__tests__/useClipboard.test.ts index 4eb0b93..8ff46d5 100644 --- a/apps/web/src/hooks/__tests__/useClipboard.test.ts +++ b/apps/web/src/hooks/__tests__/useClipboard.test.ts @@ -15,7 +15,7 @@ describe('useClipboard hook', () => { }); }); - expect(result.current.state).toBe(LOADABLE_STATE.LOADED); + expect(result.current.state).toBe(LOADABLE_STATE.HAS_DATA); await expect(navigator.clipboard.readText()).resolves.toBe('Data'); act(() => { @@ -36,7 +36,7 @@ describe('useClipboard hook', () => { await result.current.copy({}); }); - expect(result.current.state).toBe(LOADABLE_STATE.ERROR); + expect(result.current.state).toBe(LOADABLE_STATE.HAS_ERROR); act(() => { vi.advanceTimersByTime(DEFAULT_LOADABLE_STATE_TIMEOUT); diff --git a/apps/web/src/hooks/useClipboard.ts b/apps/web/src/hooks/useClipboard.ts index 378a03c..9c43ce8 100644 --- a/apps/web/src/hooks/useClipboard.ts +++ b/apps/web/src/hooks/useClipboard.ts @@ -1,7 +1,7 @@ import { useCallback } from 'react'; import { LoadableState } from '@/types'; import { DEFAULT_LOADABLE_STATE_TIMEOUT, LOADABLE_STATE } from '@/constants'; -import { useExpireAtom } from './useExpireAtom'; +import { useExpireAtom } from '@/hooks/useExpireAtom'; export const isClipboardSupported = navigator.clipboard && typeof window.ClipboardItem === 'function'; @@ -28,9 +28,9 @@ export function useClipboard(options: UseClipboardOptions = {}) { ); } await navigator.clipboard.write([new window.ClipboardItem(...args)]); - setState(LOADABLE_STATE.LOADED, timeout); + setState(LOADABLE_STATE.HAS_DATA, timeout); } catch (_error) { - setState(LOADABLE_STATE.ERROR, timeout); + setState(LOADABLE_STATE.HAS_ERROR, timeout); } }, [setState, timeout] diff --git a/apps/web/src/hooks/useImagesDisclosure.ts b/apps/web/src/hooks/useImagesDisclosure.ts deleted file mode 100644 index fc5e4b1..0000000 --- a/apps/web/src/hooks/useImagesDisclosure.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { useCallback } from 'react'; -import { useSetAtom } from 'jotai'; -import { fileOpen } from 'browser-fs-access'; -import { imagesAtom } from '@/atoms/imagesAtom'; - -export function useImagesDisclosure() { - const setImages = useSetAtom(imagesAtom); - - const open = useCallback(async () => { - try { - setImages( - await fileOpen({ - mimeTypes: ['image/*'], - multiple: true - }) - ); - } catch (error) { - // Disregard errors if file opening is canceled. - if (!(error instanceof DOMException)) { - throw error; - } - } - }, [setImages]); - - const close = useCallback(() => { - setImages([]); - }, [setImages]); - - return { open, close }; -} diff --git a/apps/web/src/hooks/useThemeEffect.ts b/apps/web/src/hooks/useThemeEffect.ts index c41ba4f..87bad1c 100644 --- a/apps/web/src/hooks/useThemeEffect.ts +++ b/apps/web/src/hooks/useThemeEffect.ts @@ -1,6 +1,6 @@ -import { themeAtom } from '@/atoms/themeAtom'; -import { useAtomValue } from 'jotai'; import { useLayoutEffect } from 'react'; +import { useAtomValue } from 'jotai'; +import { themeAtom } from '@/atoms/themeAtom'; export function useThemeEffect() { const theme = useAtomValue(themeAtom); diff --git a/apps/web/src/locales/en.po b/apps/web/src/locales/en.po index 40f2c32..c937530 100644 --- a/apps/web/src/locales/en.po +++ b/apps/web/src/locales/en.po @@ -13,39 +13,39 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/components/ChooseImages.tsx:37 +#. placeholder {0}: images.length +#: src/components/ImportImages.tsx:79 msgid "{0, plural, one {# image} other {# images}}" msgstr "" -#: src/components/Controls.tsx:60 -#: src/components/Controls.tsx:67 +#: src/components/Controls.tsx:59 +#: src/components/Controls.tsx:66 msgid "Amplitude" msgstr "" -#: src/App.tsx:21 +#: src/App.tsx:20 msgid "Built by <0>gzukas. The source code is available on <1>GitHub." msgstr "" +#: src/components/RemoveImages.tsx:47 +msgid "Cancel" +msgstr "" + #: src/components/ChangeTheme.tsx:22 msgid "Change theme" msgstr "" -#: src/components/ExportImage.tsx:83 -#: src/components/ExportImage.tsx:88 +#: src/components/ExportImage.tsx:63 +#: src/components/ExportImage.tsx:73 msgid "Choose file" msgstr "" -#: src/components/ChooseImages.tsx:39 -#: src/components/Editor.tsx:56 -msgid "Choose Images" -msgstr "" - -#: src/components/Editor.tsx:49 -msgid "Choose screenshots featuring both light and dark themes to start waving." +#: src/components/ImportImages.tsx:183 +msgid "Choose Files" msgstr "" -#: src/components/CopyImage.tsx:51 -#: src/components/CopyImage.tsx:56 +#: src/components/CopyImage.tsx:30 +#: src/components/CopyImage.tsx:46 msgid "Copy PNG" msgstr "" @@ -53,42 +53,83 @@ msgstr "" msgid "Dark" msgstr "" -#: src/components/ExportImage.tsx:61 +#: src/components/ImportImages.tsx:147 +#: src/components/ImportImages.tsx:151 +msgid "Desktop" +msgstr "" + +#: src/components/ExportImage.tsx:56 msgid "Export" msgstr "" +#: src/components/ImportImages.tsx:116 +msgid "https://example.com" +msgstr "" + +#: src/components/ImportImages.tsx:85 +#: src/components/ImportImages.tsx:92 +#: src/components/ImportImages.tsx:197 +msgid "Import" +msgstr "" + +#: src/components/Editor.tsx:37 +msgid "Import images featuring both light and dark themes to start." +msgstr "" + #: src/components/ChangeTheme.tsx:29 msgid "Light" msgstr "" -#: src/components/ChooseImages.tsx:52 -#: src/components/ChooseImages.tsx:57 +#: src/components/ImportImages.tsx:163 +#: src/components/ImportImages.tsx:167 +msgid "Mobile" +msgstr "" + +#: src/components/RemoveImages.tsx:50 +msgid "Remove" +msgstr "" + +#: src/components/RemoveImages.tsx:26 +#: src/components/RemoveImages.tsx:32 msgid "Remove images" msgstr "" -#: src/components/ReverseImages.tsx:35 -#: src/components/ReverseImages.tsx:40 +#: src/components/ReverseImages.tsx:22 +#: src/components/ReverseImages.tsx:27 msgid "Reverse images" msgstr "" -#: src/components/Controls.tsx:38 -#: src/components/Controls.tsx:45 +#: src/components/Controls.tsx:37 +#: src/components/Controls.tsx:44 msgid "Rotation" msgstr "" -#: src/components/ExportImage.tsx:66 +#: src/components/ExportImage.tsx:41 msgid "Save to" msgstr "" -#: src/components/SeeExample.tsx:18 +#: src/components/SeeExample.tsx:16 msgid "See Example" msgstr "" +#: src/components/ImportImages.tsx:124 +msgid "Start with web protocol, e.g. <0>https://" +msgstr "" + #: src/components/ChangeTheme.tsx:37 msgid "System" msgstr "" -#: src/components/Controls.tsx:49 -#: src/components/Controls.tsx:56 +#: src/components/ImportImages.tsx:155 +#: src/components/ImportImages.tsx:159 +msgid "Tablet" +msgstr "" + +#: src/components/ImportImages.tsx:95 +msgid "The side should respond to the light and dark themes using the <0>prefers-color-scheme media query. If it does not, choose files instead." +msgstr "" + +#: src/components/Controls.tsx:48 +#: src/components/Controls.tsx:55 msgid "Wavelength" msgstr "" diff --git a/apps/web/src/locales/en.ts b/apps/web/src/locales/en.ts index ffb9822..58fd55e 100644 --- a/apps/web/src/locales/en.ts +++ b/apps/web/src/locales/en.ts @@ -1,4 +1 @@ -import type { Messages } from '@lingui/core'; -export const messages: Messages = JSON.parse( - '{"nJw77c":[["0","plural",{"one":["#"," image"],"other":["#"," images"]}]],"sowZBN":"Amplitude","R5LSjZ":"Built by <0>gzukas. The source code is available on <1>GitHub.","x6tIe+":"Change theme","+yPBXI":"Choose file","WRqNZd":"Choose Images","akg2sh":"Choose screenshots featuring both light and dark themes to start waving.","jMmFWW":"Copy PNG","pvnfJD":"Dark","GS+Mus":"Export","1njn7W":"Light","kdFX6f":"Remove images","KmK/36":"Reverse images","exWyD0":"Rotation","TRo55K":"Save to","PPWgQv":"See Example","D+NlUC":"System","eKV6Y2":"Wavelength"}' -); +/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"nJw77c\":[[\"0\",\"plural\",{\"one\":[\"#\",\" image\"],\"other\":[\"#\",\" images\"]}]],\"sowZBN\":[\"Amplitude\"],\"R5LSjZ\":[\"Built by <0>gzukas. The source code is available on <1>GitHub.\"],\"dEgA5A\":[\"Cancel\"],\"x6tIe+\":[\"Change theme\"],\"+yPBXI\":[\"Choose file\"],\"8kLsG2\":[\"Choose Files\"],\"jMmFWW\":[\"Copy PNG\"],\"pvnfJD\":[\"Dark\"],\"BBqGS9\":[\"Desktop\"],\"GS+Mus\":[\"Export\"],\"jLXxGK\":[\"https://example.com\"],\"l3s5ri\":[\"Import\"],\"5+Jw7w\":[\"Import images featuring both light and dark themes to start.\"],\"1njn7W\":[\"Light\"],\"dMsM20\":[\"Mobile\"],\"t/YqKh\":[\"Remove\"],\"kdFX6f\":[\"Remove images\"],\"KmK/36\":[\"Reverse images\"],\"exWyD0\":[\"Rotation\"],\"TRo55K\":[\"Save to\"],\"PPWgQv\":[\"See Example\"],\"N0dgdE\":[\"Start with web protocol, e.g. <0>https://\"],\"D+NlUC\":[\"System\"],\"Dl80Sh\":[\"Tablet\"],\"8+z3yQ\":[\"The side should respond to the light and dark themes using the <0>prefers-color-scheme media query. If it does not, choose files instead.\"],\"eKV6Y2\":[\"Wavelength\"]}")as Messages; \ No newline at end of file diff --git a/apps/web/src/main.tsx b/apps/web/src/main.tsx index 749fbf1..c16cf0c 100644 --- a/apps/web/src/main.tsx +++ b/apps/web/src/main.tsx @@ -1,7 +1,8 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import { App } from './App.tsx'; -import './index.css'; +import { App } from '@/App'; + +import "@workspace/ui/globals.css" ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( diff --git a/apps/web/src/types.ts b/apps/web/src/types.ts index 3d354cb..fcd04e4 100644 --- a/apps/web/src/types.ts +++ b/apps/web/src/types.ts @@ -1,5 +1,5 @@ -import { LOADABLE_STATE } from './constants'; +import { LOADABLE_STATE } from '@/constants'; type ValueOf = T[keyof T]; -export type LoadableState = ValueOf; +export type LoadableState = ValueOf; \ No newline at end of file diff --git a/apps/web/src/utils/atomWithExpiringWriteState.ts b/apps/web/src/utils/atomWithExpiringWriteState.ts new file mode 100644 index 0000000..f68935e --- /dev/null +++ b/apps/web/src/utils/atomWithExpiringWriteState.ts @@ -0,0 +1,32 @@ +import { DEFAULT_LOADABLE_STATE_TIMEOUT, LOADABLE_STATE } from '@/constants'; +import { atom, Getter, Setter } from 'jotai'; +import { atomWithExpire } from './atomWithExpire'; +import { LoadableState } from '@/types'; + +export interface AtomWithExpiringWriteStateOptions { + shouldIgnoreError?: (error: unknown) => boolean; +} + +export function atomWithExpiringWriteState( + write: (get: Getter, set: Setter, ...args: Args) => Result, + expireInMs = DEFAULT_LOADABLE_STATE_TIMEOUT, + options?: AtomWithExpiringWriteStateOptions +) { + const writeStateAtom = atomWithExpire(null); + return atom( + get => get(writeStateAtom), + async (get, set, ...args: Args) => { + set(writeStateAtom, LOADABLE_STATE.LOADING); + try { + await write(get, set, ...args); + set(writeStateAtom, LOADABLE_STATE.HAS_DATA, expireInMs); + } catch (error) { + set( + writeStateAtom, + options?.shouldIgnoreError?.(error) ? null : LOADABLE_STATE.HAS_ERROR, + expireInMs + ); + } + } + ); +} diff --git a/apps/web/src/utils/client.ts b/apps/web/src/utils/client.ts new file mode 100644 index 0000000..df0e57d --- /dev/null +++ b/apps/web/src/utils/client.ts @@ -0,0 +1,4 @@ +import { treaty } from '@elysiajs/eden'; +import type { App } from '../../../api/src/index'; + +export const client = treaty(import.meta.env.VITE_API_URL); diff --git a/apps/web/src/utils/rasterize.ts b/apps/web/src/utils/rasterize.ts index 76404ee..4285ffb 100644 --- a/apps/web/src/utils/rasterize.ts +++ b/apps/web/src/utils/rasterize.ts @@ -1,5 +1,5 @@ import { MIME_TYPES } from '@/constants'; -import { loadImage } from './loadImage'; +import { loadImage } from '@/utils/loadImage'; export interface RasterizeOptions { type?: string; diff --git a/apps/web/src/vite-env.d.ts b/apps/web/src/vite-env.d.ts index 11f02fe..476b1e1 100644 --- a/apps/web/src/vite-env.d.ts +++ b/apps/web/src/vite-env.d.ts @@ -1 +1,9 @@ /// + +interface ImportMetaEnv { + readonly VITE_API_URL: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} \ No newline at end of file diff --git a/apps/web/tailwind.config.ts b/apps/web/tailwind.config.ts index 10e060f..244c5f1 100644 --- a/apps/web/tailwind.config.ts +++ b/apps/web/tailwind.config.ts @@ -1,82 +1,7 @@ -import { type Config } from 'tailwindcss'; -import tailwindAnimatePlugin from 'tailwindcss-animate'; +import type { Config } from 'tailwindcss'; +import baseConfig from "@workspace/ui/tailwind.config"; export default { - darkMode: ['class'], - content: [ - './pages/**/*.{ts,tsx}', - './components/**/*.{ts,tsx}', - './app/**/*.{ts,tsx}', - './src/**/*.{ts,tsx}' - ], - prefix: '', - theme: { - fontFamily: { - sans: ['Noto Sans'] - }, - container: { - center: true, - padding: '2rem', - screens: { - '2xl': '1400px' - } - }, - extend: { - colors: { - border: 'hsl(var(--border))', - input: 'hsl(var(--input))', - ring: 'hsl(var(--ring))', - background: 'hsl(var(--background))', - foreground: 'hsl(var(--foreground))', - primary: { - DEFAULT: 'hsl(var(--primary))', - foreground: 'hsl(var(--primary-foreground))' - }, - secondary: { - DEFAULT: 'hsl(var(--secondary))', - foreground: 'hsl(var(--secondary-foreground))' - }, - destructive: { - DEFAULT: 'hsl(var(--destructive))', - foreground: 'hsl(var(--destructive-foreground))' - }, - muted: { - DEFAULT: 'hsl(var(--muted))', - foreground: 'hsl(var(--muted-foreground))' - }, - accent: { - DEFAULT: 'hsl(var(--accent))', - foreground: 'hsl(var(--accent-foreground))' - }, - popover: { - DEFAULT: 'hsl(var(--popover))', - foreground: 'hsl(var(--popover-foreground))' - }, - card: { - DEFAULT: 'hsl(var(--card))', - foreground: 'hsl(var(--card-foreground))' - } - }, - borderRadius: { - lg: 'var(--radius)', - md: 'calc(var(--radius) - 2px)', - sm: 'calc(var(--radius) - 4px)' - }, - keyframes: { - 'accordion-down': { - from: { height: '0' }, - to: { height: 'var(--radix-accordion-content-height)' } - }, - 'accordion-up': { - from: { height: 'var(--radix-accordion-content-height)' }, - to: { height: '0' } - } - }, - animation: { - 'accordion-down': 'accordion-down 0.2s ease-out', - 'accordion-up': 'accordion-up 0.2s ease-out' - } - } - }, - plugins: [tailwindAnimatePlugin] -} satisfies Config; + content: [...baseConfig.content, "../../packages/ui/src/**/*.{ts,tsx}"], + presets: [baseConfig] +} satisfies Config \ No newline at end of file diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 20cb350..26333cd 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -1,30 +1,12 @@ { + "extends": "@tsconfig/vite-react", "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], "types": ["vitest/globals"], - "module": "ESNext", - "skipLibCheck": true, - - "baseUrl": ".", "paths": { - "@/*": ["./src/*"] + "@/*": ["./src/*"], + "@workspace/schema/*": ["../../packages/schema/src/*"], + "@workspace/ui/*": ["../../packages/ui/src/*"] }, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true }, "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }] diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index 4e6877a..68abc05 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -1,12 +1,14 @@ /// import path from 'node:path'; import { defineConfig } from 'vite'; +import tsconfigPaths from 'vite-tsconfig-paths' import react from '@vitejs/plugin-react-swc'; import { lingui } from '@lingui/vite-plugin'; // https://vitejs.dev/config/ export default defineConfig({ plugins: [ + tsconfigPaths(), react({ plugins: [['@lingui/swc-plugin', {}]] }), @@ -15,11 +17,6 @@ export default defineConfig({ configPath: path.join(__dirname, 'lingui.config.ts') }) ], - resolve: { - alias: { - '@': path.resolve(__dirname, './src') - } - }, test: { environment: 'happy-dom', globals: true @@ -27,4 +24,4 @@ export default defineConfig({ server: { port: 3000 } -}); +}); \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 0ede94a669475dd997ba25d8a9d85ba769d07a17..abcb3d3060c3483abc6f701e1d5916a8059699e2 100644 GIT binary patch delta 56371 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≫xIU!{T_aKW-kl}BdIC# zh}g!#+ykRil9FPh(-TtY=6+bN&Oxyz6(58LFca8v5oQvpNr~u7-y9G-G25wW*g>&| zxhw?`ToiIh%(HNgOiPH=4Nr)PiB0BioEAGWWmK%r7@YI-2eFTd zMvv5_jQE6P4%Hb)M@zVTZ#N-cml~Nq+!(|UyMP>vVFj_cLtKtT7#dTOM#ZL4$6T>p z`y}KFT}(n`QcAqJ?fKWJw3N}t*fd?7Q5P8<9cwfurXacKV&mdy^IrHnj{_XPC~?q| z)N4c|)!Zcxw&N_`P7r_9d6D&4#EcRj>SmGeXz>>L-H!^%-fuCNM~;eiRzXpbQL#xL zX&K4s2_s|4`T_F8lcQos>T@5l;k`jzNDR5i=a_idqS+ruZ+ zmP}J$-oFP#{+G^^ZvH4XFY0ziG+Jum2ms-49#`#{Q?fVaCe(R8!pcdbcESx(KaJXh zdEFqobU}2XIE}g+1%3?MpVFwc)bFC$s@WgCO&JM~1RU#9(=SAqqA?f62urft3+}6} z)QyTN#agRB#sAC2v-Un2Q1(Wma3Nb8b$usgA*GPJs??IG_f=}@ z-3ezny=~OqF7Eion%WRN*;*&1f9!{83Ehm@GWJvz)wNbPvjsS3$gyFQf@?k4A%o7U K=(vsg%>MyOAwg6C delta 59208 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
4X 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.0.0" - }, "overrides": { "@swc/core": "1.7.40" } diff --git a/packages/schema/package.json b/packages/schema/package.json new file mode 100644 index 0000000..e68551f --- /dev/null +++ b/packages/schema/package.json @@ -0,0 +1,12 @@ +{ + "name": "@workspace/schema", + "private": true, + "author": "Gediminas Zukas", + "license": "MIT", + "exports": { + ".": "./src/schema.ts" + }, + "peerDependencies": { + "@sinclair/typebox": "^0.34.14" + } +} \ No newline at end of file diff --git a/packages/schema/src/schema.ts b/packages/schema/src/schema.ts new file mode 100644 index 0000000..e99e1fc --- /dev/null +++ b/packages/schema/src/schema.ts @@ -0,0 +1,9 @@ +import { Type } from '@sinclair/typebox'; + +export const url = Type.String({ pattern: '^https?://' }); + +export const deviceType = Type.Union([ + Type.Literal('desktop'), + Type.Literal('tablet'), + Type.Literal('mobile') +]); diff --git a/packages/ui/components.json b/packages/ui/components.json new file mode 100644 index 0000000..b317601 --- /dev/null +++ b/packages/ui/components.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/styles/globals.css", + "baseColor": "slate", + "cssVariables": true + }, + "iconLibrary": "lucide", + "aliases": { + "components": "@workspace/ui/components", + "utils": "@workspace/ui/lib/utils", + "hooks": "@workspace/ui/hooks", + "lib": "@workspace/ui/lib", + "ui": "@workspace/ui/components" + } +} diff --git a/packages/ui/package.json b/packages/ui/package.json new file mode 100644 index 0000000..7e6e234 --- /dev/null +++ b/packages/ui/package.json @@ -0,0 +1,47 @@ +{ + "name": "@workspace/ui", + "version": "0.0.0", + "type": "module", + "private": true, + "exports": { + "./globals.css": "./src/styles/globals.css", + "./postcss.config": "./postcss.config.mjs", + "./tailwind.config": "./tailwind.config.ts", + "./lib/*": "./src/lib/*.ts", + "./components/*": "./src/components/*.tsx", + "./hooks/*": "./src/hooks/*.ts" + }, + "scripts": { + "lint": "eslint . --max-warnings 0" + }, + "dependencies": { + "@radix-ui/react-aspect-ratio": "^1.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.4", + "@radix-ui/react-label": "^2.1.1", + "@radix-ui/react-separator": "^1.1.1", + "@radix-ui/react-slider": "^1.2.2", + "@radix-ui/react-slot": "^1.1.1", + "@radix-ui/react-toggle": "^1.1.1", + "@radix-ui/react-toggle-group": "^1.1.1", + "@radix-ui/react-tooltip": "^1.1.6", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "lucide-react": "0.456.0", + "next-themes": "^0.4.3", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-hook-form": "^7.54.2", + "tailwind-merge": "^2.5.4", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@types/node": "^22.9.0", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "react": "^18.3.1", + "tailwindcss": "^3.4.14", + "typescript": "^5.6.3" + } +} \ No newline at end of file diff --git a/packages/ui/src/components/alert-dialog.tsx b/packages/ui/src/components/alert-dialog.tsx new file mode 100644 index 0000000..baa9eed --- /dev/null +++ b/packages/ui/src/components/alert-dialog.tsx @@ -0,0 +1,139 @@ +import * as React from "react" +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" + +import { cn } from "@workspace/ui/lib/utils" +import { buttonVariants } from "@workspace/ui/components/button" + +const AlertDialog = AlertDialogPrimitive.Root + +const AlertDialogTrigger = AlertDialogPrimitive.Trigger + +const AlertDialogPortal = AlertDialogPrimitive.Portal + +const AlertDialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName + +const AlertDialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + +)) +AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName + +const AlertDialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +AlertDialogHeader.displayName = "AlertDialogHeader" + +const AlertDialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +AlertDialogFooter.displayName = "AlertDialogFooter" + +const AlertDialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName + +const AlertDialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogDescription.displayName = + AlertDialogPrimitive.Description.displayName + +const AlertDialogAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName + +const AlertDialogCancel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +} diff --git a/packages/ui/src/components/aspect-ratio.tsx b/packages/ui/src/components/aspect-ratio.tsx new file mode 100644 index 0000000..c4abbf3 --- /dev/null +++ b/packages/ui/src/components/aspect-ratio.tsx @@ -0,0 +1,5 @@ +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" + +const AspectRatio = AspectRatioPrimitive.Root + +export { AspectRatio } diff --git a/packages/ui/src/components/button.tsx b/packages/ui/src/components/button.tsx new file mode 100644 index 0000000..0e0d1d0 --- /dev/null +++ b/packages/ui/src/components/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@workspace/ui/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/packages/ui/src/components/dialog.tsx b/packages/ui/src/components/dialog.tsx new file mode 100644 index 0000000..1371889 --- /dev/null +++ b/packages/ui/src/components/dialog.tsx @@ -0,0 +1,120 @@ +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { X } from "lucide-react" + +import { cn } from "@workspace/ui/lib/utils" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} diff --git a/apps/web/src/components/ui/DropdownMenu.tsx b/packages/ui/src/components/dropdown-menu.tsx similarity index 70% rename from apps/web/src/components/ui/DropdownMenu.tsx rename to packages/ui/src/components/dropdown-menu.tsx index d3c0fd9..d99a1bf 100644 --- a/apps/web/src/components/ui/DropdownMenu.tsx +++ b/packages/ui/src/components/dropdown-menu.tsx @@ -1,42 +1,42 @@ -import * as React from 'react'; -import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'; -import { Check, ChevronRight, Circle } from 'lucide-react'; +import * as React from "react" +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" +import { Check, ChevronRight, Circle } from "lucide-react" -import { cn } from '@/lib/utils'; +import { cn } from "@workspace/ui/lib/utils" -const DropdownMenu = DropdownMenuPrimitive.Root; +const DropdownMenu = DropdownMenuPrimitive.Root -const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; +const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger -const DropdownMenuGroup = DropdownMenuPrimitive.Group; +const DropdownMenuGroup = DropdownMenuPrimitive.Group -const DropdownMenuPortal = DropdownMenuPrimitive.Portal; +const DropdownMenuPortal = DropdownMenuPrimitive.Portal -const DropdownMenuSub = DropdownMenuPrimitive.Sub; +const DropdownMenuSub = DropdownMenuPrimitive.Sub -const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; +const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup const DropdownMenuSubTrigger = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { - inset?: boolean; + inset?: boolean } >(({ className, inset, children, ...props }, ref) => ( {children} - + -)); +)) DropdownMenuSubTrigger.displayName = - DropdownMenuPrimitive.SubTrigger.displayName; + DropdownMenuPrimitive.SubTrigger.displayName const DropdownMenuSubContent = React.forwardRef< React.ElementRef, @@ -45,14 +45,14 @@ const DropdownMenuSubContent = React.forwardRef< -)); +)) DropdownMenuSubContent.displayName = - DropdownMenuPrimitive.SubContent.displayName; + DropdownMenuPrimitive.SubContent.displayName const DropdownMenuContent = React.forwardRef< React.ElementRef, @@ -63,32 +63,32 @@ const DropdownMenuContent = React.forwardRef< ref={ref} sideOffset={sideOffset} className={cn( - 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', + "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className )} {...props} /> -)); -DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; +)) +DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName const DropdownMenuItem = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { - inset?: boolean; + inset?: boolean } >(({ className, inset, ...props }, ref) => ( -)); -DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; +)) +DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName const DropdownMenuCheckboxItem = React.forwardRef< React.ElementRef, @@ -97,7 +97,7 @@ const DropdownMenuCheckboxItem = React.forwardRef< {children} -)); +)) DropdownMenuCheckboxItem.displayName = - DropdownMenuPrimitive.CheckboxItem.displayName; + DropdownMenuPrimitive.CheckboxItem.displayName const DropdownMenuRadioItem = React.forwardRef< React.ElementRef, @@ -121,7 +121,7 @@ const DropdownMenuRadioItem = React.forwardRef< {children} -)); -DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; +)) +DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName const DropdownMenuLabel = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { - inset?: boolean; + inset?: boolean } >(({ className, inset, ...props }, ref) => ( -)); -DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; +)) +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName const DropdownMenuSeparator = React.forwardRef< React.ElementRef, @@ -160,11 +160,11 @@ const DropdownMenuSeparator = React.forwardRef< >(({ className, ...props }, ref) => ( -)); -DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; +)) +DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName const DropdownMenuShortcut = ({ className, @@ -172,12 +172,12 @@ const DropdownMenuShortcut = ({ }: React.HTMLAttributes) => { return ( - ); -}; -DropdownMenuShortcut.displayName = 'DropdownMenuShortcut'; + ) +} +DropdownMenuShortcut.displayName = "DropdownMenuShortcut" export { DropdownMenu, @@ -194,5 +194,5 @@ export { DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, - DropdownMenuRadioGroup -}; + DropdownMenuRadioGroup, +} diff --git a/packages/ui/src/components/form.tsx b/packages/ui/src/components/form.tsx new file mode 100644 index 0000000..4f52374 --- /dev/null +++ b/packages/ui/src/components/form.tsx @@ -0,0 +1,176 @@ +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" +import { Slot } from "@radix-ui/react-slot" +import { + Controller, + ControllerProps, + FieldPath, + FieldValues, + FormProvider, + useFormContext, +} from "react-hook-form" + +import { cn } from "@workspace/ui/lib/utils" +import { Label } from "@workspace/ui/components/label" + +const Form = FormProvider + +type FormFieldContextValue< + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath +> = { + name: TName +} + +const FormFieldContext = React.createContext( + {} as FormFieldContextValue +) + +const FormField = < + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath +>({ + ...props +}: ControllerProps) => { + return ( + + + + ) +} + +const useFormField = () => { + const fieldContext = React.useContext(FormFieldContext) + const itemContext = React.useContext(FormItemContext) + const { getFieldState, formState } = useFormContext() + + const fieldState = getFieldState(fieldContext.name, formState) + + if (!fieldContext) { + throw new Error("useFormField should be used within ") + } + + const { id } = itemContext + + return { + id, + name: fieldContext.name, + formItemId: `${id}-form-item`, + formDescriptionId: `${id}-form-item-description`, + formMessageId: `${id}-form-item-message`, + ...fieldState, + } +} + +type FormItemContextValue = { + id: string +} + +const FormItemContext = React.createContext( + {} as FormItemContextValue +) + +const FormItem = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => { + const id = React.useId() + + return ( + +
+ + ) +}) +FormItem.displayName = "FormItem" + +const FormLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => { + const { error, formItemId } = useFormField() + + return ( + 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 diff --git a/package.json b/package.json index 42aa10d..4e06e03 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,21 @@ "web": "bun --filter ./apps/web" }, "devDependencies": { - "eslint": "^9.17.0", + "eslint": "^9.18.0", "husky": "^9.1.7", - "lint-staged": "^15.3.0", + "lint-staged": "^15.4.2", "prettier": "3.4.2", - "prettier-plugin-tailwindcss": "^0.6.10", - "turbo": "^2.3.3", + "prettier-plugin-tailwindcss": "^0.6.11", + "turbo": "^2.3.4", "typescript": "^5.7.3", - "vite": "6.0.7", - "vitest": "^2.1.8" + "vite": "6.0.11", + "vitest": "^3.0.4" }, - "packageManager": "bun@1.1.45", + "packageManager": "bun@1.2.0", "overrides": { "@swc/core": "1.7.40" - } + }, + "trustedDependencies": [ + "@swc/core" + ] } \ No newline at end of file diff --git a/packages/ui/package.json b/packages/ui/package.json index 7e6e234..40e3c35 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -16,32 +16,29 @@ }, "dependencies": { "@radix-ui/react-aspect-ratio": "^1.1.1", - "@radix-ui/react-dropdown-menu": "^2.1.4", + "@radix-ui/react-dropdown-menu": "^2.1.5", "@radix-ui/react-label": "^2.1.1", "@radix-ui/react-separator": "^1.1.1", "@radix-ui/react-slider": "^1.2.2", "@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-toggle": "^1.1.1", "@radix-ui/react-toggle-group": "^1.1.1", - "@radix-ui/react-tooltip": "^1.1.6", - "class-variance-authority": "^0.7.0", + "@radix-ui/react-tooltip": "^1.1.7", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "lucide-react": "0.456.0", - "next-themes": "^0.4.3", - "react": "^19.0.0", - "react-dom": "^19.0.0", + "lucide-react": "0.474.0", + "react": "^18.3.1", "react-hook-form": "^7.54.2", - "tailwind-merge": "^2.5.4", + "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7" }, "devDependencies": { - "@types/node": "^22.9.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.1", "autoprefixer": "^10.4.20", - "postcss": "^8.4.47", + "postcss": "^8.5.1", "react": "^18.3.1", - "tailwindcss": "^3.4.14", - "typescript": "^5.6.3" + "tailwindcss": "^4.0.0", + "typescript": "^5.7.3" } } \ No newline at end of file diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json deleted file mode 100644 index ca826cf..0000000 --- a/packages/ui/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "esModuleInterop": true, - "incremental": false, - "isolatedModules": true, - "lib": ["es2022", "DOM", "DOM.Iterable"], - "module": "NodeNext", - "moduleDetection": "force", - "moduleResolution": "NodeNext", - "noUncheckedIndexedAccess": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "strict": true, - "target": "ES2022", - "jsx": "react-jsx", - "baseUrl": ".", - "paths": { - "@workspace/ui/*": ["./src/*"] - } - }, - "include": ["."], - "exclude": ["node_modules", "dist"] -} From c0f7b8a0582c54eb95bff097206947f5ace7d89d Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Fri, 24 Jan 2025 17:52:44 +0200 Subject: [PATCH 05/25] Revert "deps: bump" This reverts commit b8e68d289f87df3e9f8386c819d8a7f9b4672867. --- apps/api/package.json | 2 +- apps/web/package.json | 16 +- bun.lock | 1370 ------------------------------------- bun.lockb | Bin 0 -> 262498 bytes package.json | 19 +- packages/ui/package.json | 21 +- packages/ui/tsconfig.json | 25 + 7 files changed, 54 insertions(+), 1399 deletions(-) delete mode 100644 bun.lock create mode 100644 bun.lockb create mode 100644 packages/ui/tsconfig.json diff --git a/apps/api/package.json b/apps/api/package.json index 334b877..12aa059 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -12,7 +12,7 @@ "@workspace/schema": "workspace:*", "close-with-grace": "^2.2.0", "elysia": "^1.2.10", - "puppeteer": "^24.1.1" + "puppeteer": "^24.1.0" }, "devDependencies": { "@tsconfig/bun": "^1.0.7", diff --git a/apps/web/package.json b/apps/web/package.json index f939d45..c30272f 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -12,24 +12,24 @@ "messages:compile": "lingui compile --typescript", "preview": "vite preview" }, - "packageManager": "bun@1.2.0", + "packageManager": "bun@1.1.45", "dependencies": { "@elysiajs/eden": "^1.2.0", "@hookform/resolvers": "^3.10.0", "@lingui/core": "^5.1.2", "@lingui/macro": "^5.1.2", "@lingui/react": "^5.1.2", - "@radix-ui/react-alert-dialog": "^1.1.5", - "@radix-ui/react-dialog": "^1.1.5", + "@radix-ui/react-alert-dialog": "^1.1.4", + "@radix-ui/react-dialog": "^1.1.4", "@radix-ui/react-slot": "^1.1.1", "@sinclair/typebox": "^0.34.14", "@workspace/schema": "workspace:*", "@workspace/ui": "workspace:*", "browser-fs-access": "^0.35.0", "clsx": "^2.1.1", - "jotai": "^2.11.1", + "jotai": "^2.11.0", "jotai-effect": "^1.0.7", - "lucide-react": "^0.474.0", + "lucide-react": "^0.473.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, @@ -40,15 +40,15 @@ "@lingui/vite-plugin": "^5.1.2", "@testing-library/react": "^16.2.0", "@tsconfig/vite-react": "^3.4.0", - "@types/bun": "^1.2.0", - "@types/node": "^22.10.10", + "@types/bun": "^1.1.18", + "@types/node": "^22.10.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.1", "@vitejs/plugin-react-swc": "3.7.2", "autoprefixer": "^10.4.20", "elysia": "^1.2.10", "postcss": "^8.5.1", - "tailwindcss": "^4.0.0", + "tailwindcss": "^3.4.17", "vite-tsconfig-paths": "^5.1.4" } } \ No newline at end of file diff --git a/bun.lock b/bun.lock deleted file mode 100644 index 7e12778..0000000 --- a/bun.lock +++ /dev/null @@ -1,1370 +0,0 @@ -{ - "lockfileVersion": 1, - "workspaces": { - "": { - "name": "shadowave", - "devDependencies": { - "eslint": "^9.18.0", - "husky": "^9.1.7", - "lint-staged": "^15.4.2", - "prettier": "3.4.2", - "prettier-plugin-tailwindcss": "^0.6.11", - "turbo": "^2.3.4", - "typescript": "^5.7.3", - "vite": "6.0.11", - "vitest": "^3.0.4", - }, - }, - "apps/api": { - "name": "@shadowave/api", - "version": "0.0.0", - "dependencies": { - "@elysiajs/cors": "^1.2.0", - "@workspace/schema": "workspace:*", - "close-with-grace": "^2.2.0", - "elysia": "^1.2.10", - "puppeteer": "^24.1.1", - }, - "devDependencies": { - "@tsconfig/bun": "^1.0.7", - "bun-types": "latest", - }, - }, - "apps/web": { - "name": "@shadowave/web", - "version": "0.0.0", - "dependencies": { - "@elysiajs/eden": "^1.2.0", - "@hookform/resolvers": "^3.10.0", - "@lingui/core": "^5.1.2", - "@lingui/macro": "^5.1.2", - "@lingui/react": "^5.1.2", - "@radix-ui/react-alert-dialog": "^1.1.5", - "@radix-ui/react-dialog": "^1.1.5", - "@radix-ui/react-slot": "^1.1.1", - "@sinclair/typebox": "^0.34.14", - "@workspace/schema": "workspace:*", - "@workspace/ui": "workspace:*", - "browser-fs-access": "^0.35.0", - "clsx": "^2.1.1", - "jotai": "^2.11.1", - "jotai-effect": "^1.0.7", - "lucide-react": "^0.474.0", - "react": "^18.3.1", - "react-dom": "^18.3.1", - }, - "devDependencies": { - "@lingui/cli": "^5.1.2", - "@lingui/conf": "^5.1.2", - "@lingui/swc-plugin": "5.0.2", - "@lingui/vite-plugin": "^5.1.2", - "@testing-library/react": "^16.2.0", - "@tsconfig/vite-react": "^3.4.0", - "@types/bun": "^1.2.0", - "@types/node": "^22.10.10", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react-swc": "3.7.2", - "autoprefixer": "^10.4.20", - "elysia": "^1.2.10", - "postcss": "^8.5.1", - "tailwindcss": "^4.0.0", - "vite-tsconfig-paths": "^5.1.4", - }, - }, - "packages/schema": { - "name": "@workspace/schema", - "peerDependencies": { - "@sinclair/typebox": "^0.34.14", - }, - }, - "packages/ui": { - "name": "@workspace/ui", - "version": "0.0.0", - "dependencies": { - "@radix-ui/react-aspect-ratio": "^1.1.1", - "@radix-ui/react-dropdown-menu": "^2.1.5", - "@radix-ui/react-label": "^2.1.1", - "@radix-ui/react-separator": "^1.1.1", - "@radix-ui/react-slider": "^1.2.2", - "@radix-ui/react-slot": "^1.1.1", - "@radix-ui/react-toggle": "^1.1.1", - "@radix-ui/react-toggle-group": "^1.1.1", - "@radix-ui/react-tooltip": "^1.1.7", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "lucide-react": "0.474.0", - "react": "^18.3.1", - "react-hook-form": "^7.54.2", - "tailwind-merge": "^2.6.0", - "tailwindcss-animate": "^1.0.7", - }, - "devDependencies": { - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.1", - "autoprefixer": "^10.4.20", - "postcss": "^8.5.1", - "react": "^18.3.1", - "tailwindcss": "^4.0.0", - "typescript": "^5.7.3", - }, - }, - }, - "trustedDependencies": [ - "@swc/core", - ], - "overrides": { - "@swc/core": "1.7.40", - }, - "packages": { - "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], - - "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], - - "@babel/compat-data": ["@babel/compat-data@7.26.5", "", {}, "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg=="], - - "@babel/core": ["@babel/core@7.26.7", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", "@babel/helpers": "^7.26.7", "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", "@babel/traverse": "^7.26.7", "@babel/types": "^7.26.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA=="], - - "@babel/generator": ["@babel/generator@7.26.5", "", { "dependencies": { "@babel/parser": "^7.26.5", "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" } }, "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw=="], - - "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.26.5", "", { "dependencies": { "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA=="], - - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.25.9", "", { "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw=="], - - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.26.0", "", { "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw=="], - - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.25.9", "", {}, "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="], - - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.25.9", "", {}, "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="], - - "@babel/helper-validator-option": ["@babel/helper-validator-option@7.25.9", "", {}, "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw=="], - - "@babel/helpers": ["@babel/helpers@7.26.7", "", { "dependencies": { "@babel/template": "^7.25.9", "@babel/types": "^7.26.7" } }, "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A=="], - - "@babel/parser": ["@babel/parser@7.26.7", "", { "dependencies": { "@babel/types": "^7.26.7" }, "bin": "./bin/babel-parser.js" }, "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w=="], - - "@babel/runtime": ["@babel/runtime@7.26.7", "", { "dependencies": { "regenerator-runtime": "^0.14.0" } }, "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ=="], - - "@babel/template": ["@babel/template@7.25.9", "", { "dependencies": { "@babel/code-frame": "^7.25.9", "@babel/parser": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg=="], - - "@babel/traverse": ["@babel/traverse@7.26.7", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", "@babel/types": "^7.26.7", "debug": "^4.3.1", "globals": "^11.1.0" } }, "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA=="], - - "@babel/types": ["@babel/types@7.26.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg=="], - - "@elysiajs/cors": ["@elysiajs/cors@1.2.0", "", { "peerDependencies": { "elysia": ">= 1.2.0" } }, "sha512-qsJwDAg6WfdQRMfj6uSMcDPSpXvm/zQFeAX1uuJXhIgazH8itSfcDxcH9pMuXVRX1yQNi2pPwNQLJmAcw5mzvw=="], - - "@elysiajs/eden": ["@elysiajs/eden@1.2.0", "", { "peerDependencies": { "elysia": ">= 1.2.0" } }, "sha512-MpV45ahuF+iFZUg4tyJbLr9qxzY99m8clJVgQrDrz7Qh6eOKQ8MY6vjYMj3Wh21pTIRHPHzOLhVorRGby1/Owg=="], - - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="], - - "@esbuild/android-arm": ["@esbuild/android-arm@0.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="], - - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="], - - "@esbuild/android-x64": ["@esbuild/android-x64@0.24.2", "", { "os": "android", "cpu": "x64" }, "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="], - - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="], - - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="], - - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="], - - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="], - - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="], - - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="], - - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="], - - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="], - - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="], - - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="], - - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="], - - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="], - - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="], - - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="], - - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.2", "", { "os": "none", "cpu": "x64" }, "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="], - - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="], - - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="], - - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="], - - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="], - - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="], - - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="], - - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.4.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA=="], - - "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], - - "@eslint/config-array": ["@eslint/config-array@0.19.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.5", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA=="], - - "@eslint/core": ["@eslint/core@0.10.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw=="], - - "@eslint/eslintrc": ["@eslint/eslintrc@3.2.0", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w=="], - - "@eslint/js": ["@eslint/js@9.18.0", "", {}, "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA=="], - - "@eslint/object-schema": ["@eslint/object-schema@2.1.5", "", {}, "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ=="], - - "@eslint/plugin-kit": ["@eslint/plugin-kit@0.2.5", "", { "dependencies": { "@eslint/core": "^0.10.0", "levn": "^0.4.1" } }, "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A=="], - - "@floating-ui/core": ["@floating-ui/core@1.6.9", "", { "dependencies": { "@floating-ui/utils": "^0.2.9" } }, "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw=="], - - "@floating-ui/dom": ["@floating-ui/dom@1.6.13", "", { "dependencies": { "@floating-ui/core": "^1.6.0", "@floating-ui/utils": "^0.2.9" } }, "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w=="], - - "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.2", "", { "dependencies": { "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A=="], - - "@floating-ui/utils": ["@floating-ui/utils@0.2.9", "", {}, "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg=="], - - "@hookform/resolvers": ["@hookform/resolvers@3.10.0", "", { "peerDependencies": { "react-hook-form": "^7.0.0" } }, "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag=="], - - "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], - - "@humanfs/node": ["@humanfs/node@0.16.6", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" } }, "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw=="], - - "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], - - "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.1", "", {}, "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA=="], - - "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], - - "@jest/schemas": ["@jest/schemas@29.6.3", "", { "dependencies": { "@sinclair/typebox": "^0.27.8" } }, "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="], - - "@jest/types": ["@jest/types@29.6.3", "", { "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw=="], - - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="], - - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - - "@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="], - - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="], - - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], - - "@lingui/babel-plugin-extract-messages": ["@lingui/babel-plugin-extract-messages@5.1.2", "", {}, "sha512-w4lX0aR3mvQqwCGZDFbtTDg8BUN2Pf8FQ0NMYWSRG/mQV6AskZn3xY9R6wht9poVr/RfKaPF+9P4jQzAxXUWWw=="], - - "@lingui/babel-plugin-lingui-macro": ["@lingui/babel-plugin-lingui-macro@5.1.2", "", { "dependencies": { "@babel/core": "^7.20.12", "@babel/runtime": "^7.20.13", "@babel/types": "^7.20.7", "@lingui/conf": "^5.1.2", "@lingui/core": "^5.1.2", "@lingui/message-utils": "^5.1.2" }, "peerDependencies": { "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-6hq75WZRvuOeWOM0LplZmKTRYIHn9o8PdAYuymVO+QvRp+mMKKMwf8vWyqdVW+4T/zaknN8WtXRRGw6wcCBHew=="], - - "@lingui/cli": ["@lingui/cli@5.1.2", "", { "dependencies": { "@babel/core": "^7.21.0", "@babel/generator": "^7.21.1", "@babel/parser": "^7.22.0", "@babel/runtime": "^7.21.0", "@babel/types": "^7.21.2", "@lingui/babel-plugin-extract-messages": "^5.1.2", "@lingui/babel-plugin-lingui-macro": "^5.1.2", "@lingui/conf": "^5.1.2", "@lingui/core": "^5.1.2", "@lingui/format-po": "^5.1.2", "@lingui/message-utils": "^5.1.2", "babel-plugin-macros": "^3.0.1", "chalk": "^4.1.0", "chokidar": "3.5.1", "cli-table": "^0.3.11", "commander": "^10.0.0", "convert-source-map": "^2.0.0", "date-fns": "^3.6.0", "esbuild": "^0.21.5", "glob": "^11.0.0", "inquirer": "^7.3.3", "micromatch": "^4.0.7", "normalize-path": "^3.0.0", "ora": "^5.1.0", "pathe": "^1.1.0", "pkg-up": "^3.1.0", "pofile": "^1.1.4", "pseudolocale": "^2.0.0", "ramda": "^0.27.1", "source-map": "^0.8.0-beta.0" }, "bin": { "lingui": "./dist/lingui.js" } }, "sha512-PqiDhHmLbeXBmH9Nig6fk0LJXQA0/cr/G2REp60GJ2YBxCvpooE8N2Loi1+dyPX+CGmL4XaQg5Rq5Du9LBP0Gg=="], - - "@lingui/conf": ["@lingui/conf@5.1.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "chalk": "^4.1.0", "cosmiconfig": "^8.0.0", "jest-validate": "^29.4.3", "jiti": "^1.17.1", "lodash.get": "^4.4.2" } }, "sha512-m0kKiiasvoFLo3cpix+zl1wT4/Wn09+9FHdh7tzuxwcRFWyXgJl1/Ire1Cfumoyve0p4DvtnGygg7meAGm6jJw=="], - - "@lingui/core": ["@lingui/core@5.1.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@lingui/message-utils": "^5.1.2", "unraw": "^3.0.0" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.1.2", "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-biqmMCWuBBj7ERSpgGSV91hTShnSrR/RIFUcNKjWuZYgDd3HpBdEmXKCo9NTanQYbkBUpmyw/bgwsSBex6vkDA=="], - - "@lingui/format-po": ["@lingui/format-po@5.1.2", "", { "dependencies": { "@lingui/conf": "^5.1.2", "@lingui/message-utils": "^5.1.2", "date-fns": "^3.6.0", "pofile": "^1.1.4" } }, "sha512-fkhAeBnOqceY5CJrtyRN5oBq3/6X2IpIKS+6yzwyWUzmJ5XmW2cwF2xtrcBwEekvtKzyuUZz7Dqc9gM02epSqA=="], - - "@lingui/macro": ["@lingui/macro@5.1.2", "", { "dependencies": { "@lingui/core": "^5.1.2", "@lingui/react": "^5.1.2" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.1.2", "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-R6HV7XmiskkI/85JCjAtQuBPRu5AB57lOJdJE6xs2qBaeRu70v0BalTn4wyG5+r0JSkDI4gakWaXKW2KpWN6fQ=="], - - "@lingui/message-utils": ["@lingui/message-utils@5.1.2", "", { "dependencies": { "@messageformat/parser": "^5.0.0", "js-sha256": "^0.10.1" } }, "sha512-P/N0yBy2MuC726EaGPGiOafc/0RafHiwkvZJdFKjm1/XOMWrFZDPFXTuxguVQ3HQsRi5eUIPaboU4uRX4GepPg=="], - - "@lingui/react": ["@lingui/react@5.1.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@lingui/core": "^5.1.2" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.1.2", "babel-plugin-macros": "2 || 3", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-YPAvbPUd+kJrmA9H1LSJ9f6+0hkOlm0w8g+7a8FtE7olamjXd7SyIgJMbeJmvKSdztrrdcLBs9YEftUKTfjiyg=="], - - "@lingui/swc-plugin": ["@lingui/swc-plugin@5.0.2", "", { "peerDependencies": { "@lingui/core": "5" } }, "sha512-qKMc+E2cNIax6fhhN+O3n4VOIzQXfGhenQMlrNfvOjq5DEGimFjprL3c/9XuNO9mhQ4izlqNkasvep4espt3sw=="], - - "@lingui/vite-plugin": ["@lingui/vite-plugin@5.1.2", "", { "dependencies": { "@lingui/cli": "^5.1.2", "@lingui/conf": "^5.1.2" }, "peerDependencies": { "vite": "^3 || ^4 || ^5.0.9 || ^6" } }, "sha512-1KDoj03+ie9Td/YYOTjncucwAMVU16RfFpnm1uHvrGGEoRgWfwox4pwTwUbIeksSuecGv757vLeyugThwdyfpA=="], - - "@messageformat/parser": ["@messageformat/parser@5.1.1", "", { "dependencies": { "moo": "^0.5.1" } }, "sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg=="], - - "@puppeteer/browsers": ["@puppeteer/browsers@2.7.0", "", { "dependencies": { "debug": "^4.4.0", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", "semver": "^7.6.3", "tar-fs": "^3.0.6", "unbzip2-stream": "^1.4.3", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-bO61XnTuopsz9kvtfqhVbH6LTM1koxK0IlBR+yuVrM2LB7mk8+5o1w18l5zqd5cs8xlf+ntgambqRqGifMDjog=="], - - "@radix-ui/number": ["@radix-ui/number@1.1.0", "", {}, "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ=="], - - "@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], - - "@radix-ui/react-alert-dialog": ["@radix-ui/react-alert-dialog@1.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dialog": "1.1.5", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1Y2sI17QzSZP58RjGtrklfSGIf3AF7U/HkD3aAcAnhOUJrm7+7GG1wRDFaUlSe0nW5B/t4mYd/+7RNbP2Wexug=="], - - "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w=="], - - "@radix-ui/react-aspect-ratio": ["@radix-ui/react-aspect-ratio@1.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kNU4FIpcFMBLkOUcgeIteH06/8JLBcYY6Le1iKenDGCYNYFX3TQqCZjzkOsz37h7r94/99GTb7YhEr98ZBJibw=="], - - "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA=="], - - "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], - - "@radix-ui/react-context": ["@radix-ui/react-context@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q=="], - - "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-portal": "1.1.3", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-LaO3e5h/NOEL4OfXjxD43k9Dx+vn+8n+PCFt6uhX/BADFflllyv3WJG6rgvvSVBxpTch938Qq/LGc2MMxipXPw=="], - - "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg=="], - - "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-escape-keydown": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA=="], - - "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-menu": "2.1.5", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-50ZmEFL1kOuLalPKHrLWvPFMons2fGx9TqQCWlPwDVpbAnaUJ1g4XNcKqFNMQymYU0kKWR4MDDi+9vUQBGFgcQ=="], - - "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg=="], - - "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA=="], - - "@radix-ui/react-id": ["@radix-ui/react-id@1.1.0", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA=="], - - "@radix-ui/react-label": ["@radix-ui/react-label@2.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw=="], - - "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.1", "@radix-ui/react-portal": "1.1.3", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-roving-focus": "1.1.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-callback-ref": "1.1.0", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-uH+3w5heoMJtqVCgYOtYVMECk1TOrkUn0OG0p5MqXC0W2ppcuVeESbou8PTHoqAjbdTEK19AGXBWcEtR5WpEQg=="], - - "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.1", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-rect": "1.1.0", "@radix-ui/react-use-size": "1.1.0", "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw=="], - - "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw=="], - - "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.2", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg=="], - - "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], - - "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw=="], - - "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw=="], - - "@radix-ui/react-slider": ["@radix-ui/react-slider@1.2.2", "", { "dependencies": { "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-previous": "1.1.0", "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sNlU06ii1/ZcbHf8I9En54ZPW0Vil/yPVg4vQMcFNjrIx51jsHbFl1HYHQvCIWJSr1q0ZmA+iIs/ZTv8h7HHSA=="], - - "@radix-ui/react-slot": ["@radix-ui/react-slot@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g=="], - - "@radix-ui/react-toggle": ["@radix-ui/react-toggle@1.1.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-i77tcgObYr743IonC1hrsnnPmszDRn8p+EGUsUt+5a/JFn28fxaM88Py6V2mc8J5kELMWishI0rLnuGLFD/nnQ=="], - - "@radix-ui/react-toggle-group": ["@radix-ui/react-toggle-group@1.1.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-roving-focus": "1.1.1", "@radix-ui/react-toggle": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-OgDLZEA30Ylyz8YSXvnGqIHtERqnUt1KUYTKdw/y8u7Ci6zGiJfXc02jahmcSNK3YcErqioj/9flWC9S1ihfwg=="], - - "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.1", "@radix-ui/react-portal": "1.1.3", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-visually-hidden": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ss0s80BC0+g0+Zc53MvilcnTYSOi4mSuFWBPYPuTOFGjx+pUU+ZrmamMNwS56t8MTFlniA5ocjd4jYm/CdhbOg=="], - - "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw=="], - - "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.1.0", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw=="], - - "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.0", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw=="], - - "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w=="], - - "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og=="], - - "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.0", "", { "dependencies": { "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ=="], - - "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.0", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw=="], - - "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg=="], - - "@radix-ui/rect": ["@radix-ui/rect@1.1.0", "", {}, "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg=="], - - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.32.0", "", { "os": "android", "cpu": "arm" }, "sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg=="], - - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A=="], - - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ=="], - - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ=="], - - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.32.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA=="], - - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ=="], - - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A=="], - - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ=="], - - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w=="], - - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw=="], - - "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.32.0", "", { "os": "linux", "cpu": "none" }, "sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw=="], - - "@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.32.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ=="], - - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.32.0", "", { "os": "linux", "cpu": "none" }, "sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw=="], - - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.32.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw=="], - - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A=="], - - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg=="], - - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg=="], - - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.32.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw=="], - - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA=="], - - "@shadowave/api": ["@shadowave/api@workspace:apps/api"], - - "@shadowave/web": ["@shadowave/web@workspace:apps/web"], - - "@sinclair/typebox": ["@sinclair/typebox@0.34.14", "", {}, "sha512-TJ7Al17j3+by5y2QkTLcF/oBVMbgXBhILVgi9PuwpxQVZZvGh5BFRzWbJPmZVNKpbRLjuMzFuRwR+tdFPqCkvA=="], - - "@swc/core": ["@swc/core@1.7.40", "", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.13" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.7.40", "@swc/core-darwin-x64": "1.7.40", "@swc/core-linux-arm-gnueabihf": "1.7.40", "@swc/core-linux-arm64-gnu": "1.7.40", "@swc/core-linux-arm64-musl": "1.7.40", "@swc/core-linux-x64-gnu": "1.7.40", "@swc/core-linux-x64-musl": "1.7.40", "@swc/core-win32-arm64-msvc": "1.7.40", "@swc/core-win32-ia32-msvc": "1.7.40", "@swc/core-win32-x64-msvc": "1.7.40" }, "peerDependencies": { "@swc/helpers": "*" }, "optionalPeers": ["@swc/helpers"] }, "sha512-0HIzM5vigVT5IvNum+pPuST9p8xFhN6mhdIKju7qYYeNuZG78lwms/2d8WgjTJJlzp6JlPguXGrMMNzjQw0qNg=="], - - "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.7.40", "", { "os": "darwin", "cpu": "arm64" }, "sha512-LRRrCiRJLb1kpQtxMNNsr5W82Inr0dy5Imho+4HQzVx/Ismi0qX4hQBgzJAnyOBNLK1+OBVb/912UVhKXppdfQ=="], - - "@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.7.40", "", { "os": "darwin", "cpu": "x64" }, "sha512-Lpl0XK/4fLzS5jsK48opUuGXrqJXwqJckYYPwyGbCfCXm4MsBe+7dX2hq/Kc4YMY25+NeTmzAXhla8TT4WYD/g=="], - - "@swc/core-linux-arm-gnueabihf": ["@swc/core-linux-arm-gnueabihf@1.7.40", "", { "os": "linux", "cpu": "arm" }, "sha512-4bEvvjptpoc5BRPr/R419h6fXTEuub+frpxxlxBOEKxgXjAF/S3xdxyPijUAakmW/xXBF0u7OC4KYI+38yQp6g=="], - - "@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.7.40", "", { "os": "linux", "cpu": "arm64" }, "sha512-v2fBlHJ/6Ovz0L2xFAI9TRiKyl9DTdx139PuAHD9gyzp16Utl/W0MPd4t2cYdkI6hPXE9PsJCSzMOrduh+YoDg=="], - - "@swc/core-linux-arm64-musl": ["@swc/core-linux-arm64-musl@1.7.40", "", { "os": "linux", "cpu": "arm64" }, "sha512-uMkduQuU4LFVkW6txv8AVArT8GjJVJ5IHoWloXaUBMT447iE8NALmpePdZWhMyj6KV7j0y23CM5rzV/I2eNGLg=="], - - "@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.7.40", "", { "os": "linux", "cpu": "x64" }, "sha512-4LZdY1MBSnXyTpW5fpBU/+JGAhkuHT+VnFTDNegRboN5nSPh7y0Yvn4LmIioESV+sWzjKkEXujJPGjrp+oSp5w=="], - - "@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.7.40", "", { "os": "linux", "cpu": "x64" }, "sha512-FPjOwT3SgI6PAwH1O8bhOGBPzuvzOlzKeCtxLaCjruHJu9V8KKBrMTWOZT/FJyYC9mX5Ip1+l9j30UqUZdQxtA=="], - - "@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.7.40", "", { "os": "win32", "cpu": "arm64" }, "sha512-//ovXdD9GsTmhPmXJlXnIbRQkeuL6PSrYSr7uCMNcclrUdJG0YkO0GMM2afUKYbdJcunylDDWsSS8PFWn0QxmA=="], - - "@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.7.40", "", { "os": "win32", "cpu": "ia32" }, "sha512-iD/1auVhHGlhWAPrWmfRWL3w4AvXIWGVXZiSA109/xnRIPiHKb/HqqTp/qB94E/ZHMPRgLKkLTNwamlkueUs8g=="], - - "@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.7.40", "", { "os": "win32", "cpu": "x64" }, "sha512-ZlFAV1WFPhhWQ/8esiygmetkb905XIcMMtHRRG0FBGCllO+HVL5nikUaLDgTClz1onmEY9sMXUFQeoPtvliV+w=="], - - "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], - - "@swc/types": ["@swc/types@0.1.17", "", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ=="], - - "@testing-library/dom": ["@testing-library/dom@10.4.0", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" } }, "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ=="], - - "@testing-library/react": ["@testing-library/react@16.2.0", "", { "dependencies": { "@babel/runtime": "^7.12.5" }, "peerDependencies": { "@testing-library/dom": "^10.0.0", "@types/react": "^18.0.0 || ^19.0.0", "@types/react-dom": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ=="], - - "@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="], - - "@tsconfig/bun": ["@tsconfig/bun@1.0.7", "", {}, "sha512-udGrGJBNQdXGVulehc1aWT73wkR9wdaGBtB6yL70RJsqwW/yJhIg6ZbRlPOfIUiFNrnBuYLBi9CSmMKfDC7dvA=="], - - "@tsconfig/vite-react": ["@tsconfig/vite-react@3.4.0", "", {}, "sha512-NxS7WJayciLI+UnCgEqdBfQrZebvVNTSEj5EnaitwThL7iAso5G8wx18B/6yypCFGnyu8p6IMpKWu6JklOX3KA=="], - - "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], - - "@types/bun": ["@types/bun@1.2.0", "", { "dependencies": { "bun-types": "1.2.0" } }, "sha512-5N1JqdahfpBlAv4wy6svEYcd/YfO2GNrbL95JOmFx8nkE6dbK4R0oSE5SpBA4vBRqgrOUAXF8Dpiz+gi7r80SA=="], - - "@types/estree": ["@types/estree@1.0.6", "", {}, "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="], - - "@types/istanbul-lib-coverage": ["@types/istanbul-lib-coverage@2.0.6", "", {}, "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="], - - "@types/istanbul-lib-report": ["@types/istanbul-lib-report@3.0.3", "", { "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA=="], - - "@types/istanbul-reports": ["@types/istanbul-reports@3.0.4", "", { "dependencies": { "@types/istanbul-lib-report": "*" } }, "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ=="], - - "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], - - "@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], - - "@types/parse-json": ["@types/parse-json@4.0.2", "", {}, "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="], - - "@types/prop-types": ["@types/prop-types@15.7.14", "", {}, "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ=="], - - "@types/react": ["@types/react@18.3.18", "", { "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ=="], - - "@types/react-dom": ["@types/react-dom@18.3.5", "", { "peerDependencies": { "@types/react": "^18.0.0" } }, "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q=="], - - "@types/ws": ["@types/ws@8.5.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw=="], - - "@types/yargs": ["@types/yargs@17.0.33", "", { "dependencies": { "@types/yargs-parser": "*" } }, "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA=="], - - "@types/yargs-parser": ["@types/yargs-parser@21.0.3", "", {}, "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="], - - "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], - - "@vitejs/plugin-react-swc": ["@vitejs/plugin-react-swc@3.7.2", "", { "dependencies": { "@swc/core": "^1.7.26" }, "peerDependencies": { "vite": "^4 || ^5 || ^6" } }, "sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew=="], - - "@vitest/expect": ["@vitest/expect@3.0.4", "", { "dependencies": { "@vitest/spy": "3.0.4", "@vitest/utils": "3.0.4", "chai": "^5.1.2", "tinyrainbow": "^2.0.0" } }, "sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg=="], - - "@vitest/mocker": ["@vitest/mocker@3.0.4", "", { "dependencies": { "@vitest/spy": "3.0.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A=="], - - "@vitest/pretty-format": ["@vitest/pretty-format@3.0.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g=="], - - "@vitest/runner": ["@vitest/runner@3.0.4", "", { "dependencies": { "@vitest/utils": "3.0.4", "pathe": "^2.0.2" } }, "sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw=="], - - "@vitest/snapshot": ["@vitest/snapshot@3.0.4", "", { "dependencies": { "@vitest/pretty-format": "3.0.4", "magic-string": "^0.30.17", "pathe": "^2.0.2" } }, "sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w=="], - - "@vitest/spy": ["@vitest/spy@3.0.4", "", { "dependencies": { "tinyspy": "^3.0.2" } }, "sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q=="], - - "@vitest/utils": ["@vitest/utils@3.0.4", "", { "dependencies": { "@vitest/pretty-format": "3.0.4", "loupe": "^3.1.2", "tinyrainbow": "^2.0.0" } }, "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ=="], - - "@workspace/schema": ["@workspace/schema@workspace:packages/schema"], - - "@workspace/ui": ["@workspace/ui@workspace:packages/ui"], - - "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], - - "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - - "agent-base": ["agent-base@7.1.3", "", {}, "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw=="], - - "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], - - "ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], - - "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], - - "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "aria-hidden": ["aria-hidden@1.2.4", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A=="], - - "aria-query": ["aria-query@5.3.0", "", { "dependencies": { "dequal": "^2.0.3" } }, "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A=="], - - "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], - - "ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="], - - "autoprefixer": ["autoprefixer@10.4.20", "", { "dependencies": { "browserslist": "^4.23.3", "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g=="], - - "b4a": ["b4a@1.6.7", "", {}, "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="], - - "babel-plugin-macros": ["babel-plugin-macros@3.1.0", "", { "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", "resolve": "^1.19.0" } }, "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg=="], - - "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - - "bare-events": ["bare-events@2.5.4", "", {}, "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA=="], - - "bare-fs": ["bare-fs@4.0.1", "", { "dependencies": { "bare-events": "^2.0.0", "bare-path": "^3.0.0", "bare-stream": "^2.0.0" } }, "sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg=="], - - "bare-os": ["bare-os@3.4.0", "", {}, "sha512-9Ous7UlnKbe3fMi7Y+qh0DwAup6A1JkYgPnjvMDNOlmnxNRQvQ/7Nst+OnUQKzk0iAT0m9BisbDVp9gCv8+ETA=="], - - "bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="], - - "bare-stream": ["bare-stream@2.6.4", "", { "dependencies": { "streamx": "^2.21.0" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-G6i3A74FjNq4nVrrSTUz5h3vgXzBJnjmWAVlBWaZETkgu+LgKd7AiyOml3EDJY1AHlIbBHKDXE+TUT53Ff8OaA=="], - - "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], - - "basic-ftp": ["basic-ftp@5.0.5", "", {}, "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg=="], - - "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], - - "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], - - "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="], - - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - - "browser-fs-access": ["browser-fs-access@0.35.0", "", {}, "sha512-sLoadumpRfsjprP8XzVjpQc0jK8yqHBx0PtUTGYj2fftT+P/t+uyDAQdMgGAPKD011in/O+YYGh7fIs0oG/viw=="], - - "browserslist": ["browserslist@4.24.4", "", { "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" } }, "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A=="], - - "buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], - - "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], - - "bun-types": ["bun-types@1.2.0", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-KEaJxyZfbV/c4eyG0vyehDpYmBGreNiQbZIqvVHJwZ4BmeuWlNZ7EAzMN2Zcd7ailmS/tGVW0BgYbGf+lGEpWw=="], - - "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], - - "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - - "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], - - "caniuse-lite": ["caniuse-lite@1.0.30001695", "", {}, "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw=="], - - "chai": ["chai@5.1.2", "", { "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" } }, "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw=="], - - "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - - "chardet": ["chardet@0.7.0", "", {}, "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="], - - "check-error": ["check-error@2.1.1", "", {}, "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw=="], - - "chokidar": ["chokidar@3.5.1", "", { "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.5.0" }, "optionalDependencies": { "fsevents": "~2.3.1" } }, "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw=="], - - "chromium-bidi": ["chromium-bidi@1.1.0", "", { "dependencies": { "mitt": "3.0.1", "zod": "3.24.1" }, "peerDependencies": { "devtools-protocol": "*" } }, "sha512-HislCEczCuamWm3+55Lig9XKmMF13K+BGKum9rwtDAzgUAHT4h5jNwhDmD4U20VoVUG8ujnv9UZ89qiIf5uF8w=="], - - "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], - - "cli-cursor": ["cli-cursor@3.1.0", "", { "dependencies": { "restore-cursor": "^3.1.0" } }, "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="], - - "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], - - "cli-table": ["cli-table@0.3.11", "", { "dependencies": { "colors": "1.0.3" } }, "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ=="], - - "cli-truncate": ["cli-truncate@4.0.0", "", { "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" } }, "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA=="], - - "cli-width": ["cli-width@3.0.0", "", {}, "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw=="], - - "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], - - "clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="], - - "close-with-grace": ["close-with-grace@2.2.0", "", {}, "sha512-OdcFxnxTm/AMLPHA4Aq3J1BLpkojXP7I4G5QBQLN5TT55ED/rk04rAoDbtfNnfZ988kGXPxh1bdRLeIU9bz/lA=="], - - "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], - - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], - - "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - - "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], - - "colors": ["colors@1.0.3", "", {}, "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw=="], - - "commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], - - "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], - - "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], - - "cookie": ["cookie@1.0.2", "", {}, "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA=="], - - "cosmiconfig": ["cosmiconfig@9.0.0", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg=="], - - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], - - "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], - - "data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="], - - "date-fns": ["date-fns@3.6.0", "", {}, "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww=="], - - "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], - - "deep-eql": ["deep-eql@5.0.2", "", {}, "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q=="], - - "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], - - "defaults": ["defaults@1.0.4", "", { "dependencies": { "clone": "^1.0.2" } }, "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="], - - "degenerator": ["degenerator@5.0.1", "", { "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", "esprima": "^4.0.1" } }, "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ=="], - - "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], - - "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], - - "devtools-protocol": ["devtools-protocol@0.0.1380148", "", {}, "sha512-1CJABgqLxbYxVI+uJY/UDUHJtJ0KZTSjNYJYKqd9FRoXT33WDakDHNxRapMEgzeJ/C3rcs01+avshMnPmKQbvA=="], - - "dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], - - "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - - "electron-to-chromium": ["electron-to-chromium@1.5.87", "", {}, "sha512-mPFwmEWmRivw2F8x3w3l2m6htAUN97Gy0kwpO++2m9iT1Gt8RCFVUfv9U/sIbHJ6rY4P6/ooqFL/eL7ock+pPg=="], - - "elysia": ["elysia@1.2.10", "", { "dependencies": { "@sinclair/typebox": "^0.34.13", "cookie": "^1.0.2", "memoirist": "^0.2.0", "openapi-types": "^12.1.3" }, "peerDependencies": { "typescript": ">= 5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-QcNl2FjhHFRpKaqy1NoMpyCjJ7OcKBnHwLUkqGu09QwIV84PFb82ILvYJG4GS1RbGv76OA50luaqBLrM3SLZ2w=="], - - "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "end-of-stream": ["end-of-stream@1.4.4", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="], - - "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], - - "environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="], - - "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], - - "es-module-lexer": ["es-module-lexer@1.6.0", "", {}, "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ=="], - - "esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="], - - "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], - - "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - - "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="], - - "eslint": ["eslint@9.18.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "9.18.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA=="], - - "eslint-scope": ["eslint-scope@8.2.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A=="], - - "eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="], - - "espree": ["espree@10.3.0", "", { "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.0" } }, "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg=="], - - "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], - - "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], - - "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], - - "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], - - "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], - - "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], - - "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], - - "execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], - - "expect-type": ["expect-type@1.1.0", "", {}, "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA=="], - - "external-editor": ["external-editor@3.1.0", "", { "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", "tmp": "^0.0.33" } }, "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew=="], - - "extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="], - - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - - "fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="], - - "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], - - "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - - "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], - - "figures": ["figures@3.2.0", "", { "dependencies": { "escape-string-regexp": "^1.0.5" } }, "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg=="], - - "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], - - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], - - "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], - - "flatted": ["flatted@3.3.2", "", {}, "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA=="], - - "foreground-child": ["foreground-child@3.3.0", "", { "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" } }, "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg=="], - - "fraction.js": ["fraction.js@4.3.7", "", {}, "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="], - - "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], - - "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - - "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], - - "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], - - "get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="], - - "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - - "get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], - - "get-uri": ["get-uri@6.0.4", "", { "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4" } }, "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ=="], - - "glob": ["glob@11.0.1", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^4.0.1", "minimatch": "^10.0.0", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw=="], - - "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - - "globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], - - "globrex": ["globrex@0.1.2", "", {}, "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="], - - "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], - - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], - - "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], - - "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], - - "human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], - - "husky": ["husky@9.1.7", "", { "bin": { "husky": "bin.js" } }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="], - - "iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], - - "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - - "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - - "import-fresh": ["import-fresh@3.3.0", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="], - - "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], - - "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], - - "inquirer": ["inquirer@7.3.3", "", { "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.19", "mute-stream": "0.0.8", "run-async": "^2.4.0", "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" } }, "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA=="], - - "ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], - - "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], - - "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], - - "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], - - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - - "is-interactive": ["is-interactive@1.0.0", "", {}, "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="], - - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - - "is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], - - "is-unicode-supported": ["is-unicode-supported@0.1.0", "", {}, "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="], - - "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - - "jackspeak": ["jackspeak@4.0.2", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw=="], - - "jest-get-type": ["jest-get-type@29.6.3", "", {}, "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw=="], - - "jest-validate": ["jest-validate@29.7.0", "", { "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.6.3", "leven": "^3.1.0", "pretty-format": "^29.7.0" } }, "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw=="], - - "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], - - "jotai": ["jotai@2.11.1", "", { "peerDependencies": { "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-41Su098mpHIX29hF/XOpDb0SqF6EES7+HXfrhuBqVSzRkxX48hD5i8nGsEewWZNAsBWJCTTmuz8M946Ih2PfcQ=="], - - "jotai-effect": ["jotai-effect@1.0.7", "", { "peerDependencies": { "jotai": ">=2.5.0" } }, "sha512-FBuECs1g8ajTXoAvBI2r9BwGCoaoRwKRa99QiybhjaupbOjoqtxlU8gIpeBmB4DPcybxi1oI7od9Wsrlgva7Qg=="], - - "js-sha256": ["js-sha256@0.10.1", "", {}, "sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw=="], - - "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], - - "jsbn": ["jsbn@1.1.0", "", {}, "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="], - - "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], - - "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], - - "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], - - "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - - "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], - - "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], - - "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], - - "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], - - "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], - - "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], - - "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], - - "lint-staged": ["lint-staged@15.4.2", "", { "dependencies": { "chalk": "^5.4.1", "commander": "^13.1.0", "debug": "^4.4.0", "execa": "^8.0.1", "lilconfig": "^3.1.3", "listr2": "^8.2.5", "micromatch": "^4.0.8", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.7.0" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-gCqzB/Li281uZJgReNci+oXXqUEdrFAQAzTE/LwoxxiEuP41vozNe4BATS+4ehdqkWn+Z6bGc3EDcBja3npBVw=="], - - "listr2": ["listr2@8.2.5", "", { "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ=="], - - "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], - - "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], - - "lodash.get": ["lodash.get@4.4.2", "", {}, "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="], - - "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - - "lodash.sortby": ["lodash.sortby@4.7.0", "", {}, "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="], - - "log-symbols": ["log-symbols@4.1.0", "", { "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" } }, "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="], - - "log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="], - - "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], - - "loupe": ["loupe@3.1.2", "", {}, "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg=="], - - "lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], - - "lucide-react": ["lucide-react@0.474.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-CmghgHkh0OJNmxGKWc0qfPJCYHASPMVSyGY8fj3xgk4v84ItqDg64JNKFZn5hC6E0vHi6gxnbCgwhyVB09wQtA=="], - - "lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], - - "magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], - - "memoirist": ["memoirist@0.2.0", "", {}, "sha512-DA1V11OWsKmYjgYHfT1luus0FtTjUbILfI9s5M+ckK29tBLON6GDhH5GwxDz7E1ou4Bdzm9vhbeCaRAWxwG+0g=="], - - "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], - - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - - "mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="], - - "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], - - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - - "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], - - "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], - - "moo": ["moo@0.5.2", "", {}, "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q=="], - - "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - - "mute-stream": ["mute-stream@0.0.8", "", {}, "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="], - - "nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="], - - "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], - - "netmask": ["netmask@2.0.2", "", {}, "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="], - - "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], - - "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], - - "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], - - "npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="], - - "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], - - "onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], - - "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], - - "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], - - "ora": ["ora@5.4.1", "", { "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", "is-unicode-supported": "^0.1.0", "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" } }, "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="], - - "os-tmpdir": ["os-tmpdir@1.0.2", "", {}, "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="], - - "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], - - "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], - - "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], - - "pac-proxy-agent": ["pac-proxy-agent@7.1.0", "", { "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" } }, "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw=="], - - "pac-resolver": ["pac-resolver@7.0.1", "", { "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg=="], - - "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], - - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], - - "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], - - "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], - - "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - - "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - - "path-scurry": ["path-scurry@2.0.0", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg=="], - - "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], - - "pathe": ["pathe@2.0.2", "", {}, "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="], - - "pathval": ["pathval@2.0.0", "", {}, "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA=="], - - "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], - - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - - "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - - "pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="], - - "pkg-up": ["pkg-up@3.1.0", "", { "dependencies": { "find-up": "^3.0.0" } }, "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA=="], - - "pofile": ["pofile@1.1.4", "", {}, "sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g=="], - - "postcss": ["postcss@8.5.1", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ=="], - - "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], - - "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], - - "prettier": ["prettier@3.4.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ=="], - - "prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.6.11", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-import-sort": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-style-order": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-import-sort", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-style-order", "prettier-plugin-svelte"] }, "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA=="], - - "pretty-format": ["pretty-format@29.7.0", "", { "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" } }, "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="], - - "progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="], - - "proxy-agent": ["proxy-agent@6.5.0", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.5" } }, "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A=="], - - "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], - - "pseudolocale": ["pseudolocale@2.1.0", "", { "dependencies": { "commander": "^10.0.0" }, "bin": { "pseudolocale": "dist/cli.mjs" } }, "sha512-af5fsrRvVwD+MBasBJvuDChT0KDqT0nEwD9NTgbtHJ16FKomWac9ua0z6YVNB4G9x9IOaiGWym62aby6n4tFMA=="], - - "pump": ["pump@3.0.2", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw=="], - - "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - - "puppeteer": ["puppeteer@24.1.1", "", { "dependencies": { "@puppeteer/browsers": "2.7.0", "chromium-bidi": "1.1.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1380148", "puppeteer-core": "24.1.1", "typed-query-selector": "^2.12.0" }, "bin": { "puppeteer": "lib/cjs/puppeteer/node/cli.js" } }, "sha512-fuhceZ5HZuDXVuaMIRxUuDHfCJLmK0pXh8FlzVQ0/+OApStevxZhU5kAVeYFOEqeCF5OoAyZjcWbdQK27xW/9A=="], - - "puppeteer-core": ["puppeteer-core@24.1.1", "", { "dependencies": { "@puppeteer/browsers": "2.7.0", "chromium-bidi": "1.1.0", "debug": "^4.4.0", "devtools-protocol": "0.0.1380148", "typed-query-selector": "^2.12.0", "ws": "^8.18.0" } }, "sha512-7FF3gq6bpIsbq3I8mfbodXh3DCzXagoz3l2eGv1cXooYU4g0P4mcHQVHuBD4iSZPXNg8WjzlP5kmRwK9UvwF0A=="], - - "queue-tick": ["queue-tick@1.0.1", "", {}, "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="], - - "ramda": ["ramda@0.27.2", "", {}, "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA=="], - - "react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], - - "react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], - - "react-hook-form": ["react-hook-form@7.54.2", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg=="], - - "react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], - - "react-remove-scroll": ["react-remove-scroll@2.6.3", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ=="], - - "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], - - "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], - - "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], - - "readdirp": ["readdirp@3.5.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ=="], - - "regenerator-runtime": ["regenerator-runtime@0.14.1", "", {}, "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="], - - "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], - - "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], - - "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - - "restore-cursor": ["restore-cursor@3.1.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="], - - "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], - - "rollup": ["rollup@4.32.0", "", { "dependencies": { "@types/estree": "1.0.6" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.32.0", "@rollup/rollup-android-arm64": "4.32.0", "@rollup/rollup-darwin-arm64": "4.32.0", "@rollup/rollup-darwin-x64": "4.32.0", "@rollup/rollup-freebsd-arm64": "4.32.0", "@rollup/rollup-freebsd-x64": "4.32.0", "@rollup/rollup-linux-arm-gnueabihf": "4.32.0", "@rollup/rollup-linux-arm-musleabihf": "4.32.0", "@rollup/rollup-linux-arm64-gnu": "4.32.0", "@rollup/rollup-linux-arm64-musl": "4.32.0", "@rollup/rollup-linux-loongarch64-gnu": "4.32.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.32.0", "@rollup/rollup-linux-riscv64-gnu": "4.32.0", "@rollup/rollup-linux-s390x-gnu": "4.32.0", "@rollup/rollup-linux-x64-gnu": "4.32.0", "@rollup/rollup-linux-x64-musl": "4.32.0", "@rollup/rollup-win32-arm64-msvc": "4.32.0", "@rollup/rollup-win32-ia32-msvc": "4.32.0", "@rollup/rollup-win32-x64-msvc": "4.32.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg=="], - - "run-async": ["run-async@2.4.1", "", {}, "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ=="], - - "rxjs": ["rxjs@6.6.7", "", { "dependencies": { "tslib": "^1.9.0" } }, "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ=="], - - "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - - "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], - - "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], - - "semver": ["semver@7.6.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="], - - "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], - - "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - - "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], - - "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - - "slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="], - - "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], - - "socks": ["socks@2.8.3", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw=="], - - "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], - - "source-map": ["source-map@0.8.0-beta.0", "", { "dependencies": { "whatwg-url": "^7.0.0" } }, "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA=="], - - "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], - - "sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], - - "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], - - "std-env": ["std-env@3.8.0", "", {}, "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w=="], - - "streamx": ["streamx@2.21.1", "", { "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" }, "optionalDependencies": { "bare-events": "^2.2.0" } }, "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw=="], - - "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="], - - "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], - - "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], - - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - - "tailwind-merge": ["tailwind-merge@2.6.0", "", {}, "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA=="], - - "tailwindcss": ["tailwindcss@4.0.0", "", {}, "sha512-ULRPI3A+e39T7pSaf1xoi58AqqJxVCLg8F/uM5A3FadUbnyDTgltVnXJvdkTjwCOGA6NazqHVcwPJC5h2vRYVQ=="], - - "tailwindcss-animate": ["tailwindcss-animate@1.0.7", "", { "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders" } }, "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA=="], - - "tar-fs": ["tar-fs@3.0.8", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg=="], - - "tar-stream": ["tar-stream@3.1.7", "", { "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ=="], - - "text-decoder": ["text-decoder@1.2.3", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA=="], - - "through": ["through@2.3.8", "", {}, "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="], - - "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], - - "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], - - "tinypool": ["tinypool@1.0.2", "", {}, "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA=="], - - "tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="], - - "tinyspy": ["tinyspy@3.0.2", "", {}, "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q=="], - - "tmp": ["tmp@0.0.33", "", { "dependencies": { "os-tmpdir": "~1.0.2" } }, "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="], - - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - - "tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="], - - "tsconfck": ["tsconfck@3.1.4", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ=="], - - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "turbo": ["turbo@2.3.4", "", { "optionalDependencies": { "turbo-darwin-64": "2.3.4", "turbo-darwin-arm64": "2.3.4", "turbo-linux-64": "2.3.4", "turbo-linux-arm64": "2.3.4", "turbo-windows-64": "2.3.4", "turbo-windows-arm64": "2.3.4" }, "bin": { "turbo": "bin/turbo" } }, "sha512-1kiLO5C0Okh5ay1DbHsxkPsw9Sjsbjzm6cF85CpWjR0BIyBFNDbKqtUyqGADRS1dbbZoQanJZVj4MS5kk8J42Q=="], - - "turbo-darwin-64": ["turbo-darwin-64@2.3.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-uOi/cUIGQI7uakZygH+cZQ5D4w+aMLlVCN2KTGot+cmefatps2ZmRRufuHrEM0Rl63opdKD8/JIu+54s25qkfg=="], - - "turbo-darwin-arm64": ["turbo-darwin-arm64@2.3.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-IIM1Lq5R+EGMtM1YFGl4x8Xkr0MWb4HvyU8N4LNoQ1Be5aycrOE+VVfH+cDg/Q4csn+8bxCOxhRp5KmUflrVTQ=="], - - "turbo-linux-64": ["turbo-linux-64@2.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-1aD2EfR7NfjFXNH3mYU5gybLJEFi2IGOoKwoPLchAFRQ6OEJQj201/oNo9CDL75IIrQo64/NpEgVyZtoPlfhfA=="], - - "turbo-linux-arm64": ["turbo-linux-arm64@2.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-MxTpdKwxCaA5IlybPxgGLu54fT2svdqTIxRd0TQmpRJIjM0s4kbM+7YiLk0mOh6dGqlWPUsxz/A0Mkn8Xr5o7Q=="], - - "turbo-windows-64": ["turbo-windows-64@2.3.4", "", { "os": "win32", "cpu": "x64" }, "sha512-yyCrWqcRGu1AOOlrYzRnizEtdkqi+qKP0MW9dbk9OsMDXaOI5jlWtTY/AtWMkLw/czVJ7yS9Ex1vi9DB6YsFvw=="], - - "turbo-windows-arm64": ["turbo-windows-arm64@2.3.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-PggC3qH+njPfn1PDVwKrQvvQby8X09ufbqZ2Ha4uSu+5TvPorHHkAbZVHKYj2Y+tvVzxRzi4Sv6NdHXBS9Be5w=="], - - "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - - "type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], - - "typed-query-selector": ["typed-query-selector@2.12.0", "", {}, "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg=="], - - "typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="], - - "unbzip2-stream": ["unbzip2-stream@1.4.3", "", { "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" } }, "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg=="], - - "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], - - "unraw": ["unraw@3.0.0", "", {}, "sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg=="], - - "update-browserslist-db": ["update-browserslist-db@1.1.2", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg=="], - - "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], - - "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], - - "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], - - "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], - - "vite": ["vite@6.0.11", "", { "dependencies": { "esbuild": "^0.24.2", "postcss": "^8.4.49", "rollup": "^4.23.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg=="], - - "vite-node": ["vite-node@3.0.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", "es-module-lexer": "^1.6.0", "pathe": "^2.0.2", "vite": "^5.0.0 || ^6.0.0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA=="], - - "vite-tsconfig-paths": ["vite-tsconfig-paths@5.1.4", "", { "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", "tsconfck": "^3.0.3" }, "peerDependencies": { "vite": "*" }, "optionalPeers": ["vite"] }, "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w=="], - - "vitest": ["vitest@3.0.4", "", { "dependencies": { "@vitest/expect": "3.0.4", "@vitest/mocker": "3.0.4", "@vitest/pretty-format": "^3.0.4", "@vitest/runner": "3.0.4", "@vitest/snapshot": "3.0.4", "@vitest/spy": "3.0.4", "@vitest/utils": "3.0.4", "chai": "^5.1.2", "debug": "^4.4.0", "expect-type": "^1.1.0", "magic-string": "^0.30.17", "pathe": "^2.0.2", "std-env": "^3.8.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", "vite-node": "3.0.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.0.4", "@vitest/ui": "3.0.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw=="], - - "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], - - "webidl-conversions": ["webidl-conversions@4.0.2", "", {}, "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="], - - "whatwg-url": ["whatwg-url@7.1.0", "", { "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } }, "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg=="], - - "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], - - "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], - - "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], - - "wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="], - - "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - - "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - - "ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], - - "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], - - "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - - "yaml": ["yaml@2.7.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA=="], - - "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], - - "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], - - "yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="], - - "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - - "zod": ["zod@3.24.1", "", {}, "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A=="], - - "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - - "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], - - "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - - "@babel/traverse/globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="], - - "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - - "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="], - - "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], - - "@isaacs/cliui/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], - - "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - - "@jest/schemas/@sinclair/typebox": ["@sinclair/typebox@0.27.8", "", {}, "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="], - - "@lingui/cli/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], - - "@lingui/cli/esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="], - - "@lingui/cli/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], - - "@lingui/conf/cosmiconfig": ["cosmiconfig@8.3.6", "", { "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA=="], - - "@testing-library/dom/pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], - - "babel-plugin-macros/cosmiconfig": ["cosmiconfig@7.1.0", "", { "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" } }, "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="], - - "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "cli-truncate/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - - "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - - "escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], - - "extract-zip/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], - - "figures/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], - - "glob/minimatch": ["minimatch@10.0.1", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ=="], - - "lint-staged/chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="], - - "log-update/ansi-escapes": ["ansi-escapes@7.0.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw=="], - - "log-update/cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], - - "log-update/slice-ansi": ["slice-ansi@7.1.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg=="], - - "log-update/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], - - "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], - - "path-scurry/lru-cache": ["lru-cache@11.0.2", "", {}, "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA=="], - - "pkg-up/find-up": ["find-up@3.0.0", "", { "dependencies": { "locate-path": "^3.0.0" } }, "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="], - - "pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], - - "pseudolocale/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], - - "restore-cursor/onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], - - "restore-cursor/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - - "rxjs/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - - "slice-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], - - "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@4.0.0", "", {}, "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ=="], - - "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], - - "wrap-ansi/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - - "wrap-ansi/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], - - "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - - "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], - - "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], - - "@lingui/cli/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], - - "@lingui/cli/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="], - - "@lingui/cli/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.21.5", "", { "os": "android", "cpu": "arm64" }, "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A=="], - - "@lingui/cli/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.21.5", "", { "os": "android", "cpu": "x64" }, "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA=="], - - "@lingui/cli/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.21.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ=="], - - "@lingui/cli/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.21.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw=="], - - "@lingui/cli/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.21.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g=="], - - "@lingui/cli/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.21.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ=="], - - "@lingui/cli/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.21.5", "", { "os": "linux", "cpu": "arm" }, "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA=="], - - "@lingui/cli/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.21.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q=="], - - "@lingui/cli/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.21.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg=="], - - "@lingui/cli/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg=="], - - "@lingui/cli/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg=="], - - "@lingui/cli/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.21.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w=="], - - "@lingui/cli/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA=="], - - "@lingui/cli/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.21.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A=="], - - "@lingui/cli/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ=="], - - "@lingui/cli/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.21.5", "", { "os": "none", "cpu": "x64" }, "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg=="], - - "@lingui/cli/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.21.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow=="], - - "@lingui/cli/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.21.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg=="], - - "@lingui/cli/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.21.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A=="], - - "@lingui/cli/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.21.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA=="], - - "@lingui/cli/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], - - "@testing-library/dom/pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], - - "@testing-library/dom/pretty-format/react-is": ["react-is@17.0.2", "", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], - - "babel-plugin-macros/cosmiconfig/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], - - "cli-truncate/string-width/emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], - - "cli-truncate/string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], - - "glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], - - "log-update/cli-cursor/restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], - - "log-update/slice-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], - - "log-update/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.0.0", "", { "dependencies": { "get-east-asian-width": "^1.0.0" } }, "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA=="], - - "log-update/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], - - "pkg-up/find-up/locate-path": ["locate-path@3.0.0", "", { "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="], - - "restore-cursor/onetime/mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], - - "wrap-ansi/string-width/emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], - - "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], - - "cli-truncate/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], - - "log-update/cli-cursor/restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], - - "pkg-up/find-up/locate-path/p-locate": ["p-locate@3.0.0", "", { "dependencies": { "p-limit": "^2.0.0" } }, "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="], - - "pkg-up/find-up/locate-path/path-exists": ["path-exists@3.0.0", "", {}, "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="], - - "pkg-up/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], - } -} diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..abcb3d3060c3483abc6f701e1d5916a8059699e2 GIT binary patch literal 262498 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ⓈZaL=y1O?y5_93s6VoEgx#P~d zB}}afJ+*vv<Uv_WM$yUU3)~}Dezf!I zGvdl~gGu2^uD`eA%{Y=>U>kYn>A(&54~&X;I^q&|Qu@c0g`@iBc%&#xr6|qwY%`^L)DeUR(JeF5$!`CLZV(_+G??%FAFPDLfcqd%^>^lx-d?rB>Gr=s)DQ$r5j-no0L zd5gOleUHjbY5a7Qw%O`=U#Q*r(D@(N4XL)x?mX(|FqLQ5+rKG)B~*L8uhhwQQ`Lg| zCgf-CIBR|R^sHy43Vp&-Tc+#skCSC+8|K5RO@jS% z^A<`w^Cv9`%g~X2;6C)_%Lvz_FJ-dIU$iewiBnLMz7{iT=vBvY)rI%NKKJ?L806A& zq^5nb&YRtZ6BGO%cNr4hqw$LSHxpzljJqnzdFw3N{p^{`nZg@_jX^7CZ2NuGt!I_xqbh4n61OrL^blb^ZRbiLtY1y&va1@4K+5W7kasjy+EFp3*&J z_uHaN0sdz@c*IY<@26P2`tH^3dv&(_c%t|2V^oXG&ugysxp9}5YMyB2lIM{Ubts&lbqJ0*M3R-X;9TfS3`bAo96)EeD}hC!3x(L z{bx-RCmb>gzm&O1ZAy>!-8Nim`6T+|w`09NpA!uAow-ABsbilZ2i65mh>rc?rfqLF zx6vGjdzY7I7HN(T-7jw;pU2yJ{=_`vL61M|o!LQl!<^On9i7$=h-)}*x#_$OVabs} zhsQZQJ=1dYw7c6Y^LS1tb`LK-=df?x*O_2_vc&=j}Zm zA-~+QMdY)gK9im2wx2rfWmRl{2h~+2E>{!ZjE=UF`RM!bS;ZWq>bF~;W_uh@+3+F8 zcbLMNrY>_zx3?PY(0I}<9i{U=hOvI5QeJAhI@xS#Qu^bk)io0h6_t?T`ifT*mBxmI zBuHhwJ~bsG>-zaC!iEc{_+<2r`F$N9(`?f)-^24>cI=OEzSS|&m2BKr+V6-mbcjVOf&INaO|7B8@J33P4yh;Bd<4S#LfFZ zE^Kda(lldER_Q4I$R@{*&hXuxvux0)Ca3kT4^1Dcw_T8~@I9rZwRv`zZp+`SHd9 zXYylIZbh%N{#no?p~ud~^2T~$J;@H~pFHK(CI9AUx7fMe=Ovz-mFAUja?qwo57ljs zQFC7RID2Pto27fN4YU}wdFXf_8^sT^S1N=QCpqLVzP?$f;;>21m#ubtte>=#FIcxy zCuY@()iK}pFWOw%CV2Uwj~hP6-gMp8q_JRtR)Ee&jl|Jb+A{7}y@uY(dT?{9S($7~ z<*3;y*_(%G7iTRl$^X(e;QjbXw!FZKSMdff^LfYkQfKZ(``wr{!cTUQhw{A2Es;;FSfVZeX&f~p=+|u#a<&)5?U$^`;@S2T~foS(Tf~AU%Qvxc}DWE zcP-nRs#eTXZ_!@qkl|a4o-0l!CElAl%~NCN71LQm3U+1;9&Nko&X%=m`Jd+GnkZSD zbV%=YSax5&){wKee7)@(oiK0JD)aWenEVz`Pc1h({b`0=n{%444Z>TbZ%TNqq`O2` zS$b2RkNHW3i<_%6Z=N{6#plfj!yWO?kMB&J(!Gn$iDnJ-?2fsoPj1mE(s;4Yq~j}A zPYKVsq&PKcaJuuWHJip1#EtzHa`L;QTa3p(_0zX6U;gp1s-KrvVRxrSN%P;08~df@#Sc_C-q|K@(}w)0ss{R2N}qG%nm!(= z?_9BOzft}{?LJ+#vr`ir4OIQ1XLB_7%KRooS{ftDO%yW{w)6d^dSnZpZ2q0|#3+U!StiZj8@tHQCgwNhKq_oe!Ke zxhd5|z2{b|)fJ!0P0JD$?=G+CHs5oifpUYqj+tS7Qm?Fk*lpMg8U7vX0RCC!CqaXG zKEY{29weS}y7%Eli}sqzIrEdA%?wW*Ti`i;aN}ndC3jC|xowQyv;64w+mF{R3w7$* zWQNc&X+)E!i2~P2cG{Y&p62B1wt6$rY2213W;0iAD-ZeNIbuWEv!rzW#n~6yJw10} zW;4g+&3%?cxM)a#qu6QW5;Q(=wH;Z!{I?j)89>g?tdXkrAqJjc&|H` z5xXj=B=Gn0(N!}N_bBbmOFF&%=27SGVMR`ISx@w5*v$F*EHdE2I0ydTl9pq65p5mv ze%>n|dvC;J=SdA5M`Z3(TA7$yG`*xLU5^*E80U51;4*#t4Po1F=roiq_cR$k+oU4N zyzx)xNo}uO%6Rg!!-O9F;*DY_th37v&guPi^Ln?~uxX@cMa*Qs(Np4_Xg-j>sMV|1 zu3Ww1QT6y%-{N*@ZqC@)@x{l-epORc`gh;EFXYPi6}_f)9@e!}dJo5Y1-+YQZFw3m z?0vWE$=NcC+u!PU>y}HawlT^L#%?}3E#upLi!mPCZ|6U6E$plr(8FV6*Um4N^h;iQ zyL;=;$L~CSoOHX(l8g^wOJ_81yixy)S%K4dt=VVwlNa~=eEs|Tp6_+`x%+)vwPNI} zw{M=DKC9a7@!5JY~E)D~#9=cRn4jD1TF(vf~oga99M^3$1IR19klV!_>bv-%Q z?m>u6$K(4Bcxn#ml{HfSLf=SlcT@G8iCMem&g<4hMw#M3_Z2ty25(b~ox1UJ($Yik zo*p=0x_G|zcZ(z6;~$-A;y+;2{kd~wM=$USdrQ}qhtCgc9@G6^tgLZ5UHx+J()At7 z=SC0g;BYZluV3cyoyYt7-M^8Umtf@@`AuQZI-?5nh4$+0g9UA_Bu}2I?s~3|Vl(r| zCP$mucd}|eL2K&r*fJl5turrr?g$9Eg92l^FF3B! z@4d(1#pgOLSkBv~x8!79_Z4(rf34@-Z1(5uld5U1O@y~>b$5EUxufBF0Aj*b^Dm35eX?uE=~ zi?&C5=9fJ7&KB;O-TGEn_jc~BE0vc$Q&Yct)&KNB>v`=b9bb?zBKn7mj`gQeE?K-E zuf7x=JG`+)*^|7gRmi z(kuSu*N1n8o(+7V?VcN$bM1VyBdVtUmwn@A2N|fhOYpk7y1TP=wN&+^BT>hC>YXr{ zo6FnuvcNX5t0S~=}j_Rn6*BSvl9*jnwbX61L=VE1#Wu@}xhSDidGerD;&wiVIV%7d27x_v?F z+G*Qe$7N9^?- z8}^RnRI z-T$&pLFya1Kw5V@UY5_9E$e2p-q&Nw+QH$&x~pw%JE>dT?8cR=(+tgz_V0Ck?%t(V z_b)Y#uCP1QV4q>^eeaX5{(6IG|0x>oK4tT|C0SeKA9cU6%4(8sD__-tGt=gWth}>4 zTJ?b7P~laqXj!JND05ntk;Jz4vIYx}2i;#-5$<}6>I z_-#t?K%@E`4CBFW_b{!a0m0en9;{@A+V-;saS5PukWn!ojl-&>X^ zze(@EjQt@)?K*(Nl8nCqcq8aPxKXe1%LShL{|7h!T15Uo0=_qE9~)EoUqQBl+G)!& z`yb{p{`lgOh<5|t7VJ}ATz(B}UmV-$AK7~jyd>+d2V8K_f3y#w2TU`5oz~lS{H){58 zamRl*@RqOTU_2it5Z?cYd;OXS7mYv(_EYO-6Zf|MpH806L?n%>>rSjS7|Ak{b1lnN#Oqp z;73Tnt7*aCHIjf20=_Hoc<%(aV)&azPKnOHnZVQi8yw|1C*rRFkM}RM?^1bPim08u zHp63kya%9iuDliSc>jYe*Lw%lO?F~|$L9xh?};(wl88SGd@taUfvw;ly_l~p5#IqW zT6F!d4<8CVonPw1?*^XEZ}s87O6b2C{P;9)c_I-et zWc)V)FG>7f0WV4X`n8tK{!HMVBv?Piz)Rx4ww`3;?*qIf@y`KXlJS2fq5WR^lErT( z@RF>bLg4B7L4DRwGXu%u?*_ai^JkNU_Fn;SEy4UZYr{N$!{?89?ZWFImn6+LN&p_8 zpJET;3mejDLOY?*<;{Pks6Cz~lO@FK^S1ng8|W=K_!8Utj(b@Ob}) z!`TpC@HmuHLVK7#bzsh4IBtA+Q90JtmZ+U&M;^}%?89TE8ooA0w2t^};PL#0dGw#o zk)mz?^qKe@zz+Z(+h8B49P_m$YG=@iIX_}sw9hpWKL+^zU>{?LNsbY9z7xL+cshTh z|Kj$)40w8ejz+~@e`=i>|8eg?+v3{y0^S<>kNXcMary1QWB<{3Zc(K_NYSYDj9 zhkA&=3cNG)ALGV#?uqgSaPx}$2ku+q#E|U!0FUdB#t(IKNyHxqekAbX*hc-ttHI`l z`wzws%fy{OBY;Q$>l^<~z~lN6=iXh^|NE?cTK`zbB~kyiyD{;rZ~TS8OEP|kfv5e4 zYwWRqYikf{Aq;9&~Jqiu1$`r`;mZ$mmKVndvOgO5-oRt*#Yx03WbIR)s}5>^8F*ZOw0^jr!HCy} z#b*mV<;Arh0lX#f;=~SZkiA{NWBia8XAKe0hlhta|0qwgu6|Ivp1<*Raa2!y0Pwi~ z(z#XK`M(}`T7RUQizNHyz~lbOb=*le@y#LllFZ-10OS7E1Qc`aJNiKOX9JJphwHaK z`_}=M$LlxRr*!}yYfWVT6Y#KvYOen(wG#iXB>oT#9*#fOq7Pj60pi<0@aX;-b#NU= z;zNPQ{U6!-#BT-gg3t935^R*?i?*TjwgOHxPR05k)FDI zp#EP09{W#uars7843B<`Gl$9EK;UuwFm_yRW8a8R1Rl>X`243n{7K;P{tL&CbfW&c z617#fX0G4lKb3Rk!+?id(3<(LP!}XpPj=P-Z_e^mCerM$AF1s#)_*>`1XuK%;Z{SAv(g=Oc zcn#s2h))GxlKbZZ;LX84_MLQc@qya58}#e>A;wx0ic=TVKME)lOZwdCvZ<2NCBK{ii^!$n|i@J$dbYy=2C(gBBl(z*Q zmQXyF)o1;!2Og$iJoUlS1L}V-IDEN)edO^aF25dl_*1ifkmovw zVB4%oz}EbGq->V6Apia0;)V9fZ&{8Sh%W&iZbAR?AO1Q9r$qdUq0IMZxNoBmR9=@7 zY9|H3w-)iA%DM7GfXC}E*SM2jvNIESj3162CMsuge}AWT#lTwtkMoww{!aa>p|&c+ znEqq@sO(p(zki~(BY}q_WXqHoI`_~9@lS!L z^B>pPiSov7lKCGj!lVCOeIWmffbYe|PahrQn20wW%j3ZjDjqSk-xNP^NW{+vz9;ZB z?p()^_*1}l1|IWVuf6CV@y*6D`v>~Y)wU=<4tVq**A=M_$c6M|CfhKaqX7^-%q6fT*r{?D|<5QALlNO0r^;)Bz_?9eZhVswz0VJp9wtf z|D;dc{ui?LvEMj%#O=SX7c+kW<^0_>wk3bPfye&Sb(_kuO>K$V$$B%qIC}@`CEfyf zJU`LiA#VJpusn^MxcmX&&A~p#UK(EF#{V<$a0IQ{zX0c)&=#g4KFt0}@n=fwekVQ! zcp5*heMjxYp9S6={KxnqPv!8j)X|pIQCq}f%t&}7()?W0~K*d#ODH!_R)5I;{O?V+<%A_xBm`) z%=HJk7VzS_j>-SYz;|KoqYmr`mqh$#mdE*riOQMW-`}a-b>OYRKIR+#z4`xELwrkr z=J!9?Z#ajDZGS58cz(yTJB{K0X6z3IWdAVm=4||M4s%V!s|Ng<|6EyYN4zuec>QfA z4lKf_0gwH!FMpP`kLJ0q9c)YfO9wLh2bN*{xWZb9p9{}}L2B0Tv;e*R5TyRH%co_~L9 z|9d&{3xF40f8zH47Vvoer}&9G|J#iJ#iLK++P?ujo}bA6@BRE+p8Bs6`S1Aut^M!i z#CuA}ZwKC9#D8)7{{eVA;3;!e7sSaqkuP`OQ|~@%|b0qfR^rb4g^s z3V2ht|7c%azI_yP{j2Zz2LUh1{_$QyUJ%Xf-}UuB4|o>|=8x=zU+YgCA87oBitt!Q z<#o*gYIhcR(fHTJQ9be66MsFw8s{}S-H{xE*{5|{5d`PcOeaIyRE3p}nLvW+q1lCV9d2f*X=3ydF@ zi93IE<9tEdQFOrZqn!;Q^8nbwP@6F9ROGzrvv5Gn`?loI@hMV>~l|RDi)g&~u==R1hBmJU+i5 z9wnDV{Qme~zn{Umqre4*HpG7iz9$=hi~;t6OCsKQI`jKaRe*2}i93H|fVTkqcGVb_TQZ|;_vmSo>_<}dqYQrxu= zzX^DA@Sjj|<6jB9G4QAlzyIQz$i8L*j|V?NjYm$OD-7+37XUAM|H$X4gZNzFMXw*? z@-m6c^%vJI#*p;Z>^(Vrf z0lu$D|Eat#Rn+b!@HVV{^q*@Y-Z<&k`H{-F=%BWt!1nU8-ar~QrQPjaT zj>Lau{YRgv3_sVEsBMoqzkWZ443%@`1A%uE89#CNk2Ap2`33tgF8>2~y#AuUGzR#& zu0;JbNoMX}G48VPqH?bMV&Ks}+D5*8T_9UecFO1edVXFXzW+St{CdV&LidNqzVSzz>$7|6LaR+W&D5iM#&<0*~t# zr#14*_<=*B`M(BuT0h8(dw##i`j0HWI&-j%O~}5%LT3NRvvU)8DPSdsM7%rj7SMmZ z_Tu>kC6`3}D&S3kmjeh{ai1Sw5%C{mFRuSh7yY__ztlb(V&>nkM|&85^n*(x`%i$k0{b-XTzw$EQ!3Mc zT>ChGsJt#8sNEvq{lGr*`2BgKxaJ&|1F^$`+#eROCr8+8gqU}mdeE8V}S1i z_LW(Ps}5?n6ZrmY{JHL3Xo~n3z?%S1d9FIBeWxYA&W|()#Oc2Pcw9ded(vB%4r+H2 zc-(*M%WE%X#$Ou@;vC|d$o_N*`C{Nr!GE;h5MJWOUm=~@ztC@-!{Y8=Lx9Kmhu0mn zE$;kJ0^Ujj|Ie}Z>)U^;4Cen2q4B^Na!J%a3-}@6KgC_#{Yxg3`TO6*ldQ`JvOflR zy#J*2-?}c4ttUPkczfVmu;t>~e+@j|e~L5r&=lG4xa`;cFW0#v%8vyepMT)IMc>68 zziq&y|6IonZDS(;D}kr|lggMDwZBta^X1I%Z!nMkbBzJ%fz*>pT+baRNy`=@}%^-JR~ z?)?1$JkCE_d*bpIYnby7?SJC((ZG9(^qkq%X!24gWNt$g~3_Q+%%s1c)Lp$Qt z*8lqdGsM9E;eCL|{h#8`RR`H$1H38lzt4MbL6ldQ?mXU{6|LVqc|XwncfG`y0}st= z`Y%olh*#RcJU_+Q{qDo>HbwKqy8}=CuMfWs_-<_f@gAD=irV_qXKGgtycO_#wh@*8 zi4iTMcC9xu>rVzM(SIrzZTqLs)XoQZoWB@9+{3sg;+F%D_kU;`U(}Df^bmgwcyr(} zU!VB5+{B!JG4`0a>LB|gfyekGD|+u!Gk=YEyu%Bhou1l({~7B=6Y=YSr~QkoZPY{j z58(0nBgKu%MQ#1*GqrQbX2u_R**`V>OBwO=fQN3@j2|}T+6Uqf0pE{}AI>4%2e~BT zKLStl2RYQiB@y3g^RM#{vf}a!fVTzzk>lET^pEV{1->iWe=Ki}ZyXZwYFn7|3)!af zx>QiRp}^z*i|ug^sN)9?iTI7cn*)z|^nuFjQbFw=1CQq?Y+s-Grz~l7;_0b%zBXl*@WWVt?X8vOy=Kxn7#9OmG^`DDvY(xB1;IaRhM;+ph{~ne{ zmUP0$Iuo^h2D~%ar+(vgoJ%6U?{>z2j2%7$qUShu=^#D=c-;T-+K(@B=g(^3jamQk zyA$dMSNm6hr}GD$Vd`SBp8S{3{Ws5r73Hmf$LkM{A6MT+`H8^O{UcY~qWm`CMb|G^ z9n}9S3Hc5?e#MWgZBhTdfEQgqTy>ED>A;Jg|Hb7CfyeoWTuXS7Ud-2)sNFZ<@%%2& zHs(49h&SBHj34D|vng6f?Sp~G>lfLla?!Sb`b_OMvV3EA6MVe53*kZyfyIRu%f)`ZXVAZc+`i_PDn4dsVz~vk-+2n z6{qj0m-sZ`as810Bx|!R$`=8T`zLYe2bV-e>m`T{>JMM`BhgR zsNG56Y5c`G0}!v0$BZA&Uo4|IaJBCYJe_}#5jXxxz?(q)&^}&!#kGGLc$z=;@&7CE zxc<>@eXhSf_A>ED78Avl$^HG^o~^3+{jyg?;NM&RxrXc%fqmRR)u9>J*r7(^efBZG zzsGzNtl*f4-vhjj1ol4zZwNe|J5@N^#%5%H!2VzRCzhKiwm?y5B7Q#bR$w0ix(3w= zLj&TAfj0u4)*ja}AYSSKbN`II8ob0ke_H{M{-ZvwXIE(YkN;bM$MuIS?myHIY*Skz z|I2|l23{E&qYf&sjm0`@XL^wN{WIn< zXRaSKZsPiH4m{2u@|*P3<~!Dr{}I5`{*QaFxZ}46cpQJ?#I^qwc-%jUugh<$C;xjK z`gQ-n_1b|th!19YV#SUBKH%~Eg8Fd&lOD8DTO#|s!_2?mhk2SqwQ*EO{7B%*KF$Gg z?WX~64*p}mQ76}NAp2K=@51uff3AB7@zO__=RXv8lAx;AMEn5YasD8OzEgRvut>WY z);_YRLtOv&057_Ki);T4@RqFqICkQWpYc(~KKjm;g{J?+$p?5`zZ7?I{Z9ve0Pr~W zvQ_ zw`F;ZKfc8Ee+KY4|AjJWpK0FU-*?TX7wpJMhu^oJ{pev<$FfyeR3 zGF-!4br2r|d_R_N3OpYbaY)4P2HpX9+IP_hE{XW>z}t)PR9=@3YG-qri9gvD*Z-x! z4+i_hlU}a&9{`WnFWNUqa^jU+=@}q=tTU0ndB9r$j{uh88sL(M|G@f>{pQ+t z)K9!o!LR+F%EYnn2|TWUoOku%vw+9(qw60R+t`L|RRE9kAM^O)8Uy0B3xC~z*XQ|z zC-7atKF%BUde~n8yuFD3pn_8(|E~j2=T|D@qJY{e7fHqs0v^{d#a)(*akdT4b$n^U zs~x;hM|*f-LWw?h#0(@+iLo|>7q*9chngfRk%Kc$&02=FS(8xW90gx%xIQ(dHNTy& z$wLfl5=z{|VNTYxx2h?vnIkoyYRjX37|WW368#&CH7-9oBxx<{WzSh z|DP!Fel&sg|9`Sngg&IgO9Nh8+5Y_hBpX7X;A@HxGpcT z^(b+DTxMl4D@#CPLWzFezzigm$lrt)uA4jXLcSbcnEoWO{XMLNbg$-}k+@DD!3*^~ zffu%W1~1fC#meU(vHT^xFrmcySD1l>67#Py1F1II2 zWAi9czXe-v$(EzUa%;BShAl^lA8lD_$CjhS>&zfFFDkKUFk4=mM0-wbJ5h<{&QOk3 zL)m(iI1k6Ld6f9kjm@J(ZXBCOi67nByr{(Zc(LW85_uoC9Hl1Yr+~zwsqm%>G7TiQ zTZ)ChNsPxbwj3q4%L0kzt3jgOb!@$;#G>`^hH?X2j}kv_Wb?I2w3E%Y6P376Y-7t& z;>YdqhV6H-au*gtLWv)Dvw4*GaSxkEDF^vOZ24if93_4{0&l4I7)U%royEf6B=)}u z%CYJkE6=m-{v>f-m$3CHQU6s|ma^rd5{s_G8_FB-hV5@+hLx!A9^}!F3XoX!kgZ3F z<&|t+RATuvw*CcM|0jvg`8g9L&c9@kiXbyV!XMspd}AfrTMc=X8$hDI9UyUip8<*d1(3LIi$P)%mFWLf zw*CfNj}qJ828sUO0f~AZf`mW3$MA;ss@U>sEQItYiF!UjJ=*!qw)>MrJ71t4n|x#2 ziAt>h&X%LZ{0}ydQV;UFU-Pv|1(XJ;*oEM>N`Tq@x{SE{DD8pI1 zi{`-_+F8uX z43Jp99Nv)2!pvVJa%iG^5xgQ`gp~R0; z2(c2m25cTB=4IHts6VJF(@W63aV7Irg^;TaOaUyR!M(B(^hR+lfjn@5Yv+ z#P!ezB$oGOWj|K-2Z{CvfW(9n+nKS_oGllXIFD_i965Wo9wl-ES?K^0uZP3f`aenJ zN3iWjvT_vL9wo+k3@gX6_3muFs6;)UY`LgJf4ra^=VJg!^gE1ghZ6HqAd#QImZL??>Qv|0a7?4{-4VKo>TtMc&>^2w>ZxyaVlZ^|DIFU{(KVSgwHSkdrtZ9=a;x| z|LOT8#tX}_{=esx7>(MWSK@U}^!X&V$2^uhvvK_IIVDD=_UDxtFVW|d*dFtEzWMJt zB}RjJUWwO#^1tVlxIX@SPRU%a{(DXdlK~Q!=bEsE{P&y^Hc^bjpPo-* z9I+hN*MH9`|9eh}^8ue<;(QT(K8fX+$MSCMa}|{MJn6sZl>a@a#QE{xb4p2{Q~pr= zfeY;aWCDFsJVvjmYJTZ!2gl_GI*K>fo_=OAaD;21?Xc!^?9Ld@ZEIy9HFaQJ3-r^UHJc3SUfqw5;^?fnIG~^t$)Dw`&~l)5yT~Z{GSbzg1x3 zi`P&}{AwI~_h6 zxQ@Kj?|NyJbx8N(9u3CCT!|aKt!<2!VpPNV`g>m3G#|L?P3P;qgSWPR`BFqLeiuTC zf6MyoX=S%%u{x0fEt;9_zAa;R=df0@o=*F|Jzn|2I`T%}igy~Jx`oQFhvN=ZE@_{C zFMD}rONEc`G{d@XD|x+WfQVkaCQ#z8}0LZPzR{KeA>2*r@w672Up_d?S?K>G)xp(u~j#7oTjj>C*4U`nGYG zbWhF5(VbTD+H_q%4H3QgojxW036(pe&&Zecm%CEn|Mo+W)WK_$g7Xq=| z=C#_5dR;$wOFp4cKgw!UNp^_Ut)%3j-rv_NWX85%J7rT-5xt^+7o2}Re|h!0&UqTe zX^DMOSF~*TP{C+tapKHlE4GK8JU2SbY~96Poj1m{J8|Vj(o^64tM`BDY-QSSu3yKs zuD(4@+ngOKq8ERIOo=~{pM9{)ij>+Y#bS5CiIV5n&^A=&Nm$9;;%<>`Xex)CCJ@%s@<{9BQ|*N?QzklpAK_sw<5 zEwARu-exA(oNxC0Y3)?e`g!tsVP4pX;n|;8d3ScKoI7Q}umyTe{U6-5o4AjsCNpPK zV-dah+ZRgwm-2Id&M$cOY}MYI6UzhIKWlhE^YDnQBXQe`GCCQoS)+0|HviC&w2&vl ziMxlHH`H|>(Q9PSL(RJ#KU+CB-M3i`{zi)C1Ag~SiT|QS<0&yJMuo=vHio$eEn8oe z)7j_JRJkwdw-)&y7^*oZJazEiqS;z^7vB-8%y{@tW5Se~-Ltc$nx?Gr?=*PxM*M9P z>BZj)QQ}L@xm6m~-Dg4Q8@fkKH{^Rrd(}E5^mMQoAn41?W)x~M{+sBvE z&U_lB_+2HewVKlHfaflsU&!~F+CBSrfR3?p*=D|Mh{wk0w2QU@ivv^@MD*fsQz-FQ zjWVis^u5xmLwwUC?+lH!zHd^0VF#^*K|>sppWZw$wQ{1b>9-?~X3gon%jdgI+R2y! zO-5e)ps-?#$q3=yE5b+HWQN=9;ipZKH@~rc`}URd9{7sr#ot6x;?K@Bd*l?QyVzz^ zuXE3Yhf_9g&-`@p`}dT2xlcT`XD;Zoe^beiJ7z&+mInC;n1}3sc_8`li9C}xzTIWI zf7aOj@R5jK(Z8$3@7>7l^MGsjo=xc|>pMT7iJ>hjResS~}@AyeGb_Eqau726?{f#9`GklL_#aD(F_Q==hJY=@8m#~yC zq8EQVPl+Eg`e3F0fYTWUUtSeiC%Z4Ynz6_z)@_XSG|Lxn6r1d7b?fuPeumMZy4n_t z!*mW8S}7fNyV2ISd&>_Qm5J3?v=@r##qVS(@%O(rayT-1QPMG&=Tl!ht}EFlb0+hf z@wI@$H*2jIG@d$0`0l#8QM*mY=MP-x=~m6^?-FmG*e^BG|w)5a(_%w7SXFEs`sgH*|&L?KJUKprJwjtNVtD4@T0~N|4j8CSvLY& z7q@u6WLDCfr3a2wY(4loqVKH3&4f~&cg=H5>ejrC++EXE#hxO1wMF$laTOlebIv!k zuq^k&aNRaB_C6Q42b__r4rpUqnD{Cpzw4Tjv)krAuWV6J_5Qk9j_`%fcwUv=3jL#b zlWp$!4oef!i@znJ#24;AZK2V|{qdg6{*^I;!xm$As`k)5Ua&@f)^(Lz>-18x4|uM; zD)-|1=1n(V@AQrtJ*C|DO3A1@x|91PCU!_(_lDJrXDA&~3X)%`*aF(6e9|7Bx#ClW+u#M6U&R7a(8 z8Lfl#H@am6kI9t3tof+Nt_D|9&jgP(`kEpVht{HcheprqsB-bR%ko#@axPaDJ=AUt ztJ*rT?F*M(N2~8Ayf$cZWWUoU`L|89^o!+Oy6#pI<`?WpnBMZV^V4 z>OFmS_RYfkc}E6+7`;WIFyZ9N4U?yS$?WN?Jgq|cXz{7y$Vm;t()Xq8a!xlZwpvhq zJKyG8`@!?ZSA1A`b4;rpr-qB@)fd$}y5#Poc5!R6oR&X)yD?oowV*}c20zkQb?en7 zPI2HZ7vau6z9Wx}k{&gux!QryjQI<8?RxZ0y>T;x{mXJ1Hdc1LBBIwoRPVB;7yF-% zNsQZZVp)STFD^%KA1}9F@5}2{zg(4ft4?jSx402kL8yA}`MI6bFk+?e0jwh`6aI{RYAt7L<1`@#lHh#Hi_{->RE2{U##8FMoPEjvt zrn$Q`E9=q?>5{b;W|v>uCHCk#de+H1vwe()G&=EaMpp6k6(;xFdr5s9mN~m`;e)ku zXNHtC44K(PL@)jhgc5)M#PFl2N(~n*W-~X-K@u#^C;cfSf?f1Hg z<&4!`HEg{57%aaKZT})t*S3Yiko_8gN{=otc;M_%qnBUvJcNE%g1Y$+)0NLQw{l*5 z{q>TkKV_xl4WBBNorrHfC8T`L&iM+<)UNKCUVdlEp3JShR}ZbEPRegRp%M7KSI^;k z9+%G)=(K*o>V?I@>p;$;Ug4nh_s-2_6z&W*T9@-&yTJR&v9qCeZ?feDeOk{kdv0oX zb*XeoPAkQud8PV_H+={7x;j?w)Yy4l)Vmd0o)1y^#_Gj&Ouu_U^?b#~>6^2*r!LfU z_5V1u`hj)#SfySuAA9%hcUx=8%7@P9KDa6e--}%5zUuS76Ry{Xx3qY#QuR?;Zp{ww zmX1;j`ZM=gd|o{0>Vyi}#P_#Xa4i2k^8K@-?UlPcCSGc|X1s~hjGUKJXBxO1&F%ZM zORHus9h&VLR-U(5-coVY;fKi!Iv6z8$+vJS^dB_Y{B@1LJULy^*O`=p+Kqn)0sctinGb*GLy3Q}s?Tn%XZ(d9W8)%@7)KX2Ql7N1=}cwQr45$e zTwA&9sNTX;PiNWRbAMrH=jd?H#j{%5SIPWXb}tRf(kk1C82pXC6hr~_((i^)H@{T* z+V_@AB<%uJsEfiv&%SUY6v!ozF{m4VP&$$&+N4vC|q42uVzN0^yZyoY5 zyopr)?hB#PUj~&$@R{$z_%(XFlC!9H&aT|$ZH+q~bN4tKr@veFyRpvb9>>)tx;|5Ajk`Kes=zNoL~auZ|D(U z(J~9OJ8{=aJwCWLV)bH>yNT*m+`GWWrm414gpSr5+b?mITPmERY}|&gFy|MIow6po zse#ne_X(TVUh&!NrJ9v){YE$Br=Os7$zIO|G8qAF*AK4I%WOW~MfD!ie|4e#)BfZ2 zN((Y4xE))1@{PNDX~?7De5LlsgI7P;Wfz{SaQ4LZAm^#2vzs0s;4%Nlj*T{7)_qFY zu%l{Pu5o0IUb&k2OTXtr_56W?(`wFh%UU>g+Ys_e$ueEuL(u8ujFO+W;A!nS=O|qK(1u#K#$_yb4q{ecv2id7yMf*|0MpHq`lqZuFpFy zKmLSK_sH9G+uA*dNb0_1q4b5`@7A>H{x-{mckN6{bAE#2lny&(BbIik^q-;d+%m1Bdo0H_x8E)po`Ki$iWptbLE=o_9@&b7K9){Q>@MihmM+=c~eb9!-~e zFKIcasowLY-8?>&EnT@)XG>uF1Kn<3&nsVarLgPnpc%d5_k0N0zHyLM@~!*TCN@*Y zHf-Kp>vWnA^IU@`7Y`bH{i7B9&6AyWt+FuR_{6gviN^+=%PTl~s(7qpX1mPErmsgf zi1X@w?5Abgh$+=^$+_JfhQDnc)u-b8{&BT1c znK#Nur5$;u*tpK_0P=ZYm3(2Tr~&;CZ}UwN~+5 zdGDC%M~a_r@V;B4m)R#x|IrHZRX^AM=8uCgYBpJGvD= zTps>R$D5m=x#Lx1q zTDUCGsCf&nhfKeHC++QX;|IFXz1qY40_yd~D4G?}QP!5$2HaVQNWD@CXiP)zRL%@r-$un2t!4`UA<_rZcHi%)+{ggvp&zWD?}}IifQa{Kf-PGJ)j;0 zf$pS1s2L;%L6%j54rA+K_A!-{v<#Z^di9s_Z!0li0nc*gS(@c0uW@LR*fRXTSZ8yY zOu6iJMNHh;udCYSx8L?P-o|+$psSI8N@x~ors#ZXH6G=%ZEc*=?f7aY=SCZ`h{!9b z!`g%g*QFq3!~L-qBOLR$7>hs>p-tazfU@}Y{e}9daOB^-Z{wRV&<*v*UwS;3R)Cm! zjv)E+E!t)4cmZR95kqY)K+-9=NFb7wa4`WpOv@E{A(=jk<80-LsLx;PBbkNaNjw`h zZ`S|n_s=*a0(5`8OL`EsTC4W(KpZUA>{XiGT6Ou`rBCxOOu zhQ);Mv_xqqi|Dp z0*I=Pde=FTS){h*0+}AYI;ExvO(BjjdG?;N=x=%d_UjTr7r8jM$}X)PW4l8VX7iS( zPTB|I^Nh=WqonH7t@;?^H_c=JbyzE<1hHSHHFX6o>k0XW_J;9}$zQw%87Q$o=KRn7 z)Bj2WUG-TWbh@}=qYse$RWkcwqt6$}Jc%i`RNO)7CTLG2i;RN(2{Y6Ts|M<8#m5D= z;$~bBpS;xq2#~j%pY4`@{%_s~^T(9}x=IUBHnmVbwu9WqUkWqKj8TIsnSWkVo1^=Y z7ANr1Ykmz)8Djo5d>EZwg%Trgl4?Bhg#qjJVVn1!1U-#dYW_AlISMf{Wfd!`x8?og=h?iP}Guz@azBFKjXYC(5q#1cMYWSt?EGKy8hWow{uv-;Nsf%!9^ zlmogmU4(eWBmxZt`8eu(mcH)`0@?h>?2WFzQ1VJw2CgL8HhSArRy*unrkdiDjlt{l zYn!VR?Krt|%x)L@T#{A%&;65E9_S8qfPT4Rl<+Jqy1wh%VhdOm%d>x`45){6!en`o z(kli*b{VUBC=J&&eH-5tfUZr>yXNtN)Ra4OYWItDM>va&3~5 zIsOu|r8b$s8#be{dZ-!J<*og`eQv5iSA^TW;^k;y-FfmA(sm1kczRlm!on9Vh1Q@h zJbcm&617wmKXu}4&cJQKCN}|JY}JzLo71&nPqbh{*OxmHP(WTap!+nRm513%ZtJ)E zb#2Pi$Aj;4Z|h~b!gUFy=xWIp{<&$WhA{kf1)~#Fp`hyYRwr9@lek(Rlj%%3o23(i zWb50K>2J>9x-$!4`Vs-gYO`!)`J0=gv!fy&S)SBoo23T;1zdUir52@v*d zAUJStntl)X4mug??p+8Puq|{aNX&%kRm+rEy^;!4Q1rGOTpa0~e(wG2zK!!5K$o6M zL|9LdT2Y#lL4$1Ocd({KrMy)!<92$>4}Vw4K7TsFyPUIv-6mx}(lD!;2f|zmigBx# zY0c}-6&%lFySM%f1V-RLQxoV0a9CKnv*pBAGh=D9e&fN%^i~ zvIdIID8a=p{Mlg%`)Z!h?!uL+RE?o9Cu^ONB-XV?v{w>g9SYM{#>m-ttawoSjvVi; ze}DiX`Onk_y82LC+j&0rYdJJ-ECIBu2}gdZC?Vk6XUk(C9kanOD=0~$s%Q3-go)e2 zJotQL+b-s3V5q#5bcp5ljteI*6aUNmhtvVOs{4KBkOUjb@854QCHZV9nT`e5Eo^&X zm$pM8%sLt>zKU8Mr7EBAUTP_pFIZq6fe>;Dl`oGWZ52*`uySIja zYoChZ$uz875x%b(e5V8JVooHKza9`bOx?4jJv?0{K=`qi8h+74bt`H%58(^?G2t|F zx*;{v29u^)!T<9988<%z-AkCpbZ9Wy>V4YTLS_!3n}t~Xir)2JS(0}jtAxMMia_?h zC&_~NqE@PdWt{gdWVZUUSQ9t@q^CBL;)uSKeDclxyAPuWbfpFKCy<6da^NCnsL_fSA!=%RJ@|4A0;}K5av0{RG^b#7s>55#%nZjh{r+V1;| z{zD=Ej{M#xT#avpLY@b+utz&y4CoY4B`E?;0bo(juc{4g_*UJi4i8nHEzheU2bI9IOny~ zSlSQqZ5dL!zH;>}M?MID-thwZ-|F~J`!xl+nWE7w4_KtL>^B*1{%LUzp%jxQCAe#` zxzc=wTNmvLP5bbkxconTWvH~@os;d?g=(R(nd}lsWK9eDXp-r<|8?KyJ7z#v?zW{< z{`uw(>mjHDC4O~P*tr7oj7^b4*l$h*qF%rkVW5~HFUrC z{w56KisTt@^QgD^q&d)4Sclf-mYk9wjm&R*N^O2JOL`G0x;gti2_(0Q!-AV)03!e=dm_I>L~iRX&G2mEdI z*3eyXXWDqzsy6Xnj}iO+s2oX-9v{;Ly@I@@jhZj=zt)p4X_jLf{x9zz*9z#`PHnhm z6|47EdGro)Z9QV zS6jRpol(5I5yuK58CoVRWCX{LWjHov9k2WS*L~aH`S(4`KRiS|o+@m|aS$p$)K_@n zs%RIm5su-uqN+Xe4AJdK-e-b%Ka(hPq&%zc7Ao|r>{O>9@)n`8mH=^5`nUMwaCJdW7e3fFIt!h(A?%z$H zUVU`9nb{Ud?B_1iwu1Rxk6GW=v2U&&&_xuS6MzQ0z}QlZnjD3KYL6?zX-we)U)OgL z3faN$lHN=CJR)L1v{wK9TTSH0;KT{`cjNf%X`VjW24*IW&u@9(<|Xz(*U=i6R`Zv3 z&6r*_To^sob=9Q-rIjc)sB7e=>1=_Y@#yn#v4H^dX#5Z!giO^K0;90Ucw{o^;}k1i z=VTktm%sJ!)_%VNUBtkNuClR8_=Ko;IO-ff6|klhFcn5U#We)&7YfN%FLOzaH8?eR zjz;+U`^sN`?V><0bV?THQ+?p|&({jL-T9yUr{8e^y6k$r&kKuLoVSX4`pnajDcRB} zXxXDi%`>^Fo|U~;ZZm7@d7Vy$d>05F!wf%1S?r1PIP{L|Y9tc*JIXVW;QqRA`>BpV zm)pii+Mgz@Y?V{Q($2NwWHnHGo`$GHU-vMN1!eoir|Ql-r8bN*6TxXyvL<`cOv>Ke zhbA|1Fk18d$6e~A?Ekrc`iE~o*9P->8N2!0`F-hQ{$`f%F1E;bCB*w#mH0L2C>8pi z!wM{<^e;7nO$hcHq>FO%?7Pl5;c(kkI$YP|jB{{@X8&{l)Pobyb$0&E>Fwa47I{D* zcs)4PloeXJgQl;imqJjFR#|?)8;D=3w%VStC>oUbTReBtQVxk;4UQ9m*cPulW%p=X z;jjDF&YXd6`oi6($|V*?u#7f6&_Dy@n3LT^IcF@AkNsUq&i5I&9Y+6LqzS=5FeC&{k!>(3W*}ekp@7MDM4+ zPW=J1WrPkgN-TkAxtnIAXiC?IS;FUxPQP@)3O73HvRv4cDA5GS>k4!gr~L}W41}oD z&njz7Esn4@;YDT%EnLz&YIxT;MK-DZzGsoYBJWi{!}%0KFFT(vkwo_7aitzweGV`t z`t=QXFVhX^p0#1~a~5*k@J8EO*Dto8-<93vbGS+A6I( zt*ln*i=x+=U17!hjs$z8p`9KB2FU9UbiZWX3ClWfW_E~WH!aKup^0fWF=Bj*ZT(sr z>p2-hbvhkhZlwf9oD||3C1Vq~qJ;3Wu1)0E!9~m*mHw>L|Mt$NxBB$}y3SVV8f><^ ztw*>7r)hRfUs>!L;>9ZEBDy$y@tsx`U!|b>zj8acaQecG8F_|8v9iy3im>T?@nLr; z)6Og$*aGDB1iHNL#86oDQz%0G$l#fRe4p6yPYdoH$!0$lHV{}mZv=^M@&shjG1s8# zOnhPLX`1Trf8}R_6~@P@ln8(+W`_W{UO@Mq?5VTEScE>i3TeR4Jswo|ZbWT}Lc)~G zCzuYXm|ACnPtioGt7fwx&lB%HJ|>FjID}f!(ldY=MvkFo+yW~{^pcNEPj8)a}w@HyRQmg z-G}X30eO9Zu0dCkn`6+23S0wvx=)tg% zGX37uwsjQPAj!YA_3ZB2Kvv5t_OhT?oxTzFp0v0Wq+4Q@onZKhO;&!G%5XdmPi_C*>`Uw!SR5G2BM2H;70d5X(Z0*%9Lj)@-|7%x@PqC3;u* zE9s`DHRw!dm?xOXt^JfHeq00K1^``LbI^9q7^4bql;#C4QZ&V&c+zo`*6Q^a$ECQQ znB6&ApOm)T*!bvr0hO_ju-cz0KS1B0EMhz=$SHTu@!`FVZ*R{oShmPf@8JZ9}TF7V4(ZGJVRCKJVrH?T$Jq?FDbYe?*B;O;W~9?}G#c3f+z_C9;*hurfxkgZ zZBKTnqRlLN_M6+?k~FI4gUGizK~&*3GqYcW*n=bI)&kzKkf4DFS>FreQc&r)d1h&J zm86V-&&7A3+nyLk3Rd-%wdYlu9d;6nu>ZzoOZSk;u&*Oz9|!vkBdx!pZ_aENsHx%fiFw|xXIL{{h^=TpLwOpd7eto0Q_}qO%^NTby2ES6 zGQNV~5_NIH@u6AU7-jS<<}ai7L>Fdn>%zCZ5kS{+?e`VvXF;!uP{he|ntlzug3{GO zF+mC?&fSez(+zp30j%v>t3K;07}D_F>j#T285rmHHlhCXTr3ZaQnPR8WN&UH(7mH< zC7Yf+T3FcIgAMBLFll)e>32~%l+%3Da1dOOWRfzz0_BBjtKEQbhRk-_pd@n&rL?Nt zefVjxL|-3Yybq{{D4>f!QexrIzM3BR%bbJ_uk~AgfDwF^=cqXZF%m3Ov<$8Jug~Xq z-}>0~;`kLbn3p;5b(|MQa6LUUT!cz0{CeKbhu-o=16?bsm<%YdaMQ$l+b_=E_+*x` zmJ->a9E|KtW}-qkzjWtdP|s!2hl_)ws`|TDRWKi2F*EZAVrpa)Ct78rp=PQ zXyxN2H7MEIYV`*8JF!65jOu|q4Q_aJn^|vqYtHcAg=vIR_PP8kuaU1?#SQ4^PH@dH zZV7_qh;D~arols6vqoqLD%YGu}bRm zC1<6Lg%!`wyHpiB;|fUO)P;J$J^(6!-7 zo;~O3nXU_-(xUnLqs{;L)5Y#~Zk?qS_^Lf+$GKJ1uglVPaz&9XEQOsIg9Kj>nFGo} zaGj~fFA)|~g>UB!Z=YKN&{efJ{Q9#`vdjHyFH_pyIF6G6%qHzO_2+T9A32S8jZhq0 zO)4$IR=-{u%MOB*hd01D2Z_=xbmMyBY65#~)PT=LBG6TN`K=>-sjipf<98o!38J8q z*JAR$5cR2v5id{G7pkPJs>v^R?Ym(LPcu>6(;XU_r(AFHd_mi?iw1RJHx%%5O9HyM zb4aJoPJZ~DUKPGy zzM{*^xV}AT_Rv?-nzM?0x5AM0JS^GEW9Yr`rY$9E7st7rFtqql6U%4<}s`}ntAebIX7en$eq%K$eO=$5G6 zbHq`IipC{2Ru8MCM7kj5`QLDuwK3;F2!4H9F}CEGXI#CvyYy_Zl}zxD&RMwb#Qc87tojW>B<)v*&l4Sd zICX7I9p^_d+3oKEU?`s^nLTH9>*~DkoArG7oS$4aA*)bx7j()@W>?!WuA z89>)z6Rnt?_P#K|kXnqZb#;A`o{hapCC$D~0U|ZVG^jc-w_SDHZf7n?UPxGY=&Ok$ zQQj|5GDOw=Fk)y*C)&>dHxuZBI^o)sT>q>RP>`!5`s$n#bL4c7Mh>nJF|8&pUe0G- zJw;QsVok#JEf{fG2N}vF2)cEl^5YX{L9#Ulq_OVXeVDiU%>uglY3TK28YRLVU+7rQ zDbK!5n1A}t#4_rCWVbcz$?dH24b?EZ=GgG&9U>i{U2{_-$ z1G-V}7R&7B2Jv{V0oEC+~n;(?c3+}1L&Tgr(@x34|qJTZD^Ks_K5pg_hOepGqxCmXD745 zq}dT3)|Tij_>VAF;L9y;2jDo=W^2eKHpKD|6Fj?$Zu&FHf9ri zfLT-DE*I6>%%@n2wF{1QaLW?l76M%ncNzLjRhr+T^kZuY)C^T8 zz%2&4^bV+-^&TW3J)+bM`MFT->!&F3X^C9#*dZ#n`&>|wm|kTL7Si7?w7oMZY4l>Mnmxz%sg$~3s@&~b@(H*d-zUqU}v1ctHBo0MrHA;f13~bEWP{Q4q2ZD3dmaublVGkr?blaF=ia2 zUqnOPD>X-^*DAmxD z%c`On-=wxgld<#`gF*RPX8Ai$r~)BRW5*c^^iP96`ufYd*i;YcMuay%mBb_cNzNGo zc`JeL6I84RW>oz9!v^~V^o`uo>xJ~@w&*(veW{cmWAu>jxpJ9!`rm}B1aFV5ev8vI zurp%vhZ;8O4u3f$D)ugX+wXg84^=?-;Jd<^L0lg;E^9TC6(Q+(lU-G@l0+b)Q5rUn zX~2}xY@tB_sq-x&G(t9Sy|jazZEMm?>kY3-g6Ukfrb+r8Aa6C$MR<315VTn|^x>3U z%Fynzz`eOR>C-NmMoL{6Qgs?CMud(LAu}c~8S=P6>s8Owk2{v&VM4@>F*-|n{pj2xd8ItLAc@i2`nM zKA=jwk46xRImmwwpQf-OmaMWaU3xTM{7s7j^QqnZ4DNio&<)_$0o`_SaK2iNToqip zrbm&g$b96vB>#_l#aNoyP}Hx>yGO<`VkMs?+s22@VN0A-l#7-6iUyaHyiaGvX%+}S z%f)E^tM^NYhmCncN!=w%W0E~x?m5H%OwI$T^1)7YO%dklY0%REodG*N=>x+OE0Lz4*dyPc2Lv1VW}z-dS7$@^~Q;go7TllV1tv zmG)sUW}qlMsK3T%*7#_YaxeXBjRnd?`4^N9?De>FNday<(1n~k7&&ySMf{0t9S}(> zt||OTzhNJ#va@c#JzR!2@L@G}{q-GHeT&ohEJVJOQh0ZHJZC;s9DM5uRjC@yFJRsd zpxbw-WI;Nxp09^quNL^J<%iXS|J+z&Pi{v{e2S3p7K#qCoBk!o&fOheWes1lV}uE+ zkx$}(p$jS?EH)37qyTw4fv#kAD##+@vFvPUaIeV=FWs&rvnMk?JpNc3RjCv+8f{tS z>i)YREpE>mPt=e@Q1HAx2`qurjB-hF+=@i!lWc(71$5sVkD8X!w{nFB+r3X*$@`hx zoCvCw{TmA3m%`S>pKT%M&j&M$D+YEgqMZH>ak)2P!GL8_k4U@hu1c)y2pp7r>2Fx zWZ~<$^gQy({!=S+o_M2&0~4I7Nzr8~$_-NrNsK`FQkbg8Y@Jf|wN+`HfmTsJa9_C( z=zft`7>VN!54_WYCK`!0Z%6!|1bCsY+OcDKF#vWy6hbz zv_~8dmW$6uS0kNe%PSynKhO=nlRDfZx52Pp+i?DE;)K=(!x$}72uGE#Gx@|_JSnjP zW;4p2`uGUSHb@-z*~09WYVV(y9(f~&A%*q34U*o3GzR37tc>PSg5K_scHf~7lS}o z)-NS(>;fNLtSa`Koyr0a+{JbVQ@ZnGv2nm`6&2`DK0En?#H#q9W8Lp7t&8s1b4znQ$BdXpB0oR)&K-a5* z0OP7b(oVd9&_%(gS|qdY9W-5IzQdSS`0B5&T%UbfC%lna5iJqd!8=F-IuPGN>!|19 zh_d>Is6B9+z_;Iud3!EKfiBnwD2j0$+v$|-mVDpEji+4k#v|Vqq|s1RUBrUXRWEH) zVZJ`m1L^qBKCcnqQE=R>i2HM8?#a8f(X^>U56^Jl)}_4dc^Af6Sv*M?8Z5`vZAKsX#`g@W3{ zXXLJwrs3r!{3))t^4r#c?+Mo&fs6#PuuN@?1C-T$6VM(efNr!FL6Hk5Cyndndxvil z5Y(TVUk7v7W#J%=hDtmlf6ozVuvXHBs}1pJ#;xj#>2aCPVm#OVMy^tmGWL*wVmbo2 zlR($5!n|kxAW0pL?^0S9MM|Nnlz#fP1c&r(6EKOx#Cgp43wJ#r#8jEZ^h%T z%GC^-QXF;9PH<(s1f?3_P61uU0RgdH5n;}7*)8DWe{A4vnWd0>a zx{g?hm05OV<2xFu=4>PP3p}*IZOn6AcG$1UEye5M;ugKw_pt8W+W0UIKQAFc?O0*#oP!bEy02!JASl+#Qn9cW z!FxTRIYTvzI)mt@0^C`kTV7%L5UcMc1Qy6G{2AAnvXOHx&}f%hy*?eD7{PmYAh+A| zoW`JNEA}`vAHwDU3=Z;JKGT1C`*R5pV%Q7Le_eF zDD}-$MiVQaR`n4<=+O12;MD|}iK)Fa7MSoP-Dr;;?CfcYQ^`i+8g&Kjf%D&apv&W; zrg+($aJ{llJHCU2%t0bOYeO8xMqqEiJ`+#>y7}D*5Bj&Y_0cf|n<#)>p*2U-xolMhw5euwd`l0($FnpP$ zeOhf*HM4Z4lsy_?_^^lLygVKXiOlIjE2h5y+(n=(x1`OQJ`c|0gjexFgJ8&9Emv%e zULA#950=p8)81kT^0-g4D!0DorQP!RYS?#TwHaA4qnXo3Z(O7>o=%=2Y$(NzPTl%Uk)*QKQaYCaix+)XKSi z;Dw80J^s{~1aOyuZgG@%8?Hz7as<)+_iE39^lruW7l*kVJloQVxbqhV1nv7%nq{!7 z4)68$b=GH={iT!$sBRr38WL?IkB8$6ae%u5bkV6{9y+B%OffhXsiUg&7FWJ|iJ-EL0iirUyAEyQ-(9b2VdnNZD1PBPGx-!Jd~FJ!K}=RISrr;?dMG2vx}-qRa>q9B{u6UA)GoExoB3NTV75 zTuK}I{&5uw;O+q3woo?(UX@$3kMmw1{9B|y-V3yxgI6+a#c7GCI6*%lq}$QRqFaG@ zkf%4jghiuj`nQW3*4<{y?Nh6X*8OV50=TaWla%e z+|Rg-=3VJ_8%(BQTDHInsA9;kXsuQV4?_L>TLBQLhmD=g>tAW1fa{Arp!>B^7EMDi z{;*HR)@Y>MB(MSt*&Lr^=A*AHzMT9!3H+7)4Dufid6K*a&QIz2YcJpzDD9gkH^MYw zw)0Hk#-)I~`#{$Qe@#8Wy(0mC%L!7J_n4Oo7ve}LhGTe|o=R0!vNP0A1w#hWb$rM{ z`hJ{jx7Z_fZhugaT;s7xQ^2I|e#9N%9spf~Ep{UZ`14*a!bag>6t>U4d-}88ROBe6 z&#VPVhr#x?L#U80)hg|^h?_khYDm$Ji7PzBE@#N7%^~6RXK=Xz?jg|K;fdNll|+?U z3*V}vFaWcs)E&CT$NQisy)fo;;*wE>_1Mp?kz@x&^*&_VMaZ4kBovKJp^X}>+GaD( z%<{Vez&!%G6a+@71X-DtHqRzwyZFyax}j>4Q%_OmhdAKy*R9?HDzB75yAnK6KWmHB=wFCue2@2(zX}Y zMnJ3*5vjxBtQA58<(OP4+sS+R5h*h9rbZ|fP1GI1qnTxB;Ca9a(DhavdP0%Q^=Z(+ zRh&J)$M5|3oG(CJx`O^-M2C_r$Ix|K(uwccB!nt(wH-LdLgT|pn(z7QL49Ip)BY_M z4IEGpr$E=eJoKzpyQJd!0V;}lAwW)gnMgpIU7J}P^^m$0d7AL-ep~3E7d=h29dyYS zzL1!Zt#&$HJ4b}1j^!IxksYu<>@XvlCX25{pE> z1KbOs+nuISGi}zF5Q0i3MjCg8AeNM`14&K7he53Q{zFDmp-i`of?wI@Ca=_cNGPJX zBOVq-d-Ejv16na=W2o5*5rBIMbg$3ViuRVVKdRsCcxseKEYFpa1rv#kuHa3;ur0|D zxO@BQ5Kkw>U@Bl-}OQv_Ou@juL9gFpxd^G69CnYtO82Qbsivi zX*00YuX&;5Zt2X350=4oBFp$;p>VM#hQ@gT37z~g*t?|6uCyy#NZvq4gA1Dzg$3YV z1Kl4TqXxz&wXn=psCHLL;pAFk7&9;!i04tV{Utv1;Oe4Bpog!=8zv=SI0;1^42Y}9 zjk#5}?In@#h89n;n1SQa4ba6!^w+>sP#-^dK;SVb`D`4!&W4$6AhzWoZ?xBJ{DRWZ zJ~;q+nZFRUb@U_taTpv=YKA(B3ElpnA(@~GS0A`vatn0%I}O45&W#!3N!VcKKZ(PF zGMopZAJ=1q#z~)%id-9bK%QQb)?$KVc3TrnIee469Sj{^_Z~0&jsE0eC zn_Vc@z6~X$eDOj%sE0EvRp;$t(B&%KR3F>BcpXX4kU)4psL_(WG?5!bK`Mhj>J`l! z#ss~goG%-U(^Xwr2XOC!u4hD8y|sxJSuXfR_K3nK*~P~s12cq$?i2dPX2e<$Zd8OX zo!1FtYg-LWIjJtVsLfjtphU9k_7-yqd)qo*JOK9r=;n%T_S-+-5eb@~DX)K~#Pa!y z&ya+k)ZuMT#REf;%%&rfx7Fe5PT^F+N4~@Y_b#iT_xt;x_)@THLb{&BG2y|iI z3n8SYHxkP!2^tw1kmSc|Fw^~jgaKbFz0egTv(QcRIW79m&TsDAc0eXmyfK>TGW1P( zb_PkRG#b0>YHSSP{sOu+UmLozRZ9EZ`EQr7Uz6q1)o*PzwA31**A_EaAs6zo%oOgx zyQ?wqX{&B>(aiQ&Q4>HyD-xW_O{}^V%C>?1?-S7NPUNF=${D6A?R^x9mYF#kxsp~t zCOIAT!@2cXY2mZM@#CboAPiqo>p;HCn*EacF=dtfIO!N1BXN9b!6pZ|4tNH*|L=bR z_3#^jL0IeN=Xp$@gwJ5(S0IRv3^2?#Y753DEdNZ_Kbsvq9;##xLDXNhy36e%(zud` zUfPKE-DY{5&tVG)q!WHR$pg4AK)1)EcQLC%g5{>pM$u$j-F$X8%JB%BHBaz_-z=~` z^d|T6W^(|Jp<8u8;&$2+^a3SV5Yv{(Q9^!cIRhm3`6Ix61-in+QSJ}Pk4!&bzgc{& zskM!f@=O5x0xzQ^x|}Ay=Ob~Ui&XPlPnVmb4dgYNSjs6?J z1^Ms)e+2^N;;}?4aZp<_k7gu|k}b{UXbn8&fL$=V6DBx3)||xqR3T(mNSLV*Y%~O$ zy${EoSI4a4m5vGJ8YkGg>hvqX1qHgl*kJQ||T^lj*+r3jK)tZxFHLY9XN1c4~>5f=m7Q!oVp8Dr*_`d>S^-g~%j0`A1RC zuBsjrAn%{C`CoxhY5;*CZnTo>10ldq*cpV7n(w|lQNDGPjn7POg!O1*492esVbJTF z_EV}MdpftmC-6ZllH3F<%VMbxPSII{uKy9sMF={@;G_{N~U(ZRKq*zVd&Lv z3`*(tV75<6>ofdSNh9NU3YPU!%BYFM`x}UN*hAT)J{aT%B@~U9&3eG+7!v3Pro2$f z2`;F9Qh*$AF8eeX-h7g|iohwOoaJgyyLW|=G{+8`hIu)fHHz4sI?>lwo|{;xo=-q=4qu8<7)#WQ|rE`=kbTq}QH8L;2?ei2d9ipD6KhEeRL z5Z~*((ksj~!&N?DYCD5NP6)9)NT+_#cUFBHP!G^RH)jVIi1#d-V3F+; zGGEH}(qV6|3*qcVSxd=;;9PC*Dxvv_+s(L|J?Qv{L#^`*W@e3-)|pN^;JgF|=zd`S z%Bu*0a^pD?$#QSYin_|I(?JbF5U3fsvl~cg0QYJ6w}0g^MP;CP^lvtdEEi$B*>v;NzBG4{Jx-(F{UcQ2)ITWg8!? zd?$%ZC2DHBliiaLoU1iK4B0H_xSVRFr1jf6z=Z?4Q)nu;B$4fgEF{<(Sh?~#Ce7ap z-83d|Y<+o0HmaqE``7FrF0kK~Rfs1Qs;UZJ@fwQnMqDC;fSxvNNO55R+b=xOJ+&L_ z^*s8#BDQD1*e_w7{E_Lo8^Y(u!^glc~vypRL5UHti zWKC+rRn$j%bn3bR88bztthibk4W z)u$LSCQzQV7_|&#T4EUsqq{aza8jvL#9UiIFGwMO8cs#aN7%0o_4xTf{r=+h12uG9vnYR*HpYim@bs^aS1DONJnoKA;2TvFAiHG$U3Oc#o}&|i=mFky{PT{9e+A-X z*ovW#)xH4IiJ7HyXCQ}K{hmm$bg9~{-iv;tC5jyNd$ zX|+9_KnQjj+J(3GpS|sKVFKN&@>w)+SS?@ox`A1K29oJ%ZDA-K8&HvA><*1&Dss;K zSBHLNcsbZmb$k>K?h*N)i7YTA8y(ws{Asn5F>=6h{?8uAzXAcWMIs53kx%xi^LMA1 zUDZ>(soZH0WYAYj!-w6ii~n|5M+wi38me7ZE#VhTt$Nb#Z%SCmxkPSgqbwiH88mYL zv;N%!!3MfndY;O-dK!Z$F$h!_rV#kh`PocXD@sVW`Ae3#Dfp0sS!l@*Mpsj@x7P`4 zct|4&R9r zVGE`|=aIp*er-DGlVvQOM>vD0FpyVT$KueP^gT7LfV8-8%y3Zi%F>QIs?JiT6yI?^ z09-tvyQhme6z6_W?-j?RAxo57*a3ne8#Cb}&G@?+wDE*a0le2qANrmZR~q_>?ziGa z&g#nb#i2suV}V(0SQgX7pRxU4{o(^%_Pub)^31rr$9H*2!pvr|a5G~nCpaCjO*wqRGpWSh}OkPO(nczFn@ooDT&uDruH0Qb+{)V~5DkUh_9MT$Jg zsUUK*N-6j4@LDP~?Pd+6(aG|2-}odb&Cw> zW4MAaz$FB_%8LWn{S6-DYf+?*iSjf2N>tUf!I2c3XDBv0%FqUo+U^#o*K6~>2X_iv zJya*4JF7+1?Wc{B%TqQa$Djy;lwUlB`Od9YKk};L%8UZ?k^x<+UR_M78|Y9^ zAWVHq*zBe`WB7w;e^2t=B_nUm@{^27)M)isxrB*19li2x*O!Ybcy&cyQOT@kKJ})JQQrogD0;@N`eFt=_a!!cr zGW7knkgcVWwkAa*x1O?>c)$O`SB{HY{hhP2BgrF`u{U{(aVhOJ9Gm`O4lzUy)K&vz zVmMi7|0c);;JydC<6~m1XZz`X5P?f4@vq?PC#QPMA!O(eb;6BfM}^0c zaU-v#Y$}2S0s9NPFI<^s{0AXvlV9=`Ei6n_RJVL3%L-M^8stOcf#*(CKvz^viBwkt zUk5tYsUT-*vx67?_OSUYX&1fVs~(g!O@Vs=E?fX*H%<`p!VjDY;mh=uPFCFT1noI~ zsJzEUUEuw*KW8uh3dE`O9(9qL*s85B^Q~A_RW_O0s|YSeP}Yyl3L_h%h)jku{H9%p z0UOw(68$1w8*91-`XJl}vLC-Wi4cqlwHE%f{5$gofS!N_{$CE!G>onqoZ=kXny+Q>WVl@(PKLiI*FIsM2DZ6$z93v|z^ z?cI6|dCC=Yciy783ooEKwl z`;_>6^Il3XAvEWW1NH2HIV1$Pjq!)9_?w5nmWsmKFbus@h9Bx z+VxSLeUTSZ-On!a<;k`NDrmF%G8yzw#PC_XPX6?b|LTDb=qiXwNP8`h`1xL4-Se9& z>!70l*c%}?G$2nMENAz7ji)OYRDYS)>Smo10rh=7>jn!iBJI=^gUq)@5x4L61@=3C z<|zLP1l?-ZRdeTHKcqH}Na5(S5olMauX7Wf!Se?(My~Ba)pUox5!KGa>2zV^r}l=9 z6q~w=LvorQ=G7R%kBSX_?SQ-tKv$<6u}8O0dV*R&$)nj|>m5B+soCCX+J#apUUFAd zqeBfct^RE@9Aasj{=|wAcd;JCe2-6`E>y7w2c6c_E%3aB5$IA(uo(9p!>zHa7@QgM zvbZDkxWf-=SbKYf2ty+HsYi9kh3D^ezNg&|=5FD-bvhC23o4M!1xcASpPt0!c9jI= z{j)auS0DnX&036NwRw zMX~-^0y$lDb*qv-&NTfzQ*QxqnSm~T-i@&*Pd^;XK)d^y6w&9o4-0e52j&&8*Uxud zbZ)aA-Dr4uJ)&EbQvHtgLKA896m#(%7w+#D=C@FFO@!qhrnilR%K7prs`gW&!7@<8yDweX0;gkeRyKKh zVIO;Sbj}>Ct$WvlMr$qJdaL(*xqz;rQfQ1hUTQd^=6xxUfs(P6zhQ|{tD z&c!K5fdl6v{U~2d-GN74qK7EeJziZZ=q)J5vCYAVnww*Q%MEmmd@(V|)j7qlw+z0@N*??g@HjhTc-c5KNA=1XQ=o+!9rST7zR$ES6po|Bj?c-` ztSVUDJ}2A<&xLcwABExGdX@Kec<_R z8GIJ}J4ya^W#mI4tH(-^<`ar?bs4+_?#c4Q|;|sujyLb2=plRBo!_%%B zdbBSj&m~LQQM&zD_ad~TGA;}&W=Tv0$XsGAKhK=1@LY9a?5pQ+1!$vtSzxWSc3PB< zcv1CIL;&vFto=PeA8A%52cx(ViF&|~r$s*&`q}m&)x|K%;d@zogx8-&W5UJE3c#K& z{|#o%v!YQo8= zG9P>Pfx3QKg~s}hugNwkPLd*FX=zpRhxf-MrTT(;-1vSWur+x8fKIu$S<(CYzSZ)3 zfQTHXUd5SfM` z`4xDLQ?PUj){ZigR043{&cg2jBA-S#Ov=1*OC`kMes$%k;@tjXURNy_js zjwf-X-t`zv*SU0`+JO1K)y8{(!VU02=J*c>GvjDEQ!kS3<_BWG%@Fp7Lnev3vCVYm z%R68fhdXvMxHx#D4R3JuH6o^Ub2&q&%(>Oixk(Cvt|-v$SmibQ%xYz+-D_U=^mLJF zFcnD)uSIg(SH6p5K*Egxfom0S=(>`R?=<88?X!LdW0xl~WX3vlL;lS7!jrFtfOUAA zdA$e78V&6`8M&afU}IzaCnHcqHj3)C7CJ5y@~SlRKFpvu`I4JtLfLgos{Q}2Gd}4Zu_Om zf^)es+;2kUYPubl*iJUrswtcWkSyynycBs4!KgM%eHt^Phfe@k0_eWbhO^s%tc@(y zc@g2CB@bUEu$e2%KKc<*#n)`ctm00W@xiCRBqH0B-_Fq(cc*o&T^KJeh#rd zP3I3b3Kd_pXy7*UUrirhil_MtraB}0iDd^jF7!f|#01G_7v5$A@9X<^mUs`4;J(dL z;pXJw*YMU5ZpObf1~~2+3ikR2=Y=mrh(X8^ntnt#o{(Uh$y_xIcT+e~&+A0qc+&cx z{TvX;7H=lszGLt1+w9~$KyDsF%24E5O=b>(IEo%-^|W!e!3xJ4Ouf=aIh|E}R6Tdk ze?G|`ft3YnR{r-2z=UD+AMz=i90`x2u%>LjTfpb8-p=mt0qSMWg@8~FB7_T+ou+`> zY`KwJ-o9Gez&Y_TVyca`k+^SbK}LT@?L2Rc?Q!n@hxOf!YWpjJ#!)-Ag^IdhQy3uM z&p9`4|d%?k(V3~`K27(I2e-;%dH|PSvq?f%+h!O_<%SmLEUwQ&d3qv9y69p~P(RWbV`=aZVKi*tAm^Hv)o4JBV^ zAEL1W+sddgMF3bao4@NUPp20-lC~&!6Z`Z zGAu`vjag#yFaWhZbowE`6hWJ|=oGB@w}0A%&Z_KivHe63i;f6+OZ90_e*|OV z0Pb7Q^&TJue`uc)l*uD-n71}w`(-ggN*JldQe zns&9QhTUfi_y6E(m9-s+2K$LcdGx{{33-!J%?Dh{+^mRv1GuU{m$tf7zP+-$wu7xO z;g~v4-0Jb}Yio&2D2{NwPKgkDg}f#-Z^7Rum2)X04+z$mf>NG{x|ijU=bBZVoVeYI zI)JMNbU)X)BM-o%V>Gt#JU)WI+I*yvIGOy&KUuZbPR1F(Bej#~E7#12jwd^Nc+@^R zZ85L1vyzXn+VAQ+2)z|?t^;u2?sdKgh;?~FH8sB4$Y_!g%yI+q6VJIE4KMtqEUeyv zrFh%@F6R08#>MZrg6}V!$g;zH$X3l&(9V94Di)hUjG*s*Aplnc=)#tx`#iEf{9DJ8 zSZ*Y9F*%neO7N2NuZ@S0&}!K+LH*i|mHnk{!ac)NNMuO0DOK(7=bGGI+Zu{FN08^A zBwv90wuin4D9>Z*$IERJ9H_PDfXd^kbz+W#FJD1+G!uFG@J~-Hjha9t{iU}@&YYJp)u4U{GBR80zE&5!2CT z|D`Gi|Mwa>;XW@^8P&w&I^0e{)*U+2+`0xfxxi!n+4EFpOW-EP5~2n6km&5!psJ{XEwkYsgGDp8vKHYim1?V39_j3znK9z}I=I17fe@L)>x0fe&In=*QstdJAX_t?y_4?5n|Ki6a z(yJ4?TbI0L;{eWCD)rM-DT^avZgc_I&%f2idw>-8a%-O0ey>d^mnfZVkZOO_ZM&+s z`T5xNeR%m^s`6TngvB%yGi!zc_Os=DksD^R6*TPp^K+VSqjrDkcq;Jzu`bXRgOg=A zgyHZPdYH$wIy(D3#Jn(ci-PBp>GQ#fe_4(pT{4}vNvn-_?P~EfdEI4$hZrN>P-ecM z{~lStGN}3=U>)>;uF;}nF3KF$3e-oTlCW4&^(g*rRi2=K8iPs#oUnwPBRdEv4xwR@ z-|}(?CLpY5&x4f^@ryb(?J}@LV>@|w90Bgz%=SG%Qdu|Sdx8@P@xhCujuT$Lm{kmy zdc0hG{w?BW-;Yw|8chwWW|n{C?+QhmF&-$zIA{1({W>JFq^#kWku-N_0C3;_`#nIN z8a*q)-sP7*-zAE=1pY0YG-4&?z;H%!?+{zvn6C^fFvw6TcloHj>`_>u{0#nROsl9? z_6T*#pFnZ6$46QOaNo{=?*UpK7_6RT+!HroUU!xS_cgH8$3J$0Vnh~$712aF0!amk zaE1FjYKbeGzXS=V*f3PvXZU^)6iL138B7ow2LtZ&UxDtu%D`NG))ZxYg|BuK0n8%d z2SoLyL@C{SRUdPby`BBwG%|0~YzF5fQK4I*a0f$5FJgt0;+S8Zsr2Y;9}W%y`5FOT zMNq*Vcb7x^v-WcM(;_#2`&3TnRExZymU0w!iGmouCWvEZ?d)s2W9uCUB^AYD*XOFy z(UWRED?(*EyK0#SfcthWeh(1GNL(4_AztXV!p5v1$r{VuII)XzO6V?$`l_hg;c*>`y(fb{Cz)lVU6$SsaXmm2t8MGyB4Ou^-;{;P>yFG0^=b{qXUullkcU$`DRs z4?=f|)mQO^80=Q%@ng;kI1Y&?{lcuH%Z$Z0fj!ZQYuU?Bt6yhrIBLi3EI2wRU-$5iDn&{yu3MgfG4`|p> zqL9ZEM2&DoWy zBXhBB%XoTvLPcivsmia@emFy$XsrdYH4(m9&Qv3tv)|s77QB(aFd|uMEtZEovjF*; z16__nbK{5Vzhv3Qt@q(bgCBCj^mx_ zDSn{;vypdr%ZDt_yu@y?klM*e%-w*a6h&Ix+qEX!OWAwW#~a}LE9N4!x^SkEz?*_ zRFFuBU^|Dg$ym5I{9k_gfJ-z8n7^Z2g8UOJD(kyN34na{8nl~E)#Kal%HY?`>(8s*@Zs}i4O6Ysc zQ8U}*sM-;_XS9+x>RJHq+g|q`pop$N4v-mNyYAP+so^y(>)fZ)C;BCPY43#-Yh``* zt4FcCJAAPsulg^Kb&DMP++#&1wCPF7WyZ6&BQOO2U%x}-1axawRp(3cmTz^eT%X8i zsSkq{zKDNKd5Td-Vip>P;^Z9}&N8ZT8B9@HA%yQE{iz9%=Z*hJN(vb zzt@8^&^5hlzbxT2&^pu|?6^RJP2)4!0$Y!5Jv!2x(u**O`|zuUQk(98tpp5R0MjwW zRWHe&4;~Hka>UH*;V$xy=WQnW?z#Y74L8&&OgR-TUD>2;y6*_bp4lOoR6Ls_QDF3_Wfg4ps|c%M@y^$4zvxSt||$oMAxi( zfcw_Nya!0>GY@)5_s=s5jNZqGNO^JlWPf`xa@T}9m= z*aXU*i|FYsUG9p+qWq^|&TLcwt~<~TbLIf=(zBbcLp_lI|Jq@K&PwaUWThd(xkkA& z@Qf^)gjU8apuztpEjr=(DC}?)j_T9abS4@;CcXEXvZ9N|9^%dl3+Fg zjgC>~gq>(r)SWFIRi~C3PsY_wiZK27n{+W(iDdoHlj0|Am6ToE%j2=t<&K(Pb|Dvl zb0bfnTVzLer;U^_!ViW4hok4qwpN>N6f>AZotK$F7;<9p88(E}(z?c)XfLNBmxfsC z*pa|J-%X>$+k|7&mzTK%IDha0x|oM{vqiS?1jRYGl#od&6+PcsZHuK%wVF#EDUqfU z2HHgTt%wYd#mzU=(7d4j;Mzz|JI2o%__peGEZa#&yv@ws>&zSI=ET|D`OVnwB)RM* z3Uys%rk)!bBEH$$L#q5|BvYy5kFq9E>)aF6VBt=pZQW)hE#1n)&e)$0+yMsoVA zE-8g!OszXXG7Z}-W|)x5F7A>a|7%~$NWC5x8+vAHbU4a?n~}V)!*`%-TQb*;zxadB z8iH)sMmz%jK|YI!(wk2dLO)xPY1WiER@jucmtaK0An+8$hSlJ&qeW;qz9?+$1N&7_ zO7kof!1V*V7^#{P-`B#*_0h!PE*uKOMyp<(f-wY~%iStzK9)%HR|v(LdL4dLiL1>< zldNELm# zbf+D}(DIotHMKXN?J68)FcRPf0o_6}7N3S2%W{|;7BpBo@t%VUbch6FgNqju-6oH4 zzV?5ZyY>IQY5UL>dD2f!(v1kmcuUnK`gbTF38|Uq=ILCkjZoH9o-rz+U|x6lIf}oq z)jUeP=`tVI%c<`ak-8i^FuI9vP5^Ew(6wHpc=jA4i8@qHqs-EaStGD!S?jY2$OoVB zYlU4xLvK5cv#TUm8dUgRmciO_7V+H#xh}yc`AmdqojdYc1~@-^y9T`n$fRd;;LN$l z09#CgXTNISa&FGv!mfM4o~#KBy499j(U|x;SHR;>t!tHH$TCfSQdqye=m|e1=V%vu z3){5A+qLn19m0VwYm>F)~}FUlEjr@Ypx=9}Gh=N&8bN zq!?e;rM2@j!Z3(P$wj;mpR*qn=WZ8&1KbFpOT*pB#b_YCyR-DrP#*qKN*{lV-EGUz z4XQPMHN=p=KCpC?7U@2X+wc`{G_Efw?B|(mwE~ZR>sme}3ys~-0>FK%x%U9^Kb1n* zSac~q>I{jj1d10w*=&$>`!*$a$(`{XI;|EUa{|or-I-=je7Kuh3=Fz zZo;aRF@A9Dfdg+F5>Xx1{E{=!Wy94C{9e4B)!qX%jGj!@Bh$=6_nVWQdTV~__rpas z(OKUY7X%8c!C22hoDanX=>yycl?X3$qBSOIX*FFbtq*_1y@>RziP1aT0r|!NUB*F3 zfr82hU6j;lKAn!$Y61BY|2Y;*WGtbTw#lZ7;H|udYA8RbvTB~4FDhx0l5sIEnAAcL zkEA;sfr|BnZ+p*sJ;VZC!3dAqqMG7^S10X-YE$O8FT@@9Onnp9#Km%?fyRmBL_WEW zacMk?p;sep)dz^WIsqH_fu+kNaogE(u(Ht40QYTX`yQa?NdJG22H6ti9At&qghsJ2 zk{2!L`9{8f;CHUv2~i6fS-5Ko>w4nn0?Z&O#rxdd8MI=3?%jkdmp(Ty{@MfP8xM59 z&oi_8d_u^cqKtT8t^(@y6E7s*`$V{n4c(x4O1Q=(^hj57* z3RGO9`y6Uh`&$JMlL8E{5dNSIG z?sDc!_SKyE_R&sgC-7v6yjms@GIuw(YEqW`o8;`wL82~195-uYvU%)>!8?U`05=Kf zaxul4{`WH)*3A8?afE+1ZaHjDAbhs}ys(T}w6|HH$ITyGqRVIyJ#NRQR;lVTQ%&ka zO8cD(`KDAp=c|o}zdiHtUJuCt_kBJ7KmQGIQvfdLb9PUP-tOkX?KKa>U zbG@ut{B)jbVCLx+!JcD#{kS?TCS9q0Ry%?bPaPg#xPov3K3XA_18}o}E@WQrPmeT&j^|#RhguG?{XOMBXMKcom>PtY%XFRgX zo2X&M+6^{LJLA}fek$RCYTHYrg5}_8V&wAMd#_yBR`W(+UziJYox`??2&t(8h_fZE zj?9Y!wWz_qSu*oXwWqCL_r0KGN_2I25Vz~Ko}Q@ZRDJ3ndwu?e)V3>vovW+k?cfgm z*1NucZh1i0hOUT(vI>Orh>B7A{aezVriu*iTqW@=i5dZW$x>@F3F5|Z0k&A0gMa?K ziiH!7jgV@QRn2n?OD&1saQPkrz|9A`f>%x>1Wl}4?LTwzaQ^1;6tBOEX?wZV#NSFg zDd%VCFLMu;W5!NnI-L!{CyCn6)Z(^|IV#qhRNfoXNvWtsbjHrh`} z3&+S2RSM#1i*6M3!&eDV1?--> zBuG;DFVu7=a)jicVWt1^QO6;X4-&o5r}7wB3w?@@mFfvx`d5}J*i`h=MLJ8K9xiUN zl-UJvOMtFq?&2T!ygF%^*C}Z@7DkaR1&K4E583~akO$hQpWvL?Chm)Kw*1sO|m zHb4l>{B&zekeFm3Qgb@pKzh6zF4~WCa=*g*X(`0o{Bxirzt1e zAHXdKy2Aa&E1KH`s^+w1bqi|<#U%OE^_eud!##}@C6*002rwE`$e7)nB<(8{Hqf%F zU+`Z3aU(e;AC!UGCN{`ce*)YJpvx7^DD7|Ik7=_*U9g(OY`1xBk$V$|a>iM)KHBp) zaGy4yHmjql3EOTy@% z8MmFXV=e3|)xmqkSnW+`##VMVpiOb*1_b&@^rKw;mNRSrt~+IG8`SJ?j)FA|-Zcks ztAOrx*=tNd<56Js6^n3SI@xyPl)=ItMtzx7=K=yDb(EKg&T@U!@1%;%U>-{YpXrk| z>Bays9WP(HWm4#zA*Q#z=e>Tbfv$b%H6wn6hAC&wSZ*0=so9_L%2VBj(N`$7d%MfE z%wU^-xIK0KLi#Dti&>zaP>7ai*=hPV`!9OE9vyDNxm|!;19aook}-^>OV7h`Ble}v zwt zw*%d+CS4;Ha2e-I`J`5#Sk>1Z2?$&!Lcyd=)qaj6RGR?zEb{GhMw~7m_|(u6R7#&( zt6e%_>^4>fJl^Affu)E4=l<`#h;O~ddw>`*Ea51m89Tof!rQaVTU94@tc0D;uD6nz znLYZ=OzQZOjpof2-UophOvF-;Y{@ZH`fy`@dEIbP(v;Cl*ZtrA_P_U#zMZk(1H_c( zq*HzG)iHO#2e&&$tGu03m8a2{rxO>9+)tVTdy$e6zyNjL?(Cggewn!)fb;W5lsiv7 zxSO%%!2Gregct5?RG3$t_V^ES4&3!yW}Wj8*}$f4rPJgLE2 zgtiON>nVrI{7#|QK`D64@qNGO1-jA8MDf9TQUM02y>p}t+mgB$&l7?7>ct6&{zZBO zvsbQ3xZ$c$*AYu~TRP!8Dz%E0lK6gmEn$`dH)GSme86+{+n)a(pxV*?!v%8#LFXYi zdSQs6ScNv_+66(baAPyWNR0G#r-DAt8Ao4%awjuVC6+<(xPC{0m{fCiNP%Q1S9@*x zw_fl)-+rJ=r5MR~nCm10SEgj2kVmZk9YfuW?av_Jgy8m#i&HsQNiFGtVv_tM1#@R$ zs+K#H4s)niT|DXCcDF31$%)6?nfKit0J?eof_?@n{3RbW2KVHT4?RG$WaEP;kyO5! z0#q}^d`Nt&Yt}B-go&2-1N0vFAXGcX6xGvnF@7@hg?fG)Sk!%J9sirZYfE6VG?>(py%GA8~+`%{7m>lpjO5 zU*o&1Ng7f>5?28uMaPEW3fSaUR9Ubp{()A?Rno4_wQ%`?g-Fb9jJ(f z?^%Sjrk%#QQC5_AX3TJtRYy?5Vez32l`^}AU5JSzY?0FK7nq=x(Pty7e_{yk$DDit zzrAiDO}9V57!(P6$dbQo<{$gAay5?wuT=lSHBJw3 znpmWHUE{DQS+j#1ke>rlOn{=7D2!YU(CVo&%*Re)A#OxBoc-_j>6Lp@kuik z7Zj6WhK<#-HCM-%-Dk2^=XJ?=`u&BoJ%RIwiZzhP2ru}{WqwS`eIF}3v-E-2m$?A=FpnL^aZDWV<%`e1tkk?MqUfx zzSZ)3fP^~@#uLf~f7ByB`*nG3{Pz>(a?cjJDtMFaeK{r8bcI&Cw{Sa=%R3OU6iE&o z=b0943O__j;6)+U)u_yz1JeNRG|+`7pl$y4LxKH|?(kH~$3XXUq=)IqG%4tc6+e6T zvoH8T6s~QSaaU&*q`hbIeg&!IBCuT|CtBV@Qnr~C$DmMvI|Fq44J*cu;ZMK9W~=}3 zeVFxtoRRzm@$9^oeub4rI!hhdEn0_6MFYrF?&j;pKWG6ZFewDVd8MurQne(1P|4Lp=;qM}xU z3QdX!?RY!Pl~OvRG2H-33^oVy4x)Ee0EGIx2r@ZHZ3r6%;LZcxkmM~&3ww&6EY|WT zaE(q4{;{wH%{D6iRe8z7dmpEMk1u~roT7Qwp^T^``%UrK+I*M{`IPCgz5;e8#XXD# z4shS@WxNMyA?GMY?j`J8#q}14hx^dskOgc|b-6$vEA3!u`@F(1Fc$~Q7w+RuCVH>L zh=(j%>mhV^muE+FT^ne-cl`(Oy1oc>Go<0dsVchsWb<8VBZ%u$bkKKiisv^wF}f~(FR6SMv(4#Gu_2f0CyGW-fQ0fN{sBu;HJeJ ze%*LddaVKz8Szsz5#<&vSBGAfG#b6&lJ{7+*uw zMfBE&E^1*@*X?pB{<}mNZTY9_JsuA?z(ic;EY$I|@B|c;YCBd&DK9>{wakVbEgJVt zyw zP_9Hy;DwzU>|F0V*5TzV{`UE5ze^a_{D7s^${-OThgZB)C=5yPL;CpCox7rsjT_ z@A;R;81JjzC0(Q@+*Kg4PySWIS1whw|JVKFJ)j#mu1M4+8U z5b1^VTjKb@UCan1;eS&6-3E_alF={xzW6~`3#BVZITfKh(>Ur^&K3$F-+iF_oi*cc z(PzZ1*T$rZ>zA%_5pOnF!jy{78UwqTMt3Di((^?dtg!gd$_p1E`n-J%*q{8qXiutr zT5g%8ykhGC_ALiM*ODZ>%l0^sw3b%_Rf?Q{jpV{%QxGj|4h<}R&`R{|t}W7yq(;ll zJ4q3AE$0UZ7ryVCyCPm;HKUt}A9m3p0m%2Qr+p95Fsa=b-qBMWjc;zQr&;~VGIrjl zisS$*?e66oF;V(|Wc<`?oVf1X%g6uN3BeN;MMYpW*N5*|aj{#!-f5A(U2ER!;cahz z573`kNluGwOj5?xSSz@el8Vy9jjYm`!;M?%&|^5P{+L&U?mRmoeMfP=lGwbuviX{V z-TshCY{t?r^JOwKPj9vL?j8f(=})|}<4*a!kUG6xt<6oRT>hUI*J%Pqzom8r;tlRl zi!fPo!`Lb|RGmQUe#v8!NB(FYJ%PWMa6mvcQN)=F>@VJCNbdof-e-BaJR2`T@f;>L zQwuoDVo`r3rqVsI<=EbIQht=d`U$^KMxhag)cL(Jo+%al@TEfKP(LmW3h!C zAm3Ae|iL++}A< z(@HIvHSjyUjX`#TW*Re=e}JDYK8~cxXYn0h8Y@=&a)$oOS&+Gj)##*zk5pqvBIyZm z&wws-X<7!jD1A?gh||P>pb_4wzV-S+9GAn?Q!G z9ymCo4AJ5x0jCYz^};^HZkF}-*!vyGdp1|~N|ukeaD_abXiBvG+fHBbTL#+O?C`yQ z{{mf7&$=IR6nWdywSAB+O73VQ@p)f}(*9V@PzgUEsI|d`F@}Y^qH(BQg7c0$Nz1lW zxpSJf(kZ}}@M)Q^I}iis;BT|P_W*f5oiC2@7iGIUEsNPP6#EEjoOvbEiXSO{Ce|xT zYnGu>Jr3|(Lz0_|Z}5RmMc|!AhpNxQwWN>qvKvc0oA(9edj)j$?r_=48u6jX7;Zhn{QK62yYg!Qy1eCs5WaZsi67RI=31>I^I{d**>-)q}A=`DaxS>pmUP7M|#9>k5w! zaZt>fPY(I`BVkektLIh-?6k1&A3#M{KP1lkiC4&9}uRFIu7m8@HgC&XJyzD26nD*#L z*_=^y?YOM2{$URKJm|*-$`a}O%nw)$q2O8frB3M<-K^)@pUXutrjFev-g?*f zdU(tIJwOBJwe30X^rmcRPOP3el8`k=iApB24!vjNlHb&$89U7(AsY$5&i%dVc{p-{ zvNYP5ish85UB(8u_dvJF8EhM$KJ7t@t*}i@bsUp&M1Iw&r(~y>YgJwZ+H`(&4Y-Tp-h zaQ^|_)uDL7;>qjiVV<+%GJO5!Mz?_O#g`BLHHgN@`q_A!Cc2e^+wR~pSNDlA2!(D~U_;B%0~RZuSpG>uSB$LM8=)vDq=0GFQ=e{1$kqvSOMv?XbYJ?poc;vyaqQBCHTIR?3Nip!!^@w0tiz%f~8114f z)KMoe#(3mo^W;ayN2a%#pI4Uk*YJM*OB zMB)EZ^QT;W9$(?}- z#|Ys5cbn+{2@u^sx5L>}4MQ<%#qV{DGVQxKza%P%^;NKG(WkA{Q-{lrTRA!8mi6vN zACMX|K7VVpVtiDZGkhL3891nSiK7Cz;6S&rMXn`M&R+d?DV{pTMLAj)9`2sdlv$?d z2Y%J7_XfO_YMwB(1om`zi*XI}rczcWbKITu@lS^b%v$i|6(Mwh3juV0p?h+aQ+&OG zWQ689fL&T&5J)=(fuE?9X$q)H?4I+Vp!BG560G9}6P0KS%B!;-?~!4SITMaUd^<13 z19bq;C6GW@&nVfmxsK59X1i}g^&e}%b~LfaivD?cG4Ew!Cfb)x#`RSJmBFc$UUixy zmS(Ommuf@46)Qa)Y;KNNzE~A+GrsqF00CV%qU%)vGG|;W~Tpp2`h4uIBL+lv4(A-xo0n^9r(!jdAuv7WSs62A6e=$~XLr5lD z6aBNa8bX?A=u)Y!r|?8mj!>8@BBTnC?+2jk6j*}joGc1O*G5(`nvEE+y}VM6%v^U# zkUP@{9)yB8Vpf#7b+GY|F#Wlz#)2L!_e44o`{QkLav2N%ld};#z=Z+2K2kz%xKpLW zse5FW%@lG6-z_#@QdYvHXqnr_`B}9-A5bS9d@*Igwz975u|qv(Zm76ym2mvcn|TY# zzIviu0&ro0t~csD{)iwR^-CO$`y6yI>cWwS8F5S(p1Ak#zLk>JHnQS)Q3iwn^jYU6 z`w7zVDRb9o_?$Z>qPB$rb&;@xLoRfkhufTmdZ z5XH(|A0lRbT4nfT@KvE7=TlKxS&JBFQo;x2a&fVyZy4Nn-95h8Z@u=r3lDV7U-au5 zY&F1MSgeemlXoBKL;ijUACpem|;I_ax!HayIp0&Az6$Q*G_&Tjw=M zkr~Ix_W-!aK-Uo2F9Scp?^mL3QuF=yU|+hp5$DB30f|PqhkqqI95z3(CF!a;9_ED? zbuQ$)pnmR$T_JAf&hyrFSIQ^~yvP7t6rfAMk%B)`!RjeAit65({g-Z=nHS?80#~W| zd3};Szr*-r)OSBM44mD;uLxd0j0DxlzJL1?IDrePT})iKfyv?oa8ZG-Gp|{X)Or%q zSOAf-6E2-3haoBkcHXOC%B=Ox;^&)(oLOr)VM=XXUzHuE${zB`#?Umjto=fYL`aA) z7*`>0_psjU3=Qa#<;_Hd$-DP zYV0h}cr9p-YP{oWa1?r%y>BQ_OpDqk_Ip^m%l-;cBYo1zmJ{0xVt+FKMM1J)QGkV& z`b6ObtTRlY8#urX>utWoaM04kYLYj>_b-?W(W#gIS%@XZmt%88d&-O=J{S80UHQk- zl=hFRu)SoFQzN||+amfHBW`*{VE={%bfZwhl0(O`veuk`s_=42l?B@Hi}-acuH%N+ z^HnSv`@(tU(q@|QMBS56A`V2BS6v9;Q{r8ZAL3AGrCNoh-~-kH8|We%D$P58t*(`7 zkJf;SYDnXJc}`6JAjc4;VB`$-=gJMTA{w_@K)k;Da=eRV<(IM=H1}YX1yUD1$FiLv zrpDVnfcJX90lM9e*jcdzU0yYD93YdhQ1EeM&jt=cn|@eNb)6EOGn9y>@=oev z4ya;J)pbc25oVnXDo~!3uzj3v>ot&Sdn8oMOr6 zSU=Sc2dFLUp8njQlR8^-;4*+5Fh#MlZ||IlBa$Pqh07FaNd)$VctAHzkPLBbd)^}e z7sDh6F*g;>bSTaEBXPs4OyLx78Y)wi3uS}YhED4G)g`Qr(X$lI0WJa1ZI-!$uI9^dU9|rhf+%cAXH} zCunmwztHDy9zQdgjfE#YJ%bI>Z1!1=H27(e>JSntRWUU&rf{rXo-RS(MeFVK!Wi_$ z;^P8bQlJ~xrY%hxCTA*S6d$9ui$v>GF0l3l-_za~B5gfRc&Is>ZSaDd(P1QRrjm28 zpUte@2@~)vN4FnG`?9-VlnUH0$bc?y(Nsb@NO%kPukq68s?D{7(ez@HlL)hg5rn;a zRjCBIy!7zPScUez;;(xa8daqQ52KD58Bw1@t5lo`i(m&pzT`l+>Bdz3nZtINL!yQk zEqgSM-smc>s{5Ay;{=@{>_v1B+UmeT>R&%-7V-khc8P`(r-c%9+mnF#7VF`tPT2rI zfJ*^%vGGb{uP)k^c3U=Gc})*?h?z)Bmve6#Br(Olxbuir_@u^b%B(nY;<>I={2gXo z0h91WoF35Jurf%S7-6SRgH_M;L#-Kd?0K-Q854F;aYBpb zH>lYGKfE4|ogx$S`H4>LLWWpj2j=7w!)UO_b;Mm|;GByJ=#Ccu_r$aeqYDxqIQ0>< zcKZhTFBmjFnlfEEsOw~XcNbEQ>ac{Mm-=X-pWHmrp8UTJpe%jBp{)z_k+2Jv@m&D< zQUl%22D1txaV4ngq)HE!0pBv{Aabgv5~~ZOdK1`;RJx`OX;J8-C@q+8sO}G_>iE&I zeo0wpy`ny%(*HQhE-kPCE)CG_Hitw#^GrHKZ&ME-+f@-{oE;B^$H`7x_;Ze~MepY# zS2ZBOpgKgTqZTzdU9UGD)TD-cC`9#&ZTiJFCe9XEXS6^!h|8|}?9yNk{lEw8W4PB| z4(~W(lBKY$rISJ1?XhK0GkK;%R*qJFln$Ho#A6_@H#+&R9!*k0H3*Z>y8gD}fPCqI zuAW=--due&Bz^DcWsOrGM7u0f!ujYqo5nL}>vQUlsOj^UlTL*HAA4^CS5w#i|DV#N zXeMQ7phTpR3KfzeDwN8QrqiTJr%@p)B9TIfWTuiKGZ``^lA*znAwwZDB{Toeb=rN~ zKX*N^=lgyB&+mUf-~TzU`~6z`T%WzJz1FqXUTf{Ok8YVIH>^`5_Xk|vF*RoTvW^?= zPCS?uGI3kA9Q%1whwb-sy}9Y5wKpe^E6wY$e&6F$3idfxPxd5K>el)eOKF@gG7;L5 zE~S6z_P*N&Lscs-^=j1m`NlF~@v!f`zLur?FJSM(3}E{WDGqv5_G9lIub$y~p05Uo zDc!m{(j#4RjLxt5%lyrCGd3L1kKJ0M)9bi%x=7>qmrs**;tQ`|@3Lab!(6!-I1luMze59Q964QeCpMVy=<*MGeu8 z+fU4&`9!Wh^T*!&%46w?_T9bM>vdhW-zv3l)*i(bA+s*M7-ZT*Gt_qT+f3&{FIL?$ z+rR(S^$V9mm6xqPW-{)UD`)2I!%G)jv@M$<(m^EMx$D>o;j6ShtYwvV5ZmwT4kw>p z>$)*%;%=!8M+dHVj+X7Im=gPG?EVj`XGg6a8W^`er^{aNeXHv_jamP3LV@$?P2Xk( z9{T0I!MfxjZ_){RC)Bcj&|~`zN$+<-jzt|63tLT}?Sw2T7f4tD*-KJ_k z#dAjo43~6YWj8j>)M2vMrb45lyK&23`8!{!pQ|z`ek^;ROP}rc@|%eBjW510Oq?(5 zE;8PubJ2@ZdF#1i=JL9~%WNj=j?%i|J@Lxn3FAI(`?S^Peb#8+(Gm8yY)zeI&bWW? zEwy7DtGotmzrTMETj!Y8S5@=EfOlaWp$TbChMEhjg0s|DTeW47Np<4!;4cxPOAlT-qdUbM2ij{)q!lnznvC5zQv@EYoVfm%sF1LI{N>(jB=)N~R zTsrD{(C4rZQ43Y&70e1=dJ3yNt9>`fMpgI9%EmkO_1+;yZZ}uweR{M#U9I<&_{ivY zW#|1a#~)+QZ$sFAs{&v3RJtPOKR6}i{W_ZQBi>spJdm3zH$H9c{ckUf0+XuJ0dCmX4PB+4TX~k1_ ztA>Z&MkFna8-AL1?@+$Q-0CL1(WA0fSnFwLhFxe7xt5S&pc${wcXnuDO-M2O_h+VT zzk!*($9!3}V&=qj$3DybEw2^K8d=@2%*5xO%$~rtKi`EJtJn=PyfZ6UX}QSn<@Y}+ zMoKhVZ(01%FF4(EfNpo`MU0fS8O2_t#qG8F!qvfGqCxfc3mU;z< z-W#I2F#Mv&m*bPVa-B+R=FUDi^6ZAt^BE?=wek*2Q#JPc9cQ)MP`2N+SnGTFic&GB z4whRNi;k11o6~jn*Usx!&AB_)S42tZ(B{5cr_EIQ4NkThd2*nbN`6j*^3Erjoy&gM z?8$cRaM6P0cNp96otR?T?Y?_-k1VPY{+8{zvoR>J;%C+9MFvl%_&gb2@@?6a;7@m- zCD*MSV<DRdIQFkB4S+ z4>v06CU2IkS@C+ihG|KYo%D!ZvTyRN`$wIh>FJ(Ts=xKYeXkYnb*p}qtenA~hs@c2 z-}ByX=L|ckJ?n7&sqM)(E~UA=(drhlMx$_p_0?R_{oR+1Uip2m(1yY~SMf{BzOFaO z&E2EtX!H9<*H<6cl{SXzvf^OD_B(@j;oQLfF9#n8eSfO%tqA@Pj*_n?dHmT+-Gis`!qRp+d?u00aeVovwEaq`g>&2GYXEi6Pu2k;5WSYX0?#8u+lc!r9wf;C;{KuXj@)d`t?pV_yi_`DtmRj2pL80Bx&a7eg zhf!?5O>bXkspWcxe08}mVikK?Vc`)s%~#n$qbG!GNa)I|pZGSj=&opr>6Lv}{Rj6- zzkU3|W4-16r^_>}MMO@HD&LsRDz6pW?_w*b_YL29sb>RUrV+i=VqTf#`s`K;D%F2^eYNs6 zsXp4pE_e1NZ0we1Sbb^yBGIT4C!Max!k4U9m&~HyfVcFAF>JrGkp^n->>n#GUi;-- z)gIISoR0VRC+&~0xRdJLQPFkVN`t0DL-cnTy38w?YCo;U_S%(sgL_tZ-pDU{;JxtS z(39+S)L6FP@M}2jw^mgyDRISXRvDvrNOgrq;-IhGQTubjz`ry*25AVuUP9^vEeL5}6ndNsp+wbme zJ-$rbXtemi%P;Ojo*vztXxrOJDc09@QwPnws<&ol$2*PKy3YA!USaj`iUy;%-igv0 z*Qced${jQ}tJlHI$O4vM8%=&GkowsxChwa;i|_*7qec8xID}FrE^t-86Vty=2&yL$AIUTNH+k6{kMi(jO+W z{f;}X+3~^X8)MfG?fqo>tcd&rcT2MZ#I(=VE0~9_&pm6lBItAA3Eq+(ONYm*=Vj-Q zb6BjjO}*a}^_~hbdlcuD3A4&;%l13EZu7JRwLR54>QAnf?Qv$prKokBn1r7l#a9(y zR39cjZQ$>vPqIWmEeg0S@hm0w((R>#D*A-%^GogZaM2Xkbum|2e(l(P-%owy^8RYz zDcwg;=bGe78>G&(TdFin@7$*%ue%55Zcq*4DRDR6zg+P)cgs@Ab&n=q?tE~ic}3~d z!tB>g*EX53=Qn${-*OF0G0EhMNAw+5=4-Aj?>yqlp-qxpqix2Eocr&Z*F{CiZeC^Q zJso;fPx4O}i664`$H4l~Qsb|=uM@76t=rz6y{|Ee?e~So)Lx?|ZPN-(nKh~C=MJ~0 zE(;uMZzRVT-z#j0l`rUF_elJ!c&Ee9@@JcU8gFnb{Qj{kVgaKk?YYHy@wiJ5H}<~V zWVYW^yY~qVssDUD;wNXMTSq0g!S(8%*X}Hmly|*j-mU1=9_xoA1}_TE7hADQF7&A3 z=8N-HFY2ZxTsBOtPV?>KK3<#^-zjXrGkVMuigHT3Q=SvKXQ4^L^RF|s7k5qmRvR-y zWo3i&EvGlf-2A@{TXpj5rW(J7OS@$%YaeXCk>_SDbLmt?4~w3!SbiPYeghf~yM{Gv z%`|MXc{6{vW5E3638h}!33sip&`BQF+$47&m|K zSJqp$#-4q;mF3rw?RSgQb_*xTLn{|e7<$=dp+m^k0G*#kMQ$Ps`Y(&Eva}A?t?J;I zsI4+<|FFnJT@6Qx=Wk7tCP**7es_3+cd4Dj3zpxhY`<^H3rZEuzi8|-TKOz*&z;e( zSG2d4&p4-EKV925G`q>aQohHvXnepqKT6ow4P-!?9);yDcKSF2v~cDK%Q_Wb6= z_8S{u)%(o;{lRncKYJcL?mZ}Qg}%{~o;^4QCp6@qs^u0NX74{UT=Kj1g;C=S%Hx~v z3T2M|YCJYI((HG_*#0NC(r*)5?qg@RUm10~Y6Xi23vXLKUOniCk?E?Nx2BDc@_)az zO5CL+MegqNBU?gdI@QQ34zGEl{U}a#V5%n;W2X$s7r~wxF^Hg{BYvE`vGysmW-@8;Onzx@8fTQOG53(p3whT&^5|o zjpY}vE-&~hyPr*C`xWh*vRNnZZR)Y#AMKk&23CC@Ffn%b?+ckGG}@;1uHVPD>u20KTEo?pzqyR+gjo$dEl#>LVXy*hi0=@X|l;gH>( zVd5z_qYI9`Xu4l;xLjXYzH`U>x4uVTQoFY@aw2D^%F;1Er4l+g*zEiDMlJL6CFxj} z-x+Mb8z$*12kE_a%IuW+MAdbNejbBL*)0tLf{JFV_)5bTje-|{9?bkcOc2HsOo%eLQb#xO-O3s!qJ~VRw&rkaC zHzvF7d!Y0_PI=)tleBRLU&=VySN3LSD2Z*7Sus~pXWu|y)r6}u?B74Qvi%G^8QjbWSvtC$>yL5uc2zCOJZ}F}DMWAlb2s~8sgf2`zt0%oQ@vkS>VhJ9 zmS1usys;dBoavX??_{4h+{F{WU*yn&Fa>54QCB=n}bBs&tpk#k`9(h)%=PJX8Y2JX)I@oGolccWMvb{x2Dzh)ubR-c~!`amDfsbOzE zb@6M|t35pFQ@3}@4<)B`uzz7zKiGSXpJldg|5;OK)DM>)==^M+#Ym-Yw-3~fy(7_g zGW+?>o9#C>Gdf2>f9ti!Q+^#8R`5w;g}G5k~PkVtDM!v{Z}ce!aJ zRn+hfjN|N651?q2up zhUS~siN;-iY^=UDVMVWmw8x2a&CN>3FMXW#a?jE!OZv_Wc%vk0y3r(Qa%q~Q%Xg`? zQu8dQGb=a!a1$+L@6-CR{T?1wb=1__@SIikPvt?`6$L-b>aGmWva?9ZNR@nbyKg`H z4kd}6`WNTRj!S!WP+^2eY`yHQCu`@9U0*AscckzXj}-@hw%>2BjhBUrJ2YzhO#} zc+T=Wo9%aX<Mhh_wqFX&rWc1iX`Td;mp&v&-&I!PDuT7 z_gBe0*RkpotScJ#*xAf*IIyYV?FZSR%k>YR8&PwtpJn5WF=4`mugm7J{06f9+IsKR zkDPsH&!nWzi;9PyQrR9WKX}W8zdUUU7`4LLE^~b8GDLunax_^ zvejong71JA8e#cASbl@petW(cDPJ&~+2_dCAlI*ae(*!W67df8!TqdVyc-rId`B! zP`N5uTtjZqx>=@&5BBP^X5;(xH`&(?2Gyt!Iv5)BOJF?)%!gVq) z&wdCsUvIR<%F2~Jp7GdzYmRhriik6~aoe`R{LB_AB%HnW=1MhpJD9D^}@PP3ze6lKHQ&kZUvcA$GPl6E!=Oo9aD1zO0Y6{ot3y zhZUbqml)`0wY#FrXsd;V+^9qkR(vDaetlN?40LoEAO3xsp4%qePZ@xyIY=ZL)Su zGIsemceCTT8ELHYMzQ^dsf^OE4sKlbAUFT$?fB%_aj8v}rB*H%ZEHPrS7yq*`uxcI z+`6LJZt_)Wla*XM&3sh<^UIFD+#PbyK1`T>+WH{NZ#3Jlt&5+&>YE$a19odZT6x{0 zCL*p(Ijy$BvTB!q;oVMW{R(>5ISq_{SH1bDD#^5cLzpK{A2>R5hb*?uRRsO)^X zc1?kLYBxi>BYk*ll_r^+DUDrr^1@=*z1?{ozD8Qq-1zGG^5vDBVV}4sj%2LauxDw# zo;0%S9FO@;9b}B|4Old^^8N7>@7^uC8$V(6)D9|-=k|%6 zYA9`dHluH^3tz3aN#A^a)@5(wwY;F+qMyzyl76$RU%iW8-Jkd6>gHOsC3C*OV?_H)SL@%5ru6kyG zt_`ca3)p_`ocjoCb?fY{|G;%brq0Qpm#a^muAO|SGU@t3)25@tmbp*WSP(bm{^`E< z-#+Jzt*K7__+Iqvy};+4rOa$i3|yA6{Km2UDop*fdXmklV=CzZ>Pi8lM9&|5ajQZ( z)j!9;bAM9s*0jwo?i%&WY#fc(&g~N0fAYh<>s5{QhSy$rc&Bb$|3F*%H{C7Ig$vn! z8@fMw`+n{Fw`O|-`yF{LUtK5E&7?Sa`})HC8Y#_1x3zSx`be956sLqJ_E-_G3%*qXWO@)lIo4>rsrpB*iCqKp}*aSIa*NSOFUz9}`jK0ZJ>*;c4x zp4*K09jEgS575~7QcmIZ8Bv+neftQBtjK2hO=SCh{bk9aYpQDZn`<;p1~2WQpLReEWeA{ ze!H1CG{uA*%Ue9Na>Qhj;+XoXO}>ruH#o@O?l8!1Yxu*-hxaL{ta^QL!NU`0hi@pT zZ`wAhBq;5InDX-bMVo(55@Y#Y!uFfJLG{Q_sqwY(UK6jz#NF?=V42O$qc5tjM{Di* zJX%6$!txFu-L=>GuTkG?WVp(>Yf_;2$CQxz5qk{|W$iSUE1=)*xAe0lw%=Wg3w!VQ zmer87c;Qa5>>dFd4{xwPwle6gY?D)?tJKr)ckMzyrOyRo-Q6zabO-_p4T%@1tG1Ij7?0 zfiXqr+$vqSe6b22Wj*%N4VgLn@7Wv9s+|7tiQ)_E>K`r#SFE&j@u}NvsVFgb@7(Ve z>~%>p+pkhY-kFru$0OAvht9t^ck}cqi`Uq@ehZj(&p+wbI@4mIyXNn`JtNE_4sHJ7 zW!&NV+J)|&8}n*@`akZMzg78M75lx@a<<=%a`Tm@o#oo+|H`UgX~Oxs_{*9mrTq0V zvv+uF9UgXe*4T25eHM*+_$yi)Uxoylc6)jMjpFi)`U6sD9(*ye!%gYs6Bx8s1#3(_D9#Ijv=85ljnXsx~_i1{pC-31y+_HmzbXtx?za=vfi#;q6iys<=E{!P)^Xa|+>)8|vK51+7jzsu8(j*@|o zqi?NuJ`pyw?~V^eV)I@U)FtG9c|L{yEmF&Uv5M{2v`X|+?3B!Rod&!=`&ja5UwfOK z<9pBeRs1-}UR1dBxzX2WmcR2Sn&e4#2&yXG)HLto6|osV+$)Yw8u&!<)2ZL9S$@;l zeshXKI!Tzhe73i`{Pfkc+i8rO|&UA39 z>eD&d-|lR=l$KkM^Xm)Fu>7X8{c2k;y{t7Wa8`BA>&3TzWF?q6uanD-x|151*1vGl zm2+7_>+9F9u8fiGbZv%M0Uh*5X)_!~c_GZJqiT8|9q_zY56X8Q`bu&-=?M0>j@h z0@Q8~Ku5IOBXJI=^M9kw+p11WA0q9p1cxK_FZyfm8bR(s!G2yGjy^i6G_FC{GXsG@Iu%vj1H^RKAc6yKkpS6C>Q%jv4qJP%SH!AB4QK?MH!2+)1>YH;)O zP9svfFaP=6|Nb+ne7@nl+0jU8JfPu#Y+PP|Ul5+v>P`Ojb^E`+7J@4XBJi(Afcm|= zXK-i`Qm)nCZ;t=hYbfyW&qRRwfj@5`f0-0+BUt;i#EjO%EwtGF*_2}H$>VW(o*d5T z$^X6mzyHoPLb<%)fCw(<_!PlD%|9DA!FjC_p#F`mMSeeTwf?=2=-%=P2=<^-&UF3z ztug=J(fi+1I{v)n7v@JbvcQA?|E+y$y6yoV4yO~IZ3ORU{`d4JK}`e^_)m`jjZM;a z&0~|=ynlUeB!8js!yfC%RzIJ^=_(li{?ogQp!|pc_2)32XK;|W=j@|P1@A)zo#H)~}kvwiFPw#m1 z@5ssa@1AS_4s{ol;s3u8pm$kVr*J53`OqAOeC2 z2qGYefFJ^b2nZq|h=3phf(QsAAc%k<0)hw#A|Qx>AOeC22qGYefFJ^b2nZq|h=3ph zf(QsAAc%k<0)hzqhets0ZwLOv8&FVuK?DR55JW%_0YL-=5fDT`5CK611Q8HKKo9{z z1OyQfL_iP$K?DR55JW%_0YL-=5fDT`5CK611QGZfMBv~5=Jnryg}*@<1w{}AOimz zA|SCsm|u-&>CLI+FkYyqu3r!@%sn7LHz3$^wzppZSJxqw%QaUs&{O02&E*Dr4^T5w za}V(I2@3X>{I4kd`rZ5?!!UTGhsq9&O5f?2E+WR*ELi7sVr-U-O$6V6(aHFXKuU+A z;5TC%g_Qi0FA?S;=jhTO@2$R8=q@P`k{9jmoPAtN^vkD#o8Wjzf`w+9i##Y2bJ+(;n30si?g{2yE0= zs~KA#96zIr;j;!d{KwG*4;fnqbDkD#V#rJFw~n#(#qmhks9n}GHfw9Is)@lEv5t!j{32sr?PhF-IIaQIemRUkBOE_rY`M&N z#`yk}vF&Bf8;tL@fZ92qu?@j-9b?gBw%0hLlWNf2xd=LJpK2?m(8pqX) z?G9rb1KUH!c9*e@g>3-*QN8amwsANf1{>A;K4YU8pN5S-)r?J+ZVG%7s8iu1IV{}J zz#KC`J97ap&5tLAja<>VO=Ag-9W)NpxGM?h{-yiX9VdAJPrwDrlFdLN!0D&L~ z1cNys6!1V8hy-&%42T8PIfQ^P=m123C=dfQr$~T~KoUrSPM|Z81~Nbv$N_nv02DzN z&=n|wZa^8RfbO6N=m~lORiFmc!37lM61WVC!4*&fu7Yb|FW3+Az&?-<4uB;f0W1bI zX45^c2I#(~`;*2H8XssprTdS@e;W5_o}#gd<|Z2RXs)2ShQ?`{4;>IsM=%xm;=3R4 z2eSdqje&sX!%N^ixB$+8Yv3xl3`zjak2D{i0L9=Kpn2~&xCr(En)40=n&%2YAxH(w z!3scg-4FDu@8BD7#rJxoufZG80N#Rkz!Bwl0;>?y`5*}_05s>NfR!K_q=8hB4&njL zf79T1II4}l`1f#%r)awWM254-sfXxyN1;fB#pbredATR**0otH9 z&;pv^1M+?b@4+X~1m1y0@C8(Y+n@?mfLov(l!EIZ9jpdxz*>+2)`9h41IPp$!6uLe zHiK-i1#AV|z;>_$>;${OZm5571g82E>9mFb~WJ3&4GF4^)6VfCrwS?H_|@ z;3=pE4*;z@?t&`t9sB@az-UkoD!>F_0}SD3Ffam2z!HoAqkt8lb%+K~1wBC@KV~)nF}12eb}}1F>Kshyk9!1Iz|Kzz=u< zF7OAwz#F&&H}Fvy{Rn&lyV2M7fLyQ%>;$X98juaPfUV#>xBxDKOF#j66#>m0m0@3Vl1+53K-f2X{dUn2z$z0LD1JiSpdW`By**I0;UHePBP>2G)ZO z;5E*liS!`S2IMQm@o8`d93VTe01?omKr}dy^Q6H^l;sFm3FtX05!xr<4kiFvV_5-u zHVJ``J4nTl8Utt8-GM*w0DfR5m<>FE3-AK2AOHjbE(iqPU>cYOe86o}(ZKoCEX>@D=CY1&=`ucmke+=b#qUfq!Q?DLy=utrX>q0JS)N4nBZR z_&yd`gF!$K3lL7*@e z4*A!DA2@eEpfw=PchMjU&>R^8905+_ukCsv?Exf#1DFCPgGoRI$N^=5V)EDcoscR3 zx*w!~I6zT3R6=H(=r0N76$7Gxt|I~H{Ep0b@=0q?I*;shO*%&gv^bN+u{=-&q|>>S zuNzPTT><&%0_*|1UfuD%Cm06$05zZrT70*c_Qp9HKphMPX22AffFWQopml>0Fa!ob zALxNWKo`*3VF1tp{Q<2Vv_W5>1vCNGjml#OY{5h@0oVY#XU2iCU<|MZqk$C|1xA7q zz!F#hb1)oC1!{om{Lj>t9fM%xq46gW1c2GVANT=Z-~+q?7kB|r-~rr$8<+)L!Avj% z(0DZsxB$8jodB)BXdM;~TGnv1c4L?0e{xKHJs<1^)UP*zjUWNc2lGHIhyih60ayqY zfq0M!Hh@&H5-bLZU^!R0lKgjq;O5dFVSGrvb{l8mt9tKn7S3 zazPH*1GWLuwt{T18DxPiU>Dd4wu2pDH^>9uz*q1Yyao;64X6h%Kpm(B)YqPa$KW2I zYf+r;f+|oBZiAcP1}Fn1-~u=gioiK=2Al?k;5ax24ghMi!$^;UBj6Ay00#lt={uz- zz$tJNoCW0X61WI1gJN(6Tm_}z8n_N_fl5#TsH}8+2auh30Pcfo@DMx#PXX2A38(?j zz$@?)P^_qYEis{3Q2m<#)%62-2dIv3!F$jMK7vo+3!prte+T;ktzYTclAaxx05#ZX z&G`#y2w03`T368eA`*lFT5It@FmMD8U<#NFCILHO3tFD}e!>s=8w=YQK>3&!PNY?{~;1s?O zMrsVqff=BC+63uvK+g@-@5oLzQzjjTl%Bik-lu$&hp@ykJ(rIL9r1k>QY+?|`U$Ni zCjxsw?M_hJQ%Zdz2+RW1XSl!%cmj7Y4Y&d~;0&gMmbPp0Np}JN zC?8$BMW-^iJYP}STk1gm=p6dql9K^v($6WjRDbHP@gN5LS*}H}#esQX0f+@H^_b7tTfWmd z?Bj*3?=3#qI@N{h-Eu#*Xtu0;?6|btC&|#4fu$e`(3mWZR1GQFSArE_IY&1Xfc3xz(7jJ7*(nC}q4uCQqjsfsAzy!vQ`D{$Lu%vp#wyBBd8s_? zKGb}b=JA2zP36x9Ep{r;7O;!4Z)0gYal9Su0F;mF+>&oRjwwd@U@yo66a&(GAO;6; zyr20_wgMbG!hQznX;27Gfs^0_I1Y}1qu>ZQ3=RRxOXr^h7eEm>4=#dBfL)g>_}&s{ zTC?58_nY84bKW(iS3wD&d4u{(DbgE&=Atri3)BPZD^y-|!_KXgX=4*44Z)r;Cv3byY^sV*|$8<2pF9xQ1;o%+EW z@EZJ?m-4jqleajg7*d;eK)xm%3nQg#k$)i^|3vx~&^4%DbdBFgKZEyx@-%{E@DY3f zp8)0g0?2<$8OTQ0`h~RR8sxvl_YanRB#uWh-&@Y5>$B~Ym+B*mGKnD-M@sF{(iUR) zPVuFfy zKyxX6|MtPLH}C><4wr%Kblz;>&!hoJ!vK|c0n+&(0Yrds5CmHEU>wf@A%F)$K|E;D z<8a*KBNE4yHyT8Nc_0SN1@!Dk&#QDC3+ADoEk0V(MX)afR4!sUj+4L=Kx5f5q)S0E zpxCSc>@kdDkqTQ&dr;fb*iG}STLA=o)C@ZCQ^{e|4F=B)H^FbK2LIRlbp6)fR>|Wm zX>@s0Q=KEjb2QV`#N0zdc!S(S{L~nwVD+J?+^+RA7$uVHF&v5<@^l_LN@$(OtsZJ( zy0FN=;)1j@(!s@zk2ppXyQ+!V!XgC=mlxm{6oz@oAueX0?CviTLawH|`a^W}IKJV$ z+0i&lsljvT(1s&Bn-$$5&3ikPw<%3Cx@_;KQ&9Acbq$dxB$OK#=En`KcGa7FQ0I7x zgpi@Gk*)!}%mLkzXRYN^oua*=^N~kScd)L$9w#h3)FT+`)AA>>Kja+TpcufJVe_5} z#{0OAy(}|t3qooS>&0#wd82}>~X=Z$}}hn zPZ^Or@^A&!0{CQr%fv9cn!nz}?Dt(L1I`=&C`}QnU^aH&ql`!<4B2 zDcyT=eN+`3HvV|gnx_Z~)o0GC^PyS;e4<;g(|#-P{Cxa^yn{IlTr4`2X1q(~*N5Ln zcVl3oQj3`{<)(>h%Log>%)jT_@1yOvX&}n>f5xq)S8c<Z3-~ru+hMwja7s zaky&bSbo{`skK9c0|LTBu!0J>KUQYPh*eN9Wl_^{c^=_@0bU&0-or;lihn!`1veID z3JKnQWq&DHY7b15t`4;W&vDez-Pm- zTQ5pFcX-!&*Yn()mC1D@m&vX2jbbTb(E;JeWs&7>C~cm2wp9t^hVr!?f0(U zLL>M+(TI8?FWkpH6b_G4B!p-B25hHP-u)- zT00>6!QP**TD=9i2L=0iVLr7}?W0jtnT!}<)}{$)Bl6H_$y+-1*P$JKVxiF7h`zIv z@upL;E%fH>gEROF1{gf|B7;2gJbZX&Q?5awsR%|f6u=m}6^!C{eAsRyvB26^=bo?Ht)MjKbF1=`Q3g-Ac4SN1p}DP!3~mGklt6FfhFM3&WQ1E4 z4My3zXTE=fgyyYQ#h6i&MDl!R$(cp9Dq|T%Le5<0n9%BLt;%#Linva(xP6B8i@>5* zC74mVefy?AxnwZ6Rf%VmB2L2?t(U@iIR)?a(?T&t4HDE;NN4TX}QZfRA{ zFp5XlA01^>6`NX>+l-Pv^mT9llnqI(N*$vVH^r&OZg)&?RlY-^86&H^-ig~UJ*TxQ zvglG>p-eWvq0^(M+^$wdi%~i&S-s54kGR~b3}cjBYrmPH7JWCiDw7!{z-{aA%2mfl zv?{((lyIG!TV#7)(0*yxs{D0SMxWLljJvR%`xK+{5Oe}%c(V|nlSv$_;U5uTy?2?GC$&zcB|6% z7*EeE?TzuK?aUao>};o388+{o;znVu6ZfDYsa^d2!u)7nSh}&&Nn~m#jPd5fn+Mm8>-Oi8_D6DFyR%IDb4i=?k3OElIAOdfst%{qIK_1%OqD{YQde5K9NpRcqzR`HcKM`ga! z=A6Y>+8nR>N}IC`UuknpmvgHs?mZqJVBs^MZlgys0%OCVRBzX>LzCPw&bMD=T^|S}KAkJ^p3{=K>UZo=eu+u(@o@i>y}VHWXPX@-HXv86BJ9+^Rf< zA_qlf+*Bp5@a?o#r4b6Pcib#EL%Wwf#N60&9Wkxubx87Dk#*(PhCN#qUG3(T!;h}Q zj=McB1huZkMna)h$XeyN*E8_0bF1RSD4uoErIOj1tULjXayxRf&D5f>kF9wYLZS9~ z#l2@g`=b(8gZ=5Y#U}#_&5inR^{)*$cW_awvL6b~fFkz-qAoq#9MGyB5%tWZ&5w`Zqy{X zet<$x)tG+*{CHuZ7-{Q5CI(2GkICleF`)HzI`T-O1oeRzGM(!tU4??H&^kWE&npc7 z{F75MGI{3Z=?U|p(4HMiunBo+HgoNCI;!-+3p`OmF{F|F&oLf~0qyf)7dX`2lgq=K zN5wm0C(hTY@}C#@&)aKtnq%PT_WJj?RQDz*bTc4N=K;-S8~*X^ff89`UnqELBxMQ| z+D8&`HgG5v%ee@Jc|P3%g(BL2(AXberYj-_$isgU5B2uqKZc%ldztxIOX?RC{pMEa zF|avL$KR_qyM@&VL7^vP13iu=qd4Av-DhsFtP2$EzEKQxp-|jbx`t+b9^-Bb1@$Dw z1WG3;ufw$GnkH*bghCO8Vg;o$lwC{TaJAgE$3S69eVg$%VwS}ik=)F;jDkE57;irV zg!YGMSlxrd)Tf_rb1S^|n&$Xm*jXzm`qT`193v=LK*c%i+kA6??Bf@tG?!p36e@L3 zjhfzPJ8B%~d*hdS1*1$8+IZjk^X3pJw5f_%ZywZq9os=gTa`=BD>4eomIH-W-g&|L zhXNWrv!F0FT?Lh5VCJ2}OYiII&%X{o2AiNz2{?;R?=H3ur9D+<52cM5P;2A-_DkJ< z`?OhV{xZ<4$q5tuY7=;)eMJayd?BxwBH_ zgfd#=CWO0-?zz*G{mu*jx=lNP7(pmHaZt!x;_{Qdg3r{^lQ>fXdEEJwr)k}W9N#S? zIznOkK^xbh)`m9&BW6Uhwcb^~vc?E`(4|Nj3WZuu`~AbWJf(NEAHs|~qoL4s?B@rZ zsyY?~Tq5EgY z+N{^2YHlO=3O`Rc6a^?Dj%ChuPN55+Fr}v5$$_)E(YJVKepO5!MloReXr!;7r!U6Q zYk@01Z?pSg4TaekYa=ojecInX<3-%P9CQW+axL1D@^5W9`^bih01n42#w^PaDu zba>Mbh34Rzr2An9Y)d5g3e6cDFDQyo9;z$LOAeP7hJyQ-UKT__p;#-6IrZtT9kIGu zp}-|Tk%hvY|1vVvrDhitjN^2j)ljIlyNbH>wCx#xMOX+ghWPI>vY^OA;Z2zB=r(Fm zBHtT-F4+%-VlZuq`drh)O*AT_1cUL!T?mEhW2SH8ptA50^$_ZbxDW0_p;9;A>)mC` zo~IW4Jp8%wuTSs%Jc#pKrUb<=jq<|xKYWcm)Zg@tIqv=uh&0}#+pU(itR7E21fwz@ zGibN|YIiLA?__5~luy#Nf*{L+zzw4|6y%|MJ8SXDQM-Ri?}S1l1+GJX1|k%t zel_{hl{?&>G{ze@*VL8CGe}0lLv>XF^=q^a?Zf)<2Kod9dvGEXylZvs!i}LYaq~kS zT31a~8GBRpeF6GgOAlEAg(4dC)%43m|H<9?c?MGnHb9}dURC&s>!gMTnzN{;P_{v# z7<7?6aB}X-pmlt2xDtNp1cmywTEzJMp^D?rLeaw;HH=k%eG>1_?@RbK29u}Y%7V0! zK6#paZ~VE0zfbPRT@L}R$588 zBC7cf6bj9`Z{Dm(ZmPMLApX>lUuypPt(|^=xQSaf_qVB&uG+fG9=eP?%*-UuC}Uz3 zws^Sm$10}pgbc(VEO8IxR`nhxo*2DkG4e3I7YfGMFwUo$_RD|rO8P^gc>z5{d_?ng z2JJFGTbt-XBRRDkddNB`RG-WJX2nI;c;k&)OCQBF!XI9Kz0hd<9M*;2ff+TwU+@la z4-4aZac*WmD$hTnn!~>i-qd2vH?sLUf&F@US&ADAo zHD%^GchBHZ>Iio~uk<>R{fzn!c2KDMoM`yzw&N>botYptdNaW z^G;?BQu5|rq<(SCI%RraLhrW`gEq^?AFJ9|+E^noE0mq1oBPh_^PZlieLsfcI?T$> z*PS;IvGYl<_C3+r`F;t%1pHnVWZgWMc+BZD+)_%$1Pb+d1g;PYwa-oGoEzgBH$TTS z2EAXv=n@|4H_)GlUkr7QyEH>*8TA7^)l+M?GbX~D!IWg>k*Sa z@Erd-n4R_i!R*}rcA?=Ukitwg@R1O?s80x9b#aAd8Y-q1J-h^k=^^?Pnq!@-?!5I|;%|DpOsfsFoH-PlOJ0BRcrZ&r zf>yW87;+5?-3#@d)Rd(bY0?}_H!AY1oY=g(VpF}a_i*vA;<5vn#e;tKOffLE4r5B`CfzC zhu@|npkPZeZg|(H%e!^amW4vwA-K0)q0k=J?g5LIO=;||#VCk14~jAru`uUV69-g0 zZuPbtN>?b?wMP|Pzsu{#SNP+>Rw#;4V&>g1^HIE<)0*c9ljr;G+oOla>_5?}T!TWT z_Ivs^u1~{BPOI_)3Oxsp5fAL|VWxVMQ7}9IhSCj6x9P&?s(&^5L%|P~s8@LgG;fqo zc{u&)^apWLP^hM;kCJ_J`&{6>obn;XM@IvDsz%0`1UbE-P^>+VWTjgO4HM>j7OaL z)S+PILapEch3>{VqR}?)?<=#&8}1UU5B}^2vOX_fb#rx|BXK){loX@ zeHd@u_bhmnUw4=TZ#0Ub@3g;K*F_%cJIg}-3ulghNuwn*zL`Ry){YgMnK^v<4tkPc zlrfB=7hJY}mC`&Kd+|#@n&=!E#U;1*tImlLr=Va(PSNp%A`5Rl4CPHUZ}iy&g?TFA zL7~25_x1eYQz9N4pirq1gT+wj{<)AJIZ|H8Du(ZkzmCVREVw-E+D#dI_k+lMV_I=B zW&6mKV5?!J?dBa{hd`m82ycJggGBGenAA@D@W=Q+`wqQ@qemlCyw4gKgsGmB;5^t{ zuJ|F|TA2@TzO&jXwfLDYf4s-IZ z6)k7#gNTN5+vvUgHTj>V=3j?jpC9l>ZMw}rB0T!n^q%mB>r?lYbZEX#{C;j(e^Wc! z0c7rAMJTkl{^RVBuUEN~yjn|uRa$Ul5cc6Lk~=OP|M&*q8$Z^zj?FV|=K2zqIf2Kd z_<8s(7vkp~O?SPaO>NVW_RQ;j^-tCGD| zA2@aI%A?j2yk?X$12XRob?i2tUjnpuoA(0qi_buAs1FxCrE#bHM&UH?RDK?Q+1kGw z+j(L^slDBKVRKN^h$rK3>)EEzY7hez)pW0ObB{0WG_icz;kW&of4PW9K#r(O^BBKG zykFMDZ3lPp^XSv_!e47jiyF$4iaa!44^L|E{o<8_W1_1ZW81{B_*nmkmlg@6l1}JMbol7L&>b(l9C3;Q>Z{;h9p zTJB)}#s=ES+bN|%#l?0swGU;|*XssvRO-3+Rb{Vv4vglv98G4Nz`4kP&#lSjiSM1m zNAc^!Umt|{h2n{p$63%&A3bb**UeCv_UQ+2itzSol4p#4vNqn!@Sj}KciusvF@8r= zl-CsLOP%@G;Ya5?6xx}aytFdEm-BeZR&NqBoAZc%_Imc}=~BJcJotrk5cR4LAM;-B zo^>uoSZET?rPXHp*9r6s@(aQ5*?3~9^E}s?VK0FHq=%Nva&3;=SrtvOle63&Lt%PV z8*616V9|SbArI9jQFcZ^K!VUle%bVCk#rD>EEHvV`2dIBGUbdn^n)TOwC2m{RQc=o zs0v!))A$CZoqawiZSGR@=hMH|r(jm|Q(-AmT35ZhFfU|d)wSDn9o$&BP#b$F)JM@1 z+uuX!fERkyK3O?w^eh@cVC{)wk(Z7NXv%BMWPt@9U1GVuUgSqDlm^@#; z#rPIEuihanv=J7XVcUGe!7tk#oIx{&m&^I0ESYRkVWIP|(2Bc_cP!YApoo6M8B}V0 z$@lgBtrbOtg=%4;zS-tp0KXO5C^hp8*hbkfw$OFjcsE7+JBVmId7!lMc8uBUY~zg$ zv!-aH)XY1*HcH)o3HW=_ZI+Eu+9;bTx(-@f+^e}2TrLfs{A&DH+SzXIRGjYEX{FYv z`Bj>)ZPa-kzhCpmw>E#7jhO0j^pHmxd7|GRzH{H=RP#uIm8ubE9Te&hZsRSQ6@j#IeWFozNyVMrIq)e&oWrmFwZi7RV@AZe=jBO&!-$&p%&$@d2*0P z2POFP2@EAbJgHah@o#>^@lDJ3)10~1SYOj)34+5p2}J>U-4o8+>%pt26eWi*?;Wr%T8KYF~QGHryl>4nY50);RZ&0Xx{-5Tq1WvA^=ubFA z!jXhCge!m?B9mixvq>%$0dFyV(#R9Dx`VHC!PO2yzn@LBf5C zNCZ)gClCUNativPC?Lo8uj+o?{ocISJ-hM~gYI;{?y9ctuCA``uCBgvl<_&qLy54#3 zc04OmsCA;d5!yB)x*MTW8vExbz&{4~8~Zd!Ik6yYJw~ng*=J5&dBlg!P>@_sGS$g2 z$$XI9*2(>oT%SFQ!VdD;`ZfD}ymG=h&D8XNxvi5&NpdfIvh|6VJG6XHmST;3Aa>ct zTVRs;Ai1WE!psrRUh&6gPA4l6C|sm+HBt@x_;$Kc+o&G| zDPIS+5#W%U4%_xuS1ej}FJt3cckF1AkLg$-vbk};{Ie7$j4FkST?$f6ML)zd&>kRqn3-zu)=yE=N%`Ulh4yucF z_bUsxK5@v&yKJth9*jgvZntFJKekMWzE=PSx?u=cy?=L1E{Y_&n zlPqCB{azT%_(^WJWNe@8eER8AkSs@&x%Z&iV)yXA^xyYtU-}3*o;GB#5p3BHNv>(K z6#MkK%F+h^rFkxSf9E>%0*%ufR%AOK+4vVX>6!Lnq|hy&b6y@k`r`FQzHGZh)FTG3sxhD{p>ja6X5szJioZkuv{<)6Y0%t6OQ` zU*2%}Z;kB(`o-ShPc9$#=(}fqc4wx5z0#bF6k4@Co9jGa{U3L1$0>XkT7#dTPW01$ zS3P(0celLvT~6UG%^F~6mYI0}dUxKt&0&ur1r`f*etHg4s12r`d)Ufb7ax2ar?53c za!ng`if;i+JFu*clP+3;ef^fU;rq0G{!)nz8h$Kotosk9oc|WK9ZnTH+uL2X`i0r| zZvGnAXV6q9^c=QzKbiX618Q;IZeB9BWNDc!VUx#Ca?gFT^IUQ{jhq;0x5@QM#`eil zT|G^lmy{R(a@gq$4yLgHD+d~M=gXAVMcFwIFI{#TPRsFy&e$%+FOA0iADVvYshfX+ zES1PscOp(6kV19=r?rgP{>PiHP4-pT_NOC(SWg^$BoJ$dLWh?PR#a?L!jhtqw);;P zv^|brI`wFxZ|Y+G6X&FwqtrKIG^##Q2Q%DV-*XgFx68 z)%xLuX!1X68*b2l;di(kK6AZcp4dOQ{~Q0wY>5;) zHyhXAd(Hm0%v`Qhc0vm6Q#|z8#n1G9@1upg4WZ*kbZKe=QfU5J{OVhu@15|)c^c*b zq)>}4c=QL)Jb3trC8S`Zgc@!-QmB89d*iJ6w-3K{1yaaH6D?Xr%21>{{+Z9;f6%xy z|3NS`rB7mSuf%VGXDg(@Vh%^#6QeCkFfN6R=EC1BSanS2;ddj2%sJ3-E0IDyH~Qm| z>-^>7f1ZOBdG`Jrq|kW%=AHY0EqmUU>*KH72L2XFcH1xSG)hf>jc2vSJG zUUA#`-x$B)x+CE6aP-`{qp^}W1u0}pu=JR}{{8=6ee|)-Fq;XRg~o9jXsQoNY#ZME z)Khz|b43rzK_N70)l1b(A6jr z4q+Icvy$67I%E82R7dUop$V}J!_AY(OiMCxG|z$AGOXY|SgHT|+CPmy>P=XMvAl*N z^4$fZ4L&zw?G?LUR+`N9;aPJzQfLMo_Wb29jlbZOK7yf%p|xRVVi?kqTEBsoAw49x zD?$=>G^sq}V(-}SEJOB|Rd04`{!b2l;h%4Az8hm>wyOEra;YmjbH>4`?97V}`y*0_ zL%@kqU$1)nG*W;WoqLXYje2|ji7QVz^WdScQ+-HzX>Y(be8@Qq#pqaxU#icV2}ksw zG-~M-N!$3=)GDOV47lITAK$ditzV|wg2oExLl^(e))sHU;XkmOLWQ#q-+bAy;eQ{$Q37C->*|vA%$A!iDNE#a@B9n zI$8Hma=ZQhTcUqX{Y&?g3pRNJ>mOF0Abhv}wn(|=iN*a_%~+L(w$6IuxCZT(tdh|U zxDpbh;p6^7JCw2LEiA{X05)qasaT1GVkX3B8-MtY(D@rBd64otauA0+e&}bfcy*_< z_NBE9SQIj`QH};MQ5|XckRT=YMm(?drY#cf)-m+s!{_Ys>t8a*lZuquA1TDw2V7VB z!5_B&4CI^e{0tA}NTE?b{L1+kK7Qt^jR4a^;>Fem(*Z-e*5$9DNb zVPEy~;d9nL+4_SV(811q5ra<@jc>f37+y4eE_38Ux zT6yTKZO)?|K=L%yf?Eogh?VPuXDt5U#l5~pD{*NvExkZEaJCQP!7r7^VVIo+p}MM7Pf}LJ)^v& z?d@6HeK7a7Q3L}D=z3vI(pFn`)pxI4w)D?BC5}fY^L4zq-WF9&?$e*ha+c0Mwd=Uk z<{qlciLStqf`Kp*_sx>qAX&PsvslQ)OD7!i!pcb-u@yXxtVyY43WfuQ>_<=AWJ=2& zcNS=uTIxu}2xOCzfdmJ?uR=m5@)Q5kKFhR=2 zmkFKk=GW%=lb#>@h=%#>L4xYgEnv`Ky#>5PaAMDdldm7U$D0>}HhFjKTBHyk{9yIH zf7!v`gYMkXZ3tj%oVTYks?P{rQDS-K(m|o=bvuaJ?+>Rks|jT;(cP$h3CdQk*#9eC6&Wn6*#i-r!Kl+ zpAYwX02a9@hb?aMrCIfS)vNw`;i;#OJpKvN6XC<3^quRj5Pf=l^@ELXzh>M^Na5=; z<72#{1@m0O{VePs+zV_Z#s2h{dqzDp`omwXHRK2QLNe-6{8Ini{@!-ae0$!NcQFO* z-S{b_khZbKrY|47+kykAx1raO3Yjc>leP8L65IJ-U+=hYWlDbsHaW6hm6QzId%tIg zO?`8cD2J5gSp9%$OTL@*4zLXe)o;u=_1yLMY`-d?dVFf#rD8sPZ^0$^{o}Q}>29B# zOSVADCIs{9k|jrtedJ(GTXg+{6p|F+-sCk?bUmlb*$w6FjB?uF+5XPyT^|r_l7jeN zAe}3|7id#xFuf4pq9~^|xjxZ0&@0!Yt`sMpJ3o5;QM+zEV;$57976g*vgVMmV!=3_ z;g?GjFi!WZc21uVMz;_LW!qd^zXZ+3Jnu-gQ^5y6O&1L4T$|ZWmK;U;4w}jhef| z+eo321-&Y{MSpv>n4PCT{kJiPE*tfAjV+nqq9aSM>*G0uxHp-CSnd^^7~>0sri^i^ z_;T7YVM4z6m!$l`0_sW*=N%CtBBbR=mtvaJV0Tf*&64Bey~RTC_2 z5KjU1LVW8`O8oetl!4RMmPngz)W^zEUb)7s3gkXg{7rT8KzGG;VrF{gj+x)zvj6n! z(LYjui`5fZds-5w4YK~0tPRH8{RfK@P_n+0th*%7Kgn~+nNW>MQ#I}f%QgCCHwX=7 z#8!`9I`XMWzvHpZ^{G|c+A%Gp_UwA`50|YtXK$pCG6;$EJYY!H|KgS%zj)bKZzT<- zjTbDbzaWJq(zUyA`Y@iox`gs?H|A zNq9GMk4@KIIBv>PV1wH}G@C^qEtGQ^zXu*&|JXZq>EuJ{_5il>pmk2}%6Hen3plJE zz0ET#)~9)nMkBD*daC7mcTcMQf{mY>|L3j6>I0f0%DG9j+ZGoczoCC#?dKY%AXEOf z{l6H5{YWa(HJ`vct0SRMnA!)%W?+nv4Cdu zIFALqla=7H02F+J9t%K0vR{H2pNn#otk)sh+VFuVQ(`>b$&^hbjNu(m!$f`H$#qF3 zU4w5)c%eS_3tL{l;-oHch)hYoUmtUipX3f|8gq|dO1{Qh^w1!Ar#|_%e$3r}Nn4Em zM)%>tJjvxG-^owDdEZ$;)8OBuyC3r8FQ5MWd1xIu>XX;#ec3*E&F)D(e%wwQY?WP? z_JoKuw9a5;)q%GOK3HqcMt3aSad=%*@KvPHsK55;Yj3{niLYh3=a{cgK?+$jEIyr$V^SUziLe0PVvQ@)&dEiHf%W_Ea z6(B{>Zd+bgD|%C&qP+lWgBFbKdRG^%avnW!pKt6o=izT5Wda|)r}Cv9ubQvJm-ss;>Jx7Wv zdLhAU5K`7#A=-L}XU9(8b@~pkK*Gwsr~8nyKCm5o@94V{&M!a*^c?-#MM6RZyr+pF| z>}swB4Au0I%^!Gcza3_*AQ-{&>)t8$`M$K?{qO(y#aoUg%WR&^QX`Q<8p_juJ>-Nx zf4Ij#X+DLT2-;%wMBz9oH4ZRD^{@k1p0d&Ehi+VJ$j3*UR39!VnYP%q4D(Jb)!XF}Ok1T|?uP#6KmOI}r`>eT#kAv0qY)$PI}+xdlYjJ+OHQcM`V`ANYPVXZ zn(jh7ytQ(_{MO5QRw9MwpLSU70fuVYzT=NScm6G@8;}CqCc@Sa_iEI1-+JSZH&2}R z*1subBKWE$Za-uqZ|JJzC*rI zfBg#cF8|3bM)e)_IRFk4!Y-kY6Dtpg6bK5C(F0V{afAn!Y`KoR9G`0 zAvNV;f$hR$ZWwaFbwln04D}q!nf+t2KidCd=Of2=?|2YWFp*%`4XQrfUM&qz%Bi8R zEW0S(@!%9-!%hG-bwba9xa6L@6tq!IZ@;s==bDjsF9$Z++sVD~5@1Lhxc=#X{`%F^ z&Y}GSlJO`9&tnub{>;=Pnd+=xu0M;$9LZkNEgumh_=j(;`TBY5ov<%bKr=DiOqp`m zTRX43@c%xWXBg%K@_U>wW>Sw_c=z`+d#yv*qp$ZKL{2``@?rooTcIwKZDw9HeZ5UYPjs`FC8h_lsl& zLVSRfWNfi1JOjqO9wK)Z`ZM)81<+r(^0~|FTior5{-N&P^)bOaqqoa#ap2h(UBGgb zTxMHrah3swW~P0ikb8b1}U#46W~zj^1I z?~gfT8N={sOrABLSt-g{a`>;_{@O1tAqh(|9<;^oXwqP``M+Kw#&+Y$_czcoBtuNg zIB~umt0%HZ9E_eAT@`2>z=2p%?JgKGRgv%9|FCs!{xWomU(Jrmm;4$IMaGD;nKAp$ z#xsJYOyQ_nHDBtUHhO&fXg@#4D|hWNdeZ1jfjo?Nq3ZMx7JdBt(7!jku6oh8H|xxo z#?rT8Yp$8{*0!_msliWd6(?vX{d)A7M|K_bZtKp1bIzGG;panUZ~PJL(F=We<6{34 zR_*fE7jE5k<>8`LFa4Vtbn?kZeW`cP-$OQ#tMb&(zdY@pfA4?7Lp8`GN?*C~whtaT{D|w% zL7aN|rP^8f;kg5!y#Vn|5x;Kc3Fmk1zt=Xum+Ada-txg&vtOC;BH|;EeroY|`@GQI zvO!eFy^VCjKkVcqw%l#;eyd)P{gC}=ZEnY*Q|gn@;HtgHN7}o?@5_$GD+He3lgX9) zGQD1h3XRQF@#St5Gc(O38En7pLpXRG;2jqINM+L+=Dzo%BK_WwZVr-E-(A?oO|i?V%j()VD+C#rxde?24DIrRhQt<*R1$rOt9+G1H9) zdQbrPGsw)(t^^SQ7Q~9s1iWextJX^;9rH_>ir-VN_4V|_s*H#UahFc><#T(?Ih(0fv2dyAG9 z3m`+~qX9#4-HsMaM$-Y_h^2YIf_lLM9n&3Wc$L zxn9j;mCZFhBpv|qS69YTAPr;zAwx`av&|=DB+)5ktP;qU60swl2L%13*?@@Z z1;4^xwU#fJ(rmzoxh6YP1TC0|EqgNsAd?}~*gb~%T_q&+p7u%VRD zL)&Su*y-hRUe3aPfh%)h3xXhq-ixqTRl4>Em<*-)<^n-g^4YRD$rs`}O>*B_olriY z48_s%G$I}3s4|Hn6=9BISZdc&rc}=7#$>Iuh)lpD0+1xw+NRP8gET$0w5QAgcp1W! zh+V%4grOry%;aaME0t_}oB9GxvpzeWsTLz&W*d3@da3NE%`aFnw6=u4;6V_441E%) z^O@Ebg&VsRoqjHqOP~tn%9L_dv{#6#;G0QB7v`8KI#nNoe(^1?-hS)kakCY5Wh{52 z_yl=q9|NDPYxrY8VEAi5V)&~ds8BAKx(&4AYc=m@dmFwM^A*3n%_~?KKvhHF2_V1_ z;SUC1G>=VErI5+^pm520D_k-@KwP1g1+GwhfVe_^2V9}}0CAbj0aRvmfS3%{10o|f zKs*Lp1CJ3KARfU+JY;~!hz$x44@ZTEV}ruOBTM1o*Z}baoCDDUJVtDQcml2wc#PN} z@t`iCC%}W)0P$$a3N$)0KrC8h1B;Ff5R2dzlJdZ!BLl>uCmCSTkpW^6O(A+og$Ia3 zO^F~xg$Ia3G=rc+g$IR0aEib&a6VB=0qUZ{1|2zUB#k8{q*^W%>J`hRAu<4s2tW~~ zMLBCAGD#-rzUv4l7^5$eVhYkok}*UuamFJ=voxgXM(-}wBXBycSoaH&M9notzc(96 zRNc_tmQKRULNq4T7^N|oje4fNOlRIwa3ay%4(S-=g6v>kPa>SS3u#n(Pghd;X)4{4 zg(v(>HQQrpp-Q>WtCFUQH53Z8FkLJa5pd0tqMDIpgHZ=sP^2!=f+ETPK|$2=x?Q8? zgj4^+VpIpmm7)^=gF*~0ixy!d4XOY!f;5+F{Lz#_p*IIN^@c_tO&JvW=m^*7qbY+z z9}zDadn92{$VCGv$)=G<68;0^qFcd%QRFINP{>8?F%h#|)VRan2ZdVHol(bdOYr?a zL><#0gc+X)g*cdlxlwg%ggy@nvBATvYD;Ax^m$N-P2E5fYx8_i0Gg$!RZ@L{ufw1ZZBoV z#wSr31ffupvqF1$el3^wO1%J+A?$*Y0g@exwk-j|`>?cE%BMianc#GBBq)yud6(NV z%?EpBp^Y@MK>`tKk3}woc!;Qv!P1()T1rp=O2B}66(-GF7S}uuxv~;SC^9H4!H5@V zI5t2$YAr-v7;GC35J%9AV%Qn6LE;H&6<``nz4XEt71NOcQe<+C#xodt)Vu;TDm*}H zjComM5!3g;I8fk`ikrd|C~||rm9RH7fKef6vhINn7@ORuR5g_GLA849PRM{M3OHNT zcJO=zNL4F@2UsIxMg$fkHb^`{tpZGgsh6HnL6VLPkRk~f5M)LNh$+xFPgK2H=;F-+RqL`?Q(5XGDadoDj6#Emf(%Fit=z62or$wgE;lv|M)`l<51JM3dn38=Gwm)iH+*7juoZ?8`UMPpHxYtq<$RGQDr#09eSw*-?WnV-fcx z$=1=sQExQ^OPZ=ztL43F&@`}G%#>jGs?g^%rCz@Qxk*7HicAg0ik)@XNp>L6o9QlF z@sO|ya5)a{gKQ>O&`nHUF%TZqFtFydTUQtvfy{`dad(9b@F4}W#aBPN0Di83eFo<%SfRXQ> zsyN4^0PJtbO*peAyl7wqdvq--ohkYGLYcg*kslG}(Glz&(N>Oq?8lJ~EODQ) zF(hq|EwmV|0yIV}jR{jqI19M$DrykbZ_Eq2L3koVZ>GEI1zc`GYqRxlx>AN9wqQ?y zKv4-Pnujb{xy1!Zz+}YG0dD&;J%RwNBf9e#A>HGJxjXT9wqC`2XrV_9P9Rj_G+#h> zFoSMzfa-{5M@y**EeJ#jDY{QBSapSgNJlg*?rGE@liaNm&IoMb55On~3k=?IGY390 z^EOs8a#34p7_f|c)WJ;zUrvCvjtFVFEPcvAkdnQxrD?($K}7fiH<4@NGkFUb%&4Xa z`?dLMxm1Kqw~%Ax0wyEImXaN%F#A7{h%mneY?a{Y88M~ z7*jq;H#;P4cxR|`^ov5*N25Nt~DnoSE>Gs>*vs=3ii05@XH`+T9m@9{dJ{$YAyrQFg8k(@vn`Jzb* z5?Cp00ww1&5DI0I+SOIVpg92?1ew!$jL_AobYD+C+cSo(e{|eJ6Xypy{uKk%F>3NY z#tR_$S2u#C3_XqjrXza9Szy&*pg0gg~Cz;h>8b zu~dV4DPQXkvWTmK4XMnzm5KyI#c6pf_6GE~suzR>d^H=yXZS%#?zYU#*E(2Ub;+B6 z9O>)9ErA>^2g)lNV($VM1H-9U$yEF0jUw_-n-+ICg{noIgZmCb_lD*r*6LXtG0AXm z-p@nxAi3ptk?t>V%fQ(^xtGQ%C$Oh+gxlkh%WKH|Dn8|l^(y|?1NVWV$XcconMGmP zSHaq$)>E$6aI2wQLR@$n9K)iGe0=d5xRk*r8fFT#I$rO}|G z9}wy0aZN0sbcA7DgIL!cusQ;D!mYon)&i&sGbAsWEiJ_ilc#GsG6Y&lfw3zgk`AYn$T_7|bZdJgx8Sz17qp2jZsk zF~u(R784-J8{m{7o{m_x#RqS8jZ!VGrZWi?5&~mZ?q=CwwR9t39czlS$?HLtH3bf^ z>gZ};L$snqBZl>}yLY7@N5Rn>VQ!kpp6*U z!!?=%-K`Eq+K_KvG7Ou)H z#2UGP!HBWC>LfR;a}e3#FWi^TC9NM^CzsxRcy4w>fibG2QF=ayAerPHR=S!EpBeD@ zVX3*!#3%xYrWT9jYse!hAp*3mC|8&nc#b174_b*|2&5D^3` zYA)?FGlQfZ{?h(5oh=5^POP190we}M%c5AN#?n{GKqxagkyR5H9|>Bpm?>ryk-!@F z8FQC=xdAtE5H-Lc0^kQXOyHg#P(cv1)6Sz^iELb>Mkr^ua<1h@-0By2cop1Kl_Llu zi))~Yd}&Hu4K3e+gEyg|+mjD|w2De5k4zTU3FQMC%1$~6?R7XBH)d17XqF~=M@Zek z00dhS0N48yphBLW+Q^qUh-`y;_x4k;AHu9S!#B2OnkY>aTBY6dAPA*F%0p>K0vkPF zo@Me_p`9M=W7srdu@N20jS^zMvWCL_L-Qf1CyNF9R+P*Hd@_WA=iV`cy#zZU16UB$ zGSkvfW*Y$3jDmJK8H$Y^>Er{gRW9_xbu0`vEQrl)Kx{^vnpr|+0zoLQ$6XdK=deqK z9!%b^QF(wyg}G;3B9&HKnF7f`8A`K?;sOg;7L%UZ{G+mss4;Sb+~v+0`dz?0v)kjPH zCF&*=T(V$dMPE)Y{1BuWCKqg(daVq7yDJYTH-=-nj%p?cL(qC2Es;UDWPJ7^SIuB2 zGMWZg9~Bs0meP=ktEn!b2U4tq?sx(y}4J86S zcr=>5*adBcO5^x1h>_7A?A@^aWt+=la)ae!zVbllo&0H2`80@@8t^npjf4&BPC78R zi&Fz>qzK}U@r;`lFB;*we6GJ-FM63$;Ft$8UJOgx&&K9W5w0s?%txCaK^7r1gIEbG zKQGq-u~g2Eg~1@aSQV=EAhl4=)6|B&zi76DeSnEAS-9ZMR$V|5m0<^!G( z9O@yL{g!%YMgX{uG}nG)(TtX(132Yi(^6I(BNBYsuaSs1`4i*NJp{s{6PUsunvx8L zBnAQ_))aI=I~yZkZmhgvh^k*gFmQZQ|1tB^+Whdp%~pE+(pFTsF4KmZ9L z9sZhrg7E|~9Z*+b34-Y!jyo~Lpdu9NMfh{~)3BWJs$Fzc&Q=mu{WLB+%8&a@%U^oH z!OlOGJl04sa-n&PLoBRaW);Ob04UBu=h3DiN#mzyb(Iu~^@b0ZJM& zz|xRLE~<=%!4QzFJZbY^Fr;KiMV=}Oi&~{B02K9h6VkqCuouLW?J`_iDx=*|t zxB^%jzJV5cwiAubp0+%{NTbQ&fR?5UAmdqsP3Kvf&cL-TthF;US9-pxcTVsDM=o zlOdi+;d3@V_17nESX?^Kj8z`sS7C8m!8HWQa;Ade0>~hU110y=t}JdOAd5P-(05Il z5#t)bN51gH>*^fEMSxdfbVslul=m~4tWVnqc($N2vm06=FDU5IG7BF?vjV#UBbnyj zsO>OI1~^l|HUO;o!LoQyVJau?*mQ`egUnB9_}~q)iOVz{;te0M|I9~nGK;z!(IJj! zRh)2Gs;TmUKow?_VHY!N8UU&zY~$hTGp3yP9RaH&P$g-$uum0c1IdzM+9)p0(E7y1 z=g=wQZrT77DiVU^ z;~y7a7K%fjG##*IoS!tH7Dh@m<%riWXLQ+C!Fd_ISYMI?y(Q9w!eWS z@&)p7g1j+39UDqG#^70c{6z6HN&HN96`>GgSthkZcxl0|1YJ1l>bHQK*?`52qD`f3 zjd;qDX`wIUaL8CI&%}bsf>`ANRuyJl+%@b)6XEbc)e7M>&a9>Eq{A+HW5BkiXB-M% z!&(SdXaT0eB&Xy8$O3Add;r*p0h|u5Fb#3<#`dl3VyaylzCn|ZB+auH6k|rIoC%U0 zsU*m2Sr(xcK|UgDy0C1)pN&H32b}KK_>&HZ7)Sis5r`(O&^|{eoJRqzV3S&z&!>3& z3)6_msaZa!QPAUlkS%z-Dw3&Eu2dRN(8!c3({K!jlb9N|3mQ<+9yrd%8owu$N!Ju; zh~gO0j{@PG5*H>4{pp@Oo|7m=ld*8Y!qn$G5`|2EBjt74kOZCNX;9vzz@pgXL4zw4 zPpE*46QlIR7pM9tKAF3WWkD=DRG*%4qUN!T2^VOX1_P%qeE`@S+FhYiK^OGm&1pn#e(46I0KOd3=j)fiET)t9CgQ3=vp%}bWbDyfU2RhT5O+uk_Z$bO+r z_C|sjif~&DRM?n9RADne4iKwqNgz|<0pbuHbtA8 zcn^YzZfJR3T{xPy^s*CHmD_-o32>fo6{A#%8OOjx z6A&=bT#Fg8qYH=Da3KmeB7rdpl%OaQtTf7f(T~(>II?e;py)fjrfKGHx}&mUG(njq zRbZf95EQMd8+;fvHmYC<8+{lQHf}?Oierq&DJx=oNFgGXmHJW)7c(zXY@;KR6$n}T z#bQHjeTO)Mj^#ri*jTDr^qd(5@Gr?(TzYh9Vo;U^vKGB3~xtE4rS2d%{45sL>gZLBCAHZ(h|*F#m*yH zGr{+T^_VXvx1ubB10=SK?Wq`$bSGvV-Y62D2z@$M^=jo3F&o()2kRh;lNDn&Qw?tx zB`@-uUeX!3Q3WH$e8t*L&VxI%8lNF!4Pxmre#0JE_!m{D-Dmr}5=ITs@Q0?xO0>0P zHOvMC9%=Gop+2@NfGqYqYA4SL$RS4wceibZk}40-sW6CgA5|oD9|wiiwBJ@(&5s%@ZE%}b z;gNH`@B?QD~IiL`Nsx=ptKQa&XC! zz}Yu*pW@3xF`mP%PsOykSt_M9^W1#SBpf11z}8Xu2KUIQWV?< z-@(u_H;i=41cMM`CIgp{&K<0{{GblE&NRHXB*)RS-;-&X(B2_4kT}THgawxE1UWW8 z%3;&3Di`2VQj2AJk^z6wOmuC?K3Ei`fKg#;U{c2Hp!HHU(+4pAZOX_f=n`fvB9d54 zx0;1FVq_}dm3*b?PtH6xBq1>kc#_r_XKuAd01^ZXdWI3Vl!{oi=kfXuZf1I=OvOEa zhVlVpC@y>sy5@0JCcsq~edex57Bf?x)dmir9t36Y=9u{o<;HyFj$}DV%Mvj|W@kF? zJn{^joe7Kq0IM=CaY~lBRgY{1WQbVSS(T(I9cZGnJg6XVBxsuHZM>Z^f&aGK*b6EM z`#JzR5;|zziDTNtSu-WEX4N4wK^WrvJOD_`_crieO~W^S?nHlu9IDSwBO||Os}ShV z{1&bHjweF!IvHi>M`+b|k)Lsg5eWc((<~Vxt_*=I0fx$uPt+0#JzfFlPBtwwT47+< zID+<7mC#8>n>W)_FuSDo(XJUHxA|?L6l(Dh!AA5A zq*qw%Fb)o}&~(iN(ylJ3qtW9ua_ytsTOdRM?#B|2}he) z4hr;rRw*L#gciJ*C$Nfe%`fJ%76h14Omon0o7^(!qw5HG=V}rFoR^5?+A~US6Z-)s zeNl38ggaTh+hS?$xTP=<@hmUaI&>kywepHzW&@8v0TV%~qL|Nx3Ny(DP{)CFbU`on zb$CaItRI=u!W`-2jQ5V&Hy%#pYPEj$3V|D^Vg*C)iE%XtcVlG-=GNYKD>E?7EkIBH_ z15SUicY~uxdY1>K&Hvpvo?5F!~GK}SRrqo%- zYhWHbo{WCRE-ws`;l&YKI~LMyU?4=5Vxr@r*QCr=2qc*%PWg$qO-y}8!BC+h(*SEA zfXuQqDlX2c@CmJn8ysl(SBSV)1~ofGI(~7JD6oiaEQM6=YSCE~PGRhmm>Q~pR$-ht zxP>RX$_Etx^6r95k1-?;m8Rtn^f>Yg07{v3zSYZ@e_gVI+`v#Cpi}vqx|X8LVNiJ4 z5m$-TRK>3SL@s))fh-7O(veoxxT^^J zlT3f!cQ{lCasi701Kmm5tXf!4Pay!-5wyF!{4@qGO(6EgG-RJcgRM)PJ^>m2>Y0in z{Bp!}dLMBd^+0CKIKN!4iu-p;{esn`&^UR3ReZ0WgTq{$t_I)5c#xUYws%mp*h9v< zYM2YjLoJ>aRYk~|G_;S8>mqbckDFw?M{S*Znt?~Xt@w3|So$QWObC-GU7R>XOEJ@$ zE5T@EAmg?cI7e0369cQ;C?>J7b0`zs)?o3G2~(|?B;wVSrh6<3s0oUu46xr6q1=5cX4J_-qw;V7 zU=?O2cgfa%80eAcqUo7KJg+enEeU+D2nk`AXd(|VhyYKeu42QzAzch>9s)ASKMhHu zL3rYgMI!vmHP2)r_r|oz5-wPx8&GEkqX)=>U~}ClE2IQA5U8+$VGKX)#Y07^P4*6w zXoYM7P7yE=Qcurt_%-Bo0P}BC%8x7-PsXxnq1KSW=30{uWFnquv1{i(n~D`$C|wCK zRyy3OTXb#&ipB|()p!@K5Tj}y^F#vQBCdbmk-2U<602AT z+e0zNBdX+}uF4Pa=IDJrOA|zLg22cZEp})xub1tJE%<6ha#M%DXcjaKSFsES5XFk! zt)j{UXcgvGa>)x#7C?0b<+DjIm>!0+H2hlNJgwEwbYYe4d{)TJ2DE0Bhq8+(ytq=u ztptF|5Xf=!BkypF3){phW)%D^SKzcTN_Sz~)7A??9$-=VK>~JcTuf(h5rB;tcc^PS zlDJa5txZ)|5zRyvqG1&TUd1IAew!Qc;SWvWFy4>`0wV@!>H+&+RpaZW%J9rWckpB> zH5a@$WHI$LCGOS0rK$#l7?5rgIW_hHslr@CmvU2s346V}2XHck^5o4AOATRaTSsRA zN`_FDTQQWL2jo(ny>5|gi2KX~-E}l8ydtxs-u z^_*W*%*H#W;>|xImiAIbtT|};2p@q4@9{N5bK`q_#Nw`+;sOA_#m2uF6mIs$!E=rt zGUs2Ct}CBu2OsAFSL9)>R>@nZsI%31)l_+4=1uPO!l#(%x+`pI#aKQ7~U4)lX2+?-m|$$ zkIRm7<36KX-D-Q77=g*4j%AyxtIWy)gBb-gk^?)tlr!21;6{w3q?1wlvaCr0Qihmj z7jx#ku1vj9<7Ji%GMvk-AzQ#a%az1$QxKhWgx*=ubs@g*;}VWv`pQUK|mDT6%$7@^9G5I~_L zAYN`wXnQEwq3P>A*r12}ApcqPG&o#9z{O$(uOH%$vRB11>sUA|#dC7<17ESCF=*fC z)A=z&1+Zz{A`CWK)W_f&3rqvV4MO-O&*gbt-#TgB__j$oua{ht`Q${phI68V0>!!- zrcY4kbM%fZT$u-txmb8UE<4&Q?lV}Wi7mb`H9!^qVAR<{l{Tq^eFDov!FhCrqh9Mu zPin?Mq@kfeOv5)`sf-sb>yVqF4gs!EoTR^7c)~{+XcxHxDntx?(hgd{ZH&mhv&79s#uWmd9A+}B00Y0a(v|Nj zi#IoFc-o7cN8(v6mr7#PCm>JM4%p>;+Lp?hg#g@)^2F{M^_^{`xZ^K!yI0t{asbj1 zz`FOjRSN-Bg#jt|#%y&|tV%Uh5ipY5ad4&1yPEXF?8@4>ho=I{U2ZWN%7?N;agZ*( z4p>MhKOq35AI|R@E#yzVLT@pN05_~_0bxuK05oFQG?6<*f9aC%G8*%XoglOtw_LAuot)_{MV6C8`-pL6e&q=IT8B+vjrF-17Zm2DUlw z@oQuwbVd~7#l3By3k0-|=!XmNG&@$0U3LXrXCfLD1iIS2!#l(8q#1;MIKPXXbiV^i zNBB6%B^d;h1U(P<@Q0?#k1!J<3A2|znCgHQ4JW*X5>5ccD}31X^NMiIl&|2)9)d$x z)8n$X^_`hbmKH#vC@G|J`i``Pe@k8s*28p7QifQqa1BNSHz17|&-grn!9TvZii7P` zELWk}2{Q%H=i^qaTs&Wz$aq1Did)xqzyQa`B+z9@&zhc(a_C+-zZ0lqD2;3yG%1b( zB*k2W45MA#stW@t>K3$coF$uPD32^=a+azjo7mLUv@)lKsQAcG(eVwdPMR$l-$VhqiLSXpG( z=h)8U&1^u`pFwsSFK**&&Kd^cmg>r-;VCNXRRv?Dv(;>Ci=_?BY(Qs5sr}toPyr zZ%Y2_JFI$;e|To^Wgo50U+$8>L#Nc++op}4G@85|m%H{r2>0f?OXaSisnq1jU$|rH z%{wpp(M7i(<8ATAiR~-@@qDW7kS$Ul3nbr`zeA_^)$AC&7EMaW7-_wEj4*?lHo7ey zc|h6!(C;{1aE6a^}H9U%yM{ nU!~wqXlXyGK55$MmUhJ$5vtZtrRD|jsUhMPHxv6m_2>TqGVd(7 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 4e06e03..42aa10d 100644 --- a/package.json +++ b/package.json @@ -15,21 +15,18 @@ "web": "bun --filter ./apps/web" }, "devDependencies": { - "eslint": "^9.18.0", + "eslint": "^9.17.0", "husky": "^9.1.7", - "lint-staged": "^15.4.2", + "lint-staged": "^15.3.0", "prettier": "3.4.2", - "prettier-plugin-tailwindcss": "^0.6.11", - "turbo": "^2.3.4", + "prettier-plugin-tailwindcss": "^0.6.10", + "turbo": "^2.3.3", "typescript": "^5.7.3", - "vite": "6.0.11", - "vitest": "^3.0.4" + "vite": "6.0.7", + "vitest": "^2.1.8" }, - "packageManager": "bun@1.2.0", + "packageManager": "bun@1.1.45", "overrides": { "@swc/core": "1.7.40" - }, - "trustedDependencies": [ - "@swc/core" - ] + } } \ No newline at end of file diff --git a/packages/ui/package.json b/packages/ui/package.json index 40e3c35..7e6e234 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -16,29 +16,32 @@ }, "dependencies": { "@radix-ui/react-aspect-ratio": "^1.1.1", - "@radix-ui/react-dropdown-menu": "^2.1.5", + "@radix-ui/react-dropdown-menu": "^2.1.4", "@radix-ui/react-label": "^2.1.1", "@radix-ui/react-separator": "^1.1.1", "@radix-ui/react-slider": "^1.2.2", "@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-toggle": "^1.1.1", "@radix-ui/react-toggle-group": "^1.1.1", - "@radix-ui/react-tooltip": "^1.1.7", - "class-variance-authority": "^0.7.1", + "@radix-ui/react-tooltip": "^1.1.6", + "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", - "lucide-react": "0.474.0", - "react": "^18.3.1", + "lucide-react": "0.456.0", + "next-themes": "^0.4.3", + "react": "^19.0.0", + "react-dom": "^19.0.0", "react-hook-form": "^7.54.2", - "tailwind-merge": "^2.6.0", + "tailwind-merge": "^2.5.4", "tailwindcss-animate": "^1.0.7" }, "devDependencies": { + "@types/node": "^22.9.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.1", "autoprefixer": "^10.4.20", - "postcss": "^8.5.1", + "postcss": "^8.4.47", "react": "^18.3.1", - "tailwindcss": "^4.0.0", - "typescript": "^5.7.3" + "tailwindcss": "^3.4.14", + "typescript": "^5.6.3" } } \ No newline at end of file diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json new file mode 100644 index 0000000..ca826cf --- /dev/null +++ b/packages/ui/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "incremental": false, + "isolatedModules": true, + "lib": ["es2022", "DOM", "DOM.Iterable"], + "module": "NodeNext", + "moduleDetection": "force", + "moduleResolution": "NodeNext", + "noUncheckedIndexedAccess": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2022", + "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "@workspace/ui/*": ["./src/*"] + } + }, + "include": ["."], + "exclude": ["node_modules", "dist"] +} From c3164bd7e40b85cfc79751f7b9ef5f3d87d08a44 Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Fri, 24 Jan 2025 17:58:33 +0200 Subject: [PATCH 06/25] deps: bump --- apps/api/package.json | 2 +- apps/web/package.json | 14 +- apps/web/src/components/ImportImages.tsx | 1 - bun.lock | 1464 ++++++++++++++++++++++ bun.lockb | Bin 262498 -> 0 bytes package.json | 14 +- packages/ui/package.json | 18 +- 7 files changed, 1488 insertions(+), 25 deletions(-) create mode 100644 bun.lock delete mode 100644 bun.lockb diff --git a/apps/api/package.json b/apps/api/package.json index 12aa059..334b877 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -12,7 +12,7 @@ "@workspace/schema": "workspace:*", "close-with-grace": "^2.2.0", "elysia": "^1.2.10", - "puppeteer": "^24.1.0" + "puppeteer": "^24.1.1" }, "devDependencies": { "@tsconfig/bun": "^1.0.7", diff --git a/apps/web/package.json b/apps/web/package.json index c30272f..2dcdecf 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -12,24 +12,24 @@ "messages:compile": "lingui compile --typescript", "preview": "vite preview" }, - "packageManager": "bun@1.1.45", + "packageManager": "bun@1.2.0", "dependencies": { "@elysiajs/eden": "^1.2.0", "@hookform/resolvers": "^3.10.0", "@lingui/core": "^5.1.2", "@lingui/macro": "^5.1.2", "@lingui/react": "^5.1.2", - "@radix-ui/react-alert-dialog": "^1.1.4", - "@radix-ui/react-dialog": "^1.1.4", + "@radix-ui/react-alert-dialog": "^1.1.5", + "@radix-ui/react-dialog": "^1.1.5", "@radix-ui/react-slot": "^1.1.1", "@sinclair/typebox": "^0.34.14", "@workspace/schema": "workspace:*", "@workspace/ui": "workspace:*", "browser-fs-access": "^0.35.0", "clsx": "^2.1.1", - "jotai": "^2.11.0", + "jotai": "^2.11.1", "jotai-effect": "^1.0.7", - "lucide-react": "^0.473.0", + "lucide-react": "^0.474.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, @@ -40,8 +40,8 @@ "@lingui/vite-plugin": "^5.1.2", "@testing-library/react": "^16.2.0", "@tsconfig/vite-react": "^3.4.0", - "@types/bun": "^1.1.18", - "@types/node": "^22.10.7", + "@types/bun": "^1.2.0", + "@types/node": "^22.10.10", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.1", "@vitejs/plugin-react-swc": "3.7.2", diff --git a/apps/web/src/components/ImportImages.tsx b/apps/web/src/components/ImportImages.tsx index 1e118ae..27aa787 100644 --- a/apps/web/src/components/ImportImages.tsx +++ b/apps/web/src/components/ImportImages.tsx @@ -1,6 +1,5 @@ import { useAtom, useAtomValue } from 'jotai'; import { Camera, Monitor, Smartphone, Tablet } from 'lucide-react'; -import { FileWithHandle } from 'browser-fs-access'; import { useForm } from 'react-hook-form'; import { typeboxResolver } from '@hookform/resolvers/typebox'; import { Type } from '@sinclair/typebox'; diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..727abb1 --- /dev/null +++ b/bun.lock @@ -0,0 +1,1464 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "shadowave", + "devDependencies": { + "eslint": "^9.18.0", + "husky": "^9.1.7", + "lint-staged": "^15.4.2", + "prettier": "3.4.2", + "prettier-plugin-tailwindcss": "^0.6.11", + "turbo": "^2.3.4", + "typescript": "^5.7.3", + "vite": "6.0.11", + "vitest": "^3.0.4", + }, + }, + "apps/api": { + "name": "@shadowave/api", + "version": "0.0.0", + "dependencies": { + "@elysiajs/cors": "^1.2.0", + "@workspace/schema": "workspace:*", + "close-with-grace": "^2.2.0", + "elysia": "^1.2.10", + "puppeteer": "^24.1.1", + }, + "devDependencies": { + "@tsconfig/bun": "^1.0.7", + "bun-types": "latest", + }, + }, + "apps/web": { + "name": "@shadowave/web", + "version": "0.0.0", + "dependencies": { + "@elysiajs/eden": "^1.2.0", + "@hookform/resolvers": "^3.10.0", + "@lingui/core": "^5.1.2", + "@lingui/macro": "^5.1.2", + "@lingui/react": "^5.1.2", + "@radix-ui/react-alert-dialog": "^1.1.5", + "@radix-ui/react-dialog": "^1.1.5", + "@radix-ui/react-slot": "^1.1.1", + "@sinclair/typebox": "^0.34.14", + "@workspace/schema": "workspace:*", + "@workspace/ui": "workspace:*", + "browser-fs-access": "^0.35.0", + "clsx": "^2.1.1", + "jotai": "^2.11.1", + "jotai-effect": "^1.0.7", + "lucide-react": "^0.474.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + }, + "devDependencies": { + "@lingui/cli": "^5.1.2", + "@lingui/conf": "^5.1.2", + "@lingui/swc-plugin": "5.0.2", + "@lingui/vite-plugin": "^5.1.2", + "@testing-library/react": "^16.2.0", + "@tsconfig/vite-react": "^3.4.0", + "@types/bun": "^1.2.0", + "@types/node": "^22.10.10", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.1", + "@vitejs/plugin-react-swc": "3.7.2", + "autoprefixer": "^10.4.20", + "elysia": "^1.2.10", + "postcss": "^8.5.1", + "tailwindcss": "^3.4.17", + "vite-tsconfig-paths": "^5.1.4", + }, + }, + "packages/schema": { + "name": "@workspace/schema", + "peerDependencies": { + "@sinclair/typebox": "^0.34.14", + }, + }, + "packages/ui": { + "name": "@workspace/ui", + "version": "0.0.0", + "dependencies": { + "@radix-ui/react-aspect-ratio": "^1.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.5", + "@radix-ui/react-label": "^2.1.1", + "@radix-ui/react-separator": "^1.1.1", + "@radix-ui/react-slider": "^1.2.2", + "@radix-ui/react-slot": "^1.1.1", + "@radix-ui/react-toggle": "^1.1.1", + "@radix-ui/react-toggle-group": "^1.1.1", + "@radix-ui/react-tooltip": "^1.1.7", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "0.474.0", + "next-themes": "^0.4.4", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-hook-form": "^7.54.2", + "tailwind-merge": "^2.6.0", + "tailwindcss-animate": "^1.0.7", + }, + "devDependencies": { + "@types/node": "^22.10.10", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.5.1", + "react": "^18.3.1", + "tailwindcss": "^3.4.14", + "typescript": "^5.7.3", + }, + }, + }, + "overrides": { + "@swc/core": "1.7.40", + }, + "packages": { + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + + "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], + + "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], + + "@babel/compat-data": ["@babel/compat-data@7.26.5", "", {}, "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg=="], + + "@babel/core": ["@babel/core@7.26.7", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", "@babel/helpers": "^7.26.7", "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", "@babel/traverse": "^7.26.7", "@babel/types": "^7.26.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA=="], + + "@babel/generator": ["@babel/generator@7.26.5", "", { "dependencies": { "@babel/parser": "^7.26.5", "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" } }, "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.26.5", "", { "dependencies": { "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.25.9", "", { "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.26.0", "", { "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.25.9", "", {}, "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.25.9", "", {}, "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.25.9", "", {}, "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw=="], + + "@babel/helpers": ["@babel/helpers@7.26.7", "", { "dependencies": { "@babel/template": "^7.25.9", "@babel/types": "^7.26.7" } }, "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A=="], + + "@babel/parser": ["@babel/parser@7.26.7", "", { "dependencies": { "@babel/types": "^7.26.7" }, "bin": "./bin/babel-parser.js" }, "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w=="], + + "@babel/runtime": ["@babel/runtime@7.26.7", "", { "dependencies": { "regenerator-runtime": "^0.14.0" } }, "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ=="], + + "@babel/template": ["@babel/template@7.25.9", "", { "dependencies": { "@babel/code-frame": "^7.25.9", "@babel/parser": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg=="], + + "@babel/traverse": ["@babel/traverse@7.26.7", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", "@babel/types": "^7.26.7", "debug": "^4.3.1", "globals": "^11.1.0" } }, "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA=="], + + "@babel/types": ["@babel/types@7.26.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg=="], + + "@elysiajs/cors": ["@elysiajs/cors@1.2.0", "", { "peerDependencies": { "elysia": ">= 1.2.0" } }, "sha512-qsJwDAg6WfdQRMfj6uSMcDPSpXvm/zQFeAX1uuJXhIgazH8itSfcDxcH9pMuXVRX1yQNi2pPwNQLJmAcw5mzvw=="], + + "@elysiajs/eden": ["@elysiajs/eden@1.2.0", "", { "peerDependencies": { "elysia": ">= 1.2.0" } }, "sha512-MpV45ahuF+iFZUg4tyJbLr9qxzY99m8clJVgQrDrz7Qh6eOKQ8MY6vjYMj3Wh21pTIRHPHzOLhVorRGby1/Owg=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.24.2", "", { "os": "android", "cpu": "x64" }, "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.2", "", { "os": "none", "cpu": "x64" }, "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="], + + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.4.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA=="], + + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], + + "@eslint/config-array": ["@eslint/config-array@0.19.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.5", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA=="], + + "@eslint/core": ["@eslint/core@0.10.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw=="], + + "@eslint/eslintrc": ["@eslint/eslintrc@3.2.0", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w=="], + + "@eslint/js": ["@eslint/js@9.18.0", "", {}, "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA=="], + + "@eslint/object-schema": ["@eslint/object-schema@2.1.5", "", {}, "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ=="], + + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.2.5", "", { "dependencies": { "@eslint/core": "^0.10.0", "levn": "^0.4.1" } }, "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A=="], + + "@floating-ui/core": ["@floating-ui/core@1.6.9", "", { "dependencies": { "@floating-ui/utils": "^0.2.9" } }, "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw=="], + + "@floating-ui/dom": ["@floating-ui/dom@1.6.13", "", { "dependencies": { "@floating-ui/core": "^1.6.0", "@floating-ui/utils": "^0.2.9" } }, "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w=="], + + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.2", "", { "dependencies": { "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A=="], + + "@floating-ui/utils": ["@floating-ui/utils@0.2.9", "", {}, "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg=="], + + "@hookform/resolvers": ["@hookform/resolvers@3.10.0", "", { "peerDependencies": { "react-hook-form": "^7.0.0" } }, "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag=="], + + "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], + + "@humanfs/node": ["@humanfs/node@0.16.6", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" } }, "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw=="], + + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], + + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.1", "", {}, "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA=="], + + "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + + "@jest/schemas": ["@jest/schemas@29.6.3", "", { "dependencies": { "@sinclair/typebox": "^0.27.8" } }, "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="], + + "@jest/types": ["@jest/types@29.6.3", "", { "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], + + "@lingui/babel-plugin-extract-messages": ["@lingui/babel-plugin-extract-messages@5.1.2", "", {}, "sha512-w4lX0aR3mvQqwCGZDFbtTDg8BUN2Pf8FQ0NMYWSRG/mQV6AskZn3xY9R6wht9poVr/RfKaPF+9P4jQzAxXUWWw=="], + + "@lingui/babel-plugin-lingui-macro": ["@lingui/babel-plugin-lingui-macro@5.1.2", "", { "dependencies": { "@babel/core": "^7.20.12", "@babel/runtime": "^7.20.13", "@babel/types": "^7.20.7", "@lingui/conf": "^5.1.2", "@lingui/core": "^5.1.2", "@lingui/message-utils": "^5.1.2" }, "peerDependencies": { "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-6hq75WZRvuOeWOM0LplZmKTRYIHn9o8PdAYuymVO+QvRp+mMKKMwf8vWyqdVW+4T/zaknN8WtXRRGw6wcCBHew=="], + + "@lingui/cli": ["@lingui/cli@5.1.2", "", { "dependencies": { "@babel/core": "^7.21.0", "@babel/generator": "^7.21.1", "@babel/parser": "^7.22.0", "@babel/runtime": "^7.21.0", "@babel/types": "^7.21.2", "@lingui/babel-plugin-extract-messages": "^5.1.2", "@lingui/babel-plugin-lingui-macro": "^5.1.2", "@lingui/conf": "^5.1.2", "@lingui/core": "^5.1.2", "@lingui/format-po": "^5.1.2", "@lingui/message-utils": "^5.1.2", "babel-plugin-macros": "^3.0.1", "chalk": "^4.1.0", "chokidar": "3.5.1", "cli-table": "^0.3.11", "commander": "^10.0.0", "convert-source-map": "^2.0.0", "date-fns": "^3.6.0", "esbuild": "^0.21.5", "glob": "^11.0.0", "inquirer": "^7.3.3", "micromatch": "^4.0.7", "normalize-path": "^3.0.0", "ora": "^5.1.0", "pathe": "^1.1.0", "pkg-up": "^3.1.0", "pofile": "^1.1.4", "pseudolocale": "^2.0.0", "ramda": "^0.27.1", "source-map": "^0.8.0-beta.0" }, "bin": { "lingui": "./dist/lingui.js" } }, "sha512-PqiDhHmLbeXBmH9Nig6fk0LJXQA0/cr/G2REp60GJ2YBxCvpooE8N2Loi1+dyPX+CGmL4XaQg5Rq5Du9LBP0Gg=="], + + "@lingui/conf": ["@lingui/conf@5.1.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "chalk": "^4.1.0", "cosmiconfig": "^8.0.0", "jest-validate": "^29.4.3", "jiti": "^1.17.1", "lodash.get": "^4.4.2" } }, "sha512-m0kKiiasvoFLo3cpix+zl1wT4/Wn09+9FHdh7tzuxwcRFWyXgJl1/Ire1Cfumoyve0p4DvtnGygg7meAGm6jJw=="], + + "@lingui/core": ["@lingui/core@5.1.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@lingui/message-utils": "^5.1.2", "unraw": "^3.0.0" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.1.2", "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-biqmMCWuBBj7ERSpgGSV91hTShnSrR/RIFUcNKjWuZYgDd3HpBdEmXKCo9NTanQYbkBUpmyw/bgwsSBex6vkDA=="], + + "@lingui/format-po": ["@lingui/format-po@5.1.2", "", { "dependencies": { "@lingui/conf": "^5.1.2", "@lingui/message-utils": "^5.1.2", "date-fns": "^3.6.0", "pofile": "^1.1.4" } }, "sha512-fkhAeBnOqceY5CJrtyRN5oBq3/6X2IpIKS+6yzwyWUzmJ5XmW2cwF2xtrcBwEekvtKzyuUZz7Dqc9gM02epSqA=="], + + "@lingui/macro": ["@lingui/macro@5.1.2", "", { "dependencies": { "@lingui/core": "^5.1.2", "@lingui/react": "^5.1.2" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.1.2", "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-R6HV7XmiskkI/85JCjAtQuBPRu5AB57lOJdJE6xs2qBaeRu70v0BalTn4wyG5+r0JSkDI4gakWaXKW2KpWN6fQ=="], + + "@lingui/message-utils": ["@lingui/message-utils@5.1.2", "", { "dependencies": { "@messageformat/parser": "^5.0.0", "js-sha256": "^0.10.1" } }, "sha512-P/N0yBy2MuC726EaGPGiOafc/0RafHiwkvZJdFKjm1/XOMWrFZDPFXTuxguVQ3HQsRi5eUIPaboU4uRX4GepPg=="], + + "@lingui/react": ["@lingui/react@5.1.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@lingui/core": "^5.1.2" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.1.2", "babel-plugin-macros": "2 || 3", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-YPAvbPUd+kJrmA9H1LSJ9f6+0hkOlm0w8g+7a8FtE7olamjXd7SyIgJMbeJmvKSdztrrdcLBs9YEftUKTfjiyg=="], + + "@lingui/swc-plugin": ["@lingui/swc-plugin@5.0.2", "", { "peerDependencies": { "@lingui/core": "5" } }, "sha512-qKMc+E2cNIax6fhhN+O3n4VOIzQXfGhenQMlrNfvOjq5DEGimFjprL3c/9XuNO9mhQ4izlqNkasvep4espt3sw=="], + + "@lingui/vite-plugin": ["@lingui/vite-plugin@5.1.2", "", { "dependencies": { "@lingui/cli": "^5.1.2", "@lingui/conf": "^5.1.2" }, "peerDependencies": { "vite": "^3 || ^4 || ^5.0.9 || ^6" } }, "sha512-1KDoj03+ie9Td/YYOTjncucwAMVU16RfFpnm1uHvrGGEoRgWfwox4pwTwUbIeksSuecGv757vLeyugThwdyfpA=="], + + "@messageformat/parser": ["@messageformat/parser@5.1.1", "", { "dependencies": { "moo": "^0.5.1" } }, "sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], + + "@puppeteer/browsers": ["@puppeteer/browsers@2.7.0", "", { "dependencies": { "debug": "^4.4.0", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", "semver": "^7.6.3", "tar-fs": "^3.0.6", "unbzip2-stream": "^1.4.3", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-bO61XnTuopsz9kvtfqhVbH6LTM1koxK0IlBR+yuVrM2LB7mk8+5o1w18l5zqd5cs8xlf+ntgambqRqGifMDjog=="], + + "@radix-ui/number": ["@radix-ui/number@1.1.0", "", {}, "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ=="], + + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], + + "@radix-ui/react-alert-dialog": ["@radix-ui/react-alert-dialog@1.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dialog": "1.1.5", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1Y2sI17QzSZP58RjGtrklfSGIf3AF7U/HkD3aAcAnhOUJrm7+7GG1wRDFaUlSe0nW5B/t4mYd/+7RNbP2Wexug=="], + + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w=="], + + "@radix-ui/react-aspect-ratio": ["@radix-ui/react-aspect-ratio@1.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kNU4FIpcFMBLkOUcgeIteH06/8JLBcYY6Le1iKenDGCYNYFX3TQqCZjzkOsz37h7r94/99GTb7YhEr98ZBJibw=="], + + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA=="], + + "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], + + "@radix-ui/react-context": ["@radix-ui/react-context@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q=="], + + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-portal": "1.1.3", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-LaO3e5h/NOEL4OfXjxD43k9Dx+vn+8n+PCFt6uhX/BADFflllyv3WJG6rgvvSVBxpTch938Qq/LGc2MMxipXPw=="], + + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg=="], + + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-escape-keydown": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA=="], + + "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-menu": "2.1.5", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-50ZmEFL1kOuLalPKHrLWvPFMons2fGx9TqQCWlPwDVpbAnaUJ1g4XNcKqFNMQymYU0kKWR4MDDi+9vUQBGFgcQ=="], + + "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg=="], + + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA=="], + + "@radix-ui/react-id": ["@radix-ui/react-id@1.1.0", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA=="], + + "@radix-ui/react-label": ["@radix-ui/react-label@2.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw=="], + + "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.1", "@radix-ui/react-portal": "1.1.3", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-roving-focus": "1.1.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-callback-ref": "1.1.0", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-uH+3w5heoMJtqVCgYOtYVMECk1TOrkUn0OG0p5MqXC0W2ppcuVeESbou8PTHoqAjbdTEK19AGXBWcEtR5WpEQg=="], + + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.1", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-rect": "1.1.0", "@radix-ui/react-use-size": "1.1.0", "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw=="], + + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw=="], + + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.2", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg=="], + + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], + + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw=="], + + "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw=="], + + "@radix-ui/react-slider": ["@radix-ui/react-slider@1.2.2", "", { "dependencies": { "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-previous": "1.1.0", "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sNlU06ii1/ZcbHf8I9En54ZPW0Vil/yPVg4vQMcFNjrIx51jsHbFl1HYHQvCIWJSr1q0ZmA+iIs/ZTv8h7HHSA=="], + + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g=="], + + "@radix-ui/react-toggle": ["@radix-ui/react-toggle@1.1.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-i77tcgObYr743IonC1hrsnnPmszDRn8p+EGUsUt+5a/JFn28fxaM88Py6V2mc8J5kELMWishI0rLnuGLFD/nnQ=="], + + "@radix-ui/react-toggle-group": ["@radix-ui/react-toggle-group@1.1.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-roving-focus": "1.1.1", "@radix-ui/react-toggle": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-OgDLZEA30Ylyz8YSXvnGqIHtERqnUt1KUYTKdw/y8u7Ci6zGiJfXc02jahmcSNK3YcErqioj/9flWC9S1ihfwg=="], + + "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.1", "@radix-ui/react-portal": "1.1.3", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-visually-hidden": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ss0s80BC0+g0+Zc53MvilcnTYSOi4mSuFWBPYPuTOFGjx+pUU+ZrmamMNwS56t8MTFlniA5ocjd4jYm/CdhbOg=="], + + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw=="], + + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.1.0", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw=="], + + "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.0", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw=="], + + "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w=="], + + "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og=="], + + "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.0", "", { "dependencies": { "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ=="], + + "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.0", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw=="], + + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg=="], + + "@radix-ui/rect": ["@radix-ui/rect@1.1.0", "", {}, "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.32.0", "", { "os": "android", "cpu": "arm" }, "sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.32.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw=="], + + "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.32.0", "", { "os": "linux", "cpu": "none" }, "sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw=="], + + "@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.32.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.32.0", "", { "os": "linux", "cpu": "none" }, "sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.32.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.32.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA=="], + + "@shadowave/api": ["@shadowave/api@workspace:apps/api"], + + "@shadowave/web": ["@shadowave/web@workspace:apps/web"], + + "@sinclair/typebox": ["@sinclair/typebox@0.34.14", "", {}, "sha512-TJ7Al17j3+by5y2QkTLcF/oBVMbgXBhILVgi9PuwpxQVZZvGh5BFRzWbJPmZVNKpbRLjuMzFuRwR+tdFPqCkvA=="], + + "@swc/core": ["@swc/core@1.7.40", "", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.13" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.7.40", "@swc/core-darwin-x64": "1.7.40", "@swc/core-linux-arm-gnueabihf": "1.7.40", "@swc/core-linux-arm64-gnu": "1.7.40", "@swc/core-linux-arm64-musl": "1.7.40", "@swc/core-linux-x64-gnu": "1.7.40", "@swc/core-linux-x64-musl": "1.7.40", "@swc/core-win32-arm64-msvc": "1.7.40", "@swc/core-win32-ia32-msvc": "1.7.40", "@swc/core-win32-x64-msvc": "1.7.40" }, "peerDependencies": { "@swc/helpers": "*" }, "optionalPeers": ["@swc/helpers"] }, "sha512-0HIzM5vigVT5IvNum+pPuST9p8xFhN6mhdIKju7qYYeNuZG78lwms/2d8WgjTJJlzp6JlPguXGrMMNzjQw0qNg=="], + + "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.7.40", "", { "os": "darwin", "cpu": "arm64" }, "sha512-LRRrCiRJLb1kpQtxMNNsr5W82Inr0dy5Imho+4HQzVx/Ismi0qX4hQBgzJAnyOBNLK1+OBVb/912UVhKXppdfQ=="], + + "@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.7.40", "", { "os": "darwin", "cpu": "x64" }, "sha512-Lpl0XK/4fLzS5jsK48opUuGXrqJXwqJckYYPwyGbCfCXm4MsBe+7dX2hq/Kc4YMY25+NeTmzAXhla8TT4WYD/g=="], + + "@swc/core-linux-arm-gnueabihf": ["@swc/core-linux-arm-gnueabihf@1.7.40", "", { "os": "linux", "cpu": "arm" }, "sha512-4bEvvjptpoc5BRPr/R419h6fXTEuub+frpxxlxBOEKxgXjAF/S3xdxyPijUAakmW/xXBF0u7OC4KYI+38yQp6g=="], + + "@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.7.40", "", { "os": "linux", "cpu": "arm64" }, "sha512-v2fBlHJ/6Ovz0L2xFAI9TRiKyl9DTdx139PuAHD9gyzp16Utl/W0MPd4t2cYdkI6hPXE9PsJCSzMOrduh+YoDg=="], + + "@swc/core-linux-arm64-musl": ["@swc/core-linux-arm64-musl@1.7.40", "", { "os": "linux", "cpu": "arm64" }, "sha512-uMkduQuU4LFVkW6txv8AVArT8GjJVJ5IHoWloXaUBMT447iE8NALmpePdZWhMyj6KV7j0y23CM5rzV/I2eNGLg=="], + + "@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.7.40", "", { "os": "linux", "cpu": "x64" }, "sha512-4LZdY1MBSnXyTpW5fpBU/+JGAhkuHT+VnFTDNegRboN5nSPh7y0Yvn4LmIioESV+sWzjKkEXujJPGjrp+oSp5w=="], + + "@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.7.40", "", { "os": "linux", "cpu": "x64" }, "sha512-FPjOwT3SgI6PAwH1O8bhOGBPzuvzOlzKeCtxLaCjruHJu9V8KKBrMTWOZT/FJyYC9mX5Ip1+l9j30UqUZdQxtA=="], + + "@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.7.40", "", { "os": "win32", "cpu": "arm64" }, "sha512-//ovXdD9GsTmhPmXJlXnIbRQkeuL6PSrYSr7uCMNcclrUdJG0YkO0GMM2afUKYbdJcunylDDWsSS8PFWn0QxmA=="], + + "@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.7.40", "", { "os": "win32", "cpu": "ia32" }, "sha512-iD/1auVhHGlhWAPrWmfRWL3w4AvXIWGVXZiSA109/xnRIPiHKb/HqqTp/qB94E/ZHMPRgLKkLTNwamlkueUs8g=="], + + "@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.7.40", "", { "os": "win32", "cpu": "x64" }, "sha512-ZlFAV1WFPhhWQ/8esiygmetkb905XIcMMtHRRG0FBGCllO+HVL5nikUaLDgTClz1onmEY9sMXUFQeoPtvliV+w=="], + + "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], + + "@swc/types": ["@swc/types@0.1.17", "", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ=="], + + "@testing-library/dom": ["@testing-library/dom@10.4.0", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" } }, "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ=="], + + "@testing-library/react": ["@testing-library/react@16.2.0", "", { "dependencies": { "@babel/runtime": "^7.12.5" }, "peerDependencies": { "@testing-library/dom": "^10.0.0", "@types/react": "^18.0.0 || ^19.0.0", "@types/react-dom": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ=="], + + "@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="], + + "@tsconfig/bun": ["@tsconfig/bun@1.0.7", "", {}, "sha512-udGrGJBNQdXGVulehc1aWT73wkR9wdaGBtB6yL70RJsqwW/yJhIg6ZbRlPOfIUiFNrnBuYLBi9CSmMKfDC7dvA=="], + + "@tsconfig/vite-react": ["@tsconfig/vite-react@3.4.0", "", {}, "sha512-NxS7WJayciLI+UnCgEqdBfQrZebvVNTSEj5EnaitwThL7iAso5G8wx18B/6yypCFGnyu8p6IMpKWu6JklOX3KA=="], + + "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], + + "@types/bun": ["@types/bun@1.2.0", "", { "dependencies": { "bun-types": "1.2.0" } }, "sha512-5N1JqdahfpBlAv4wy6svEYcd/YfO2GNrbL95JOmFx8nkE6dbK4R0oSE5SpBA4vBRqgrOUAXF8Dpiz+gi7r80SA=="], + + "@types/estree": ["@types/estree@1.0.6", "", {}, "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="], + + "@types/istanbul-lib-coverage": ["@types/istanbul-lib-coverage@2.0.6", "", {}, "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="], + + "@types/istanbul-lib-report": ["@types/istanbul-lib-report@3.0.3", "", { "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA=="], + + "@types/istanbul-reports": ["@types/istanbul-reports@3.0.4", "", { "dependencies": { "@types/istanbul-lib-report": "*" } }, "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ=="], + + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + + "@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], + + "@types/parse-json": ["@types/parse-json@4.0.2", "", {}, "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="], + + "@types/prop-types": ["@types/prop-types@15.7.14", "", {}, "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ=="], + + "@types/react": ["@types/react@18.3.18", "", { "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ=="], + + "@types/react-dom": ["@types/react-dom@18.3.5", "", { "peerDependencies": { "@types/react": "^18.0.0" } }, "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q=="], + + "@types/ws": ["@types/ws@8.5.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw=="], + + "@types/yargs": ["@types/yargs@17.0.33", "", { "dependencies": { "@types/yargs-parser": "*" } }, "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA=="], + + "@types/yargs-parser": ["@types/yargs-parser@21.0.3", "", {}, "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="], + + "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], + + "@vitejs/plugin-react-swc": ["@vitejs/plugin-react-swc@3.7.2", "", { "dependencies": { "@swc/core": "^1.7.26" }, "peerDependencies": { "vite": "^4 || ^5 || ^6" } }, "sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew=="], + + "@vitest/expect": ["@vitest/expect@3.0.4", "", { "dependencies": { "@vitest/spy": "3.0.4", "@vitest/utils": "3.0.4", "chai": "^5.1.2", "tinyrainbow": "^2.0.0" } }, "sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg=="], + + "@vitest/mocker": ["@vitest/mocker@3.0.4", "", { "dependencies": { "@vitest/spy": "3.0.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A=="], + + "@vitest/pretty-format": ["@vitest/pretty-format@3.0.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g=="], + + "@vitest/runner": ["@vitest/runner@3.0.4", "", { "dependencies": { "@vitest/utils": "3.0.4", "pathe": "^2.0.2" } }, "sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw=="], + + "@vitest/snapshot": ["@vitest/snapshot@3.0.4", "", { "dependencies": { "@vitest/pretty-format": "3.0.4", "magic-string": "^0.30.17", "pathe": "^2.0.2" } }, "sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w=="], + + "@vitest/spy": ["@vitest/spy@3.0.4", "", { "dependencies": { "tinyspy": "^3.0.2" } }, "sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q=="], + + "@vitest/utils": ["@vitest/utils@3.0.4", "", { "dependencies": { "@vitest/pretty-format": "3.0.4", "loupe": "^3.1.2", "tinyrainbow": "^2.0.0" } }, "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ=="], + + "@workspace/schema": ["@workspace/schema@workspace:packages/schema"], + + "@workspace/ui": ["@workspace/ui@workspace:packages/ui"], + + "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + + "agent-base": ["agent-base@7.1.3", "", {}, "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw=="], + + "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + + "ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], + + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], + + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + + "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "aria-hidden": ["aria-hidden@1.2.4", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A=="], + + "aria-query": ["aria-query@5.3.0", "", { "dependencies": { "dequal": "^2.0.3" } }, "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A=="], + + "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], + + "ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="], + + "autoprefixer": ["autoprefixer@10.4.20", "", { "dependencies": { "browserslist": "^4.23.3", "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g=="], + + "b4a": ["b4a@1.6.7", "", {}, "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="], + + "babel-plugin-macros": ["babel-plugin-macros@3.1.0", "", { "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", "resolve": "^1.19.0" } }, "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg=="], + + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "bare-events": ["bare-events@2.5.4", "", {}, "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA=="], + + "bare-fs": ["bare-fs@4.0.1", "", { "dependencies": { "bare-events": "^2.0.0", "bare-path": "^3.0.0", "bare-stream": "^2.0.0" } }, "sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg=="], + + "bare-os": ["bare-os@3.4.0", "", {}, "sha512-9Ous7UlnKbe3fMi7Y+qh0DwAup6A1JkYgPnjvMDNOlmnxNRQvQ/7Nst+OnUQKzk0iAT0m9BisbDVp9gCv8+ETA=="], + + "bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="], + + "bare-stream": ["bare-stream@2.6.4", "", { "dependencies": { "streamx": "^2.21.0" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-G6i3A74FjNq4nVrrSTUz5h3vgXzBJnjmWAVlBWaZETkgu+LgKd7AiyOml3EDJY1AHlIbBHKDXE+TUT53Ff8OaA=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "basic-ftp": ["basic-ftp@5.0.5", "", {}, "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg=="], + + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + + "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], + + "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "browser-fs-access": ["browser-fs-access@0.35.0", "", {}, "sha512-sLoadumpRfsjprP8XzVjpQc0jK8yqHBx0PtUTGYj2fftT+P/t+uyDAQdMgGAPKD011in/O+YYGh7fIs0oG/viw=="], + + "browserslist": ["browserslist@4.24.4", "", { "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" } }, "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A=="], + + "buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + + "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], + + "bun-types": ["bun-types@1.2.0", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-KEaJxyZfbV/c4eyG0vyehDpYmBGreNiQbZIqvVHJwZ4BmeuWlNZ7EAzMN2Zcd7ailmS/tGVW0BgYbGf+lGEpWw=="], + + "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], + + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + + "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], + + "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001695", "", {}, "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw=="], + + "chai": ["chai@5.1.2", "", { "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" } }, "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "chardet": ["chardet@0.7.0", "", {}, "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="], + + "check-error": ["check-error@2.1.1", "", {}, "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw=="], + + "chokidar": ["chokidar@3.5.1", "", { "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.5.0" }, "optionalDependencies": { "fsevents": "~2.3.1" } }, "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw=="], + + "chromium-bidi": ["chromium-bidi@1.1.0", "", { "dependencies": { "mitt": "3.0.1", "zod": "3.24.1" }, "peerDependencies": { "devtools-protocol": "*" } }, "sha512-HislCEczCuamWm3+55Lig9XKmMF13K+BGKum9rwtDAzgUAHT4h5jNwhDmD4U20VoVUG8ujnv9UZ89qiIf5uF8w=="], + + "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], + + "cli-cursor": ["cli-cursor@3.1.0", "", { "dependencies": { "restore-cursor": "^3.1.0" } }, "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="], + + "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], + + "cli-table": ["cli-table@0.3.11", "", { "dependencies": { "colors": "1.0.3" } }, "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ=="], + + "cli-truncate": ["cli-truncate@4.0.0", "", { "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" } }, "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA=="], + + "cli-width": ["cli-width@3.0.0", "", {}, "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw=="], + + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + + "clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="], + + "close-with-grace": ["close-with-grace@2.2.0", "", {}, "sha512-OdcFxnxTm/AMLPHA4Aq3J1BLpkojXP7I4G5QBQLN5TT55ED/rk04rAoDbtfNnfZ988kGXPxh1bdRLeIU9bz/lA=="], + + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], + + "colors": ["colors@1.0.3", "", {}, "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw=="], + + "commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], + + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "cookie": ["cookie@1.0.2", "", {}, "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA=="], + + "cosmiconfig": ["cosmiconfig@9.0.0", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], + + "data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="], + + "date-fns": ["date-fns@3.6.0", "", {}, "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww=="], + + "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], + + "deep-eql": ["deep-eql@5.0.2", "", {}, "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q=="], + + "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], + + "defaults": ["defaults@1.0.4", "", { "dependencies": { "clone": "^1.0.2" } }, "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="], + + "degenerator": ["degenerator@5.0.1", "", { "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", "esprima": "^4.0.1" } }, "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ=="], + + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + + "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], + + "devtools-protocol": ["devtools-protocol@0.0.1380148", "", {}, "sha512-1CJABgqLxbYxVI+uJY/UDUHJtJ0KZTSjNYJYKqd9FRoXT33WDakDHNxRapMEgzeJ/C3rcs01+avshMnPmKQbvA=="], + + "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], + + "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], + + "dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], + + "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.87", "", {}, "sha512-mPFwmEWmRivw2F8x3w3l2m6htAUN97Gy0kwpO++2m9iT1Gt8RCFVUfv9U/sIbHJ6rY4P6/ooqFL/eL7ock+pPg=="], + + "elysia": ["elysia@1.2.10", "", { "dependencies": { "@sinclair/typebox": "^0.34.13", "cookie": "^1.0.2", "memoirist": "^0.2.0", "openapi-types": "^12.1.3" }, "peerDependencies": { "typescript": ">= 5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-QcNl2FjhHFRpKaqy1NoMpyCjJ7OcKBnHwLUkqGu09QwIV84PFb82ILvYJG4GS1RbGv76OA50luaqBLrM3SLZ2w=="], + + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "end-of-stream": ["end-of-stream@1.4.4", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="], + + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + + "environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="], + + "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], + + "es-module-lexer": ["es-module-lexer@1.6.0", "", {}, "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ=="], + + "esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="], + + "eslint": ["eslint@9.18.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "9.18.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA=="], + + "eslint-scope": ["eslint-scope@8.2.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A=="], + + "eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="], + + "espree": ["espree@10.3.0", "", { "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.0" } }, "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg=="], + + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], + + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], + + "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], + + "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], + + "execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], + + "expect-type": ["expect-type@1.1.0", "", {}, "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA=="], + + "external-editor": ["external-editor@3.1.0", "", { "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", "tmp": "^0.0.33" } }, "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew=="], + + "extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], + + "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + + "fastq": ["fastq@1.18.0", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw=="], + + "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], + + "figures": ["figures@3.2.0", "", { "dependencies": { "escape-string-regexp": "^1.0.5" } }, "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg=="], + + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + + "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], + + "flatted": ["flatted@3.3.2", "", {}, "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA=="], + + "foreground-child": ["foreground-child@3.3.0", "", { "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" } }, "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg=="], + + "fraction.js": ["fraction.js@4.3.7", "", {}, "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="], + + "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], + + "get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], + + "get-uri": ["get-uri@6.0.4", "", { "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4" } }, "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ=="], + + "glob": ["glob@11.0.1", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^4.0.1", "minimatch": "^10.0.0", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw=="], + + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], + + "globrex": ["globrex@0.1.2", "", {}, "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], + + "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], + + "husky": ["husky@9.1.7", "", { "bin": { "husky": "bin.js" } }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="], + + "iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + + "import-fresh": ["import-fresh@3.3.0", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="], + + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "inquirer": ["inquirer@7.3.3", "", { "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.19", "mute-stream": "0.0.8", "run-async": "^2.4.0", "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" } }, "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA=="], + + "ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], + + "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], + + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-interactive": ["is-interactive@1.0.0", "", {}, "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], + + "is-unicode-supported": ["is-unicode-supported@0.1.0", "", {}, "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="], + + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "jackspeak": ["jackspeak@4.0.2", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw=="], + + "jest-get-type": ["jest-get-type@29.6.3", "", {}, "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw=="], + + "jest-validate": ["jest-validate@29.7.0", "", { "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.6.3", "leven": "^3.1.0", "pretty-format": "^29.7.0" } }, "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw=="], + + "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], + + "jotai": ["jotai@2.11.1", "", { "peerDependencies": { "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-41Su098mpHIX29hF/XOpDb0SqF6EES7+HXfrhuBqVSzRkxX48hD5i8nGsEewWZNAsBWJCTTmuz8M946Ih2PfcQ=="], + + "jotai-effect": ["jotai-effect@1.0.7", "", { "peerDependencies": { "jotai": ">=2.5.0" } }, "sha512-FBuECs1g8ajTXoAvBI2r9BwGCoaoRwKRa99QiybhjaupbOjoqtxlU8gIpeBmB4DPcybxi1oI7od9Wsrlgva7Qg=="], + + "js-sha256": ["js-sha256@0.10.1", "", {}, "sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + + "jsbn": ["jsbn@1.1.0", "", {}, "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], + + "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + + "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], + + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], + + "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], + + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], + + "lint-staged": ["lint-staged@15.4.2", "", { "dependencies": { "chalk": "^5.4.1", "commander": "^13.1.0", "debug": "^4.4.0", "execa": "^8.0.1", "lilconfig": "^3.1.3", "listr2": "^8.2.5", "micromatch": "^4.0.8", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.7.0" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-gCqzB/Li281uZJgReNci+oXXqUEdrFAQAzTE/LwoxxiEuP41vozNe4BATS+4ehdqkWn+Z6bGc3EDcBja3npBVw=="], + + "listr2": ["listr2@8.2.5", "", { "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ=="], + + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + + "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], + + "lodash.get": ["lodash.get@4.4.2", "", {}, "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="], + + "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], + + "lodash.sortby": ["lodash.sortby@4.7.0", "", {}, "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="], + + "log-symbols": ["log-symbols@4.1.0", "", { "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" } }, "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="], + + "log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="], + + "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], + + "loupe": ["loupe@3.1.2", "", {}, "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg=="], + + "lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], + + "lucide-react": ["lucide-react@0.474.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-CmghgHkh0OJNmxGKWc0qfPJCYHASPMVSyGY8fj3xgk4v84ItqDg64JNKFZn5hC6E0vHi6gxnbCgwhyVB09wQtA=="], + + "lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], + + "magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + + "memoirist": ["memoirist@0.2.0", "", {}, "sha512-DA1V11OWsKmYjgYHfT1luus0FtTjUbILfI9s5M+ckK29tBLON6GDhH5GwxDz7E1ou4Bdzm9vhbeCaRAWxwG+0g=="], + + "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="], + + "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], + + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], + + "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + + "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], + + "moo": ["moo@0.5.2", "", {}, "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "mute-stream": ["mute-stream@0.0.8", "", {}, "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="], + + "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], + + "nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="], + + "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], + + "netmask": ["netmask@2.0.2", "", {}, "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="], + + "next-themes": ["next-themes@0.4.4", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ=="], + + "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], + + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + + "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], + + "npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="], + + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + + "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + + "onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], + + "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], + + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], + + "ora": ["ora@5.4.1", "", { "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", "is-unicode-supported": "^0.1.0", "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" } }, "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="], + + "os-tmpdir": ["os-tmpdir@1.0.2", "", {}, "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="], + + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], + + "pac-proxy-agent": ["pac-proxy-agent@7.1.0", "", { "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" } }, "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw=="], + + "pac-resolver": ["pac-resolver@7.0.1", "", { "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg=="], + + "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], + + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + + "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], + + "path-scurry": ["path-scurry@2.0.0", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg=="], + + "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], + + "pathe": ["pathe@2.0.2", "", {}, "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="], + + "pathval": ["pathval@2.0.0", "", {}, "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA=="], + + "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="], + + "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], + + "pirates": ["pirates@4.0.6", "", {}, "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg=="], + + "pkg-up": ["pkg-up@3.1.0", "", { "dependencies": { "find-up": "^3.0.0" } }, "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA=="], + + "pofile": ["pofile@1.1.4", "", {}, "sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g=="], + + "postcss": ["postcss@8.5.1", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ=="], + + "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], + + "postcss-js": ["postcss-js@4.0.1", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw=="], + + "postcss-load-config": ["postcss-load-config@4.0.2", "", { "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ=="], + + "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], + + "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], + + "prettier": ["prettier@3.4.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ=="], + + "prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.6.11", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-import-sort": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-style-order": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-import-sort", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-style-order", "prettier-plugin-svelte"] }, "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA=="], + + "pretty-format": ["pretty-format@29.7.0", "", { "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" } }, "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="], + + "progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="], + + "proxy-agent": ["proxy-agent@6.5.0", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.5" } }, "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A=="], + + "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], + + "pseudolocale": ["pseudolocale@2.1.0", "", { "dependencies": { "commander": "^10.0.0" }, "bin": { "pseudolocale": "dist/cli.mjs" } }, "sha512-af5fsrRvVwD+MBasBJvuDChT0KDqT0nEwD9NTgbtHJ16FKomWac9ua0z6YVNB4G9x9IOaiGWym62aby6n4tFMA=="], + + "pump": ["pump@3.0.2", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "puppeteer": ["puppeteer@24.1.1", "", { "dependencies": { "@puppeteer/browsers": "2.7.0", "chromium-bidi": "1.1.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1380148", "puppeteer-core": "24.1.1", "typed-query-selector": "^2.12.0" }, "bin": { "puppeteer": "lib/cjs/puppeteer/node/cli.js" } }, "sha512-fuhceZ5HZuDXVuaMIRxUuDHfCJLmK0pXh8FlzVQ0/+OApStevxZhU5kAVeYFOEqeCF5OoAyZjcWbdQK27xW/9A=="], + + "puppeteer-core": ["puppeteer-core@24.1.1", "", { "dependencies": { "@puppeteer/browsers": "2.7.0", "chromium-bidi": "1.1.0", "debug": "^4.4.0", "devtools-protocol": "0.0.1380148", "typed-query-selector": "^2.12.0", "ws": "^8.18.0" } }, "sha512-7FF3gq6bpIsbq3I8mfbodXh3DCzXagoz3l2eGv1cXooYU4g0P4mcHQVHuBD4iSZPXNg8WjzlP5kmRwK9UvwF0A=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "queue-tick": ["queue-tick@1.0.1", "", {}, "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="], + + "ramda": ["ramda@0.27.2", "", {}, "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA=="], + + "react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], + + "react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], + + "react-hook-form": ["react-hook-form@7.54.2", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg=="], + + "react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], + + "react-remove-scroll": ["react-remove-scroll@2.6.3", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ=="], + + "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], + + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], + + "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], + + "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "readdirp": ["readdirp@3.5.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ=="], + + "regenerator-runtime": ["regenerator-runtime@0.14.1", "", {}, "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="], + + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + + "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], + + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + + "restore-cursor": ["restore-cursor@3.1.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="], + + "reusify": ["reusify@1.0.4", "", {}, "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="], + + "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], + + "rollup": ["rollup@4.32.0", "", { "dependencies": { "@types/estree": "1.0.6" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.32.0", "@rollup/rollup-android-arm64": "4.32.0", "@rollup/rollup-darwin-arm64": "4.32.0", "@rollup/rollup-darwin-x64": "4.32.0", "@rollup/rollup-freebsd-arm64": "4.32.0", "@rollup/rollup-freebsd-x64": "4.32.0", "@rollup/rollup-linux-arm-gnueabihf": "4.32.0", "@rollup/rollup-linux-arm-musleabihf": "4.32.0", "@rollup/rollup-linux-arm64-gnu": "4.32.0", "@rollup/rollup-linux-arm64-musl": "4.32.0", "@rollup/rollup-linux-loongarch64-gnu": "4.32.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.32.0", "@rollup/rollup-linux-riscv64-gnu": "4.32.0", "@rollup/rollup-linux-s390x-gnu": "4.32.0", "@rollup/rollup-linux-x64-gnu": "4.32.0", "@rollup/rollup-linux-x64-musl": "4.32.0", "@rollup/rollup-win32-arm64-msvc": "4.32.0", "@rollup/rollup-win32-ia32-msvc": "4.32.0", "@rollup/rollup-win32-x64-msvc": "4.32.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg=="], + + "run-async": ["run-async@2.4.1", "", {}, "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "rxjs": ["rxjs@6.6.7", "", { "dependencies": { "tslib": "^1.9.0" } }, "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], + + "semver": ["semver@7.6.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], + + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + + "slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="], + + "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], + + "socks": ["socks@2.8.3", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw=="], + + "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], + + "source-map": ["source-map@0.8.0-beta.0", "", { "dependencies": { "whatwg-url": "^7.0.0" } }, "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], + + "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], + + "std-env": ["std-env@3.8.0", "", {}, "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w=="], + + "streamx": ["streamx@2.21.1", "", { "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" }, "optionalDependencies": { "bare-events": "^2.2.0" } }, "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw=="], + + "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], + + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], + + "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + + "sucrase": ["sucrase@3.35.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA=="], + + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + + "tailwind-merge": ["tailwind-merge@2.6.0", "", {}, "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA=="], + + "tailwindcss": ["tailwindcss@3.4.17", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.6", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og=="], + + "tailwindcss-animate": ["tailwindcss-animate@1.0.7", "", { "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders" } }, "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA=="], + + "tar-fs": ["tar-fs@3.0.8", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg=="], + + "tar-stream": ["tar-stream@3.1.7", "", { "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ=="], + + "text-decoder": ["text-decoder@1.2.3", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA=="], + + "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], + + "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], + + "through": ["through@2.3.8", "", {}, "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="], + + "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], + + "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], + + "tinypool": ["tinypool@1.0.2", "", {}, "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA=="], + + "tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="], + + "tinyspy": ["tinyspy@3.0.2", "", {}, "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q=="], + + "tmp": ["tmp@0.0.33", "", { "dependencies": { "os-tmpdir": "~1.0.2" } }, "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="], + + "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], + + "tsconfck": ["tsconfck@3.1.4", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "turbo": ["turbo@2.3.4", "", { "optionalDependencies": { "turbo-darwin-64": "2.3.4", "turbo-darwin-arm64": "2.3.4", "turbo-linux-64": "2.3.4", "turbo-linux-arm64": "2.3.4", "turbo-windows-64": "2.3.4", "turbo-windows-arm64": "2.3.4" }, "bin": { "turbo": "bin/turbo" } }, "sha512-1kiLO5C0Okh5ay1DbHsxkPsw9Sjsbjzm6cF85CpWjR0BIyBFNDbKqtUyqGADRS1dbbZoQanJZVj4MS5kk8J42Q=="], + + "turbo-darwin-64": ["turbo-darwin-64@2.3.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-uOi/cUIGQI7uakZygH+cZQ5D4w+aMLlVCN2KTGot+cmefatps2ZmRRufuHrEM0Rl63opdKD8/JIu+54s25qkfg=="], + + "turbo-darwin-arm64": ["turbo-darwin-arm64@2.3.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-IIM1Lq5R+EGMtM1YFGl4x8Xkr0MWb4HvyU8N4LNoQ1Be5aycrOE+VVfH+cDg/Q4csn+8bxCOxhRp5KmUflrVTQ=="], + + "turbo-linux-64": ["turbo-linux-64@2.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-1aD2EfR7NfjFXNH3mYU5gybLJEFi2IGOoKwoPLchAFRQ6OEJQj201/oNo9CDL75IIrQo64/NpEgVyZtoPlfhfA=="], + + "turbo-linux-arm64": ["turbo-linux-arm64@2.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-MxTpdKwxCaA5IlybPxgGLu54fT2svdqTIxRd0TQmpRJIjM0s4kbM+7YiLk0mOh6dGqlWPUsxz/A0Mkn8Xr5o7Q=="], + + "turbo-windows-64": ["turbo-windows-64@2.3.4", "", { "os": "win32", "cpu": "x64" }, "sha512-yyCrWqcRGu1AOOlrYzRnizEtdkqi+qKP0MW9dbk9OsMDXaOI5jlWtTY/AtWMkLw/czVJ7yS9Ex1vi9DB6YsFvw=="], + + "turbo-windows-arm64": ["turbo-windows-arm64@2.3.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-PggC3qH+njPfn1PDVwKrQvvQby8X09ufbqZ2Ha4uSu+5TvPorHHkAbZVHKYj2Y+tvVzxRzi4Sv6NdHXBS9Be5w=="], + + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], + + "type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], + + "typed-query-selector": ["typed-query-selector@2.12.0", "", {}, "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg=="], + + "typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="], + + "unbzip2-stream": ["unbzip2-stream@1.4.3", "", { "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" } }, "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg=="], + + "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], + + "unraw": ["unraw@3.0.0", "", {}, "sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg=="], + + "update-browserslist-db": ["update-browserslist-db@1.1.2", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg=="], + + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + + "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], + + "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "vite": ["vite@6.0.11", "", { "dependencies": { "esbuild": "^0.24.2", "postcss": "^8.4.49", "rollup": "^4.23.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg=="], + + "vite-node": ["vite-node@3.0.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", "es-module-lexer": "^1.6.0", "pathe": "^2.0.2", "vite": "^5.0.0 || ^6.0.0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA=="], + + "vite-tsconfig-paths": ["vite-tsconfig-paths@5.1.4", "", { "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", "tsconfck": "^3.0.3" }, "peerDependencies": { "vite": "*" }, "optionalPeers": ["vite"] }, "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w=="], + + "vitest": ["vitest@3.0.4", "", { "dependencies": { "@vitest/expect": "3.0.4", "@vitest/mocker": "3.0.4", "@vitest/pretty-format": "^3.0.4", "@vitest/runner": "3.0.4", "@vitest/snapshot": "3.0.4", "@vitest/spy": "3.0.4", "@vitest/utils": "3.0.4", "chai": "^5.1.2", "debug": "^4.4.0", "expect-type": "^1.1.0", "magic-string": "^0.30.17", "pathe": "^2.0.2", "std-env": "^3.8.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", "vite-node": "3.0.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.0.4", "@vitest/ui": "3.0.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw=="], + + "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], + + "webidl-conversions": ["webidl-conversions@4.0.2", "", {}, "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="], + + "whatwg-url": ["whatwg-url@7.1.0", "", { "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } }, "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg=="], + + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], + + "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + + "wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="], + + "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + + "ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "yaml": ["yaml@2.7.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA=="], + + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + + "yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="], + + "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "zod": ["zod@3.24.1", "", {}, "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A=="], + + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/traverse/globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="], + + "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="], + + "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + + "@isaacs/cliui/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + + "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + + "@jest/schemas/@sinclair/typebox": ["@sinclair/typebox@0.27.8", "", {}, "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="], + + "@lingui/cli/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], + + "@lingui/cli/esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="], + + "@lingui/cli/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], + + "@lingui/conf/cosmiconfig": ["cosmiconfig@8.3.6", "", { "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA=="], + + "@testing-library/dom/pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], + + "@workspace/ui/react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], + + "@workspace/ui/react-dom": ["react-dom@19.0.0", "", { "dependencies": { "scheduler": "^0.25.0" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ=="], + + "babel-plugin-macros/cosmiconfig": ["cosmiconfig@7.1.0", "", { "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" } }, "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="], + + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "cli-truncate/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + + "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "extract-zip/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], + + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "figures/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], + + "glob/minimatch": ["minimatch@10.0.1", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ=="], + + "lint-staged/chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="], + + "log-update/ansi-escapes": ["ansi-escapes@7.0.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw=="], + + "log-update/cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], + + "log-update/slice-ansi": ["slice-ansi@7.1.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg=="], + + "log-update/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + + "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], + + "path-scurry/lru-cache": ["lru-cache@11.0.2", "", {}, "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA=="], + + "pkg-up/find-up": ["find-up@3.0.0", "", { "dependencies": { "locate-path": "^3.0.0" } }, "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="], + + "pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], + + "pseudolocale/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], + + "restore-cursor/onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], + + "restore-cursor/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "rxjs/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "slice-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + + "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@4.0.0", "", {}, "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ=="], + + "sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], + + "sucrase/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + + "tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + + "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + + "wrap-ansi/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + + "wrap-ansi/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + + "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + + "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + + "@lingui/cli/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], + + "@lingui/cli/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="], + + "@lingui/cli/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.21.5", "", { "os": "android", "cpu": "arm64" }, "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A=="], + + "@lingui/cli/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.21.5", "", { "os": "android", "cpu": "x64" }, "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA=="], + + "@lingui/cli/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.21.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ=="], + + "@lingui/cli/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.21.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw=="], + + "@lingui/cli/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.21.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g=="], + + "@lingui/cli/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.21.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ=="], + + "@lingui/cli/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.21.5", "", { "os": "linux", "cpu": "arm" }, "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA=="], + + "@lingui/cli/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.21.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q=="], + + "@lingui/cli/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.21.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg=="], + + "@lingui/cli/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg=="], + + "@lingui/cli/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg=="], + + "@lingui/cli/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.21.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w=="], + + "@lingui/cli/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA=="], + + "@lingui/cli/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.21.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A=="], + + "@lingui/cli/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ=="], + + "@lingui/cli/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.21.5", "", { "os": "none", "cpu": "x64" }, "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg=="], + + "@lingui/cli/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.21.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow=="], + + "@lingui/cli/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.21.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg=="], + + "@lingui/cli/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.21.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A=="], + + "@lingui/cli/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.21.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA=="], + + "@lingui/cli/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], + + "@testing-library/dom/pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], + + "@testing-library/dom/pretty-format/react-is": ["react-is@17.0.2", "", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], + + "@workspace/ui/react-dom/scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], + + "babel-plugin-macros/cosmiconfig/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], + + "cli-truncate/string-width/emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], + + "cli-truncate/string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + + "glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "log-update/cli-cursor/restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], + + "log-update/slice-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + + "log-update/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.0.0", "", { "dependencies": { "get-east-asian-width": "^1.0.0" } }, "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA=="], + + "log-update/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + + "pkg-up/find-up/locate-path": ["locate-path@3.0.0", "", { "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="], + + "restore-cursor/onetime/mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], + + "sucrase/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], + + "sucrase/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "sucrase/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], + + "tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "wrap-ansi/string-width/emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], + + "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + + "cli-truncate/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + + "log-update/cli-cursor/restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], + + "pkg-up/find-up/locate-path/p-locate": ["p-locate@3.0.0", "", { "dependencies": { "p-limit": "^2.0.0" } }, "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="], + + "pkg-up/find-up/locate-path/path-exists": ["path-exists@3.0.0", "", {}, "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="], + + "sucrase/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "sucrase/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "pkg-up/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + } +} diff --git a/bun.lockb b/bun.lockb deleted file mode 100644 index abcb3d3060c3483abc6f701e1d5916a8059699e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262498 zcmeF430zEX^zf%lifBWdQYyQMvP=6SO0p)}r+w2DMF>SATTzjHi;yi__O-GWB1@JK zvS#1kbGrBZ%+E{RY2Nq!eE#p}_k7Hpd6w@v=Q+=EpL=JZ-@0qGFtV$6U|3f{*aThg z=&;7{G7Jg#3HA#N5g7V~M}~Su8BQ>2EY0KbI_}Sid2KUJ?$T{N`;1vKw}MZ$@a#L) zzJJ)o+}sc;1$C26$l~>1>-~3H)Q-< z0#Xt5zhU`1AkojZ&~+^L6?jMcLs_U0-XLK=QTho569i#V!iaETl#fuz+XxW)nFX>j z$S|+4@IYT4PayP;4h-?-1wbd&pxgzdD#-q8t5{ja%CoG@V`XG`NJw-9k2egQGJy77S=j`n zKIET)lX@VFKEq>t!@;`>FB~@<|A_GL5R`%#fsZiC*AN!QKjTK@LH(yVQM@T06!&J} zG>#X=@dr4I<3sVHaiMXg@uBgiai;jwxKW&G{AeD~_|QC{ai#e|<4fZ+5Bd#56(1EH z=^YNA8@6S}{aqVod@DdIL;V$yxZX~I#Cg3JB(AUVz|^d}NI_Iopdiu@@-Ri>W4%H{ z;3IEEM!V&d%`>E$C3!rbr7ln(=mdN+W?@dybNMn!h#@vIG* z_0bz-6DYsKO8YJhH=mUzAYp36cL0fgT!D6IZ%bEZ{j36sWlRAt(jQK&|lP#bIA+h5pBZ6HvnW) zC?5+FdE8$Ng9Wk9Y~BVW+EeJs#M=iXwx@Oz0|I>lKwqE`G=uC1?XjQTL83kKGc+(X z(8tg(Y&z=)>}Mgt&^{nq7#s^yAPfl%i{kNi^=0@L{g`nM5lje!YMwmgQST?VUK;YK zzh)l{6!O+VInIY=AhBG=l*tEzM9vK)#%Vs(V?P5y!qkZm6dL-6gnRRD4Pe^2Lpk<0 z&_66Z5;`=D&HDw0`5M9oqGHa}%d#>8FHv4muo;Iy52JXp7EHYra5zshAdmL_LcF4) z1im~7?F8(PwI$Qe1lpnB0%3GiV2BXnFg{uk8Ot-XVmN^?0;emlHME1RBK{zhWB3^9rhQi)U-c>`UE2 zqMqo;K*Jzd7ZK56u|DCxf>(W*^>_;;)*l9m`{53dI4|Z8WF*zEWZTDpL_gC&qP+x= z7@y{Yn0^Hb4QrOFSEPT0SENuN2j$p)z+gsp1Bv?2gT(&hpm{;Od_fQTvA~hp&jvwW z1M-F-(JzXdE5r)<;m(Xb%^^(uXANc6<6Dq8Kj0cD5WpqVC?2XIo3x6`o-e-FNZw(-G|lJ1tiWp1CZEG zZ4|?4vUz2Y*zZt5q`v^xJk87J&<_3EHk$GGHk+4$4rBZlg2egd=Ov694|XF3(L!{= zCm=jH(AO(+))>a$8z7aTU8KOv*EcXS!YeEm&RaeK!f2mJFQI_fVJzcsL|`P$b|Eix z67~X4R^u4I;j|NmdS633?8jG-7;klusJCX3LHiT#%ynoNNc4LXNNj(>gY92nSYU*g zQ26^gUJ326|4OiVA=dyT>Zg74_x+dlW!i6PAEx$HFAHZI9Cxap-jT5*1%Bf>#|YM* z2FMJMm~ROZubV-EQGwWh-wMq> z>gTfM`cRJXPy>nWeL{pWsP`w#S9Qog0f~OB4Ce9R5*a@>ggLKFfqZMo_YGyvF&!X} zev=*2zZQ6$ca~7E1u{Q~nK$l`$McRdNVKC6!RY$}^=R)QNL7#*Sy=>=3FEd4B(`71 z%0!SDpKy@a-c-np*D{bQke>rm8RTZrgZcB|5BgCCK|*;9B>Fuln%Rf;LOtr4$I2WC zH?~_2QVFCG%CWsWNVIDKQXAwTh#K~@5@a)w39;-vh3kwr#Ipg+U-Ul;%2AI8NaR~j zX2!)H^4Ra&z{`U?4zeZ44It5e8?b{?0VIyo+9}LMbO`#7M#{-Z@sSA1R56zoy zGnsZl;ZZd=4!V%Xc8x(|JYUXW{J#$p{V+>p_@f{(UIkE&ez?wJ;&Pmoq2b|RiO1Uy zd7Qt|VUb=FA%B(ClLr#{O(4-9K}f7H(2K{*Nn-4*1&N$bIP5>LmeSbvQ9_^aFh8GQ z+$SOhF}ye^SBG|J3)|<-WyW9A4`B#vWsGSlyJkQnb0 zkl4Qhkc~k`f<2Vi7clmIk9W(3e=c_i4)xiC#JE0N#N^`_v+DpP#@(Hj;i=5}913}i zJ6(@!_5s5{p&gW?AHIU|(Quo`8vuFie-F@)aa99}ek(0yc+zu<&C`4!eNk+AAV_)O z+GQ}~t^^X}QUwy@$p?vgmt-<_JfS_>h4Ysn48}l)<<~D`%9nveKlPV0<06QR439Jv z#N32D+WESKsc!=QV!r(f=Dg(z^Q$%FFK03KhOK1Q)oI9MyWmw!z4U74`u!U6Do{?> zhgh!=Jc{##g3t+qNFHx6)Z@N&Z4J|}_K;VE{Cm)c>-q^ujB^lkS?6i6^>lvd1$kWe zs^A~mk%v6aTYo{AFgDDG7bFZ1>jC|DWY-17f$l4^HZbEW13ZqiFI*krm<#vQ_}GHS zyUq4X6EzK4YSdI{kg78!%5MIJAT-Dl~X0rRouToDoMkH=`>ne()) zIpdECD}O&vM;J!IX&Cf+h5Eua!lQG<@8;cwxI3|2#qBxDE%2@fipb z<1o=@BHR%M!1EM8ujmlig+kzt1vu}J8l303hlzI{NaSVn7%ng@KoA)i1y4o%{BRxy z3Iu{)Jxq9qpdRC;5A$9HB)n?4^?RA}A^RAAEI^{Zi8ayU@r)pk^G6*d&I7oYh(Zr0 zg~I^_k_?pN`lopx3kMEFJ0D~?ZIC$cl|j~we@I|-Ak@cp>m7!C)&a&|lvkvoAAr^Q zj6dF9kpjbTA+JV4#nwYi|KM&{;1wFfTf^oZ4l{baO_;cvLmuZ_FOb;ZC!i1W5z)-V ze0YTEM|hYIhLblj(klWUXYm$+9~gJ-V~pQIc)*AK*aLa=dkaX^)BiXlgM{8S{$D%F zu>Lm>3RX`r~<9$0qt4nz>Vgd%SKqV2)t1Onb#?u4WA`q`zM1vbJbnYVg4DrF#dhlk0Wr z<7Z_-@DGy0;-BadrYddZGG+>Bw%(HcBCshr;cbze4+RU~? zPfT;VAAUFAeSo|4p{uXt?&|cO>2xhDL3h~5=#+W)FYSH&de8%>4kH3RrX`*-9r@V2 z!ga82|C2VF1s~I&8yM}$>l$P~VtSH7X#)?9w^tRnn%=XUGg+w%jJ>>7QE*}rgxTH?#3^08hQi=Gdbo8IZ# zy2#?-U1NoF?0@XpU=ZgqM8`nyMCn{5eN(H6vTyeluTj!I)&A*_5YM$gOBWrm$gvF^ z7ircmtErmx)0NvNoOKy+xs#T*@}`w7jSgOU>NBR`L%dGh`VpzA{hsRwr7TPGR{hpU zQK$KbjwTuZLa?1OE;IIo`M2d=XBdAp(o^&2Xxvm zm3BUfzcs)^xo^zc%~OM3%C#vmvRvk|uc4xJ&%x*Su35Zi((y-&vYV;deXLv>RlUaS zLw?|a{@ErCLm!uyA6=2t{cs=WkX!bO8!Q$rp04FOb;A4h;|j;ySUXH9`Q)BC)g-Iv z=iCL~v-asLKkLf#@}+wjL3JxOfV`}O1@3QDt!A6vAMdv9fZ zYIyn4HM8GM*K8P7;u~`Dt+e)}AySXxuEi%sE^l`yX<$>u2gThwe>?ZBw0r)~lwDBctgihFnEDI@P6bn&J*b`DmP zeS0#p?N^#O7nxpm&RvRoA}P15(VBBS05;S zQy%U)cM?D2s;#lMrx~wb%S+{(GzX4U6G&fKtn$=lvrSz3=(%l|t-7@4$;vXt{+CYN zlew_eyrR>IZIM%NyBoRe>U1FG!{Rovm$tn>WbⓈZaL=y1O?y5_93s6VoEgx#P~d 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 diff --git a/package.json b/package.json index 42aa10d..f93cd24 100644 --- a/package.json +++ b/package.json @@ -15,17 +15,17 @@ "web": "bun --filter ./apps/web" }, "devDependencies": { - "eslint": "^9.17.0", + "eslint": "^9.18.0", "husky": "^9.1.7", - "lint-staged": "^15.3.0", + "lint-staged": "^15.4.2", "prettier": "3.4.2", - "prettier-plugin-tailwindcss": "^0.6.10", - "turbo": "^2.3.3", + "prettier-plugin-tailwindcss": "^0.6.11", + "turbo": "^2.3.4", "typescript": "^5.7.3", - "vite": "6.0.7", - "vitest": "^2.1.8" + "vite": "6.0.11", + "vitest": "^3.0.4" }, - "packageManager": "bun@1.1.45", + "packageManager": "bun@1.2.0", "overrides": { "@swc/core": "1.7.40" } diff --git a/packages/ui/package.json b/packages/ui/package.json index 7e6e234..d110680 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -16,32 +16,32 @@ }, "dependencies": { "@radix-ui/react-aspect-ratio": "^1.1.1", - "@radix-ui/react-dropdown-menu": "^2.1.4", + "@radix-ui/react-dropdown-menu": "^2.1.5", "@radix-ui/react-label": "^2.1.1", "@radix-ui/react-separator": "^1.1.1", "@radix-ui/react-slider": "^1.2.2", "@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-toggle": "^1.1.1", "@radix-ui/react-toggle-group": "^1.1.1", - "@radix-ui/react-tooltip": "^1.1.6", - "class-variance-authority": "^0.7.0", + "@radix-ui/react-tooltip": "^1.1.7", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "lucide-react": "0.456.0", - "next-themes": "^0.4.3", + "lucide-react": "0.474.0", + "next-themes": "^0.4.4", "react": "^19.0.0", "react-dom": "^19.0.0", "react-hook-form": "^7.54.2", - "tailwind-merge": "^2.5.4", + "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7" }, "devDependencies": { - "@types/node": "^22.9.0", + "@types/node": "^22.10.10", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.1", "autoprefixer": "^10.4.20", - "postcss": "^8.4.47", + "postcss": "^8.5.1", "react": "^18.3.1", "tailwindcss": "^3.4.14", - "typescript": "^5.6.3" + "typescript": "^5.7.3" } } \ No newline at end of file From 296f91e89684f5951d508cde67cb50402bd2ab31 Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Sat, 25 Jan 2025 11:43:02 +0200 Subject: [PATCH 07/25] feat: abortable import --- apps/web/package.json | 2 +- .../atoms/{importAtom.ts => importAtoms.ts} | 28 +++++++++------- apps/web/src/atoms/isImportOpenAtom.ts | 3 -- apps/web/src/components/ImportImages.tsx | 33 +++++++++---------- apps/web/src/components/SeeExample.tsx | 2 +- apps/web/src/types.ts | 10 +++++- apps/web/src/utils/atomWithToggle.ts | 2 +- apps/web/src/utils/createAbortablePromise.ts | 17 ++++++++++ apps/web/src/utils/loadImage.ts | 15 +++++++-- apps/web/src/utils/readFile.ts | 13 ++++++-- bun.lock | 10 +++--- package.json | 2 +- 12 files changed, 89 insertions(+), 48 deletions(-) rename apps/web/src/atoms/{importAtom.ts => importAtoms.ts} (59%) delete mode 100644 apps/web/src/atoms/isImportOpenAtom.ts create mode 100644 apps/web/src/utils/createAbortablePromise.ts diff --git a/apps/web/package.json b/apps/web/package.json index 2dcdecf..ecc3cff 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -28,7 +28,7 @@ "browser-fs-access": "^0.35.0", "clsx": "^2.1.1", "jotai": "^2.11.1", - "jotai-effect": "^1.0.7", + "jotai-effect": "^1.1.0", "lucide-react": "^0.474.0", "react": "^18.3.1", "react-dom": "^18.3.1" diff --git a/apps/web/src/atoms/importAtom.ts b/apps/web/src/atoms/importAtoms.ts similarity index 59% rename from apps/web/src/atoms/importAtom.ts rename to apps/web/src/atoms/importAtoms.ts index bc31184..8e41732 100644 --- a/apps/web/src/atoms/importAtom.ts +++ b/apps/web/src/atoms/importAtoms.ts @@ -1,41 +1,47 @@ -import { atomWithReset } from 'jotai/utils'; -import { deviceType, url } from '@workspace/schema'; import { client } from '@/utils/client'; import { readFile } from '@/utils/readFile'; import { loadImage } from '@/utils/loadImage'; import { imagesAtom } from '@/atoms/imagesAtom'; import { atomWithExpiringWriteState } from '@/utils/atomWithExpiringWriteState'; +import { ImageSource } from '@/types'; +import { atom } from 'jotai'; -export type Site = { url: typeof url.static; deviceType: typeof deviceType.static }; -export type ImageSource = Site | File | string; +const importAbortController = atom(null); -export const imageSourcesAtom = atomWithReset([]); +export const importSignalAtom = atom( + get => get(importAbortController)?.signal, + (get, set, refresh: boolean) => { + get(importAbortController)?.abort(); + set(importAbortController, refresh ? new AbortController() : null); + } +); export const importAtom = atomWithExpiringWriteState( - async (_get, set, imageSources: ImageSource[]) => { + async (get, set, imageSources: ImageSource[]) => { + const signal = get(importSignalAtom); const blobsByName = await Promise.all( imageSources.flatMap>>(async source => { if (source instanceof File) { return [[source.name, source]]; } if (typeof source === 'string') { - const blob = await (await fetch(source)).blob(); + const blob = await (await fetch(source, { signal })).blob(); return [[source, blob]]; } const { data } = await client .screenshots({ url: encodeURIComponent(source.url) }) - .get({ query: source }); + .get({ query: source, fetch: { signal } }); return Object.entries(data || {}); }) ); const images = await Promise.all( blobsByName.flat().map(async ([name, blob]) => { - const dataUrl = (await readFile(fr => - fr.readAsDataURL(blob) - )) as string; + const dataUrl = (await readFile(fr => fr.readAsDataURL(blob), { + signal + })) as string; const image = await loadImage(dataUrl); image.id = name; return image; diff --git a/apps/web/src/atoms/isImportOpenAtom.ts b/apps/web/src/atoms/isImportOpenAtom.ts deleted file mode 100644 index 9daa023..0000000 --- a/apps/web/src/atoms/isImportOpenAtom.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { atomWithToggle } from '@/utils/atomWithToggle'; - -export const isImportOpenAtom = atomWithToggle(); \ No newline at end of file diff --git a/apps/web/src/components/ImportImages.tsx b/apps/web/src/components/ImportImages.tsx index 27aa787..4a344d3 100644 --- a/apps/web/src/components/ImportImages.tsx +++ b/apps/web/src/components/ImportImages.tsx @@ -16,7 +16,6 @@ import { DialogTitle, DialogTrigger } from '@workspace/ui/components/dialog'; -import { isImportOpenAtom } from '@/atoms/isImportOpenAtom'; import { Form, FormControl, @@ -32,10 +31,11 @@ import { ToggleGroupItem } from '@workspace/ui/components/toggle-group'; import { ChooseFiles } from '@/components/ChooseFiles'; -import { LoadableIcon } from './LoadableIcon'; -import { ImageSource, importAtom, Site } from '@/atoms/importAtom'; +import { LoadableIcon } from '@/components/LoadableIcon'; +import { importAtom, importSignalAtom } from '@/atoms/importAtoms'; import { imagesAtom } from '@/atoms/imagesAtom'; import { LOADABLE_STATE } from '@/constants'; +import { ImageSource, Site } from '@/types'; const importSchema = Type.Object({ url, @@ -45,8 +45,8 @@ const importSchema = Type.Object({ export function ImportImages() { const { t } = useLingui(); const images = useAtomValue(imagesAtom); - const [isImportOpen, toggleImportOpen] = useAtom(isImportOpenAtom); const [importState, importImages] = useAtom(importAtom); + const [importSignal, toggleImportSignal] = useAtom(importSignalAtom); const isImporting = importState === LOADABLE_STATE.LOADING; @@ -58,10 +58,14 @@ export function ImportImages() { } }); - const handleSubmitOrFilesChange = async (imageSource: ImageSource | ImageSource[]) => { - await importImages(Array.isArray(imageSource) ? imageSource : [imageSource]); - toggleImportOpen(false) - } + const handleSubmitOrFilesChange = async ( + imageSource: ImageSource | ImageSource[] + ) => { + await importImages( + Array.isArray(imageSource) ? imageSource : [imageSource] + ); + toggleImportSignal(false); + }; const handleDeviceTypeChange = (handler: (...event: any[]) => void) => (deviceType?: string) => { @@ -71,15 +75,11 @@ export function ImportImages() { }; return ( - + - - - setTheme('light')}> - - Light - - setTheme('dark')}> - - Dark - - setTheme('system')}> - - System - - - + ); } diff --git a/apps/web/src/hooks/useTheme.ts b/apps/web/src/hooks/useTheme.ts new file mode 100644 index 0000000..759bcb6 --- /dev/null +++ b/apps/web/src/hooks/useTheme.ts @@ -0,0 +1,34 @@ +import { useAtom } from 'jotai'; +import { appliedThemeAtom, themeAtom } from '@/atoms/themeAtom'; +import { useLayoutEffect } from 'react'; + +const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)'); + +export function useTheme() { + const [theme, setTheme] = useAtom(themeAtom); + const [appliedTheme, setAppliedTheme] = useAtom(appliedThemeAtom); + + useLayoutEffect(() => { + const applyTheme = () => { + const resolvedTheme = + theme === 'system' + ? prefersDarkScheme.matches + ? 'dark' + : 'light' + : theme; + + const root = window.document.documentElement; + root.classList.toggle('dark', resolvedTheme === 'dark'); + root.classList.toggle('light', resolvedTheme !== 'dark'); + + setAppliedTheme(resolvedTheme); + }; + + applyTheme(); + + prefersDarkScheme.addEventListener('change', applyTheme); + return () => prefersDarkScheme.removeEventListener('change', applyTheme); + }, [theme, setAppliedTheme]); + + return [appliedTheme, setTheme] as const; +} diff --git a/apps/web/src/hooks/useThemeEffect.ts b/apps/web/src/hooks/useThemeEffect.ts deleted file mode 100644 index 87bad1c..0000000 --- a/apps/web/src/hooks/useThemeEffect.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { useLayoutEffect } from 'react'; -import { useAtomValue } from 'jotai'; -import { themeAtom } from '@/atoms/themeAtom'; - -export function useThemeEffect() { - const theme = useAtomValue(themeAtom); - useLayoutEffect(() => { - const root = window.document.documentElement; - root.classList.remove('light', 'dark'); - root.classList.add( - theme === 'system' - ? window.matchMedia('(prefers-color-scheme: dark)').matches - ? 'dark' - : 'light' - : theme - ); - }, [theme]); -} diff --git a/apps/web/src/utils/atomWithToggle.ts b/apps/web/src/utils/atomWithToggle.ts index e5658fd..b5bb97e 100644 --- a/apps/web/src/utils/atomWithToggle.ts +++ b/apps/web/src/utils/atomWithToggle.ts @@ -1,4 +1,4 @@ -import { WritableAtom, atom } from 'jotai'; +import { atom } from 'jotai'; export function atomWithToggle(initialValue?: boolean) { const anAtom = atom(initialValue, (get, set, nextValue?: boolean) => { @@ -6,5 +6,5 @@ export function atomWithToggle(initialValue?: boolean) { set(anAtom, update); }); - return anAtom// as WritableAtom; + return anAtom; } diff --git a/packages/ui/package.json b/packages/ui/package.json index be14492..e9c7d2f 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -27,7 +27,6 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "0.474.0", - "next-themes": "^0.4.4", "react": "^19.0.0", "react-dom": "^19.0.0", "react-hook-form": "^7.54.2", @@ -35,7 +34,6 @@ "tailwindcss-animate": "^1.0.7" }, "devDependencies": { - "@types/node": "^22.10.10", "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", "autoprefixer": "^10.4.20", From 0af3268d294effbce45958091043cf9ec43af286 Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Mon, 27 Jan 2025 17:00:26 +0200 Subject: [PATCH 10/25] fix: clashing wave keys --- apps/web/src/atoms/importAtoms.ts | 45 +++++++++++++----------- apps/web/src/components/Graphics.tsx | 10 +++--- apps/web/src/components/ImportImages.tsx | 8 +++-- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/apps/web/src/atoms/importAtoms.ts b/apps/web/src/atoms/importAtoms.ts index 8e41732..03db1a6 100644 --- a/apps/web/src/atoms/importAtoms.ts +++ b/apps/web/src/atoms/importAtoms.ts @@ -1,10 +1,12 @@ +import { atom } from 'jotai'; import { client } from '@/utils/client'; import { readFile } from '@/utils/readFile'; import { loadImage } from '@/utils/loadImage'; import { imagesAtom } from '@/atoms/imagesAtom'; import { atomWithExpiringWriteState } from '@/utils/atomWithExpiringWriteState'; import { ImageSource } from '@/types'; -import { atom } from 'jotai'; + +let imageId = 0; const importAbortController = atom(null); @@ -19,31 +21,34 @@ export const importSignalAtom = atom( export const importAtom = atomWithExpiringWriteState( async (get, set, imageSources: ImageSource[]) => { const signal = get(importSignalAtom); - const blobsByName = await Promise.all( - imageSources.flatMap>>(async source => { - if (source instanceof File) { - return [[source.name, source]]; - } - if (typeof source === 'string') { - const blob = await (await fetch(source, { signal })).blob(); - return [[source, blob]]; - } - const { data } = await client - .screenshots({ - url: encodeURIComponent(source.url) - }) - .get({ query: source, fetch: { signal } }); + const blobs = ( + await Promise.all( + imageSources.map>(async source => { + if (source instanceof File) { + return source; + } + if (typeof source === 'string') { + return (await fetch(source, { signal })).blob(); + } + const { url, deviceType } = source; + const { data } = await client + .screenshots({ + url: encodeURIComponent(url) + }) + .get({ query: { deviceType }, fetch: { signal } }); + + return Object.values(data || {}); + }) + ) + ).flat(); - return Object.entries(data || {}); - }) - ); const images = await Promise.all( - blobsByName.flat().map(async ([name, blob]) => { + blobs.map(async blob => { const dataUrl = (await readFile(fr => fr.readAsDataURL(blob), { signal })) as string; const image = await loadImage(dataUrl); - image.id = name; + image.id = `${imageId++}`; return image; }) ); diff --git a/apps/web/src/components/Graphics.tsx b/apps/web/src/components/Graphics.tsx index da9e0cd..a43768a 100644 --- a/apps/web/src/components/Graphics.tsx +++ b/apps/web/src/components/Graphics.tsx @@ -42,10 +42,10 @@ export function Graphics(props: GraphicsProps) { {orderedImages.map( - (_, i) => + (image, i) => i !== orderedImages.length - 1 && ( - {orderedImages.map((image, index) => ( + {orderedImages.map((image, i) => ( = 1 && { - clipPath: `url(#${waveId}${orderedImages.length - index})` + {...(i >= 1 && { + clipPath: `url(#${waveId}${orderedImages.length - i})` })} /> ))} diff --git a/apps/web/src/components/ImportImages.tsx b/apps/web/src/components/ImportImages.tsx index 4a344d3..2f20423 100644 --- a/apps/web/src/components/ImportImages.tsx +++ b/apps/web/src/components/ImportImages.tsx @@ -6,7 +6,7 @@ import { Type } from '@sinclair/typebox'; import { Trans, Plural, useLingui } from '@lingui/react/macro'; import { url, deviceType } from '@workspace/schema'; import { cn } from '@workspace/ui/lib/utils'; -import { Button } from '@workspace/ui/components/button'; +import { Button, ButtonProps } from '@workspace/ui/components/button'; import { Dialog, DialogContent, @@ -42,7 +42,9 @@ const importSchema = Type.Object({ deviceType }); -export function ImportImages() { +export type ImportImagesProps = ButtonProps; + +export function ImportImages(props: ImportImagesProps) { const { t } = useLingui(); const images = useAtomValue(imagesAtom); const [importState, importImages] = useAtom(importAtom); @@ -77,7 +79,7 @@ export function ImportImages() { return ( - + ); +} diff --git a/apps/web/src/components/Sin.tsx b/apps/web/src/components/Sin.tsx new file mode 100644 index 0000000..95c5c91 --- /dev/null +++ b/apps/web/src/components/Sin.tsx @@ -0,0 +1,3 @@ +import { createGraphIcon } from '@/utils/createGraphIcon'; + +export const Sin = createGraphIcon('Sin', x => Math.sin(x / 24 * 2 * Math.PI) * 8) diff --git a/apps/web/src/components/Controls.tsx b/apps/web/src/components/Waveform.tsx similarity index 79% rename from apps/web/src/components/Controls.tsx rename to apps/web/src/components/Waveform.tsx index 12b35ae..92791ec 100644 --- a/apps/web/src/components/Controls.tsx +++ b/apps/web/src/components/Waveform.tsx @@ -1,7 +1,5 @@ -import { useAtom, useAtomValue } from 'jotai'; +import { useAtomValue } from 'jotai'; import { Trans, useLingui } from '@lingui/react/macro'; -import { cn } from '@workspace/ui/lib/utils'; -import { sensibleDefaultsEffect } from '@/atoms/sensibleDefaultsEffect'; import { rotationAtom } from '@/atoms/rotationAtom'; import { MIN_WAVELENGTH, @@ -17,22 +15,17 @@ import { imagesAtom } from '@/atoms/imagesAtom'; import { scaleAtom } from '@/atoms/scaleAtom'; import { AtomSlider } from '@/components/AtomSlider'; -export type ControlsProp = React.ComponentPropsWithoutRef<'div'>; - -export function Controls(props: ControlsProp) { - const { className, ...other } = props; +export function Waveform() { const { t } = useLingui(); const images = useAtomValue(imagesAtom); const maxAmplitude = useAtomValue(maxAmplitudeAtom); const maxWavelength = useAtomValue(maxWavelengthAtom); const scale = useAtomValue(scaleAtom); - useAtom(sensibleDefaultsEffect); - const renderValueInPx = (value: number) => `${Math.round(value * scale)}px`; return ( -
+ <> Rotation} atom={rotationAtom} @@ -66,6 +59,6 @@ export function Controls(props: ControlsProp) { 'aria-label': t`Amplitude` }} /> -
+ ); } diff --git a/apps/web/src/constants.ts b/apps/web/src/constants.ts index 62f0b51..23c1d70 100644 --- a/apps/web/src/constants.ts +++ b/apps/web/src/constants.ts @@ -9,6 +9,11 @@ export const LOADABLE_STATE = { HAS_ERROR: 'hasError' } as const; +export const WAVE_FUNCTION = { + SIN: 'sin', + COS: 'cos' +} as const; + export const DEFAULT_LOADABLE_STATE_TIMEOUT = 1000; export const DEFAULT_FILENAME = 'shadowave'; diff --git a/apps/web/src/types.ts b/apps/web/src/types.ts index 520a314..2547b8d 100644 --- a/apps/web/src/types.ts +++ b/apps/web/src/types.ts @@ -1,10 +1,12 @@ import { deviceType, url } from '@workspace/schema'; -import { LOADABLE_STATE } from '@/constants'; +import { LOADABLE_STATE, WAVE_FUNCTION } from '@/constants'; type ValueOf = T[keyof T]; export type LoadableState = ValueOf; +export type WaveFunction = ValueOf; + export type Site = { url: typeof url.static; deviceType: typeof deviceType.static; diff --git a/apps/web/src/utils/createGraphIcon.ts b/apps/web/src/utils/createGraphIcon.ts new file mode 100644 index 0000000..ec9800e --- /dev/null +++ b/apps/web/src/utils/createGraphIcon.ts @@ -0,0 +1,16 @@ +import { createLucideIcon } from 'lucide-react'; + +const width = 24; +const height = 24; + +export function createGraphIcon(iconName: string, getY: (x: number) => number) { + const points: number[] = []; + + for (let x = 0; x <= width; x++) { + points.push(x, height / 2 + getY(x)); + } + + return createLucideIcon(iconName, [ + ['polyline', { points: points.join(' ') }] + ]); +} diff --git a/bun.lock b/bun.lock index 369d5ec..74a482a 100644 --- a/bun.lock +++ b/bun.lock @@ -27,6 +27,7 @@ }, "devDependencies": { "@tsconfig/bun": "^1.0.7", + "@workspace/eslint-config": "workspace:*", "bun-types": "latest", }, }, @@ -48,7 +49,6 @@ "browser-fs-access": "^0.35.0", "clsx": "^2.1.1", "jotai": "^2.11.1", - "jotai-effect": "^1.1.4", "lucide-react": "^0.474.0", "react": "^19.0.0", "react-dom": "^19.0.0", @@ -65,6 +65,7 @@ "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "3.7.2", + "@workspace/eslint-config": "workspace:*", "autoprefixer": "^10.4.20", "elysia": "^1.2.10", "postcss": "^8.5.1", @@ -881,8 +882,6 @@ "jotai": ["jotai@2.11.1", "", { "peerDependencies": { "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-41Su098mpHIX29hF/XOpDb0SqF6EES7+HXfrhuBqVSzRkxX48hD5i8nGsEewWZNAsBWJCTTmuz8M946Ih2PfcQ=="], - "jotai-effect": ["jotai-effect@1.1.4", "", { "peerDependencies": { "jotai": ">=2.5.0" } }, "sha512-kEdxcmU6XSxHdEvig9jBUmD27F7hkIpFAaZnOwcrHNORf/M3/DNtXlUJwt8VndoipVgGqNDYLsCXJIRdROXZbA=="], - "js-sha256": ["js-sha256@0.10.1", "", {}, "sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw=="], "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], From 1b4c0bf6d5ff815b96cddc753e071c973417b81c Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Wed, 29 Jan 2025 01:43:52 +0200 Subject: [PATCH 16/25] chore: messages --- apps/web/src/locales/en.po | 81 ++++++++++++++++++++------------------ apps/web/src/locales/en.ts | 2 +- 2 files changed, 43 insertions(+), 40 deletions(-) diff --git a/apps/web/src/locales/en.po b/apps/web/src/locales/en.po index c937530..4cdb4f6 100644 --- a/apps/web/src/locales/en.po +++ b/apps/web/src/locales/en.po @@ -14,33 +14,29 @@ msgstr "" "Plural-Forms: \n" #. placeholder {0}: images.length -#: src/components/ImportImages.tsx:79 +#: src/components/ImportImages.tsx:84 msgid "{0, plural, one {# image} other {# images}}" msgstr "" -#: src/components/Controls.tsx:59 -#: src/components/Controls.tsx:66 +#: src/components/Waveform.tsx:52 +#: src/components/Waveform.tsx:59 msgid "Amplitude" msgstr "" -#: src/App.tsx:20 +#: src/App.tsx:17 msgid "Built by <0>gzukas. The source code is available on <1>GitHub." msgstr "" -#: src/components/RemoveImages.tsx:47 +#: src/components/RemoveImages.tsx:49 msgid "Cancel" msgstr "" -#: src/components/ChangeTheme.tsx:22 -msgid "Change theme" -msgstr "" - #: src/components/ExportImage.tsx:63 #: src/components/ExportImage.tsx:73 msgid "Choose file" msgstr "" -#: src/components/ImportImages.tsx:183 +#: src/components/ImportImages.tsx:180 msgid "Choose Files" msgstr "" @@ -49,12 +45,12 @@ msgstr "" msgid "Copy PNG" msgstr "" -#: src/components/ChangeTheme.tsx:33 -msgid "Dark" +#: src/components/ChangeWaveFunction.tsx:37 +msgid "Cosine" msgstr "" -#: src/components/ImportImages.tsx:147 -#: src/components/ImportImages.tsx:151 +#: src/components/ImportImages.tsx:144 +#: src/components/ImportImages.tsx:148 msgid "Desktop" msgstr "" @@ -62,45 +58,44 @@ msgstr "" msgid "Export" msgstr "" -#: src/components/ImportImages.tsx:116 +#: src/components/ImportImages.tsx:115 msgid "https://example.com" msgstr "" -#: src/components/ImportImages.tsx:85 -#: src/components/ImportImages.tsx:92 -#: src/components/ImportImages.tsx:197 +#: src/components/ImportImages.tsx:86 +#: src/components/ImportImages.tsx:93 +#: src/components/ImportImages.tsx:194 msgid "Import" msgstr "" -#: src/components/Editor.tsx:37 +#: src/components/Editor.tsx:39 msgid "Import images featuring both light and dark themes to start." msgstr "" -#: src/components/ChangeTheme.tsx:29 -msgid "Light" -msgstr "" - -#: src/components/ImportImages.tsx:163 -#: src/components/ImportImages.tsx:167 +#: src/components/ImportImages.tsx:160 +#: src/components/ImportImages.tsx:164 msgid "Mobile" msgstr "" -#: src/components/RemoveImages.tsx:50 +#: src/components/RemoveImages.tsx:52 msgid "Remove" msgstr "" -#: src/components/RemoveImages.tsx:26 -#: src/components/RemoveImages.tsx:32 +#: src/components/RemoveImages.tsx:30 msgid "Remove images" msgstr "" +#: src/components/RemoveImages.tsx:38 +msgid "Remove images?" +msgstr "" + #: src/components/ReverseImages.tsx:22 #: src/components/ReverseImages.tsx:27 msgid "Reverse images" msgstr "" -#: src/components/Controls.tsx:37 -#: src/components/Controls.tsx:44 +#: src/components/Waveform.tsx:30 +#: src/components/Waveform.tsx:37 msgid "Rotation" msgstr "" @@ -112,24 +107,32 @@ msgstr "" msgid "See Example" msgstr "" -#: src/components/ImportImages.tsx:124 -msgid "Start with web protocol, e.g. <0>https://" +#: src/components/ChangeWaveFunction.tsx:33 +msgid "Sine" msgstr "" -#: src/components/ChangeTheme.tsx:37 -msgid "System" +#: src/components/ImportImages.tsx:121 +msgid "Start with web protocol, e.g. <0>https://" msgstr "" -#: src/components/ImportImages.tsx:155 -#: src/components/ImportImages.tsx:159 +#: src/components/ImportImages.tsx:152 +#: src/components/ImportImages.tsx:156 msgid "Tablet" msgstr "" -#: src/components/ImportImages.tsx:95 +#: src/components/ImportImages.tsx:96 msgid "The side should respond to the light and dark themes using the <0>prefers-color-scheme media query. If it does not, choose files instead." msgstr "" -#: src/components/Controls.tsx:48 -#: src/components/Controls.tsx:55 +#: src/components/RemoveImages.tsx:41 +msgid "These images will be permanently removed. This action cannot be undone." +msgstr "" + +#: src/components/ChangeTheme.tsx:23 +msgid "Toggle theme" +msgstr "" + +#: src/components/Waveform.tsx:41 +#: src/components/Waveform.tsx:48 msgid "Wavelength" msgstr "" diff --git a/apps/web/src/locales/en.ts b/apps/web/src/locales/en.ts index 58fd55e..3ed1369 100644 --- a/apps/web/src/locales/en.ts +++ b/apps/web/src/locales/en.ts @@ -1 +1 @@ -/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"nJw77c\":[[\"0\",\"plural\",{\"one\":[\"#\",\" image\"],\"other\":[\"#\",\" images\"]}]],\"sowZBN\":[\"Amplitude\"],\"R5LSjZ\":[\"Built by <0>gzukas. The source code is available on <1>GitHub.\"],\"dEgA5A\":[\"Cancel\"],\"x6tIe+\":[\"Change theme\"],\"+yPBXI\":[\"Choose file\"],\"8kLsG2\":[\"Choose Files\"],\"jMmFWW\":[\"Copy PNG\"],\"pvnfJD\":[\"Dark\"],\"BBqGS9\":[\"Desktop\"],\"GS+Mus\":[\"Export\"],\"jLXxGK\":[\"https://example.com\"],\"l3s5ri\":[\"Import\"],\"5+Jw7w\":[\"Import images featuring both light and dark themes to start.\"],\"1njn7W\":[\"Light\"],\"dMsM20\":[\"Mobile\"],\"t/YqKh\":[\"Remove\"],\"kdFX6f\":[\"Remove images\"],\"KmK/36\":[\"Reverse images\"],\"exWyD0\":[\"Rotation\"],\"TRo55K\":[\"Save to\"],\"PPWgQv\":[\"See Example\"],\"N0dgdE\":[\"Start with web protocol, e.g. <0>https://\"],\"D+NlUC\":[\"System\"],\"Dl80Sh\":[\"Tablet\"],\"8+z3yQ\":[\"The side should respond to the light and dark themes using the <0>prefers-color-scheme media query. If it does not, choose files instead.\"],\"eKV6Y2\":[\"Wavelength\"]}")as Messages; \ No newline at end of file +/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"nJw77c\":[[\"0\",\"plural\",{\"one\":[\"#\",\" image\"],\"other\":[\"#\",\" images\"]}]],\"sowZBN\":[\"Amplitude\"],\"R5LSjZ\":[\"Built by <0>gzukas. The source code is available on <1>GitHub.\"],\"dEgA5A\":[\"Cancel\"],\"+yPBXI\":[\"Choose file\"],\"8kLsG2\":[\"Choose Files\"],\"jMmFWW\":[\"Copy PNG\"],\"83/ChY\":[\"Cosine\"],\"BBqGS9\":[\"Desktop\"],\"GS+Mus\":[\"Export\"],\"jLXxGK\":[\"https://example.com\"],\"l3s5ri\":[\"Import\"],\"5+Jw7w\":[\"Import images featuring both light and dark themes to start.\"],\"dMsM20\":[\"Mobile\"],\"t/YqKh\":[\"Remove\"],\"kdFX6f\":[\"Remove images\"],\"q9Ojcg\":[\"Remove images?\"],\"KmK/36\":[\"Reverse images\"],\"exWyD0\":[\"Rotation\"],\"TRo55K\":[\"Save to\"],\"PPWgQv\":[\"See Example\"],\"L8Jb2l\":[\"Sine\"],\"N0dgdE\":[\"Start with web protocol, e.g. <0>https://\"],\"Dl80Sh\":[\"Tablet\"],\"8+z3yQ\":[\"The side should respond to the light and dark themes using the <0>prefers-color-scheme media query. If it does not, choose files instead.\"],\"QXQk5/\":[\"These images will be permanently removed. This action cannot be undone.\"],\"2N0C4b\":[\"Toggle theme\"],\"eKV6Y2\":[\"Wavelength\"]}")as Messages; \ No newline at end of file From 6f7b963f7fbc17d2cdf04c48d8bcb7487d5e492f Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Sat, 1 Feb 2025 00:59:03 +0200 Subject: [PATCH 17/25] feat: persist images --- apps/api/package.json | 5 +- apps/api/src/routes/screenshots.ts | 9 +- apps/api/tsconfig.json | 7 +- apps/web/package.json | 28 +-- apps/web/src/atoms/amplitudeAtoms.ts | 17 -- apps/web/src/atoms/exportAtoms.ts | 4 +- apps/web/src/atoms/imagesAtom.ts | 40 ++-- apps/web/src/atoms/importAtoms.ts | 27 +-- apps/web/src/atoms/largestImageAtom.ts | 7 +- apps/web/src/atoms/orderedImagesAtom.ts | 4 +- apps/web/src/atoms/resetAtom.ts | 20 -- apps/web/src/atoms/rotationAtom.ts | 6 - apps/web/src/atoms/scaleAtom.ts | 4 +- apps/web/src/atoms/themeAtom.ts | 11 +- apps/web/src/atoms/waveAtom.ts | 12 +- apps/web/src/atoms/waveformAtoms.ts | 59 +++++ apps/web/src/atoms/wavelengthAtoms.ts | 16 -- apps/web/src/components/AtomSlider.tsx | 20 +- .../web/src/components/ChangeWaveFunction.tsx | 4 +- apps/web/src/components/Editor.tsx | 56 +++-- apps/web/src/components/Graphics.tsx | 24 ++- apps/web/src/components/ImportImages.tsx | 8 +- apps/web/src/components/OptimizeWaveform.tsx | 26 +++ apps/web/src/components/RemoveImages.tsx | 21 +- apps/web/src/components/Reset.tsx | 13 -- apps/web/src/components/ReverseImages.tsx | 12 +- apps/web/src/components/Waveform.tsx | 42 ++-- .../src/utils/atomWithExpiringWriteState.ts | 3 +- apps/web/src/utils/createGraphIcon.ts | 2 +- apps/web/src/utils/createIndexedDbStorage.ts | 14 ++ bun.lock | 201 ++++++++++-------- package.json | 4 +- packages/eslint-config/package.json | 4 +- packages/schema/package.json | 5 +- packages/ui/src/components/skeleton.tsx | 15 ++ turbo.json | 6 +- 36 files changed, 432 insertions(+), 324 deletions(-) delete mode 100644 apps/web/src/atoms/amplitudeAtoms.ts delete mode 100644 apps/web/src/atoms/resetAtom.ts delete mode 100644 apps/web/src/atoms/rotationAtom.ts create mode 100644 apps/web/src/atoms/waveformAtoms.ts delete mode 100644 apps/web/src/atoms/wavelengthAtoms.ts create mode 100644 apps/web/src/components/OptimizeWaveform.tsx delete mode 100644 apps/web/src/components/Reset.tsx create mode 100644 apps/web/src/utils/createIndexedDbStorage.ts create mode 100644 packages/ui/src/components/skeleton.tsx diff --git a/apps/api/package.json b/apps/api/package.json index 0cdfe29..346e09a 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,12 +1,13 @@ { - "name": "@shadowave/api", + "name": "@workspace/api", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "bun run --hot src/index.ts", "start": "bun run src/index.ts", - "lint": "eslint . --max-warnings 0" + "lint": "eslint . --max-warnings 0", + "typecheck": "tsc --noEmit" }, "dependencies": { "@elysiajs/cors": "^1.2.0", diff --git a/apps/api/src/routes/screenshots.ts b/apps/api/src/routes/screenshots.ts index 09acd45..5b3b7a2 100644 --- a/apps/api/src/routes/screenshots.ts +++ b/apps/api/src/routes/screenshots.ts @@ -1,12 +1,18 @@ import { Elysia, form, t } from 'elysia'; import puppeteer, { type Device, KnownDevices } from 'puppeteer'; -import { url, deviceType } from '@workspace/schema'; +import { url } from '@workspace/schema'; type ColorScheme = 'light' | 'dark'; type DeviceType = typeof deviceType.static; const TIMEOUT = 100000; +const deviceType = t.Union([ + t.Literal('desktop'), + t.Literal('tablet'), + t.Literal('mobile') +]); + const defaultColorSchemes: ColorScheme[] = ['dark', 'light']; const deviceMapping: Partial> = { mobile: KnownDevices['iPhone 15'], @@ -40,7 +46,6 @@ const screenshotService = new Elysia({ name: 'Service.Screenshot' }) ]); await page.waitForNetworkIdle({ timeout: TIMEOUT }); const screenshot = await page.screenshot({ - // fullPage: true, type: 'webp' }); yield [colorScheme, screenshot] as const; diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json index 97083ef..95ccf11 100644 --- a/apps/api/tsconfig.json +++ b/apps/api/tsconfig.json @@ -1,9 +1,12 @@ { "extends": "@tsconfig/bun", "compilerOptions": { + "module": "ESNext", + "moduleResolution": "bundler", + "types": ["bun-types"], "paths": { "@/*": ["./src/*"], - "@workspace/schema/*": ["../../packages/schema/src/*"], - }, + "@workspace/schema/*": ["../../packages/schema/src/*"] + } } } diff --git a/apps/web/package.json b/apps/web/package.json index 36c0015..dd8d8dc 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,5 +1,5 @@ { - "name": "@shadowave/web", + "name": "@workspace/web", "private": true, "version": "0.0.0", "type": "module", @@ -12,35 +12,39 @@ "messages:compile": "lingui compile --typescript", "preview": "vite preview" }, - "packageManager": "bun@1.2.0", + "packageManager": "bun@1.2.1", "dependencies": { "@elysiajs/eden": "^1.2.0", "@hookform/resolvers": "^3.10.0", - "@lingui/core": "^5.1.2", - "@lingui/macro": "^5.1.2", - "@lingui/react": "^5.1.2", + "@lingui/core": "^5.2.0", + "@lingui/macro": "^5.2.0", + "@lingui/react": "^5.2.0", "@radix-ui/react-alert-dialog": "^1.1.5", "@radix-ui/react-dialog": "^1.1.5", "@radix-ui/react-slot": "^1.1.1", - "@sinclair/typebox": "^0.34.14", + "@sinclair/typebox": "^0.34.15", "@workspace/schema": "workspace:*", "@workspace/ui": "workspace:*", "browser-fs-access": "^0.35.0", "clsx": "^2.1.1", - "jotai": "^2.11.1", + "idb-keyval": "^6.2.1", + "jotai": "^2.11.2", + "jotai-effect": "^1.1.6", + "jotai-optics": "^0.4.0", "lucide-react": "^0.474.0", + "optics-ts": "^2.4.1", "react": "^19.0.0", "react-dom": "^19.0.0" }, "devDependencies": { - "@lingui/cli": "^5.1.2", - "@lingui/conf": "^5.1.2", + "@lingui/cli": "^5.2.0", + "@lingui/conf": "^5.2.0", "@lingui/swc-plugin": "5.0.2", - "@lingui/vite-plugin": "^5.1.2", + "@lingui/vite-plugin": "^5.2.0", "@testing-library/react": "^16.2.0", "@tsconfig/vite-react": "^3.4.0", - "@types/bun": "^1.2.0", - "@types/node": "^22.10.10", + "@types/bun": "^1.2.1", + "@types/node": "^22.13.0", "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "3.7.2", diff --git a/apps/web/src/atoms/amplitudeAtoms.ts b/apps/web/src/atoms/amplitudeAtoms.ts deleted file mode 100644 index 416babb..0000000 --- a/apps/web/src/atoms/amplitudeAtoms.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { atom } from 'jotai'; -import { atomWithDefault } from 'jotai/utils'; -import { largestImageAtom } from '@/atoms/largestImageAtom'; - -export const MIN_AMPLITUDE = 0; - -export const defaultAmplitudeAtom = atom(get => { - const largestImage = get(largestImageAtom); - return largestImage ? get(maxAmplitudeAtom) : MIN_AMPLITUDE; -}); - -export const amplitudeAtom = atomWithDefault(get => get(defaultAmplitudeAtom)); - -export const maxAmplitudeAtom = atom(get => { - const largestImage = get(largestImageAtom); - return largestImage ? Math.round(largestImage.height / 8) : MIN_AMPLITUDE + 1; -}); diff --git a/apps/web/src/atoms/exportAtoms.ts b/apps/web/src/atoms/exportAtoms.ts index 339ed27..6ba61f8 100644 --- a/apps/web/src/atoms/exportAtoms.ts +++ b/apps/web/src/atoms/exportAtoms.ts @@ -1,9 +1,9 @@ -import { fileSave } from 'browser-fs-access'; import { atom } from 'jotai'; +import { fileSave } from 'browser-fs-access'; import { rasterize } from '@/utils/rasterize'; import { graphicsAtom } from '@/atoms/graphicsAtom'; -import { DEFAULT_FILENAME } from '@/constants'; import { atomWithExpiringWriteState } from '@/utils/atomWithExpiringWriteState'; +import { DEFAULT_FILENAME } from '@/constants'; export type ExportFileHandle = Awaited>; diff --git a/apps/web/src/atoms/imagesAtom.ts b/apps/web/src/atoms/imagesAtom.ts index 3d44b6a..9442f92 100644 --- a/apps/web/src/atoms/imagesAtom.ts +++ b/apps/web/src/atoms/imagesAtom.ts @@ -1,19 +1,33 @@ import { atom } from 'jotai'; -import { atomWithReset, RESET } from 'jotai/utils'; -import { rotationAtom } from './rotationAtom'; -import { wavelengthAtom } from './wavelengthAtoms'; -import { amplitudeAtom } from './amplitudeAtoms'; +import { atomWithStorage, RESET, unwrap } from 'jotai/utils'; +import { readFile } from '@/utils/readFile'; +import { loadImage } from '@/utils/loadImage'; +import { createIndexedDbStorage } from '@/utils/createIndexedDbStorage'; -const baseImagesAtom = atomWithReset([]); +let imageId = 0; + +const filesAtom = atomWithStorage( + 'files', + [], + createIndexedDbStorage(), + { getOnInit: true } +); export const imagesAtom = atom( - get => get(baseImagesAtom), - (_get, set, value: HTMLImageElement[] | typeof RESET) => { - set(baseImagesAtom, value); - if (value === RESET) { - set(rotationAtom, value); - set(wavelengthAtom, value); - set(amplitudeAtom, value); - } + async get => { + const files = await get(filesAtom); + return Promise.all( + files.map(async file => { + const dataUrl = (await readFile(r => r.readAsDataURL(file))) as string; + const image = await loadImage(dataUrl); + image.id = `${imageId++}`; + return image; + }) + ); + }, + (_get, set, files: Blob[] | typeof RESET) => { + set(filesAtom, files); } ); + +export const unwrappedImagesAtom = unwrap(imagesAtom, prev => prev ?? []); diff --git a/apps/web/src/atoms/importAtoms.ts b/apps/web/src/atoms/importAtoms.ts index c8888af..55d8a65 100644 --- a/apps/web/src/atoms/importAtoms.ts +++ b/apps/web/src/atoms/importAtoms.ts @@ -1,12 +1,10 @@ import { atom } from 'jotai'; import { client } from '@/utils/client'; -import { readFile } from '@/utils/readFile'; -import { loadImage } from '@/utils/loadImage'; -import { imagesAtom } from '@/atoms/imagesAtom'; import { atomWithExpiringWriteState } from '@/utils/atomWithExpiringWriteState'; import { ImageSource } from '@/types'; - -let imageId = 0; +import { largestImageAtom } from './largestImageAtom'; +import { optimizeWaveformAtom } from './waveformAtoms'; +import { imagesAtom } from './imagesAtom'; const importAbortControllerAtom = atom(null); @@ -19,8 +17,12 @@ export const importSignalAtom = atom( ); export const importAtom = atomWithExpiringWriteState( - async (get, set, imageSources: ImageSource[]) => { + async (get, set, imageSource: ImageSource | ImageSource[]) => { const signal = get(importSignalAtom); + const imageSources = Array.isArray(imageSource) + ? imageSource + : [imageSource]; + const blobs = ( await Promise.all( imageSources.map>(async source => { @@ -42,16 +44,7 @@ export const importAtom = atomWithExpiringWriteState( ) ).flat(); - const images = await Promise.all( - blobs.map(async blob => { - const dataUrl = (await readFile(fr => fr.readAsDataURL(blob), { - signal - })) as string; - const image = await loadImage(dataUrl); - image.id = `${imageId++}`; - return image; - }) - ); - set(imagesAtom, images); + set(imagesAtom, blobs); + set(optimizeWaveformAtom, await get(largestImageAtom)); } ); diff --git a/apps/web/src/atoms/largestImageAtom.ts b/apps/web/src/atoms/largestImageAtom.ts index d90d013..256a2d2 100644 --- a/apps/web/src/atoms/largestImageAtom.ts +++ b/apps/web/src/atoms/largestImageAtom.ts @@ -1,8 +1,9 @@ import { atom } from 'jotai'; import { imagesAtom } from '@/atoms/imagesAtom'; +import { unwrap } from 'jotai/utils'; -export const largestImageAtom = atom(get => { - const images = get(imagesAtom); +export const largestImageAtom = atom(async get => { + const images = await get(imagesAtom); const imagesByArea = [...images].sort( (a, b) => a.width * a.height - b.width * b.height ); @@ -10,3 +11,5 @@ export const largestImageAtom = atom(get => { ? imagesByArea[imagesByArea.length - 1] : undefined; }); + +export const unwrappedLargestImageAtom = unwrap(largestImageAtom); \ No newline at end of file diff --git a/apps/web/src/atoms/orderedImagesAtom.ts b/apps/web/src/atoms/orderedImagesAtom.ts index c680aa5..1a9d50f 100644 --- a/apps/web/src/atoms/orderedImagesAtom.ts +++ b/apps/web/src/atoms/orderedImagesAtom.ts @@ -2,8 +2,8 @@ import { atom } from 'jotai'; import { areImagesReversedAtom } from '@/atoms/areImagesReversedAtom'; import { imagesAtom } from '@/atoms/imagesAtom'; -export const orderedImagesAtom = atom(get => { +export const orderedImagesAtom = atom(async get => { const areImagesReversed = get(areImagesReversedAtom); - const images = get(imagesAtom); + const images = await get(imagesAtom); return areImagesReversed ? [...images].reverse() : images; }); diff --git a/apps/web/src/atoms/resetAtom.ts b/apps/web/src/atoms/resetAtom.ts deleted file mode 100644 index 974b894..0000000 --- a/apps/web/src/atoms/resetAtom.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { atom } from 'jotai'; -import { defaultRotationAtom, rotationAtom } from './rotationAtom'; -import { defaultWavelengthAtom, wavelengthAtom } from './wavelengthAtoms'; -import { amplitudeAtom, defaultAmplitudeAtom } from './amplitudeAtoms'; -import { RESET } from 'jotai/utils'; - -export const resetAtom = atom( - get => { - return ( - get(rotationAtom) !== get(defaultRotationAtom) || - get(wavelengthAtom) !== get(defaultWavelengthAtom) || - get(amplitudeAtom) !== get(defaultAmplitudeAtom) - ); - }, - (_get, set) => { - set(rotationAtom, RESET); - set(wavelengthAtom, RESET); - set(amplitudeAtom, RESET); - } -); diff --git a/apps/web/src/atoms/rotationAtom.ts b/apps/web/src/atoms/rotationAtom.ts deleted file mode 100644 index e449dfd..0000000 --- a/apps/web/src/atoms/rotationAtom.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { atom } from 'jotai'; -import { atomWithDefault } from 'jotai/utils'; - -export const defaultRotationAtom = atom(0); - -export const rotationAtom = atomWithDefault(get => get(defaultRotationAtom)); diff --git a/apps/web/src/atoms/scaleAtom.ts b/apps/web/src/atoms/scaleAtom.ts index 5e19e03..33980e0 100644 --- a/apps/web/src/atoms/scaleAtom.ts +++ b/apps/web/src/atoms/scaleAtom.ts @@ -1,8 +1,8 @@ import { atom } from 'jotai'; import { largestImageAtom } from '@/atoms/largestImageAtom'; -export const scaleAtom = atom(get => { - const largestImage = get(largestImageAtom); +export const scaleAtom = atom(async get => { + const largestImage = await get(largestImageAtom); if (!largestImage) { return 1; } diff --git a/apps/web/src/atoms/themeAtom.ts b/apps/web/src/atoms/themeAtom.ts index 0aaa7c5..c56475b 100644 --- a/apps/web/src/atoms/themeAtom.ts +++ b/apps/web/src/atoms/themeAtom.ts @@ -1,13 +1,10 @@ import { atom } from 'jotai'; -import { atomWithStorage, createJSONStorage } from 'jotai/utils'; +import { atomWithStorage } from 'jotai/utils'; export type Theme = 'dark' | 'light' | 'system'; -export const themeAtom = atomWithStorage( - 'theme', - 'system', - createJSONStorage(() => localStorage), - { getOnInit: true } -); +export const themeAtom = atomWithStorage('theme', 'system', undefined, { + getOnInit: true +}); export const appliedThemeAtom = atom>(); diff --git a/apps/web/src/atoms/waveAtom.ts b/apps/web/src/atoms/waveAtom.ts index 7ad6694..19d06a0 100644 --- a/apps/web/src/atoms/waveAtom.ts +++ b/apps/web/src/atoms/waveAtom.ts @@ -1,8 +1,7 @@ import { atom } from 'jotai'; -import { amplitudeAtom } from '@/atoms/amplitudeAtoms'; -import { largestImageAtom } from '@/atoms/largestImageAtom'; -import { wavelengthAtom } from '@/atoms/wavelengthAtoms'; +import { unwrappedLargestImageAtom } from '@/atoms/largestImageAtom'; import { waveFunctionAtom } from '@/atoms/waveFunctionAtom'; +import { amplitudeAtom, wavelengthAtom } from '@/atoms/waveformAtoms'; import { WaveFunction } from '@/types'; function round(num: number) { @@ -12,12 +11,12 @@ function round(num: number) { const waveFunctionMapping: Record number> = { sin: Math.sin, cos: Math.cos -} +}; export const waveAtom = atom(get => { + const largestImage = get(unwrappedLargestImageAtom); const wavelength = get(wavelengthAtom); const amplitude = get(amplitudeAtom); - const largestImage = get(largestImageAtom); const waveFunction = waveFunctionMapping[get(waveFunctionAtom)]; if (!largestImage) { @@ -30,7 +29,8 @@ export const waveAtom = atom(get => { let py = halfHeight; for (let x = 0; x <= width; x++) { - const y = amplitude * waveFunction((2 * Math.PI * x) / wavelength) + halfHeight; + const y = + amplitude * waveFunction((2 * Math.PI * x) / wavelength) + halfHeight; ys.push(round(y - py)); py = y; } diff --git a/apps/web/src/atoms/waveformAtoms.ts b/apps/web/src/atoms/waveformAtoms.ts new file mode 100644 index 0000000..4d1686b --- /dev/null +++ b/apps/web/src/atoms/waveformAtoms.ts @@ -0,0 +1,59 @@ +import { atom } from 'jotai'; +import { focusAtom } from 'jotai-optics'; +import { atomWithStorage } from 'jotai/utils'; + +export const MIN_WAVELENGTH = 9; +export const MIN_AMPLITUDE = 0; + +export interface Waveform { + rotation: number; + wavelength: number; + wavelengthMax?: number; + amplitude: number; + amplitudeMax?: number; +} + +export const waveformAtom = atomWithStorage( + 'waveform', + { rotation: 0, wavelength: MIN_WAVELENGTH, amplitude: MIN_AMPLITUDE }, + undefined, + { getOnInit: true } +); + +export const rotationAtom = focusAtom(waveformAtom, optic => + optic.prop('rotation') +); + +export const wavelengthAtom = focusAtom(waveformAtom, optic => + optic.prop('wavelength') +); + +export const amplitudeAtom = focusAtom(waveformAtom, optic => + optic.prop('amplitude') +); + +export const wavelengthMaxAtom = focusAtom(waveformAtom, optic => + optic.prop('wavelengthMax') +); + +export const amplitudeMaxAtom = focusAtom(waveformAtom, optic => + optic.prop('amplitudeMax') +); + +export const optimizeWaveformAtom = atom( + null, + (_get, set, image?: HTMLImageElement) => { + const wavelengthMax = image?.width ?? MIN_WAVELENGTH + 1; + const amplitudeMax = image + ? Math.round(image.height / 8) + : MIN_AMPLITUDE + 1; + + set(waveformAtom, { + rotation: 0, + wavelength: wavelengthMax, + amplitude: amplitudeMax, + wavelengthMax, + amplitudeMax + }); + } +); diff --git a/apps/web/src/atoms/wavelengthAtoms.ts b/apps/web/src/atoms/wavelengthAtoms.ts deleted file mode 100644 index 36ecf26..0000000 --- a/apps/web/src/atoms/wavelengthAtoms.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { atom } from 'jotai'; -import { atomWithDefault } from 'jotai/utils'; -import { largestImageAtom } from '@/atoms/largestImageAtom'; - -export const MIN_WAVELENGTH = 9; - -export const defaultWavelengthAtom = atom(get => { - const largestImage = get(largestImageAtom); - return largestImage ? get(maxWavelengthAtom) : MIN_WAVELENGTH -}); - -export const wavelengthAtom = atomWithDefault(get => get(defaultWavelengthAtom)); - -export const maxWavelengthAtom = atom( - get => get(largestImageAtom)?.width ?? MIN_WAVELENGTH + 1 -); diff --git a/apps/web/src/components/AtomSlider.tsx b/apps/web/src/components/AtomSlider.tsx index 27ad1a5..ae896af 100644 --- a/apps/web/src/components/AtomSlider.tsx +++ b/apps/web/src/components/AtomSlider.tsx @@ -16,24 +16,22 @@ export interface AtomSliderProps } export function AtomSlider(props: AtomSliderProps) { - const { - atom, - className, - label, - LabelProps, - renderValue = value => value, - ...other - } = props; + const { atom, className, label, LabelProps, renderValue, ...other } = props; const [value, setValue] = useAtom(atom); + + const handleValueChange = ([value]: number[]) => { + setValue(value); + }; + return (
- - {renderValue(value)} + + {renderValue?.(value)}
- setValue(v)} {...other} /> +
); } diff --git a/apps/web/src/components/ChangeWaveFunction.tsx b/apps/web/src/components/ChangeWaveFunction.tsx index f412ca4..97db4f0 100644 --- a/apps/web/src/components/ChangeWaveFunction.tsx +++ b/apps/web/src/components/ChangeWaveFunction.tsx @@ -9,10 +9,10 @@ import { Sin } from '@/components/Sin'; import { Cos } from '@/components/Cos'; import { WAVE_FUNCTION } from '@/constants'; import { WaveFunction } from '@/types'; -import { imagesAtom } from '@/atoms/imagesAtom'; +import { unwrappedImagesAtom } from '@/atoms/imagesAtom'; export function ChangeWaveFunction() { - const images = useAtomValue(imagesAtom); + const images = useAtomValue(unwrappedImagesAtom); const [waveFunction, setWaveFunction] = useAtom(waveFunctionAtom); const handleWaveFunctionChange = (waveFunction: WaveFunction) => { diff --git a/apps/web/src/components/Editor.tsx b/apps/web/src/components/Editor.tsx index b19d986..7a081c2 100644 --- a/apps/web/src/components/Editor.tsx +++ b/apps/web/src/components/Editor.tsx @@ -1,4 +1,5 @@ -import { Eclipse } from 'lucide-react'; +import { Suspense } from 'react'; +import { Eclipse, Loader2 } from 'lucide-react'; import { Trans } from '@lingui/react/macro'; import { cn } from '@workspace/ui/lib/utils'; import { AspectRatio } from '@workspace/ui/components/aspect-ratio'; @@ -11,12 +12,15 @@ import { ReverseImages } from '@/components/ReverseImages'; import { ImportImages } from '@/components/ImportImages'; import { RemoveImages } from '@/components/RemoveImages'; import { ChangeWaveFunction } from '@/components/ChangeWaveFunction'; -import { Reset } from '@/components/Reset'; +import { OptimizeWaveform } from '@/components/OptimizeWaveform'; +import { useSetAtom } from 'jotai'; +import { graphicsAtom } from '@/atoms/graphicsAtom'; export type EditorProps = React.ComponentPropsWithoutRef<'div'>; export function Editor(props: EditorProps) { const { className, ...other } = props; + const setGraphics = useSetAtom(graphicsAtom); return (
- - -

Shadowave

-

- - Import images featuring both light and dark themes to start. - -

- -
+ } - /> + > + + +

Shadowave

+

+ + Import images featuring both light and dark themes to start. + +

+ +
+ } + /> + +
-
- - - -
-
+
+
+ + + +
- +
-
+
diff --git a/apps/web/src/components/Graphics.tsx b/apps/web/src/components/Graphics.tsx index a43768a..de628ff 100644 --- a/apps/web/src/components/Graphics.tsx +++ b/apps/web/src/components/Graphics.tsx @@ -1,23 +1,29 @@ import React, { useId } from 'react'; -import { useAtomValue, useSetAtom } from 'jotai'; +import { useAtomValue } from 'jotai'; import { waveAtom } from '@/atoms/waveAtom'; import { orderedImagesAtom } from '@/atoms/orderedImagesAtom'; -import { rotationAtom } from '@/atoms/rotationAtom'; +import { rotationAtom } from '@/atoms/waveformAtoms'; import { largestImageAtom } from '@/atoms/largestImageAtom'; -import { graphicsAtom } from '@/atoms/graphicsAtom'; import { scaleAtom } from '@/atoms/scaleAtom'; +declare module "react" { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + interface SVGAttributes { + transformOrigin?: string | undefined; + } +} + export interface GraphicsProps extends React.ComponentPropsWithoutRef<'svg'> { fallback?: React.ReactNode; + ref?: React.Ref; } export function Graphics(props: GraphicsProps) { - const { fallback, ...other } = props; + const { fallback, ref, ...other } = props; const orderedImages = useAtomValue(orderedImagesAtom); const wave = useAtomValue(waveAtom); const largestImage = useAtomValue(largestImageAtom); - const setGraphics = useSetAtom(graphicsAtom); const rotation = useAtomValue(rotationAtom); const scale = useAtomValue(scaleAtom); const waveId = useId(); @@ -33,14 +39,14 @@ export function Graphics(props: GraphicsProps) { return ( - + {orderedImages.map( (image, i) => i !== orderedImages.length - 1 && ( @@ -48,12 +54,12 @@ export function Graphics(props: GraphicsProps) { key={image.id} id={waveId + (i + 1)} transform={`rotate(${rotation})`} - transform-origin="50% 50%" + transformOrigin="50% 50%" > ) diff --git a/apps/web/src/components/ImportImages.tsx b/apps/web/src/components/ImportImages.tsx index 8e43927..5c103dd 100644 --- a/apps/web/src/components/ImportImages.tsx +++ b/apps/web/src/components/ImportImages.tsx @@ -33,7 +33,7 @@ import { import { ChooseFiles } from '@/components/ChooseFiles'; import { LoadableIcon } from '@/components/LoadableIcon'; import { importAtom, importSignalAtom } from '@/atoms/importAtoms'; -import { imagesAtom } from '@/atoms/imagesAtom'; +import { unwrappedImagesAtom } from '@/atoms/imagesAtom'; import { LOADABLE_STATE } from '@/constants'; import { ImageSource, Site } from '@/types'; @@ -46,7 +46,7 @@ export type ImportImagesProps = ButtonProps; export function ImportImages(props: ImportImagesProps) { const { t } = useLingui(); - const images = useAtomValue(imagesAtom); + const images = useAtomValue(unwrappedImagesAtom); const [importState, importImages] = useAtom(importAtom); const [importSignal, toggleImportSignal] = useAtom(importSignalAtom); @@ -63,9 +63,7 @@ export function ImportImages(props: ImportImagesProps) { const handleSubmitOrFilesChange = async ( imageSource: ImageSource | ImageSource[] ) => { - await importImages( - Array.isArray(imageSource) ? imageSource : [imageSource] - ); + await importImages(imageSource); toggleImportSignal(false); }; diff --git a/apps/web/src/components/OptimizeWaveform.tsx b/apps/web/src/components/OptimizeWaveform.tsx new file mode 100644 index 0000000..403b61f --- /dev/null +++ b/apps/web/src/components/OptimizeWaveform.tsx @@ -0,0 +1,26 @@ +import { useAtomValue, useSetAtom } from 'jotai'; +import { WandSparkles } from 'lucide-react'; +import { optimizeWaveformAtom } from '@/atoms/waveformAtoms'; +import { Button } from '@workspace/ui/components/button'; +import { unwrappedLargestImageAtom } from '@/atoms/largestImageAtom'; + +export function OptimizeWaveform() { + const largestImage = useAtomValue(unwrappedLargestImageAtom); + const optimizeWaveform = useSetAtom(optimizeWaveformAtom); + + const handleClick = () => { + optimizeWaveform(largestImage); + }; + + return ( + + ); +} diff --git a/apps/web/src/components/RemoveImages.tsx b/apps/web/src/components/RemoveImages.tsx index 57f32a0..ca4bf34 100644 --- a/apps/web/src/components/RemoveImages.tsx +++ b/apps/web/src/components/RemoveImages.tsx @@ -1,3 +1,4 @@ +import { useTransition } from 'react'; import { useAtomValue } from 'jotai'; import { Trash2 } from 'lucide-react'; import { useResetAtom } from 'jotai/utils'; @@ -14,22 +15,32 @@ import { AlertDialogTitle, AlertDialogTrigger } from '@workspace/ui/components/alert-dialog'; -import { imagesAtom } from '@/atoms/imagesAtom'; +import { imagesAtom, unwrappedImagesAtom } from '@/atoms/imagesAtom'; +import { waveformAtom } from '@/atoms/waveformAtoms'; export function RemoveImages() { const { t } = useLingui(); - const images = useAtomValue(imagesAtom); + const [isPending, startTransition] = useTransition(); + const images = useAtomValue(unwrappedImagesAtom); const resetImages = useResetAtom(imagesAtom); + const resetWaveform = useResetAtom(waveformAtom); + + const handleConfirm = () => { + startTransition(() => { + resetWaveform(); + resetImages(); + }); + }; return ( @@ -48,7 +59,7 @@ export function RemoveImages() { Cancel - + Remove diff --git a/apps/web/src/components/Reset.tsx b/apps/web/src/components/Reset.tsx deleted file mode 100644 index c870de4..0000000 --- a/apps/web/src/components/Reset.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { resetAtom } from '@/atoms/resetAtom'; -import { Button } from '@workspace/ui/components/button'; -import { useAtom } from 'jotai'; -import { RotateCw } from 'lucide-react'; - -export function Reset() { - const [canReset, reset] = useAtom(resetAtom); - return ( - - ); -} diff --git a/apps/web/src/components/ReverseImages.tsx b/apps/web/src/components/ReverseImages.tsx index e049c9b..39011ce 100644 --- a/apps/web/src/components/ReverseImages.tsx +++ b/apps/web/src/components/ReverseImages.tsx @@ -1,21 +1,23 @@ +import { startTransition } from 'react'; import { useAtom, useAtomValue } from 'jotai'; import { ArrowDownUp, ArrowUpDown } from 'lucide-react'; import { Trans, useLingui } from '@lingui/react/macro'; import { areImagesReversedAtom } from '@/atoms/areImagesReversedAtom'; -import { imagesAtom } from '@/atoms/imagesAtom'; import { Button } from '@workspace/ui/components/button'; import { Tooltip } from '@workspace/ui/components/tooltip'; +import { unwrappedImagesAtom } from '@/atoms/imagesAtom'; export function ReverseImages() { const { t } = useLingui(); + const images = useAtomValue(unwrappedImagesAtom); const [areImagesReversed, toggleImagesReversed] = useAtom( areImagesReversedAtom ); - const images = useAtomValue(imagesAtom); - const Icon = areImagesReversed ? ArrowDownUp : ArrowUpDown; const handleClick = () => { - toggleImagesReversed(); + startTransition(() => { + toggleImagesReversed(); + }); }; return ( @@ -26,7 +28,7 @@ export function ReverseImages() { disabled={images.length < 2} aria-label={t`Reverse images`} > - + {areImagesReversed ? : } ); diff --git a/apps/web/src/components/Waveform.tsx b/apps/web/src/components/Waveform.tsx index 92791ec..4d8d4df 100644 --- a/apps/web/src/components/Waveform.tsx +++ b/apps/web/src/components/Waveform.tsx @@ -1,31 +1,27 @@ import { useAtomValue } from 'jotai'; import { Trans, useLingui } from '@lingui/react/macro'; -import { rotationAtom } from '@/atoms/rotationAtom'; import { - MIN_WAVELENGTH, - maxWavelengthAtom, - wavelengthAtom -} from '@/atoms/wavelengthAtoms'; -import { - MIN_AMPLITUDE, + rotationAtom, + wavelengthAtom, + wavelengthMaxAtom, amplitudeAtom, - maxAmplitudeAtom -} from '@/atoms/amplitudeAtoms'; -import { imagesAtom } from '@/atoms/imagesAtom'; -import { scaleAtom } from '@/atoms/scaleAtom'; + amplitudeMaxAtom, + MIN_WAVELENGTH, + MIN_AMPLITUDE +} from '@/atoms/waveformAtoms'; import { AtomSlider } from '@/components/AtomSlider'; +import { unwrappedImagesAtom } from '@/atoms/imagesAtom'; -export function Waveform() { - const { t } = useLingui(); - const images = useAtomValue(imagesAtom); - const maxAmplitude = useAtomValue(maxAmplitudeAtom); - const maxWavelength = useAtomValue(maxWavelengthAtom); - const scale = useAtomValue(scaleAtom); +export type WaveformProps = React.ComponentPropsWithoutRef<'div'>; - const renderValueInPx = (value: number) => `${Math.round(value * scale)}px`; +export function Waveform(props: WaveformProps) { + const { t } = useLingui(); + const images = useAtomValue(unwrappedImagesAtom); + const wavelengthMax = useAtomValue(wavelengthMaxAtom); + const amplitudeMax = useAtomValue(amplitudeMaxAtom); return ( - <> +
Rotation} atom={rotationAtom} @@ -40,9 +36,8 @@ export function Waveform() { Wavelength} atom={wavelengthAtom} - renderValue={renderValueInPx} min={MIN_WAVELENGTH} - max={maxWavelength} + max={wavelengthMax} disabled={!images.length} ThumbProps={{ 'aria-label': t`Wavelength` @@ -51,14 +46,13 @@ export function Waveform() { Amplitude} atom={amplitudeAtom} - renderValue={renderValueInPx} min={MIN_AMPLITUDE} - max={maxAmplitude} + max={amplitudeMax} disabled={!images.length} ThumbProps={{ 'aria-label': t`Amplitude` }} /> - +
); } diff --git a/apps/web/src/utils/atomWithExpiringWriteState.ts b/apps/web/src/utils/atomWithExpiringWriteState.ts index 48faf4e..b2eb44d 100644 --- a/apps/web/src/utils/atomWithExpiringWriteState.ts +++ b/apps/web/src/utils/atomWithExpiringWriteState.ts @@ -20,8 +20,9 @@ export function atomWithExpiringWriteState( async (get, set, ...args: Args) => { set(writeStateAtom, LOADABLE_STATE.LOADING); try { - await write(get, set, ...args); + const result = await write(get, set, ...args); set(writeStateAtom, LOADABLE_STATE.HAS_DATA, expireInMs); + return result; } catch (error) { set( writeStateAtom, diff --git a/apps/web/src/utils/createGraphIcon.ts b/apps/web/src/utils/createGraphIcon.ts index ec9800e..bd4d66b 100644 --- a/apps/web/src/utils/createGraphIcon.ts +++ b/apps/web/src/utils/createGraphIcon.ts @@ -11,6 +11,6 @@ export function createGraphIcon(iconName: string, getY: (x: number) => number) { } return createLucideIcon(iconName, [ - ['polyline', { points: points.join(' ') }] + ['polyline', { key: 'points', points: points.join(' ') }] ]); } diff --git a/apps/web/src/utils/createIndexedDbStorage.ts b/apps/web/src/utils/createIndexedDbStorage.ts new file mode 100644 index 0000000..8e4792d --- /dev/null +++ b/apps/web/src/utils/createIndexedDbStorage.ts @@ -0,0 +1,14 @@ +import { get, set, del, UseStore } from 'idb-keyval'; +import { AsyncStorage } from 'jotai/vanilla/utils/atomWithStorage'; + +export function createIndexedDbStorage( + store?: UseStore +): AsyncStorage { + return { + async getItem(key, initialValue) { + return (await get(key, store)) ?? initialValue; + }, + setItem: set, + removeItem: del + }; +} diff --git a/bun.lock b/bun.lock index 74a482a..fa59680 100644 --- a/bun.lock +++ b/bun.lock @@ -9,14 +9,14 @@ "lint-staged": "^15.4.3", "prettier": "3.4.2", "prettier-plugin-tailwindcss": "^0.6.11", - "turbo": "^2.3.4", + "turbo": "^2.4.0", "typescript": "^5.7.3", "vite": "6.0.11", "vitest": "^3.0.4", }, }, "apps/api": { - "name": "@shadowave/api", + "name": "@workspace/api", "version": "0.0.0", "dependencies": { "@elysiajs/cors": "^1.2.0", @@ -32,36 +32,40 @@ }, }, "apps/web": { - "name": "@shadowave/web", + "name": "@workspace/web", "version": "0.0.0", "dependencies": { "@elysiajs/eden": "^1.2.0", "@hookform/resolvers": "^3.10.0", - "@lingui/core": "^5.1.2", - "@lingui/macro": "^5.1.2", - "@lingui/react": "^5.1.2", + "@lingui/core": "^5.2.0", + "@lingui/macro": "^5.2.0", + "@lingui/react": "^5.2.0", "@radix-ui/react-alert-dialog": "^1.1.5", "@radix-ui/react-dialog": "^1.1.5", "@radix-ui/react-slot": "^1.1.1", - "@sinclair/typebox": "^0.34.14", + "@sinclair/typebox": "^0.34.15", "@workspace/schema": "workspace:*", "@workspace/ui": "workspace:*", "browser-fs-access": "^0.35.0", "clsx": "^2.1.1", - "jotai": "^2.11.1", + "idb-keyval": "^6.2.1", + "jotai": "^2.11.2", + "jotai-effect": "^1.1.6", + "jotai-optics": "^0.4.0", "lucide-react": "^0.474.0", + "optics-ts": "^2.4.1", "react": "^19.0.0", "react-dom": "^19.0.0", }, "devDependencies": { - "@lingui/cli": "^5.1.2", - "@lingui/conf": "^5.1.2", + "@lingui/cli": "^5.2.0", + "@lingui/conf": "^5.2.0", "@lingui/swc-plugin": "5.0.2", - "@lingui/vite-plugin": "^5.1.2", + "@lingui/vite-plugin": "^5.2.0", "@testing-library/react": "^16.2.0", "@tsconfig/vite-react": "^3.4.0", - "@types/bun": "^1.2.0", - "@types/node": "^22.10.10", + "@types/bun": "^1.2.1", + "@types/node": "^22.13.0", "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "3.7.2", @@ -81,11 +85,11 @@ "@types/eslint-config-prettier": "^6.11.3", "@types/eslint__js": "^8.42.3", "eslint-config-prettier": "^10.0.1", - "eslint-config-turbo": "^2.3.4", + "eslint-config-turbo": "^2.4.0", "eslint-plugin-react-hooks": "5.2.0-canary-de1eaa26-20250124", "eslint-plugin-react-refresh": "^0.4.18", "globals": "^15.14.0", - "typescript-eslint": "8.21.0", + "typescript-eslint": "8.22.0", }, "peerDependencies": { "eslint": "^9.0.0", @@ -93,8 +97,11 @@ }, "packages/schema": { "name": "@workspace/schema", + "devDependencies": { + "@sinclair/typebox": "^0.34.15", + }, "peerDependencies": { - "@sinclair/typebox": "^0.34.14", + "@sinclair/typebox": "*", }, }, "packages/ui": { @@ -274,27 +281,27 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], - "@lingui/babel-plugin-extract-messages": ["@lingui/babel-plugin-extract-messages@5.1.2", "", {}, "sha512-w4lX0aR3mvQqwCGZDFbtTDg8BUN2Pf8FQ0NMYWSRG/mQV6AskZn3xY9R6wht9poVr/RfKaPF+9P4jQzAxXUWWw=="], + "@lingui/babel-plugin-extract-messages": ["@lingui/babel-plugin-extract-messages@5.2.0", "", {}, "sha512-hQ6tFK72ZXX2813PU9thJbnwJ+SjSrfR3/tt4aqHJcOUdrb67wMVY/0xiUe+vb5y6kVZjZ4oPqdgCfGZ2jWBEw=="], - "@lingui/babel-plugin-lingui-macro": ["@lingui/babel-plugin-lingui-macro@5.1.2", "", { "dependencies": { "@babel/core": "^7.20.12", "@babel/runtime": "^7.20.13", "@babel/types": "^7.20.7", "@lingui/conf": "^5.1.2", "@lingui/core": "^5.1.2", "@lingui/message-utils": "^5.1.2" }, "peerDependencies": { "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-6hq75WZRvuOeWOM0LplZmKTRYIHn9o8PdAYuymVO+QvRp+mMKKMwf8vWyqdVW+4T/zaknN8WtXRRGw6wcCBHew=="], + "@lingui/babel-plugin-lingui-macro": ["@lingui/babel-plugin-lingui-macro@5.2.0", "", { "dependencies": { "@babel/core": "^7.20.12", "@babel/runtime": "^7.20.13", "@babel/types": "^7.20.7", "@lingui/conf": "5.2.0", "@lingui/core": "5.2.0", "@lingui/message-utils": "5.2.0" }, "peerDependencies": { "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-IEpEfKW2WoGiK30dbovwXaPj69dKUP+GEAk00/6KUMB0sonaBWO4NO3Bj9G6NSdA6fB1lm9BtvuPqJQ2DvjF5g=="], - "@lingui/cli": ["@lingui/cli@5.1.2", "", { "dependencies": { "@babel/core": "^7.21.0", "@babel/generator": "^7.21.1", "@babel/parser": "^7.22.0", "@babel/runtime": "^7.21.0", "@babel/types": "^7.21.2", "@lingui/babel-plugin-extract-messages": "^5.1.2", "@lingui/babel-plugin-lingui-macro": "^5.1.2", "@lingui/conf": "^5.1.2", "@lingui/core": "^5.1.2", "@lingui/format-po": "^5.1.2", "@lingui/message-utils": "^5.1.2", "babel-plugin-macros": "^3.0.1", "chalk": "^4.1.0", "chokidar": "3.5.1", "cli-table": "^0.3.11", "commander": "^10.0.0", "convert-source-map": "^2.0.0", "date-fns": "^3.6.0", "esbuild": "^0.21.5", "glob": "^11.0.0", "inquirer": "^7.3.3", "micromatch": "^4.0.7", "normalize-path": "^3.0.0", "ora": "^5.1.0", "pathe": "^1.1.0", "pkg-up": "^3.1.0", "pofile": "^1.1.4", "pseudolocale": "^2.0.0", "ramda": "^0.27.1", "source-map": "^0.8.0-beta.0" }, "bin": { "lingui": "./dist/lingui.js" } }, "sha512-PqiDhHmLbeXBmH9Nig6fk0LJXQA0/cr/G2REp60GJ2YBxCvpooE8N2Loi1+dyPX+CGmL4XaQg5Rq5Du9LBP0Gg=="], + "@lingui/cli": ["@lingui/cli@5.2.0", "", { "dependencies": { "@babel/core": "^7.21.0", "@babel/generator": "^7.21.1", "@babel/parser": "^7.22.0", "@babel/runtime": "^7.21.0", "@babel/types": "^7.21.2", "@lingui/babel-plugin-extract-messages": "5.2.0", "@lingui/babel-plugin-lingui-macro": "5.2.0", "@lingui/conf": "5.2.0", "@lingui/core": "5.2.0", "@lingui/format-po": "5.2.0", "@lingui/message-utils": "5.2.0", "babel-plugin-macros": "^3.0.1", "chalk": "^4.1.0", "chokidar": "3.5.1", "cli-table": "^0.3.11", "commander": "^10.0.0", "convert-source-map": "^2.0.0", "date-fns": "^3.6.0", "esbuild": "^0.21.5", "glob": "^11.0.0", "inquirer": "^7.3.3", "micromatch": "^4.0.7", "normalize-path": "^3.0.0", "ora": "^5.1.0", "pathe": "^1.1.0", "pkg-up": "^3.1.0", "pofile": "^1.1.4", "pseudolocale": "^2.0.0", "source-map": "^0.8.0-beta.0" }, "bin": { "lingui": "./dist/lingui.js" } }, "sha512-SLMPi9VMNAmhKRGt3HCGIZVHHmxfAcb7zNK9qwrEhlvcwxNmtsPtLb4iJvKy/VpdCQYm7C6D34tFjyVjUZ4ROg=="], - "@lingui/conf": ["@lingui/conf@5.1.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "chalk": "^4.1.0", "cosmiconfig": "^8.0.0", "jest-validate": "^29.4.3", "jiti": "^1.17.1", "lodash.get": "^4.4.2" } }, "sha512-m0kKiiasvoFLo3cpix+zl1wT4/Wn09+9FHdh7tzuxwcRFWyXgJl1/Ire1Cfumoyve0p4DvtnGygg7meAGm6jJw=="], + "@lingui/conf": ["@lingui/conf@5.2.0", "", { "dependencies": { "@babel/runtime": "^7.20.13", "chalk": "^4.1.0", "cosmiconfig": "^8.0.0", "jest-validate": "^29.4.3", "jiti": "^1.17.1", "lodash.get": "^4.4.2" } }, "sha512-3biQJxGntCP+EnOe9jjlquGCBfk6ogq+I8ZduHwmBceY5aQ0OR7V23ItDrMz0NBy8dFNk5YoeHun3CYKYOS/Jg=="], - "@lingui/core": ["@lingui/core@5.1.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@lingui/message-utils": "^5.1.2", "unraw": "^3.0.0" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.1.2", "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-biqmMCWuBBj7ERSpgGSV91hTShnSrR/RIFUcNKjWuZYgDd3HpBdEmXKCo9NTanQYbkBUpmyw/bgwsSBex6vkDA=="], + "@lingui/core": ["@lingui/core@5.2.0", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@lingui/message-utils": "5.2.0", "unraw": "^3.0.0" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.2.0", "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-cz35uKDxIGb/CPvgwn7BM/QYpxtARmQm7n+mHUoNJdNKSrg9R7vKkLRG7k9dukZwix2Mdjh+2dPIJnAkor2CiA=="], - "@lingui/format-po": ["@lingui/format-po@5.1.2", "", { "dependencies": { "@lingui/conf": "^5.1.2", "@lingui/message-utils": "^5.1.2", "date-fns": "^3.6.0", "pofile": "^1.1.4" } }, "sha512-fkhAeBnOqceY5CJrtyRN5oBq3/6X2IpIKS+6yzwyWUzmJ5XmW2cwF2xtrcBwEekvtKzyuUZz7Dqc9gM02epSqA=="], + "@lingui/format-po": ["@lingui/format-po@5.2.0", "", { "dependencies": { "@lingui/conf": "5.2.0", "@lingui/message-utils": "5.2.0", "date-fns": "^3.6.0", "pofile": "^1.1.4" } }, "sha512-viUQaoRa8UxSghayTY7xjtwXbfXIVdlM8C4HsxmozQnl5TXnPVEwlaPYds3sdJ8PmQGcYCm35r8EsmuKBoWYDQ=="], - "@lingui/macro": ["@lingui/macro@5.1.2", "", { "dependencies": { "@lingui/core": "^5.1.2", "@lingui/react": "^5.1.2" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.1.2", "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-R6HV7XmiskkI/85JCjAtQuBPRu5AB57lOJdJE6xs2qBaeRu70v0BalTn4wyG5+r0JSkDI4gakWaXKW2KpWN6fQ=="], + "@lingui/macro": ["@lingui/macro@5.2.0", "", { "dependencies": { "@lingui/core": "5.2.0", "@lingui/react": "5.2.0" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.2.0", "babel-plugin-macros": "2 || 3" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-zWrVDxRqlyc4Eirb5sUuL+4bxH2T/pEg5eZGwibLUcZhyRQmIJkarGrpGe6WzzQa5IZH4Y+2lzOM973jQ/IPMA=="], - "@lingui/message-utils": ["@lingui/message-utils@5.1.2", "", { "dependencies": { "@messageformat/parser": "^5.0.0", "js-sha256": "^0.10.1" } }, "sha512-P/N0yBy2MuC726EaGPGiOafc/0RafHiwkvZJdFKjm1/XOMWrFZDPFXTuxguVQ3HQsRi5eUIPaboU4uRX4GepPg=="], + "@lingui/message-utils": ["@lingui/message-utils@5.2.0", "", { "dependencies": { "@messageformat/parser": "^5.0.0", "js-sha256": "^0.10.1" } }, "sha512-qJFKNc1b7SRX6y5ywtA1x+2/gaY22e09hjC6fiDvDpAFdEguI4qAJGmBmqlAZG/kcokR0tmMpo9zYUF8jjcHEA=="], - "@lingui/react": ["@lingui/react@5.1.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@lingui/core": "^5.1.2" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.1.2", "babel-plugin-macros": "2 || 3", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-YPAvbPUd+kJrmA9H1LSJ9f6+0hkOlm0w8g+7a8FtE7olamjXd7SyIgJMbeJmvKSdztrrdcLBs9YEftUKTfjiyg=="], + "@lingui/react": ["@lingui/react@5.2.0", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@lingui/core": "5.2.0" }, "peerDependencies": { "@lingui/babel-plugin-lingui-macro": "5.2.0", "babel-plugin-macros": "2 || 3", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@lingui/babel-plugin-lingui-macro", "babel-plugin-macros"] }, "sha512-Ok9ZsA3hPPzeTXpp1woFk0Bgqv6shMB8AzbSQCixudLdbuAPkBu/EKlwTGBs0yYlq5cUXeDYrKKHF1R5BcX5HA=="], "@lingui/swc-plugin": ["@lingui/swc-plugin@5.0.2", "", { "peerDependencies": { "@lingui/core": "5" } }, "sha512-qKMc+E2cNIax6fhhN+O3n4VOIzQXfGhenQMlrNfvOjq5DEGimFjprL3c/9XuNO9mhQ4izlqNkasvep4espt3sw=="], - "@lingui/vite-plugin": ["@lingui/vite-plugin@5.1.2", "", { "dependencies": { "@lingui/cli": "^5.1.2", "@lingui/conf": "^5.1.2" }, "peerDependencies": { "vite": "^3 || ^4 || ^5.0.9 || ^6" } }, "sha512-1KDoj03+ie9Td/YYOTjncucwAMVU16RfFpnm1uHvrGGEoRgWfwox4pwTwUbIeksSuecGv757vLeyugThwdyfpA=="], + "@lingui/vite-plugin": ["@lingui/vite-plugin@5.2.0", "", { "dependencies": { "@lingui/cli": "5.2.0", "@lingui/conf": "5.2.0" }, "peerDependencies": { "vite": "^3 || ^4 || ^5.0.9 || ^6" } }, "sha512-jMpf6JJY1s3t4eFRBseTyuQNxy6ERRwg+uLi8EZ/qcaQgQW+GK6qWX/Qg5xQ8k1mJpaP6ihanMQMrkS6d5oR/A=="], "@messageformat/parser": ["@messageformat/parser@5.1.1", "", { "dependencies": { "moo": "^0.5.1" } }, "sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg=="], @@ -382,49 +389,45 @@ "@radix-ui/rect": ["@radix-ui/rect@1.1.0", "", {}, "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.32.0", "", { "os": "android", "cpu": "arm" }, "sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg=="], - - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.32.1", "", { "os": "android", "cpu": "arm" }, "sha512-/pqA4DmqyCm8u5YIDzIdlLcEmuvxb0v8fZdFhVMszSpDTgbQKdw3/mB3eMUHIbubtJ6F9j+LtmyCnHTEqIHyzA=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ=="], + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.32.1", "", { "os": "android", "cpu": "arm64" }, "sha512-If3PDskT77q7zgqVqYuj7WG3WC08G1kwXGVFi9Jr8nY6eHucREHkfpX79c0ACAjLj3QIWKPJR7w4i+f5EdLH5Q=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ=="], + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.32.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zCpKHioQ9KgZToFp5Wvz6zaWbMzYQ2LJHQ+QixDKq52KKrF65ueu6Af4hLlLWHjX1Wf/0G5kSJM9PySW9IrvHA=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.32.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA=="], + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.32.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-sFvF+t2+TyUo/ZQqUcifrJIgznx58oFZbdHS9TvHq3xhPVL9nOp+yZ6LKrO9GWTP+6DbFtoyLDbjTpR62Mbr3Q=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ=="], + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.32.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-NbOa+7InvMWRcY9RG+B6kKIMD/FsnQPH0MWUvDlQB1iXnF/UcKSudCXZtv4lW+C276g3w5AxPbfry5rSYvyeYA=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A=="], + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.32.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JRBRmwvHPXR881j2xjry8HZ86wIPK2CcDw0EXchE1UgU0ubWp9nvlT7cZYKc6bkypBt745b4bglf3+xJ7hXWWw=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ=="], + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.32.1", "", { "os": "linux", "cpu": "arm" }, "sha512-PKvszb+9o/vVdUzCCjL0sKHukEQV39tD3fepXxYrHE3sTKrRdCydI7uldRLbjLmDA3TFDmh418XH19NOsDRH8g=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w=="], + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.32.1", "", { "os": "linux", "cpu": "arm" }, "sha512-9WHEMV6Y89eL606ReYowXuGF1Yb2vwfKWKdD1A5h+OYnPZSJvxbEjxTRKPgi7tkP2DSnW0YLab1ooy+i/FQp/Q=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw=="], + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.32.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-tZWc9iEt5fGJ1CL2LRPw8OttkCBDs+D8D3oEM8mH8S1ICZCtFJhD7DZ3XMGM8kpqHvhGUTvNUYVDnmkj4BDXnw=="], - "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.32.0", "", { "os": "linux", "cpu": "none" }, "sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw=="], + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.32.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-FTYc2YoTWUsBz5GTTgGkRYYJ5NGJIi/rCY4oK/I8aKowx1ToXeoVVbIE4LGAjsauvlhjfl0MYacxClLld1VrOw=="], - "@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.32.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ=="], + "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.32.1", "", { "os": "linux", "cpu": "none" }, "sha512-F51qLdOtpS6P1zJVRzYM0v6MrBNypyPEN1GfMiz0gPu9jN8ScGaEFIZQwteSsGKg799oR5EaP7+B2jHgL+d+Kw=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.32.0", "", { "os": "linux", "cpu": "none" }, "sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw=="], + "@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.32.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-wO0WkfSppfX4YFm5KhdCCpnpGbtgQNj/tgvYzrVYFKDpven8w2N6Gg5nB6w+wAMO3AIfSTWeTjfVe+uZ23zAlg=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.32.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw=="], + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.32.1", "", { "os": "linux", "cpu": "none" }, "sha512-iWswS9cIXfJO1MFYtI/4jjlrGb/V58oMu4dYJIKnR5UIwbkzR0PJ09O0PDZT0oJ3LYWXBSWahNf/Mjo6i1E5/g=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A=="], + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.32.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-RKt8NI9tebzmEthMnfVgG3i/XeECkMPS+ibVZjZ6mNekpbbUmkNWuIN2yHsb/mBPyZke4nlI4YqIdFPgKuoyQQ=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg=="], + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.32.1", "", { "os": "linux", "cpu": "x64" }, "sha512-WQFLZ9c42ECqEjwg/GHHsouij3pzLXkFdz0UxHa/0OM12LzvX7DzedlY0SIEly2v18YZLRhCRoHZDxbBSWoGYg=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg=="], + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.32.1", "", { "os": "linux", "cpu": "x64" }, "sha512-BLoiyHDOWoS3uccNSADMza6V6vCNiphi94tQlVIL5de+r6r/CCQuNnerf+1g2mnk2b6edp5dk0nhdZ7aEjOBsA=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.32.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw=="], + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.32.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-w2l3UnlgYTNNU+Z6wOR8YdaioqfEnwPjIsJ66KxKAf0p+AuL2FHeTX6qvM+p/Ue3XPBVNyVSfCrfZiQh7vZHLQ=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA=="], + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.32.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-Am9H+TGLomPGkBnaPWie4F3x+yQ2rr4Bk2jpwy+iV+Gel9jLAu/KqT8k3X4jxFPW6Zf8OMnehyutsd+eHoq1WQ=="], - "@shadowave/api": ["@shadowave/api@workspace:apps/api"], + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.32.1", "", { "os": "win32", "cpu": "x64" }, "sha512-ar80GhdZb4DgmW3myIS9nRFYcpJRSME8iqWgzH2i44u+IdrzmiXVxeFnExQ5v4JYUSpg94bWjevMG8JHf1Da5Q=="], - "@shadowave/web": ["@shadowave/web@workspace:apps/web"], - - "@sinclair/typebox": ["@sinclair/typebox@0.34.14", "", {}, "sha512-TJ7Al17j3+by5y2QkTLcF/oBVMbgXBhILVgi9PuwpxQVZZvGh5BFRzWbJPmZVNKpbRLjuMzFuRwR+tdFPqCkvA=="], + "@sinclair/typebox": ["@sinclair/typebox@0.34.15", "", {}, "sha512-xeIzl3h1Znn9w/LTITqpiwag0gXjA+ldi2ZkXIBxGEppGCW211Tza+eL6D4pKqs10bj5z2umBWk5WL6spQ2OCQ=="], "@swc/core": ["@swc/core@1.7.40", "", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.13" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.7.40", "@swc/core-darwin-x64": "1.7.40", "@swc/core-linux-arm-gnueabihf": "1.7.40", "@swc/core-linux-arm64-gnu": "1.7.40", "@swc/core-linux-arm64-musl": "1.7.40", "@swc/core-linux-x64-gnu": "1.7.40", "@swc/core-linux-x64-musl": "1.7.40", "@swc/core-win32-arm64-msvc": "1.7.40", "@swc/core-win32-ia32-msvc": "1.7.40", "@swc/core-win32-x64-msvc": "1.7.40" }, "peerDependencies": { "@swc/helpers": "*" }, "optionalPeers": ["@swc/helpers"] }, "sha512-0HIzM5vigVT5IvNum+pPuST9p8xFhN6mhdIKju7qYYeNuZG78lwms/2d8WgjTJJlzp6JlPguXGrMMNzjQw0qNg=="], @@ -464,7 +467,7 @@ "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], - "@types/bun": ["@types/bun@1.2.0", "", { "dependencies": { "bun-types": "1.2.0" } }, "sha512-5N1JqdahfpBlAv4wy6svEYcd/YfO2GNrbL95JOmFx8nkE6dbK4R0oSE5SpBA4vBRqgrOUAXF8Dpiz+gi7r80SA=="], + "@types/bun": ["@types/bun@1.2.1", "", { "dependencies": { "bun-types": "1.2.1" } }, "sha512-iiCeMAKMkft8EPQJxSbpVRD0DKqrh91w40zunNajce3nMNNFd/LnAquVisSZC+UpTMjDwtcdyzbWct08IvEqRA=="], "@types/eslint": ["@types/eslint@9.6.1", "", { "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag=="], @@ -482,7 +485,7 @@ "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], - "@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], + "@types/node": ["@types/node@22.13.0", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA=="], "@types/parse-json": ["@types/parse-json@4.0.2", "", {}, "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="], @@ -498,21 +501,21 @@ "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.21.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.21.0", "@typescript-eslint/type-utils": "8.21.0", "@typescript-eslint/utils": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^2.0.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.22.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.22.0", "@typescript-eslint/type-utils": "8.22.0", "@typescript-eslint/utils": "8.22.0", "@typescript-eslint/visitor-keys": "8.22.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^2.0.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw=="], - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.21.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.21.0", "@typescript-eslint/types": "8.21.0", "@typescript-eslint/typescript-estree": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA=="], + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.22.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.22.0", "@typescript-eslint/types": "8.22.0", "@typescript-eslint/typescript-estree": "8.22.0", "@typescript-eslint/visitor-keys": "8.22.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ=="], - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.21.0", "", { "dependencies": { "@typescript-eslint/types": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0" } }, "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA=="], + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.22.0", "", { "dependencies": { "@typescript-eslint/types": "8.22.0", "@typescript-eslint/visitor-keys": "8.22.0" } }, "sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ=="], - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.21.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.21.0", "@typescript-eslint/utils": "8.21.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.22.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.22.0", "@typescript-eslint/utils": "8.22.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA=="], - "@typescript-eslint/types": ["@typescript-eslint/types@8.21.0", "", {}, "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.22.0", "", {}, "sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A=="], - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.21.0", "", { "dependencies": { "@typescript-eslint/types": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.0.0" }, "peerDependencies": { "typescript": ">=4.8.4 <5.8.0" } }, "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.22.0", "", { "dependencies": { "@typescript-eslint/types": "8.22.0", "@typescript-eslint/visitor-keys": "8.22.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.0.0" }, "peerDependencies": { "typescript": ">=4.8.4 <5.8.0" } }, "sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w=="], - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.21.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.21.0", "@typescript-eslint/types": "8.21.0", "@typescript-eslint/typescript-estree": "8.21.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw=="], + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.22.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.22.0", "@typescript-eslint/types": "8.22.0", "@typescript-eslint/typescript-estree": "8.22.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg=="], - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.21.0", "", { "dependencies": { "@typescript-eslint/types": "8.21.0", "eslint-visitor-keys": "^4.2.0" } }, "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.22.0", "", { "dependencies": { "@typescript-eslint/types": "8.22.0", "eslint-visitor-keys": "^4.2.0" } }, "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w=="], "@vitejs/plugin-react-swc": ["@vitejs/plugin-react-swc@3.7.2", "", { "dependencies": { "@swc/core": "^1.7.26" }, "peerDependencies": { "vite": "^4 || ^5 || ^6" } }, "sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew=="], @@ -530,12 +533,16 @@ "@vitest/utils": ["@vitest/utils@3.0.4", "", { "dependencies": { "@vitest/pretty-format": "3.0.4", "loupe": "^3.1.2", "tinyrainbow": "^2.0.0" } }, "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ=="], + "@workspace/api": ["@workspace/api@workspace:apps/api"], + "@workspace/eslint-config": ["@workspace/eslint-config@workspace:packages/eslint-config"], "@workspace/schema": ["@workspace/schema@workspace:packages/schema"], "@workspace/ui": ["@workspace/ui@workspace:packages/ui"], + "@workspace/web": ["@workspace/web@workspace:apps/web"], + "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], @@ -604,7 +611,7 @@ "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], - "bun-types": ["bun-types@1.2.0", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-KEaJxyZfbV/c4eyG0vyehDpYmBGreNiQbZIqvVHJwZ4BmeuWlNZ7EAzMN2Zcd7ailmS/tGVW0BgYbGf+lGEpWw=="], + "bun-types": ["bun-types@1.2.1", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-p7bmXUWmrPWxhcbFVk7oUXM5jAGt94URaoa3qf4mz43MEhNAo/ot1urzBqctgvuq7y9YxkuN51u+/qm4BiIsHw=="], "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], @@ -614,7 +621,7 @@ "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], - "caniuse-lite": ["caniuse-lite@1.0.30001695", "", {}, "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw=="], + "caniuse-lite": ["caniuse-lite@1.0.30001696", "", {}, "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ=="], "chai": ["chai@5.1.2", "", { "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" } }, "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw=="], @@ -624,7 +631,7 @@ "check-error": ["check-error@2.1.1", "", {}, "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw=="], - "chokidar": ["chokidar@3.5.1", "", { "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.5.0" }, "optionalDependencies": { "fsevents": "~2.3.1" } }, "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw=="], + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], "chromium-bidi": ["chromium-bidi@1.1.0", "", { "dependencies": { "mitt": "3.0.1", "zod": "3.24.1" }, "peerDependencies": { "devtools-protocol": "*" } }, "sha512-HislCEczCuamWm3+55Lig9XKmMF13K+BGKum9rwtDAzgUAHT4h5jNwhDmD4U20VoVUG8ujnv9UZ89qiIf5uF8w=="], @@ -702,7 +709,7 @@ "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - "electron-to-chromium": ["electron-to-chromium@1.5.87", "", {}, "sha512-mPFwmEWmRivw2F8x3w3l2m6htAUN97Gy0kwpO++2m9iT1Gt8RCFVUfv9U/sIbHJ6rY4P6/ooqFL/eL7ock+pPg=="], + "electron-to-chromium": ["electron-to-chromium@1.5.90", "", {}, "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug=="], "elysia": ["elysia@1.2.10", "", { "dependencies": { "@sinclair/typebox": "^0.34.13", "cookie": "^1.0.2", "memoirist": "^0.2.0", "openapi-types": "^12.1.3" }, "peerDependencies": { "typescript": ">= 5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-QcNl2FjhHFRpKaqy1NoMpyCjJ7OcKBnHwLUkqGu09QwIV84PFb82ILvYJG4GS1RbGv76OA50luaqBLrM3SLZ2w=="], @@ -730,13 +737,13 @@ "eslint-config-prettier": ["eslint-config-prettier@10.0.1", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "build/bin/cli.js" } }, "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw=="], - "eslint-config-turbo": ["eslint-config-turbo@2.3.4", "", { "dependencies": { "eslint-plugin-turbo": "2.3.4" }, "peerDependencies": { "eslint": ">6.6.0", "turbo": ">2.0.0" } }, "sha512-MxPl+IKkR7mRGcHoiZAMHYl+RZnjqBsxTLf+IGnx8BrJQe9/CoLT7oBlUxXGvh9bsd5MTaqCxly5h8BE1v/7AA=="], + "eslint-config-turbo": ["eslint-config-turbo@2.4.0", "", { "dependencies": { "eslint-plugin-turbo": "2.4.0" }, "peerDependencies": { "eslint": ">6.6.0", "turbo": ">2.0.0" } }, "sha512-AiRdy83iwyG4+iMSxXQGUbEClxkGxSlXYH8E2a+0972ao75OWnlDBiiuLMOzDpJubR+QVGC4zonn29AIFCSbFw=="], "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@5.2.0-canary-de1eaa26-20250124", "", { "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-BJdM6GV56L/RvLZ6SefQNB2hf1cDT9Jj6s31czVuNp3MzOCpE4owM5f0pj01+MPtu5yF3h1HL8e0BqSwOLl4Ww=="], "eslint-plugin-react-refresh": ["eslint-plugin-react-refresh@0.4.18", "", { "peerDependencies": { "eslint": ">=8.40" } }, "sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw=="], - "eslint-plugin-turbo": ["eslint-plugin-turbo@2.3.4", "", { "dependencies": { "dotenv": "16.0.3" }, "peerDependencies": { "eslint": ">6.6.0", "turbo": ">2.0.0" } }, "sha512-9ncoUJkQGkC28NmlQiS17oB9mrE8XaSulRZiB5pv9vmRbYjOfUwyGhY3EIcoBRdww81igxOzXmAmvNNd6GFBPg=="], + "eslint-plugin-turbo": ["eslint-plugin-turbo@2.4.0", "", { "dependencies": { "dotenv": "16.0.3" }, "peerDependencies": { "eslint": ">6.6.0", "turbo": ">2.0.0" } }, "sha512-qCgoRi/OTc1VMxab7+sdKiV1xlkY4qjK9sM+kS7+WogrB1DxLguJSQXvk4HA13SD5VmJsq+8FYOw5q4EUk6Ixg=="], "eslint-scope": ["eslint-scope@8.2.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A=="], @@ -776,7 +783,7 @@ "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - "fastq": ["fastq@1.18.0", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw=="], + "fastq": ["fastq@1.19.0", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA=="], "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], @@ -836,6 +843,8 @@ "iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + "idb-keyval": ["idb-keyval@6.2.1", "", {}, "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg=="], + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], @@ -880,7 +889,11 @@ "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], - "jotai": ["jotai@2.11.1", "", { "peerDependencies": { "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-41Su098mpHIX29hF/XOpDb0SqF6EES7+HXfrhuBqVSzRkxX48hD5i8nGsEewWZNAsBWJCTTmuz8M946Ih2PfcQ=="], + "jotai": ["jotai@2.11.2", "", { "peerDependencies": { "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-H3xOvsdqjBJnXTvpgAWfff2y1B3wabi1iSA6FFd0FrLaM4ENsRJd+RJQtkNhY4PZgvAODa4PQhau9dheK+pUkw=="], + + "jotai-effect": ["jotai-effect@1.1.6", "", { "peerDependencies": { "jotai": ">=2.5.0" } }, "sha512-ZPLNZgRSxuTjyzMqLE9ervx1YjH6FwcaEC0kw77W7sEpZLgqjRm6UZTHjsyAxUWUCSwKQ8A3ai3Vkz0tZxSPgw=="], + + "jotai-optics": ["jotai-optics@0.4.0", "", { "peerDependencies": { "jotai": ">=2.0.0", "optics-ts": ">=2.0.0" } }, "sha512-osbEt9AgS55hC4YTZDew2urXKZkaiLmLqkTS/wfW5/l0ib8bmmQ7kBXSFaosV6jDDWSp00IipITcJARFHdp42g=="], "js-sha256": ["js-sha256@0.10.1", "", {}, "sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw=="], @@ -930,7 +943,7 @@ "log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="], - "loupe": ["loupe@3.1.2", "", {}, "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg=="], + "loupe": ["loupe@3.1.3", "", {}, "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug=="], "lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], @@ -990,6 +1003,8 @@ "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], + "optics-ts": ["optics-ts@2.4.1", "", {}, "sha512-HaYzMHvC80r7U/LqAd4hQyopDezC60PO2qF5GuIwALut2cl5rK1VWHsqTp0oqoJJWjiv6uXKqsO+Q2OO0C3MmQ=="], + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], "ora": ["ora@5.4.1", "", { "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", "is-unicode-supported": "^0.1.0", "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" } }, "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="], @@ -1082,10 +1097,6 @@ "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - "queue-tick": ["queue-tick@1.0.1", "", {}, "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="], - - "ramda": ["ramda@0.27.2", "", {}, "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA=="], - "react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], "react-dom": ["react-dom@19.0.0", "", { "dependencies": { "scheduler": "^0.25.0" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ=="], @@ -1104,7 +1115,7 @@ "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], - "readdirp": ["readdirp@3.5.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ=="], + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], "regenerator-runtime": ["regenerator-runtime@0.14.1", "", {}, "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="], @@ -1120,7 +1131,7 @@ "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], - "rollup": ["rollup@4.32.0", "", { "dependencies": { "@types/estree": "1.0.6" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.32.0", "@rollup/rollup-android-arm64": "4.32.0", "@rollup/rollup-darwin-arm64": "4.32.0", "@rollup/rollup-darwin-x64": "4.32.0", "@rollup/rollup-freebsd-arm64": "4.32.0", "@rollup/rollup-freebsd-x64": "4.32.0", "@rollup/rollup-linux-arm-gnueabihf": "4.32.0", "@rollup/rollup-linux-arm-musleabihf": "4.32.0", "@rollup/rollup-linux-arm64-gnu": "4.32.0", "@rollup/rollup-linux-arm64-musl": "4.32.0", "@rollup/rollup-linux-loongarch64-gnu": "4.32.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.32.0", "@rollup/rollup-linux-riscv64-gnu": "4.32.0", "@rollup/rollup-linux-s390x-gnu": "4.32.0", "@rollup/rollup-linux-x64-gnu": "4.32.0", "@rollup/rollup-linux-x64-musl": "4.32.0", "@rollup/rollup-win32-arm64-msvc": "4.32.0", "@rollup/rollup-win32-ia32-msvc": "4.32.0", "@rollup/rollup-win32-x64-msvc": "4.32.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg=="], + "rollup": ["rollup@4.32.1", "", { "dependencies": { "@types/estree": "1.0.6" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.32.1", "@rollup/rollup-android-arm64": "4.32.1", "@rollup/rollup-darwin-arm64": "4.32.1", "@rollup/rollup-darwin-x64": "4.32.1", "@rollup/rollup-freebsd-arm64": "4.32.1", "@rollup/rollup-freebsd-x64": "4.32.1", "@rollup/rollup-linux-arm-gnueabihf": "4.32.1", "@rollup/rollup-linux-arm-musleabihf": "4.32.1", "@rollup/rollup-linux-arm64-gnu": "4.32.1", "@rollup/rollup-linux-arm64-musl": "4.32.1", "@rollup/rollup-linux-loongarch64-gnu": "4.32.1", "@rollup/rollup-linux-powerpc64le-gnu": "4.32.1", "@rollup/rollup-linux-riscv64-gnu": "4.32.1", "@rollup/rollup-linux-s390x-gnu": "4.32.1", "@rollup/rollup-linux-x64-gnu": "4.32.1", "@rollup/rollup-linux-x64-musl": "4.32.1", "@rollup/rollup-win32-arm64-msvc": "4.32.1", "@rollup/rollup-win32-ia32-msvc": "4.32.1", "@rollup/rollup-win32-x64-msvc": "4.32.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-z+aeEsOeEa3mEbS1Tjl6sAZ8NE3+AalQz1RJGj81M+fizusbdDMoEJwdJNHfaB40Scr4qNu+welOfes7maKonA=="], "run-async": ["run-async@2.4.1", "", {}, "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ=="], @@ -1134,7 +1145,7 @@ "scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], - "semver": ["semver@7.6.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="], + "semver": ["semver@7.7.0", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ=="], "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], @@ -1162,7 +1173,7 @@ "std-env": ["std-env@3.8.0", "", {}, "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w=="], - "streamx": ["streamx@2.21.1", "", { "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" }, "optionalDependencies": { "bare-events": "^2.2.0" } }, "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw=="], + "streamx": ["streamx@2.22.0", "", { "dependencies": { "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" }, "optionalDependencies": { "bare-events": "^2.2.0" } }, "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw=="], "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="], @@ -1228,19 +1239,19 @@ "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "turbo": ["turbo@2.3.4", "", { "optionalDependencies": { "turbo-darwin-64": "2.3.4", "turbo-darwin-arm64": "2.3.4", "turbo-linux-64": "2.3.4", "turbo-linux-arm64": "2.3.4", "turbo-windows-64": "2.3.4", "turbo-windows-arm64": "2.3.4" }, "bin": { "turbo": "bin/turbo" } }, "sha512-1kiLO5C0Okh5ay1DbHsxkPsw9Sjsbjzm6cF85CpWjR0BIyBFNDbKqtUyqGADRS1dbbZoQanJZVj4MS5kk8J42Q=="], + "turbo": ["turbo@2.4.0", "", { "optionalDependencies": { "turbo-darwin-64": "2.4.0", "turbo-darwin-arm64": "2.4.0", "turbo-linux-64": "2.4.0", "turbo-linux-arm64": "2.4.0", "turbo-windows-64": "2.4.0", "turbo-windows-arm64": "2.4.0" }, "bin": { "turbo": "bin/turbo" } }, "sha512-ah/yQp2oMif1X0u7fBJ4MLMygnkbKnW5O8SG6pJvloPCpHfFoZctkSVQiJ3VnvNTq71V2JJIdwmOeu1i34OQyg=="], - "turbo-darwin-64": ["turbo-darwin-64@2.3.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-uOi/cUIGQI7uakZygH+cZQ5D4w+aMLlVCN2KTGot+cmefatps2ZmRRufuHrEM0Rl63opdKD8/JIu+54s25qkfg=="], + "turbo-darwin-64": ["turbo-darwin-64@2.4.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-kVMScnPUa3R4n7woNmkR15kOY0aUwCLJcUyH5UC59ggKqr5HIHwweKYK8N1pwBQso0LQF4I9i93hIzfJguCcwQ=="], - "turbo-darwin-arm64": ["turbo-darwin-arm64@2.3.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-IIM1Lq5R+EGMtM1YFGl4x8Xkr0MWb4HvyU8N4LNoQ1Be5aycrOE+VVfH+cDg/Q4csn+8bxCOxhRp5KmUflrVTQ=="], + "turbo-darwin-arm64": ["turbo-darwin-arm64@2.4.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8JObIpfun1guA7UlFR5jC/SOVm49lRscxMxfg5jZ5ABft79rhFC+ygN9AwAhGKv6W2DUhIh2xENkSgu4EDmUyg=="], - "turbo-linux-64": ["turbo-linux-64@2.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-1aD2EfR7NfjFXNH3mYU5gybLJEFi2IGOoKwoPLchAFRQ6OEJQj201/oNo9CDL75IIrQo64/NpEgVyZtoPlfhfA=="], + "turbo-linux-64": ["turbo-linux-64@2.4.0", "", { "os": "linux", "cpu": "x64" }, "sha512-xWDGGcRlBuGV7HXWAVuTY6vsQi4aZxGMAnuiuNDg8Ij1aHGohOM0RUsWMXjxz4vuJmjk9+/D6NQqHH3AJEXezg=="], - "turbo-linux-arm64": ["turbo-linux-arm64@2.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-MxTpdKwxCaA5IlybPxgGLu54fT2svdqTIxRd0TQmpRJIjM0s4kbM+7YiLk0mOh6dGqlWPUsxz/A0Mkn8Xr5o7Q=="], + "turbo-linux-arm64": ["turbo-linux-arm64@2.4.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-c3En99xMguc/Pdtk/rZP53LnDdw0W6lgUc04he8r8F+UHYSNvgzHh0WGXXmCC6lGbBH72kPhhGx4bAwyvi7dug=="], - "turbo-windows-64": ["turbo-windows-64@2.3.4", "", { "os": "win32", "cpu": "x64" }, "sha512-yyCrWqcRGu1AOOlrYzRnizEtdkqi+qKP0MW9dbk9OsMDXaOI5jlWtTY/AtWMkLw/czVJ7yS9Ex1vi9DB6YsFvw=="], + "turbo-windows-64": ["turbo-windows-64@2.4.0", "", { "os": "win32", "cpu": "x64" }, "sha512-/gOORuOlyA8JDPzyA16CD3wvyRcuBFePa1URAnFUof9hXQmKxK0VvSDO79cYZFsJSchCKNJpckUS0gYxGsWwoA=="], - "turbo-windows-arm64": ["turbo-windows-arm64@2.3.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-PggC3qH+njPfn1PDVwKrQvvQby8X09ufbqZ2Ha4uSu+5TvPorHHkAbZVHKYj2Y+tvVzxRzi4Sv6NdHXBS9Be5w=="], + "turbo-windows-arm64": ["turbo-windows-arm64@2.4.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-/DJIdTFijEMM5LSiEpSfarDOMOlYqJV+EzmppqWtHqDsOLF4hbbIBH9sJR6OOp5dURAu5eURBYdmvBRz9Lo6TA=="], "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], @@ -1250,7 +1261,7 @@ "typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="], - "typescript-eslint": ["typescript-eslint@8.21.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.21.0", "@typescript-eslint/parser": "8.21.0", "@typescript-eslint/utils": "8.21.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw=="], + "typescript-eslint": ["typescript-eslint@8.22.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.22.0", "@typescript-eslint/parser": "8.22.0", "@typescript-eslint/utils": "8.22.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-Y2rj210FW1Wb6TWXzQc5+P+EWI9/zdS57hLEc0gnyuvdzWo8+Y8brKlbj0muejonhMI/xAZCnZZwjbIfv1CkOw=="], "unbzip2-stream": ["unbzip2-stream@1.4.3", "", { "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" } }, "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg=="], @@ -1334,6 +1345,10 @@ "@jest/schemas/@sinclair/typebox": ["@sinclair/typebox@0.27.8", "", {}, "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="], + "@jest/types/@types/node": ["@types/node@22.12.0", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA=="], + + "@lingui/cli/chokidar": ["chokidar@3.5.1", "", { "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.5.0" }, "optionalDependencies": { "fsevents": "~2.3.1" } }, "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw=="], + "@lingui/cli/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], "@lingui/cli/esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="], @@ -1344,10 +1359,16 @@ "@testing-library/dom/pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], + "@types/ws/@types/node": ["@types/node@22.12.0", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA=="], + + "@types/yauzl/@types/node": ["@types/node@22.12.0", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA=="], + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "babel-plugin-macros/cosmiconfig": ["cosmiconfig@7.1.0", "", { "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" } }, "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="], + "bun-types/@types/node": ["@types/node@22.12.0", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA=="], + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "cli-truncate/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], @@ -1398,8 +1419,6 @@ "sucrase/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], - "tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], - "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], "wrap-ansi/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], @@ -1412,6 +1431,10 @@ "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + "@lingui/cli/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "@lingui/cli/chokidar/readdirp": ["readdirp@3.5.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ=="], + "@lingui/cli/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], "@lingui/cli/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="], @@ -1490,10 +1513,6 @@ "sucrase/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], - "wrap-ansi/string-width/emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], diff --git a/package.json b/package.json index 13aaeb6..de305ae 100644 --- a/package.json +++ b/package.json @@ -20,12 +20,12 @@ "lint-staged": "^15.4.3", "prettier": "3.4.2", "prettier-plugin-tailwindcss": "^0.6.11", - "turbo": "^2.3.4", + "turbo": "^2.4.0", "typescript": "^5.7.3", "vite": "6.0.11", "vitest": "^3.0.4" }, - "packageManager": "bun@1.2.0", + "packageManager": "bun@1.2.1", "overrides": { "@swc/core": "1.7.40" } diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index ec766f0..f266d20 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -18,10 +18,10 @@ "@types/eslint-config-prettier": "^6.11.3", "@types/eslint__js": "^8.42.3", "eslint-config-prettier": "^10.0.1", - "eslint-config-turbo": "^2.3.4", + "eslint-config-turbo": "^2.4.0", "eslint-plugin-react-hooks": "5.2.0-canary-de1eaa26-20250124", "eslint-plugin-react-refresh": "^0.4.18", "globals": "^15.14.0", - "typescript-eslint": "8.21.0" + "typescript-eslint": "8.22.0" } } \ No newline at end of file diff --git a/packages/schema/package.json b/packages/schema/package.json index 3acfa5d..8453ae9 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -9,7 +9,10 @@ "scripts": { "lint": "eslint . --max-warnings 0" }, + "devDependencies": { + "@sinclair/typebox": "^0.34.15" + }, "peerDependencies": { - "@sinclair/typebox": "^0.34.14" + "@sinclair/typebox": "*" } } \ No newline at end of file diff --git a/packages/ui/src/components/skeleton.tsx b/packages/ui/src/components/skeleton.tsx new file mode 100644 index 0000000..9e97c3f --- /dev/null +++ b/packages/ui/src/components/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@workspace/ui/lib/utils" + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
+ ) +} + +export { Skeleton } diff --git a/turbo.json b/turbo.json index 653b384..73d7d6a 100644 --- a/turbo.json +++ b/turbo.json @@ -4,7 +4,8 @@ "tasks": { "build": { "dependsOn": [ - "^build" + "^build", + "typecheck" ], "outputs": [ "dist/**" @@ -24,6 +25,7 @@ "persistent": true }, "lint": {}, - "test": {} + "test": {}, + "typecheck": {} } } \ No newline at end of file From 61707809af68ae5b0fb4b7855d277ef47e3ba770 Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Sat, 1 Feb 2025 01:31:55 +0200 Subject: [PATCH 18/25] chore: revive tests --- apps/api/src/{bun.d.ts => bun-env.d.ts} | 0 apps/web/package.json | 1 + bun.lock | 9 ++++++++- vitest.workspace.ts | 3 +++ 4 files changed, 12 insertions(+), 1 deletion(-) rename apps/api/src/{bun.d.ts => bun-env.d.ts} (100%) create mode 100644 vitest.workspace.ts diff --git a/apps/api/src/bun.d.ts b/apps/api/src/bun-env.d.ts similarity index 100% rename from apps/api/src/bun.d.ts rename to apps/api/src/bun-env.d.ts diff --git a/apps/web/package.json b/apps/web/package.json index dd8d8dc..1bfdb53 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -51,6 +51,7 @@ "@workspace/eslint-config": "workspace:*", "autoprefixer": "^10.4.20", "elysia": "^1.2.10", + "happy-dom": "^16.8.1", "postcss": "^8.5.1", "tailwindcss": "^3.4.17", "vite-tsconfig-paths": "^5.1.4" diff --git a/bun.lock b/bun.lock index fa59680..6f9863a 100644 --- a/bun.lock +++ b/bun.lock @@ -72,6 +72,7 @@ "@workspace/eslint-config": "workspace:*", "autoprefixer": "^10.4.20", "elysia": "^1.2.10", + "happy-dom": "^16.8.1", "postcss": "^8.5.1", "tailwindcss": "^3.4.17", "vite-tsconfig-paths": "^5.1.4", @@ -829,6 +830,8 @@ "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], + "happy-dom": ["happy-dom@16.8.1", "", { "dependencies": { "webidl-conversions": "^7.0.0", "whatwg-mimetype": "^3.0.0" } }, "sha512-n0QrmT9lD81rbpKsyhnlz3DgnMZlaOkJPpgi746doA+HvaMC79bdWkwjrNnGJRvDrWTI8iOcJiVTJ5CdT/AZRw=="], + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], @@ -1289,7 +1292,9 @@ "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], - "webidl-conversions": ["webidl-conversions@4.0.2", "", {}, "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="], + "webidl-conversions": ["webidl-conversions@7.0.0", "", {}, "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="], + + "whatwg-mimetype": ["whatwg-mimetype@3.0.0", "", {}, "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="], "whatwg-url": ["whatwg-url@7.1.0", "", { "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } }, "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg=="], @@ -1419,6 +1424,8 @@ "sucrase/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + "whatwg-url/webidl-conversions": ["webidl-conversions@4.0.2", "", {}, "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="], + "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], "wrap-ansi/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], diff --git a/vitest.workspace.ts b/vitest.workspace.ts new file mode 100644 index 0000000..7d4642d --- /dev/null +++ b/vitest.workspace.ts @@ -0,0 +1,3 @@ +import { defineWorkspace } from 'vitest/config'; + +export default defineWorkspace(['apps/*', 'packages/*']); From d42e627b22c8a19987848617553b24b6bbdffbcf Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Sun, 2 Feb 2025 14:36:32 +0200 Subject: [PATCH 19/25] feat: async errors on import --- apps/api/package.json | 2 +- apps/api/src/routes/screenshots.ts | 10 ++---- apps/web/src/atoms/importAtoms.ts | 6 +++- apps/web/src/components/ImportImages.tsx | 35 +++++++++--------- apps/web/src/components/OptimizeWaveform.tsx | 3 ++ apps/web/src/locales/en.po | 36 ++++++++++--------- apps/web/src/locales/en.ts | 2 +- .../src/utils/atomWithExpiringWriteState.ts | 12 ++++--- apps/web/src/utils/client.ts | 11 ++++++ 9 files changed, 69 insertions(+), 48 deletions(-) diff --git a/apps/api/package.json b/apps/api/package.json index 346e09a..fe0fa73 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "bun run --hot src/index.ts", + "dev": "bun run --watch src/index.ts", "start": "bun run src/index.ts", "lint": "eslint . --max-warnings 0", "typecheck": "tsc --noEmit" diff --git a/apps/api/src/routes/screenshots.ts b/apps/api/src/routes/screenshots.ts index 5b3b7a2..e96786b 100644 --- a/apps/api/src/routes/screenshots.ts +++ b/apps/api/src/routes/screenshots.ts @@ -1,18 +1,12 @@ import { Elysia, form, t } from 'elysia'; import puppeteer, { type Device, KnownDevices } from 'puppeteer'; -import { url } from '@workspace/schema'; +import { url, deviceType } from '@workspace/schema'; type ColorScheme = 'light' | 'dark'; type DeviceType = typeof deviceType.static; const TIMEOUT = 100000; -const deviceType = t.Union([ - t.Literal('desktop'), - t.Literal('tablet'), - t.Literal('mobile') -]); - const defaultColorSchemes: ColorScheme[] = ['dark', 'light']; const deviceMapping: Partial> = { mobile: KnownDevices['iPhone 15'], @@ -25,7 +19,7 @@ interface ScreenshotsOptions { } const screenshotService = new Elysia({ name: 'Service.Screenshot' }) - .decorate('browser', await (puppeteer.launch({ headless: 'shell' }))) + .decorate('browser', await puppeteer.launch({ headless: 'shell' })) .derive({ as: 'scoped' }, ({ browser }) => ({ async *screenshots(url: string, options: ScreenshotsOptions) { const { deviceType, colorSchemes = defaultColorSchemes } = options; diff --git a/apps/web/src/atoms/importAtoms.ts b/apps/web/src/atoms/importAtoms.ts index 55d8a65..08d1240 100644 --- a/apps/web/src/atoms/importAtoms.ts +++ b/apps/web/src/atoms/importAtoms.ts @@ -33,12 +33,16 @@ export const importAtom = atomWithExpiringWriteState( return (await fetch(source, { signal })).blob(); } const { url, deviceType } = source; - const { data } = await client + const { data, error } = await client .screenshots({ url: encodeURIComponent(url) }) .get({ query: { deviceType }, fetch: { signal } }); + if (error) { + throw error.value; + } + return Object.values(data || {}); }) ) diff --git a/apps/web/src/components/ImportImages.tsx b/apps/web/src/components/ImportImages.tsx index 5c103dd..d5111ee 100644 --- a/apps/web/src/components/ImportImages.tsx +++ b/apps/web/src/components/ImportImages.tsx @@ -1,10 +1,7 @@ import { useAtom, useAtomValue } from 'jotai'; import { Camera, Monitor, Smartphone, Tablet } from 'lucide-react'; import { useForm } from 'react-hook-form'; -import { typeboxResolver } from '@hookform/resolvers/typebox'; -import { Type } from '@sinclair/typebox'; import { Trans, Plural, useLingui } from '@lingui/react/macro'; -import { url, deviceType } from '@workspace/schema'; import { cn } from '@workspace/ui/lib/utils'; import { Button, ButtonProps } from '@workspace/ui/components/button'; import { @@ -34,13 +31,9 @@ import { ChooseFiles } from '@/components/ChooseFiles'; import { LoadableIcon } from '@/components/LoadableIcon'; import { importAtom, importSignalAtom } from '@/atoms/importAtoms'; import { unwrappedImagesAtom } from '@/atoms/imagesAtom'; +import { isValidationError } from '@/utils/client'; import { LOADABLE_STATE } from '@/constants'; -import { ImageSource, Site } from '@/types'; - -const importSchema = Type.Object({ - url, - deviceType -}); +import { Site } from '@/types'; export type ImportImagesProps = ButtonProps; @@ -53,18 +46,27 @@ export function ImportImages(props: ImportImagesProps) { const isImporting = importState === LOADABLE_STATE.LOADING; const form = useForm({ - resolver: typeboxResolver(importSchema), defaultValues: { url: '', deviceType: 'desktop' } }); - const handleSubmitOrFilesChange = async ( - imageSource: ImageSource | ImageSource[] - ) => { - await importImages(imageSource); - toggleImportSignal(false); + const handleSubmitOrFilesChange = async (imageSource: Site | File[]) => { + try { + await importImages(imageSource); + toggleImportSignal(false); + } catch (error) { + if (isValidationError(error)) { + switch (error.property) { + case '/url': + form.setError('url', error); + break; + case '/deviceType': + form.setError('deviceType', error); + } + } + } }; const handleDeviceTypeChange = @@ -138,7 +140,7 @@ export function ImportImages(props: ImportImagesProps) { size="sm" > @@ -163,6 +165,7 @@ export function ImportImages(props: ImportImagesProps) { + )} diff --git a/apps/web/src/components/OptimizeWaveform.tsx b/apps/web/src/components/OptimizeWaveform.tsx index 403b61f..80ab379 100644 --- a/apps/web/src/components/OptimizeWaveform.tsx +++ b/apps/web/src/components/OptimizeWaveform.tsx @@ -3,8 +3,10 @@ import { WandSparkles } from 'lucide-react'; import { optimizeWaveformAtom } from '@/atoms/waveformAtoms'; import { Button } from '@workspace/ui/components/button'; import { unwrappedLargestImageAtom } from '@/atoms/largestImageAtom'; +import { useLingui } from '@lingui/react/macro'; export function OptimizeWaveform() { + const { t } = useLingui(); const largestImage = useAtomValue(unwrappedLargestImageAtom); const optimizeWaveform = useSetAtom(optimizeWaveformAtom); @@ -19,6 +21,7 @@ export function OptimizeWaveform() { variant="ghost" className="group" disabled={!largestImage} + aria-label={t`Optimize waveform`} > diff --git a/apps/web/src/locales/en.po b/apps/web/src/locales/en.po index 4cdb4f6..f9f0f07 100644 --- a/apps/web/src/locales/en.po +++ b/apps/web/src/locales/en.po @@ -18,8 +18,8 @@ msgstr "" msgid "{0, plural, one {# image} other {# images}}" msgstr "" -#: src/components/Waveform.tsx:52 -#: src/components/Waveform.tsx:59 +#: src/components/Waveform.tsx:47 +#: src/components/Waveform.tsx:53 msgid "Amplitude" msgstr "" @@ -27,7 +27,7 @@ msgstr "" msgid "Built by <0>gzukas. The source code is available on <1>GitHub." msgstr "" -#: src/components/RemoveImages.tsx:49 +#: src/components/RemoveImages.tsx:60 msgid "Cancel" msgstr "" @@ -36,7 +36,7 @@ msgstr "" msgid "Choose file" msgstr "" -#: src/components/ImportImages.tsx:180 +#: src/components/ImportImages.tsx:181 msgid "Choose Files" msgstr "" @@ -64,11 +64,11 @@ msgstr "" #: src/components/ImportImages.tsx:86 #: src/components/ImportImages.tsx:93 -#: src/components/ImportImages.tsx:194 +#: src/components/ImportImages.tsx:195 msgid "Import" msgstr "" -#: src/components/Editor.tsx:39 +#: src/components/Editor.tsx:49 msgid "Import images featuring both light and dark themes to start." msgstr "" @@ -77,25 +77,29 @@ msgstr "" msgid "Mobile" msgstr "" -#: src/components/RemoveImages.tsx:52 +#: src/components/OptimizeWaveform.tsx:24 +msgid "Optimize waveform" +msgstr "" + +#: src/components/RemoveImages.tsx:63 msgid "Remove" msgstr "" -#: src/components/RemoveImages.tsx:30 +#: src/components/RemoveImages.tsx:41 msgid "Remove images" msgstr "" -#: src/components/RemoveImages.tsx:38 +#: src/components/RemoveImages.tsx:49 msgid "Remove images?" msgstr "" -#: src/components/ReverseImages.tsx:22 -#: src/components/ReverseImages.tsx:27 +#: src/components/ReverseImages.tsx:24 +#: src/components/ReverseImages.tsx:29 msgid "Reverse images" msgstr "" -#: src/components/Waveform.tsx:30 -#: src/components/Waveform.tsx:37 +#: src/components/Waveform.tsx:26 +#: src/components/Waveform.tsx:33 msgid "Rotation" msgstr "" @@ -124,7 +128,7 @@ msgstr "" msgid "The side should respond to the light and dark themes using the <0>prefers-color-scheme media query. If it does not, choose files instead." msgstr "" -#: src/components/RemoveImages.tsx:41 +#: src/components/RemoveImages.tsx:52 msgid "These images will be permanently removed. This action cannot be undone." msgstr "" @@ -132,7 +136,7 @@ msgstr "" msgid "Toggle theme" msgstr "" -#: src/components/Waveform.tsx:41 -#: src/components/Waveform.tsx:48 +#: src/components/Waveform.tsx:37 +#: src/components/Waveform.tsx:43 msgid "Wavelength" msgstr "" diff --git a/apps/web/src/locales/en.ts b/apps/web/src/locales/en.ts index 3ed1369..916fcf8 100644 --- a/apps/web/src/locales/en.ts +++ b/apps/web/src/locales/en.ts @@ -1 +1 @@ -/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"nJw77c\":[[\"0\",\"plural\",{\"one\":[\"#\",\" image\"],\"other\":[\"#\",\" images\"]}]],\"sowZBN\":[\"Amplitude\"],\"R5LSjZ\":[\"Built by <0>gzukas. The source code is available on <1>GitHub.\"],\"dEgA5A\":[\"Cancel\"],\"+yPBXI\":[\"Choose file\"],\"8kLsG2\":[\"Choose Files\"],\"jMmFWW\":[\"Copy PNG\"],\"83/ChY\":[\"Cosine\"],\"BBqGS9\":[\"Desktop\"],\"GS+Mus\":[\"Export\"],\"jLXxGK\":[\"https://example.com\"],\"l3s5ri\":[\"Import\"],\"5+Jw7w\":[\"Import images featuring both light and dark themes to start.\"],\"dMsM20\":[\"Mobile\"],\"t/YqKh\":[\"Remove\"],\"kdFX6f\":[\"Remove images\"],\"q9Ojcg\":[\"Remove images?\"],\"KmK/36\":[\"Reverse images\"],\"exWyD0\":[\"Rotation\"],\"TRo55K\":[\"Save to\"],\"PPWgQv\":[\"See Example\"],\"L8Jb2l\":[\"Sine\"],\"N0dgdE\":[\"Start with web protocol, e.g. <0>https://\"],\"Dl80Sh\":[\"Tablet\"],\"8+z3yQ\":[\"The side should respond to the light and dark themes using the <0>prefers-color-scheme media query. If it does not, choose files instead.\"],\"QXQk5/\":[\"These images will be permanently removed. This action cannot be undone.\"],\"2N0C4b\":[\"Toggle theme\"],\"eKV6Y2\":[\"Wavelength\"]}")as Messages; \ No newline at end of file +/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"nJw77c\":[[\"0\",\"plural\",{\"one\":[\"#\",\" image\"],\"other\":[\"#\",\" images\"]}]],\"sowZBN\":[\"Amplitude\"],\"R5LSjZ\":[\"Built by <0>gzukas. The source code is available on <1>GitHub.\"],\"dEgA5A\":[\"Cancel\"],\"+yPBXI\":[\"Choose file\"],\"8kLsG2\":[\"Choose Files\"],\"jMmFWW\":[\"Copy PNG\"],\"83/ChY\":[\"Cosine\"],\"BBqGS9\":[\"Desktop\"],\"GS+Mus\":[\"Export\"],\"jLXxGK\":[\"https://example.com\"],\"l3s5ri\":[\"Import\"],\"5+Jw7w\":[\"Import images featuring both light and dark themes to start.\"],\"dMsM20\":[\"Mobile\"],\"EGh27D\":[\"Optimize waveform\"],\"t/YqKh\":[\"Remove\"],\"kdFX6f\":[\"Remove images\"],\"q9Ojcg\":[\"Remove images?\"],\"KmK/36\":[\"Reverse images\"],\"exWyD0\":[\"Rotation\"],\"TRo55K\":[\"Save to\"],\"PPWgQv\":[\"See Example\"],\"L8Jb2l\":[\"Sine\"],\"N0dgdE\":[\"Start with web protocol, e.g. <0>https://\"],\"Dl80Sh\":[\"Tablet\"],\"8+z3yQ\":[\"The side should respond to the light and dark themes using the <0>prefers-color-scheme media query. If it does not, choose files instead.\"],\"QXQk5/\":[\"These images will be permanently removed. This action cannot be undone.\"],\"2N0C4b\":[\"Toggle theme\"],\"eKV6Y2\":[\"Wavelength\"]}")as Messages; \ No newline at end of file diff --git a/apps/web/src/utils/atomWithExpiringWriteState.ts b/apps/web/src/utils/atomWithExpiringWriteState.ts index b2eb44d..0939eaa 100644 --- a/apps/web/src/utils/atomWithExpiringWriteState.ts +++ b/apps/web/src/utils/atomWithExpiringWriteState.ts @@ -24,11 +24,13 @@ export function atomWithExpiringWriteState( set(writeStateAtom, LOADABLE_STATE.HAS_DATA, expireInMs); return result; } catch (error) { - set( - writeStateAtom, - shouldIgnoreError?.(error) ? null : LOADABLE_STATE.HAS_ERROR, - expireInMs - ); + const errorState = shouldIgnoreError?.(error) + ? null + : LOADABLE_STATE.HAS_ERROR; + set(writeStateAtom, errorState, expireInMs); + if (errorState) { + throw error; + } } } ); diff --git a/apps/web/src/utils/client.ts b/apps/web/src/utils/client.ts index df0e57d..62e8522 100644 --- a/apps/web/src/utils/client.ts +++ b/apps/web/src/utils/client.ts @@ -2,3 +2,14 @@ import { treaty } from '@elysiajs/eden'; import type { App } from '../../../api/src/index'; export const client = treaty(import.meta.env.VITE_API_URL); + +export function isValidationError( + error: unknown +): error is { property?: string; message?: string } { + return ( + !!error && + typeof error === 'object' && + 'type' in error && + error.type === 'validation' + ); +} From 759031e2bd63f1f06818223b5707c83decef2acc Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Sun, 2 Feb 2025 18:03:54 +0200 Subject: [PATCH 20/25] feat: desktop device type --- apps/api/src/routes/screenshots.ts | 24 ++++++++++++++---------- apps/web/src/components/ImportImages.tsx | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/apps/api/src/routes/screenshots.ts b/apps/api/src/routes/screenshots.ts index e96786b..21d59be 100644 --- a/apps/api/src/routes/screenshots.ts +++ b/apps/api/src/routes/screenshots.ts @@ -8,9 +8,17 @@ type DeviceType = typeof deviceType.static; const TIMEOUT = 100000; const defaultColorSchemes: ColorScheme[] = ['dark', 'light']; -const deviceMapping: Partial> = { +const deviceMapping: Record = { mobile: KnownDevices['iPhone 15'], - tablet: KnownDevices['iPad'] + tablet: KnownDevices['iPad'], + desktop: { + userAgent: + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/132.0.6834.110 Safari/537.36', + viewport: { + width: 1200, + height: 630 + } + } }; interface ScreenshotsOptions { @@ -22,16 +30,12 @@ const screenshotService = new Elysia({ name: 'Service.Screenshot' }) .decorate('browser', await puppeteer.launch({ headless: 'shell' })) .derive({ as: 'scoped' }, ({ browser }) => ({ async *screenshots(url: string, options: ScreenshotsOptions) { - const { deviceType, colorSchemes = defaultColorSchemes } = options; + const { deviceType = 'desktop', colorSchemes = defaultColorSchemes } = + options; const page = await browser.newPage(); - page.setCacheEnabled(false); - - const device = deviceType ? deviceMapping[deviceType] : null; - if (device) { - await page.emulate(device); - } - + await page.setCacheEnabled(false); + await page.emulate(deviceMapping[deviceType]); await page.goto(url, { timeout: TIMEOUT, waitUntil: 'networkidle0' }); for (const colorScheme of colorSchemes) { diff --git a/apps/web/src/components/ImportImages.tsx b/apps/web/src/components/ImportImages.tsx index d5111ee..8246c75 100644 --- a/apps/web/src/components/ImportImages.tsx +++ b/apps/web/src/components/ImportImages.tsx @@ -140,7 +140,7 @@ export function ImportImages(props: ImportImagesProps) { size="sm" > From 23a5eb82cc785d976c41251ef22e943e55c11dc4 Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Sun, 2 Feb 2025 18:17:07 +0200 Subject: [PATCH 21/25] deps: bump --- apps/api/package.json | 2 +- apps/web/package.json | 8 ++++---- bun.lock | 20 +++++++++----------- package.json | 2 +- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/apps/api/package.json b/apps/api/package.json index fe0fa73..13104ed 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -13,7 +13,7 @@ "@elysiajs/cors": "^1.2.0", "@workspace/schema": "workspace:*", "close-with-grace": "^2.2.0", - "elysia": "^1.2.10", + "elysia": "^1.2.11", "puppeteer": "^24.1.1" }, "devDependencies": { diff --git a/apps/web/package.json b/apps/web/package.json index 1bfdb53..53f0fd9 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -12,7 +12,7 @@ "messages:compile": "lingui compile --typescript", "preview": "vite preview" }, - "packageManager": "bun@1.2.1", + "packageManager": "bun@1.2.2", "dependencies": { "@elysiajs/eden": "^1.2.0", "@hookform/resolvers": "^3.10.0", @@ -28,7 +28,7 @@ "browser-fs-access": "^0.35.0", "clsx": "^2.1.1", "idb-keyval": "^6.2.1", - "jotai": "^2.11.2", + "jotai": "^2.11.3", "jotai-effect": "^1.1.6", "jotai-optics": "^0.4.0", "lucide-react": "^0.474.0", @@ -43,14 +43,14 @@ "@lingui/vite-plugin": "^5.2.0", "@testing-library/react": "^16.2.0", "@tsconfig/vite-react": "^3.4.0", - "@types/bun": "^1.2.1", + "@types/bun": "^1.2.2", "@types/node": "^22.13.0", "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "3.7.2", "@workspace/eslint-config": "workspace:*", "autoprefixer": "^10.4.20", - "elysia": "^1.2.10", + "elysia": "^1.2.11", "happy-dom": "^16.8.1", "postcss": "^8.5.1", "tailwindcss": "^3.4.17", diff --git a/bun.lock b/bun.lock index 6f9863a..22937c8 100644 --- a/bun.lock +++ b/bun.lock @@ -22,7 +22,7 @@ "@elysiajs/cors": "^1.2.0", "@workspace/schema": "workspace:*", "close-with-grace": "^2.2.0", - "elysia": "^1.2.10", + "elysia": "^1.2.11", "puppeteer": "^24.1.1", }, "devDependencies": { @@ -49,7 +49,7 @@ "browser-fs-access": "^0.35.0", "clsx": "^2.1.1", "idb-keyval": "^6.2.1", - "jotai": "^2.11.2", + "jotai": "^2.11.3", "jotai-effect": "^1.1.6", "jotai-optics": "^0.4.0", "lucide-react": "^0.474.0", @@ -64,14 +64,14 @@ "@lingui/vite-plugin": "^5.2.0", "@testing-library/react": "^16.2.0", "@tsconfig/vite-react": "^3.4.0", - "@types/bun": "^1.2.1", + "@types/bun": "^1.2.2", "@types/node": "^22.13.0", "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "3.7.2", "@workspace/eslint-config": "workspace:*", "autoprefixer": "^10.4.20", - "elysia": "^1.2.10", + "elysia": "^1.2.11", "happy-dom": "^16.8.1", "postcss": "^8.5.1", "tailwindcss": "^3.4.17", @@ -468,7 +468,7 @@ "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], - "@types/bun": ["@types/bun@1.2.1", "", { "dependencies": { "bun-types": "1.2.1" } }, "sha512-iiCeMAKMkft8EPQJxSbpVRD0DKqrh91w40zunNajce3nMNNFd/LnAquVisSZC+UpTMjDwtcdyzbWct08IvEqRA=="], + "@types/bun": ["@types/bun@1.2.2", "", { "dependencies": { "bun-types": "1.2.2" } }, "sha512-tr74gdku+AEDN5ergNiBnplr7hpDp3V1h7fqI2GcR/rsUaM39jpSeKH0TFibRvU0KwniRx5POgaYnaXbk0hU+w=="], "@types/eslint": ["@types/eslint@9.6.1", "", { "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag=="], @@ -612,7 +612,7 @@ "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], - "bun-types": ["bun-types@1.2.1", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-p7bmXUWmrPWxhcbFVk7oUXM5jAGt94URaoa3qf4mz43MEhNAo/ot1urzBqctgvuq7y9YxkuN51u+/qm4BiIsHw=="], + "bun-types": ["bun-types@1.2.2", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-RCbMH5elr9gjgDGDhkTTugA21XtJAy/9jkKe/G3WR2q17VPGhcquf9Sir6uay9iW+7P/BV0CAHA1XlHXMAVKHg=="], "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], @@ -712,7 +712,7 @@ "electron-to-chromium": ["electron-to-chromium@1.5.90", "", {}, "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug=="], - "elysia": ["elysia@1.2.10", "", { "dependencies": { "@sinclair/typebox": "^0.34.13", "cookie": "^1.0.2", "memoirist": "^0.2.0", "openapi-types": "^12.1.3" }, "peerDependencies": { "typescript": ">= 5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-QcNl2FjhHFRpKaqy1NoMpyCjJ7OcKBnHwLUkqGu09QwIV84PFb82ILvYJG4GS1RbGv76OA50luaqBLrM3SLZ2w=="], + "elysia": ["elysia@1.2.11", "", { "dependencies": { "@sinclair/typebox": "^0.34.15", "cookie": "^1.0.2", "memoirist": "^0.3.0", "openapi-types": "^12.1.3" }, "peerDependencies": { "typescript": ">= 5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-9bt2tsru9LcFAVrWDfcREJFFSIz0pauzo/XO+5kYPjtHNbjsVkRLQTNDYydy3mQQmz4Acxavoi2MCBbay3DETw=="], "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], @@ -892,7 +892,7 @@ "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], - "jotai": ["jotai@2.11.2", "", { "peerDependencies": { "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-H3xOvsdqjBJnXTvpgAWfff2y1B3wabi1iSA6FFd0FrLaM4ENsRJd+RJQtkNhY4PZgvAODa4PQhau9dheK+pUkw=="], + "jotai": ["jotai@2.11.3", "", { "peerDependencies": { "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-B/PsewAQ0UOS5e2+TTWegUPQ3SCLPCjPY24LYUjfn2EorGlluTA2dFjVLgF1+xHLjK9Jit3y5mKHyMG3Xq/GZg=="], "jotai-effect": ["jotai-effect@1.1.6", "", { "peerDependencies": { "jotai": ">=2.5.0" } }, "sha512-ZPLNZgRSxuTjyzMqLE9ervx1YjH6FwcaEC0kw77W7sEpZLgqjRm6UZTHjsyAxUWUCSwKQ8A3ai3Vkz0tZxSPgw=="], @@ -956,7 +956,7 @@ "magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], - "memoirist": ["memoirist@0.2.0", "", {}, "sha512-DA1V11OWsKmYjgYHfT1luus0FtTjUbILfI9s5M+ckK29tBLON6GDhH5GwxDz7E1ou4Bdzm9vhbeCaRAWxwG+0g=="], + "memoirist": ["memoirist@0.3.0", "", {}, "sha512-wR+4chMgVPq+T6OOsk40u9Wlpw1Pjx66NMNiYxCQQ4EUJ7jDs3D9kTCeKdBOkvAiqXlHLVJlvYL01PvIJ1MPNg=="], "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], @@ -1372,8 +1372,6 @@ "babel-plugin-macros/cosmiconfig": ["cosmiconfig@7.1.0", "", { "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" } }, "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="], - "bun-types/@types/node": ["@types/node@22.12.0", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA=="], - "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "cli-truncate/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], diff --git a/package.json b/package.json index de305ae..938f841 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "vite": "6.0.11", "vitest": "^3.0.4" }, - "packageManager": "bun@1.2.1", + "packageManager": "bun@1.2.2", "overrides": { "@swc/core": "1.7.40" } From 16d07b91ac3f005d4223d40f628532fa47a53b30 Mon Sep 17 00:00:00 2001 From: Gediminas Zukas <136955+gzukas@users.noreply.github.com> Date: Sun, 2 Feb 2025 20:33:27 +0200 Subject: [PATCH 22/25] chore: tooltip cleanup --- apps/web/src/components/OptimizeWaveform.tsx | 23 +++++++++++--------- apps/web/src/components/ReverseImages.tsx | 4 ++-- apps/web/src/components/Waveform.tsx | 8 +++---- apps/web/src/locales/en.po | 5 +++-- apps/web/src/locales/en.ts | 2 +- 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/apps/web/src/components/OptimizeWaveform.tsx b/apps/web/src/components/OptimizeWaveform.tsx index 80ab379..d011e35 100644 --- a/apps/web/src/components/OptimizeWaveform.tsx +++ b/apps/web/src/components/OptimizeWaveform.tsx @@ -4,6 +4,7 @@ import { optimizeWaveformAtom } from '@/atoms/waveformAtoms'; import { Button } from '@workspace/ui/components/button'; import { unwrappedLargestImageAtom } from '@/atoms/largestImageAtom'; import { useLingui } from '@lingui/react/macro'; +import { Tooltip } from '@workspace/ui/components/tooltip'; export function OptimizeWaveform() { const { t } = useLingui(); @@ -15,15 +16,17 @@ export function OptimizeWaveform() { }; return ( - + + + ); } diff --git a/apps/web/src/components/ReverseImages.tsx b/apps/web/src/components/ReverseImages.tsx index 39011ce..841ffaa 100644 --- a/apps/web/src/components/ReverseImages.tsx +++ b/apps/web/src/components/ReverseImages.tsx @@ -1,7 +1,7 @@ import { startTransition } from 'react'; import { useAtom, useAtomValue } from 'jotai'; import { ArrowDownUp, ArrowUpDown } from 'lucide-react'; -import { Trans, useLingui } from '@lingui/react/macro'; +import { useLingui } from '@lingui/react/macro'; import { areImagesReversedAtom } from '@/atoms/areImagesReversedAtom'; import { Button } from '@workspace/ui/components/button'; import { Tooltip } from '@workspace/ui/components/tooltip'; @@ -21,7 +21,7 @@ export function ReverseImages() { }; return ( - Reverse images}> +