From dcc93b019ea76745f3b76bdaaaa709f2c6309cf0 Mon Sep 17 00:00:00 2001 From: toannguyen Date: Wed, 13 May 2026 10:59:30 +0700 Subject: [PATCH 1/4] Added CLAUDE.md --- .dockerignore | 11 + .env.example | 2 + AGENTS.md | 8 +- Dockerfile | 23 + backend/AGENTS.md | 53 +- backend/app/__init__.py | 0 backend/app/ai.py | 118 +++ backend/app/db.py | 203 +++++ backend/app/db/schema.sql | 29 + backend/app/db/seed.sql | 22 + backend/app/routes.py | 172 +++++ backend/app/session.py | 19 + backend/data/pm.db | Bin 0 -> 40960 bytes backend/main.py | 33 + backend/pyproject.toml | 18 + backend/static/404.html | 1 + backend/static/__next.__PAGE__.txt | 9 + backend/static/__next._full.txt | 20 + backend/static/__next._head.txt | 6 + backend/static/__next._index.txt | 5 + backend/static/__next._tree.txt | 4 + .../8bdK9bS4Mch8Og7b5XF7X/_buildManifest.js | 11 + .../_clientMiddlewareManifest.json | 1 + .../8bdK9bS4Mch8Og7b5XF7X/_ssgManifest.js | 1 + .../_next/static/chunks/1ebc837379b5814f.css | 3 + .../_next/static/chunks/2f236954d6a65e12.js | 1 + .../_next/static/chunks/41cdc310bc504822.js | 1 + .../_next/static/chunks/454889a9dcbe1f52.js | 5 + .../_next/static/chunks/49849b1b478e6b82.js | 1 + .../_next/static/chunks/a6dad97d9634a72d.js | 1 + .../static/chunks/a6dad97d9634a72d.js.map | 1 + .../_next/static/chunks/f2f58a7e93290fbb.js | 1 + .../chunks/turbopack-530260eb4711dffb.js | 4 + .../media/0c89a48fa5027cee-s.p.4564287c.woff2 | Bin 0 -> 22320 bytes .../media/28868e710e86be81-s.c30238d4.woff2 | Bin 0 -> 18924 bytes .../media/32687112bd2dd8db-s.cfdd66c2.woff2 | Bin 0 -> 6772 bytes .../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2 | Bin 0 -> 9360 bytes .../media/6ab0db14f70d8ed6-s.18d7c7dc.woff2 | Bin 0 -> 15240 bytes .../media/a342834df7752944-s.bb140f9f.woff2 | Bin 0 -> 2592 bytes .../media/a343f882a40d2cc9-s.p.71e1367e.woff2 | Bin 0 -> 24576 bytes .../media/bfc7db5c00d21bc5-s.247c8473.woff2 | Bin 0 -> 8492 bytes .../media/d3fe2f289711ac3f-s.50575af1.woff2 | Bin 0 -> 14544 bytes .../_next/static/media/favicon.0b3bf435.ico | Bin 0 -> 25931 bytes backend/static/_not-found.html | 1 + backend/static/_not-found.txt | 14 + backend/static/_not-found/__next._full.txt | 14 + backend/static/_not-found/__next._head.txt | 6 + backend/static/_not-found/__next._index.txt | 5 + .../_not-found/__next._not-found.__PAGE__.txt | 5 + .../static/_not-found/__next._not-found.txt | 4 + backend/static/_not-found/__next._tree.txt | 2 + backend/static/favicon.ico | Bin 0 -> 25931 bytes backend/static/file.svg | 1 + backend/static/globe.svg | 1 + backend/static/index.html | 1 + backend/static/index.txt | 20 + backend/static/next.svg | 1 + backend/static/vercel.svg | 1 + backend/static/window.svg | 1 + backend/tests/__init__.py | 0 backend/tests/test_ai.py | 74 ++ backend/tests/test_ai_chat.py | 198 +++++ backend/tests/test_auth.py | 56 ++ backend/tests/test_boards.py | 195 +++++ backend/tests/test_routes.py | 24 + backend/uv.lock | 703 ++++++++++++++++++ data/pm.db | Bin 0 -> 40960 bytes docker-compose.yml | 9 + docs/DATABASE.md | 71 ++ docs/PLAN.md | 253 ++++++- frontend/AGENTS.md | 65 ++ frontend/next.config.ts | 2 +- frontend/src/app/globals.css | 14 +- frontend/src/app/page.tsx | 28 +- frontend/src/components/ChatSidebar.test.tsx | 109 +++ frontend/src/components/ChatSidebar.tsx | 163 ++++ frontend/src/components/KanbanBoard.test.tsx | 115 ++- frontend/src/components/KanbanBoard.tsx | 142 +++- frontend/src/components/KanbanCard.tsx | 4 +- .../src/components/KanbanCardPreview.test.tsx | 17 + frontend/src/components/KanbanCardPreview.tsx | 2 +- frontend/src/components/KanbanColumn.tsx | 6 +- frontend/src/components/LoginPage.test.tsx | 51 ++ frontend/src/components/LoginPage.tsx | 70 ++ frontend/src/components/NewCardForm.tsx | 10 +- frontend/src/lib/auth.test.tsx | 104 +++ frontend/src/lib/auth.tsx | 63 ++ frontend/src/lib/kanban.test.ts | 49 +- frontend/src/lib/kanban.ts | 26 + frontend/src/test/setup.ts | 2 + frontend/vitest.config.ts | 1 + scripts/AGENTS.md | 14 +- scripts/start.bat | 4 + scripts/start.ps1 | 3 + scripts/start.sh | 5 + scripts/stop.bat | 4 + scripts/stop.ps1 | 3 + scripts/stop.sh | 5 + 98 files changed, 3440 insertions(+), 88 deletions(-) create mode 100644 .dockerignore create mode 100644 .env.example create mode 100644 Dockerfile create mode 100644 backend/app/__init__.py create mode 100644 backend/app/ai.py create mode 100644 backend/app/db.py create mode 100644 backend/app/db/schema.sql create mode 100644 backend/app/db/seed.sql create mode 100644 backend/app/routes.py create mode 100644 backend/app/session.py create mode 100644 backend/data/pm.db create mode 100644 backend/main.py create mode 100644 backend/pyproject.toml create mode 100644 backend/static/404.html create mode 100644 backend/static/__next.__PAGE__.txt create mode 100644 backend/static/__next._full.txt create mode 100644 backend/static/__next._head.txt create mode 100644 backend/static/__next._index.txt create mode 100644 backend/static/__next._tree.txt create mode 100644 backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_buildManifest.js create mode 100644 backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_clientMiddlewareManifest.json create mode 100644 backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_ssgManifest.js create mode 100644 backend/static/_next/static/chunks/1ebc837379b5814f.css create mode 100644 backend/static/_next/static/chunks/2f236954d6a65e12.js create mode 100644 backend/static/_next/static/chunks/41cdc310bc504822.js create mode 100644 backend/static/_next/static/chunks/454889a9dcbe1f52.js create mode 100644 backend/static/_next/static/chunks/49849b1b478e6b82.js create mode 100644 backend/static/_next/static/chunks/a6dad97d9634a72d.js create mode 100644 backend/static/_next/static/chunks/a6dad97d9634a72d.js.map create mode 100644 backend/static/_next/static/chunks/f2f58a7e93290fbb.js create mode 100644 backend/static/_next/static/chunks/turbopack-530260eb4711dffb.js create mode 100644 backend/static/_next/static/media/0c89a48fa5027cee-s.p.4564287c.woff2 create mode 100644 backend/static/_next/static/media/28868e710e86be81-s.c30238d4.woff2 create mode 100644 backend/static/_next/static/media/32687112bd2dd8db-s.cfdd66c2.woff2 create mode 100644 backend/static/_next/static/media/58c4895d0a0ef7cc-s.78d1a7ae.woff2 create mode 100644 backend/static/_next/static/media/6ab0db14f70d8ed6-s.18d7c7dc.woff2 create mode 100644 backend/static/_next/static/media/a342834df7752944-s.bb140f9f.woff2 create mode 100644 backend/static/_next/static/media/a343f882a40d2cc9-s.p.71e1367e.woff2 create mode 100644 backend/static/_next/static/media/bfc7db5c00d21bc5-s.247c8473.woff2 create mode 100644 backend/static/_next/static/media/d3fe2f289711ac3f-s.50575af1.woff2 create mode 100644 backend/static/_next/static/media/favicon.0b3bf435.ico create mode 100644 backend/static/_not-found.html create mode 100644 backend/static/_not-found.txt create mode 100644 backend/static/_not-found/__next._full.txt create mode 100644 backend/static/_not-found/__next._head.txt create mode 100644 backend/static/_not-found/__next._index.txt create mode 100644 backend/static/_not-found/__next._not-found.__PAGE__.txt create mode 100644 backend/static/_not-found/__next._not-found.txt create mode 100644 backend/static/_not-found/__next._tree.txt create mode 100644 backend/static/favicon.ico create mode 100644 backend/static/file.svg create mode 100644 backend/static/globe.svg create mode 100644 backend/static/index.html create mode 100644 backend/static/index.txt create mode 100644 backend/static/next.svg create mode 100644 backend/static/vercel.svg create mode 100644 backend/static/window.svg create mode 100644 backend/tests/__init__.py create mode 100644 backend/tests/test_ai.py create mode 100644 backend/tests/test_ai_chat.py create mode 100644 backend/tests/test_auth.py create mode 100644 backend/tests/test_boards.py create mode 100644 backend/tests/test_routes.py create mode 100644 backend/uv.lock create mode 100644 data/pm.db create mode 100644 docker-compose.yml create mode 100644 docs/DATABASE.md create mode 100644 frontend/AGENTS.md create mode 100644 frontend/src/components/ChatSidebar.test.tsx create mode 100644 frontend/src/components/ChatSidebar.tsx create mode 100644 frontend/src/components/KanbanCardPreview.test.tsx create mode 100644 frontend/src/components/LoginPage.test.tsx create mode 100644 frontend/src/components/LoginPage.tsx create mode 100644 frontend/src/lib/auth.test.tsx create mode 100644 frontend/src/lib/auth.tsx create mode 100644 scripts/start.bat create mode 100644 scripts/start.ps1 create mode 100755 scripts/start.sh create mode 100644 scripts/stop.bat create mode 100644 scripts/stop.ps1 create mode 100755 scripts/stop.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..e9972451 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +.git +.env +*.md +frontend/node_modules +frontend/.next +frontend/out +frontend/test-results +scripts/ +data/ +__pycache__/ +.venv/ diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..606f124e --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +OPENROUTER_API_KEY=your-api-key-here +AI_MODEL=z-ai/glm-5.1 diff --git a/AGENTS.md b/AGENTS.md index 4adc75b7..10ba96c8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,7 +24,7 @@ For the MVP, this will run locally (in a docker container) - Everything packaged into a Docker container - Use "uv" as the package manager for python in the Docker container - Use OpenRouter for the AI calls. An OPENROUTER_API_KEY is in .env in the project root -- Use `openai/gpt-oss-120b` as the model +- Use `z-ai/glm-5.1` as the model (or set AI_MODEL env var) - Use SQLLite local database for the database, creating a new db if it doesn't exist - Start and Stop server scripts for Mac, PC, Linux in scripts/ @@ -34,10 +34,8 @@ A working MVP of the frontend has been built and is already in frontend. This is ## Color Scheme -- Accent Yellow: `#ecad0a` - accent lines, highlights -- Blue Primary: `#209dd7` - links, key sections -- Purple Secondary: `#753991` - submit buttons, important actions -- Dark Navy: `#032147` - main headings +- Accent Turquoise: `#00CCA2` - accent lines, highlights, submit buttons, important actions +- Dark Teal Primary: `#132E35` - links, key sections, main headings - Gray Text: `#888888` - supporting text, labels ## Coding standards diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..91ac87b9 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM node:20-slim AS frontend-build + +WORKDIR /build +COPY frontend/package.json frontend/package-lock.json ./ +RUN npm ci +COPY frontend/ ./ +RUN npm run build + +FROM python:3.12-slim + +COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv + +WORKDIR /app + +COPY backend/pyproject.toml backend/uv.lock* ./ +RUN uv sync --frozen --no-dev + +COPY backend/ ./ +COPY --from=frontend-build /build/out ./static + +EXPOSE 3000 + +CMD ["uv", "run", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "3000"] diff --git a/backend/AGENTS.md b/backend/AGENTS.md index 6d2147f0..a2a2ae9b 100644 --- a/backend/AGENTS.md +++ b/backend/AGENTS.md @@ -1 +1,52 @@ -This file should be updated with a description of the Backend \ No newline at end of file +# Backend + +FastAPI application serving the PM app API and static frontend files. + +## Structure + +``` +backend/ + main.py -- FastAPI app, lifespan, static file serving + app/ + routes.py -- API route definitions (auth + board CRUD) + session.py -- In-memory session store (cookie-based auth) + db.py -- SQLite database queries and initialization + db/ + schema.sql -- Table definitions + seed.sql -- Default user + board seed data + static/ -- Built Next.js frontend (served at /) + tests/ + test_routes.py -- Basic endpoint tests + test_auth.py -- Auth endpoint tests + test_boards.py -- Board CRUD endpoint tests + pyproject.toml -- Dependencies (fastapi, uvicorn, pytest) +``` + +## Running + +Inside Docker: `uv run uvicorn main:app --host 0.0.0.0 --port 8000` + +## API Endpoints + +- GET /api/health -- health check +- GET / -- serves static frontend +- POST /api/auth/login -- login with username/password, sets session cookie +- POST /api/auth/logout -- clears session +- GET /api/auth/me -- returns current user +- GET /api/boards -- returns authenticated user's board with columns and cards +- PUT /api/boards/columns/{id} -- rename a column +- POST /api/boards/cards -- add a card +- PUT /api/boards/cards/{id} -- update card title/details +- DELETE /api/boards/cards/{id} -- delete a card +- PUT /api/boards/cards/{id}/move -- move card to column at position + +All /api/boards/* endpoints require authentication. + +## Database + +SQLite at `data/pm.db` (or DB_PATH env var). Auto-created on startup. +See docs/DATABASE.md for schema details. + +## Testing + +`uv run pytest` with `pytest-cov` for coverage. Target: 80%. Currently 96%. diff --git a/backend/app/__init__.py b/backend/app/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/app/ai.py b/backend/app/ai.py new file mode 100644 index 00000000..96e5a5a8 --- /dev/null +++ b/backend/app/ai.py @@ -0,0 +1,118 @@ +import os +import json + +import httpx + +OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY", "") +OPENROUTER_URL = "https://openrouter.ai/api/v1/chat/completions" +MODEL = os.environ.get("AI_MODEL", "z-ai/glm-4.5-air:free") + +SYSTEM_PROMPT = """You are a helpful project management assistant. You can see the user's Kanban board and can help manage it. + +When the user asks you to modify the board (add/remove/move cards, rename columns), respond with a JSON object that has: +- "message": your response to the user +- "board_update": the updated board state with the same structure as the input board, or null if no changes needed + +The board structure is: +{ + "columns": [ + { + "id": "col-xxx", + "title": "Column Title", + "position": 0, + "cards": [ + {"id": "card-xxx", "title": "Card Title", "details": "Card details", "position": 0} + ] + } + ] +} + +IMPORTANT RULES: +- Only modify the board when the user explicitly asks you to +- When adding a new card, generate an id starting with "card-" followed by a short random string +- When moving cards, update their position values and column assignments accordingly +- Preserve all existing cards and columns unless asked to delete them +- Always respond with valid JSON containing both "message" and "board_update" fields +- If no board changes are needed, set "board_update" to null""" + +_conversations: dict[str, list[dict[str, str]]] = {} + + +def get_history(username: str) -> list[dict[str, str]]: + return _conversations.get(username, []) + + +def append_history(username: str, role: str, content: str) -> None: + if username not in _conversations: + _conversations[username] = [] + _conversations[username].append({"role": role, "content": content}) + # Keep last 20 messages to avoid context overflow + if len(_conversations[username]) > 20: + _conversations[username] = _conversations[username][-20:] + + +def clear_history(username: str) -> None: + _conversations.pop(username, None) + + +async def call_ai(messages: list[dict[str, str]]) -> str: + if not OPENROUTER_API_KEY: + raise ValueError("OPENROUTER_API_KEY is not set") + + async with httpx.AsyncClient() as client: + response = await client.post( + OPENROUTER_URL, + headers={ + "Authorization": f"Bearer {OPENROUTER_API_KEY}", + "Content-Type": "application/json", + }, + json={ + "model": MODEL, + "messages": messages, + }, + timeout=30.0, + ) + response.raise_for_status() + data = response.json() + return data["choices"][0]["message"]["content"] + + +async def chat_with_board(username: str, user_message: str, board_json: str) -> dict: + history = get_history(username) + board_context = f"Current board state:\n{board_json}" + + messages = [{"role": "system", "content": SYSTEM_PROMPT}] + if board_context: + messages.append({"role": "system", "content": board_context}) + messages.extend(history) + messages.append({"role": "user", "content": user_message}) + + raw_response = await call_ai(messages) + + append_history(username, "user", user_message) + append_history(username, "assistant", raw_response) + + parsed = _parse_response(raw_response) + return parsed + + +def _parse_response(raw: str) -> dict: + try: + # Try to extract JSON from the response + text = raw.strip() + # Handle markdown code blocks + if text.startswith("```"): + lines = text.split("\n") + # Remove first and last lines (``` markers) + if lines[0].startswith("```"): + lines = lines[1:] + if lines and lines[-1].strip() == "```": + lines = lines[:-1] + text = "\n".join(lines) + + data = json.loads(text) + message = data.get("message", raw) + board_update = data.get("board_update") + return {"message": message, "board_update": board_update} + except (json.JSONDecodeError, AttributeError): + return {"message": raw, "board_update": None} diff --git a/backend/app/db.py b/backend/app/db.py new file mode 100644 index 00000000..b4d55aea --- /dev/null +++ b/backend/app/db.py @@ -0,0 +1,203 @@ +import sqlite3 +import os +from pathlib import Path + +from app.session import get_user + +DB_PATH = os.environ.get("DB_PATH", str(Path(__file__).parent.parent / "data" / "pm.db")) + + +def _connect() -> sqlite3.Connection: + Path(DB_PATH).parent.mkdir(parents=True, exist_ok=True) + conn = sqlite3.connect(DB_PATH) + conn.row_factory = sqlite3.Row + conn.execute("PRAGMA foreign_keys = ON") + return conn + + +def init_db() -> None: + conn = _connect() + try: + schema = (Path(__file__).parent / "db" / "schema.sql").read_text() + conn.executescript(schema) + conn.commit() + finally: + conn.close() + + +def seed_db_if_empty() -> None: + conn = _connect() + try: + count = conn.execute("SELECT COUNT(*) FROM users").fetchone()[0] + if count == 0: + seed = (Path(__file__).parent / "db" / "seed.sql").read_text() + conn.executescript(seed) + conn.commit() + finally: + conn.close() + + +def ensure_db() -> None: + init_db() + seed_db_if_empty() + + +def get_board(username: str) -> dict | None: + conn = _connect() + try: + user = conn.execute("SELECT id FROM users WHERE username = ?", (username,)).fetchone() + if not user: + return None + board = conn.execute("SELECT id, title FROM boards WHERE user_id = ?", (user["id"],)).fetchone() + if not board: + return None + columns = conn.execute( + "SELECT id, title, position FROM columns WHERE board_id = ? ORDER BY position", + (board["id"],), + ).fetchall() + result_columns = [] + for col in columns: + cards = conn.execute( + "SELECT id, title, details, position FROM cards WHERE column_id = ? ORDER BY position", + (col["id"],), + ).fetchall() + result_columns.append({ + "id": col["id"], + "title": col["title"], + "position": col["position"], + "cards": [dict(c) for c in cards], + }) + return {"id": board["id"], "title": board["title"], "columns": result_columns} + finally: + conn.close() + + +def rename_column(column_id: str, title: str) -> bool: + conn = _connect() + try: + cur = conn.execute("UPDATE columns SET title = ? WHERE id = ?", (title, column_id)) + conn.commit() + return cur.rowcount > 0 + finally: + conn.close() + + +def add_card(column_id: str, card_id: str, title: str, details: str) -> bool: + conn = _connect() + try: + max_pos = conn.execute( + "SELECT COALESCE(MAX(position), -1) FROM cards WHERE column_id = ?", (column_id,) + ).fetchone()[0] + conn.execute( + "INSERT INTO cards (id, column_id, title, details, position) VALUES (?, ?, ?, ?, ?)", + (card_id, column_id, title, details, max_pos + 1), + ) + conn.commit() + return True + finally: + conn.close() + + +def update_card(card_id: str, title: str | None, details: str | None) -> bool: + conn = _connect() + try: + sets = [] + params = [] + if title is not None: + sets.append("title = ?") + params.append(title) + if details is not None: + sets.append("details = ?") + params.append(details) + if not sets: + return False + params.append(card_id) + cur = conn.execute(f"UPDATE cards SET {', '.join(sets)} WHERE id = ?", params) + conn.commit() + return cur.rowcount > 0 + finally: + conn.close() + + +def delete_card(card_id: str) -> bool: + conn = _connect() + try: + cur = conn.execute("DELETE FROM cards WHERE id = ?", (card_id,)) + conn.commit() + return cur.rowcount > 0 + finally: + conn.close() + + +def move_card(card_id: str, target_column_id: str, target_position: int) -> bool: + conn = _connect() + try: + card = conn.execute("SELECT column_id, position FROM cards WHERE id = ?", (card_id,)).fetchone() + if not card: + return False + + src_col = card["column_id"] + src_pos = card["position"] + + if src_col == target_column_id and src_pos == target_position: + return True + + # Close gap in source column + conn.execute( + "UPDATE cards SET position = position - 1 WHERE column_id = ? AND position > ?", + (src_col, src_pos), + ) + + # Make room in target column + conn.execute( + "UPDATE cards SET position = position + 1 WHERE column_id = ? AND position >= ?", + (target_column_id, target_position), + ) + + # If same column, adjust target_position if moving backwards + if src_col == target_column_id and src_pos < target_position: + target_position -= 1 + + # Place card at target + conn.execute( + "UPDATE cards SET column_id = ?, position = ? WHERE id = ?", + (target_column_id, target_position, card_id), + ) + conn.commit() + return True + finally: + conn.close() + + +def get_username_by_token(token: str) -> str | None: + return get_user(token) + + +def apply_board_update(board_data: dict) -> None: + """Apply a full board update from the AI, replacing columns and cards.""" + conn = _connect() + try: + # Get the single board (MVP: one board) + board = conn.execute("SELECT id FROM boards LIMIT 1").fetchone() + if not board: + return + board_id = board["id"] + + # Clear existing cards and columns + conn.execute("DELETE FROM cards WHERE column_id IN (SELECT id FROM columns WHERE board_id = ?)", (board_id,)) + conn.execute("DELETE FROM columns WHERE board_id = ?", (board_id,)) + + # Insert updated columns and cards + for col in board_data.get("columns", []): + conn.execute( + "INSERT INTO columns (id, board_id, title, position) VALUES (?, ?, ?, ?)", + (col["id"], board_id, col["title"], col.get("position", 0)), + ) + for card in col.get("cards", []): + conn.execute( + "INSERT INTO cards (id, column_id, title, details, position) VALUES (?, ?, ?, ?, ?)", + (card["id"], col["id"], card["title"], card.get("details", ""), card.get("position", 0)), + ) + conn.commit() + finally: + conn.close() diff --git a/backend/app/db/schema.sql b/backend/app/db/schema.sql new file mode 100644 index 00000000..9853a3a4 --- /dev/null +++ b/backend/app/db/schema.sql @@ -0,0 +1,29 @@ +CREATE TABLE IF NOT EXISTS users ( + id TEXT PRIMARY KEY, + username TEXT NOT NULL UNIQUE, + password_hash TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT (datetime('now')) +); + +CREATE TABLE IF NOT EXISTS boards ( + id TEXT PRIMARY KEY, + user_id TEXT NOT NULL REFERENCES users(id), + title TEXT NOT NULL DEFAULT 'My Board', + created_at TEXT NOT NULL DEFAULT (datetime('now')) +); + +CREATE TABLE IF NOT EXISTS columns ( + id TEXT PRIMARY KEY, + board_id TEXT NOT NULL REFERENCES boards(id), + title TEXT NOT NULL, + position INTEGER NOT NULL +); + +CREATE TABLE IF NOT EXISTS cards ( + id TEXT PRIMARY KEY, + column_id TEXT NOT NULL REFERENCES columns(id), + title TEXT NOT NULL, + details TEXT NOT NULL DEFAULT '', + position INTEGER NOT NULL, + created_at TEXT NOT NULL DEFAULT (datetime('now')) +); diff --git a/backend/app/db/seed.sql b/backend/app/db/seed.sql new file mode 100644 index 00000000..dd423cee --- /dev/null +++ b/backend/app/db/seed.sql @@ -0,0 +1,22 @@ +INSERT INTO users (id, username, password_hash) +VALUES ('user-1', 'user', 'password'); + +INSERT INTO boards (id, user_id, title) +VALUES ('board-1', 'user-1', 'My Board'); + +INSERT INTO columns (id, board_id, title, position) VALUES + ('col-backlog', 'board-1', 'Backlog', 0), + ('col-discovery', 'board-1', 'Discovery', 1), + ('col-progress', 'board-1', 'In Progress', 2), + ('col-review', 'board-1', 'Review', 3), + ('col-done', 'board-1', 'Done', 4); + +INSERT INTO cards (id, column_id, title, details, position) VALUES + ('card-1', 'col-backlog', 'Align roadmap themes', 'Draft quarterly themes with impact statements and metrics.', 0), + ('card-2', 'col-backlog', 'Gather customer signals', 'Review support tags, sales notes, and churn feedback.', 1), + ('card-3', 'col-discovery', 'Prototype analytics view', 'Sketch initial dashboard layout and key drill-downs.', 0), + ('card-4', 'col-progress', 'Refine status language', 'Standardize column labels and tone across the board.', 0), + ('card-5', 'col-progress', 'Design card layout', 'Add hierarchy and spacing for scanning dense lists.', 1), + ('card-6', 'col-review', 'QA micro-interactions', 'Verify hover, focus, and loading states.', 0), + ('card-7', 'col-done', 'Ship marketing page', 'Final copy approved and asset pack delivered.', 0), + ('card-8', 'col-done', 'Close onboarding sprint', 'Document release notes and share internally.', 1); diff --git a/backend/app/routes.py b/backend/app/routes.py new file mode 100644 index 00000000..5d015bed --- /dev/null +++ b/backend/app/routes.py @@ -0,0 +1,172 @@ +import json + +from fastapi import APIRouter, Cookie, HTTPException, Response + +from app.session import create_session, delete_session, get_user, CREDENTIALS +from app.db import get_board, rename_column, add_card, update_card, delete_card, move_card, ensure_db, apply_board_update +from app.ai import call_ai, chat_with_board + +router = APIRouter() + + +def require_user(session_token: str | None = Cookie(None)) -> str: + if not session_token: + raise HTTPException(status_code=401, detail="Not authenticated") + username = get_user(session_token) + if not username: + raise HTTPException(status_code=401, detail="Not authenticated") + return username + + +# --- Auth --- + + +@router.get("/hello") +async def hello(): + return {"message": "Hello from the PM app!"} + + +@router.get("/health") +async def health(): + return {"status": "ok"} + + +@router.post("/auth/login") +async def login(response: Response, body: dict): + username = body.get("username", "") + password = body.get("password", "") + if CREDENTIALS.get(username) != password: + raise HTTPException(status_code=401, detail="Invalid credentials") + token = create_session(username) + response.set_cookie( + key="session_token", + value=token, + httponly=True, + samesite="lax", + ) + ensure_db() + return {"username": username} + + +@router.post("/auth/logout") +async def logout(response: Response, session_token: str | None = Cookie(None)): + if session_token: + delete_session(session_token) + response.delete_cookie(key="session_token") + return {"detail": "Logged out"} + + +@router.get("/auth/me") +async def me(session_token: str | None = Cookie(None)): + username = require_user(session_token) + return {"username": username} + + +# --- Board --- + + +@router.get("/boards") +async def read_board(session_token: str | None = Cookie(None)): + username = require_user(session_token) + board = get_board(username) + if not board: + raise HTTPException(status_code=404, detail="Board not found") + return board + + +@router.put("/boards/columns/{column_id}") +async def update_column(column_id: str, body: dict, session_token: str | None = Cookie(None)): + require_user(session_token) + title = body.get("title") + if not title: + raise HTTPException(status_code=400, detail="Title is required") + if not rename_column(column_id, title): + raise HTTPException(status_code=404, detail="Column not found") + return {"detail": "Column renamed"} + + +@router.post("/boards/cards") +async def create_card(body: dict, session_token: str | None = Cookie(None)): + require_user(session_token) + column_id = body.get("column_id") + card_id = body.get("id") + title = body.get("title") + details = body.get("details", "") + if not column_id or not card_id or not title: + raise HTTPException(status_code=400, detail="column_id, id, and title are required") + if not add_card(column_id, card_id, title, details): + raise HTTPException(status_code=400, detail="Failed to add card") + return {"detail": "Card added"} + + +@router.put("/boards/cards/{card_id}") +async def edit_card(card_id: str, body: dict, session_token: str | None = Cookie(None)): + require_user(session_token) + title = body.get("title") + details = body.get("details") + if not update_card(card_id, title, details): + raise HTTPException(status_code=404, detail="Card not found") + return {"detail": "Card updated"} + + +@router.delete("/boards/cards/{card_id}") +async def remove_card(card_id: str, session_token: str | None = Cookie(None)): + require_user(session_token) + if not delete_card(card_id): + raise HTTPException(status_code=404, detail="Card not found") + return {"detail": "Card deleted"} + + +@router.put("/boards/cards/{card_id}/move") +async def reorder_card(card_id: str, body: dict, session_token: str | None = Cookie(None)): + require_user(session_token) + target_column_id = body.get("column_id") + target_position = body.get("position") + if target_column_id is None or target_position is None: + raise HTTPException(status_code=400, detail="column_id and position are required") + if not move_card(card_id, target_column_id, target_position): + raise HTTPException(status_code=404, detail="Card not found") + return {"detail": "Card moved"} + + +# --- AI --- + + +@router.post("/ai/test") +async def test_ai(session_token: str | None = Cookie(None)): + require_user(session_token) + try: + result = await call_ai([{"role": "user", "content": "What is 2+2? Reply with just the number."}]) + return {"response": result} + except ValueError as e: + raise HTTPException(status_code=500, detail=str(e)) + except Exception as e: + raise HTTPException(status_code=502, detail=f"AI call failed: {e}") + + +@router.post("/ai/chat") +async def chat(body: dict, session_token: str | None = Cookie(None)): + username = require_user(session_token) + message = body.get("message", "") + if not message: + raise HTTPException(status_code=400, detail="message is required") + + board = get_board(username) + if not board: + raise HTTPException(status_code=404, detail="Board not found") + + board_json = json.dumps(board) + + try: + result = await chat_with_board(username, message, board_json) + except ValueError as e: + raise HTTPException(status_code=500, detail=str(e)) + except Exception as e: + raise HTTPException(status_code=502, detail=f"AI call failed: {e}") + + board_updated = False + if result.get("board_update"): + apply_board_update(result["board_update"]) + board_updated = True + + return {"message": result["message"], "board_updated": board_updated} diff --git a/backend/app/session.py b/backend/app/session.py new file mode 100644 index 00000000..baf571f1 --- /dev/null +++ b/backend/app/session.py @@ -0,0 +1,19 @@ +import secrets + +_sessions: dict[str, str] = {} + +CREDENTIALS = {"user": "password"} + + +def create_session(username: str) -> str: + token = secrets.token_hex(32) + _sessions[token] = username + return token + + +def get_user(token: str) -> str | None: + return _sessions.get(token) + + +def delete_session(token: str) -> None: + _sessions.pop(token, None) diff --git a/backend/data/pm.db b/backend/data/pm.db new file mode 100644 index 0000000000000000000000000000000000000000..10fc31aecde1d7a40d271f6557d046dcd4d8eb43 GIT binary patch literal 40960 zcmeI*O>7%Q7zW_oIF9Z7EfuYdWd){$;)K>!5;qML5V(ztBGN#e1W~CdntCVpD(hW$ zciiAg99rPQi4)vGAaOwgaYU3e5=bDp0{5OcfH?Ba?AnT}B&|45k-n?g9`B5I=6hyr zX=m*0>cwS83byG7O)goRV(K!)ym4b$|{SBgj0?^9lb_6(iPG1y5*w`TS)G>VSg4|teh{e zFR!seAu84KLq|Hk$Cg&sDlb*4tp6ajKyWGS4LT9gP44FQjx%LbzI2*ms^IzCh3VFLZ+_W7)7IG!!u46nL$GPA+k($~*7G{nZNei*(nKa|Sm^XAQRgs0;V;}}!@fKlGv z2(S3m0s9K-688eQC(ZD5F*TGe=l2XTYAOX8CDJ!852muYocZ>{I?SjA(S5Qn$Y|f) zVr+*Z*f&H~VE+hv{a3iqVP}l}CZvvi9>^H)7(>Lby!{GG5 z-HXoZq6zvaO{zH?6-6`ojhR2tWV=5P$##AOHafKmY;| zfWUzg$Ru)^XnG(z|Nq;dujpfg00bZa0SG_<0uX=z1Rwwb2teR~38WH7^bA1s{r?{g z>&F8YAi{wF1Rwwb2tWV=5P$##AOHaf9Atr_nat-VO8OrlMBn}|&UXLp!k*v%|I@Jk zJjf`B4FV8=00bZa0SG_<0uX=z1R(GL3JfRmnRtRgt^X&j%ZBy4^|keZwM|KE5P$## zAOHafKmY;|fB*y_009V)z>{WjGJiZx7hEV_;k7N-ug53TXQOAVD%6Dn>|8QAkw0Rp za<=b@xX>ac2PX!TNAo$I6^Lt&*p4%+`bpx6MDkdEQfIdUzaEG%j0-Gz?A3VBz~ckS zLjJLgKE6X2vbZLKPPdZo^G8)%^Lw{d{r*2`eQ8*KSif0cT0dB~(8Umd00bZa0SG_< z0uX=z1Rwwb2;6^x(Zob=N+CI(IJ#pJVep~EvA#)z#GynXD%_n97#L4X>KTK0=3;F0 zu#q15)Ue*MM#kSCe`M^FvFApA8u@he-TNOYS^xnEKmY;|fB*y_0D%Wnz)h!e6VD2> zq^@LNe7d`$c+T}h!F*3I`Z->mg{{Ex&hA_vMSZ%$`-m-s|}~cnmpJNs+Fw8>*Bma z2CU|{I*hkyo%NcqH4fu_R0R5^tIFKL#f=+g*W16pH?+Ri@6ue ztm)JOzeu5ofY%gM_?ifu%?@j*W!e*Lllmw;p{sL!ZtKpIoG^E*=xQ>RJ2o4}AwxaX-Sw(w|VxK1c{t@7F+ zRryRij_uUWDyw4C@dOL0x$TfD_3CZHT$NN64Fl)8AX2y8^eF3!aHDZ2sUI09k}zbl zA($SqyM@|Gq;iGlyY-e-y>|E9l@`9GFFP$d5_MchI<=6gwewZ#(^`W@wIdzsP@9Jh zef$_i8*GUVvjfLfOYz&@t|4y^q;iwbZpX@Vs_OV8`6W(m4jA>A^qZ7WyQAi^t9mz}5z^!> zCD#<;V!$^gyV~Xf4KBA6?`7MLB!edPwbXq>MLikmH-!ucYqz@9`hVK`jIRG@-KO6F z{9=7)-Lk&2KC?c2Fh6M#H3T340SG_<0uX=z1Rwwb2teRJ6wvGTYOb$48I~DN(9Z?* k>|eT=0.115", + "uvicorn[standard]>=0.34", + "httpx>=0.28", + "python-dotenv>=1.0", +] + +[dependency-groups] +dev = [ + "pytest>=8.4", + "httpx>=0.28", + "pytest-cov>=6.2", + "pytest-asyncio>=0.24", +] diff --git a/backend/static/404.html b/backend/static/404.html new file mode 100644 index 00000000..2cd3160d --- /dev/null +++ b/backend/static/404.html @@ -0,0 +1 @@ +404: This page could not be found.Kanban Studio

404

This page could not be found.

\ No newline at end of file diff --git a/backend/static/__next.__PAGE__.txt b/backend/static/__next.__PAGE__.txt new file mode 100644 index 00000000..4d0094ba --- /dev/null +++ b/backend/static/__next.__PAGE__.txt @@ -0,0 +1,9 @@ +1:"$Sreact.fragment" +2:I[47257,["/_next/static/chunks/2f236954d6a65e12.js"],"ClientPageRoot"] +3:I[52683,["/_next/static/chunks/41cdc310bc504822.js"],"default"] +6:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] +7:"$Sreact.suspense" +0:{"buildId":"8bdK9bS4Mch8Og7b5XF7X","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/41cdc310bc504822.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +4:{} +5:"$0:rsc:props:children:0:props:serverProvidedParams:params" +8:null diff --git a/backend/static/__next._full.txt b/backend/static/__next._full.txt new file mode 100644 index 00000000..5008d72c --- /dev/null +++ b/backend/static/__next._full.txt @@ -0,0 +1,20 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +3:I[37457,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +4:I[47257,["/_next/static/chunks/2f236954d6a65e12.js"],"ClientPageRoot"] +5:I[52683,["/_next/static/chunks/41cdc310bc504822.js"],"default"] +8:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] +9:"$Sreact.suspense" +b:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] +d:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] +f:I[68027,[],"default"] +:HL["/_next/static/chunks/1ebc837379b5814f.css","style"] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.4564287c.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.71e1367e.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +0:{"P":null,"b":"8bdK9bS4Mch8Og7b5XF7X","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/1ebc837379b5814f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"space_grotesk_590fd37e-module__Yn3fQa__variable manrope_7102bd49-module__TIbn1W__variable","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/41cdc310bc504822.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[]],"S":true} +6:{} +7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params" +c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +10:I[27201,["/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] +a:null +e:[["$","title","0",{"children":"Kanban Studio"}],["$","meta","1",{"name":"description","content":"A focused, single-board kanban workspace."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L10","3",{}]] diff --git a/backend/static/__next._head.txt b/backend/static/__next._head.txt new file mode 100644 index 00000000..36b02a45 --- /dev/null +++ b/backend/static/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] +0:{"buildId":"8bdK9bS4Mch8Og7b5XF7X","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Kanban Studio"}],["$","meta","1",{"name":"description","content":"A focused, single-board kanban workspace."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/backend/static/__next._index.txt b/backend/static/__next._index.txt new file mode 100644 index 00000000..11b4df8e --- /dev/null +++ b/backend/static/__next._index.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +3:I[37457,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +:HL["/_next/static/chunks/1ebc837379b5814f.css","style"] +0:{"buildId":"8bdK9bS4Mch8Og7b5XF7X","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/1ebc837379b5814f.css","precedence":"next"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"space_grotesk_590fd37e-module__Yn3fQa__variable manrope_7102bd49-module__TIbn1W__variable","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/backend/static/__next._tree.txt b/backend/static/__next._tree.txt new file mode 100644 index 00000000..b596de18 --- /dev/null +++ b/backend/static/__next._tree.txt @@ -0,0 +1,4 @@ +:HL["/_next/static/chunks/1ebc837379b5814f.css","style"] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.4564287c.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.71e1367e.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +0:{"buildId":"8bdK9bS4Mch8Og7b5XF7X","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_buildManifest.js b/backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_buildManifest.js new file mode 100644 index 00000000..94ca9144 --- /dev/null +++ b/backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_buildManifest.js @@ -0,0 +1,11 @@ +self.__BUILD_MANIFEST = { + "__rewrites": { + "afterFiles": [], + "beforeFiles": [], + "fallback": [] + }, + "sortedPages": [ + "/_app", + "/_error" + ] +};self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB() \ No newline at end of file diff --git a/backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_clientMiddlewareManifest.json b/backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_clientMiddlewareManifest.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_clientMiddlewareManifest.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_ssgManifest.js b/backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_ssgManifest.js new file mode 100644 index 00000000..5b3ff592 --- /dev/null +++ b/backend/static/_next/static/8bdK9bS4Mch8Og7b5XF7X/_ssgManifest.js @@ -0,0 +1 @@ +self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() \ No newline at end of file diff --git a/backend/static/_next/static/chunks/1ebc837379b5814f.css b/backend/static/_next/static/chunks/1ebc837379b5814f.css new file mode 100644 index 00000000..97396c37 --- /dev/null +++ b/backend/static/_next/static/chunks/1ebc837379b5814f.css @@ -0,0 +1,3 @@ +@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.cfdd66c2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.c30238d4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.4564287c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_590fd37e-module__Yn3fQa__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_590fd37e-module__Yn3fQa__variable{--font-display:"Space Grotesk","Space Grotesk Fallback"} +@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/a342834df7752944-s.bb140f9f.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.50575af1.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.247c8473.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.18d7c7dc.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.71e1367e.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope Fallback;src:local(Arial);ascent-override:103.31%;descent-override:29.07%;line-gap-override:0.0%;size-adjust:103.19%}.manrope_7102bd49-module__TIbn1W__className{font-family:Manrope,Manrope Fallback;font-style:normal}.manrope_7102bd49-module__TIbn1W__variable{--font-body:"Manrope","Manrope Fallback"} +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:#fef2f2;--color-red-600:#e40014;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-xl:36rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-body);--default-mono-font-family:var(--font-mono)}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18508 1.52328);--color-red-600:lab(48.4493% 77.4328 61.5452)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.right-6{right:calc(var(--spacing)*6)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-8{margin-right:calc(var(--spacing)*8)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.ml-8{margin-left:calc(var(--spacing)*8)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.h-2{height:calc(var(--spacing)*2)}.h-12{height:calc(var(--spacing)*12)}.h-\[420px\]{height:420px}.h-\[520px\]{height:520px}.h-full{height:100%}.min-h-\[520px\]{min-height:520px}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing)*2)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-96{width:calc(var(--spacing)*96)}.w-\[260px\]{width:260px}.w-\[420px\]{width:420px}.w-\[520px\]{width:520px}.w-full{width:100%}.max-w-\[1500px\]{max-width:1500px}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.flex-1{flex:1}.-translate-x-1\/3{--tw-translate-x:calc(calc(1/3*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1\/4{--tw-translate-x:calc(1/4*100%);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/3{--tw-translate-y:calc(calc(1/3*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-1\/4{--tw-translate-y:calc(1/4*100%);translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-10{gap:calc(var(--spacing)*10)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[32px\]{border-radius:32px}.rounded-full{border-radius:3.40282e38px}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--stroke\)\]{border-color:var(--stroke)}.border-transparent{border-color:#0000}.bg-\[\#00CCA2\]{background-color:#00cca2}.bg-\[\#00CCA2\]\/10{background-color:#00cca21a;background-color:lab(73.2055% -51.7406 8.46506/.1)}.bg-\[var\(--accent-turquoise\)\]{background-color:var(--accent-turquoise)}.bg-\[var\(--surface\)\]{background-color:var(--surface)}.bg-\[var\(--surface-strong\)\]{background-color:var(--surface-strong)}.bg-red-50{background-color:var(--color-red-50)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white)80%,transparent)}}.bg-\[radial-gradient\(circle\,_rgba\(32\,157\,215\,0\.25\)_0\%\,_rgba\(32\,157\,215\,0\.05\)_55\%\,_transparent_70\%\)\]{background-image:radial-gradient(circle,#209dd740 0%,#209dd70d 55%,#0000 70%)}.bg-\[radial-gradient\(circle\,_rgba\(117\,57\,145\,0\.18\)_0\%\,_rgba\(117\,57\,145\,0\.05\)_55\%\,_transparent_75\%\)\]{background-image:radial-gradient(circle,#7539912e 0%,#7539910d 55%,#0000 75%)}.p-1{padding:calc(var(--spacing)*1)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.pt-12{padding-top:calc(var(--spacing)*12)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-\[0\.35em\]{--tw-tracking:.35em;letter-spacing:.35em}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-\[\#00CCA2\]{color:#00cca2}.text-\[var\(--accent-turquoise\)\]{color:var(--accent-turquoise)}.text-\[var\(--dark-teal\)\]{color:var(--dark-teal)}.text-\[var\(--gray-text\)\]{color:var(--gray-text)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-60{opacity:.6}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_24px_rgba\(3\,33\,71\,0\.08\)\]{--tw-shadow:0 12px 24px var(--tw-shadow-color,#03214714);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_18px_32px_rgba\(3\,33\,71\,0\.16\)\]{--tw-shadow:0 18px 32px var(--tw-shadow-color,#03214729);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--shadow\)\]{--tw-shadow:var(--shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[var\(--accent-turquoise\)\]{--tw-ring-color:var(--accent-turquoise)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:border-\[var\(--accent-turquoise\)\]:hover{border-color:var(--accent-turquoise)}.hover\:border-\[var\(--stroke\)\]:hover{border-color:var(--stroke)}.hover\:text-\[var\(--dark-teal\)\]:hover{color:var(--dark-teal)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:border-\[\#00CCA2\]:focus{border-color:#00cca2}.focus\:border-\[var\(--accent-turquoise\)\]:focus{border-color:var(--accent-turquoise)}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:64rem){.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}}:root{--accent-turquoise:#00cca2;--dark-teal:#132e35;--gray-text:#888;--surface:#f7f8fb;--surface-strong:#fff;--stroke:#132e3514;--shadow:0 18px 40px #132e351f}*{box-sizing:border-box}body{background:var(--surface);color:var(--dark-teal);font-family:var(--font-body),"Segoe UI",sans-serif;margin:0}.font-display{font-family:var(--font-display),"Segoe UI",sans-serif}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false} diff --git a/backend/static/_next/static/chunks/2f236954d6a65e12.js b/backend/static/_next/static/chunks/2f236954d6a65e12.js new file mode 100644 index 00000000..a6312360 --- /dev/null +++ b/backend/static/_next/static/chunks/2f236954d6a65e12.js @@ -0,0 +1 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},91915,(e,t,r)=>{"use strict";function n(e,t={}){if(t.onlyHashChange)return void e();let r=document.documentElement;if("smooth"!==r.dataset.scrollBehavior)return void e();let a=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=a}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"disableSmoothScrollDuringRouteTransition",{enumerable:!0,get:function(){return n}}),e.r(33525)},68017,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return l}});let n=e.r(90809),a=e.r(43476),o=n._(e.r(71645)),i=e.r(90373),s=e.r(54394);e.r(33525);let c=e.r(8372);class u extends o.default.Component{constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}componentDidCatch(){}static getDerivedStateFromError(e){if((0,s.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,s.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:o}=this.state,i={[s.HTTPAccessErrorStatus.NOT_FOUND]:e,[s.HTTPAccessErrorStatus.FORBIDDEN]:t,[s.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(o){let c=o===s.HTTPAccessErrorStatus.NOT_FOUND&&e,u=o===s.HTTPAccessErrorStatus.FORBIDDEN&&t,l=o===s.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return c||u||l?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("meta",{name:"robots",content:"noindex"}),!1,i[o]]}):n}return n}}function l({notFound:e,forbidden:t,unauthorized:r,children:n}){let s=(0,i.useUntrackedPathname)(),l=(0,o.useContext)(c.MissingSlotContext);return e||t||r?(0,a.jsx)(u,{pathname:s,notFound:e,forbidden:t,unauthorized:r,missingSlots:l,children:n}):(0,a.jsx)(a.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},91798,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useRouterBFCache",{enumerable:!0,get:function(){return a}});let n=e.r(71645);function a(e,t){let[r,a]=(0,n.useState)(()=>({tree:e,stateKey:t,next:null}));if(r.tree===e)return r;let o={tree:e,stateKey:t,next:null},i=1,s=r,c=o;for(;null!==s&&i<1;){if(s.stateKey===t){c.next=s.next;break}{i++;let e={tree:s.tree,stateKey:s.stateKey,next:null};c.next=e,c=e}s=s.next}return a(o),o}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39756,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return w}});let n=e.r(55682),a=e.r(90809),o=e.r(43476),i=a._(e.r(71645)),s=n._(e.r(74080)),c=e.r(8372),u=e.r(1244),l=e.r(72383),d=e.r(56019),f=e.r(91915),p=e.r(58442),h=e.r(68017),m=e.r(70725),g=e.r(91798);e.r(74180);let y=e.r(61994),b=e.r(33906),P=e.r(95871),_=s.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,S=["bottom","height","left","right","top","width","x","y"];function v(e,t){let r=e.getBoundingClientRect();return r.top>=0&&r.top<=t}class O extends i.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,r)=>(0,d.matchSegment)(t,e[r]))))return;let r=null,n=e.hashFragment;if(n&&(r="top"===n?document.body:document.getElementById(n)??document.getElementsByName(n)[0]),r||(r="u"0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,f.disableSmoothScrollDuringRouteTransition)(()=>{if(n)return void r.scrollIntoView();let e=document.documentElement,t=e.clientHeight;!v(r,t)&&(e.scrollTop=0,v(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function R({segmentPath:e,children:t}){let r=(0,i.useContext)(c.GlobalLayoutRouterContext);if(!r)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});return(0,o.jsx)(O,{segmentPath:e,focusAndScrollRef:r.focusAndScrollRef,children:t})}function E({tree:e,segmentPath:t,debugNameContext:r,cacheNode:n,params:a,url:s,isActive:l}){let d,f=(0,i.useContext)(c.GlobalLayoutRouterContext);if((0,i.useContext)(y.NavigationPromisesContext),!f)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});let p=null!==n?n:(0,i.use)(u.unresolvedThenable),h=null!==p.prefetchRsc?p.prefetchRsc:p.rsc,m=(0,i.useDeferredValue)(p.rsc,h);if((0,P.isDeferredRsc)(m)){let e=(0,i.use)(m);null===e&&(0,i.use)(u.unresolvedThenable),d=e}else null===m&&(0,i.use)(u.unresolvedThenable),d=m;let g=d;return(0,o.jsx)(c.LayoutRouterContext.Provider,{value:{parentTree:e,parentCacheNode:p,parentSegmentPath:t,parentParams:a,debugNameContext:r,url:s,isActive:l},children:g})}function j({name:e,loading:t,children:r}){let n;if(n="object"==typeof t&&null!==t&&"function"==typeof t.then?(0,i.use)(t):t){let t=n[0],a=n[1],s=n[2];return(0,o.jsx)(i.Suspense,{name:e,fallback:(0,o.jsxs)(o.Fragment,{children:[a,s,t]}),children:r})}return(0,o.jsx)(o.Fragment,{children:r})}function w({parallelRouterKey:e,error:t,errorStyles:r,errorScripts:n,templateStyles:a,templateScripts:s,template:d,notFound:f,forbidden:y,unauthorized:P,segmentViewBoundaries:_}){let S=(0,i.useContext)(c.LayoutRouterContext);if(!S)throw Object.defineProperty(Error("invariant expected layout router to be mounted"),"__NEXT_ERROR_CODE",{value:"E56",enumerable:!1,configurable:!0});let{parentTree:v,parentCacheNode:O,parentSegmentPath:w,parentParams:C,url:T,isActive:x,debugNameContext:A}=S,M=O.parallelRoutes,D=M.get(e);D||(D=new Map,M.set(e,D));let F=v[0],I=null===w?[e]:w.concat([F,e]),k=v[1][e];void 0===k&&(0,i.use)(u.unresolvedThenable);let N=k[0],U=(0,m.createRouterCacheKey)(N,!0),B=(0,g.useRouterBFCache)(k,U),L=[];do{let e=B.tree,i=B.stateKey,u=e[0],g=(0,m.createRouterCacheKey)(u),_=D.get(g)??null,S=C;if(Array.isArray(u)){let e=u[0],t=u[1],r=u[2],n=(0,b.getParamValueFromCacheKey)(t,r);null!==n&&(S={...C,[e]:n})}let v=function(e){if("/"===e)return"/";if("string"==typeof e)if("(slot)"===e)return;else return e+"/";return e[1]+"/"}(u),w=v??A,M=void 0===v?void 0:A,F=O.loading,k=(0,o.jsxs)(c.TemplateContext.Provider,{value:(0,o.jsxs)(R,{segmentPath:I,children:[(0,o.jsx)(l.ErrorBoundary,{errorComponent:t,errorStyles:r,errorScripts:n,children:(0,o.jsx)(j,{name:M,loading:F,children:(0,o.jsx)(h.HTTPAccessFallbackBoundary,{notFound:f,forbidden:y,unauthorized:P,children:(0,o.jsxs)(p.RedirectBoundary,{children:[(0,o.jsx)(E,{url:T,tree:e,params:S,cacheNode:_,segmentPath:I,debugNameContext:w,isActive:x&&i===U}),null]})})})}),null]}),children:[a,s,d]},i);L.push(k),B=B.next}while(null!==B)return L}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},37457,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return s}});let n=e.r(90809),a=e.r(43476),o=n._(e.r(71645)),i=e.r(8372);function s(){let e=(0,o.useContext)(i.TemplateContext);return(0,a.jsx)(a.Fragment,{children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},93504,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},66996,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(93504).createRenderSearchParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},6831,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97689,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(6831).createRenderParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},42715,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},76361,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return c}});let n=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(n,i,s):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}(e.r(71645));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}let o={current:null},i="function"==typeof n.cache?n.cache:e=>e,s=console.warn;function c(e){return function(...t){s(e(...t))}}i(e=>{try{s(o.current)}finally{o.current=null}})},65932,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={describeHasCheckingStringProperty:function(){return s},describeStringPropertyAccess:function(){return i},wellKnownProperties:function(){return c}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function i(e,t){return o.test(t)?`\`${e}.${t}\``:`\`${e}[${JSON.stringify(t)}]\``}function s(e,t){let r=JSON.stringify(t);return`\`Reflect.has(${e}, ${r})\`, \`${r} in ${e}\`, or similar`}let c=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toString","valueOf","toLocaleString","then","catch","finally","status","displayName","_debugInfo","toJSON","$$typeof","__esModule"])},83066,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},41643,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(83066)},50999,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(43248),i=e.r(41643);function s(e,t){throw Object.defineProperty(new o.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=i.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},42852,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var o in a)Object.defineProperty(r,o,{enumerable:!0,get:a[o]});let i=e.r(12718),s=e.r(39470);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,s.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,s.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(l),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(l),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new i.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,o),t)}),void 0!==a&&(i.displayName=a),i);return this.abortSignal&&s.catch(l),s}}function l(){}},69882,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createPrerenderSearchParamsForClientPage:function(){return g},createSearchParamsFromClient:function(){return p},createServerSearchParamsForMetadata:function(){return h},createServerSearchParamsForServerPage:function(){return m},makeErroringSearchParamsForUseCache:function(){return S}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(42715),i=e.r(67673),s=e.r(62141),c=e.r(12718),u=e.r(63138),l=e.r(76361),d=e.r(65932),f=e.r(50999);function p(e,t){let r=s.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return y(t,r);case"prerender-runtime":throw Object.defineProperty(new c.InvariantError("createSearchParamsFromClient should not be called in a runtime prerender."),"__NEXT_ERROR_CODE",{value:"E769",enumerable:!1,configurable:!0});case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new c.InvariantError("createSearchParamsFromClient should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E739",enumerable:!1,configurable:!0});case"request":return b(e,t,r)}(0,s.throwInvariantForMissingStore)()}e.r(42852);let h=m;function m(e,t){let r=s.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return y(t,r);case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new c.InvariantError("createServerSearchParamsForServerPage should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E747",enumerable:!1,configurable:!0});case"prerender-runtime":var n,a;return n=e,a=r,(0,i.delayUntilRuntimeStage)(a,v(n));case"request":return b(e,t,r)}(0,s.throwInvariantForMissingStore)()}function g(e){if(e.forceStatic)return Promise.resolve({});let t=s.workUnitAsyncStorage.getStore();if(t)switch(t.type){case"prerender":case"prerender-client":return(0,u.makeHangingPromise)(t.renderSignal,e.route,"`searchParams`");case"prerender-runtime":throw Object.defineProperty(new c.InvariantError("createPrerenderSearchParamsForClientPage should not be called in a runtime prerender."),"__NEXT_ERROR_CODE",{value:"E768",enumerable:!1,configurable:!0});case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new c.InvariantError("createPrerenderSearchParamsForClientPage should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E746",enumerable:!1,configurable:!0});case"prerender-ppr":case"prerender-legacy":case"request":return Promise.resolve({})}(0,s.throwInvariantForMissingStore)()}function y(e,t){if(e.forceStatic)return Promise.resolve({});switch(t.type){case"prerender":case"prerender-client":var r=e,n=t;let a=P.get(n);if(a)return a;let s=(0,u.makeHangingPromise)(n.renderSignal,r.route,"`searchParams`"),c=new Proxy(s,{get(e,t,r){if(Object.hasOwn(s,t))return o.ReflectAdapter.get(e,t,r);switch(t){case"then":return(0,i.annotateDynamicAccess)("`await searchParams`, `searchParams.then`, or similar",n),o.ReflectAdapter.get(e,t,r);case"status":return(0,i.annotateDynamicAccess)("`use(searchParams)`, `searchParams.status`, or similar",n),o.ReflectAdapter.get(e,t,r);default:return o.ReflectAdapter.get(e,t,r)}}});return P.set(n,c),c;case"prerender-ppr":case"prerender-legacy":var l=e,d=t;let p=P.get(l);if(p)return p;let h=Promise.resolve({}),m=new Proxy(h,{get(e,t,r){if(Object.hasOwn(h,t))return o.ReflectAdapter.get(e,t,r);if("string"==typeof t&&"then"===t){let e="`await searchParams`, `searchParams.then`, or similar";l.dynamicShouldError?(0,f.throwWithStaticGenerationBailoutErrorWithDynamicError)(l.route,e):"prerender-ppr"===d.type?(0,i.postponeWithTracking)(l.route,e,d.dynamicTracking):(0,i.throwToInterruptStaticGeneration)(e,l,d)}return o.ReflectAdapter.get(e,t,r)}});return P.set(l,m),m;default:return t}}function b(e,t,r){return t.forceStatic?Promise.resolve({}):v(e)}let P=new WeakMap,_=new WeakMap;function S(e){let t=_.get(e);if(t)return t;let r=Promise.resolve({}),n=new Proxy(r,{get:function t(n,a,i){return Object.hasOwn(r,a)||"string"!=typeof a||"then"!==a&&d.wellKnownProperties.has(a)||(0,f.throwForSearchParamsAccessInUseCache)(e,t),o.ReflectAdapter.get(n,a,i)}});return _.set(e,n),n}function v(e){let t=P.get(e);if(t)return t;let r=Promise.resolve(e);return P.set(e,r),r}(0,l.createDedupedByCallsiteServerErrorLoggerDev)(function(e,t){let r=e?`Route "${e}" `:"This route ";return Object.defineProperty(Error(`${r}used ${t}. \`searchParams\` is a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E848",enumerable:!1,configurable:!0})})},74804,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"dynamicAccessAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},88276,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"dynamicAccessAsyncStorage",{enumerable:!0,get:function(){return n.dynamicAccessAsyncStorageInstance}});let n=e.r(74804)},41489,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createParamsFromClient:function(){return h},createPrerenderParamsForClientSegment:function(){return b},createServerParamsForMetadata:function(){return m},createServerParamsForRoute:function(){return g},createServerParamsForServerSegment:function(){return y}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(63599),i=e.r(42715),s=e.r(67673),c=e.r(62141),u=e.r(12718),l=e.r(65932),d=e.r(63138),f=e.r(76361),p=e.r(88276);function h(e,t){let r=c.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return P(e,t,r);case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new u.InvariantError("createParamsFromClient should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E736",enumerable:!1,configurable:!0});case"prerender-runtime":throw Object.defineProperty(new u.InvariantError("createParamsFromClient should not be called in a runtime prerender."),"__NEXT_ERROR_CODE",{value:"E770",enumerable:!1,configurable:!0});case"request":return O(e)}(0,c.throwInvariantForMissingStore)()}e.r(42852);let m=y;function g(e,t){let r=c.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return P(e,t,r);case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new u.InvariantError("createServerParamsForRoute should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E738",enumerable:!1,configurable:!0});case"prerender-runtime":return _(e,r);case"request":return O(e)}(0,c.throwInvariantForMissingStore)()}function y(e,t){let r=c.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return P(e,t,r);case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new u.InvariantError("createServerParamsForServerSegment should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E743",enumerable:!1,configurable:!0});case"prerender-runtime":return _(e,r);case"request":return O(e)}(0,c.throwInvariantForMissingStore)()}function b(e){let t=o.workAsyncStorage.getStore();if(!t)throw Object.defineProperty(new u.InvariantError("Missing workStore in createPrerenderParamsForClientSegment"),"__NEXT_ERROR_CODE",{value:"E773",enumerable:!1,configurable:!0});let r=c.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-client":let n=r.fallbackRouteParams;if(n){for(let a in e)if(n.has(a))return(0,d.makeHangingPromise)(r.renderSignal,t.route,"`params`")}break;case"cache":case"private-cache":case"unstable-cache":throw Object.defineProperty(new u.InvariantError("createPrerenderParamsForClientSegment should not be called in cache contexts."),"__NEXT_ERROR_CODE",{value:"E734",enumerable:!1,configurable:!0})}return Promise.resolve(e)}function P(e,t,r){switch(r.type){case"prerender":case"prerender-client":{let n=r.fallbackRouteParams;if(n){for(let a in e)if(n.has(a))return function(e,t,r){let n=S.get(e);if(n)return n;let a=new Proxy((0,d.makeHangingPromise)(r.renderSignal,t.route,"`params`"),v);return S.set(e,a),a}(e,t,r)}break}case"prerender-ppr":{let n=r.fallbackRouteParams;if(n){for(let a in e)if(n.has(a))return function(e,t,r,n){let a=S.get(e);if(a)return a;let o={...e},i=Promise.resolve(o);return S.set(e,i),Object.keys(e).forEach(e=>{l.wellKnownProperties.has(e)||t.has(e)&&Object.defineProperty(o,e,{get(){let t=(0,l.describeStringPropertyAccess)("params",e);"prerender-ppr"===n.type?(0,s.postponeWithTracking)(r.route,t,n.dynamicTracking):(0,s.throwToInterruptStaticGeneration)(t,r,n)},enumerable:!0})}),i}(e,n,t,r)}}}return O(e)}function _(e,t){return(0,s.delayUntilRuntimeStage)(t,O(e))}let S=new WeakMap,v={get:function(e,t,r){if("then"===t||"catch"===t||"finally"===t){let n=i.ReflectAdapter.get(e,t,r);return({[t]:(...t)=>{let r=p.dynamicAccessAsyncStorage.getStore();return r&&r.abortController.abort(Object.defineProperty(Error("Accessed fallback `params` during prerendering."),"__NEXT_ERROR_CODE",{value:"E691",enumerable:!1,configurable:!0})),new Proxy(n.apply(e,t),v)}})[t]}return i.ReflectAdapter.get(e,t,r)}};function O(e){let t=S.get(e);if(t)return t;let r=Promise.resolve(e);return S.set(e,r),r}(0,f.createDedupedByCallsiteServerErrorLoggerDev)(function(e,t){let r=e?`Route "${e}" `:"This route ";return Object.defineProperty(Error(`${r}used ${t}. \`params\` is a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E834",enumerable:!1,configurable:!0})})},47257,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientPageRoot",{enumerable:!0,get:function(){return u}});let n=e.r(43476),a=e.r(12718),o=e.r(8372),i=e.r(71645),s=e.r(33906),c=e.r(61994);function u({Component:t,serverProvidedParams:r}){let u,l;if(null!==r)u=r.searchParams,l=r.params;else{let e=(0,i.use)(o.LayoutRouterContext);l=null!==e?e.parentParams:{},u=(0,s.urlSearchParamsToParsedUrlQuery)((0,i.use)(c.SearchParamsContext))}if("u"{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientSegmentRoot",{enumerable:!0,get:function(){return s}});let n=e.r(43476),a=e.r(12718),o=e.r(8372),i=e.r(71645);function s({Component:t,slots:r,serverProvidedParams:s}){let c;if(null!==s)c=s.params;else{let e=(0,i.use)(o.LayoutRouterContext);c=null!==e?e.parentParams:{}}if("u"{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"IconMark",{enumerable:!0,get:function(){return a}});let n=e.r(43476),a=()=>"u">typeof window?null:(0,n.jsx)("meta",{name:"«nxt-icon»"})}]); \ No newline at end of file diff --git a/backend/static/_next/static/chunks/41cdc310bc504822.js b/backend/static/_next/static/chunks/41cdc310bc504822.js new file mode 100644 index 00000000..ed5c1569 --- /dev/null +++ b/backend/static/_next/static/chunks/41cdc310bc504822.js @@ -0,0 +1 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,52683,e=>{"use strict";let t;var r,n,l,a,i,s,o,d,u,c,h,f,g,p,m,v,x,b,y,w=e.i(43476),C=e.i(71645);let j=(0,C.createContext)(null),k=({children:e})=>{let[t,r]=(0,C.useState)(null),[n,l]=(0,C.useState)(!0);(0,C.useEffect)(()=>{fetch("/api/auth/me",{credentials:"include"}).then(e=>e.ok?e.json():null).then(e=>{r(e?.username??null),l(!1)}).catch(()=>{l(!1)})},[]);let a=async(e,t)=>{let n=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({username:e,password:t})});if(!n.ok)throw Error("Invalid credentials");r((await n.json()).username)},i=async()=>{await fetch("/api/auth/logout",{method:"POST",credentials:"include"}),r(null)};return(0,w.jsx)(j.Provider,{value:{username:t,loading:n,login:a,logout:i},children:e})},S=()=>{let e=(0,C.useContext)(j);if(!e)throw Error("useAuth must be used within AuthProvider");return e};var D=e.i(74080);let E="u">typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function N(e){let t=Object.prototype.toString.call(e);return"[object Window]"===t||"[object global]"===t}function M(e){return"nodeType"in e}function R(e){var t,r;return e?N(e)?e:M(e)&&null!=(t=null==(r=e.ownerDocument)?void 0:r.defaultView)?t:window:window}function O(e){let{Document:t}=R(e);return e instanceof t}function T(e){return!N(e)&&e instanceof R(e).HTMLElement}function I(e){return e instanceof R(e).SVGElement}function A(e){return e?N(e)?e.document:M(e)?O(e)?e:T(e)||I(e)?e.ownerDocument:document:document:document}let L=E?C.useLayoutEffect:C.useEffect;function P(e){let t=(0,C.useRef)(e);return L(()=>{t.current=e}),(0,C.useCallback)(function(){for(var e=arguments.length,r=Array(e),n=0;n{r.current!==e&&(r.current=e)},t),r}function _(e,t){let r=(0,C.useRef)();return(0,C.useMemo)(()=>{let t=e(r.current);return r.current=t,t},[...t])}function z(e){let t=P(e),r=(0,C.useRef)(null),n=(0,C.useCallback)(e=>{e!==r.current&&(null==t||t(e,r.current)),r.current=e},[]);return[r,n]}function F(e){let t=(0,C.useRef)();return(0,C.useEffect)(()=>{t.current=e},[e]),t.current}let U={};function q(e,t){return(0,C.useMemo)(()=>{if(t)return t;let r=null==U[e]?0:U[e]+1;return U[e]=r,e+"-"+r},[e,t])}function X(e){return function(t){for(var r=arguments.length,n=Array(r>1?r-1:0),l=1;l{for(let[n,l]of Object.entries(r)){let r=t[n];null!=r&&(t[n]=r+e*l)}return t},{...t})}}let Y=X(1),K=X(-1);function W(e){if(!e)return!1;let{KeyboardEvent:t}=R(e.target);return t&&e instanceof t}function J(e){if(function(e){if(!e)return!1;let{TouchEvent:t}=R(e.target);return t&&e instanceof t}(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:r}=e.touches[0];return{x:t,y:r}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:r}=e.changedTouches[0];return{x:t,y:r}}}return"clientX"in e&&"clientY"in e?{x:e.clientX,y:e.clientY}:null}let $=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:r}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(r?Math.round(r):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:r}=e;return"scaleX("+t+") scaleY("+r+")"}},Transform:{toString(e){if(e)return[$.Translate.toString(e),$.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:r,easing:n}=e;return t+" "+r+"ms "+n}}}),H="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]",V={display:"none"};function G(e){let{id:t,value:r}=e;return C.default.createElement("div",{id:t,style:V},r)}function Q(e){let{id:t,announcement:r,ariaLiveType:n="assertive"}=e;return C.default.createElement("div",{id:t,style:{position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":n,"aria-atomic":!0},r)}let Z=(0,C.createContext)(null),ee={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},et={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:r}=e;return r?"Draggable item "+t.id+" was moved over droppable area "+r.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:r}=e;return r?"Draggable item "+t.id+" was dropped over droppable area "+r.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function er(e){var t;let r,{announcements:n=et,container:l,hiddenTextDescribedById:a,screenReaderInstructions:i=ee}=e,{announce:s,announcement:o}=function(){let[e,t]=(0,C.useState)("");return{announce:(0,C.useCallback)(e=>{null!=e&&t(e)},[]),announcement:e}}(),d=q("DndLiveRegion"),[u,c]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{c(!0)},[]),t=(0,C.useMemo)(()=>({onDragStart(e){let{active:t}=e;s(n.onDragStart({active:t}))},onDragMove(e){let{active:t,over:r}=e;n.onDragMove&&s(n.onDragMove({active:t,over:r}))},onDragOver(e){let{active:t,over:r}=e;s(n.onDragOver({active:t,over:r}))},onDragEnd(e){let{active:t,over:r}=e;s(n.onDragEnd({active:t,over:r}))},onDragCancel(e){let{active:t,over:r}=e;s(n.onDragCancel({active:t,over:r}))}}),[s,n]),r=(0,C.useContext)(Z),(0,C.useEffect)(()=>{if(!r)throw Error("useDndMonitor must be used within a children of ");return r(t)},[t,r]),!u)return null;let h=C.default.createElement(C.default.Fragment,null,C.default.createElement(G,{id:a,value:i.draggable}),C.default.createElement(Q,{id:d,announcement:o}));return l?(0,D.createPortal)(h,l):h}function en(){}(r=c||(c={})).DragStart="dragStart",r.DragMove="dragMove",r.DragEnd="dragEnd",r.DragCancel="dragCancel",r.DragOver="dragOver",r.RegisterDroppable="registerDroppable",r.SetDroppableDisabled="setDroppableDisabled",r.UnregisterDroppable="unregisterDroppable";let el=Object.freeze({x:0,y:0});function ea(e,t){let{data:{value:r}}=e,{data:{value:n}}=t;return r-n}function ei(e,t){let{data:{value:r}}=e,{data:{value:n}}=t;return n-r}function es(e){let{left:t,top:r,height:n,width:l}=e;return[{x:t,y:r},{x:t+l,y:r},{x:t,y:r+n},{x:t+l,y:r+n}]}let eo=e=>{let{collisionRect:t,droppableRects:r,droppableContainers:n}=e,l=es(t),a=[];for(let e of n){let{id:t}=e,n=r.get(t);if(n){let r=es(n),i=Number((l.reduce((e,t,n)=>{var l;return e+(l=r[n],Math.sqrt(Math.pow(l.x-t.x,2)+Math.pow(l.y-t.y,2)))},0)/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:i}})}}return a.sort(ea)},ed=e=>{let{collisionRect:t,droppableRects:r,droppableContainers:n}=e,l=[];for(let e of n){let{id:n}=e,a=r.get(n);if(a){let r=function(e,t){let r=Math.max(t.top,e.top),n=Math.max(t.left,e.left),l=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height);if(n0&&l.push({id:n,data:{droppableContainer:e,value:r}})}}return l.sort(ei)};function eu(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:el}let ec=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n({...e,top:e.top+ +t.y,bottom:e.bottom+ +t.y,left:e.left+ +t.x,right:e.right+ +t.x}),{...e})};function eh(e){if(e.startsWith("matrix3d(")){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith("matrix(")){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}let ef={ignoreTransform:!1};function eg(e,t){void 0===t&&(t=ef);let r=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:n}=R(e).getComputedStyle(e);t&&(r=function(e,t,r){let n=eh(t);if(!n)return e;let{scaleX:l,scaleY:a,x:i,y:s}=n,o=e.left-i-(1-l)*parseFloat(r),d=e.top-s-(1-a)*parseFloat(r.slice(r.indexOf(" ")+1)),u=l?e.width/l:e.width,c=a?e.height/a:e.height;return{width:u,height:c,top:d,right:o+u,bottom:d+c,left:o}}(r,t,n))}let{top:n,left:l,width:a,height:i,bottom:s,right:o}=r;return{top:n,left:l,width:a,height:i,bottom:s,right:o}}function ep(e){return eg(e,{ignoreTransform:!0})}function em(e,t){let r=[];return e?function n(l){var a,i;let s;if(null!=t&&r.length>=t||!l)return r;if(O(l)&&null!=l.scrollingElement&&!r.includes(l.scrollingElement))return r.push(l.scrollingElement),r;if(!T(l)||I(l)||r.includes(l))return r;let o=R(e).getComputedStyle(l);return(l!==e&&(void 0===(a=o)&&(a=R(l).getComputedStyle(l)),s=/(auto|scroll|overlay)/,["overflow","overflowX","overflowY"].some(e=>{let t=a[e];return"string"==typeof t&&s.test(t)}))&&r.push(l),void 0===(i=o)&&(i=R(l).getComputedStyle(l)),"fixed"===i.position)?r:n(l.parentNode)}(e):r}function ev(e){let[t]=em(e,1);return null!=t?t:null}function ex(e){return E&&e?N(e)?e:M(e)?O(e)||e===A(e).scrollingElement?window:T(e)?e:null:null:null}function eb(e){return N(e)?e.scrollX:e.scrollLeft}function ey(e){return N(e)?e.scrollY:e.scrollTop}function ew(e){return{x:eb(e),y:ey(e)}}function eC(e){return!!E&&!!e&&e===document.scrollingElement}function ej(e){let t={x:0,y:0},r=eC(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},n={x:e.scrollWidth-r.width,y:e.scrollHeight-r.height},l=e.scrollTop<=t.y,a=e.scrollLeft<=t.x;return{isTop:l,isLeft:a,isBottom:e.scrollTop>=n.y,isRight:e.scrollLeft>=n.x,maxScroll:n,minScroll:t}}(n=h||(h={}))[n.Forward=1]="Forward",n[n.Backward=-1]="Backward";let ek={x:.2,y:.2};function eS(e){return e.reduce((e,t)=>Y(e,ew(t)),el)}function eD(e,t){if(void 0===t&&(t=eg),!e)return;let{top:r,left:n,bottom:l,right:a}=t(e);ev(e)&&(l<=0||a<=0||r>=window.innerHeight||n>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}let eE=[["x",["left","right"],function(e){return e.reduce((e,t)=>e+eb(t),0)}],["y",["top","bottom"],function(e){return e.reduce((e,t)=>e+ey(t),0)}]];class eN{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=em(t),n=eS(r);for(const[t,l,a]of(this.rect={...e},this.width=e.width,this.height=e.height,eE))for(const e of l)Object.defineProperty(this,e,{get:()=>{let l=a(r),i=n[t]-l;return this.rect[e]+i},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class eM{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>{var t;return null==(t=this.target)?void 0:t.removeEventListener(...e)})},this.target=e}add(e,t,r){var n;null==(n=this.target)||n.addEventListener(e,t,r),this.listeners.push([e,t,r])}}function eR(e,t){let r=Math.abs(e.x),n=Math.abs(e.y);return"number"==typeof t?Math.sqrt(r**2+n**2)>t:"x"in t&&"y"in t?r>t.x&&n>t.y:"x"in t?r>t.x:"y"in t&&n>t.y}function eO(e){e.preventDefault()}function eT(e){e.stopPropagation()}(l=f||(f={})).Click="click",l.DragStart="dragstart",l.Keydown="keydown",l.ContextMenu="contextmenu",l.Resize="resize",l.SelectionChange="selectionchange",l.VisibilityChange="visibilitychange",(a=g||(g={})).Space="Space",a.Down="ArrowDown",a.Right="ArrowRight",a.Left="ArrowLeft",a.Up="ArrowUp",a.Esc="Escape",a.Enter="Enter",a.Tab="Tab";let eI={start:[g.Space,g.Enter],cancel:[g.Esc],end:[g.Space,g.Enter,g.Tab]},eA=(e,t)=>{let{currentCoordinates:r}=t;switch(e.code){case g.Right:return{...r,x:r.x+25};case g.Left:return{...r,x:r.x-25};case g.Down:return{...r,y:r.y+25};case g.Up:return{...r,y:r.y-25}}};class eL{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:t}}=e;this.props=e,this.listeners=new eM(A(t)),this.windowListeners=new eM(R(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(f.Resize,this.handleCancel),this.windowListeners.add(f.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(f.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,r=e.node.current;r&&eD(r),t(el)}handleKeyDown(e){if(W(e)){let{active:t,context:r,options:n}=this.props,{keyboardCodes:l=eI,coordinateGetter:a=eA,scrollBehavior:i="smooth"}=n,{code:s}=e;if(l.end.includes(s))return void this.handleEnd(e);if(l.cancel.includes(s))return void this.handleCancel(e);let{collisionRect:o}=r.current,d=o?{x:o.left,y:o.top}:el;this.referenceCoordinates||(this.referenceCoordinates=d);let u=a(e,{active:t,context:r.current,currentCoordinates:d});if(u){let t=K(u,d),n={x:0,y:0},{scrollableAncestors:l}=r.current;for(let r of l){let l=e.code,{isTop:a,isRight:s,isLeft:o,isBottom:d,maxScroll:c,minScroll:h}=ej(r),f=function(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:r,right:n,bottom:l}=e.getBoundingClientRect();return{top:t,left:r,right:n,bottom:l,width:e.clientWidth,height:e.clientHeight}}(r),p={x:Math.min(l===g.Right?f.right-f.width/2:f.right,Math.max(l===g.Right?f.left:f.left+f.width/2,u.x)),y:Math.min(l===g.Down?f.bottom-f.height/2:f.bottom,Math.max(l===g.Down?f.top:f.top+f.height/2,u.y))},m=l===g.Right&&!s||l===g.Left&&!o,v=l===g.Down&&!d||l===g.Up&&!a;if(m&&p.x!==u.x){let e=r.scrollLeft+t.x,a=l===g.Right&&e<=c.x||l===g.Left&&e>=h.x;if(a&&!t.y)return void r.scrollTo({left:e,behavior:i});a?n.x=r.scrollLeft-e:n.x=l===g.Right?r.scrollLeft-c.x:r.scrollLeft-h.x,n.x&&r.scrollBy({left:-n.x,behavior:i});break}if(v&&p.y!==u.y){let e=r.scrollTop+t.y,a=l===g.Down&&e<=c.y||l===g.Up&&e>=h.y;if(a&&!t.x)return void r.scrollTo({top:e,behavior:i});a?n.y=r.scrollTop-e:n.y=l===g.Down?r.scrollTop-c.y:r.scrollTop-h.y,n.y&&r.scrollBy({top:-n.y,behavior:i});break}}this.handleMove(e,Y(K(u,this.referenceCoordinates),n))}}}handleMove(e,t){let{onMove:r}=this.props;e.preventDefault(),r(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}function eP(e){return!!(e&&"distance"in e)}function eB(e){return!!(e&&"delay"in e)}eL.activators=[{eventName:"onKeyDown",handler:(e,t,r)=>{let{keyboardCodes:n=eI,onActivation:l}=t,{active:a}=r,{code:i}=e.nativeEvent;if(n.start.includes(i)){let t=a.activatorNode.current;return(!t||e.target===t)&&(e.preventDefault(),null==l||l({event:e.nativeEvent}),!0)}return!1}}];class e_{constructor(e,t,r){var n;void 0===r&&(r=function(e){let{EventTarget:t}=R(e);return e instanceof t?e:A(e)}(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;const{event:l}=e,{target:a}=l;this.props=e,this.events=t,this.document=A(a),this.documentListeners=new eM(this.document),this.listeners=new eM(r),this.windowListeners=new eM(R(a)),this.initialCoordinates=null!=(n=J(l))?n:el,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(f.Resize,this.handleCancel),this.windowListeners.add(f.DragStart,eO),this.windowListeners.add(f.VisibilityChange,this.handleCancel),this.windowListeners.add(f.ContextMenu,eO),this.documentListeners.add(f.Keydown,this.handleKeydown),t){if(null!=r&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(eB(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(eP(t))return void this.handlePending(t)}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:r,onPending:n}=this.props;n(r,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(f.Click,eT,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(f.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){var t;let{activated:r,initialCoordinates:n,props:l}=this,{onMove:a,options:{activationConstraint:i}}=l;if(!n)return;let s=null!=(t=J(e))?t:el,o=K(n,s);if(!r&&i){if(eP(i)){if(null!=i.tolerance&&eR(o,i.tolerance))return this.handleCancel();if(eR(o,i.distance))return this.handleStart()}return eB(i)&&eR(o,i.tolerance)?this.handleCancel():void this.handlePending(i,o)}e.cancelable&&e.preventDefault(),a(s)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===g.Esc&&this.handleCancel()}removeTextSelection(){var e;null==(e=this.document.getSelection())||e.removeAllRanges()}}let ez={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class eF extends e_{constructor(e){const{event:t}=e;super(e,ez,A(t.target))}}eF.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:r}=e,{onActivation:n}=t;return!!r.isPrimary&&0===r.button&&(null==n||n({event:r}),!0)}}];(i=p||(p={}))[i.RightClick=2]="RightClick";(s=m||(m={}))[s.Pointer=0]="Pointer",s[s.DraggableRect=1]="DraggableRect",(o=v||(v={}))[o.TreeOrder=0]="TreeOrder",o[o.ReversedTreeOrder=1]="ReversedTreeOrder";let eU={x:{[h.Backward]:!1,[h.Forward]:!1},y:{[h.Backward]:!1,[h.Forward]:!1}};(d=x||(x={}))[d.Always=0]="Always",d[d.BeforeDragging=1]="BeforeDragging",d[d.WhileDragging=2]="WhileDragging",(b||(b={})).Optimized="optimized";let eq=new Map;function eX(e,t){return _(r=>e?r||("function"==typeof t?t(e):e):null,[t,e])}function eY(e){let{callback:t,disabled:r}=e,n=P(t),l=(0,C.useMemo)(()=>{if(r||"u"()=>null==l?void 0:l.disconnect(),[l]),l}function eK(e){return new eN(eg(e),e)}function eW(e,t,r){void 0===t&&(t=eK);let[n,l]=(0,C.useState)(null);function a(){l(n=>{if(!e)return null;if(!1===e.isConnected){var l;return null!=(l=null!=n?n:r)?l:null}let a=t(e);return JSON.stringify(n)===JSON.stringify(a)?n:a})}let i=function(e){let{callback:t,disabled:r}=e,n=P(t),l=(0,C.useMemo)(()=>{if(r||"u"()=>null==l?void 0:l.disconnect(),[l]),l}({callback(t){if(e)for(let r of t){let{type:t,target:n}=r;if("childList"===t&&n instanceof HTMLElement&&n.contains(e)){a();break}}}}),s=eY({callback:a});return L(()=>{a(),e?(null==s||s.observe(e),null==i||i.observe(document.body,{childList:!0,subtree:!0})):(null==s||s.disconnect(),null==i||i.disconnect())},[e]),n}let eJ=[];function e$(e,t){void 0===t&&(t=[]);let r=(0,C.useRef)(null);return(0,C.useEffect)(()=>{r.current=null},t),(0,C.useEffect)(()=>{let t=e!==el;t&&!r.current&&(r.current=e),!t&&r.current&&(r.current=null)},[e]),r.current?K(e,r.current):el}function eH(e){return(0,C.useMemo)(()=>{let t,r;return e?(t=e.innerWidth,{top:0,left:0,right:t,bottom:r=e.innerHeight,width:t,height:r}):null},[e])}let eV=[];function eG(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return T(t)?t:e}let eQ=[{sensor:eF,options:{}},{sensor:eL,options:{}}],eZ={current:{}},e0={draggable:{measure:ep},droppable:{measure:ep,strategy:x.WhileDragging,frequency:b.Optimized},dragOverlay:{measure:eg}};class e1 extends Map{get(e){var t;return null!=e&&null!=(t=super.get(e))?t:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){var t,r;return null!=(t=null==(r=this.get(e))?void 0:r.node.current)?t:void 0}}let e2={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new e1,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:en},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:e0,measureDroppableContainers:en,windowRect:null,measuringScheduled:!1},e5={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:en,draggableNodes:new Map,over:null,measureDroppableContainers:en},e3=(0,C.createContext)(e5),e4=(0,C.createContext)(e2);function e6(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new e1}}}function e8(e,t){switch(t.type){case c.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case c.DragMove:if(null==e.draggable.active)return e;return{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case c.DragEnd:case c.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case c.RegisterDroppable:{let{element:r}=t,{id:n}=r,l=new e1(e.droppable.containers);return l.set(n,r),{...e,droppable:{...e.droppable,containers:l}}}case c.SetDroppableDisabled:{let{id:r,key:n,disabled:l}=t,a=e.droppable.containers.get(r);if(!a||n!==a.key)return e;let i=new e1(e.droppable.containers);return i.set(r,{...a,disabled:l}),{...e,droppable:{...e.droppable,containers:i}}}case c.UnregisterDroppable:{let{id:r,key:n}=t,l=e.droppable.containers.get(r);if(!l||n!==l.key)return e;let a=new e1(e.droppable.containers);return a.delete(r),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function e7(e){let{disabled:t}=e,{active:r,activatorEvent:n,draggableNodes:l}=(0,C.useContext)(e3),a=F(n),i=F(null==r?void 0:r.id);return(0,C.useEffect)(()=>{if(!t&&!n&&a&&null!=i){if(!W(a)||document.activeElement===a.target)return;let e=l.get(i);if(!e)return;let{activatorNode:t,node:r}=e;(t.current||r.current)&&requestAnimationFrame(()=>{for(let e of[t.current,r.current]){if(!e)continue;let t=e.matches(H)?e:e.querySelector(H);if(t){t.focus();break}}})}},[n,t,l,i,a]),null}function e9(e,t){let{transform:r,...n}=t;return null!=e&&e.length?e.reduce((e,t)=>t({transform:e,...n}),r):r}let te=(0,C.createContext)({...el,scaleX:1,scaleY:1});(u=y||(y={}))[u.Uninitialized=0]="Uninitialized",u[u.Initializing=1]="Initializing",u[u.Initialized=2]="Initialized";let tt=(0,C.memo)(function(e){var t,r,n,l,a,i,s,o;let d,u,f,g,p,b,w,j,{id:k,accessibility:S,autoScroll:N=!0,children:M,sensors:O=eQ,collisionDetection:I=ed,measuring:A,modifiers:P,...U}=e,[X,K]=(0,C.useReducer)(e8,void 0,e6),[W,$]=function(){let[e]=(0,C.useState)(()=>new Set),t=(0,C.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,C.useCallback)(t=>{let{type:r,event:n}=t;e.forEach(e=>{var t;return null==(t=e[r])?void 0:t.call(e,n)})},[e]),t]}(),[H,V]=(0,C.useState)(y.Uninitialized),G=H===y.Initialized,{draggable:{active:Q,nodes:ee,translate:et},droppable:{containers:en}}=X,ea=null!=Q?ee.get(Q):null,ei=(0,C.useRef)({initial:null,translated:null}),es=(0,C.useMemo)(()=>{var e;return null!=Q?{id:Q,data:null!=(e=null==ea?void 0:ea.data)?e:eZ,rect:ei}:null},[Q,ea]),eo=(0,C.useRef)(null),[eh,ef]=(0,C.useState)(null),[ep,eb]=(0,C.useState)(null),ey=B(U,Object.values(U)),eD=q("DndDescribedBy",k),eE=(0,C.useMemo)(()=>en.getEnabled(),[en]),eM=(0,C.useMemo)(()=>({draggable:{...e0.draggable,...null==A?void 0:A.draggable},droppable:{...e0.droppable,...null==A?void 0:A.droppable},dragOverlay:{...e0.dragOverlay,...null==A?void 0:A.dragOverlay}}),[null==A?void 0:A.draggable,null==A?void 0:A.droppable,null==A?void 0:A.dragOverlay]),{droppableRects:eR,measureDroppableContainers:eO,measuringScheduled:eT}=function(e,t){let{dragging:r,dependencies:n,config:l}=t,[a,i]=(0,C.useState)(null),{frequency:s,measure:o,strategy:d}=l,u=(0,C.useRef)(e),c=function(){switch(d){case x.Always:return!1;case x.BeforeDragging:return r;default:return!r}}(),h=B(c),f=(0,C.useCallback)(function(e){void 0===e&&(e=[]),h.current||i(t=>null===t?e:t.concat(e.filter(e=>!t.includes(e))))},[h]),g=(0,C.useRef)(null),p=_(t=>{if(c&&!r)return eq;if(!t||t===eq||u.current!==e||null!=a){let t=new Map;for(let r of e){if(!r)continue;if(a&&a.length>0&&!a.includes(r.id)&&r.rect.current){t.set(r.id,r.rect.current);continue}let e=r.node.current,n=e?new eN(o(e),e):null;r.rect.current=n,n&&t.set(r.id,n)}return t}return t},[e,a,r,c,o]);return(0,C.useEffect)(()=>{u.current=e},[e]),(0,C.useEffect)(()=>{c||f()},[r,c]),(0,C.useEffect)(()=>{a&&a.length>0&&i(null)},[JSON.stringify(a)]),(0,C.useEffect)(()=>{c||"number"!=typeof s||null!==g.current||(g.current=setTimeout(()=>{f(),g.current=null},s))},[s,c,f,...n]),{droppableRects:p,measureDroppableContainers:f,measuringScheduled:null!=a}}(eE,{dragging:G,dependencies:[et.x,et.y],config:eM.droppable}),eI=_(e=>{var t;return null==Q?null:null!=(t=null!=p?p:e)?t:null},[p=(g=null!=Q?ee.get(Q):void 0)?g.node.current:null,Q]),eA=(0,C.useMemo)(()=>ep?J(ep):null,[ep]),eL=(d=(null==eh?void 0:eh.autoScrollEnabled)===!1,u="object"==typeof N?!1===N.enabled:!1===N,f=G&&!d&&!u,"object"==typeof N?{...N,enabled:f}:{enabled:f}),eP=eX(eI,eM.draggable.measure);!function(e){let{activeNode:t,measure:r,initialRect:n,config:l=!0}=e,a=(0,C.useRef)(!1),{x:i,y:s}="boolean"==typeof l?{x:l,y:l}:l;L(()=>{if(!i&&!s||!t){a.current=!1;return}if(a.current||!n)return;let e=null==t?void 0:t.node.current;if(!e||!1===e.isConnected)return;let l=eu(r(e),n);if(i||(l.x=0),s||(l.y=0),a.current=!0,Math.abs(l.x)>0||Math.abs(l.y)>0){let t=ev(e);t&&t.scrollBy({top:l.y,left:l.x})}},[t,i,s,n,r])}({activeNode:null!=Q?ee.get(Q):null,config:eL.layoutShiftCompensation,initialRect:eP,measure:eM.draggable.measure});let eB=eW(eI,eM.draggable.measure,eP),e_=eW(eI?eI.parentElement:null),ez=(0,C.useRef)({activatorEvent:null,active:null,activeNode:eI,collisionRect:null,collisions:null,droppableRects:eR,draggableNodes:ee,draggingNode:null,draggingNodeRect:null,droppableContainers:en,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),eF=en.getNodeFor(null==(t=ez.current.over)?void 0:t.id),eK=function(e){let{measure:t}=e,[r,n]=(0,C.useState)(null),l=eY({callback:(0,C.useCallback)(e=>{for(let{target:r}of e)if(T(r)){n(e=>{let n=t(r);return e?{...e,width:n.width,height:n.height}:n});break}},[t])}),[a,i]=z((0,C.useCallback)(e=>{let r=eG(e);null==l||l.disconnect(),r&&(null==l||l.observe(r)),n(r?t(r):null)},[t,l]));return(0,C.useMemo)(()=>({nodeRef:a,rect:r,setRef:i}),[r,a,i])}({measure:eM.dragOverlay.measure}),e1=null!=(r=eK.nodeRef.current)?r:eI,e2=G?null!=(n=eK.rect)?n:eB:null,e5=!!(eK.nodeRef.current&&eK.rect),tt=(b=eX(a=e5?null:eB),eu(a,b)),tr=eH(e1?R(e1):null),tn=(i=G?null!=eF?eF:eI:null,w=(0,C.useRef)(i),j=_(e=>i?e&&e!==eJ&&i&&w.current&&i.parentNode===w.current.parentNode?e:em(i):eJ,[i]),(0,C.useEffect)(()=>{w.current=i},[i]),j),tl=function(e,t){void 0===t&&(t=eg);let[r]=e,n=eH(r?R(r):null),[l,a]=(0,C.useState)(eV);function i(){a(()=>e.length?e.map(e=>eC(e)?n:new eN(t(e),e)):eV)}let s=eY({callback:i});return L(()=>{null==s||s.disconnect(),i(),e.forEach(e=>null==s?void 0:s.observe(e))},[e]),l}(tn),ta=e9(P,{transform:{x:et.x-tt.x,y:et.y-tt.y,scaleX:1,scaleY:1},activatorEvent:ep,active:es,activeNodeRect:eB,containerNodeRect:e_,draggingNodeRect:e2,over:ez.current.over,overlayNodeRect:eK.rect,scrollableAncestors:tn,scrollableAncestorRects:tl,windowRect:tr}),ti=eA?Y(eA,et):null,ts=function(e){let[t,r]=(0,C.useState)(null),n=(0,C.useRef)(e),l=(0,C.useCallback)(e=>{let t=ex(e.target);t&&r(e=>e?(e.set(t,ew(t)),new Map(e)):null)},[]);return(0,C.useEffect)(()=>{let t=n.current;if(e!==t){a(t);let i=e.map(e=>{let t=ex(e);return t?(t.addEventListener("scroll",l,{passive:!0}),[t,ew(t)]):null}).filter(e=>null!=e);r(i.length?new Map(i):null),n.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{let t=ex(e);null==t||t.removeEventListener("scroll",l)})}},[l,e]),(0,C.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>Y(e,t),el):eS(e):el,[e,t])}(tn),to=e$(ts),td=e$(ts,[eB]),tu=Y(ta,to),tc=e2?ec(e2,ta):null,th=es&&tc?I({active:es,collisionRect:tc,droppableRects:eR,droppableContainers:eE,pointerCoordinates:ti}):null,tf=function(e,t){if(!e||0===e.length)return null;let[r]=e;return r.id}(th,0),[tg,tp]=(0,C.useState)(null),tm=(s=e5?ta:Y(ta,td),o=null!=(l=null==tg?void 0:tg.rect)?l:null,{...s,scaleX:o&&eB?o.width/eB.width:1,scaleY:o&&eB?o.height/eB.height:1}),tv=(0,C.useRef)(null),tx=(0,C.useCallback)((e,t)=>{let{sensor:r,options:n}=t;if(null==eo.current)return;let l=ee.get(eo.current);if(!l)return;let a=e.nativeEvent,i=new r({active:eo.current,activeNode:l,event:a,options:n,context:ez,onAbort(e){if(!ee.get(e))return;let{onDragAbort:t}=ey.current,r={id:e};null==t||t(r),W({type:"onDragAbort",event:r})},onPending(e,t,r,n){if(!ee.get(e))return;let{onDragPending:l}=ey.current,a={id:e,constraint:t,initialCoordinates:r,offset:n};null==l||l(a),W({type:"onDragPending",event:a})},onStart(e){let t=eo.current;if(null==t)return;let r=ee.get(t);if(!r)return;let{onDragStart:n}=ey.current,l={activatorEvent:a,active:{id:t,data:r.data,rect:ei}};(0,D.unstable_batchedUpdates)(()=>{null==n||n(l),V(y.Initializing),K({type:c.DragStart,initialCoordinates:e,active:t}),W({type:"onDragStart",event:l}),ef(tv.current),eb(a)})},onMove(e){K({type:c.DragMove,coordinates:e})},onEnd:s(c.DragEnd),onCancel:s(c.DragCancel)});function s(e){return async function(){let{active:t,collisions:r,over:n,scrollAdjustedTranslate:l}=ez.current,i=null;if(t&&l){let{cancelDrop:s}=ey.current;i={activatorEvent:a,active:t,collisions:r,delta:l,over:n},e===c.DragEnd&&"function"==typeof s&&await Promise.resolve(s(i))&&(e=c.DragCancel)}eo.current=null,(0,D.unstable_batchedUpdates)(()=>{K({type:e}),V(y.Uninitialized),tp(null),ef(null),eb(null),tv.current=null;let t=e===c.DragEnd?"onDragEnd":"onDragCancel";if(i){let e=ey.current[t];null==e||e(i),W({type:t,event:i})}})}}tv.current=i},[ee]),tb=(0,C.useCallback)((e,t)=>(r,n)=>{let l=r.nativeEvent,a=ee.get(n);null!==eo.current||!a||l.dndKit||l.defaultPrevented||!0===e(r,t.options,{active:a})&&(l.dndKit={capturedBy:t.sensor},eo.current=n,tx(r,t))},[ee,tx]),ty=(0,C.useMemo)(()=>O.reduce((e,t)=>{let{sensor:r}=t;return[...e,...r.activators.map(e=>({eventName:e.eventName,handler:tb(e.handler,t)}))]},[]),[O,tb]);(0,C.useEffect)(()=>{if(!E)return;let e=O.map(e=>{let{sensor:t}=e;return null==t.setup?void 0:t.setup()});return()=>{for(let t of e)null==t||t()}},O.map(e=>{let{sensor:t}=e;return t})),L(()=>{eB&&H===y.Initializing&&V(y.Initialized)},[eB,H]),(0,C.useEffect)(()=>{let{onDragMove:e}=ey.current,{active:t,activatorEvent:r,collisions:n,over:l}=ez.current;if(!t||!r)return;let a={active:t,activatorEvent:r,collisions:n,delta:{x:tu.x,y:tu.y},over:l};(0,D.unstable_batchedUpdates)(()=>{null==e||e(a),W({type:"onDragMove",event:a})})},[tu.x,tu.y]),(0,C.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:r,droppableContainers:n,scrollAdjustedTranslate:l}=ez.current;if(!e||null==eo.current||!t||!l)return;let{onDragOver:a}=ey.current,i=n.get(tf),s=i&&i.rect.current?{id:i.id,rect:i.rect.current,data:i.data,disabled:i.disabled}:null,o={active:e,activatorEvent:t,collisions:r,delta:{x:l.x,y:l.y},over:s};(0,D.unstable_batchedUpdates)(()=>{tp(s),null==a||a(o),W({type:"onDragOver",event:o})})},[tf]),L(()=>{ez.current={activatorEvent:ep,active:es,activeNode:eI,collisionRect:tc,collisions:th,droppableRects:eR,draggableNodes:ee,draggingNode:e1,draggingNodeRect:e2,droppableContainers:en,over:tg,scrollableAncestors:tn,scrollAdjustedTranslate:tu},ei.current={initial:e2,translated:tc}},[es,eI,th,tc,ee,e1,e2,eR,en,tg,tn,tu]),function(e){let t,{acceleration:r,activator:n=m.Pointer,canScroll:l,draggingRect:a,enabled:i,interval:s=5,order:o=v.TreeOrder,pointerCoordinates:d,scrollableAncestors:u,scrollableAncestorRects:c,delta:f,threshold:g}=e,p=function(e){let{delta:t,disabled:r}=e,n=F(t);return _(e=>{if(r||!n||!e)return eU;let l={x:Math.sign(t.x-n.x),y:Math.sign(t.y-n.y)};return{x:{[h.Backward]:e.x[h.Backward]||-1===l.x,[h.Forward]:e.x[h.Forward]||1===l.x},y:{[h.Backward]:e.y[h.Backward]||-1===l.y,[h.Forward]:e.y[h.Forward]||1===l.y}}},[r,t,n])}({delta:f,disabled:!i}),[x,b]=(t=(0,C.useRef)(null),[(0,C.useCallback)((e,r)=>{t.current=setInterval(e,r)},[]),(0,C.useCallback)(()=>{null!==t.current&&(clearInterval(t.current),t.current=null)},[])]),y=(0,C.useRef)({x:0,y:0}),w=(0,C.useRef)({x:0,y:0}),j=(0,C.useMemo)(()=>{switch(n){case m.Pointer:return d?{top:d.y,bottom:d.y,left:d.x,right:d.x}:null;case m.DraggableRect:return a}},[n,a,d]),k=(0,C.useRef)(null),S=(0,C.useCallback)(()=>{let e=k.current;if(!e)return;let t=y.current.x*w.current.x,r=y.current.y*w.current.y;e.scrollBy(t,r)},[]),D=(0,C.useMemo)(()=>o===v.TreeOrder?[...u].reverse():u,[o,u]);(0,C.useEffect)(()=>{if(!i||!u.length||!j)return void b();for(let e of D){if((null==l?void 0:l(e))===!1)continue;let t=c[u.indexOf(e)];if(!t)continue;let{direction:n,speed:a}=function(e,t,r,n,l){let{top:a,left:i,right:s,bottom:o}=r;void 0===n&&(n=10),void 0===l&&(l=ek);let{isTop:d,isBottom:u,isLeft:c,isRight:f}=ej(e),g={x:0,y:0},p={x:0,y:0},m={height:t.height*l.y,width:t.width*l.x};return!d&&a<=t.top+m.height?(g.y=h.Backward,p.y=n*Math.abs((t.top+m.height-a)/m.height)):!u&&o>=t.bottom-m.height&&(g.y=h.Forward,p.y=n*Math.abs((t.bottom-m.height-o)/m.height)),!f&&s>=t.right-m.width?(g.x=h.Forward,p.x=n*Math.abs((t.right-m.width-s)/m.width)):!c&&i<=t.left+m.width&&(g.x=h.Backward,p.x=n*Math.abs((t.left+m.width-i)/m.width)),{direction:g,speed:p}}(e,t,j,r,g);for(let e of["x","y"])p[e][n[e]]||(a[e]=0,n[e]=0);if(a.x>0||a.y>0){b(),k.current=e,x(S,s),y.current=a,w.current=n;return}}y.current={x:0,y:0},w.current={x:0,y:0},b()},[r,S,l,b,i,s,JSON.stringify(j),JSON.stringify(p),x,u,D,c,JSON.stringify(g)])}({...eL,delta:et,draggingRect:tc,pointerCoordinates:ti,scrollableAncestors:tn,scrollableAncestorRects:tl});let tw=(0,C.useMemo)(()=>({active:es,activeNode:eI,activeNodeRect:eB,activatorEvent:ep,collisions:th,containerNodeRect:e_,dragOverlay:eK,draggableNodes:ee,droppableContainers:en,droppableRects:eR,over:tg,measureDroppableContainers:eO,scrollableAncestors:tn,scrollableAncestorRects:tl,measuringConfiguration:eM,measuringScheduled:eT,windowRect:tr}),[es,eI,eB,ep,th,e_,eK,ee,en,eR,tg,eO,tn,tl,eM,eT,tr]),tC=(0,C.useMemo)(()=>({activatorEvent:ep,activators:ty,active:es,activeNodeRect:eB,ariaDescribedById:{draggable:eD},dispatch:K,draggableNodes:ee,over:tg,measureDroppableContainers:eO}),[ep,ty,es,eB,K,eD,ee,tg,eO]);return C.default.createElement(Z.Provider,{value:$},C.default.createElement(e3.Provider,{value:tC},C.default.createElement(e4.Provider,{value:tw},C.default.createElement(te.Provider,{value:tm},M)),C.default.createElement(e7,{disabled:(null==S?void 0:S.restoreFocus)===!1})),C.default.createElement(er,{...S,hiddenTextDescribedById:eD}))}),tr=(0,C.createContext)(null),tn="button";function tl(){return(0,C.useContext)(e4)}let ta={timeout:25};function ti(e){let{data:t,disabled:r=!1,id:n,resizeObserverConfig:l}=e,a=q("Droppable"),{active:i,dispatch:s,over:o,measureDroppableContainers:d}=(0,C.useContext)(e3),u=(0,C.useRef)({disabled:r}),h=(0,C.useRef)(!1),f=(0,C.useRef)(null),g=(0,C.useRef)(null),{disabled:p,updateMeasurementsFor:m,timeout:v}={...ta,...l},x=B(null!=m?m:n),b=eY({callback:(0,C.useCallback)(()=>{if(!h.current){h.current=!0;return}null!=g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{d(Array.isArray(x.current)?x.current:[x.current]),g.current=null},v)},[v]),disabled:p||!i}),[y,w]=z((0,C.useCallback)((e,t)=>{b&&(t&&(b.unobserve(t),h.current=!1),e&&b.observe(e))},[b])),j=B(t);return(0,C.useEffect)(()=>{b&&y.current&&(b.disconnect(),h.current=!1,b.observe(y.current))},[y,b]),(0,C.useEffect)(()=>(s({type:c.RegisterDroppable,element:{id:n,key:a,disabled:r,node:y,rect:f,data:j}}),()=>s({type:c.UnregisterDroppable,key:a,id:n})),[n]),(0,C.useEffect)(()=>{r!==u.current.disabled&&(s({type:c.SetDroppableDisabled,id:n,key:a,disabled:r}),u.current.disabled=r)},[n,a,r,s]),{active:i,rect:f,isOver:(null==o?void 0:o.id)===n,node:y,over:o,setNodeRef:w}}function ts(e){let{animation:t,children:r}=e,[n,l]=(0,C.useState)(null),[a,i]=(0,C.useState)(null),s=F(r);return r||n||!s||l(s),L(()=>{if(!a)return;let e=null==n?void 0:n.key,r=null==n?void 0:n.props.id;null==e||null==r?l(null):Promise.resolve(t(r,a)).then(()=>{l(null)})},[t,n,a]),C.default.createElement(C.default.Fragment,null,r,n?(0,C.cloneElement)(n,{ref:i}):null)}let to={x:0,y:0,scaleX:1,scaleY:1};function td(e){let{children:t}=e;return C.default.createElement(e3.Provider,{value:e5},C.default.createElement(te.Provider,{value:to},t))}let tu={position:"fixed",touchAction:"none"},tc=e=>W(e)?"transform 250ms ease":void 0,th=(0,C.forwardRef)((e,t)=>{let{as:r,activatorEvent:n,adjustScale:l,children:a,className:i,rect:s,style:o,transform:d,transition:u=tc}=e;if(!s)return null;let c=l?d:{...d,scaleX:1,scaleY:1},h={...tu,width:s.width,height:s.height,top:s.top,left:s.left,transform:$.Transform.toString(c),transformOrigin:l&&n?function(e,t){let r=J(e);if(!r)return"0 0";let n={x:(r.x-t.left)/t.width*100,y:(r.y-t.top)/t.height*100};return n.x+"% "+n.y+"%"}(n,s):void 0,transition:"function"==typeof u?u(n):u,...o};return C.default.createElement(r,{className:i,style:h,ref:t},a)}),tf={duration:250,easing:"ease",keyframes:e=>{let{transform:{initial:t,final:r}}=e;return[{transform:$.Transform.toString(t)},{transform:$.Transform.toString(r)}]},sideEffects:(t={styles:{active:{opacity:"0"}}},e=>{let{active:r,dragOverlay:n}=e,l={},{styles:a,className:i}=t;if(null!=a&&a.active)for(let[e,t]of Object.entries(a.active))void 0!==t&&(l[e]=r.node.style.getPropertyValue(e),r.node.style.setProperty(e,t));if(null!=a&&a.dragOverlay)for(let[e,t]of Object.entries(a.dragOverlay))void 0!==t&&n.node.style.setProperty(e,t);return null!=i&&i.active&&r.node.classList.add(i.active),null!=i&&i.dragOverlay&&n.node.classList.add(i.dragOverlay),function(){for(let[e,t]of Object.entries(l))r.node.style.setProperty(e,t);null!=i&&i.active&&r.node.classList.remove(i.active)}})},tg=0,tp=C.default.memo(e=>{var t;let{adjustScale:r=!1,children:n,dropAnimation:l,style:a,transition:i,modifiers:s,wrapperElement:o="div",className:d,zIndex:u=999}=e,{activatorEvent:c,active:h,activeNodeRect:f,containerNodeRect:g,draggableNodes:p,droppableContainers:m,dragOverlay:v,over:x,measuringConfiguration:b,scrollableAncestors:y,scrollableAncestorRects:w,windowRect:j}=tl(),k=(0,C.useContext)(te),S=(t=null==h?void 0:h.id,(0,C.useMemo)(()=>{if(null!=t)return++tg},[t])),D=e9(s,{activatorEvent:c,active:h,activeNodeRect:f,containerNodeRect:g,draggingNodeRect:v.rect,over:x,overlayNodeRect:v.rect,scrollableAncestors:y,scrollableAncestorRects:w,transform:k,windowRect:j}),E=eX(f),N=function(e){let{config:t,draggableNodes:r,droppableContainers:n,measuringConfiguration:l}=e;return P((e,a)=>{if(null===t)return;let i=r.get(e);if(!i)return;let s=i.node.current;if(!s)return;let o=eG(a);if(!o)return;let{transform:d}=R(a).getComputedStyle(a),u=eh(d);if(!u)return;let c="function"==typeof t?t:function(e){let{duration:t,easing:r,sideEffects:n,keyframes:l}={...tf,...e};return e=>{let{active:a,dragOverlay:i,transform:s,...o}=e;if(!t)return;let d={x:i.rect.left-a.rect.left,y:i.rect.top-a.rect.top},u={scaleX:1!==s.scaleX?a.rect.width*s.scaleX/i.rect.width:1,scaleY:1!==s.scaleY?a.rect.height*s.scaleY/i.rect.height:1},c={x:s.x-d.x,y:s.y-d.y,...u},h=l({...o,active:a,dragOverlay:i,transform:{initial:s,final:c}}),[f]=h,g=h[h.length-1];if(JSON.stringify(f)===JSON.stringify(g))return;let p=null==n?void 0:n({active:a,dragOverlay:i,...o}),m=i.node.animate(h,{duration:t,easing:r,fill:"forwards"});return new Promise(e=>{m.onfinish=()=>{null==p||p(),e()}})}}(t);return eD(s,l.draggable.measure),c({active:{id:e,data:i.data,node:s,rect:l.draggable.measure(s)},draggableNodes:r,dragOverlay:{node:a,rect:l.dragOverlay.measure(o)},droppableContainers:n,measuringConfiguration:l,transform:u})})}({config:l,draggableNodes:p,droppableContainers:m,measuringConfiguration:b}),M=E?v.setRef:void 0;return C.default.createElement(td,null,C.default.createElement(ts,{animation:N},h&&S?C.default.createElement(th,{key:S,id:h.id,ref:M,as:o,activatorEvent:c,adjustScale:r,className:d,transition:i,rect:E,style:{zIndex:u,...a},transform:D},n):null))}),tm=function(){for(var e,t,r=0,n="",l=arguments.length;r=0}let tb=e=>{let{rects:t,activeIndex:r,overIndex:n,index:l}=e,a=tv(t,n,r),i=t[l],s=a[l];return s&&i?{x:s.left-i.left,y:s.top-i.top,scaleX:s.width/i.width,scaleY:s.height/i.height}:null},ty={scaleX:1,scaleY:1},tw=e=>{var t,r,n,l;let a,i,s,{activeIndex:o,activeNodeRect:d,index:u,rects:c,overIndex:h}=e,f=null!=(t=c[o])?t:d;if(!f)return null;if(u===o){let e=c[h];return e?{x:0,y:oo&&u<=h?{x:0,y:-f.height-g,...ty}:u=h?{x:0,y:f.height+g,...ty}:{x:0,y:0,...ty}},tC="Sortable",tj=C.default.createContext({activeIndex:-1,containerId:tC,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:tb,disabled:{draggable:!1,droppable:!1}});function tk(e){let{children:t,id:r,items:n,strategy:l=tb,disabled:a=!1}=e,{active:i,dragOverlay:s,droppableRects:o,over:d,measureDroppableContainers:u}=tl(),c=q(tC,r),h=null!==s.rect,f=(0,C.useMemo)(()=>n.map(e=>"object"==typeof e&&"id"in e?e.id:e),[n]),g=null!=i,p=i?f.indexOf(i.id):-1,m=d?f.indexOf(d.id):-1,v=(0,C.useRef)(f),x=!function(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let r=0;r{x&&g&&u(f)},[x,f,g,u]),(0,C.useEffect)(()=>{v.current=f},[f]);let w=(0,C.useMemo)(()=>({activeIndex:p,containerId:c,disabled:y,disableTransforms:b,items:f,overIndex:m,useDragOverlay:h,sortedRects:f.reduce((e,t,r)=>{let n=o.get(t);return n&&(e[r]=n),e},Array(f.length)),strategy:l}),[p,c,y.draggable,y.droppable,b,f,m,o,h,l]);return C.default.createElement(tj.Provider,{value:w},t)}let tS=e=>{let{id:t,items:r,activeIndex:n,overIndex:l}=e;return tv(r,n,l).indexOf(t)},tD=e=>{let{containerId:t,isSorting:r,wasDragging:n,index:l,items:a,newIndex:i,previousItems:s,previousContainerId:o,transition:d}=e;return!!d&&!!n&&(s===a||l!==i)&&(!!r||i!==l&&t===o)},tE={duration:200,easing:"ease"},tN="transform",tM=$.Transition.toString({property:tN,duration:0,easing:"linear"}),tR={roleDescription:"sortable"};g.Down,g.Right,g.Up,g.Left;let tO=({card:e,onDelete:t})=>{let{attributes:r,listeners:n,setNodeRef:l,transform:a,transition:i,isDragging:s}=function(e){var t,r,n,l;let{animateLayoutChanges:a=tD,attributes:i,disabled:s,data:o,getNewIndex:d=tS,id:u,strategy:c,resizeObserverConfig:h,transition:f=tE}=e,{items:g,containerId:p,activeIndex:m,disabled:v,disableTransforms:x,sortedRects:b,overIndex:y,useDragOverlay:w,strategy:j}=(0,C.useContext)(tj),k=(t=s,r=v,"boolean"==typeof t?{draggable:t,droppable:!1}:{draggable:null!=(n=null==t?void 0:t.draggable)?n:r.draggable,droppable:null!=(l=null==t?void 0:t.droppable)?l:r.droppable}),S=g.indexOf(u),D=(0,C.useMemo)(()=>({sortable:{containerId:p,index:S,items:g},...o}),[p,o,S,g]),E=(0,C.useMemo)(()=>g.slice(g.indexOf(u)),[g,u]),{rect:N,node:M,isOver:R,setNodeRef:O}=ti({id:u,data:D,disabled:k.droppable,resizeObserverConfig:{updateMeasurementsFor:E,...h}}),{active:T,activatorEvent:I,activeNodeRect:A,attributes:P,setNodeRef:_,listeners:F,isDragging:U,over:X,setActivatorNodeRef:Y,transform:K}=function(e){let{id:t,data:r,disabled:n=!1,attributes:l}=e,a=q("Draggable"),{activators:i,activatorEvent:s,active:o,activeNodeRect:d,ariaDescribedById:u,draggableNodes:c,over:h}=(0,C.useContext)(e3),{role:f=tn,roleDescription:g="draggable",tabIndex:p=0}=null!=l?l:{},m=(null==o?void 0:o.id)===t,v=(0,C.useContext)(m?te:tr),[x,b]=z(),[y,w]=z(),j=(0,C.useMemo)(()=>i.reduce((e,r)=>{let{eventName:n,handler:l}=r;return e[n]=e=>{l(e,t)},e},{}),[i,t]),k=B(r);return L(()=>(c.set(t,{id:t,key:a,node:x,activatorNode:y,data:k}),()=>{let e=c.get(t);e&&e.key===a&&c.delete(t)}),[c,t]),{active:o,activatorEvent:s,activeNodeRect:d,attributes:(0,C.useMemo)(()=>({role:f,tabIndex:p,"aria-disabled":n,"aria-pressed":!!m&&f===tn||void 0,"aria-roledescription":g,"aria-describedby":u.draggable}),[n,f,p,m,g,u.draggable]),isDragging:m,listeners:n?void 0:j,node:x,over:h,setNodeRef:b,setActivatorNodeRef:w,transform:v}}({id:u,data:D,attributes:{...tR,...i},disabled:k.draggable}),J=function(){for(var e=arguments.length,t=Array(e),r=0;re=>{t.forEach(t=>t(e))},t)}(O,_),H=!!T,V=H&&!x&&tx(m)&&tx(y),G=!w&&U,Q=G&&V?K:null,Z=V?null!=Q?Q:(null!=c?c:j)({rects:b,activeNodeRect:A,activeIndex:m,overIndex:y,index:S}):null,ee=tx(m)&&tx(y)?d({id:u,items:g,activeIndex:m,overIndex:y}):S,et=null==T?void 0:T.id,er=(0,C.useRef)({activeId:et,items:g,newIndex:ee,containerId:p}),en=g!==er.current.items,el=a({active:T,containerId:p,isDragging:U,isSorting:H,id:u,index:S,items:g,newIndex:er.current.newIndex,previousItems:er.current.items,previousContainerId:er.current.containerId,transition:f,wasDragging:null!=er.current.activeId}),ea=function(e){let{disabled:t,index:r,node:n,rect:l}=e,[a,i]=(0,C.useState)(null),s=(0,C.useRef)(r);return L(()=>{if(!t&&r!==s.current&&n.current){let e=l.current;if(e){let t=eg(n.current,{ignoreTransform:!0}),r={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(r.x||r.y)&&i(r)}}r!==s.current&&(s.current=r)},[t,r,n,l]),(0,C.useEffect)(()=>{a&&i(null)},[a]),a}({disabled:!el,index:S,node:M,rect:N});return(0,C.useEffect)(()=>{H&&er.current.newIndex!==ee&&(er.current.newIndex=ee),p!==er.current.containerId&&(er.current.containerId=p),g!==er.current.items&&(er.current.items=g)},[H,ee,p,g]),(0,C.useEffect)(()=>{if(et===er.current.activeId)return;if(null!=et&&null==er.current.activeId){er.current.activeId=et;return}let e=setTimeout(()=>{er.current.activeId=et},50);return()=>clearTimeout(e)},[et]),{active:T,activeIndex:m,attributes:P,data:D,rect:N,index:S,newIndex:ee,items:g,isOver:R,isSorting:H,isDragging:U,listeners:F,node:M,overIndex:y,over:X,setNodeRef:J,setActivatorNodeRef:Y,setDroppableNodeRef:O,setDraggableNodeRef:_,transform:null!=ea?ea:Z,transition:ea||en&&er.current.newIndex===S?tM:(!G||W(I))&&f&&(H||el)?$.Transition.toString({...f,property:tN}):void 0}}({id:e.id}),o={transform:$.Transform.toString(a),transition:i};return(0,w.jsx)("article",{ref:l,style:o,className:tm("rounded-2xl border border-transparent bg-white px-4 py-4 shadow-[0_12px_24px_rgba(3,33,71,0.08)]","transition-all duration-150",s&&"opacity-60 shadow-[0_18px_32px_rgba(3,33,71,0.16)]"),...r,...n,"data-testid":`card-${e.id}`,children:(0,w.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h4",{className:"font-display text-base font-semibold text-[var(--dark-teal)]",children:e.title}),(0,w.jsx)("p",{className:"mt-2 text-sm leading-6 text-[var(--gray-text)]",children:e.details})]}),(0,w.jsx)("button",{type:"button",onClick:()=>t(e.id),className:"rounded-full border border-transparent px-2 py-1 text-xs font-semibold text-[var(--gray-text)] transition hover:border-[var(--stroke)] hover:text-[var(--dark-teal)]","aria-label":`Delete ${e.title}`,children:"Remove"})]})})},tT={title:"",details:""},tI=({onAdd:e})=>{let[t,r]=(0,C.useState)(!1),[n,l]=(0,C.useState)(tT);return(0,w.jsx)("div",{className:"mt-4",children:t?(0,w.jsxs)("form",{onSubmit:t=>{t.preventDefault(),n.title.trim()&&(e(n.title.trim(),n.details.trim()),l(tT),r(!1))},className:"space-y-3",children:[(0,w.jsx)("input",{value:n.title,onChange:e=>l(t=>({...t,title:e.target.value})),placeholder:"Card title",className:"w-full rounded-xl border border-[var(--stroke)] bg-white px-3 py-2 text-sm font-medium text-[var(--dark-teal)] outline-none transition focus:border-[var(--accent-turquoise)]",required:!0}),(0,w.jsx)("textarea",{value:n.details,onChange:e=>l(t=>({...t,details:e.target.value})),placeholder:"Details",rows:3,className:"w-full resize-none rounded-xl border border-[var(--stroke)] bg-white px-3 py-2 text-sm text-[var(--gray-text)] outline-none transition focus:border-[var(--accent-turquoise)]"}),(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("button",{type:"submit",className:"rounded-full bg-[var(--accent-turquoise)] px-4 py-2 text-xs font-semibold uppercase tracking-wide text-white transition hover:brightness-110",children:"Add card"}),(0,w.jsx)("button",{type:"button",onClick:()=>{r(!1),l(tT)},className:"rounded-full border border-[var(--stroke)] px-3 py-2 text-xs font-semibold uppercase tracking-wide text-[var(--gray-text)] transition hover:text-[var(--dark-teal)]",children:"Cancel"})]})]}):(0,w.jsx)("button",{type:"button",onClick:()=>r(!0),className:"w-full rounded-full border border-dashed border-[var(--stroke)] px-3 py-2 text-xs font-semibold uppercase tracking-wide text-[var(--accent-turquoise)] transition hover:border-[var(--accent-turquoise)]",children:"Add a card"})})},tA=({column:e,cards:t,onRename:r,onAddCard:n,onDeleteCard:l})=>{let{setNodeRef:a,isOver:i}=ti({id:e.id});return(0,w.jsxs)("section",{ref:a,className:tm("flex min-h-[520px] flex-col rounded-3xl border border-[var(--stroke)] bg-[var(--surface-strong)] p-4 shadow-[var(--shadow)] transition",i&&"ring-2 ring-[var(--accent-turquoise)]"),"data-testid":`column-${e.id}`,children:[(0,w.jsx)("div",{className:"flex items-start justify-between gap-3",children:(0,w.jsxs)("div",{className:"w-full",children:[(0,w.jsxs)("div",{className:"flex items-center gap-3",children:[(0,w.jsx)("div",{className:"h-2 w-10 rounded-full bg-[var(--accent-turquoise)]"}),(0,w.jsxs)("span",{className:"text-xs font-semibold uppercase tracking-[0.2em] text-[var(--gray-text)]",children:[t.length," cards"]})]}),(0,w.jsx)("input",{value:e.title,onChange:t=>r(e.id,t.target.value),className:"mt-3 w-full bg-transparent font-display text-lg font-semibold text-[var(--dark-teal)] outline-none","aria-label":"Column title"})]})}),(0,w.jsxs)("div",{className:"mt-4 flex flex-1 flex-col gap-3",children:[(0,w.jsx)(tk,{items:e.cardIds,strategy:tw,children:t.map(t=>(0,w.jsx)(tO,{card:t,onDelete:t=>l(e.id,t)},t.id))}),0===t.length&&(0,w.jsx)("div",{className:"flex flex-1 items-center justify-center rounded-2xl border border-dashed border-[var(--stroke)] px-3 py-6 text-center text-xs font-semibold uppercase tracking-[0.2em] text-[var(--gray-text)]",children:"Drop a card here"})]}),(0,w.jsx)(tI,{onAdd:(t,r)=>n(e.id,t,r)})]})},tL=({card:e})=>(0,w.jsx)("article",{className:"rounded-2xl border border-transparent bg-white px-4 py-4 shadow-[0_18px_32px_rgba(3,33,71,0.16)]",children:(0,w.jsx)("div",{className:"flex items-start justify-between gap-3",children:(0,w.jsxs)("div",{children:[(0,w.jsx)("h4",{className:"font-display text-base font-semibold text-[var(--dark-teal)]",children:e.title}),(0,w.jsx)("p",{className:"mt-2 text-sm leading-6 text-[var(--gray-text)]",children:e.details})]})})}),tP=({onBoardUpdate:e})=>{let[t,r]=(0,C.useState)(!1),[n,l]=(0,C.useState)([]),[a,i]=(0,C.useState)(""),[s,o]=(0,C.useState)(!1),d=(0,C.useRef)(null);(0,C.useEffect)(()=>{d.current?.scrollIntoView({behavior:"smooth"})},[n]);let u=async t=>{t.preventDefault();let r=a.trim();if(r&&!s){i(""),l(e=>[...e,{role:"user",content:r}]),o(!0);try{let t=await fetch("/api/ai/chat",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({message:r})});if(!t.ok)throw Error("Chat request failed");let n=await t.json();l(e=>[...e,{role:"assistant",content:n.message,boardUpdated:n.board_updated}]),n.board_updated&&e&&e()}catch{l(e=>[...e,{role:"assistant",content:"Sorry, something went wrong. Please try again."}])}finally{o(!1)}}};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)("button",{onClick:()=>r(!t),className:"fixed right-6 bottom-6 z-50 flex h-12 w-12 items-center justify-center rounded-full bg-[#00CCA2] text-white shadow-lg transition hover:brightness-110","aria-label":t?"Close chat":"Open chat",children:t?(0,w.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:(0,w.jsx)("path",{d:"M5 5l10 10M15 5L5 15",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})}):(0,w.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:(0,w.jsx)("path",{d:"M17 10H3M3 10l5-5M3 10l5 5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,w.jsxs)("aside",{className:`fixed right-0 top-0 z-40 flex h-full w-96 flex-col border-l border-[var(--stroke)] bg-white shadow-2xl transition-transform duration-300 ${t?"translate-x-0":"translate-x-full"}`,children:[(0,w.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--stroke)] px-5 py-4",children:[(0,w.jsx)("h2",{className:"font-display text-lg font-semibold text-[var(--dark-teal)]",children:"AI Assistant"}),(0,w.jsx)("button",{onClick:()=>r(!1),className:"rounded-full p-1 text-[var(--gray-text)] transition hover:text-[var(--dark-teal)]","aria-label":"Close sidebar",children:(0,w.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:(0,w.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})})]}),(0,w.jsxs)("div",{className:"flex-1 overflow-y-auto px-5 py-4 space-y-4",children:[0===n.length&&(0,w.jsx)("p",{className:"text-sm text-[var(--gray-text)]",children:"Ask me to add cards, move tasks, or reorganize your board."}),n.map((e,t)=>(0,w.jsxs)("div",{className:`rounded-2xl px-4 py-3 text-sm leading-relaxed ${"user"===e.role?"ml-8 bg-[#00CCA2]/10 text-[var(--dark-teal)]":"mr-8 bg-[var(--surface)] text-[var(--dark-teal)]"}`,children:[e.boardUpdated&&(0,w.jsxs)("div",{className:"mb-2 flex items-center gap-1.5 text-xs font-semibold text-[#00CCA2]",children:[(0,w.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:(0,w.jsx)("path",{d:"M2 7l3.5 3.5L12 4",stroke:"#00CCA2",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),"Board updated"]}),e.content]},t)),s&&(0,w.jsx)("div",{className:"mr-8 rounded-2xl bg-[var(--surface)] px-4 py-3 text-sm text-[var(--gray-text)]",children:"Thinking..."}),(0,w.jsx)("div",{ref:d})]}),(0,w.jsx)("form",{onSubmit:u,className:"border-t border-[var(--stroke)] px-5 py-4",children:(0,w.jsxs)("div",{className:"flex items-center gap-3",children:[(0,w.jsx)("input",{value:a,onChange:e=>i(e.target.value),placeholder:"Ask the AI...",className:"flex-1 rounded-xl border border-[var(--stroke)] bg-white px-4 py-2.5 text-sm text-[var(--dark-teal)] outline-none transition focus:border-[#00CCA2]",disabled:s}),(0,w.jsx)("button",{type:"submit",disabled:s||!a.trim(),className:"rounded-full bg-[#00CCA2] px-4 py-2.5 text-xs font-semibold uppercase tracking-wide text-white transition hover:brightness-110 disabled:opacity-40",children:"Send"})]})})]})]})},tB={columns:[{id:"col-backlog",title:"Backlog",cardIds:["card-1","card-2"]},{id:"col-discovery",title:"Discovery",cardIds:["card-3"]},{id:"col-progress",title:"In Progress",cardIds:["card-4","card-5"]},{id:"col-review",title:"Review",cardIds:["card-6"]},{id:"col-done",title:"Done",cardIds:["card-7","card-8"]}],cards:{"card-1":{id:"card-1",title:"Align roadmap themes",details:"Draft quarterly themes with impact statements and metrics."},"card-2":{id:"card-2",title:"Gather customer signals",details:"Review support tags, sales notes, and churn feedback."},"card-3":{id:"card-3",title:"Prototype analytics view",details:"Sketch initial dashboard layout and key drill-downs."},"card-4":{id:"card-4",title:"Refine status language",details:"Standardize column labels and tone across the board."},"card-5":{id:"card-5",title:"Design card layout",details:"Add hierarchy and spacing for scanning dense lists."},"card-6":{id:"card-6",title:"QA micro-interactions",details:"Verify hover, focus, and loading states."},"card-7":{id:"card-7",title:"Ship marketing page",details:"Final copy approved and asset pack delivered."},"card-8":{id:"card-8",title:"Close onboarding sprint",details:"Document release notes and share internally."}}},t_=(e,t)=>e.some(e=>e.id===t),tz=(e,t)=>t_(e,t)?t:e.find(e=>e.cardIds.includes(t))?.id,tF=(e,t,r)=>{let n=tz(e,t),l=tz(e,r);if(!n||!l)return e;let a=e.find(e=>e.id===n),i=e.find(e=>e.id===l);if(!a||!i)return e;let s=t_(e,r);if(n===l){if(s){let r=a.cardIds.filter(e=>e!==t);return r.push(t),e.map(e=>e.id===n?{...e,cardIds:r}:e)}let l=a.cardIds.indexOf(t),i=a.cardIds.indexOf(r);if(-1===l||-1===i||l===i)return e;let o=[...a.cardIds];return o.splice(l,1),o.splice(i,0,t),e.map(e=>e.id===n?{...e,cardIds:o}:e)}let o=a.cardIds.indexOf(t);if(-1===o)return e;let d=[...a.cardIds];d.splice(o,1);let u=[...i.cardIds];if(s)u.push(t);else{let e=i.cardIds.indexOf(r),n=-1===e?u.length:e;u.splice(n,0,t)}return e.map(e=>e.id===n?{...e,cardIds:d}:e.id===l?{...e,cardIds:u}:e)};async function tU(e,t){let r=await fetch(e,{...t,credentials:"include"});if(!r.ok)throw Error(`API error: ${r.status}`);return r.json()}let tq=()=>{var e;let[t,r]=(0,C.useState)(()=>tB),[n,l]=(0,C.useState)(null),[a,i]=(0,C.useState)(!0),s=function(){for(var e=arguments.length,t=Array(e),r=0;r[...t].filter(e=>null!=e),[...t])}((e={activationConstraint:{distance:6}},(0,C.useMemo)(()=>({sensor:eF,options:null!=e?e:{}}),[eF,e]))),o=(0,C.useMemo)(()=>t.cards,[t.cards]),{logout:d}=S(),u=(0,C.useCallback)(async()=>{try{let e,t=await tU("/api/boards");r((e={},{columns:t.columns.map(t=>({id:t.id,title:t.title,cardIds:t.cards.map(t=>(e[t.id]={id:t.id,title:t.title,details:t.details},t.id))})),cards:e}))}catch{}finally{i(!1)}},[]);(0,C.useEffect)(()=>{u()},[u]);let c=async e=>{let{active:n,over:a}=e;if(l(null),!a||n.id===a.id)return;let i=n.id,s=a.id;r(e=>({...e,columns:tF(e.columns,i,s)}));let o=tF(t.columns,i,s).find(e=>e.cardIds.includes(i));if(!o)return;let d=o.cardIds.indexOf(i);try{await tU(`/api/boards/cards/${i}/move`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({column_id:o.id,position:d})})}catch{r(t)}},h=async(e,n)=>{let l=t.columns;r(t=>({...t,columns:t.columns.map(t=>t.id===e?{...t,title:n}:t)}));try{await tU(`/api/boards/columns/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:n})})}catch{r(e=>({...e,columns:l}))}},f=async(e,t,n)=>{let l,a,i=(l=Math.random().toString(36).slice(2,8),a=Date.now().toString(36),`card-${l}${a}`),s=n||"No details yet.";r(r=>({...r,cards:{...r.cards,[i]:{id:i,title:t,details:s}},columns:r.columns.map(t=>t.id===e?{...t,cardIds:[...t.cardIds,i]}:t)}));try{await tU("/api/boards/cards",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({column_id:e,id:i,title:t,details:s})})}catch{u()}},g=async(e,n)=>{r(t=>({...t,cards:Object.fromEntries(Object.entries(t.cards).filter(([e])=>e!==n)),columns:t.columns.map(t=>t.id===e?{...t,cardIds:t.cardIds.filter(e=>e!==n)}:t)}));try{await tU(`/api/boards/cards/${n}`,{method:"DELETE"})}catch{r(t)}};if(a)return(0,w.jsx)("div",{className:"flex min-h-screen items-center justify-center",children:(0,w.jsx)("p",{className:"text-sm text-[var(--gray-text)]",children:"Loading board..."})});let p=n?o[n]:null;return(0,w.jsxs)("div",{className:"relative overflow-hidden",children:[(0,w.jsx)("div",{className:"pointer-events-none absolute left-0 top-0 h-[420px] w-[420px] -translate-x-1/3 -translate-y-1/3 rounded-full bg-[radial-gradient(circle,_rgba(32,157,215,0.25)_0%,_rgba(32,157,215,0.05)_55%,_transparent_70%)]"}),(0,w.jsx)("div",{className:"pointer-events-none absolute bottom-0 right-0 h-[520px] w-[520px] translate-x-1/4 translate-y-1/4 rounded-full bg-[radial-gradient(circle,_rgba(117,57,145,0.18)_0%,_rgba(117,57,145,0.05)_55%,_transparent_75%)]"}),(0,w.jsxs)("main",{className:"relative mx-auto flex min-h-screen max-w-[1500px] flex-col gap-10 px-6 pb-16 pt-12",children:[(0,w.jsxs)("header",{className:"flex flex-col gap-6 rounded-[32px] border border-[var(--stroke)] bg-white/80 p-8 shadow-[var(--shadow)] backdrop-blur",children:[(0,w.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-6",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.35em] text-[var(--gray-text)]",children:"Single Board Kanban"}),(0,w.jsx)("h1",{className:"mt-3 font-display text-4xl font-semibold text-[var(--dark-teal)]",children:"Kanban Studio"}),(0,w.jsx)("p",{className:"mt-3 max-w-xl text-sm leading-6 text-[var(--gray-text)]",children:"Keep momentum visible. Rename columns, drag cards between stages, and capture quick notes without getting buried in settings."})]}),(0,w.jsxs)("div",{className:"rounded-2xl border border-[var(--stroke)] bg-[var(--surface)] px-5 py-4",children:[(0,w.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.25em] text-[var(--gray-text)]",children:"Focus"}),(0,w.jsx)("p",{className:"mt-2 text-lg font-semibold text-[var(--accent-turquoise)]",children:"One board. Five columns. Zero clutter."}),(0,w.jsx)("button",{onClick:d,className:"mt-3 rounded-full border border-[var(--stroke)] px-3 py-1 text-xs font-semibold uppercase tracking-wide text-[var(--gray-text)] transition hover:text-[var(--dark-teal)]",children:"Sign out"})]})]}),(0,w.jsx)("div",{className:"flex flex-wrap items-center gap-4",children:t.columns.map(e=>(0,w.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-[var(--stroke)] px-4 py-2 text-xs font-semibold uppercase tracking-[0.2em] text-[var(--dark-teal)]",children:[(0,w.jsx)("span",{className:"h-2 w-2 rounded-full bg-[var(--accent-turquoise)]"}),e.title]},e.id))})]}),(0,w.jsxs)(tt,{sensors:s,collisionDetection:eo,onDragStart:e=>{l(e.active.id)},onDragEnd:c,children:[(0,w.jsx)("section",{className:"grid gap-6 lg:grid-cols-5",children:t.columns.map(e=>(0,w.jsx)(tA,{column:e,cards:e.cardIds.map(e=>t.cards[e]),onRename:h,onAddCard:f,onDeleteCard:g},e.id))}),(0,w.jsx)(tp,{children:p?(0,w.jsx)("div",{className:"w-[260px]",children:(0,w.jsx)(tL,{card:p})}):null})]})]}),(0,w.jsx)(tP,{onBoardUpdate:u})]})},tX=()=>{let{login:e}=S(),[t,r]=(0,C.useState)(""),[n,l]=(0,C.useState)(""),[a,i]=(0,C.useState)(""),[s,o]=(0,C.useState)(!1),d=async r=>{r.preventDefault(),i(""),o(!0);try{await e(t,n)}catch{i("Invalid username or password")}finally{o(!1)}};return(0,w.jsx)("div",{className:"flex min-h-screen items-center justify-center bg-[var(--surface)]",children:(0,w.jsxs)("form",{onSubmit:d,className:"w-full max-w-sm rounded-3xl border border-[var(--stroke)] bg-white p-8 shadow-[var(--shadow)]",children:[(0,w.jsx)("h1",{className:"font-display text-2xl font-semibold text-[var(--dark-teal)]",children:"Sign in"}),(0,w.jsx)("p",{className:"mt-2 text-sm text-[var(--gray-text)]",children:"Enter your credentials to access the board."}),a&&(0,w.jsx)("p",{className:"mt-4 rounded-xl bg-red-50 px-4 py-2 text-sm text-red-600",children:a}),(0,w.jsxs)("div",{className:"mt-6 space-y-4",children:[(0,w.jsx)("input",{value:t,onChange:e=>r(e.target.value),placeholder:"Username",className:"w-full rounded-xl border border-[var(--stroke)] bg-white px-4 py-3 text-sm font-medium text-[var(--dark-teal)] outline-none transition focus:border-[#00CCA2]",required:!0}),(0,w.jsx)("input",{value:n,onChange:e=>l(e.target.value),type:"password",placeholder:"Password",className:"w-full rounded-xl border border-[var(--stroke)] bg-white px-4 py-3 text-sm font-medium text-[var(--dark-teal)] outline-none transition focus:border-[#00CCA2]",required:!0})]}),(0,w.jsx)("button",{type:"submit",disabled:s,className:"mt-6 w-full rounded-full bg-[#00CCA2] px-4 py-3 text-sm font-semibold uppercase tracking-wide text-white transition hover:brightness-110 disabled:opacity-50",children:s?"Signing in...":"Sign in"})]})})},tY=()=>{let{username:e,loading:t}=S();return t?(0,w.jsx)("div",{className:"flex min-h-screen items-center justify-center",children:(0,w.jsx)("p",{className:"text-sm text-[var(--gray-text)]",children:"Loading..."})}):e?(0,w.jsx)(tq,{}):(0,w.jsx)(tX,{})};function tK(){return(0,w.jsx)(k,{children:(0,w.jsx)(tY,{})})}e.s(["default",()=>tK],52683)}]); \ No newline at end of file diff --git a/backend/static/_next/static/chunks/454889a9dcbe1f52.js b/backend/static/_next/static/chunks/454889a9dcbe1f52.js new file mode 100644 index 00000000..5f69decc --- /dev/null +++ b/backend/static/_next/static/chunks/454889a9dcbe1f52.js @@ -0,0 +1,5 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,12718,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"InvariantError",{enumerable:!0,get:function(){return n}});class n extends Error{constructor(e,t){super(`Invariant: ${e.endsWith(".")?e:e+"."} This is a bug in Next.js.`,t),this.name="InvariantError"}}},55682,(e,t,r)=>{"use strict";r._=function(e){return e&&e.__esModule?e:{default:e}}},32061,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={BailoutToCSRError:function(){return o},isBailoutToCSRError:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u="BAILOUT_TO_CLIENT_SIDE_RENDERING";class o extends Error{constructor(e){super(`Bail out to client-side rendering: ${e}`),this.reason=e,this.digest=u}}function l(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===u}},64893,(e,t,r)=>{"use strict";var n=e.r(74080),a={stream:!0},u=Object.prototype.hasOwnProperty;function o(t){var r=e.r(t);return"function"!=typeof r.then||"fulfilled"===r.status?null:(r.then(function(e){r.status="fulfilled",r.value=e},function(e){r.status="rejected",r.reason=e}),r)}var l=new WeakSet,i=new WeakSet;function s(){}function c(t){for(var r=t[1],n=[],a=0;af||35===f||114===f||120===f?(p=f,f=3,s++):(p=0,f=3);continue;case 2:44===(_=i[s++])?f=4:h=h<<4|(96<_?_-87:_-48);continue;case 3:_=i.indexOf(10,s);break;case 4:(_=s+h)>i.length&&(_=-1)}var v=i.byteOffset+s;if(-1<_)h=new Uint8Array(i.buffer,v,_-s),98===p?J(e,l,_===g?h:h.slice()):function(e,t,r,n,u,o){switch(n){case 65:J(e,r,ea(u,o).buffer);return;case 79:eu(e,r,u,o,Int8Array,1);return;case 111:J(e,r,0===u.length?o:ea(u,o));return;case 85:eu(e,r,u,o,Uint8ClampedArray,1);return;case 83:eu(e,r,u,o,Int16Array,2);return;case 115:eu(e,r,u,o,Uint16Array,2);return;case 76:eu(e,r,u,o,Int32Array,4);return;case 108:eu(e,r,u,o,Uint32Array,4);return;case 71:eu(e,r,u,o,Float32Array,4);return;case 103:eu(e,r,u,o,Float64Array,8);return;case 77:eu(e,r,u,o,BigInt64Array,8);return;case 109:eu(e,r,u,o,BigUint64Array,8);return;case 86:eu(e,r,u,o,DataView,1);return}t=e._stringDecoder;for(var l="",i=0;i{"use strict";t.exports=e.r(64893)},35326,(e,t,r)=>{"use strict";t.exports=e.r(21413)},54394,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={HTTPAccessErrorStatus:function(){return u},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return l},getAccessFallbackErrorTypeByStatus:function(){return c},getAccessFallbackHTTPStatus:function(){return s},isHTTPAccessFallbackError:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},o=new Set(Object.values(u)),l="NEXT_HTTP_ERROR_FALLBACK";function i(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===l&&o.has(Number(r))}function s(e){return Number(e.digest.split(";")[1])}function c(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},76963,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RedirectStatusCode",{enumerable:!0,get:function(){return a}});var n,a=((n={})[n.SeeOther=303]="SeeOther",n[n.TemporaryRedirect=307]="TemporaryRedirect",n[n.PermanentRedirect=308]="PermanentRedirect",n);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68391,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={REDIRECT_ERROR_CODE:function(){return l},RedirectType:function(){return i},isRedirectError:function(){return s}};for(var u in a)Object.defineProperty(r,u,{enumerable:!0,get:a[u]});let o=e.r(76963),l="NEXT_REDIRECT";var i=((n={}).push="push",n.replace="replace",n);function s(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,n]=t,a=t.slice(2,-2).join(";"),u=Number(t.at(-2));return r===l&&("replace"===n||"push"===n)&&"string"==typeof a&&!isNaN(u)&&u in o.RedirectStatusCode}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},65713,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isNextRouterError",{enumerable:!0,get:function(){return u}});let n=e.r(54394),a=e.r(68391);function u(e){return(0,a.isRedirectError)(e)||(0,n.isHTTPAccessFallbackError)(e)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},3680,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return a}});class n extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class a extends URLSearchParams{append(){throw new n}delete(){throw new n}set(){throw new n}sort(){throw new n}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},61994,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={NavigationPromisesContext:function(){return c},PathParamsContext:function(){return s},PathnameContext:function(){return i},ReadonlyURLSearchParams:function(){return o.ReadonlyURLSearchParams},SearchParamsContext:function(){return l},createDevToolsInstrumentedPromise:function(){return f}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(71645),o=e.r(3680),l=(0,u.createContext)(null),i=(0,u.createContext)(null),s=(0,u.createContext)(null),c=(0,u.createContext)(null);function f(e,t){let r=Promise.resolve(t);return r.status="fulfilled",r.value=t,r.displayName=`${e} (SSR)`,r}},45955,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workUnitAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},21768,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_HEADER:function(){return o},FLIGHT_HEADERS:function(){return h},NEXT_ACTION_NOT_FOUND_HEADER:function(){return R},NEXT_ACTION_REVALIDATED_HEADER:function(){return S},NEXT_DID_POSTPONE_HEADER:function(){return _},NEXT_HMR_REFRESH_HASH_COOKIE:function(){return f},NEXT_HMR_REFRESH_HEADER:function(){return c},NEXT_HTML_REQUEST_ID_HEADER:function(){return P},NEXT_IS_PRERENDER_HEADER:function(){return m},NEXT_REQUEST_ID_HEADER:function(){return E},NEXT_REWRITTEN_PATH_HEADER:function(){return v},NEXT_REWRITTEN_QUERY_HEADER:function(){return b},NEXT_ROUTER_PREFETCH_HEADER:function(){return i},NEXT_ROUTER_SEGMENT_PREFETCH_HEADER:function(){return s},NEXT_ROUTER_STALE_TIME_HEADER:function(){return g},NEXT_ROUTER_STATE_TREE_HEADER:function(){return l},NEXT_RSC_UNION_QUERY:function(){return y},NEXT_URL:function(){return d},RSC_CONTENT_TYPE_HEADER:function(){return p},RSC_HEADER:function(){return u}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u="rsc",o="next-action",l="next-router-state-tree",i="next-router-prefetch",s="next-router-segment-prefetch",c="next-hmr-refresh",f="__next_hmr_refresh_hash__",d="next-url",p="text/x-component",h=[u,l,i,c,s],y="_rsc",g="x-nextjs-stale-time",_="x-nextjs-postponed",v="x-nextjs-rewritten-path",b="x-nextjs-rewritten-query",m="x-nextjs-prerender",R="x-nextjs-action-not-found",E="x-nextjs-request-id",P="x-nextjs-html-request-id",S="x-action-revalidated";("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},62141,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getCacheSignal:function(){return g},getDraftModeProviderForCacheScope:function(){return y},getHmrRefreshHash:function(){return d},getPrerenderResumeDataCache:function(){return c},getRenderResumeDataCache:function(){return f},getRuntimeStagePromise:function(){return _},getServerComponentsHmrCache:function(){return h},isHmrRefresh:function(){return p},throwForMissingRequestStore:function(){return i},throwInvariantForMissingStore:function(){return s},workUnitAsyncStorage:function(){return u.workUnitAsyncStorageInstance}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(45955),o=e.r(21768),l=e.r(12718);function i(e){throw Object.defineProperty(Error(`\`${e}\` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E251",enumerable:!1,configurable:!0})}function s(){throw Object.defineProperty(new l.InvariantError("Expected workUnitAsyncStorage to have a store."),"__NEXT_ERROR_CODE",{value:"E696",enumerable:!1,configurable:!0})}function c(e){switch(e.type){case"prerender":case"prerender-runtime":case"prerender-ppr":case"prerender-client":return e.prerenderResumeDataCache;case"request":if(e.prerenderResumeDataCache)return e.prerenderResumeDataCache;case"prerender-legacy":case"cache":case"private-cache":case"unstable-cache":return null;default:return e}}function f(e){switch(e.type){case"request":case"prerender":case"prerender-runtime":case"prerender-client":if(e.renderResumeDataCache)return e.renderResumeDataCache;case"prerender-ppr":return e.prerenderResumeDataCache??null;case"cache":case"private-cache":case"unstable-cache":case"prerender-legacy":return null;default:return e}}function d(e,t){if(e.dev)switch(t.type){case"cache":case"private-cache":case"prerender":case"prerender-runtime":return t.hmrRefreshHash;case"request":var r;return null==(r=t.cookies.get(o.NEXT_HMR_REFRESH_HASH_COOKIE))?void 0:r.value}}function p(e,t){if(e.dev)switch(t.type){case"cache":case"private-cache":case"request":return t.isHmrRefresh??!1}return!1}function h(e,t){if(e.dev)switch(t.type){case"cache":case"private-cache":case"request":return t.serverComponentsHmrCache}}function y(e,t){if(e.isDraftMode)switch(t.type){case"cache":case"private-cache":case"unstable-cache":case"prerender-runtime":case"request":return t.draftMode}}function g(e){switch(e.type){case"prerender":case"prerender-client":case"prerender-runtime":return e.cacheSignal;case"request":if(e.cacheSignal)return e.cacheSignal;case"prerender-ppr":case"prerender-legacy":case"cache":case"private-cache":case"unstable-cache":return null;default:return e}}function _(e){switch(e.type){case"prerender-runtime":case"private-cache":return e.runtimeStagePromise;case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"unstable-cache":return null;default:return e}}},90373,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useUntrackedPathname",{enumerable:!0,get:function(){return u}});let n=e.r(71645),a=e.r(61994);function u(){return!function(){if("u"0}}return!1}()?(0,n.useContext)(a.PathnameContext):null}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},51191,(e,t,r)=>{"use strict";function n(e,t=!0){return e.pathname+e.search+(t?e.hash:"")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createHrefFromUrl",{enumerable:!0,get:function(){return n}}),("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},78377,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={handleHardNavError:function(){return o},useNavFailureHandler:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});e.r(71645);let u=e.r(51191);function o(e){return!!(e&&"u">typeof window)&&!!window.next.__pendingUrl&&(0,u.createHrefFromUrl)(new URL(window.location.href))!==(0,u.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function l(){}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},26935,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HTML_LIMITED_BOT_UA_RE",{enumerable:!0,get:function(){return n}});let n=/[\w-]+-Google|Google-[\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight/i},82604,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={HTML_LIMITED_BOT_UA_RE:function(){return u.HTML_LIMITED_BOT_UA_RE},HTML_LIMITED_BOT_UA_RE_STRING:function(){return l},getBotType:function(){return c},isBot:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(26935),o=/Googlebot(?!-)|Googlebot$/i,l=u.HTML_LIMITED_BOT_UA_RE.source;function i(e){return u.HTML_LIMITED_BOT_UA_RE.test(e)}function s(e){return o.test(e)||i(e)}function c(e){return o.test(e)?"dom":i(e)?"html":void 0}},72383,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ErrorBoundary:function(){return h},ErrorBoundaryHandler:function(){return p}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(55682),o=e.r(43476),l=u._(e.r(71645)),i=e.r(90373),s=e.r(65713);e.r(78377);let c=e.r(12354),f=e.r(82604),d="u">typeof window&&(0,f.isBot)(window.navigator.userAgent);class p extends l.default.Component{constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}static getDerivedStateFromError(e){if((0,s.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){let{error:r}=t;return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error&&!d?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(c.HandleISRError,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,o.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}}function h({errorComponent:e,errorStyles:t,errorScripts:r,children:n}){let a=(0,i.useUntrackedPathname)();return e?(0,o.jsx)(p,{pathname:a,errorComponent:e,errorStyles:t,errorScripts:r,children:n}):(0,o.jsx)(o.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},88540,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={ACTION_HMR_REFRESH:function(){return c},ACTION_NAVIGATE:function(){return l},ACTION_REFRESH:function(){return o},ACTION_RESTORE:function(){return i},ACTION_SERVER_ACTION:function(){return f},ACTION_SERVER_PATCH:function(){return s},PrefetchKind:function(){return d}};for(var u in a)Object.defineProperty(r,u,{enumerable:!0,get:a[u]});let o="refresh",l="navigate",i="restore",s="server-patch",c="hmr-refresh",f="server-action";var d=((n={}).AUTO="auto",n.FULL="full",n);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90809,(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}r._=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var a={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var l=u?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(a,o,l):a[o]=e[o]}return a.default=e,r&&r.set(e,a),a}},64245,(e,t,r)=>{"use strict";function n(e){return null!==e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isThenable",{enumerable:!0,get:function(){return n}})},41538,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={dispatchAppRouterAction:function(){return i},useActionQueue:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(90809)._(e.r(71645)),o=e.r(64245),l=null;function i(e){if(null===l)throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0});l(e)}function s(e){let[t,r]=u.default.useState(e.state);l=t=>e.dispatch(t,r);let n=(0,u.useMemo)(()=>t,[t]);return(0,o.isThenable)(n)?(0,u.use)(n):n}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},32120,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"callServer",{enumerable:!0,get:function(){return o}});let n=e.r(71645),a=e.r(88540),u=e.r(41538);async function o(e,t){return new Promise((r,o)=>{(0,n.startTransition)(()=>{(0,u.dispatchAppRouterAction)({type:a.ACTION_SERVER_ACTION,actionId:e,actionArgs:t,resolve:r,reject:o})})})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},92245,(e,t,r)=>{"use strict";let n;Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"findSourceMapURL",{enumerable:!0,get:function(){return n}});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},3372,(e,t,r)=>{"use strict";function n(e){return e.startsWith("/")?e:`/${e}`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureLeadingSlash",{enumerable:!0,get:function(){return n}})},13258,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DEFAULT_SEGMENT_KEY:function(){return f},NOT_FOUND_SEGMENT_KEY:function(){return d},PAGE_SEGMENT_KEY:function(){return c},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return s},getSegmentValue:function(){return u},getSelectedLayoutSegmentPath:function(){return function e(t,r,n=!0,a=[]){let o;if(n)o=t[1][r];else{let e=t[1];o=e.children??Object.values(e)[0]}if(!o)return a;let l=u(o[0]);return!l||l.startsWith(c)?a:(a.push(l),e(o,r,!1,a))}},isGroupSegment:function(){return o},isParallelRouteSegment:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function u(e){return Array.isArray(e)?e[1]:e}function o(e){return"("===e[0]&&e.endsWith(")")}function l(e){return e.startsWith("@")&&"@children"!==e}function i(e,t){if(e.includes(c)){let e=JSON.stringify(t);return"{}"!==e?c+"?"+e:c}return e}function s(e,t){if(!e||0===e.length)return null;let r="children"===t?e[0]:e[e.length-1];return r===f?null:r}let c="__PAGE__",f="__DEFAULT__",d="/_not-found"},74180,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={normalizeAppPath:function(){return l},normalizeRscURL:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(3372),o=e.r(13258);function l(e){return(0,u.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:`${e}/${t}`,""))}function i(e){return e.replace(/\.rsc($|\?)/,"$1")}},91463,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return i},isInterceptionRouteAppPath:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(74180),o=["(..)(..)","(.)","(..)","(...)"];function l(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function i(e){let t,r,n;for(let a of e.split("/"))if(r=o.find(e=>a.startsWith(e))){[t,n]=e.split(r,2);break}if(!t||!r||!n)throw Object.defineProperty(Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`),"__NEXT_ERROR_CODE",{value:"E269",enumerable:!1,configurable:!0});switch(t=(0,u.normalizeAppPath)(t),r){case"(.)":n="/"===t?`/${n}`:t+"/"+n;break;case"(..)":if("/"===t)throw Object.defineProperty(Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`),"__NEXT_ERROR_CODE",{value:"E207",enumerable:!1,configurable:!0});n=t.split("/").slice(0,-1).concat(n).join("/");break;case"(...)":n="/"+n;break;case"(..)(..)":let a=t.split("/");if(a.length<=2)throw Object.defineProperty(Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`),"__NEXT_ERROR_CODE",{value:"E486",enumerable:!1,configurable:!0});n=a.slice(0,-2).concat(n).join("/");break;default:throw Object.defineProperty(Error("Invariant: unexpected marker"),"__NEXT_ERROR_CODE",{value:"E112",enumerable:!1,configurable:!0})}return{interceptingRoute:t,interceptedRoute:n}}},56019,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"matchSegment",{enumerable:!0,get:function(){return n}});let n=(e,t)=>"string"==typeof e?"string"==typeof t&&e===t:"string"!=typeof t&&e[0]===t[0]&&e[1]===t[1];("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},34727,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={computeChangedPath:function(){return f},extractPathFromFlightRouterState:function(){return c},getSelectedParams:function(){return function e(t,r={}){for(let n of Object.values(t[1])){let t=n[0],a=Array.isArray(t),u=a?t[1]:t;!u||u.startsWith(o.PAGE_SEGMENT_KEY)||(a&&("c"===t[2]||"oc"===t[2])?r[t[0]]=t[1].split("/"):a&&(r[t[0]]=t[1]),r=e(n,r))}return r}}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(91463),o=e.r(13258),l=e.r(56019),i=e=>"string"==typeof e?"children"===e?"":e:e[1];function s(e){return e.reduce((e,t)=>{let r;return""===(t="/"===(r=t)[0]?r.slice(1):r)||(0,o.isGroupSegment)(t)?e:`${e}/${t}`},"")||"/"}function c(e){let t=Array.isArray(e[0])?e[0][1]:e[0];if(t===o.DEFAULT_SEGMENT_KEY||u.INTERCEPTION_ROUTE_MARKERS.some(e=>t.startsWith(e)))return;if(t.startsWith(o.PAGE_SEGMENT_KEY))return"";let r=[i(t)],n=e[1]??{},a=n.children?c(n.children):void 0;if(void 0!==a)r.push(a);else for(let[e,t]of Object.entries(n)){if("children"===e)continue;let n=c(t);void 0!==n&&r.push(n)}return s(r)}function f(e,t){let r=function e(t,r){let[n,a]=t,[o,s]=r,f=i(n),d=i(o);if(u.INTERCEPTION_ROUTE_MARKERS.some(e=>f.startsWith(e)||d.startsWith(e)))return"";if(!(0,l.matchSegment)(n,o))return c(r)??"";for(let t in a)if(s[t]){let r=e(a[t],s[t]);if(null!==r)return`${i(o)}/${r}`}return null}(e,t);return null==r||"/"===r?r:s(r.split("/"))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},47442,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"handleMutable",{enumerable:!0,get:function(){return u}});let n=e.r(34727);function a(e){return void 0!==e}function u(e,t){let r=t.shouldScroll??!0,u=e.previousNextUrl,o=e.nextUrl;if(a(t.patchedTree)){let r=(0,n.computeChangedPath)(e.tree,t.patchedTree);r?(u=o,o=r):o||(o=e.canonicalUrl)}return{canonicalUrl:t.canonicalUrl??e.canonicalUrl,renderedSearch:t.renderedSearch??e.renderedSearch,pushRef:{pendingPush:a(t.pendingPush)?t.pendingPush:e.pushRef.pendingPush,mpaNavigation:a(t.mpaNavigation)?t.mpaNavigation:e.pushRef.mpaNavigation,preserveCustomHistoryState:a(t.preserveCustomHistoryState)?t.preserveCustomHistoryState:e.pushRef.preserveCustomHistoryState},focusAndScrollRef:{apply:!!r&&(!!a(t?.scrollableSegments)||e.focusAndScrollRef.apply),onlyHashChange:t.onlyHashChange||!1,hashFragment:r?t.hashFragment&&""!==t.hashFragment?decodeURIComponent(t.hashFragment.slice(1)):e.focusAndScrollRef.hashFragment:null,segmentPaths:r?t?.scrollableSegments??e.focusAndScrollRef.segmentPaths:[]},cache:t.cache?t.cache:e.cache,tree:a(t.patchedTree)?t.patchedTree:e.tree,nextUrl:o,previousNextUrl:u,debugInfo:t.collectedDebugInfo??null}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},67764,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={HEAD_REQUEST_KEY:function(){return l},ROOT_SEGMENT_REQUEST_KEY:function(){return o},appendSegmentRequestKeyPart:function(){return s},convertSegmentPathToStaticExportFilename:function(){return d},createSegmentRequestKeyPart:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(13258),o="",l="/_head";function i(e){if("string"==typeof e)return e.startsWith(u.PAGE_SEGMENT_KEY)?u.PAGE_SEGMENT_KEY:"/_not-found"===e?"_not-found":f(e);let t=e[0];return"$"+e[2]+"$"+f(t)}function s(e,t,r){return e+"/"+("children"===t?r:`@${f(t)}/${r}`)}let c=/^[a-zA-Z0-9\-_@]+$/;function f(e){return c.test(e)?e:"!"+btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function d(e){return`__next${e.replace(/\//g,".")}.txt`}},33906,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={doesStaticSegmentAppearInURL:function(){return f},getCacheKeyForDynamicParam:function(){return d},getParamValueFromCacheKey:function(){return h},getRenderedPathname:function(){return s},getRenderedSearch:function(){return i},parseDynamicParamFromURLPart:function(){return c},urlSearchParamsToParsedUrlQuery:function(){return y},urlToUrlWithoutFlightMarker:function(){return p}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(13258),o=e.r(67764),l=e.r(21768);function i(e){let t=e.headers.get(l.NEXT_REWRITTEN_QUERY_HEADER);return null!==t?""===t?"":"?"+t:p(new URL(e.url)).search}function s(e){return e.headers.get(l.NEXT_REWRITTEN_PATH_HEADER)??p(new URL(e.url)).pathname}function c(e,t,r){switch(e){case"c":return rencodeURIComponent(e)):[];case"ci(..)(..)":case"ci(.)":case"ci(..)":case"ci(...)":{let n=e.length-2;return r0===t?encodeURIComponent(e.slice(n)):encodeURIComponent(e)):[]}case"oc":return rencodeURIComponent(e)):null;case"d":if(r>=t.length)return"";return encodeURIComponent(t[r]);case"di(..)(..)":case"di(.)":case"di(..)":case"di(...)":{let n=e.length-2;if(r>=t.length)return"";return encodeURIComponent(t[r].slice(n))}default:return""}}function f(e){return!(e===o.ROOT_SEGMENT_REQUEST_KEY||e.startsWith(u.PAGE_SEGMENT_KEY)||"("===e[0]&&e.endsWith(")"))&&e!==u.DEFAULT_SEGMENT_KEY&&"/_not-found"!==e}function d(e,t){return"string"==typeof e?(0,u.addSearchParamsIfPageSegment)(e,Object.fromEntries(new URLSearchParams(t))):null===e?"":e.join("/")}function p(e){let t=new URL(e);if(t.searchParams.delete(l.NEXT_RSC_UNION_QUERY),t.pathname.endsWith(".txt")){let{pathname:e}=t,r=e.endsWith("/index.txt")?10:4;t.pathname=e.slice(0,-r)}return t}function h(e,t){return"c"===t||"oc"===t?e.split("/"):e}function y(e){let t={};for(let[r,n]of e.entries())void 0===t[r]?t[r]=n:Array.isArray(t[r])?t[r].push(n):t[r]=[t[r],n];return t}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},50590,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createInitialRSCPayloadFromFallbackPrerender:function(){return s},getFlightDataPartsFromPath:function(){return i},getNextFlightSegmentPath:function(){return c},normalizeFlightData:function(){return f},prepareFlightRouterStateForRequest:function(){return d}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(13258),o=e.r(33906),l=e.r(51191);function i(e){let[t,r,n,a]=e.slice(-4),u=e.slice(0,-4);return{pathToSegment:u.slice(0,-1),segmentPath:u,segment:u[u.length-1]??"",tree:t,seedData:r,head:n,isHeadPartial:a,isRootRender:4===e.length}}function s(e,t){let r=(0,o.getRenderedPathname)(e),n=(0,o.getRenderedSearch)(e),a=(0,l.createHrefFromUrl)(new URL(location.href)),u=t.f[0],i=u[0];return{b:t.b,c:a.split("/"),q:n,i:t.i,f:[[function e(t,r,n,a){let u,l,i=t[0];if("string"==typeof i)u=i,l=(0,o.doesStaticSegmentAppearInURL)(i);else{let e=i[0],t=i[2],s=(0,o.parseDynamicParamFromURLPart)(t,n,a);u=[e,(0,o.getCacheKeyForDynamicParam)(s,r),t],l=!0}let s=l?a+1:a,c=t[1],f={};for(let t in c){let a=c[t];f[t]=e(a,r,n,s)}return[u,f,null,t[3],t[4]]}(i,n,r.split("/").filter(e=>""!==e),0),u[1],u[2],u[2]]],m:t.m,G:t.G,S:t.S}}function c(e){return e.slice(2)}function f(e){return"string"==typeof e?e:e.map(e=>i(e))}function d(e,t){return t?encodeURIComponent(JSON.stringify(e)):encodeURIComponent(JSON.stringify(function e(t){var r,n;let[a,o,l,i,s,c]=t,f="string"==typeof(r=a)&&r.startsWith(u.PAGE_SEGMENT_KEY+"?")?u.PAGE_SEGMENT_KEY:r,d={};for(let[t,r]of Object.entries(o))d[t]=e(r);let p=[f,d,null,(n=i)&&"refresh"!==n?i:null];return void 0!==s&&(p[4]=s),void 0!==c&&(p[5]=c),p}(e)))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},14297,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getAppBuildId:function(){return l},setAppBuildId:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u="";function o(e){u=e}function l(){return u}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},19921,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={djb2Hash:function(){return u},hexHash:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function u(e){let t=5381;for(let r=0;r>>0}function o(e){return u(e).toString(36).slice(0,5)}},86051,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"computeCacheBustingSearchParam",{enumerable:!0,get:function(){return a}});let n=e.r(19921);function a(e,t,r,a){return(void 0===e||"0"===e)&&void 0===t&&void 0===r&&void 0===a?"":(0,n.hexHash)([e||"0",t||"0",r||"0",a||"0"].join(","))}},88093,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={setCacheBustingSearchParam:function(){return l},setCacheBustingSearchParamWithHash:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(86051),o=e.r(21768),l=(e,t)=>{i(e,(0,u.computeCacheBustingSearchParam)(t[o.NEXT_ROUTER_PREFETCH_HEADER],t[o.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER],t[o.NEXT_ROUTER_STATE_TREE_HEADER],t[o.NEXT_URL]))},i=(e,t)=>{let r=e.search,n=(r.startsWith("?")?r.slice(1):r).split("&").filter(e=>e&&!e.startsWith(`${o.NEXT_RSC_UNION_QUERY}=`));t.length>0?n.push(`${o.NEXT_RSC_UNION_QUERY}=${t}`):n.push(`${o.NEXT_RSC_UNION_QUERY}`),e.search=n.length?`?${n.join("&")}`:""};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},43369,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getDeploymentId:function(){return u},getDeploymentIdQueryOrEmptyString:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function u(){return!1}function o(){return""}},87288,(e,t,r)=>{"use strict";let n;Object.defineProperty(r,"__esModule",{value:!0});var a={createFetch:function(){return m},createFromNextReadableStream:function(){return R},fetchServerResponse:function(){return b}};for(var u in a)Object.defineProperty(r,u,{enumerable:!0,get:a[u]});let o=e.r(35326),l=e.r(21768),i=e.r(32120),s=e.r(92245),c=e.r(50590),f=e.r(14297),d=e.r(88093),p=e.r(33906),h=e.r(43369),y=o.createFromReadableStream,g=o.createFromFetch;function _(e){return(0,p.urlToUrlWithoutFlightMarker)(new URL(e,location.origin)).toString()}let v=!1;async function b(e,t){let{flightRouterState:r,nextUrl:n}=t,a={[l.RSC_HEADER]:"1",[l.NEXT_ROUTER_STATE_TREE_HEADER]:(0,c.prepareFlightRouterStateForRequest)(r,t.isHmrRefresh)};n&&(a[l.NEXT_URL]=n);let u=e;try{(e=new URL(e)).pathname.endsWith("/")?e.pathname+="index.txt":e.pathname+=".txt";let t=await m(e,a,"auto",!0),r=(0,p.urlToUrlWithoutFlightMarker)(new URL(t.url)),n=t.redirected?r:u,o=t.headers.get("content-type")||"",i=!!t.headers.get("vary")?.includes(l.NEXT_URL),s=!!t.headers.get(l.NEXT_DID_POSTPONE_HEADER),d=t.headers.get(l.NEXT_ROUTER_STALE_TIME_HEADER),h=null!==d?1e3*parseInt(d,10):-1,y=o.startsWith(l.RSC_CONTENT_TYPE_HEADER);if(y||(y=o.startsWith("text/plain")),!y||!t.ok||!t.body)return e.hash&&(r.hash=e.hash),_(r.toString());let g=t.flightResponse;if(null===g){let e,r=s?(e=t.body.getReader(),new ReadableStream({async pull(t){for(;;){let{done:r,value:n}=await e.read();if(!r){t.enqueue(n);continue}return}}})):t.body;g=R(r,a)}let v=await g;if((0,f.getAppBuildId)()!==v.b)return _(t.url);let b=(0,c.normalizeFlightData)(v.f);if("string"==typeof b)return _(b);return{flightData:b,canonicalUrl:n,renderedSearch:(0,p.getRenderedSearch)(t),couldBeIntercepted:i,prerendered:v.S,postponed:s,staleTime:h,debugInfo:g._debugInfo??null}}catch(e){return v||console.error(`Failed to fetch RSC payload for ${u}. Falling back to browser navigation.`,e),u.toString()}}async function m(e,t,r,a,u){var o,c;let f=(0,h.getDeploymentId)();f&&(t["x-deployment-id"]=f);let p=new URL(e);(0,d.setCacheBustingSearchParam)(p,t);let y=fetch(p,{credentials:"same-origin",headers:t,priority:r||void 0,signal:u}),_=a?(o=y,c=t,g(o,{callServer:i.callServer,findSourceMapURL:s.findSourceMapURL,debugChannel:n&&n(c)})):null,v=await y,b=v.redirected,m=new URL(v.url,p);return m.searchParams.delete(l.NEXT_RSC_UNION_QUERY),{url:m.href,redirected:b,ok:v.ok,headers:v.headers,body:v.body,status:v.status,flightResponse:_}}function R(e,t){return y(e,{callServer:i.callServer,findSourceMapURL:s.findSourceMapURL,debugChannel:n&&n(t)})}"u">typeof window&&(window.addEventListener("pagehide",()=>{v=!0}),window.addEventListener("pageshow",()=>{v=!1})),("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},70725,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRouterCacheKey",{enumerable:!0,get:function(){return a}});let n=e.r(13258);function a(e,t=!1){return Array.isArray(e)?`${e[0]}|${e[1]}|${e[2]}`:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},48919,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isNavigatingToNewRootLayout",{enumerable:!0,get:function(){return function e(t,r){let n=t[0],a=r[0];if(Array.isArray(n)&&Array.isArray(a)){if(n[0]!==a[0]||n[2]!==a[2])return!0}else if(n!==a)return!0;if(t[4])return!r[4];if(r[4])return!0;let u=Object.values(t[1])[0],o=Object.values(r[1])[0];return!u||!o||e(u,o)}}}),("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},95871,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={FreshnessPolicy:function(){return g},createInitialCacheNodeForHydration:function(){return v},isDeferredRsc:function(){return D},spawnDynamicRequests:function(){return j},startPPRNavigation:function(){return b}};for(var u in a)Object.defineProperty(r,u,{enumerable:!0,get:a[u]});let o=e.r(13258),l=e.r(56019),i=e.r(51191),s=e.r(70725),c=e.r(87288),f=e.r(41538),d=e.r(88540),p=e.r(48919),h=e.r(54069),y=e.r(60355);var g=((n={})[n.Default=0]="Default",n[n.Hydration=1]="Hydration",n[n.HistoryTraversal=2]="HistoryTraversal",n[n.RefreshAll=3]="RefreshAll",n[n.HMRRefresh=4]="HMRRefresh",n);let _=()=>{};function v(e,t,r,n){return m(e,t,void 0,1,r,n,null,null,!1,null,null,!1,{scrollableSegments:null,separateRefreshUrls:null}).node}function b(e,t,r,n,a,u,c,f,d,h,y,g,_){return function e(t,r,n,a,u,c,f,d,h,y,g,_,v,b,T,j,w,A){var M,N;let D,C,x,U=a[0],k=u[0];if(!(0,l.matchSegment)(k,U))return!f&&(0,p.isNavigatingToNewRootLayout)(a,u)||k===o.NOT_FOUND_SEGMENT_KEY||null===b||null===T?null:m(t,u,n,c,d,h,y,g,_,b,T,j,A);let I=null!==T&&null!==b?b.concat([T,k]):[],F=u[1],L=a[1],H=null!==d?d[1]:null,B=null!==y?y[1]:null,$=!0===u[4],X=f||$,q=void 0!==n?n.parallelRoutes:void 0,W=!1,K=!1;switch(c){case 0:case 2:case 1:W=!1,K=!1;break;case 3:case 4:W=!0,K=!0}let V=new Map(W?void 0:q),G=0===Object.keys(F).length;if(void 0===n||K||G&&v)if(null!==d&&null!==d[0]){let e=d[0],r=d[2],n=null===h;C=S(e,r,!1,h,n,G,V,t),x=G&&n}else if(null!==y){let e=y[0],r=y[2],n=y[3];C=S(e,r,n,g,_,G,V,t),x=n||G&&_}else C=O(V,G,t,c),x=!0;else C=P(!1,n,V),x=!1;let Y=u[2],z="string"==typeof Y&&"refresh"===u[3]?Y:w;x&&null!==z&&(M=A,N=z,null===(D=M.separateRefreshUrls)?M.separateRefreshUrls=new Set([N]):D.add(N));let Q={},J=null,Z=!1,ee={};for(let n in F){let a=F[n],u=L[n];if(void 0===u)return null;let l=void 0!==q?q.get(n):void 0,f=null!==H?H[n]:null,d=null!==B?B[n]:null,p=a[0],y=h,b=g,m=_;2!==c&&p===o.DEFAULT_SEGMENT_KEY&&(p=(a=function(e,t){let r;return"refresh"===t[3]?r=t:((r=R(t,t[1]))[2]=(0,i.createHrefFromUrl)(e),r[3]="refresh"),r}(r,u))[0],f=null,y=null,d=null,b=null,m=!1);let E=(0,s.createRouterCacheKey)(p),P=e(t,r,void 0!==l?l.get(E):void 0,u,a,c,X,f??null,y,d??null,b,m,v,I,n,j||x,z,A);if(null===P)return null;null===J&&(J=new Map),J.set(n,P);let S=P.node;if(null!==S){let e=new Map(W?void 0:l);e.set(E,S),V.set(n,e)}let O=P.route;Q[n]=O;let T=P.dynamicRequestTree;null!==T?(Z=!0,ee[n]=T):ee[n]=O}return{status:+!x,route:R(u,Q),node:C,dynamicRequestTree:E(u,ee,x,Z,j),refreshUrl:z,children:J}}(e,t,null!==r?r:void 0,n,a,u,!1,c,f,d,h,y,g,null,null,!1,null,_)}function m(e,t,r,n,a,u,o,l,i,c,f,d,p){let y,g,_=t[0],v=null!==f&&null!==c?c.concat([f,_]):[],b=t[1],T=null!==o?o[1]:null,j=null!==a?a[1]:null,w=void 0!==r?r.parallelRoutes:void 0,A=!1,M=!1,N=!1;switch(n){case 0:A=!1,M=void 0===r||e-r.navigatedAt>=h.DYNAMIC_STALETIME_MS,N=!1;break;case 1:M=!1,A=!1,N=!1;break;case 2:if(M=!1,M=!1,void 0!==r){let e=r.rsc;N=!D(e)||"pending"!==e.status}else N=!1;break;case 3:case 4:M=!0,A=!0,N=!1}let C=new Map(A?void 0:w),x=0===Object.keys(b).length;if(x&&(null===p.scrollableSegments&&(p.scrollableSegments=[]),p.scrollableSegments.push(v)),M||void 0===r)if(null!==a&&null!==a[0]){let t=a[0],r=a[2],o=null===u&&1!==n;y=S(t,r,!1,u,o,x,C,e),g=x&&o}else if(1===n&&x&&null!==u)y=S(null,null,!1,u,!1,x,C,e),g=!1;else if(1!==n&&null!==o){let t=o[0],r=o[2],n=o[3];y=S(t,r,n,l,i,x,C,e),g=n||x&&i}else y=O(C,x,e,n),g=!0;else y=P(N,r,C),g=!1;let U={},k=null,I=!1,F={};for(let t in b){let r=b[t],a=void 0!==w?w.get(t):void 0,o=null!==j?j[t]:null,c=null!==T?T[t]:null,f=r[0],h=(0,s.createRouterCacheKey)(f),y=m(e,r,void 0!==a?a.get(h):void 0,n,o??null,u,c??null,l,i,v,t,d||g,p);null===k&&(k=new Map),k.set(t,y);let _=y.node;if(null!==_){let e=new Map(A?void 0:a);e.set(h,_),C.set(t,e)}let R=y.route;U[t]=R;let E=y.dynamicRequestTree;null!==E?(I=!0,F[t]=E):F[t]=R}return{status:+!g,route:R(t,U),node:y,dynamicRequestTree:E(t,F,g,I,d),refreshUrl:null,children:k}}function R(e,t){let r=[e[0],t];return 2 in e&&(r[2]=e[2]),3 in e&&(r[3]=e[3]),4 in e&&(r[4]=e[4]),r}function E(e,t,r,n,a){let u=null;return r?(u=R(e,t),a||(u[3]="refetch")):u=n?R(e,t):null,u}function P(e,t,r){return{rsc:t.rsc,prefetchRsc:e?null:t.prefetchRsc,head:t.head,prefetchHead:e?null:t.prefetchHead,loading:t.loading,parallelRoutes:r,navigatedAt:t.navigatedAt}}function S(e,t,r,n,a,u,o,l){let i,s,c,f;return r?(s=e,i=C()):(s=null,i=e),u?a?(c=n,f=C()):(c=null,f=n):(c=null,f=null),{rsc:i,prefetchRsc:s,head:f,prefetchHead:c,loading:t,parallelRoutes:o,navigatedAt:l}}function O(e,t,r,n){let a=1===n;return{rsc:a?null:C(),prefetchRsc:null,head:!a&&t?C():null,prefetchHead:null,loading:a?null:C(),parallelRoutes:e,navigatedAt:r}}let T=!1;function j(e,t,r,n,a){let u=e.dynamicRequestTree;if(null===u){T=!1;return}let o=M(e,u,t,r,n),l=a.separateRefreshUrls,s=null;if(null!==l){s=[];let a=(0,i.createHrefFromUrl)(t);for(let t of l)t!==a&&null!==u&&s.push(M(e,u,new URL(t,location.origin),r,n))}w(e,r,o,s).then(_,_)}async function w(e,t,r,n){var a,u;let o=await (a=r,u=n,new Promise(e=>{let t=t=>{0===t.exitStatus?0==--n&&e(0):e(t.exitStatus)},r=()=>e(2),n=1;a.then(t,r),null!==u&&(n+=u.length,u.forEach(e=>e.then(t,r)))}));switch(0===o&&(o=function e(t,r,n){var a,u,o;let l,i,s,c;0===t.status?(t.status=2,a=t.node,u=r,o=n,D(i=a.rsc)&&(null===u?i.resolve(null,o):i.reject(u,o)),D(s=a.loading)&&s.resolve(null,o),D(c=a.head)&&c.resolve(null,o),l=null===t.refreshUrl?1:2):l=0;let f=t.children;if(null!==f)for(let[,t]of f){let a=e(t,r,n);a>l&&(l=a)}return l}(e,null,null)),o){case 0:T=!1;return;case 1:{let n=await r;A(!1,n.url,t,n.seed,e.route);return}case 2:{let n=await r;A(!0,n.url,t,n.seed,e.route);return}default:return o}}function A(e,t,r,n,a){e=e||T,T=!0;let u={type:d.ACTION_SERVER_PATCH,previousTree:a,url:t,nextUrl:r,seed:n,mpa:e};(0,f.dispatchAppRouterAction)(u)}async function M(e,t,r,n,a){try{let u=await (0,c.fetchServerResponse)(r,{flightRouterState:t,nextUrl:n,isHmrRefresh:4===a});if("string"==typeof u)return{exitStatus:2,url:new URL(u,location.origin),seed:null};let o=(0,y.convertServerPatchToFullTree)(e.route,u.flightData,u.renderedSearch);return{exitStatus:+!!function e(t,r,n,a,u){0===t.status&&null!==n&&(t.status=1,function(e,t,r,n){let a=e.rsc,u=t[0];if(null===u)return;null===a?e.rsc=u:D(a)&&a.resolve(u,n);let o=e.loading;if(D(o)){let e=t[2];o.resolve(e,n)}let l=e.head;D(l)&&l.resolve(r,n)}(t.node,n,a,u));let o=t.children,i=r[1],s=null!==n?n[1]:null,c=!1;if(null!==o)for(let t in i){let r=i[t],n=null!==s?s[t]:null,f=o.get(t);if(void 0===f)c=!0;else{let t=f.route[0];(0,l.matchSegment)(r[0],t)&&null!=n&&e(f,r,n,a,u)&&(c=!0)}}return c}(e,o.tree,o.data,o.head,u.debugInfo),url:new URL(u.canonicalUrl,location.origin),seed:o}}catch{return{exitStatus:2,url:r,seed:null}}}let N=Symbol();function D(e){return e&&"object"==typeof e&&e.tag===N}function C(){let e,t,r=[],n=new Promise((r,n)=>{e=r,t=n});return n.status="pending",n.resolve=(t,a)=>{"pending"===n.status&&(n.status="fulfilled",n.value=t,null!==a&&r.push.apply(r,a),e(t))},n.reject=(e,a)=>{"pending"===n.status&&(n.status="rejected",n.reason=e,null!==a&&r.push.apply(r,a),t(e))},n.tag=N,n._debugInfo=r,n}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},22744,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HasLoadingBoundary",{enumerable:!0,get:function(){return a}});var n,a=((n={})[n.SegmentHasLoadingBoundary=1]="SegmentHasLoadingBoundary",n[n.SubtreeHasLoadingBoundary=2]="SubtreeHasLoadingBoundary",n[n.SubtreeHasNoLoadingBoundary=3]="SubtreeHasNoLoadingBoundary",n)},9396,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a,u,o={FetchStrategy:function(){return c},NavigationResultTag:function(){return i},PrefetchPriority:function(){return s}};for(var l in o)Object.defineProperty(r,l,{enumerable:!0,get:o[l]});var i=((n={})[n.MPA=0]="MPA",n[n.Success=1]="Success",n[n.NoOp=2]="NoOp",n[n.Async=3]="Async",n),s=((a={})[a.Intent=2]="Intent",a[a.Default=1]="Default",a[a.Background=0]="Background",a),c=((u={})[u.LoadingBoundary=0]="LoadingBoundary",u[u.PPR=1]="PPR",u[u.PPRRuntime=2]="PPRRuntime",u[u.Full=3]="Full",u);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73861,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={deleteFromLru:function(){return f},lruPut:function(){return s},updateLruSize:function(){return c}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(511),o=null,l=!1,i=0;function s(e){if(o===e)return;let t=e.prev,r=e.next;if(null===r||null===t?(i+=e.size,d()):(t.next=r,r.prev=t),null===o)e.prev=e,e.next=e;else{let t=o.prev;e.prev=t,null!==t&&(t.next=e),e.next=o,o.prev=e}o=e}function c(e,t){let r=e.size;e.size=t,null!==e.next&&(i=i-r+t,d())}function f(e){let t=e.next,r=e.prev;null!==t&&null!==r&&(i-=e.size,e.next=null,e.prev=null,o===e?t===o?o=null:(o=t,r.next=t,t.prev=r):(r.next=t,t.prev=r))}function d(){l||i<=0x3200000||(l=!0,h(p))}function p(){l=!1;for(;i>0x2d00000&&null!==o;){let e=o.prev;null!==e&&(0,u.deleteMapEntry)(e)}}let h="function"==typeof requestIdleCallback?requestIdleCallback:e=>setTimeout(e,0);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},511,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={Fallback:function(){return o},createCacheMap:function(){return i},deleteFromCacheMap:function(){return p},deleteMapEntry:function(){return h},getFromCacheMap:function(){return s},isValueExpired:function(){return c},setInCacheMap:function(){return f},setSizeInCacheMap:function(){return y}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(73861),o={},l={};function i(){return{parent:null,key:null,value:null,map:null,prev:null,next:null,size:0}}function s(e,t,r,n,a){let i=function e(t,r,n,a,u,i){let s,f;if(null!==a)s=a.value,f=a.parent;else if(u&&i!==l)s=l,f=null;else return null===n.value?n:c(t,r,n.value)?(h(n),null):n;let d=n.map;if(null!==d){let n=d.get(s);if(void 0!==n){let a=e(t,r,n,f,u,s);if(null!==a)return a}let a=d.get(o);if(void 0!==a)return e(t,r,a,f,u,s)}return null}(e,t,r,n,a,0);return null===i||null===i.value?null:((0,u.lruPut)(i),i.value)}function c(e,t,r){return r.staleAt<=e||r.version{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={appendLayoutVaryPath:function(){return c},clonePageVaryPathWithNewSearchParams:function(){return y},finalizeLayoutVaryPath:function(){return f},finalizeMetadataVaryPath:function(){return p},finalizePageVaryPath:function(){return d},getFulfilledRouteVaryPath:function(){return s},getRouteVaryPath:function(){return i},getSegmentVaryPathForRequest:function(){return h}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(9396),o=e.r(511),l=e.r(67764);function i(e,t,r){return{value:e,parent:{value:t,parent:{value:r,parent:null}}}}function s(e,t,r,n){return{value:e,parent:{value:t,parent:{value:n?r:o.Fallback,parent:null}}}}function c(e,t){return{value:t,parent:e}}function f(e,t){return{value:e,parent:t}}function d(e,t,r){return{value:e,parent:{value:t,parent:r}}}function p(e,t,r){return{value:e+l.HEAD_REQUEST_KEY,parent:{value:t,parent:r}}}function h(e,t){let r=t.varyPath;if(t.isPage&&e!==u.FetchStrategy.Full&&e!==u.FetchStrategy.PPRRuntime){let e=r.parent.parent;return{value:r.value,parent:{value:o.Fallback,parent:e}}}return r}function y(e,t){let r=e.parent;return{value:e.value,parent:{value:t,parent:r.parent}}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77048,(e,t,r)=>{"use strict";function n(e,t){let r=new URL(e);return{pathname:r.pathname,search:r.search,nextUrl:t}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createCacheKey",{enumerable:!0,get:function(){return n}}),("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77709,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={cancelPrefetchTask:function(){return R},isPrefetchTaskDirty:function(){return P},pingPrefetchTask:function(){return A},reschedulePrefetchTask:function(){return E},schedulePrefetchTask:function(){return m},startRevalidationCooldown:function(){return b}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(22744),o=e.r(56019),l=e.r(20896),i=e.r(56655),s=e.r(77048),c=e.r(9396),f=e.r(13258),d="function"==typeof queueMicrotask?queueMicrotask:e=>Promise.resolve().then(e).catch(e=>setTimeout(()=>{throw e})),p=[],h=0,y=0,g=!1,_=null,v=null;function b(){null!==v&&clearTimeout(v),v=setTimeout(()=>{v=null,O()},300)}function m(e,t,r,n,a){let u={key:e,treeAtTimeOfPrefetch:t,cacheVersion:(0,l.getCurrentCacheVersion)(),priority:n,phase:1,hasBackgroundWork:!1,spawnedRuntimePrefetches:null,fetchStrategy:r,sortId:y++,isCanceled:!1,onInvalidate:a,_heapIndex:-1};return S(u),B(p,u),O(),u}function R(e){e.isCanceled=!0,function(e,t){let r=t._heapIndex;if(-1!==r&&(t._heapIndex=-1,0!==e.length)){let n=e.pop();n!==t&&(e[r]=n,n._heapIndex=r,K(e,n,r))}}(p,e)}function E(e,t,r,n){e.isCanceled=!1,e.phase=1,e.sortId=y++,e.priority=e===_?c.PrefetchPriority.Intent:n,e.treeAtTimeOfPrefetch=t,e.fetchStrategy=r,S(e),-1!==e._heapIndex?q(p,e):B(p,e),O()}function P(e,t,r){let n=(0,l.getCurrentCacheVersion)();return e.cacheVersion!==n||e.treeAtTimeOfPrefetch!==r||e.key.nextUrl!==t}function S(e){e.priority===c.PrefetchPriority.Intent&&e!==_&&(null!==_&&_.priority!==c.PrefetchPriority.Background&&(_.priority=c.PrefetchPriority.Default,q(p,_)),_=e)}function O(){g||(g=!0,d(M))}function T(e){return null===v&&(e.priority===c.PrefetchPriority.Intent?h<12:h<4)}function j(e){return h++,e.then(e=>null===e?(w(),null):(e.closed.then(w),e.value))}function w(){h--,O()}function A(e){e.isCanceled||-1!==e._heapIndex||(B(p,e),O())}function M(){g=!1;let e=Date.now(),t=$(p);for(;null!==t&&T(t);){t.cacheVersion=(0,l.getCurrentCacheVersion)();let r=function(e,t){let r=t.key,n=(0,l.readOrCreateRouteCacheEntry)(e,t,r),a=function(e,t,r){switch(r.status){case l.EntryStatus.Empty:j((0,l.fetchRouteOnCacheMiss)(r,t,t.key)),r.staleAt=e+6e4,r.status=l.EntryStatus.Pending;case l.EntryStatus.Pending:{let e=r.blockedTasks;return null===e?r.blockedTasks=new Set([t]):e.add(t),1}case l.EntryStatus.Rejected:break;case l.EntryStatus.Fulfilled:{if(0!==t.phase)return 2;if(!T(t))return 0;let i=r.tree,s=t.fetchStrategy===c.FetchStrategy.PPR?r.isPPREnabled?c.FetchStrategy.PPR:c.FetchStrategy.LoadingBoundary:t.fetchStrategy;switch(s){case c.FetchStrategy.PPR:{var n,a,o;if(x(n=e,a=t,o=r,(0,l.readOrCreateSegmentCacheEntry)(n,c.FetchStrategy.PPR,o,o.metadata),a.key,o.metadata),0===function e(t,r,n,a,u){let o=(0,l.readOrCreateSegmentCacheEntry)(t,r.fetchStrategy,n,u);x(t,r,n,o,r.key,u);let i=a[1],s=u.slots;if(null!==s)for(let a in s){if(!T(r))return 0;let u=s[a],o=u.segment,c=i[a],f=c?.[0];if(0===(void 0!==f&&L(n,o,f)?e(t,r,n,c,u):function e(t,r,n,a){if(a.hasRuntimePrefetch)return null===r.spawnedRuntimePrefetches?r.spawnedRuntimePrefetches=new Set([a.requestKey]):r.spawnedRuntimePrefetches.add(a.requestKey),2;let u=(0,l.readOrCreateSegmentCacheEntry)(t,r.fetchStrategy,n,a);if(x(t,r,n,u,r.key,a),null!==a.slots){if(!T(r))return 0;for(let u in a.slots)if(0===e(t,r,n,a.slots[u]))return 0}return 2}(t,r,n,u)))return 0}return 2}(e,t,r,t.treeAtTimeOfPrefetch,i))return 0;let u=t.spawnedRuntimePrefetches;if(null!==u){let n=new Map;D(e,t,r,n,c.FetchStrategy.PPRRuntime);let a=function e(t,r,n,a,u,o){if(u.has(a.requestKey))return C(t,r,n,a,!1,o,c.FetchStrategy.PPRRuntime);let l={},i=a.slots;if(null!==i)for(let a in i){let s=i[a];l[a]=e(t,r,n,s,u,o)}return[a.segment,l,null,null]}(e,t,r,i,u,n);n.size>0&&j((0,l.fetchSegmentPrefetchesUsingDynamicRequest)(t,r,c.FetchStrategy.PPRRuntime,a,n))}return 2}case c.FetchStrategy.Full:case c.FetchStrategy.PPRRuntime:case c.FetchStrategy.LoadingBoundary:{let n=new Map;D(e,t,r,n,s);let a=function e(t,r,n,a,o,i,s){let f=a[1],d=o.slots,p={};if(null!==d)for(let a in d){let o=d[a],h=o.segment,y=f[a],g=y?.[0];if(void 0!==g&&L(n,h,g)){let u=e(t,r,n,y,o,i,s);p[a]=u}else switch(s){case c.FetchStrategy.LoadingBoundary:{let e=o.hasLoadingBoundary!==u.HasLoadingBoundary.SubtreeHasNoLoadingBoundary?function e(t,r,n,a,o,i){let s=null===o?"inside-shared-layout":null,f=(0,l.readOrCreateSegmentCacheEntry)(t,r.fetchStrategy,n,a);switch(f.status){case l.EntryStatus.Empty:i.set(a.requestKey,(0,l.upgradeToPendingSegment)(f,c.FetchStrategy.LoadingBoundary)),"refetch"!==o&&(s=o="refetch");break;case l.EntryStatus.Fulfilled:if(a.hasLoadingBoundary===u.HasLoadingBoundary.SegmentHasLoadingBoundary)return(0,l.convertRouteTreeToFlightRouterState)(a);case l.EntryStatus.Pending:case l.EntryStatus.Rejected:}let d={};if(null!==a.slots)for(let u in a.slots){let l=a.slots[u];d[u]=e(t,r,n,l,o,i)}return[a.segment,d,null,s,a.isRootLayout]}(t,r,n,o,null,i):(0,l.convertRouteTreeToFlightRouterState)(o);p[a]=e;break}case c.FetchStrategy.PPRRuntime:{let e=C(t,r,n,o,!1,i,s);p[a]=e;break}case c.FetchStrategy.Full:{let e=C(t,r,n,o,!1,i,s);p[a]=e}}}return[o.segment,p,null,null,o.isRootLayout]}(e,t,r,t.treeAtTimeOfPrefetch,i,n,s);return n.size>0&&j((0,l.fetchSegmentPrefetchesUsingDynamicRequest)(t,r,s,a,n)),2}}}}return 2}(e,t,n);if(0!==a&&""!==r.search){let n=new URL(r.pathname,location.origin),a=(0,s.createCacheKey)(n.href,r.nextUrl),u=(0,l.readOrCreateRouteCacheEntry)(e,t,a);switch(u.status){case l.EntryStatus.Empty:N(t)&&(u.status=l.EntryStatus.Pending,j((0,l.fetchRouteOnCacheMiss)(u,t,a)));case l.EntryStatus.Pending:case l.EntryStatus.Fulfilled:case l.EntryStatus.Rejected:}}return a}(e,t),n=t.hasBackgroundWork;switch(t.hasBackgroundWork=!1,t.spawnedRuntimePrefetches=null,r){case 0:return;case 1:X(p),t=$(p);continue;case 2:1===t.phase?(t.phase=0,q(p,t)):n?(t.priority=c.PrefetchPriority.Background,q(p,t)):X(p),t=$(p);continue}}}function N(e){return e.priority===c.PrefetchPriority.Background||(e.hasBackgroundWork=!0,!1)}function D(e,t,r,n,a){C(e,t,r,r.metadata,!1,n,a===c.FetchStrategy.LoadingBoundary?c.FetchStrategy.Full:a)}function C(e,t,r,n,a,u,o){let i=(0,l.readOrCreateSegmentCacheEntry)(e,o,r,n),s=null;switch(i.status){case l.EntryStatus.Empty:s=(0,l.upgradeToPendingSegment)(i,o);break;case l.EntryStatus.Fulfilled:i.isPartial&&(0,l.canNewFetchStrategyProvideMoreContent)(i.fetchStrategy,o)&&(s=k(e,r,n,o));break;case l.EntryStatus.Pending:case l.EntryStatus.Rejected:(0,l.canNewFetchStrategyProvideMoreContent)(i.fetchStrategy,o)&&(s=k(e,r,n,o))}let c={};if(null!==n.slots)for(let l in n.slots){let i=n.slots[l];c[l]=C(e,t,r,i,a||null!==s,u,o)}null!==s&&u.set(n.requestKey,s);let f=a||null===s?null:"refetch";return[n.segment,c,null,f,n.isRootLayout]}function x(e,t,r,n,a,u){switch(n.status){case l.EntryStatus.Empty:j((0,l.fetchSegmentOnCacheMiss)(r,(0,l.upgradeToPendingSegment)(n,c.FetchStrategy.PPR),a,u));break;case l.EntryStatus.Pending:switch(n.fetchStrategy){case c.FetchStrategy.PPR:case c.FetchStrategy.PPRRuntime:case c.FetchStrategy.Full:break;case c.FetchStrategy.LoadingBoundary:N(t)&&U(e,r,a,u);break;default:n.fetchStrategy}break;case l.EntryStatus.Rejected:switch(n.fetchStrategy){case c.FetchStrategy.PPR:case c.FetchStrategy.PPRRuntime:case c.FetchStrategy.Full:break;case c.FetchStrategy.LoadingBoundary:U(e,r,a,u);break;default:n.fetchStrategy}case l.EntryStatus.Fulfilled:}}function U(e,t,r,n){let a=(0,l.readOrCreateRevalidatingSegmentEntry)(e,c.FetchStrategy.PPR,t,n);switch(a.status){case l.EntryStatus.Empty:F(j((0,l.fetchSegmentOnCacheMiss)(t,(0,l.upgradeToPendingSegment)(a,c.FetchStrategy.PPR),r,n)),(0,i.getSegmentVaryPathForRequest)(c.FetchStrategy.PPR,n));case l.EntryStatus.Pending:case l.EntryStatus.Fulfilled:case l.EntryStatus.Rejected:}}function k(e,t,r,n){let a=(0,l.readOrCreateRevalidatingSegmentEntry)(e,n,t,r);if(a.status===l.EntryStatus.Empty){let e=(0,l.upgradeToPendingSegment)(a,n);return F((0,l.waitForSegmentCacheEntry)(e),(0,i.getSegmentVaryPathForRequest)(n,r)),e}if((0,l.canNewFetchStrategyProvideMoreContent)(a.fetchStrategy,n)){let e=(0,l.overwriteRevalidatingSegmentCacheEntry)(n,t,r),a=(0,l.upgradeToPendingSegment)(e,n);return F((0,l.waitForSegmentCacheEntry)(a),(0,i.getSegmentVaryPathForRequest)(n,r)),a}switch(a.status){case l.EntryStatus.Pending:case l.EntryStatus.Fulfilled:case l.EntryStatus.Rejected:default:return null}}let I=()=>{};function F(e,t){e.then(e=>{null!==e&&(0,l.upsertSegmentEntry)(Date.now(),t,e)},I)}function L(e,t,r){return r===f.PAGE_SEGMENT_KEY?t===(0,f.addSearchParamsIfPageSegment)(f.PAGE_SEGMENT_KEY,Object.fromEntries(new URLSearchParams(e.renderedSearch))):(0,o.matchSegment)(r,t)}function H(e,t){let r=t.priority-e.priority;if(0!==r)return r;let n=t.phase-e.phase;return 0!==n?n:t.sortId-e.sortId}function B(e,t){let r=e.length;e.push(t),t._heapIndex=r,W(e,t,r)}function $(e){return 0===e.length?null:e[0]}function X(e){if(0===e.length)return null;let t=e[0];t._heapIndex=-1;let r=e.pop();return r!==t&&(e[0]=r,r._heapIndex=0,K(e,r,0)),t}function q(e,t){let r=t._heapIndex;-1!==r&&(0===r?K(e,t,0):H(e[r-1>>>1],t)>0?W(e,t,r):K(e,t,r))}function W(e,t,r){let n=r;for(;n>0;){let r=n-1>>>1,a=e[r];if(!(H(a,t)>0))return;e[r]=t,t._heapIndex=r,e[n]=a,a._heapIndex=n,n=r}}function K(e,t,r){let n=r,a=e.length,u=a>>>1;for(;nH(u,t))oH(l,u)?(e[n]=l,l._heapIndex=n,e[o]=t,t._heapIndex=o,n=o):(e[n]=u,u._heapIndex=n,e[r]=t,t._heapIndex=r,n=r);else{if(!(oH(l,t)))return;e[n]=l,l._heapIndex=n,e[o]=t,t._heapIndex=o,n=o}}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},72463,(e,t,r)=>{"use strict";function n(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"parsePath",{enumerable:!0,get:function(){return n}})},41858,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(72463);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:u}=(0,n.parsePath)(e);return`${t}${r}${a}${u}`}},38281,(e,t,r)=>{"use strict";function n(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removeTrailingSlash",{enumerable:!0,get:function(){return n}})},82823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return u}});let n=e.r(38281),a=e.r(72463),u=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:u}=(0,a.parsePath)(e);return`${(0,n.removeTrailingSlash)(t)}${r}${u}`};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},5550,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addBasePath",{enumerable:!0,get:function(){return u}});let n=e.r(41858),a=e.r(82823);function u(e,t){return(0,a.normalizePathTrailingSlash)((0,n.addPathPrefix)(e,""))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},57630,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createPrefetchURL:function(){return i},isExternalURL:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(82604),o=e.r(5550);function l(e){return e.origin!==window.location.origin}function i(e){let t;if((0,u.isBot)(window.navigator.userAgent))return null;try{t=new URL((0,o.addBasePath)(e),window.location.href)}catch(t){throw Object.defineProperty(Error(`Cannot prefetch '${e}' because it cannot be converted to a URL.`),"__NEXT_ERROR_CODE",{value:"E234",enumerable:!1,configurable:!0})}return l(t)?null:t}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},91949,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={IDLE_LINK_STATUS:function(){return f},PENDING_LINK_STATUS:function(){return c},mountFormInstance:function(){return m},mountLinkInstance:function(){return b},onLinkVisibilityChanged:function(){return E},onNavigationIntent:function(){return P},pingVisibleLinks:function(){return O},setLinkForCurrentNavigation:function(){return d},unmountLinkForCurrentNavigation:function(){return p},unmountPrefetchableInstance:function(){return R}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(9396),o=e.r(77048),l=e.r(77709),i=e.r(71645),s=null,c={pending:!0},f={pending:!1};function d(e){(0,i.startTransition)(()=>{s?.setOptimisticLinkStatus(f),e?.setOptimisticLinkStatus(c),s=e})}function p(e){s===e&&(s=null)}let h="function"==typeof WeakMap?new WeakMap:new Map,y=new Set,g="function"==typeof IntersectionObserver?new IntersectionObserver(function(e){for(let t of e){let e=t.intersectionRatio>0;E(t.target,e)}},{rootMargin:"200px"}):null;function _(e,t){void 0!==h.get(e)&&R(e),h.set(e,t),null!==g&&g.observe(e)}function v(t){if(!("u">typeof window))return null;{let{createPrefetchURL:r}=e.r(57630);try{return r(t)}catch{return("function"==typeof reportError?reportError:console.error)(`Cannot prefetch '${t}' because it cannot be converted to a URL.`),null}}}function b(e,t,r,n,a,u){if(a){let a=v(t);if(null!==a){let t={router:r,fetchStrategy:n,isVisible:!1,prefetchTask:null,prefetchHref:a.href,setOptimisticLinkStatus:u};return _(e,t),t}}return{router:r,fetchStrategy:n,isVisible:!1,prefetchTask:null,prefetchHref:null,setOptimisticLinkStatus:u}}function m(e,t,r,n){let a=v(t);null===a||_(e,{router:r,fetchStrategy:n,isVisible:!1,prefetchTask:null,prefetchHref:a.href,setOptimisticLinkStatus:null})}function R(e){let t=h.get(e);if(void 0!==t){h.delete(e),y.delete(t);let r=t.prefetchTask;null!==r&&(0,l.cancelPrefetchTask)(r)}null!==g&&g.unobserve(e)}function E(e,t){let r=h.get(e);void 0!==r&&(r.isVisible=t,t?y.add(r):y.delete(r),S(r,u.PrefetchPriority.Default))}function P(e,t){let r=h.get(e);void 0!==r&&void 0!==r&&S(r,u.PrefetchPriority.Intent)}function S(t,r){if("u">typeof window){let n=t.prefetchTask;if(!t.isVisible){null!==n&&(0,l.cancelPrefetchTask)(n);return}let{getCurrentAppRouterState:a}=e.r(99781),u=a();if(null!==u){let e=u.tree;if(null===n){let n=u.nextUrl,a=(0,o.createCacheKey)(t.prefetchHref,n);t.prefetchTask=(0,l.schedulePrefetchTask)(a,e,t.fetchStrategy,r,null)}else(0,l.reschedulePrefetchTask)(n,e,t.fetchStrategy,r)}}}function O(e,t){for(let r of y){let n=r.prefetchTask;if(null!==n&&!(0,l.isPrefetchTaskDirty)(n,e,t))continue;null!==n&&(0,l.cancelPrefetchTask)(n);let a=(0,o.createCacheKey)(r.prefetchHref,e);r.prefetchTask=(0,l.schedulePrefetchTask)(a,t,r.fetchStrategy,u.PrefetchPriority.Default,null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39470,(e,t,r)=>{"use strict";function n(){let e,t,r=new Promise((r,n)=>{e=r,t=n});return{resolve:e,reject:t,promise:r}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createPromiseWithResolvers",{enumerable:!0,get:function(){return n}})},20896,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={EntryStatus:function(){return S},canNewFetchStrategyProvideMoreContent:function(){return en},convertRouteTreeToFlightRouterState:function(){return function e(t){let r={};if(null!==t.slots)for(let n in t.slots)r[n]=e(t.slots[n]);return[t.segment,r,null,null,t.isRootLayout]}},createDetachedSegmentCacheEntry:function(){return X},fetchRouteOnCacheMiss:function(){return Y},fetchSegmentOnCacheMiss:function(){return z},fetchSegmentPrefetchesUsingDynamicRequest:function(){return Q},getCurrentCacheVersion:function(){return M},getStaleTimeMs:function(){return P},overwriteRevalidatingSegmentCacheEntry:function(){return B},pingInvalidationListeners:function(){return D},readOrCreateRevalidatingSegmentEntry:function(){return H},readOrCreateRouteCacheEntry:function(){return k},readOrCreateSegmentCacheEntry:function(){return L},readRouteCacheEntry:function(){return C},readSegmentCacheEntry:function(){return x},requestOptimisticRouteCacheEntry:function(){return I},revalidateEntireCache:function(){return N},upgradeToPendingSegment:function(){return q},upsertSegmentEntry:function(){return $},waitForSegmentCacheEntry:function(){return U}};for(var u in a)Object.defineProperty(r,u,{enumerable:!0,get:a[u]});let o=e.r(22744),l=e.r(21768),i=e.r(87288),s=e.r(77709),c=e.r(56655),f=e.r(14297),d=e.r(51191),p=e.r(77048),h=e.r(33906),y=e.r(511),g=e.r(67764),_=e.r(50590),v=e.r(54069),b=e.r(91949),m=e.r(13258),R=e.r(9396),E=e.r(39470);function P(e){return 1e3*Math.max(e,30)}var S=((n={})[n.Empty=0]="Empty",n[n.Pending=1]="Pending",n[n.Fulfilled=2]="Fulfilled",n[n.Rejected=3]="Rejected",n);let O=["",{},null,"metadata-only"],T=(0,y.createCacheMap)(),j=(0,y.createCacheMap)(),w=null,A=0;function M(){return A}function N(e,t){A++,(0,s.startRevalidationCooldown)(),(0,b.pingVisibleLinks)(e,t),D(e,t)}function D(e,t){if(null!==w){let r=w;for(let n of(w=null,r))(0,s.isPrefetchTaskDirty)(n,e,t)&&function(e){let t=e.onInvalidate;if(null!==t){e.onInvalidate=null;try{t()}catch(e){"function"==typeof reportError?reportError(e):console.error(e)}}}(n)}}function C(e,t){let r=(0,c.getRouteVaryPath)(t.pathname,t.search,t.nextUrl);return(0,y.getFromCacheMap)(e,A,T,r,!1)}function x(e,t){return(0,y.getFromCacheMap)(e,A,j,t,!1)}function U(e){let t=e.promise;return null===t&&(t=e.promise=(0,E.createPromiseWithResolvers)()),t.promise}function k(e,t,r){null!==t.onInvalidate&&(null===w?w=new Set([t]):w.add(t));let n=C(e,r);if(null!==n)return n;let a={canonicalUrl:null,status:0,blockedTasks:null,tree:null,metadata:null,couldBeIntercepted:!0,isPPREnabled:!1,renderedSearch:null,ref:null,size:0,staleAt:1/0,version:A},u=(0,c.getRouteVaryPath)(r.pathname,r.search,r.nextUrl);return(0,y.setInCacheMap)(T,u,a,!1),a}function I(e,t,r){let n=t.search;if(""===n)return null;let a=new URL(t);a.search="";let u=C(e,(0,p.createCacheKey)(a.href,r));if(null===u||2!==u.status)return null;let o=new URL(u.canonicalUrl,t.origin),l=""!==o.search?o.search:n,i=""!==u.renderedSearch?u.renderedSearch:n,s=new URL(u.canonicalUrl,location.origin);return s.search=l,{canonicalUrl:(0,d.createHrefFromUrl)(s),status:2,blockedTasks:null,tree:F(u.tree,i),metadata:F(u.metadata,i),couldBeIntercepted:u.couldBeIntercepted,isPPREnabled:u.isPPREnabled,renderedSearch:i,ref:null,size:0,staleAt:u.staleAt,version:u.version}}function F(e,t){let r=null,n=e.slots;if(null!==n)for(let e in r={},n){let a=n[e];r[e]=F(a,t)}return e.isPage?{requestKey:e.requestKey,segment:e.segment,varyPath:(0,c.clonePageVaryPathWithNewSearchParams)(e.varyPath,t),isPage:!0,slots:r,isRootLayout:e.isRootLayout,hasLoadingBoundary:e.hasLoadingBoundary,hasRuntimePrefetch:e.hasRuntimePrefetch}:{requestKey:e.requestKey,segment:e.segment,varyPath:e.varyPath,isPage:!1,slots:r,isRootLayout:e.isRootLayout,hasLoadingBoundary:e.hasLoadingBoundary,hasRuntimePrefetch:e.hasRuntimePrefetch}}function L(e,t,r,n){let a=x(e,n.varyPath);if(null!==a)return a;let u=(0,c.getSegmentVaryPathForRequest)(t,n),o=X(r.staleAt);return(0,y.setInCacheMap)(j,u,o,!1),o}function H(e,t,r,n){var a;let u=(a=n.varyPath,(0,y.getFromCacheMap)(e,A,j,a,!0));if(null!==u)return u;let o=(0,c.getSegmentVaryPathForRequest)(t,n),l=X(r.staleAt);return(0,y.setInCacheMap)(j,o,l,!0),l}function B(e,t,r){let n=(0,c.getSegmentVaryPathForRequest)(e,r),a=X(t.staleAt);return(0,y.setInCacheMap)(j,n,a,!0),a}function $(e,t,r){if((0,y.isValueExpired)(e,A,r))return null;let n=x(e,t);if(null!==n){var a;if(r.fetchStrategy!==n.fetchStrategy&&(a=n.fetchStrategy,!(a=400)return V(e,Date.now()+1e4),null;r=n.redirected?new URL(n.url):v,t=await ee(er(r,s),p)}if(!t||!t.ok||204===t.status||!t.body)return V(e,Date.now()+1e4),null;let b=(0,d.createHrefFromUrl)(r),R=t.headers.get("vary"),S=null!==R&&R.includes(l.NEXT_URL),O=(0,E.createPromiseWithResolvers)(),j="2"===t.headers.get(l.NEXT_DID_POSTPONE_HEADER)||!0;{var _;let r,n,a,u=et(t.body,O.resolve,function(t){(0,y.setSizeInCacheMap)(e,t)}),l=await (0,i.createFromNextReadableStream)(u,p);if(l.buildId!==(0,f.getAppBuildId)())return V(e,Date.now()+1e4),null;let s=(0,h.getRenderedPathname)(t),d=(0,h.getRenderedSearch)(t),v={metadataVaryPath:null},R=(r=s.split("/").filter(e=>""!==e),n=g.ROOT_SEGMENT_REQUEST_KEY,function e(t,r,n,a,u,l,i,s){let f,d,p=null,y=t.slots;if(null!==y)for(let t in f=!1,d=(0,c.finalizeLayoutVaryPath)(a,n),p={},y){let r,o,f,d=y[t],_=d.name,v=d.paramType,b=d.paramKey;if(null!==v){let e=(0,h.parseDynamicParamFromURLPart)(v,u,l),t=null!==b?b:(0,h.getCacheKeyForDynamicParam)(e,"");f=(0,c.appendLayoutVaryPath)(n,t),o=[_,t,v],r=!0}else f=n,o=_,r=(0,h.doesStaticSegmentAppearInURL)(_);let m=r?l+1:l,R=(0,g.createSegmentRequestKeyPart)(o),E=(0,g.appendSegmentRequestKeyPart)(a,t,R);p[t]=e(d,o,f,E,u,m,i,s)}else a.endsWith(m.PAGE_SEGMENT_KEY)?(f=!0,d=(0,c.finalizePageVaryPath)(a,i,n),null===s.metadataVaryPath&&(s.metadataVaryPath=(0,c.finalizeMetadataVaryPath)(a,i,n))):(f=!1,d=(0,c.finalizeLayoutVaryPath)(a,n));return{requestKey:a,segment:r,varyPath:d,isPage:f,slots:p,isRootLayout:t.isRootLayout,hasLoadingBoundary:o.HasLoadingBoundary.SegmentHasLoadingBoundary,hasRuntimePrefetch:t.hasRuntimePrefetch}}(l.tree,n,null,g.ROOT_SEGMENT_REQUEST_KEY,r,0,d,v)),E=v.metadataVaryPath;if(null===E)return V(e,Date.now()+1e4),null;let T=P(l.staleTime);_=Date.now()+T,a={requestKey:g.HEAD_REQUEST_KEY,segment:g.HEAD_REQUEST_KEY,varyPath:E,isPage:!0,slots:null,isRootLayout:!1,hasLoadingBoundary:o.HasLoadingBoundary.SubtreeHasNoLoadingBoundary,hasRuntimePrefetch:!1},e.status=2,e.tree=R,e.metadata=a,e.staleAt=_,e.couldBeIntercepted=S,e.canonicalUrl=b,e.renderedSearch=d,e.isPPREnabled=j,W(e)}if(!S){let t=(0,c.getFulfilledRouteVaryPath)(n,a,u,S);(0,y.setInCacheMap)(T,t,e,!1)}return{value:null,closed:O.promise}}catch(t){return V(e,Date.now()+1e4),null}}async function z(e,t,r,n){let a=new URL(e.canonicalUrl,location.origin),u=r.nextUrl,o=n.requestKey,s=o===g.ROOT_SEGMENT_REQUEST_KEY?"/_index":o,c={[l.RSC_HEADER]:"1",[l.NEXT_ROUTER_PREFETCH_HEADER]:"1",[l.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]:s};null!==u&&(c[l.NEXT_URL]=u);let d=er(a,s);try{let r=await ee(d,c);if(!r||!r.ok||204===r.status||"2"!==r.headers.get(l.NEXT_DID_POSTPONE_HEADER)&&0||!r.body)return G(t,Date.now()+1e4),null;let n=(0,E.createPromiseWithResolvers)(),a=et(r.body,n.resolve,function(e){(0,y.setSizeInCacheMap)(t,e)}),u=await (0,i.createFromNextReadableStream)(a,c);if(u.buildId!==(0,f.getAppBuildId)())return G(t,Date.now()+1e4),null;return{value:K(t,u.rsc,u.loading,e.staleAt,u.isPartial),closed:n.promise}}catch(e){return G(t,Date.now()+1e4),null}}async function Q(e,t,r,n,a){let u=e.key,o=new URL(t.canonicalUrl,location.origin),s=u.nextUrl;1===a.size&&a.has(t.metadata.requestKey)&&(n=O);let c={[l.RSC_HEADER]:"1",[l.NEXT_ROUTER_STATE_TREE_HEADER]:(0,_.prepareFlightRouterStateForRequest)(n)};switch(null!==s&&(c[l.NEXT_URL]=s),r){case R.FetchStrategy.Full:break;case R.FetchStrategy.PPRRuntime:c[l.NEXT_ROUTER_PREFETCH_HEADER]="2";break;case R.FetchStrategy.LoadingBoundary:c[l.NEXT_ROUTER_PREFETCH_HEADER]="1"}try{let n=await ee(o,c);if(!n||!n.ok||!n.body||(0,h.getRenderedSearch)(n)!==t.renderedSearch)return J(a,Date.now()+1e4),null;let u=(0,E.createPromiseWithResolvers)(),s=null,d=et(n.body,u.resolve,function(e){if(null===s)return;let t=e/s.length;for(let e of s)(0,y.setSizeInCacheMap)(e,t)}),p=await (0,i.createFromNextReadableStream)(d,c),g=r===R.FetchStrategy.PPRRuntime&&p.rp?.[0]===!0;return s=function(e,t,r,n,a,u,o,i){if(a.b!==(0,f.getAppBuildId)())return null!==i&&J(i,e+1e4),null;let s=(0,_.normalizeFlightData)(a.f);if("string"==typeof s)return null;let c="number"==typeof a.rp?.[1]?a.rp[1]:parseInt(n.headers.get(l.NEXT_ROUTER_STALE_TIME_HEADER)??"",10),d=e+(isNaN(c)?v.STATIC_STALETIME_MS:P(c));for(let n of s){let a=n.seedData;if(null!==a){let l=n.segmentPath,s=o.tree;for(let t=0;t{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={convertServerPatchToFullTree:function(){return m},navigate:function(){return d},navigateToSeededRoute:function(){return p}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(87288),o=e.r(95871),l=e.r(51191),i=e.r(20896),s=e.r(77048),c=e.r(13258),f=e.r(9396);function d(e,t,r,n,a,u,o,l){let c=Date.now(),d=e.href,p=d===t.href,y=(0,s.createCacheKey)(d,a),v=(0,i.readRouteCacheEntry)(c,y);if(null!==v&&v.status===i.EntryStatus.Fulfilled){let l=g(c,v,v.tree),i=l.flightRouterState,s=l.seedData,f=_(c,v),d=f.rsc,y=f.isPartial,b=v.canonicalUrl+e.hash;return h(c,e,t,a,p,r,n,i,s,d,y,b,v.renderedSearch,u,o)}if(null===v||v.status!==i.EntryStatus.Rejected){let l=(0,i.requestOptimisticRouteCacheEntry)(c,e,a);if(null!==l){let i=g(c,l,l.tree),s=i.flightRouterState,f=i.seedData,d=_(c,l),y=d.rsc,v=d.isPartial,b=l.canonicalUrl+e.hash;return h(c,e,t,a,p,r,n,s,f,y,v,b,l.renderedSearch,u,o)}}let m=l.collectedDebugInfo??[];return void 0===l.collectedDebugInfo&&(m=l.collectedDebugInfo=[]),{tag:f.NavigationResultTag.Async,data:b(c,e,t,a,r,n,u,o,m)}}function p(e,t,r,n,a,u,l,i,s,c){let d={scrollableSegments:null,separateRefreshUrls:null},p=t.href===a.href,h=(0,o.startPPRNavigation)(e,a,u,l,n.tree,i,n.data,n.head,null,null,!1,p,d);return null!==h?((0,o.spawnDynamicRequests)(h,t,s,i,d),y(h,r,n.renderedSearch,d.scrollableSegments,c,t.hash)):{tag:f.NavigationResultTag.MPA,data:r}}function h(e,t,r,n,a,u,l,i,s,c,d,p,h,g,_){let v={scrollableSegments:null,separateRefreshUrls:null},b=(0,o.startPPRNavigation)(e,r,u,l,i,g,null,null,s,c,d,a,v);return null!==b?((0,o.spawnDynamicRequests)(b,t,n,g,v),y(b,p,h,v.scrollableSegments,_,t.hash)):{tag:f.NavigationResultTag.MPA,data:p}}function y(e,t,r,n,a,u){return{tag:f.NavigationResultTag.Success,data:{flightRouterState:e.route,cacheNode:e.node,canonicalUrl:t,renderedSearch:r,scrollableSegments:n,shouldScroll:a,hash:u}}}function g(e,t,r){let n={},a={},u=r.slots;if(null!==u)for(let r in u){let o=g(e,t,u[r]);n[r]=o.flightRouterState,a[r]=o.seedData}let o=null,l=null,s=!0,f=(0,i.readSegmentCacheEntry)(e,r.varyPath);if(null!==f)switch(f.status){case i.EntryStatus.Fulfilled:o=f.rsc,l=f.loading,s=f.isPartial;break;case i.EntryStatus.Pending:{let e=(0,i.waitForSegmentCacheEntry)(f);o=e.then(e=>null!==e?e.rsc:null),l=e.then(e=>null!==e?e.loading:null),s=f.isPartial}case i.EntryStatus.Empty:case i.EntryStatus.Rejected:}return{flightRouterState:[(0,c.addSearchParamsIfPageSegment)(r.segment,Object.fromEntries(new URLSearchParams(t.renderedSearch))),n,null,null,r.isRootLayout],seedData:[o,a,l,s,!1]}}function _(e,t){let r=null,n=!0,a=(0,i.readSegmentCacheEntry)(e,t.metadata.varyPath);if(null!==a)switch(a.status){case i.EntryStatus.Fulfilled:r=a.rsc,n=a.isPartial;break;case i.EntryStatus.Pending:r=(0,i.waitForSegmentCacheEntry)(a).then(e=>null!==e?e.rsc:null),n=a.isPartial;case i.EntryStatus.Empty:case i.EntryStatus.Rejected:}return{rsc:r,isPartial:n}}let v=["",{},null,"refetch"];async function b(e,t,r,n,a,i,s,c,d){let h;switch(s){case o.FreshnessPolicy.Default:case o.FreshnessPolicy.HistoryTraversal:h=i;break;case o.FreshnessPolicy.Hydration:case o.FreshnessPolicy.RefreshAll:case o.FreshnessPolicy.HMRRefresh:h=v;break;default:h=i}let y=(0,u.fetchServerResponse)(t,{flightRouterState:h,nextUrl:n}),g=await y;if("string"==typeof g)return{tag:f.NavigationResultTag.MPA,data:g};let{flightData:_,canonicalUrl:b,renderedSearch:R,debugInfo:E}=g;null!==E&&d.push(...E);let P=m(i,_,R);return p(e,t,(0,l.createHrefFromUrl)(b),P,r,a,i,s,n,c)}function m(e,t,r){let n=e,a=null,u=null;for(let{segmentPath:e,tree:r,seedData:o,head:l}of t){let t=function e(t,r,n,a,u,o){let l;if(o===u.length)return{tree:n,data:a};let i=u[o],s=t[1],c=null!==r?r[1]:null,f={},d={};for(let t in s){let r=s[t],l=null!==c?c[t]??null:null;if(t===i){let i=e(r,l,n,a,u,o+2);f[t]=i.tree,d[t]=i.data}else f[t]=r,d[t]=l}return l=[t[0],f],2 in t&&(l[2]=t[2]),3 in t&&(l[3]=t[3]),4 in t&&(l[4]=t[4]),{tree:l,data:[null,d,null,!0,!1]}}(n,a,r,o,e,0);n=t.tree,a=t.data,u=l}return{tree:n,data:a,renderedSearch:r,head:u}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},54069,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DYNAMIC_STALETIME_MS:function(){return f},STATIC_STALETIME_MS:function(){return d},generateSegmentsFromPatch:function(){return function e(t){let r=[],[n,a]=t;if(0===Object.keys(a).length)return[[n]];for(let[t,u]of Object.entries(a))for(let a of e(u))""===n?r.push([t,...a]):r.push([n,t,...a]);return r}},handleExternalUrl:function(){return p},handleNavigationResult:function(){return h},navigateReducer:function(){return y}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(51191),o=e.r(47442),l=e.r(60355),i=e.r(9396),s=e.r(20896),c=e.r(95871),f=1e3*Number("0"),d=(0,s.getStaleTimeMs)(Number("300"));function p(e,t,r,n){return t.mpaNavigation=!0,t.canonicalUrl=r,t.pendingPush=n,t.scrollableSegments=void 0,(0,o.handleMutable)(e,t)}function h(e,t,r,n,a){switch(a.tag){case i.NavigationResultTag.MPA:return p(t,r,a.data,n);case i.NavigationResultTag.Success:{r.cache=a.data.cacheNode,r.patchedTree=a.data.flightRouterState,r.renderedSearch=a.data.renderedSearch,r.canonicalUrl=a.data.canonicalUrl,r.scrollableSegments=a.data.scrollableSegments??void 0,r.shouldScroll=a.data.shouldScroll,r.hashFragment=a.data.hash;let n=new URL(t.canonicalUrl,e);return e.pathname===n.pathname&&e.search===n.search&&e.hash!==n.hash&&(r.onlyHashChange=!0,r.shouldScroll=a.data.shouldScroll,r.hashFragment=e.hash,r.scrollableSegments=[]),(0,o.handleMutable)(t,r)}case i.NavigationResultTag.Async:return a.data.then(a=>h(e,t,r,n,a),()=>t);default:return t}}function y(e,t){let{url:r,isExternalUrl:n,navigateType:a,shouldScroll:o}=t,i={},s=(0,u.createHrefFromUrl)(r),f="push"===a;if(i.preserveCustomHistoryState=!1,i.pendingPush=f,n)return p(e,i,r.toString(),f);if(document.getElementById("__next-page-redirect"))return p(e,i,s,f);let d=new URL(e.canonicalUrl,location.origin),y=(0,l.navigate)(r,d,e.cache,e.tree,e.nextUrl,c.FreshnessPolicy.Default,o,i);return h(r,e,i,f,y)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},84356,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"hasInterceptionRouteInCurrentTree",{enumerable:!0,get:function(){return function e([t,r]){if(Array.isArray(t)&&("di(..)(..)"===t[2]||"ci(..)(..)"===t[2]||"di(.)"===t[2]||"ci(.)"===t[2]||"di(..)"===t[2]||"ci(..)"===t[2]||"di(...)"===t[2]||"ci(...)"===t[2])||"string"==typeof t&&(0,n.isInterceptionRouteAppPath)(t))return!0;if(r){for(let t in r)if(e(r[t]))return!0}return!1}}});let n=e.r(91463);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},69845,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={refreshDynamicData:function(){return f},refreshReducer:function(){return c}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(54069),o=e.r(60355),l=e.r(20896),i=e.r(84356),s=e.r(95871);function c(e){let t=e.nextUrl,r=e.tree;return(0,l.revalidateEntireCache)(t,r),f(e,s.FreshnessPolicy.RefreshAll)}function f(e,t){let r=e.nextUrl,n=(0,i.hasInterceptionRouteInCurrentTree)(e.tree)?e.previousNextUrl||r:null,a=e.canonicalUrl,l=new URL(a,location.origin),s=e.tree,c={tree:e.tree,renderedSearch:e.renderedSearch,data:null,head:null},f=Date.now(),d=(0,o.navigateToSeededRoute)(f,l,a,c,l,e.cache,s,t,n,!0),p={};return p.preserveCustomHistoryState=!1,(0,u.handleNavigationResult)(l,e,p,!1,d)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},91668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"serverPatchReducer",{enumerable:!0,get:function(){return i}});let n=e.r(51191),a=e.r(54069),u=e.r(60355),o=e.r(69845),l=e.r(95871);function i(e,t){let r={};r.preserveCustomHistoryState=!1;let i=t.mpa,s=new URL(t.url,location.origin),c=t.seed;if(i||null===c)return(0,a.handleExternalUrl)(e,r,s.href,!1);let f=new URL(e.canonicalUrl,location.origin);if(t.previousTree!==e.tree)return(0,o.refreshReducer)(e);let d=(0,n.createHrefFromUrl)(s),p=t.nextUrl,h=Date.now(),y=(0,u.navigateToSeededRoute)(h,s,d,c,f,e.cache,e.tree,l.FreshnessPolicy.RefreshAll,p,!0);return(0,a.handleNavigationResult)(s,e,r,!1,y)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73790,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"restoreReducer",{enumerable:!0,get:function(){return l}});let n=e.r(51191),a=e.r(34727),u=e.r(95871),o=e.r(54069);function l(e,t){let r,l,i=t.historyState;i?(r=i.tree,l=i.renderedSearch):(r=e.tree,l=e.renderedSearch);let s=new URL(e.canonicalUrl,location.origin),c=t.url,f=(0,n.createHrefFromUrl)(c),d=(0,a.extractPathFromFlightRouterState)(r)??c.pathname,p=Date.now(),h={scrollableSegments:null,separateRefreshUrls:null},y=(0,u.startPPRNavigation)(p,s,e.cache,e.tree,r,u.FreshnessPolicy.HistoryTraversal,null,null,null,null,!1,!1,h);return null===y?(0,o.handleExternalUrl)(e,{preserveCustomHistoryState:!0},f,!1):((0,u.spawnDynamicRequests)(y,c,d,u.FreshnessPolicy.HistoryTraversal,h),{canonicalUrl:f,renderedSearch:l,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:e.focusAndScrollRef,cache:y.node,tree:r,nextUrl:d,previousNextUrl:null,debugInfo:null})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},86720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"hmrRefreshReducer",{enumerable:!0,get:function(){return u}});let n=e.r(69845),a=e.r(95871);function u(e){return(0,n.refreshDynamicData)(e,a.FreshnessPolicy.HMRRefresh)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},92838,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={UnrecognizedActionError:function(){return u},unstable_isUnrecognizedActionError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});class u extends Error{constructor(...e){super(...e),this.name="UnrecognizedActionError"}}function o(e){return!!(e&&"object"==typeof e&&e instanceof u)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},27801,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"assignLocation",{enumerable:!0,get:function(){return a}});let n=e.r(5550);function a(e,t){if(e.startsWith(".")){let r=t.origin+t.pathname;return new URL((r.endsWith("/")?r:r+"/")+e)}return new URL((0,n.addBasePath)(e),t.href)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},34457,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},62266,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorage",{enumerable:!0,get:function(){return n.actionAsyncStorageInstance}});let n=e.r(34457)},24063,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return p},getRedirectTypeFromError:function(){return d},getURLFromRedirectError:function(){return f},permanentRedirect:function(){return c},redirect:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(76963),o=e.r(68391),l="u"{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"pathHasPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(72463);function a(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},52817,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"hasBasePath",{enumerable:!0,get:function(){return a}});let n=e.r(39584);function a(e){return(0,n.pathHasPrefix)(e,"")}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},87250,(e,t,r)=>{"use strict";function n(e){return e}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removeBasePath",{enumerable:!0,get:function(){return n}}),e.r(52817),("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39747,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={extractInfoFromServerReferenceId:function(){return u},omitUnusedArgs:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function u(e){let t=parseInt(e.slice(0,2),16),r=t>>1&63,n=Array(6);for(let e=0;e<6;e++){let t=r>>5-e&1;n[e]=1===t}return{type:1==(t>>7&1)?"use-cache":"server-action",usedArgs:n,hasRestArgs:1==(1&t)}}function o(e,t){let r=Array(e.length);for(let n=0;n=6&&t.hasRestArgs)&&(r[n]=e[n]);return r}},39146,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ActionDidNotRevalidate:function(){return u},ActionDidRevalidateDynamicOnly:function(){return l},ActionDidRevalidateStaticAndDynamic:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=0,o=1,l=2},45794,(e,t,r)=>{"use strict";let n;Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"serverActionReducer",{enumerable:!0,get:function(){return j}});let a=e.r(32120),u=e.r(92245),o=e.r(21768),l=e.r(92838),i=e.r(35326),s=e.r(27801),c=e.r(51191),f=e.r(54069),d=e.r(84356),p=e.r(50590),h=e.r(24063),y=e.r(68391),g=e.r(87250),_=e.r(52817),v=e.r(39747),b=e.r(20896),m=e.r(43369),R=e.r(60355),E=e.r(39146),P=e.r(57630),S=e.r(95871),O=i.createFromFetch;async function T(e,t,{actionId:r,actionArgs:c}){let f,d,h,g,_,b=(0,i.createTemporaryReferenceSet)(),R=(0,v.extractInfoFromServerReferenceId)(r),P="use-cache"===R.type?(0,v.omitUnusedArgs)(c,R):c,S=await (0,i.encodeReply)(P,{temporaryReferences:b}),T={Accept:o.RSC_CONTENT_TYPE_HEADER,[o.ACTION_HEADER]:r,[o.NEXT_ROUTER_STATE_TREE_HEADER]:(0,p.prepareFlightRouterStateForRequest)(e.tree)},j=(0,m.getDeploymentId)();j&&(T["x-deployment-id"]=j),t&&(T[o.NEXT_URL]=t);let w=await fetch(e.canonicalUrl,{method:"POST",headers:T,body:S});if("1"===w.headers.get(o.NEXT_ACTION_NOT_FOUND_HEADER))throw Object.defineProperty(new l.UnrecognizedActionError(`Server Action "${r}" was not found on the server. +Read more: https://nextjs.org/docs/messages/failed-to-find-server-action`),"__NEXT_ERROR_CODE",{value:"E715",enumerable:!1,configurable:!0});let A=w.headers.get("x-action-redirect"),[M,N]=A?.split(";")||[];switch(N){case"push":f=y.RedirectType.push;break;case"replace":f=y.RedirectType.replace;break;default:f=void 0}let D=!!w.headers.get(o.NEXT_IS_PRERENDER_HEADER),C=E.ActionDidNotRevalidate;try{let e=w.headers.get("x-action-revalidated");if(e){let t=JSON.parse(e);(t===E.ActionDidRevalidateStaticAndDynamic||t===E.ActionDidRevalidateDynamicOnly)&&(C=t)}}catch{}let x=M?(0,s.assignLocation)(M,new URL(e.canonicalUrl,window.location.href)):void 0,U=w.headers.get("content-type"),k=!!(U&&U.startsWith(o.RSC_CONTENT_TYPE_HEADER));if(!k&&!x)throw Object.defineProperty(Error(w.status>=400&&"text/plain"===U?await w.text():"An unexpected response was received from the server."),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});if(k){let e=await O(Promise.resolve(w),{callServer:a.callServer,findSourceMapURL:u.findSourceMapURL,temporaryReferences:b,debugChannel:n&&n(T)});d=x?void 0:e.a;let t=(0,p.normalizeFlightData)(e.f);""!==t&&(h=t,g=e.q,_=e.i)}else d=void 0,h=void 0,g=void 0,_=void 0;return{actionResult:d,actionFlightData:h,actionFlightDataRenderedSearch:g,actionFlightDataCouldBeIntercepted:_,redirectLocation:x,redirectType:f,revalidationKind:C,isPrerender:D}}function j(e,t){let{resolve:r,reject:n}=t,a={};a.preserveCustomHistoryState=!1;let u=(e.previousNextUrl||e.nextUrl)&&(0,d.hasInterceptionRouteInCurrentTree)(e.tree)?e.previousNextUrl||e.nextUrl:null;return T(e,u,t).then(async({revalidationKind:o,actionResult:l,actionFlightData:i,actionFlightDataRenderedSearch:s,actionFlightDataCouldBeIntercepted:d,redirectLocation:p,redirectType:h})=>{o!==E.ActionDidNotRevalidate&&(t.didRevalidate=!0,o===E.ActionDidRevalidateStaticAndDynamic&&(0,b.revalidateEntireCache)(u,e.tree));let v=h!==y.RedirectType.replace;if(e.pushRef.pendingPush=v,a.pendingPush=v,void 0!==p){let t=h||y.RedirectType.push;if((0,P.isExternalURL)(p)){let r=p.href;return n(w(r,t)),(0,f.handleExternalUrl)(e,a,r,v)}{let e=(0,c.createHrefFromUrl)(p,!1);n(w((0,_.hasBasePath)(e)?(0,g.removeBasePath)(e):e,t))}}else r(l);if(void 0===p&&o===E.ActionDidNotRevalidate&&void 0===i)return e;if(void 0===i&&void 0!==p)return(0,f.handleExternalUrl)(e,a,p.href,v);if("string"==typeof i)return(0,f.handleExternalUrl)(e,a,i,v);let m=new URL(e.canonicalUrl,location.origin),O=void 0!==p?p:m,T=e.tree,j=o===E.ActionDidNotRevalidate?S.FreshnessPolicy.Default:S.FreshnessPolicy.RefreshAll;if(void 0!==i){let t=i[0];if(void 0!==t&&t.isRootRender&&void 0!==s&&void 0!==d){let r=(0,c.createHrefFromUrl)(O),n={tree:t.tree,renderedSearch:s,data:t.seedData,head:t.head},o=Date.now(),l=(0,R.navigateToSeededRoute)(o,O,r,n,m,e.cache,T,j,u,!0);return(0,f.handleNavigationResult)(O,e,a,v,l)}}let A=(0,R.navigate)(O,m,e.cache,T,u,j,!0,a);return(0,f.handleNavigationResult)(O,e,a,v,A)},t=>(n(t),e))}function w(e,t){let r=(0,h.getRedirectError)(e,t);return r.handled=!0,r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},4924,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"reducer",{enumerable:!0,get:function(){return c}});let n=e.r(88540),a=e.r(54069),u=e.r(91668),o=e.r(73790),l=e.r(69845),i=e.r(86720),s=e.r(45794),c="u"{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"prefetch",{enumerable:!0,get:function(){return l}});let n=e.r(57630),a=e.r(77048),u=e.r(77709),o=e.r(9396);function l(e,t,r,l,i){let s=(0,n.createPrefetchURL)(e);if(null===s)return;let c=(0,a.createCacheKey)(s.href,t);(0,u.schedulePrefetchTask)(c,r,l,o.PrefetchPriority.Default,i)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},99781,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createMutableActionQueue:function(){return v},dispatchNavigateAction:function(){return R},dispatchTraverseAction:function(){return E},getCurrentAppRouterState:function(){return b},publicAppRouterInstance:function(){return P}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(88540),o=e.r(4924),l=e.r(71645),i=e.r(64245),s=e.r(9396),c=e.r(1411),f=e.r(41538),d=e.r(5550),p=e.r(57630),h=e.r(91949);function y(e,t){null!==e.pending?(e.pending=e.pending.next,null!==e.pending&&g({actionQueue:e,action:e.pending,setState:t})):e.needsRefresh&&(e.needsRefresh=!1,e.dispatch({type:u.ACTION_REFRESH},t))}async function g({actionQueue:e,action:t,setState:r}){let n=e.state;e.pending=t;let a=t.payload,o=e.action(n,a);function l(n){if(t.discarded){t.payload.type===u.ACTION_SERVER_ACTION&&t.payload.didRevalidate&&(e.needsRefresh=!0),y(e,r);return}e.state=n,y(e,r),t.resolve(n)}(0,i.isThenable)(o)?o.then(l,n=>{y(e,r),t.reject(n)}):l(o)}let _=null;function v(e,t){let r={state:e,dispatch:(e,t)=>(function(e,t,r){let n={resolve:r,reject:()=>{}};if(t.type!==u.ACTION_RESTORE){let e=new Promise((e,t)=>{n={resolve:e,reject:t}});(0,l.startTransition)(()=>{r(e)})}let a={payload:t,next:null,resolve:n.resolve,reject:n.reject};null===e.pending?(e.last=a,g({actionQueue:e,action:a,setState:r})):t.type===u.ACTION_NAVIGATE||t.type===u.ACTION_RESTORE?(e.pending.discarded=!0,a.next=e.pending.next,g({actionQueue:e,action:a,setState:r})):(null!==e.last&&(e.last.next=a),e.last=a)})(r,e,t),action:async(e,t)=>(0,o.reducer)(e,t),pending:null,last:null,onRouterTransitionStart:null!==t&&"function"==typeof t.onRouterTransitionStart?t.onRouterTransitionStart:null};if("u">typeof window){if(null!==_)throw Object.defineProperty(Error("Internal Next.js Error: createMutableActionQueue was called more than once"),"__NEXT_ERROR_CODE",{value:"E624",enumerable:!1,configurable:!0});_=r}return r}function b(){return null!==_?_.state:null}function m(){return null!==_?_.onRouterTransitionStart:null}function R(e,t,r,n){let a=new URL((0,d.addBasePath)(e),location.href);(0,h.setLinkForCurrentNavigation)(n);let o=m();null!==o&&o(e,t),(0,f.dispatchAppRouterAction)({type:u.ACTION_NAVIGATE,url:a,isExternalUrl:(0,p.isExternalURL)(a),locationSearch:location.search,shouldScroll:r,navigateType:t})}function E(e,t){let r=m();null!==r&&r(e,"traverse"),(0,f.dispatchAppRouterAction)({type:u.ACTION_RESTORE,url:new URL(e),historyState:t})}let P={back:()=>window.history.back(),forward:()=>window.history.forward(),prefetch:(e,t)=>{let r,n=function(){if(null===_)throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0});return _}();switch(t?.kind??u.PrefetchKind.AUTO){case u.PrefetchKind.AUTO:r=s.FetchStrategy.PPR;break;case u.PrefetchKind.FULL:r=s.FetchStrategy.Full;break;default:r=s.FetchStrategy.PPR}(0,c.prefetch)(e,n.state.nextUrl,n.state.tree,r,t?.onInvalidate??null)},replace:(e,t)=>{(0,l.startTransition)(()=>{R(e,"replace",t?.scroll??!0,null)})},push:(e,t)=>{(0,l.startTransition)(()=>{R(e,"push",t?.scroll??!0,null)})},refresh:()=>{(0,l.startTransition)(()=>{(0,f.dispatchAppRouterAction)({type:u.ACTION_REFRESH})})},hmrRefresh:()=>{throw Object.defineProperty(Error("hmrRefresh can only be used in development mode. Please use refresh instead."),"__NEXT_ERROR_CODE",{value:"E485",enumerable:!1,configurable:!0})}};"u">typeof window&&window.next&&(window.next.router=P),("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},8372,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={AppRouterContext:function(){return o},GlobalLayoutRouterContext:function(){return i},LayoutRouterContext:function(){return l},MissingSlotContext:function(){return c},TemplateContext:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(55682)._(e.r(71645)),o=u.default.createContext(null),l=u.default.createContext(null),i=u.default.createContext(null),s=u.default.createContext(null),c=u.default.createContext(new Set)},13957,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ServerInsertedHTMLContext:function(){return o},useServerInsertedHTML:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(90809)._(e.r(71645)),o=u.default.createContext(null);function l(e){let t=(0,u.useContext)(o);t&&t(e)}},22783,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"notFound",{enumerable:!0,get:function(){return u}});let n=e.r(54394),a=`${n.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function u(){let e=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw e.digest=a,e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},79854,(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"forbidden",{enumerable:!0,get:function(){return n}}),e.r(54394).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},22683,(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unauthorized",{enumerable:!0,get:function(){return n}}),e.r(54394).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},15507,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,a.isNextRouterError)(t)||(0,n.isBailoutToCSRError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let n=e.r(32061),a=e.r(65713);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},63138,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isHangingPromiseRejectionError:function(){return u},makeDevtoolsIOAwarePromise:function(){return f},makeHangingPromise:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function u(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===o}let o="HANGING_PROMISE_REJECTION";class l extends Error{constructor(e,t){super(`During prerendering, ${t} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${t} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${e}".`),this.route=e,this.expression=t,this.digest=o}}let i=new WeakMap;function s(e,t,r){if(e.aborted)return Promise.reject(new l(t,r));{let n=new Promise((n,a)=>{let u=a.bind(null,new l(t,r)),o=i.get(e);if(o)o.push(u);else{let t=[u];i.set(e,t),e.addEventListener("abort",()=>{for(let e=0;e{setTimeout(()=>{t(e)},0)})}},67287,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isPostpone",{enumerable:!0,get:function(){return a}});let n=Symbol.for("react.postpone");function a(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}},76353,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DynamicServerError:function(){return o},isDynamicServerError:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u="DYNAMIC_SERVER_USAGE";class o extends Error{constructor(e){super(`Dynamic server usage: ${e}`),this.description=e,this.digest=u}}function l(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===u}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},43248,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={StaticGenBailoutError:function(){return o},isStaticGenBailoutError:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u="NEXT_STATIC_GEN_BAILOUT";class o extends Error{constructor(...e){super(...e),this.code=u}}function l(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===u}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},54839,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={METADATA_BOUNDARY_NAME:function(){return u},OUTLET_BOUNDARY_NAME:function(){return l},ROOT_LAYOUT_BOUNDARY_NAME:function(){return i},VIEWPORT_BOUNDARY_NAME:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u="__next_metadata_boundary__",o="__next_viewport_boundary__",l="__next_outlet_boundary__",i="__next_root_layout_boundary__"},29419,(e,t,r)=>{"use strict";var n=e.i(47167);Object.defineProperty(r,"__esModule",{value:!0});var a={atLeastOneTask:function(){return i},scheduleImmediate:function(){return l},scheduleOnNextTick:function(){return o},waitAtLeastOneReactRenderTask:function(){return s}};for(var u in a)Object.defineProperty(r,u,{enumerable:!0,get:a[u]});let o=e=>{Promise.resolve().then(()=>{n.default.nextTick(e)})},l=e=>{setImmediate(e)};function i(){return new Promise(e=>l(e))}function s(){return new Promise(e=>setImmediate(e))}},67673,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a,u={Postpone:function(){return j},PreludeState:function(){return J},abortAndThrowOnSynchronousRequestDataAccess:function(){return T},abortOnSynchronousPlatformIOAccess:function(){return O},accessedDynamicData:function(){return U},annotateDynamicAccess:function(){return H},consumeDynamicAccess:function(){return k},createDynamicTrackingState:function(){return v},createDynamicValidationState:function(){return b},createHangingInputAbortSignal:function(){return L},createRenderInBrowserAbortSignal:function(){return F},delayUntilRuntimeStage:function(){return er},formatDynamicAPIAccesses:function(){return I},getFirstDynamicReason:function(){return m},getStaticShellDisallowedDynamicReasons:function(){return et},isDynamicPostpone:function(){return M},isPrerenderInterruptedError:function(){return x},logDisallowedDynamicError:function(){return Z},markCurrentScopeAsDynamic:function(){return R},postponeWithTracking:function(){return w},throwIfDisallowedDynamic:function(){return ee},throwToInterruptStaticGeneration:function(){return E},trackAllowedDynamicAccess:function(){return G},trackDynamicDataInDynamicRender:function(){return P},trackDynamicHoleInRuntimeShell:function(){return Y},trackDynamicHoleInStaticShell:function(){return z},useDynamicRouteParams:function(){return B},useDynamicSearchParams:function(){return $}};for(var o in u)Object.defineProperty(r,o,{enumerable:!0,get:u[o]});let l=(n=e.r(71645))&&n.__esModule?n:{default:n},i=e.r(76353),s=e.r(43248),c=e.r(62141),f=e.r(63599),d=e.r(63138),p=e.r(54839),h=e.r(29419),y=e.r(32061),g=e.r(12718),_="function"==typeof l.default.unstable_postpone;function v(e){return{isDebugDynamicAccesses:e,dynamicAccesses:[],syncDynamicErrorWithStack:null}}function b(){return{hasSuspenseAboveBody:!1,hasDynamicMetadata:!1,dynamicMetadata:null,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[]}}function m(e){var t;return null==(t=e.dynamicAccesses[0])?void 0:t.expression}function R(e,t,r){if(t)switch(t.type){case"cache":case"unstable-cache":case"private-cache":return}if(!e.forceDynamic&&!e.forceStatic){if(e.dynamicShouldError)throw Object.defineProperty(new s.StaticGenBailoutError(`Route ${e.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${r}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E553",enumerable:!1,configurable:!0});if(t)switch(t.type){case"prerender-ppr":return w(e.route,r,t.dynamicTracking);case"prerender-legacy":t.revalidate=0;let n=Object.defineProperty(new i.DynamicServerError(`Route ${e.route} couldn't be rendered statically because it used ${r}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E550",enumerable:!1,configurable:!0});throw e.dynamicUsageDescription=r,e.dynamicUsageStack=n.stack,n}}}function E(e,t,r){let n=Object.defineProperty(new i.DynamicServerError(`Route ${t.route} couldn't be rendered statically because it used \`${e}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E558",enumerable:!1,configurable:!0});throw r.revalidate=0,t.dynamicUsageDescription=e,t.dynamicUsageStack=n.stack,n}function P(e){switch(e.type){case"cache":case"unstable-cache":case"private-cache":return}}function S(e,t,r){let n=C(`Route ${e} needs to bail out of prerendering at this point because it used ${t}.`);r.controller.abort(n);let a=r.dynamicTracking;a&&a.dynamicAccesses.push({stack:a.isDebugDynamicAccesses?Error().stack:void 0,expression:t})}function O(e,t,r,n){let a=n.dynamicTracking;S(e,t,n),a&&null===a.syncDynamicErrorWithStack&&(a.syncDynamicErrorWithStack=r)}function T(e,t,r,n){if(!1===n.controller.signal.aborted){S(e,t,n);let a=n.dynamicTracking;a&&null===a.syncDynamicErrorWithStack&&(a.syncDynamicErrorWithStack=r)}throw C(`Route ${e} needs to bail out of prerendering at this point because it used ${t}.`)}function j({reason:e,route:t}){let r=c.workUnitAsyncStorage.getStore();w(t,e,r&&"prerender-ppr"===r.type?r.dynamicTracking:null)}function w(e,t,r){(function(){if(!_)throw Object.defineProperty(Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E224",enumerable:!1,configurable:!0})})(),r&&r.dynamicAccesses.push({stack:r.isDebugDynamicAccesses?Error().stack:void 0,expression:t}),l.default.unstable_postpone(A(e,t))}function A(e,t){return`Route ${e} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`}function M(e){return"object"==typeof e&&null!==e&&"string"==typeof e.message&&N(e.message)}function N(e){return e.includes("needs to bail out of prerendering at this point because it used")&&e.includes("Learn more: https://nextjs.org/docs/messages/ppr-caught-error")}if(!1===N(A("%%%","^^^")))throw Object.defineProperty(Error("Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E296",enumerable:!1,configurable:!0});let D="NEXT_PRERENDER_INTERRUPTED";function C(e){let t=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t.digest=D,t}function x(e){return"object"==typeof e&&null!==e&&e.digest===D&&"name"in e&&"message"in e&&e instanceof Error}function U(e){return e.length>0}function k(e,t){return e.dynamicAccesses.push(...t.dynamicAccesses),e.dynamicAccesses}function I(e){return e.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: +${t}`))}function F(){let e=new AbortController;return e.abort(Object.defineProperty(new y.BailoutToCSRError("Render in Browser"),"__NEXT_ERROR_CODE",{value:"E721",enumerable:!1,configurable:!0})),e.signal}function L(e){switch(e.type){case"prerender":case"prerender-runtime":let t=new AbortController;if(e.cacheSignal)e.cacheSignal.inputReady().then(()=>{t.abort()});else{let r=(0,c.getRuntimeStagePromise)(e);r?r.then(()=>(0,h.scheduleOnNextTick)(()=>t.abort())):(0,h.scheduleOnNextTick)(()=>t.abort())}return t.signal;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":return}}function H(e,t){let r=t.dynamicTracking;r&&r.dynamicAccesses.push({stack:r.isDebugDynamicAccesses?Error().stack:void 0,expression:e})}function B(e){let t=f.workAsyncStorage.getStore(),r=c.workUnitAsyncStorage.getStore();if(t&&r)switch(r.type){case"prerender-client":case"prerender":{let n=r.fallbackRouteParams;n&&n.size>0&&l.default.use((0,d.makeHangingPromise)(r.renderSignal,t.route,e));break}case"prerender-ppr":{let n=r.fallbackRouteParams;if(n&&n.size>0)return w(t.route,e,r.dynamicTracking);break}case"prerender-runtime":throw Object.defineProperty(new g.InvariantError(`\`${e}\` was called during a runtime prerender. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E771",enumerable:!1,configurable:!0});case"cache":case"private-cache":throw Object.defineProperty(new g.InvariantError(`\`${e}\` was called inside a cache scope. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0})}}function $(e){let t=f.workAsyncStorage.getStore(),r=c.workUnitAsyncStorage.getStore();if(t)switch(!r&&(0,c.throwForMissingRequestStore)(e),r.type){case"prerender-client":l.default.use((0,d.makeHangingPromise)(r.renderSignal,t.route,e));break;case"prerender-legacy":case"prerender-ppr":if(t.forceStatic)return;throw Object.defineProperty(new y.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});case"prerender":case"prerender-runtime":throw Object.defineProperty(new g.InvariantError(`\`${e}\` was called from a Server Component. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E795",enumerable:!1,configurable:!0});case"cache":case"unstable-cache":case"private-cache":throw Object.defineProperty(new g.InvariantError(`\`${e}\` was called inside a cache scope. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"request":return}}let X=/\n\s+at Suspense \(\)/,q=RegExp(`\\n\\s+at Suspense \\(\\)(?:(?!\\n\\s+at (?:body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6) \\(\\))[\\s\\S])*?\\n\\s+at ${p.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`),W=RegExp(`\\n\\s+at ${p.METADATA_BOUNDARY_NAME}[\\n\\s]`),K=RegExp(`\\n\\s+at ${p.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`),V=RegExp(`\\n\\s+at ${p.OUTLET_BOUNDARY_NAME}[\\n\\s]`);function G(e,t,r,n){if(!V.test(t)){if(W.test(t)){r.hasDynamicMetadata=!0;return}if(K.test(t)){r.hasDynamicViewport=!0;return}if(q.test(t)){r.hasAllowedDynamic=!0,r.hasSuspenseAboveBody=!0;return}else if(X.test(t)){r.hasAllowedDynamic=!0;return}else{if(n.syncDynamicErrorWithStack)return void r.dynamicErrors.push(n.syncDynamicErrorWithStack);let a=Q(`Route "${e.route}": Uncached data was accessed outside of . This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`,t);return void r.dynamicErrors.push(a)}}}function Y(e,t,r,n){if(!V.test(t)){if(W.test(t)){r.dynamicMetadata=Q(`Route "${e.route}": Uncached data or \`connection()\` was accessed inside \`generateMetadata\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`,t);return}if(K.test(t)){let n=Q(`Route "${e.route}": Uncached data or \`connection()\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`,t);r.dynamicErrors.push(n);return}if(q.test(t)){r.hasAllowedDynamic=!0,r.hasSuspenseAboveBody=!0;return}else if(X.test(t)){r.hasAllowedDynamic=!0;return}else{if(n.syncDynamicErrorWithStack)return void r.dynamicErrors.push(n.syncDynamicErrorWithStack);let a=Q(`Route "${e.route}": Uncached data or \`connection()\` was accessed outside of \`\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`,t);return void r.dynamicErrors.push(a)}}}function z(e,t,r,n){if(!V.test(t)){if(W.test(t)){r.dynamicMetadata=Q(`Route "${e.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateMetadata\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`,t);return}if(K.test(t)){let n=Q(`Route "${e.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`,t);r.dynamicErrors.push(n);return}if(q.test(t)){r.hasAllowedDynamic=!0,r.hasSuspenseAboveBody=!0;return}else if(X.test(t)){r.hasAllowedDynamic=!0;return}else{if(n.syncDynamicErrorWithStack)return void r.dynamicErrors.push(n.syncDynamicErrorWithStack);let a=Q(`Route "${e.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed outside of \`\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`,t);return void r.dynamicErrors.push(a)}}}function Q(e,t){let r=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return r.stack=r.name+": "+e+t,r}var J=((a={})[a.Full=0]="Full",a[a.Empty=1]="Empty",a[a.Errored=2]="Errored",a);function Z(e,t){console.error(t),e.dev||(e.hasReadableErrorStacks?console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \`next dev\`, then open "${e.route}" in your browser to investigate the error.`):console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following: + - Start the app in development mode by running \`next dev\`, then open "${e.route}" in your browser to investigate the error. + - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`))}function ee(e,t,r,n){if(n.syncDynamicErrorWithStack)throw Z(e,n.syncDynamicErrorWithStack),new s.StaticGenBailoutError;if(0!==t){if(r.hasSuspenseAboveBody)return;let n=r.dynamicErrors;if(n.length>0){for(let t=0;t0)return n;if(1===t)return[Object.defineProperty(new g.InvariantError(`Route "${e.route}" did not produce a static shell and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E936",enumerable:!1,configurable:!0})]}else if(!1===r.hasAllowedDynamic&&0===r.dynamicErrors.length&&r.dynamicMetadata)return[r.dynamicMetadata];return[]}function er(e,t){return e.runtimeStagePromise?e.runtimeStagePromise.then(()=>t):t}},91414,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,o.isNextRouterError)(t)||(0,u.isBailoutToCSRError)(t)||(0,i.isDynamicServerError)(t)||(0,l.isDynamicPostpone)(t)||(0,a.isPostpone)(t)||(0,n.isHangingPromiseRejectionError)(t)||(0,l.isPrerenderInterruptedError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let n=e.r(63138),a=e.r(67287),u=e.r(32061),o=e.r(65713),l=e.r(67673),i=e.r(76353);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return n}});let n="u"{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ReadonlyURLSearchParams:function(){return u.ReadonlyURLSearchParams},RedirectType:function(){return l.RedirectType},forbidden:function(){return s.forbidden},notFound:function(){return i.notFound},permanentRedirect:function(){return o.permanentRedirect},redirect:function(){return o.redirect},unauthorized:function(){return c.unauthorized},unstable_isUnrecognizedActionError:function(){return d},unstable_rethrow:function(){return f.unstable_rethrow}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(3680),o=e.r(24063),l=e.r(68391),i=e.r(22783),s=e.r(79854),c=e.r(22683),f=e.r(90508);function d(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},76562,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ReadonlyURLSearchParams:function(){return l.ReadonlyURLSearchParams},RedirectType:function(){return f.RedirectType},ServerInsertedHTMLContext:function(){return s.ServerInsertedHTMLContext},forbidden:function(){return f.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return f.permanentRedirect},redirect:function(){return f.redirect},unauthorized:function(){return f.unauthorized},unstable_isUnrecognizedActionError:function(){return c.unstable_isUnrecognizedActionError},unstable_rethrow:function(){return f.unstable_rethrow},useParams:function(){return _},usePathname:function(){return y},useRouter:function(){return g},useSearchParams:function(){return h},useSelectedLayoutSegment:function(){return b},useSelectedLayoutSegments:function(){return v},useServerInsertedHTML:function(){return s.useServerInsertedHTML}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(90809)._(e.r(71645)),o=e.r(8372),l=e.r(61994),i=e.r(13258),s=e.r(13957),c=e.r(92838),f=e.r(92805),d="u"e?new l.ReadonlyURLSearchParams(e):null,[e])}function y(){return d?.("usePathname()"),(0,u.useContext)(l.PathnameContext)}function g(){let e=(0,u.useContext)(o.AppRouterContext);if(null===e)throw Object.defineProperty(Error("invariant expected app router to be mounted"),"__NEXT_ERROR_CODE",{value:"E238",enumerable:!1,configurable:!0});return e}function _(){return d?.("useParams()"),(0,u.useContext)(l.PathParamsContext)}function v(e="children"){d?.("useSelectedLayoutSegments()");let t=(0,u.useContext)(o.LayoutRouterContext);return t?(0,i.getSelectedLayoutSegmentPath)(t.parentTree,e):null}function b(e="children"){d?.("useSelectedLayoutSegment()"),(0,u.useContext)(l.NavigationPromisesContext);let t=v(e);return(0,i.computeSelectedLayoutSegment)(t,e)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},58442,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={RedirectBoundary:function(){return p},RedirectErrorBoundary:function(){return d}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(90809),o=e.r(43476),l=u._(e.r(71645)),i=e.r(76562),s=e.r(24063),c=e.r(68391);function f({redirect:e,reset:t,redirectType:r}){let n=(0,i.useRouter)();return(0,l.useEffect)(()=>{l.default.startTransition(()=>{r===c.RedirectType.push?n.push(e,{}):n.replace(e,{}),t()})},[e,r,t,n]),null}class d extends l.default.Component{constructor(e){super(e),this.state={redirect:null,redirectType:null}}static getDerivedStateFromError(e){if((0,c.isRedirectError)(e)){let t=(0,s.getURLFromRedirectError)(e),r=(0,s.getRedirectTypeFromError)(e);return"handled"in e?{redirect:null,redirectType:null}:{redirect:t,redirectType:r}}throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,o.jsx)(f,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}}function p({children:e}){let t=(0,i.useRouter)();return(0,o.jsx)(d,{router:t,children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},1244,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unresolvedThenable",{enumerable:!0,get:function(){return n}});let n={then:()=>{}};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97367,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={MetadataBoundary:function(){return l},OutletBoundary:function(){return s},RootLayoutBoundary:function(){return c},ViewportBoundary:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let u=e.r(54839),o={[u.METADATA_BOUNDARY_NAME]:function({children:e}){return e},[u.VIEWPORT_BOUNDARY_NAME]:function({children:e}){return e},[u.OUTLET_BOUNDARY_NAME]:function({children:e}){return e},[u.ROOT_LAYOUT_BOUNDARY_NAME]:function({children:e}){return e}},l=o[u.METADATA_BOUNDARY_NAME.slice(0)],i=o[u.VIEWPORT_BOUNDARY_NAME.slice(0)],s=o[u.OUTLET_BOUNDARY_NAME.slice(0)],c=o[u.ROOT_LAYOUT_BOUNDARY_NAME.slice(0)]}]); \ No newline at end of file diff --git a/backend/static/_next/static/chunks/49849b1b478e6b82.js b/backend/static/_next/static/chunks/49849b1b478e6b82.js new file mode 100644 index 00000000..7bf414ac --- /dev/null +++ b/backend/static/_next/static/chunks/49849b1b478e6b82.js @@ -0,0 +1 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68027,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return s}});let n=e.r(43476),o=e.r(12354),i={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},u={fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"},s=function({error:e}){let t=e?.digest;return(0,n.jsxs)("html",{id:"__next_error__",children:[(0,n.jsx)("head",{}),(0,n.jsxs)("body",{children:[(0,n.jsx)(o.HandleISRError,{error:e}),(0,n.jsx)("div",{style:i,children:(0,n.jsxs)("div",{children:[(0,n.jsxs)("h2",{style:u,children:["Application error: a ",t?"server":"client","-side exception has occurred while loading ",window.location.hostname," (see the"," ",t?"server logs":"browser console"," for more information)."]}),t?(0,n.jsx)("p",{style:u,children:`Digest: ${t}`}):null]})})]})]})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},35451,(e,t,r)=>{var n={229:function(e){var t,r,n,o=e.exports={};function i(){throw Error("setTimeout has not been defined")}function u(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{r="function"==typeof clearTimeout?clearTimeout:u}catch(e){r=u}function s(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var c=[],a=!1,l=-1;function f(){a&&n&&(a=!1,n.length?c=n.concat(c):l=-1,c.length&&p())}function p(){if(!a){var e=s(f);a=!0;for(var t=c.length;t;){for(n=c,c=[];++l1)for(var r=1;r{"use strict";var n,o;t.exports=(null==(n=e.g.process)?void 0:n.env)&&"object"==typeof(null==(o=e.g.process)?void 0:o.env)?e.g.process:e.r(35451)},45689,(e,t,r)=>{"use strict";var n=Symbol.for("react.transitional.element");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var i in r={},t)"key"!==i&&(r[i]=t[i]);else r=t;return{$$typeof:n,type:e,key:o,ref:void 0!==(t=r.ref)?t:null,props:r}}r.Fragment=Symbol.for("react.fragment"),r.jsx=o,r.jsxs=o},43476,(e,t,r)=>{"use strict";t.exports=e.r(45689)},90317,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={bindSnapshot:function(){return a},createAsyncLocalStorage:function(){return c},createSnapshot:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class u{disable(){throw i}getStore(){}run(){throw i}exit(){throw i}enterWith(){throw i}static bind(e){return e}}let s="u">typeof globalThis&&globalThis.AsyncLocalStorage;function c(){return s?new s:new u}function a(e){return s?s.bind(e):u.bind(e)}function l(){return s?s.snapshot():function(e,...t){return e(...t)}}},42344,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},63599,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=e.r(42344)},12354,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HandleISRError",{enumerable:!0,get:function(){return o}});let n="u"{"use strict";var n=e.i(47167),o=Symbol.for("react.transitional.element"),i=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),l=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),h=Symbol.for("react.activity"),g=Symbol.for("react.view_transition"),v=Symbol.iterator,_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,b={};function S(e,t,r){this.props=e,this.context=t,this.refs=b,this.updater=r||_}function O(){}function E(e,t,r){this.props=e,this.context=t,this.refs=b,this.updater=r||_}S.prototype.isReactComponent={},S.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},S.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},O.prototype=S.prototype;var T=E.prototype=new O;T.constructor=E,m(T,S.prototype),T.isPureReactComponent=!0;var w=Array.isArray;function j(){}var R={H:null,A:null,T:null,S:null},x=Object.prototype.hasOwnProperty;function A(e,t,r){var n=r.ref;return{$$typeof:o,type:e,key:t,ref:void 0!==n?n:null,props:r}}function P(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var C=/\/+/g;function k(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function H(e,t,r){if(null==e)return e;var n=[],u=0;return!function e(t,r,n,u,s){var c,a,l,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var p=!1;if(null===t)p=!0;else switch(f){case"bigint":case"string":case"number":p=!0;break;case"object":switch(t.$$typeof){case o:case i:p=!0;break;case y:return e((p=t._init)(t._payload),r,n,u,s)}}if(p)return s=s(t),p=""===u?"."+k(t,0):u,w(s)?(n="",null!=p&&(n=p.replace(C,"$&/")+"/"),e(s,r,n,"",function(e){return e})):null!=s&&(P(s)&&(c=s,a=n+(null==s.key||t&&t.key===s.key?"":(""+s.key).replace(C,"$&/")+"/")+p,s=A(c.type,a,c.props)),r.push(s)),1;p=0;var d=""===u?".":u+":";if(w(t))for(var h=0;h{"use strict";t.exports=e.r(50740)},18800,(e,t,r)=>{"use strict";var n=e.r(71645);function o(e){var t="https://react.dev/errors/"+e;if(1{"use strict";!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),t.exports=e.r(18800)}]); \ No newline at end of file diff --git a/backend/static/_next/static/chunks/a6dad97d9634a72d.js b/backend/static/_next/static/chunks/a6dad97d9634a72d.js new file mode 100644 index 00000000..ab422b94 --- /dev/null +++ b/backend/static/_next/static/chunks/a6dad97d9634a72d.js @@ -0,0 +1 @@ +!function(){var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r,n,o=function(t){return t&&t.Math===Math&&t},i=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof t&&t)||o("object"==typeof t&&t)||function(){return this}()||Function("return this")(),a=function(t){try{return!!t()}catch(t){return!0}},u=!a(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}),s=!a(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}),c=Function.prototype.call,f=s?c.bind(c):function(){return c.apply(c,arguments)},l={}.propertyIsEnumerable,h=Object.getOwnPropertyDescriptor,p=h&&!l.call({1:2},1)?function(t){var e=h(this,t);return!!e&&e.enumerable}:l,v={f:p},d=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},g=Function.prototype,y=g.call,m=s&&g.bind.bind(y,y),b=s?m:function(t){return function(){return y.apply(t,arguments)}},w=b({}.toString),S=b("".slice),E=function(t){return S(w(t),8,-1)},O=Object,x=b("".split),R=a(function(){return!O("z").propertyIsEnumerable(0)})?function(t){return"String"===E(t)?x(t,""):O(t)}:O,P=function(t){return null==t},A=TypeError,j=function(t){if(P(t))throw new A("Can't call method on "+t);return t},k=function(t){return R(j(t))},I="object"==typeof document&&document.all,T=void 0===I&&void 0!==I?function(t){return"function"==typeof t||t===I}:function(t){return"function"==typeof t},M=function(t){return"object"==typeof t?null!==t:T(t)},L=function(t,e){return arguments.length<2?T(r=i[t])?r:void 0:i[t]&&i[t][e];var r},U=b({}.isPrototypeOf),N=i.navigator,C=N&&N.userAgent,_=C?String(C):"",F=i.process,B=i.Deno,D=F&&F.versions||B&&B.version,z=D&&D.v8;z&&(n=(r=z.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!n&&_&&(!(r=_.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=_.match(/Chrome\/(\d+)/))&&(n=+r[1]);var W=n,q=i.String,H=!!Object.getOwnPropertySymbols&&!a(function(){var t=Symbol("symbol detection");return!q(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&W&&W<41}),$=H&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,K=Object,G=$?function(t){return"symbol"==typeof t}:function(t){var e=L("Symbol");return T(e)&&U(e.prototype,K(t))},V=String,Y=function(t){try{return V(t)}catch(t){return"Object"}},X=TypeError,J=function(t){if(T(t))return t;throw new X(Y(t)+" is not a function")},Q=function(t,e){var r=t[e];return P(r)?void 0:J(r)},Z=TypeError,tt=Object.defineProperty,et=function(t,e){try{tt(i,t,{value:e,configurable:!0,writable:!0})}catch(r){i[t]=e}return e},rt=e(function(t){var e="__core-js_shared__",r=t.exports=i[e]||et(e,{});(r.versions||(r.versions=[])).push({version:"3.38.1",mode:"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})}),nt=function(t,e){return rt[t]||(rt[t]=e||{})},ot=Object,it=function(t){return ot(j(t))},at=b({}.hasOwnProperty),ut=Object.hasOwn||function(t,e){return at(it(t),e)},st=0,ct=Math.random(),ft=b(1..toString),lt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+ft(++st+ct,36)},ht=i.Symbol,pt=nt("wks"),vt=$?ht.for||ht:ht&&ht.withoutSetter||lt,dt=function(t){return ut(pt,t)||(pt[t]=H&&ut(ht,t)?ht[t]:vt("Symbol."+t)),pt[t]},gt=TypeError,yt=dt("toPrimitive"),mt=function(t,e){if(!M(t)||G(t))return t;var r,n=Q(t,yt);if(n){if(void 0===e&&(e="default"),r=f(n,t,e),!M(r)||G(r))return r;throw new gt("Can't convert object to primitive value")}return void 0===e&&(e="number"),function(t,e){var r,n;if("string"===e&&T(r=t.toString)&&!M(n=f(r,t)))return n;if(T(r=t.valueOf)&&!M(n=f(r,t)))return n;if("string"!==e&&T(r=t.toString)&&!M(n=f(r,t)))return n;throw new Z("Can't convert object to primitive value")}(t,e)},bt=function(t){var e=mt(t,"string");return G(e)?e:e+""},wt=i.document,St=M(wt)&&M(wt.createElement),Et=function(t){return St?wt.createElement(t):{}},Ot=!u&&!a(function(){return 7!==Object.defineProperty(Et("div"),"a",{get:function(){return 7}}).a}),xt=Object.getOwnPropertyDescriptor,Rt={f:u?xt:function(t,e){if(t=k(t),e=bt(e),Ot)try{return xt(t,e)}catch(t){}if(ut(t,e))return d(!f(v.f,t,e),t[e])}},Pt=u&&a(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype}),At=String,jt=TypeError,kt=function(t){if(M(t))return t;throw new jt(At(t)+" is not an object")},It=TypeError,Tt=Object.defineProperty,Mt=Object.getOwnPropertyDescriptor,Lt="enumerable",Ut="configurable",Nt="writable",Ct={f:u?Pt?function(t,e,r){if(kt(t),e=bt(e),kt(r),"function"==typeof t&&"prototype"===e&&"value"in r&&Nt in r&&!r[Nt]){var n=Mt(t,e);n&&n[Nt]&&(t[e]=r.value,r={configurable:Ut in r?r[Ut]:n[Ut],enumerable:Lt in r?r[Lt]:n[Lt],writable:!1})}return Tt(t,e,r)}:Tt:function(t,e,r){if(kt(t),e=bt(e),kt(r),Ot)try{return Tt(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new It("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},_t=u?function(t,e,r){return Ct.f(t,e,d(1,r))}:function(t,e,r){return t[e]=r,t},Ft=Function.prototype,Bt=u&&Object.getOwnPropertyDescriptor,Dt=ut(Ft,"name"),zt={EXISTS:Dt,PROPER:Dt&&"something"===function(){}.name,CONFIGURABLE:Dt&&(!u||u&&Bt(Ft,"name").configurable)},Wt=b(Function.toString);T(rt.inspectSource)||(rt.inspectSource=function(t){return Wt(t)});var qt,Ht,$t,Kt=rt.inspectSource,Gt=i.WeakMap,Vt=T(Gt)&&/native code/.test(String(Gt)),Yt=nt("keys"),Xt=function(t){return Yt[t]||(Yt[t]=lt(t))},Jt={},Qt="Object already initialized",Zt=i.TypeError;if(Vt||rt.state){var te=rt.state||(rt.state=new(0,i.WeakMap));te.get=te.get,te.has=te.has,te.set=te.set,qt=function(t,e){if(te.has(t))throw new Zt(Qt);return e.facade=t,te.set(t,e),e},Ht=function(t){return te.get(t)||{}},$t=function(t){return te.has(t)}}else{var ee=Xt("state");Jt[ee]=!0,qt=function(t,e){if(ut(t,ee))throw new Zt(Qt);return e.facade=t,_t(t,ee,e),e},Ht=function(t){return ut(t,ee)?t[ee]:{}},$t=function(t){return ut(t,ee)}}var re,ne={set:qt,get:Ht,has:$t,enforce:function(t){return $t(t)?Ht(t):qt(t,{})},getterFor:function(t){return function(e){var r;if(!M(e)||(r=Ht(e)).type!==t)throw new Zt("Incompatible receiver, "+t+" required");return r}}},oe=e(function(t){var e=zt.CONFIGURABLE,r=ne.enforce,n=ne.get,o=String,i=Object.defineProperty,s=b("".slice),c=b("".replace),f=b([].join),l=u&&!a(function(){return 8!==i(function(){},"length",{value:8}).length}),h=String(String).split("String"),p=t.exports=function(t,n,a){"Symbol("===s(o(n),0,7)&&(n="["+c(o(n),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),a&&a.getter&&(n="get "+n),a&&a.setter&&(n="set "+n),(!ut(t,"name")||e&&t.name!==n)&&(u?i(t,"name",{value:n,configurable:!0}):t.name=n),l&&a&&ut(a,"arity")&&t.length!==a.arity&&i(t,"length",{value:a.arity});try{a&&ut(a,"constructor")&&a.constructor?u&&i(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var p=r(t);return ut(p,"source")||(p.source=f(h,"string"==typeof n?n:"")),t};Function.prototype.toString=p(function(){return T(this)&&n(this).source||Kt(this)},"toString")}),ie=function(t,e,r,n){n||(n={});var o=n.enumerable,i=void 0!==n.name?n.name:e;if(T(r)&&oe(r,i,n),n.global)o?t[e]=r:et(e,r);else{try{n.unsafe?t[e]&&(o=!0):delete t[e]}catch(t){}o?t[e]=r:Ct.f(t,e,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return t},ae=Math.ceil,ue=Math.floor,se=Math.trunc||function(t){var e=+t;return(e>0?ue:ae)(e)},ce=function(t){var e=+t;return e!=e||0===e?0:se(e)},fe=Math.max,le=Math.min,he=function(t,e){var r=ce(t);return r<0?fe(r+e,0):le(r,e)},pe=Math.min,ve=function(t){var e=ce(t);return e>0?pe(e,9007199254740991):0},de=function(t){return ve(t.length)},ge=function(t){return function(e,r,n){var o=k(e),i=de(o);if(0===i)return!t&&-1;var a,u=he(n,i);if(t&&r!=r){for(;i>u;)if((a=o[u++])!=a)return!0}else for(;i>u;u++)if((t||u in o)&&o[u]===r)return t||u||0;return!t&&-1}},ye={includes:ge(!0),indexOf:ge(!1)},me=ye.indexOf,be=b([].push),we=function(t,e){var r,n=k(t),o=0,i=[];for(r in n)!ut(Jt,r)&&ut(n,r)&&be(i,r);for(;e.length>o;)ut(n,r=e[o++])&&(~me(i,r)||be(i,r));return i},Se=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Ee=Se.concat("length","prototype"),Oe={f:Object.getOwnPropertyNames||function(t){return we(t,Ee)}},xe={f:Object.getOwnPropertySymbols},Re=b([].concat),Pe=L("Reflect","ownKeys")||function(t){var e=Oe.f(kt(t)),r=xe.f;return r?Re(e,r(t)):e},Ae=function(t,e,r){for(var n=Pe(e),o=Ct.f,i=Rt.f,a=0;aa;)Ct.f(t,r=o[a++],n[r]);return t},Be={f:Fe},De=L("document","documentElement"),ze="prototype",We="script",qe=Xt("IE_PROTO"),He=function(){},$e=function(t){return"<"+We+">"+t+""},Ke=function(t){t.write($e("")),t.close();var e=t.parentWindow.Object;return t=null,e},Ge=function(){try{re=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;Ge="undefined"!=typeof document?document.domain&&re?Ke(re):(e=Et("iframe"),r="java"+We+":",e.style.display="none",De.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write($e("document.F=Object")),t.close(),t.F):Ke(re);for(var n=Se.length;n--;)delete Ge[ze][Se[n]];return Ge()};Jt[qe]=!0;var Ve=Object.create||function(t,e){var r;return null!==t?(He[ze]=kt(t),r=new He,He[ze]=null,r[qe]=t):r=Ge(),void 0===e?r:Be.f(r,e)},Ye=Ct.f,Xe=dt("unscopables"),Je=Array.prototype;void 0===Je[Xe]&&Ye(Je,Xe,{configurable:!0,value:Ve(null)});var Qe=function(t){Je[Xe][t]=!0};Ce({target:"Array",proto:!0},{at:function(t){var e=it(this),r=de(e),n=ce(t),o=n>=0?n:r+n;return o<0||o>=r?void 0:e[o]}}),Qe("at");var Ze=function(t,e){return b(i[t].prototype[e])},tr=(Ze("Array","at"),TypeError),er=function(t,e){if(!delete t[e])throw new tr("Cannot delete property "+Y(e)+" of "+Y(t))},rr=Math.min,nr=[].copyWithin||function(t,e){var r=it(this),n=de(r),o=he(t,n),i=he(e,n),a=arguments.length>2?arguments[2]:void 0,u=rr((void 0===a?n:he(a,n))-i,n-o),s=1;for(i0;)i in r?r[o]=r[i]:er(r,o),o+=s,i+=s;return r};Ce({target:"Array",proto:!0},{copyWithin:nr}),Qe("copyWithin"),Ze("Array","copyWithin"),Ce({target:"Array",proto:!0},{fill:function(t){for(var e=it(this),r=de(e),n=arguments.length,o=he(n>1?arguments[1]:void 0,r),i=n>2?arguments[2]:void 0,a=void 0===i?r:he(i,r);a>o;)e[o++]=t;return e}}),Qe("fill"),Ze("Array","fill");var or=function(t){if("Function"===E(t))return b(t)},ir=or(or.bind),ar=function(t,e){return J(t),void 0===e?t:s?ir(t,e):function(){return t.apply(e,arguments)}},ur=Array.isArray||function(t){return"Array"===E(t)},sr={};sr[dt("toStringTag")]="z";var cr="[object z]"===String(sr),fr=dt("toStringTag"),lr=Object,hr="Arguments"===E(function(){return arguments}()),pr=cr?E:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=lr(t),fr))?r:hr?E(e):"Object"===(n=E(e))&&T(e.callee)?"Arguments":n},vr=function(){},dr=L("Reflect","construct"),gr=/^\s*(?:class|function)\b/,yr=b(gr.exec),mr=!gr.test(vr),br=function(t){if(!T(t))return!1;try{return dr(vr,[],t),!0}catch(t){return!1}},wr=function(t){if(!T(t))return!1;switch(pr(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return mr||!!yr(gr,Kt(t))}catch(t){return!0}};wr.sham=!0;var Sr=!dr||a(function(){var t;return br(br.call)||!br(Object)||!br(function(){t=!0})||t})?wr:br,Er=dt("species"),Or=Array,xr=function(t,e){return new(function(t){var e;return ur(t)&&(Sr(e=t.constructor)&&(e===Or||ur(e.prototype))||M(e)&&null===(e=e[Er]))&&(e=void 0),void 0===e?Or:e}(t))(0===e?0:e)},Rr=b([].push),Pr=function(t){var e=1===t,r=2===t,n=3===t,o=4===t,i=6===t,a=7===t,u=5===t||i;return function(s,c,f,l){for(var h,p,v=it(s),d=R(v),g=de(d),y=ar(c,f),m=0,b=l||xr,w=e?b(s,g):r||a?b(s,0):void 0;g>m;m++)if((u||m in d)&&(p=y(h=d[m],m,v),t))if(e)w[m]=p;else if(p)switch(t){case 3:return!0;case 5:return h;case 6:return m;case 2:Rr(w,h)}else switch(t){case 4:return!1;case 7:Rr(w,h)}return i?-1:n||o?o:w}},Ar={forEach:Pr(0),map:Pr(1),filter:Pr(2),some:Pr(3),every:Pr(4),find:Pr(5),findIndex:Pr(6),filterReject:Pr(7)},jr=Ar.find,kr="find",Ir=!0;kr in[]&&Array(1)[kr](function(){Ir=!1}),Ce({target:"Array",proto:!0,forced:Ir},{find:function(t){return jr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(kr),Ze("Array","find");var Tr=Ar.findIndex,Mr="findIndex",Lr=!0;Mr in[]&&Array(1)[Mr](function(){Lr=!1}),Ce({target:"Array",proto:!0,forced:Lr},{findIndex:function(t){return Tr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(Mr),Ze("Array","findIndex");var Ur=TypeError,Nr=function(t){if(t>9007199254740991)throw Ur("Maximum allowed index exceeded");return t},Cr=function(t,e,r,n,o,i,a,u){for(var s,c,f=o,l=0,h=!!a&&ar(a,u);l0&&ur(s)?(c=de(s),f=Cr(t,e,s,c,f,i-1)-1):(Nr(f+1),t[f]=s),f++),l++;return f},_r=Cr;Ce({target:"Array",proto:!0},{flatMap:function(t){var e,r=it(this),n=de(r);return J(t),(e=xr(r,0)).length=_r(e,r,r,n,0,1,t,arguments.length>1?arguments[1]:void 0),e}}),Qe("flatMap"),Ze("Array","flatMap"),Ce({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=it(this),r=de(e),n=xr(e,0);return n.length=_r(n,e,e,r,0,void 0===t?1:ce(t)),n}}),Qe("flat"),Ze("Array","flat");var Fr,Br,Dr,zr=String,Wr=function(t){if("Symbol"===pr(t))throw new TypeError("Cannot convert a Symbol value to a string");return zr(t)},qr=b("".charAt),Hr=b("".charCodeAt),$r=b("".slice),Kr=function(t){return function(e,r){var n,o,i=Wr(j(e)),a=ce(r),u=i.length;return a<0||a>=u?t?"":void 0:(n=Hr(i,a))<55296||n>56319||a+1===u||(o=Hr(i,a+1))<56320||o>57343?t?qr(i,a):n:t?$r(i,a,a+2):o-56320+(n-55296<<10)+65536}},Gr={codeAt:Kr(!1),charAt:Kr(!0)},Vr=!a(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}),Yr=Xt("IE_PROTO"),Xr=Object,Jr=Xr.prototype,Qr=Vr?Xr.getPrototypeOf:function(t){var e=it(t);if(ut(e,Yr))return e[Yr];var r=e.constructor;return T(r)&&e instanceof r?r.prototype:e instanceof Xr?Jr:null},Zr=dt("iterator"),tn=!1;[].keys&&("next"in(Dr=[].keys())?(Br=Qr(Qr(Dr)))!==Object.prototype&&(Fr=Br):tn=!0);var en=!M(Fr)||a(function(){var t={};return Fr[Zr].call(t)!==t});en&&(Fr={}),T(Fr[Zr])||ie(Fr,Zr,function(){return this});var rn={IteratorPrototype:Fr,BUGGY_SAFARI_ITERATORS:tn},nn=Ct.f,on=dt("toStringTag"),an=function(t,e,r){t&&!r&&(t=t.prototype),t&&!ut(t,on)&&nn(t,on,{configurable:!0,value:e})},un={},sn=rn.IteratorPrototype,cn=function(){return this},fn=function(t,e,r,n){var o=e+" Iterator";return t.prototype=Ve(sn,{next:d(+!n,r)}),an(t,o,!1),un[o]=cn,t},ln=function(t,e,r){try{return b(J(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}},hn=String,pn=TypeError,vn=function(t){if(function(t){return M(t)||null===t}(t))return t;throw new pn("Can't set "+hn(t)+" as a prototype")},dn=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=ln(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return j(r),vn(n),M(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0),gn=zt.PROPER,yn=zt.CONFIGURABLE,mn=rn.IteratorPrototype,bn=rn.BUGGY_SAFARI_ITERATORS,wn=dt("iterator"),Sn="keys",En="values",On="entries",xn=function(){return this},Rn=function(t,e,r,n,o,i,a){fn(r,e,n);var u,s,c,l=function(t){if(t===o&&g)return g;if(!bn&&t&&t in v)return v[t];switch(t){case Sn:case En:case On:return function(){return new r(this,t)}}return function(){return new r(this)}},h=e+" Iterator",p=!1,v=t.prototype,d=v[wn]||v["@@iterator"]||o&&v[o],g=!bn&&d||l(o),y="Array"===e&&v.entries||d;if(y&&(u=Qr(y.call(new t)))!==Object.prototype&&u.next&&(Qr(u)!==mn&&(dn?dn(u,mn):T(u[wn])||ie(u,wn,xn)),an(u,h,!0)),gn&&o===En&&d&&d.name!==En&&(yn?_t(v,"name",En):(p=!0,g=function(){return f(d,this)})),o)if(s={values:l(En),keys:i?g:l(Sn),entries:l(On)},a)for(c in s)(bn||p||!(c in v))&&ie(v,c,s[c]);else Ce({target:e,proto:!0,forced:bn||p},s);return v[wn]!==g&&ie(v,wn,g,{name:o}),un[e]=g,s},Pn=function(t,e){return{value:t,done:e}},An=Gr.charAt,jn="String Iterator",kn=ne.set,In=ne.getterFor(jn);Rn(String,"String",function(t){kn(this,{type:jn,string:Wr(t),index:0})},function(){var t,e=In(this),r=e.string,n=e.index;return n>=r.length?Pn(void 0,!0):(t=An(r,n),e.index+=t.length,Pn(t,!1))});var Tn=function(t,e,r){var n,o;kt(t);try{if(!(n=Q(t,"return"))){if("throw"===e)throw r;return r}n=f(n,t)}catch(t){o=!0,n=t}if("throw"===e)throw r;if(o)throw n;return kt(n),r},Mn=function(t,e,r,n){try{return n?e(kt(r)[0],r[1]):e(r)}catch(e){Tn(t,"throw",e)}},Ln=dt("iterator"),Un=Array.prototype,Nn=function(t){return void 0!==t&&(un.Array===t||Un[Ln]===t)},Cn=function(t,e,r){u?Ct.f(t,e,d(0,r)):t[e]=r},_n=dt("iterator"),Fn=function(t){if(!P(t))return Q(t,_n)||Q(t,"@@iterator")||un[pr(t)]},Bn=TypeError,Dn=function(t,e){var r=arguments.length<2?Fn(t):e;if(J(r))return kt(f(r,t));throw new Bn(Y(t)+" is not iterable")},zn=Array,Wn=function(t){var e=it(t),r=Sr(this),n=arguments.length,o=n>1?arguments[1]:void 0,i=void 0!==o;i&&(o=ar(o,n>2?arguments[2]:void 0));var a,u,s,c,l,h,p=Fn(e),v=0;if(!p||this===zn&&Nn(p))for(a=de(e),u=r?new this(a):zn(a);a>v;v++)h=i?o(e[v],v):e[v],Cn(u,v,h);else for(u=r?new this:[],l=(c=Dn(e,p)).next;!(s=f(l,c)).done;v++)h=i?Mn(c,o,[s.value,v],!0):s.value,Cn(u,v,h);return u.length=v,u},qn=dt("iterator"),Hn=!1;try{var $n=0,Kn={next:function(){return{done:!!$n++}},return:function(){Hn=!0}};Kn[qn]=function(){return this},Array.from(Kn,function(){throw 2})}catch(t){}var Gn=function(t,e){try{if(!e&&!Hn)return!1}catch(t){return!1}var r=!1;try{var n={};n[qn]=function(){return{next:function(){return{done:r=!0}}}},t(n)}catch(t){}return r},Vn=!Gn(function(t){Array.from(t)});Ce({target:"Array",stat:!0,forced:Vn},{from:Wn});var Yn=i,Xn=ye.includes,Jn=a(function(){return!Array(1).includes()});Ce({target:"Array",proto:!0,forced:Jn},{includes:function(t){return Xn(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe("includes"),Ze("Array","includes");var Qn=Ct.f,Zn="Array Iterator",to=ne.set,eo=ne.getterFor(Zn),ro=Rn(Array,"Array",function(t,e){to(this,{type:Zn,target:k(t),index:0,kind:e})},function(){var t=eo(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);switch(t.kind){case"keys":return Pn(r,!1);case"values":return Pn(e[r],!1)}return Pn([r,e[r]],!1)},"values"),no=un.Arguments=un.Array;if(Qe("keys"),Qe("values"),Qe("entries"),u&&"values"!==no.name)try{Qn(no,"name",{value:"values"})}catch(t){}cr||ie(Object.prototype,"toString",cr?{}.toString:function(){return"[object "+pr(this)+"]"},{unsafe:!0}),Ze("Array","values");var oo=Array,io=a(function(){function t(){}return!(oo.of.call(t)instanceof t)});Ce({target:"Array",stat:!0,forced:io},{of:function(){for(var t=0,e=arguments.length,r=new(Sr(this)?this:oo)(e);e>t;)Cn(r,t,arguments[t++]);return r.length=e,r}});var ao=dt("hasInstance"),uo=Function.prototype;ao in uo||Ct.f(uo,ao,{value:oe(function(t){if(!T(this)||!M(t))return!1;var e=this.prototype;return M(e)?U(e,t):t instanceof this},ao)}),dt("hasInstance");var so=function(t,e,r){return r.get&&oe(r.get,e,{getter:!0}),r.set&&oe(r.set,e,{setter:!0}),Ct.f(t,e,r)},co=zt.EXISTS,fo=Function.prototype,lo=b(fo.toString),ho=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,po=b(ho.exec);u&&!co&&so(fo,"name",{configurable:!0,get:function(){try{return po(ho,lo(this))[1]}catch(t){return""}}});var vo=b([].slice),go=Oe.f,yo="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],mo={f:function(t){return yo&&"Window"===E(t)?function(t){try{return go(t)}catch(t){return vo(yo)}}(t):go(k(t))}},bo=a(function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}),wo=Object.isExtensible,So=a(function(){wo(1)})||bo?function(t){return!!M(t)&&(!bo||"ArrayBuffer"!==E(t))&&(!wo||wo(t))}:wo,Eo=!a(function(){return Object.isExtensible(Object.preventExtensions({}))}),Oo=e(function(t){var e=Ct.f,r=!1,n=lt("meta"),o=0,i=function(t){e(t,n,{value:{objectID:"O"+o++,weakData:{}}})},a=t.exports={enable:function(){a.enable=function(){},r=!0;var t=Oe.f,e=b([].splice),o={};o[n]=1,t(o).length&&(Oe.f=function(r){for(var o=t(r),i=0,a=o.length;ii;i++)if((u=y(t[i]))&&U(Po,u))return u;return new Ro(!1)}n=Dn(t,o)}for(s=h?t.next:n.next;!(c=f(s,n)).done;){try{u=y(c.value)}catch(t){Tn(n,"throw",t)}if("object"==typeof u&&u&&U(Po,u))return u}return new Ro(!1)},jo=TypeError,ko=function(t,e){if(U(e,t))return t;throw new jo("Incorrect invocation")},Io=function(t,e,r){var n,o;return dn&&T(n=e.constructor)&&n!==r&&M(o=n.prototype)&&o!==r.prototype&&dn(t,o),t},To=function(t,e,r){var n=-1!==t.indexOf("Map"),o=-1!==t.indexOf("Weak"),u=n?"set":"add",s=i[t],c=s&&s.prototype,f=s,l={},h=function(t){var e=b(c[t]);ie(c,t,"add"===t?function(t){return e(this,0===t?0:t),this}:"delete"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:"get"===t?function(t){return o&&!M(t)?void 0:e(this,0===t?0:t)}:"has"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(Ue(t,!T(s)||!(o||c.forEach&&!a(function(){(new s).entries().next()}))))f=r.getConstructor(e,t,n,u),Oo.enable();else if(Ue(t,!0)){var p=new f,v=p[u](o?{}:-0,1)!==p,d=a(function(){p.has(1)}),g=Gn(function(t){new s(t)}),y=!o&&a(function(){for(var t=new s,e=5;e--;)t[u](e,e);return!t.has(-0)});g||((f=e(function(t,e){ko(t,c);var r=Io(new s,t,f);return P(e)||Ao(e,r[u],{that:r,AS_ENTRIES:n}),r})).prototype=c,c.constructor=f),(d||y)&&(h("delete"),h("has"),n&&h("get")),(y||v)&&h(u),o&&c.clear&&delete c.clear}return l[t]=f,Ce({global:!0,constructor:!0,forced:f!==s},l),an(f,t),o||r.setStrong(f,t,n),f},Mo=function(t,e,r){for(var n in e)ie(t,n,e[n],r);return t},Lo=dt("species"),Uo=function(t){var e=L(t);u&&e&&!e[Lo]&&so(e,Lo,{configurable:!0,get:function(){return this}})},No=Oo.fastKey,Co=ne.set,_o=ne.getterFor,Fo={getConstructor:function(t,e,r,n){var o=t(function(t,o){ko(t,i),Co(t,{type:e,index:Ve(null),first:null,last:null,size:0}),u||(t.size=0),P(o)||Ao(o,t[n],{that:t,AS_ENTRIES:r})}),i=o.prototype,a=_o(e),s=function(t,e,r){var n,o,i=a(t),s=c(t,e);return s?s.value=r:(i.last=s={index:o=No(e,!0),key:e,value:r,previous:n=i.last,next:null,removed:!1},i.first||(i.first=s),n&&(n.next=s),u?i.size++:t.size++,"F"!==o&&(i.index[o]=s)),t},c=function(t,e){var r,n=a(t),o=No(e);if("F"!==o)return n.index[o];for(r=n.first;r;r=r.next)if(r.key===e)return r};return Mo(i,{clear:function(){for(var t=a(this),e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=null),e=e.next;t.first=t.last=null,t.index=Ve(null),u?t.size=0:this.size=0},delete:function(t){var e=this,r=a(e),n=c(e,t);if(n){var o=n.next,i=n.previous;delete r.index[n.index],n.removed=!0,i&&(i.next=o),o&&(o.previous=i),r.first===n&&(r.first=o),r.last===n&&(r.last=i),u?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=a(this),n=ar(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!c(this,t)}}),Mo(i,r?{get:function(t){var e=c(this,t);return e&&e.value},set:function(t,e){return s(this,0===t?0:t,e)}}:{add:function(t){return s(this,t=0===t?0:t,t)}}),u&&so(i,"size",{configurable:!0,get:function(){return a(this).size}}),o},setStrong:function(t,e,r){var n=e+" Iterator",o=_o(e),i=_o(n);Rn(t,e,function(t,e){Co(this,{type:n,target:t,state:o(t),kind:e,last:null})},function(){for(var t=i(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?Pn("keys"===e?r.key:"values"===e?r.value:[r.key,r.value],!1):(t.target=null,Pn(void 0,!0))},r?"entries":"values",!r,!0),Uo(e)}};To("Map",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var Bo=Map.prototype,Do={Map:Map,set:b(Bo.set),get:b(Bo.get),has:b(Bo.has),remove:b(Bo.delete),proto:Bo},zo=Do.Map,Wo=Do.has,qo=Do.get,Ho=Do.set,$o=b([].push),Ko=a(function(){return 1!==zo.groupBy("ab",function(t){return t}).get("a").length});Ce({target:"Map",stat:!0,forced:Ko},{groupBy:function(t,e){j(t),J(e);var r=new zo,n=0;return Ao(t,function(t){var o=e(t,n++);Wo(r,o)?$o(qo(r,o),t):Ho(r,o,[t])}),r}});var Go={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Vo=Et("span").classList,Yo=Vo&&Vo.constructor&&Vo.constructor.prototype,Xo=Yo===Object.prototype?void 0:Yo,Jo=dt("iterator"),Qo=ro.values,Zo=function(t,e){if(t){if(t[Jo]!==Qo)try{_t(t,Jo,Qo)}catch(e){t[Jo]=Qo}if(an(t,e,!0),Go[e])for(var r in ro)if(t[r]!==ro[r])try{_t(t,r,ro[r])}catch(e){t[r]=ro[r]}}};for(var ti in Go)Zo(i[ti]&&i[ti].prototype,ti);Zo(Xo,"DOMTokenList");var ei=function(t,e,r){return function(n){var o=it(n),i=arguments.length,a=i>1?arguments[1]:void 0,u=void 0!==a,s=u?ar(a,i>2?arguments[2]:void 0):void 0,c=new t,f=0;return Ao(o,function(t){var n=u?s(t,f++):t;r?e(c,kt(n)[0],n[1]):e(c,n)}),c}};Ce({target:"Map",stat:!0,forced:!0},{from:ei(Do.Map,Do.set,!0)});var ri=function(t,e,r){return function(){for(var n=new t,o=arguments.length,i=0;i1?arguments[1]:void 0);return!1!==di(e,function(t,n){if(!r(t,n,e))return!1},!0)}});var gi=Do.Map,yi=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new gi;return di(e,function(t,o){r(t,o,e)&&yi(n,o,t)}),n}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{find:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{value:t}},!0);return n&&n.value}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{key:n}},!0);return n&&n.key}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(t){return!0===di(oi(this),function(e){if((r=e)===(n=t)||r!=r&&n!=n)return!0;var r,n},!0)}});var mi=Do.Map;Ce({target:"Map",stat:!0,forced:!0},{keyBy:function(t,e){var r=new(T(this)?this:mi);J(e);var n=J(r.set);return Ao(t,function(t){f(n,r,e(t),t)}),r}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(t){var e=di(oi(this),function(e,r){if(e===t)return{key:r}},!0);return e&&e.key}});var bi=Do.Map,wi=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new bi;return di(e,function(t,o){wi(n,r(t,o,e),t)}),n}});var Si=Do.Map,Ei=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new Si;return di(e,function(t,o){Ei(n,o,r(t,o,e))}),n}});var Oi=Do.set;Ce({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(t){for(var e=oi(this),r=arguments.length,n=0;n1?arguments[1]:void 0);return!0===di(e,function(t,n){if(r(t,n,e))return!0},!0)}});var Ri=TypeError,Pi=Do.get,Ai=Do.has,ji=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{update:function(t,e){var r=oi(this),n=arguments.length;J(e);var o=Ai(r,t);if(!o&&n<3)throw new Ri("Updating absent value");var i=o?Pi(r,t):J(n>2?arguments[2]:void 0)(t,r);return ji(r,t,e(i,t,r)),r}});var ki=TypeError,Ii=function(t,e){var r,n=kt(this),o=J(n.get),i=J(n.has),a=J(n.set),u=arguments.length>2?arguments[2]:void 0;if(!T(e)&&!T(u))throw new ki("At least one callback required");return f(i,n,t)?(r=f(o,n,t),T(e)&&(r=e(r),f(a,n,t,r))):T(u)&&(r=u(),f(a,n,t,r)),r};Ce({target:"Map",proto:!0,real:!0,forced:!0},{upsert:Ii}),Ce({target:"Map",proto:!0,real:!0,name:"upsert",forced:!0},{updateOrInsert:Ii});var Ti=b(1..valueOf),Mi="\t\n\v\f\r                 \u2028\u2029\ufeff",Li=b("".replace),Ui=RegExp("^["+Mi+"]+"),Ni=RegExp("(^|[^"+Mi+"])["+Mi+"]+$"),Ci=function(t){return function(e){var r=Wr(j(e));return 1&t&&(r=Li(r,Ui,"")),2&t&&(r=Li(r,Ni,"$1")),r}},_i={start:Ci(1),end:Ci(2),trim:Ci(3)},Fi=Oe.f,Bi=Rt.f,Di=Ct.f,zi=_i.trim,Wi="Number",qi=i[Wi],Hi=qi.prototype,$i=i.TypeError,Ki=b("".slice),Gi=b("".charCodeAt),Vi=Ue(Wi,!qi(" 0o1")||!qi("0b1")||qi("+0x1")),Yi=function(t){var e,r=arguments.length<1?0:qi(function(t){var e=mt(t,"number");return"bigint"==typeof e?e:function(t){var e,r,n,o,i,a,u,s,c=mt(t,"number");if(G(c))throw new $i("Cannot convert a Symbol value to a number");if("string"==typeof c&&c.length>2)if(c=zi(c),43===(e=Gi(c,0))||45===e){if(88===(r=Gi(c,2))||120===r)return NaN}else if(48===e){switch(Gi(c,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+c}for(a=(i=Ki(c,2)).length,u=0;uo)return NaN;return parseInt(i,n)}return+c}(e)}(t));return U(Hi,e=this)&&a(function(){Ti(e)})?Io(Object(r),this,Yi):r};Yi.prototype=Hi,Vi&&(Hi.constructor=Yi),Ce({global:!0,constructor:!0,wrap:!0,forced:Vi},{Number:Yi}),Vi&&function(t,e){for(var r,n=u?Fi(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;n.length>o;o++)ut(e,r=n[o])&&!ut(t,r)&&Di(t,r,Bi(e,r))}(Yn[Wi],qi),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)});var Xi=i.isFinite;Ce({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&Xi(t)}});var Ji=Math.floor,Qi=Number.isInteger||function(t){return!M(t)&&isFinite(t)&&Ji(t)===t};Ce({target:"Number",stat:!0},{isInteger:Qi}),Ce({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var Zi=Math.abs;Ce({target:"Number",stat:!0},{isSafeInteger:function(t){return Qi(t)&&Zi(t)<=9007199254740991}}),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991}),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991});var ta=_i.trim,ea=b("".charAt),ra=i.parseFloat,na=i.Symbol,oa=na&&na.iterator,ia=1/ra(Mi+"-0")!=-Infinity||oa&&!a(function(){ra(Object(oa))})?function(t){var e=ta(Wr(t)),r=ra(e);return 0===r&&"-"===ea(e,0)?-0:r}:ra;Ce({target:"Number",stat:!0,forced:Number.parseFloat!==ia},{parseFloat:ia});var aa=_i.trim,ua=i.parseInt,sa=i.Symbol,ca=sa&&sa.iterator,fa=/^[+-]?0x/i,la=b(fa.exec),ha=8!==ua(Mi+"08")||22!==ua(Mi+"0x16")||ca&&!a(function(){ua(Object(ca))})?function(t,e){var r=aa(Wr(t));return ua(r,e>>>0||(la(fa,r)?16:10))}:ua;Ce({target:"Number",stat:!0,forced:Number.parseInt!==ha},{parseInt:ha});var pa=b(v.f),va=b([].push),da=u&&a(function(){var t=Object.create(null);return t[2]=2,!pa(t,2)}),ga=function(t){return function(e){for(var r,n=k(e),o=_e(n),i=da&&null===Qr(n),a=o.length,s=0,c=[];a>s;)r=o[s++],u&&!(i?r in n:pa(n,r))||va(c,t?[r,n[r]]:n[r]);return c}},ya={entries:ga(!0),values:ga(!1)},ma=ya.entries;Ce({target:"Object",stat:!0},{entries:function(t){return ma(t)}}),Ce({target:"Object",stat:!0,sham:!u},{getOwnPropertyDescriptors:function(t){for(var e,r,n=k(t),o=Rt.f,i=Pe(n),a={},u=0;i.length>u;)void 0!==(r=o(n,e=i[u++]))&&Cn(a,e,r);return a}});var ba=a(function(){_e(1)});Ce({target:"Object",stat:!0,forced:ba},{keys:function(t){return _e(it(t))}});var wa=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};Ce({target:"Object",stat:!0},{is:wa});var Sa=ya.values;Ce({target:"Object",stat:!0},{values:function(t){return Sa(t)}}),Ce({target:"Object",stat:!0},{hasOwn:ut});var Ea=Function.prototype,Oa=Ea.apply,xa=Ea.call,Ra="object"==typeof Reflect&&Reflect.apply||(s?xa.bind(Oa):function(){return xa.apply(Oa,arguments)}),Pa=!a(function(){Reflect.apply(function(){})});Ce({target:"Reflect",stat:!0,forced:Pa},{apply:function(t,e,r){return Ra(J(t),e,kt(r))}});var Aa=Function,ja=b([].concat),ka=b([].join),Ia={},Ta=s?Aa.bind:function(t){var e=J(this),r=e.prototype,n=vo(arguments,1),o=function(){var r=ja(n,vo(arguments));return this instanceof o?function(t,e,r){if(!ut(Ia,e)){for(var n=[],o=0;ob)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")}),gs=Oe.f,ys=ne.enforce,ms=dt("match"),bs=i.RegExp,ws=bs.prototype,Ss=i.SyntaxError,Es=b(ws.exec),Os=b("".charAt),xs=b("".replace),Rs=b("".indexOf),Ps=b("".slice),As=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,js=/a/g,ks=/a/g,Is=new bs(js)!==js,Ts=cs.MISSED_STICKY,Ms=cs.UNSUPPORTED_Y,Ls=u&&(!Is||Ts||ps||ds||a(function(){return ks[ms]=!1,bs(js)!==js||bs(ks)===ks||"/a/i"!==String(bs(js,"i"))}));if(Ue("RegExp",Ls)){for(var Us=function(t,e){var r,n,o,i,a,u,s=U(ws,this),c=es(t),f=void 0===e,l=[],h=t;if(!s&&c&&f&&t.constructor===Us)return t;if((c||U(ws,t))&&(t=t.source,f&&(e=os(h))),t=void 0===t?"":Wr(t),e=void 0===e?"":Wr(e),h=t,ps&&"dotAll"in js&&(n=!!e&&Rs(e,"s")>-1)&&(e=xs(e,/s/g,"")),r=e,Ts&&"sticky"in js&&(o=!!e&&Rs(e,"y")>-1)&&Ms&&(e=xs(e,/y/g,"")),ds&&(i=function(t){for(var e,r=t.length,n=0,o="",i=[],a=Ve(null),u=!1,s=!1,c=0,f="";n<=r;n++){if("\\"===(e=Os(t,n)))e+=Os(t,++n);else if("]"===e)u=!1;else if(!u)switch(!0){case"["===e:u=!0;break;case"("===e:if(o+=e,"?:"===Ps(t,n+1,n+3))continue;Es(As,Ps(t,n+1))&&(n+=2,s=!0),c++;continue;case">"===e&&s:if(""===f||ut(a,f))throw new Ss("Invalid capture group name");a[f]=!0,i[i.length]=[f,c],s=!1,f="";continue}s?f+=e:o+=e}return[o,i]}(t),t=i[0],l=i[1]),a=Io(bs(t,e),s?this:ws,Us),(n||o||l.length)&&(u=ys(a),n&&(u.dotAll=!0,u.raw=Us(function(t){for(var e,r=t.length,n=0,o="",i=!1;n<=r;n++)"\\"!==(e=Os(t,n))?i||"."!==e?("["===e?i=!0:"]"===e&&(i=!1),o+=e):o+="[\\s\\S]":o+=e+Os(t,++n);return o}(t),r)),o&&(u.sticky=!0),l.length&&(u.groups=l)),t!==h)try{_t(a,"source",""===h?"(?:)":h)}catch(t){}return a},Ns=gs(bs),Cs=0;Ns.length>Cs;)ls(Us,bs,Ns[Cs++]);ws.constructor=Us,Us.prototype=ws,ie(i,"RegExp",Us,{constructor:!0})}Uo("RegExp");var _s=zt.PROPER,Fs="toString",Bs=RegExp.prototype,Ds=Bs[Fs];(a(function(){return"/a/b"!==Ds.call({source:"a",flags:"b"})})||_s&&Ds.name!==Fs)&&ie(Bs,Fs,function(){var t=kt(this);return"/"+Wr(t.source)+"/"+Wr(os(t))},{unsafe:!0});var zs=ne.get,Ws=RegExp.prototype,qs=TypeError;u&&ps&&so(Ws,"dotAll",{configurable:!0,get:function(){if(this!==Ws){if("RegExp"===E(this))return!!zs(this).dotAll;throw new qs("Incompatible receiver, RegExp required")}}});var Hs=ne.get,$s=nt("native-string-replace",String.prototype.replace),Ks=RegExp.prototype.exec,Gs=Ks,Vs=b("".charAt),Ys=b("".indexOf),Xs=b("".replace),Js=b("".slice),Qs=function(){var t=/a/,e=/b*/g;return f(Ks,t,"a"),f(Ks,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),Zs=cs.BROKEN_CARET,tc=void 0!==/()??/.exec("")[1];(Qs||tc||Zs||ps||ds)&&(Gs=function(t){var e,r,n,o,i,a,u,s=this,c=Hs(s),l=Wr(t),h=c.raw;if(h)return h.lastIndex=s.lastIndex,e=f(Gs,h,l),s.lastIndex=h.lastIndex,e;var p=c.groups,v=Zs&&s.sticky,d=f(rs,s),g=s.source,y=0,m=l;if(v&&(d=Xs(d,"y",""),-1===Ys(d,"g")&&(d+="g"),m=Js(l,s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==Vs(l,s.lastIndex-1))&&(g="(?: "+g+")",m=" "+m,y++),r=new RegExp("^(?:"+g+")",d)),tc&&(r=new RegExp("^"+g+"$(?!\\s)",d)),Qs&&(n=s.lastIndex),o=f(Ks,v?r:s,m),v?o?(o.input=Js(o.input,y),o[0]=Js(o[0],y),o.index=s.lastIndex,s.lastIndex+=o[0].length):s.lastIndex=0:Qs&&o&&(s.lastIndex=s.global?o.index+o[0].length:n),tc&&o&&o.length>1&&f($s,o[0],r,function(){for(i=1;i]*>)/g,Oc=/\$([$&'`]|\d{1,2})/g,xc=function(t,e,r,n,o,i){var a=r+t.length,u=n.length,s=Oc;return void 0!==o&&(o=it(o),s=Ec),wc(i,s,function(i,s){var c;switch(bc(s,0)){case"$":return"$";case"&":return t;case"`":return Sc(e,0,r);case"'":return Sc(e,a);case"<":c=o[Sc(s,1,-1)];break;default:var f=+s;if(0===f)return i;if(f>u){var l=mc(f/10);return 0===l?i:l<=u?void 0===n[l-1]?bc(s,1):n[l-1]+bc(s,1):i}c=n[f-1]}return void 0===c?"":c})},Rc=dt("replace"),Pc=Math.max,Ac=Math.min,jc=b([].concat),kc=b([].push),Ic=b("".indexOf),Tc=b("".slice),Mc="$0"==="a".replace(/./,"$0"),Lc=!!/./[Rc]&&""===/./[Rc]("a","$0"),Uc=!a(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")});pc("replace",function(t,e,r){var n=Lc?"$":"$0";return[function(t,r){var n=j(this),o=P(t)?void 0:Q(t,Rc);return o?f(o,t,n,r):f(e,Wr(n),t,r)},function(t,o){var i=kt(this),a=Wr(t);if("string"==typeof o&&-1===Ic(o,n)&&-1===Ic(o,"$<")){var u=r(e,i,a,o);if(u.done)return u.value}var s=T(o);s||(o=Wr(o));var c,f=i.global;f&&(c=i.unicode,i.lastIndex=0);for(var l,h=[];null!==(l=yc(i,a))&&(kc(h,l),f);)""===Wr(l[0])&&(i.lastIndex=dc(a,ve(i.lastIndex),c));for(var p,v="",d=0,g=0;g=d&&(v+=Tc(a,d,b)+y,d=b+m.length)}return v+Tc(a,d)}]},!Uc||!Mc||Lc),pc("search",function(t,e,r){return[function(e){var r=j(this),n=P(e)?void 0:Q(e,t);return n?f(n,e,r):new RegExp(e)[t](Wr(r))},function(t){var n=kt(this),o=Wr(t),i=r(e,n,o);if(i.done)return i.value;var a=n.lastIndex;wa(a,0)||(n.lastIndex=0);var u=yc(n,o);return wa(n.lastIndex,a)||(n.lastIndex=a),null===u?-1:u.index}]});var Nc=dt("species"),Cc=function(t,e){var r,n=kt(t).constructor;return void 0===n||P(r=kt(n)[Nc])?e:La(r)},_c=cs.UNSUPPORTED_Y,Fc=Math.min,Bc=b([].push),Dc=b("".slice),zc=!a(function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}),Wc="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;pc("split",function(t,e,r){var n="0".split(void 0,0).length?function(t,r){return void 0===t&&0===r?[]:f(e,this,t,r)}:e;return[function(e,r){var o=j(this),i=P(e)?void 0:Q(e,t);return i?f(i,e,o,r):f(n,Wr(o),e,r)},function(t,o){var i=kt(this),a=Wr(t);if(!Wc){var u=r(n,i,a,o,n!==e);if(u.done)return u.value}var s=Cc(i,RegExp),c=i.unicode,f=new s(_c?"^(?:"+i.source+")":i,(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(_c?"g":"y")),l=void 0===o?4294967295:o>>>0;if(0===l)return[];if(0===a.length)return null===yc(f,a)?[a]:[];for(var h=0,p=0,v=[];p0;(n>>>=1)&&(e+=e))1&n&&(r+=e);return r},Kc=b($c),Gc=b("".slice),Vc=Math.ceil,Yc=function(t){return function(e,r,n){var o,i,a=Wr(j(e)),u=ve(r),s=a.length,c=void 0===n?" ":Wr(n);return u<=s||""===c?a:((i=Kc(c,Vc((o=u-s)/c.length))).length>o&&(i=Gc(i,0,o)),t?a+i:i+a)}},Xc={start:Yc(!1),end:Yc(!0)},Jc=Xc.start,Qc=Array,Zc=RegExp.escape,tf=b("".charAt),ef=b("".charCodeAt),rf=b(1.1.toString),nf=b([].join),of=/^[0-9a-z]/i,af=/^[$()*+./?[\\\]^{|}]/,uf=RegExp("^[!\"#%&',\\-:;<=>@`~"+Mi+"]"),sf=b(of.exec),cf={"\t":"t","\n":"n","\v":"v","\f":"f","\r":"r"},ff=function(t){var e=rf(ef(t,0),16);return e.length<3?"\\x"+Jc(e,2,"0"):"\\u"+Jc(e,4,"0")},lf=!Zc||"\\x61b"!==Zc("ab");Ce({target:"RegExp",stat:!0,forced:lf},{escape:function(t){!function(t){if("string"==typeof t)return t;throw new qc("Argument is not a string")}(t);for(var e=t.length,r=Qc(e),n=0;n=56320||n+1>=e||56320!=(64512&ef(t,n+1))?r[n]=ff(o):(r[n]=o,r[++n]=tf(t,n))}}return nf(r,"")}}),To("Set",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var hf=Set.prototype,pf={Set:Set,add:b(hf.add),has:b(hf.has),remove:b(hf.delete),proto:hf},vf=pf.has,df=function(t){return vf(t),t},gf=pf.Set,yf=pf.proto,mf=b(yf.forEach),bf=b(yf.keys),wf=bf(new gf).next,Sf=function(t,e,r){return r?ci({iterator:bf(t),next:wf},e):mf(t,e)},Ef=pf.Set,Of=pf.add,xf=function(t){var e=new Ef;return Sf(t,function(t){Of(e,t)}),e},Rf=ln(pf.proto,"size","get")||function(t){return t.size},Pf="Invalid size",Af=RangeError,jf=TypeError,kf=Math.max,If=function(t,e){this.set=t,this.size=kf(e,0),this.has=J(t.has),this.keys=J(t.keys)};If.prototype={getIterator:function(){return{iterator:t=kt(f(this.keys,this.set)),next:t.next,done:!1};var t},includes:function(t){return f(this.has,this.set,t)}};var Tf=function(t){kt(t);var e=+t.size;if(e!=e)throw new jf(Pf);var r=ce(e);if(r<0)throw new Af(Pf);return new If(t,r)},Mf=pf.has,Lf=pf.remove,Uf=function(t){var e=df(this),r=Tf(t),n=xf(e);return Rf(e)<=r.size?Sf(e,function(t){r.includes(t)&&Lf(n,t)}):ci(r.getIterator(),function(t){Mf(e,t)&&Lf(n,t)}),n},Nf=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}},Cf=function(t){var e=L("Set");try{(new e)[t](Nf(0));try{return(new e)[t](Nf(-1)),!1}catch(t){return!0}}catch(t){return!1}};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("difference")},{difference:Uf});var _f=pf.Set,Ff=pf.add,Bf=pf.has,Df=function(t){var e=df(this),r=Tf(t),n=new _f;return Rf(e)>r.size?ci(r.getIterator(),function(t){Bf(e,t)&&Ff(n,t)}):Sf(e,function(t){r.includes(t)&&Ff(n,t)}),n},zf=!Cf("intersection")||a(function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))});Ce({target:"Set",proto:!0,real:!0,forced:zf},{intersection:Df});var Wf=pf.has,qf=function(t){var e=df(this),r=Tf(t);if(Rf(e)<=r.size)return!1!==Sf(e,function(t){if(r.includes(t))return!1},!0);var n=r.getIterator();return!1!==ci(n,function(t){if(Wf(e,t))return Tn(n,"normal",!1)})};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("isDisjointFrom")},{isDisjointFrom:qf});var Hf=function(t){var e=df(this),r=Tf(t);return!(Rf(e)>r.size)&&!1!==Sf(e,function(t){if(!r.includes(t))return!1},!0)};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("isSubsetOf")},{isSubsetOf:Hf});var $f=pf.has,Kf=function(t){var e=df(this),r=Tf(t);if(Rf(e)1?arguments[1]:void 0);return!1!==Sf(e,function(t){if(!r(t,t,e))return!1},!0)}});var el=dt("iterator"),rl=Object,nl=L("Set"),ol=function(t){return function(t){return M(t)&&"number"==typeof t.size&&T(t.has)&&T(t.keys)}(t)?t:function(t){if(P(t))return!1;var e=rl(t);return void 0!==e[el]||"@@iterator"in e||ut(un,pr(e))}(t)?new nl(t):t};Ce({target:"Set",proto:!0,real:!0,forced:!0},{difference:function(t){return f(Uf,this,ol(t))}});var il=pf.Set,al=pf.add;Ce({target:"Set",proto:!0,real:!0,forced:!0},{filter:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new il;return Sf(e,function(t){r(t,t,e)&&al(n,t)}),n}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{find:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=Sf(e,function(t){if(r(t,t,e))return{value:t}},!0);return n&&n.value}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{intersection:function(t){return f(Df,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(t){return f(qf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isSubsetOf:function(t){return f(Hf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isSupersetOf:function(t){return f(Kf,this,ol(t))}});var ul=b([].join),sl=b([].push);Ce({target:"Set",proto:!0,real:!0,forced:!0},{join:function(t){var e=df(this),r=void 0===t?",":Wr(t),n=[];return Sf(e,function(t){sl(n,t)}),ul(n,r)}});var cl=pf.Set,fl=pf.add;Ce({target:"Set",proto:!0,real:!0,forced:!0},{map:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new cl;return Sf(e,function(t){fl(n,r(t,t,e))}),n}});var ll=TypeError;Ce({target:"Set",proto:!0,real:!0,forced:!0},{reduce:function(t){var e=df(this),r=arguments.length<2,n=r?void 0:arguments[1];if(J(t),Sf(e,function(o){r?(r=!1,n=o):n=t(n,o,o,e)}),r)throw new ll("Reduce of empty set with no initial value");return n}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{some:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0);return!0===Sf(e,function(t){if(r(t,t,e))return!0},!0)}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{symmetricDifference:function(t){return f(Xf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{union:function(t){return f(Qf,this,ol(t))}});var hl=dt("species"),pl=dt("isConcatSpreadable"),vl=W>=51||!a(function(){var t=[];return t[pl]=!1,t.concat()[0]!==t}),dl=function(t){if(!M(t))return!1;var e=t[pl];return void 0!==e?!!e:ur(t)},gl=!(vl&&(W>=51||!a(function(){var t=[];return(t.constructor={})[hl]=function(){return{foo:1}},1!==t.concat(Boolean).foo})));Ce({target:"Array",proto:!0,arity:1,forced:gl},{concat:function(t){var e,r,n,o,i,a=it(this),u=xr(a,0),s=0;for(e=-1,n=arguments.length;e1?arguments[1]:void 0,n=e.length,o=void 0===r?n:ip(ve(r),n),i=Wr(t);return op(e,o-i.length,o)===i}}),Ze("String","endsWith");var sp=RangeError,cp=String.fromCharCode,fp=String.fromCodePoint,lp=b([].join);Ce({target:"String",stat:!0,arity:1,forced:!!fp&&1!==fp.length},{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,o=0;n>o;){if(e=+arguments[o++],he(e,1114111)!==e)throw new sp(e+" is not a valid code point");r[o]=e<65536?cp(e):cp(55296+((e-=65536)>>10),e%1024+56320)}return lp(r,"")}});var hp=b("".indexOf);Ce({target:"String",proto:!0,forced:!rp("includes")},{includes:function(t){return!!~hp(Wr(j(this)),Wr(tp(t)),arguments.length>1?arguments[1]:void 0)}}),Ze("String","includes"),b(un.String);var pp=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(_),vp=Xc.start;Ce({target:"String",proto:!0,forced:pp},{padStart:function(t){return vp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze("String","padStart");var dp=Xc.end;Ce({target:"String",proto:!0,forced:pp},{padEnd:function(t){return dp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze("String","padEnd");var gp=b([].push),yp=b([].join);Ce({target:"String",stat:!0},{raw:function(t){var e=k(it(t).raw),r=de(e);if(!r)return"";for(var n=arguments.length,o=[],i=0;;){if(gp(o,Wr(e[i++])),i===r)return yp(o,"");i1?arguments[1]:void 0,e.length)),n=Wr(t);return bp(e,r,r+n.length)===n}}),Ze("String","startsWith");var Op=zt.PROPER,xp=function(t){return a(function(){return!!Mi[t]()||"​…᠎"!=="​…᠎"[t]()||Op&&Mi[t].name!==t})},Rp=_i.start,Pp=xp("trimStart")?function(){return Rp(this)}:"".trimStart;Ce({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Pp},{trimLeft:Pp}),Ce({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Pp},{trimStart:Pp}),Ze("String","trimLeft");var Ap=_i.end,jp=xp("trimEnd")?function(){return Ap(this)}:"".trimEnd;Ce({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==jp},{trimRight:jp}),Ce({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==jp},{trimEnd:jp}),Ze("String","trimRight");var kp=Object.getOwnPropertyDescriptor,Ip=function(t){if(!u)return i[t];var e=kp(i,t);return e&&e.value},Tp=dt("iterator"),Mp=!a(function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return t.pathname="c%20d",e.forEach(function(t,r){e.delete("b"),n+=r+t}),r.delete("a",2),r.delete("b",void 0),!e.size&&!u||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[Tp]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host}),Lp=TypeError,Up=function(t,e){if(t0;)t[o]=t[--o];o!==i++&&(t[o]=n)}else for(var a=Np(r/2),u=Cp(vo(t,0,a),e),s=Cp(vo(t,a),e),c=u.length,f=s.length,l=0,h=0;l0&&0!=(t&r);r>>=1)e++;return e},pv=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},vv=function(t){for(var e=(t=nv(t,cv," ")).length,r="",n=0;ne){r+="%",n++;continue}var i=lv(t,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=hv(i);if(0===a)o=Jp(i);else{if(1===a||a>4){r+="�",n++;continue}for(var u=[i],s=1;se||"%"!==tv(t,n));){var c=lv(t,n+1);if(c!=c){n+=3;break}if(c>191||c<128)break;rv(u,c),n+=2,s++}if(u.length!==a){r+="�";continue}var f=pv(u);null===f?r+="�":o=Qp(f)}}r+=o,n++}return r},dv=/[!'()~]|%20/g,gv={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},yv=function(t){return gv[t]},mv=function(t){return nv(Xp(t),dv,yv)},bv=fn(function(t,e){zp(this,{type:Dp,target:Wp(t).entries,index:0,kind:e})},Bp,function(){var t=qp(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);var n=e[r];switch(t.kind){case"keys":return Pn(n.key,!1);case"values":return Pn(n.value,!1)}return Pn([n.key,n.value],!1)},!0),wv=function(t){this.entries=[],this.url=null,void 0!==t&&(M(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===tv(t,0)?uv(t,1):t:Wr(t)))};wv.prototype={type:Bp,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,r,n,o,i,a,u,s=this.entries,c=Fn(t);if(c)for(r=(e=Dn(t,c)).next;!(n=f(r,e)).done;){if(o=Dn(kt(n.value)),(a=f(i=o.next,o)).done||(u=f(i,o)).done||!f(i,o).done)throw new Yp("Expected sequence with length 2");rv(s,{key:Wr(a.value),value:Wr(u.value)})}else for(var l in t)ut(t,l)&&rv(s,{key:l,value:Wr(t[l])})},parseQuery:function(t){if(t)for(var e,r,n=this.entries,o=av(t,"&"),i=0;i0?arguments[0]:void 0));u||(this.size=t.entries.length)},Ev=Sv.prototype;if(Mo(Ev,{append:function(t,e){var r=Wp(this);Up(arguments.length,2),rv(r.entries,{key:Wr(t),value:Wr(e)}),u||this.length++,r.updateURL()},delete:function(t){for(var e=Wp(this),r=Up(arguments.length,1),n=e.entries,o=Wr(t),i=r<2?void 0:arguments[1],a=void 0===i?i:Wr(i),s=0;se.key?1:-1}),t.updateURL()},forEach:function(t){for(var e,r=Wp(this).entries,n=ar(t,arguments.length>1?arguments[1]:void 0),o=0;o1?Rv(arguments[1]):{})}}),T($p)){var Pv=function(t){return ko(this,Gp),new $p(t,arguments.length>1?Rv(arguments[1]):{})};Gp.constructor=Pv,Pv.prototype=Gp,Ce({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Pv})}}var Av={URLSearchParams:Sv,getState:Wp},jv=URLSearchParams,kv=jv.prototype,Iv=b(kv.append),Tv=b(kv.delete),Mv=b(kv.forEach),Lv=b([].push),Uv=new jv("a=1&a=2&b=3");Uv.delete("a",1),Uv.delete("b",void 0),Uv+""!="a=2"&&ie(kv,"delete",function(t){var e=arguments.length,r=e<2?void 0:arguments[1];if(e&&void 0===r)return Tv(this,t);var n=[];Mv(this,function(t,e){Lv(n,{key:e,value:t})}),Up(e,1);for(var o,i=Wr(t),a=Wr(r),u=0,s=0,c=!1,f=n.length;uo;)for(var s,c=R(arguments[o++]),l=i?$v(_e(c),i(c)):_e(c),h=l.length,p=0;h>p;)s=l[p++],u&&!f(a,c,s)||(r[s]=c[s]);return r}:qv,Gv=2147483647,Vv=/[^\0-\u007E]/,Yv=/[.\u3002\uFF0E\uFF61]/g,Xv="Overflow: input needs wider integers to process",Jv=RangeError,Qv=b(Yv.exec),Zv=Math.floor,td=String.fromCharCode,ed=b("".charCodeAt),rd=b([].join),nd=b([].push),od=b("".replace),id=b("".split),ad=b("".toLowerCase),ud=function(t){return t+22+75*(t<26)},sd=function(t,e,r){var n=0;for(t=r?Zv(t/700):t>>1,t+=Zv(t/e);t>455;)t=Zv(t/35),n+=36;return Zv(n+36*t/(t+38))},cd=function(t){var e=[];t=function(t){for(var e=[],r=0,n=t.length;r=55296&&o<=56319&&r=i&&nZv((Gv-a)/l))throw new Jv(Xv);for(a+=(f-i)*l,i=f,r=0;rGv)throw new Jv(Xv);if(n===i){for(var h=a,p=36;;){var v=p<=u?1:p>=u+26?26:p-u;if(h?@[\\\]^|]/,qd=/[\0\t\n\r #/:<>?@[\\\]^|]/,Hd=/^[\u0000-\u0020]+/,$d=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,Kd=/[\t\n\r]/g,Gd=function(t){var e,r,n,o;if("number"==typeof t){for(e=[],r=0;r<4;r++)Td(e,t%256),t=md(t/256);return Ed(e,".")}if("object"==typeof t){for(e="",n=function(t){for(var e=null,r=1,n=null,o=0,i=0;i<8;i++)0!==t[i]?(o>r&&(e=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:e}(t),r=0;r<8;r++)o&&0===t[r]||(o&&(o=!1),n===r?(e+=r?":":"::",o=!0):(e+=Od(t[r],16),r<7&&(e+=":")));return"["+e+"]"}return t},Vd={},Yd=Kv({},Vd,{" ":1,'"':1,"<":1,">":1,"`":1}),Xd=Kv({},Yd,{"#":1,"?":1,"{":1,"}":1}),Jd=Kv({},Xd,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Qd=function(t,e){var r=fd(t,0);return r>32&&r<127&&!ut(e,t)?t:encodeURIComponent(t)},Zd={ftp:21,file:null,http:80,https:443,ws:80,wss:443},tg=function(t,e){var r;return 2===t.length&&Sd(Nd,wd(t,0))&&(":"===(r=wd(t,1))||!e&&"|"===r)},eg=function(t){var e;return t.length>1&&tg(kd(t,0,2))&&(2===t.length||"/"===(e=wd(t,2))||"\\"===e||"?"===e||"#"===e)},rg=function(t){return"."===t||"%2e"===Id(t)},ng={},og={},ig={},ag={},ug={},sg={},cg={},fg={},lg={},hg={},pg={},vg={},dg={},gg={},yg={},mg={},bg={},wg={},Sg={},Eg={},Og={},xg=function(t,e,r){var n,o,i,a=Wr(t);if(e){if(o=this.parse(a))throw new gd(o);this.searchParams=null}else{if(void 0!==r&&(n=new xg(r,!0)),o=this.parse(a,null,n))throw new gd(o);(i=vd(new pd)).bindURL(this),this.searchParams=i}};xg.prototype={type:"URL",parse:function(t,e,r){var n,o,i,a,u,s=this,c=e||ng,f=0,l="",h=!1,p=!1,v=!1;for(t=Wr(t),e||(s.scheme="",s.username="",s.password="",s.host=null,s.port=null,s.path=[],s.query=null,s.fragment=null,s.cannotBeABaseURL=!1,t=Pd(t,Hd,""),t=Pd(t,$d,"$1")),t=Pd(t,Kd,""),n=Wn(t);f<=n.length;){switch(o=n[f],c){case ng:if(!o||!Sd(Nd,o)){if(e)return Md;c=ig;continue}l+=Id(o),c=og;break;case og:if(o&&(Sd(Cd,o)||"+"===o||"-"===o||"."===o))l+=Id(o);else{if(":"!==o){if(e)return Md;l="",c=ig,f=0;continue}if(e&&(s.isSpecial()!==ut(Zd,l)||"file"===l&&(s.includesCredentials()||null!==s.port)||"file"===s.scheme&&!s.host))return;if(s.scheme=l,e)return void(s.isSpecial()&&Zd[s.scheme]===s.port&&(s.port=null));l="","file"===s.scheme?c=gg:s.isSpecial()&&r&&r.scheme===s.scheme?c=ag:s.isSpecial()?c=fg:"/"===n[f+1]?(c=ug,f++):(s.cannotBeABaseURL=!0,Rd(s.path,""),c=Sg)}break;case ig:if(!r||r.cannotBeABaseURL&&"#"!==o)return Md;if(r.cannotBeABaseURL&&"#"===o){s.scheme=r.scheme,s.path=vo(r.path),s.query=r.query,s.fragment="",s.cannotBeABaseURL=!0,c=Og;break}c="file"===r.scheme?gg:sg;continue;case ag:if("/"!==o||"/"!==n[f+1]){c=sg;continue}c=lg,f++;break;case ug:if("/"===o){c=hg;break}c=wg;continue;case sg:if(s.scheme=r.scheme,o===Wv)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query;else if("/"===o||"\\"===o&&s.isSpecial())c=cg;else if("?"===o)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query="",c=Eg;else{if("#"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.path.length--,c=wg;continue}s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query,s.fragment="",c=Og}break;case cg:if(!s.isSpecial()||"/"!==o&&"\\"!==o){if("/"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,c=wg;continue}c=hg}else c=lg;break;case fg:if(c=lg,"/"!==o||"/"!==wd(l,f+1))continue;f++;break;case lg:if("/"!==o&&"\\"!==o){c=hg;continue}break;case hg:if("@"===o){h&&(l="%40"+l),h=!0,i=Wn(l);for(var d=0;d65535)return Ud;s.port=s.isSpecial()&&m===Zd[s.scheme]?null:m,l=""}if(e)return;c=bg;continue}return Ud}l+=o;break;case gg:if(s.scheme="file","/"===o||"\\"===o)c=yg;else{if(!r||"file"!==r.scheme){c=wg;continue}switch(o){case Wv:s.host=r.host,s.path=vo(r.path),s.query=r.query;break;case"?":s.host=r.host,s.path=vo(r.path),s.query="",c=Eg;break;case"#":s.host=r.host,s.path=vo(r.path),s.query=r.query,s.fragment="",c=Og;break;default:eg(Ed(vo(n,f),""))||(s.host=r.host,s.path=vo(r.path),s.shortenPath()),c=wg;continue}}break;case yg:if("/"===o||"\\"===o){c=mg;break}r&&"file"===r.scheme&&!eg(Ed(vo(n,f),""))&&(tg(r.path[0],!0)?Rd(s.path,r.path[0]):s.host=r.host),c=wg;continue;case mg:if(o===Wv||"/"===o||"\\"===o||"?"===o||"#"===o){if(!e&&tg(l))c=wg;else if(""===l){if(s.host="",e)return;c=bg}else{if(a=s.parseHost(l))return a;if("localhost"===s.host&&(s.host=""),e)return;l="",c=bg}continue}l+=o;break;case bg:if(s.isSpecial()){if(c=wg,"/"!==o&&"\\"!==o)continue}else if(e||"?"!==o)if(e||"#"!==o){if(o!==Wv&&(c=wg,"/"!==o))continue}else s.fragment="",c=Og;else s.query="",c=Eg;break;case wg:if(o===Wv||"/"===o||"\\"===o&&s.isSpecial()||!e&&("?"===o||"#"===o)){if(".."===(u=Id(u=l))||"%2e."===u||".%2e"===u||"%2e%2e"===u?(s.shortenPath(),"/"===o||"\\"===o&&s.isSpecial()||Rd(s.path,"")):rg(l)?"/"===o||"\\"===o&&s.isSpecial()||Rd(s.path,""):("file"===s.scheme&&!s.path.length&&tg(l)&&(s.host&&(s.host=""),l=wd(l,0)+":"),Rd(s.path,l)),l="","file"===s.scheme&&(o===Wv||"?"===o||"#"===o))for(;s.path.length>1&&""===s.path[0];)Ad(s.path);"?"===o?(s.query="",c=Eg):"#"===o&&(s.fragment="",c=Og)}else l+=Qd(o,Xd);break;case Sg:"?"===o?(s.query="",c=Eg):"#"===o?(s.fragment="",c=Og):o!==Wv&&(s.path[0]+=Qd(o,Vd));break;case Eg:e||"#"!==o?o!==Wv&&("'"===o&&s.isSpecial()?s.query+="%27":s.query+="#"===o?"%23":Qd(o,Vd)):(s.fragment="",c=Og);break;case Og:o!==Wv&&(s.fragment+=Qd(o,Yd))}f++}},parseHost:function(t){var e,r,n;if("["===wd(t,0)){if("]"!==wd(t,t.length-1))return Ld;if(e=function(t){var e,r,n,o,i,a,u,s=[0,0,0,0,0,0,0,0],c=0,f=null,l=0,h=function(){return wd(t,l)};if(":"===h()){if(":"!==wd(t,1))return;l+=2,f=++c}for(;h();){if(8===c)return;if(":"!==h()){for(e=r=0;r<4&&Sd(zd,h());)e=16*e+yd(h(),16),l++,r++;if("."===h()){if(0===r)return;if(l-=r,c>6)return;for(n=0;h();){if(o=null,n>0){if(!("."===h()&&n<4))return;l++}if(!Sd(_d,h()))return;for(;Sd(_d,h());){if(i=yd(h(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;l++}s[c]=256*s[c]+o,2!=++n&&4!==n||c++}if(4!==n)return;break}if(":"===h()){if(l++,!h())return}else if(h())return;s[c++]=e}else{if(null!==f)return;l++,f=++c}}if(null!==f)for(a=c-f,c=7;0!==c&&a>0;)u=s[c],s[c--]=s[f+a-1],s[f+--a]=u;else if(8!==c)return;return s}(kd(t,1,-1)),!e)return Ld;this.host=e}else if(this.isSpecial()){if(t=function(t){var e,r,n=[],o=id(od(ad(t),Yv,"."),".");for(e=0;e4)return t;for(r=[],n=0;n1&&"0"===wd(o,0)&&(i=Sd(Fd,o)?16:8,o=kd(o,8===i?1:2)),""===o)a=0;else{if(!Sd(10===i?Dd:8===i?Bd:zd,o))return t;a=yd(o,i)}Rd(r,a)}for(n=0;n=bd(256,5-e))return null}else if(a>255)return null;for(u=xd(r),n=0;n1?arguments[1]:void 0,n=ld(e,new xg(t,!1,r));u||(e.href=n.serialize(),e.origin=n.getOrigin(),e.protocol=n.getProtocol(),e.username=n.getUsername(),e.password=n.getPassword(),e.host=n.getHost(),e.hostname=n.getHostname(),e.port=n.getPort(),e.pathname=n.getPathname(),e.search=n.getSearch(),e.searchParams=n.getSearchParams(),e.hash=n.getHash())},Pg=Rg.prototype,Ag=function(t,e){return{get:function(){return hd(this)[t]()},set:e&&function(t){return hd(this)[e](t)},configurable:!0,enumerable:!0}};if(u&&(so(Pg,"href",Ag("serialize","setHref")),so(Pg,"origin",Ag("getOrigin")),so(Pg,"protocol",Ag("getProtocol","setProtocol")),so(Pg,"username",Ag("getUsername","setUsername")),so(Pg,"password",Ag("getPassword","setPassword")),so(Pg,"host",Ag("getHost","setHost")),so(Pg,"hostname",Ag("getHostname","setHostname")),so(Pg,"port",Ag("getPort","setPort")),so(Pg,"pathname",Ag("getPathname","setPathname")),so(Pg,"search",Ag("getSearch","setSearch")),so(Pg,"searchParams",Ag("getSearchParams")),so(Pg,"hash",Ag("getHash","setHash"))),ie(Pg,"toJSON",function(){return hd(this).serialize()},{enumerable:!0}),ie(Pg,"toString",function(){return hd(this).serialize()},{enumerable:!0}),dd){var jg=dd.createObjectURL,kg=dd.revokeObjectURL;jg&&ie(Rg,"createObjectURL",ar(jg,dd)),kg&&ie(Rg,"revokeObjectURL",ar(kg,dd))}an(Rg,"URL"),Ce({global:!0,constructor:!0,forced:!Mp,sham:!u},{URL:Rg});var Ig=L("URL"),Tg=Mp&&a(function(){Ig.canParse()}),Mg=a(function(){return 1!==Ig.canParse.length});Ce({target:"URL",stat:!0,forced:!Tg||Mg},{canParse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return!!new Ig(r,n)}catch(t){return!1}}});var Lg=L("URL");Ce({target:"URL",stat:!0,forced:!Mp},{parse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return new Lg(r,n)}catch(t){return null}}}),Ce({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return f(URL.prototype.toString,this)}});var Ug=WeakMap.prototype,Ng={WeakMap:WeakMap,set:b(Ug.set),get:b(Ug.get),has:b(Ug.has),remove:b(Ug.delete)},Cg=Ng.has,_g=function(t){return Cg(t),t},Fg=Ng.get,Bg=Ng.has,Dg=Ng.set;Ce({target:"WeakMap",proto:!0,real:!0,forced:!0},{emplace:function(t,e){var r,n,o=_g(this);return Bg(o,t)?(r=Fg(o,t),"update"in e&&(r=e.update(r,t,o),Dg(o,t,r)),r):(n=e.insert(t,o),Dg(o,t,n),n)}}),Ce({target:"WeakMap",stat:!0,forced:!0},{from:ei(Ng.WeakMap,Ng.set,!0)}),Ce({target:"WeakMap",stat:!0,forced:!0},{of:ri(Ng.WeakMap,Ng.set,!0)});var zg=Ng.remove;Ce({target:"WeakMap",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=_g(this),r=!0,n=0,o=arguments.length;n2&&(n=r,M(o=arguments[2])&&"cause"in o&&_t(n,"cause",o.cause));var s=[];return Ao(t,ny,{that:s}),_t(r,"errors",s),r};dn?dn(oy,ry):Ae(oy,ry,{name:!0});var iy=oy.prototype=Ve(ry.prototype,{constructor:d(1,oy),message:d(1,""),name:d(1,"AggregateError")});Ce({global:!0,constructor:!0,arity:2},{AggregateError:oy});var ay,uy,sy,cy,fy=function(t){return _.slice(0,t.length)===t},ly=fy("Bun/")?"BUN":fy("Cloudflare-Workers")?"CLOUDFLARE":fy("Deno/")?"DENO":fy("Node.js/")?"NODE":i.Bun&&"string"==typeof Bun.version?"BUN":i.Deno&&"object"==typeof Deno.version?"DENO":"process"===E(i.process)?"NODE":i.window&&i.document?"BROWSER":"REST",hy="NODE"===ly,py=/(?:ipad|iphone|ipod).*applewebkit/i.test(_),vy=i.setImmediate,dy=i.clearImmediate,gy=i.process,yy=i.Dispatch,my=i.Function,by=i.MessageChannel,wy=i.String,Sy=0,Ey={},Oy="onreadystatechange";a(function(){ay=i.location});var xy=function(t){if(ut(Ey,t)){var e=Ey[t];delete Ey[t],e()}},Ry=function(t){return function(){xy(t)}},Py=function(t){xy(t.data)},Ay=function(t){i.postMessage(wy(t),ay.protocol+"//"+ay.host)};vy&&dy||(vy=function(t){Up(arguments.length,1);var e=T(t)?t:my(t),r=vo(arguments,1);return Ey[++Sy]=function(){Ra(e,void 0,r)},uy(Sy),Sy},dy=function(t){delete Ey[t]},hy?uy=function(t){gy.nextTick(Ry(t))}:yy&&yy.now?uy=function(t){yy.now(Ry(t))}:by&&!py?(cy=(sy=new by).port2,sy.port1.onmessage=Py,uy=ar(cy.postMessage,cy)):i.addEventListener&&T(i.postMessage)&&!i.importScripts&&ay&&"file:"!==ay.protocol&&!a(Ay)?(uy=Ay,i.addEventListener("message",Py,!1)):uy=Oy in Et("script")?function(t){De.appendChild(Et("script"))[Oy]=function(){De.removeChild(this),xy(t)}}:function(t){setTimeout(Ry(t),0)});var jy={set:vy,clear:dy},ky=function(){this.head=null,this.tail=null};ky.prototype={add:function(t){var e={item:t,next:null},r=this.tail;r?r.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}};var Iy,Ty,My,Ly,Uy,Ny=ky,Cy=/ipad|iphone|ipod/i.test(_)&&"undefined"!=typeof Pebble,_y=/web0s(?!.*chrome)/i.test(_),Fy=jy.set,By=i.MutationObserver||i.WebKitMutationObserver,Dy=i.document,zy=i.process,Wy=i.Promise,qy=Ip("queueMicrotask");if(!qy){var Hy=new Ny,$y=function(){var t,e;for(hy&&(t=zy.domain)&&t.exit();e=Hy.get();)try{e()}catch(t){throw Hy.head&&Iy(),t}t&&t.enter()};py||hy||_y||!By||!Dy?!Cy&&Wy&&Wy.resolve?((Ly=Wy.resolve(void 0)).constructor=Wy,Uy=ar(Ly.then,Ly),Iy=function(){Uy($y)}):hy?Iy=function(){zy.nextTick($y)}:(Fy=ar(Fy,i),Iy=function(){Fy($y)}):(Ty=!0,My=Dy.createTextNode(""),new By($y).observe(My,{characterData:!0}),Iy=function(){My.data=Ty=!Ty}),qy=function(t){Hy.head||Iy(),Hy.add(t)}}var Ky,Gy,Vy,Yy=qy,Xy=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},Jy=i.Promise,Qy=dt("species"),Zy=!1,tm=T(i.PromiseRejectionEvent),em=Ue("Promise",function(){var t=Kt(Jy),e=t!==String(Jy);if(!e&&66===W)return!0;if(!W||W<51||!/native code/.test(t)){var r=new Jy(function(t){t(1)}),n=function(t){t(function(){},function(){})};if((r.constructor={})[Qy]=n,!(Zy=r.then(function(){})instanceof n))return!0}return!(e||"BROWSER"!==ly&&"DENO"!==ly||tm)}),rm={CONSTRUCTOR:em,REJECTION_EVENT:tm,SUBCLASSING:Zy},nm=TypeError,om=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw new nm("Bad Promise constructor");e=t,r=n}),this.resolve=J(e),this.reject=J(r)},im={f:function(t){return new om(t)}},am=jy.set,um="Promise",sm=rm.CONSTRUCTOR,cm=rm.REJECTION_EVENT,fm=rm.SUBCLASSING,lm=ne.getterFor(um),hm=ne.set,pm=Jy&&Jy.prototype,vm=Jy,dm=pm,gm=i.TypeError,ym=i.document,mm=i.process,bm=im.f,wm=bm,Sm=!!(ym&&ym.createEvent&&i.dispatchEvent),Em="unhandledrejection",Om=function(t){var e;return!(!M(t)||!T(e=t.then))&&e},xm=function(t,e){var r,n,o,i=e.value,a=1===e.state,u=a?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{u?(a||(2===e.rejection&&km(e),e.rejection=1),!0===u?r=i:(l&&l.enter(),r=u(i),l&&(l.exit(),o=!0)),r===t.promise?c(new gm("Promise-chain cycle")):(n=Om(r))?f(n,r,s,c):s(r)):c(i)}catch(t){l&&!o&&l.exit(),c(t)}},Rm=function(t,e){t.notified||(t.notified=!0,Yy(function(){for(var r,n=t.reactions;r=n.get();)xm(r,t);t.notified=!1,e&&!t.rejection&&Am(t)}))},Pm=function(t,e,r){var n,o;Sm?((n=ym.createEvent("Event")).promise=e,n.reason=r,n.initEvent(t,!1,!0),i.dispatchEvent(n)):n={promise:e,reason:r},!cm&&(o=i["on"+t])?o(n):t===Em&&function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}("Unhandled promise rejection",r)},Am=function(t){f(am,i,function(){var e,r=t.facade,n=t.value;if(jm(t)&&(e=Xy(function(){hy?mm.emit("unhandledRejection",n,r):Pm(Em,r,n)}),t.rejection=hy||jm(t)?2:1,e.error))throw e.value})},jm=function(t){return 1!==t.rejection&&!t.parent},km=function(t){f(am,i,function(){var e=t.facade;hy?mm.emit("rejectionHandled",e):Pm("rejectionhandled",e,t.value)})},Im=function(t,e,r){return function(n){t(e,n,r)}},Tm=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,Rm(t,!0))},Mm=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===e)throw new gm("Promise can't be resolved itself");var n=Om(e);n?Yy(function(){var r={done:!1};try{f(n,e,Im(Mm,r,t),Im(Tm,r,t))}catch(e){Tm(r,e,t)}}):(t.value=e,t.state=1,Rm(t,!1))}catch(e){Tm({done:!1},e,t)}}};if(sm&&(vm=function(t){ko(this,dm),J(t),f(Ky,this);var e=lm(this);try{t(Im(Mm,e),Im(Tm,e))}catch(t){Tm(e,t)}},(Ky=function(t){hm(this,{type:um,done:!1,notified:!1,parent:!1,reactions:new Ny,rejection:!1,state:0,value:null})}).prototype=ie(dm=vm.prototype,"then",function(t,e){var r=lm(this),n=bm(Cc(this,vm));return r.parent=!0,n.ok=!T(t)||t,n.fail=T(e)&&e,n.domain=hy?mm.domain:void 0,0===r.state?r.reactions.add(n):Yy(function(){xm(n,r)}),n.promise}),Gy=function(){var t=new Ky,e=lm(t);this.promise=t,this.resolve=Im(Mm,e),this.reject=Im(Tm,e)},im.f=bm=function(t){return t===vm||void 0===t?new Gy(t):wm(t)},T(Jy)&&pm!==Object.prototype)){Vy=pm.then,fm||ie(pm,"then",function(t,e){var r=this;return new vm(function(t,e){f(Vy,r,t,e)}).then(t,e)},{unsafe:!0});try{delete pm.constructor}catch(t){}dn&&dn(pm,dm)}Ce({global:!0,constructor:!0,wrap:!0,forced:sm},{Promise:vm}),an(vm,um,!1),Uo(um);var Lm=rm.CONSTRUCTOR||!Gn(function(t){Jy.all(t).then(void 0,function(){})});Ce({target:"Promise",stat:!0,forced:Lm},{all:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),i=[],a=0,u=1;Ao(t,function(t){var s=a++,c=!1;u++,f(r,e,t).then(function(t){c||(c=!0,i[s]=t,--u||n(i))},o)}),--u||n(i)});return i.error&&o(i.value),r.promise}});var Um=Jy&&Jy.prototype;if(Ce({target:"Promise",proto:!0,forced:rm.CONSTRUCTOR,real:!0},{catch:function(t){return this.then(void 0,t)}}),T(Jy)){var Nm=L("Promise").prototype.catch;Um.catch!==Nm&&ie(Um,"catch",Nm,{unsafe:!0})}Ce({target:"Promise",stat:!0,forced:Lm},{race:function(t){var e=this,r=im.f(e),n=r.reject,o=Xy(function(){var o=J(e.resolve);Ao(t,function(t){f(o,e,t).then(r.resolve,n)})});return o.error&&n(o.value),r.promise}}),Ce({target:"Promise",stat:!0,forced:rm.CONSTRUCTOR},{reject:function(t){var e=im.f(this);return(0,e.reject)(t),e.promise}});var Cm=function(t,e){if(kt(t),M(e)&&e.constructor===t)return e;var r=im.f(t);return(0,r.resolve)(e),r.promise};Ce({target:"Promise",stat:!0,forced:rm.CONSTRUCTOR},{resolve:function(t){return Cm(this,t)}}),Ce({target:"Promise",stat:!0,forced:Lm},{allSettled:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),o=[],i=0,a=1;Ao(t,function(t){var u=i++,s=!1;a++,f(r,e,t).then(function(t){s||(s=!0,o[u]={status:"fulfilled",value:t},--a||n(o))},function(t){s||(s=!0,o[u]={status:"rejected",reason:t},--a||n(o))})}),--a||n(o)});return i.error&&o(i.value),r.promise}});var _m="No one promise resolved";Ce({target:"Promise",stat:!0,forced:Lm},{any:function(t){var e=this,r=L("AggregateError"),n=im.f(e),o=n.resolve,i=n.reject,a=Xy(function(){var n=J(e.resolve),a=[],u=0,s=1,c=!1;Ao(t,function(t){var l=u++,h=!1;s++,f(n,e,t).then(function(t){h||c||(c=!0,o(t))},function(t){h||c||(h=!0,a[l]=t,--s||i(new r(a,_m)))})}),--s||i(new r(a,_m))});return a.error&&i(a.value),n.promise}}),Ce({target:"Promise",stat:!0},{withResolvers:function(){var t=im.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}});var Fm=Jy&&Jy.prototype,Bm=!!Jy&&a(function(){Fm.finally.call({then:function(){}},function(){})});if(Ce({target:"Promise",proto:!0,real:!0,forced:Bm},{finally:function(t){var e=Cc(this,L("Promise")),r=T(t);return this.then(r?function(r){return Cm(e,t()).then(function(){return r})}:t,r?function(r){return Cm(e,t()).then(function(){throw r})}:t)}}),T(Jy)){var Dm=L("Promise").prototype.finally;Fm.finally!==Dm&&ie(Fm,"finally",Dm,{unsafe:!0})}var zm=i.Promise,Wm=!1,qm=!zm||!zm.try||Xy(function(){zm.try(function(t){Wm=8===t},8)}).error||!Wm;Ce({target:"Promise",stat:!0,forced:qm},{try:function(t){var e=arguments.length>1?vo(arguments,1):[],r=im.f(this),n=Xy(function(){return Ra(J(t),void 0,e)});return(n.error?r.reject:r.resolve)(n.value),r.promise}}),Ze("Promise","finally");var Hm="URLSearchParams"in self,$m="Symbol"in self&&"iterator"in Symbol,Km="FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),Gm="FormData"in self,Vm="ArrayBuffer"in self;if(Vm)var Ym=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],Xm=ArrayBuffer.isView||function(t){return t&&Ym.indexOf(Object.prototype.toString.call(t))>-1};function Jm(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function Qm(t){return"string"!=typeof t&&(t=String(t)),t}function Zm(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return $m&&(e[Symbol.iterator]=function(){return e}),e}function tb(t){this.map={},t instanceof tb?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function eb(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function rb(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function nb(t){var e=new FileReader,r=rb(e);return e.readAsArrayBuffer(t),r}function ob(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function ib(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:Km&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:Gm&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:Hm&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():Vm&&Km&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=ob(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):Vm&&(ArrayBuffer.prototype.isPrototypeOf(t)||Xm(t))?this._bodyArrayBuffer=ob(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):Hm&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},Km&&(this.blob=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?eb(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(nb)}),this.text=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=rb(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?e:t}(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function sb(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function cb(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new tb(e.headers),this.url=e.url||"",this._initBody(t)}ub.prototype.clone=function(){return new ub(this,{body:this._bodyInit})},ib.call(ub.prototype),ib.call(cb.prototype),cb.prototype.clone=function(){return new cb(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new tb(this.headers),url:this.url})},cb.error=function(){var t=new cb(null,{status:0,statusText:""});return t.type="error",t};var fb=[301,302,303,307,308];cb.redirect=function(t,e){if(-1===fb.indexOf(e))throw new RangeError("Invalid status code");return new cb(null,{status:e,headers:{location:t}})};var lb=self.DOMException;try{new lb}catch(t){(lb=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),lb.prototype.constructor=lb}function hb(t,e){return new Promise(function(r,n){var o=new ub(t,e);if(o.signal&&o.signal.aborted)return n(new lb("Aborted","AbortError"));var i=new XMLHttpRequest;function a(){i.abort()}i.onload=function(){var t,e,n={status:i.status,statusText:i.statusText,headers:(t=i.getAllResponseHeaders()||"",e=new tb,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e)};n.url="responseURL"in i?i.responseURL:n.headers.get("X-Request-URL"),r(new cb("response"in i?i.response:i.responseText,n))},i.onerror=function(){n(new TypeError("Network request failed"))},i.ontimeout=function(){n(new TypeError("Network request failed"))},i.onabort=function(){n(new lb("Aborted","AbortError"))},i.open(o.method,o.url,!0),"include"===o.credentials?i.withCredentials=!0:"omit"===o.credentials&&(i.withCredentials=!1),"responseType"in i&&Km&&(i.responseType="blob"),o.headers.forEach(function(t,e){i.setRequestHeader(e,t)}),o.signal&&(o.signal.addEventListener("abort",a),i.onreadystatechange=function(){4===i.readyState&&o.signal.removeEventListener("abort",a)}),i.send(void 0===o._bodyInit?null:o._bodyInit)})}hb.polyfill=!0,self.fetch||(self.fetch=hb,self.Headers=tb,self.Request=ub,self.Response=cb);var pb=Object.getOwnPropertySymbols,vb=Object.prototype.hasOwnProperty,db=Object.prototype.propertyIsEnumerable,gb=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(t){n[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var r,n,o=function(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),i=1;i0&&r[0]<4?1:+(r[0]+r[1])),!n&&_&&(!(r=_.match(/Edge\\/(\\d+)/))||r[1]>=74)&&(r=_.match(/Chrome\\/(\\d+)/))&&(n=+r[1]);var W=n,q=i.String,H=!!Object.getOwnPropertySymbols&&!a(function(){var t=Symbol(\"symbol detection\");return!q(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&W&&W<41}),$=H&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator,K=Object,G=$?function(t){return\"symbol\"==typeof t}:function(t){var e=L(\"Symbol\");return T(e)&&U(e.prototype,K(t))},V=String,Y=function(t){try{return V(t)}catch(t){return\"Object\"}},X=TypeError,J=function(t){if(T(t))return t;throw new X(Y(t)+\" is not a function\")},Q=function(t,e){var r=t[e];return P(r)?void 0:J(r)},Z=TypeError,tt=Object.defineProperty,et=function(t,e){try{tt(i,t,{value:e,configurable:!0,writable:!0})}catch(r){i[t]=e}return e},rt=e(function(t){var e=\"__core-js_shared__\",r=t.exports=i[e]||et(e,{});(r.versions||(r.versions=[])).push({version:\"3.38.1\",mode:\"global\",copyright:\"© 2014-2024 Denis Pushkarev (zloirock.ru)\",license:\"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE\",source:\"https://github.com/zloirock/core-js\"})}),nt=function(t,e){return rt[t]||(rt[t]=e||{})},ot=Object,it=function(t){return ot(j(t))},at=b({}.hasOwnProperty),ut=Object.hasOwn||function(t,e){return at(it(t),e)},st=0,ct=Math.random(),ft=b(1..toString),lt=function(t){return\"Symbol(\"+(void 0===t?\"\":t)+\")_\"+ft(++st+ct,36)},ht=i.Symbol,pt=nt(\"wks\"),vt=$?ht.for||ht:ht&&ht.withoutSetter||lt,dt=function(t){return ut(pt,t)||(pt[t]=H&&ut(ht,t)?ht[t]:vt(\"Symbol.\"+t)),pt[t]},gt=TypeError,yt=dt(\"toPrimitive\"),mt=function(t,e){if(!M(t)||G(t))return t;var r,n=Q(t,yt);if(n){if(void 0===e&&(e=\"default\"),r=f(n,t,e),!M(r)||G(r))return r;throw new gt(\"Can't convert object to primitive value\")}return void 0===e&&(e=\"number\"),function(t,e){var r,n;if(\"string\"===e&&T(r=t.toString)&&!M(n=f(r,t)))return n;if(T(r=t.valueOf)&&!M(n=f(r,t)))return n;if(\"string\"!==e&&T(r=t.toString)&&!M(n=f(r,t)))return n;throw new Z(\"Can't convert object to primitive value\")}(t,e)},bt=function(t){var e=mt(t,\"string\");return G(e)?e:e+\"\"},wt=i.document,St=M(wt)&&M(wt.createElement),Et=function(t){return St?wt.createElement(t):{}},Ot=!u&&!a(function(){return 7!==Object.defineProperty(Et(\"div\"),\"a\",{get:function(){return 7}}).a}),xt=Object.getOwnPropertyDescriptor,Rt={f:u?xt:function(t,e){if(t=k(t),e=bt(e),Ot)try{return xt(t,e)}catch(t){}if(ut(t,e))return d(!f(v.f,t,e),t[e])}},Pt=u&&a(function(){return 42!==Object.defineProperty(function(){},\"prototype\",{value:42,writable:!1}).prototype}),At=String,jt=TypeError,kt=function(t){if(M(t))return t;throw new jt(At(t)+\" is not an object\")},It=TypeError,Tt=Object.defineProperty,Mt=Object.getOwnPropertyDescriptor,Lt=\"enumerable\",Ut=\"configurable\",Nt=\"writable\",Ct={f:u?Pt?function(t,e,r){if(kt(t),e=bt(e),kt(r),\"function\"==typeof t&&\"prototype\"===e&&\"value\"in r&&Nt in r&&!r[Nt]){var n=Mt(t,e);n&&n[Nt]&&(t[e]=r.value,r={configurable:Ut in r?r[Ut]:n[Ut],enumerable:Lt in r?r[Lt]:n[Lt],writable:!1})}return Tt(t,e,r)}:Tt:function(t,e,r){if(kt(t),e=bt(e),kt(r),Ot)try{return Tt(t,e,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw new It(\"Accessors not supported\");return\"value\"in r&&(t[e]=r.value),t}},_t=u?function(t,e,r){return Ct.f(t,e,d(1,r))}:function(t,e,r){return t[e]=r,t},Ft=Function.prototype,Bt=u&&Object.getOwnPropertyDescriptor,Dt=ut(Ft,\"name\"),zt={EXISTS:Dt,PROPER:Dt&&\"something\"===function(){}.name,CONFIGURABLE:Dt&&(!u||u&&Bt(Ft,\"name\").configurable)},Wt=b(Function.toString);T(rt.inspectSource)||(rt.inspectSource=function(t){return Wt(t)});var qt,Ht,$t,Kt=rt.inspectSource,Gt=i.WeakMap,Vt=T(Gt)&&/native code/.test(String(Gt)),Yt=nt(\"keys\"),Xt=function(t){return Yt[t]||(Yt[t]=lt(t))},Jt={},Qt=\"Object already initialized\",Zt=i.TypeError;if(Vt||rt.state){var te=rt.state||(rt.state=new(0,i.WeakMap));te.get=te.get,te.has=te.has,te.set=te.set,qt=function(t,e){if(te.has(t))throw new Zt(Qt);return e.facade=t,te.set(t,e),e},Ht=function(t){return te.get(t)||{}},$t=function(t){return te.has(t)}}else{var ee=Xt(\"state\");Jt[ee]=!0,qt=function(t,e){if(ut(t,ee))throw new Zt(Qt);return e.facade=t,_t(t,ee,e),e},Ht=function(t){return ut(t,ee)?t[ee]:{}},$t=function(t){return ut(t,ee)}}var re,ne={set:qt,get:Ht,has:$t,enforce:function(t){return $t(t)?Ht(t):qt(t,{})},getterFor:function(t){return function(e){var r;if(!M(e)||(r=Ht(e)).type!==t)throw new Zt(\"Incompatible receiver, \"+t+\" required\");return r}}},oe=e(function(t){var e=zt.CONFIGURABLE,r=ne.enforce,n=ne.get,o=String,i=Object.defineProperty,s=b(\"\".slice),c=b(\"\".replace),f=b([].join),l=u&&!a(function(){return 8!==i(function(){},\"length\",{value:8}).length}),h=String(String).split(\"String\"),p=t.exports=function(t,n,a){\"Symbol(\"===s(o(n),0,7)&&(n=\"[\"+c(o(n),/^Symbol\\(([^)]*)\\).*$/,\"$1\")+\"]\"),a&&a.getter&&(n=\"get \"+n),a&&a.setter&&(n=\"set \"+n),(!ut(t,\"name\")||e&&t.name!==n)&&(u?i(t,\"name\",{value:n,configurable:!0}):t.name=n),l&&a&&ut(a,\"arity\")&&t.length!==a.arity&&i(t,\"length\",{value:a.arity});try{a&&ut(a,\"constructor\")&&a.constructor?u&&i(t,\"prototype\",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var p=r(t);return ut(p,\"source\")||(p.source=f(h,\"string\"==typeof n?n:\"\")),t};Function.prototype.toString=p(function(){return T(this)&&n(this).source||Kt(this)},\"toString\")}),ie=function(t,e,r,n){n||(n={});var o=n.enumerable,i=void 0!==n.name?n.name:e;if(T(r)&&oe(r,i,n),n.global)o?t[e]=r:et(e,r);else{try{n.unsafe?t[e]&&(o=!0):delete t[e]}catch(t){}o?t[e]=r:Ct.f(t,e,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return t},ae=Math.ceil,ue=Math.floor,se=Math.trunc||function(t){var e=+t;return(e>0?ue:ae)(e)},ce=function(t){var e=+t;return e!=e||0===e?0:se(e)},fe=Math.max,le=Math.min,he=function(t,e){var r=ce(t);return r<0?fe(r+e,0):le(r,e)},pe=Math.min,ve=function(t){var e=ce(t);return e>0?pe(e,9007199254740991):0},de=function(t){return ve(t.length)},ge=function(t){return function(e,r,n){var o=k(e),i=de(o);if(0===i)return!t&&-1;var a,u=he(n,i);if(t&&r!=r){for(;i>u;)if((a=o[u++])!=a)return!0}else for(;i>u;u++)if((t||u in o)&&o[u]===r)return t||u||0;return!t&&-1}},ye={includes:ge(!0),indexOf:ge(!1)},me=ye.indexOf,be=b([].push),we=function(t,e){var r,n=k(t),o=0,i=[];for(r in n)!ut(Jt,r)&&ut(n,r)&&be(i,r);for(;e.length>o;)ut(n,r=e[o++])&&(~me(i,r)||be(i,r));return i},Se=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"],Ee=Se.concat(\"length\",\"prototype\"),Oe={f:Object.getOwnPropertyNames||function(t){return we(t,Ee)}},xe={f:Object.getOwnPropertySymbols},Re=b([].concat),Pe=L(\"Reflect\",\"ownKeys\")||function(t){var e=Oe.f(kt(t)),r=xe.f;return r?Re(e,r(t)):e},Ae=function(t,e,r){for(var n=Pe(e),o=Ct.f,i=Rt.f,a=0;aa;)Ct.f(t,r=o[a++],n[r]);return t},Be={f:Fe},De=L(\"document\",\"documentElement\"),ze=\"prototype\",We=\"script\",qe=Xt(\"IE_PROTO\"),He=function(){},$e=function(t){return\"<\"+We+\">\"+t+\"\"},Ke=function(t){t.write($e(\"\")),t.close();var e=t.parentWindow.Object;return t=null,e},Ge=function(){try{re=new ActiveXObject(\"htmlfile\")}catch(t){}var t,e,r;Ge=\"undefined\"!=typeof document?document.domain&&re?Ke(re):(e=Et(\"iframe\"),r=\"java\"+We+\":\",e.style.display=\"none\",De.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write($e(\"document.F=Object\")),t.close(),t.F):Ke(re);for(var n=Se.length;n--;)delete Ge[ze][Se[n]];return Ge()};Jt[qe]=!0;var Ve=Object.create||function(t,e){var r;return null!==t?(He[ze]=kt(t),r=new He,He[ze]=null,r[qe]=t):r=Ge(),void 0===e?r:Be.f(r,e)},Ye=Ct.f,Xe=dt(\"unscopables\"),Je=Array.prototype;void 0===Je[Xe]&&Ye(Je,Xe,{configurable:!0,value:Ve(null)});var Qe=function(t){Je[Xe][t]=!0};Ce({target:\"Array\",proto:!0},{at:function(t){var e=it(this),r=de(e),n=ce(t),o=n>=0?n:r+n;return o<0||o>=r?void 0:e[o]}}),Qe(\"at\");var Ze=function(t,e){return b(i[t].prototype[e])},tr=(Ze(\"Array\",\"at\"),TypeError),er=function(t,e){if(!delete t[e])throw new tr(\"Cannot delete property \"+Y(e)+\" of \"+Y(t))},rr=Math.min,nr=[].copyWithin||function(t,e){var r=it(this),n=de(r),o=he(t,n),i=he(e,n),a=arguments.length>2?arguments[2]:void 0,u=rr((void 0===a?n:he(a,n))-i,n-o),s=1;for(i0;)i in r?r[o]=r[i]:er(r,o),o+=s,i+=s;return r};Ce({target:\"Array\",proto:!0},{copyWithin:nr}),Qe(\"copyWithin\"),Ze(\"Array\",\"copyWithin\"),Ce({target:\"Array\",proto:!0},{fill:function(t){for(var e=it(this),r=de(e),n=arguments.length,o=he(n>1?arguments[1]:void 0,r),i=n>2?arguments[2]:void 0,a=void 0===i?r:he(i,r);a>o;)e[o++]=t;return e}}),Qe(\"fill\"),Ze(\"Array\",\"fill\");var or=function(t){if(\"Function\"===E(t))return b(t)},ir=or(or.bind),ar=function(t,e){return J(t),void 0===e?t:s?ir(t,e):function(){return t.apply(e,arguments)}},ur=Array.isArray||function(t){return\"Array\"===E(t)},sr={};sr[dt(\"toStringTag\")]=\"z\";var cr=\"[object z]\"===String(sr),fr=dt(\"toStringTag\"),lr=Object,hr=\"Arguments\"===E(function(){return arguments}()),pr=cr?E:function(t){var e,r,n;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=lr(t),fr))?r:hr?E(e):\"Object\"===(n=E(e))&&T(e.callee)?\"Arguments\":n},vr=function(){},dr=L(\"Reflect\",\"construct\"),gr=/^\\s*(?:class|function)\\b/,yr=b(gr.exec),mr=!gr.test(vr),br=function(t){if(!T(t))return!1;try{return dr(vr,[],t),!0}catch(t){return!1}},wr=function(t){if(!T(t))return!1;switch(pr(t)){case\"AsyncFunction\":case\"GeneratorFunction\":case\"AsyncGeneratorFunction\":return!1}try{return mr||!!yr(gr,Kt(t))}catch(t){return!0}};wr.sham=!0;var Sr=!dr||a(function(){var t;return br(br.call)||!br(Object)||!br(function(){t=!0})||t})?wr:br,Er=dt(\"species\"),Or=Array,xr=function(t,e){return new(function(t){var e;return ur(t)&&(Sr(e=t.constructor)&&(e===Or||ur(e.prototype))||M(e)&&null===(e=e[Er]))&&(e=void 0),void 0===e?Or:e}(t))(0===e?0:e)},Rr=b([].push),Pr=function(t){var e=1===t,r=2===t,n=3===t,o=4===t,i=6===t,a=7===t,u=5===t||i;return function(s,c,f,l){for(var h,p,v=it(s),d=R(v),g=de(d),y=ar(c,f),m=0,b=l||xr,w=e?b(s,g):r||a?b(s,0):void 0;g>m;m++)if((u||m in d)&&(p=y(h=d[m],m,v),t))if(e)w[m]=p;else if(p)switch(t){case 3:return!0;case 5:return h;case 6:return m;case 2:Rr(w,h)}else switch(t){case 4:return!1;case 7:Rr(w,h)}return i?-1:n||o?o:w}},Ar={forEach:Pr(0),map:Pr(1),filter:Pr(2),some:Pr(3),every:Pr(4),find:Pr(5),findIndex:Pr(6),filterReject:Pr(7)},jr=Ar.find,kr=\"find\",Ir=!0;kr in[]&&Array(1)[kr](function(){Ir=!1}),Ce({target:\"Array\",proto:!0,forced:Ir},{find:function(t){return jr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(kr),Ze(\"Array\",\"find\");var Tr=Ar.findIndex,Mr=\"findIndex\",Lr=!0;Mr in[]&&Array(1)[Mr](function(){Lr=!1}),Ce({target:\"Array\",proto:!0,forced:Lr},{findIndex:function(t){return Tr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(Mr),Ze(\"Array\",\"findIndex\");var Ur=TypeError,Nr=function(t){if(t>9007199254740991)throw Ur(\"Maximum allowed index exceeded\");return t},Cr=function(t,e,r,n,o,i,a,u){for(var s,c,f=o,l=0,h=!!a&&ar(a,u);l0&&ur(s)?(c=de(s),f=Cr(t,e,s,c,f,i-1)-1):(Nr(f+1),t[f]=s),f++),l++;return f},_r=Cr;Ce({target:\"Array\",proto:!0},{flatMap:function(t){var e,r=it(this),n=de(r);return J(t),(e=xr(r,0)).length=_r(e,r,r,n,0,1,t,arguments.length>1?arguments[1]:void 0),e}}),Qe(\"flatMap\"),Ze(\"Array\",\"flatMap\"),Ce({target:\"Array\",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=it(this),r=de(e),n=xr(e,0);return n.length=_r(n,e,e,r,0,void 0===t?1:ce(t)),n}}),Qe(\"flat\"),Ze(\"Array\",\"flat\");var Fr,Br,Dr,zr=String,Wr=function(t){if(\"Symbol\"===pr(t))throw new TypeError(\"Cannot convert a Symbol value to a string\");return zr(t)},qr=b(\"\".charAt),Hr=b(\"\".charCodeAt),$r=b(\"\".slice),Kr=function(t){return function(e,r){var n,o,i=Wr(j(e)),a=ce(r),u=i.length;return a<0||a>=u?t?\"\":void 0:(n=Hr(i,a))<55296||n>56319||a+1===u||(o=Hr(i,a+1))<56320||o>57343?t?qr(i,a):n:t?$r(i,a,a+2):o-56320+(n-55296<<10)+65536}},Gr={codeAt:Kr(!1),charAt:Kr(!0)},Vr=!a(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}),Yr=Xt(\"IE_PROTO\"),Xr=Object,Jr=Xr.prototype,Qr=Vr?Xr.getPrototypeOf:function(t){var e=it(t);if(ut(e,Yr))return e[Yr];var r=e.constructor;return T(r)&&e instanceof r?r.prototype:e instanceof Xr?Jr:null},Zr=dt(\"iterator\"),tn=!1;[].keys&&(\"next\"in(Dr=[].keys())?(Br=Qr(Qr(Dr)))!==Object.prototype&&(Fr=Br):tn=!0);var en=!M(Fr)||a(function(){var t={};return Fr[Zr].call(t)!==t});en&&(Fr={}),T(Fr[Zr])||ie(Fr,Zr,function(){return this});var rn={IteratorPrototype:Fr,BUGGY_SAFARI_ITERATORS:tn},nn=Ct.f,on=dt(\"toStringTag\"),an=function(t,e,r){t&&!r&&(t=t.prototype),t&&!ut(t,on)&&nn(t,on,{configurable:!0,value:e})},un={},sn=rn.IteratorPrototype,cn=function(){return this},fn=function(t,e,r,n){var o=e+\" Iterator\";return t.prototype=Ve(sn,{next:d(+!n,r)}),an(t,o,!1),un[o]=cn,t},ln=function(t,e,r){try{return b(J(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}},hn=String,pn=TypeError,vn=function(t){if(function(t){return M(t)||null===t}(t))return t;throw new pn(\"Can't set \"+hn(t)+\" as a prototype\")},dn=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var t,e=!1,r={};try{(t=ln(Object.prototype,\"__proto__\",\"set\"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return j(r),vn(n),M(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0),gn=zt.PROPER,yn=zt.CONFIGURABLE,mn=rn.IteratorPrototype,bn=rn.BUGGY_SAFARI_ITERATORS,wn=dt(\"iterator\"),Sn=\"keys\",En=\"values\",On=\"entries\",xn=function(){return this},Rn=function(t,e,r,n,o,i,a){fn(r,e,n);var u,s,c,l=function(t){if(t===o&&g)return g;if(!bn&&t&&t in v)return v[t];switch(t){case Sn:case En:case On:return function(){return new r(this,t)}}return function(){return new r(this)}},h=e+\" Iterator\",p=!1,v=t.prototype,d=v[wn]||v[\"@@iterator\"]||o&&v[o],g=!bn&&d||l(o),y=\"Array\"===e&&v.entries||d;if(y&&(u=Qr(y.call(new t)))!==Object.prototype&&u.next&&(Qr(u)!==mn&&(dn?dn(u,mn):T(u[wn])||ie(u,wn,xn)),an(u,h,!0)),gn&&o===En&&d&&d.name!==En&&(yn?_t(v,\"name\",En):(p=!0,g=function(){return f(d,this)})),o)if(s={values:l(En),keys:i?g:l(Sn),entries:l(On)},a)for(c in s)(bn||p||!(c in v))&&ie(v,c,s[c]);else Ce({target:e,proto:!0,forced:bn||p},s);return v[wn]!==g&&ie(v,wn,g,{name:o}),un[e]=g,s},Pn=function(t,e){return{value:t,done:e}},An=Gr.charAt,jn=\"String Iterator\",kn=ne.set,In=ne.getterFor(jn);Rn(String,\"String\",function(t){kn(this,{type:jn,string:Wr(t),index:0})},function(){var t,e=In(this),r=e.string,n=e.index;return n>=r.length?Pn(void 0,!0):(t=An(r,n),e.index+=t.length,Pn(t,!1))});var Tn=function(t,e,r){var n,o;kt(t);try{if(!(n=Q(t,\"return\"))){if(\"throw\"===e)throw r;return r}n=f(n,t)}catch(t){o=!0,n=t}if(\"throw\"===e)throw r;if(o)throw n;return kt(n),r},Mn=function(t,e,r,n){try{return n?e(kt(r)[0],r[1]):e(r)}catch(e){Tn(t,\"throw\",e)}},Ln=dt(\"iterator\"),Un=Array.prototype,Nn=function(t){return void 0!==t&&(un.Array===t||Un[Ln]===t)},Cn=function(t,e,r){u?Ct.f(t,e,d(0,r)):t[e]=r},_n=dt(\"iterator\"),Fn=function(t){if(!P(t))return Q(t,_n)||Q(t,\"@@iterator\")||un[pr(t)]},Bn=TypeError,Dn=function(t,e){var r=arguments.length<2?Fn(t):e;if(J(r))return kt(f(r,t));throw new Bn(Y(t)+\" is not iterable\")},zn=Array,Wn=function(t){var e=it(t),r=Sr(this),n=arguments.length,o=n>1?arguments[1]:void 0,i=void 0!==o;i&&(o=ar(o,n>2?arguments[2]:void 0));var a,u,s,c,l,h,p=Fn(e),v=0;if(!p||this===zn&&Nn(p))for(a=de(e),u=r?new this(a):zn(a);a>v;v++)h=i?o(e[v],v):e[v],Cn(u,v,h);else for(u=r?new this:[],l=(c=Dn(e,p)).next;!(s=f(l,c)).done;v++)h=i?Mn(c,o,[s.value,v],!0):s.value,Cn(u,v,h);return u.length=v,u},qn=dt(\"iterator\"),Hn=!1;try{var $n=0,Kn={next:function(){return{done:!!$n++}},return:function(){Hn=!0}};Kn[qn]=function(){return this},Array.from(Kn,function(){throw 2})}catch(t){}var Gn=function(t,e){try{if(!e&&!Hn)return!1}catch(t){return!1}var r=!1;try{var n={};n[qn]=function(){return{next:function(){return{done:r=!0}}}},t(n)}catch(t){}return r},Vn=!Gn(function(t){Array.from(t)});Ce({target:\"Array\",stat:!0,forced:Vn},{from:Wn});var Yn=i,Xn=ye.includes,Jn=a(function(){return!Array(1).includes()});Ce({target:\"Array\",proto:!0,forced:Jn},{includes:function(t){return Xn(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(\"includes\"),Ze(\"Array\",\"includes\");var Qn=Ct.f,Zn=\"Array Iterator\",to=ne.set,eo=ne.getterFor(Zn),ro=Rn(Array,\"Array\",function(t,e){to(this,{type:Zn,target:k(t),index:0,kind:e})},function(){var t=eo(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);switch(t.kind){case\"keys\":return Pn(r,!1);case\"values\":return Pn(e[r],!1)}return Pn([r,e[r]],!1)},\"values\"),no=un.Arguments=un.Array;if(Qe(\"keys\"),Qe(\"values\"),Qe(\"entries\"),u&&\"values\"!==no.name)try{Qn(no,\"name\",{value:\"values\"})}catch(t){}cr||ie(Object.prototype,\"toString\",cr?{}.toString:function(){return\"[object \"+pr(this)+\"]\"},{unsafe:!0}),Ze(\"Array\",\"values\");var oo=Array,io=a(function(){function t(){}return!(oo.of.call(t)instanceof t)});Ce({target:\"Array\",stat:!0,forced:io},{of:function(){for(var t=0,e=arguments.length,r=new(Sr(this)?this:oo)(e);e>t;)Cn(r,t,arguments[t++]);return r.length=e,r}});var ao=dt(\"hasInstance\"),uo=Function.prototype;ao in uo||Ct.f(uo,ao,{value:oe(function(t){if(!T(this)||!M(t))return!1;var e=this.prototype;return M(e)?U(e,t):t instanceof this},ao)}),dt(\"hasInstance\");var so=function(t,e,r){return r.get&&oe(r.get,e,{getter:!0}),r.set&&oe(r.set,e,{setter:!0}),Ct.f(t,e,r)},co=zt.EXISTS,fo=Function.prototype,lo=b(fo.toString),ho=/function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/,po=b(ho.exec);u&&!co&&so(fo,\"name\",{configurable:!0,get:function(){try{return po(ho,lo(this))[1]}catch(t){return\"\"}}});var vo=b([].slice),go=Oe.f,yo=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],mo={f:function(t){return yo&&\"Window\"===E(t)?function(t){try{return go(t)}catch(t){return vo(yo)}}(t):go(k(t))}},bo=a(function(){if(\"function\"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,\"a\",{value:8})}}),wo=Object.isExtensible,So=a(function(){wo(1)})||bo?function(t){return!!M(t)&&(!bo||\"ArrayBuffer\"!==E(t))&&(!wo||wo(t))}:wo,Eo=!a(function(){return Object.isExtensible(Object.preventExtensions({}))}),Oo=e(function(t){var e=Ct.f,r=!1,n=lt(\"meta\"),o=0,i=function(t){e(t,n,{value:{objectID:\"O\"+o++,weakData:{}}})},a=t.exports={enable:function(){a.enable=function(){},r=!0;var t=Oe.f,e=b([].splice),o={};o[n]=1,t(o).length&&(Oe.f=function(r){for(var o=t(r),i=0,a=o.length;ii;i++)if((u=y(t[i]))&&U(Po,u))return u;return new Ro(!1)}n=Dn(t,o)}for(s=h?t.next:n.next;!(c=f(s,n)).done;){try{u=y(c.value)}catch(t){Tn(n,\"throw\",t)}if(\"object\"==typeof u&&u&&U(Po,u))return u}return new Ro(!1)},jo=TypeError,ko=function(t,e){if(U(e,t))return t;throw new jo(\"Incorrect invocation\")},Io=function(t,e,r){var n,o;return dn&&T(n=e.constructor)&&n!==r&&M(o=n.prototype)&&o!==r.prototype&&dn(t,o),t},To=function(t,e,r){var n=-1!==t.indexOf(\"Map\"),o=-1!==t.indexOf(\"Weak\"),u=n?\"set\":\"add\",s=i[t],c=s&&s.prototype,f=s,l={},h=function(t){var e=b(c[t]);ie(c,t,\"add\"===t?function(t){return e(this,0===t?0:t),this}:\"delete\"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:\"get\"===t?function(t){return o&&!M(t)?void 0:e(this,0===t?0:t)}:\"has\"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(Ue(t,!T(s)||!(o||c.forEach&&!a(function(){(new s).entries().next()}))))f=r.getConstructor(e,t,n,u),Oo.enable();else if(Ue(t,!0)){var p=new f,v=p[u](o?{}:-0,1)!==p,d=a(function(){p.has(1)}),g=Gn(function(t){new s(t)}),y=!o&&a(function(){for(var t=new s,e=5;e--;)t[u](e,e);return!t.has(-0)});g||((f=e(function(t,e){ko(t,c);var r=Io(new s,t,f);return P(e)||Ao(e,r[u],{that:r,AS_ENTRIES:n}),r})).prototype=c,c.constructor=f),(d||y)&&(h(\"delete\"),h(\"has\"),n&&h(\"get\")),(y||v)&&h(u),o&&c.clear&&delete c.clear}return l[t]=f,Ce({global:!0,constructor:!0,forced:f!==s},l),an(f,t),o||r.setStrong(f,t,n),f},Mo=function(t,e,r){for(var n in e)ie(t,n,e[n],r);return t},Lo=dt(\"species\"),Uo=function(t){var e=L(t);u&&e&&!e[Lo]&&so(e,Lo,{configurable:!0,get:function(){return this}})},No=Oo.fastKey,Co=ne.set,_o=ne.getterFor,Fo={getConstructor:function(t,e,r,n){var o=t(function(t,o){ko(t,i),Co(t,{type:e,index:Ve(null),first:null,last:null,size:0}),u||(t.size=0),P(o)||Ao(o,t[n],{that:t,AS_ENTRIES:r})}),i=o.prototype,a=_o(e),s=function(t,e,r){var n,o,i=a(t),s=c(t,e);return s?s.value=r:(i.last=s={index:o=No(e,!0),key:e,value:r,previous:n=i.last,next:null,removed:!1},i.first||(i.first=s),n&&(n.next=s),u?i.size++:t.size++,\"F\"!==o&&(i.index[o]=s)),t},c=function(t,e){var r,n=a(t),o=No(e);if(\"F\"!==o)return n.index[o];for(r=n.first;r;r=r.next)if(r.key===e)return r};return Mo(i,{clear:function(){for(var t=a(this),e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=null),e=e.next;t.first=t.last=null,t.index=Ve(null),u?t.size=0:this.size=0},delete:function(t){var e=this,r=a(e),n=c(e,t);if(n){var o=n.next,i=n.previous;delete r.index[n.index],n.removed=!0,i&&(i.next=o),o&&(o.previous=i),r.first===n&&(r.first=o),r.last===n&&(r.last=i),u?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=a(this),n=ar(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!c(this,t)}}),Mo(i,r?{get:function(t){var e=c(this,t);return e&&e.value},set:function(t,e){return s(this,0===t?0:t,e)}}:{add:function(t){return s(this,t=0===t?0:t,t)}}),u&&so(i,\"size\",{configurable:!0,get:function(){return a(this).size}}),o},setStrong:function(t,e,r){var n=e+\" Iterator\",o=_o(e),i=_o(n);Rn(t,e,function(t,e){Co(this,{type:n,target:t,state:o(t),kind:e,last:null})},function(){for(var t=i(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?Pn(\"keys\"===e?r.key:\"values\"===e?r.value:[r.key,r.value],!1):(t.target=null,Pn(void 0,!0))},r?\"entries\":\"values\",!r,!0),Uo(e)}};To(\"Map\",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var Bo=Map.prototype,Do={Map:Map,set:b(Bo.set),get:b(Bo.get),has:b(Bo.has),remove:b(Bo.delete),proto:Bo},zo=Do.Map,Wo=Do.has,qo=Do.get,Ho=Do.set,$o=b([].push),Ko=a(function(){return 1!==zo.groupBy(\"ab\",function(t){return t}).get(\"a\").length});Ce({target:\"Map\",stat:!0,forced:Ko},{groupBy:function(t,e){j(t),J(e);var r=new zo,n=0;return Ao(t,function(t){var o=e(t,n++);Wo(r,o)?$o(qo(r,o),t):Ho(r,o,[t])}),r}});var Go={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Vo=Et(\"span\").classList,Yo=Vo&&Vo.constructor&&Vo.constructor.prototype,Xo=Yo===Object.prototype?void 0:Yo,Jo=dt(\"iterator\"),Qo=ro.values,Zo=function(t,e){if(t){if(t[Jo]!==Qo)try{_t(t,Jo,Qo)}catch(e){t[Jo]=Qo}if(an(t,e,!0),Go[e])for(var r in ro)if(t[r]!==ro[r])try{_t(t,r,ro[r])}catch(e){t[r]=ro[r]}}};for(var ti in Go)Zo(i[ti]&&i[ti].prototype,ti);Zo(Xo,\"DOMTokenList\");var ei=function(t,e,r){return function(n){var o=it(n),i=arguments.length,a=i>1?arguments[1]:void 0,u=void 0!==a,s=u?ar(a,i>2?arguments[2]:void 0):void 0,c=new t,f=0;return Ao(o,function(t){var n=u?s(t,f++):t;r?e(c,kt(n)[0],n[1]):e(c,n)}),c}};Ce({target:\"Map\",stat:!0,forced:!0},{from:ei(Do.Map,Do.set,!0)});var ri=function(t,e,r){return function(){for(var n=new t,o=arguments.length,i=0;i1?arguments[1]:void 0);return!1!==di(e,function(t,n){if(!r(t,n,e))return!1},!0)}});var gi=Do.Map,yi=Do.set;Ce({target:\"Map\",proto:!0,real:!0,forced:!0},{filter:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new gi;return di(e,function(t,o){r(t,o,e)&&yi(n,o,t)}),n}}),Ce({target:\"Map\",proto:!0,real:!0,forced:!0},{find:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{value:t}},!0);return n&&n.value}}),Ce({target:\"Map\",proto:!0,real:!0,forced:!0},{findKey:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{key:n}},!0);return n&&n.key}}),Ce({target:\"Map\",proto:!0,real:!0,forced:!0},{includes:function(t){return!0===di(oi(this),function(e){if((r=e)===(n=t)||r!=r&&n!=n)return!0;var r,n},!0)}});var mi=Do.Map;Ce({target:\"Map\",stat:!0,forced:!0},{keyBy:function(t,e){var r=new(T(this)?this:mi);J(e);var n=J(r.set);return Ao(t,function(t){f(n,r,e(t),t)}),r}}),Ce({target:\"Map\",proto:!0,real:!0,forced:!0},{keyOf:function(t){var e=di(oi(this),function(e,r){if(e===t)return{key:r}},!0);return e&&e.key}});var bi=Do.Map,wi=Do.set;Ce({target:\"Map\",proto:!0,real:!0,forced:!0},{mapKeys:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new bi;return di(e,function(t,o){wi(n,r(t,o,e),t)}),n}});var Si=Do.Map,Ei=Do.set;Ce({target:\"Map\",proto:!0,real:!0,forced:!0},{mapValues:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new Si;return di(e,function(t,o){Ei(n,o,r(t,o,e))}),n}});var Oi=Do.set;Ce({target:\"Map\",proto:!0,real:!0,arity:1,forced:!0},{merge:function(t){for(var e=oi(this),r=arguments.length,n=0;n1?arguments[1]:void 0);return!0===di(e,function(t,n){if(r(t,n,e))return!0},!0)}});var Ri=TypeError,Pi=Do.get,Ai=Do.has,ji=Do.set;Ce({target:\"Map\",proto:!0,real:!0,forced:!0},{update:function(t,e){var r=oi(this),n=arguments.length;J(e);var o=Ai(r,t);if(!o&&n<3)throw new Ri(\"Updating absent value\");var i=o?Pi(r,t):J(n>2?arguments[2]:void 0)(t,r);return ji(r,t,e(i,t,r)),r}});var ki=TypeError,Ii=function(t,e){var r,n=kt(this),o=J(n.get),i=J(n.has),a=J(n.set),u=arguments.length>2?arguments[2]:void 0;if(!T(e)&&!T(u))throw new ki(\"At least one callback required\");return f(i,n,t)?(r=f(o,n,t),T(e)&&(r=e(r),f(a,n,t,r))):T(u)&&(r=u(),f(a,n,t,r)),r};Ce({target:\"Map\",proto:!0,real:!0,forced:!0},{upsert:Ii}),Ce({target:\"Map\",proto:!0,real:!0,name:\"upsert\",forced:!0},{updateOrInsert:Ii});var Ti=b(1..valueOf),Mi=\"\\t\\n\\v\\f\\r                 \\u2028\\u2029\\ufeff\",Li=b(\"\".replace),Ui=RegExp(\"^[\"+Mi+\"]+\"),Ni=RegExp(\"(^|[^\"+Mi+\"])[\"+Mi+\"]+$\"),Ci=function(t){return function(e){var r=Wr(j(e));return 1&t&&(r=Li(r,Ui,\"\")),2&t&&(r=Li(r,Ni,\"$1\")),r}},_i={start:Ci(1),end:Ci(2),trim:Ci(3)},Fi=Oe.f,Bi=Rt.f,Di=Ct.f,zi=_i.trim,Wi=\"Number\",qi=i[Wi],Hi=qi.prototype,$i=i.TypeError,Ki=b(\"\".slice),Gi=b(\"\".charCodeAt),Vi=Ue(Wi,!qi(\" 0o1\")||!qi(\"0b1\")||qi(\"+0x1\")),Yi=function(t){var e,r=arguments.length<1?0:qi(function(t){var e=mt(t,\"number\");return\"bigint\"==typeof e?e:function(t){var e,r,n,o,i,a,u,s,c=mt(t,\"number\");if(G(c))throw new $i(\"Cannot convert a Symbol value to a number\");if(\"string\"==typeof c&&c.length>2)if(c=zi(c),43===(e=Gi(c,0))||45===e){if(88===(r=Gi(c,2))||120===r)return NaN}else if(48===e){switch(Gi(c,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+c}for(a=(i=Ki(c,2)).length,u=0;uo)return NaN;return parseInt(i,n)}return+c}(e)}(t));return U(Hi,e=this)&&a(function(){Ti(e)})?Io(Object(r),this,Yi):r};Yi.prototype=Hi,Vi&&(Hi.constructor=Yi),Ce({global:!0,constructor:!0,wrap:!0,forced:Vi},{Number:Yi}),Vi&&function(t,e){for(var r,n=u?Fi(e):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range\".split(\",\"),o=0;n.length>o;o++)ut(e,r=n[o])&&!ut(t,r)&&Di(t,r,Bi(e,r))}(Yn[Wi],qi),Ce({target:\"Number\",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)});var Xi=i.isFinite;Ce({target:\"Number\",stat:!0},{isFinite:Number.isFinite||function(t){return\"number\"==typeof t&&Xi(t)}});var Ji=Math.floor,Qi=Number.isInteger||function(t){return!M(t)&&isFinite(t)&&Ji(t)===t};Ce({target:\"Number\",stat:!0},{isInteger:Qi}),Ce({target:\"Number\",stat:!0},{isNaN:function(t){return t!=t}});var Zi=Math.abs;Ce({target:\"Number\",stat:!0},{isSafeInteger:function(t){return Qi(t)&&Zi(t)<=9007199254740991}}),Ce({target:\"Number\",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991}),Ce({target:\"Number\",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991});var ta=_i.trim,ea=b(\"\".charAt),ra=i.parseFloat,na=i.Symbol,oa=na&&na.iterator,ia=1/ra(Mi+\"-0\")!=-Infinity||oa&&!a(function(){ra(Object(oa))})?function(t){var e=ta(Wr(t)),r=ra(e);return 0===r&&\"-\"===ea(e,0)?-0:r}:ra;Ce({target:\"Number\",stat:!0,forced:Number.parseFloat!==ia},{parseFloat:ia});var aa=_i.trim,ua=i.parseInt,sa=i.Symbol,ca=sa&&sa.iterator,fa=/^[+-]?0x/i,la=b(fa.exec),ha=8!==ua(Mi+\"08\")||22!==ua(Mi+\"0x16\")||ca&&!a(function(){ua(Object(ca))})?function(t,e){var r=aa(Wr(t));return ua(r,e>>>0||(la(fa,r)?16:10))}:ua;Ce({target:\"Number\",stat:!0,forced:Number.parseInt!==ha},{parseInt:ha});var pa=b(v.f),va=b([].push),da=u&&a(function(){var t=Object.create(null);return t[2]=2,!pa(t,2)}),ga=function(t){return function(e){for(var r,n=k(e),o=_e(n),i=da&&null===Qr(n),a=o.length,s=0,c=[];a>s;)r=o[s++],u&&!(i?r in n:pa(n,r))||va(c,t?[r,n[r]]:n[r]);return c}},ya={entries:ga(!0),values:ga(!1)},ma=ya.entries;Ce({target:\"Object\",stat:!0},{entries:function(t){return ma(t)}}),Ce({target:\"Object\",stat:!0,sham:!u},{getOwnPropertyDescriptors:function(t){for(var e,r,n=k(t),o=Rt.f,i=Pe(n),a={},u=0;i.length>u;)void 0!==(r=o(n,e=i[u++]))&&Cn(a,e,r);return a}});var ba=a(function(){_e(1)});Ce({target:\"Object\",stat:!0,forced:ba},{keys:function(t){return _e(it(t))}});var wa=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};Ce({target:\"Object\",stat:!0},{is:wa});var Sa=ya.values;Ce({target:\"Object\",stat:!0},{values:function(t){return Sa(t)}}),Ce({target:\"Object\",stat:!0},{hasOwn:ut});var Ea=Function.prototype,Oa=Ea.apply,xa=Ea.call,Ra=\"object\"==typeof Reflect&&Reflect.apply||(s?xa.bind(Oa):function(){return xa.apply(Oa,arguments)}),Pa=!a(function(){Reflect.apply(function(){})});Ce({target:\"Reflect\",stat:!0,forced:Pa},{apply:function(t,e,r){return Ra(J(t),e,kt(r))}});var Aa=Function,ja=b([].concat),ka=b([].join),Ia={},Ta=s?Aa.bind:function(t){var e=J(this),r=e.prototype,n=vo(arguments,1),o=function(){var r=ja(n,vo(arguments));return this instanceof o?function(t,e,r){if(!ut(Ia,e)){for(var n=[],o=0;ob)\",\"g\");return\"b\"!==t.exec(\"b\").groups.a||\"bc\"!==\"b\".replace(t,\"$c\")}),gs=Oe.f,ys=ne.enforce,ms=dt(\"match\"),bs=i.RegExp,ws=bs.prototype,Ss=i.SyntaxError,Es=b(ws.exec),Os=b(\"\".charAt),xs=b(\"\".replace),Rs=b(\"\".indexOf),Ps=b(\"\".slice),As=/^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/,js=/a/g,ks=/a/g,Is=new bs(js)!==js,Ts=cs.MISSED_STICKY,Ms=cs.UNSUPPORTED_Y,Ls=u&&(!Is||Ts||ps||ds||a(function(){return ks[ms]=!1,bs(js)!==js||bs(ks)===ks||\"/a/i\"!==String(bs(js,\"i\"))}));if(Ue(\"RegExp\",Ls)){for(var Us=function(t,e){var r,n,o,i,a,u,s=U(ws,this),c=es(t),f=void 0===e,l=[],h=t;if(!s&&c&&f&&t.constructor===Us)return t;if((c||U(ws,t))&&(t=t.source,f&&(e=os(h))),t=void 0===t?\"\":Wr(t),e=void 0===e?\"\":Wr(e),h=t,ps&&\"dotAll\"in js&&(n=!!e&&Rs(e,\"s\")>-1)&&(e=xs(e,/s/g,\"\")),r=e,Ts&&\"sticky\"in js&&(o=!!e&&Rs(e,\"y\")>-1)&&Ms&&(e=xs(e,/y/g,\"\")),ds&&(i=function(t){for(var e,r=t.length,n=0,o=\"\",i=[],a=Ve(null),u=!1,s=!1,c=0,f=\"\";n<=r;n++){if(\"\\\\\"===(e=Os(t,n)))e+=Os(t,++n);else if(\"]\"===e)u=!1;else if(!u)switch(!0){case\"[\"===e:u=!0;break;case\"(\"===e:if(o+=e,\"?:\"===Ps(t,n+1,n+3))continue;Es(As,Ps(t,n+1))&&(n+=2,s=!0),c++;continue;case\">\"===e&&s:if(\"\"===f||ut(a,f))throw new Ss(\"Invalid capture group name\");a[f]=!0,i[i.length]=[f,c],s=!1,f=\"\";continue}s?f+=e:o+=e}return[o,i]}(t),t=i[0],l=i[1]),a=Io(bs(t,e),s?this:ws,Us),(n||o||l.length)&&(u=ys(a),n&&(u.dotAll=!0,u.raw=Us(function(t){for(var e,r=t.length,n=0,o=\"\",i=!1;n<=r;n++)\"\\\\\"!==(e=Os(t,n))?i||\".\"!==e?(\"[\"===e?i=!0:\"]\"===e&&(i=!1),o+=e):o+=\"[\\\\s\\\\S]\":o+=e+Os(t,++n);return o}(t),r)),o&&(u.sticky=!0),l.length&&(u.groups=l)),t!==h)try{_t(a,\"source\",\"\"===h?\"(?:)\":h)}catch(t){}return a},Ns=gs(bs),Cs=0;Ns.length>Cs;)ls(Us,bs,Ns[Cs++]);ws.constructor=Us,Us.prototype=ws,ie(i,\"RegExp\",Us,{constructor:!0})}Uo(\"RegExp\");var _s=zt.PROPER,Fs=\"toString\",Bs=RegExp.prototype,Ds=Bs[Fs];(a(function(){return\"/a/b\"!==Ds.call({source:\"a\",flags:\"b\"})})||_s&&Ds.name!==Fs)&&ie(Bs,Fs,function(){var t=kt(this);return\"/\"+Wr(t.source)+\"/\"+Wr(os(t))},{unsafe:!0});var zs=ne.get,Ws=RegExp.prototype,qs=TypeError;u&&ps&&so(Ws,\"dotAll\",{configurable:!0,get:function(){if(this!==Ws){if(\"RegExp\"===E(this))return!!zs(this).dotAll;throw new qs(\"Incompatible receiver, RegExp required\")}}});var Hs=ne.get,$s=nt(\"native-string-replace\",String.prototype.replace),Ks=RegExp.prototype.exec,Gs=Ks,Vs=b(\"\".charAt),Ys=b(\"\".indexOf),Xs=b(\"\".replace),Js=b(\"\".slice),Qs=function(){var t=/a/,e=/b*/g;return f(Ks,t,\"a\"),f(Ks,e,\"a\"),0!==t.lastIndex||0!==e.lastIndex}(),Zs=cs.BROKEN_CARET,tc=void 0!==/()??/.exec(\"\")[1];(Qs||tc||Zs||ps||ds)&&(Gs=function(t){var e,r,n,o,i,a,u,s=this,c=Hs(s),l=Wr(t),h=c.raw;if(h)return h.lastIndex=s.lastIndex,e=f(Gs,h,l),s.lastIndex=h.lastIndex,e;var p=c.groups,v=Zs&&s.sticky,d=f(rs,s),g=s.source,y=0,m=l;if(v&&(d=Xs(d,\"y\",\"\"),-1===Ys(d,\"g\")&&(d+=\"g\"),m=Js(l,s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&\"\\n\"!==Vs(l,s.lastIndex-1))&&(g=\"(?: \"+g+\")\",m=\" \"+m,y++),r=new RegExp(\"^(?:\"+g+\")\",d)),tc&&(r=new RegExp(\"^\"+g+\"$(?!\\\\s)\",d)),Qs&&(n=s.lastIndex),o=f(Ks,v?r:s,m),v?o?(o.input=Js(o.input,y),o[0]=Js(o[0],y),o.index=s.lastIndex,s.lastIndex+=o[0].length):s.lastIndex=0:Qs&&o&&(s.lastIndex=s.global?o.index+o[0].length:n),tc&&o&&o.length>1&&f($s,o[0],r,function(){for(i=1;i]*>)/g,Oc=/\\$([$&'`]|\\d{1,2})/g,xc=function(t,e,r,n,o,i){var a=r+t.length,u=n.length,s=Oc;return void 0!==o&&(o=it(o),s=Ec),wc(i,s,function(i,s){var c;switch(bc(s,0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return Sc(e,0,r);case\"'\":return Sc(e,a);case\"<\":c=o[Sc(s,1,-1)];break;default:var f=+s;if(0===f)return i;if(f>u){var l=mc(f/10);return 0===l?i:l<=u?void 0===n[l-1]?bc(s,1):n[l-1]+bc(s,1):i}c=n[f-1]}return void 0===c?\"\":c})},Rc=dt(\"replace\"),Pc=Math.max,Ac=Math.min,jc=b([].concat),kc=b([].push),Ic=b(\"\".indexOf),Tc=b(\"\".slice),Mc=\"$0\"===\"a\".replace(/./,\"$0\"),Lc=!!/./[Rc]&&\"\"===/./[Rc](\"a\",\"$0\"),Uc=!a(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:\"7\"},t},\"7\"!==\"\".replace(t,\"$\")});pc(\"replace\",function(t,e,r){var n=Lc?\"$\":\"$0\";return[function(t,r){var n=j(this),o=P(t)?void 0:Q(t,Rc);return o?f(o,t,n,r):f(e,Wr(n),t,r)},function(t,o){var i=kt(this),a=Wr(t);if(\"string\"==typeof o&&-1===Ic(o,n)&&-1===Ic(o,\"$<\")){var u=r(e,i,a,o);if(u.done)return u.value}var s=T(o);s||(o=Wr(o));var c,f=i.global;f&&(c=i.unicode,i.lastIndex=0);for(var l,h=[];null!==(l=yc(i,a))&&(kc(h,l),f);)\"\"===Wr(l[0])&&(i.lastIndex=dc(a,ve(i.lastIndex),c));for(var p,v=\"\",d=0,g=0;g=d&&(v+=Tc(a,d,b)+y,d=b+m.length)}return v+Tc(a,d)}]},!Uc||!Mc||Lc),pc(\"search\",function(t,e,r){return[function(e){var r=j(this),n=P(e)?void 0:Q(e,t);return n?f(n,e,r):new RegExp(e)[t](Wr(r))},function(t){var n=kt(this),o=Wr(t),i=r(e,n,o);if(i.done)return i.value;var a=n.lastIndex;wa(a,0)||(n.lastIndex=0);var u=yc(n,o);return wa(n.lastIndex,a)||(n.lastIndex=a),null===u?-1:u.index}]});var Nc=dt(\"species\"),Cc=function(t,e){var r,n=kt(t).constructor;return void 0===n||P(r=kt(n)[Nc])?e:La(r)},_c=cs.UNSUPPORTED_Y,Fc=Math.min,Bc=b([].push),Dc=b(\"\".slice),zc=!a(function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r=\"ab\".split(t);return 2!==r.length||\"a\"!==r[0]||\"b\"!==r[1]}),Wc=\"c\"===\"abbc\".split(/(b)*/)[1]||4!==\"test\".split(/(?:)/,-1).length||2!==\"ab\".split(/(?:ab)*/).length||4!==\".\".split(/(.?)(.?)/).length||\".\".split(/()()/).length>1||\"\".split(/.?/).length;pc(\"split\",function(t,e,r){var n=\"0\".split(void 0,0).length?function(t,r){return void 0===t&&0===r?[]:f(e,this,t,r)}:e;return[function(e,r){var o=j(this),i=P(e)?void 0:Q(e,t);return i?f(i,e,o,r):f(n,Wr(o),e,r)},function(t,o){var i=kt(this),a=Wr(t);if(!Wc){var u=r(n,i,a,o,n!==e);if(u.done)return u.value}var s=Cc(i,RegExp),c=i.unicode,f=new s(_c?\"^(?:\"+i.source+\")\":i,(i.ignoreCase?\"i\":\"\")+(i.multiline?\"m\":\"\")+(i.unicode?\"u\":\"\")+(_c?\"g\":\"y\")),l=void 0===o?4294967295:o>>>0;if(0===l)return[];if(0===a.length)return null===yc(f,a)?[a]:[];for(var h=0,p=0,v=[];p0;(n>>>=1)&&(e+=e))1&n&&(r+=e);return r},Kc=b($c),Gc=b(\"\".slice),Vc=Math.ceil,Yc=function(t){return function(e,r,n){var o,i,a=Wr(j(e)),u=ve(r),s=a.length,c=void 0===n?\" \":Wr(n);return u<=s||\"\"===c?a:((i=Kc(c,Vc((o=u-s)/c.length))).length>o&&(i=Gc(i,0,o)),t?a+i:i+a)}},Xc={start:Yc(!1),end:Yc(!0)},Jc=Xc.start,Qc=Array,Zc=RegExp.escape,tf=b(\"\".charAt),ef=b(\"\".charCodeAt),rf=b(1.1.toString),nf=b([].join),of=/^[0-9a-z]/i,af=/^[$()*+./?[\\\\\\]^{|}]/,uf=RegExp(\"^[!\\\"#%&',\\\\-:;<=>@`~\"+Mi+\"]\"),sf=b(of.exec),cf={\"\\t\":\"t\",\"\\n\":\"n\",\"\\v\":\"v\",\"\\f\":\"f\",\"\\r\":\"r\"},ff=function(t){var e=rf(ef(t,0),16);return e.length<3?\"\\\\x\"+Jc(e,2,\"0\"):\"\\\\u\"+Jc(e,4,\"0\")},lf=!Zc||\"\\\\x61b\"!==Zc(\"ab\");Ce({target:\"RegExp\",stat:!0,forced:lf},{escape:function(t){!function(t){if(\"string\"==typeof t)return t;throw new qc(\"Argument is not a string\")}(t);for(var e=t.length,r=Qc(e),n=0;n=56320||n+1>=e||56320!=(64512&ef(t,n+1))?r[n]=ff(o):(r[n]=o,r[++n]=tf(t,n))}}return nf(r,\"\")}}),To(\"Set\",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var hf=Set.prototype,pf={Set:Set,add:b(hf.add),has:b(hf.has),remove:b(hf.delete),proto:hf},vf=pf.has,df=function(t){return vf(t),t},gf=pf.Set,yf=pf.proto,mf=b(yf.forEach),bf=b(yf.keys),wf=bf(new gf).next,Sf=function(t,e,r){return r?ci({iterator:bf(t),next:wf},e):mf(t,e)},Ef=pf.Set,Of=pf.add,xf=function(t){var e=new Ef;return Sf(t,function(t){Of(e,t)}),e},Rf=ln(pf.proto,\"size\",\"get\")||function(t){return t.size},Pf=\"Invalid size\",Af=RangeError,jf=TypeError,kf=Math.max,If=function(t,e){this.set=t,this.size=kf(e,0),this.has=J(t.has),this.keys=J(t.keys)};If.prototype={getIterator:function(){return{iterator:t=kt(f(this.keys,this.set)),next:t.next,done:!1};var t},includes:function(t){return f(this.has,this.set,t)}};var Tf=function(t){kt(t);var e=+t.size;if(e!=e)throw new jf(Pf);var r=ce(e);if(r<0)throw new Af(Pf);return new If(t,r)},Mf=pf.has,Lf=pf.remove,Uf=function(t){var e=df(this),r=Tf(t),n=xf(e);return Rf(e)<=r.size?Sf(e,function(t){r.includes(t)&&Lf(n,t)}):ci(r.getIterator(),function(t){Mf(e,t)&&Lf(n,t)}),n},Nf=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}},Cf=function(t){var e=L(\"Set\");try{(new e)[t](Nf(0));try{return(new e)[t](Nf(-1)),!1}catch(t){return!0}}catch(t){return!1}};Ce({target:\"Set\",proto:!0,real:!0,forced:!Cf(\"difference\")},{difference:Uf});var _f=pf.Set,Ff=pf.add,Bf=pf.has,Df=function(t){var e=df(this),r=Tf(t),n=new _f;return Rf(e)>r.size?ci(r.getIterator(),function(t){Bf(e,t)&&Ff(n,t)}):Sf(e,function(t){r.includes(t)&&Ff(n,t)}),n},zf=!Cf(\"intersection\")||a(function(){return\"3,2\"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))});Ce({target:\"Set\",proto:!0,real:!0,forced:zf},{intersection:Df});var Wf=pf.has,qf=function(t){var e=df(this),r=Tf(t);if(Rf(e)<=r.size)return!1!==Sf(e,function(t){if(r.includes(t))return!1},!0);var n=r.getIterator();return!1!==ci(n,function(t){if(Wf(e,t))return Tn(n,\"normal\",!1)})};Ce({target:\"Set\",proto:!0,real:!0,forced:!Cf(\"isDisjointFrom\")},{isDisjointFrom:qf});var Hf=function(t){var e=df(this),r=Tf(t);return!(Rf(e)>r.size)&&!1!==Sf(e,function(t){if(!r.includes(t))return!1},!0)};Ce({target:\"Set\",proto:!0,real:!0,forced:!Cf(\"isSubsetOf\")},{isSubsetOf:Hf});var $f=pf.has,Kf=function(t){var e=df(this),r=Tf(t);if(Rf(e)1?arguments[1]:void 0);return!1!==Sf(e,function(t){if(!r(t,t,e))return!1},!0)}});var el=dt(\"iterator\"),rl=Object,nl=L(\"Set\"),ol=function(t){return function(t){return M(t)&&\"number\"==typeof t.size&&T(t.has)&&T(t.keys)}(t)?t:function(t){if(P(t))return!1;var e=rl(t);return void 0!==e[el]||\"@@iterator\"in e||ut(un,pr(e))}(t)?new nl(t):t};Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{difference:function(t){return f(Uf,this,ol(t))}});var il=pf.Set,al=pf.add;Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{filter:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new il;return Sf(e,function(t){r(t,t,e)&&al(n,t)}),n}}),Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{find:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=Sf(e,function(t){if(r(t,t,e))return{value:t}},!0);return n&&n.value}}),Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{intersection:function(t){return f(Df,this,ol(t))}}),Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(t){return f(qf,this,ol(t))}}),Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{isSubsetOf:function(t){return f(Hf,this,ol(t))}}),Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{isSupersetOf:function(t){return f(Kf,this,ol(t))}});var ul=b([].join),sl=b([].push);Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{join:function(t){var e=df(this),r=void 0===t?\",\":Wr(t),n=[];return Sf(e,function(t){sl(n,t)}),ul(n,r)}});var cl=pf.Set,fl=pf.add;Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{map:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new cl;return Sf(e,function(t){fl(n,r(t,t,e))}),n}});var ll=TypeError;Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{reduce:function(t){var e=df(this),r=arguments.length<2,n=r?void 0:arguments[1];if(J(t),Sf(e,function(o){r?(r=!1,n=o):n=t(n,o,o,e)}),r)throw new ll(\"Reduce of empty set with no initial value\");return n}}),Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{some:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0);return!0===Sf(e,function(t){if(r(t,t,e))return!0},!0)}}),Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{symmetricDifference:function(t){return f(Xf,this,ol(t))}}),Ce({target:\"Set\",proto:!0,real:!0,forced:!0},{union:function(t){return f(Qf,this,ol(t))}});var hl=dt(\"species\"),pl=dt(\"isConcatSpreadable\"),vl=W>=51||!a(function(){var t=[];return t[pl]=!1,t.concat()[0]!==t}),dl=function(t){if(!M(t))return!1;var e=t[pl];return void 0!==e?!!e:ur(t)},gl=!(vl&&(W>=51||!a(function(){var t=[];return(t.constructor={})[hl]=function(){return{foo:1}},1!==t.concat(Boolean).foo})));Ce({target:\"Array\",proto:!0,arity:1,forced:gl},{concat:function(t){var e,r,n,o,i,a=it(this),u=xr(a,0),s=0;for(e=-1,n=arguments.length;e1?arguments[1]:void 0,n=e.length,o=void 0===r?n:ip(ve(r),n),i=Wr(t);return op(e,o-i.length,o)===i}}),Ze(\"String\",\"endsWith\");var sp=RangeError,cp=String.fromCharCode,fp=String.fromCodePoint,lp=b([].join);Ce({target:\"String\",stat:!0,arity:1,forced:!!fp&&1!==fp.length},{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,o=0;n>o;){if(e=+arguments[o++],he(e,1114111)!==e)throw new sp(e+\" is not a valid code point\");r[o]=e<65536?cp(e):cp(55296+((e-=65536)>>10),e%1024+56320)}return lp(r,\"\")}});var hp=b(\"\".indexOf);Ce({target:\"String\",proto:!0,forced:!rp(\"includes\")},{includes:function(t){return!!~hp(Wr(j(this)),Wr(tp(t)),arguments.length>1?arguments[1]:void 0)}}),Ze(\"String\",\"includes\"),b(un.String);var pp=/Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(_),vp=Xc.start;Ce({target:\"String\",proto:!0,forced:pp},{padStart:function(t){return vp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze(\"String\",\"padStart\");var dp=Xc.end;Ce({target:\"String\",proto:!0,forced:pp},{padEnd:function(t){return dp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze(\"String\",\"padEnd\");var gp=b([].push),yp=b([].join);Ce({target:\"String\",stat:!0},{raw:function(t){var e=k(it(t).raw),r=de(e);if(!r)return\"\";for(var n=arguments.length,o=[],i=0;;){if(gp(o,Wr(e[i++])),i===r)return yp(o,\"\");i1?arguments[1]:void 0,e.length)),n=Wr(t);return bp(e,r,r+n.length)===n}}),Ze(\"String\",\"startsWith\");var Op=zt.PROPER,xp=function(t){return a(function(){return!!Mi[t]()||\"​…᠎\"!==\"​…᠎\"[t]()||Op&&Mi[t].name!==t})},Rp=_i.start,Pp=xp(\"trimStart\")?function(){return Rp(this)}:\"\".trimStart;Ce({target:\"String\",proto:!0,name:\"trimStart\",forced:\"\".trimLeft!==Pp},{trimLeft:Pp}),Ce({target:\"String\",proto:!0,name:\"trimStart\",forced:\"\".trimStart!==Pp},{trimStart:Pp}),Ze(\"String\",\"trimLeft\");var Ap=_i.end,jp=xp(\"trimEnd\")?function(){return Ap(this)}:\"\".trimEnd;Ce({target:\"String\",proto:!0,name:\"trimEnd\",forced:\"\".trimRight!==jp},{trimRight:jp}),Ce({target:\"String\",proto:!0,name:\"trimEnd\",forced:\"\".trimEnd!==jp},{trimEnd:jp}),Ze(\"String\",\"trimRight\");var kp=Object.getOwnPropertyDescriptor,Ip=function(t){if(!u)return i[t];var e=kp(i,t);return e&&e.value},Tp=dt(\"iterator\"),Mp=!a(function(){var t=new URL(\"b?a=1&b=2&c=3\",\"https://a\"),e=t.searchParams,r=new URLSearchParams(\"a=1&a=2&b=3\"),n=\"\";return t.pathname=\"c%20d\",e.forEach(function(t,r){e.delete(\"b\"),n+=r+t}),r.delete(\"a\",2),r.delete(\"b\",void 0),!e.size&&!u||!e.sort||\"https://a/c%20d?a=1&c=3\"!==t.href||\"3\"!==e.get(\"c\")||\"a=1\"!==String(new URLSearchParams(\"?a=1\"))||!e[Tp]||\"a\"!==new URL(\"https://a@b\").username||\"b\"!==new URLSearchParams(new URLSearchParams(\"a=b\")).get(\"a\")||\"xn--e1aybc\"!==new URL(\"https://тест\").host||\"#%D0%B1\"!==new URL(\"https://a#б\").hash||\"a1c3\"!==n||\"x\"!==new URL(\"https://x\",void 0).host}),Lp=TypeError,Up=function(t,e){if(t0;)t[o]=t[--o];o!==i++&&(t[o]=n)}else for(var a=Np(r/2),u=Cp(vo(t,0,a),e),s=Cp(vo(t,a),e),c=u.length,f=s.length,l=0,h=0;l0&&0!=(t&r);r>>=1)e++;return e},pv=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},vv=function(t){for(var e=(t=nv(t,cv,\" \")).length,r=\"\",n=0;ne){r+=\"%\",n++;continue}var i=lv(t,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=hv(i);if(0===a)o=Jp(i);else{if(1===a||a>4){r+=\"�\",n++;continue}for(var u=[i],s=1;se||\"%\"!==tv(t,n));){var c=lv(t,n+1);if(c!=c){n+=3;break}if(c>191||c<128)break;rv(u,c),n+=2,s++}if(u.length!==a){r+=\"�\";continue}var f=pv(u);null===f?r+=\"�\":o=Qp(f)}}r+=o,n++}return r},dv=/[!'()~]|%20/g,gv={\"!\":\"%21\",\"'\":\"%27\",\"(\":\"%28\",\")\":\"%29\",\"~\":\"%7E\",\"%20\":\"+\"},yv=function(t){return gv[t]},mv=function(t){return nv(Xp(t),dv,yv)},bv=fn(function(t,e){zp(this,{type:Dp,target:Wp(t).entries,index:0,kind:e})},Bp,function(){var t=qp(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);var n=e[r];switch(t.kind){case\"keys\":return Pn(n.key,!1);case\"values\":return Pn(n.value,!1)}return Pn([n.key,n.value],!1)},!0),wv=function(t){this.entries=[],this.url=null,void 0!==t&&(M(t)?this.parseObject(t):this.parseQuery(\"string\"==typeof t?\"?\"===tv(t,0)?uv(t,1):t:Wr(t)))};wv.prototype={type:Bp,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,r,n,o,i,a,u,s=this.entries,c=Fn(t);if(c)for(r=(e=Dn(t,c)).next;!(n=f(r,e)).done;){if(o=Dn(kt(n.value)),(a=f(i=o.next,o)).done||(u=f(i,o)).done||!f(i,o).done)throw new Yp(\"Expected sequence with length 2\");rv(s,{key:Wr(a.value),value:Wr(u.value)})}else for(var l in t)ut(t,l)&&rv(s,{key:l,value:Wr(t[l])})},parseQuery:function(t){if(t)for(var e,r,n=this.entries,o=av(t,\"&\"),i=0;i0?arguments[0]:void 0));u||(this.size=t.entries.length)},Ev=Sv.prototype;if(Mo(Ev,{append:function(t,e){var r=Wp(this);Up(arguments.length,2),rv(r.entries,{key:Wr(t),value:Wr(e)}),u||this.length++,r.updateURL()},delete:function(t){for(var e=Wp(this),r=Up(arguments.length,1),n=e.entries,o=Wr(t),i=r<2?void 0:arguments[1],a=void 0===i?i:Wr(i),s=0;se.key?1:-1}),t.updateURL()},forEach:function(t){for(var e,r=Wp(this).entries,n=ar(t,arguments.length>1?arguments[1]:void 0),o=0;o1?Rv(arguments[1]):{})}}),T($p)){var Pv=function(t){return ko(this,Gp),new $p(t,arguments.length>1?Rv(arguments[1]):{})};Gp.constructor=Pv,Pv.prototype=Gp,Ce({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Pv})}}var Av={URLSearchParams:Sv,getState:Wp},jv=URLSearchParams,kv=jv.prototype,Iv=b(kv.append),Tv=b(kv.delete),Mv=b(kv.forEach),Lv=b([].push),Uv=new jv(\"a=1&a=2&b=3\");Uv.delete(\"a\",1),Uv.delete(\"b\",void 0),Uv+\"\"!=\"a=2\"&&ie(kv,\"delete\",function(t){var e=arguments.length,r=e<2?void 0:arguments[1];if(e&&void 0===r)return Tv(this,t);var n=[];Mv(this,function(t,e){Lv(n,{key:e,value:t})}),Up(e,1);for(var o,i=Wr(t),a=Wr(r),u=0,s=0,c=!1,f=n.length;uo;)for(var s,c=R(arguments[o++]),l=i?$v(_e(c),i(c)):_e(c),h=l.length,p=0;h>p;)s=l[p++],u&&!f(a,c,s)||(r[s]=c[s]);return r}:qv,Gv=2147483647,Vv=/[^\\0-\\u007E]/,Yv=/[.\\u3002\\uFF0E\\uFF61]/g,Xv=\"Overflow: input needs wider integers to process\",Jv=RangeError,Qv=b(Yv.exec),Zv=Math.floor,td=String.fromCharCode,ed=b(\"\".charCodeAt),rd=b([].join),nd=b([].push),od=b(\"\".replace),id=b(\"\".split),ad=b(\"\".toLowerCase),ud=function(t){return t+22+75*(t<26)},sd=function(t,e,r){var n=0;for(t=r?Zv(t/700):t>>1,t+=Zv(t/e);t>455;)t=Zv(t/35),n+=36;return Zv(n+36*t/(t+38))},cd=function(t){var e=[];t=function(t){for(var e=[],r=0,n=t.length;r=55296&&o<=56319&&r=i&&nZv((Gv-a)/l))throw new Jv(Xv);for(a+=(f-i)*l,i=f,r=0;rGv)throw new Jv(Xv);if(n===i){for(var h=a,p=36;;){var v=p<=u?1:p>=u+26?26:p-u;if(h?@[\\\\\\]^|]/,qd=/[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/,Hd=/^[\\u0000-\\u0020]+/,$d=/(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/,Kd=/[\\t\\n\\r]/g,Gd=function(t){var e,r,n,o;if(\"number\"==typeof t){for(e=[],r=0;r<4;r++)Td(e,t%256),t=md(t/256);return Ed(e,\".\")}if(\"object\"==typeof t){for(e=\"\",n=function(t){for(var e=null,r=1,n=null,o=0,i=0;i<8;i++)0!==t[i]?(o>r&&(e=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:e}(t),r=0;r<8;r++)o&&0===t[r]||(o&&(o=!1),n===r?(e+=r?\":\":\"::\",o=!0):(e+=Od(t[r],16),r<7&&(e+=\":\")));return\"[\"+e+\"]\"}return t},Vd={},Yd=Kv({},Vd,{\" \":1,'\"':1,\"<\":1,\">\":1,\"`\":1}),Xd=Kv({},Yd,{\"#\":1,\"?\":1,\"{\":1,\"}\":1}),Jd=Kv({},Xd,{\"/\":1,\":\":1,\";\":1,\"=\":1,\"@\":1,\"[\":1,\"\\\\\":1,\"]\":1,\"^\":1,\"|\":1}),Qd=function(t,e){var r=fd(t,0);return r>32&&r<127&&!ut(e,t)?t:encodeURIComponent(t)},Zd={ftp:21,file:null,http:80,https:443,ws:80,wss:443},tg=function(t,e){var r;return 2===t.length&&Sd(Nd,wd(t,0))&&(\":\"===(r=wd(t,1))||!e&&\"|\"===r)},eg=function(t){var e;return t.length>1&&tg(kd(t,0,2))&&(2===t.length||\"/\"===(e=wd(t,2))||\"\\\\\"===e||\"?\"===e||\"#\"===e)},rg=function(t){return\".\"===t||\"%2e\"===Id(t)},ng={},og={},ig={},ag={},ug={},sg={},cg={},fg={},lg={},hg={},pg={},vg={},dg={},gg={},yg={},mg={},bg={},wg={},Sg={},Eg={},Og={},xg=function(t,e,r){var n,o,i,a=Wr(t);if(e){if(o=this.parse(a))throw new gd(o);this.searchParams=null}else{if(void 0!==r&&(n=new xg(r,!0)),o=this.parse(a,null,n))throw new gd(o);(i=vd(new pd)).bindURL(this),this.searchParams=i}};xg.prototype={type:\"URL\",parse:function(t,e,r){var n,o,i,a,u,s=this,c=e||ng,f=0,l=\"\",h=!1,p=!1,v=!1;for(t=Wr(t),e||(s.scheme=\"\",s.username=\"\",s.password=\"\",s.host=null,s.port=null,s.path=[],s.query=null,s.fragment=null,s.cannotBeABaseURL=!1,t=Pd(t,Hd,\"\"),t=Pd(t,$d,\"$1\")),t=Pd(t,Kd,\"\"),n=Wn(t);f<=n.length;){switch(o=n[f],c){case ng:if(!o||!Sd(Nd,o)){if(e)return Md;c=ig;continue}l+=Id(o),c=og;break;case og:if(o&&(Sd(Cd,o)||\"+\"===o||\"-\"===o||\".\"===o))l+=Id(o);else{if(\":\"!==o){if(e)return Md;l=\"\",c=ig,f=0;continue}if(e&&(s.isSpecial()!==ut(Zd,l)||\"file\"===l&&(s.includesCredentials()||null!==s.port)||\"file\"===s.scheme&&!s.host))return;if(s.scheme=l,e)return void(s.isSpecial()&&Zd[s.scheme]===s.port&&(s.port=null));l=\"\",\"file\"===s.scheme?c=gg:s.isSpecial()&&r&&r.scheme===s.scheme?c=ag:s.isSpecial()?c=fg:\"/\"===n[f+1]?(c=ug,f++):(s.cannotBeABaseURL=!0,Rd(s.path,\"\"),c=Sg)}break;case ig:if(!r||r.cannotBeABaseURL&&\"#\"!==o)return Md;if(r.cannotBeABaseURL&&\"#\"===o){s.scheme=r.scheme,s.path=vo(r.path),s.query=r.query,s.fragment=\"\",s.cannotBeABaseURL=!0,c=Og;break}c=\"file\"===r.scheme?gg:sg;continue;case ag:if(\"/\"!==o||\"/\"!==n[f+1]){c=sg;continue}c=lg,f++;break;case ug:if(\"/\"===o){c=hg;break}c=wg;continue;case sg:if(s.scheme=r.scheme,o===Wv)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query;else if(\"/\"===o||\"\\\\\"===o&&s.isSpecial())c=cg;else if(\"?\"===o)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=\"\",c=Eg;else{if(\"#\"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.path.length--,c=wg;continue}s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query,s.fragment=\"\",c=Og}break;case cg:if(!s.isSpecial()||\"/\"!==o&&\"\\\\\"!==o){if(\"/\"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,c=wg;continue}c=hg}else c=lg;break;case fg:if(c=lg,\"/\"!==o||\"/\"!==wd(l,f+1))continue;f++;break;case lg:if(\"/\"!==o&&\"\\\\\"!==o){c=hg;continue}break;case hg:if(\"@\"===o){h&&(l=\"%40\"+l),h=!0,i=Wn(l);for(var d=0;d65535)return Ud;s.port=s.isSpecial()&&m===Zd[s.scheme]?null:m,l=\"\"}if(e)return;c=bg;continue}return Ud}l+=o;break;case gg:if(s.scheme=\"file\",\"/\"===o||\"\\\\\"===o)c=yg;else{if(!r||\"file\"!==r.scheme){c=wg;continue}switch(o){case Wv:s.host=r.host,s.path=vo(r.path),s.query=r.query;break;case\"?\":s.host=r.host,s.path=vo(r.path),s.query=\"\",c=Eg;break;case\"#\":s.host=r.host,s.path=vo(r.path),s.query=r.query,s.fragment=\"\",c=Og;break;default:eg(Ed(vo(n,f),\"\"))||(s.host=r.host,s.path=vo(r.path),s.shortenPath()),c=wg;continue}}break;case yg:if(\"/\"===o||\"\\\\\"===o){c=mg;break}r&&\"file\"===r.scheme&&!eg(Ed(vo(n,f),\"\"))&&(tg(r.path[0],!0)?Rd(s.path,r.path[0]):s.host=r.host),c=wg;continue;case mg:if(o===Wv||\"/\"===o||\"\\\\\"===o||\"?\"===o||\"#\"===o){if(!e&&tg(l))c=wg;else if(\"\"===l){if(s.host=\"\",e)return;c=bg}else{if(a=s.parseHost(l))return a;if(\"localhost\"===s.host&&(s.host=\"\"),e)return;l=\"\",c=bg}continue}l+=o;break;case bg:if(s.isSpecial()){if(c=wg,\"/\"!==o&&\"\\\\\"!==o)continue}else if(e||\"?\"!==o)if(e||\"#\"!==o){if(o!==Wv&&(c=wg,\"/\"!==o))continue}else s.fragment=\"\",c=Og;else s.query=\"\",c=Eg;break;case wg:if(o===Wv||\"/\"===o||\"\\\\\"===o&&s.isSpecial()||!e&&(\"?\"===o||\"#\"===o)){if(\"..\"===(u=Id(u=l))||\"%2e.\"===u||\".%2e\"===u||\"%2e%2e\"===u?(s.shortenPath(),\"/\"===o||\"\\\\\"===o&&s.isSpecial()||Rd(s.path,\"\")):rg(l)?\"/\"===o||\"\\\\\"===o&&s.isSpecial()||Rd(s.path,\"\"):(\"file\"===s.scheme&&!s.path.length&&tg(l)&&(s.host&&(s.host=\"\"),l=wd(l,0)+\":\"),Rd(s.path,l)),l=\"\",\"file\"===s.scheme&&(o===Wv||\"?\"===o||\"#\"===o))for(;s.path.length>1&&\"\"===s.path[0];)Ad(s.path);\"?\"===o?(s.query=\"\",c=Eg):\"#\"===o&&(s.fragment=\"\",c=Og)}else l+=Qd(o,Xd);break;case Sg:\"?\"===o?(s.query=\"\",c=Eg):\"#\"===o?(s.fragment=\"\",c=Og):o!==Wv&&(s.path[0]+=Qd(o,Vd));break;case Eg:e||\"#\"!==o?o!==Wv&&(\"'\"===o&&s.isSpecial()?s.query+=\"%27\":s.query+=\"#\"===o?\"%23\":Qd(o,Vd)):(s.fragment=\"\",c=Og);break;case Og:o!==Wv&&(s.fragment+=Qd(o,Yd))}f++}},parseHost:function(t){var e,r,n;if(\"[\"===wd(t,0)){if(\"]\"!==wd(t,t.length-1))return Ld;if(e=function(t){var e,r,n,o,i,a,u,s=[0,0,0,0,0,0,0,0],c=0,f=null,l=0,h=function(){return wd(t,l)};if(\":\"===h()){if(\":\"!==wd(t,1))return;l+=2,f=++c}for(;h();){if(8===c)return;if(\":\"!==h()){for(e=r=0;r<4&&Sd(zd,h());)e=16*e+yd(h(),16),l++,r++;if(\".\"===h()){if(0===r)return;if(l-=r,c>6)return;for(n=0;h();){if(o=null,n>0){if(!(\".\"===h()&&n<4))return;l++}if(!Sd(_d,h()))return;for(;Sd(_d,h());){if(i=yd(h(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;l++}s[c]=256*s[c]+o,2!=++n&&4!==n||c++}if(4!==n)return;break}if(\":\"===h()){if(l++,!h())return}else if(h())return;s[c++]=e}else{if(null!==f)return;l++,f=++c}}if(null!==f)for(a=c-f,c=7;0!==c&&a>0;)u=s[c],s[c--]=s[f+a-1],s[f+--a]=u;else if(8!==c)return;return s}(kd(t,1,-1)),!e)return Ld;this.host=e}else if(this.isSpecial()){if(t=function(t){var e,r,n=[],o=id(od(ad(t),Yv,\".\"),\".\");for(e=0;e4)return t;for(r=[],n=0;n1&&\"0\"===wd(o,0)&&(i=Sd(Fd,o)?16:8,o=kd(o,8===i?1:2)),\"\"===o)a=0;else{if(!Sd(10===i?Dd:8===i?Bd:zd,o))return t;a=yd(o,i)}Rd(r,a)}for(n=0;n=bd(256,5-e))return null}else if(a>255)return null;for(u=xd(r),n=0;n1?arguments[1]:void 0,n=ld(e,new xg(t,!1,r));u||(e.href=n.serialize(),e.origin=n.getOrigin(),e.protocol=n.getProtocol(),e.username=n.getUsername(),e.password=n.getPassword(),e.host=n.getHost(),e.hostname=n.getHostname(),e.port=n.getPort(),e.pathname=n.getPathname(),e.search=n.getSearch(),e.searchParams=n.getSearchParams(),e.hash=n.getHash())},Pg=Rg.prototype,Ag=function(t,e){return{get:function(){return hd(this)[t]()},set:e&&function(t){return hd(this)[e](t)},configurable:!0,enumerable:!0}};if(u&&(so(Pg,\"href\",Ag(\"serialize\",\"setHref\")),so(Pg,\"origin\",Ag(\"getOrigin\")),so(Pg,\"protocol\",Ag(\"getProtocol\",\"setProtocol\")),so(Pg,\"username\",Ag(\"getUsername\",\"setUsername\")),so(Pg,\"password\",Ag(\"getPassword\",\"setPassword\")),so(Pg,\"host\",Ag(\"getHost\",\"setHost\")),so(Pg,\"hostname\",Ag(\"getHostname\",\"setHostname\")),so(Pg,\"port\",Ag(\"getPort\",\"setPort\")),so(Pg,\"pathname\",Ag(\"getPathname\",\"setPathname\")),so(Pg,\"search\",Ag(\"getSearch\",\"setSearch\")),so(Pg,\"searchParams\",Ag(\"getSearchParams\")),so(Pg,\"hash\",Ag(\"getHash\",\"setHash\"))),ie(Pg,\"toJSON\",function(){return hd(this).serialize()},{enumerable:!0}),ie(Pg,\"toString\",function(){return hd(this).serialize()},{enumerable:!0}),dd){var jg=dd.createObjectURL,kg=dd.revokeObjectURL;jg&&ie(Rg,\"createObjectURL\",ar(jg,dd)),kg&&ie(Rg,\"revokeObjectURL\",ar(kg,dd))}an(Rg,\"URL\"),Ce({global:!0,constructor:!0,forced:!Mp,sham:!u},{URL:Rg});var Ig=L(\"URL\"),Tg=Mp&&a(function(){Ig.canParse()}),Mg=a(function(){return 1!==Ig.canParse.length});Ce({target:\"URL\",stat:!0,forced:!Tg||Mg},{canParse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return!!new Ig(r,n)}catch(t){return!1}}});var Lg=L(\"URL\");Ce({target:\"URL\",stat:!0,forced:!Mp},{parse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return new Lg(r,n)}catch(t){return null}}}),Ce({target:\"URL\",proto:!0,enumerable:!0},{toJSON:function(){return f(URL.prototype.toString,this)}});var Ug=WeakMap.prototype,Ng={WeakMap:WeakMap,set:b(Ug.set),get:b(Ug.get),has:b(Ug.has),remove:b(Ug.delete)},Cg=Ng.has,_g=function(t){return Cg(t),t},Fg=Ng.get,Bg=Ng.has,Dg=Ng.set;Ce({target:\"WeakMap\",proto:!0,real:!0,forced:!0},{emplace:function(t,e){var r,n,o=_g(this);return Bg(o,t)?(r=Fg(o,t),\"update\"in e&&(r=e.update(r,t,o),Dg(o,t,r)),r):(n=e.insert(t,o),Dg(o,t,n),n)}}),Ce({target:\"WeakMap\",stat:!0,forced:!0},{from:ei(Ng.WeakMap,Ng.set,!0)}),Ce({target:\"WeakMap\",stat:!0,forced:!0},{of:ri(Ng.WeakMap,Ng.set,!0)});var zg=Ng.remove;Ce({target:\"WeakMap\",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=_g(this),r=!0,n=0,o=arguments.length;n2&&(n=r,M(o=arguments[2])&&\"cause\"in o&&_t(n,\"cause\",o.cause));var s=[];return Ao(t,ny,{that:s}),_t(r,\"errors\",s),r};dn?dn(oy,ry):Ae(oy,ry,{name:!0});var iy=oy.prototype=Ve(ry.prototype,{constructor:d(1,oy),message:d(1,\"\"),name:d(1,\"AggregateError\")});Ce({global:!0,constructor:!0,arity:2},{AggregateError:oy});var ay,uy,sy,cy,fy=function(t){return _.slice(0,t.length)===t},ly=fy(\"Bun/\")?\"BUN\":fy(\"Cloudflare-Workers\")?\"CLOUDFLARE\":fy(\"Deno/\")?\"DENO\":fy(\"Node.js/\")?\"NODE\":i.Bun&&\"string\"==typeof Bun.version?\"BUN\":i.Deno&&\"object\"==typeof Deno.version?\"DENO\":\"process\"===E(i.process)?\"NODE\":i.window&&i.document?\"BROWSER\":\"REST\",hy=\"NODE\"===ly,py=/(?:ipad|iphone|ipod).*applewebkit/i.test(_),vy=i.setImmediate,dy=i.clearImmediate,gy=i.process,yy=i.Dispatch,my=i.Function,by=i.MessageChannel,wy=i.String,Sy=0,Ey={},Oy=\"onreadystatechange\";a(function(){ay=i.location});var xy=function(t){if(ut(Ey,t)){var e=Ey[t];delete Ey[t],e()}},Ry=function(t){return function(){xy(t)}},Py=function(t){xy(t.data)},Ay=function(t){i.postMessage(wy(t),ay.protocol+\"//\"+ay.host)};vy&&dy||(vy=function(t){Up(arguments.length,1);var e=T(t)?t:my(t),r=vo(arguments,1);return Ey[++Sy]=function(){Ra(e,void 0,r)},uy(Sy),Sy},dy=function(t){delete Ey[t]},hy?uy=function(t){gy.nextTick(Ry(t))}:yy&&yy.now?uy=function(t){yy.now(Ry(t))}:by&&!py?(cy=(sy=new by).port2,sy.port1.onmessage=Py,uy=ar(cy.postMessage,cy)):i.addEventListener&&T(i.postMessage)&&!i.importScripts&&ay&&\"file:\"!==ay.protocol&&!a(Ay)?(uy=Ay,i.addEventListener(\"message\",Py,!1)):uy=Oy in Et(\"script\")?function(t){De.appendChild(Et(\"script\"))[Oy]=function(){De.removeChild(this),xy(t)}}:function(t){setTimeout(Ry(t),0)});var jy={set:vy,clear:dy},ky=function(){this.head=null,this.tail=null};ky.prototype={add:function(t){var e={item:t,next:null},r=this.tail;r?r.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}};var Iy,Ty,My,Ly,Uy,Ny=ky,Cy=/ipad|iphone|ipod/i.test(_)&&\"undefined\"!=typeof Pebble,_y=/web0s(?!.*chrome)/i.test(_),Fy=jy.set,By=i.MutationObserver||i.WebKitMutationObserver,Dy=i.document,zy=i.process,Wy=i.Promise,qy=Ip(\"queueMicrotask\");if(!qy){var Hy=new Ny,$y=function(){var t,e;for(hy&&(t=zy.domain)&&t.exit();e=Hy.get();)try{e()}catch(t){throw Hy.head&&Iy(),t}t&&t.enter()};py||hy||_y||!By||!Dy?!Cy&&Wy&&Wy.resolve?((Ly=Wy.resolve(void 0)).constructor=Wy,Uy=ar(Ly.then,Ly),Iy=function(){Uy($y)}):hy?Iy=function(){zy.nextTick($y)}:(Fy=ar(Fy,i),Iy=function(){Fy($y)}):(Ty=!0,My=Dy.createTextNode(\"\"),new By($y).observe(My,{characterData:!0}),Iy=function(){My.data=Ty=!Ty}),qy=function(t){Hy.head||Iy(),Hy.add(t)}}var Ky,Gy,Vy,Yy=qy,Xy=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},Jy=i.Promise,Qy=dt(\"species\"),Zy=!1,tm=T(i.PromiseRejectionEvent),em=Ue(\"Promise\",function(){var t=Kt(Jy),e=t!==String(Jy);if(!e&&66===W)return!0;if(!W||W<51||!/native code/.test(t)){var r=new Jy(function(t){t(1)}),n=function(t){t(function(){},function(){})};if((r.constructor={})[Qy]=n,!(Zy=r.then(function(){})instanceof n))return!0}return!(e||\"BROWSER\"!==ly&&\"DENO\"!==ly||tm)}),rm={CONSTRUCTOR:em,REJECTION_EVENT:tm,SUBCLASSING:Zy},nm=TypeError,om=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw new nm(\"Bad Promise constructor\");e=t,r=n}),this.resolve=J(e),this.reject=J(r)},im={f:function(t){return new om(t)}},am=jy.set,um=\"Promise\",sm=rm.CONSTRUCTOR,cm=rm.REJECTION_EVENT,fm=rm.SUBCLASSING,lm=ne.getterFor(um),hm=ne.set,pm=Jy&&Jy.prototype,vm=Jy,dm=pm,gm=i.TypeError,ym=i.document,mm=i.process,bm=im.f,wm=bm,Sm=!!(ym&&ym.createEvent&&i.dispatchEvent),Em=\"unhandledrejection\",Om=function(t){var e;return!(!M(t)||!T(e=t.then))&&e},xm=function(t,e){var r,n,o,i=e.value,a=1===e.state,u=a?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{u?(a||(2===e.rejection&&km(e),e.rejection=1),!0===u?r=i:(l&&l.enter(),r=u(i),l&&(l.exit(),o=!0)),r===t.promise?c(new gm(\"Promise-chain cycle\")):(n=Om(r))?f(n,r,s,c):s(r)):c(i)}catch(t){l&&!o&&l.exit(),c(t)}},Rm=function(t,e){t.notified||(t.notified=!0,Yy(function(){for(var r,n=t.reactions;r=n.get();)xm(r,t);t.notified=!1,e&&!t.rejection&&Am(t)}))},Pm=function(t,e,r){var n,o;Sm?((n=ym.createEvent(\"Event\")).promise=e,n.reason=r,n.initEvent(t,!1,!0),i.dispatchEvent(n)):n={promise:e,reason:r},!cm&&(o=i[\"on\"+t])?o(n):t===Em&&function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}(\"Unhandled promise rejection\",r)},Am=function(t){f(am,i,function(){var e,r=t.facade,n=t.value;if(jm(t)&&(e=Xy(function(){hy?mm.emit(\"unhandledRejection\",n,r):Pm(Em,r,n)}),t.rejection=hy||jm(t)?2:1,e.error))throw e.value})},jm=function(t){return 1!==t.rejection&&!t.parent},km=function(t){f(am,i,function(){var e=t.facade;hy?mm.emit(\"rejectionHandled\",e):Pm(\"rejectionhandled\",e,t.value)})},Im=function(t,e,r){return function(n){t(e,n,r)}},Tm=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,Rm(t,!0))},Mm=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===e)throw new gm(\"Promise can't be resolved itself\");var n=Om(e);n?Yy(function(){var r={done:!1};try{f(n,e,Im(Mm,r,t),Im(Tm,r,t))}catch(e){Tm(r,e,t)}}):(t.value=e,t.state=1,Rm(t,!1))}catch(e){Tm({done:!1},e,t)}}};if(sm&&(vm=function(t){ko(this,dm),J(t),f(Ky,this);var e=lm(this);try{t(Im(Mm,e),Im(Tm,e))}catch(t){Tm(e,t)}},(Ky=function(t){hm(this,{type:um,done:!1,notified:!1,parent:!1,reactions:new Ny,rejection:!1,state:0,value:null})}).prototype=ie(dm=vm.prototype,\"then\",function(t,e){var r=lm(this),n=bm(Cc(this,vm));return r.parent=!0,n.ok=!T(t)||t,n.fail=T(e)&&e,n.domain=hy?mm.domain:void 0,0===r.state?r.reactions.add(n):Yy(function(){xm(n,r)}),n.promise}),Gy=function(){var t=new Ky,e=lm(t);this.promise=t,this.resolve=Im(Mm,e),this.reject=Im(Tm,e)},im.f=bm=function(t){return t===vm||void 0===t?new Gy(t):wm(t)},T(Jy)&&pm!==Object.prototype)){Vy=pm.then,fm||ie(pm,\"then\",function(t,e){var r=this;return new vm(function(t,e){f(Vy,r,t,e)}).then(t,e)},{unsafe:!0});try{delete pm.constructor}catch(t){}dn&&dn(pm,dm)}Ce({global:!0,constructor:!0,wrap:!0,forced:sm},{Promise:vm}),an(vm,um,!1),Uo(um);var Lm=rm.CONSTRUCTOR||!Gn(function(t){Jy.all(t).then(void 0,function(){})});Ce({target:\"Promise\",stat:!0,forced:Lm},{all:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),i=[],a=0,u=1;Ao(t,function(t){var s=a++,c=!1;u++,f(r,e,t).then(function(t){c||(c=!0,i[s]=t,--u||n(i))},o)}),--u||n(i)});return i.error&&o(i.value),r.promise}});var Um=Jy&&Jy.prototype;if(Ce({target:\"Promise\",proto:!0,forced:rm.CONSTRUCTOR,real:!0},{catch:function(t){return this.then(void 0,t)}}),T(Jy)){var Nm=L(\"Promise\").prototype.catch;Um.catch!==Nm&&ie(Um,\"catch\",Nm,{unsafe:!0})}Ce({target:\"Promise\",stat:!0,forced:Lm},{race:function(t){var e=this,r=im.f(e),n=r.reject,o=Xy(function(){var o=J(e.resolve);Ao(t,function(t){f(o,e,t).then(r.resolve,n)})});return o.error&&n(o.value),r.promise}}),Ce({target:\"Promise\",stat:!0,forced:rm.CONSTRUCTOR},{reject:function(t){var e=im.f(this);return(0,e.reject)(t),e.promise}});var Cm=function(t,e){if(kt(t),M(e)&&e.constructor===t)return e;var r=im.f(t);return(0,r.resolve)(e),r.promise};Ce({target:\"Promise\",stat:!0,forced:rm.CONSTRUCTOR},{resolve:function(t){return Cm(this,t)}}),Ce({target:\"Promise\",stat:!0,forced:Lm},{allSettled:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),o=[],i=0,a=1;Ao(t,function(t){var u=i++,s=!1;a++,f(r,e,t).then(function(t){s||(s=!0,o[u]={status:\"fulfilled\",value:t},--a||n(o))},function(t){s||(s=!0,o[u]={status:\"rejected\",reason:t},--a||n(o))})}),--a||n(o)});return i.error&&o(i.value),r.promise}});var _m=\"No one promise resolved\";Ce({target:\"Promise\",stat:!0,forced:Lm},{any:function(t){var e=this,r=L(\"AggregateError\"),n=im.f(e),o=n.resolve,i=n.reject,a=Xy(function(){var n=J(e.resolve),a=[],u=0,s=1,c=!1;Ao(t,function(t){var l=u++,h=!1;s++,f(n,e,t).then(function(t){h||c||(c=!0,o(t))},function(t){h||c||(h=!0,a[l]=t,--s||i(new r(a,_m)))})}),--s||i(new r(a,_m))});return a.error&&i(a.value),n.promise}}),Ce({target:\"Promise\",stat:!0},{withResolvers:function(){var t=im.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}});var Fm=Jy&&Jy.prototype,Bm=!!Jy&&a(function(){Fm.finally.call({then:function(){}},function(){})});if(Ce({target:\"Promise\",proto:!0,real:!0,forced:Bm},{finally:function(t){var e=Cc(this,L(\"Promise\")),r=T(t);return this.then(r?function(r){return Cm(e,t()).then(function(){return r})}:t,r?function(r){return Cm(e,t()).then(function(){throw r})}:t)}}),T(Jy)){var Dm=L(\"Promise\").prototype.finally;Fm.finally!==Dm&&ie(Fm,\"finally\",Dm,{unsafe:!0})}var zm=i.Promise,Wm=!1,qm=!zm||!zm.try||Xy(function(){zm.try(function(t){Wm=8===t},8)}).error||!Wm;Ce({target:\"Promise\",stat:!0,forced:qm},{try:function(t){var e=arguments.length>1?vo(arguments,1):[],r=im.f(this),n=Xy(function(){return Ra(J(t),void 0,e)});return(n.error?r.reject:r.resolve)(n.value),r.promise}}),Ze(\"Promise\",\"finally\");var Hm=\"URLSearchParams\"in self,$m=\"Symbol\"in self&&\"iterator\"in Symbol,Km=\"FileReader\"in self&&\"Blob\"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),Gm=\"FormData\"in self,Vm=\"ArrayBuffer\"in self;if(Vm)var Ym=[\"[object Int8Array]\",\"[object Uint8Array]\",\"[object Uint8ClampedArray]\",\"[object Int16Array]\",\"[object Uint16Array]\",\"[object Int32Array]\",\"[object Uint32Array]\",\"[object Float32Array]\",\"[object Float64Array]\"],Xm=ArrayBuffer.isView||function(t){return t&&Ym.indexOf(Object.prototype.toString.call(t))>-1};function Jm(t){if(\"string\"!=typeof t&&(t=String(t)),/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError(\"Invalid character in header field name\");return t.toLowerCase()}function Qm(t){return\"string\"!=typeof t&&(t=String(t)),t}function Zm(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return $m&&(e[Symbol.iterator]=function(){return e}),e}function tb(t){this.map={},t instanceof tb?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function eb(t){if(t.bodyUsed)return Promise.reject(new TypeError(\"Already read\"));t.bodyUsed=!0}function rb(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function nb(t){var e=new FileReader,r=rb(e);return e.readAsArrayBuffer(t),r}function ob(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function ib(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?\"string\"==typeof t?this._bodyText=t:Km&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:Gm&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:Hm&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():Vm&&Km&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=ob(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):Vm&&(ArrayBuffer.prototype.isPrototypeOf(t)||Xm(t))?this._bodyArrayBuffer=ob(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText=\"\",this.headers.get(\"content-type\")||(\"string\"==typeof t?this.headers.set(\"content-type\",\"text/plain;charset=UTF-8\"):this._bodyBlob&&this._bodyBlob.type?this.headers.set(\"content-type\",this._bodyBlob.type):Hm&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set(\"content-type\",\"application/x-www-form-urlencoded;charset=UTF-8\"))},Km&&(this.blob=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error(\"could not read FormData body as blob\");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?eb(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(nb)}),this.text=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=rb(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?e:t}(e.method||this.method||\"GET\"),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,(\"GET\"===this.method||\"HEAD\"===this.method)&&r)throw new TypeError(\"Body not allowed for GET or HEAD requests\");this._initBody(r)}function sb(t){var e=new FormData;return t.trim().split(\"&\").forEach(function(t){if(t){var r=t.split(\"=\"),n=r.shift().replace(/\\+/g,\" \"),o=r.join(\"=\").replace(/\\+/g,\" \");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function cb(t,e){e||(e={}),this.type=\"default\",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=\"statusText\"in e?e.statusText:\"OK\",this.headers=new tb(e.headers),this.url=e.url||\"\",this._initBody(t)}ub.prototype.clone=function(){return new ub(this,{body:this._bodyInit})},ib.call(ub.prototype),ib.call(cb.prototype),cb.prototype.clone=function(){return new cb(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new tb(this.headers),url:this.url})},cb.error=function(){var t=new cb(null,{status:0,statusText:\"\"});return t.type=\"error\",t};var fb=[301,302,303,307,308];cb.redirect=function(t,e){if(-1===fb.indexOf(e))throw new RangeError(\"Invalid status code\");return new cb(null,{status:e,headers:{location:t}})};var lb=self.DOMException;try{new lb}catch(t){(lb=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),lb.prototype.constructor=lb}function hb(t,e){return new Promise(function(r,n){var o=new ub(t,e);if(o.signal&&o.signal.aborted)return n(new lb(\"Aborted\",\"AbortError\"));var i=new XMLHttpRequest;function a(){i.abort()}i.onload=function(){var t,e,n={status:i.status,statusText:i.statusText,headers:(t=i.getAllResponseHeaders()||\"\",e=new tb,t.replace(/\\r?\\n[\\t ]+/g,\" \").split(/\\r?\\n/).forEach(function(t){var r=t.split(\":\"),n=r.shift().trim();if(n){var o=r.join(\":\").trim();e.append(n,o)}}),e)};n.url=\"responseURL\"in i?i.responseURL:n.headers.get(\"X-Request-URL\"),r(new cb(\"response\"in i?i.response:i.responseText,n))},i.onerror=function(){n(new TypeError(\"Network request failed\"))},i.ontimeout=function(){n(new TypeError(\"Network request failed\"))},i.onabort=function(){n(new lb(\"Aborted\",\"AbortError\"))},i.open(o.method,o.url,!0),\"include\"===o.credentials?i.withCredentials=!0:\"omit\"===o.credentials&&(i.withCredentials=!1),\"responseType\"in i&&Km&&(i.responseType=\"blob\"),o.headers.forEach(function(t,e){i.setRequestHeader(e,t)}),o.signal&&(o.signal.addEventListener(\"abort\",a),i.onreadystatechange=function(){4===i.readyState&&o.signal.removeEventListener(\"abort\",a)}),i.send(void 0===o._bodyInit?null:o._bodyInit)})}hb.polyfill=!0,self.fetch||(self.fetch=hb,self.Headers=tb,self.Request=ub,self.Response=cb);var pb=Object.getOwnPropertySymbols,vb=Object.prototype.hasOwnProperty,db=Object.prototype.propertyIsEnumerable,gb=function(){try{if(!Object.assign)return!1;var t=new String(\"abc\");if(t[5]=\"de\",\"5\"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e[\"_\"+String.fromCharCode(r)]=r;if(\"0123456789\"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(\"\"))return!1;var n={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(t){n[t]=t}),\"abcdefghijklmnopqrst\"===Object.keys(Object.assign({},n)).join(\"\")}catch(t){return!1}}()?Object.assign:function(t,e){for(var r,n,o=function(t){if(null==t)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}(t),i=1;i{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getAssetPrefix",{enumerable:!0,get:function(){return l}});let r=e.r(12718);function l(){let e=document.currentScript;if(!(e instanceof HTMLScriptElement))throw Object.defineProperty(new r.InvariantError(`Expected document.currentScript to be a ",a=a.removeChild(a.firstChild);break;case"select":a="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a="string"==typeof r.is?o.createElement(l,{is:r.is}):o.createElement(l)}}a[eW]=t,a[eq]=r;e:for(o=t.child;null!==o;){if(5===o.tag||6===o.tag)a.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(t.stateNode=a,cl(a,l,r),l){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break;case"img":r=!0;break;default:r=!1}r&&ii(t)}}return ip(t),t.subtreeFlags&=-0x2000001,iu(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&ii(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(u(166));if(e=en.current,rY(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(l=rV))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eW]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ct(e.nodeValue,n)))||rK(t,!0)}else(e=cu(e).createTextNode(r))[eW]=t,t.stateNode=e}return ip(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=rY(t),null!==n){if(null===e){if(!r)throw Error(u(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(u(557));e[eW]=t}else rJ(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;ip(t),e=!1}else n=rZ(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e){if(256&t.flags)return l7(t),t;return l7(t),null}if(0!=(128&t.flags))throw Error(u(558))}return ip(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rY(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(u(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(u(317));l[eW]=t}else rJ(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;ip(t),l=!1}else l=rZ(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&t.flags)return l7(t),t;return l7(t),null}}if(l7(t),0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),ic(t,t.updateQueue),ip(t),null;case 4:return ea(),null===e&&s1(t.stateNode.containerInfo),t.flags|=0x4000000,ip(t),null;case 10:return r5(t.type),ip(t),null;case 19:if(an(t),null===(r=t.memoizedState))return ip(t),null;if(l=0!=(128&t.flags),null===(a=r.rendering))if(l)id(r,!1);else{if(0!==uL||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=ar(e))){for(t.flags|=128,id(r,!1),t.updateQueue=e=a.updateQueue,ic(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rw(n,e),n=n.sibling;return at(t,1&ae.current|2),r$&&rF(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&ev()>uH&&(t.flags|=128,l=!0,id(r,!1),t.lanes=4194304)}else{if(!l)if(null!==(e=ar(a))){if(t.flags|=128,l=!0,t.updateQueue=e=e.updateQueue,ic(t,e),id(r,!0),null===r.tail&&"collapsed"!==r.tailMode&&"visible"!==r.tailMode&&!a.alternate&&!r$)return ip(t),null}else 2*ev()-r.renderingStartTime>uH&&0x20000000!==n&&(t.flags|=128,l=!0,id(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}if(null!==r.tail){e=r.tail;e:{for(n=e;null!==n;){if(null!==n.alternate){n=!1;break e}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=ev(),e.sibling=null,a=ae.current,a=l?1&a|2:1&a,"visible"===r.tailMode||"collapsed"===r.tailMode||!n||r$?at(t,a):(n=a,Z(l3,t),Z(ae,n),null===l4&&(l4=t)),r$&&rF(t,r.treeForkCount),e}return ip(t),null;case 22:case 23:return l7(t),l2(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(ip(t),6&t.subtreeFlags&&(t.flags|=8192)):ip(t),null!==(n=t.updateQueue)&&ic(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&J(ly),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),r5(li),ip(t),null;case 25:return null;case 30:return t.flags|=0x2000000,ip(t),null}throw Error(u(156,t.tag))}(t.alternate,t,uz);if(null!==n){ux=n;return}if(null!==(t=t.sibling)){ux=t;return}ux=t=e}while(null!==t)0===uL&&(uL=5)}function sm(e,t){do{var n=function(e,t){switch(rU(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return r5(li),ea(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return ei(t),null;case 31:if(null!==t.memoizedState){if(l7(t),null===t.alternate)throw Error(u(340));rJ()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(l7(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(u(340));rJ()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return an(t),65536&(e=t.flags)?(t.flags=-65537&e|128,null!==(e=t.memoizedState)&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return ea(),null;case 10:return r5(t.type),null;case 22:case 23:return l7(t),l2(),null!==e&&J(ly),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return r5(li),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,ux=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){ux=e;return}ux=e=n}while(null!==e)uL=6,ux=null}function sh(e,t,n,r,l,a,o,i,s,c,f){e.cancelPendingCommit=null;do sS();while(0!==uW)if(0!=(6&uS))throw Error(u(327));if(null!==t){var d;if(t===e.current)throw Error(u(177));if(!function(e,t,n,r,l,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var i=e.entanglements,u=e.expirationTimes,s=e.hiddenUpdates;for(n=o&~n;0fc){i.length=o;break}d=new Promise(cP.bind(d)),i.push(d)}}}return 0g&&(o=g,g=h,h=o);var v=nB(i,h),y=nB(i,g);if(v&&y&&(1!==p.rangeCount||p.anchorNode!==v.node||p.anchorOffset!==v.offset||p.focusNode!==y.node||p.focusOffset!==y.offset)){var b=f.createRange();b.setStart(v.node,v.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(y.node,y.offset)):(b.setEnd(y.node,y.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;in?32:n,W.T=null,n=uY,uY=null;var a=uq,o=uX;if(uW=0,uK=uq=null,uX=0,0!=(6&uS))throw Error(u(331));var i=uS;if(uS|=4,uy(a.current),uf(a,a.current,o,n),uS=i,sA(0,!1),e_&&"function"==typeof e_.onPostCommitFiberRoot)try{e_.onPostCommitFiberRoot(ex,a)}catch(e){}return!0}finally{q.p=l,W.T=r,sk(e,t)}}function sx(e,t,n){t=rN(n,t),t=oD(e.stateNode,t,2),null!==(e=l$(e,t,2))&&(eF(e,2),sF(e))}function s_(e,t,n){if(3===e.tag)sx(e,e,n);else for(;null!==t;){if(3===t.tag){sx(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===uQ||!uQ.has(r))){e=rN(n,e),null!==(r=l$(t,n=oF(2),2))&&(oA(n,r,t,e),eF(r,2),sF(r));break}}t=t.return}}function sP(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new uk;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(uO=!0,l.add(n),e=sN.bind(null,e,t,n),t.then(e,e))}function sN(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,uE===e&&(u_&n)===n&&(4===uL||3===uL&&(0x3c00000&u_)===u_&&300>ev()-uB?0==(2&uS)&&sr(e,0):uI|=n,uF===u_&&(uF=0)),sF(e)}function sC(e,t){0===t&&(t=eI()),null!==(e=rd(e,t))&&(eF(e,t),sF(e))}function sT(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),sC(e,n)}function sO(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(u(314))}null!==r&&r.delete(t),sC(e,n)}var sz=null,sL=null,sR=!1,sM=!1,sI=!1,sD=0;function sF(e){e!==sL&&null===e.next&&(null===sL?sz=sL=e:sL=sL.next=e),sM=!0,sR||(sR=!0,cg(function(){0!=(6&uS)?ep(eb,sj):sU()}))}function sA(e,t){if(!sI&&sM){sI=!0;do for(var n=!1,r=sz;null!==r;){if(!t)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=0xc000095&(a=(1<<31-eP(42|e)+1)-1&(l&~(o&~i)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,sH(r,a))}else a=u_,0==(3&(a=eR(r,r===uE?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||eM(r,a)||(n=!0,sH(r,a));r=r.next}while(n)sI=!1}}function sj(){sU()}function sU(){sM=sR=!1;var e,t=0;0===sD||((e=window.event)&&"popstate"===e.type?e===cd||(cd=e,0):(cd=null,1))||(t=sD);for(var n=ev(),r=null,l=sz;null!==l;){var a=l.next,o=sB(l,n);0===o?(l.next=null,null===r?sz=a:r.next=a,null===a&&(sL=r)):(r=l,(0!==t||0!=(3&o))&&(sM=!0)),l=a}0!==uW&&5!==uW||sA(t,!1),0!==sD&&(sD=0)}function sB(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0 title"):null)}function fo(e,t){return"img"===e&&null!=t.src&&""!==t.src&&null==t.onLoad&&"lazy"!==t.loading}function fi(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}function fu(e){return(e.width||100)*(e.height||100)*("number"==typeof devicePixelRatio?devicePixelRatio:1)*.25}function fs(e,t){"function"==typeof t.decode&&(e.imgCount++,t.complete||(e.imgBytes+=fu(t),e.suspenseyImages.push(t)),e=fp.bind(e),t.decode().then(e,e))}var fc=0;function ff(e){if(0===e.count&&(0===e.imgCount||!e.waitingForImages)){if(e.stylesheets)fh(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function fd(){this.count--,ff(this)}function fp(){this.imgCount--,ff(this)}var fm=null;function fh(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,fm=new Map,t.forEach(fg,e),fm=null,fd.call(e))}function fg(e,t){if(!(4&t.state.loading)){var n=fm.get(e);if(n)var r=n.get(null);else{n=new Map,fm.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;atypeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var f1=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!f1.isDisabled&&f1.supportsFiber)try{ex=f1.inject({bundleType:0,version:"19.3.0-canary-f93b9fd4-20251217",rendererPackageName:"react-dom",currentDispatcherRef:W,reconcilerVersion:"19.3.0-canary-f93b9fd4-20251217"}),e_=f1}catch(e){}}n.createRoot=function(e,t){if(!s(e))throw Error(u(299));var n=!1,r="",l=oz,a=oL,o=oR;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onUncaughtError&&(l=t.onUncaughtError),void 0!==t.onCaughtError&&(a=t.onCaughtError),void 0!==t.onRecoverableError&&(o=t.onRecoverableError)),t=fb(e,1,!1,null,null,n,r,null,l,a,o,fY),e[eK]=t.current,s1(e),new fJ(t)},n.hydrateRoot=function(e,t,n){if(!s(e))throw Error(u(299));var r,l=!1,a="",o=oz,i=oL,c=oR,f=null;return null!=n&&(!0===n.unstable_strictMode&&(l=!0),void 0!==n.identifierPrefix&&(a=n.identifierPrefix),void 0!==n.onUncaughtError&&(o=n.onUncaughtError),void 0!==n.onCaughtError&&(i=n.onCaughtError),void 0!==n.onRecoverableError&&(c=n.onRecoverableError),void 0!==n.formState&&(f=n.formState)),(t=fb(e,1,!0,t,null!=n?n:null,l,a,f,o,i,c,fY)).context=(r=null,rh),n=t.current,(a=lH(l=eB(l=u4()))).callback=null,l$(n,a,l),n=l,t.current.lanes=n,eF(t,n),sF(t),e[eK]=t.current,s1(e),new fZ(t)},n.version="19.3.0-canary-f93b9fd4-20251217"},88014,(e,t,n)=>{"use strict";!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),t.exports=e.r(46480)},42732,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"HeadManagerContext",{enumerable:!0,get:function(){return r}});let r=e.r(55682)._(e.r(71645)).default.createContext({})},51323,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={onCaughtError:function(){return d},onUncaughtError:function(){return p}};for(var l in r)Object.defineProperty(n,l,{enumerable:!0,get:r[l]});let a=e.r(55682),o=e.r(65713),i=e.r(32061),u=e.r(28279),s=e.r(72383),c=a._(e.r(68027)),f={decorateDevError:e=>e,handleClientError:()=>{},originConsoleError:console.error.bind(console)};function d(e,t){let n,r=t.errorBoundary?.constructor;if(n=n||r===s.ErrorBoundaryHandler&&t.errorBoundary.props.errorComponent===c.default)return p(e);(0,i.isBailoutToCSRError)(e)||(0,o.isNextRouterError)(e)||f.originConsoleError(e)}function p(e){(0,i.isBailoutToCSRError)(e)||(0,o.isNextRouterError)(e)||(0,u.reportGlobalError)(e)}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},62634,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"AppRouterAnnouncer",{enumerable:!0,get:function(){return o}});let r=e.r(71645),l=e.r(74080),a="next-route-announcer";function o({tree:e}){let[t,n]=(0,r.useState)(null);(0,r.useEffect)(()=>(n(function(){let e=document.getElementsByName(a)[0];if(e?.shadowRoot?.childNodes[0])return e.shadowRoot.childNodes[0];{let e=document.createElement(a);e.style.cssText="position:absolute";let t=document.createElement("div");return t.ariaLive="assertive",t.id="__next-route-announcer__",t.role="alert",t.style.cssText="position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal",e.attachShadow({mode:"open"}).appendChild(t),document.body.appendChild(e),t}}()),()=>{let e=document.getElementsByTagName(a)[0];e?.isConnected&&document.body.removeChild(e)}),[]);let[o,i]=(0,r.useState)(""),u=(0,r.useRef)(void 0);return(0,r.useEffect)(()=>{let e="";if(document.title)e=document.title;else{let t=document.querySelector("h1");t&&(e=t.innerText||t.textContent||"")}void 0!==u.current&&u.current!==e&&i(e),u.current=e},[e]),t?(0,l.createPortal)(o,t):null}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},25018,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"findHeadInCache",{enumerable:!0,get:function(){return a}});let r=e.r(13258),l=e.r(70725);function a(e,t){return function e(t,n,a,o){if(0===Object.keys(n).length)return[t,a,o];let i=Object.keys(n).filter(e=>"children"!==e);for(let o of("children"in n&&i.unshift("children"),i)){let[i,u]=n[o];if(i===r.DEFAULT_SEGMENT_KEY)continue;let s=t.parallelRoutes.get(o);if(!s)continue;let c=(0,l.createRouterCacheKey)(i),f=(0,l.createRouterCacheKey)(i,!0),d=s.get(c);if(!d)continue;let p=e(d,u,a+"/"+c,a+"/"+f);if(p)return p}return null}(e,t,"","")}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},41624,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={GracefulDegradeBoundary:function(){return i},default:function(){return u}};for(var l in r)Object.defineProperty(n,l,{enumerable:!0,get:r[l]});let a=e.r(43476),o=e.r(71645);class i extends o.Component{constructor(e){super(e),this.state={hasError:!1},this.rootHtml="",this.htmlAttributes={},this.htmlRef=(0,o.createRef)()}static getDerivedStateFromError(e){return{hasError:!0}}componentDidMount(){let e=this.htmlRef.current;this.state.hasError&&e&&Object.entries(this.htmlAttributes).forEach(([t,n])=>{e.setAttribute(t,n)})}render(){let{hasError:e}=this.state;return("u">typeof window&&!this.rootHtml&&(this.rootHtml=document.documentElement.innerHTML,this.htmlAttributes=function(e){let t={};for(let n=0;n{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return s}});let r=e.r(55682),l=e.r(43476);e.r(71645);let a=r._(e.r(41624)),o=e.r(72383),i=e.r(82604),u="u">typeof window&&(0,i.isBot)(window.navigator.userAgent);function s({children:e,errorComponent:t,errorStyles:n,errorScripts:r}){return u?(0,l.jsx)(a.default,{children:e}):(0,l.jsx)(o.ErrorBoundary,{errorComponent:t,errorStyles:n,errorScripts:r,children:e})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},75530,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return R}});let r=e.r(55682),l=e.r(90809),a=e.r(43476),o=l._(e.r(71645)),i=e.r(8372),u=e.r(88540),s=e.r(51191),c=e.r(61994),f=e.r(41538),d=e.r(62634),p=e.r(58442),m=e.r(25018),h=e.r(1244),g=e.r(87250),v=e.r(52817),y=e.r(34727),b=e.r(78377),w=e.r(99781),k=e.r(24063),S=e.r(68391),E=e.r(91949),x=r._(e.r(94109)),_=r._(e.r(68027)),P=e.r(97367),N=e.r(43369),C={};function T({appRouterState:e}){return(0,o.useInsertionEffect)(()=>{let{tree:t,pushRef:n,canonicalUrl:r,renderedSearch:l}=e,a={...n.preserveCustomHistoryState?window.history.state:{},__NA:!0,__PRIVATE_NEXTJS_INTERNALS_TREE:{tree:t,renderedSearch:l}};n.pendingPush&&(0,s.createHrefFromUrl)(new URL(window.location.href))!==r?(n.pendingPush=!1,window.history.pushState(a,"",r)):window.history.replaceState(a,"",r)},[e]),(0,o.useEffect)(()=>{(0,E.pingVisibleLinks)(e.nextUrl,e.tree)},[e.nextUrl,e.tree]),null}function O(e){null==e&&(e={});let t=window.history.state,n=t?.__NA;n&&(e.__NA=n);let r=t?.__PRIVATE_NEXTJS_INTERNALS_TREE;return r&&(e.__PRIVATE_NEXTJS_INTERNALS_TREE=r),e}function z({headCacheNode:e}){let t=null!==e?e.head:null,n=null!==e?e.prefetchHead:null,r=null!==n?n:t;return(0,o.useDeferredValue)(t,r)}function L({actionQueue:e,globalError:t,webSocket:n,staticIndicatorState:r}){let l,s=(0,f.useActionQueue)(e),{canonicalUrl:b}=s,{searchParams:E,pathname:_}=(0,o.useMemo)(()=>{let e=new URL(b,"u"{function e(e){e.persisted&&window.history.state?.__PRIVATE_NEXTJS_INTERNALS_TREE&&(C.pendingMpaPath=void 0,(0,f.dispatchAppRouterAction)({type:u.ACTION_RESTORE,url:new URL(window.location.href),historyState:window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE}))}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}},[]),(0,o.useEffect)(()=>{function e(e){let t="reason"in e?e.reason:e.error;if((0,S.isRedirectError)(t)){e.preventDefault();let n=(0,k.getURLFromRedirectError)(t);(0,k.getRedirectTypeFromError)(t)===S.RedirectType.push?w.publicAppRouterInstance.push(n,{}):w.publicAppRouterInstance.replace(n,{})}}return window.addEventListener("error",e),window.addEventListener("unhandledrejection",e),()=>{window.removeEventListener("error",e),window.removeEventListener("unhandledrejection",e)}},[]);let{pushRef:N}=s;if(N.mpaNavigation){if(C.pendingMpaPath!==b){let e=window.location;N.pendingPush?e.assign(b):e.replace(b),C.pendingMpaPath=b}throw h.unresolvedThenable}(0,o.useEffect)(()=>{let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history),n=e=>{let t=window.location.href,n=window.history.state?.__PRIVATE_NEXTJS_INTERNALS_TREE;(0,o.startTransition)(()=>{(0,f.dispatchAppRouterAction)({type:u.ACTION_RESTORE,url:new URL(e??t,t),historyState:n})})};window.history.pushState=function(t,r,l){return t?.__NA||t?._N||(t=O(t),l&&n(l)),e(t,r,l)},window.history.replaceState=function(e,r,l){return e?.__NA||e?._N||(e=O(e),l&&n(l)),t(e,r,l)};let r=e=>{if(e.state){if(!e.state.__NA)return void window.location.reload();(0,o.startTransition)(()=>{(0,w.dispatchTraverseAction)(window.location.href,e.state.__PRIVATE_NEXTJS_INTERNALS_TREE)})}};return window.addEventListener("popstate",r),()=>{window.history.pushState=e,window.history.replaceState=t,window.removeEventListener("popstate",r)}},[]);let{cache:L,tree:R,nextUrl:M,focusAndScrollRef:I,previousNextUrl:F}=s,A=(0,o.useMemo)(()=>(0,m.findHeadInCache)(L,R[1]),[L,R]),j=(0,o.useMemo)(()=>(0,y.getSelectedParams)(R),[R]),U=(0,o.useMemo)(()=>({parentTree:R,parentCacheNode:L,parentSegmentPath:null,parentParams:{},debugNameContext:"/",url:b,isActive:!0}),[R,L,b]),B=(0,o.useMemo)(()=>({tree:R,focusAndScrollRef:I,nextUrl:M,previousNextUrl:F}),[R,I,M,F]);if(null!==A){let[e,t,n]=A;l=(0,a.jsx)(z,{headCacheNode:e},"u"{let n=()=>e(e=>e+1);return I.add(n),t!==M.size&&n(),()=>{I.delete(n)}},[t,e]);let n=(0,N.getDeploymentIdQueryOrEmptyString)();return[...M].map((e,t)=>(0,a.jsx)("link",{rel:"stylesheet",href:`${e}${n}`,precedence:"next"},t))}globalThis._N_E_STYLE_LOAD=function(e){let t=M.size;return M.add(e),M.size!==t&&I.forEach(e=>e()),Promise.resolve()},("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},65716,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"createInitialRouterState",{enumerable:!0,get:function(){return i}});let r=e.r(51191),l=e.r(34727),a=e.r(50590),o=e.r(95871);function i({navigatedAt:e,initialFlightData:t,initialCanonicalUrlParts:n,initialRenderedSearch:i,location:u}){let s=n.join("/"),{tree:c,seedData:f,head:d}=(0,a.getFlightDataPartsFromPath)(t[0]),p=u?(0,r.createHrefFromUrl)(u):s;return{tree:c,cache:(0,o.createInitialCacheNodeForHydration)(e,c,f,d),pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:{apply:!1,onlyHashChange:!1,hashFragment:null,segmentPaths:[]},canonicalUrl:p,renderedSearch:i,nextUrl:((0,l.extractPathFromFlightRouterState)(c)||u?.pathname)??null,previousNextUrl:null,debugInfo:null}}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},98569,(e,t,n)=>{"use strict";let r,l,a,o;Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"hydrate",{enumerable:!0,get:function(){return A}});let i=e.r(55682),u=e.r(43476);e.r(23911);let s=i._(e.r(88014)),c=i._(e.r(71645)),f=e.r(35326),d=e.r(42732),p=e.r(97238),m=e.r(51323),h=e.r(32120),g=e.r(92245),v=e.r(99781),y=i._(e.r(75530)),b=e.r(65716);e.r(8372);let w=e.r(14297),k=e.r(50590),S=f.createFromReadableStream,E=f.createFromFetch,x=document,_=new TextEncoder,P=!1,N=!1,C=null;function T(e){if(0===e[0])a=[];else if(1===e[0]){if(!a)throw Object.defineProperty(Error("Unexpected server data: missing bootstrap script."),"__NEXT_ERROR_CODE",{value:"E18",enumerable:!1,configurable:!0});o?o.enqueue(_.encode(e[1])):a.push(e[1])}else if(2===e[0])C=e[1];else if(3===e[0]){if(!a)throw Object.defineProperty(Error("Unexpected server data: missing bootstrap script."),"__NEXT_ERROR_CODE",{value:"E18",enumerable:!1,configurable:!0});let n=atob(e[1]),r=new Uint8Array(n.length);for(var t=0;t{e.enqueue("string"==typeof t?_.encode(t):t)}),P&&!N)&&(null===e.desiredSize||e.desiredSize<0?e.error(Object.defineProperty(Error("The connection to the page was unexpectedly closed, possibly due to the stop button being clicked, loss of Wi-Fi, or an unstable internet connection."),"__NEXT_ERROR_CODE",{value:"E117",enumerable:!1,configurable:!0})):e.close(),N=!0,a=void 0),o=e}}),R=window.__NEXT_CLIENT_RESUME;function M({initialRSCPayload:e,actionQueue:t,webSocket:n,staticIndicatorState:r}){return(0,u.jsx)(y.default,{actionQueue:t,globalErrorState:e.G,webSocket:n,staticIndicatorState:r})}l=R?Promise.resolve(E(R,{callServer:h.callServer,findSourceMapURL:g.findSourceMapURL,debugChannel:r})).then(async e=>(0,k.createInitialRSCPayloadFromFallbackPrerender)(await R,e)):S(L,{callServer:h.callServer,findSourceMapURL:g.findSourceMapURL,debugChannel:r,startTime:0});let I=c.default.StrictMode;function D({children:e}){return e}let F={onDefaultTransitionIndicator:function(){return()=>{}},onRecoverableError:p.onRecoverableError,onCaughtError:m.onCaughtError,onUncaughtError:m.onUncaughtError};async function A(e,t){let n,r,a=await l;(0,w.setAppBuildId)(a.b);let o=Date.now(),i=(0,v.createMutableActionQueue)((0,b.createInitialRouterState)({navigatedAt:o,initialFlightData:a.f,initialCanonicalUrlParts:a.c,initialRenderedSearch:a.q,location:window.location}),e),f=(0,u.jsx)(I,{children:(0,u.jsx)(d.HeadManagerContext.Provider,{value:{appDir:!0},children:(0,u.jsx)(D,{children:(0,u.jsx)(M,{initialRSCPayload:a,actionQueue:i,webSocket:r,staticIndicatorState:n})})})});"__next_error__"===document.documentElement.id?s.default.createRoot(x,F).render(f):c.default.startTransition(()=>{s.default.hydrateRoot(x,f,{...F,formState:C})})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},94553,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});let r=e.r(96517);e.r(97238),window.next.turbopack=!0,self.__webpack_hash__="";let l=e.r(5526);(0,r.appBootstrap)(t=>{let{hydrate:n}=e.r(98569);n(l,t)}),("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)}]); \ No newline at end of file diff --git a/backend/static/_next/static/chunks/turbopack-530260eb4711dffb.js b/backend/static/_next/static/chunks/turbopack-530260eb4711dffb.js new file mode 100644 index 00000000..ac95600f --- /dev/null +++ b/backend/static/_next/static/chunks/turbopack-530260eb4711dffb.js @@ -0,0 +1,4 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/49849b1b478e6b82.js","static/chunks/f2f58a7e93290fbb.js","static/chunks/454889a9dcbe1f52.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=(self.TURBOPACK_CHUNK_SUFFIX??document?.currentScript?.getAttribute?.("src")?.replace(/^(.*(?=\?)|^.*$)/,""))||"",n=new WeakMap;function o(e,t){this.m=e,this.e=t}let l=o.prototype,i=Object.prototype.hasOwnProperty,s="u">typeof Symbol&&Symbol.toStringTag;function u(e,t,r){i.call(e,t)||Object.defineProperty(e,t,r)}function a(e,t){let r=e[t];return r||(r=c(t),e[t]=r),r}function c(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function f(e,t){u(e,"__esModule",{value:!0}),s&&u(e,s,{value:"Module"});let r=0;for(;rObject.getPrototypeOf(e):e=>e.__proto__,h=[null,p({}),p([]),p(p)];function d(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!h.includes(t);t=p(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),f(t,n),t}function m(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=d(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function b(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function y(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}l.i=m,l.A=function(e){return this.r(e)(m.bind(this))},l.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},l.r=function(e){return B(e,this.m).exports},l.f=function(e){function t(t){if(t=b(t),i.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=b(t),i.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let O=Symbol("turbopack queues"),g=Symbol("turbopack exports"),w=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}l.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=y(),u=Object.assign(s,{[g]:r.exports,[O]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[g]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(O in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[g]:{},[O]:e=>e(t)};return e.then(e=>{r[g]=e,C(t)},e=>{r[w]=e,C(t)}),r}}return{[g]:e,[O]:()=>{}}}),r=()=>t.map(e=>{if(e[w])throw e[w];return e[g]}),{promise:l,resolve:i}=y(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[O](u)),s.queueCount?l:r()},function(e){e?i(u[w]=e):l(u[g]),C(n)}),n&&-1===n.status&&(n.status=0)};let U=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}U.prototype=URL.prototype,l.U=U,l.z=function(e){throw Error("dynamic usage of require is not supported")},l.g=globalThis;let j=o.prototype;var _,k=((_=k||{})[_.Runtime=0]="Runtime",_[_.Parent=1]="Parent",_[_.Update=2]="Update",_);let v=new Map;l.M=v;let $=new Map,P=new Map;async function S(e,t,r){let n;if("string"==typeof r)return E(e,t,K(r));let o=r.included||[],l=o.map(e=>!!v.has(e)||$.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>P.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)P.has(e)||r.add(e);for(let n of r){let r=E(e,t,K(n));P.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=E(e,t,K(r.path)),i))P.has(o)||P.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}j.l=function(e){return S(1,this.m.id,e)};let T=Promise.resolve(void 0),A=new WeakMap;function E(t,r,n){let o=e.loadChunkCached(t,n),l=A.get(o);if(void 0===l){let e=A.set.bind(A,o,T);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),A.set(o,l)}return l}function K(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}j.L=function(e){return E(1,this.m.id,e)},j.R=function(e){let t=this.r(e);return t?.default??t},j.P=function(e){return`/ROOT/${e??""}`},j.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)}; +self.TURBOPACK_CHUNK_SUFFIX = ${JSON.stringify(r)}; +self.TURBOPACK_NEXT_CHUNK_URLS = ${JSON.stringify(e.reverse().map(K),null,2)}; +importScripts(...self.TURBOPACK_NEXT_CHUNK_URLS.map(c => self.TURBOPACK_WORKER_LOCATION + c).reverse());`],{type:"text/javascript"});return URL.createObjectURL(t)};let x=/\.js(?:\?[^#]*)?(?:#.*)?$/,N=/\.css(?:\?[^#]*)?(?:#.*)?$/;function M(e){return N.test(e)}l.w=function(t,r,n){return e.loadWebAssembly(1,this.m.id,t,r,n)},l.u=function(t,r){return e.loadWebAssemblyModule(1,this.m.id,t,r)};let L={};l.c=L;let B=(e,t)=>{let r=L[e];if(r){if(r.error)throw r.error;return r}return q(e,k.Parent,t.id)};function q(e,t,r){let n=v.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let l=c(e),i=l.exports;L[e]=l;let s=new o(l,i);try{n(s,l,i)}catch(e){throw l.error=e,e}return l.namespaceObject&&l.exports!==l.namespaceObject&&d(l.exports,l.namespaceObject),l}function I(r){let n,o=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(("u">typeof TURBOPACK_NEXT_CHUNK_URLS?TURBOPACK_NEXT_CHUNK_URLS.pop():e.getAttribute("src")).replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(r[0]);return 2===r.length?n=r[1]:(n=void 0,!function(e,t,r,n){let o=1;for(;o{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},W.set(e,t)}return t}e={async registerChunk(e,t){if(H(K(e)).resolve(),null!=t){for(let e of t.otherChunks)H(K("string"==typeof e?e:e.path));if(await Promise.all(t.otherChunks.map(t=>S(0,e,t))),t.runtimeModuleIds.length>0)for(let r of t.runtimeModuleIds)!function(e,t){let r=L[t];if(r){if(r.error)throw r.error;return}q(t,k.Runtime,e)}(e,r)}},loadChunkCached:(e,t)=>(function(e,t){let r=H(t);if(r.loadingStarted)return r.promise;if(e===k.Runtime)return r.loadingStarted=!0,M(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(M(t));else if(x.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(TURBOPACK_WORKER_LOCATION+t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(M(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(x.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let l=fetch(K(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(K(r));return await WebAssembly.compileStreaming(o)}};let F=globalThis.TURBOPACK;globalThis.TURBOPACK={push:I},F.forEach(I)})(); \ No newline at end of file diff --git a/backend/static/_next/static/media/0c89a48fa5027cee-s.p.4564287c.woff2 b/backend/static/_next/static/media/0c89a48fa5027cee-s.p.4564287c.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7b0e76a5c9bdfdb5ccc8c9ab44780b5ff788c6db GIT binary patch literal 22320 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 LUu67G82|tP?5>Y; literal 0 HcmV?d00001 diff --git a/backend/static/_next/static/media/32687112bd2dd8db-s.cfdd66c2.woff2 b/backend/static/_next/static/media/32687112bd2dd8db-s.cfdd66c2.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a0fadcfcb265537b275875c510df4ad41f9ef31f GIT binary patch literal 6772 zcmV-)8jIz3Pew8T0RR9102*`v6951J071wA02&1V0RR9100000000000000000000 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 W$L~XAl1Pv+QJI>Vlb$pI0001`y~9rc literal 0 HcmV?d00001 diff --git a/backend/static/_next/static/media/58c4895d0a0ef7cc-s.78d1a7ae.woff2 b/backend/static/_next/static/media/58c4895d0a0ef7cc-s.78d1a7ae.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..29a1a726a36b09b2286da85fc5a9a7d9f32ccaba GIT binary patch literal 9360 zcmV;BByZbyPew8T0RR9103?tA5&!@I08hjK03;^>0RR9100000000000000000000 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 K&Kr9!=)?ypB>Kt# literal 0 HcmV?d00001 diff --git a/backend/static/_next/static/media/6ab0db14f70d8ed6-s.18d7c7dc.woff2 b/backend/static/_next/static/media/6ab0db14f70d8ed6-s.18d7c7dc.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bdade6d841cb0a1dde9dd657eae8d2e8d4306700 GIT binary patch literal 15240 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 CO03ra literal 0 HcmV?d00001 diff --git a/backend/static/_next/static/media/a343f882a40d2cc9-s.p.71e1367e.woff2 b/backend/static/_next/static/media/a343f882a40d2cc9-s.p.71e1367e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9d7abb17d323bff647995a94222b92b26a0fc93d GIT binary patch literal 24576 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 literal 0 HcmV?d00001 diff --git a/backend/static/_next/static/media/favicon.0b3bf435.ico b/backend/static/_next/static/media/favicon.0b3bf435.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/backend/static/_not-found.html b/backend/static/_not-found.html new file mode 100644 index 00000000..2cd3160d --- /dev/null +++ b/backend/static/_not-found.html @@ -0,0 +1 @@ +404: This page could not be found.Kanban Studio

404

This page could not be found.

\ No newline at end of file diff --git a/backend/static/_not-found.txt b/backend/static/_not-found.txt new file mode 100644 index 00000000..5285b150 --- /dev/null +++ b/backend/static/_not-found.txt @@ -0,0 +1,14 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +3:I[37457,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +4:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] +5:"$Sreact.suspense" +7:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] +9:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] +b:I[68027,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +:HL["/_next/static/chunks/1ebc837379b5814f.css","style"] +0:{"P":null,"b":"8bdK9bS4Mch8Og7b5XF7X","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/1ebc837379b5814f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"space_grotesk_590fd37e-module__Yn3fQa__variable manrope_7102bd49-module__TIbn1W__variable","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} +8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +c:I[27201,["/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] +6:null +a:[["$","title","0",{"children":"Kanban Studio"}],["$","meta","1",{"name":"description","content":"A focused, single-board kanban workspace."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$Lc","3",{}]] diff --git a/backend/static/_not-found/__next._full.txt b/backend/static/_not-found/__next._full.txt new file mode 100644 index 00000000..5285b150 --- /dev/null +++ b/backend/static/_not-found/__next._full.txt @@ -0,0 +1,14 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +3:I[37457,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +4:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] +5:"$Sreact.suspense" +7:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] +9:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] +b:I[68027,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +:HL["/_next/static/chunks/1ebc837379b5814f.css","style"] +0:{"P":null,"b":"8bdK9bS4Mch8Og7b5XF7X","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/1ebc837379b5814f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"space_grotesk_590fd37e-module__Yn3fQa__variable manrope_7102bd49-module__TIbn1W__variable","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} +8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +c:I[27201,["/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] +6:null +a:[["$","title","0",{"children":"Kanban Studio"}],["$","meta","1",{"name":"description","content":"A focused, single-board kanban workspace."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$Lc","3",{}]] diff --git a/backend/static/_not-found/__next._head.txt b/backend/static/_not-found/__next._head.txt new file mode 100644 index 00000000..dca39186 --- /dev/null +++ b/backend/static/_not-found/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] +0:{"buildId":"8bdK9bS4Mch8Og7b5XF7X","rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Kanban Studio"}],["$","meta","1",{"name":"description","content":"A focused, single-board kanban workspace."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/backend/static/_not-found/__next._index.txt b/backend/static/_not-found/__next._index.txt new file mode 100644 index 00000000..11b4df8e --- /dev/null +++ b/backend/static/_not-found/__next._index.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +3:I[37457,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +:HL["/_next/static/chunks/1ebc837379b5814f.css","style"] +0:{"buildId":"8bdK9bS4Mch8Og7b5XF7X","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/1ebc837379b5814f.css","precedence":"next"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"space_grotesk_590fd37e-module__Yn3fQa__variable manrope_7102bd49-module__TIbn1W__variable","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/backend/static/_not-found/__next._not-found.__PAGE__.txt b/backend/static/_not-found/__next._not-found.__PAGE__.txt new file mode 100644 index 00000000..0781f920 --- /dev/null +++ b/backend/static/_not-found/__next._not-found.__PAGE__.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] +3:"$Sreact.suspense" +0:{"buildId":"8bdK9bS4Mch8Og7b5XF7X","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +4:null diff --git a/backend/static/_not-found/__next._not-found.txt b/backend/static/_not-found/__next._not-found.txt new file mode 100644 index 00000000..92c74d66 --- /dev/null +++ b/backend/static/_not-found/__next._not-found.txt @@ -0,0 +1,4 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +3:I[37457,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +0:{"buildId":"8bdK9bS4Mch8Og7b5XF7X","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/backend/static/_not-found/__next._tree.txt b/backend/static/_not-found/__next._tree.txt new file mode 100644 index 00000000..7e59d943 --- /dev/null +++ b/backend/static/_not-found/__next._tree.txt @@ -0,0 +1,2 @@ +:HL["/_next/static/chunks/1ebc837379b5814f.css","style"] +0:{"buildId":"8bdK9bS4Mch8Og7b5XF7X","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/backend/static/favicon.ico b/backend/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/backend/static/file.svg b/backend/static/file.svg new file mode 100644 index 00000000..004145cd --- /dev/null +++ b/backend/static/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/globe.svg b/backend/static/globe.svg new file mode 100644 index 00000000..567f17b0 --- /dev/null +++ b/backend/static/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/index.html b/backend/static/index.html new file mode 100644 index 00000000..425570c4 --- /dev/null +++ b/backend/static/index.html @@ -0,0 +1 @@ +Kanban Studio

Loading...

\ No newline at end of file diff --git a/backend/static/index.txt b/backend/static/index.txt new file mode 100644 index 00000000..5008d72c --- /dev/null +++ b/backend/static/index.txt @@ -0,0 +1,20 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +3:I[37457,["/_next/static/chunks/2f236954d6a65e12.js"],"default"] +4:I[47257,["/_next/static/chunks/2f236954d6a65e12.js"],"ClientPageRoot"] +5:I[52683,["/_next/static/chunks/41cdc310bc504822.js"],"default"] +8:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] +9:"$Sreact.suspense" +b:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] +d:I[97367,["/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] +f:I[68027,[],"default"] +:HL["/_next/static/chunks/1ebc837379b5814f.css","style"] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.4564287c.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.71e1367e.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +0:{"P":null,"b":"8bdK9bS4Mch8Og7b5XF7X","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/1ebc837379b5814f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"space_grotesk_590fd37e-module__Yn3fQa__variable manrope_7102bd49-module__TIbn1W__variable","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/41cdc310bc504822.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[]],"S":true} +6:{} +7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params" +c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +10:I[27201,["/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] +a:null +e:[["$","title","0",{"children":"Kanban Studio"}],["$","meta","1",{"name":"description","content":"A focused, single-board kanban workspace."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L10","3",{}]] diff --git a/backend/static/next.svg b/backend/static/next.svg new file mode 100644 index 00000000..5174b28c --- /dev/null +++ b/backend/static/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/vercel.svg b/backend/static/vercel.svg new file mode 100644 index 00000000..77053960 --- /dev/null +++ b/backend/static/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/window.svg b/backend/static/window.svg new file mode 100644 index 00000000..b2b2a44f --- /dev/null +++ b/backend/static/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/tests/__init__.py b/backend/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/tests/test_ai.py b/backend/tests/test_ai.py new file mode 100644 index 00000000..6ca350a4 --- /dev/null +++ b/backend/tests/test_ai.py @@ -0,0 +1,74 @@ +import pytest +from unittest.mock import AsyncMock, patch +from fastapi.testclient import TestClient + +from main import app + +client = TestClient(app) + +AUTH_COOKIES = {} + + +def login(): + import os + import tempfile + from app import db + os.environ.setdefault("DB_PATH", tempfile.mktemp(suffix=".db")) + db.DB_PATH = os.environ["DB_PATH"] + db.ensure_db() + resp = client.post("/api/auth/login", json={"username": "user", "password": "password"}) + AUTH_COOKIES["session_token"] = resp.cookies["session_token"] + + +login() + + +@pytest.mark.asyncio +async def test_call_ai_constructs_correct_request(): + from app.ai import call_ai + with patch("app.ai.OPENROUTER_API_KEY", "test-key"): + with patch("app.ai.httpx.AsyncClient") as mock_cls: + mock_resp = AsyncMock() + mock_resp.raise_for_status = lambda: None + mock_resp.json = lambda: {"choices": [{"message": {"content": "4"}}]} + + mock_client = AsyncMock() + mock_client.post = AsyncMock(return_value=mock_resp) + mock_client.__aenter__ = AsyncMock(return_value=mock_client) + mock_client.__aexit__ = AsyncMock(return_value=False) + mock_cls.return_value = mock_client + + result = await call_ai([{"role": "user", "content": "What is 2+2?"}]) + assert result == "4" + mock_client.post.assert_called_once() + call_kwargs = mock_client.post.call_args[1] + assert call_kwargs["json"]["model"] == "z-ai/glm-5.1" + assert call_kwargs["json"]["messages"] == [{"role": "user", "content": "What is 2+2?"}] + assert "Bearer test-key" in call_kwargs["headers"]["Authorization"] + + +@pytest.mark.asyncio +async def test_call_ai_missing_key(): + from app.ai import call_ai + with patch("app.ai.OPENROUTER_API_KEY", ""): + with pytest.raises(ValueError, match="OPENROUTER_API_KEY is not set"): + await call_ai([{"role": "user", "content": "test"}]) + + +def test_ai_test_endpoint(): + with patch("app.routes.call_ai", new_callable=AsyncMock, return_value="4"): + response = client.post("/api/ai/test", cookies=AUTH_COOKIES) + assert response.status_code == 200 + assert response.json()["response"] == "4" + + +def test_ai_test_endpoint_no_auth(): + fresh = TestClient(app) + response = fresh.post("/api/ai/test") + assert response.status_code == 401 + + +def test_ai_test_endpoint_no_api_key(): + with patch("app.routes.call_ai", new_callable=AsyncMock, side_effect=ValueError("OPENROUTER_API_KEY is not set")): + response = client.post("/api/ai/test", cookies=AUTH_COOKIES) + assert response.status_code == 500 diff --git a/backend/tests/test_ai_chat.py b/backend/tests/test_ai_chat.py new file mode 100644 index 00000000..0c0d3515 --- /dev/null +++ b/backend/tests/test_ai_chat.py @@ -0,0 +1,198 @@ +import json +import os +import tempfile +from unittest.mock import AsyncMock, patch + +from fastapi.testclient import TestClient + +from main import app +from app import db + +tmp = tempfile.mktemp(suffix=".db") +os.environ["DB_PATH"] = tmp +db.DB_PATH = tmp +db.ensure_db() + +client = TestClient(app) + +AUTH_COOKIES = {} + + +def login(): + resp = client.post("/api/auth/login", json={"username": "user", "password": "password"}) + AUTH_COOKIES["session_token"] = resp.cookies["session_token"] + + +login() + + +# --- _parse_response tests --- + + +def test_parse_response_valid_json(): + from app.ai import _parse_response + raw = json.dumps({"message": "Done!", "board_update": {"columns": []}}) + result = _parse_response(raw) + assert result["message"] == "Done!" + assert result["board_update"] == {"columns": []} + + +def test_parse_response_null_board_update(): + from app.ai import _parse_response + raw = json.dumps({"message": "No changes needed", "board_update": None}) + result = _parse_response(raw) + assert result["message"] == "No changes needed" + assert result["board_update"] is None + + +def test_parse_response_invalid_json(): + from app.ai import _parse_response + result = _parse_response("I don't know how to do that") + assert result["message"] == "I don't know how to do that" + assert result["board_update"] is None + + +def test_parse_response_markdown_code_block(): + from app.ai import _parse_response + raw = '```json\n{"message": "Hi", "board_update": null}\n```' + result = _parse_response(raw) + assert result["message"] == "Hi" + assert result["board_update"] is None + + +def test_parse_response_missing_message_field(): + from app.ai import _parse_response + raw = json.dumps({"board_update": None}) + result = _parse_response(raw) + assert result["message"] == raw # Falls back to raw text + assert result["board_update"] is None + + +# --- Conversation history tests --- + + +def test_conversation_history(): + from app.ai import append_history, get_history, clear_history + clear_history("testuser") + assert get_history("testuser") == [] + + append_history("testuser", "user", "Hello") + append_history("testuser", "assistant", "Hi there") + history = get_history("testuser") + assert len(history) == 2 + assert history[0] == {"role": "user", "content": "Hello"} + assert history[1] == {"role": "assistant", "content": "Hi there"} + + clear_history("testuser") + assert get_history("testuser") == [] + + +def test_conversation_history_truncation(): + from app.ai import append_history, get_history, clear_history + clear_history("testuser2") + for i in range(25): + append_history("testuser2", "user", f"msg {i}") + history = get_history("testuser2") + assert len(history) == 20 + assert history[0]["content"] == "msg 5" + clear_history("testuser2") + + +# --- apply_board_update tests --- + + +def test_apply_board_update(): + from app.db import get_board, apply_board_update + board = get_board("user") + assert board is not None + + # Modify: rename first column and add a card + update = { + "columns": [ + {"id": "col-backlog", "title": "Todo", "position": 0, "cards": [ + {"id": "card-1", "title": "Task 1", "details": "Do it", "position": 0}, + {"id": "card-new", "title": "New task", "details": "Added by AI", "position": 1}, + ]}, + {"id": "col-discovery", "title": "Discovery", "position": 1, "cards": []}, + {"id": "col-progress", "title": "In Progress", "position": 2, "cards": []}, + {"id": "col-review", "title": "Review", "position": 3, "cards": []}, + {"id": "col-done", "title": "Done", "position": 4, "cards": []}, + ] + } + apply_board_update(update) + + updated = get_board("user") + assert updated["columns"][0]["title"] == "Todo" + assert len(updated["columns"][0]["cards"]) == 2 + assert updated["columns"][0]["cards"][1]["title"] == "New task" + + +# --- Chat endpoint tests --- + + +def test_chat_endpoint_no_update(): + with patch("app.ai.call_ai", new_callable=AsyncMock, return_value=json.dumps({ + "message": "Your board looks good!", + "board_update": None, + })): + response = client.post( + "/api/ai/chat", + json={"message": "How does my board look?"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 200 + data = response.json() + assert data["message"] == "Your board looks good!" + assert data["board_updated"] is False + + +def test_chat_endpoint_with_update(): + from app.ai import clear_history + clear_history("user") + + board_update = { + "columns": [ + {"id": "col-backlog", "title": "Backlog", "position": 0, "cards": [ + {"id": "card-1", "title": "Task", "details": "Details", "position": 0}, + ]}, + {"id": "col-discovery", "title": "Discovery", "position": 1, "cards": []}, + {"id": "col-progress", "title": "In Progress", "position": 2, "cards": []}, + {"id": "col-review", "title": "Review", "position": 3, "cards": []}, + {"id": "col-done", "title": "Done", "position": 4, "cards": []}, + ] + } + with patch("app.ai.call_ai", new_callable=AsyncMock, return_value=json.dumps({ + "message": "I added a card for you", + "board_update": board_update, + })): + response = client.post( + "/api/ai/chat", + json={"message": "Add a card called Task"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 200 + data = response.json() + assert data["board_updated"] is True + + +def test_chat_endpoint_missing_message(): + response = client.post("/api/ai/chat", json={}, cookies=AUTH_COOKIES) + assert response.status_code == 400 + + +def test_chat_endpoint_no_auth(): + fresh = TestClient(app) + response = fresh.post("/api/ai/chat", json={"message": "hello"}) + assert response.status_code == 401 + + +def test_chat_endpoint_ai_failure(): + from app.ai import clear_history + clear_history("user") + with patch("app.ai.call_ai", new_callable=AsyncMock, side_effect=Exception("API error")): + response = client.post( + "/api/ai/chat", + json={"message": "Hello"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 502 diff --git a/backend/tests/test_auth.py b/backend/tests/test_auth.py new file mode 100644 index 00000000..fe78ef53 --- /dev/null +++ b/backend/tests/test_auth.py @@ -0,0 +1,56 @@ +from fastapi.testclient import TestClient + +from main import app + +client = TestClient(app) + + +def test_login_success(): + response = client.post("/api/auth/login", json={"username": "user", "password": "password"}) + assert response.status_code == 200 + assert response.json()["username"] == "user" + assert "session_token" in response.cookies + + +def test_login_wrong_password(): + response = client.post("/api/auth/login", json={"username": "user", "password": "wrong"}) + assert response.status_code == 401 + + +def test_login_wrong_username(): + response = client.post("/api/auth/login", json={"username": "admin", "password": "password"}) + assert response.status_code == 401 + + +def test_me_authenticated(): + login_resp = client.post("/api/auth/login", json={"username": "user", "password": "password"}) + token = login_resp.cookies["session_token"] + response = client.get("/api/auth/me", cookies={"session_token": token}) + assert response.status_code == 200 + assert response.json()["username"] == "user" + + +def test_me_unauthenticated(): + fresh_client = TestClient(app) + response = fresh_client.get("/api/auth/me") + assert response.status_code == 401 + + +def test_me_invalid_token(): + response = client.get("/api/auth/me", cookies={"session_token": "invalid"}) + assert response.status_code == 401 + + +def test_logout(): + login_resp = client.post("/api/auth/login", json={"username": "user", "password": "password"}) + token = login_resp.cookies["session_token"] + response = client.post("/api/auth/logout", cookies={"session_token": token}) + assert response.status_code == 200 + + me_resp = client.get("/api/auth/me", cookies={"session_token": token}) + assert me_resp.status_code == 401 + + +def test_logout_without_session(): + response = client.post("/api/auth/logout") + assert response.status_code == 200 diff --git a/backend/tests/test_boards.py b/backend/tests/test_boards.py new file mode 100644 index 00000000..944546c4 --- /dev/null +++ b/backend/tests/test_boards.py @@ -0,0 +1,195 @@ +import os +import tempfile +from fastapi.testclient import TestClient + +from main import app + +DB_PATH_BACKUP = None + + +def setup_module(): + global DB_PATH_BACKUP + from app import db + DB_PATH_BACKUP = os.environ.get("DB_PATH") + tmp = tempfile.mktemp(suffix=".db") + os.environ["DB_PATH"] = tmp + db.DB_PATH = tmp + db.ensure_db() + + +def teardown_module(): + global DB_PATH_BACKUP + from app import db + if DB_PATH_BACKUP is None: + os.environ.pop("DB_PATH", None) + else: + os.environ["DB_PATH"] = DB_PATH_BACKUP + db.DB_PATH = os.environ.get("DB_PATH", str(db.Path(__file__).parent.parent / "data" / "pm.db")) + if os.environ.get("DB_PATH") and os.path.exists(os.environ["DB_PATH"]): + os.unlink(os.environ["DB_PATH"]) + + +client = TestClient(app) + +AUTH_COOKIES = {} + + +def login(): + resp = client.post("/api/auth/login", json={"username": "user", "password": "password"}) + AUTH_COOKIES["session_token"] = resp.cookies["session_token"] + + +login() + + +def test_get_board(): + response = client.get("/api/boards", cookies=AUTH_COOKIES) + assert response.status_code == 200 + data = response.json() + assert data["title"] == "My Board" + assert len(data["columns"]) == 5 + assert data["columns"][0]["title"] == "Backlog" + + +def test_get_board_unauthenticated(): + fresh = TestClient(app) + assert fresh.get("/api/boards").status_code == 401 + + +def test_rename_column(): + response = client.put( + "/api/boards/columns/col-backlog", + json={"title": "Todo"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 200 + + board = client.get("/api/boards", cookies=AUTH_COOKIES).json() + assert board["columns"][0]["title"] == "Todo" + + # Revert + client.put("/api/boards/columns/col-backlog", json={"title": "Backlog"}, cookies=AUTH_COOKIES) + + +def test_rename_column_missing_title(): + response = client.put( + "/api/boards/columns/col-backlog", + json={}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 400 + + +def test_rename_column_not_found(): + response = client.put( + "/api/boards/columns/col-nonexistent", + json={"title": "X"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 404 + + +def test_add_card(): + response = client.post( + "/api/boards/cards", + json={"column_id": "col-backlog", "id": "card-test1", "title": "Test card", "details": "Test details"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 200 + + board = client.get("/api/boards", cookies=AUTH_COOKIES).json() + backlog = board["columns"][0] + card_titles = [c["title"] for c in backlog["cards"]] + assert "Test card" in card_titles + + +def test_add_card_missing_fields(): + response = client.post( + "/api/boards/cards", + json={"column_id": "col-backlog"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 400 + + +def test_update_card(): + response = client.put( + "/api/boards/cards/card-1", + json={"title": "Updated title", "details": "Updated details"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 200 + + +def test_update_card_not_found(): + response = client.put( + "/api/boards/cards/card-nonexistent", + json={"title": "X"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 404 + + +def test_delete_card(): + client.post( + "/api/boards/cards", + json={"column_id": "col-backlog", "id": "card-del1", "title": "To delete"}, + cookies=AUTH_COOKIES, + ) + response = client.delete("/api/boards/cards/card-del1", cookies=AUTH_COOKIES) + assert response.status_code == 200 + + +def test_delete_card_not_found(): + response = client.delete("/api/boards/cards/card-nonexistent", cookies=AUTH_COOKIES) + assert response.status_code == 404 + + +def test_move_card_same_column(): + response = client.put( + "/api/boards/cards/card-1/move", + json={"column_id": "col-backlog", "position": 1}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 200 + + # Move back + client.put( + "/api/boards/cards/card-1/move", + json={"column_id": "col-backlog", "position": 0}, + cookies=AUTH_COOKIES, + ) + + +def test_move_card_across_columns(): + response = client.put( + "/api/boards/cards/card-1/move", + json={"column_id": "col-discovery", "position": 0}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 200 + + # Move back + client.put( + "/api/boards/cards/card-1/move", + json={"column_id": "col-backlog", "position": 0}, + cookies=AUTH_COOKIES, + ) + + +def test_move_card_not_found(): + response = client.put( + "/api/boards/cards/card-nonexistent/move", + json={"column_id": "col-backlog", "position": 0}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 404 + + +def test_move_card_missing_fields(): + response = client.put( + "/api/boards/cards/card-1/move", + json={"column_id": "col-backlog"}, + cookies=AUTH_COOKIES, + ) + assert response.status_code == 400 diff --git a/backend/tests/test_routes.py b/backend/tests/test_routes.py new file mode 100644 index 00000000..21401088 --- /dev/null +++ b/backend/tests/test_routes.py @@ -0,0 +1,24 @@ +from fastapi.testclient import TestClient + +from main import app + +client = TestClient(app) + + +def test_hello(): + response = client.get("/api/hello") + assert response.status_code == 200 + data = response.json() + assert data["message"] == "Hello from the PM app!" + + +def test_health(): + response = client.get("/api/health") + assert response.status_code == 200 + assert response.json()["status"] == "ok" + + +def test_serve_index(): + response = client.get("/") + assert response.status_code == 200 + assert "Kanban Studio" in response.text diff --git a/backend/uv.lock b/backend/uv.lock new file mode 100644 index 00000000..2d0e270c --- /dev/null +++ b/backend/uv.lock @@ -0,0 +1,703 @@ +version = 1 +revision = 3 +requires-python = ">=3.12" + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anyio" +version = "4.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, +] + +[[package]] +name = "certifi" +version = "2026.4.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" }, +] + +[[package]] +name = "click" +version = "8.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "coverage" +version = "7.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/23/7f/d0720730a397a999ffc0fd3f5bebef347338e3a47b727da66fbb228e2ff2/coverage-7.14.0.tar.gz", hash = "sha256:057a6af2f160a85384cde4ab36f0d2777bae1057bae255f95413cdd382aa5c74", size = 919489, upload-time = "2026-05-10T18:02:31.397Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/1e/2f996b2c8415cbb6f54b0f5ec1ee850c96d7911961afb4fc05f4a89d8c58/coverage-7.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7ffd19fc8aed057fd686a17a4935eef5f9859d69208f96310e893e64b9b6ccf5", size = 219967, upload-time = "2026-05-10T18:00:13.756Z" }, + { url = "https://files.pythonhosted.org/packages/34/23/35c7aea1274aef7525bdd2dc92f710bdde6d11652239d71d1ec450067939/coverage-7.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:829994cfe1aeb773ca27bf246d4badc1e764893e3bfb98fff820fcecd1ca4662", size = 220329, upload-time = "2026-05-10T18:00:15.264Z" }, + { url = "https://files.pythonhosted.org/packages/75/cf/a8f4b43a16e194b0261257ad28ded5853ec052570afef4a84e1d81189f3b/coverage-7.14.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b4f07cf7edcb7ec39431a5074d7ea83b29a9f71fcfc494f0f40af4e65180420f", size = 251839, upload-time = "2026-05-10T18:00:17.16Z" }, + { url = "https://files.pythonhosted.org/packages/69/ff/6699e7b71e60d3049eb2bdcbc95ee3f35707b2b0e48f32e9e63d3ce30c08/coverage-7.14.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ca3d9cf2c32b521bd9518385608787fa86f38daf993695307531822c3430ed67", size = 254576, upload-time = "2026-05-10T18:00:18.829Z" }, + { url = "https://files.pythonhosted.org/packages/22/ec/c936d495fcd67f48f03a9c4ad3297ff80d1f222a5df3980f15b34c186c21/coverage-7.14.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92af52828e7f29d827346b0294e5a0853fa206db77db0395b282918d41e28db9", size = 255690, upload-time = "2026-05-10T18:00:20.648Z" }, + { url = "https://files.pythonhosted.org/packages/5c/42/5af63f636cc62a4a2b1b3ba9146f6ee6f53a35a50d5cefc54d5670f60999/coverage-7.14.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7b2bb6c9d7e769360d0f20a0f219603fd64f0c8f97de17ab25853261602be0fb", size = 257949, upload-time = "2026-05-10T18:00:22.28Z" }, + { url = "https://files.pythonhosted.org/packages/26/d3/a225317bd2012132a27e1176d51660b826f99bb975876463c44ea0d7ee5a/coverage-7.14.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1c9ed6ef99f88fb8c14aa8e2bf8eb0fe55fa2edfea68f8675d78741df1a5ac0e", size = 252242, upload-time = "2026-05-10T18:00:24.076Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7f/9e65495298c3ea414742998539c37d048b5e81cc818fb1828cc6b51d10bf/coverage-7.14.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8231ade007f37959fbf58acc677f26b922c02eda6f0428ea307da0fd39681bf3", size = 253608, upload-time = "2026-05-10T18:00:25.588Z" }, + { url = "https://files.pythonhosted.org/packages/94/46/1522b524a35bdad22b2b8c4f9d32d0a104b524726ec380b2db68db1746f5/coverage-7.14.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d8b013632cc1ce1d09dbe4f32667b4d320ec2f54fc326ebeffcd0b0bcc2bb6c4", size = 251753, upload-time = "2026-05-10T18:00:27.104Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e9/cdf00d38817742c541ade405e115a3f7bf36e6f2a8b99d4f209861b85a2d/coverage-7.14.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1733198802d71ec4c524f322e2867ee05c62e9e75df86bdca545407a221827d1", size = 255823, upload-time = "2026-05-10T18:00:29.038Z" }, + { url = "https://files.pythonhosted.org/packages/38/fc/5e7877cf5f902d08a17ff1c532511476d87e1bea355bd5028cb97f902e79/coverage-7.14.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:72a305291fa8ee01332f1aaf38b348ca34097f6aa0b0ef627eef2837e57bbba5", size = 251323, upload-time = "2026-05-10T18:00:30.647Z" }, + { url = "https://files.pythonhosted.org/packages/18/9d/50f05a72dff8487464fdd4178dda5daed642a060e60afb644e3d45123559/coverage-7.14.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fcaba850dd317c65423a9d63d88f9573c53b00354d6dd95724576cc98a131595", size = 253197, upload-time = "2026-05-10T18:00:32.211Z" }, + { url = "https://files.pythonhosted.org/packages/00/3f/6f61ffe6439df266c3cf60f5c99cfaa21103d0210d706a42fc6c30683ff8/coverage-7.14.0-cp312-cp312-win32.whl", hash = "sha256:5ac83957a80d0701310e96d8bec68cdcf4f90a7674b7d13f15a344315b41ab27", size = 222515, upload-time = "2026-05-10T18:00:33.717Z" }, + { url = "https://files.pythonhosted.org/packages/85/19/93853133df2cb371083285ef6a93982a0173e7a233b0f61373ba9fd30eb2/coverage-7.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:70390b0da32cb90b501953716302906e8bcce087cb283e70d8c97729f22e92b2", size = 223324, upload-time = "2026-05-10T18:00:35.172Z" }, + { url = "https://files.pythonhosted.org/packages/74/18/9f7fe62f659f24b7a82a0be56bf94c1bd0a89e0ae7ab4c668f6e82404294/coverage-7.14.0-cp312-cp312-win_arm64.whl", hash = "sha256:91b993743d959b8be85b4abf9d5478216a69329c321efe5be0433c1a841d691d", size = 221944, upload-time = "2026-05-10T18:00:37.014Z" }, + { url = "https://files.pythonhosted.org/packages/6b/76/b7c66ee3c66e1b0f9d894c8125983aa0c03fb2336f2fd16559f9c966157f/coverage-7.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f2bbb8254370eb4c628ff3d6fa8a7f74ddc40565394d4f7ab791d1fe568e37ef", size = 219990, upload-time = "2026-05-10T18:00:38.887Z" }, + { url = "https://files.pythonhosted.org/packages/b3/af/e567cbad5ba69c013a50146dfa886dc7193361fda77521f51274ff620e1b/coverage-7.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:23b81107f46d3f21d0cbce30664fcec0f5d9f585638a67081750f99738f6bf66", size = 220365, upload-time = "2026-05-10T18:00:40.864Z" }, + { url = "https://files.pythonhosted.org/packages/44/6f/9ad575d505b4d805b254febc8a5b338a2efe278f8786e56ff1cb8413f9c3/coverage-7.14.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:22a7e06a5f11a757cdfe79018e9095f9f69ae283c5cd8123774c788deec8717b", size = 251363, upload-time = "2026-05-10T18:00:42.489Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5f/b5370068b2f57787454592ed7dcd1002f0f1703b7db1fa30f6a325a4ca6e/coverage-7.14.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9d1aa57a1dc8e05bdc42e81c5d671d849577aeedf279f4c449d6d286f9ed88ca", size = 253961, upload-time = "2026-05-10T18:00:44.079Z" }, + { url = "https://files.pythonhosted.org/packages/29/1e/51adf17738976e8f2b85ddef7b7aa12a0838b056c92f175941d8862767c1/coverage-7.14.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90c1a51bcfddf645b3bb7ec333d9e94393a8e94f55642380fa8a9a5a9e636cb7", size = 255193, upload-time = "2026-05-10T18:00:45.623Z" }, + { url = "https://files.pythonhosted.org/packages/9e/7b/5bfd7ac1df3b881c2ac7a5cbc99c7609e6296c402f5ef587cd81c6f355b3/coverage-7.14.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a841fae2fadcae4f438d43b6ccc4aac2ad609f47cdb6cfdce60cbb3fe5ca7bc2", size = 257326, upload-time = "2026-05-10T18:00:47.173Z" }, + { url = "https://files.pythonhosted.org/packages/7d/38/1d37d316b174fad3843a1d76dbdfe4398771c9ecd0515935dd9ece9cd627/coverage-7.14.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c79d2319cabef1fe8e86df73371126931550804738f78ad7d31e3aad85a67367", size = 251582, upload-time = "2026-05-10T18:00:49.152Z" }, + { url = "https://files.pythonhosted.org/packages/34/46/746704f95980ba220214e1a41e18cec5aea80a898eaa53c51bf2d645ff36/coverage-7.14.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1b23b0c6f0b1db6ad769b7050c8b641c0bf215ded26c1816955b17b7f26edfa9", size = 253325, upload-time = "2026-05-10T18:00:51.252Z" }, + { url = "https://files.pythonhosted.org/packages/e1/b9/bbe87206d9687b192352f893797825b5f5b15ecd3aa9c68fbff0c074d77b/coverage-7.14.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:55d3089079ce181a4566b1065ab28d2575eb76d8ac8f81f4fcda2bf037fee087", size = 251291, upload-time = "2026-05-10T18:00:52.816Z" }, + { url = "https://files.pythonhosted.org/packages/46/57/b8cdb12ac0d73ef0243218bd5e22c9df8f92edab8018213a86aec67c5324/coverage-7.14.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:49c005cba1e2f9677fb2845dcdf9a2e72a52a17d63e8231aaaae35d9f50215ef", size = 255448, upload-time = "2026-05-10T18:00:54.548Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d4/5002019538b2036ce3c84340f54d2fd5100d55b0a6b0894eee56128d03c7/coverage-7.14.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:9117377b823daa28aa8635fbb08cda1cd6be3d7143257345459559aeef852d52", size = 251110, upload-time = "2026-05-10T18:00:56.122Z" }, + { url = "https://files.pythonhosted.org/packages/37/53/20c5009477660f084e6ed60bc02a91894b8e234e617e86ecfd9aaf78e27b/coverage-7.14.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7b79d646cf46d5cf9a9f40281d4441df5849e445726e369006d2b117710b33fe", size = 252885, upload-time = "2026-05-10T18:00:57.967Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ab/3cf6427ac9c1f1db747dbb1ce71dde47984876d4c2cfd018a3fef0a78d4d/coverage-7.14.0-cp313-cp313-win32.whl", hash = "sha256:fb609b3658479e33f9516d46f1a89dbb9b6c261366e3a11844a96ec487533dae", size = 222539, upload-time = "2026-05-10T18:00:59.581Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b8/9228523e80321c2cb4880d1f589bc0171f2f71432c35118ad04dc01decce/coverage-7.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:0773d8329cf32b6fd222e4b52622c61fe8d503eb966cfc8d3c3c10c96266d50e", size = 223344, upload-time = "2026-05-10T18:01:01.531Z" }, + { url = "https://files.pythonhosted.org/packages/a3/99/118daa192f95e3a6cb2740100fbf8797cda1734b4134ef0b5d501a7fa8f3/coverage-7.14.0-cp313-cp313-win_arm64.whl", hash = "sha256:b4e26a0f1b696faf283bffe5b8569e44e336c582439df5d53281ab89ee0cba96", size = 221966, upload-time = "2026-05-10T18:01:03.16Z" }, + { url = "https://files.pythonhosted.org/packages/e6/f1/a46cc0c013be170216253184a32366d7cbdb9252feaec866b05c2d12a894/coverage-7.14.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:953f521ca9445300397e65fda3dca58b2dbd68fee983777420b57ac3c77e9f90", size = 220679, upload-time = "2026-05-10T18:01:05.058Z" }, + { url = "https://files.pythonhosted.org/packages/64/8c/9c30a3d311a34177fa432995be7fbfc64477d8bac5630bd38055b1c9b424/coverage-7.14.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:98af83fd65ae24b1fdd03aaead967a9f523bcd2f1aab2d4f3ffda65bb568a6f1", size = 221033, upload-time = "2026-05-10T18:01:07.002Z" }, + { url = "https://files.pythonhosted.org/packages/9a/cd/3fb5e06c3badefd0c1b47e2044fdca67f8220a4ec2e7fcfb476aa0a67c6c/coverage-7.14.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:668b92e6958c4db7cf92e81caac328dfbbdbb215db2850ad28f0cbe1eea0bfbd", size = 262333, upload-time = "2026-05-10T18:01:08.903Z" }, + { url = "https://files.pythonhosted.org/packages/a8/e6/fbc322325c7294d3e22c1ad6b79e45d0806b25228c8e5842aed6d8169aa7/coverage-7.14.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9fbd898551762dea00d3fef2b1c4f99afd2c6a3ff952ea07d60a9bd5ed4f34bc", size = 264410, upload-time = "2026-05-10T18:01:10.531Z" }, + { url = "https://files.pythonhosted.org/packages/08/92/c497b264bec1673c47cc77e26f760fcda4654cabf1f39546d1a23a3b8c35/coverage-7.14.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:68af363c07ecd8d4b7d4043d85cb376d7d227eceb54e5323ee45da73dbd3e426", size = 266836, upload-time = "2026-05-10T18:01:12.19Z" }, + { url = "https://files.pythonhosted.org/packages/78/fc/045da320987f401af5d2815d351e8aa799aec859f60e29f445e3089eeedb/coverage-7.14.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6e57054a583da8ac55edf24117ea4c9133032cfc4cf72aa2d48c1e5d4b52f899", size = 267974, upload-time = "2026-05-10T18:01:13.926Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ae/227b1e379497fb7a4fc3286e620f80c8a1e7cec66d45695a01639eb1af65/coverage-7.14.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cc3499459bbcdd51a65b64c35ab7ed2764eaf3cba826e0df3f1d7fe2e102b70b", size = 261578, upload-time = "2026-05-10T18:01:15.564Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f5/3570342900f2acea31d33ff1590c5d8bac1a8e1a2e1c6d34a5d5e61de681/coverage-7.14.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:45899ec2138a4346ed34d601dedf5076fb74edf2d1dd9dc76a78e82397edee90", size = 264394, upload-time = "2026-05-10T18:01:17.607Z" }, + { url = "https://files.pythonhosted.org/packages/16/29/de1bbc01c935b28f89b1dc3db85b011c055e843a8e5e3b83141c3f80af7f/coverage-7.14.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8767486808c436f05b23ab98eb963fb29185e32a9357a166971685cb3459900f", size = 262022, upload-time = "2026-05-10T18:01:19.304Z" }, + { url = "https://files.pythonhosted.org/packages/35/95/f53890b0bf2fc10ab168e05d38869215e73ca24c4cb521c3bb0eb62fe16b/coverage-7.14.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:a3b5ddfd6aa7ddad53ee3edb231e88a2151507a43229b7d71b953916deca127d", size = 265732, upload-time = "2026-05-10T18:01:21.494Z" }, + { url = "https://files.pythonhosted.org/packages/ed/ea/c919e259081dd2bdf0e43b87209709ba7ec2e4117c2a7f5185379c43463c/coverage-7.14.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:63df0fe568e698e1045792399f8ab6da3a6c2dce3182813fb92afa2641087b47", size = 260921, upload-time = "2026-05-10T18:01:23.533Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2c/c2831889705a81dc5d1c6ca12e4d8e9b95dfc146d153488a6c0ea685d28e/coverage-7.14.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:827d6397dbd95144939b18f89edf31f63e1f99633e8d5f32f22ba8bdda567477", size = 263109, upload-time = "2026-05-10T18:01:25.165Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a9/2fcae5003cac3d63fe344d2166243c2756935f48420863c5272b240d550b/coverage-7.14.0-cp313-cp313t-win32.whl", hash = "sha256:7bf43e000d24012599b879791cff41589af90674722421ef11b11a5431920bab", size = 223212, upload-time = "2026-05-10T18:01:27.157Z" }, + { url = "https://files.pythonhosted.org/packages/3f/bb/18e94d7b14b9b398164197114a587a04ab7c9fdbe1d237eef57311c5e883/coverage-7.14.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3f5549365af25d770e06b1f8f5682d9a5637d06eb494db91c6fa75d3950cc917", size = 224272, upload-time = "2026-05-10T18:01:29.107Z" }, + { url = "https://files.pythonhosted.org/packages/db/56/4f14fad782b035c81c4ffd09159e7103d42bb1d93ac8496d04b90a11b7da/coverage-7.14.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6d160217ec6fe890f16ad3a9531761589443749e448f91986c972714fad361c8", size = 222530, upload-time = "2026-05-10T18:01:31.151Z" }, + { url = "https://files.pythonhosted.org/packages/1c/18/b9a6586d73992807c26f9a5f274131be3d76b56b18a82b9392e2a25d2e45/coverage-7.14.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:9aed9fa983514ca032790f3fe0d1c0e42ca7e16b42432af1706b50a9a46bef5d", size = 220036, upload-time = "2026-05-10T18:01:33.057Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9b/4165a1d56ddc302a0e2d518fd9d412a4fd0b57562618c78c5f21c57194f5/coverage-7.14.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ba3b8390db29296dbbf49e91b6fe08f990743a90c8f447ba4c2ffc29670dfa63", size = 220368, upload-time = "2026-05-10T18:01:34.705Z" }, + { url = "https://files.pythonhosted.org/packages/69/aa/c12e52a5ba148d9995229d557e3be6e554fe469addc0e9241b2f0956d8ea/coverage-7.14.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3a5d8e876dfa2f102e970b183863d6dedd023d3c0eeca1fe7a9787bc5f28b212", size = 251417, upload-time = "2026-05-10T18:01:36.949Z" }, + { url = "https://files.pythonhosted.org/packages/d7/51/ec641c26e6dca1b25a7d2035ba6ecb7c884ef1a100a9e42fbe4ce4405139/coverage-7.14.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5ebb8f4614a3787d567e610bbfdf96a4798dd69a1afb1bd8ad228d4111fe6ff3", size = 253924, upload-time = "2026-05-10T18:01:38.985Z" }, + { url = "https://files.pythonhosted.org/packages/33/c4/59c3de0bd1b538824173fd518fed51c1ce740ca5ed68e74545983f4053a9/coverage-7.14.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b9bf47223dd8db3d4c4b2e443b02bace480d428f0822c3f991600448a176c97", size = 255269, upload-time = "2026-05-10T18:01:40.957Z" }, + { url = "https://files.pythonhosted.org/packages/7b/a9/36dfa153a62040296f6e7febfdb20a5720622f6ef5a81a41e8237b9a5344/coverage-7.14.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3485a836550b303d006d57cc06e3d5afaabc642c77050b7c985a97b13e3776b8", size = 257583, upload-time = "2026-05-10T18:01:42.607Z" }, + { url = "https://files.pythonhosted.org/packages/26/7b/cc2c048d4114d9ab1c2409e9ee365e5ae10736df6dffcfc9444effa6c708/coverage-7.14.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3e7e88110bae996d199d1693ca8ec3fd52441d426401ae963437598667b4c5eb", size = 251434, upload-time = "2026-05-10T18:01:44.537Z" }, + { url = "https://files.pythonhosted.org/packages/ee/df/6770eaa576e604575e9a78055313250faef5faa84bd6f71a39fece519c43/coverage-7.14.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:15228a6800ce7bdf1b74800595e56db7138cecb338fdbf044806e10dcf182dfe", size = 253280, upload-time = "2026-05-10T18:01:46.175Z" }, + { url = "https://files.pythonhosted.org/packages/ad/9e/1c0264514a3f98259a6d64765a397b2c8373e3ba59ee722a4802d3ec0c61/coverage-7.14.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:9d26ac7f5398bafc5b57421ad994e8a4749e8a7a0e62d05ec7d53014d5963bfa", size = 251241, upload-time = "2026-05-10T18:01:48.732Z" }, + { url = "https://files.pythonhosted.org/packages/64/16/4efdf3e3c4079cdbf0ece56a2fea872df9e8a3e15a13a0af4400e1075944/coverage-7.14.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2fb73254ff43c911c967a899e1359bc5049b4b115d6e8fbdde4937d0a2246cd5", size = 255516, upload-time = "2026-05-10T18:01:50.819Z" }, + { url = "https://files.pythonhosted.org/packages/93/69/b1de96346603881b3d1bc8d6447c83200e1c9700ffbaff926ba01ff5724c/coverage-7.14.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:454a380af72c6adada298ed270d38c7a391288198dbfb8467f786f588751a90c", size = 251059, upload-time = "2026-05-10T18:01:52.773Z" }, + { url = "https://files.pythonhosted.org/packages/a4/66/2881853e0363a5e0a724d1103e53650795367471b6afb234f8b49e713bc6/coverage-7.14.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:65c86fb646d2bd2972e96bd1a8b45817ed907cee68655d6295fe7ec031d04cca", size = 252716, upload-time = "2026-05-10T18:01:54.506Z" }, + { url = "https://files.pythonhosted.org/packages/55/5c/0d3305d002c41dcde873dbe456491e663dc55152ca526b630b5c47efd62f/coverage-7.14.0-cp314-cp314-win32.whl", hash = "sha256:6a6516b02a6101398e19a3f44820f69bab2590697f7def4331f668b14adaf828", size = 222788, upload-time = "2026-05-10T18:01:56.487Z" }, + { url = "https://files.pythonhosted.org/packages/f9/58/6e1b8f52fdc3184b47dc5037f5070d83a3d11042db1594b02d2a44d786c8/coverage-7.14.0-cp314-cp314-win_amd64.whl", hash = "sha256:45e0f79d8351fa76e256716df91eab12890d32678b9590df7ae1042e4bd4cf5d", size = 223600, upload-time = "2026-05-10T18:01:58.497Z" }, + { url = "https://files.pythonhosted.org/packages/00/70/a18c408e674bc26281cadaedc7351f929bd2094e191e4b15271c30b084cc/coverage-7.14.0-cp314-cp314-win_arm64.whl", hash = "sha256:4b899594a8b2d81e5cc064a0d7f9cac2081fed91049456cae7676787e41549c9", size = 222168, upload-time = "2026-05-10T18:02:00.411Z" }, + { url = "https://files.pythonhosted.org/packages/3d/89/2681f071d238b62aff8dfc2ab44fc24cfdb38d1c01f391a80522ff5d3a16/coverage-7.14.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:f580f8c80acd94ac72e863efe2cab791d8c38d153e0b463b92dfa000d5c84cd1", size = 220766, upload-time = "2026-05-10T18:02:02.313Z" }, + { url = "https://files.pythonhosted.org/packages/bd/c7/c987babafd9207ffa1995e1ef1f9b26762cf4963aa768a66b6f0501e4616/coverage-7.14.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a2bd259c442cd43c49b30fbafc51776eb19ea396faf159d26a83e6a0a5f13b0c", size = 221035, upload-time = "2026-05-10T18:02:04.017Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e9/d6a5ac3b333088143d6fc877d398a9a674dc03124a2f776e131f03864823/coverage-7.14.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a706b908dfa85538863504c624b237a3cc34232bf403c057414ebfdb3b4d9f84", size = 262405, upload-time = "2026-05-10T18:02:05.915Z" }, + { url = "https://files.pythonhosted.org/packages/38/b1/e70838d29a7c08e22d44398a46db90815bbcbf28de06992bd9210d1a8d8e/coverage-7.14.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7333cd944ee4393b9b3d3c1b598c936d4fc8d70573a4c7dacfec5590dd50e436", size = 264530, upload-time = "2026-05-10T18:02:07.582Z" }, + { url = "https://files.pythonhosted.org/packages/6b/73/5c31ef97763288d03d9995152b96d5475b527c63d91c84b01caea894b83a/coverage-7.14.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f162bc9a15b82d947b02651b0c7e1609d6f7a8735ca330cfadec8481dd97d5a", size = 266932, upload-time = "2026-05-10T18:02:09.401Z" }, + { url = "https://files.pythonhosted.org/packages/e1/76/dd56d80f29c5f05b4d76f7e7c6d47cafacae017189c75c5759d24f9ff0cc/coverage-7.14.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:362cb78e01a5dc82009d88004cf60f2e6b6d6fcbfdec05b05af73b0abf40118f", size = 268062, upload-time = "2026-05-10T18:02:11.399Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c7/27ba85cd5b95614f159ff93ebff1901584a8d192e2e5e24c4943a7453f59/coverage-7.14.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:acebd068fca5512c3a6fde9c045f901613478781a73f0e82b307b214daef23fb", size = 261504, upload-time = "2026-05-10T18:02:13.257Z" }, + { url = "https://files.pythonhosted.org/packages/13/2e/e8149f60ab5d5684c6eee881bdf34b127115cddbb958b196768dd9d63473/coverage-7.14.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:29fe3da551dface75deb2ccbf87b6b66e2e7ef38f6d89050b428be94afff3490", size = 264398, upload-time = "2026-05-10T18:02:15.063Z" }, + { url = "https://files.pythonhosted.org/packages/d9/7f/1261b025285323225f4b4abffa5a643649dfd67e25ddca7ebcbdea3b7cb3/coverage-7.14.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:b4cc4fce8672fffcb09b0eafc167b396b3ba53c4a7230f54b7aaffbf6c835fa9", size = 262000, upload-time = "2026-05-10T18:02:16.756Z" }, + { url = "https://files.pythonhosted.org/packages/d3/dc/829c54f60b9d08389439c00f813c752781c496fc5788c78d8006db4b4f2b/coverage-7.14.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:5d4a51aad8ba8bdcd2b8bd8f03d4aca19693fa2327a3470e4718a25b03481020", size = 265732, upload-time = "2026-05-10T18:02:18.817Z" }, + { url = "https://files.pythonhosted.org/packages/ed/b0/70bd1419941652fa062689cba9c3eeafb8f5e6fbb890bce41c3bdda5dbd6/coverage-7.14.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:9f323af3e1e4f68b60b7b247e37b8515563a61375518fa59de1af48ba28a3db6", size = 260847, upload-time = "2026-05-10T18:02:20.528Z" }, + { url = "https://files.pythonhosted.org/packages/f2/73/be40b2390656c654d35ea0015ea7ba3d945769cf80790ad5e0bb2d56d2ba/coverage-7.14.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:1a0abc7342ea9711c469dd8b821c6c311e6bc6aac1442e5fbd6b27fae0a8f3db", size = 263166, upload-time = "2026-05-10T18:02:22.337Z" }, + { url = "https://files.pythonhosted.org/packages/29/55/4a643f712fcf7cf2881f8ec1e0ccb7b164aff3108f69b51801246c8799f2/coverage-7.14.0-cp314-cp314t-win32.whl", hash = "sha256:a9f864ef57b7172e2db87a096642dd51e179e085ab6b2c371c29e885f65c8fb2", size = 223573, upload-time = "2026-05-10T18:02:24.11Z" }, + { url = "https://files.pythonhosted.org/packages/27/96/3acae5da0953be042c0b4dea6d6789d2f080701c77b88e44d5bd41b9219b/coverage-7.14.0-cp314-cp314t-win_amd64.whl", hash = "sha256:29943e552fdc08e082eb51400fb2f58e118a83b5542bd06531214e084399b644", size = 224680, upload-time = "2026-05-10T18:02:25.896Z" }, + { url = "https://files.pythonhosted.org/packages/93/3d/6ab5d2dd8325d838737c6f8d83d62eb6230e0d70b87b51b57bbfd08fa767/coverage-7.14.0-cp314-cp314t-win_arm64.whl", hash = "sha256:742a73ea621953b012f2c4c2219b512180dd84489acf5b1596b0aafc55b9100b", size = 222703, upload-time = "2026-05-10T18:02:27.822Z" }, + { url = "https://files.pythonhosted.org/packages/61/e8/cb8e80d6f9f55b99588625062822bf946cf03ed06315df4bd8397f5632a1/coverage-7.14.0-py3-none-any.whl", hash = "sha256:8de5b61163aee3d05c8a2beab6f47913df7981dad1baf82c414d99158c286ab1", size = 211764, upload-time = "2026-05-10T18:02:29.538Z" }, +] + +[[package]] +name = "fastapi" +version = "0.136.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/45/c130091c2dfa061bbfe3150f2a5091ef1adf149f2a8d2ae769ecaf6e99a2/fastapi-0.136.1.tar.gz", hash = "sha256:7af665ad7acfa0a3baf8983d393b6b471b9da10ede59c60045f49fbc89a0fa7f", size = 397448, upload-time = "2026-04-23T16:49:44.046Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/ff/2e4eca3ade2c22fe1dea7043b8ee9dabe47753349eb1b56a202de8af6349/fastapi-0.136.1-py3-none-any.whl", hash = "sha256:a6e9d7eeada96c93a4d69cb03836b44fa34e2854accb7244a1ece36cd4781c3f", size = 117683, upload-time = "2026-04-23T16:49:42.437Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httptools" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/46/120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993/httptools-0.7.1.tar.gz", hash = "sha256:abd72556974f8e7c74a259655924a717a2365b236c882c3f6f8a45fe94703ac9", size = 258961, upload-time = "2025-10-10T03:55:08.559Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/7f/403e5d787dc4942316e515e949b0c8a013d84078a915910e9f391ba9b3ed/httptools-0.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:38e0c83a2ea9746ebbd643bdfb521b9aa4a91703e2cd705c20443405d2fd16a5", size = 206280, upload-time = "2025-10-10T03:54:39.274Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0d/7f3fd28e2ce311ccc998c388dd1c53b18120fda3b70ebb022b135dc9839b/httptools-0.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f25bbaf1235e27704f1a7b86cd3304eabc04f569c828101d94a0e605ef7205a5", size = 110004, upload-time = "2025-10-10T03:54:40.403Z" }, + { url = "https://files.pythonhosted.org/packages/84/a6/b3965e1e146ef5762870bbe76117876ceba51a201e18cc31f5703e454596/httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c15f37ef679ab9ecc06bfc4e6e8628c32a8e4b305459de7cf6785acd57e4d03", size = 517655, upload-time = "2025-10-10T03:54:41.347Z" }, + { url = "https://files.pythonhosted.org/packages/11/7d/71fee6f1844e6fa378f2eddde6c3e41ce3a1fb4b2d81118dd544e3441ec0/httptools-0.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7fe6e96090df46b36ccfaf746f03034e5ab723162bc51b0a4cf58305324036f2", size = 511440, upload-time = "2025-10-10T03:54:42.452Z" }, + { url = "https://files.pythonhosted.org/packages/22/a5/079d216712a4f3ffa24af4a0381b108aa9c45b7a5cc6eb141f81726b1823/httptools-0.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f72fdbae2dbc6e68b8239defb48e6a5937b12218e6ffc2c7846cc37befa84362", size = 495186, upload-time = "2025-10-10T03:54:43.937Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9e/025ad7b65278745dee3bd0ebf9314934c4592560878308a6121f7f812084/httptools-0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e99c7b90a29fd82fea9ef57943d501a16f3404d7b9ee81799d41639bdaae412c", size = 499192, upload-time = "2025-10-10T03:54:45.003Z" }, + { url = "https://files.pythonhosted.org/packages/6d/de/40a8f202b987d43afc4d54689600ff03ce65680ede2f31df348d7f368b8f/httptools-0.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:3e14f530fefa7499334a79b0cf7e7cd2992870eb893526fb097d51b4f2d0f321", size = 86694, upload-time = "2025-10-10T03:54:45.923Z" }, + { url = "https://files.pythonhosted.org/packages/09/8f/c77b1fcbfd262d422f12da02feb0d218fa228d52485b77b953832105bb90/httptools-0.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6babce6cfa2a99545c60bfef8bee0cc0545413cb0018f617c8059a30ad985de3", size = 202889, upload-time = "2025-10-10T03:54:47.089Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1a/22887f53602feaa066354867bc49a68fc295c2293433177ee90870a7d517/httptools-0.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:601b7628de7504077dd3dcb3791c6b8694bbd967148a6d1f01806509254fb1ca", size = 108180, upload-time = "2025-10-10T03:54:48.052Z" }, + { url = "https://files.pythonhosted.org/packages/32/6a/6aaa91937f0010d288d3d124ca2946d48d60c3a5ee7ca62afe870e3ea011/httptools-0.7.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:04c6c0e6c5fb0739c5b8a9eb046d298650a0ff38cf42537fc372b28dc7e4472c", size = 478596, upload-time = "2025-10-10T03:54:48.919Z" }, + { url = "https://files.pythonhosted.org/packages/6d/70/023d7ce117993107be88d2cbca566a7c1323ccbaf0af7eabf2064fe356f6/httptools-0.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69d4f9705c405ae3ee83d6a12283dc9feba8cc6aaec671b412917e644ab4fa66", size = 473268, upload-time = "2025-10-10T03:54:49.993Z" }, + { url = "https://files.pythonhosted.org/packages/32/4d/9dd616c38da088e3f436e9a616e1d0cc66544b8cdac405cc4e81c8679fc7/httptools-0.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:44c8f4347d4b31269c8a9205d8a5ee2df5322b09bbbd30f8f862185bb6b05346", size = 455517, upload-time = "2025-10-10T03:54:51.066Z" }, + { url = "https://files.pythonhosted.org/packages/1d/3a/a6c595c310b7df958e739aae88724e24f9246a514d909547778d776799be/httptools-0.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:465275d76db4d554918aba40bf1cbebe324670f3dfc979eaffaa5d108e2ed650", size = 458337, upload-time = "2025-10-10T03:54:52.196Z" }, + { url = "https://files.pythonhosted.org/packages/fd/82/88e8d6d2c51edc1cc391b6e044c6c435b6aebe97b1abc33db1b0b24cd582/httptools-0.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:322d00c2068d125bd570f7bf78b2d367dad02b919d8581d7476d8b75b294e3e6", size = 85743, upload-time = "2025-10-10T03:54:53.448Z" }, + { url = "https://files.pythonhosted.org/packages/34/50/9d095fcbb6de2d523e027a2f304d4551855c2f46e0b82befd718b8b20056/httptools-0.7.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:c08fe65728b8d70b6923ce31e3956f859d5e1e8548e6f22ec520a962c6757270", size = 203619, upload-time = "2025-10-10T03:54:54.321Z" }, + { url = "https://files.pythonhosted.org/packages/07/f0/89720dc5139ae54b03f861b5e2c55a37dba9a5da7d51e1e824a1f343627f/httptools-0.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7aea2e3c3953521c3c51106ee11487a910d45586e351202474d45472db7d72d3", size = 108714, upload-time = "2025-10-10T03:54:55.163Z" }, + { url = "https://files.pythonhosted.org/packages/b3/cb/eea88506f191fb552c11787c23f9a405f4c7b0c5799bf73f2249cd4f5228/httptools-0.7.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0e68b8582f4ea9166be62926077a3334064d422cf08ab87d8b74664f8e9058e1", size = 472909, upload-time = "2025-10-10T03:54:56.056Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4a/a548bdfae6369c0d078bab5769f7b66f17f1bfaa6fa28f81d6be6959066b/httptools-0.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df091cf961a3be783d6aebae963cc9b71e00d57fa6f149025075217bc6a55a7b", size = 470831, upload-time = "2025-10-10T03:54:57.219Z" }, + { url = "https://files.pythonhosted.org/packages/4d/31/14df99e1c43bd132eec921c2e7e11cda7852f65619bc0fc5bdc2d0cb126c/httptools-0.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f084813239e1eb403ddacd06a30de3d3e09a9b76e7894dcda2b22f8a726e9c60", size = 452631, upload-time = "2025-10-10T03:54:58.219Z" }, + { url = "https://files.pythonhosted.org/packages/22/d2/b7e131f7be8d854d48cb6d048113c30f9a46dca0c9a8b08fcb3fcd588cdc/httptools-0.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7347714368fb2b335e9063bc2b96f2f87a9ceffcd9758ac295f8bbcd3ffbc0ca", size = 452910, upload-time = "2025-10-10T03:54:59.366Z" }, + { url = "https://files.pythonhosted.org/packages/53/cf/878f3b91e4e6e011eff6d1fa9ca39f7eb17d19c9d7971b04873734112f30/httptools-0.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:cfabda2a5bb85aa2a904ce06d974a3f30fb36cc63d7feaddec05d2050acede96", size = 88205, upload-time = "2025-10-10T03:55:00.389Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "idna" +version = "3.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, upload-time = "2026-05-12T22:45:57.011Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "packaging" +version = "26.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pm-backend" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "fastapi" }, + { name = "httpx" }, + { name = "python-dotenv" }, + { name = "uvicorn", extra = ["standard"] }, +] + +[package.dev-dependencies] +dev = [ + { name = "httpx" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, + { name = "pytest-cov" }, +] + +[package.metadata] +requires-dist = [ + { name = "fastapi", specifier = ">=0.115" }, + { name = "httpx", specifier = ">=0.28" }, + { name = "python-dotenv", specifier = ">=1.0" }, + { name = "uvicorn", extras = ["standard"], specifier = ">=0.34" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "httpx", specifier = ">=0.28" }, + { name = "pytest", specifier = ">=8.4" }, + { name = "pytest-asyncio", specifier = ">=0.24" }, + { name = "pytest-cov", specifier = ">=6.2" }, +] + +[[package]] +name = "pydantic" +version = "2.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" }, + { url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" }, + { url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" }, + { url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" }, + { url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" }, + { url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" }, + { url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" }, + { url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, + { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, + { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, + { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pytest" +version = "9.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, +] + +[[package]] +name = "pytest-asyncio" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/90/2c/8af215c0f776415f3590cac4f9086ccefd6fd463befeae41cd4d3f193e5a/pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5", size = 50087, upload-time = "2025-11-10T16:07:47.256Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" }, +] + +[[package]] +name = "pytest-cov" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "pluggy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/51/a849f96e117386044471c8ec2bd6cfebacda285da9525c9106aeb28da671/pytest_cov-7.1.0.tar.gz", hash = "sha256:30674f2b5f6351aa09702a9c8c364f6a01c27aae0c1366ae8016160d1efc56b2", size = 55592, upload-time = "2026-03-21T20:11:16.284Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/7a/d968e294073affff457b041c2be9868a40c1c71f4a35fcc1e45e5493067b/pytest_cov-7.1.0-py3-none-any.whl", hash = "sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678", size = 22876, upload-time = "2026-03-21T20:11:14.438Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "starlette" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/69/17425771797c36cded50b7fe44e850315d039f28b15901ab44839e70b593/starlette-1.0.0.tar.gz", hash = "sha256:6a4beaf1f81bb472fd19ea9b918b50dc3a77a6f2e190a12954b25e6ed5eea149", size = 2655289, upload-time = "2026-03-22T18:29:46.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/c9/584bc9651441b4ba60cc4d557d8a547b5aff901af35bda3a4ee30c819b82/starlette-1.0.0-py3-none-any.whl", hash = "sha256:d3ec55e0bb321692d275455ddfd3df75fff145d009685eb40dc91fc66b03d38b", size = 72651, upload-time = "2026-03-22T18:29:45.111Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.46.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/93/041fca8274050e40e6791f267d82e0e2e27dd165627bd640d3e0e378d877/uvicorn-0.46.0.tar.gz", hash = "sha256:fb9da0926999cc6cb22dc7cd71a94a632f078e6ae47ff683c5c420750fb7413d", size = 88758, upload-time = "2026-04-23T07:16:00.151Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/a3/5b1562db76a5a488274b2332a97199b32d0442aca0ed193697fd47786316/uvicorn-0.46.0-py3-none-any.whl", hash = "sha256:bbebbcbed972d162afca128605223022bedd345b7bc7855ce66deb31487a9048", size = 70926, upload-time = "2026-04-23T07:15:58.355Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchfiles" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/ff/7f72e8170be527b4977b033239a83a68d5c881cc4775fca255c677f7ac5d/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42", size = 1359936, upload-time = "2025-10-16T22:16:29.436Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c6/e5d433f88fd54d81ef4be58b2b7b0cea13c442454a1db703a1eea0db1a59/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6", size = 752769, upload-time = "2025-10-16T22:16:30.493Z" }, + { url = "https://files.pythonhosted.org/packages/24/68/a6ac446820273e71aa762fa21cdcc09861edd3536ff47c5cd3b7afb10eeb/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370", size = 4317413, upload-time = "2025-10-16T22:16:31.644Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/e62b4dfc7ad6518e7eff2516f680d02a0f6eb62c0c212e152ca708a0085e/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4", size = 4426307, upload-time = "2025-10-16T22:16:32.917Z" }, + { url = "https://files.pythonhosted.org/packages/90/60/97362554ac21e20e81bcef1150cb2a7e4ffdaf8ea1e5b2e8bf7a053caa18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2", size = 4131970, upload-time = "2025-10-16T22:16:34.015Z" }, + { url = "https://files.pythonhosted.org/packages/99/39/6b3f7d234ba3964c428a6e40006340f53ba37993f46ed6e111c6e9141d18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0", size = 4296343, upload-time = "2025-10-16T22:16:35.149Z" }, + { url = "https://files.pythonhosted.org/packages/89/8c/182a2a593195bfd39842ea68ebc084e20c850806117213f5a299dfc513d9/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705", size = 1358611, upload-time = "2025-10-16T22:16:36.833Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/e301ee96a6dc95224b6f1162cd3312f6d1217be3907b79173b06785f2fe7/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8", size = 751811, upload-time = "2025-10-16T22:16:38.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/654426ce265ac19e2980bfd9ea6590ca96a56f10c76e63801a2df01c0486/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d", size = 4288562, upload-time = "2025-10-16T22:16:39.375Z" }, + { url = "https://files.pythonhosted.org/packages/15/c0/0be24758891ef825f2065cd5db8741aaddabe3e248ee6acc5e8a80f04005/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e", size = 4366890, upload-time = "2025-10-16T22:16:40.547Z" }, + { url = "https://files.pythonhosted.org/packages/d2/53/8369e5219a5855869bcee5f4d317f6da0e2c669aecf0ef7d371e3d084449/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e", size = 4119472, upload-time = "2025-10-16T22:16:41.694Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ba/d69adbe699b768f6b29a5eec7b47dd610bd17a69de51b251126a801369ea/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad", size = 4239051, upload-time = "2025-10-16T22:16:43.224Z" }, + { url = "https://files.pythonhosted.org/packages/90/cd/b62bdeaa429758aee8de8b00ac0dd26593a9de93d302bff3d21439e9791d/uvloop-0.22.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3879b88423ec7e97cd4eba2a443aa26ed4e59b45e6b76aabf13fe2f27023a142", size = 1362067, upload-time = "2025-10-16T22:16:44.503Z" }, + { url = "https://files.pythonhosted.org/packages/0d/f8/a132124dfda0777e489ca86732e85e69afcd1ff7686647000050ba670689/uvloop-0.22.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4baa86acedf1d62115c1dc6ad1e17134476688f08c6efd8a2ab076e815665c74", size = 752423, upload-time = "2025-10-16T22:16:45.968Z" }, + { url = "https://files.pythonhosted.org/packages/a3/94/94af78c156f88da4b3a733773ad5ba0b164393e357cc4bd0ab2e2677a7d6/uvloop-0.22.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:297c27d8003520596236bdb2335e6b3f649480bd09e00d1e3a99144b691d2a35", size = 4272437, upload-time = "2025-10-16T22:16:47.451Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/60249e9fd07b32c665192cec7af29e06c7cd96fa1d08b84f012a56a0b38e/uvloop-0.22.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1955d5a1dd43198244d47664a5858082a3239766a839b2102a269aaff7a4e25", size = 4292101, upload-time = "2025-10-16T22:16:49.318Z" }, + { url = "https://files.pythonhosted.org/packages/02/62/67d382dfcb25d0a98ce73c11ed1a6fba5037a1a1d533dcbb7cab033a2636/uvloop-0.22.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b31dc2fccbd42adc73bc4e7cdbae4fc5086cf378979e53ca5d0301838c5682c6", size = 4114158, upload-time = "2025-10-16T22:16:50.517Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/f1171b4a882a5d13c8b7576f348acfe6074d72eaf52cccef752f748d4a9f/uvloop-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:93f617675b2d03af4e72a5333ef89450dfaa5321303ede6e67ba9c9d26878079", size = 4177360, upload-time = "2025-10-16T22:16:52.646Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/b01414f31546caf0919da80ad57cbfe24c56b151d12af68cee1b04922ca8/uvloop-0.22.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:37554f70528f60cad66945b885eb01f1bb514f132d92b6eeed1c90fd54ed6289", size = 1454790, upload-time = "2025-10-16T22:16:54.355Z" }, + { url = "https://files.pythonhosted.org/packages/d4/31/0bb232318dd838cad3fa8fb0c68c8b40e1145b32025581975e18b11fab40/uvloop-0.22.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b76324e2dc033a0b2f435f33eb88ff9913c156ef78e153fb210e03c13da746b3", size = 796783, upload-time = "2025-10-16T22:16:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/42/38/c9b09f3271a7a723a5de69f8e237ab8e7803183131bc57c890db0b6bb872/uvloop-0.22.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:badb4d8e58ee08dad957002027830d5c3b06aea446a6a3744483c2b3b745345c", size = 4647548, upload-time = "2025-10-16T22:16:57.008Z" }, + { url = "https://files.pythonhosted.org/packages/c1/37/945b4ca0ac27e3dc4952642d4c900edd030b3da6c9634875af6e13ae80e5/uvloop-0.22.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b91328c72635f6f9e0282e4a57da7470c7350ab1c9f48546c0f2866205349d21", size = 4467065, upload-time = "2025-10-16T22:16:58.206Z" }, + { url = "https://files.pythonhosted.org/packages/97/cc/48d232f33d60e2e2e0b42f4e73455b146b76ebe216487e862700457fbf3c/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:daf620c2995d193449393d6c62131b3fbd40a63bf7b307a1527856ace637fe88", size = 4328384, upload-time = "2025-10-16T22:16:59.36Z" }, + { url = "https://files.pythonhosted.org/packages/e4/16/c1fd27e9549f3c4baf1dc9c20c456cd2f822dbf8de9f463824b0c0357e06/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e", size = 4296730, upload-time = "2025-10-16T22:17:00.744Z" }, +] + +[[package]] +name = "watchfiles" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c2/c9/8869df9b2a2d6c59d79220a4db37679e74f807c559ffe5265e08b227a210/watchfiles-1.1.1.tar.gz", hash = "sha256:a173cb5c16c4f40ab19cecf48a534c409f7ea983ab8fed0741304a1c0a31b3f2", size = 94440, upload-time = "2025-10-14T15:06:21.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/d5/f039e7e3c639d9b1d09b07ea412a6806d38123f0508e5f9b48a87b0a76cc/watchfiles-1.1.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8c89f9f2f740a6b7dcc753140dd5e1ab9215966f7a3530d0c0705c83b401bd7d", size = 404745, upload-time = "2025-10-14T15:04:46.731Z" }, + { url = "https://files.pythonhosted.org/packages/a5/96/a881a13aa1349827490dab2d363c8039527060cfcc2c92cc6d13d1b1049e/watchfiles-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd404be08018c37350f0d6e34676bd1e2889990117a2b90070b3007f172d0610", size = 391769, upload-time = "2025-10-14T15:04:48.003Z" }, + { url = "https://files.pythonhosted.org/packages/4b/5b/d3b460364aeb8da471c1989238ea0e56bec24b6042a68046adf3d9ddb01c/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8526e8f916bb5b9a0a777c8317c23ce65de259422bba5b31325a6fa6029d33af", size = 449374, upload-time = "2025-10-14T15:04:49.179Z" }, + { url = "https://files.pythonhosted.org/packages/b9/44/5769cb62d4ed055cb17417c0a109a92f007114a4e07f30812a73a4efdb11/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2edc3553362b1c38d9f06242416a5d8e9fe235c204a4072e988ce2e5bb1f69f6", size = 459485, upload-time = "2025-10-14T15:04:50.155Z" }, + { url = "https://files.pythonhosted.org/packages/19/0c/286b6301ded2eccd4ffd0041a1b726afda999926cf720aab63adb68a1e36/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30f7da3fb3f2844259cba4720c3fc7138eb0f7b659c38f3bfa65084c7fc7abce", size = 488813, upload-time = "2025-10-14T15:04:51.059Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2b/8530ed41112dd4a22f4dcfdb5ccf6a1baad1ff6eed8dc5a5f09e7e8c41c7/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8979280bdafff686ba5e4d8f97840f929a87ed9cdf133cbbd42f7766774d2aa", size = 594816, upload-time = "2025-10-14T15:04:52.031Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d2/f5f9fb49489f184f18470d4f99f4e862a4b3e9ac2865688eb2099e3d837a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcc5c24523771db3a294c77d94771abcfcb82a0e0ee8efd910c37c59ec1b31bb", size = 475186, upload-time = "2025-10-14T15:04:53.064Z" }, + { url = "https://files.pythonhosted.org/packages/cf/68/5707da262a119fb06fbe214d82dd1fe4a6f4af32d2d14de368d0349eb52a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db5d7ae38ff20153d542460752ff397fcf5c96090c1230803713cf3147a6803", size = 456812, upload-time = "2025-10-14T15:04:55.174Z" }, + { url = "https://files.pythonhosted.org/packages/66/ab/3cbb8756323e8f9b6f9acb9ef4ec26d42b2109bce830cc1f3468df20511d/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:28475ddbde92df1874b6c5c8aaeb24ad5be47a11f87cde5a28ef3835932e3e94", size = 630196, upload-time = "2025-10-14T15:04:56.22Z" }, + { url = "https://files.pythonhosted.org/packages/78/46/7152ec29b8335f80167928944a94955015a345440f524d2dfe63fc2f437b/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:36193ed342f5b9842edd3532729a2ad55c4160ffcfa3700e0d54be496b70dd43", size = 622657, upload-time = "2025-10-14T15:04:57.521Z" }, + { url = "https://files.pythonhosted.org/packages/0a/bf/95895e78dd75efe9a7f31733607f384b42eb5feb54bd2eb6ed57cc2e94f4/watchfiles-1.1.1-cp312-cp312-win32.whl", hash = "sha256:859e43a1951717cc8de7f4c77674a6d389b106361585951d9e69572823f311d9", size = 272042, upload-time = "2025-10-14T15:04:59.046Z" }, + { url = "https://files.pythonhosted.org/packages/87/0a/90eb755f568de2688cb220171c4191df932232c20946966c27a59c400850/watchfiles-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:91d4c9a823a8c987cce8fa2690923b069966dabb196dd8d137ea2cede885fde9", size = 288410, upload-time = "2025-10-14T15:05:00.081Z" }, + { url = "https://files.pythonhosted.org/packages/36/76/f322701530586922fbd6723c4f91ace21364924822a8772c549483abed13/watchfiles-1.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:a625815d4a2bdca61953dbba5a39d60164451ef34c88d751f6c368c3ea73d404", size = 278209, upload-time = "2025-10-14T15:05:01.168Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f4/f750b29225fe77139f7ae5de89d4949f5a99f934c65a1f1c0b248f26f747/watchfiles-1.1.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:130e4876309e8686a5e37dba7d5e9bc77e6ed908266996ca26572437a5271e18", size = 404321, upload-time = "2025-10-14T15:05:02.063Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f9/f07a295cde762644aa4c4bb0f88921d2d141af45e735b965fb2e87858328/watchfiles-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5f3bde70f157f84ece3765b42b4a52c6ac1a50334903c6eaf765362f6ccca88a", size = 391783, upload-time = "2025-10-14T15:05:03.052Z" }, + { url = "https://files.pythonhosted.org/packages/bc/11/fc2502457e0bea39a5c958d86d2cb69e407a4d00b85735ca724bfa6e0d1a/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e0b1fe858430fc0251737ef3824c54027bedb8c37c38114488b8e131cf8219", size = 449279, upload-time = "2025-10-14T15:05:04.004Z" }, + { url = "https://files.pythonhosted.org/packages/e3/1f/d66bc15ea0b728df3ed96a539c777acfcad0eb78555ad9efcaa1274688f0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f27db948078f3823a6bb3b465180db8ebecf26dd5dae6f6180bd87383b6b4428", size = 459405, upload-time = "2025-10-14T15:05:04.942Z" }, + { url = "https://files.pythonhosted.org/packages/be/90/9f4a65c0aec3ccf032703e6db02d89a157462fbb2cf20dd415128251cac0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059098c3a429f62fc98e8ec62b982230ef2c8df68c79e826e37b895bc359a9c0", size = 488976, upload-time = "2025-10-14T15:05:05.905Z" }, + { url = "https://files.pythonhosted.org/packages/37/57/ee347af605d867f712be7029bb94c8c071732a4b44792e3176fa3c612d39/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfb5862016acc9b869bb57284e6cb35fdf8e22fe59f7548858e2f971d045f150", size = 595506, upload-time = "2025-10-14T15:05:06.906Z" }, + { url = "https://files.pythonhosted.org/packages/a8/78/cc5ab0b86c122047f75e8fc471c67a04dee395daf847d3e59381996c8707/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:319b27255aacd9923b8a276bb14d21a5f7ff82564c744235fc5eae58d95422ae", size = 474936, upload-time = "2025-10-14T15:05:07.906Z" }, + { url = "https://files.pythonhosted.org/packages/62/da/def65b170a3815af7bd40a3e7010bf6ab53089ef1b75d05dd5385b87cf08/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c755367e51db90e75b19454b680903631d41f9e3607fbd941d296a020c2d752d", size = 456147, upload-time = "2025-10-14T15:05:09.138Z" }, + { url = "https://files.pythonhosted.org/packages/57/99/da6573ba71166e82d288d4df0839128004c67d2778d3b566c138695f5c0b/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c22c776292a23bfc7237a98f791b9ad3144b02116ff10d820829ce62dff46d0b", size = 630007, upload-time = "2025-10-14T15:05:10.117Z" }, + { url = "https://files.pythonhosted.org/packages/a8/51/7439c4dd39511368849eb1e53279cd3454b4a4dbace80bab88feeb83c6b5/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3a476189be23c3686bc2f4321dd501cb329c0a0469e77b7b534ee10129ae6374", size = 622280, upload-time = "2025-10-14T15:05:11.146Z" }, + { url = "https://files.pythonhosted.org/packages/95/9c/8ed97d4bba5db6fdcdb2b298d3898f2dd5c20f6b73aee04eabe56c59677e/watchfiles-1.1.1-cp313-cp313-win32.whl", hash = "sha256:bf0a91bfb5574a2f7fc223cf95eeea79abfefa404bf1ea5e339c0c1560ae99a0", size = 272056, upload-time = "2025-10-14T15:05:12.156Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/c14e28429f744a260d8ceae18bf58c1d5fa56b50d006a7a9f80e1882cb0d/watchfiles-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:52e06553899e11e8074503c8e716d574adeeb7e68913115c4b3653c53f9bae42", size = 288162, upload-time = "2025-10-14T15:05:13.208Z" }, + { url = "https://files.pythonhosted.org/packages/dc/61/fe0e56c40d5cd29523e398d31153218718c5786b5e636d9ae8ae79453d27/watchfiles-1.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac3cc5759570cd02662b15fbcd9d917f7ecd47efe0d6b40474eafd246f91ea18", size = 277909, upload-time = "2025-10-14T15:05:14.49Z" }, + { url = "https://files.pythonhosted.org/packages/79/42/e0a7d749626f1e28c7108a99fb9bf524b501bbbeb9b261ceecde644d5a07/watchfiles-1.1.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:563b116874a9a7ce6f96f87cd0b94f7faf92d08d0021e837796f0a14318ef8da", size = 403389, upload-time = "2025-10-14T15:05:15.777Z" }, + { url = "https://files.pythonhosted.org/packages/15/49/08732f90ce0fbbc13913f9f215c689cfc9ced345fb1bcd8829a50007cc8d/watchfiles-1.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3ad9fe1dae4ab4212d8c91e80b832425e24f421703b5a42ef2e4a1e215aff051", size = 389964, upload-time = "2025-10-14T15:05:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/27/0d/7c315d4bd5f2538910491a0393c56bf70d333d51bc5b34bee8e68e8cea19/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce70f96a46b894b36eba678f153f052967a0d06d5b5a19b336ab0dbbd029f73e", size = 448114, upload-time = "2025-10-14T15:05:17.876Z" }, + { url = "https://files.pythonhosted.org/packages/c3/24/9e096de47a4d11bc4df41e9d1e61776393eac4cb6eb11b3e23315b78b2cc/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb467c999c2eff23a6417e58d75e5828716f42ed8289fe6b77a7e5a91036ca70", size = 460264, upload-time = "2025-10-14T15:05:18.962Z" }, + { url = "https://files.pythonhosted.org/packages/cc/0f/e8dea6375f1d3ba5fcb0b3583e2b493e77379834c74fd5a22d66d85d6540/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:836398932192dae4146c8f6f737d74baeac8b70ce14831a239bdb1ca882fc261", size = 487877, upload-time = "2025-10-14T15:05:20.094Z" }, + { url = "https://files.pythonhosted.org/packages/ac/5b/df24cfc6424a12deb41503b64d42fbea6b8cb357ec62ca84a5a3476f654a/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:743185e7372b7bc7c389e1badcc606931a827112fbbd37f14c537320fca08620", size = 595176, upload-time = "2025-10-14T15:05:21.134Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b5/853b6757f7347de4e9b37e8cc3289283fb983cba1ab4d2d7144694871d9c/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afaeff7696e0ad9f02cbb8f56365ff4686ab205fcf9c4c5b6fdfaaa16549dd04", size = 473577, upload-time = "2025-10-14T15:05:22.306Z" }, + { url = "https://files.pythonhosted.org/packages/e1/f7/0a4467be0a56e80447c8529c9fce5b38eab4f513cb3d9bf82e7392a5696b/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7eb7da0eb23aa2ba036d4f616d46906013a68caf61b7fdbe42fc8b25132e77", size = 455425, upload-time = "2025-10-14T15:05:23.348Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e0/82583485ea00137ddf69bc84a2db88bd92ab4a6e3c405e5fb878ead8d0e7/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:831a62658609f0e5c64178211c942ace999517f5770fe9436be4c2faeba0c0ef", size = 628826, upload-time = "2025-10-14T15:05:24.398Z" }, + { url = "https://files.pythonhosted.org/packages/28/9a/a785356fccf9fae84c0cc90570f11702ae9571036fb25932f1242c82191c/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f9a2ae5c91cecc9edd47e041a930490c31c3afb1f5e6d71de3dc671bfaca02bf", size = 622208, upload-time = "2025-10-14T15:05:25.45Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f4/0872229324ef69b2c3edec35e84bd57a1289e7d3fe74588048ed8947a323/watchfiles-1.1.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:d1715143123baeeaeadec0528bb7441103979a1d5f6fd0e1f915383fea7ea6d5", size = 404315, upload-time = "2025-10-14T15:05:26.501Z" }, + { url = "https://files.pythonhosted.org/packages/7b/22/16d5331eaed1cb107b873f6ae1b69e9ced582fcf0c59a50cd84f403b1c32/watchfiles-1.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:39574d6370c4579d7f5d0ad940ce5b20db0e4117444e39b6d8f99db5676c52fd", size = 390869, upload-time = "2025-10-14T15:05:27.649Z" }, + { url = "https://files.pythonhosted.org/packages/b2/7e/5643bfff5acb6539b18483128fdc0ef2cccc94a5b8fbda130c823e8ed636/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7365b92c2e69ee952902e8f70f3ba6360d0d596d9299d55d7d386df84b6941fb", size = 449919, upload-time = "2025-10-14T15:05:28.701Z" }, + { url = "https://files.pythonhosted.org/packages/51/2e/c410993ba5025a9f9357c376f48976ef0e1b1aefb73b97a5ae01a5972755/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bfff9740c69c0e4ed32416f013f3c45e2ae42ccedd1167ef2d805c000b6c71a5", size = 460845, upload-time = "2025-10-14T15:05:30.064Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a4/2df3b404469122e8680f0fcd06079317e48db58a2da2950fb45020947734/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b27cf2eb1dda37b2089e3907d8ea92922b673c0c427886d4edc6b94d8dfe5db3", size = 489027, upload-time = "2025-10-14T15:05:31.064Z" }, + { url = "https://files.pythonhosted.org/packages/ea/84/4587ba5b1f267167ee715b7f66e6382cca6938e0a4b870adad93e44747e6/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:526e86aced14a65a5b0ec50827c745597c782ff46b571dbfe46192ab9e0b3c33", size = 595615, upload-time = "2025-10-14T15:05:32.074Z" }, + { url = "https://files.pythonhosted.org/packages/6a/0f/c6988c91d06e93cd0bb3d4a808bcf32375ca1904609835c3031799e3ecae/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04e78dd0b6352db95507fd8cb46f39d185cf8c74e4cf1e4fbad1d3df96faf510", size = 474836, upload-time = "2025-10-14T15:05:33.209Z" }, + { url = "https://files.pythonhosted.org/packages/b4/36/ded8aebea91919485b7bbabbd14f5f359326cb5ec218cd67074d1e426d74/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c85794a4cfa094714fb9c08d4a218375b2b95b8ed1666e8677c349906246c05", size = 455099, upload-time = "2025-10-14T15:05:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/98/e0/8c9bdba88af756a2fce230dd365fab2baf927ba42cd47521ee7498fd5211/watchfiles-1.1.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:74d5012b7630714b66be7b7b7a78855ef7ad58e8650c73afc4c076a1f480a8d6", size = 630626, upload-time = "2025-10-14T15:05:35.216Z" }, + { url = "https://files.pythonhosted.org/packages/2a/84/a95db05354bf2d19e438520d92a8ca475e578c647f78f53197f5a2f17aaf/watchfiles-1.1.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:8fbe85cb3201c7d380d3d0b90e63d520f15d6afe217165d7f98c9c649654db81", size = 622519, upload-time = "2025-10-14T15:05:36.259Z" }, + { url = "https://files.pythonhosted.org/packages/1d/ce/d8acdc8de545de995c339be67711e474c77d643555a9bb74a9334252bd55/watchfiles-1.1.1-cp314-cp314-win32.whl", hash = "sha256:3fa0b59c92278b5a7800d3ee7733da9d096d4aabcfabb9a928918bd276ef9b9b", size = 272078, upload-time = "2025-10-14T15:05:37.63Z" }, + { url = "https://files.pythonhosted.org/packages/c4/c9/a74487f72d0451524be827e8edec251da0cc1fcf111646a511ae752e1a3d/watchfiles-1.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:c2047d0b6cea13b3316bdbafbfa0c4228ae593d995030fda39089d36e64fc03a", size = 287664, upload-time = "2025-10-14T15:05:38.95Z" }, + { url = "https://files.pythonhosted.org/packages/df/b8/8ac000702cdd496cdce998c6f4ee0ca1f15977bba51bdf07d872ebdfc34c/watchfiles-1.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:842178b126593addc05acf6fce960d28bc5fae7afbaa2c6c1b3a7b9460e5be02", size = 277154, upload-time = "2025-10-14T15:05:39.954Z" }, + { url = "https://files.pythonhosted.org/packages/47/a8/e3af2184707c29f0f14b1963c0aace6529f9d1b8582d5b99f31bbf42f59e/watchfiles-1.1.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:88863fbbc1a7312972f1c511f202eb30866370ebb8493aef2812b9ff28156a21", size = 403820, upload-time = "2025-10-14T15:05:40.932Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/e47e307c2f4bd75f9f9e8afbe3876679b18e1bcec449beca132a1c5ffb2d/watchfiles-1.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:55c7475190662e202c08c6c0f4d9e345a29367438cf8e8037f3155e10a88d5a5", size = 390510, upload-time = "2025-10-14T15:05:41.945Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a0/ad235642118090f66e7b2f18fd5c42082418404a79205cdfca50b6309c13/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f53fa183d53a1d7a8852277c92b967ae99c2d4dcee2bfacff8868e6e30b15f7", size = 448408, upload-time = "2025-10-14T15:05:43.385Z" }, + { url = "https://files.pythonhosted.org/packages/df/85/97fa10fd5ff3332ae17e7e40e20784e419e28521549780869f1413742e9d/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6aae418a8b323732fa89721d86f39ec8f092fc2af67f4217a2b07fd3e93c6101", size = 458968, upload-time = "2025-10-14T15:05:44.404Z" }, + { url = "https://files.pythonhosted.org/packages/47/c2/9059c2e8966ea5ce678166617a7f75ecba6164375f3b288e50a40dc6d489/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f096076119da54a6080e8920cbdaac3dbee667eb91dcc5e5b78840b87415bd44", size = 488096, upload-time = "2025-10-14T15:05:45.398Z" }, + { url = "https://files.pythonhosted.org/packages/94/44/d90a9ec8ac309bc26db808a13e7bfc0e4e78b6fc051078a554e132e80160/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00485f441d183717038ed2e887a7c868154f216877653121068107b227a2f64c", size = 596040, upload-time = "2025-10-14T15:05:46.502Z" }, + { url = "https://files.pythonhosted.org/packages/95/68/4e3479b20ca305cfc561db3ed207a8a1c745ee32bf24f2026a129d0ddb6e/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a55f3e9e493158d7bfdb60a1165035f1cf7d320914e7b7ea83fe22c6023b58fc", size = 473847, upload-time = "2025-10-14T15:05:47.484Z" }, + { url = "https://files.pythonhosted.org/packages/4f/55/2af26693fd15165c4ff7857e38330e1b61ab8c37d15dc79118cdba115b7a/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c91ed27800188c2ae96d16e3149f199d62f86c7af5f5f4d2c61a3ed8cd3666c", size = 455072, upload-time = "2025-10-14T15:05:48.928Z" }, + { url = "https://files.pythonhosted.org/packages/66/1d/d0d200b10c9311ec25d2273f8aad8c3ef7cc7ea11808022501811208a750/watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:311ff15a0bae3714ffb603e6ba6dbfba4065ab60865d15a6ec544133bdb21099", size = 629104, upload-time = "2025-10-14T15:05:49.908Z" }, + { url = "https://files.pythonhosted.org/packages/e3/bd/fa9bb053192491b3867ba07d2343d9f2252e00811567d30ae8d0f78136fe/watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:a916a2932da8f8ab582f242c065f5c81bed3462849ca79ee357dd9551b0e9b01", size = 622112, upload-time = "2025-10-14T15:05:50.941Z" }, +] + +[[package]] +name = "websockets" +version = "16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00", size = 177365, upload-time = "2026-01-10T09:22:46.787Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79", size = 175038, upload-time = "2026-01-10T09:22:47.999Z" }, + { url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39", size = 175328, upload-time = "2026-01-10T09:22:49.809Z" }, + { url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c", size = 184915, upload-time = "2026-01-10T09:22:51.071Z" }, + { url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f", size = 186152, upload-time = "2026-01-10T09:22:52.224Z" }, + { url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1", size = 185583, upload-time = "2026-01-10T09:22:53.443Z" }, + { url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2", size = 184880, upload-time = "2026-01-10T09:22:55.033Z" }, + { url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89", size = 178261, upload-time = "2026-01-10T09:22:56.251Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea", size = 178693, upload-time = "2026-01-10T09:22:57.478Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload-time = "2026-01-10T09:22:59.333Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload-time = "2026-01-10T09:23:01.171Z" }, + { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload-time = "2026-01-10T09:23:02.341Z" }, + { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload-time = "2026-01-10T09:23:03.756Z" }, + { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload-time = "2026-01-10T09:23:05.01Z" }, + { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload-time = "2026-01-10T09:23:06.301Z" }, + { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload-time = "2026-01-10T09:23:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload-time = "2026-01-10T09:23:09.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload-time = "2026-01-10T09:23:10.483Z" }, + { url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0", size = 177406, upload-time = "2026-01-10T09:23:12.178Z" }, + { url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904", size = 175085, upload-time = "2026-01-10T09:23:13.511Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4", size = 175328, upload-time = "2026-01-10T09:23:14.727Z" }, + { url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e", size = 185044, upload-time = "2026-01-10T09:23:15.939Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4", size = 186279, upload-time = "2026-01-10T09:23:17.148Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1", size = 185711, upload-time = "2026-01-10T09:23:18.372Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3", size = 184982, upload-time = "2026-01-10T09:23:19.652Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8", size = 177915, upload-time = "2026-01-10T09:23:21.458Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d", size = 178381, upload-time = "2026-01-10T09:23:22.715Z" }, + { url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244", size = 177737, upload-time = "2026-01-10T09:23:24.523Z" }, + { url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e", size = 175268, upload-time = "2026-01-10T09:23:25.781Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641", size = 175486, upload-time = "2026-01-10T09:23:27.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8", size = 185331, upload-time = "2026-01-10T09:23:28.259Z" }, + { url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e", size = 186501, upload-time = "2026-01-10T09:23:29.449Z" }, + { url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944", size = 186062, upload-time = "2026-01-10T09:23:31.368Z" }, + { url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206", size = 185356, upload-time = "2026-01-10T09:23:32.627Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6", size = 178085, upload-time = "2026-01-10T09:23:33.816Z" }, + { url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd", size = 178531, upload-time = "2026-01-10T09:23:35.016Z" }, + { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, +] diff --git a/data/pm.db b/data/pm.db new file mode 100644 index 0000000000000000000000000000000000000000..eae470b3c59b630e00a89e73e2600b683a3f78ce GIT binary patch literal 40960 zcmeI*?{C{g7zc2>PMRNU>mf9SC@S12QyN&NrCGPJF+sLwQ$<&{v_(uBs;==hvFg~V z@6wP-yy(Usz$^X$5HEN$iHVm;<24dUo8T?*ey?~jw3nREPPC%5`yqiu_qCe%;=B6s z^Es!I?~;1y>Vhp8S@--F6{M^k)O1~Yj}T4M($Pb%)Dn}=!K1(E{lXsWw07*q=D7Jt zOC7kaP5fs5WPUk*f8yJ*2jgEIxIOm69>0ky2tWV=5P$##AOHafyzl}y&152z$>_H} z6?DyEb?RGOJ*6(xs+Hv`S+1O4s1mh_Os9!lY>O;cKUyYNYV(&XwQJ=4>b0Y)qV74J zmb==oU;JR1EUqjpkXrR(wN_ocP+cNn6FzNQh46QTEgTl^uirkbu$Z8>!*^DZx$4Er z%EB_q=fhTQkK4lbTr$77T)kASk)1oK`-}=^t;!1#b;$kN!G5MKSugAso6fslH(w~E z3x(8Z=3GYCY}aC+@J&Zv%&gLm@YL&71+iLEtMvBlXd;u#={GAOp30v`IVN@jhILOO zT=QfH>?x>PJPqKkH0eSyF`B95c1^fVAIZT;i)Co7BdS68ah`As?Rdh(QLQr_Ho4u=h%C*gvz*BP!3eRW2yVug_> zH!Z2AhWt~S4E~&s%ZG0MqRAgD5P$##AOHafKmY;|fB*y_009X6j|AS-lDW5nqdpelp*Ui5)`GW-l5P$##AOHafKmY;|fB*y_ z0D*lakTSBVaCjiR{(q#&kLY8800bZa0SG_<0uX=z1Rwwb2tZ(;2_%d|Y6Kws{Qo`8 zytmI1L^=?F00bZa0SG_<0uX=z1Rwx`{VY(_2tWV=5P$##AOHafKmY;|fWW^b zFlI~+h7{rx#^J{X5n>08BRd8SjF*gj*tkC)Ffw6GsS$%{G$5G&PmVFo{LDNs@%h9n z<6n=zGj?BYzybjXKmY;|fB*y_009U<;CTc#l8Nl(S(Yl-<-OmFr~4D47aWf>;<;)@ z(smn!w|(0cb6&mEVy+-Qa~PE^Tu(4gsB014q&_3E4f9>nQyQ6NHdtGJxbPPlKiL&=Xlgo*$XQ3 z92RIZp2!|4@yKsB2-Kezo@3l@xFmoj4()jzQL!x2w3$!+dQ&DAsL51<0PCJlc%8a# z@WNuQq;+gAhKAgV$&hb%qTEhA9w)UFF2L@IW!QA`_h~d9tcgHtgPdv*WvDoiQue+pwH(=*jHV?6w|Z zmmZ5;af06Uvaf~e8`;zqp?-@AUt$f5 z9nAkH&2QxW|I7#SI{?3$Kbm*V@8kw75P$##AOHafKmY;|fB*y_009X6_X24{eqBHf jpCt#yQ;9+G= 80% for src/ + +**Success criteria:** Docker container serves the full Kanban board at / with drag-and-drop working. All tests pass. Coverage >= 80%. + +--- + +## Part 4: Add in a fake user sign in experience Now update so that on first hitting /, you need to log in with dummy credentials ("user", "password") in order to see the Kanban, and you can log out. Comprehensive tests. -Part 5: Database modeling +- [x] Add login page component to frontend (username + password form) +- [x] Add session state management (logged in / not logged in) -- use React context or simple state +- [x] POST /api/auth/login endpoint in backend: accepts {username, password}, returns session token on match with "user"/"password" +- [x] POST /api/auth/logout endpoint in backend +- [x] GET /api/auth/me endpoint to check session status +- [x] Frontend redirects to login page if not authenticated +- [x] Logout button in the UI when logged in +- [x] Add route protection logic (redirect unauthenticated users) +- [x] Backend unit tests for auth endpoints (login success, login failure, logout, me) +- [x] Frontend unit tests for login form, redirect behavior, logout +- [ ] Playwright e2e test: login flow, logout flow, protected route redirect (needs Docker) + +**Tests:** +- Backend unit: POST /api/auth/login with correct creds returns 200 + token +- Backend unit: POST /api/auth/login with wrong creds returns 401 +- Backend unit: POST /api/auth/logout clears session +- Backend unit: GET /api/auth/me returns user info when authenticated +- Backend unit: GET /api/auth/me returns 401 when not authenticated +- Frontend unit: login form renders, submits, shows error on bad creds +- Frontend unit: unauthenticated user sees login page +- Frontend unit: logout clears session and redirects +- E2e: full login -> see board -> logout -> see login page + +**Success criteria:** Unauthenticated users see login page. Logging in with "user"/"password" shows the Kanban. Logging out returns to login. All tests pass. Coverage >= 80%. + +--- + +## Part 5: Database modeling Now propose a database schema for the Kanban, saving it as JSON. Document the database approach in docs/ and get user sign off. -Part 6: Backend +- [x] Design SQLite schema: users table, boards table, columns table, cards table +- [x] Write schema as SQL migration file in backend/ +- [x] Write schema documentation in docs/DATABASE.md (tables, relationships, constraints) +- [x] Include seed data structure (initial columns for a new user) +- [ ] Get user sign-off on the schema + +**Tests:** +- Schema documentation is clear and complete +- SQL is valid and can be executed against SQLite + +**Success criteria:** User approves the database schema and docs/DATABASE.md. Schema supports multiple users (for future) and one board per user (MVP). + +--- + +## Part 6: Backend Now add API routes to allow the backend to read and change the Kanban for a given user; test this thoroughly with backend unit tests. The database should be created if it doesn't exist. -Part 7: Frontend + Backend +- [x] Add SQLAlchemy or raw sqlite3 integration to backend +- [x] Add database initialization logic (create tables if not exist, seed default board for new user) +- [x] GET /api/boards -- returns the authenticated user's board (columns + cards) +- [x] PUT /api/boards -- replaced with granular endpoints +- [x] POST /api/boards/cards -- add a card to a column +- [x] PUT /api/boards/cards/{id} -- update a card +- [x] DELETE /api/boards/cards/{id} -- delete a card +- [x] PUT /api/boards/columns/{id} -- rename a column +- [x] PUT /api/boards/cards/{id}/move -- reorder cards within/across columns +- [x] All routes require authentication +- [x] Database file is created automatically on first request if it doesn't exist +- [x] Backend unit tests for all CRUD endpoints (26 tests, 96% coverage) +- [x] Update backend/AGENTS.md + +**Tests:** +- Unit: each endpoint returns correct status codes and data +- Unit: unauthenticated requests return 401 +- Unit: database is auto-created on first request +- Unit: new user gets a default board with seed columns +- Unit: card CRUD operations work correctly +- Unit: column rename works +- Unit: card reorder within and across columns works +- Coverage >= 80% -Now have the frontend actually use the backend API, so that the app is a proper persistent Kanban board. Test very throughly. +**Success criteria:** All API routes work with authentication. Database auto-creates. Tests pass with >= 80% coverage. -Part 8: AI connectivity +--- + +## Part 7: Frontend + Backend + +Now have the frontend actually use the backend API, so that the app is a proper persistent Kanban board. Test very thoroughly. + +- [x] Replace frontend seed data with API fetch on mount +- [x] After login, fetch board from GET /api/boards and populate state +- [x] On drag-and-drop, call move API then update local state (optimistic + revert on error) +- [x] On add card, call POST /api/boards/cards then update local state +- [x] On delete card, call DELETE /api/boards/cards/{id} then update local state +- [x] On rename column, call PUT /api/boards/columns/{id} then update local state +- [x] Handle API errors gracefully (revert optimistic updates on failure) +- [x] Handle loading states +- [x] Board persists across page refreshes (data comes from DB) +- [x] Update Vitest tests to mock API calls (23 tests) +- [ ] Update Playwright e2e tests to test full flow with backend (needs Docker) +- [x] Ensure >= 80% test coverage (frontend 84%, backend 96%) + +**Tests:** +- Unit: KanbanBoard fetches data from API on mount +- Unit: each action (add, delete, move, rename) calls the correct API endpoint +- Unit: error handling works when API calls fail +- E2e: full flow -- login, see persisted board, add card, refresh, card still there +- E2e: drag card, refresh, card stays in new position +- Coverage >= 80% + +**Success criteria:** The Kanban board is fully persistent. All changes survive page refresh. All tests pass. Coverage >= 80%. + +--- + +## Part 8: AI connectivity Now allow the backend to make an AI call via OpenRouter. Test connectivity with a simple "2+2" test and ensure the AI call is working. -Part 9: Now extend the backend call so that it always calls the AI with the JSON of the Kanban board, plus the user's question (and conversation history). The AI should respond with Structured Outputs that includes the response to the user and optionaly an update to the Kanban. Test thoroughly. +- [x] Add httpx dependency to backend for OpenRouter API calls +- [x] Create backend/app/ai.py with a function that calls OpenRouter API using the key from .env +- [x] Use model "glm-5.1" as specified in AGENTS.md +- [x] Add POST /api/ai/test endpoint that sends "2+2" to the AI and returns the response +- [x] Load OPENROUTER_API_KEY from environment variable +- [x] Backend unit test for AI module (mock the HTTP call, verify request format) -- 5 tests, 100% ai.py coverage +- [ ] Manual test: call /api/ai/test and confirm AI responds with "4" (needs OPENROUTER_API_KEY in .env) + +**Tests:** +- Unit: AI module constructs correct request to OpenRouter (mocked HTTP) +- Unit: API endpoint returns 200 and AI response +- Unit: missing API key returns appropriate error +- Manual: /api/ai/test returns a valid AI response + +**Success criteria:** Backend can successfully call OpenRouter API and return a response. Unit tests pass. Manual test confirms connectivity. + +--- + +## Part 9: Structured AI Outputs + +Now extend the backend call so that it always calls the AI with the JSON of the Kanban board, plus the user's question (and conversation history). The AI should respond with Structured Outputs that includes the response to the user and optionally an update to the Kanban. Test thoroughly. + +- [x] Design the AI system prompt instructing it to analyze the Kanban board and respond with structured output +- [x] Define the structured output schema: { message: string, board_update: BoardData | null } +- [x] Create backend/app/ai.py function that: + - [x] Accepts: board JSON, user message, conversation history + - [x] Sends to OpenRouter with system prompt + structured output instruction + - [x] Parses the AI response into the defined schema + - [x] Returns parsed result +- [x] Add POST /api/ai/chat endpoint that: + - [x] Requires authentication + - [x] Loads user's current board from DB + - [x] Calls the AI function with board + message + history + - [x] If board_update is present, applies the update to the database + - [x] Returns { message, board_updated: bool } +- [x] Store conversation history per user (in-memory, last 20 messages) +- [ ] Backend unit tests: + - [x] AI function constructs correct prompt with board context + - [x] AI response with board_update applies changes to DB + - [x] AI response without board_update leaves board unchanged + - [x] Conversation history is maintained across calls + - [x] Invalid AI response is handled gracefully +- [x] Integration test: full flow from chat message to board update + +**Tests:** +- Unit: AI module sends board JSON + user message + history in prompt +- Unit: structured output parsing works for valid responses +- Unit: board_update is applied to DB when present +- Unit: board is unchanged when board_update is null +- Unit: conversation history accumulates across calls +- Unit: malformed AI response is handled without crash +- Coverage >= 80% + +**Success criteria:** AI receives full board context, returns structured output, and board updates are applied when the AI decides to modify the board. All tests pass. + +--- + +## Part 10: AI Chat Sidebar + +Now add a beautiful sidebar widget to the UI supporting full AI chat, and allowing the LLM (as it determines) to update the Kanban based on its Structured Outputs. If the AI updates the Kanban, then the UI should refresh automatically. + +- [x] Add a chat sidebar component (collapsible, slides in from the right) +- [x] Chat UI: message list, input field, send button +- [x] Display user messages and AI responses with distinct styling +- [x] On send, call POST /api/ai/chat with the message +- [x] Show loading indicator while waiting for AI response +- [x] If response includes board_update, refresh the board state from the API +- [x] Show a visual indicator when the AI has updated the board +- [x] Conversation history persists during the session +- [x] Style the sidebar using the project color scheme (accent turquoise, dark teal, gray) +- [x] Frontend unit tests for sidebar component (8 tests) +- [ ] Playwright e2e test: chat with AI, see board update (needs Docker + API key) +- [x] Ensure >= 80% test coverage (frontend 87%, backend 96%) + +**Tests:** +- Unit: sidebar renders correctly (open/closed states) +- Unit: sending a message calls the API +- Unit: AI response is displayed in the chat +- Unit: board refreshes when AI returns a board_update +- Unit: visual indicator appears on board update +- E2e: open sidebar, send message, see AI reply, see board update if applicable +- Coverage >= 80% -Part 10: Now add a beautiful sidebar widget to the UI supporting full AI chat, and allowing the LLM (as it determines) to update the Kanban based on its Structured Outputs. If the AI updates the Kanban, then the UI should refresh automatically. \ No newline at end of file +**Success criteria:** Users can chat with the AI in a polished sidebar. The AI can update the board, and the UI refreshes automatically when it does. All tests pass. Coverage >= 80%. diff --git a/frontend/AGENTS.md b/frontend/AGENTS.md new file mode 100644 index 00000000..9dde4612 --- /dev/null +++ b/frontend/AGENTS.md @@ -0,0 +1,65 @@ +# Frontend -- Kanban Board + +## Overview + +A Next.js 16 single-page app rendering a Kanban board with drag-and-drop, inline column renaming, and card CRUD. Built with React 19, Tailwind CSS v4, and @dnd-kit. + +## Tech Stack + +- Next.js 16 (App Router), React 19, TypeScript (strict) +- Tailwind CSS v4 (PostCSS plugin, no tailwind.config.js) +- @dnd-kit/core + @dnd-kit/sortable for drag-and-drop +- Vitest + Testing Library for unit/integration tests +- Playwright for e2e tests + +## Folder Structure + +``` +src/ + app/ + layout.tsx -- Root layout (fonts, metadata) + page.tsx -- Home page, renders + globals.css -- CSS custom properties, Tailwind v4 import + components/ + KanbanBoard.tsx -- State owner, DndContext provider + KanbanColumn.tsx -- Droppable column with inline title edit + KanbanCard.tsx -- Sortable/draggable card + KanbanCardPreview.tsx -- Static card in DragOverlay + NewCardForm.tsx -- Inline form to add a card + lib/ + kanban.ts -- Types (BoardData, Column, Card), seed data, moveCard(), createId() + test/ + setup.ts -- jest-dom matchers + vitest.d.ts -- Type references +tests/ + kanban.spec.ts -- Playwright e2e tests +``` + +## State Management + +All state lives in KanbanBoard via React useState. No external state library. + +- `board` (BoardData): columns[] + cards lookup map +- `activeCardId` (string | null): tracks dragged card for DragOverlay + +Pure logic (moveCard) is extracted into lib/kanban.ts, decoupled from React. + +## Data Model + +- BoardData: { columns: Column[], cards: Record } +- Column: { id, title, cardIds[] } -- cardIds is the canonical sort order +- Card: { id, title, details } + +Normalized structure: columns reference cards by ID, cards live in a flat map. + +## Testing + +- Unit/integration: `vitest` (jsdom), files in `src/**/*.{test,spec}.{ts,tsx}` +- E2e: `playwright`, files in `tests/*.spec.ts` +- Coverage: v8 provider, text + html output + +## Design Tokens (CSS custom properties) + +- Accent Turquoise: #00CCA2 +- Dark Teal Primary: #132E35 +- Gray Text: #888888 diff --git a/frontend/next.config.ts b/frontend/next.config.ts index e9ffa308..65c102b9 100644 --- a/frontend/next.config.ts +++ b/frontend/next.config.ts @@ -1,7 +1,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - /* config options here */ + output: "export", }; export default nextConfig; diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css index fe9d007b..abfa2458 100644 --- a/frontend/src/app/globals.css +++ b/frontend/src/app/globals.css @@ -1,20 +1,18 @@ @import "tailwindcss"; :root { - --accent-yellow: #ecad0a; - --primary-blue: #209dd7; - --secondary-purple: #753991; - --navy-dark: #032147; + --accent-turquoise: #00CCA2; + --dark-teal: #132E35; --gray-text: #888888; --surface: #f7f8fb; --surface-strong: #ffffff; - --stroke: rgba(3, 33, 71, 0.08); - --shadow: 0 18px 40px rgba(3, 33, 71, 0.12); + --stroke: rgba(19, 46, 53, 0.08); + --shadow: 0 18px 40px rgba(19, 46, 53, 0.12); } @theme inline { --color-background: var(--surface); - --color-foreground: var(--navy-dark); + --color-foreground: var(--dark-teal); --font-sans: var(--font-body); } @@ -24,7 +22,7 @@ body { background: var(--surface); - color: var(--navy-dark); + color: var(--dark-teal); font-family: var(--font-body), "Segoe UI", sans-serif; margin: 0; } diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index e7c512b8..c390ac27 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -1,5 +1,31 @@ +"use client"; + +import { AuthProvider, useAuth } from "@/lib/auth"; import { KanbanBoard } from "@/components/KanbanBoard"; +import { LoginPage } from "@/components/LoginPage"; + +const AppContent = () => { + const { username, loading } = useAuth(); + + if (loading) { + return ( +
+

Loading...

+
+ ); + } + + if (!username) { + return ; + } -export default function Home() { return ; +}; + +export default function Home() { + return ( + + + + ); } diff --git a/frontend/src/components/ChatSidebar.test.tsx b/frontend/src/components/ChatSidebar.test.tsx new file mode 100644 index 00000000..49ab18ec --- /dev/null +++ b/frontend/src/components/ChatSidebar.test.tsx @@ -0,0 +1,109 @@ +import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { ChatSidebar } from "@/components/ChatSidebar"; + +const mockFetch = vi.fn(); +vi.stubGlobal("fetch", mockFetch); + +const jsonOk = (data: unknown) => + Promise.resolve({ ok: true, json: () => Promise.resolve(data) }); + +describe("ChatSidebar", () => { + beforeEach(() => { + mockFetch.mockReset(); + }); + + it("renders the toggle button", () => { + render(); + expect(screen.getByRole("button", { name: /open chat/i })).toBeInTheDocument(); + }); + + it("opens the sidebar when toggle is clicked", async () => { + render(); + await userEvent.click(screen.getByRole("button", { name: /open chat/i })); + expect(screen.getByText("AI Assistant")).toBeInTheDocument(); + expect(screen.getByPlaceholderText(/ask the ai/i)).toBeInTheDocument(); + }); + + it("closes the sidebar when close button is clicked", async () => { + render(); + await userEvent.click(screen.getByRole("button", { name: /open chat/i })); + await userEvent.click(screen.getByRole("button", { name: /close sidebar/i })); + // Sidebar is hidden via CSS translate, not removed from DOM + const aside = screen.getByText("AI Assistant").closest("aside"); + expect(aside?.className).toContain("translate-x-full"); + }); + + it("sends a message and displays the AI response", async () => { + mockFetch.mockImplementation((url: string) => { + if (url.includes("/ai/chat")) return jsonOk({ message: "I added a card!", board_updated: false }); + return jsonOk({}); + }); + + render(); + await userEvent.click(screen.getByRole("button", { name: /open chat/i })); + + const input = screen.getByPlaceholderText(/ask the ai/i); + await userEvent.type(input, "Add a card"); + await userEvent.click(screen.getByRole("button", { name: /send/i })); + + expect(await screen.findByText("Add a card")).toBeInTheDocument(); + expect(await screen.findByText("I added a card!")).toBeInTheDocument(); + }); + + it("shows board updated indicator when AI updates board", async () => { + mockFetch.mockImplementation((url: string) => { + if (url.includes("/ai/chat")) return jsonOk({ message: "Done!", board_updated: true }); + return jsonOk({}); + }); + + render(); + await userEvent.click(screen.getByRole("button", { name: /open chat/i })); + + const input = screen.getByPlaceholderText(/ask the ai/i); + await userEvent.type(input, "Move card to done"); + await userEvent.click(screen.getByRole("button", { name: /send/i })); + + expect(await screen.findByText("Board updated")).toBeInTheDocument(); + }); + + it("calls onBoardUpdate when board is updated", async () => { + const onBoardUpdate = vi.fn(); + mockFetch.mockImplementation((url: string) => { + if (url.includes("/ai/chat")) return jsonOk({ message: "Updated!", board_updated: true }); + return jsonOk({}); + }); + + render(); + await userEvent.click(screen.getByRole("button", { name: /open chat/i })); + + const input = screen.getByPlaceholderText(/ask the ai/i); + await userEvent.type(input, "Reorganize"); + await userEvent.click(screen.getByRole("button", { name: /send/i })); + + expect(await screen.findByText("Updated!")).toBeInTheDocument(); + expect(onBoardUpdate).toHaveBeenCalled(); + }); + + it("shows error message when API fails", async () => { + mockFetch.mockImplementation((url: string) => { + if (url.includes("/ai/chat")) return Promise.resolve({ ok: false, json: () => Promise.resolve({}) }); + return jsonOk({}); + }); + + render(); + await userEvent.click(screen.getByRole("button", { name: /open chat/i })); + + const input = screen.getByPlaceholderText(/ask the ai/i); + await userEvent.type(input, "Hello"); + await userEvent.click(screen.getByRole("button", { name: /send/i })); + + expect(await screen.findByText(/something went wrong/i)).toBeInTheDocument(); + }); + + it("disables send button when input is empty", async () => { + render(); + await userEvent.click(screen.getByRole("button", { name: /open chat/i })); + expect(screen.getByRole("button", { name: /send/i })).toBeDisabled(); + }); +}); diff --git a/frontend/src/components/ChatSidebar.tsx b/frontend/src/components/ChatSidebar.tsx new file mode 100644 index 00000000..6f2acba7 --- /dev/null +++ b/frontend/src/components/ChatSidebar.tsx @@ -0,0 +1,163 @@ +"use client"; + +import { useState, useRef, useEffect, type FormEvent } from "react"; + +type ChatMessage = { + role: "user" | "assistant"; + content: string; + boardUpdated?: boolean; +}; + +type ChatSidebarProps = { + onBoardUpdate?: () => void; +}; + +export const ChatSidebar = ({ onBoardUpdate }: ChatSidebarProps) => { + const [isOpen, setIsOpen] = useState(false); + const [messages, setMessages] = useState([]); + const [input, setInput] = useState(""); + const [sending, setSending] = useState(false); + const messagesEndRef = useRef(null); + + useEffect(() => { + messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); + }, [messages]); + + const handleSend = async (e: FormEvent) => { + e.preventDefault(); + const text = input.trim(); + if (!text || sending) return; + + setInput(""); + setMessages((prev) => [...prev, { role: "user", content: text }]); + setSending(true); + + try { + const res = await fetch("/api/ai/chat", { + method: "POST", + headers: { "Content-Type": "application/json" }, + credentials: "include", + body: JSON.stringify({ message: text }), + }); + if (!res.ok) throw new Error("Chat request failed"); + const data = await res.json(); + + setMessages((prev) => [ + ...prev, + { + role: "assistant", + content: data.message, + boardUpdated: data.board_updated, + }, + ]); + + if (data.board_updated && onBoardUpdate) { + onBoardUpdate(); + } + } catch { + setMessages((prev) => [ + ...prev, + { role: "assistant", content: "Sorry, something went wrong. Please try again." }, + ]); + } finally { + setSending(false); + } + }; + + return ( + <> + {/* Toggle button */} + + + {/* Sidebar panel */} + + + ); +}; diff --git a/frontend/src/components/KanbanBoard.test.tsx b/frontend/src/components/KanbanBoard.test.tsx index 833fcb88..171d5216 100644 --- a/frontend/src/components/KanbanBoard.test.tsx +++ b/frontend/src/components/KanbanBoard.test.tsx @@ -1,17 +1,68 @@ -import { render, screen, within } from "@testing-library/react"; +import { render, screen, within, act } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { KanbanBoard } from "@/components/KanbanBoard"; +import { AuthProvider } from "@/lib/auth"; + +const mockFetch = vi.fn(); +vi.stubGlobal("fetch", mockFetch); + +const jsonOk = (data: unknown) => + Promise.resolve({ ok: true, json: () => Promise.resolve(data) }); + +const jsonFail = () => + Promise.resolve({ ok: false, json: () => Promise.resolve(null) }); + +const apiBoard = { + id: "board-1", + title: "My Board", + columns: [ + { id: "col-backlog", title: "Backlog", position: 0, cards: [ + { id: "card-1", title: "Align roadmap themes", details: "Draft quarterly themes.", position: 0 }, + { id: "card-2", title: "Gather customer signals", details: "Review support tags.", position: 1 }, + ]}, + { id: "col-discovery", title: "Discovery", position: 1, cards: [ + { id: "card-3", title: "Prototype analytics view", details: "Sketch layouts.", position: 0 }, + ]}, + { id: "col-progress", title: "In Progress", position: 2, cards: [ + { id: "card-4", title: "Refine status language", details: "Standardize labels.", position: 0 }, + { id: "card-5", title: "Design card layout", details: "Add hierarchy.", position: 1 }, + ]}, + { id: "col-review", title: "Review", position: 3, cards: [ + { id: "card-6", title: "QA micro-interactions", details: "Verify hover states.", position: 0 }, + ]}, + { id: "col-done", title: "Done", position: 4, cards: [ + { id: "card-7", title: "Ship marketing page", details: "Final copy approved.", position: 0 }, + { id: "card-8", title: "Close onboarding sprint", details: "Document release notes.", position: 1 }, + ]}, + ], +}; + +const renderBoard = () => { + mockFetch.mockImplementation((url: string) => { + if (url.includes("/auth/me")) return jsonOk({ username: "user" }); + if (url.includes("/api/boards") && !url.includes("/cards") && !url.includes("/columns")) return jsonOk(apiBoard); + if (url.includes("/auth/logout")) return jsonOk({}); + // Board mutations + return jsonOk({ detail: "ok" }); + }); + return render( + + + + ); +}; const getFirstColumn = () => screen.getAllByTestId(/column-/i)[0]; describe("KanbanBoard", () => { - it("renders five columns", () => { - render(); - expect(screen.getAllByTestId(/column-/i)).toHaveLength(5); + it("renders five columns from API data", async () => { + renderBoard(); + expect(await screen.findAllByTestId(/column-/i)).toHaveLength(5); }); - it("renames a column", async () => { - render(); + it("renames a column and calls API", async () => { + renderBoard(); + await screen.findAllByTestId(/column-/i); const column = getFirstColumn(); const input = within(column).getByLabelText("Column title"); await userEvent.clear(input); @@ -19,28 +70,54 @@ describe("KanbanBoard", () => { expect(input).toHaveValue("New Name"); }); - it("adds and removes a card", async () => { - render(); + it("adds and removes a card via API", async () => { + renderBoard(); + await screen.findAllByTestId(/column-/i); const column = getFirstColumn(); - const addButton = within(column).getByRole("button", { - name: /add a card/i, - }); + const addButton = within(column).getByRole("button", { name: /add a card/i }); await userEvent.click(addButton); - const titleInput = within(column).getByPlaceholderText(/card title/i); - await userEvent.type(titleInput, "New card"); - const detailsInput = within(column).getByPlaceholderText(/details/i); - await userEvent.type(detailsInput, "Notes"); - + await userEvent.type(within(column).getByPlaceholderText(/card title/i), "New card"); + await userEvent.type(within(column).getByPlaceholderText(/details/i), "Notes"); await userEvent.click(within(column).getByRole("button", { name: /add card/i })); expect(within(column).getByText("New card")).toBeInTheDocument(); - const deleteButton = within(column).getByRole("button", { - name: /delete new card/i, - }); + const deleteButton = within(column).getByRole("button", { name: /delete new card/i }); await userEvent.click(deleteButton); expect(within(column).queryByText("New card")).not.toBeInTheDocument(); }); + + it("adds a card with default details when details left empty", async () => { + renderBoard(); + await screen.findAllByTestId(/column-/i); + const column = getFirstColumn(); + await userEvent.click(within(column).getByRole("button", { name: /add a card/i })); + await userEvent.type(within(column).getByPlaceholderText(/card title/i), "Quick task"); + await userEvent.click(within(column).getByRole("button", { name: /add card/i })); + + expect(within(column).getByText("No details yet.")).toBeInTheDocument(); + }); + + it("cancels adding a card", async () => { + renderBoard(); + await screen.findAllByTestId(/column-/i); + const column = getFirstColumn(); + await userEvent.click(within(column).getByRole("button", { name: /add a card/i })); + await userEvent.type(within(column).getByPlaceholderText(/card title/i), "Discarded"); + await userEvent.click(within(column).getByRole("button", { name: /cancel/i })); + + expect(within(column).queryByText("Discarded")).not.toBeInTheDocument(); + }); + + it("shows loading state before board loads", () => { + mockFetch.mockImplementation(() => new Promise(() => {})); + render( + + + + ); + expect(screen.getByText(/loading board/i)).toBeInTheDocument(); + }); }); diff --git a/frontend/src/components/KanbanBoard.tsx b/frontend/src/components/KanbanBoard.tsx index dc6bf5fb..f784bdb8 100644 --- a/frontend/src/components/KanbanBoard.tsx +++ b/frontend/src/components/KanbanBoard.tsx @@ -1,6 +1,6 @@ "use client"; -import { useMemo, useState } from "react"; +import { useMemo, useState, useEffect, useCallback } from "react"; import { DndContext, DragOverlay, @@ -13,11 +13,20 @@ import { } from "@dnd-kit/core"; import { KanbanColumn } from "@/components/KanbanColumn"; import { KanbanCardPreview } from "@/components/KanbanCardPreview"; -import { createId, initialData, moveCard, type BoardData } from "@/lib/kanban"; +import { ChatSidebar } from "@/components/ChatSidebar"; +import { createId, initialData, moveCard, apiToBoardData, type BoardData } from "@/lib/kanban"; +import { useAuth } from "@/lib/auth"; + +async function apiFetch(url: string, options?: RequestInit): Promise { + const res = await fetch(url, { ...options, credentials: "include" }); + if (!res.ok) throw new Error(`API error: ${res.status}`); + return res.json(); +} export const KanbanBoard = () => { const [board, setBoard] = useState(() => initialData); const [activeCardId, setActiveCardId] = useState(null); + const [loading, setLoading] = useState(true); const sensors = useSensors( useSensor(PointerSensor, { @@ -26,12 +35,28 @@ export const KanbanBoard = () => { ); const cardsById = useMemo(() => board.cards, [board.cards]); + const { logout } = useAuth(); + + const fetchBoard = useCallback(async () => { + try { + const data = await apiFetch[0]>("/api/boards"); + setBoard(apiToBoardData(data)); + } catch { + // Fall back to initial data if API fails + } finally { + setLoading(false); + } + }, []); + + useEffect(() => { + fetchBoard(); + }, [fetchBoard]); const handleDragStart = (event: DragStartEvent) => { setActiveCardId(event.active.id as string); }; - const handleDragEnd = (event: DragEndEvent) => { + const handleDragEnd = async (event: DragEndEvent) => { const { active, over } = event; setActiveCardId(null); @@ -39,28 +64,61 @@ export const KanbanBoard = () => { return; } + const cardId = active.id as string; + const overId = over.id as string; + + // Optimistic update + const prevBoard = board; setBoard((prev) => ({ ...prev, - columns: moveCard(prev.columns, active.id as string, over.id as string), + columns: moveCard(prev.columns, cardId, overId), })); + + // Find target column and position from the new state + const newColumns = moveCard(prevBoard.columns, cardId, overId); + const targetCol = newColumns.find((col) => col.cardIds.includes(cardId)); + if (!targetCol) return; + const targetPosition = targetCol.cardIds.indexOf(cardId); + + try { + await apiFetch(`/api/boards/cards/${cardId}/move`, { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ column_id: targetCol.id, position: targetPosition }), + }); + } catch { + setBoard(prevBoard); + } }; - const handleRenameColumn = (columnId: string, title: string) => { + const handleRenameColumn = async (columnId: string, title: string) => { + const prevColumns = board.columns; setBoard((prev) => ({ ...prev, columns: prev.columns.map((column) => column.id === columnId ? { ...column, title } : column ), })); + + try { + await apiFetch(`/api/boards/columns/${columnId}`, { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ title }), + }); + } catch { + setBoard((prev) => ({ ...prev, columns: prevColumns })); + } }; - const handleAddCard = (columnId: string, title: string, details: string) => { + const handleAddCard = async (columnId: string, title: string, details: string) => { const id = createId("card"); + const cardDetails = details || "No details yet."; setBoard((prev) => ({ ...prev, cards: { ...prev.cards, - [id]: { id, title, details: details || "No details yet." }, + [id]: { id, title, details: cardDetails }, }, columns: prev.columns.map((column) => column.id === columnId @@ -68,27 +126,48 @@ export const KanbanBoard = () => { : column ), })); + + try { + await apiFetch("/api/boards/cards", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ column_id: columnId, id, title, details: cardDetails }), + }); + } catch { + // Revert by refetching + fetchBoard(); + } }; - const handleDeleteCard = (columnId: string, cardId: string) => { - setBoard((prev) => { - return { - ...prev, - cards: Object.fromEntries( - Object.entries(prev.cards).filter(([id]) => id !== cardId) - ), - columns: prev.columns.map((column) => - column.id === columnId - ? { - ...column, - cardIds: column.cardIds.filter((id) => id !== cardId), - } - : column - ), - }; - }); + const handleDeleteCard = async (columnId: string, cardId: string) => { + const prevBoard = board; + setBoard((prev) => ({ + ...prev, + cards: Object.fromEntries( + Object.entries(prev.cards).filter(([id]) => id !== cardId) + ), + columns: prev.columns.map((column) => + column.id === columnId + ? { ...column, cardIds: column.cardIds.filter((id) => id !== cardId) } + : column + ), + })); + + try { + await apiFetch(`/api/boards/cards/${cardId}`, { method: "DELETE" }); + } catch { + setBoard(prevBoard); + } }; + if (loading) { + return ( +
+

Loading board...

+
+ ); + } + const activeCard = activeCardId ? cardsById[activeCardId] : null; return ( @@ -103,7 +182,7 @@ export const KanbanBoard = () => {

Single Board Kanban

-

+

Kanban Studio

@@ -115,18 +194,24 @@ export const KanbanBoard = () => {

Focus

-

+

One board. Five columns. Zero clutter.

+
{board.columns.map((column) => (
- + {column.title}
))} @@ -160,6 +245,7 @@ export const KanbanBoard = () => { +
); }; diff --git a/frontend/src/components/KanbanCard.tsx b/frontend/src/components/KanbanCard.tsx index 73564bc3..68e9d4a3 100644 --- a/frontend/src/components/KanbanCard.tsx +++ b/frontend/src/components/KanbanCard.tsx @@ -32,7 +32,7 @@ export const KanbanCard = ({ card, onDelete }: KanbanCardProps) => { >
-

+

{card.title}

@@ -42,7 +42,7 @@ export const KanbanCard = ({ card, onDelete }: KanbanCardProps) => { + +

+ ); +}; diff --git a/frontend/src/components/NewCardForm.tsx b/frontend/src/components/NewCardForm.tsx index 5f8a8be4..1b2243f7 100644 --- a/frontend/src/components/NewCardForm.tsx +++ b/frontend/src/components/NewCardForm.tsx @@ -30,7 +30,7 @@ export const NewCardForm = ({ onAdd }: NewCardFormProps) => { setFormState((prev) => ({ ...prev, title: event.target.value })) } placeholder="Card title" - className="w-full rounded-xl border border-[var(--stroke)] bg-white px-3 py-2 text-sm font-medium text-[var(--navy-dark)] outline-none transition focus:border-[var(--primary-blue)]" + className="w-full rounded-xl border border-[var(--stroke)] bg-white px-3 py-2 text-sm font-medium text-[var(--dark-teal)] outline-none transition focus:border-[var(--accent-turquoise)]" required />