diff --git a/.gitignore b/.gitignore
index 4da81b08..47256d70 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,12 @@
.env
backend/data/**
!backend/data/outputs/
-!backend/data/outputs/*.json
\ No newline at end of file
+!backend/data/outputs/*.json
+
+# Electron build artifacts
+electron/dist/
+electron/python-env/
+electron/node_modules/
+
+# Frontend build output
+frontend/dist/
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 6eb33b2d..fde97d56 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2026 ClusterLabs
+Copyright (c) 2026 Haik Decie
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 0904df32..2bac56bb 100644
--- a/README.md
+++ b/README.md
@@ -1,104 +1,242 @@
-# Open Swarm — Agent Orchestrator
+
+
+
-A locally-running React + FastAPI application for managing multiple Claude Code instances in parallel. Designed for power users who run multiple agents simultaneously and need a unified interface to monitor, control, and coordinate them.
+Open Swarm
+
+
+ An Army of AI Agents at Your Fingertips
+
+ A locally-running orchestrator for managing multiple Claude Code instances in parallel.
+
+ Launch, monitor, and coordinate entire swarms of coding agents from a single interface.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Why Open Swarm?
+
+Running Claude Code in a terminal works fine for one task. But when you're juggling five agents across different branches, approving tool calls in separate windows, and losing track of who's doing what — it falls apart fast.
+
+- **Parallel agents, one screen** — Launch as many Claude Code instances as you need, arranged on a spatial canvas you can pan and zoom freely
+- **Unified approval workflow** — Every tool-use request from every agent surfaces in one place. Approve or deny with a click or a keyboard shortcut.
+- **Full conversation control** — Edit prior messages to fork conversations, navigate between branches, resume closed sessions
+- **100% local** — Everything runs on your machine. No cloud relay, no telemetry, no third-party backend.
+
+
## Features
-- **Multi-agent management** — Launch and monitor multiple Claude Code instances side by side
-- **Git worktree isolation** — Each agent works on its own git worktree/branch to avoid conflicts
-- **Real-time streaming** — WebSocket-based streaming of agent messages and status updates
-- **HITL approvals** — Approve or deny tool usage requests from the dashboard or within each chat
-- **Message branching** — Edit prior messages to fork conversations, navigate between branches
-- **Prompt template library** — Reusable prompt templates with structured input fields, invoked via `/` commands
-- **Skills library** — Manage skills synced to the native `~/.claude/skills/` directory
-- **Tools library** — Define custom tool configurations (bash, MCP, Python)
-- **Keyboard shortcuts** — Navigate between agents and approve/deny requests without a mouse
-- **Diff viewer** — View uncommitted changes in each agent's worktree
+**Spatial Dashboard** — Infinite canvas with drag-and-drop agent cards, view cards, and embedded browser cards. Create multiple dashboards for different workspaces.
+
+**Agent Chat** — Full streaming chat interface powered by WebSockets. Real-time token output, cost tracking per session, and persistent history that survives restarts.
+
+**Human-in-the-Loop Approvals** — Agents request permission before executing tools. Approve or deny individually, or batch-approve from the dashboard. Configurable per-tool permissions (always allow, ask, deny).
+
+**Message Branching** — Edit any prior message to fork the conversation. Navigate freely between branches without losing context.
+
+**Prompt Templates** — Build reusable templates with structured input fields. Invoke them inline via `/` slash commands.
+
+**Skills Library** — Manage skills that sync directly to `~/.claude/skills/`. Browse and install from the official Anthropic skills marketplace.
+
+**Tools Library** — Configure MCP tool servers (stdio, HTTP, SSE) with automatic tool discovery. Browse the MCP registry and Google's catalog with GitHub star counts. Includes Google Workspace OAuth integration.
+
+**Agent Modes** — Five built-in modes (Agent, Ask, Plan, View Builder, Skill Builder) plus custom user-defined modes with configurable system prompts and tool restrictions.
+
+**Views & Outputs** — Create interactive HTML/JS/CSS artifacts rendered in iframes. Supports vibe coding (LLM-generates the view), backend Python execution, auto-run with LLM-generated data, and agent-driven data gathering.
+
+**Git Worktree Isolation** — Each agent operates in its own git worktree and branch, preventing conflicts between parallel workstreams.
+
+**Diff Viewer** — Inspect uncommitted changes in any agent's worktree without leaving the app.
+
+**Cost Tracking** — Real-time USD spend tracking per agent session.
+
+**Dark & Light Themes** — Full theme support with Claude-inspired design tokens.
+
+**Keyboard Shortcuts** — Navigate between agents, approve/deny requests, and switch pages without touching a mouse.
+
+
+
+## Quick Start
+
+### Desktop App
+
+Download the latest release for macOS from [GitHub Releases](https://github.com/openswarm-ai/openswarm/releases).
+
+> Windows and Linux builds are planned but not yet available.
+
+### Development Setup
+
+**Prerequisites:** Python 3.11+, Node.js 18+, Git
+
+```bash
+git clone https://github.com/openswarm-ai/openswarm.git
+cd openswarm
+bash run.sh
+```
+
+This starts the backend (port 8324), frontend (port 3000), and Electron shell together. Once running, set your Anthropic API key in the in-app Settings page.
+
+To run services individually:
+
+```bash
+bash backend/run.sh # API at http://localhost:8324 — docs at /docs
+bash frontend/run.sh # App at http://localhost:3000
+```
+
+
## Architecture
```
-Frontend (React/TypeScript :3000) Backend (FastAPI/Python :8324)
-┌─────────────────────────────┐ ┌──────────────────────────────┐
-│ Dashboard │◄────►│ REST API (/api/*) │
-│ Agent Chat (per session) │ │ WebSocket (/ws/*) │
-│ Templates / Skills / Tools │ │ Agent Manager │
-│ Slash Command Picker │ │ └─ Claude Agent SDK │
-│ Keyboard Shortcuts │ │ Worktree Manager │
-│ Diff Viewer │ │ Library Storage (JSON/files)│
-└─────────────────────────────┘ └──────────────────────────────┘
+Electron Shell (desktop wrapper, auto-updater)
+├─────────────────────────────────────────────────────────────────────┐
+│ │
+│ Frontend (React/TypeScript :3000) Backend (FastAPI :8324) │
+│ ┌───────────────────────────────┐ ┌───────────────────────┐ │
+│ │ Spatial Dashboard Canvas │◄────►│ REST API (/api/*) │ │
+│ │ Agent Chat (streaming) │ │ WebSocket (/ws/*) │ │
+│ │ Templates / Skills / Tools │ WS │ Agent Manager │ │
+│ │ Modes / Views / Commands │◄────►│ └─ claude-agent-sdk│ │
+│ │ Settings │ │ MCP Tool Discovery │ │
+│ │ Redux Toolkit (state) │ │ JSON File Storage │ │
+│ └───────────────────────────────┘ └───────────────────────┘ │
+│ │
+└─────────────────────────────────────────────────────────────────────┘
```
-## Quick Start
+
-### Prerequisites
+## Configuration
-- Python 3.11+
-- Node.js 18+
-- Git
-- An Anthropic API key (for real agent usage) — `export ANTHROPIC_API_KEY=...`
+The Anthropic API key is configured in-app via the **Settings** page — no environment variable needed for normal usage.
-### Backend
+For advanced configuration, copy `backend/.env.example` to `backend/.env`:
-```bash
-bash backend/run/dev.sh
-# API runs at http://localhost:8324
-# Docs at http://localhost:8324/docs
-```
+| Variable | Purpose |
+|----------|---------|
+| `BACKEND_PORT` | Backend server port (default: `8324`) |
+| `GOOGLE_OAUTH_CLIENT_ID` | Google Workspace integration (Gmail, Calendar, Drive) |
+| `GOOGLE_OAUTH_CLIENT_SECRET` | Google Workspace integration |
+| `APPLE_ID` | macOS code signing & notarization (release builds only) |
+| `APPLE_APP_SPECIFIC_PASSWORD` | macOS notarization (release builds only) |
+| `APPLE_TEAM_ID` | macOS code signing (release builds only) |
+| `GH_TOKEN` | GitHub Releases publishing (release builds only) |
-### Frontend
-
-```bash
-bash frontend/run/dev.sh
-# App runs at http://localhost:3000
-```
-
-### Mock Mode
-
-If `claude-agent-sdk` is not installed, the backend runs in **mock mode** — agents simulate tool calls and responses so you can develop and test the UI without an API key.
+
## Keyboard Shortcuts
| Key | Action |
|-----|--------|
-| `d` | Go to Dashboard |
-| `t` | Go to Templates |
-| `1`–`9` | Open agent by position |
+| `D` | Go to Dashboard |
+| `T` | Go to Templates |
+| `1` – `9` | Open agent by position |
| `Shift+A` | Approve all pending requests |
| `Shift+D` | Deny all pending requests |
| `?` | Show shortcuts help |
-## Slash Commands
+Type `/` in the chat input to invoke prompt templates and skills as slash commands.
-In the chat input, type `/` to invoke templates and skills:
-- `/template-name` — Opens the template's input modal
-- `/skill-name` — Inserts the skill content into the message
+
## Project Structure
```
backend/
apps/
- agents/ — Agent lifecycle, WebSocket, worktree management
- templates/ — Prompt template CRUD (JSON file storage)
- skills/ — Skills CRUD (synced to ~/.claude/skills/)
- tools_lib/ — Tool definitions CRUD (JSON file storage)
- health/ — Health check endpoint
- config/ — FastAPI app configuration
- data/ — Persistent JSON file storage (sessions, dashboards, settings, templates, tools, etc.)
+ agents/ Agent lifecycle, streaming, worktree management
+ dashboards/ Dashboard CRUD and layout persistence
+ dashboard_layout/ Card positions and spatial canvas state
+ templates/ Prompt template CRUD
+ skills/ Skills CRUD (synced to ~/.claude/skills/)
+ tools_lib/ MCP tool configuration and discovery
+ modes/ Agent mode definitions
+ outputs/ Views/outputs, vibe coding, Python executor
+ settings/ App settings and file browser
+ health/ Health check endpoint
+ mcp_registry/ MCP server registry proxy
+ skill_registry/ Anthropic skills marketplace proxy
+ config/ FastAPI app configuration
+ data/ Persistent JSON file storage
frontend/
src/
app/
- components/ — AppShell, NewAgentModal, SlashCommandPicker, KeyboardShortcutsHelp
+ components/ AppShell, Layout, shared UI
pages/
- Dashboard/ — Agent overview grid with live status
- AgentChat/ — Full chat UI with streaming, HITL, branching, diff viewer
- Templates/ — Template library with editor
- Skills/ — Skills library with editor
- Tools/ — Tools library with editor
+ Dashboard/ Spatial canvas with agent/view/browser cards
+ AgentChat/ Streaming chat, HITL approvals, branching, diff viewer
+ Templates/ Template library with structured input fields
+ Skills/ Skills library, skill builder, registry browser
+ Tools/ Tool config, MCP discovery, OAuth, registry browser
+ Modes/ Mode definitions with system prompts
+ Views/ Output artifacts, code editor, vibe coding
+ Commands/ Keyboard shortcuts reference
+ Settings/ App configuration
shared/
- state/ — Redux slices (agents, templates, skills, tools)
- ws/ — WebSocket manager
- hooks/ — Custom hooks (keyboard shortcuts)
+ state/ Redux slices (agents, dashboards, templates, skills, tools, modes, etc.)
+ ws/ WebSocket manager
+ hooks/ Custom hooks
+ styles/ Theme tokens, global styles
+
+electron/
+ main.js Electron main process, auto-updater, Python env management
+ scripts/ Build and notarization scripts
+
+scripts/
+ build-app.sh Desktop app packaging (electron-builder)
+ build-python-env.sh Standalone Python 3.13 environment bundler
```
+
+
+
+## Tech Stack
+
+**Frontend** — React 18, TypeScript, Redux Toolkit, Material UI v7, CodeMirror 6, Framer Motion, React Router v7, Webpack 5
+
+**Backend** — FastAPI, Python 3.11+, Pydantic v2, claude-agent-sdk, Anthropic SDK, WebSockets, httpx
+
+**Desktop** — Electron 33, electron-builder, electron-updater (auto-updates via GitHub Releases)
+
+**Bundled Runtime** — Standalone Python 3.13 (via python-build-standalone) so end users don't need Python installed
+
+
+
+## Contributing
+
+Contributions are welcome. To get started:
+
+1. Fork the repository
+2. Create a feature branch (`git checkout -b feature/your-feature`)
+3. Make your changes
+4. Submit a pull request
+
+Please open an issue first for larger changes so we can discuss the approach.
+
+
+
+## Community
+
+- [Twitter / X](https://twitter.com/openswarm_ai)
+- [Discord](https://discord.gg/openswarm)
+- [Website](https://openswarm.ai)
+
+
+
+## License
+
+MIT — see [LICENSE](LICENSE) for details.
diff --git a/assets/icon.png b/assets/icon.png
new file mode 100644
index 00000000..8b9f8611
Binary files /dev/null and b/assets/icon.png differ
diff --git a/assets/screenshot.png b/assets/screenshot.png
new file mode 100644
index 00000000..4448cbe7
Binary files /dev/null and b/assets/screenshot.png differ
diff --git a/backend/.env.example b/backend/.env.example
index 4d293e35..ded015af 100644
--- a/backend/.env.example
+++ b/backend/.env.example
@@ -3,6 +3,17 @@
# =============================================================================
BACKEND_PORT=8324
-
GOOGLE_OAUTH_CLIENT_ID=your-google-oauth-client-id.apps.googleusercontent.com
GOOGLE_OAUTH_CLIENT_SECRET=your-google-oauth-client-secret
+
+# =============================================================================
+# macOS Code Signing & Notarization (required for ./scripts/build-app.sh --publish)
+# =============================================================================
+APPLE_ID=your-apple-id@example.com
+APPLE_APP_SPECIFIC_PASSWORD=xxxx-xxxx-xxxx-xxxx
+APPLE_TEAM_ID=ABCDE12345
+
+# =============================================================================
+# GitHub Releases (required for --publish)
+# =============================================================================
+GH_TOKEN=ghp_your-github-personal-access-token
diff --git a/backend/ENV_README.md b/backend/ENV_README.md
new file mode 100644
index 00000000..ec04f287
--- /dev/null
+++ b/backend/ENV_README.md
@@ -0,0 +1,227 @@
+# Environment Variables Setup Guide
+
+Copy `.env.example` to `.env` and fill in the values below. This guide walks you through getting every single one.
+
+```bash
+cp .env.example .env
+```
+
+---
+
+## `BACKEND_PORT`
+
+The port the backend server runs on. The default is fine — only change it if something else is already using port 8324.
+
+```
+BACKEND_PORT=8324
+```
+
+---
+
+## `GOOGLE_OAUTH_CLIENT_ID` & `GOOGLE_OAUTH_CLIENT_SECRET`
+
+These let users sign in with their Google account.
+
+### Step 1 — Go to Google Cloud Console
+
+1. Open https://console.cloud.google.com/
+2. Sign in with your Google account (or create one).
+
+### Step 2 — Create a project
+
+1. Click the project dropdown at the very top of the page (it says "Select a project" or shows your current project name).
+2. Click **New Project** in the top-right of the popup.
+3. Name it something like `OpenSwarm`.
+4. Click **Create**.
+5. Wait a few seconds, then click the project dropdown again and select your new `OpenSwarm` project.
+
+### Step 3 — Enable the Google+ API (required for OAuth)
+
+1. In the left sidebar, click **APIs & Services** > **Library**.
+2. Search for `Google+ API` (or `Google Identity`).
+3. Click on it, then click **Enable**.
+
+### Step 4 — Configure the OAuth consent screen
+
+1. In the left sidebar, click **APIs & Services** > **OAuth consent screen**.
+2. Select **External** (unless you're inside a Google Workspace org and only want internal users).
+3. Click **Create**.
+4. Fill in the required fields:
+ - **App name**: `OpenSwarm`
+ - **User support email**: your email
+ - **Developer contact email**: your email
+5. Click **Save and Continue**.
+6. On the **Scopes** page, click **Add or Remove Scopes**.
+ - Check `email` and `profile` (the `openid` scope is added automatically).
+ - Click **Update**, then **Save and Continue**.
+7. On the **Test users** page, click **Add Users**, enter your own email, click **Add**, then **Save and Continue**.
+8. Click **Back to Dashboard**.
+
+### Step 5 — Create OAuth credentials
+
+1. In the left sidebar, click **APIs & Services** > **Credentials**.
+2. Click **+ Create Credentials** at the top.
+3. Select **OAuth client ID**.
+4. For **Application type**, select **Web application**.
+5. **Name**: `OpenSwarm` (or anything you want).
+6. Under **Authorized redirect URIs**, click **+ Add URI** and add:
+ ```
+ http://localhost:8324/api/auth/google/callback
+ ```
+ (Replace `8324` with your `BACKEND_PORT` if you changed it.)
+7. Click **Create**.
+
+### Step 6 — Copy the values
+
+A popup appears with your credentials:
+
+- **Client ID** — copy this into `GOOGLE_OAUTH_CLIENT_ID`
+- **Client Secret** — copy this into `GOOGLE_OAUTH_CLIENT_SECRET`
+
+```
+GOOGLE_OAUTH_CLIENT_ID=123456789-xxxxxxxxx.apps.googleusercontent.com
+GOOGLE_OAUTH_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxxxxx
+```
+
+---
+
+## `APPLE_ID`
+
+This is the email address you use to sign in to your Apple Developer account.
+
+1. If you don't have one, go to https://developer.apple.com/programs/ and click **Enroll**. It costs $99/year.
+2. Once enrolled, your `APPLE_ID` is just the email you signed up with.
+
+```
+APPLE_ID=you@example.com
+```
+
+---
+
+## `APPLE_TEAM_ID`
+
+Your 10-character Apple Developer team identifier.
+
+1. Go to https://developer.apple.com/account
+2. Sign in.
+3. Look at the top-right — your name is shown. Click it, or scroll down.
+4. Under **Membership Details** (or at https://developer.apple.com/account#MembershipDetailsCard), you'll see **Team ID**.
+5. It looks like `ABCDE12345`. Copy it.
+
+```
+APPLE_TEAM_ID=ABCDE12345
+```
+
+---
+
+## `APPLE_APP_SPECIFIC_PASSWORD`
+
+Apple doesn't let you use your regular password for automated tools. You need to generate a special one-time password.
+
+### Step 1 — Turn on two-factor authentication (if you haven't already)
+
+1. On your Mac, go to **System Settings** > **[your name]** > **Sign-In & Security** > **Two-Factor Authentication**.
+2. Turn it on and follow the prompts.
+
+### Step 2 — Generate the app-specific password
+
+1. Go to https://account.apple.com/
+2. Sign in with your Apple ID.
+3. In the **Sign-In and Security** section, click **App-Specific Passwords**.
+4. Click **Generate an app-specific password** (or the **+** button).
+5. Enter a label like `OpenSwarm Notarization`.
+6. Click **Create**.
+7. Apple shows you a password in the format `xxxx-xxxx-xxxx-xxxx`. **Copy it now** — you can't see it again.
+
+```
+APPLE_APP_SPECIFIC_PASSWORD=abcd-efgh-ijkl-mnop
+```
+
+---
+
+## macOS Signing Certificate (no env var, but required)
+
+Before you can sign and notarize, you need a **Developer ID Application** certificate installed in your macOS Keychain. This is what Apple uses to verify that the app was built by you.
+
+### Step 1 — Open Xcode
+
+1. Open **Xcode** on your Mac (install it from the Mac App Store if you don't have it).
+2. Go to **Xcode** menu > **Settings** (or **Preferences** on older versions).
+3. Click the **Accounts** tab.
+4. Click **+** in the bottom-left and sign in with your Apple ID.
+
+### Step 2 — Create the certificate
+
+1. Select your account in the list, then click **Manage Certificates...** in the bottom-right.
+2. Click the **+** in the bottom-left of the popup.
+3. Select **Developer ID Application**.
+4. Click **Create**.
+
+That's it — the certificate is now in your macOS Keychain. `electron-builder` will auto-discover it during builds. You don't need to set any env var for this.
+
+### Alternative — manual method (without Xcode)
+
+1. Go to https://developer.apple.com/account/resources/certificates/list
+2. Click the **+** button.
+3. Select **Developer ID Application**, click **Continue**.
+4. You'll be asked to upload a **Certificate Signing Request (CSR)**:
+ - Open **Keychain Access** on your Mac.
+ - In the menu bar: **Keychain Access** > **Certificate Assistant** > **Request a Certificate From a Certificate Authority**.
+ - Enter your email, leave CA Email blank, select **Saved to disk**, click **Continue**.
+ - Save the `.certSigningRequest` file.
+5. Upload that file on the Apple Developer page, click **Continue**.
+6. Download the `.cer` file.
+7. Double-click it — it installs into your Keychain.
+
+---
+
+## `GH_TOKEN`
+
+A GitHub Personal Access Token that lets the build script upload release artifacts to GitHub Releases.
+
+### Step 1 — Go to GitHub token settings
+
+1. Go to https://github.com/settings/tokens
+2. Sign in if needed.
+
+### Step 2 — Create a token
+
+1. Click **Generate new token** > **Generate new token (classic)**.
+2. **Note**: `OpenSwarm Releases` (or whatever you want).
+3. **Expiration**: pick a duration (90 days, or "No expiration" if you don't want to rotate it).
+4. **Scopes**: check the **`repo`** checkbox (this gives full access to your repositories, which is needed to create releases and upload assets).
+5. Click **Generate token** at the bottom.
+6. **Copy the token now** — it starts with `ghp_` and you won't be able to see it again.
+
+```
+GH_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+```
+
+---
+
+## Final `.env` example
+
+```
+BACKEND_PORT=8324
+
+GOOGLE_OAUTH_CLIENT_ID=123456789-xxxxxxxxx.apps.googleusercontent.com
+GOOGLE_OAUTH_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxxxxx
+
+APPLE_ID=you@example.com
+APPLE_APP_SPECIFIC_PASSWORD=abcd-efgh-ijkl-mnop
+APPLE_TEAM_ID=ABCDE12345
+
+GH_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+```
+
+---
+
+## Running a production build
+
+Once your `.env` is filled in, just run:
+
+```bash
+./scripts/build-app.sh --publish
+```
+
+The build script automatically loads `backend/.env`, so you don't need to source it yourself. This will build the app, sign it with your certificate, notarize it with Apple, and upload the `.dmg` and `.zip` to a GitHub Release.
diff --git a/backend/apps/agents/agent_manager.py b/backend/apps/agents/agent_manager.py
index 388db807..e6f06c51 100644
--- a/backend/apps/agents/agent_manager.py
+++ b/backend/apps/agents/agent_manager.py
@@ -2,6 +2,7 @@ import asyncio
import json
import logging
import os
+import sys
import time
from datetime import datetime
from uuid import uuid4
@@ -10,7 +11,6 @@ from typing import Optional
from backend.apps.agents.models import (
AgentConfig, AgentSession, Message, MessageBranch, ApprovalRequest, ToolGroupMeta,
)
-from backend.apps.agents.worktree_manager import WorktreeManager
from backend.apps.agents.ws_manager import ws_manager
from backend.apps.modes.modes import load_mode
from backend.apps.outputs.outputs import _load_all as load_all_outputs
@@ -22,16 +22,12 @@ from backend.apps.tools_lib.tools_lib import (
load_builtin_permissions,
refresh_google_token,
)
+from backend.config.paths import SESSIONS_DIR
logger = logging.getLogger(__name__)
os.environ.setdefault("CLAUDE_CODE_STREAM_CLOSE_TIMEOUT", "3600000")
-SESSIONS_DIR = os.path.join(
- os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
- "data", "sessions",
-)
-
def _save_session(session_id: str, doc_data: dict):
os.makedirs(SESSIONS_DIR, exist_ok=True)
@@ -72,9 +68,6 @@ FULL_TOOLS = [
"RenderOutput",
]
-REPO_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
-
-
def _get_denied_tool_names(tool) -> set[str]:
"""Return the set of MCP sub-tool names whose permission is 'deny'."""
return {
@@ -122,7 +115,6 @@ class AgentManager:
def __init__(self):
self.sessions: dict[str, AgentSession] = {}
self.tasks: dict[str, asyncio.Task] = {}
- self.worktree_mgr = WorktreeManager(REPO_ROOT)
def _resolve_mode(self, mode_id: str) -> tuple[list[str], str | None, str | None]:
"""Return (tools, system_prompt, default_folder) resolved from the mode store."""
@@ -246,10 +238,7 @@ class AgentManager:
async def launch_agent(self, config: AgentConfig) -> AgentSession:
session_id = uuid4().hex
- branch_name = f"agent-{session_id[:8]}"
-
- worktree_path = await self.worktree_mgr.create_worktree(branch_name)
-
+
mode_tools, _, mode_folder = self._resolve_mode(config.mode)
tools = mode_tools
@@ -258,7 +247,7 @@ class AgentManager:
config.target_directory
or mode_folder
or global_settings.default_folder
- or str(REPO_ROOT)
+ or os.path.expanduser("~")
)
if config.mode in ("view-builder", "skill-builder") and not config.target_directory:
@@ -271,8 +260,6 @@ class AgentManager:
name=config.name,
model=config.model,
mode=config.mode,
- worktree_path=worktree_path,
- branch_name=branch_name,
system_prompt=config.system_prompt,
allowed_tools=tools,
max_turns=config.max_turns,
@@ -561,6 +548,17 @@ class AgentManager:
mcp_servers = await self._build_mcp_servers(session.allowed_tools)
+ browser_server_path = os.path.join(
+ os.path.dirname(__file__), "browser_mcp_server.py"
+ )
+ backend_port = os.environ.get("OPENSWARM_PORT", "8324")
+ mcp_servers["openswarm-browser"] = {
+ "command": sys.executable,
+ "args": [browser_server_path],
+ "env": {"OPENSWARM_PORT": backend_port},
+ "type": "stdio",
+ }
+
effective_allowed = [
t for t in session.allowed_tools
if _builtin_perms.get(t, "always_allow") == "always_allow"
@@ -583,6 +581,8 @@ class AgentManager:
else:
effective_allowed.append(f"mcp__{name}__*")
+ effective_allowed.append("mcp__openswarm-browser__*")
+
options_kwargs = {
"model": session.model,
"can_use_tool": can_use_tool,
@@ -593,8 +593,9 @@ class AgentManager:
"allowed_tools": effective_allowed,
"include_partial_messages": True,
}
- if global_settings.anthropic_api_key:
- options_kwargs["env"] = {"ANTHROPIC_API_KEY": global_settings.anthropic_api_key}
+ if not global_settings.anthropic_api_key:
+ raise ValueError("Anthropic API key not configured. Set it in Settings.")
+ options_kwargs["env"] = {"ANTHROPIC_API_KEY": global_settings.anthropic_api_key}
if mcp_servers:
options_kwargs["mcp_servers"] = mcp_servers
if composed_prompt:
@@ -867,7 +868,7 @@ class AgentManager:
f"I've processed your request: \"{prompt}\"\n\n"
"This is a mock response because `claude-agent-sdk` is not installed. "
"Install it with `pip install claude-agent-sdk` to use real Claude Code instances.\n\n"
- f"The agent was configured with:\n- Model: {session.model}\n- Mode: {session.mode}\n- Worktree: {session.branch_name}"
+ f"The agent was configured with:\n- Model: {session.model}\n- Mode: {session.mode}"
)
asst_msg_id = uuid4().hex
await self._stream_text(session_id, asst_msg_id, asst_text)
@@ -946,7 +947,7 @@ class AgentManager:
task = asyncio.create_task(self._run_agent_loop(session_id, prompt, images=images, context_paths=context_paths, forced_tools=forced_tools, attached_skills=attached_skills))
self.tasks[session_id] = task
- async def stop_agent(self, session_id: str, remove_worktree: bool = False):
+ async def stop_agent(self, session_id: str):
"""Stop a running agent."""
task = self.tasks.get(session_id)
if task and not task.done():
@@ -964,9 +965,6 @@ class AgentManager:
"status": "stopped",
"session": session.model_dump(mode="json"),
})
-
- if remove_worktree and session and session.branch_name:
- await self.worktree_mgr.remove_worktree(session.branch_name)
def handle_approval(self, request_id: str, decision: dict):
"""Resolve a pending HITL approval."""
@@ -1039,10 +1037,9 @@ class AgentManager:
try:
import anthropic
global_settings = load_settings()
- client_kwargs = {}
- if global_settings.anthropic_api_key:
- client_kwargs["api_key"] = global_settings.anthropic_api_key
- client = anthropic.AsyncAnthropic(**client_kwargs)
+ if not global_settings.anthropic_api_key:
+ raise ValueError("API key not configured")
+ client = anthropic.AsyncAnthropic(api_key=global_settings.anthropic_api_key)
resp = await client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=30,
@@ -1084,10 +1081,9 @@ class AgentManager:
try:
import anthropic, json as _json
global_settings = load_settings()
- client_kwargs = {}
- if global_settings.anthropic_api_key:
- client_kwargs["api_key"] = global_settings.anthropic_api_key
- client = anthropic.AsyncAnthropic(**client_kwargs)
+ if not global_settings.anthropic_api_key:
+ raise ValueError("API key not configured")
+ client = anthropic.AsyncAnthropic(api_key=global_settings.anthropic_api_key)
tool_desc = "\n".join(
f"- {tc.get('tool', '?')}: {tc.get('input_summary', '')}" for tc in tool_calls
@@ -1171,7 +1167,7 @@ class AgentManager:
async def close_session(self, session_id: str) -> None:
"""Close a session: pause the agent if running, persist to JSON file,
- and remove from in-memory state. Worktree is kept on disk for resume."""
+ and remove from in-memory state."""
task = self.tasks.get(session_id)
if task and not task.done():
task.cancel()
@@ -1211,7 +1207,7 @@ class AgentManager:
logger.info(f"Session {session_id} closed and persisted")
async def delete_session(self, session_id: str) -> None:
- """Permanently delete a session: remove from memory, JSON file, worktree, and branch."""
+ """Permanently delete a session: remove from memory and JSON file."""
task = self.tasks.get(session_id)
if task and not task.done():
task.cancel()
@@ -1220,21 +1216,9 @@ class AgentManager:
except asyncio.CancelledError:
pass
- session = self.sessions.pop(session_id, None)
+ self.sessions.pop(session_id, None)
self.tasks.pop(session_id, None)
- branch_name: str | None = None
- if session:
- branch_name = session.branch_name
- else:
- data = _load_session_data(session_id)
- if data:
- branch_name = data.get("branch_name")
-
- if branch_name:
- await self.worktree_mgr.remove_worktree(branch_name)
- await self.worktree_mgr.delete_branch(branch_name)
-
_delete_session_file(session_id)
logger.info(f"Session {session_id} permanently deleted")
@@ -1249,17 +1233,6 @@ class AgentManager:
session = AgentSession(**data)
- if session.branch_name:
- worktree_path = os.path.join(self.worktree_mgr.worktrees_dir, session.branch_name)
- if not os.path.exists(worktree_path):
- try:
- worktree_path = await self.worktree_mgr.create_worktree(session.branch_name)
- except RuntimeError:
- new_branch = f"agent-{session_id[:8]}"
- worktree_path = await self.worktree_mgr.create_worktree(new_branch)
- session.branch_name = new_branch
- session.worktree_path = worktree_path
-
session.closed_at = None
self.sessions[session_id] = session
@@ -1349,21 +1322,6 @@ class AgentManager:
session.status = "stopped"
session.closed_at = None
session.pending_approvals = []
- if session.branch_name:
- worktree_path = os.path.join(
- self.worktree_mgr.worktrees_dir, session.branch_name
- )
- if not os.path.exists(worktree_path):
- try:
- worktree_path = await self.worktree_mgr.create_worktree(
- session.branch_name
- )
- except RuntimeError:
- logger.warning(
- f"Could not restore worktree for session {session.id}, skipping"
- )
- continue
- session.worktree_path = worktree_path
self.sessions[session.id] = session
_delete_session_file(sid)
logger.info(f"Restored session {session.id}")
diff --git a/backend/apps/agents/agents.py b/backend/apps/agents/agents.py
index 890ab856..462b8fde 100644
--- a/backend/apps/agents/agents.py
+++ b/backend/apps/agents/agents.py
@@ -13,7 +13,6 @@ logger = logging.getLogger(__name__)
@asynccontextmanager
async def agents_lifespan():
logger.info("Agents sub-app starting")
- await agent_manager.worktree_mgr.cleanup_all_worktrees()
await agent_manager.reconcile_on_startup()
await agent_manager.restore_all_sessions()
yield
@@ -61,9 +60,8 @@ async def send_message(session_id: str, body: dict):
return {"ok": True}
@agents.router.post("/sessions/{session_id}/stop")
-async def stop_agent(session_id: str, body: dict = {}):
- remove_worktree = body.get("remove_worktree", False)
- await agent_manager.stop_agent(session_id, remove_worktree=remove_worktree)
+async def stop_agent(session_id: str):
+ await agent_manager.stop_agent(session_id)
return {"ok": True}
@agents.router.post("/approval")
@@ -161,17 +159,3 @@ async def resume_session(session_id: str):
raise HTTPException(status_code=404, detail=str(e))
return {"session": session.model_dump(mode="json")}
-@agents.router.get("/worktrees")
-async def list_worktrees():
- worktrees = await agent_manager.worktree_mgr.list_worktrees()
- return {"worktrees": worktrees}
-
-@agents.router.get("/sessions/{session_id}/diff")
-async def get_session_diff(session_id: str):
- session = agent_manager.get_session(session_id)
- if not session:
- raise HTTPException(status_code=404, detail="Session not found")
- if not session.branch_name:
- return {"diff": ""}
- diff = await agent_manager.worktree_mgr.get_worktree_diff(session.branch_name)
- return {"diff": diff}
diff --git a/backend/apps/agents/browser_mcp_server.py b/backend/apps/agents/browser_mcp_server.py
new file mode 100644
index 00000000..382178aa
--- /dev/null
+++ b/backend/apps/agents/browser_mcp_server.py
@@ -0,0 +1,303 @@
+#!/usr/bin/env python3
+"""
+Minimal stdio MCP server that exposes browser interaction tools.
+
+Launched as a subprocess by the Claude Agent SDK. Proxies tool calls
+to the OpenSwarm backend via HTTP, which bridges them to the Electron
+frontend via WebSocket where the actual webview lives.
+"""
+
+import base64
+import json
+import sys
+import os
+import urllib.request
+import urllib.error
+from io import BytesIO
+
+try:
+ from PIL import Image
+ HAS_PIL = True
+except ImportError:
+ HAS_PIL = False
+
+BACKEND_PORT = os.environ.get("OPENSWARM_PORT", "8324")
+BACKEND_URL = f"http://127.0.0.1:{BACKEND_PORT}/api/browser/command"
+
+TOOLS = [
+ {
+ "name": "BrowserScreenshot",
+ "description": (
+ "Capture a screenshot of the browser page. Returns the screenshot as a "
+ "base64-encoded PNG image. Use this to see what is currently displayed."
+ ),
+ "inputSchema": {
+ "type": "object",
+ "properties": {
+ "browser_id": {
+ "type": "string",
+ "description": "The browser card ID to capture. Use the ID from the selected browser card context.",
+ },
+ },
+ "required": ["browser_id"],
+ },
+ },
+ {
+ "name": "BrowserGetText",
+ "description": (
+ "Get the visible text content of the browser page. Returns the page's "
+ "innerText (up to 15000 characters)."
+ ),
+ "inputSchema": {
+ "type": "object",
+ "properties": {
+ "browser_id": {
+ "type": "string",
+ "description": "The browser card ID.",
+ },
+ },
+ "required": ["browser_id"],
+ },
+ },
+ {
+ "name": "BrowserNavigate",
+ "description": "Navigate the browser to a URL.",
+ "inputSchema": {
+ "type": "object",
+ "properties": {
+ "browser_id": {
+ "type": "string",
+ "description": "The browser card ID.",
+ },
+ "url": {
+ "type": "string",
+ "description": "The URL to navigate to.",
+ },
+ },
+ "required": ["browser_id", "url"],
+ },
+ },
+ {
+ "name": "BrowserClick",
+ "description": (
+ "Click an element in the browser page identified by a CSS selector."
+ ),
+ "inputSchema": {
+ "type": "object",
+ "properties": {
+ "browser_id": {
+ "type": "string",
+ "description": "The browser card ID.",
+ },
+ "selector": {
+ "type": "string",
+ "description": "CSS selector of the element to click.",
+ },
+ },
+ "required": ["browser_id", "selector"],
+ },
+ },
+ {
+ "name": "BrowserType",
+ "description": (
+ "Type text into an input element in the browser page. Clears the "
+ "existing value first, then types the new text."
+ ),
+ "inputSchema": {
+ "type": "object",
+ "properties": {
+ "browser_id": {
+ "type": "string",
+ "description": "The browser card ID.",
+ },
+ "selector": {
+ "type": "string",
+ "description": "CSS selector of the input element.",
+ },
+ "text": {
+ "type": "string",
+ "description": "The text to type.",
+ },
+ },
+ "required": ["browser_id", "selector", "text"],
+ },
+ },
+ {
+ "name": "BrowserEvaluate",
+ "description": (
+ "Evaluate a JavaScript expression in the browser page and return the result. "
+ "The expression is run via executeJavaScript on the webview."
+ ),
+ "inputSchema": {
+ "type": "object",
+ "properties": {
+ "browser_id": {
+ "type": "string",
+ "description": "The browser card ID.",
+ },
+ "expression": {
+ "type": "string",
+ "description": "JavaScript expression to evaluate.",
+ },
+ },
+ "required": ["browser_id", "expression"],
+ },
+ },
+]
+
+
+def send_response(id_, result=None, error=None):
+ msg = {"jsonrpc": "2.0", "id": id_}
+ if error is not None:
+ msg["error"] = error
+ else:
+ msg["result"] = result
+ sys.stdout.write(json.dumps(msg) + "\n")
+ sys.stdout.flush()
+
+
+def send_notification(method, params=None):
+ msg = {"jsonrpc": "2.0", "method": method}
+ if params is not None:
+ msg["params"] = params
+ sys.stdout.write(json.dumps(msg) + "\n")
+ sys.stdout.flush()
+
+
+def call_backend(action: str, browser_id: str, params: dict | None = None) -> dict:
+ payload = json.dumps({
+ "action": action,
+ "browser_id": browser_id,
+ "params": params or {},
+ }).encode()
+ req = urllib.request.Request(
+ BACKEND_URL,
+ data=payload,
+ headers={"Content-Type": "application/json"},
+ method="POST",
+ )
+ try:
+ with urllib.request.urlopen(req, timeout=30) as resp:
+ return json.loads(resp.read().decode())
+ except urllib.error.HTTPError as e:
+ body = e.read().decode() if e.fp else str(e)
+ return {"error": f"HTTP {e.code}: {body}"}
+ except Exception as e:
+ return {"error": str(e)}
+
+
+MAX_IMAGE_B64_BYTES = 700_000
+
+
+def compress_screenshot(b64_png: str) -> tuple[str, str] | None:
+ """Resize and re-encode as JPEG to stay under the stdio buffer limit."""
+ if not HAS_PIL:
+ return None
+ try:
+ raw = base64.b64decode(b64_png)
+ img = Image.open(BytesIO(raw))
+ max_width = 1280
+ if img.width > max_width:
+ ratio = max_width / img.width
+ img = img.resize((max_width, int(img.height * ratio)), Image.LANCZOS)
+ buf = BytesIO()
+ img.convert("RGB").save(buf, format="JPEG", quality=55)
+ return base64.b64encode(buf.getvalue()).decode(), "image/jpeg"
+ except Exception:
+ return None
+
+
+def handle_tool_call(tool_name: str, arguments: dict) -> dict:
+ browser_id = arguments.get("browser_id", "")
+ if not browser_id:
+ return {"content": [{"type": "text", "text": "Error: browser_id is required"}], "isError": True}
+
+ action_map = {
+ "BrowserScreenshot": "screenshot",
+ "BrowserGetText": "get_text",
+ "BrowserNavigate": "navigate",
+ "BrowserClick": "click",
+ "BrowserType": "type",
+ "BrowserEvaluate": "evaluate",
+ }
+ action = action_map.get(tool_name)
+ if not action:
+ return {"content": [{"type": "text", "text": f"Unknown tool: {tool_name}"}], "isError": True}
+
+ params = {k: v for k, v in arguments.items() if k != "browser_id"}
+ result = call_backend(action, browser_id, params)
+
+ if "error" in result:
+ return {"content": [{"type": "text", "text": f"Error: {result['error']}"}], "isError": True}
+
+ if action == "screenshot" and result.get("image"):
+ image_data = result["image"]
+ mime_type = "image/png"
+
+ if len(image_data) > MAX_IMAGE_B64_BYTES:
+ compressed = compress_screenshot(image_data)
+ if compressed:
+ image_data, mime_type = compressed
+
+ if len(image_data) > MAX_IMAGE_B64_BYTES:
+ return {
+ "content": [
+ {"type": "text", "text": (
+ f"Screenshot too large to return ({len(image_data)} bytes base64). "
+ f"URL: {result.get('url', 'unknown')}. "
+ "Use BrowserGetText to read the page content instead."
+ )},
+ ],
+ }
+
+ return {
+ "content": [
+ {"type": "image", "data": image_data, "mimeType": mime_type},
+ {"type": "text", "text": f"Screenshot captured. URL: {result.get('url', 'unknown')}"},
+ ],
+ }
+
+ text = result.get("text", result.get("data", json.dumps(result)))
+ return {"content": [{"type": "text", "text": str(text)}]}
+
+
+def main():
+ for line in sys.stdin:
+ line = line.strip()
+ if not line:
+ continue
+ try:
+ msg = json.loads(line)
+ except json.JSONDecodeError:
+ continue
+
+ method = msg.get("method")
+ id_ = msg.get("id")
+ params = msg.get("params", {})
+
+ if method == "initialize":
+ send_response(id_, {
+ "protocolVersion": "2024-11-05",
+ "capabilities": {"tools": {}},
+ "serverInfo": {
+ "name": "openswarm-browser",
+ "version": "1.0.0",
+ },
+ })
+ elif method == "notifications/initialized":
+ pass
+ elif method == "tools/list":
+ send_response(id_, {"tools": TOOLS})
+ elif method == "tools/call":
+ tool_name = params.get("name", "")
+ arguments = params.get("arguments", {})
+ result = handle_tool_call(tool_name, arguments)
+ send_response(id_, result)
+ elif method == "ping":
+ send_response(id_, {})
+ elif id_ is not None:
+ send_response(id_, error={"code": -32601, "message": f"Method not found: {method}"})
+
+
+if __name__ == "__main__":
+ main()
diff --git a/backend/apps/agents/models.py b/backend/apps/agents/models.py
index 06805ac0..d17828a5 100644
--- a/backend/apps/agents/models.py
+++ b/backend/apps/agents/models.py
@@ -56,8 +56,6 @@ class AgentSession(BaseModel):
status: Literal["running", "waiting_approval", "completed", "error", "stopped"] = "running"
model: str = "sonnet"
mode: str = "agent"
- worktree_path: Optional[str] = None
- branch_name: Optional[str] = None
sdk_session_id: Optional[str] = None
system_prompt: Optional[str] = None
allowed_tools: list[str] = Field(default_factory=list)
diff --git a/backend/apps/agents/worktree_manager.py b/backend/apps/agents/worktree_manager.py
deleted file mode 100644
index ebddb7e1..00000000
--- a/backend/apps/agents/worktree_manager.py
+++ /dev/null
@@ -1,130 +0,0 @@
-import asyncio
-import os
-import shutil
-import logging
-
-logger = logging.getLogger(__name__)
-
-class WorktreeManager:
- def __init__(self, repo_root: str):
- self.repo_root = repo_root
- self.worktrees_dir = os.path.join(repo_root, ".worktrees")
- os.makedirs(self.worktrees_dir, exist_ok=True)
-
- async def create_worktree(self, branch_name: str) -> str:
- """Create a new git worktree and return its path."""
- worktree_path = os.path.join(self.worktrees_dir, branch_name)
- if os.path.exists(worktree_path):
- return worktree_path
-
- proc = await asyncio.create_subprocess_exec(
- "git", "worktree", "add", worktree_path, "-b", branch_name,
- cwd=self.repo_root,
- stdout=asyncio.subprocess.PIPE,
- stderr=asyncio.subprocess.PIPE,
- )
- stdout, stderr = await proc.communicate()
- if proc.returncode != 0:
- proc = await asyncio.create_subprocess_exec(
- "git", "worktree", "add", worktree_path, branch_name,
- cwd=self.repo_root,
- stdout=asyncio.subprocess.PIPE,
- stderr=asyncio.subprocess.PIPE,
- )
- stdout, stderr = await proc.communicate()
- if proc.returncode != 0:
- raise RuntimeError(f"Failed to create worktree: {stderr.decode()}")
-
- logger.info(f"Created worktree at {worktree_path} on branch {branch_name}")
- return worktree_path
-
- async def remove_worktree(self, branch_name: str) -> None:
- """Remove a git worktree."""
- worktree_path = os.path.join(self.worktrees_dir, branch_name)
- if not os.path.exists(worktree_path):
- return
-
- proc = await asyncio.create_subprocess_exec(
- "git", "worktree", "remove", worktree_path, "--force",
- cwd=self.repo_root,
- stdout=asyncio.subprocess.PIPE,
- stderr=asyncio.subprocess.PIPE,
- )
- await proc.communicate()
- logger.info(f"Removed worktree at {worktree_path}")
-
- async def list_worktrees(self) -> list[dict]:
- """List all worktrees with their branch and path info."""
- proc = await asyncio.create_subprocess_exec(
- "git", "worktree", "list", "--porcelain",
- cwd=self.repo_root,
- stdout=asyncio.subprocess.PIPE,
- stderr=asyncio.subprocess.PIPE,
- )
- stdout, _ = await proc.communicate()
-
- worktrees = []
- current = {}
- for line in stdout.decode().strip().split("\n"):
- if line.startswith("worktree "):
- if current:
- worktrees.append(current)
- current = {"path": line.split(" ", 1)[1]}
- elif line.startswith("HEAD "):
- current["head"] = line.split(" ", 1)[1]
- elif line.startswith("branch "):
- current["branch"] = line.split(" ", 1)[1].replace("refs/heads/", "")
- elif line == "":
- if current:
- worktrees.append(current)
- current = {}
- if current:
- worktrees.append(current)
- return worktrees
-
- async def delete_branch(self, branch_name: str) -> None:
- """Delete a local git branch."""
- proc = await asyncio.create_subprocess_exec(
- "git", "branch", "-D", branch_name,
- cwd=self.repo_root,
- stdout=asyncio.subprocess.PIPE,
- stderr=asyncio.subprocess.PIPE,
- )
- stdout, stderr = await proc.communicate()
- if proc.returncode == 0:
- logger.info(f"Deleted branch {branch_name}")
- else:
- logger.warning(f"Could not delete branch {branch_name}: {stderr.decode().strip()}")
-
- async def cleanup_all_worktrees(self) -> None:
- """Remove all worktree directories and prune stale git worktree refs."""
- if os.path.exists(self.worktrees_dir):
- for entry in os.listdir(self.worktrees_dir):
- entry_path = os.path.join(self.worktrees_dir, entry)
- if os.path.isdir(entry_path):
- shutil.rmtree(entry_path, ignore_errors=True)
- logger.info("Removed all worktree directories")
-
- proc = await asyncio.create_subprocess_exec(
- "git", "worktree", "prune",
- cwd=self.repo_root,
- stdout=asyncio.subprocess.PIPE,
- stderr=asyncio.subprocess.PIPE,
- )
- await proc.communicate()
- logger.info("Pruned stale git worktree refs")
-
- async def get_worktree_diff(self, branch_name: str) -> str:
- """Get the diff of uncommitted changes in a worktree."""
- worktree_path = os.path.join(self.worktrees_dir, branch_name)
- if not os.path.exists(worktree_path):
- return ""
-
- proc = await asyncio.create_subprocess_exec(
- "git", "diff", "HEAD",
- cwd=worktree_path,
- stdout=asyncio.subprocess.PIPE,
- stderr=asyncio.subprocess.PIPE,
- )
- stdout, _ = await proc.communicate()
- return stdout.decode()
diff --git a/backend/apps/agents/ws_manager.py b/backend/apps/agents/ws_manager.py
index 3d17b326..22651d8f 100644
--- a/backend/apps/agents/ws_manager.py
+++ b/backend/apps/agents/ws_manager.py
@@ -12,6 +12,7 @@ class ConnectionManager:
self.connections: dict[str, list[WebSocket]] = {}
self.global_connections: list[WebSocket] = []
self.pending_futures: dict[str, asyncio.Future] = {}
+ self.browser_futures: dict[str, asyncio.Future] = {}
async def connect_session(self, session_id: str, websocket: WebSocket):
await websocket.accept()
@@ -85,4 +86,32 @@ class ConnectionManager:
if future and not future.done():
future.set_result(decision)
+ async def send_browser_command(
+ self, request_id: str, action: str, browser_id: str, params: dict
+ ) -> dict:
+ """Send a browser command to the frontend and wait for the result."""
+ future = asyncio.get_event_loop().create_future()
+ self.browser_futures[request_id] = future
+
+ await self.broadcast_global("browser:command", {
+ "request_id": request_id,
+ "action": action,
+ "browser_id": browser_id,
+ "params": params,
+ })
+
+ try:
+ result = await asyncio.wait_for(future, timeout=30.0)
+ return result
+ except asyncio.TimeoutError:
+ return {"error": "Browser command timed out"}
+ finally:
+ self.browser_futures.pop(request_id, None)
+
+ def resolve_browser_command(self, request_id: str, result: dict):
+ """Resolve a pending browser command Future with the frontend's result."""
+ future = self.browser_futures.get(request_id)
+ if future and not future.done():
+ future.set_result(result)
+
ws_manager = ConnectionManager()
diff --git a/backend/apps/dashboard_layout/dashboard_layout.py b/backend/apps/dashboard_layout/dashboard_layout.py
index c3f23355..5d16b81b 100644
--- a/backend/apps/dashboard_layout/dashboard_layout.py
+++ b/backend/apps/dashboard_layout/dashboard_layout.py
@@ -7,7 +7,8 @@ from backend.apps.dashboard_layout.models import DashboardLayout, DashboardLayou
logger = logging.getLogger(__name__)
-DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "data", "dashboard_layout")
+from backend.config.paths import DASHBOARD_LAYOUT_DIR as DATA_DIR
+
LAYOUT_FILE = os.path.join(DATA_DIR, "layout.json")
diff --git a/backend/apps/dashboards/dashboards.py b/backend/apps/dashboards/dashboards.py
index 1c2d2a45..9e137e25 100644
--- a/backend/apps/dashboards/dashboards.py
+++ b/backend/apps/dashboards/dashboards.py
@@ -13,16 +13,14 @@ from backend.apps.dashboards.models import (
DashboardLayout,
CardPosition,
ViewCardPosition,
+ BrowserCardPosition,
)
from fastapi import HTTPException
logger = logging.getLogger(__name__)
-BACKEND_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-DATA_DIR = os.path.join(BACKEND_DIR, "data", "dashboards")
-SESSIONS_DIR = os.path.join(BACKEND_DIR, "data", "sessions")
+from backend.config.paths import DASHBOARDS_DIR as DATA_DIR, SESSIONS_DIR, DASHBOARD_LAYOUT_DIR as OLD_LAYOUT_DIR
-OLD_LAYOUT_DIR = os.path.join(BACKEND_DIR, "data", "dashboard_layout")
OLD_LAYOUT_FILE = os.path.join(OLD_LAYOUT_DIR, "layout.json")
@@ -115,6 +113,7 @@ async def list_dashboards():
items.append({
"id": dumped["id"],
"name": dumped.get("name", "Untitled"),
+ "auto_named": dumped.get("auto_named", False),
"created_at": dumped.get("created_at"),
"updated_at": dumped.get("updated_at"),
})
@@ -128,6 +127,69 @@ async def create_dashboard(body: DashboardCreate):
return dashboard.model_dump(mode="json")
+@dashboards.router.post("/{dashboard_id}/generate-name")
+async def generate_name(dashboard_id: str):
+ dashboard = _load(dashboard_id)
+
+ if not dashboard.auto_named and dashboard.name != "Untitled Dashboard":
+ return {"name": dashboard.name, "auto_named": dashboard.auto_named}
+
+ from backend.apps.agents.agent_manager import agent_manager
+
+ prompts = []
+ for session in agent_manager.sessions.values():
+ if getattr(session, "dashboard_id", None) != dashboard_id:
+ continue
+ for msg in session.messages:
+ if msg.role == "user" and isinstance(msg.content, str) and msg.content.strip():
+ prompts.append(msg.content.strip()[:200])
+ break
+
+ if not prompts:
+ return {"name": dashboard.name, "auto_named": dashboard.auto_named}
+
+ fallback = prompts[0][:40]
+ try:
+ import anthropic
+ from backend.apps.settings.settings import load_settings
+ global_settings = load_settings()
+ if not global_settings.anthropic_api_key:
+ raise ValueError("API key not configured")
+
+ client = anthropic.AsyncAnthropic(api_key=global_settings.anthropic_api_key)
+
+ if len(prompts) == 1:
+ system = (
+ "Generate a concise 2-5 word workspace name for a project based on this task. "
+ "Return only the name, nothing else."
+ )
+ user_content = prompts[0]
+ else:
+ system = (
+ "Generate a concise 2-5 word workspace name that captures the overall theme of these tasks. "
+ "Return only the name, nothing else."
+ )
+ user_content = "\n".join(f"- {p}" for p in prompts)
+
+ resp = await client.messages.create(
+ model="claude-haiku-4-20250414",
+ max_tokens=30,
+ system=system,
+ messages=[{"role": "user", "content": user_content}],
+ )
+ generated = resp.content[0].text.strip().strip('"\'')
+ if generated:
+ fallback = generated
+ except Exception as e:
+ logger.warning(f"Dashboard name generation failed, using fallback: {e}")
+
+ dashboard.name = fallback
+ dashboard.auto_named = True
+ dashboard.updated_at = datetime.now()
+ _save(dashboard)
+ return {"name": dashboard.name, "auto_named": True}
+
+
@dashboards.router.get("/{dashboard_id}")
async def get_dashboard(dashboard_id: str):
dashboard = _load(dashboard_id)
@@ -139,6 +201,7 @@ async def update_dashboard(dashboard_id: str, body: DashboardUpdate):
dashboard = _load(dashboard_id)
if body.name is not None:
dashboard.name = body.name
+ dashboard.auto_named = False
if body.layout is not None:
dashboard.layout = body.layout
dashboard.updated_at = datetime.now()
@@ -191,7 +254,11 @@ async def duplicate_dashboard(dashboard_id: str):
"name": f"{source_data.get('name', 'Untitled')} (copy)",
"created_at": now,
"updated_at": now,
- "layout": {"cards": {}, "view_cards": source_data.get("layout", {}).get("view_cards", {})},
+ "layout": {
+ "cards": {},
+ "view_cards": source_data.get("layout", {}).get("view_cards", {}),
+ "browser_cards": source_data.get("layout", {}).get("browser_cards", {}),
+ },
}
with open(os.path.join(DATA_DIR, f"{new_id}.json"), "w") as f:
json.dump(new_dashboard, f, indent=2)
diff --git a/backend/apps/dashboards/models.py b/backend/apps/dashboards/models.py
index 149f2069..2d5f6d00 100644
--- a/backend/apps/dashboards/models.py
+++ b/backend/apps/dashboards/models.py
@@ -20,14 +20,26 @@ class ViewCardPosition(BaseModel):
height: float = 360
+class BrowserCardPosition(BaseModel):
+ browser_id: str
+ url: str = ""
+ x: float = 0
+ y: float = 0
+ width: float = 640
+ height: float = 480
+
+
class DashboardLayout(BaseModel):
cards: dict[str, CardPosition] = Field(default_factory=dict)
view_cards: dict[str, ViewCardPosition] = Field(default_factory=dict)
+ browser_cards: dict[str, BrowserCardPosition] = Field(default_factory=dict)
+ expanded_session_ids: list[str] = Field(default_factory=list)
class Dashboard(BaseModel):
id: str = Field(default_factory=lambda: uuid4().hex)
name: str = "Untitled Dashboard"
+ auto_named: bool = False
created_at: datetime = Field(default_factory=datetime.now)
updated_at: datetime = Field(default_factory=datetime.now)
layout: DashboardLayout = Field(default_factory=DashboardLayout)
diff --git a/backend/apps/modes/models.py b/backend/apps/modes/models.py
index 3a884199..03c201fb 100644
--- a/backend/apps/modes/models.py
+++ b/backend/apps/modes/models.py
@@ -1,17 +1,8 @@
-import os
from pydantic import BaseModel, Field
from typing import Optional
from uuid import uuid4
-OUTPUTS_WORKSPACE = os.path.join(
- os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
- "data", "outputs_workspace",
-)
-
-SKILLS_WORKSPACE = os.path.join(
- os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
- "data", "skills_workspace",
-)
+from backend.config.paths import OUTPUTS_WORKSPACE_DIR as OUTPUTS_WORKSPACE, SKILLS_WORKSPACE_DIR as SKILLS_WORKSPACE
class Mode(BaseModel):
diff --git a/backend/apps/modes/modes.py b/backend/apps/modes/modes.py
index a9c134f7..dc7b2b81 100644
--- a/backend/apps/modes/modes.py
+++ b/backend/apps/modes/modes.py
@@ -8,7 +8,7 @@ from backend.apps.modes.models import Mode, ModeCreate, ModeUpdate, BUILTIN_MODE
logger = logging.getLogger(__name__)
-DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "data", "modes")
+from backend.config.paths import MODES_DIR as DATA_DIR
@asynccontextmanager
diff --git a/backend/apps/outputs/outputs.py b/backend/apps/outputs/outputs.py
index 2e22eac4..206e29e8 100644
--- a/backend/apps/outputs/outputs.py
+++ b/backend/apps/outputs/outputs.py
@@ -31,18 +31,13 @@ def _resolve_model(short_name: str) -> str:
def _get_anthropic_client():
- """Create an AsyncAnthropic client, pulling the API key from app settings if
- the ANTHROPIC_API_KEY env var isn't set."""
+ """Create an AsyncAnthropic client using the API key from app settings."""
import anthropic
- if os.environ.get("ANTHROPIC_API_KEY"):
- return anthropic.AsyncAnthropic()
-
settings = load_settings()
- if settings.anthropic_api_key:
- return anthropic.AsyncAnthropic(api_key=settings.anthropic_api_key)
-
- return anthropic.AsyncAnthropic()
+ if not settings.anthropic_api_key:
+ raise ValueError("Anthropic API key not configured. Set it in Settings.")
+ return anthropic.AsyncAnthropic(api_key=settings.anthropic_api_key)
def _validate_against_schema(data: dict, schema: dict) -> str | None:
@@ -54,15 +49,7 @@ def _validate_against_schema(data: dict, schema: dict) -> str | None:
path = " -> ".join(str(p) for p in exc.absolute_path) if exc.absolute_path else "(root)"
return f"Schema validation failed at {path}: {exc.message}"
-DATA_DIR = os.path.join(
- os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
- "data", "outputs",
-)
-
-WORKSPACE_DIR = os.path.join(
- os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
- "data", "outputs_workspace",
-)
+from backend.config.paths import OUTPUTS_DIR as DATA_DIR, OUTPUTS_WORKSPACE_DIR as WORKSPACE_DIR
def _build_data_injection(input_json: str, result_json: str) -> str:
@@ -586,7 +573,7 @@ async def auto_run_agent(body: AutoRunAgentRequest):
@outputs.router.delete("/auto-run-agent/{session_id}")
async def cleanup_auto_run_agent(session_id: str):
- """Delete a temporary auto-run agent session and its worktree."""
+ """Delete a temporary auto-run agent session."""
from backend.apps.agents.agent_manager import agent_manager
try:
diff --git a/backend/apps/settings/models.py b/backend/apps/settings/models.py
index 7efe35cb..640c2aa4 100644
--- a/backend/apps/settings/models.py
+++ b/backend/apps/settings/models.py
@@ -12,3 +12,4 @@ class AppSettings(BaseModel):
theme: str = "dark"
new_agent_shortcut: str = "Meta+l"
anthropic_api_key: Optional[str] = None
+ browser_homepage: str = "https://www.google.com"
diff --git a/backend/apps/settings/settings.py b/backend/apps/settings/settings.py
index 60dafc55..a5908aad 100644
--- a/backend/apps/settings/settings.py
+++ b/backend/apps/settings/settings.py
@@ -13,10 +13,8 @@ from backend.apps.settings.models import AppSettings
logger = logging.getLogger(__name__)
-DATA_DIR = os.path.join(
- os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
- "data", "settings",
-)
+from backend.config.paths import SETTINGS_DIR as DATA_DIR
+
SETTINGS_FILE = os.path.join(DATA_DIR, "settings.json")
diff --git a/backend/apps/skills/skills.py b/backend/apps/skills/skills.py
index ad21cd52..83d868a6 100644
--- a/backend/apps/skills/skills.py
+++ b/backend/apps/skills/skills.py
@@ -13,10 +13,7 @@ logger = logging.getLogger(__name__)
SKILLS_DIR = os.path.expanduser("~/.claude/skills")
INDEX_PATH = os.path.join(SKILLS_DIR, ".skills_index.json")
-SKILLS_WORKSPACE_DIR = os.path.join(
- os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
- "data", "skills_workspace",
-)
+from backend.config.paths import SKILLS_WORKSPACE_DIR
@asynccontextmanager
diff --git a/backend/apps/templates/templates.py b/backend/apps/templates/templates.py
index 65e6cb0c..36f0adf3 100644
--- a/backend/apps/templates/templates.py
+++ b/backend/apps/templates/templates.py
@@ -8,7 +8,7 @@ from backend.apps.templates.models import PromptTemplate, PromptTemplateCreate,
logger = logging.getLogger(__name__)
-DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "data", "templates")
+from backend.config.paths import TEMPLATES_DIR as DATA_DIR
@asynccontextmanager
async def templates_lifespan():
diff --git a/backend/apps/tools_lib/tools_lib.py b/backend/apps/tools_lib/tools_lib.py
index c05de0cc..4dec259e 100644
--- a/backend/apps/tools_lib/tools_lib.py
+++ b/backend/apps/tools_lib/tools_lib.py
@@ -18,11 +18,9 @@ from backend.apps.tools_lib.models import ToolDefinition, ToolCreate, ToolUpdate
logger = logging.getLogger(__name__)
-BACKEND_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-load_dotenv(os.path.join(BACKEND_DIR, ".env"))
+from backend.config.paths import BACKEND_DIR, TOOLS_DIR as DATA_DIR, BUILTIN_PERMISSIONS_PATH as BUILTIN_PERMS_PATH
-DATA_DIR = os.path.join(BACKEND_DIR, "data", "tools")
-BUILTIN_PERMS_PATH = os.path.join(BACKEND_DIR, "data", "builtin_permissions.json")
+load_dotenv(os.path.join(BACKEND_DIR, ".env"))
@asynccontextmanager
@@ -121,7 +119,8 @@ async def oauth_callback(code: str = Query(...), state: str = Query("")):
tool = _load(tool_id)
client_id = os.environ.get("GOOGLE_OAUTH_CLIENT_ID", "")
client_secret = os.environ.get("GOOGLE_OAUTH_CLIENT_SECRET", "")
- redirect_uri = "http://localhost:8324/api/tools/oauth/callback"
+ _port = os.environ.get("OPENSWARM_PORT", "8324")
+ redirect_uri = f"http://localhost:{_port}/api/tools/oauth/callback"
async with httpx.AsyncClient(timeout=15.0) as client:
resp = await client.post(GOOGLE_TOKEN_URL, data={
@@ -660,7 +659,8 @@ async def oauth_start(tool_id: str):
if not client_id:
raise HTTPException(status_code=400, detail="GOOGLE_OAUTH_CLIENT_ID not set in backend .env")
- redirect_uri = "http://localhost:8324/api/tools/oauth/callback"
+ _port = os.environ.get("OPENSWARM_PORT", "8324")
+ redirect_uri = f"http://localhost:{_port}/api/tools/oauth/callback"
state = tool_id
_pending_oauth[state] = tool_id
diff --git a/backend/config/Apps.py b/backend/config/Apps.py
index ce8ffb3a..d8f0608c 100644
--- a/backend/config/Apps.py
+++ b/backend/config/Apps.py
@@ -1,3 +1,5 @@
+import os
+
from fastapi import FastAPI, APIRouter
import debug
from uuid import uuid4
@@ -30,7 +32,8 @@ class MainApp:
for sub_app in sub_apps:
debug(sub_app.name)
await stack.enter_async_context(sub_app.lifespan())
- print("\nCheck out the API docs at: http://127.0.0.1:8324/docs\n")
+ _port = os.environ.get("OPENSWARM_PORT", "8324")
+ print(f"\nCheck out the API docs at: http://127.0.0.1:{_port}/docs\n")
yield
self.app = FastAPI(lifespan=lifespan)
diff --git a/backend/config/paths.py b/backend/config/paths.py
new file mode 100644
index 00000000..083ebdfb
--- /dev/null
+++ b/backend/config/paths.py
@@ -0,0 +1,39 @@
+"""Centralised path definitions for the OpenSwarm backend.
+
+In dev mode (default) data lives under ``backend/data/``.
+When packaged as a desktop app, Electron sets ``OPENSWARM_PACKAGED=1`` and
+data is stored in a platform-appropriate location
+(``~/Library/Application Support/OpenSwarm/data/`` on macOS).
+"""
+
+import os
+import sys
+
+_BACKEND_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+_is_packaged = os.environ.get("OPENSWARM_PACKAGED") == "1"
+
+if _is_packaged:
+ if sys.platform == "darwin":
+ _app_support = os.path.join(os.path.expanduser("~"), "Library", "Application Support", "OpenSwarm")
+ elif sys.platform == "win32":
+ _app_support = os.path.join(os.environ.get("APPDATA", os.path.expanduser("~")), "OpenSwarm")
+ else:
+ _app_support = os.path.join(os.environ.get("XDG_DATA_HOME", os.path.join(os.path.expanduser("~"), ".local", "share")), "OpenSwarm")
+ DATA_ROOT = os.path.join(_app_support, "data")
+else:
+ DATA_ROOT = os.path.join(_BACKEND_DIR, "data")
+
+SESSIONS_DIR = os.path.join(DATA_ROOT, "sessions")
+TOOLS_DIR = os.path.join(DATA_ROOT, "tools")
+SETTINGS_DIR = os.path.join(DATA_ROOT, "settings")
+MODES_DIR = os.path.join(DATA_ROOT, "modes")
+TEMPLATES_DIR = os.path.join(DATA_ROOT, "templates")
+DASHBOARDS_DIR = os.path.join(DATA_ROOT, "dashboards")
+OUTPUTS_DIR = os.path.join(DATA_ROOT, "outputs")
+OUTPUTS_WORKSPACE_DIR = os.path.join(DATA_ROOT, "outputs_workspace")
+SKILLS_WORKSPACE_DIR = os.path.join(DATA_ROOT, "skills_workspace")
+DASHBOARD_LAYOUT_DIR = os.path.join(DATA_ROOT, "dashboard_layout")
+BUILTIN_PERMISSIONS_PATH = os.path.join(DATA_ROOT, "builtin_permissions.json")
+
+BACKEND_DIR = _BACKEND_DIR
diff --git a/backend/main.py b/backend/main.py
index d3708a9f..451e4490 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -1,4 +1,8 @@
+import os
+from uuid import uuid4
+
from fastapi.responses import JSONResponse
+from fastapi import Request
from backend.config.Apps import MainApp
from backend.apps.health.health import health
from backend.apps.agents.agents import agents
@@ -83,9 +87,56 @@ async def websocket_dashboard(websocket: WebSocket):
"message": payload.get("message"),
"updated_input": payload.get("updated_input"),
})
+ elif event == "browser:result":
+ ws_manager.resolve_browser_command(
+ payload.get("request_id", ""),
+ payload,
+ )
except WebSocketDisconnect:
ws_manager.disconnect_global(websocket)
+
+@app.post("/api/browser/command")
+async def browser_command(request: Request):
+ """HTTP endpoint called by the browser MCP server subprocess.
+ Proxies commands to the frontend via WebSocket and waits for results."""
+ body = await request.json()
+ action = body.get("action", "")
+ browser_id = body.get("browser_id", "")
+ params = body.get("params", {})
+
+ if not action or not browser_id:
+ return JSONResponse({"error": "action and browser_id are required"}, status_code=400)
+
+ request_id = uuid4().hex
+ result = await ws_manager.send_browser_command(request_id, action, browser_id, params)
+ return JSONResponse(result)
+
+
if __name__ == "__main__":
+ import argparse
import uvicorn
- uvicorn.run("backend.main:app", host="0.0.0.0", port=8324, reload=True)
+
+ parser = argparse.ArgumentParser(description="OpenSwarm backend server")
+ parser.add_argument("--port", type=int, default=int(os.environ.get("OPENSWARM_PORT", "8324")))
+ parser.add_argument("--host", default=os.environ.get("OPENSWARM_HOST", "127.0.0.1"))
+ parser.add_argument("--reload", action="store_true", default=False)
+ args = parser.parse_args()
+
+ os.environ["OPENSWARM_PORT"] = str(args.port)
+
+ import uvicorn.config
+
+ class _ReadyServer(uvicorn.Server):
+ """Subclass that prints a machine-readable READY line on startup."""
+ async def startup(self, sockets=None):
+ await super().startup(sockets)
+ print(f"READY:PORT={args.port}", flush=True)
+
+ if args.reload:
+ uvicorn.run("backend.main:app", host=args.host, port=args.port, reload=True)
+ else:
+ config = uvicorn.Config("backend.main:app", host=args.host, port=args.port)
+ server = _ReadyServer(config)
+ import asyncio
+ asyncio.run(server.serve())
diff --git a/backend/requirements.txt b/backend/requirements.txt
index 813faf0e..8ef474e6 100644
--- a/backend/requirements.txt
+++ b/backend/requirements.txt
@@ -8,4 +8,5 @@ langchain-openai==0.3.12
pytest==8.3.4
pytest-asyncio==0.25.2
typeguard==4.4.2
-python-dotenv==1.1.1
\ No newline at end of file
+python-dotenv==1.1.1
+Pillow
\ No newline at end of file
diff --git a/backend/run/dev.sh b/backend/run.sh
similarity index 67%
rename from backend/run/dev.sh
rename to backend/run.sh
index 92eede71..689ecc1f 100755
--- a/backend/run/dev.sh
+++ b/backend/run.sh
@@ -13,14 +13,13 @@ else
# echo "NOT in macOS server START"
fi
chmod +x "$DEV_ABSPATH"
-source "$(dirname "$DEV_ABSPATH")/_utils.sh"
-
-PROJECT_ROOT_ABSPATH="$(dirname "$BACKEND_DIR_ABSPATH")"
+PROJECT_ROOT_ABSPATH="$(dirname "$(dirname "$DEV_ABSPATH")")"
+BACKEND_DIR_ABSPATH="$PROJECT_ROOT_ABSPATH/backend"
# Cleanup function on exit
cleanup() {
- formatted_echo --yellow "Shutting down..."
+ echo "Shutting down..."
cd - > /dev/null 2>&1
}
trap cleanup EXIT INT TERM
@@ -28,34 +27,34 @@ trap cleanup EXIT INT TERM
# --- Create virtual environment if it doesn't exist ---
VENV_DIR="$BACKEND_DIR_ABSPATH/.venv"
if [[ ! -d "$VENV_DIR" ]]; then
- formatted_echo --green "Creating virtual environment..."
+ echo "Creating virtual environment..."
python -m venv "$VENV_DIR"
fi
source "$VENV_DIR/bin/activate"
# --- Install custom debugger module if not already installed ---
DEBUGGER_DIR_ABSPATH="$PROJECT_ROOT_ABSPATH/debugger"
-if ! pip show debug > /dev/null 2>&1; then
- formatted_echo --green "Installing debugger module..."
+if ! pip3 show debug > /dev/null 2>&1; then
+ echo "Installing debugger module..."
cd "$DEBUGGER_DIR_ABSPATH"
- pip install -e .
+ pip3 install -e .
if [[ $? -ne 0 ]]; then
- formatted_error "Failed to install debugger module."
+ echo "Failed to install debugger module."
exit 1
fi
fi
# --- Install Python dependencies ---
-formatted_echo --green "Installing dependencies..."
+echo "Installing dependencies..."
cd "$BACKEND_DIR_ABSPATH"
-pip install -r requirements.txt
+pip3 install -r requirements.txt
if [[ $? -ne 0 ]]; then
- formatted_error "Failed to install Python dependencies."
+ echo "Failed to install Python dependencies."
exit 1
fi
# --- Start the backend server ---
-formatted_echo --green "Starting backend server on http://0.0.0.0:8324 ..."
+echo "Starting backend server on http://0.0.0.0:8324 ..."
cd "$PROJECT_ROOT_ABSPATH"
python -m uvicorn backend.main:app --host 0.0.0.0 --port 8324 --reload \
--reload-dir "$BACKEND_DIR_ABSPATH" \
diff --git a/backend/run/_utils.sh b/backend/run/_utils.sh
deleted file mode 100755
index ea052bb5..00000000
--- a/backend/run/_utils.sh
+++ /dev/null
@@ -1,202 +0,0 @@
-#!/bin/bash
-# Flag processing function with namespacing and global variable declaration
-UTILS_FILE_ABSPATH="$(readlink -f "${BASH_SOURCE[0]}")"
-if [[ "$OSTYPE" == "darwin"* ]]; then
- # echo "In macOS utils sed START"
- # echo "UTILS_ABSPATH: $UTILS_FILE_ABSPATH"
- sed -i '' 's/\r//g' "$UTILS_FILE_ABSPATH"
- # echo "In macOS utils sed END"
-else
- # echo "NOT in macOS utils START"
- # echo "UTILS_ABSPATH: $UTILS_FILE_ABSPATH"
- sed -i 's/\r//g' "$UTILS_FILE_ABSPATH"
- # echo "NOT in macOS utils END"
-fi
-chmod +x "$UTILS_FILE_ABSPATH"
-
-RUN_DIR_ABSPATH="$(dirname "$UTILS_FILE_ABSPATH")"
-BACKEND_DIR_ABSPATH="$(dirname "$RUN_DIR_ABSPATH")"
-
-formatted_error() {
- # Arguments: error message and array of conflicting flags
- local initial_message="$1"
- shift
- local conflicting_flags=("$@")
-
- # Red color for the error message box
- local COLOR_CODE='\033[0;31m'
- local NC='\033[0m' # No Color
-
- # Start the error message with the initial message
- local error_message="$initial_message"
-
- # Add each conflicting flag on a new line with indentation
- for conflict in "${conflicting_flags[@]}"; do
- error_message+="\n $conflict" # Replacing `\t` with four spaces
- done
-
- # Prepare for printing by finding max length of each line in the message
- local lines=()
- local max_length=0
-
- # Use printf to interpret new lines and calculate max length with spaces instead of tabs
- while IFS= read -r line; do
- # Substitute tabs with spaces for consistent width measurement
- local line_with_spaces="${line//$'\t'/ }"
- lines+=("$line_with_spaces")
- if (( ${#line_with_spaces} > max_length )); then
- max_length=${#line_with_spaces}
- fi
- done <<< "$(printf "$error_message")"
-
- # Create the top and bottom borders based on the maximum line length
- local border=$(printf '%*s' "$((max_length + 4))" '' | tr ' ' '-')
-
- # Print the formatted error message with a red box
- printf "\n${COLOR_CODE}%s${NC}\n" "$border"
- for line in "${lines[@]}"; do
- printf "${COLOR_CODE}| %-*s |${NC}\n" "$max_length" "$line"
- done
- printf "${COLOR_CODE}| %-*s |${NC}\n" "$max_length" ""
- printf "${COLOR_CODE}%s${NC}\n" "$border"
-}
-
-
-function process_flags() {
- local -n flags_to_commands="$1" # Reference to the dictionary of flags and commands
- local -n exclusives="$2" # Reference to the list of exclusive flag groups
- local namespace="$3" # Unique prefix for variables
- local calling_script_name="$(basename "$(readlink -f "${BASH_SOURCE[1]}")")"
- local caller_id="${FUNCNAME[1]}"
- local should_exit=false
- if [ "$caller_id" == "main" ]; then
- caller_id="$calling_script_name"
- fi
- # echo "caller_id: $caller_id"
- # echo "Initializing flags with namespace: $namespace"
-
- # Initialize flag variables with namespacing in the sourcing script context
- for flag in "${!flags_to_commands[@]}"; do
- # Convert flag to uppercase variable name and apply namespace, e.g., MYAPP_FLAG1
- local flag_var="${namespace}_${flag^^}" # Prefix and uppercase
- flag_var="${flag_var//-}" # Remove dashes
- eval "declare -g $flag_var=false" # Initialize as global false
-
- # Diagnostic output for each initialized variable
- # echo "Initialized $flag_var as false"
- done
-
- # echo "Parsing command line arguments: $@"
-
- # Parse command line arguments and set flags
- local unsupported_flags=()
- # local potential_typos=()
- for arg in "$@"; do
- # echo "Processing argument: $arg"
- if [[ -n "${flags_to_commands[$arg]}" ]]; then
- # echo "Flag found: $arg"
- local flag_var="${namespace}_${arg^^}" # Prefix and uppercase
- flag_var="${flag_var//-}" # Remove dashes
- eval "declare -g $flag_var=true" # Set as global true
- # echo "Set $flag_var to true"
- # echo "Executing command for $arg: ${flags_to_commands[$arg]}"
- eval "${flags_to_commands[$arg]}"
- else
- if [[ "$arg" == "-"* ]]; then
- # echo "Flag not found: $arg"
- unsupported_flags+=("$arg")
- if [[ -n "${flags_to_commands[-$arg]}" ]]; then
- # echo "Potential typo: $arg"
- unsupported_flags+=("\t*Note: Potential typo detected.")
- unsupported_flags+=("\tDid you mean: -$arg")
- fi
- fi
- fi
- done
- # Check exclusive flag groups for conflicts
- # echo "Checking exclusive flag groups"
- for group in "${exclusives[@]}"; do
- local count=0
- local conflicting_flags=()
- for flag in $group; do
- local flag_var="${namespace}_${flag^^}"
- flag_var="${flag_var//-}"
- if [[ "$(eval echo "\$$flag_var")" == "true" ]]; then
- conflicting_flags+=("$flag")
- # count=$((count + 1))
- # ec "$flag_var is true in exclusive group"
- fi
- done
- if (( ${#conflicting_flags[@]} > 1 )); then
- # echo "found conflicting flags"
- formatted_error "Error: $caller_id\n-----------------------------------------\nIncompatible flags:\nThe flags below cannot be used together\n-----------------------------------------\n" "${conflicting_flags[@]}"
- should_exit=true
- fi
- done
- # echo "should_exit: $should_exit"
- # echo "unsupported_flags: ${#unsupported_flags[@]}"
- if (( ${#unsupported_flags[@]} > 0 )); then
- # echo "found unsupported flags 2"
- formatted_error "Error: $caller_id\n-------------------------------------------------\nUnsupported flags:\nThe flags below are not supported by this script\n-------------------------------------------------\n" "${unsupported_flags[@]}"
- should_exit=true
- fi
- if [[ $should_exit == true ]]; then
- exit 1
- fi
-}
-
-
-
-formatted_echo() {
- local COLOR_CODE='\033[0m' # No Color
- local NC='\033[0m' # No Color variable
- # local message="$2"
- # If the second argument is empty, then theres no color specified, so we use the first argument as the message
- if [[ -z "$2" ]]; then
- message="$1"
- else
- message="$2"
- fi
-
- declare -A format_flags
- format_flags=(
- [--red]="COLOR_CODE='\033[0;31m'"
- [--green]="COLOR_CODE='\033[0;32m'"
- [--yellow]="COLOR_CODE='\033[0;33m'"
- [--blue]="COLOR_CODE='\033[0;34m'"
- [--purple]="COLOR_CODE='\033[0;35m'"
- [--cyan]="COLOR_CODE='\033[0;36m'"
- )
- exclusive_format_flags=(
- "--red --green --yellow --blue --purple --cyan"
- )
-
- # Pass the arguments with the namespace "FORMAT"
- process_flags format_flags exclusive_format_flags "FORMAT" "$@"
-
- # Process the message
- local text
- text=$(printf "%b" "$message")
-
- # Expand any escaped characters in the input (e.g., \n)
- local lines=()
- local max_length=0
-
- # Read the text line by line and find the maximum length
- while IFS= read -r line; do
- lines+=("$line")
- if (( ${#line} > max_length )); then
- max_length=${#line}
- fi
- done <<< "$text"
-
- # Create the top and bottom borders based on the maximum line length
- local border=$(printf '%*s' "$((max_length + 4))" '' | tr ' ' '-')
-
- # Print the formatted box with selected color
- printf "\n${COLOR_CODE}%s${NC}\n" "$border"
- for line in "${lines[@]}"; do
- printf "${COLOR_CODE}| %-*s |${NC}\n" "$max_length" "$line"
- done
- printf "${COLOR_CODE}%s${NC}\n" "$border"
-}
\ No newline at end of file
diff --git a/electron/build/entitlements.mac.plist b/electron/build/entitlements.mac.plist
new file mode 100644
index 00000000..7ace8487
--- /dev/null
+++ b/electron/build/entitlements.mac.plist
@@ -0,0 +1,18 @@
+
+
+
+
+ com.apple.security.cs.allow-unsigned-executable-memory
+
+ com.apple.security.cs.allow-jit
+
+ com.apple.security.network.client
+
+ com.apple.security.network.server
+
+ com.apple.security.files.user-selected.read-write
+
+ com.apple.security.inherit
+
+
+
diff --git a/electron/build/icon.icns b/electron/build/icon.icns
new file mode 100644
index 00000000..28214fcf
Binary files /dev/null and b/electron/build/icon.icns differ
diff --git a/electron/build/icon.png b/electron/build/icon.png
new file mode 100644
index 00000000..8b9f8611
Binary files /dev/null and b/electron/build/icon.png differ
diff --git a/electron/main.js b/electron/main.js
new file mode 100644
index 00000000..7d4168a1
--- /dev/null
+++ b/electron/main.js
@@ -0,0 +1,226 @@
+const { app, BrowserWindow, ipcMain } = require('electron');
+const { autoUpdater } = require('electron-updater');
+const path = require('path');
+const { spawn } = require('child_process');
+const getPort = require('get-port');
+const http = require('http');
+
+let mainWindow = null;
+let backendProcess = null;
+let backendPort = null;
+
+const isPackaged = app.isPackaged;
+const isDev = process.env.ELECTRON_DEV === '1';
+const iconPath = path.join(__dirname, 'build', 'icon.png');
+
+function getResourcePath(...segments) {
+ if (isPackaged) {
+ return path.join(process.resourcesPath, ...segments);
+ }
+ return path.join(__dirname, '..', ...segments);
+}
+
+function getPythonPath() {
+ if (isPackaged) {
+ const envPath = path.join(process.resourcesPath, 'python-env');
+ return path.join(envPath, 'bin', 'python3');
+ }
+ const venvPython = path.join(__dirname, '..', 'backend', '.venv', 'bin', 'python3');
+ return venvPython;
+}
+
+function waitForBackend(port, timeoutMs = 60000) {
+ const start = Date.now();
+ return new Promise((resolve, reject) => {
+ function check() {
+ if (Date.now() - start > timeoutMs) {
+ return reject(new Error('Backend startup timed out'));
+ }
+ const req = http.get(`http://127.0.0.1:${port}/api/health/check`, (res) => {
+ if (res.statusCode === 200) {
+ resolve();
+ } else {
+ setTimeout(check, 500);
+ }
+ });
+ req.on('error', () => setTimeout(check, 500));
+ req.setTimeout(2000, () => {
+ req.destroy();
+ setTimeout(check, 500);
+ });
+ }
+ check();
+ });
+}
+
+async function startBackend() {
+ backendPort = await getPort({ port: getPort.makeRange(8324, 8424) });
+
+ const pythonPath = getPythonPath();
+ const backendDir = getResourcePath('backend');
+ const projectRoot = isPackaged ? process.resourcesPath : path.join(__dirname, '..');
+
+ const env = {
+ ...process.env,
+ OPENSWARM_PACKAGED: isPackaged ? '1' : '0',
+ OPENSWARM_PORT: String(backendPort),
+ PYTHONDONTWRITEBYTECODE: '1',
+ };
+
+ if (isPackaged) {
+ const pythonEnvSitePackages = path.join(
+ process.resourcesPath, 'python-env', 'lib',
+ 'python3.13', 'site-packages'
+ );
+ const debuggerDir = getResourcePath('debugger');
+ env.PYTHONPATH = [projectRoot, debuggerDir, pythonEnvSitePackages].join(':');
+ }
+
+ console.log(`Starting backend: ${pythonPath} on port ${backendPort}`);
+ console.log(`Project root: ${projectRoot}`);
+
+ backendProcess = spawn(
+ pythonPath,
+ ['-m', 'uvicorn', 'backend.main:app', '--host', '127.0.0.1', '--port', String(backendPort)],
+ {
+ cwd: projectRoot,
+ env,
+ stdio: ['pipe', 'pipe', 'pipe'],
+ }
+ );
+
+ backendProcess.stdout.on('data', (data) => {
+ const text = data.toString();
+ process.stdout.write(`[backend] ${text}`);
+ });
+
+ backendProcess.stderr.on('data', (data) => {
+ const text = data.toString();
+ process.stderr.write(`[backend] ${text}`);
+ });
+
+ backendProcess.on('exit', (code) => {
+ console.log(`Backend exited with code ${code}`);
+ if (code !== 0 && code !== null && mainWindow) {
+ mainWindow.webContents.executeJavaScript(
+ `document.title = "OpenSwarm (backend crashed)";`
+ );
+ }
+ });
+
+ await waitForBackend(backendPort);
+ console.log(`Backend ready on port ${backendPort}`);
+}
+
+function createWindow() {
+ mainWindow = new BrowserWindow({
+ width: 1400,
+ height: 900,
+ minWidth: 800,
+ minHeight: 600,
+ title: 'OpenSwarm',
+ icon: iconPath,
+ titleBarStyle: 'hiddenInset',
+ webPreferences: {
+ preload: path.join(__dirname, 'preload.js'),
+ nodeIntegration: false,
+ contextIsolation: true,
+ webviewTag: true,
+ },
+ });
+
+ if (isDev) {
+ mainWindow.loadURL(`http://localhost:3000`);
+ } else {
+ const frontendPath = getResourcePath('frontend', 'index.html');
+ mainWindow.loadFile(frontendPath);
+ }
+
+ mainWindow.on('closed', () => {
+ mainWindow = null;
+ });
+}
+
+function setupAutoUpdater() {
+ autoUpdater.autoDownload = false;
+ autoUpdater.autoInstallOnAppQuit = true;
+
+ autoUpdater.on('update-available', (info) => {
+ console.log(`Update available: ${info.version}`);
+ if (mainWindow) {
+ mainWindow.webContents.executeJavaScript(
+ `window.__OPENSWARM_UPDATE_AVAILABLE__ = ${JSON.stringify(info)};`
+ );
+ }
+ autoUpdater.downloadUpdate();
+ });
+
+ autoUpdater.on('update-downloaded', (info) => {
+ console.log(`Update downloaded: ${info.version}`);
+ if (mainWindow) {
+ mainWindow.webContents.executeJavaScript(
+ `window.__OPENSWARM_UPDATE_DOWNLOADED__ = ${JSON.stringify(info)};`
+ );
+ }
+ });
+
+ autoUpdater.on('error', (err) => {
+ console.error('Auto-update error:', err);
+ });
+
+ autoUpdater.checkForUpdates().catch((err) => {
+ console.log('Update check skipped:', err.message);
+ });
+}
+
+function killBackend() {
+ if (backendProcess) {
+ console.log('Killing backend process...');
+ backendProcess.kill('SIGTERM');
+ setTimeout(() => {
+ if (backendProcess && !backendProcess.killed) {
+ backendProcess.kill('SIGKILL');
+ }
+ }, 3000);
+ backendProcess = null;
+ }
+}
+
+app.whenReady().then(async () => {
+ if (process.platform === 'darwin' && !isPackaged) {
+ try { app.dock.setIcon(iconPath); } catch (_) {}
+ }
+
+ try {
+ if (isDev) {
+ backendPort = parseInt(process.env.OPENSWARM_PORT || '8324', 10);
+ console.log(`Dev mode: using existing backend on port ${backendPort}`);
+ } else {
+ await startBackend();
+ }
+ createWindow();
+ if (!isDev) {
+ setupAutoUpdater();
+ }
+ } catch (err) {
+ console.error('Failed to start:', err);
+ app.quit();
+ }
+});
+
+app.on('window-all-closed', () => {
+ if (!isDev) killBackend();
+ app.quit();
+});
+
+app.on('will-quit', () => {
+ if (!isDev) killBackend();
+});
+
+app.on('activate', () => {
+ if (BrowserWindow.getAllWindows().length === 0 && backendPort) {
+ createWindow();
+ }
+});
+
+ipcMain.handle('get-backend-port', () => backendPort);
diff --git a/electron/package-lock.json b/electron/package-lock.json
new file mode 100644
index 00000000..5ec26fd8
--- /dev/null
+++ b/electron/package-lock.json
@@ -0,0 +1,5373 @@
+{
+ "name": "openswarm",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "openswarm",
+ "version": "1.0.0",
+ "dependencies": {
+ "electron-updater": "^6.3.0",
+ "get-port": "^5.1.1"
+ },
+ "devDependencies": {
+ "@electron/notarize": "^3.1.1",
+ "electron": "^33.0.0",
+ "electron-builder": "^25.1.0"
+ }
+ },
+ "node_modules/@develar/schema-utils": {
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz",
+ "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.0",
+ "ajv-keywords": "^3.4.1"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/@electron/asar": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz",
+ "integrity": "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^5.0.0",
+ "glob": "^7.1.6",
+ "minimatch": "^3.0.4"
+ },
+ "bin": {
+ "asar": "bin/asar.js"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/@electron/asar/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@electron/asar/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@electron/asar/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@electron/get": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz",
+ "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "got": "^11.8.5",
+ "progress": "^2.0.3",
+ "semver": "^6.2.0",
+ "sumchecker": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "global-agent": "^3.0.0"
+ }
+ },
+ "node_modules/@electron/notarize": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-3.1.1.tgz",
+ "integrity": "sha512-uQQSlOiJnqRkTL1wlEBAxe90nVN/Fc/hEmk0bqpKk8nKjV1if/tXLHKUPePtv9Xsx90PtZU8aidx5lAiOpjkQQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "promise-retry": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 22.12.0"
+ }
+ },
+ "node_modules/@electron/osx-sign": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz",
+ "integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "compare-version": "^0.1.2",
+ "debug": "^4.3.4",
+ "fs-extra": "^10.0.0",
+ "isbinaryfile": "^4.0.8",
+ "minimist": "^1.2.6",
+ "plist": "^3.0.5"
+ },
+ "bin": {
+ "electron-osx-flat": "bin/electron-osx-flat.js",
+ "electron-osx-sign": "bin/electron-osx-sign.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@electron/osx-sign/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@electron/osx-sign/node_modules/isbinaryfile": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
+ "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/gjtorikian/"
+ }
+ },
+ "node_modules/@electron/osx-sign/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@electron/osx-sign/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@electron/rebuild": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.1.tgz",
+ "integrity": "sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@malept/cross-spawn-promise": "^2.0.0",
+ "chalk": "^4.0.0",
+ "debug": "^4.1.1",
+ "detect-libc": "^2.0.1",
+ "fs-extra": "^10.0.0",
+ "got": "^11.7.0",
+ "node-abi": "^3.45.0",
+ "node-api-version": "^0.2.0",
+ "node-gyp": "^9.0.0",
+ "ora": "^5.1.0",
+ "read-binary-file-arch": "^1.0.6",
+ "semver": "^7.3.5",
+ "tar": "^6.0.5",
+ "yargs": "^17.0.1"
+ },
+ "bin": {
+ "electron-rebuild": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=12.13.0"
+ }
+ },
+ "node_modules/@electron/rebuild/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@electron/rebuild/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@electron/rebuild/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@electron/rebuild/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@electron/universal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.1.tgz",
+ "integrity": "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@electron/asar": "^3.2.7",
+ "@malept/cross-spawn-promise": "^2.0.0",
+ "debug": "^4.3.1",
+ "dir-compare": "^4.2.0",
+ "fs-extra": "^11.1.1",
+ "minimatch": "^9.0.3",
+ "plist": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=16.4"
+ }
+ },
+ "node_modules/@electron/universal/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@electron/universal/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@electron/universal/node_modules/fs-extra": {
+ "version": "11.3.4",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz",
+ "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/@electron/universal/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@electron/universal/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@electron/universal/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@gar/promisify": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@malept/cross-spawn-promise": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz",
+ "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/malept"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund"
+ }
+ ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "cross-spawn": "^7.0.1"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/@malept/flatpak-bundler": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz",
+ "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "fs-extra": "^9.0.0",
+ "lodash": "^4.17.15",
+ "tmp-promise": "^3.0.2"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@malept/flatpak-bundler/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@npmcli/fs": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
+ "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@gar/promisify": "^1.1.3",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@npmcli/fs/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@npmcli/move-file": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
+ "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==",
+ "deprecated": "This functionality has been moved to @npmcli/fs",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "defer-to-connect": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.12",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
+ "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/@types/fs-extra": {
+ "version": "9.0.13",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
+ "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "20.19.37",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz",
+ "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@types/plist": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz",
+ "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*",
+ "xmlbuilder": ">=11.0.1"
+ }
+ },
+ "node_modules/@types/responselike": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
+ "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/verror": {
+ "version": "1.10.11",
+ "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.11.tgz",
+ "integrity": "sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz",
+ "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/7zip-bin": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz",
+ "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/agentkeepalive": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz",
+ "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "humanize-ms": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/app-builder-bin": {
+ "version": "5.0.0-alpha.10",
+ "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-5.0.0-alpha.10.tgz",
+ "integrity": "sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/app-builder-lib": {
+ "version": "25.1.8",
+ "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-25.1.8.tgz",
+ "integrity": "sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@develar/schema-utils": "~2.6.5",
+ "@electron/notarize": "2.5.0",
+ "@electron/osx-sign": "1.3.1",
+ "@electron/rebuild": "3.6.1",
+ "@electron/universal": "2.0.1",
+ "@malept/flatpak-bundler": "^0.4.0",
+ "@types/fs-extra": "9.0.13",
+ "async-exit-hook": "^2.0.1",
+ "bluebird-lst": "^1.0.9",
+ "builder-util": "25.1.7",
+ "builder-util-runtime": "9.2.10",
+ "chromium-pickle-js": "^0.2.0",
+ "config-file-ts": "0.2.8-rc1",
+ "debug": "^4.3.4",
+ "dotenv": "^16.4.5",
+ "dotenv-expand": "^11.0.6",
+ "ejs": "^3.1.8",
+ "electron-publish": "25.1.7",
+ "form-data": "^4.0.0",
+ "fs-extra": "^10.1.0",
+ "hosted-git-info": "^4.1.0",
+ "is-ci": "^3.0.0",
+ "isbinaryfile": "^5.0.0",
+ "js-yaml": "^4.1.0",
+ "json5": "^2.2.3",
+ "lazy-val": "^1.0.5",
+ "minimatch": "^10.0.0",
+ "resedit": "^1.7.0",
+ "sanitize-filename": "^1.6.3",
+ "semver": "^7.3.8",
+ "tar": "^6.1.12",
+ "temp-file": "^3.4.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "dmg-builder": "25.1.8",
+ "electron-builder-squirrel-windows": "25.1.8"
+ }
+ },
+ "node_modules/app-builder-lib/node_modules/@electron/notarize": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz",
+ "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "fs-extra": "^9.0.1",
+ "promise-retry": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/app-builder-lib/node_modules/@electron/notarize/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/app-builder-lib/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/app-builder-lib/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/app-builder-lib/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/app-builder-lib/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/aproba": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz",
+ "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/archiver": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz",
+ "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "archiver-utils": "^2.1.0",
+ "async": "^3.2.4",
+ "buffer-crc32": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "readdir-glob": "^1.1.2",
+ "tar-stream": "^2.2.0",
+ "zip-stream": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/archiver-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
+ "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.0",
+ "lazystream": "^1.0.0",
+ "lodash.defaults": "^4.2.0",
+ "lodash.difference": "^4.5.0",
+ "lodash.flatten": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.union": "^4.6.0",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/archiver-utils/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/are-we-there-yet": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
+ "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
+ "deprecated": "This package is no longer supported.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/async-exit-hook": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
+ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/bluebird-lst": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz",
+ "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bluebird": "^3.5.5"
+ }
+ },
+ "node_modules/boolean": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
+ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+ "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/builder-util": {
+ "version": "25.1.7",
+ "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-25.1.7.tgz",
+ "integrity": "sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/debug": "^4.1.6",
+ "7zip-bin": "~5.2.0",
+ "app-builder-bin": "5.0.0-alpha.10",
+ "bluebird-lst": "^1.0.9",
+ "builder-util-runtime": "9.2.10",
+ "chalk": "^4.1.2",
+ "cross-spawn": "^7.0.3",
+ "debug": "^4.3.4",
+ "fs-extra": "^10.1.0",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "is-ci": "^3.0.0",
+ "js-yaml": "^4.1.0",
+ "source-map-support": "^0.5.19",
+ "stat-mode": "^1.0.0",
+ "temp-file": "^3.4.0"
+ }
+ },
+ "node_modules/builder-util-runtime": {
+ "version": "9.2.10",
+ "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.10.tgz",
+ "integrity": "sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4",
+ "sax": "^1.2.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/builder-util/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/builder-util/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/builder-util/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/cacache": {
+ "version": "16.1.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
+ "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^2.1.0",
+ "@npmcli/move-file": "^2.0.0",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.1.0",
+ "glob": "^8.0.1",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "mkdirp": "^1.0.4",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^9.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/cacache/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cacache/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/cacache/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cacache/node_modules/minimatch": {
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.6.0"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chromium-pickle-js": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
+ "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-truncate": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
+ "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "slice-ansi": "^3.0.0",
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+ "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/compare-version": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
+ "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/compress-commons": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz",
+ "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "buffer-crc32": "^0.2.13",
+ "crc32-stream": "^4.0.2",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/config-file-ts": {
+ "version": "0.2.8-rc1",
+ "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz",
+ "integrity": "sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "glob": "^10.3.12",
+ "typescript": "^5.4.3"
+ }
+ },
+ "node_modules/config-file-ts/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/config-file-ts/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/config-file-ts/node_modules/glob": {
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/config-file-ts/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/config-file-ts/node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/crc": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
+ "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "buffer": "^5.1.0"
+ }
+ },
+ "node_modules/crc-32": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "bin": {
+ "crc32": "bin/crc32.njs"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/crc32-stream": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz",
+ "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "readable-stream": "^3.4.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/dir-compare": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz",
+ "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimatch": "^3.0.5",
+ "p-limit": "^3.1.0 "
+ }
+ },
+ "node_modules/dir-compare/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/dir-compare/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/dir-compare/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/dmg-builder": {
+ "version": "25.1.8",
+ "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-25.1.8.tgz",
+ "integrity": "sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "app-builder-lib": "25.1.8",
+ "builder-util": "25.1.7",
+ "builder-util-runtime": "9.2.10",
+ "fs-extra": "^10.1.0",
+ "iconv-lite": "^0.6.2",
+ "js-yaml": "^4.1.0"
+ },
+ "optionalDependencies": {
+ "dmg-license": "^1.0.11"
+ }
+ },
+ "node_modules/dmg-builder/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/dmg-builder/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/dmg-builder/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/dmg-license": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz",
+ "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "dependencies": {
+ "@types/plist": "^3.0.1",
+ "@types/verror": "^1.10.3",
+ "ajv": "^6.10.0",
+ "crc": "^3.8.0",
+ "iconv-corefoundation": "^1.1.7",
+ "plist": "^3.0.4",
+ "smart-buffer": "^4.0.2",
+ "verror": "^1.10.0"
+ },
+ "bin": {
+ "dmg-license": "bin/dmg-license.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/dotenv-expand": {
+ "version": "11.0.7",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz",
+ "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dotenv": "^16.4.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ejs": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "jake": "^10.8.5"
+ },
+ "bin": {
+ "ejs": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/electron": {
+ "version": "33.4.11",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-33.4.11.tgz",
+ "integrity": "sha512-xmdAs5QWRkInC7TpXGNvzo/7exojubk+72jn1oJL7keNeIlw7xNglf8TGtJtkR4rWC5FJq0oXiIXPS9BcK2Irg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@electron/get": "^2.0.0",
+ "@types/node": "^20.9.0",
+ "extract-zip": "^2.0.1"
+ },
+ "bin": {
+ "electron": "cli.js"
+ },
+ "engines": {
+ "node": ">= 12.20.55"
+ }
+ },
+ "node_modules/electron-builder": {
+ "version": "25.1.8",
+ "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-25.1.8.tgz",
+ "integrity": "sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "app-builder-lib": "25.1.8",
+ "builder-util": "25.1.7",
+ "builder-util-runtime": "9.2.10",
+ "chalk": "^4.1.2",
+ "dmg-builder": "25.1.8",
+ "fs-extra": "^10.1.0",
+ "is-ci": "^3.0.0",
+ "lazy-val": "^1.0.5",
+ "simple-update-notifier": "2.0.0",
+ "yargs": "^17.6.2"
+ },
+ "bin": {
+ "electron-builder": "cli.js",
+ "install-app-deps": "install-app-deps.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/electron-builder-squirrel-windows": {
+ "version": "25.1.8",
+ "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-25.1.8.tgz",
+ "integrity": "sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "app-builder-lib": "25.1.8",
+ "archiver": "^5.3.1",
+ "builder-util": "25.1.7",
+ "fs-extra": "^10.1.0"
+ }
+ },
+ "node_modules/electron-builder-squirrel-windows/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/electron-builder-squirrel-windows/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/electron-builder-squirrel-windows/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/electron-builder/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/electron-builder/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/electron-builder/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/electron-publish": {
+ "version": "25.1.7",
+ "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-25.1.7.tgz",
+ "integrity": "sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/fs-extra": "^9.0.11",
+ "builder-util": "25.1.7",
+ "builder-util-runtime": "9.2.10",
+ "chalk": "^4.1.2",
+ "fs-extra": "^10.1.0",
+ "lazy-val": "^1.0.5",
+ "mime": "^2.5.2"
+ }
+ },
+ "node_modules/electron-publish/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/electron-publish/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/electron-publish/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/electron-updater": {
+ "version": "6.8.3",
+ "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.8.3.tgz",
+ "integrity": "sha512-Z6sgw3jgbikWKXei1ENdqFOxBP0WlXg3TtKfz0rgw2vIZFJUyI4pD7ZN7jrkm7EoMK+tcm/qTnPUdqfZukBlBQ==",
+ "license": "MIT",
+ "dependencies": {
+ "builder-util-runtime": "9.5.1",
+ "fs-extra": "^10.1.0",
+ "js-yaml": "^4.1.0",
+ "lazy-val": "^1.0.5",
+ "lodash.escaperegexp": "^4.1.2",
+ "lodash.isequal": "^4.5.0",
+ "semver": "~7.7.3",
+ "tiny-typed-emitter": "^2.1.0"
+ }
+ },
+ "node_modules/electron-updater/node_modules/builder-util-runtime": {
+ "version": "9.5.1",
+ "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.5.1.tgz",
+ "integrity": "sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4",
+ "sax": "^1.2.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/electron-updater/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/electron-updater/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/electron-updater/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/electron-updater/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/err-code": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/exponential-backoff": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
+ "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/extsprintf": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz",
+ "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==",
+ "dev": true,
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/filelist": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz",
+ "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "minimatch": "^5.0.1"
+ }
+ },
+ "node_modules/filelist/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/filelist/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/filelist/node_modules/minimatch": {
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gauge": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
+ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+ "deprecated": "This package is no longer supported.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
+ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/global-agent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
+ "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "es6-error": "^4.1.1",
+ "matcher": "^3.0.0",
+ "roarr": "^2.15.3",
+ "semver": "^7.3.2",
+ "serialize-error": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/global-agent/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/got": {
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/humanize-ms": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.0.0"
+ }
+ },
+ "node_modules/iconv-corefoundation": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz",
+ "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "dependencies": {
+ "cli-truncate": "^2.1.0",
+ "node-addon-api": "^1.6.3"
+ },
+ "engines": {
+ "node": "^8.11.2 || >=10"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ip-address": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/is-ci": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
+ "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ci-info": "^3.2.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-lambda": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
+ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/isbinaryfile": {
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.7.tgz",
+ "integrity": "sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 18.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/gjtorikian/"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jake": {
+ "version": "10.9.4",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz",
+ "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "async": "^3.2.6",
+ "filelist": "^1.0.4",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "jake": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "license": "MIT",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/lazy-val": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz",
+ "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==",
+ "license": "MIT"
+ },
+ "node_modules/lazystream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
+ "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "readable-stream": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.6.3"
+ }
+ },
+ "node_modules/lazystream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/lazystream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/lazystream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
+ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/lodash.difference": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
+ "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/lodash.escaperegexp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
+ "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
+ "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/lodash.union": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
+ "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-fetch-happen": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
+ "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^16.1.0",
+ "http-cache-semantics": "^4.1.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-fetch": "^2.0.3",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^9.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/matcher": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
+ "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+ "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-fetch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
+ "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.1.6",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+ "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/node-abi": {
+ "version": "3.88.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.88.0.tgz",
+ "integrity": "sha512-At6b4UqIEVudaqPsXjmUO1r/N5BUr4yhDGs5PkBE8/oG5+TfLPhFechiskFsnT6Ql0VfUXbalUUCbfXxtj7K+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-abi/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
+ "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/node-api-version": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz",
+ "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.3.5"
+ }
+ },
+ "node_modules/node-api-version/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-gyp": {
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz",
+ "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^10.0.3",
+ "nopt": "^6.0.0",
+ "npmlog": "^6.0.0",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
+ "which": "^2.0.2"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^12.13 || ^14.13 || >=16"
+ }
+ },
+ "node_modules/node-gyp/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
+ "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^1.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npmlog": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+ "deprecated": "This package is no longer supported.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/path-scurry/node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/pe-library": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz",
+ "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/jet2jet"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/plist": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
+ "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@xmldom/xmldom": "^0.8.8",
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^15.1.1"
+ },
+ "engines": {
+ "node": ">=10.4.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/promise-retry": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+ "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/pump": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-binary-file-arch": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz",
+ "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "bin": {
+ "read-binary-file-arch": "cli.js"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdir-glob": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
+ "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "minimatch": "^5.1.0"
+ }
+ },
+ "node_modules/readdir-glob/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/readdir-glob/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/readdir-glob/node_modules/minimatch": {
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resedit": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz",
+ "integrity": "sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pe-library": "^0.4.1"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/jet2jet"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/responselike": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lowercase-keys": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/roarr": {
+ "version": "2.15.4",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
+ "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "detect-node": "^2.0.4",
+ "globalthis": "^1.0.1",
+ "json-stringify-safe": "^5.0.1",
+ "semver-compare": "^1.0.0",
+ "sprintf-js": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/sanitize-filename": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
+ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "dev": true,
+ "license": "WTFPL OR ISC",
+ "dependencies": {
+ "truncate-utf8-bytes": "^1.0.0"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz",
+ "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=11.0.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/serialize-error": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
+ "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "type-fest": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/simple-update-notifier": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
+ "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/simple-update-notifier/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
+ "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/socks-proxy-agent/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true
+ },
+ "node_modules/ssri": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
+ "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/stat-mode": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz",
+ "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sumchecker": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
+ "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "debug": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/temp-file": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz",
+ "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "async-exit-hook": "^2.0.1",
+ "fs-extra": "^10.0.0"
+ }
+ },
+ "node_modules/temp-file/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/temp-file/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/temp-file/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/tiny-typed-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz",
+ "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==",
+ "license": "MIT"
+ },
+ "node_modules/tmp": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
+ "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/tmp-promise": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz",
+ "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tmp": "^0.2.0"
+ }
+ },
+ "node_modules/truncate-utf8-bytes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
+ "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
+ "dev": true,
+ "license": "WTFPL",
+ "dependencies": {
+ "utf8-byte-length": "^1.0.1"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/unique-filename": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
+ "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
+ "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/utf8-byte-length": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz",
+ "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==",
+ "dev": true,
+ "license": "(WTFPL OR MIT)"
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/verror": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz",
+ "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wide-align": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^1.0.2 || 2 || 3 || 4"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/xmlbuilder": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
+ "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zip-stream": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz",
+ "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "archiver-utils": "^3.0.4",
+ "compress-commons": "^4.1.2",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/zip-stream/node_modules/archiver-utils": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz",
+ "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glob": "^7.2.3",
+ "graceful-fs": "^4.2.0",
+ "lazystream": "^1.0.0",
+ "lodash.defaults": "^4.2.0",
+ "lodash.difference": "^4.5.0",
+ "lodash.flatten": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.union": "^4.6.0",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ }
+ }
+}
diff --git a/electron/package.json b/electron/package.json
new file mode 100644
index 00000000..3c31d9a1
--- /dev/null
+++ b/electron/package.json
@@ -0,0 +1,114 @@
+{
+ "name": "openswarm",
+ "version": "1.0.0",
+ "description": "OpenSwarm — AI Agent Orchestrator",
+ "main": "main.js",
+ "scripts": {
+ "start": "electron .",
+ "dev": "ELECTRON_DEV=1 electron .",
+ "dist": "electron-builder --mac --publish never",
+ "dist:publish": "electron-builder --mac --publish always",
+ "dist:all": "electron-builder --mac --win --linux"
+ },
+ "dependencies": {
+ "electron-updater": "^6.3.0",
+ "get-port": "^5.1.1"
+ },
+ "devDependencies": {
+ "@electron/notarize": "^3.1.1",
+ "electron": "^33.0.0",
+ "electron-builder": "^25.1.0"
+ },
+ "build": {
+ "appId": "com.clusterlabs.openswarm",
+ "productName": "OpenSwarm",
+ "directories": {
+ "output": "dist"
+ },
+ "icon": "build/icon.png",
+ "mac": {
+ "icon": "build/icon.icns",
+ "target": [
+ {
+ "target": "dmg",
+ "arch": [
+ "arm64",
+ "x64"
+ ]
+ },
+ {
+ "target": "zip",
+ "arch": [
+ "arm64",
+ "x64"
+ ]
+ }
+ ],
+ "category": "public.app-category.developer-tools",
+ "hardenedRuntime": true,
+ "entitlements": "build/entitlements.mac.plist",
+ "entitlementsInherit": "build/entitlements.mac.plist"
+ },
+ "dmg": {
+ "title": "OpenSwarm",
+ "contents": [
+ {
+ "x": 130,
+ "y": 220
+ },
+ {
+ "x": 410,
+ "y": 220,
+ "type": "link",
+ "path": "/Applications"
+ }
+ ]
+ },
+ "extraResources": [
+ {
+ "from": "../frontend/dist",
+ "to": "frontend",
+ "filter": [
+ "**/*"
+ ]
+ },
+ {
+ "from": "../backend",
+ "to": "backend",
+ "filter": [
+ "**/*",
+ "!__pycache__/**",
+ "!**/__pycache__/**",
+ "!.venv/**",
+ "!*.pyc"
+ ]
+ },
+ {
+ "from": "../debugger",
+ "to": "debugger",
+ "filter": [
+ "**/*",
+ "!__pycache__/**",
+ "!**/__pycache__/**",
+ "!*.pyc",
+ "!.venv/**",
+ "!**/.venv/**",
+ "!**/node_modules/**"
+ ]
+ },
+ {
+ "from": "python-env",
+ "to": "python-env",
+ "filter": [
+ "**/*"
+ ]
+ }
+ ],
+ "publish": {
+ "provider": "github",
+ "owner": "openswarm-ai",
+ "repo": "production"
+ },
+ "afterSign": "scripts/notarize.js"
+ }
+}
diff --git a/electron/preload.js b/electron/preload.js
new file mode 100644
index 00000000..e523d844
--- /dev/null
+++ b/electron/preload.js
@@ -0,0 +1,11 @@
+const { contextBridge, ipcRenderer } = require('electron');
+
+(async () => {
+ const port = await ipcRenderer.invoke('get-backend-port');
+
+ contextBridge.exposeInMainWorld('__OPENSWARM_PORT__', port);
+
+ contextBridge.exposeInMainWorld('openswarm', {
+ getBackendPort: () => port,
+ });
+})();
diff --git a/electron/scripts/notarize.js b/electron/scripts/notarize.js
new file mode 100644
index 00000000..76bf1c05
--- /dev/null
+++ b/electron/scripts/notarize.js
@@ -0,0 +1,31 @@
+const { notarize } = require('@electron/notarize');
+
+exports.default = async function notarizing(context) {
+ const { electronPlatformName, appOutDir } = context;
+ if (electronPlatformName !== 'darwin') return;
+
+ if (process.env.CSC_IDENTITY_AUTO_DISCOVERY === 'false') {
+ console.log('Skipping notarization (CSC_IDENTITY_AUTO_DISCOVERY=false)');
+ return;
+ }
+
+ if (!process.env.APPLE_ID || !process.env.APPLE_TEAM_ID) {
+ console.log('Skipping notarization (APPLE_ID or APPLE_TEAM_ID not set)');
+ return;
+ }
+
+ const appName = context.packager.appInfo.productFilename;
+ const appPath = `${appOutDir}/${appName}.app`;
+
+ console.log(`Notarizing ${appPath}...`);
+
+ await notarize({
+ appBundleId: 'com.clusterlabs.openswarm',
+ appPath,
+ appleId: process.env.APPLE_ID,
+ appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD,
+ teamId: process.env.APPLE_TEAM_ID,
+ });
+
+ console.log('Notarization complete.');
+};
diff --git a/frontend/package.json b/frontend/package.json
index 52f0e3dc..a13fa95c 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -41,6 +41,7 @@
"@types/react-dom": "^18.2.0",
"@types/react-redux": "^7.1.34",
"babel-loader": "^9.2.1",
+ "copy-webpack-plugin": "^14.0.0",
"css-loader": "^6.8.0",
"css-modules-types-loader": "^0.6.10",
"html-webpack-plugin": "^5.5.0",
diff --git a/frontend/public/index.html b/frontend/public/index.html
index 1c7c3101..5294c8ad 100644
--- a/frontend/public/index.html
+++ b/frontend/public/index.html
@@ -4,8 +4,8 @@
Open Swarm
-
-
+
+
diff --git a/frontend/run/dev.sh b/frontend/run.sh
similarity index 78%
rename from frontend/run/dev.sh
rename to frontend/run.sh
index b81fe212..0fa200ab 100755
--- a/frontend/run/dev.sh
+++ b/frontend/run.sh
@@ -13,14 +13,14 @@ else
# echo "NOT in macOS server START"
fi
chmod +x "$DEV_ABSPATH"
-source "$(dirname "$DEV_ABSPATH")/_utils.sh"
+FRONTEND_DIR_ABSPATH="$(dirname "$DEV_ABSPATH")"
-formatted_echo --green "Installing dependencies..."
+echo "Installing dependencies..."
cd "$FRONTEND_DIR_ABSPATH"
npm install
-formatted_echo --green "Building with development mode..."
+echo "Building with development mode..."
npm run dev
# exit back to the dir that we were in before
diff --git a/frontend/run/_utils.sh b/frontend/run/_utils.sh
deleted file mode 100755
index 2d24af62..00000000
--- a/frontend/run/_utils.sh
+++ /dev/null
@@ -1,202 +0,0 @@
-#!/bin/bash
-# Flag processing function with namespacing and global variable declaration
-UTILS_FILE_ABSPATH="$(readlink -f "${BASH_SOURCE[0]}")"
-if [[ "$OSTYPE" == "darwin"* ]]; then
- # echo "In macOS utils sed START"
- # echo "UTILS_ABSPATH: $UTILS_FILE_ABSPATH"
- sed -i '' 's/\r//g' "$UTILS_FILE_ABSPATH"
- # echo "In macOS utils sed END"
-else
- # echo "NOT in macOS utils START"
- # echo "UTILS_ABSPATH: $UTILS_FILE_ABSPATH"
- sed -i 's/\r//g' "$UTILS_FILE_ABSPATH"
- # echo "NOT in macOS utils END"
-fi
-chmod +x "$UTILS_FILE_ABSPATH"
-
-RUN_DIR_ABSPATH="$(dirname "$UTILS_FILE_ABSPATH")"
-FRONTEND_DIR_ABSPATH="$(dirname "$RUN_DIR_ABSPATH")"
-
-formatted_error() {
- # Arguments: error message and array of conflicting flags
- local initial_message="$1"
- shift
- local conflicting_flags=("$@")
-
- # Red color for the error message box
- local COLOR_CODE='\033[0;31m'
- local NC='\033[0m' # No Color
-
- # Start the error message with the initial message
- local error_message="$initial_message"
-
- # Add each conflicting flag on a new line with indentation
- for conflict in "${conflicting_flags[@]}"; do
- error_message+="\n $conflict" # Replacing `\t` with four spaces
- done
-
- # Prepare for printing by finding max length of each line in the message
- local lines=()
- local max_length=0
-
- # Use printf to interpret new lines and calculate max length with spaces instead of tabs
- while IFS= read -r line; do
- # Substitute tabs with spaces for consistent width measurement
- local line_with_spaces="${line//$'\t'/ }"
- lines+=("$line_with_spaces")
- if (( ${#line_with_spaces} > max_length )); then
- max_length=${#line_with_spaces}
- fi
- done <<< "$(printf "$error_message")"
-
- # Create the top and bottom borders based on the maximum line length
- local border=$(printf '%*s' "$((max_length + 4))" '' | tr ' ' '-')
-
- # Print the formatted error message with a red box
- printf "\n${COLOR_CODE}%s${NC}\n" "$border"
- for line in "${lines[@]}"; do
- printf "${COLOR_CODE}| %-*s |${NC}\n" "$max_length" "$line"
- done
- printf "${COLOR_CODE}| %-*s |${NC}\n" "$max_length" ""
- printf "${COLOR_CODE}%s${NC}\n" "$border"
-}
-
-
-function process_flags() {
- local -n flags_to_commands="$1" # Reference to the dictionary of flags and commands
- local -n exclusives="$2" # Reference to the list of exclusive flag groups
- local namespace="$3" # Unique prefix for variables
- local calling_script_name="$(basename "$(readlink -f "${BASH_SOURCE[1]}")")"
- local caller_id="${FUNCNAME[1]}"
- local should_exit=false
- if [ "$caller_id" == "main" ]; then
- caller_id="$calling_script_name"
- fi
- # echo "caller_id: $caller_id"
- # echo "Initializing flags with namespace: $namespace"
-
- # Initialize flag variables with namespacing in the sourcing script context
- for flag in "${!flags_to_commands[@]}"; do
- # Convert flag to uppercase variable name and apply namespace, e.g., MYAPP_FLAG1
- local flag_var="${namespace}_${flag^^}" # Prefix and uppercase
- flag_var="${flag_var//-}" # Remove dashes
- eval "declare -g $flag_var=false" # Initialize as global false
-
- # Diagnostic output for each initialized variable
- # echo "Initialized $flag_var as false"
- done
-
- # echo "Parsing command line arguments: $@"
-
- # Parse command line arguments and set flags
- local unsupported_flags=()
- # local potential_typos=()
- for arg in "$@"; do
- # echo "Processing argument: $arg"
- if [[ -n "${flags_to_commands[$arg]}" ]]; then
- # echo "Flag found: $arg"
- local flag_var="${namespace}_${arg^^}" # Prefix and uppercase
- flag_var="${flag_var//-}" # Remove dashes
- eval "declare -g $flag_var=true" # Set as global true
- # echo "Set $flag_var to true"
- # echo "Executing command for $arg: ${flags_to_commands[$arg]}"
- eval "${flags_to_commands[$arg]}"
- else
- if [[ "$arg" == "-"* ]]; then
- # echo "Flag not found: $arg"
- unsupported_flags+=("$arg")
- if [[ -n "${flags_to_commands[-$arg]}" ]]; then
- # echo "Potential typo: $arg"
- unsupported_flags+=("\t*Note: Potential typo detected.")
- unsupported_flags+=("\tDid you mean: -$arg")
- fi
- fi
- fi
- done
- # Check exclusive flag groups for conflicts
- # echo "Checking exclusive flag groups"
- for group in "${exclusives[@]}"; do
- local count=0
- local conflicting_flags=()
- for flag in $group; do
- local flag_var="${namespace}_${flag^^}"
- flag_var="${flag_var//-}"
- if [[ "$(eval echo "\$$flag_var")" == "true" ]]; then
- conflicting_flags+=("$flag")
- # count=$((count + 1))
- # ec "$flag_var is true in exclusive group"
- fi
- done
- if (( ${#conflicting_flags[@]} > 1 )); then
- # echo "found conflicting flags"
- formatted_error "Error: $caller_id\n-----------------------------------------\nIncompatible flags:\nThe flags below cannot be used together\n-----------------------------------------\n" "${conflicting_flags[@]}"
- should_exit=true
- fi
- done
- # echo "should_exit: $should_exit"
- # echo "unsupported_flags: ${#unsupported_flags[@]}"
- if (( ${#unsupported_flags[@]} > 0 )); then
- # echo "found unsupported flags 2"
- formatted_error "Error: $caller_id\n-------------------------------------------------\nUnsupported flags:\nThe flags below are not supported by this script\n-------------------------------------------------\n" "${unsupported_flags[@]}"
- should_exit=true
- fi
- if [[ $should_exit == true ]]; then
- exit 1
- fi
-}
-
-
-
-formatted_echo() {
- local COLOR_CODE='\033[0m' # No Color
- local NC='\033[0m' # No Color variable
- # local message="$2"
- # If the second argument is empty, then theres no color specified, so we use the first argument as the message
- if [[ -z "$2" ]]; then
- message="$1"
- else
- message="$2"
- fi
-
- declare -A format_flags
- format_flags=(
- [--red]="COLOR_CODE='\033[0;31m'"
- [--green]="COLOR_CODE='\033[0;32m'"
- [--yellow]="COLOR_CODE='\033[0;33m'"
- [--blue]="COLOR_CODE='\033[0;34m'"
- [--purple]="COLOR_CODE='\033[0;35m'"
- [--cyan]="COLOR_CODE='\033[0;36m'"
- )
- exclusive_format_flags=(
- "--red --green --yellow --blue --purple --cyan"
- )
-
- # Pass the arguments with the namespace "FORMAT"
- process_flags format_flags exclusive_format_flags "FORMAT" "$@"
-
- # Process the message
- local text
- text=$(printf "%b" "$message")
-
- # Expand any escaped characters in the input (e.g., \n)
- local lines=()
- local max_length=0
-
- # Read the text line by line and find the maximum length
- while IFS= read -r line; do
- lines+=("$line")
- if (( ${#line} > max_length )); then
- max_length=${#line}
- fi
- done <<< "$text"
-
- # Create the top and bottom borders based on the maximum line length
- local border=$(printf '%*s' "$((max_length + 4))" '' | tr ' ' '-')
-
- # Print the formatted box with selected color
- printf "\n${COLOR_CODE}%s${NC}\n" "$border"
- for line in "${lines[@]}"; do
- printf "${COLOR_CODE}| %-*s |${NC}\n" "$max_length" "$line"
- done
- printf "${COLOR_CODE}%s${NC}\n" "$border"
-}
\ No newline at end of file
diff --git a/frontend/src/app/Main.tsx b/frontend/src/app/Main.tsx
index b6161048..7c213e95 100644
--- a/frontend/src/app/Main.tsx
+++ b/frontend/src/app/Main.tsx
@@ -1,6 +1,6 @@
import React, { useMemo, useEffect } from 'react';
import { Provider } from 'react-redux';
-import { BrowserRouter, Routes, Route } from 'react-router-dom';
+import { HashRouter, Routes, Route } from 'react-router-dom';
import { ThemeProvider as MuiThemeProvider, createTheme, CssBaseline } from '@mui/material';
import { store } from '../shared/state/store';
import { useAppDispatch } from '@/shared/hooks';
@@ -138,7 +138,7 @@ const ThemedApp: React.FC = () => {
return (
-
+
@@ -155,7 +155,7 @@ const ThemedApp: React.FC = () => {
-
+
);
};
diff --git a/frontend/src/app/components/DirectoryBrowser.tsx b/frontend/src/app/components/DirectoryBrowser.tsx
index 768832d0..00294dec 100644
--- a/frontend/src/app/components/DirectoryBrowser.tsx
+++ b/frontend/src/app/components/DirectoryBrowser.tsx
@@ -20,8 +20,9 @@ import InsertDriveFileOutlinedIcon from '@mui/icons-material/InsertDriveFileOutl
import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';
import { useClaudeTokens } from '@/shared/styles/ThemeContext';
import { BrowseResult } from '@/shared/state/settingsSlice';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/settings`;
+const SETTINGS_API = `${API_BASE}/settings`;
export interface ContextPath {
path: string;
@@ -48,7 +49,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe
setError(null);
setSelected(null);
try {
- const res = await fetch(`${API_BASE}/browse-directories?path=${encodeURIComponent(path)}`);
+ const res = await fetch(`${SETTINGS_API}/browse-directories?path=${encodeURIComponent(path)}`);
if (!res.ok) {
const data = await res.json();
throw new Error(data.detail || 'Failed to browse');
diff --git a/frontend/src/app/components/ElementSelectionContext.tsx b/frontend/src/app/components/ElementSelectionContext.tsx
index cfe88433..d42e5d1f 100644
--- a/frontend/src/app/components/ElementSelectionContext.tsx
+++ b/frontend/src/app/components/ElementSelectionContext.tsx
@@ -9,7 +9,7 @@ export interface SelectedElement {
computedStyles: Record;
screenshot?: string;
boundingRect: { x: number; y: number; width: number; height: number };
- semanticType?: 'agent-card' | 'message' | 'tool-call' | 'tool-group' | 'view-card' | 'dom-element';
+ semanticType?: 'agent-card' | 'message' | 'tool-call' | 'tool-group' | 'view-card' | 'browser-card' | 'dom-element';
semanticLabel?: string;
semanticData?: Record;
}
@@ -18,6 +18,8 @@ interface ElementSelectionContextValue {
selectMode: boolean;
toggleSelectMode: () => void;
setSelectMode: (active: boolean) => void;
+ excludeSelectId: string | null;
+ setExcludeSelectId: (id: string | null) => void;
selectedElements: SelectedElement[];
addSelectedElement: (el: SelectedElement) => void;
updateSelectedElement: (id: string, patch: Partial) => void;
@@ -34,11 +36,15 @@ export function useElementSelection() {
export const ElementSelectionProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
const [selectMode, setSelectMode] = useState(false);
+ const [excludeSelectId, setExcludeSelectId] = useState(null);
const [selectedElements, setSelectedElements] = useState([]);
const iframeRef = useRef(null);
const toggleSelectMode = useCallback(() => {
- setSelectMode((prev) => !prev);
+ setSelectMode((prev) => {
+ if (prev) setExcludeSelectId(null);
+ return !prev;
+ });
}, []);
const addSelectedElement = useCallback((el: SelectedElement) => {
@@ -66,6 +72,8 @@ export const ElementSelectionProvider: React.FC<{ children: React.ReactNode }> =
selectMode,
toggleSelectMode,
setSelectMode,
+ excludeSelectId,
+ setExcludeSelectId,
selectedElements,
addSelectedElement,
updateSelectedElement,
diff --git a/frontend/src/app/components/KeyboardShortcutsHelp.tsx b/frontend/src/app/components/KeyboardShortcutsHelp.tsx
index 117fc2ac..c634aaf2 100644
--- a/frontend/src/app/components/KeyboardShortcutsHelp.tsx
+++ b/frontend/src/app/components/KeyboardShortcutsHelp.tsx
@@ -10,6 +10,8 @@ const shortcuts = [
{ key: 'd', description: 'Go to Dashboard' },
{ key: 't', description: 'Go to Templates' },
{ key: '1-9', description: 'Open agent by position' },
+ { key: '⌘M', description: 'Add View' },
+ { key: '⌘O', description: 'History' },
{ key: 'Shift+A', description: 'Approve all pending' },
{ key: 'Shift+D', description: 'Deny all pending' },
{ key: '?', description: 'Show this help' },
diff --git a/frontend/src/app/components/Layout/AppShell.tsx b/frontend/src/app/components/Layout/AppShell.tsx
index dddc98ba..8319ed75 100644
--- a/frontend/src/app/components/Layout/AppShell.tsx
+++ b/frontend/src/app/components/Layout/AppShell.tsx
@@ -20,6 +20,9 @@ import ViewQuiltIcon from '@mui/icons-material/ViewQuilt';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import AddIcon from '@mui/icons-material/Add';
import SettingsIcon from '@mui/icons-material/Settings';
+import ViewSidebarOutlinedIcon from '@mui/icons-material/ViewSidebarOutlined';
+import ArrowBackOutlinedIcon from '@mui/icons-material/ArrowBackOutlined';
+import ArrowForwardOutlinedIcon from '@mui/icons-material/ArrowForwardOutlined';
import Settings from '@/app/pages/Settings/Settings';
import GlobalApprovalOverlay from '@/app/components/GlobalApprovalOverlay';
import { useAppDispatch, useAppSelector } from '@/shared/hooks';
@@ -42,6 +45,7 @@ const AppShell: React.FC = () => {
const navigate = useNavigate();
const location = useLocation();
const [dashboardsExpanded, setDashboardsExpanded] = useState(false);
+ const [sidebarCollapsed, setSidebarCollapsed] = useState(false);
const dashboardItems = useAppSelector((state) => state.dashboards.items);
const dashboardList = Object.values(dashboardItems).sort(
@@ -79,7 +83,101 @@ const AppShell: React.FC = () => {
};
return (
-
+
+ {/* Draggable title bar */}
+
+
+ setSidebarCollapsed((prev) => !prev)}
+ sx={{
+ WebkitAppRegion: 'no-drag',
+ color: c.text.tertiary,
+ p: 0.5,
+ borderRadius: 1,
+ '&:hover': { color: c.text.secondary, bgcolor: `${c.text.tertiary}14` },
+ }}
+ >
+
+
+
+
+ navigate(-1)}
+ sx={{
+ WebkitAppRegion: 'no-drag',
+ color: c.text.tertiary,
+ p: 0.5,
+ borderRadius: 1,
+ '&:hover': { color: c.text.secondary, bgcolor: `${c.text.tertiary}14` },
+ }}
+ >
+
+
+
+
+ navigate(1)}
+ sx={{
+ WebkitAppRegion: 'no-drag',
+ color: c.text.tertiary,
+ p: 0.5,
+ borderRadius: 1,
+ '&:hover': { color: c.text.secondary, bgcolor: `${c.text.tertiary}14` },
+ }}
+ >
+
+
+
+
+
+
+
+
+
+ OpenSwarm
+
+
+
+
+
+ {!sidebarCollapsed && (
{
flexDirection: 'column',
}}
>
-
-
-
-
- Open Swarm
-
-
- Agent Orchestrator
-
-
-
{
+ )}
+
diff --git a/frontend/src/app/components/useDomElementSelector.ts b/frontend/src/app/components/useDomElementSelector.ts
index fb2f4068..79031c0d 100644
--- a/frontend/src/app/components/useDomElementSelector.ts
+++ b/frontend/src/app/components/useDomElementSelector.ts
@@ -31,12 +31,16 @@ const SEMANTIC_LABELS: Record = {
'tool-call': 'Tool Call',
'tool-group': 'Tool Group',
'view-card': 'View',
+ 'browser-card': 'Browser',
};
-function findSelectableAncestor(target: Element): Element | null {
+function findSelectableAncestor(target: Element, excludeId?: string | null): Element | null {
let current: Element | null = target;
while (current) {
- if (current.hasAttribute(SELECT_ATTR)) return current;
+ if (current.hasAttribute(SELECT_ATTR)) {
+ if (excludeId && current.getAttribute(SELECT_ID_ATTR) === excludeId) return null;
+ return current;
+ }
current = current.parentElement;
}
return null;
@@ -114,6 +118,11 @@ export function useDomElementSelector(): DomSelectorState {
const isDraggingRef = useRef(false);
const dragBoundsRef = useRef<{ left: number; top: number; right: number; bottom: number } | null>(null);
+ const excludeIdRef = useRef(null);
+ useEffect(() => {
+ excludeIdRef.current = ctx?.excludeSelectId ?? null;
+ }, [ctx?.excludeSelectId]);
+
const selectedIdsRef = useRef(new Map());
useEffect(() => {
const map = new Map();
@@ -161,10 +170,12 @@ export function useDomElementSelector(): DomSelectorState {
const allSelectables = document.querySelectorAll(`[${SELECT_ATTR}]`);
const preview: DragPreviewElement[] = [];
const seen = new Set();
+ const excId = excludeIdRef.current;
allSelectables.forEach((el) => {
+ const selectId = el.getAttribute(SELECT_ID_ATTR) || '';
+ if (excId && selectId === excId) return;
const rect = el.getBoundingClientRect();
if (rectsIntersect(b, { left: rect.left, top: rect.top, right: rect.right, bottom: rect.bottom })) {
- const selectId = el.getAttribute(SELECT_ID_ATTR) || '';
if (seen.has(selectId)) return;
seen.add(selectId);
const type = el.getAttribute(SELECT_ATTR) || '';
@@ -200,7 +211,7 @@ export function useDomElementSelector(): DomSelectorState {
return;
}
- const selectable = findSelectableAncestor(target);
+ const selectable = findSelectableAncestor(target, excludeIdRef.current);
if (!selectable) {
setOverlay(EMPTY_OVERLAY);
hoveredRef.current = null;
@@ -231,7 +242,7 @@ export function useDomElementSelector(): DomSelectorState {
if (e.button !== 0) return;
const target = e.target as Element;
// Only start drag on "empty" canvas areas (not on selectable elements)
- if (target && findSelectableAncestor(target)) return;
+ if (target && findSelectableAncestor(target, excludeIdRef.current)) return;
dragOriginRef.current = { x: e.clientX, y: e.clientY };
isDraggingRef.current = false;
}, []);
@@ -250,7 +261,10 @@ export function useDomElementSelector(): DomSelectorState {
const allSelectables = document.querySelectorAll(`[${SELECT_ATTR}]`);
const processed = new Set();
+ const excId = excludeIdRef.current;
allSelectables.forEach((el) => {
+ const selectId = el.getAttribute(SELECT_ID_ATTR) || '';
+ if (excId && selectId === excId) return;
const rect = el.getBoundingClientRect();
const elRect = {
left: rect.left,
@@ -260,7 +274,6 @@ export function useDomElementSelector(): DomSelectorState {
};
if (rectsIntersect(dr, elRect)) {
- const selectId = el.getAttribute(SELECT_ID_ATTR) || '';
if (processed.has(selectId)) return;
processed.add(selectId);
diff --git a/frontend/src/app/pages/AgentChat/AgentChat.tsx b/frontend/src/app/pages/AgentChat/AgentChat.tsx
index a341c848..580fc187 100644
--- a/frontend/src/app/pages/AgentChat/AgentChat.tsx
+++ b/frontend/src/app/pages/AgentChat/AgentChat.tsx
@@ -629,6 +629,7 @@ const AgentChat: React.FC = ({ sessionId: sessionIdProp, onClose
isRunning={!isDraft && (session.status === 'running' || session.status === 'waiting_approval')}
onStop={handleStop}
contextEstimate={contextEstimate}
+ sessionId={id}
/>
diff --git a/frontend/src/app/pages/AgentChat/ChatInput.tsx b/frontend/src/app/pages/AgentChat/ChatInput.tsx
index 451bc4b6..6369464a 100644
--- a/frontend/src/app/pages/AgentChat/ChatInput.tsx
+++ b/frontend/src/app/pages/AgentChat/ChatInput.tsx
@@ -26,6 +26,8 @@ import AttachFileIcon from '@mui/icons-material/AttachFile';
import AdsClickIcon from '@mui/icons-material/AdsClick';
import CommandPicker, { CommandPickerItem, getToolGroupIcon } from '@/app/components/CommandPicker';
import { useElementSelection, SelectedElement } from '@/app/components/ElementSelectionContext';
+import { getWebview } from '@/shared/browserRegistry';
+import { API_BASE } from '@/shared/config';
import { ContextPath } from '@/app/components/DirectoryBrowser';
import {
SKILL_PILL_ATTR,
@@ -70,6 +72,7 @@ interface Props {
contextEstimate?: { used: number; limit: number };
embedded?: boolean;
autoFocus?: boolean;
+ sessionId?: string;
}
export interface ChatInputHandle {
@@ -127,7 +130,7 @@ const ContextRing: React.FC<{ used: number; limit: number; accentColor: string;
);
};
-const ChatInput = forwardRef(({ onSend, disabled, mode, onModeChange, model, onModelChange, isRunning, onStop, autoRunMode, contextEstimate, embedded, autoFocus }, ref) => {
+const ChatInput = forwardRef(({ onSend, disabled, mode, onModeChange, model, onModelChange, isRunning, onStop, autoRunMode, contextEstimate, embedded, autoFocus, sessionId }, ref) => {
const c = useClaudeTokens();
const editorRef = useRef(null);
const containerRef = useRef(null);
@@ -253,7 +256,7 @@ const ChatInput = forwardRef(({ onSend, disabled, mode,
try {
const formData = new FormData();
files.forEach((f) => formData.append('files', f));
- const resp = await fetch(`http://${window.location.hostname}:8324/api/settings/upload-files`, {
+ const resp = await fetch(`${API_BASE}/settings/upload-files`, {
method: 'POST',
body: formData,
});
@@ -271,7 +274,7 @@ const ChatInput = forwardRef(({ onSend, disabled, mode,
}
}, []);
- const handleSend = useCallback(() => {
+ const handleSend = useCallback(async () => {
const editor = editorRef.current;
if (!editor || disabled) return;
const serialized = serializeEditorContent(editor, attachedSkillsRef.current);
@@ -285,14 +288,47 @@ const ChatInput = forwardRef(({ onSend, disabled, mode,
if (selectedEls.length > 0) {
const lines: string[] = ['\n\n---\nSelected UI Elements:\n'];
- selectedEls.forEach((el, i) => {
- if (el.semanticType && el.semanticData) {
+ for (let i = 0; i < selectedEls.length; i++) {
+ const el = selectedEls[i];
+
+ if (el.semanticType === 'browser-card' && el.semanticData?.selectId) {
+ const wv = getWebview(el.semanticData.selectId as string);
+ if (wv) {
+ const url = el.semanticData.url || wv.getURL();
+ const title = el.semanticData.name || wv.getTitle();
+ lines.push(`${i + 1}. [Browser Card] ${title}`);
+ lines.push(` ID: ${el.semanticData.selectId}`);
+ lines.push(` URL: ${url}`);
+
+ try {
+ const nativeImage = await wv.capturePage();
+ const dataUrl = nativeImage.toDataURL();
+ const base64 = dataUrl.replace(/^data:image\/\w+;base64,/, '');
+ allImages.push({ data: base64, media_type: 'image/png' });
+ lines.push(` [Screenshot captured and attached as image]`);
+ } catch { /* screenshot unavailable */ }
+
+ try {
+ const pageText: string = await wv.executeJavaScript(
+ 'document.body.innerText.substring(0, 15000)'
+ );
+ if (pageText?.trim()) {
+ lines.push(` Page text content:\n ---\n${pageText.trim().split('\n').map(l => ' ' + l).join('\n')}\n ---`);
+ }
+ } catch { /* text extraction unavailable */ }
+ } else {
+ lines.push(`${i + 1}. [Browser Card] ${el.semanticLabel || ''}`);
+ if (el.semanticData.selectId) lines.push(` ID: ${el.semanticData.selectId}`);
+ if (el.semanticData.url) lines.push(` URL: ${el.semanticData.url}`);
+ }
+ } else if (el.semanticType && el.semanticData) {
const typeLabel = {
'agent-card': 'Agent Card',
'message': 'Message',
'tool-call': 'Tool Call',
'tool-group': 'Tool Group',
'view-card': 'View Card',
+ 'browser-card': 'Browser Card',
'dom-element': 'Element',
}[el.semanticType] || el.semanticType;
lines.push(`${i + 1}. [${typeLabel}] ${el.semanticLabel || ''}`);
@@ -318,7 +354,7 @@ const ChatInput = forwardRef(({ onSend, disabled, mode,
const base64 = el.screenshot.replace(/^data:image\/\w+;base64,/, '');
allImages.push({ data: base64, media_type: 'image/png' });
}
- });
+ }
trimmed += lines.join('\n');
}
@@ -963,7 +999,12 @@ const ChatInput = forwardRef(({ onSend, disabled, mode,
{
+ if (!elementSelection.selectMode && sessionId) {
+ elementSelection.setExcludeSelectId(sessionId);
+ }
+ elementSelection.toggleSelectMode();
+ }}
sx={{
p: 0.5,
...(elementSelection.selectMode
diff --git a/frontend/src/app/pages/AgentChat/DiffViewer.tsx b/frontend/src/app/pages/AgentChat/DiffViewer.tsx
index 5957f23f..30d8b821 100644
--- a/frontend/src/app/pages/AgentChat/DiffViewer.tsx
+++ b/frontend/src/app/pages/AgentChat/DiffViewer.tsx
@@ -6,8 +6,9 @@ import Tooltip from '@mui/material/Tooltip';
import RefreshIcon from '@mui/icons-material/Refresh';
import DifferenceIcon from '@mui/icons-material/Difference';
import { useClaudeTokens } from '@/shared/styles/ThemeContext';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/agents`;
+const AGENTS_API = `${API_BASE}/agents`;
interface Props {
sessionId: string;
@@ -22,7 +23,7 @@ const DiffViewer: React.FC = ({ sessionId }) => {
const fetchDiff = async () => {
setLoading(true);
try {
- const res = await fetch(`${API_BASE}/sessions/${sessionId}/diff`);
+ const res = await fetch(`${AGENTS_API}/sessions/${sessionId}/diff`);
const data = await res.json();
setDiff(data.diff || '');
} catch {
diff --git a/frontend/src/app/pages/AgentChat/ViewBubble.tsx b/frontend/src/app/pages/AgentChat/ViewBubble.tsx
index 9ae3af4b..08b06544 100644
--- a/frontend/src/app/pages/AgentChat/ViewBubble.tsx
+++ b/frontend/src/app/pages/AgentChat/ViewBubble.tsx
@@ -10,6 +10,7 @@ import OpenInFullIcon from '@mui/icons-material/OpenInFull';
import CloseIcon from '@mui/icons-material/Close';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import { useAppSelector } from '@/shared/hooks';
+import { SERVE_BASE } from '@/shared/state/outputsSlice';
import { useClaudeTokens } from '@/shared/styles/ThemeContext';
import ViewPreview from '../Views/ViewPreview';
@@ -41,7 +42,7 @@ const ViewBubble: React.FC = ({ toolInput, toolResult, isStreaming }) =>
const outputColor = c.accent.primary;
const outputIcon = output?.icon || 'view_quilt';
const hasPreview = !!frontendCode.trim();
- const serveUrl = outputId ? `/api/outputs/${outputId}/serve/index.html` : undefined;
+ const serveUrl = outputId ? `${SERVE_BASE}/${outputId}/serve/index.html` : undefined;
const inputEntries = Object.entries(inputData);
if (isStreaming && !hasPreview) {
diff --git a/frontend/src/app/pages/Dashboard/AgentCard.tsx b/frontend/src/app/pages/Dashboard/AgentCard.tsx
index b1e6ddce..e15cd1c7 100644
--- a/frontend/src/app/pages/Dashboard/AgentCard.tsx
+++ b/frontend/src/app/pages/Dashboard/AgentCard.tsx
@@ -169,6 +169,12 @@ interface Props {
cardHeight: number;
zoom?: number;
spawnFrom?: { x: number; y: number };
+ isSelected?: boolean;
+ multiDragDelta?: { dx: number; dy: number } | null;
+ onCardSelect?: (id: string, type: 'agent' | 'view', shiftKey: boolean) => void;
+ onDragStart?: (id: string, type: 'agent' | 'view') => void;
+ onDragMove?: (dx: number, dy: number) => void;
+ onDragEnd?: (dx: number, dy: number, didDrag: boolean) => void;
}
const MIN_W = 480;
@@ -177,7 +183,10 @@ const EXPANDED_OVERLAY_H = 620;
const SPAWN_SPRING = { type: 'spring' as const, stiffness: 400, damping: 28, mass: 0.6 };
-const AgentCard: React.FC = ({ session, expanded, cardX, cardY, cardWidth, cardHeight, zoom = 1, spawnFrom }) => {
+const AgentCard: React.FC = ({
+ session, expanded, cardX, cardY, cardWidth, cardHeight, zoom = 1, spawnFrom,
+ isSelected = false, multiDragDelta, onCardSelect, onDragStart, onDragMove, onDragEnd,
+}) => {
const c = useClaudeTokens();
const dispatch = useAppDispatch();
@@ -199,6 +208,7 @@ const AgentCard: React.FC = ({ session, expanded, cardX, cardY, cardWidth
const [isDragging, setIsDragging] = useState(false);
const [localDragPos, setLocalDragPos] = useState<{ x: number; y: number } | null>(null);
const didDrag = useRef(false);
+ const justDraggedRef = useRef(false);
const handleDragPointerDown = useCallback((e: React.PointerEvent) => {
e.preventDefault();
@@ -207,7 +217,8 @@ const AgentCard: React.FC = ({ session, expanded, cardX, cardY, cardWidth
didDrag.current = false;
setIsDragging(true);
(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);
- }, [cardX, cardY]);
+ onDragStart?.(session.id, 'agent');
+ }, [cardX, cardY, onDragStart, session.id]);
const handleDragPointerMove = useCallback((e: React.PointerEvent) => {
if (!dragState.current) return;
@@ -215,31 +226,35 @@ const AgentCard: React.FC = ({ session, expanded, cardX, cardY, cardWidth
const rawDy = e.clientY - dragState.current.startY;
if (!didDrag.current && Math.sqrt(rawDx * rawDx + rawDy * rawDy) < DRAG_THRESHOLD) return;
didDrag.current = true;
+ const dx = rawDx / zoom;
+ const dy = rawDy / zoom;
setLocalDragPos({
- x: dragState.current.origX + rawDx / zoom,
- y: dragState.current.origY + rawDy / zoom,
+ x: dragState.current.origX + dx,
+ y: dragState.current.origY + dy,
});
- }, [zoom]);
+ onDragMove?.(dx, dy);
+ }, [zoom, onDragMove]);
const handleDragPointerUp = useCallback((e: React.PointerEvent) => {
if (!dragState.current) return;
+ const dx = (e.clientX - dragState.current.startX) / zoom;
+ const dy = (e.clientY - dragState.current.startY) / zoom;
if (didDrag.current) {
- const dx = (e.clientX - dragState.current.startX) / zoom;
- const dy = (e.clientY - dragState.current.startY) / zoom;
dispatch(setCardPosition({
sessionId: session.id,
x: dragState.current.origX + dx,
y: dragState.current.origY + dy,
}));
- } else if (expanded) {
- dispatch(toggleExpandSession(session.id));
+ justDraggedRef.current = true;
+ requestAnimationFrame(() => { justDraggedRef.current = false; });
}
+ onDragEnd?.(dx, dy, didDrag.current);
dragState.current = null;
didDrag.current = false;
setLocalDragPos(null);
setIsDragging(false);
(e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);
- }, [zoom, dispatch, session.id, expanded]);
+ }, [zoom, dispatch, session.id, onDragEnd]);
// ---- Unified edge / corner resize ----
const resizeRef = useRef<{
@@ -351,10 +366,12 @@ const AgentCard: React.FC = ({ session, expanded, cardX, cardY, cardWidth
const pendingReq = session.pending_approvals[0];
const statusStyle = STATUS_COLORS[session.status] || { color: c.text.tertiary, bg: c.bg.secondary };
- const noTransition = isDragging || isResizing;
+ const noTransition = isDragging || isResizing || (isSelected && !!multiDragDelta);
- const activeX = localResize?.x ?? localDragPos?.x ?? cardX;
- const activeY = localResize?.y ?? localDragPos?.y ?? cardY;
+ const mdDx = (!isDragging && isSelected && multiDragDelta) ? multiDragDelta.dx : 0;
+ const mdDy = (!isDragging && isSelected && multiDragDelta) ? multiDragDelta.dy : 0;
+ const activeX = localResize?.x ?? localDragPos?.x ?? (cardX + mdDx);
+ const activeY = localResize?.y ?? localDragPos?.y ?? (cardY + mdDy);
const activeW = localResize?.w ?? cardWidth;
const activeH = localResize?.h ?? cardHeight;
@@ -380,26 +397,38 @@ const AgentCard: React.FC = ({ session, expanded, cardX, cardY, cardWidth
data-select-type="agent-card"
data-select-id={session.id}
data-select-meta={JSON.stringify({ name: session.name || session.id, status: session.status, model: session.model, mode: session.mode })}
- onClick={expanded ? undefined : () => dispatch(toggleExpandSession(session.id))}
+ onClick={(e: React.MouseEvent) => {
+ if (justDraggedRef.current) return;
+ onCardSelect?.(session.id, 'agent', e.shiftKey);
+ }}
+ onDoubleClick={() => dispatch(toggleExpandSession(session.id))}
sx={{
position: 'relative',
width: localResize ? activeW : Math.max(cardWidth, MIN_W),
height: localResize ? activeH : (expanded ? Math.max(EXPANDED_OVERLAY_H, cardHeight) : 'auto'),
bgcolor: c.bg.surface,
- border: hasPending && !expanded
- ? `1px solid ${c.status.warning}`
- : expanded
- ? `1px solid ${c.border.strong}`
- : `1px solid ${c.border.subtle}`,
+ border: isSelected
+ ? '2px solid #3b82f6'
+ : hasPending && !expanded
+ ? `1px solid ${c.status.warning}`
+ : expanded
+ ? `1px solid ${c.border.strong}`
+ : `1px solid ${c.border.subtle}`,
borderRadius: 3,
p: 2,
cursor: expanded ? 'default' : 'pointer',
transition: noTransition ? 'none' : c.transition,
- boxShadow: isDragging ? c.shadow.lg : expanded ? c.shadow.md : c.shadow.sm,
+ boxShadow: isDragging
+ ? c.shadow.lg
+ : isSelected
+ ? `0 0 0 1px #3b82f6, ${c.shadow.md}`
+ : expanded
+ ? c.shadow.md
+ : c.shadow.sm,
display: 'flex',
flexDirection: 'column',
overflow: 'hidden',
- ...(!expanded && !isDragging && {
+ ...(!expanded && !isDragging && !isSelected && {
'&:hover': {
boxShadow: c.shadow.md,
borderColor: hasPending ? c.status.warning : c.border.strong,
@@ -426,120 +455,131 @@ const AgentCard: React.FC = ({ session, expanded, cardX, cardY, cardWidth
/>
))}
- {/* Header: always visible – entire bar is draggable */}
+ {/* Drag zone: header + metadata – entire region above separator is draggable */}
-
-
-
-
- {session.name}
-
-
+ >
+
+
+
+
+ {session.name}
+
+
+
+ e.stopPropagation()}
+ sx={{ display: 'flex', alignItems: 'center', gap: 0.5, flexShrink: 0, ml: 0.5 }}
+ >
+ {expanded ? (
+
+ e.stopPropagation()}
+ sx={{
+ color: c.text.ghost,
+ p: 0.5,
+ '&:hover': { color: c.text.secondary, bgcolor: c.bg.secondary },
+ }}
+ >
+
+
+
+ ) : (
+
+ e.stopPropagation()}
+ sx={{
+ color: c.text.ghost,
+ p: 0.5,
+ '&:hover': { color: c.status.error, bgcolor: `${c.status.errorBg}` },
+ }}
+ >
+
+
+
+ )}
+
- e.stopPropagation()}
- sx={{ display: 'flex', alignItems: 'center', gap: 0.5, flexShrink: 0, ml: 0.5 }}
- >
- {expanded ? (
-
- e.stopPropagation()}
- sx={{
- color: c.text.ghost,
- p: 0.5,
- '&:hover': { color: c.text.secondary, bgcolor: c.bg.secondary },
- }}
- >
-
-
-
- ) : (
-
- e.stopPropagation()}
- sx={{
- color: c.text.ghost,
- p: 0.5,
- '&:hover': { color: c.status.error, bgcolor: `${c.status.errorBg}` },
- }}
- >
-
-
-
+
+ {/* Metadata row */}
+
+
+ {session.model}
+
+
+ {session.mode}
+
+
+ {formatDuration(session.created_at)}
+
+ {session.cost_usd > 0 && (
+
+ ${session.cost_usd.toFixed(4)}
+
)}
- {/* Metadata row */}
-
-
- {session.model}
-
-
- {session.mode}
-
-
- {formatDuration(session.created_at)}
-
- {session.cost_usd > 0 && (
-
- ${session.cost_usd.toFixed(4)}
-
- )}
-
-
{/* Expanded: inline chat fills remaining space */}
{expanded && (
= {
+ n: 'ns-resize', s: 'ns-resize', e: 'ew-resize', w: 'ew-resize',
+ nw: 'nwse-resize', se: 'nwse-resize', ne: 'nesw-resize', sw: 'nesw-resize',
+};
+
+const HANDLE_DEFS: { dir: ResizeDir; sx: Record }[] = [
+ { dir: 'n', sx: { top: -EDGE_THICKNESS / 2, left: CORNER_SIZE, right: CORNER_SIZE, height: EDGE_THICKNESS } },
+ { dir: 's', sx: { bottom: -EDGE_THICKNESS / 2, left: CORNER_SIZE, right: CORNER_SIZE, height: EDGE_THICKNESS } },
+ { dir: 'w', sx: { left: -EDGE_THICKNESS / 2, top: CORNER_SIZE, bottom: CORNER_SIZE, width: EDGE_THICKNESS } },
+ { dir: 'e', sx: { right: -EDGE_THICKNESS / 2, top: CORNER_SIZE, bottom: CORNER_SIZE, width: EDGE_THICKNESS } },
+ { dir: 'nw', sx: { top: -EDGE_THICKNESS / 2, left: -EDGE_THICKNESS / 2, width: CORNER_SIZE, height: CORNER_SIZE } },
+ { dir: 'ne', sx: { top: -EDGE_THICKNESS / 2, right: -EDGE_THICKNESS / 2, width: CORNER_SIZE, height: CORNER_SIZE } },
+ { dir: 'sw', sx: { bottom: -EDGE_THICKNESS / 2, left: -EDGE_THICKNESS / 2, width: CORNER_SIZE, height: CORNER_SIZE } },
+ { dir: 'se', sx: { bottom: -EDGE_THICKNESS / 2, right: -EDGE_THICKNESS / 2, width: CORNER_SIZE, height: CORNER_SIZE } },
+];
+
+const isElectron = navigator.userAgent.includes('Electron');
+
+type WebviewElement = BrowserWebview;
+
+interface Props {
+ browserId: string;
+ url: string;
+ cardX: number;
+ cardY: number;
+ cardWidth: number;
+ cardHeight: number;
+ zoom?: number;
+ isSelected?: boolean;
+ multiDragDelta?: { dx: number; dy: number } | null;
+ onCardSelect?: (id: string, type: 'agent' | 'view' | 'browser', shiftKey: boolean) => void;
+ onDragStart?: (id: string, type: 'agent' | 'view' | 'browser') => void;
+ onDragMove?: (dx: number, dy: number) => void;
+ onDragEnd?: (dx: number, dy: number, didDrag: boolean) => void;
+}
+
+function ensureProtocol(input: string): string {
+ const trimmed = input.trim();
+ if (/^https?:\/\//i.test(trimmed)) return trimmed;
+ if (/^[a-zA-Z0-9-]+\.[a-zA-Z]{2,}/.test(trimmed)) return `https://${trimmed}`;
+ return trimmed;
+}
+
+const BrowserCard: React.FC = ({
+ browserId, url, cardX, cardY, cardWidth, cardHeight, zoom = 1,
+ isSelected = false, multiDragDelta, onCardSelect, onDragStart, onDragMove, onDragEnd,
+}) => {
+ const c = useClaudeTokens();
+ const dispatch = useAppDispatch();
+ const webviewRef = useRef(null);
+ const activity = useBrowserActivity(browserId);
+ const agentActive = activity.active;
+ const agentAction = activity.action;
+ const lastAction = activity.lastAction;
+
+ const [currentUrl, setCurrentUrl] = useState(url);
+ const [urlBarValue, setUrlBarValue] = useState(url);
+ const [pageTitle, setPageTitle] = useState('');
+ const [loading, setLoading] = useState(false);
+ const [canGoBack, setCanGoBack] = useState(false);
+ const [canGoForward, setCanGoForward] = useState(false);
+
+ // ---- Webview event wiring ----
+ useEffect(() => {
+ if (!isElectron) return;
+ const wv = webviewRef.current;
+ if (!wv) return;
+
+ const onNavigate = () => {
+ const newUrl = wv.getURL();
+ setCurrentUrl(newUrl);
+ setUrlBarValue(newUrl);
+ setCanGoBack(wv.canGoBack());
+ setCanGoForward(wv.canGoForward());
+ dispatch(updateBrowserCardUrl({ browserId, url: newUrl }));
+ };
+
+ const onTitleUpdate = () => {
+ setPageTitle(wv.getTitle());
+ };
+
+ const onLoadStart = () => setLoading(true);
+ const onLoadStop = () => {
+ setLoading(false);
+ onNavigate();
+ onTitleUpdate();
+ };
+
+ const onNewWindow = (e: any) => {
+ if (e.url) wv.loadURL(e.url);
+ };
+
+ wv.addEventListener('did-navigate', onNavigate);
+ wv.addEventListener('did-navigate-in-page', onNavigate);
+ wv.addEventListener('page-title-updated', onTitleUpdate);
+ wv.addEventListener('did-start-loading', onLoadStart);
+ wv.addEventListener('did-stop-loading', onLoadStop);
+ wv.addEventListener('new-window', onNewWindow);
+
+ return () => {
+ wv.removeEventListener('did-navigate', onNavigate);
+ wv.removeEventListener('did-navigate-in-page', onNavigate);
+ wv.removeEventListener('page-title-updated', onTitleUpdate);
+ wv.removeEventListener('did-start-loading', onLoadStart);
+ wv.removeEventListener('did-stop-loading', onLoadStop);
+ wv.removeEventListener('new-window', onNewWindow);
+ };
+ }, [browserId, dispatch]);
+
+ useEffect(() => {
+ if (!isElectron) return;
+ const wv = webviewRef.current;
+ if (!wv) return;
+ registerWebview(browserId, wv);
+ return () => { unregisterWebview(browserId); };
+ }, [browserId]);
+
+ const navigate = useCallback((targetUrl: string) => {
+ const finalUrl = ensureProtocol(targetUrl);
+ setUrlBarValue(finalUrl);
+ if (isElectron && webviewRef.current) {
+ webviewRef.current.loadURL(finalUrl);
+ }
+ setCurrentUrl(finalUrl);
+ dispatch(updateBrowserCardUrl({ browserId, url: finalUrl }));
+ }, [browserId, dispatch]);
+
+ const handleUrlKeyDown = useCallback((e: React.KeyboardEvent) => {
+ if (e.key === 'Enter') {
+ e.preventDefault();
+ navigate(urlBarValue);
+ }
+ }, [navigate, urlBarValue]);
+
+ const handleBack = useCallback((e: React.MouseEvent) => {
+ e.stopPropagation();
+ webviewRef.current?.goBack();
+ }, []);
+
+ const handleForward = useCallback((e: React.MouseEvent) => {
+ e.stopPropagation();
+ webviewRef.current?.goForward();
+ }, []);
+
+ const handleRefresh = useCallback((e: React.MouseEvent) => {
+ e.stopPropagation();
+ webviewRef.current?.reload();
+ }, []);
+
+ const handleRemove = useCallback((e: React.MouseEvent) => {
+ e.stopPropagation();
+ dispatch(removeBrowserCard(browserId));
+ }, [dispatch, browserId]);
+
+ // ---- Drag via header ----
+ const DRAG_THRESHOLD = 3;
+ const dragState = useRef<{ startX: number; startY: number; origX: number; origY: number } | null>(null);
+ const [isDragging, setIsDragging] = useState(false);
+ const [localDragPos, setLocalDragPos] = useState<{ x: number; y: number } | null>(null);
+ const didDrag = useRef(false);
+ const justDraggedRef = useRef(false);
+
+ const handleDragPointerDown = useCallback((e: React.PointerEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
+ dragState.current = { startX: e.clientX, startY: e.clientY, origX: cardX, origY: cardY };
+ didDrag.current = false;
+ setIsDragging(true);
+ (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);
+ onDragStart?.(browserId, 'browser');
+ }, [cardX, cardY, onDragStart, browserId]);
+
+ const handleDragPointerMove = useCallback((e: React.PointerEvent) => {
+ if (!dragState.current) return;
+ const rawDx = e.clientX - dragState.current.startX;
+ const rawDy = e.clientY - dragState.current.startY;
+ if (!didDrag.current && Math.sqrt(rawDx * rawDx + rawDy * rawDy) < DRAG_THRESHOLD) return;
+ didDrag.current = true;
+ const dx = rawDx / zoom;
+ const dy = rawDy / zoom;
+ setLocalDragPos({
+ x: dragState.current.origX + dx,
+ y: dragState.current.origY + dy,
+ });
+ onDragMove?.(dx, dy);
+ }, [zoom, onDragMove]);
+
+ const handleDragPointerUp = useCallback((e: React.PointerEvent) => {
+ if (!dragState.current) return;
+ const dx = (e.clientX - dragState.current.startX) / zoom;
+ const dy = (e.clientY - dragState.current.startY) / zoom;
+ if (didDrag.current) {
+ dispatch(setBrowserCardPosition({
+ browserId,
+ x: dragState.current.origX + dx,
+ y: dragState.current.origY + dy,
+ }));
+ justDraggedRef.current = true;
+ requestAnimationFrame(() => { justDraggedRef.current = false; });
+ }
+ onDragEnd?.(dx, dy, didDrag.current);
+ dragState.current = null;
+ didDrag.current = false;
+ setLocalDragPos(null);
+ setIsDragging(false);
+ (e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);
+ }, [zoom, dispatch, browserId, onDragEnd]);
+
+ // ---- Resize ----
+ const resizeRef = useRef<{
+ dir: ResizeDir; startX: number; startY: number;
+ origX: number; origY: number; origW: number; origH: number;
+ } | null>(null);
+ const [isResizing, setIsResizing] = useState(false);
+ const [localResize, setLocalResize] = useState<{ x: number; y: number; w: number; h: number } | null>(null);
+
+ const handleResizeDown = useCallback(
+ (dir: ResizeDir) => (e: React.PointerEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
+ resizeRef.current = {
+ dir, startX: e.clientX, startY: e.clientY,
+ origX: cardX, origY: cardY, origW: cardWidth, origH: cardHeight,
+ };
+ setIsResizing(true);
+ (e.target as HTMLElement).setPointerCapture(e.pointerId);
+ },
+ [cardX, cardY, cardWidth, cardHeight],
+ );
+
+ const computeResize = useCallback(
+ (e: React.PointerEvent) => {
+ if (!resizeRef.current) return null;
+ const { dir, startX, startY, origX, origY, origW, origH } = resizeRef.current;
+ const dx = (e.clientX - startX) / zoom;
+ const dy = (e.clientY - startY) / zoom;
+ let newX = origX, newY = origY, newW = origW, newH = origH;
+ if (dir.includes('e')) newW = origW + dx;
+ if (dir.includes('w')) { newW = origW - dx; newX = origX + dx; }
+ if (dir.includes('s')) newH = origH + dy;
+ if (dir.includes('n')) { newH = origH - dy; newY = origY + dy; }
+ if (newW < MIN_W) { if (dir.includes('w')) newX = origX + origW - MIN_W; newW = MIN_W; }
+ if (newH < MIN_H) { if (dir.includes('n')) newY = origY + origH - MIN_H; newH = MIN_H; }
+ return { x: newX, y: newY, w: newW, h: newH };
+ },
+ [zoom],
+ );
+
+ const handleResizeMove = useCallback(
+ (e: React.PointerEvent) => {
+ const result = computeResize(e);
+ if (result) setLocalResize(result);
+ },
+ [computeResize],
+ );
+
+ const handleResizeUp = useCallback((e: React.PointerEvent) => {
+ if (!resizeRef.current) return;
+ const result = computeResize(e);
+ if (result) {
+ dispatch(setBrowserCardPosition({ browserId, x: result.x, y: result.y }));
+ dispatch(setBrowserCardSize({ browserId, width: result.w, height: result.h }));
+ }
+ resizeRef.current = null;
+ setLocalResize(null);
+ setIsResizing(false);
+ (e.target as HTMLElement).releasePointerCapture(e.pointerId);
+ }, [computeResize, dispatch, browserId]);
+
+ const mdDx = (!isDragging && isSelected && multiDragDelta) ? multiDragDelta.dx : 0;
+ const mdDy = (!isDragging && isSelected && multiDragDelta) ? multiDragDelta.dy : 0;
+ const displayX = localResize?.x ?? localDragPos?.x ?? (cardX + mdDx);
+ const displayY = localResize?.y ?? localDragPos?.y ?? (cardY + mdDy);
+ const displayW = localResize?.w ?? cardWidth;
+ const displayH = localResize?.h ?? cardHeight;
+ const noTransition = isDragging || isResizing || (isSelected && !!multiDragDelta);
+
+ const isSecure = currentUrl.startsWith('https://');
+
+ const accentColor = c.accent.primary;
+ const accentHover = c.accent.hover;
+
+ const agentBorder = agentActive
+ ? `2px solid ${accentColor}`
+ : isSelected ? '2px solid #3b82f6' : `1px solid ${c.border.medium}`;
+
+ const agentShadow = agentActive
+ ? `0 0 0 2px ${accentColor}40, 0 0 18px ${accentColor}30, 0 0 40px ${accentColor}15`
+ : isDragging || isResizing
+ ? c.shadow.lg
+ : isSelected
+ ? `0 0 0 1px #3b82f6, ${c.shadow.md}`
+ : c.shadow.md;
+
+ return (
+ {
+ if (justDraggedRef.current) return;
+ onCardSelect?.(browserId, 'browser', e.shiftKey);
+ }}
+ sx={{
+ position: 'absolute',
+ left: displayX,
+ top: displayY,
+ width: displayW,
+ height: displayH,
+ borderRadius: `${c.radius.lg}px`,
+ border: agentBorder,
+ bgcolor: c.bg.surface,
+ boxShadow: agentShadow,
+ overflow: 'hidden',
+ display: 'flex',
+ flexDirection: 'column',
+ zIndex: (isDragging || isResizing) ? 100 : agentActive ? 50 : 1,
+ transition: noTransition ? 'none' : 'box-shadow 0.4s ease, border 0.3s ease',
+ '&:hover .resize-handle': { opacity: 1 },
+ ...(agentActive && {
+ animation: 'agent-glow-pulse 2s ease-in-out infinite',
+ '@keyframes agent-glow-pulse': {
+ '0%, 100%': {
+ boxShadow: `0 0 0 2px ${accentColor}40, 0 0 18px ${accentColor}30, 0 0 40px ${accentColor}15`,
+ },
+ '50%': {
+ boxShadow: `0 0 0 3px ${accentColor}60, 0 0 28px ${accentColor}45, 0 0 56px ${accentColor}25`,
+ },
+ },
+ }),
+ }}
+ >
+ {/* Animated border glow (top edge overlay) */}
+ {agentActive && (
+
+ )}
+
+ {/* Header / drag handle */}
+
+
+
+ {pageTitle || 'Browser'}
+
+
+ {/* Agent activity badge */}
+ {agentActive && (
+
+
+
+ AI
+
+
+ )}
+
+
+
+ e.stopPropagation()}
+ disabled={!canGoBack}
+ sx={{ color: c.text.muted, p: 0.4, '&:hover': { color: c.text.primary } }}
+ >
+
+
+
+
+
+
+
+ e.stopPropagation()}
+ disabled={!canGoForward}
+ sx={{ color: c.text.muted, p: 0.4, '&:hover': { color: c.text.primary } }}
+ >
+
+
+
+
+
+
+ e.stopPropagation()}
+ sx={{ color: c.text.muted, p: 0.4, '&:hover': { color: c.text.primary } }}
+ >
+
+
+
+
+
+ e.stopPropagation()}
+ sx={{ color: c.text.ghost, p: 0.4, '&:hover': { color: c.status.error } }}
+ >
+
+
+
+
+
+ {/* URL bar */}
+
+ {isSecure && (
+
+ )}
+ setUrlBarValue(e.target.value)}
+ onKeyDown={handleUrlKeyDown}
+ onPointerDown={(e) => e.stopPropagation()}
+ onFocus={(e) => (e.target as HTMLInputElement).select()}
+ placeholder="Enter URL..."
+ sx={{
+ flex: 1,
+ fontSize: '0.76rem',
+ fontFamily: c.font.mono,
+ color: c.text.secondary,
+ py: 0,
+ '& input': { py: '3px' },
+ '& input::placeholder': { color: c.text.ghost, opacity: 1 },
+ }}
+ />
+
+
+ {/* Loading indicator — accent-colored when agent is navigating */}
+ {(loading || (agentActive && agentAction === 'navigate')) && (
+
+ )}
+
+ {/* Browser body */}
+
+ {isElectron ? (
+
+ ) : (
+
+
+
+
+ iframe mode — some sites may not load. Use the Electron build for full browser support.
+
+
+
+ )}
+
+ {/* ===== Action micro-animations ===== */}
+
+ {/* Camera flash — screenshot */}
+ {(agentAction === 'screenshot' || lastAction === 'screenshot') && (
+
+ )}
+
+ {/* Scanning line — get_text */}
+ {agentAction === 'get_text' && (
+
+ )}
+
+ {/* Click ripple */}
+ {(agentAction === 'click' || lastAction === 'click') && (
+
+ )}
+
+ {/* Typing indicator */}
+ {agentAction === 'type' && (
+
+ {[0, 1, 2].map((i) => (
+
+ ))}
+
+ )}
+
+ {/* ===== Frosted glass overlay ===== */}
+ {agentActive && (
+
+
+
+
+
+ {getActionLabel(agentAction ?? '')}
+
+
+
+ )}
+
+
+ {/* Resize handles */}
+ {HANDLE_DEFS.map(({ dir, sx }) => (
+
+ ))}
+
+ );
+};
+
+export default BrowserCard;
diff --git a/frontend/src/app/pages/Dashboard/Dashboard.tsx b/frontend/src/app/pages/Dashboard/Dashboard.tsx
index f724b338..38dc4ae8 100644
--- a/frontend/src/app/pages/Dashboard/Dashboard.tsx
+++ b/frontend/src/app/pages/Dashboard/Dashboard.tsx
@@ -13,6 +13,7 @@ import {
launchAndSendFirstMessage,
generateTitle,
resumeSession,
+ setExpandedSessionIds,
} from '@/shared/state/agentsSlice';
import type { AgentConfig } from '@/shared/state/agentsSlice';
import {
@@ -21,30 +22,47 @@ import {
reconcileSessions,
tidyLayout,
addViewCard,
+ addBrowserCard,
+ moveCards,
resetLayout,
} from '@/shared/state/dashboardLayoutSlice';
import { fetchOutputs } from '@/shared/state/outputsSlice';
+import { generateDashboardName } from '@/shared/state/dashboardsSlice';
import { dashboardWs } from '@/shared/ws/WebSocketManager';
+import { initBrowserCommandHandler } from '@/shared/browserCommandHandler';
import AgentCard from './AgentCard';
import DashboardViewCard from './DashboardViewCard';
+import BrowserCard from './BrowserCard';
import CanvasControls from './CanvasControls';
import DashboardToolbar from './DashboardToolbar';
import { useCanvasControls } from './useCanvasControls';
+import { useDashboardSelection } from './useDashboardSelection';
+import type { CardType } from './useDashboardSelection';
import { useClaudeTokens } from '@/shared/styles/ThemeContext';
import type { ContextPath } from '@/app/components/DirectoryBrowser';
-import { ElementSelectionProvider, useElementSelection } from '@/app/components/ElementSelectionContext';
+import { ElementSelectionProvider } from '@/app/components/ElementSelectionContext';
import { useDomElementSelector } from '@/app/components/useDomElementSelector';
import SelectionOverlay from '@/app/components/SelectionOverlay';
+const SELECT_ATTR = 'data-select-type';
+
const DashboardSelectionOverlay: React.FC = () => {
const { overlay, dragRect, dragPreview } = useDomElementSelector();
return ;
};
+function isCardTarget(target: EventTarget | null, boundary: EventTarget | null): boolean {
+ let el = target as HTMLElement | null;
+ while (el && el !== boundary) {
+ if (el.hasAttribute(SELECT_ATTR)) return true;
+ el = el.parentElement;
+ }
+ return false;
+}
+
const DashboardInner: React.FC = () => {
const c = useClaudeTokens();
const dispatch = useAppDispatch();
- const elementSelection = useElementSelection();
const { id: dashboardId } = useParams<{ id: string }>();
const dashboardName = useAppSelector((state) =>
dashboardId ? state.dashboards.items[dashboardId]?.name : undefined,
@@ -53,30 +71,106 @@ const DashboardInner: React.FC = () => {
const expandedSessionIds = useAppSelector((state) => state.agents.expandedSessionIds);
const cards = useAppSelector((state) => state.dashboardLayout.cards);
const viewCards = useAppSelector((state) => state.dashboardLayout.viewCards);
+ const browserCards = useAppSelector((state) => state.dashboardLayout.browserCards);
const layoutInitialized = useAppSelector((state) => state.dashboardLayout.initialized);
+ const persistedExpandedSessionIds = useAppSelector((state) => state.dashboardLayout.persistedExpandedSessionIds);
const zoomSensitivity = useAppSelector((state) => state.settings.data.zoom_sensitivity);
const newAgentShortcut = useAppSelector((state) => state.settings.data.new_agent_shortcut);
+ const browserHomepage = useAppSelector((state) => state.settings.data.browser_homepage);
const outputs = useAppSelector((state) => state.outputs.items);
const sessionList = Object.values(sessions);
- const selectModeActive = elementSelection?.selectMode ?? false;
- const canvas = useCanvasControls(zoomSensitivity, selectModeActive);
+ const canvas = useCanvasControls(zoomSensitivity);
+ const selection = useDashboardSelection(
+ { panX: canvas.panX, panY: canvas.panY, zoom: canvas.zoom, viewportRef: canvas.viewportRef },
+ cards,
+ viewCards,
+ browserCards,
+ );
const toolbarRef = useRef(null);
const [toolbarOpen, setToolbarOpen] = useState(false);
const spawnOriginsRef = useRef>({});
const hasFittedRef = useRef(false);
+ const restoredExpandedRef = useRef(false);
+
+ // ---- Multi-drag coordination ----
+ const [multiDragDelta, setMultiDragDelta] = useState<{ dx: number; dy: number } | null>(null);
+ const activeDragCardRef = useRef(null);
+ const isMultiDragRef = useRef(false);
+
+ const handleCardDragStart = useCallback((id: string, _type: CardType) => {
+ if (selection.isSelected(id)) {
+ activeDragCardRef.current = id;
+ isMultiDragRef.current = true;
+ } else {
+ selection.deselectAll();
+ activeDragCardRef.current = null;
+ isMultiDragRef.current = false;
+ }
+ }, [selection]);
+
+ const handleCardDragMove = useCallback((dx: number, dy: number) => {
+ if (isMultiDragRef.current) {
+ setMultiDragDelta({ dx, dy });
+ }
+ }, []);
+
+ const handleCardDragEnd = useCallback((dx: number, dy: number, didDrag: boolean) => {
+ if (isMultiDragRef.current && didDrag) {
+ const items = selection.selectedArray()
+ .filter((s) => s.id !== activeDragCardRef.current);
+ if (items.length > 0) {
+ dispatch(moveCards({ items, dx, dy }));
+ }
+ }
+ activeDragCardRef.current = null;
+ isMultiDragRef.current = false;
+ setMultiDragDelta(null);
+ }, [selection, dispatch]);
+
+ const handleCardSelect = useCallback((id: string, type: CardType, shiftKey: boolean) => {
+ selection.selectCard(id, type, shiftKey);
+ }, [selection]);
+
+ // ---- Viewport event handlers (compose pan + marquee) ----
+ const handleViewportMouseDown = useCallback((e: React.MouseEvent) => {
+ if (e.button === 1) {
+ canvas.handlers.onMouseDown(e);
+ return;
+ }
+ if (e.button !== 0) return;
+ if (isCardTarget(e.target, e.currentTarget)) return;
+
+ if (e.metaKey || e.ctrlKey || canvas.spaceHeld) {
+ selection.handleCanvasMouseDown(e.nativeEvent);
+ } else {
+ canvas.handlers.onMouseDown(e);
+ }
+ }, [canvas, selection]);
+
+ const handleViewportMouseMove = useCallback((e: React.MouseEvent) => {
+ canvas.handlers.onMouseMove(e);
+ selection.handleCanvasMouseMove(e.nativeEvent);
+ }, [canvas.handlers, selection]);
+
+ const handleViewportMouseUp = useCallback((e: React.MouseEvent) => {
+ canvas.handlers.onMouseUp();
+ selection.handleCanvasMouseUp(e.nativeEvent);
+ }, [canvas.handlers, selection]);
useEffect(() => {
if (!dashboardId) return;
hasFittedRef.current = false;
+ restoredExpandedRef.current = false;
dispatch(resetLayout());
dispatch(fetchSessions({ dashboardId }));
dispatch(fetchHistory({ dashboardId }));
dispatch(fetchLayout(dashboardId));
dispatch(fetchOutputs());
dashboardWs.connect();
- return () => dashboardWs.disconnect();
+ const cleanupBrowserHandler = initBrowserCommandHandler();
+ return () => { cleanupBrowserHandler(); dashboardWs.disconnect(); };
}, [dispatch, dashboardId]);
useEffect(() => {
@@ -86,6 +180,14 @@ const DashboardInner: React.FC = () => {
return () => clearTimeout(timer);
}, [layoutInitialized, canvas.actions]);
+ useEffect(() => {
+ if (!layoutInitialized || restoredExpandedRef.current) return;
+ restoredExpandedRef.current = true;
+ if (persistedExpandedSessionIds.length > 0) {
+ dispatch(setExpandedSessionIds(persistedExpandedSessionIds));
+ }
+ }, [layoutInitialized, persistedExpandedSessionIds, dispatch]);
+
const prevSessionIdsRef = useRef('');
useEffect(() => {
@@ -101,6 +203,8 @@ const DashboardInner: React.FC = () => {
const cardsJson = JSON.stringify(cards);
const viewCardsJson = JSON.stringify(viewCards);
+ const browserCardsJson = JSON.stringify(browserCards);
+ const expandedJson = JSON.stringify(expandedSessionIds);
const skipInitialSave = useRef(true);
useEffect(() => {
if (!layoutInitialized || !dashboardId) return;
@@ -108,8 +212,8 @@ const DashboardInner: React.FC = () => {
skipInitialSave.current = false;
return;
}
- dispatch(saveLayout({ dashboardId, cards, viewCards }));
- }, [cardsJson, viewCardsJson, layoutInitialized, dashboardId]);
+ dispatch(saveLayout({ dashboardId, cards, viewCards, browserCards, expandedSessionIds }));
+ }, [cardsJson, viewCardsJson, browserCardsJson, expandedJson, layoutInitialized, dashboardId]);
useEffect(() => {
const parts = newAgentShortcut.toLowerCase().split('+');
@@ -188,6 +292,22 @@ const DashboardInner: React.FC = () => {
dispatch(generateTitle({ sessionId: realId, prompt }));
spawnOriginsRef.current[realId] = spawnOriginsRef.current[draftId];
delete spawnOriginsRef.current[draftId];
+
+ if (dashboardId) {
+ const currentSessions = store.getState().agents.sessions;
+ const agentCount = Object.values(currentSessions).filter(
+ (s) => s.status !== 'draft' && s.dashboard_id === dashboardId,
+ ).length;
+ const NAME_GEN_TRIGGERS = [1, 3, 6];
+ const currentDash = store.getState().dashboards.items[dashboardId];
+ const canAutoName =
+ currentDash &&
+ (currentDash.auto_named || currentDash.name === 'Untitled Dashboard');
+
+ if (NAME_GEN_TRIGGERS.includes(agentCount) && canAutoName) {
+ dispatch(generateDashboardName(dashboardId));
+ }
+ }
} else {
delete spawnOriginsRef.current[draftId];
}
@@ -200,6 +320,10 @@ const DashboardInner: React.FC = () => {
dispatch(addViewCard({ outputId }));
}, [dispatch]);
+ const handleAddBrowser = useCallback(() => {
+ dispatch(addBrowserCard({ url: browserHomepage }));
+ }, [dispatch, browserHomepage]);
+
const handleHistoryResume = useCallback((sessionId: string) => {
dispatch(resumeSession({ sessionId })).then((action) => {
if (resumeSession.fulfilled.match(action)) {
@@ -212,10 +336,11 @@ const DashboardInner: React.FC = () => {
dispatch(collapseAllSessions());
dispatch(tidyLayout());
- const { cards: tidied, viewCards: tidiedViews } = store.getState().dashboardLayout;
+ const { cards: tidied, viewCards: tidiedViews, browserCards: tidiedBrowsers } = store.getState().dashboardLayout;
const allRects = [
...Object.values(tidied).map((c) => ({ x: c.x, y: c.y, width: c.width, height: c.height })),
...Object.values(tidiedViews).map((c) => ({ x: c.x, y: c.y, width: c.width, height: c.height })),
+ ...Object.values(tidiedBrowsers).map((c) => ({ x: c.x, y: c.y, width: c.width, height: c.height })),
];
canvas.actions.fitToCards(allRects);
}, [dispatch, canvas.actions]);
@@ -279,14 +404,20 @@ const DashboardInner: React.FC = () => {
{/* Canvas viewport */}
{/* Dot grid background */}
@@ -301,7 +432,7 @@ const DashboardInner: React.FC = () => {
}}
/>
- {sessionList.length === 0 && Object.keys(viewCards).length === 0 ? (
+ {sessionList.length === 0 && Object.keys(viewCards).length === 0 && Object.keys(browserCards).length === 0 ? (
{
cardHeight={card.height}
zoom={canvas.zoom}
spawnFrom={origin}
+ isSelected={selection.isSelected(session.id)}
+ multiDragDelta={multiDragDelta}
+ onCardSelect={handleCardSelect}
+ onDragStart={handleCardDragStart}
+ onDragMove={handleCardDragMove}
+ onDragEnd={handleCardDragEnd}
/>
);
})}
@@ -361,9 +498,50 @@ const DashboardInner: React.FC = () => {
cardWidth={vc.width}
cardHeight={vc.height}
zoom={canvas.zoom}
+ isSelected={selection.isSelected(vc.output_id)}
+ multiDragDelta={multiDragDelta}
+ onCardSelect={handleCardSelect}
+ onDragStart={handleCardDragStart}
+ onDragMove={handleCardDragMove}
+ onDragEnd={handleCardDragEnd}
/>
);
})}
+ {Object.values(browserCards).map((bc) => (
+
+ ))}
+ {/* Marquee selection rectangle */}
+ {selection.marquee && (
+
+ )}
)}
@@ -378,6 +556,7 @@ const DashboardInner: React.FC = () => {
onSend={handleToolbarSend}
onAddView={handleAddView}
onHistoryResume={handleHistoryResume}
+ onAddBrowser={handleAddBrowser}
dashboardId={dashboardId}
/>
diff --git a/frontend/src/app/pages/Dashboard/DashboardToolbar.tsx b/frontend/src/app/pages/Dashboard/DashboardToolbar.tsx
index 9d45a827..dd179b36 100644
--- a/frontend/src/app/pages/Dashboard/DashboardToolbar.tsx
+++ b/frontend/src/app/pages/Dashboard/DashboardToolbar.tsx
@@ -10,6 +10,7 @@ import AddIcon from '@mui/icons-material/Add';
import GridViewRoundedIcon from '@mui/icons-material/GridViewRounded';
import StickyNote2OutlinedIcon from '@mui/icons-material/StickyNote2Outlined';
import HistoryRoundedIcon from '@mui/icons-material/HistoryRounded';
+import LanguageIcon from '@mui/icons-material/Language';
import SearchIcon from '@mui/icons-material/Search';
import { motion } from 'framer-motion';
import ChatInput from '@/app/pages/AgentChat/ChatInput';
@@ -36,6 +37,7 @@ interface Props {
) => void;
onAddView: (outputId: string) => void;
onHistoryResume: (sessionId: string) => void;
+ onAddBrowser: () => void;
dashboardId?: string;
}
@@ -79,7 +81,7 @@ function formatRelativeTime(dateStr: string | null): string {
}
const DashboardToolbar = React.forwardRef(
- ({ inputOpen, onNewAgent, onCancel, onSend, onAddView, onHistoryResume, dashboardId }, ref) => {
+ ({ inputOpen, onNewAgent, onCancel, onSend, onAddView, onHistoryResume, onAddBrowser, dashboardId }, ref) => {
const c = useClaudeTokens();
const dispatch = useAppDispatch();
const elementSelection = useElementSelection();
@@ -156,16 +158,32 @@ const DashboardToolbar = React.forwardRef(
}, [onAddView]);
const handleOpenViewPicker = useCallback(() => {
+ if (viewPickerOpen) {
+ setViewPickerOpen(false);
+ setViewSearch('');
+ return;
+ }
+ setHistoryOpen(false);
+ setHistoryQuery('');
+ dispatch(clearHistorySearch());
setViewPickerOpen(true);
setViewSearch('');
- }, []);
+ }, [viewPickerOpen, dispatch]);
const handleOpenHistory = useCallback(() => {
+ if (historyOpen) {
+ setHistoryOpen(false);
+ setHistoryQuery('');
+ dispatch(clearHistorySearch());
+ return;
+ }
+ setViewPickerOpen(false);
+ setViewSearch('');
setHistoryOpen(true);
setHistoryQuery('');
dispatch(clearHistorySearch());
dispatch(searchHistory({ q: '', limit: HISTORY_PAGE_SIZE, offset: 0, dashboardId }));
- }, [dispatch, dashboardId]);
+ }, [historyOpen, dispatch, dashboardId]);
const handleHistorySelect = useCallback((sessionId: string) => {
onHistoryResume(sessionId);
@@ -184,10 +202,12 @@ const DashboardToolbar = React.forwardRef(
const isExpanded = inputOpen || viewPickerOpen || historyOpen;
+ const prevInputOpenRef = useRef(inputOpen);
useEffect(() => {
- if (!inputOpen && elementSelection?.selectMode) {
+ if (prevInputOpenRef.current && !inputOpen && elementSelection?.selectMode) {
elementSelection.setSelectMode(false);
}
+ prevInputOpenRef.current = inputOpen;
}, [inputOpen, elementSelection]);
useEffect(() => {
@@ -234,6 +254,21 @@ const DashboardToolbar = React.forwardRef(
}
}, [historyOpen]);
+ useEffect(() => {
+ const handleKey = (e: KeyboardEvent) => {
+ if (e.metaKey && e.key.toLowerCase() === 'm' && !e.ctrlKey && !e.shiftKey && !e.altKey) {
+ e.preventDefault();
+ handleOpenViewPicker();
+ }
+ if (e.metaKey && e.key.toLowerCase() === 'o' && !e.ctrlKey && !e.shiftKey && !e.altKey) {
+ e.preventDefault();
+ handleOpenHistory();
+ }
+ };
+ window.addEventListener('keydown', handleKey);
+ return () => window.removeEventListener('keydown', handleKey);
+ }, [handleOpenViewPicker, handleOpenHistory]);
+
useEffect(() => {
if (!historyOpen) return;
const timer = setTimeout(() => {
@@ -526,8 +561,6 @@ const DashboardToolbar = React.forwardRef(
-
-
(
enterDelay={200}
title={
- Add View
+ Add View ⌘M
}
>
@@ -568,7 +601,7 @@ const DashboardToolbar = React.forwardRef(
enterDelay={200}
title={
- History
+ History ⌘O
}
>
@@ -594,6 +627,39 @@ const DashboardToolbar = React.forwardRef(
+
+ Browser
+
+ }
+ >
+
+
+
+
+
{placeholderItems.map(({ icon: PlaceholderIcon, label, sub }) => (
void;
+ onDragStart?: (id: string, type: 'agent' | 'view') => void;
+ onDragMove?: (dx: number, dy: number) => void;
+ onDragEnd?: (dx: number, dy: number, didDrag: boolean) => void;
}
-const DashboardViewCard: React.FC = ({ output, cardX, cardY, cardWidth, cardHeight, zoom = 1 }) => {
+const DashboardViewCard: React.FC = ({
+ output, cardX, cardY, cardWidth, cardHeight, zoom = 1,
+ isSelected = false, multiDragDelta, onCardSelect, onDragStart, onDragMove, onDragEnd,
+}) => {
const c = useClaudeTokens();
const dispatch = useAppDispatch();
const previewRef = useRef(null);
@@ -64,6 +73,7 @@ const DashboardViewCard: React.FC = ({ output, cardX, cardY, cardWidth, c
const [isDragging, setIsDragging] = useState(false);
const [localDragPos, setLocalDragPos] = useState<{ x: number; y: number } | null>(null);
const didDrag = useRef(false);
+ const justDraggedRef = useRef(false);
const handleDragPointerDown = useCallback((e: React.PointerEvent) => {
e.preventDefault();
@@ -72,7 +82,8 @@ const DashboardViewCard: React.FC = ({ output, cardX, cardY, cardWidth, c
didDrag.current = false;
setIsDragging(true);
(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);
- }, [cardX, cardY]);
+ onDragStart?.(output.id, 'view');
+ }, [cardX, cardY, onDragStart, output.id]);
const handleDragPointerMove = useCallback((e: React.PointerEvent) => {
if (!dragState.current) return;
@@ -80,29 +91,35 @@ const DashboardViewCard: React.FC = ({ output, cardX, cardY, cardWidth, c
const rawDy = e.clientY - dragState.current.startY;
if (!didDrag.current && Math.sqrt(rawDx * rawDx + rawDy * rawDy) < DRAG_THRESHOLD) return;
didDrag.current = true;
+ const dx = rawDx / zoom;
+ const dy = rawDy / zoom;
setLocalDragPos({
- x: dragState.current.origX + rawDx / zoom,
- y: dragState.current.origY + rawDy / zoom,
+ x: dragState.current.origX + dx,
+ y: dragState.current.origY + dy,
});
- }, [zoom]);
+ onDragMove?.(dx, dy);
+ }, [zoom, onDragMove]);
const handleDragPointerUp = useCallback((e: React.PointerEvent) => {
if (!dragState.current) return;
+ const dx = (e.clientX - dragState.current.startX) / zoom;
+ const dy = (e.clientY - dragState.current.startY) / zoom;
if (didDrag.current) {
- const dx = (e.clientX - dragState.current.startX) / zoom;
- const dy = (e.clientY - dragState.current.startY) / zoom;
dispatch(setViewCardPosition({
outputId: output.id,
x: dragState.current.origX + dx,
y: dragState.current.origY + dy,
}));
+ justDraggedRef.current = true;
+ requestAnimationFrame(() => { justDraggedRef.current = false; });
}
+ onDragEnd?.(dx, dy, didDrag.current);
dragState.current = null;
didDrag.current = false;
setLocalDragPos(null);
setIsDragging(false);
(e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);
- }, [zoom, dispatch, output.id]);
+ }, [zoom, dispatch, output.id, onDragEnd]);
// ---- Resize ----
const resizeRef = useRef<{
@@ -223,17 +240,23 @@ const DashboardViewCard: React.FC = ({ output, cardX, cardY, cardWidth, c
}
};
- // Compute display position (prefer local drag/resize during interaction)
- const displayX = localResize?.x ?? localDragPos?.x ?? cardX;
- const displayY = localResize?.y ?? localDragPos?.y ?? cardY;
+ const mdDx = (!isDragging && isSelected && multiDragDelta) ? multiDragDelta.dx : 0;
+ const mdDy = (!isDragging && isSelected && multiDragDelta) ? multiDragDelta.dy : 0;
+ const displayX = localResize?.x ?? localDragPos?.x ?? (cardX + mdDx);
+ const displayY = localResize?.y ?? localDragPos?.y ?? (cardY + mdDy);
const displayW = localResize?.w ?? cardWidth;
const displayH = localResize?.h ?? cardHeight;
+ const noTransition = isDragging || isResizing || (isSelected && !!multiDragDelta);
return (
{
+ if (justDraggedRef.current) return;
+ onCardSelect?.(output.id, 'view', e.shiftKey);
+ }}
sx={{
position: 'absolute',
left: displayX,
@@ -241,14 +264,18 @@ const DashboardViewCard: React.FC = ({ output, cardX, cardY, cardWidth, c
width: displayW,
height: displayH,
borderRadius: `${c.radius.lg}px`,
- border: `1px solid ${c.border.medium}`,
+ border: isSelected ? '2px solid #3b82f6' : `1px solid ${c.border.medium}`,
bgcolor: c.bg.surface,
- boxShadow: (isDragging || isResizing) ? c.shadow.lg : c.shadow.md,
+ boxShadow: isDragging || isResizing
+ ? c.shadow.lg
+ : isSelected
+ ? `0 0 0 1px #3b82f6, ${c.shadow.md}`
+ : c.shadow.md,
overflow: 'hidden',
display: 'flex',
flexDirection: 'column',
zIndex: (isDragging || isResizing) ? 100 : 1,
- transition: (isDragging || isResizing) ? 'none' : 'box-shadow 0.2s',
+ transition: noTransition ? 'none' : 'box-shadow 0.2s',
'&:hover .resize-handle': { opacity: 1 },
}}
>
@@ -329,7 +356,7 @@ const DashboardViewCard: React.FC = ({ output, cardX, cardY, cardWidth, c
(null);
const contentRef = useRef(null);
const [state, setState] = useState({ panX: 0, panY: 0, zoom: 1 });
const [isPanning, setIsPanning] = useState(false);
const [spaceHeld, setSpaceHeld] = useState(false);
+ const [cmdHeld, setCmdHeld] = useState(false);
const panStartRef = useRef<{ x: number; y: number; panX: number; panY: number } | null>(null);
const spaceRef = useRef(false);
+ const cmdRef = useRef(false);
const sensitivityRef = useRef(zoomSensitivity);
sensitivityRef.current = zoomSensitivity;
@@ -109,6 +111,10 @@ export function useCanvasControls(zoomSensitivity: number = 50, panDisabled: boo
spaceRef.current = true;
setSpaceHeld(true);
}
+ if ((e.key === 'Meta' || e.key === 'Control') && !e.repeat) {
+ cmdRef.current = true;
+ setCmdHeld(true);
+ }
if (e.ctrlKey || e.metaKey) {
if (e.key === '0') {
e.preventDefault();
@@ -145,6 +151,10 @@ export function useCanvasControls(zoomSensitivity: number = 50, panDisabled: boo
spaceRef.current = false;
setSpaceHeld(false);
}
+ if (e.key === 'Meta' || e.key === 'Control') {
+ cmdRef.current = false;
+ setCmdHeld(false);
+ }
};
window.addEventListener('keydown', onKeyDown);
@@ -156,23 +166,15 @@ export function useCanvasControls(zoomSensitivity: number = 50, panDisabled: boo
}, []);
const handleMouseDown = useCallback((e: React.MouseEvent) => {
- const isMiddle = e.button === 1;
- const isBackgroundLeft = e.button === 0 && e.target === viewportRef.current;
- const isSpaceDrag = e.button === 0 && spaceRef.current;
-
- if (panDisabled && !isMiddle && !isSpaceDrag) return;
-
- if (isMiddle || isBackgroundLeft || isSpaceDrag) {
- e.preventDefault();
- setIsPanning(true);
- panStartRef.current = {
- x: e.clientX,
- y: e.clientY,
- panX: state.panX,
- panY: state.panY,
- };
- }
- }, [state.panX, state.panY, panDisabled]);
+ e.preventDefault();
+ setIsPanning(true);
+ panStartRef.current = {
+ x: e.clientX,
+ y: e.clientY,
+ panX: state.panX,
+ panY: state.panY,
+ };
+ }, [state.panX, state.panY]);
const handleMouseMove = useCallback((e: React.MouseEvent) => {
const start = panStartRef.current;
@@ -309,6 +311,7 @@ export function useCanvasControls(zoomSensitivity: number = 50, panDisabled: boo
...state,
isPanning,
spaceHeld,
+ cmdHeld,
viewportRef,
contentRef,
handlers: {
diff --git a/frontend/src/app/pages/Dashboard/useDashboardSelection.ts b/frontend/src/app/pages/Dashboard/useDashboardSelection.ts
new file mode 100644
index 00000000..2561aa7f
--- /dev/null
+++ b/frontend/src/app/pages/Dashboard/useDashboardSelection.ts
@@ -0,0 +1,233 @@
+import { useState, useCallback, useRef, useEffect, RefObject } from 'react';
+import type { CardPosition, ViewCardPosition, BrowserCardPosition } from '@/shared/state/dashboardLayoutSlice';
+
+export type CardType = 'agent' | 'view' | 'browser';
+
+export interface SelectedCard {
+ id: string;
+ type: CardType;
+}
+
+export interface MarqueeRect {
+ x: number;
+ y: number;
+ width: number;
+ height: number;
+}
+
+interface ScreenToCanvas {
+ panX: number;
+ panY: number;
+ zoom: number;
+ viewportRef: RefObject;
+}
+
+const DRAG_THRESHOLD = 4;
+
+function rectsIntersect(
+ a: { x: number; y: number; width: number; height: number },
+ b: { x: number; y: number; width: number; height: number },
+): boolean {
+ return (
+ a.x < b.x + b.width &&
+ a.x + a.width > b.x &&
+ a.y < b.y + b.height &&
+ a.y + a.height > b.y
+ );
+}
+
+export function useDashboardSelection(
+ canvas: ScreenToCanvas,
+ cards: Record,
+ viewCards: Record,
+ browserCards: Record = {},
+) {
+ const [selectedIds, setSelectedIds] = useState>(new Map());
+ const [marquee, setMarquee] = useState(null);
+
+ const marqueeOriginRef = useRef<{ screenX: number; screenY: number } | null>(null);
+ const isDraggingMarqueeRef = useRef(false);
+ const shiftHeldRef = useRef(false);
+ const selectionBeforeMarqueeRef = useRef>(new Map());
+
+ const screenToCanvas = useCallback(
+ (screenX: number, screenY: number) => {
+ const vp = canvas.viewportRef.current;
+ if (!vp) return { x: 0, y: 0 };
+ const rect = vp.getBoundingClientRect();
+ return {
+ x: (screenX - rect.left - canvas.panX) / canvas.zoom,
+ y: (screenY - rect.top - canvas.panY) / canvas.zoom,
+ };
+ },
+ [canvas.panX, canvas.panY, canvas.zoom, canvas.viewportRef],
+ );
+
+ const isSelected = useCallback((id: string) => selectedIds.has(id), [selectedIds]);
+
+ const deselectAll = useCallback(() => setSelectedIds(new Map()), []);
+
+ const selectCard = useCallback(
+ (id: string, type: CardType, shiftKey: boolean) => {
+ setSelectedIds((prev) => {
+ if (shiftKey) {
+ const next = new Map(prev);
+ if (next.has(id)) {
+ next.delete(id);
+ } else {
+ next.set(id, type);
+ }
+ return next;
+ }
+ return new Map([[id, type]]);
+ });
+ },
+ [],
+ );
+
+ const selectedArray = useCallback((): SelectedCard[] => {
+ return Array.from(selectedIds.entries()).map(([id, type]) => ({ id, type }));
+ }, [selectedIds]);
+
+ const computeMarqueeSelection = useCallback(
+ (rect: MarqueeRect, shiftKey: boolean) => {
+ const intersecting = new Map();
+
+ for (const card of Object.values(cards)) {
+ if (
+ rectsIntersect(rect, {
+ x: card.x,
+ y: card.y,
+ width: card.width,
+ height: card.height,
+ })
+ ) {
+ intersecting.set(card.session_id, 'agent');
+ }
+ }
+
+ for (const vc of Object.values(viewCards)) {
+ if (
+ rectsIntersect(rect, {
+ x: vc.x,
+ y: vc.y,
+ width: vc.width,
+ height: vc.height,
+ })
+ ) {
+ intersecting.set(vc.output_id, 'view');
+ }
+ }
+
+ for (const bc of Object.values(browserCards)) {
+ if (
+ rectsIntersect(rect, {
+ x: bc.x,
+ y: bc.y,
+ width: bc.width,
+ height: bc.height,
+ })
+ ) {
+ intersecting.set(bc.browser_id, 'browser');
+ }
+ }
+
+ if (shiftKey) {
+ const base = selectionBeforeMarqueeRef.current;
+ const next = new Map(base);
+ for (const [id, type] of intersecting) {
+ if (next.has(id)) {
+ next.delete(id);
+ } else {
+ next.set(id, type);
+ }
+ }
+ return next;
+ }
+
+ return intersecting;
+ },
+ [cards, viewCards, browserCards],
+ );
+
+ const handleCanvasMouseDown = useCallback(
+ (e: MouseEvent) => {
+ if (e.button !== 0) return;
+
+ marqueeOriginRef.current = { screenX: e.clientX, screenY: e.clientY };
+ isDraggingMarqueeRef.current = false;
+ shiftHeldRef.current = e.shiftKey;
+ selectionBeforeMarqueeRef.current = new Map(selectedIds);
+ },
+ [selectedIds],
+ );
+
+ const handleCanvasMouseMove = useCallback(
+ (e: MouseEvent) => {
+ const origin = marqueeOriginRef.current;
+ if (!origin) return;
+
+ const dx = e.clientX - origin.screenX;
+ const dy = e.clientY - origin.screenY;
+
+ if (!isDraggingMarqueeRef.current) {
+ if (Math.abs(dx) < DRAG_THRESHOLD && Math.abs(dy) < DRAG_THRESHOLD) return;
+ isDraggingMarqueeRef.current = true;
+ }
+
+ const start = screenToCanvas(origin.screenX, origin.screenY);
+ const end = screenToCanvas(e.clientX, e.clientY);
+
+ const rect: MarqueeRect = {
+ x: Math.min(start.x, end.x),
+ y: Math.min(start.y, end.y),
+ width: Math.abs(end.x - start.x),
+ height: Math.abs(end.y - start.y),
+ };
+
+ setMarquee(rect);
+ setSelectedIds(computeMarqueeSelection(rect, shiftHeldRef.current));
+ },
+ [screenToCanvas, computeMarqueeSelection],
+ );
+
+ const handleCanvasMouseUp = useCallback(
+ (e: MouseEvent) => {
+ const origin = marqueeOriginRef.current;
+ if (!origin) return;
+
+ if (!isDraggingMarqueeRef.current) {
+ if (!e.shiftKey) {
+ deselectAll();
+ }
+ }
+
+ marqueeOriginRef.current = null;
+ isDraggingMarqueeRef.current = false;
+ setMarquee(null);
+ },
+ [deselectAll],
+ );
+
+ useEffect(() => {
+ const onKeyDown = (e: KeyboardEvent) => {
+ if (e.key === 'Escape') {
+ deselectAll();
+ }
+ };
+ window.addEventListener('keydown', onKeyDown);
+ return () => window.removeEventListener('keydown', onKeyDown);
+ }, [deselectAll]);
+
+ return {
+ selectedIds,
+ selectedArray,
+ marquee,
+ isSelected,
+ selectCard,
+ deselectAll,
+ handleCanvasMouseDown,
+ handleCanvasMouseMove,
+ handleCanvasMouseUp,
+ };
+}
diff --git a/frontend/src/app/pages/Settings/Settings.tsx b/frontend/src/app/pages/Settings/Settings.tsx
index b5310fff..667f48ff 100644
--- a/frontend/src/app/pages/Settings/Settings.tsx
+++ b/frontend/src/app/pages/Settings/Settings.tsx
@@ -1,7 +1,6 @@
import React, { useState, useEffect, useMemo, useCallback } from 'react';
import Box from '@mui/material/Box';
import Typography from '@mui/material/Typography';
-import Paper from '@mui/material/Paper';
import TextField from '@mui/material/TextField';
import Button from '@mui/material/Button';
import FormControl from '@mui/material/FormControl';
@@ -26,6 +25,7 @@ import DarkModeIcon from '@mui/icons-material/DarkMode';
import SaveIcon from '@mui/icons-material/Save';
import CloseIcon from '@mui/icons-material/Close';
import KeyboardIcon from '@mui/icons-material/Keyboard';
+import LanguageIcon from '@mui/icons-material/Language';
import { useAppDispatch, useAppSelector } from '@/shared/hooks';
import { updateSettings, closeSettingsModal, AppSettings } from '@/shared/state/settingsSlice';
import { fetchModes } from '@/shared/state/modesSlice';
@@ -96,11 +96,56 @@ const Settings: React.FC = () => {
const fieldSx = {
'& .MuiOutlinedInput-root': {
- bgcolor: c.bg.page,
fontSize: '0.85rem',
},
};
+ const sectionSx = {
+ fontSize: '0.7rem',
+ fontWeight: 600,
+ letterSpacing: '0.06em',
+ textTransform: 'uppercase' as const,
+ color: c.text.tertiary,
+ mb: 0.5,
+ mt: 0.5,
+ };
+
+ const rowSx = {
+ py: 2,
+ borderBottom: `1px solid ${c.border.subtle}`,
+ };
+
+ const rowLastSx = {
+ py: 2,
+ };
+
+ const inlineRowSx = {
+ ...rowSx,
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ };
+
+ const inlineRowLastSx = {
+ ...rowLastSx,
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ };
+
+ const labelSx = {
+ color: c.text.primary,
+ fontWeight: 500,
+ fontSize: '0.875rem',
+ lineHeight: 1.4,
+ };
+
+ const descSx = {
+ color: c.text.tertiary,
+ fontSize: '0.75rem',
+ lineHeight: 1.4,
+ };
+
return (
<>
{
maxWidth={false}
PaperProps={{
sx: {
- width: 800,
+ width: 660,
maxHeight: '85vh',
bgcolor: c.bg.page,
- borderRadius: 4,
+ borderRadius: 2,
border: `1px solid ${c.border.subtle}`,
- boxShadow: c.shadow.lg,
+ boxShadow: c.shadow.md,
},
}}
>
@@ -125,38 +170,35 @@ const Settings: React.FC = () => {
justifyContent: 'space-between',
borderBottom: `1px solid ${c.border.subtle}`,
px: 3,
- py: 2,
+ py: 1.5,
}}
>
-
-
- Settings
-
-
- Global defaults and application configuration.
-
-
+
+ Settings
+
-
+
-
- {/* Default System Prompt */}
-
-
- Default System Prompt
-
-
- A global system prompt prepended to every agent session, before any mode-specific instructions.
+
+
+ {/* ── Agent Defaults ── */}
+ Agent Defaults
+
+
+ System prompt
+
+ Prepended to every agent session before mode-specific instructions.
{
fullWidth
multiline
minRows={3}
- maxRows={10}
+ maxRows={8}
placeholder="Enter a default system prompt..."
sx={{
...fieldSx,
@@ -183,15 +225,12 @@ const Settings: React.FC = () => {
},
}}
/>
-
+
- {/* Default Folder */}
-
-
- Default Folder
-
-
- The working directory agents start in by default. Modes can override this per-mode.
+
+ Working directory
+
+ Default folder agents start in. Modes can override per-mode.
{
setBrowseOpen(true)}
- startIcon={ }
+ startIcon={ }
sx={{
- color: c.accent.primary,
+ color: c.text.tertiary,
borderColor: c.border.medium,
textTransform: 'none',
whiteSpace: 'nowrap',
minWidth: 'auto',
+ fontSize: '0.8rem',
+ '&:hover': { color: c.accent.primary, borderColor: c.accent.primary },
}}
>
Browse
-
+
- {/* Default Model */}
-
-
- Default Model
-
-
- The default model for new agent sessions.
-
-
+
+
+ Model
+ Default model for new sessions.
+
+
setForm({ ...form, default_model: e.target.value })}
- sx={{ bgcolor: c.bg.page }}
+ sx={{ fontSize: '0.85rem' }}
MenuProps={{ PaperProps: { sx: { bgcolor: c.bg.surface, color: c.text.primary } } }}
>
Sonnet 4.6
@@ -245,21 +283,18 @@ const Settings: React.FC = () => {
Haiku 3.5
-
+
- {/* Default Mode */}
-
-
- Default Mode
-
-
- The default interaction mode for new agent sessions.
-
-
+
+
+ Mode
+ Default interaction mode for new sessions.
+
+
setForm({ ...form, default_mode: e.target.value })}
- sx={{ bgcolor: c.bg.page }}
+ sx={{ fontSize: '0.85rem' }}
MenuProps={{ PaperProps: { sx: { bgcolor: c.bg.surface, color: c.text.primary } } }}
>
{modesList.map((m) => (
@@ -267,35 +302,68 @@ const Settings: React.FC = () => {
))}
-
+
- {/* Default Max Turns */}
-
-
- Default Max Turns
-
-
- Maximum number of agent turns before auto-stopping. Leave empty for unlimited.
-
+
+
+ Max turns
+ Auto-stop after this many turns. Empty = unlimited.
+
setForm({ ...form, default_max_turns: e.target.value ? parseInt(e.target.value) : null })}
size="small"
- fullWidth
- placeholder="Unlimited"
+ placeholder="∞"
inputProps={{ min: 1 }}
- sx={fieldSx}
+ sx={{ ...fieldSx, width: 100 }}
/>
-
+
- {/* Zoom Sensitivity */}
-
-
- Zoom Sensitivity
-
-
- Controls how responsive scroll-to-zoom is on the dashboard canvas. Lower values suit trackpads; higher values suit mouse wheels.
+ {/* ── Interface ── */}
+ Interface
+
+
+
+ Theme
+ Application color scheme.
+
+ { if (v) setForm({ ...form, theme: v }); }}
+ size="small"
+ sx={{
+ '& .MuiToggleButton-root': {
+ color: c.text.muted,
+ borderColor: c.border.medium,
+ textTransform: 'none',
+ px: 2,
+ py: 0.5,
+ gap: 0.5,
+ fontSize: '0.8rem',
+ '&.Mui-selected': {
+ bgcolor: `${c.accent.primary}15`,
+ color: c.accent.primary,
+ borderColor: c.accent.primary,
+ '&:hover': { bgcolor: `${c.accent.primary}20` },
+ },
+ },
+ }}
+ >
+
+ Light
+
+
+ Dark
+
+
+
+
+
+ Zoom sensitivity
+
+ Scroll-to-zoom responsiveness. Lower for trackpads, higher for mouse wheels.
{
]}
sx={{
color: c.accent.primary,
- '& .MuiSlider-markLabel': { color: c.text.tertiary, fontSize: '0.75rem' },
+ '& .MuiSlider-markLabel': { color: c.text.tertiary, fontSize: '0.7rem' },
'& .MuiSlider-valueLabel': { bgcolor: c.accent.primary },
}}
/>
-
+
- {/* New Agent Shortcut */}
-
-
- New Agent Shortcut
-
-
- Keyboard shortcut to open the new agent input on the Dashboard.
-
+
+
+ New agent shortcut
+ Keyboard shortcut to create an agent.
+
{
@@ -347,25 +412,24 @@ const Settings: React.FC = () => {
sx={{
display: 'inline-flex',
alignItems: 'center',
- gap: 1,
- px: 2,
- py: 1,
- borderRadius: `${c.radius.md}px`,
+ gap: 0.75,
+ px: 1.5,
+ py: 0.75,
+ borderRadius: `${c.radius.sm}px`,
border: `1px solid ${recordingShortcut ? c.accent.primary : c.border.medium}`,
- bgcolor: c.bg.page,
cursor: 'pointer',
outline: 'none',
transition: 'border-color 0.15s',
'&:hover': { borderColor: c.accent.primary },
}}
>
-
+
{recordingShortcut ? (
-
+
Press shortcut…
) : (
-
+
{form.new_agent_shortcut
.split('+')
.map((p) => {
@@ -379,53 +443,42 @@ const Settings: React.FC = () => {
)}
-
+
- {/* Theme */}
-
-
- Theme
+ {/* ── Browser ── */}
+ Browser
+
+
+ Default homepage
+
+ URL loaded when opening a new browser card on the dashboard.
-
- Application color scheme.
-
- { if (v) setForm({ ...form, theme: v }); }}
- size="small"
- sx={{
- '& .MuiToggleButton-root': {
- color: c.text.muted,
- borderColor: c.border.medium,
- textTransform: 'none',
- px: 2.5,
- gap: 0.75,
- '&.Mui-selected': {
- bgcolor: `${c.accent.primary}15`,
- color: c.accent.primary,
- borderColor: c.accent.primary,
- '&:hover': { bgcolor: `${c.accent.primary}20` },
+
+
+ setForm({ ...form, browser_homepage: e.target.value })}
+ size="small"
+ fullWidth
+ placeholder="https://www.google.com"
+ sx={{
+ ...fieldSx,
+ '& .MuiOutlinedInput-root': {
+ ...fieldSx['& .MuiOutlinedInput-root'],
+ fontFamily: c.font.mono,
},
- },
- }}
- >
-
- Light
-
-
- Dark
-
-
-
+ }}
+ />
+
+
- {/* Anthropic API Key */}
-
-
- Anthropic API Key
-
-
- Your API key for the Anthropic Claude API. Stored securely in the database.
+ {/* ── API ── */}
+ API
+
+
+ Anthropic API key
+
+ Stored securely in the local database.
{
size="small"
sx={{ color: c.text.tertiary }}
>
- {showApiKey ? : }
+ {showApiKey ? : }
),
}}
/>
-
+
-
+
Cancel
}
+ startIcon={ }
onClick={handleSave}
disabled={!hasChanges}
sx={{
@@ -478,11 +531,12 @@ const Settings: React.FC = () => {
'&:hover': { bgcolor: c.accent.pressed },
'&.Mui-disabled': { bgcolor: c.bg.secondary, color: c.text.ghost },
textTransform: 'none',
- borderRadius: 2,
- px: 3,
+ borderRadius: 1.5,
+ px: 2.5,
+ fontSize: '0.85rem',
}}
>
- Save Settings
+ Save
@@ -500,43 +554,42 @@ const Settings: React.FC = () => {
anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}
>
setSaved(false)} severity="success" sx={{ bgcolor: c.bg.surface, color: c.text.primary, border: `1px solid ${c.status.success}` }}>
- Settings saved successfully
+ Settings saved
- {/* Discard changes confirmation */}
setConfirmDiscard(false)}
PaperProps={{
sx: {
- bgcolor: c.bg.surface,
- borderRadius: 3,
+ bgcolor: c.bg.page,
+ borderRadius: 2,
border: `1px solid ${c.border.subtle}`,
- boxShadow: c.shadow.lg,
- maxWidth: 400,
+ boxShadow: c.shadow.md,
+ maxWidth: 380,
},
}}
>
-
- Unsaved Changes
+
+ Unsaved changes
-
-
+
+
You have unsaved changes. Would you like to save them before closing?
Discard
setConfirmDiscard(false)}
- sx={{ color: c.text.muted, textTransform: 'none' }}
+ sx={{ color: c.text.muted, textTransform: 'none', fontSize: '0.85rem' }}
>
Cancel
@@ -547,7 +600,8 @@ const Settings: React.FC = () => {
bgcolor: c.accent.primary,
'&:hover': { bgcolor: c.accent.pressed },
textTransform: 'none',
- borderRadius: 2,
+ borderRadius: 1.5,
+ fontSize: '0.85rem',
}}
>
Save & Close
diff --git a/frontend/src/app/pages/Skills/SkillBuilderChat.tsx b/frontend/src/app/pages/Skills/SkillBuilderChat.tsx
index b4d962ab..ca064400 100644
--- a/frontend/src/app/pages/Skills/SkillBuilderChat.tsx
+++ b/frontend/src/app/pages/Skills/SkillBuilderChat.tsx
@@ -16,8 +16,9 @@ import { createDraftSession, removeDraftSession } from '@/shared/state/agentsSli
import { createSkill } from '@/shared/state/skillsSlice';
import AgentChat from '../AgentChat/AgentChat';
import { ContextPath } from '@/app/components/DirectoryBrowser';
+import { API_BASE } from '@/shared/config';
-const SKILLS_WORKSPACE_API = `http://${window.location.hostname}:8324/api/skills`;
+const SKILLS_WORKSPACE_API = `${API_BASE}/skills`;
const POLL_INTERVAL_MS = 2000;
export interface SkillPreviewData {
diff --git a/frontend/src/app/pages/Tools/Tools.tsx b/frontend/src/app/pages/Tools/Tools.tsx
index b7834bfb..be5d842f 100644
--- a/frontend/src/app/pages/Tools/Tools.tsx
+++ b/frontend/src/app/pages/Tools/Tools.tsx
@@ -398,7 +398,7 @@ const Tools: React.FC = () => {
// Registry browser
const [registryOpen, setRegistryOpen] = useState(false);
const [regQuery, setRegQuery] = useState('');
- const [regSort, setRegSort] = useState<'name' | 'stars'>('name');
+ const [regSort, setRegSort] = useState<'name' | 'stars'>('stars');
const [regSource, setRegSource] = useState<'' | 'community' | 'google'>('');
const [expandedServer, setExpandedServer] = useState(null);
const [snackbar, setSnackbar] = useState<{ open: boolean; message: string; severity?: 'success' | 'error' }>({ open: false, message: '' });
@@ -609,11 +609,11 @@ const Tools: React.FC = () => {
handleMenuClose();
setRegistryOpen(true);
setRegQuery('');
- setRegSort('name');
+ setRegSort('stars');
setRegSource('');
setExpandedServer(null);
dispatch(fetchRegistryStats());
- dispatch(searchRegistry({ q: '', limit: 20, offset: 0, sort: 'name', source: '' }));
+ dispatch(searchRegistry({ q: '', limit: 20, offset: 0, sort: 'stars', source: '' }));
};
// --------------- Tool CRUD ---------------
@@ -681,8 +681,7 @@ const Tools: React.FC = () => {
try { parsedConfig = JSON.parse(mcpConfigJson); } catch { setMcpConfigError('Invalid JSON'); return; }
const f = serverToToolForm(mcpConfigServer);
- const isStdioConfig = parsedConfig.type === 'stdio' || !!parsedConfig.command;
- const authStatus = (mcpAuthType !== 'none' || isStdioConfig) ? 'configured' : 'none';
+ const authStatus = 'configured';
await dispatch(createTool({
name: f.name,
@@ -1038,7 +1037,7 @@ const Tools: React.FC = () => {
const isExpanded = expandedToolId === tool.id;
const isMcp = tool.mcp_config && Object.keys(tool.mcp_config).length > 0;
const isStdio = isMcp && (tool.mcp_config.type === 'stdio' || !!tool.mcp_config.command);
- const canDiscover = isMcp && (isStdio || tool.auth_status !== 'none');
+ const canDiscover = isMcp;
const perms = tool.tool_permissions || {};
const services = perms._services as Record | undefined;
const descriptions = (perms._tool_descriptions || {}) as Record;
@@ -1303,7 +1302,7 @@ const Tools: React.FC = () => {
Discover Tools
{!canDiscover && (
- Connect the tool first to discover available permissions
+ Add an MCP configuration to enable tool discovery
)}
) : (
diff --git a/frontend/src/app/pages/Views/ViewEditor.tsx b/frontend/src/app/pages/Views/ViewEditor.tsx
index aa051d99..3b110390 100644
--- a/frontend/src/app/pages/Views/ViewEditor.tsx
+++ b/frontend/src/app/pages/Views/ViewEditor.tsx
@@ -41,8 +41,9 @@ import AutoFixHighIcon from '@mui/icons-material/AutoFixHigh';
import CodeEditor from './CodeEditor';
import { ElementSelectionProvider } from '@/app/components/ElementSelectionContext';
import { captureViewThumbnail } from './captureViewThumbnail';
+import { API_BASE } from '@/shared/config';
-const WORKSPACE_API = `http://${window.location.hostname}:8324/api/outputs/workspace`;
+const WORKSPACE_API = `${API_BASE}/outputs/workspace`;
const POLL_INTERVAL_MS = 2000;
function getFileIcon(filename: string): React.ReactNode {
@@ -477,7 +478,11 @@ interface Props {
const ViewEditor: React.FC = ({ output, onClose }) => {
const c = useClaudeTokens();
const dispatch = useAppDispatch();
- const isNew = !output;
+
+ const [createdId, setCreatedId] = useState(null);
+ const createdIdRef = useRef(null);
+ const effectiveId = output?.id ?? createdId;
+ const isNew = !effectiveId;
const [name, setName] = useState(output?.name ?? '');
const [description, setDescription] = useState(output?.description ?? '');
@@ -502,6 +507,10 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
const [activeTab, setActiveTab] = useState(TAB_PREVIEW);
const [activeFile, setActiveFile] = useState('index.html');
const [saving, setSaving] = useState(false);
+ const [saveStatus, setSaveStatus] = useState<'idle' | 'unsaved' | 'saving' | 'saved'>('idle');
+ const autoSaveTimerRef = useRef | null>(null);
+ const savedStatusTimerRef = useRef | null>(null);
+ const savingRef = useRef(false);
const [executeResult, setExecuteResult] = useState(null);
const [showConsole, setShowConsole] = useState(false);
const [consoleEntry, setConsoleEntry] = useState(null);
@@ -609,6 +618,9 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
const isAgentActive = agentStatus === 'running' || agentStatus === 'waiting_approval';
const workspaceId = workspacePath ? stableWorkspaceId : null;
+ const workspaceIdRef = useRef(null);
+ workspaceIdRef.current = workspaceId;
+ const wsPushTimers = useRef>>(new Map());
const initialContextPaths = useMemo(
() => workspacePath ? [{ path: workspacePath, type: 'directory' as const }] : undefined,
@@ -742,36 +754,58 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
.catch(() => {});
};
- const handleSave = async (close = true) => {
+ const performSaveRef = useRef<((close: boolean) => Promise) | null>(null);
+
+ performSaveRef.current = async (close: boolean) => {
+ if (savingRef.current) return;
+ savingRef.current = true;
setSaving(true);
+ setSaveStatus('saving');
try {
const body = buildBody();
+ const eid = output?.id ?? createdIdRef.current;
let savedId: string;
- if (output) {
- await dispatch(updateOutput({ id: output.id, ...body })).unwrap();
- savedId = output.id;
+ if (eid) {
+ await dispatch(updateOutput({ id: eid, ...body })).unwrap();
+ savedId = eid;
} else {
const created = await dispatch(createOutput(body)).unwrap();
savedId = created.id;
+ createdIdRef.current = savedId;
+ setCreatedId(savedId);
}
savedRef.current = true;
+ setSaveStatus('saved');
+ if (savedStatusTimerRef.current) clearTimeout(savedStatusTimerRef.current);
+ savedStatusTimerRef.current = setTimeout(() => setSaveStatus('idle'), 3000);
if (close) onClose();
+ else previewRef.current?.reload();
captureThumbnailAsync(savedId);
} catch (err: any) {
console.error('Failed to save output:', err);
+ setSaveStatus('unsaved');
} finally {
setSaving(false);
+ savingRef.current = false;
}
};
+ const handleSave = async (close = true) => {
+ if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);
+ await performSaveRef.current?.(close);
+ };
+
const handleClose = async () => {
+ if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);
+ if (savedStatusTimerRef.current) clearTimeout(savedStatusTimerRef.current);
+ const eid = output?.id ?? createdIdRef.current;
if (!savedRef.current && (files['index.html'] ?? '').trim()) {
try {
const body = buildBody();
let savedId: string;
- if (output) {
- await dispatch(updateOutput({ id: output.id, ...body })).unwrap();
- savedId = output.id;
+ if (eid) {
+ await dispatch(updateOutput({ id: eid, ...body })).unwrap();
+ savedId = eid;
} else {
const created = await dispatch(createOutput(body)).unwrap();
savedId = created.id;
@@ -783,7 +817,8 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
};
const handleRunPreview = async () => {
- if (!output) {
+ const eid = output?.id ?? createdIdRef.current;
+ if (!eid) {
setExecuteResult(null);
return;
}
@@ -791,7 +826,7 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
setHasNewConsoleOutput(true);
try {
const res = await dispatch(
- executeOutput({ output_id: output.id, input_data: testInput })
+ executeOutput({ output_id: eid, input_data: testInput })
).unwrap();
setExecuteResult(res);
setConsoleEntry({ timestamp: Date.now(), inputData: res.input_data, stdout: res.stdout ?? null, stderr: res.stderr ?? null, backendResult: res.backend_result, error: res.error, source: 'execute' });
@@ -809,12 +844,13 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
try { schema = JSON.parse(schemaText); } catch { schema = { type: 'object', properties: {} }; }
const forcedToolNames = config.forcedTools.flatMap((ft) => ft.tools);
- if (forcedToolNames.length > 0 && output?.id) {
+ const eid = output?.id ?? createdIdRef.current;
+ if (forcedToolNames.length > 0 && eid) {
try {
const res = await dispatch(autoRunAgentOutput({
prompt: config.prompt,
input_schema: schema,
- output_id: output.id,
+ output_id: eid,
model: autoRunModel,
forced_tools: forcedToolNames,
context_paths: config.contextPaths.map((cp) => ({ path: cp.path, type: cp.type })),
@@ -840,7 +876,7 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
if (res.input_data) {
setTestInput(res.input_data);
setExecuteResult({
- output_id: output?.id ?? '',
+ output_id: output?.id ?? createdIdRef.current ?? '',
output_name: name,
frontend_code: files['index.html'] ?? '',
input_data: res.input_data,
@@ -869,7 +905,7 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
if (tc.tool !== 'RenderOutput' || !tc.input?.input_data) continue;
setTestInput(tc.input.input_data);
setExecuteResult({
- output_id: output?.id ?? '',
+ output_id: output?.id ?? createdIdRef.current ?? '',
output_name: name,
frontend_code: files['index.html'] ?? '',
input_data: tc.input.input_data,
@@ -890,7 +926,7 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
if (lastSys) {
const errMsg = typeof lastSys.content === 'string' ? lastSys.content : JSON.stringify(lastSys.content);
setExecuteResult({
- output_id: output?.id ?? '',
+ output_id: output?.id ?? createdIdRef.current ?? '',
output_name: name,
frontend_code: files['index.html'] ?? '',
input_data: {},
@@ -939,6 +975,21 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
const updateFile = useCallback((path: string, content: string) => {
setFiles(prev => ({ ...prev, [path]: content }));
+ const wsId = workspaceIdRef.current;
+ if (wsId) {
+ const existing = wsPushTimers.current.get(path);
+ if (existing) clearTimeout(existing);
+ wsPushTimers.current.set(path, setTimeout(() => {
+ wsPushTimers.current.delete(path);
+ fetch(`${WORKSPACE_API}/${wsId}/file/${encodeURIComponent(path)}`, {
+ method: 'PUT',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ content }),
+ })
+ .then(() => previewRef.current?.reload())
+ .catch(() => {});
+ }, 300));
+ }
}, []);
const [newFileName, setNewFileName] = useState('');
@@ -986,6 +1037,34 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
const activeFileContent = files[activeFile] ?? '';
+ const autoSaveInitRef = useRef(true);
+ useEffect(() => {
+ if (autoSaveInitRef.current) {
+ autoSaveInitRef.current = false;
+ return;
+ }
+ const hasContent = name.trim() || (files['index.html'] ?? '').trim();
+ if (!hasContent) return;
+ if (!savingRef.current) {
+ setSaveStatus('unsaved');
+ }
+ if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);
+ autoSaveTimerRef.current = setTimeout(() => {
+ performSaveRef.current?.(false);
+ }, 1500);
+ return () => {
+ if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);
+ };
+ }, [files, name, description, autoRunEnabled, autoRunMode, autoRunModel]);
+
+ useEffect(() => {
+ return () => {
+ if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);
+ if (savedStatusTimerRef.current) clearTimeout(savedStatusTimerRef.current);
+ wsPushTimers.current.forEach(t => clearTimeout(t));
+ };
+ }, []);
+
return (
@@ -1108,6 +1187,27 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
{autoRunning ? 'Running…' : 'Auto Run'}
)}
+ {saveStatus === 'unsaved' && (
+
+ Unsaved changes
+
+ )}
+ {saveStatus === 'saving' && (
+
+
+
+ Saving…
+
+
+ )}
+ {saveStatus === 'saved' && (
+
+
+
+ Saved
+
+
+ )}
}
@@ -1123,7 +1223,7 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
'&:hover': { bgcolor: c.accent.hover },
}}
>
- {saving ? 'Saving...' : isNew ? 'Create' : 'Save'}
+ {saving ? 'Saving…' : isNew ? 'Create' : 'Save'}
@@ -1172,7 +1272,7 @@ const ViewEditor: React.FC = ({ output, onClose }) => {
- {output && (
+ {effectiveId && (
= ({ output, onClose }) => {
)}
{result ? (
) : (
diff --git a/frontend/src/shared/browserCommandHandler.ts b/frontend/src/shared/browserCommandHandler.ts
new file mode 100644
index 00000000..eebdcfc8
--- /dev/null
+++ b/frontend/src/shared/browserCommandHandler.ts
@@ -0,0 +1,159 @@
+import { getWebview, type BrowserWebview } from './browserRegistry';
+import { dashboardWs } from './ws/WebSocketManager';
+
+let initialized = false;
+
+export type BrowserAction = 'screenshot' | 'get_text' | 'navigate' | 'click' | 'type' | 'evaluate';
+
+export interface BrowserActivity {
+ action: BrowserAction;
+ detail?: string;
+}
+
+type ActivityListener = (browserId: string, activity: BrowserActivity | null) => void;
+
+const activityMap = new Map();
+const listeners = new Set();
+
+function setActivity(browserId: string, activity: BrowserActivity | null) {
+ if (activity) {
+ activityMap.set(browserId, activity);
+ } else {
+ activityMap.delete(browserId);
+ }
+ listeners.forEach((fn) => fn(browserId, activity));
+}
+
+export function getActivity(browserId: string): BrowserActivity | null {
+ return activityMap.get(browserId) ?? null;
+}
+
+export function subscribeActivity(fn: ActivityListener): () => void {
+ listeners.add(fn);
+ return () => { listeners.delete(fn); };
+}
+
+const ACTION_LABELS: Record = {
+ screenshot: 'Capturing...',
+ get_text: 'Reading...',
+ navigate: 'Navigating...',
+ click: 'Clicking...',
+ type: 'Typing...',
+ evaluate: 'Evaluating...',
+};
+
+export function getActionLabel(action: string): string {
+ return ACTION_LABELS[action] ?? 'Working...';
+}
+
+async function handleScreenshot(wv: BrowserWebview): Promise> {
+ const nativeImage = await wv.capturePage();
+ const dataUrl = nativeImage.toDataURL();
+ const base64 = dataUrl.replace(/^data:image\/\w+;base64,/, '');
+ return { image: base64, url: wv.getURL(), title: wv.getTitle() };
+}
+
+async function handleGetText(wv: BrowserWebview): Promise> {
+ const text: string = await wv.executeJavaScript(
+ 'document.body.innerText.substring(0, 15000)'
+ );
+ return { text, url: wv.getURL(), title: wv.getTitle() };
+}
+
+async function handleNavigate(wv: BrowserWebview, params: Record): Promise> {
+ const url = params.url as string;
+ if (!url) return { error: 'url parameter is required' };
+ await wv.loadURL(url);
+ return { text: `Navigated to ${url}`, url };
+}
+
+async function handleClick(wv: BrowserWebview, params: Record): Promise> {
+ const selector = params.selector as string;
+ if (!selector) return { error: 'selector parameter is required' };
+ const safeSelector = JSON.stringify(selector);
+ const code = `(()=>{const el=document.querySelector(${safeSelector});if(!el)return{error:'Element not found: '+${safeSelector}};el.click();return{text:'Clicked element: '+el.tagName.toLowerCase()+(el.id?'#'+el.id:'')}})()`;
+ const result = await wv.executeJavaScript(code);
+ return result;
+}
+
+async function handleType(wv: BrowserWebview, params: Record): Promise> {
+ const selector = params.selector as string;
+ const text = params.text as string;
+ if (!selector) return { error: 'selector parameter is required' };
+ if (text == null) return { error: 'text parameter is required' };
+ const safeSelector = JSON.stringify(selector);
+ const safeText = JSON.stringify(text);
+ const code = `(()=>{const el=document.querySelector(${safeSelector});if(!el)return{error:'Element not found: '+${safeSelector}};el.focus();el.value=${safeText};el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));return{text:'Typed into: '+el.tagName.toLowerCase()+(el.id?'#'+el.id:'')}})()`;
+ const result = await wv.executeJavaScript(code);
+ return result;
+}
+
+async function handleEvaluate(wv: BrowserWebview, params: Record): Promise> {
+ const expression = params.expression as string;
+ if (!expression) return { error: 'expression parameter is required' };
+ try {
+ const result = await wv.executeJavaScript(expression);
+ const text = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
+ return { text: text ?? 'undefined', url: wv.getURL() };
+ } catch (err: any) {
+ return { error: `JS evaluation error: ${err?.message || String(err)}` };
+ }
+}
+
+async function handleBrowserCommand(data: Record) {
+ const { request_id, action, browser_id, params = {} } = data;
+ if (!request_id) return;
+
+ const wv = getWebview(browser_id);
+ if (!wv) {
+ dashboardWs.send('browser:result', {
+ request_id,
+ error: `Browser card '${browser_id}' not found or not an Electron webview`,
+ });
+ return;
+ }
+
+ const detail = params.url || params.selector || params.expression || undefined;
+ setActivity(browser_id, { action: action as BrowserAction, detail });
+
+ let result: Record;
+ try {
+ switch (action) {
+ case 'screenshot':
+ result = await handleScreenshot(wv);
+ break;
+ case 'get_text':
+ result = await handleGetText(wv);
+ break;
+ case 'navigate':
+ result = await handleNavigate(wv, params);
+ break;
+ case 'click':
+ result = await handleClick(wv, params);
+ break;
+ case 'type':
+ result = await handleType(wv, params);
+ break;
+ case 'evaluate':
+ result = await handleEvaluate(wv, params);
+ break;
+ default:
+ result = { error: `Unknown browser action: ${action}` };
+ }
+ } catch (err: any) {
+ result = { error: `Browser command failed: ${err?.message || String(err)}` };
+ }
+
+ setActivity(browser_id, null);
+ dashboardWs.send('browser:result', { request_id, ...result });
+}
+
+export function initBrowserCommandHandler(): () => void {
+ if (initialized) return () => {};
+ initialized = true;
+ const unsub = dashboardWs.on('browser:command', handleBrowserCommand);
+ return () => {
+ unsub();
+ initialized = false;
+ };
+}
diff --git a/frontend/src/shared/browserRegistry.ts b/frontend/src/shared/browserRegistry.ts
new file mode 100644
index 00000000..97f65dc9
--- /dev/null
+++ b/frontend/src/shared/browserRegistry.ts
@@ -0,0 +1,37 @@
+export interface BrowserWebview extends HTMLElement {
+ src: string;
+ loadURL: (url: string) => Promise;
+ goBack: () => void;
+ goForward: () => void;
+ reload: () => void;
+ canGoBack: () => boolean;
+ canGoForward: () => boolean;
+ getURL: () => string;
+ getTitle: () => string;
+ capturePage: (rect?: { x: number; y: number; width: number; height: number }) => Promise<{
+ toDataURL: () => string;
+ toPNG: () => Buffer;
+ }>;
+ executeJavaScript: (code: string) => Promise;
+ sendInputEvent: (event: any) => void;
+ addEventListener: (event: string, listener: (...args: any[]) => void) => void;
+ removeEventListener: (event: string, listener: (...args: any[]) => void) => void;
+}
+
+const registry = new Map();
+
+export function registerWebview(browserId: string, wv: BrowserWebview): void {
+ registry.set(browserId, wv);
+}
+
+export function unregisterWebview(browserId: string): void {
+ registry.delete(browserId);
+}
+
+export function getWebview(browserId: string): BrowserWebview | undefined {
+ return registry.get(browserId);
+}
+
+export function getAllWebviews(): Map {
+ return new Map(registry);
+}
diff --git a/frontend/src/shared/config.ts b/frontend/src/shared/config.ts
new file mode 100644
index 00000000..0922e139
--- /dev/null
+++ b/frontend/src/shared/config.ts
@@ -0,0 +1,5 @@
+const port = (window as any).__OPENSWARM_PORT__ || 8324;
+const host = window.location.hostname || 'localhost';
+
+export const API_BASE = `http://${host}:${port}/api`;
+export const WS_BASE = `ws://${host}:${port}`;
diff --git a/frontend/src/shared/state/API_ENDPOINTS.ts b/frontend/src/shared/state/API_ENDPOINTS.ts
deleted file mode 100644
index 9d117332..00000000
--- a/frontend/src/shared/state/API_ENDPOINTS.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-const is_local = true; // NOTE: Change this to false when deploying to production
-
-const LOCAL_API_URL = 'http://localhost:8324/api';
-const PROD_API_URL = 'https://your-domain.com/api';
-
-// HEALTH - Endpoints
-export const HEALTH_CHECK_URL = (is_local ? LOCAL_API_URL : PROD_API_URL) + '/health/check';
-
-// ITEM DB - Endpoints
-export const CREATE_ITEM_URL = (is_local ? LOCAL_API_URL : PROD_API_URL) + '/item_db/create';
-export const LIST_ITEMS_URL = (is_local ? LOCAL_API_URL : PROD_API_URL) + '/item_db/list';
-export const GET_ITEM_URL = (is_local ? LOCAL_API_URL : PROD_API_URL) + '/item_db/get';
-export const UPDATE_ITEM_URL = (is_local ? LOCAL_API_URL : PROD_API_URL) + '/item_db/update';
-export const DELETE_ITEM_URL = (is_local ? LOCAL_API_URL : PROD_API_URL) + '/item_db/delete';
diff --git a/frontend/src/shared/state/agentsSlice.ts b/frontend/src/shared/state/agentsSlice.ts
index 6ce7cc74..2186a419 100644
--- a/frontend/src/shared/state/agentsSlice.ts
+++ b/frontend/src/shared/state/agentsSlice.ts
@@ -1,6 +1,7 @@
import { createSlice, createAsyncThunk, PayloadAction } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/agents`;
+const AGENTS_API = `${API_BASE}/agents`;
export interface AgentMessage {
id: string;
@@ -124,14 +125,14 @@ export const fetchSessions = createAsyncThunk(
const params = new URLSearchParams();
if (dashboardId) params.set('dashboard_id', dashboardId);
const qs = params.toString();
- const res = await fetch(`${API_BASE}/sessions${qs ? `?${qs}` : ''}`);
+ const res = await fetch(`${AGENTS_API}/sessions${qs ? `?${qs}` : ''}`);
const data = await res.json();
return data.sessions as AgentSession[];
},
);
export const launchAgent = createAsyncThunk('agents/launchAgent', async (config: AgentConfig) => {
- const res = await fetch(`${API_BASE}/launch`, {
+ const res = await fetch(`${AGENTS_API}/launch`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(config),
@@ -154,7 +155,7 @@ export interface SendMessagePayload {
export const sendMessage = createAsyncThunk(
'agents/sendMessage',
async ({ sessionId, prompt, mode, model, images, contextPaths, forcedTools, attachedSkills }: SendMessagePayload) => {
- await fetch(`${API_BASE}/sessions/${sessionId}/message`, {
+ await fetch(`${AGENTS_API}/sessions/${sessionId}/message`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt, mode, model, images, context_paths: contextPaths, forced_tools: forcedTools, attached_skills: attachedSkills }),
@@ -166,7 +167,7 @@ export const sendMessage = createAsyncThunk(
export const stopAgent = createAsyncThunk(
'agents/stopAgent',
async ({ sessionId, removeWorktree = false }: { sessionId: string; removeWorktree?: boolean }) => {
- await fetch(`${API_BASE}/sessions/${sessionId}/stop`, {
+ await fetch(`${AGENTS_API}/sessions/${sessionId}/stop`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ remove_worktree: removeWorktree }),
@@ -178,7 +179,7 @@ export const stopAgent = createAsyncThunk(
export const editMessage = createAsyncThunk(
'agents/editMessage',
async ({ sessionId, messageId, content }: { sessionId: string; messageId: string; content: string }) => {
- await fetch(`${API_BASE}/sessions/${sessionId}/edit_message`, {
+ await fetch(`${AGENTS_API}/sessions/${sessionId}/edit_message`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ message_id: messageId, content }),
@@ -190,7 +191,7 @@ export const editMessage = createAsyncThunk(
export const switchBranch = createAsyncThunk(
'agents/switchBranch',
async ({ sessionId, branchId }: { sessionId: string; branchId: string }) => {
- await fetch(`${API_BASE}/sessions/${sessionId}/switch_branch`, {
+ await fetch(`${AGENTS_API}/sessions/${sessionId}/switch_branch`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ branch_id: branchId }),
@@ -215,7 +216,7 @@ export interface LaunchAndSendPayload {
export const fetchSession = createAsyncThunk(
'agents/fetchSession',
async (sessionId: string) => {
- const res = await fetch(`${API_BASE}/sessions/${sessionId}`);
+ const res = await fetch(`${AGENTS_API}/sessions/${sessionId}`);
const session = await res.json();
return session as AgentSession;
}
@@ -224,7 +225,7 @@ export const fetchSession = createAsyncThunk(
export const launchAndSendFirstMessage = createAsyncThunk(
'agents/launchAndSendFirstMessage',
async ({ draftId, config, prompt, mode, model, images, contextPaths, forcedTools, attachedSkills }: LaunchAndSendPayload) => {
- const launchRes = await fetch(`${API_BASE}/launch`, {
+ const launchRes = await fetch(`${AGENTS_API}/launch`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(config),
@@ -232,13 +233,13 @@ export const launchAndSendFirstMessage = createAsyncThunk(
const launchData = await launchRes.json();
const session = launchData.session as AgentSession;
- await fetch(`${API_BASE}/sessions/${session.id}/message`, {
+ await fetch(`${AGENTS_API}/sessions/${session.id}/message`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt, mode, model, images, context_paths: contextPaths, forced_tools: forcedTools, attached_skills: attachedSkills }),
});
- const refreshRes = await fetch(`${API_BASE}/sessions/${session.id}`);
+ const refreshRes = await fetch(`${AGENTS_API}/sessions/${session.id}`);
const updatedSession = await refreshRes.json() as AgentSession;
return { draftId, session: updatedSession };
@@ -248,7 +249,7 @@ export const launchAndSendFirstMessage = createAsyncThunk(
export const generateTitle = createAsyncThunk(
'agents/generateTitle',
async ({ sessionId, prompt }: { sessionId: string; prompt: string }) => {
- const res = await fetch(`${API_BASE}/sessions/${sessionId}/generate-title`, {
+ const res = await fetch(`${AGENTS_API}/sessions/${sessionId}/generate-title`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt }),
@@ -269,7 +270,7 @@ export interface GenerateGroupMetaPayload {
export const generateGroupMeta = createAsyncThunk(
'agents/generateGroupMeta',
async ({ sessionId, groupId, toolCalls, resultsSummary, isRefinement }: GenerateGroupMetaPayload) => {
- const res = await fetch(`${API_BASE}/sessions/${sessionId}/generate-group-meta`, {
+ const res = await fetch(`${AGENTS_API}/sessions/${sessionId}/generate-group-meta`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
@@ -287,7 +288,7 @@ export const generateGroupMeta = createAsyncThunk(
export const updateSystemPrompt = createAsyncThunk(
'agents/updateSystemPrompt',
async ({ sessionId, systemPrompt }: { sessionId: string; systemPrompt: string }) => {
- await fetch(`${API_BASE}/sessions/${sessionId}`, {
+ await fetch(`${AGENTS_API}/sessions/${sessionId}`, {
method: 'PATCH',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ system_prompt: systemPrompt }),
@@ -309,7 +310,7 @@ export const handleApproval = createAsyncThunk(
message?: string;
updatedInput?: Record;
}) => {
- await fetch(`${API_BASE}/approval`, {
+ await fetch(`${AGENTS_API}/approval`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ request_id: requestId, behavior, message, updated_input: updatedInput }),
@@ -321,7 +322,7 @@ export const handleApproval = createAsyncThunk(
export const closeSession = createAsyncThunk(
'agents/closeSession',
async ({ sessionId }: { sessionId: string }) => {
- await fetch(`${API_BASE}/sessions/${sessionId}/close`, { method: 'POST' });
+ await fetch(`${AGENTS_API}/sessions/${sessionId}/close`, { method: 'POST' });
return sessionId;
}
);
@@ -329,7 +330,7 @@ export const closeSession = createAsyncThunk(
export const deleteSession = createAsyncThunk(
'agents/deleteSession',
async ({ sessionId }: { sessionId: string }) => {
- await fetch(`${API_BASE}/sessions/${sessionId}`, { method: 'DELETE' });
+ await fetch(`${AGENTS_API}/sessions/${sessionId}`, { method: 'DELETE' });
return sessionId;
}
);
@@ -339,7 +340,7 @@ export const fetchHistory = createAsyncThunk(
async ({ dashboardId }: { dashboardId?: string } = {}) => {
const params = new URLSearchParams({ limit: '10000' });
if (dashboardId) params.set('dashboard_id', dashboardId);
- const res = await fetch(`${API_BASE}/history?${params}`);
+ const res = await fetch(`${AGENTS_API}/history?${params}`);
const data = await res.json();
return data.sessions as HistorySession[];
},
@@ -357,7 +358,7 @@ export const searchHistory = createAsyncThunk(
async ({ q = '', limit = 20, offset = 0, dashboardId }: SearchHistoryParams) => {
const params = new URLSearchParams({ q, limit: String(limit), offset: String(offset) });
if (dashboardId) params.set('dashboard_id', dashboardId);
- const res = await fetch(`${API_BASE}/history?${params}`);
+ const res = await fetch(`${AGENTS_API}/history?${params}`);
const data = await res.json();
return {
sessions: data.sessions as HistorySession[],
@@ -372,7 +373,7 @@ export const searchHistory = createAsyncThunk(
export const resumeSession = createAsyncThunk(
'agents/resumeSession',
async ({ sessionId }: { sessionId: string }) => {
- const res = await fetch(`${API_BASE}/sessions/${sessionId}/resume`, { method: 'POST' });
+ const res = await fetch(`${AGENTS_API}/sessions/${sessionId}/resume`, { method: 'POST' });
const data = await res.json();
return data.session as AgentSession;
}
@@ -454,6 +455,10 @@ const agentsSlice = createSlice({
state.expandedSessionIds = [];
},
+ setExpandedSessionIds(state, action: PayloadAction) {
+ state.expandedSessionIds = action.payload;
+ },
+
updateSessionName(state, action: PayloadAction<{ sessionId: string; name: string }>) {
const session = state.sessions[action.payload.sessionId];
if (session) {
@@ -838,6 +843,7 @@ export const {
expandSession,
collapseSession,
collapseAllSessions,
+ setExpandedSessionIds,
updateSessionName,
updateGroupMeta,
setDraftSystemPrompt,
diff --git a/frontend/src/shared/state/dashboardLayoutSlice.ts b/frontend/src/shared/state/dashboardLayoutSlice.ts
index 0c70f7f5..3c458517 100644
--- a/frontend/src/shared/state/dashboardLayoutSlice.ts
+++ b/frontend/src/shared/state/dashboardLayoutSlice.ts
@@ -1,12 +1,15 @@
import { createSlice, createAsyncThunk, PayloadAction } from '@reduxjs/toolkit';
import { launchAndSendFirstMessage } from './agentsSlice';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/dashboards`;
+const DASHBOARDS_API = `${API_BASE}/dashboards`;
export const DEFAULT_CARD_W = 480;
export const DEFAULT_CARD_H = 280;
export const DEFAULT_VIEW_CARD_W = 480;
export const DEFAULT_VIEW_CARD_H = 360;
+export const DEFAULT_BROWSER_CARD_W = 640;
+export const DEFAULT_BROWSER_CARD_H = 480;
const GRID_GAP = 24;
const GRID_ORIGIN = { x: 40, y: 100 };
const GRID_COLS_FALLBACK = 4;
@@ -27,9 +30,20 @@ export interface ViewCardPosition {
height: number;
}
+export interface BrowserCardPosition {
+ browser_id: string;
+ url: string;
+ x: number;
+ y: number;
+ width: number;
+ height: number;
+}
+
export interface DashboardLayoutState {
cards: Record;
viewCards: Record;
+ browserCards: Record;
+ persistedExpandedSessionIds: string[];
loading: boolean;
initialized: boolean;
}
@@ -37,6 +51,8 @@ export interface DashboardLayoutState {
const initialState: DashboardLayoutState = {
cards: {},
viewCards: {},
+ browserCards: {},
+ persistedExpandedSessionIds: [],
loading: false,
initialized: false,
};
@@ -44,17 +60,21 @@ const initialState: DashboardLayoutState = {
interface LayoutPayload {
cards: Record;
viewCards: Record;
+ browserCards: Record;
+ expandedSessionIds: string[];
}
export const fetchLayout = createAsyncThunk(
'dashboardLayout/fetch',
async (dashboardId: string) => {
- const res = await fetch(`${API_BASE}/${dashboardId}`);
+ const res = await fetch(`${DASHBOARDS_API}/${dashboardId}`);
const data = await res.json();
const layout = data.layout ?? {};
return {
cards: (layout.cards ?? {}) as Record,
viewCards: (layout.view_cards ?? {}) as Record,
+ browserCards: (layout.browser_cards ?? {}) as Record,
+ expandedSessionIds: (layout.expanded_session_ids ?? []) as string[],
} satisfies LayoutPayload;
},
);
@@ -71,11 +91,16 @@ export const saveLayout = createAsyncThunk(
if (saveTimeout) clearTimeout(saveTimeout);
return new Promise((resolve) => {
saveTimeout = setTimeout(async () => {
- await fetch(`${API_BASE}/${payload.dashboardId}`, {
+ await fetch(`${DASHBOARDS_API}/${payload.dashboardId}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
- layout: { cards: payload.cards, view_cards: payload.viewCards },
+ layout: {
+ cards: payload.cards,
+ view_cards: payload.viewCards,
+ browser_cards: payload.browserCards,
+ expanded_session_ids: payload.expandedSessionIds,
+ },
}),
});
resolve(payload);
@@ -165,10 +190,14 @@ const dashboardLayoutSlice = createSlice({
}
const hasDraftCard = Object.keys(state.cards).some((id) => id.startsWith('draft-'));
+ const extraOccupied: Record = {
+ ...Object.fromEntries(Object.values(state.viewCards).map((c) => [c.output_id, c])),
+ ...Object.fromEntries(Object.values(state.browserCards).map((c) => [c.browser_id, c])),
+ };
const newIds = action.payload.filter((id) => !state.cards[id]);
for (const id of newIds) {
if (hasDraftCard && !id.startsWith('draft-')) continue;
- const pos = findOpenGridCell(state.cards, new Set(), state.viewCards);
+ const pos = findOpenGridCell(state.cards, new Set(), extraOccupied);
state.cards[id] = {
session_id: id,
x: pos.x,
@@ -182,12 +211,14 @@ const dashboardLayoutSlice = createSlice({
tidyLayout(state) {
const agentCards = Object.values(state.cards);
const viewCards = Object.values(state.viewCards);
- const total = agentCards.length + viewCards.length;
+ const bCards = Object.values(state.browserCards);
+ const total = agentCards.length + viewCards.length + bCards.length;
if (total === 0) return;
const allItems = [
...agentCards.map((c) => ({ kind: 'agent' as const, id: c.session_id, x: c.x, y: c.y })),
...viewCards.map((c) => ({ kind: 'view' as const, id: c.output_id, x: c.x, y: c.y })),
+ ...bCards.map((c) => ({ kind: 'browser' as const, id: c.browser_id, x: c.x, y: c.y })),
];
allItems.sort((a, b) => a.y - b.y || a.x - b.x);
@@ -210,9 +241,12 @@ const dashboardLayoutSlice = createSlice({
if (item.kind === 'agent') {
const card = state.cards[item.id];
if (card) { card.x = nx; card.y = ny; card.width = DEFAULT_CARD_W; card.height = DEFAULT_CARD_H; }
- } else {
+ } else if (item.kind === 'view') {
const card = state.viewCards[item.id];
if (card) { card.x = nx; card.y = ny; card.width = DEFAULT_VIEW_CARD_W; card.height = DEFAULT_VIEW_CARD_H; }
+ } else {
+ const card = state.browserCards[item.id];
+ if (card) { card.x = nx; card.y = ny; card.width = DEFAULT_BROWSER_CARD_W; card.height = DEFAULT_BROWSER_CARD_H; }
}
});
},
@@ -255,6 +289,89 @@ const dashboardLayoutSlice = createSlice({
delete state.viewCards[action.payload];
},
+ addBrowserCard(state, action: PayloadAction<{ url: string }>) {
+ const id = `browser-${Date.now().toString(36)}`;
+ const allOccupied: Record = {
+ ...Object.fromEntries(Object.values(state.viewCards).map((c) => [c.output_id, c])),
+ ...Object.fromEntries(Object.values(state.browserCards).map((c) => [c.browser_id, c])),
+ };
+ const pos = findOpenGridCell(state.cards, new Set(), allOccupied);
+ state.browserCards[id] = {
+ browser_id: id,
+ url: action.payload.url,
+ x: pos.x,
+ y: pos.y,
+ width: DEFAULT_BROWSER_CARD_W,
+ height: DEFAULT_BROWSER_CARD_H,
+ };
+ },
+
+ setBrowserCardPosition(
+ state,
+ action: PayloadAction<{ browserId: string; x: number; y: number }>
+ ) {
+ const { browserId, x, y } = action.payload;
+ const card = state.browserCards[browserId];
+ if (card) { card.x = x; card.y = y; }
+ },
+
+ setBrowserCardSize(
+ state,
+ action: PayloadAction<{ browserId: string; width: number; height: number }>
+ ) {
+ const { browserId, width, height } = action.payload;
+ const card = state.browserCards[browserId];
+ if (card) {
+ card.width = Math.max(400, width);
+ card.height = Math.max(300, height);
+ }
+ },
+
+ removeBrowserCard(state, action: PayloadAction) {
+ delete state.browserCards[action.payload];
+ },
+
+ updateBrowserCardUrl(
+ state,
+ action: PayloadAction<{ browserId: string; url: string }>
+ ) {
+ const { browserId, url } = action.payload;
+ const card = state.browserCards[browserId];
+ if (card) { card.url = url; }
+ },
+
+ moveCards(
+ state,
+ action: PayloadAction<{
+ items: Array<{ id: string; type: 'agent' | 'view' | 'browser' }>;
+ dx: number;
+ dy: number;
+ }>,
+ ) {
+ const { items, dx, dy } = action.payload;
+ for (const item of items) {
+ if (item.type === 'agent') {
+ const card = state.cards[item.id];
+ if (card) {
+ card.x += dx;
+ card.y += dy;
+ }
+ } else if (item.type === 'view') {
+ const card = state.viewCards[item.id];
+ if (card) {
+ card.x += dx;
+ card.y += dy;
+ }
+ } else {
+ const card = state.browserCards[item.id];
+ if (card) {
+ card.x += dx;
+ card.y += dy;
+ }
+ }
+ }
+ },
+
replaceDraftId(
state,
action: PayloadAction<{ oldId: string; newId: string }>
@@ -270,6 +387,8 @@ const dashboardLayoutSlice = createSlice({
resetLayout(state) {
state.cards = {};
state.viewCards = {};
+ state.browserCards = {};
+ state.persistedExpandedSessionIds = [];
state.initialized = false;
},
@@ -284,6 +403,8 @@ const dashboardLayoutSlice = createSlice({
state.initialized = true;
state.cards = action.payload.cards;
state.viewCards = action.payload.viewCards;
+ state.browserCards = action.payload.browserCards;
+ state.persistedExpandedSessionIds = action.payload.expandedSessionIds;
})
.addCase(fetchLayout.rejected, (state) => {
state.loading = false;
@@ -311,6 +432,12 @@ export const {
setViewCardPosition,
setViewCardSize,
removeViewCard,
+ addBrowserCard,
+ setBrowserCardPosition,
+ setBrowserCardSize,
+ removeBrowserCard,
+ updateBrowserCardUrl,
+ moveCards,
resetLayout,
} = dashboardLayoutSlice.actions;
diff --git a/frontend/src/shared/state/dashboardsSlice.ts b/frontend/src/shared/state/dashboardsSlice.ts
index 1b2b8d21..16d31de8 100644
--- a/frontend/src/shared/state/dashboardsSlice.ts
+++ b/frontend/src/shared/state/dashboardsSlice.ts
@@ -1,10 +1,12 @@
import { createSlice, createAsyncThunk, PayloadAction } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/dashboards`;
+const DASHBOARDS_API = `${API_BASE}/dashboards`;
export interface Dashboard {
id: string;
name: string;
+ auto_named: boolean;
created_at: string;
updated_at: string;
}
@@ -20,7 +22,7 @@ const initialState: DashboardsState = {
};
export const fetchDashboards = createAsyncThunk('dashboards/fetchAll', async () => {
- const res = await fetch(`${API_BASE}/list`);
+ const res = await fetch(`${DASHBOARDS_API}/list`);
const data = await res.json();
return data.dashboards as Dashboard[];
});
@@ -28,7 +30,7 @@ export const fetchDashboards = createAsyncThunk('dashboards/fetchAll', async ()
export const createDashboard = createAsyncThunk(
'dashboards/create',
async (name: string) => {
- const res = await fetch(`${API_BASE}/create`, {
+ const res = await fetch(`${DASHBOARDS_API}/create`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name }),
@@ -40,7 +42,7 @@ export const createDashboard = createAsyncThunk(
export const renameDashboard = createAsyncThunk(
'dashboards/rename',
async ({ id, name }: { id: string; name: string }) => {
- const res = await fetch(`${API_BASE}/${id}`, {
+ const res = await fetch(`${DASHBOARDS_API}/${id}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name }),
@@ -52,7 +54,7 @@ export const renameDashboard = createAsyncThunk(
export const deleteDashboard = createAsyncThunk(
'dashboards/delete',
async (id: string) => {
- await fetch(`${API_BASE}/${id}`, { method: 'DELETE' });
+ await fetch(`${DASHBOARDS_API}/${id}`, { method: 'DELETE' });
return id;
},
);
@@ -60,11 +62,22 @@ export const deleteDashboard = createAsyncThunk(
export const duplicateDashboard = createAsyncThunk(
'dashboards/duplicate',
async (id: string) => {
- const res = await fetch(`${API_BASE}/${id}/duplicate`, { method: 'POST' });
+ const res = await fetch(`${DASHBOARDS_API}/${id}/duplicate`, { method: 'POST' });
return (await res.json()) as Dashboard;
},
);
+export const generateDashboardName = createAsyncThunk(
+ 'dashboards/generateName',
+ async (dashboardId: string) => {
+ const res = await fetch(`${DASHBOARDS_API}/${dashboardId}/generate-name`, {
+ method: 'POST',
+ });
+ const data = await res.json();
+ return { id: dashboardId, name: data.name as string, auto_named: data.auto_named as boolean };
+ },
+);
+
const dashboardsSlice = createSlice({
name: 'dashboards',
initialState,
@@ -91,7 +104,12 @@ const dashboardsSlice = createSlice({
.addCase(renameDashboard.fulfilled, (state, action) => {
const d = action.payload;
if (state.items[d.id]) {
- state.items[d.id] = { ...state.items[d.id], name: d.name, updated_at: d.updated_at };
+ state.items[d.id] = {
+ ...state.items[d.id],
+ name: d.name,
+ auto_named: d.auto_named ?? false,
+ updated_at: d.updated_at,
+ };
}
})
.addCase(deleteDashboard.fulfilled, (state, action) => {
@@ -99,6 +117,13 @@ const dashboardsSlice = createSlice({
})
.addCase(duplicateDashboard.fulfilled, (state, action) => {
state.items[action.payload.id] = action.payload;
+ })
+ .addCase(generateDashboardName.fulfilled, (state, action) => {
+ const { id, name, auto_named } = action.payload;
+ if (state.items[id]) {
+ state.items[id].name = name;
+ state.items[id].auto_named = auto_named;
+ }
});
},
});
diff --git a/frontend/src/shared/state/mcpRegistrySlice.ts b/frontend/src/shared/state/mcpRegistrySlice.ts
index d60df54f..93e17304 100644
--- a/frontend/src/shared/state/mcpRegistrySlice.ts
+++ b/frontend/src/shared/state/mcpRegistrySlice.ts
@@ -1,6 +1,7 @@
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/mcp-registry`;
+const MCP_REGISTRY_API = `${API_BASE}/mcp-registry`;
export interface McpServer {
name: string;
@@ -48,20 +49,20 @@ export const searchRegistry = createAsyncThunk(
'mcpRegistry/search',
async ({ q, limit = 20, offset = 0, sort = 'name', source = '' }: { q: string; limit?: number; offset?: number; sort?: string; source?: string }) => {
const params = new URLSearchParams({ q, limit: String(limit), offset: String(offset), sort, source });
- const res = await fetch(`${API_BASE}/search?${params}`);
+ const res = await fetch(`${MCP_REGISTRY_API}/search?${params}`);
return (await res.json()) as { servers: McpServer[]; total: number; offset: number; limit: number };
}
);
export const fetchRegistryStats = createAsyncThunk('mcpRegistry/stats', async () => {
- const res = await fetch(`${API_BASE}/stats`);
+ const res = await fetch(`${MCP_REGISTRY_API}/stats`);
return (await res.json()) as { total: number; google: number; community: number; lastUpdated: number };
});
export const fetchServerDetail = createAsyncThunk(
'mcpRegistry/detail',
async (name: string) => {
- const res = await fetch(`${API_BASE}/detail/${encodeURIComponent(name)}`);
+ const res = await fetch(`${MCP_REGISTRY_API}/detail/${encodeURIComponent(name)}`);
const data = await res.json();
return data.server as McpServerDetail;
}
diff --git a/frontend/src/shared/state/modesSlice.ts b/frontend/src/shared/state/modesSlice.ts
index ea3f1975..e002ff10 100644
--- a/frontend/src/shared/state/modesSlice.ts
+++ b/frontend/src/shared/state/modesSlice.ts
@@ -1,6 +1,7 @@
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/modes`;
+const MODES_API = `${API_BASE}/modes`;
export interface Mode {
id: string;
@@ -26,7 +27,7 @@ const initialState: ModesState = { items: {}, loading: false, loaded: false };
export const fetchModes = createAsyncThunk(
'modes/fetch',
async () => {
- const res = await fetch(`${API_BASE}/list`);
+ const res = await fetch(`${MODES_API}/list`);
const data = await res.json();
return data.modes as Mode[];
},
@@ -36,7 +37,7 @@ export const fetchModes = createAsyncThunk(
export const createMode = createAsyncThunk(
'modes/create',
async (body: Omit) => {
- const res = await fetch(`${API_BASE}/create`, {
+ const res = await fetch(`${MODES_API}/create`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
@@ -49,7 +50,7 @@ export const createMode = createAsyncThunk(
export const updateMode = createAsyncThunk(
'modes/update',
async ({ id, ...updates }: Partial & { id: string }) => {
- const res = await fetch(`${API_BASE}/${id}`, {
+ const res = await fetch(`${MODES_API}/${id}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(updates),
@@ -60,7 +61,7 @@ export const updateMode = createAsyncThunk(
);
export const deleteMode = createAsyncThunk('modes/delete', async (id: string) => {
- await fetch(`${API_BASE}/${id}`, { method: 'DELETE' });
+ await fetch(`${MODES_API}/${id}`, { method: 'DELETE' });
return id;
});
diff --git a/frontend/src/shared/state/outputsSlice.ts b/frontend/src/shared/state/outputsSlice.ts
index 676397b2..1ab4bf80 100644
--- a/frontend/src/shared/state/outputsSlice.ts
+++ b/frontend/src/shared/state/outputsSlice.ts
@@ -1,10 +1,10 @@
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/outputs`;
+const OUTPUTS_API = `${API_BASE}/outputs`;
-export const SERVE_BASE = `http://${window.location.hostname}:8324/api/outputs`;
+export const SERVE_BASE = `${API_BASE}/outputs`;
-export const IFRAME_SERVE_BASE = '/api/outputs';
export interface AutoRunConfig {
enabled: boolean;
@@ -79,7 +79,7 @@ const initialState: OutputsState = { items: {}, loading: false, loaded: false };
export const fetchOutputs = createAsyncThunk(
'outputs/fetch',
async () => {
- const res = await fetch(`${API_BASE}/list`);
+ const res = await fetch(`${OUTPUTS_API}/list`);
const data = await res.json();
return data.outputs as Output[];
},
@@ -89,7 +89,7 @@ export const fetchOutputs = createAsyncThunk(
export const createOutput = createAsyncThunk(
'outputs/create',
async (body: Omit) => {
- const res = await fetch(`${API_BASE}/create`, {
+ const res = await fetch(`${OUTPUTS_API}/create`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
@@ -103,7 +103,7 @@ export const createOutput = createAsyncThunk(
export const updateOutput = createAsyncThunk(
'outputs/update',
async ({ id, ...updates }: Partial & { id: string }) => {
- const res = await fetch(`${API_BASE}/${id}`, {
+ const res = await fetch(`${OUTPUTS_API}/${id}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(updates),
@@ -115,14 +115,14 @@ export const updateOutput = createAsyncThunk(
);
export const deleteOutput = createAsyncThunk('outputs/delete', async (id: string) => {
- await fetch(`${API_BASE}/${id}`, { method: 'DELETE' });
+ await fetch(`${OUTPUTS_API}/${id}`, { method: 'DELETE' });
return id;
});
export const executeOutput = createAsyncThunk(
'outputs/execute',
async (body: { output_id: string; input_data: Record }) => {
- const res = await fetch(`${API_BASE}/execute`, {
+ const res = await fetch(`${OUTPUTS_API}/execute`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
@@ -142,7 +142,7 @@ export interface AutoRunResult {
export const autoRunOutput = createAsyncThunk(
'outputs/autoRun',
async (body: { prompt: string; input_schema: Record; backend_code?: string | null; context_paths?: Array<{ path: string; type: string }>; forced_tools?: string[]; model?: string }) => {
- const res = await fetch(`${API_BASE}/auto-run`, {
+ const res = await fetch(`${OUTPUTS_API}/auto-run`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
@@ -165,7 +165,7 @@ export const autoRunAgentOutput = createAsyncThunk(
forced_tools?: string[];
context_paths?: Array<{ path: string; type: string }>;
}) => {
- const res = await fetch(`${API_BASE}/auto-run-agent`, {
+ const res = await fetch(`${OUTPUTS_API}/auto-run-agent`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
@@ -176,7 +176,7 @@ export const autoRunAgentOutput = createAsyncThunk(
);
export async function cleanupAutoRunAgent(sessionId: string): Promise {
- await fetch(`${API_BASE}/auto-run-agent/${sessionId}`, { method: 'DELETE' });
+ await fetch(`${OUTPUTS_API}/auto-run-agent/${sessionId}`, { method: 'DELETE' });
}
const outputsSlice = createSlice({
diff --git a/frontend/src/shared/state/settingsSlice.ts b/frontend/src/shared/state/settingsSlice.ts
index e4d95c07..12feff0e 100644
--- a/frontend/src/shared/state/settingsSlice.ts
+++ b/frontend/src/shared/state/settingsSlice.ts
@@ -1,6 +1,7 @@
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/settings`;
+const SETTINGS_API = `${API_BASE}/settings`;
export interface AppSettings {
default_system_prompt: string | null;
@@ -12,6 +13,7 @@ export interface AppSettings {
theme: 'light' | 'dark';
new_agent_shortcut: string;
anthropic_api_key: string | null;
+ browser_homepage: string;
}
export interface BrowseResult {
@@ -39,6 +41,7 @@ const initialState: SettingsState = {
theme: 'dark',
new_agent_shortcut: 'Meta+l',
anthropic_api_key: null,
+ browser_homepage: 'https://www.google.com',
},
loading: false,
loaded: false,
@@ -46,14 +49,14 @@ const initialState: SettingsState = {
};
export const fetchSettings = createAsyncThunk('settings/fetch', async () => {
- const res = await fetch(API_BASE);
+ const res = await fetch(SETTINGS_API);
return (await res.json()) as AppSettings;
});
export const updateSettings = createAsyncThunk(
'settings/update',
async (settings: AppSettings) => {
- const res = await fetch(API_BASE, {
+ const res = await fetch(SETTINGS_API, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(settings),
@@ -66,7 +69,7 @@ export const updateSettings = createAsyncThunk(
export const browseDirectories = createAsyncThunk(
'settings/browseDirectories',
async (path: string) => {
- const res = await fetch(`${API_BASE}/browse-directories?path=${encodeURIComponent(path)}`);
+ const res = await fetch(`${SETTINGS_API}/browse-directories?path=${encodeURIComponent(path)}`);
if (!res.ok) throw new Error((await res.json()).detail);
return (await res.json()) as BrowseResult;
}
diff --git a/frontend/src/shared/state/skillRegistrySlice.ts b/frontend/src/shared/state/skillRegistrySlice.ts
index 3e7e904e..af96f828 100644
--- a/frontend/src/shared/state/skillRegistrySlice.ts
+++ b/frontend/src/shared/state/skillRegistrySlice.ts
@@ -1,6 +1,7 @@
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/skill-registry`;
+const SKILL_REGISTRY_API = `${API_BASE}/skill-registry`;
export interface RegistrySkill {
name: string;
@@ -40,13 +41,13 @@ export const searchSkillRegistry = createAsyncThunk(
'skillRegistry/search',
async ({ q, limit = 20, offset = 0, sort = 'name', category = '' }: { q: string; limit?: number; offset?: number; sort?: string; category?: string }) => {
const params = new URLSearchParams({ q, limit: String(limit), offset: String(offset), sort, category });
- const res = await fetch(`${API_BASE}/search?${params}`);
+ const res = await fetch(`${SKILL_REGISTRY_API}/search?${params}`);
return (await res.json()) as { skills: RegistrySkill[]; total: number; offset: number; limit: number };
},
);
export const fetchSkillRegistryStats = createAsyncThunk('skillRegistry/stats', async () => {
- const res = await fetch(`${API_BASE}/stats`);
+ const res = await fetch(`${SKILL_REGISTRY_API}/stats`);
return (await res.json()) as { total: number; categories: Record; lastUpdated: number };
});
@@ -54,7 +55,7 @@ export const fetchAllRegistrySkills = createAsyncThunk(
'skillRegistry/fetchAll',
async () => {
const params = new URLSearchParams({ q: '', limit: '100', offset: '0', sort: 'name', category: '' });
- const res = await fetch(`${API_BASE}/search?${params}`);
+ const res = await fetch(`${SKILL_REGISTRY_API}/search?${params}`);
return (await res.json()) as { skills: RegistrySkill[]; total: number; offset: number; limit: number };
},
);
@@ -62,7 +63,7 @@ export const fetchAllRegistrySkills = createAsyncThunk(
export const fetchSkillDetail = createAsyncThunk(
'skillRegistry/detail',
async (name: string) => {
- const res = await fetch(`${API_BASE}/detail/${encodeURIComponent(name)}`);
+ const res = await fetch(`${SKILL_REGISTRY_API}/detail/${encodeURIComponent(name)}`);
const data = await res.json();
return data.skill as RegistrySkillDetail;
},
diff --git a/frontend/src/shared/state/skillsSlice.ts b/frontend/src/shared/state/skillsSlice.ts
index de44e4d4..4d7eb0d3 100644
--- a/frontend/src/shared/state/skillsSlice.ts
+++ b/frontend/src/shared/state/skillsSlice.ts
@@ -1,6 +1,7 @@
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/skills`;
+const SKILLS_API = `${API_BASE}/skills`;
export interface Skill {
id: string;
@@ -22,7 +23,7 @@ const initialState: SkillsState = { items: {}, loading: false, loaded: false };
export const fetchSkills = createAsyncThunk(
'skills/fetch',
async () => {
- const res = await fetch(`${API_BASE}/list`);
+ const res = await fetch(`${SKILLS_API}/list`);
const data = await res.json();
return data.skills as Skill[];
},
@@ -32,7 +33,7 @@ export const fetchSkills = createAsyncThunk(
export const createSkill = createAsyncThunk(
'skills/create',
async (body: { name: string; description?: string; content: string; command?: string }) => {
- const res = await fetch(`${API_BASE}/create`, {
+ const res = await fetch(`${SKILLS_API}/create`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
@@ -45,7 +46,7 @@ export const createSkill = createAsyncThunk(
export const updateSkill = createAsyncThunk(
'skills/update',
async ({ id, ...updates }: Partial & { id: string }) => {
- const res = await fetch(`${API_BASE}/${id}`, {
+ const res = await fetch(`${SKILLS_API}/${id}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(updates),
@@ -56,7 +57,7 @@ export const updateSkill = createAsyncThunk(
);
export const deleteSkill = createAsyncThunk('skills/delete', async (id: string) => {
- await fetch(`${API_BASE}/${id}`, { method: 'DELETE' });
+ await fetch(`${SKILLS_API}/${id}`, { method: 'DELETE' });
return id;
});
diff --git a/frontend/src/shared/state/templatesSlice.ts b/frontend/src/shared/state/templatesSlice.ts
index 2c6cf46b..d4033149 100644
--- a/frontend/src/shared/state/templatesSlice.ts
+++ b/frontend/src/shared/state/templatesSlice.ts
@@ -1,6 +1,7 @@
import { createSlice, createAsyncThunk, PayloadAction } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/templates`;
+const TEMPLATES_API = `${API_BASE}/templates`;
export interface TemplateField {
name: string;
@@ -34,7 +35,7 @@ const initialState: TemplatesState = {
export const fetchTemplates = createAsyncThunk(
'templates/fetch',
async () => {
- const res = await fetch(`${API_BASE}/list`);
+ const res = await fetch(`${TEMPLATES_API}/list`);
const data = await res.json();
return data.templates as PromptTemplate[];
},
@@ -44,7 +45,7 @@ export const fetchTemplates = createAsyncThunk(
export const createTemplate = createAsyncThunk(
'templates/create',
async (body: Omit) => {
- const res = await fetch(`${API_BASE}/create`, {
+ const res = await fetch(`${TEMPLATES_API}/create`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
@@ -57,7 +58,7 @@ export const createTemplate = createAsyncThunk(
export const updateTemplate = createAsyncThunk(
'templates/update',
async ({ id, ...updates }: Partial & { id: string }) => {
- const res = await fetch(`${API_BASE}/${id}`, {
+ const res = await fetch(`${TEMPLATES_API}/${id}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(updates),
@@ -68,14 +69,14 @@ export const updateTemplate = createAsyncThunk(
);
export const deleteTemplate = createAsyncThunk('templates/delete', async (id: string) => {
- await fetch(`${API_BASE}/${id}`, { method: 'DELETE' });
+ await fetch(`${TEMPLATES_API}/${id}`, { method: 'DELETE' });
return id;
});
export const renderTemplate = createAsyncThunk(
'templates/render',
async ({ templateId, values }: { templateId: string; values: Record }) => {
- const res = await fetch(`${API_BASE}/render`, {
+ const res = await fetch(`${TEMPLATES_API}/render`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ template_id: templateId, values }),
diff --git a/frontend/src/shared/state/toolsSlice.ts b/frontend/src/shared/state/toolsSlice.ts
index c5f57aa8..26a2e61a 100644
--- a/frontend/src/shared/state/toolsSlice.ts
+++ b/frontend/src/shared/state/toolsSlice.ts
@@ -1,6 +1,7 @@
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
+import { API_BASE } from '@/shared/config';
-const API_BASE = `http://${window.location.hostname}:8324/api/tools`;
+const TOOLS_API = `${API_BASE}/tools`;
export interface ToolDefinition {
id: string;
@@ -38,7 +39,7 @@ const initialState: ToolsState = { items: {}, builtinTools: [], builtinPermissio
export const fetchTools = createAsyncThunk(
'tools/fetch',
async () => {
- const res = await fetch(`${API_BASE}/list`);
+ const res = await fetch(`${TOOLS_API}/list`);
const data = await res.json();
return data.tools as ToolDefinition[];
},
@@ -48,7 +49,7 @@ export const fetchTools = createAsyncThunk(
export const fetchBuiltinTools = createAsyncThunk(
'tools/fetchBuiltin',
async () => {
- const res = await fetch(`${API_BASE}/builtin`);
+ const res = await fetch(`${TOOLS_API}/builtin`);
const data = await res.json();
return data.tools as BuiltinTool[];
},
@@ -58,7 +59,7 @@ export const fetchBuiltinTools = createAsyncThunk(
export const createTool = createAsyncThunk(
'tools/create',
async (body: Partial> & { name: string }) => {
- const res = await fetch(`${API_BASE}/create`, {
+ const res = await fetch(`${TOOLS_API}/create`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
@@ -71,7 +72,7 @@ export const createTool = createAsyncThunk(
export const updateTool = createAsyncThunk(
'tools/update',
async ({ id, ...updates }: Partial & { id: string }) => {
- const res = await fetch(`${API_BASE}/${id}`, {
+ const res = await fetch(`${TOOLS_API}/${id}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(updates),
@@ -82,14 +83,14 @@ export const updateTool = createAsyncThunk(
);
export const deleteTool = createAsyncThunk('tools/delete', async (id: string) => {
- await fetch(`${API_BASE}/${id}`, { method: 'DELETE' });
+ await fetch(`${TOOLS_API}/${id}`, { method: 'DELETE' });
return id;
});
export const startOAuth = createAsyncThunk(
'tools/startOAuth',
async (toolId: string) => {
- const res = await fetch(`${API_BASE}/${toolId}/oauth/start`, { method: 'POST' });
+ const res = await fetch(`${TOOLS_API}/${toolId}/oauth/start`, { method: 'POST' });
if (!res.ok) throw new Error('Failed to start OAuth');
const data = await res.json();
return data as { auth_url: string };
@@ -99,7 +100,7 @@ export const startOAuth = createAsyncThunk(
export const fetchToolStatus = createAsyncThunk(
'tools/fetchStatus',
async (toolId: string) => {
- const res = await fetch(`${API_BASE}/${toolId}`);
+ const res = await fetch(`${TOOLS_API}/${toolId}`);
const data = await res.json();
return data as ToolDefinition;
}
@@ -108,7 +109,7 @@ export const fetchToolStatus = createAsyncThunk(
export const discoverTools = createAsyncThunk(
'tools/discover',
async (toolId: string) => {
- const res = await fetch(`${API_BASE}/${toolId}/discover`, { method: 'POST' });
+ const res = await fetch(`${TOOLS_API}/${toolId}/discover`, { method: 'POST' });
if (!res.ok) {
const err = await res.json().catch(() => ({ detail: 'Discovery failed' }));
throw new Error(err.detail || 'Discovery failed');
@@ -119,7 +120,7 @@ export const discoverTools = createAsyncThunk(
);
export const fetchBuiltinPermissions = createAsyncThunk('tools/fetchBuiltinPermissions', async () => {
- const res = await fetch(`${API_BASE}/builtin/permissions`);
+ const res = await fetch(`${TOOLS_API}/builtin/permissions`);
const data = await res.json();
return data.permissions as Record;
});
@@ -127,7 +128,7 @@ export const fetchBuiltinPermissions = createAsyncThunk('tools/fetchBuiltinPermi
export const updateBuiltinPermissions = createAsyncThunk(
'tools/updateBuiltinPermissions',
async (permissions: Record) => {
- const res = await fetch(`${API_BASE}/builtin/permissions`, {
+ const res = await fetch(`${TOOLS_API}/builtin/permissions`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ permissions }),
diff --git a/frontend/src/shared/useBrowserActivity.ts b/frontend/src/shared/useBrowserActivity.ts
new file mode 100644
index 00000000..14a19f78
--- /dev/null
+++ b/frontend/src/shared/useBrowserActivity.ts
@@ -0,0 +1,66 @@
+import { useState, useEffect, useRef, useCallback } from 'react';
+import {
+ subscribeActivity,
+ getActivity,
+ type BrowserActivity,
+ type BrowserAction,
+} from './browserCommandHandler';
+
+export interface BrowserActivityState {
+ active: boolean;
+ action: BrowserAction | null;
+ detail: string | null;
+ /** The action that just completed — stays set briefly for exit animations */
+ lastAction: BrowserAction | null;
+}
+
+const EMPTY: BrowserActivityState = { active: false, action: null, detail: null, lastAction: null };
+
+export function useBrowserActivity(browserId: string): BrowserActivityState {
+ const [state, setState] = useState(() => {
+ const current = getActivity(browserId);
+ return current
+ ? { active: true, action: current.action, detail: current.detail ?? null, lastAction: null }
+ : EMPTY;
+ });
+
+ const lastActionTimer = useRef | null>(null);
+
+ const handleChange = useCallback(
+ (changedId: string, activity: BrowserActivity | null) => {
+ if (changedId !== browserId) return;
+ if (activity) {
+ if (lastActionTimer.current) clearTimeout(lastActionTimer.current);
+ setState({
+ active: true,
+ action: activity.action,
+ detail: activity.detail ?? null,
+ lastAction: null,
+ });
+ } else {
+ setState((prev) => ({
+ active: false,
+ action: null,
+ detail: null,
+ lastAction: prev.action,
+ }));
+ lastActionTimer.current = setTimeout(() => {
+ setState((prev) => (prev.active ? prev : { ...prev, lastAction: null }));
+ }, 600);
+ }
+ },
+ [browserId],
+ );
+
+ useEffect(() => {
+ return subscribeActivity(handleChange);
+ }, [handleChange]);
+
+ useEffect(() => {
+ return () => {
+ if (lastActionTimer.current) clearTimeout(lastActionTimer.current);
+ };
+ }, []);
+
+ return state;
+}
diff --git a/frontend/src/shared/ws/WebSocketManager.ts b/frontend/src/shared/ws/WebSocketManager.ts
index 493c3a28..6999f43f 100644
--- a/frontend/src/shared/ws/WebSocketManager.ts
+++ b/frontend/src/shared/ws/WebSocketManager.ts
@@ -281,7 +281,7 @@ class WebSocketManager {
}
}
-const WS_BASE = `ws://${window.location.hostname}:8324`;
+import { WS_BASE } from '@/shared/config';
export const dashboardWs = new WebSocketManager(`${WS_BASE}/ws/dashboard`, { skipStreamEvents: true });
diff --git a/frontend/src/types/electron.d.ts b/frontend/src/types/electron.d.ts
new file mode 100644
index 00000000..b98e79e4
--- /dev/null
+++ b/frontend/src/types/electron.d.ts
@@ -0,0 +1,14 @@
+declare namespace JSX {
+ interface IntrinsicElements {
+ webview: React.DetailedHTMLProps<
+ React.HTMLAttributes & {
+ src?: string;
+ preload?: string;
+ partition?: string;
+ allowpopups?: string;
+ nodeintegration?: string;
+ },
+ HTMLElement
+ >;
+ }
+}
diff --git a/frontend/tsconfig.tsbuildinfo b/frontend/tsconfig.tsbuildinfo
index 648d8693..63da4b01 100644
--- a/frontend/tsconfig.tsbuildinfo
+++ b/frontend/tsconfig.tsbuildinfo
@@ -1 +1 @@
-{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/app/components/richeditorutils.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./src/app/components/elementselectioncontext.tsx","./src/app/components/usedomelementselector.ts","./src/app/pages/dashboard/usecanvascontrols.ts","./src/app/pages/views/useiframeelementselector.ts","./node_modules/redux/dist/redux.d.ts","./node_modules/react-redux/dist/react-redux.d.ts","./node_modules/immer/dist/immer.d.ts","./node_modules/reselect/dist/reselect.d.ts","./node_modules/redux-thunk/dist/redux-thunk.d.ts","./node_modules/@reduxjs/toolkit/dist/uncheckedindexed.ts","./node_modules/@reduxjs/toolkit/dist/index.d.mts","./src/shared/state/tempstateslice.ts","./src/shared/state/agentsslice.ts","./src/shared/state/templatesslice.ts","./src/shared/state/skillsslice.ts","./src/shared/state/toolsslice.ts","./src/shared/state/modesslice.ts","./src/shared/state/settingsslice.ts","./src/shared/state/mcpregistryslice.ts","./src/shared/state/skillregistryslice.ts","./src/shared/state/outputsslice.ts","./src/shared/state/dashboardlayoutslice.ts","./src/shared/state/dashboardsslice.ts","./src/shared/state/store.ts","./src/shared/hooks.ts","./src/shared/sanitizesvg.ts","./node_modules/react-router/dist/development/router-clsu7khk.d.mts","./node_modules/react-router/dist/development/browser-dzsjabdq.d.mts","./node_modules/react-router/dist/development/dom-export.d.mts","./node_modules/react-router/dist/development/register-cryj3cjg.d.mts","./node_modules/react-router/dist/development/index-react-server-client-ezwjgpn_.d.mts","./node_modules/react-router/node_modules/cookie/dist/index.d.ts","./node_modules/react-router/dist/development/index.d.mts","./node_modules/react-router-dom/dist/index.d.mts","./src/shared/hooks/usekeyboardshortcuts.ts","./src/shared/state/api_endpoints.ts","./src/shared/styles/claudetokens.ts","./src/shared/ws/websocketmanager.ts","./src/types/css-modules.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@mui/material/esm/colors/amber.d.ts","./node_modules/@mui/material/esm/colors/blue.d.ts","./node_modules/@mui/material/esm/colors/bluegrey.d.ts","./node_modules/@mui/material/esm/colors/brown.d.ts","./node_modules/@mui/material/esm/colors/common.d.ts","./node_modules/@mui/material/esm/colors/cyan.d.ts","./node_modules/@mui/material/esm/colors/deeporange.d.ts","./node_modules/@mui/material/esm/colors/deeppurple.d.ts","./node_modules/@mui/material/esm/colors/green.d.ts","./node_modules/@mui/material/esm/colors/grey.d.ts","./node_modules/@mui/material/esm/colors/indigo.d.ts","./node_modules/@mui/material/esm/colors/lightblue.d.ts","./node_modules/@mui/material/esm/colors/lightgreen.d.ts","./node_modules/@mui/material/esm/colors/lime.d.ts","./node_modules/@mui/material/esm/colors/orange.d.ts","./node_modules/@mui/material/esm/colors/pink.d.ts","./node_modules/@mui/material/esm/colors/purple.d.ts","./node_modules/@mui/material/esm/colors/red.d.ts","./node_modules/@mui/material/esm/colors/teal.d.ts","./node_modules/@mui/material/esm/colors/yellow.d.ts","./node_modules/@mui/material/esm/colors/index.d.ts","./node_modules/@mui/types/esm/index.d.ts","./node_modules/@mui/material/esm/styles/identifier.d.ts","./node_modules/@mui/material/esm/styles/createpalette.d.ts","./node_modules/@emotion/sheet/dist/declarations/src/index.d.ts","./node_modules/@emotion/sheet/dist/emotion-sheet.cjs.d.mts","./node_modules/@emotion/utils/dist/declarations/src/types.d.ts","./node_modules/@emotion/utils/dist/declarations/src/index.d.ts","./node_modules/@emotion/utils/dist/emotion-utils.cjs.d.mts","./node_modules/@emotion/cache/dist/declarations/src/types.d.ts","./node_modules/@emotion/cache/dist/declarations/src/index.d.ts","./node_modules/@emotion/cache/dist/emotion-cache.cjs.default.d.ts","./node_modules/@emotion/cache/dist/emotion-cache.cjs.d.mts","./node_modules/@emotion/serialize/dist/declarations/src/index.d.ts","./node_modules/@emotion/serialize/dist/emotion-serialize.cjs.d.mts","./node_modules/@emotion/react/dist/declarations/src/context.d.ts","./node_modules/@emotion/react/dist/declarations/src/types.d.ts","./node_modules/@emotion/react/dist/declarations/src/theming.d.ts","./node_modules/@emotion/react/dist/declarations/src/jsx-namespace.d.ts","./node_modules/@emotion/react/dist/declarations/src/jsx.d.ts","./node_modules/@emotion/react/dist/declarations/src/global.d.ts","./node_modules/@emotion/react/dist/declarations/src/keyframes.d.ts","./node_modules/@emotion/react/dist/declarations/src/class-names.d.ts","./node_modules/@emotion/react/dist/declarations/src/css.d.ts","./node_modules/@emotion/react/dist/declarations/src/index.d.ts","./node_modules/@emotion/react/dist/emotion-react.cjs.d.mts","./node_modules/@emotion/styled/dist/declarations/src/jsx-namespace.d.ts","./node_modules/@emotion/styled/dist/declarations/src/types.d.ts","./node_modules/@emotion/styled/dist/declarations/src/index.d.ts","./node_modules/@emotion/styled/dist/emotion-styled.cjs.default.d.ts","./node_modules/@emotion/styled/dist/emotion-styled.cjs.d.mts","./node_modules/@mui/styled-engine/esm/styledengineprovider/styledengineprovider.d.ts","./node_modules/@mui/styled-engine/esm/styledengineprovider/index.d.ts","./node_modules/@mui/styled-engine/esm/globalstyles/globalstyles.d.ts","./node_modules/@mui/styled-engine/esm/globalstyles/index.d.ts","./node_modules/@mui/styled-engine/esm/index.d.ts","./node_modules/@mui/system/esm/style/style.d.ts","./node_modules/@mui/system/esm/style/index.d.ts","./node_modules/@mui/system/esm/borders/borders.d.ts","./node_modules/@mui/system/esm/borders/index.d.ts","./node_modules/@mui/system/esm/createbreakpoints/createbreakpoints.d.ts","./node_modules/@mui/system/esm/createtheme/shape.d.ts","./node_modules/@mui/system/esm/createtheme/createspacing.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/standardcssproperties.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/aliasescssproperties.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/overwritecssproperties.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/stylefunctionsx.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/extendsxprop.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/defaultsxconfig.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/index.d.ts","./node_modules/@mui/system/esm/createtheme/applystyles.d.ts","./node_modules/@mui/system/esm/csscontainerqueries/csscontainerqueries.d.ts","./node_modules/@mui/system/esm/csscontainerqueries/index.d.ts","./node_modules/@mui/system/esm/createtheme/createtheme.d.ts","./node_modules/@mui/system/esm/createtheme/index.d.ts","./node_modules/@mui/system/esm/breakpoints/breakpoints.d.ts","./node_modules/@mui/system/esm/breakpoints/index.d.ts","./node_modules/@mui/system/esm/compose/compose.d.ts","./node_modules/@mui/system/esm/compose/index.d.ts","./node_modules/@mui/system/esm/display/display.d.ts","./node_modules/@mui/system/esm/display/index.d.ts","./node_modules/@mui/system/esm/flexbox/flexbox.d.ts","./node_modules/@mui/system/esm/flexbox/index.d.ts","./node_modules/@mui/system/esm/cssgrid/cssgrid.d.ts","./node_modules/@mui/system/esm/cssgrid/index.d.ts","./node_modules/@mui/system/esm/palette/palette.d.ts","./node_modules/@mui/system/esm/palette/index.d.ts","./node_modules/@mui/system/esm/positions/positions.d.ts","./node_modules/@mui/system/esm/positions/index.d.ts","./node_modules/@mui/system/esm/shadows/shadows.d.ts","./node_modules/@mui/system/esm/shadows/index.d.ts","./node_modules/@mui/system/esm/sizing/sizing.d.ts","./node_modules/@mui/system/esm/sizing/index.d.ts","./node_modules/@mui/system/esm/typography/typography.d.ts","./node_modules/@mui/system/esm/typography/index.d.ts","./node_modules/@mui/system/esm/getthemevalue/getthemevalue.d.ts","./node_modules/@mui/system/esm/getthemevalue/index.d.ts","./node_modules/@mui/private-theming/esm/defaulttheme/index.d.ts","./node_modules/@mui/private-theming/esm/themeprovider/themeprovider.d.ts","./node_modules/@mui/private-theming/esm/themeprovider/index.d.ts","./node_modules/@mui/private-theming/esm/usetheme/usetheme.d.ts","./node_modules/@mui/private-theming/esm/usetheme/index.d.ts","./node_modules/@mui/private-theming/esm/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/@mui/system/esm/globalstyles/globalstyles.d.ts","./node_modules/@mui/system/esm/globalstyles/index.d.ts","./node_modules/@mui/system/esm/spacing/spacing.d.ts","./node_modules/@mui/system/esm/spacing/index.d.ts","./node_modules/@mui/system/esm/box/box.d.ts","./node_modules/@mui/system/esm/box/boxclasses.d.ts","./node_modules/@mui/system/esm/box/index.d.ts","./node_modules/@mui/system/esm/createbox/createbox.d.ts","./node_modules/@mui/system/esm/createbox/index.d.ts","./node_modules/@mui/system/esm/createstyled/createstyled.d.ts","./node_modules/@mui/system/esm/createstyled/index.d.ts","./node_modules/@mui/system/esm/styled/styled.d.ts","./node_modules/@mui/system/esm/styled/index.d.ts","./node_modules/@mui/system/esm/usethemeprops/usethemeprops.d.ts","./node_modules/@mui/system/esm/usethemeprops/getthemeprops.d.ts","./node_modules/@mui/system/esm/usethemeprops/index.d.ts","./node_modules/@mui/system/esm/usetheme/usetheme.d.ts","./node_modules/@mui/system/esm/usetheme/index.d.ts","./node_modules/@mui/system/esm/usethemewithoutdefault/usethemewithoutdefault.d.ts","./node_modules/@mui/system/esm/usethemewithoutdefault/index.d.ts","./node_modules/@mui/system/esm/usemediaquery/usemediaquery.d.ts","./node_modules/@mui/system/esm/usemediaquery/index.d.ts","./node_modules/@mui/system/esm/colormanipulator/colormanipulator.d.ts","./node_modules/@mui/system/esm/colormanipulator/index.d.ts","./node_modules/@mui/system/esm/themeprovider/themeprovider.d.ts","./node_modules/@mui/system/esm/themeprovider/index.d.ts","./node_modules/@mui/system/esm/memotheme.d.ts","./node_modules/@mui/system/esm/initcolorschemescript/initcolorschemescript.d.ts","./node_modules/@mui/system/esm/initcolorschemescript/index.d.ts","./node_modules/@mui/system/esm/cssvars/localstoragemanager.d.ts","./node_modules/@mui/system/esm/cssvars/usecurrentcolorscheme.d.ts","./node_modules/@mui/system/esm/cssvars/createcssvarsprovider.d.ts","./node_modules/@mui/system/esm/cssvars/preparecssvars.d.ts","./node_modules/@mui/system/esm/cssvars/preparetypographyvars.d.ts","./node_modules/@mui/system/esm/cssvars/createcssvarstheme.d.ts","./node_modules/@mui/system/esm/cssvars/getcolorschemeselector.d.ts","./node_modules/@mui/system/esm/cssvars/index.d.ts","./node_modules/@mui/system/esm/cssvars/creategetcssvar.d.ts","./node_modules/@mui/system/esm/cssvars/cssvarsparser.d.ts","./node_modules/@mui/system/esm/responsiveproptype/responsiveproptype.d.ts","./node_modules/@mui/system/esm/responsiveproptype/index.d.ts","./node_modules/@mui/system/esm/container/containerclasses.d.ts","./node_modules/@mui/system/esm/container/containerprops.d.ts","./node_modules/@mui/system/esm/container/createcontainer.d.ts","./node_modules/@mui/system/esm/container/container.d.ts","./node_modules/@mui/system/esm/container/index.d.ts","./node_modules/@mui/system/esm/grid/gridprops.d.ts","./node_modules/@mui/system/esm/grid/grid.d.ts","./node_modules/@mui/system/esm/grid/creategrid.d.ts","./node_modules/@mui/system/esm/grid/gridclasses.d.ts","./node_modules/@mui/system/esm/grid/traversebreakpoints.d.ts","./node_modules/@mui/system/esm/grid/gridgenerator.d.ts","./node_modules/@mui/system/esm/grid/index.d.ts","./node_modules/@mui/system/esm/stack/stackprops.d.ts","./node_modules/@mui/system/esm/stack/stack.d.ts","./node_modules/@mui/system/esm/stack/createstack.d.ts","./node_modules/@mui/system/esm/stack/stackclasses.d.ts","./node_modules/@mui/system/esm/stack/index.d.ts","./node_modules/@mui/system/esm/version/index.d.ts","./node_modules/@mui/system/esm/index.d.ts","./node_modules/@mui/material/esm/styles/shadows.d.ts","./node_modules/@mui/material/esm/styles/createtransitions.d.ts","./node_modules/@mui/material/esm/styles/createmixins.d.ts","./node_modules/@mui/material/esm/styles/createtypography.d.ts","./node_modules/@mui/material/esm/styles/zindex.d.ts","./node_modules/@mui/material/esm/styles/createthemefoundation.d.ts","./node_modules/@mui/material/esm/overridablecomponent/index.d.ts","./node_modules/@mui/material/esm/svgicon/svgiconclasses.d.ts","./node_modules/@mui/material/esm/svgicon/svgicon.d.ts","./node_modules/@mui/material/esm/svgicon/index.d.ts","./node_modules/@mui/material/esm/internal/index.d.ts","./node_modules/@mui/material/esm/buttonbase/touchrippleclasses.d.ts","./node_modules/@mui/material/esm/buttonbase/touchripple.d.ts","./node_modules/@mui/material/esm/buttonbase/buttonbaseclasses.d.ts","./node_modules/@mui/material/esm/buttonbase/buttonbase.d.ts","./node_modules/@mui/material/esm/buttonbase/index.d.ts","./node_modules/@mui/material/esm/iconbutton/iconbuttonclasses.d.ts","./node_modules/@mui/material/esm/iconbutton/iconbutton.d.ts","./node_modules/@mui/material/esm/iconbutton/index.d.ts","./node_modules/@mui/material/esm/paper/paperclasses.d.ts","./node_modules/@mui/material/esm/paper/paper.d.ts","./node_modules/@mui/material/esm/paper/index.d.ts","./node_modules/@mui/material/esm/alert/alertclasses.d.ts","./node_modules/@mui/utils/esm/types/index.d.ts","./node_modules/@mui/material/esm/utils/types.d.ts","./node_modules/@mui/material/esm/alert/alert.d.ts","./node_modules/@mui/material/esm/alert/index.d.ts","./node_modules/@mui/material/esm/typography/typographyclasses.d.ts","./node_modules/@mui/material/esm/typography/typography.d.ts","./node_modules/@mui/material/esm/typography/index.d.ts","./node_modules/@mui/material/esm/alerttitle/alerttitleclasses.d.ts","./node_modules/@mui/material/esm/alerttitle/alerttitle.d.ts","./node_modules/@mui/material/esm/alerttitle/index.d.ts","./node_modules/@mui/material/esm/appbar/appbarclasses.d.ts","./node_modules/@mui/material/esm/appbar/appbar.d.ts","./node_modules/@mui/material/esm/appbar/index.d.ts","./node_modules/@mui/material/esm/chip/chipclasses.d.ts","./node_modules/@mui/material/esm/chip/chip.d.ts","./node_modules/@mui/material/esm/chip/index.d.ts","./node_modules/@popperjs/core/lib/enums.d.ts","./node_modules/@popperjs/core/lib/modifiers/popperoffsets.d.ts","./node_modules/@popperjs/core/lib/modifiers/flip.d.ts","./node_modules/@popperjs/core/lib/modifiers/hide.d.ts","./node_modules/@popperjs/core/lib/modifiers/offset.d.ts","./node_modules/@popperjs/core/lib/modifiers/eventlisteners.d.ts","./node_modules/@popperjs/core/lib/modifiers/computestyles.d.ts","./node_modules/@popperjs/core/lib/modifiers/arrow.d.ts","./node_modules/@popperjs/core/lib/modifiers/preventoverflow.d.ts","./node_modules/@popperjs/core/lib/modifiers/applystyles.d.ts","./node_modules/@popperjs/core/lib/types.d.ts","./node_modules/@popperjs/core/lib/modifiers/index.d.ts","./node_modules/@popperjs/core/lib/utils/detectoverflow.d.ts","./node_modules/@popperjs/core/lib/createpopper.d.ts","./node_modules/@popperjs/core/lib/popper-lite.d.ts","./node_modules/@popperjs/core/lib/popper.d.ts","./node_modules/@popperjs/core/lib/index.d.ts","./node_modules/@popperjs/core/index.d.ts","./node_modules/@mui/material/esm/portal/portal.types.d.ts","./node_modules/@mui/material/esm/portal/portal.d.ts","./node_modules/@mui/material/esm/portal/index.d.ts","./node_modules/@mui/material/esm/utils/polymorphiccomponent.d.ts","./node_modules/@mui/material/esm/popper/basepopper.types.d.ts","./node_modules/@mui/material/esm/popper/popper.d.ts","./node_modules/@mui/material/esm/popper/popperclasses.d.ts","./node_modules/@mui/material/esm/popper/index.d.ts","./node_modules/@mui/material/esm/useautocomplete/useautocomplete.d.ts","./node_modules/@mui/material/esm/useautocomplete/index.d.ts","./node_modules/@mui/material/esm/autocomplete/autocompleteclasses.d.ts","./node_modules/@mui/material/esm/autocomplete/autocomplete.d.ts","./node_modules/@mui/material/esm/autocomplete/index.d.ts","./node_modules/@mui/material/esm/avatar/avatarclasses.d.ts","./node_modules/@mui/material/esm/avatar/avatar.d.ts","./node_modules/@mui/material/esm/avatar/index.d.ts","./node_modules/@mui/material/esm/avatargroup/avatargroupclasses.d.ts","./node_modules/@mui/material/esm/avatargroup/avatargroup.d.ts","./node_modules/@mui/material/esm/avatargroup/index.d.ts","./node_modules/@types/react-transition-group/transition.d.ts","./node_modules/@mui/material/esm/transitions/transition.d.ts","./node_modules/@mui/material/esm/fade/fade.d.ts","./node_modules/@mui/material/esm/fade/index.d.ts","./node_modules/@mui/material/esm/backdrop/backdropclasses.d.ts","./node_modules/@mui/material/esm/backdrop/backdrop.d.ts","./node_modules/@mui/material/esm/backdrop/index.d.ts","./node_modules/@mui/material/esm/badge/badgeclasses.d.ts","./node_modules/@mui/material/esm/badge/badge.d.ts","./node_modules/@mui/material/esm/badge/index.d.ts","./node_modules/@mui/material/esm/bottomnavigationaction/bottomnavigationactionclasses.d.ts","./node_modules/@mui/material/esm/bottomnavigationaction/bottomnavigationaction.d.ts","./node_modules/@mui/material/esm/bottomnavigationaction/index.d.ts","./node_modules/@mui/material/esm/bottomnavigation/bottomnavigationclasses.d.ts","./node_modules/@mui/material/esm/bottomnavigation/bottomnavigation.d.ts","./node_modules/@mui/material/esm/bottomnavigation/index.d.ts","./node_modules/@mui/material/esm/breadcrumbs/breadcrumbsclasses.d.ts","./node_modules/@mui/material/esm/breadcrumbs/breadcrumbs.d.ts","./node_modules/@mui/material/esm/breadcrumbs/index.d.ts","./node_modules/@mui/material/esm/buttongroup/buttongroupclasses.d.ts","./node_modules/@mui/material/esm/buttongroup/buttongroup.d.ts","./node_modules/@mui/material/esm/buttongroup/buttongroupcontext.d.ts","./node_modules/@mui/material/esm/buttongroup/buttongroupbuttoncontext.d.ts","./node_modules/@mui/material/esm/buttongroup/index.d.ts","./node_modules/@mui/material/esm/button/buttonclasses.d.ts","./node_modules/@mui/material/esm/button/button.d.ts","./node_modules/@mui/material/esm/button/index.d.ts","./node_modules/@mui/material/esm/cardactionarea/cardactionareaclasses.d.ts","./node_modules/@mui/material/esm/cardactionarea/cardactionarea.d.ts","./node_modules/@mui/material/esm/cardactionarea/index.d.ts","./node_modules/@mui/material/esm/cardactions/cardactionsclasses.d.ts","./node_modules/@mui/material/esm/cardactions/cardactions.d.ts","./node_modules/@mui/material/esm/cardactions/index.d.ts","./node_modules/@mui/material/esm/cardcontent/cardcontentclasses.d.ts","./node_modules/@mui/material/esm/cardcontent/cardcontent.d.ts","./node_modules/@mui/material/esm/cardcontent/index.d.ts","./node_modules/@mui/material/esm/cardheader/cardheaderclasses.d.ts","./node_modules/@mui/material/esm/cardheader/cardheader.d.ts","./node_modules/@mui/material/esm/cardheader/index.d.ts","./node_modules/@mui/material/esm/cardmedia/cardmediaclasses.d.ts","./node_modules/@mui/material/esm/cardmedia/cardmedia.d.ts","./node_modules/@mui/material/esm/cardmedia/index.d.ts","./node_modules/@mui/material/esm/card/cardclasses.d.ts","./node_modules/@mui/material/esm/card/card.d.ts","./node_modules/@mui/material/esm/card/index.d.ts","./node_modules/@mui/material/esm/internal/switchbaseclasses.d.ts","./node_modules/@mui/material/esm/internal/switchbase.d.ts","./node_modules/@mui/material/esm/checkbox/checkboxclasses.d.ts","./node_modules/@mui/material/esm/checkbox/checkbox.d.ts","./node_modules/@mui/material/esm/checkbox/index.d.ts","./node_modules/@mui/material/esm/circularprogress/circularprogressclasses.d.ts","./node_modules/@mui/material/esm/circularprogress/circularprogress.d.ts","./node_modules/@mui/material/esm/circularprogress/index.d.ts","./node_modules/@types/react-transition-group/config.d.ts","./node_modules/@types/react-transition-group/csstransition.d.ts","./node_modules/@types/react-transition-group/switchtransition.d.ts","./node_modules/@types/react-transition-group/transitiongroup.d.ts","./node_modules/@types/react-transition-group/index.d.ts","./node_modules/@mui/material/esm/collapse/collapseclasses.d.ts","./node_modules/@mui/material/esm/collapse/collapse.d.ts","./node_modules/@mui/material/esm/collapse/index.d.ts","./node_modules/@mui/material/esm/container/containerclasses.d.ts","./node_modules/@mui/material/esm/container/container.d.ts","./node_modules/@mui/material/esm/container/index.d.ts","./node_modules/@mui/material/esm/cssbaseline/cssbaseline.d.ts","./node_modules/@mui/material/esm/cssbaseline/index.d.ts","./node_modules/@mui/material/esm/dialogactions/dialogactionsclasses.d.ts","./node_modules/@mui/material/esm/dialogactions/dialogactions.d.ts","./node_modules/@mui/material/esm/dialogactions/index.d.ts","./node_modules/@mui/material/esm/dialogcontent/dialogcontentclasses.d.ts","./node_modules/@mui/material/esm/dialogcontent/dialogcontent.d.ts","./node_modules/@mui/material/esm/dialogcontent/index.d.ts","./node_modules/@mui/material/esm/dialogcontenttext/dialogcontenttextclasses.d.ts","./node_modules/@mui/material/esm/dialogcontenttext/dialogcontenttext.d.ts","./node_modules/@mui/material/esm/dialogcontenttext/index.d.ts","./node_modules/@mui/material/esm/modal/modalmanager.d.ts","./node_modules/@mui/material/esm/modal/modalclasses.d.ts","./node_modules/@mui/material/esm/modal/modal.d.ts","./node_modules/@mui/material/esm/modal/index.d.ts","./node_modules/@mui/material/esm/dialog/dialogclasses.d.ts","./node_modules/@mui/material/esm/dialog/dialog.d.ts","./node_modules/@mui/material/esm/dialog/index.d.ts","./node_modules/@mui/material/esm/dialogtitle/dialogtitleclasses.d.ts","./node_modules/@mui/material/esm/dialogtitle/dialogtitle.d.ts","./node_modules/@mui/material/esm/dialogtitle/index.d.ts","./node_modules/@mui/material/esm/divider/dividerclasses.d.ts","./node_modules/@mui/material/esm/divider/divider.d.ts","./node_modules/@mui/material/esm/divider/index.d.ts","./node_modules/@mui/material/esm/slide/slide.d.ts","./node_modules/@mui/material/esm/slide/index.d.ts","./node_modules/@mui/material/esm/drawer/drawerclasses.d.ts","./node_modules/@mui/material/esm/drawer/drawer.d.ts","./node_modules/@mui/material/esm/drawer/index.d.ts","./node_modules/@mui/material/esm/accordionactions/accordionactionsclasses.d.ts","./node_modules/@mui/material/esm/accordionactions/accordionactions.d.ts","./node_modules/@mui/material/esm/accordionactions/index.d.ts","./node_modules/@mui/material/esm/accordiondetails/accordiondetailsclasses.d.ts","./node_modules/@mui/material/esm/accordiondetails/accordiondetails.d.ts","./node_modules/@mui/material/esm/accordiondetails/index.d.ts","./node_modules/@mui/material/esm/accordion/accordionclasses.d.ts","./node_modules/@mui/material/esm/accordion/accordion.d.ts","./node_modules/@mui/material/esm/accordion/index.d.ts","./node_modules/@mui/material/esm/accordionsummary/accordionsummaryclasses.d.ts","./node_modules/@mui/material/esm/accordionsummary/accordionsummary.d.ts","./node_modules/@mui/material/esm/accordionsummary/index.d.ts","./node_modules/@mui/material/esm/fab/fabclasses.d.ts","./node_modules/@mui/material/esm/fab/fab.d.ts","./node_modules/@mui/material/esm/fab/index.d.ts","./node_modules/@mui/material/esm/inputbase/inputbaseclasses.d.ts","./node_modules/@mui/material/esm/inputbase/inputbase.d.ts","./node_modules/@mui/material/esm/inputbase/index.d.ts","./node_modules/@mui/material/esm/filledinput/filledinputclasses.d.ts","./node_modules/@mui/material/esm/filledinput/filledinput.d.ts","./node_modules/@mui/material/esm/filledinput/index.d.ts","./node_modules/@mui/material/esm/formcontrollabel/formcontrollabelclasses.d.ts","./node_modules/@mui/material/esm/formcontrollabel/formcontrollabel.d.ts","./node_modules/@mui/material/esm/formcontrollabel/index.d.ts","./node_modules/@mui/material/esm/formcontrol/formcontrolclasses.d.ts","./node_modules/@mui/material/esm/formcontrol/formcontrol.d.ts","./node_modules/@mui/material/esm/formcontrol/formcontrolcontext.d.ts","./node_modules/@mui/material/esm/formcontrol/useformcontrol.d.ts","./node_modules/@mui/material/esm/formcontrol/index.d.ts","./node_modules/@mui/material/esm/formgroup/formgroupclasses.d.ts","./node_modules/@mui/material/esm/formgroup/formgroup.d.ts","./node_modules/@mui/material/esm/formgroup/index.d.ts","./node_modules/@mui/material/esm/formhelpertext/formhelpertextclasses.d.ts","./node_modules/@mui/material/esm/formhelpertext/formhelpertext.d.ts","./node_modules/@mui/material/esm/formhelpertext/index.d.ts","./node_modules/@mui/material/esm/formlabel/formlabelclasses.d.ts","./node_modules/@mui/material/esm/formlabel/formlabel.d.ts","./node_modules/@mui/material/esm/formlabel/index.d.ts","./node_modules/@mui/material/esm/gridlegacy/gridlegacyclasses.d.ts","./node_modules/@mui/material/esm/gridlegacy/gridlegacy.d.ts","./node_modules/@mui/material/esm/gridlegacy/index.d.ts","./node_modules/@mui/material/esm/grid/grid.d.ts","./node_modules/@mui/material/esm/grid/gridclasses.d.ts","./node_modules/@mui/material/esm/grid/index.d.ts","./node_modules/@mui/material/esm/icon/iconclasses.d.ts","./node_modules/@mui/material/esm/icon/icon.d.ts","./node_modules/@mui/material/esm/icon/index.d.ts","./node_modules/@mui/material/esm/imagelist/imagelistclasses.d.ts","./node_modules/@mui/material/esm/imagelist/imagelist.d.ts","./node_modules/@mui/material/esm/imagelist/index.d.ts","./node_modules/@mui/material/esm/imagelistitembar/imagelistitembarclasses.d.ts","./node_modules/@mui/material/esm/imagelistitembar/imagelistitembar.d.ts","./node_modules/@mui/material/esm/imagelistitembar/index.d.ts","./node_modules/@mui/material/esm/imagelistitem/imagelistitemclasses.d.ts","./node_modules/@mui/material/esm/imagelistitem/imagelistitem.d.ts","./node_modules/@mui/material/esm/imagelistitem/index.d.ts","./node_modules/@mui/material/esm/inputadornment/inputadornmentclasses.d.ts","./node_modules/@mui/material/esm/inputadornment/inputadornment.d.ts","./node_modules/@mui/material/esm/inputadornment/index.d.ts","./node_modules/@mui/material/esm/inputlabel/inputlabelclasses.d.ts","./node_modules/@mui/material/esm/inputlabel/inputlabel.d.ts","./node_modules/@mui/material/esm/inputlabel/index.d.ts","./node_modules/@mui/material/esm/input/inputclasses.d.ts","./node_modules/@mui/material/esm/input/input.d.ts","./node_modules/@mui/material/esm/input/index.d.ts","./node_modules/@mui/material/esm/linearprogress/linearprogressclasses.d.ts","./node_modules/@mui/material/esm/linearprogress/linearprogress.d.ts","./node_modules/@mui/material/esm/linearprogress/index.d.ts","./node_modules/@mui/material/esm/link/linkclasses.d.ts","./node_modules/@mui/material/esm/link/link.d.ts","./node_modules/@mui/material/esm/link/index.d.ts","./node_modules/@mui/material/esm/listitemavatar/listitemavatarclasses.d.ts","./node_modules/@mui/material/esm/listitemavatar/listitemavatar.d.ts","./node_modules/@mui/material/esm/listitemavatar/index.d.ts","./node_modules/@mui/material/esm/listitemicon/listitemiconclasses.d.ts","./node_modules/@mui/material/esm/listitemicon/listitemicon.d.ts","./node_modules/@mui/material/esm/listitemicon/index.d.ts","./node_modules/@mui/material/esm/listitem/listitemclasses.d.ts","./node_modules/@mui/material/esm/listitem/listitem.d.ts","./node_modules/@mui/material/esm/listitem/index.d.ts","./node_modules/@mui/material/esm/listitembutton/listitembuttonclasses.d.ts","./node_modules/@mui/material/esm/listitembutton/listitembutton.d.ts","./node_modules/@mui/material/esm/listitembutton/index.d.ts","./node_modules/@mui/material/esm/listitemsecondaryaction/listitemsecondaryactionclasses.d.ts","./node_modules/@mui/material/esm/listitemsecondaryaction/listitemsecondaryaction.d.ts","./node_modules/@mui/material/esm/listitemsecondaryaction/index.d.ts","./node_modules/@mui/material/esm/listitemtext/listitemtextclasses.d.ts","./node_modules/@mui/material/esm/listitemtext/listitemtext.d.ts","./node_modules/@mui/material/esm/listitemtext/index.d.ts","./node_modules/@mui/material/esm/list/listclasses.d.ts","./node_modules/@mui/material/esm/list/list.d.ts","./node_modules/@mui/material/esm/list/index.d.ts","./node_modules/@mui/material/esm/listsubheader/listsubheaderclasses.d.ts","./node_modules/@mui/material/esm/listsubheader/listsubheader.d.ts","./node_modules/@mui/material/esm/listsubheader/index.d.ts","./node_modules/@mui/material/esm/menuitem/menuitemclasses.d.ts","./node_modules/@mui/material/esm/menuitem/menuitem.d.ts","./node_modules/@mui/material/esm/menuitem/index.d.ts","./node_modules/@mui/material/esm/menulist/menulist.d.ts","./node_modules/@mui/material/esm/menulist/index.d.ts","./node_modules/@mui/material/esm/popover/popoverclasses.d.ts","./node_modules/@mui/material/esm/popover/popover.d.ts","./node_modules/@mui/material/esm/popover/index.d.ts","./node_modules/@mui/material/esm/menu/menuclasses.d.ts","./node_modules/@mui/material/esm/menu/menu.d.ts","./node_modules/@mui/material/esm/menu/index.d.ts","./node_modules/@mui/material/esm/mobilestepper/mobilestepperclasses.d.ts","./node_modules/@mui/material/esm/mobilestepper/mobilestepper.d.ts","./node_modules/@mui/material/esm/mobilestepper/index.d.ts","./node_modules/@mui/material/esm/nativeselect/nativeselectinput.d.ts","./node_modules/@mui/material/esm/nativeselect/nativeselectclasses.d.ts","./node_modules/@mui/material/esm/nativeselect/nativeselect.d.ts","./node_modules/@mui/material/esm/nativeselect/index.d.ts","./node_modules/@mui/material/esm/usemediaquery/index.d.ts","./node_modules/@mui/material/esm/outlinedinput/outlinedinputclasses.d.ts","./node_modules/@mui/material/esm/outlinedinput/outlinedinput.d.ts","./node_modules/@mui/material/esm/outlinedinput/index.d.ts","./node_modules/@mui/material/esm/usepagination/usepagination.d.ts","./node_modules/@mui/material/esm/pagination/paginationclasses.d.ts","./node_modules/@mui/material/esm/pagination/pagination.d.ts","./node_modules/@mui/material/esm/pagination/index.d.ts","./node_modules/@mui/material/esm/paginationitem/paginationitemclasses.d.ts","./node_modules/@mui/material/esm/paginationitem/paginationitem.d.ts","./node_modules/@mui/material/esm/paginationitem/index.d.ts","./node_modules/@mui/material/esm/radiogroup/radiogroup.d.ts","./node_modules/@mui/material/esm/radiogroup/radiogroupcontext.d.ts","./node_modules/@mui/material/esm/radiogroup/useradiogroup.d.ts","./node_modules/@mui/material/esm/radiogroup/radiogroupclasses.d.ts","./node_modules/@mui/material/esm/radiogroup/index.d.ts","./node_modules/@mui/material/esm/radio/radioclasses.d.ts","./node_modules/@mui/material/esm/radio/radio.d.ts","./node_modules/@mui/material/esm/radio/index.d.ts","./node_modules/@mui/material/esm/rating/ratingclasses.d.ts","./node_modules/@mui/material/esm/rating/rating.d.ts","./node_modules/@mui/material/esm/rating/index.d.ts","./node_modules/@mui/material/esm/scopedcssbaseline/scopedcssbaselineclasses.d.ts","./node_modules/@mui/material/esm/scopedcssbaseline/scopedcssbaseline.d.ts","./node_modules/@mui/material/esm/scopedcssbaseline/index.d.ts","./node_modules/@mui/material/esm/select/selectinput.d.ts","./node_modules/@mui/material/esm/select/selectclasses.d.ts","./node_modules/@mui/material/esm/select/select.d.ts","./node_modules/@mui/material/esm/select/index.d.ts","./node_modules/@mui/material/esm/skeleton/skeletonclasses.d.ts","./node_modules/@mui/material/esm/skeleton/skeleton.d.ts","./node_modules/@mui/material/esm/skeleton/index.d.ts","./node_modules/@mui/material/esm/slider/useslider.types.d.ts","./node_modules/@mui/material/esm/slider/slidervaluelabel.types.d.ts","./node_modules/@mui/material/esm/slider/slidervaluelabel.d.ts","./node_modules/@mui/material/esm/slider/sliderclasses.d.ts","./node_modules/@mui/material/esm/slider/slider.d.ts","./node_modules/@mui/material/esm/slider/index.d.ts","./node_modules/@mui/material/esm/snackbarcontent/snackbarcontentclasses.d.ts","./node_modules/@mui/material/esm/snackbarcontent/snackbarcontent.d.ts","./node_modules/@mui/material/esm/snackbarcontent/index.d.ts","./node_modules/@mui/material/esm/clickawaylistener/clickawaylistener.d.ts","./node_modules/@mui/material/esm/clickawaylistener/index.d.ts","./node_modules/@mui/material/esm/snackbar/snackbarclasses.d.ts","./node_modules/@mui/material/esm/snackbar/snackbar.d.ts","./node_modules/@mui/material/esm/snackbar/index.d.ts","./node_modules/@mui/material/esm/transitions/index.d.ts","./node_modules/@mui/material/esm/speeddial/speeddialclasses.d.ts","./node_modules/@mui/material/esm/speeddial/speeddial.d.ts","./node_modules/@mui/material/esm/speeddial/index.d.ts","./node_modules/@mui/material/esm/tooltip/tooltipclasses.d.ts","./node_modules/@mui/material/esm/tooltip/tooltip.d.ts","./node_modules/@mui/material/esm/tooltip/index.d.ts","./node_modules/@mui/material/esm/speeddialaction/speeddialactionclasses.d.ts","./node_modules/@mui/material/esm/speeddialaction/speeddialaction.d.ts","./node_modules/@mui/material/esm/speeddialaction/index.d.ts","./node_modules/@mui/material/esm/speeddialicon/speeddialiconclasses.d.ts","./node_modules/@mui/material/esm/speeddialicon/speeddialicon.d.ts","./node_modules/@mui/material/esm/speeddialicon/index.d.ts","./node_modules/@mui/material/esm/stack/stack.d.ts","./node_modules/@mui/material/esm/stack/stackclasses.d.ts","./node_modules/@mui/material/esm/stack/index.d.ts","./node_modules/@mui/material/esm/stepbutton/stepbuttonclasses.d.ts","./node_modules/@mui/material/esm/stepbutton/stepbutton.d.ts","./node_modules/@mui/material/esm/stepbutton/index.d.ts","./node_modules/@mui/material/esm/stepconnector/stepconnectorclasses.d.ts","./node_modules/@mui/material/esm/stepconnector/stepconnector.d.ts","./node_modules/@mui/material/esm/stepconnector/index.d.ts","./node_modules/@mui/material/esm/stepcontent/stepcontentclasses.d.ts","./node_modules/@mui/material/esm/stepcontent/stepcontent.d.ts","./node_modules/@mui/material/esm/stepcontent/index.d.ts","./node_modules/@mui/material/esm/stepicon/stepiconclasses.d.ts","./node_modules/@mui/material/esm/stepicon/stepicon.d.ts","./node_modules/@mui/material/esm/stepicon/index.d.ts","./node_modules/@mui/material/esm/steplabel/steplabelclasses.d.ts","./node_modules/@mui/material/esm/steplabel/steplabel.d.ts","./node_modules/@mui/material/esm/steplabel/index.d.ts","./node_modules/@mui/material/esm/stepper/stepperclasses.d.ts","./node_modules/@mui/material/esm/stepper/stepper.d.ts","./node_modules/@mui/material/esm/stepper/steppercontext.d.ts","./node_modules/@mui/material/esm/stepper/index.d.ts","./node_modules/@mui/material/esm/step/stepclasses.d.ts","./node_modules/@mui/material/esm/step/step.d.ts","./node_modules/@mui/material/esm/step/stepcontext.d.ts","./node_modules/@mui/material/esm/step/index.d.ts","./node_modules/@mui/material/esm/swipeabledrawer/swipeabledrawer.d.ts","./node_modules/@mui/material/esm/swipeabledrawer/index.d.ts","./node_modules/@mui/material/esm/switch/switchclasses.d.ts","./node_modules/@mui/material/esm/switch/switch.d.ts","./node_modules/@mui/material/esm/switch/index.d.ts","./node_modules/@mui/material/esm/tablebody/tablebodyclasses.d.ts","./node_modules/@mui/material/esm/tablebody/tablebody.d.ts","./node_modules/@mui/material/esm/tablebody/index.d.ts","./node_modules/@mui/material/esm/tablecell/tablecellclasses.d.ts","./node_modules/@mui/material/esm/tablecell/tablecell.d.ts","./node_modules/@mui/material/esm/tablecell/index.d.ts","./node_modules/@mui/material/esm/tablecontainer/tablecontainerclasses.d.ts","./node_modules/@mui/material/esm/tablecontainer/tablecontainer.d.ts","./node_modules/@mui/material/esm/tablecontainer/index.d.ts","./node_modules/@mui/material/esm/tablehead/tableheadclasses.d.ts","./node_modules/@mui/material/esm/tablehead/tablehead.d.ts","./node_modules/@mui/material/esm/tablehead/index.d.ts","./node_modules/@mui/material/esm/tablepaginationactions/tablepaginationactions.d.ts","./node_modules/@mui/material/esm/tablepaginationactions/tablepaginationactionsclasses.d.ts","./node_modules/@mui/material/esm/tablepaginationactions/index.d.ts","./node_modules/@mui/material/esm/tablepagination/tablepaginationclasses.d.ts","./node_modules/@mui/material/esm/toolbar/toolbarclasses.d.ts","./node_modules/@mui/material/esm/toolbar/toolbar.d.ts","./node_modules/@mui/material/esm/toolbar/index.d.ts","./node_modules/@mui/material/esm/tablepagination/tablepagination.d.ts","./node_modules/@mui/material/esm/tablepagination/index.d.ts","./node_modules/@mui/material/esm/table/tableclasses.d.ts","./node_modules/@mui/material/esm/table/table.d.ts","./node_modules/@mui/material/esm/table/index.d.ts","./node_modules/@mui/material/esm/tablerow/tablerowclasses.d.ts","./node_modules/@mui/material/esm/tablerow/tablerow.d.ts","./node_modules/@mui/material/esm/tablerow/index.d.ts","./node_modules/@mui/material/esm/tablesortlabel/tablesortlabelclasses.d.ts","./node_modules/@mui/material/esm/tablesortlabel/tablesortlabel.d.ts","./node_modules/@mui/material/esm/tablesortlabel/index.d.ts","./node_modules/@mui/material/esm/tablefooter/tablefooterclasses.d.ts","./node_modules/@mui/material/esm/tablefooter/tablefooter.d.ts","./node_modules/@mui/material/esm/tablefooter/index.d.ts","./node_modules/@mui/material/esm/tab/tabclasses.d.ts","./node_modules/@mui/material/esm/tab/tab.d.ts","./node_modules/@mui/material/esm/tab/index.d.ts","./node_modules/@mui/material/esm/tabscrollbutton/tabscrollbuttonclasses.d.ts","./node_modules/@mui/material/esm/tabscrollbutton/tabscrollbutton.d.ts","./node_modules/@mui/material/esm/tabscrollbutton/index.d.ts","./node_modules/@mui/material/esm/tabs/tabsclasses.d.ts","./node_modules/@mui/material/esm/tabs/tabs.d.ts","./node_modules/@mui/material/esm/tabs/index.d.ts","./node_modules/@mui/material/esm/textfield/textfieldclasses.d.ts","./node_modules/@mui/material/esm/textfield/textfield.d.ts","./node_modules/@mui/material/esm/textfield/index.d.ts","./node_modules/@mui/material/esm/togglebutton/togglebuttonclasses.d.ts","./node_modules/@mui/material/esm/togglebutton/togglebutton.d.ts","./node_modules/@mui/material/esm/togglebutton/index.d.ts","./node_modules/@mui/material/esm/togglebuttongroup/togglebuttongroupclasses.d.ts","./node_modules/@mui/material/esm/togglebuttongroup/togglebuttongroup.d.ts","./node_modules/@mui/material/esm/togglebuttongroup/index.d.ts","./node_modules/@mui/material/esm/styles/props.d.ts","./node_modules/@mui/material/esm/styles/overrides.d.ts","./node_modules/@mui/material/esm/styles/variants.d.ts","./node_modules/@mui/material/esm/styles/components.d.ts","./node_modules/@mui/material/esm/styles/createthemenovars.d.ts","./node_modules/@mui/material/esm/styles/createthemewithvars.d.ts","./node_modules/@mui/material/esm/styles/createtheme.d.ts","./node_modules/@mui/material/esm/styles/adaptv4theme.d.ts","./node_modules/@mui/material/esm/styles/createcolorscheme.d.ts","./node_modules/@mui/material/esm/styles/createstyles.d.ts","./node_modules/@mui/material/esm/styles/responsivefontsizes.d.ts","./node_modules/@mui/system/esm/createbreakpoints/index.d.ts","./node_modules/@mui/material/esm/styles/usetheme.d.ts","./node_modules/@mui/material/esm/styles/usethemeprops.d.ts","./node_modules/@mui/material/esm/styles/slotshouldforwardprop.d.ts","./node_modules/@mui/material/esm/styles/rootshouldforwardprop.d.ts","./node_modules/@mui/material/esm/styles/styled.d.ts","./node_modules/@mui/material/esm/styles/themeprovider.d.ts","./node_modules/@mui/material/esm/styles/cssutils.d.ts","./node_modules/@mui/material/esm/styles/makestyles.d.ts","./node_modules/@mui/material/esm/styles/withstyles.d.ts","./node_modules/@mui/material/esm/styles/withtheme.d.ts","./node_modules/@mui/material/esm/styles/themeproviderwithvars.d.ts","./node_modules/@mui/material/esm/styles/getoverlayalpha.d.ts","./node_modules/@mui/material/esm/styles/shouldskipgeneratingvar.d.ts","./node_modules/@mui/material/esm/styles/excludevariablesfromroot.d.ts","./node_modules/@mui/material/esm/styles/index.d.ts","./node_modules/@mui/utils/esm/classnamegenerator/classnamegenerator.d.ts","./node_modules/@mui/utils/esm/classnamegenerator/index.d.ts","./node_modules/@mui/utils/esm/capitalize/capitalize.d.ts","./node_modules/@mui/utils/esm/capitalize/index.d.ts","./node_modules/@mui/material/esm/utils/capitalize.d.ts","./node_modules/@mui/utils/esm/createchainedfunction/createchainedfunction.d.ts","./node_modules/@mui/utils/esm/createchainedfunction/index.d.ts","./node_modules/@mui/material/esm/utils/createchainedfunction.d.ts","./node_modules/@mui/material/esm/utils/createsvgicon.d.ts","./node_modules/@mui/utils/esm/debounce/debounce.d.ts","./node_modules/@mui/utils/esm/debounce/index.d.ts","./node_modules/@mui/material/esm/utils/debounce.d.ts","./node_modules/@mui/utils/esm/deprecatedproptype/deprecatedproptype.d.ts","./node_modules/@mui/utils/esm/deprecatedproptype/index.d.ts","./node_modules/@mui/material/esm/utils/deprecatedproptype.d.ts","./node_modules/@mui/utils/esm/ismuielement/ismuielement.d.ts","./node_modules/@mui/utils/esm/ismuielement/index.d.ts","./node_modules/@mui/material/esm/utils/ismuielement.d.ts","./node_modules/@mui/material/esm/utils/memotheme.d.ts","./node_modules/@mui/utils/esm/ownerdocument/ownerdocument.d.ts","./node_modules/@mui/utils/esm/ownerdocument/index.d.ts","./node_modules/@mui/material/esm/utils/ownerdocument.d.ts","./node_modules/@mui/utils/esm/ownerwindow/ownerwindow.d.ts","./node_modules/@mui/utils/esm/ownerwindow/index.d.ts","./node_modules/@mui/material/esm/utils/ownerwindow.d.ts","./node_modules/@mui/utils/esm/requirepropfactory/requirepropfactory.d.ts","./node_modules/@mui/utils/esm/requirepropfactory/index.d.ts","./node_modules/@mui/material/esm/utils/requirepropfactory.d.ts","./node_modules/@mui/utils/esm/setref/setref.d.ts","./node_modules/@mui/utils/esm/setref/index.d.ts","./node_modules/@mui/material/esm/utils/setref.d.ts","./node_modules/@mui/utils/esm/useenhancedeffect/useenhancedeffect.d.ts","./node_modules/@mui/utils/esm/useenhancedeffect/index.d.ts","./node_modules/@mui/material/esm/utils/useenhancedeffect.d.ts","./node_modules/@mui/utils/esm/useid/useid.d.ts","./node_modules/@mui/utils/esm/useid/index.d.ts","./node_modules/@mui/material/esm/utils/useid.d.ts","./node_modules/@mui/utils/esm/unsupportedprop/unsupportedprop.d.ts","./node_modules/@mui/utils/esm/unsupportedprop/index.d.ts","./node_modules/@mui/material/esm/utils/unsupportedprop.d.ts","./node_modules/@mui/utils/esm/usecontrolled/usecontrolled.d.ts","./node_modules/@mui/utils/esm/usecontrolled/index.d.ts","./node_modules/@mui/material/esm/utils/usecontrolled.d.ts","./node_modules/@mui/utils/esm/useeventcallback/useeventcallback.d.ts","./node_modules/@mui/utils/esm/useeventcallback/index.d.ts","./node_modules/@mui/material/esm/utils/useeventcallback.d.ts","./node_modules/@mui/utils/esm/useforkref/useforkref.d.ts","./node_modules/@mui/utils/esm/useforkref/index.d.ts","./node_modules/@mui/material/esm/utils/useforkref.d.ts","./node_modules/@mui/material/esm/utils/mergeslotprops.d.ts","./node_modules/@mui/material/esm/utils/index.d.ts","./node_modules/@mui/material/esm/box/box.d.ts","./node_modules/@mui/material/esm/box/boxclasses.d.ts","./node_modules/@mui/material/esm/box/index.d.ts","./node_modules/@mui/material/esm/darkscrollbar/index.d.ts","./node_modules/@mui/material/esm/grow/grow.d.ts","./node_modules/@mui/material/esm/grow/index.d.ts","./node_modules/@mui/material/esm/nossr/nossr.types.d.ts","./node_modules/@mui/material/esm/nossr/nossr.d.ts","./node_modules/@mui/material/esm/nossr/index.d.ts","./node_modules/@mui/material/esm/textareaautosize/textareaautosize.types.d.ts","./node_modules/@mui/material/esm/textareaautosize/textareaautosize.d.ts","./node_modules/@mui/material/esm/textareaautosize/index.d.ts","./node_modules/@mui/material/esm/usescrolltrigger/usescrolltrigger.d.ts","./node_modules/@mui/material/esm/usescrolltrigger/index.d.ts","./node_modules/@mui/material/esm/zoom/zoom.d.ts","./node_modules/@mui/material/esm/zoom/index.d.ts","./node_modules/@mui/material/esm/globalstyles/globalstyles.d.ts","./node_modules/@mui/material/esm/globalstyles/index.d.ts","./node_modules/@mui/material/esm/version/index.d.ts","./node_modules/@mui/utils/esm/composeclasses/composeclasses.d.ts","./node_modules/@mui/utils/esm/composeclasses/index.d.ts","./node_modules/@mui/utils/esm/generateutilityclass/generateutilityclass.d.ts","./node_modules/@mui/utils/esm/generateutilityclass/index.d.ts","./node_modules/@mui/material/esm/generateutilityclass/index.d.ts","./node_modules/@mui/utils/esm/generateutilityclasses/generateutilityclasses.d.ts","./node_modules/@mui/utils/esm/generateutilityclasses/index.d.ts","./node_modules/@mui/material/esm/generateutilityclasses/index.d.ts","./node_modules/@mui/material/esm/unstable_trapfocus/focustrap.types.d.ts","./node_modules/@mui/material/esm/unstable_trapfocus/focustrap.d.ts","./node_modules/@mui/material/esm/unstable_trapfocus/index.d.ts","./node_modules/@mui/material/esm/initcolorschemescript/initcolorschemescript.d.ts","./node_modules/@mui/material/esm/initcolorschemescript/index.d.ts","./node_modules/@mui/material/esm/index.d.ts","./node_modules/@mui/icons-material/esm/dashboard.d.ts","./node_modules/@mui/icons-material/esm/description.d.ts","./node_modules/@mui/icons-material/esm/psychology.d.ts","./node_modules/@mui/icons-material/esm/build.d.ts","./node_modules/@mui/icons-material/esm/tune.d.ts","./node_modules/@mui/icons-material/esm/terminal.d.ts","./node_modules/@mui/icons-material/esm/viewquilt.d.ts","./node_modules/@mui/icons-material/esm/expandmore.d.ts","./node_modules/@mui/icons-material/esm/add.d.ts","./node_modules/@mui/icons-material/esm/settings.d.ts","./node_modules/@mui/icons-material/esm/folderopen.d.ts","./node_modules/@mui/icons-material/esm/visibility.d.ts","./node_modules/@mui/icons-material/esm/visibilityoff.d.ts","./node_modules/@mui/icons-material/esm/lightmode.d.ts","./node_modules/@mui/icons-material/esm/darkmode.d.ts","./node_modules/@mui/icons-material/esm/save.d.ts","./node_modules/@mui/icons-material/esm/close.d.ts","./node_modules/@mui/icons-material/esm/keyboard.d.ts","./src/shared/styles/themecontext.tsx","./node_modules/@mui/icons-material/esm/folder.d.ts","./node_modules/@mui/icons-material/esm/insertdrivefileoutlined.d.ts","./node_modules/@mui/icons-material/esm/arrowupward.d.ts","./src/app/components/directorybrowser.tsx","./src/app/pages/settings/settings.tsx","./src/app/components/layout/appshell.tsx","./node_modules/@mui/icons-material/esm/check.d.ts","./node_modules/@mui/icons-material/esm/checkcircle.d.ts","./node_modules/@mui/icons-material/esm/cancel.d.ts","./node_modules/@mui/icons-material/esm/dragindicator.d.ts","./node_modules/motion-utils/dist/index.d.ts","./node_modules/motion-dom/dist/index.d.ts","./node_modules/framer-motion/dist/types.d-docc-kzb.d.ts","./node_modules/framer-motion/dist/types/index.d.ts","./node_modules/@mui/icons-material/esm/send.d.ts","./node_modules/@mui/icons-material/esm/edit.d.ts","./node_modules/@mui/icons-material/esm/search.d.ts","./node_modules/@mui/icons-material/esm/questionanswer.d.ts","./node_modules/@mui/icons-material/esm/extension.d.ts","./node_modules/@mui/icons-material/esm/expandless.d.ts","./src/app/pages/agentchat/approvalbar.tsx","./node_modules/@mui/icons-material/esm/keyboardarrowdown.d.ts","./node_modules/@mui/icons-material/esm/adsclick.d.ts","./node_modules/@mui/icons-material/esm/folderoutlined.d.ts","./node_modules/@mui/icons-material/esm/psychologyoutlined.d.ts","./node_modules/@mui/icons-material/esm/buildoutlined.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/vfile-message/lib/index.d.ts","./node_modules/vfile-message/index.d.ts","./node_modules/vfile/lib/index.d.ts","./node_modules/vfile/index.d.ts","./node_modules/unified/lib/callable-instance.d.ts","./node_modules/trough/lib/index.d.ts","./node_modules/trough/index.d.ts","./node_modules/unified/lib/index.d.ts","./node_modules/unified/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/mdast-util-to-hast/lib/state.d.ts","./node_modules/mdast-util-to-hast/lib/footer.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/blockquote.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/delete.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/emphasis.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/heading.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/html.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/inline-code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list-item.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/paragraph.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/root.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/strong.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-cell.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-row.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/text.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/index.d.ts","./node_modules/mdast-util-to-hast/lib/index.d.ts","./node_modules/mdast-util-to-hast/index.d.ts","./node_modules/remark-rehype/lib/index.d.ts","./node_modules/remark-rehype/index.d.ts","./node_modules/react-markdown/lib/index.d.ts","./node_modules/react-markdown/index.d.ts","./node_modules/micromark-util-types/index.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/html.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-footnote/index.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/html.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-strikethrough/index.d.ts","./node_modules/micromark-extension-gfm/index.d.ts","./node_modules/mdast-util-from-markdown/lib/types.d.ts","./node_modules/mdast-util-from-markdown/lib/index.d.ts","./node_modules/mdast-util-from-markdown/index.d.ts","./node_modules/mdast-util-to-markdown/lib/types.d.ts","./node_modules/mdast-util-to-markdown/lib/index.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","./node_modules/mdast-util-to-markdown/index.d.ts","./node_modules/mdast-util-gfm-footnote/lib/index.d.ts","./node_modules/mdast-util-gfm-footnote/index.d.ts","./node_modules/markdown-table/index.d.ts","./node_modules/mdast-util-gfm-table/lib/index.d.ts","./node_modules/mdast-util-gfm-table/index.d.ts","./node_modules/mdast-util-gfm/lib/index.d.ts","./node_modules/mdast-util-gfm/index.d.ts","./node_modules/remark-gfm/lib/index.d.ts","./node_modules/remark-gfm/index.d.ts","./node_modules/@mui/icons-material/esm/openinfull.d.ts","./src/app/pages/views/viewpreview.tsx","./src/app/pages/agentchat/viewbubble.tsx","./src/app/pages/agentchat/messagebubble.tsx","./node_modules/@mui/icons-material/esm/checkcircleoutline.d.ts","./node_modules/@mui/icons-material/esm/erroroutline.d.ts","./node_modules/@mui/icons-material/esm/block.d.ts","./node_modules/@mui/icons-material/esm/email.d.ts","./node_modules/@mui/icons-material/esm/event.d.ts","./node_modules/@mui/icons-material/esm/attachfile.d.ts","./src/app/pages/agentchat/toolcallbubble.tsx","./src/app/pages/agentchat/toolgroupbubble.tsx","./node_modules/@mui/icons-material/esm/micnoneoutlined.d.ts","./node_modules/@mui/icons-material/esm/stop.d.ts","./node_modules/@mui/icons-material/esm/smarttoyoutlined.d.ts","./node_modules/@mui/icons-material/esm/questionansweroutlined.d.ts","./node_modules/@mui/icons-material/esm/mapoutlined.d.ts","./node_modules/@mui/icons-material/esm/categoryoutlined.d.ts","./node_modules/@mui/icons-material/esm/tuneoutlined.d.ts","./node_modules/@mui/icons-material/esm/language.d.ts","./node_modules/@mui/icons-material/esm/viewquiltoutlined.d.ts","./src/app/components/commandpicker.tsx","./src/app/pages/agentchat/templateinvokemodal.tsx","./src/app/pages/agentchat/chatinput.tsx","./node_modules/@mui/icons-material/esm/chevronleft.d.ts","./node_modules/@mui/icons-material/esm/chevronright.d.ts","./src/app/pages/agentchat/branchnavigator.tsx","./node_modules/@mui/icons-material/esm/refresh.d.ts","./node_modules/@mui/icons-material/esm/difference.d.ts","./src/app/pages/agentchat/diffviewer.tsx","./src/app/pages/agentchat/agentchat.tsx","./src/app/pages/dashboard/agentcard.tsx","./node_modules/@mui/icons-material/esm/bolt.d.ts","./node_modules/@mui/icons-material/esm/gridviewrounded.d.ts","./node_modules/@mui/icons-material/esm/removecircleoutline.d.ts","./src/app/pages/views/inputschemaform.tsx","./src/app/pages/dashboard/dashboardviewcard.tsx","./node_modules/@mui/icons-material/esm/remove.d.ts","./node_modules/@mui/icons-material/esm/fitscreen.d.ts","./node_modules/@mui/icons-material/esm/autoawesome.d.ts","./src/app/pages/dashboard/canvascontrols.tsx","./node_modules/@mui/icons-material/esm/stickynote2outlined.d.ts","./node_modules/@mui/icons-material/esm/historyrounded.d.ts","./src/app/pages/dashboard/dashboardtoolbar.tsx","./node_modules/@types/react-dom/index.d.ts","./src/app/components/selectionoverlay.tsx","./src/app/pages/dashboard/dashboard.tsx","./node_modules/@mui/icons-material/esm/deleteoutline.d.ts","./node_modules/@mui/icons-material/esm/contentcopy.d.ts","./node_modules/@mui/icons-material/esm/morevert.d.ts","./src/app/pages/dashboardselection/dashboardselection.tsx","./node_modules/@mui/icons-material/esm/delete.d.ts","./src/app/pages/templates/templates.tsx","./node_modules/@mui/icons-material/esm/download.d.ts","./node_modules/@mui/icons-material/esm/openinnew.d.ts","./node_modules/@mui/icons-material/esm/keyboardarrowright.d.ts","./node_modules/@mui/icons-material/esm/morehoriz.d.ts","./node_modules/@mui/icons-material/esm/code.d.ts","./node_modules/@mui/icons-material/esm/autofixhigh.d.ts","./node_modules/@mui/icons-material/esm/restartalt.d.ts","./src/app/pages/skills/skillbuilderchat.tsx","./src/app/pages/skills/skills.tsx","./node_modules/@mui/icons-material/esm/lock.d.ts","./node_modules/@mui/icons-material/esm/schedule.d.ts","./node_modules/@mui/icons-material/esm/map.d.ts","./node_modules/@mui/icons-material/esm/hourglassempty.d.ts","./node_modules/@mui/icons-material/esm/storefront.d.ts","./node_modules/@mui/icons-material/esm/star.d.ts","./node_modules/@mui/icons-material/esm/sort.d.ts","./node_modules/@mui/icons-material/esm/cloud.d.ts","./node_modules/@mui/icons-material/esm/public.d.ts","./node_modules/@mui/icons-material/esm/link.d.ts","./node_modules/@mui/icons-material/esm/security.d.ts","./node_modules/@mui/icons-material/esm/pantool.d.ts","./src/app/pages/tools/tools.tsx","./node_modules/@mui/icons-material/esm/arrowforward.d.ts","./src/app/components/richprompteditor.tsx","./src/app/pages/modes/modes.tsx","./node_modules/@mui/icons-material/esm/alternateemail.d.ts","./src/app/pages/commands/commands.tsx","./node_modules/@mui/icons-material/esm/playarrow.d.ts","./src/app/pages/views/viewcard.tsx","./node_modules/@mui/icons-material/esm/arrowback.d.ts","./node_modules/@mui/icons-material/esm/dataobject.d.ts","./node_modules/@codemirror/state/dist/index.d.ts","./node_modules/style-mod/src/style-mod.d.ts","./node_modules/@codemirror/view/dist/index.d.ts","./node_modules/@codemirror/commands/dist/index.d.ts","./node_modules/codemirror/dist/index.d.ts","./node_modules/@lezer/common/dist/index.d.ts","./node_modules/@lezer/lr/dist/index.d.ts","./node_modules/@lezer/highlight/dist/index.d.ts","./node_modules/@codemirror/language/dist/index.d.ts","./node_modules/@codemirror/theme-one-dark/dist/index.d.ts","./node_modules/@codemirror/autocomplete/dist/index.d.ts","./node_modules/@codemirror/lang-html/dist/index.d.ts","./node_modules/@codemirror/lang-python/dist/index.d.ts","./node_modules/@codemirror/lint/dist/index.d.ts","./node_modules/@codemirror/lang-json/dist/index.d.ts","./src/app/pages/views/codeeditor.tsx","./src/app/pages/views/vieweditor.tsx","./src/app/pages/views/viewrundialog.tsx","./src/app/pages/views/views.tsx","./src/app/components/keyboardshortcutshelp.tsx","./src/app/main.tsx","./src/index.tsx","./src/app/components/slashcommandpicker.tsx","./src/app/pages/dashboard/closeagentdialog.tsx","./src/shared/modals/underconstruction/underconstruction.tsx","./src/shared/styles/getstylevalue.tsx","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/blob.d.ts","./node_modules/@types/node/web-globals/console.d.ts","./node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/encoding.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/utility.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client-stats.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/h2c-client.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-call-history.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/snapshot-agent.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cache-interceptor.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/importmeta.d.ts","./node_modules/@types/node/web-globals/messaging.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/performance.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/web-globals/streams.d.ts","./node_modules/@types/node/web-globals/timers.d.ts","./node_modules/@types/node/web-globals/url.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/inspector/promises.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/path/posix.d.ts","./node_modules/@types/node/path/win32.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/quic.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/test/reporters.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/util/types.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/bonjour/index.d.ts","./node_modules/@types/send/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/connect-history-api-fallback/index.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/eslint/use-at-your-own-risk.d.ts","./node_modules/@types/eslint/index.d.ts","./node_modules/@types/eslint-scope/index.d.ts","./node_modules/@types/estree-jsx/index.d.ts","./node_modules/@types/http-errors/index.d.ts","./node_modules/@types/mime/index.d.ts","./node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/express/node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/express/index.d.ts","./node_modules/@types/hoist-non-react-statics/index.d.ts","./node_modules/@types/html-minifier-terser/index.d.ts","./node_modules/@types/http-proxy/index.d.ts","./node_modules/@types/node-forge/index.d.ts","./node_modules/@types/parse-json/index.d.ts","./node_modules/@types/prismjs/index.d.ts","./node_modules/@types/react-redux/node_modules/redux/index.d.ts","./node_modules/@types/react-redux/index.d.ts","./node_modules/@types/react-syntax-highlighter/index.d.ts","./node_modules/@types/retry/index.d.ts","./node_modules/@types/serve-index/index.d.ts","./node_modules/@types/sockjs/index.d.ts","./node_modules/@types/use-sync-external-store/index.d.ts","./node_modules/@types/ws/index.d.ts"],"fileIdsList":[[1042,1044,1047,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1042,1044,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1042,1047,1050,1052,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1044,1050,1055,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1050,1052,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1042,1043,1044,1047,1048,1049,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1144,1147,1149,1150,1151,1163],[1042,1050,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1042,1043,1070,1132,1140,1144,1147,1149,1150,1151,1163],[156,157,1070,1132,1140,1144,1147,1149,1150,1151,1163],[158,159,1070,1132,1140,1144,1147,1149,1150,1151,1163],[158,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,162,165,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,160,1070,1132,1140,1144,1147,1149,1150,1151,1163],[156,162,1070,1132,1140,1144,1147,1149,1150,1151,1163],[160,162,163,164,165,167,168,169,170,171,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,166,1070,1132,1140,1144,1147,1149,1150,1151,1163],[162,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,164,1070,1132,1140,1144,1147,1149,1150,1151,1163],[166,1070,1132,1140,1144,1147,1149,1150,1151,1163],[172,1070,1132,1140,1144,1147,1149,1150,1151,1163],[85,156,1070,1132,1140,1144,1147,1149,1150,1151,1163],[161,1070,1132,1140,1144,1147,1149,1150,1151,1163],[152,1070,1132,1140,1144,1147,1149,1150,1151,1163],[162,173,174,175,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,1070,1132,1140,1144,1147,1149,1150,1151,1163],[162,173,174,1070,1132,1140,1144,1147,1149,1150,1151,1163],[176,177,1070,1132,1140,1144,1147,1149,1150,1151,1163],[176,1070,1132,1140,1144,1147,1149,1150,1151,1163],[154,1070,1132,1140,1144,1147,1149,1150,1151,1163],[153,1070,1132,1140,1144,1147,1149,1150,1151,1163],[155,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1047,1070,1132,1140,1144,1147,1149,1150,1151,1163],[301,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,312,316,369,467,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[467,468,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,461,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[461,462,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,464,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[464,465,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,307,316,470,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[470,471,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,301,302,310,313,314,316,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[314,317,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,321,322,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[322,323,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,312,325,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[325,326,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,310,313,316,330,356,358,359,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[359,360,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,301,316,362,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[362,363,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,316,364,365,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[365,366,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,316,369,371,372,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[372,373,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,316,375,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[375,376,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,381,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[381,382,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,307,316,378,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[378,379,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,291,298,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[793,794,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,301,316,384,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[384,385,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,307,392,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[392,393,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,304,305,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[303,305,306,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,302,303,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,387,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,388,1070,1132,1140,1144,1147,1149,1150,1151,1163],[387,388,389,390,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,313,410,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[410,411,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,307,316,395,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[395,396,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,398,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[398,399,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,401,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[401,402,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,316,321,404,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[404,405,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,407,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[407,408,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,316,414,415,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[415,416,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,316,328,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[328,329,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,418,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[418,419,1070,1132,1140,1144,1147,1149,1150,1151,1163],[615,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,369,425,426,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[426,427,1070,1132,1140,1144,1147,1149,1150,1151,1163],[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,429,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,1070,1132,1140,1144,1147,1149,1150,1151,1163],[429,430,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[432,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,313,316,369,374,446,447,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[447,448,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,434,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[434,435,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,437,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[437,438,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,321,440,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[440,441,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,321,450,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[450,451,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,453,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[453,454,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,313,316,369,374,446,457,458,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[458,459,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,307,473,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[473,474,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,369,1070,1132,1140,1144,1147,1149,1150,1151,1163],[370,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,302,478,479,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[479,480,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,485,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,486,1070,1132,1140,1144,1147,1149,1150,1151,1163],[485,486,487,488,1070,1132,1140,1144,1147,1149,1150,1151,1163],[487,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,321,482,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[482,483,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,490,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[490,491,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,493,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[493,494,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,496,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[496,497,1070,1132,1140,1144,1147,1149,1150,1151,1163],[815,1070,1132,1140,1144,1147,1149,1150,1151,1163],[818,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[809,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,291,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[502,503,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,499,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[499,500,1070,1132,1140,1144,1147,1149,1150,1151,1163],[797,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,505,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[505,506,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,307,308,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[308,309,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,508,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[508,509,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,514,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[514,515,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,511,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[511,512,1070,1132,1140,1144,1147,1149,1150,1151,1163],[148,301,307,310,313,318,321,324,327,330,351,356,358,361,364,367,371,374,377,380,383,386,391,394,397,400,403,406,409,412,417,420,428,431,433,436,439,442,446,449,452,455,457,460,463,466,469,472,475,478,481,484,489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534,537,540,543,546,549,552,555,558,560,563,566,569,573,574,577,581,584,589,592,595,598,602,605,611,614,616,619,623,626,629,632,635,638,641,644,647,650,654,658,660,663,666,669,672,675,678,682,684,687,690,693,696,699,702,705,708,711,714,741,792,795,796,798,801,804,806,808,810,811,813,816,819,822,824,1070,1132,1140,1144,1147,1149,1150,1151,1163],[823,1070,1132,1140,1144,1147,1149,1150,1151,1163],[231,1070,1132,1140,1144,1147,1149,1150,1151,1163],[523,524,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,302,478,523,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[517,518,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,517,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[476,477,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,476,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[520,521,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,498,520,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,302,307,316,413,1070,1132,1140,1144,1147,1149,1150,1151,1163],[526,527,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,526,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[529,530,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,321,529,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[550,551,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,550,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[538,539,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,316,538,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[532,533,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,302,532,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[541,542,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,307,541,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[535,536,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,535,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[544,545,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,544,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[547,548,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,321,547,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[553,554,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,553,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[564,565,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,313,316,369,374,446,560,563,564,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[556,557,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,307,556,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[559,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,298,552,1070,1132,1140,1144,1147,1149,1150,1151,1163],[567,568,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,313,316,528,567,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[443,444,445,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,316,351,374,444,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[571,572,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,525,570,571,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[799,800,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,799,1070,1132,1140,1144,1147,1149,1150,1151,1163],[575,576,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,478,575,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[579,580,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,578,579,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[582,583,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,316,578,582,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[311,312,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,311,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[561,562,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,313,315,316,369,374,446,561,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,316,348,351,352,1070,1132,1140,1144,1147,1149,1150,1151,1163],[353,354,355,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,353,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[349,350,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,349,1070,1132,1140,1144,1147,1149,1150,1151,1163],[590,591,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,316,414,590,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[585,587,588,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,492,1070,1132,1140,1144,1147,1149,1150,1151,1163],[492,1070,1132,1140,1144,1147,1149,1150,1151,1163],[586,1070,1132,1140,1144,1147,1149,1150,1151,1163],[593,594,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,316,593,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[596,597,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,596,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[600,601,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,481,525,566,577,599,600,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,566,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[603,604,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,603,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[456,1070,1132,1140,1144,1147,1149,1150,1151,1163],[609,610,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,316,606,608,609,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,607,1070,1132,1140,1144,1147,1149,1150,1151,1163],[617,618,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,369,614,616,617,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[612,613,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,313,612,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[621,622,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,475,620,621,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[627,628,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,475,626,627,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[630,631,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,630,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[633,634,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,721,1070,1132,1140,1144,1147,1149,1150,1151,1163],[655,656,657,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,655,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[636,637,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,307,636,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[639,640,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,639,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[642,643,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,369,428,642,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[645,646,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,301,302,645,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[648,649,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,647,648,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[651,652,653,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,313,651,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[151,291,292,293,294,295,296,715,716,717,721,1070,1132,1140,1144,1147,1149,1150,1151,1163],[715,716,717,1070,1132,1140,1144,1147,1149,1150,1151,1163],[720,1070,1132,1140,1144,1147,1149,1150,1151,1163],[85,291,1070,1132,1140,1144,1147,1149,1150,1151,1163],[151,297,719,720,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,151,268,291,292,293,294,295,296,1070,1132,1140,1144,1147,1149,1150,1151,1163],[151,291,292,293,294,295,296,297,718,1070,1132,1140,1144,1147,1149,1150,1151,1163],[297,718,719,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,151,294,1070,1132,1140,1144,1147,1149,1150,1151,1163],[294,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,150,151,268,291,292,293,294,295,296,715,716,717,718,720,721,722,723,724,725,726,727,728,731,732,733,734,735,736,737,738,739,740,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,301,304,307,310,313,318,321,324,327,330,356,361,364,367,374,377,380,383,386,391,394,397,400,403,406,409,412,417,420,428,431,436,439,442,446,449,452,455,460,463,466,469,472,475,478,481,484,489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534,537,540,543,546,549,552,555,558,560,563,566,569,573,577,581,584,589,592,595,598,602,605,611,614,619,623,626,629,632,635,638,641,644,647,650,654,658,663,666,669,672,675,678,682,684,687,690,693,696,699,705,708,711,714,715,1070,1132,1140,1144,1147,1149,1150,1151,1163],[301,304,307,310,313,318,321,324,327,330,356,361,364,367,374,377,380,383,386,391,394,397,400,403,406,409,412,417,420,428,431,433,436,439,442,446,449,452,455,460,463,466,469,472,475,478,481,484,489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534,537,540,543,546,549,552,555,558,560,563,566,569,573,574,577,581,584,589,592,595,598,602,605,611,614,619,623,626,629,632,635,638,641,644,647,650,654,658,660,663,666,669,672,675,678,682,684,687,690,693,696,699,705,708,711,714,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,295,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,721,729,730,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,231,268,291,719,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,231,260,291,720,1070,1132,1140,1144,1147,1149,1150,1151,1163],[721,1070,1132,1140,1144,1147,1149,1150,1151,1163],[718,721,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,715,1070,1132,1140,1144,1147,1149,1150,1151,1163],[299,300,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,299,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[659,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,316,460,1070,1132,1140,1144,1147,1149,1150,1151,1163],[661,662,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,316,414,661,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[697,698,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,307,697,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[685,686,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,685,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[664,665,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,664,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[667,668,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,667,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[670,671,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,670,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[694,695,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,694,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[673,674,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,673,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[679,683,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,310,316,558,602,669,678,679,682,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[676,677,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,301,309,1070,1132,1140,1144,1147,1149,1150,1151,1163],[688,689,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,688,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[691,692,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,298,307,316,691,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[703,704,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,301,316,702,703,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[700,701,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,301,307,316,700,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[802,803,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,802,1070,1132,1140,1144,1147,1149,1150,1151,1163],[706,707,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,316,478,481,489,495,522,525,577,602,706,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[709,710,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,307,709,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[712,713,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,302,712,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[680,681,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,298,680,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[624,625,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,291,302,316,356,369,624,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[369,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,368,1070,1132,1140,1144,1147,1149,1150,1151,1163],[319,320,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,291,295,298,319,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,820,1070,1132,1140,1144,1147,1149,1150,1151,1163],[820,821,1070,1132,1140,1144,1147,1149,1150,1151,1163],[357,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,1070,1132,1140,1144,1147,1149,1150,1151,1163],[253,721,1070,1132,1140,1144,1147,1149,1150,1151,1163],[805,1070,1132,1140,1144,1147,1149,1150,1151,1163],[745,1070,1132,1140,1144,1147,1149,1150,1151,1163],[748,1070,1132,1140,1144,1147,1149,1150,1151,1163],[752,1070,1132,1140,1144,1147,1149,1150,1151,1163],[755,1070,1132,1140,1144,1147,1149,1150,1151,1163],[316,743,746,749,750,753,756,759,760,763,766,769,772,775,778,781,784,787,790,791,1070,1132,1140,1144,1147,1149,1150,1151,1163],[758,1070,1132,1140,1144,1147,1149,1150,1151,1163],[183,721,1070,1132,1140,1144,1147,1149,1150,1151,1163],[315,1070,1132,1140,1144,1147,1149,1150,1151,1163],[762,1070,1132,1140,1144,1147,1149,1150,1151,1163],[765,1070,1132,1140,1144,1147,1149,1150,1151,1163],[768,1070,1132,1140,1144,1147,1149,1150,1151,1163],[771,1070,1132,1140,1144,1147,1149,1150,1151,1163],[291,315,741,1070,1132,1140,1144,1147,1149,1150,1151,1163],[780,1070,1132,1140,1144,1147,1149,1150,1151,1163],[783,1070,1132,1140,1144,1147,1149,1150,1151,1163],[774,1070,1132,1140,1144,1147,1149,1150,1151,1163],[786,1070,1132,1140,1144,1147,1149,1150,1151,1163],[789,1070,1132,1140,1144,1147,1149,1150,1151,1163],[777,1070,1132,1140,1144,1147,1149,1150,1151,1163],[807,1070,1132,1140,1144,1147,1149,1150,1151,1163],[225,227,229,1070,1132,1140,1144,1147,1149,1150,1151,1163],[226,1070,1132,1140,1144,1147,1149,1150,1151,1163],[225,1070,1132,1140,1144,1147,1149,1150,1151,1163],[228,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,173,1070,1132,1140,1144,1147,1149,1150,1151,1163],[181,1070,1132,1140,1144,1147,1149,1150,1151,1163],[85,173,178,180,182,1070,1132,1140,1144,1147,1149,1150,1151,1163],[179,1070,1132,1140,1144,1147,1149,1150,1151,1163],[185,1070,1132,1140,1144,1147,1149,1150,1151,1163],[186,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,185,187,197,202,206,208,210,212,214,216,218,220,222,235,1070,1132,1140,1144,1147,1149,1150,1151,1163],[236,237,1070,1132,1140,1144,1147,1149,1150,1151,1163],[183,185,188,197,202,1070,1132,1140,1144,1147,1149,1150,1151,1163],[203,1070,1132,1140,1144,1147,1149,1150,1151,1163],[254,1070,1132,1140,1144,1147,1149,1150,1151,1163],[205,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,274,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,197,202,273,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,183,202,274,1070,1132,1140,1144,1147,1149,1150,1151,1163],[273,274,276,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,202,238,1070,1132,1140,1144,1147,1149,1150,1151,1163],[239,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,1070,1132,1140,1144,1147,1149,1150,1151,1163],[188,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,183,197,202,1070,1132,1140,1144,1147,1149,1150,1151,1163],[241,1070,1132,1140,1144,1147,1149,1150,1151,1163],[183,1070,1132,1140,1144,1147,1149,1150,1151,1163],[183,188,189,190,197,198,200,1070,1132,1140,1144,1147,1149,1150,1151,1163],[198,201,1070,1132,1140,1144,1147,1149,1150,1151,1163],[199,1070,1132,1140,1144,1147,1149,1150,1151,1163],[211,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,260,261,262,1070,1132,1140,1144,1147,1149,1150,1151,1163],[264,1070,1132,1140,1144,1147,1149,1150,1151,1163],[261,263,264,265,266,267,1070,1132,1140,1144,1147,1149,1150,1151,1163],[261,1070,1132,1140,1144,1147,1149,1150,1151,1163],[207,1070,1132,1140,1144,1147,1149,1150,1151,1163],[209,1070,1132,1140,1144,1147,1149,1150,1151,1163],[223,1070,1132,1140,1144,1147,1149,1150,1151,1163],[183,202,231,1070,1132,1140,1144,1147,1149,1150,1151,1163],[232,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,183,249,278,291,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,278,1070,1132,1140,1144,1147,1149,1150,1151,1163],[188,190,197,278,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,197,202,238,1070,1132,1140,1144,1147,1149,1150,1151,1163],[278,279,280,281,282,283,1070,1132,1140,1144,1147,1149,1150,1151,1163],[183,185,187,188,189,190,197,200,202,204,206,208,210,212,214,216,218,220,222,224,230,233,235,238,240,242,244,247,249,251,253,255,257,258,264,266,268,269,270,272,275,277,284,289,290,1070,1132,1140,1144,1147,1149,1150,1151,1163],[259,1070,1132,1140,1144,1147,1149,1150,1151,1163],[213,1070,1132,1140,1144,1147,1149,1150,1151,1163],[215,1070,1132,1140,1144,1147,1149,1150,1151,1163],[271,1070,1132,1140,1144,1147,1149,1150,1151,1163],[217,1070,1132,1140,1144,1147,1149,1150,1151,1163],[219,1070,1132,1140,1144,1147,1149,1150,1151,1163],[234,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,149,183,188,190,285,291,1070,1132,1140,1144,1147,1149,1150,1151,1163],[285,286,287,288,1070,1132,1140,1144,1147,1149,1150,1151,1163],[149,285,1070,1132,1140,1144,1147,1149,1150,1151,1163],[184,1070,1132,1140,1144,1147,1149,1150,1151,1163],[243,1070,1132,1140,1144,1147,1149,1150,1151,1163],[242,1070,1132,1140,1144,1147,1149,1150,1151,1163],[191,1070,1132,1140,1144,1147,1149,1150,1151,1163],[194,1070,1132,1140,1144,1147,1149,1150,1151,1163],[191,192,193,194,195,196,1070,1132,1140,1144,1147,1149,1150,1151,1163],[85,1070,1132,1140,1144,1147,1149,1150,1151,1163],[85,183,191,192,193,1070,1132,1140,1144,1147,1149,1150,1151,1163],[256,1070,1132,1140,1144,1147,1149,1150,1151,1163],[230,1070,1132,1140,1144,1147,1149,1150,1151,1163],[221,1070,1132,1140,1144,1147,1149,1150,1151,1163],[252,1070,1132,1140,1144,1147,1149,1150,1151,1163],[248,1070,1132,1140,1144,1147,1149,1150,1151,1163],[202,1070,1132,1140,1144,1147,1149,1150,1151,1163],[245,246,1070,1132,1140,1144,1147,1149,1150,1151,1163],[250,1070,1132,1140,1144,1147,1149,1150,1151,1163],[744,1070,1132,1140,1144,1147,1149,1150,1151,1163],[742,1070,1132,1140,1144,1147,1149,1150,1151,1163],[812,1070,1132,1140,1144,1147,1149,1150,1151,1163],[747,1070,1132,1140,1144,1147,1149,1150,1151,1163],[751,1070,1132,1140,1144,1147,1149,1150,1151,1163],[86,1070,1132,1140,1144,1147,1149,1150,1151,1163],[754,1070,1132,1140,1144,1147,1149,1150,1151,1163],[814,1070,1132,1140,1144,1147,1149,1150,1151,1163],[817,1070,1132,1140,1144,1147,1149,1150,1151,1163],[757,1070,1132,1140,1144,1147,1149,1150,1151,1163],[761,1070,1132,1140,1144,1147,1149,1150,1151,1163],[764,1070,1132,1140,1144,1147,1149,1150,1151,1163],[767,1070,1132,1140,1144,1147,1149,1150,1151,1163],[86,87,1070,1132,1140,1144,1147,1149,1150,1151,1163],[770,1070,1132,1140,1144,1147,1149,1150,1151,1163],[779,1070,1132,1140,1144,1147,1149,1150,1151,1163],[782,1070,1132,1140,1144,1147,1149,1150,1151,1163],[773,1070,1132,1140,1144,1147,1149,1150,1151,1163],[785,1070,1132,1140,1144,1147,1149,1150,1151,1163],[788,1070,1132,1140,1144,1147,1149,1150,1151,1163],[776,1070,1132,1140,1144,1147,1149,1150,1151,1163],[347,1070,1132,1140,1144,1147,1149,1150,1151,1163],[341,343,1070,1132,1140,1144,1147,1149,1150,1151,1163],[331,341,342,344,345,346,1070,1132,1140,1144,1147,1149,1150,1151,1163],[341,1070,1132,1140,1144,1147,1149,1150,1151,1163],[331,341,1070,1132,1140,1144,1147,1149,1150,1151,1163],[332,333,334,335,336,337,338,339,340,1070,1132,1140,1144,1147,1149,1150,1151,1163],[332,336,337,340,341,344,1070,1132,1140,1144,1147,1149,1150,1151,1163],[332,333,334,335,336,337,338,339,340,341,342,344,345,1070,1132,1140,1144,1147,1149,1150,1151,1163],[331,332,333,334,335,336,337,338,339,340,1070,1132,1140,1144,1147,1149,1150,1151,1163],[92,94,95,96,97,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1144,1146,1147,1149,1150,1151,1163,1188,1189],[1070,1132,1138,1140,1144,1147,1149,1150,1151,1163,1188],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1180,1188,1195],[1070,1132,1140,1144,1146,1147,1149,1150,1151,1163,1188],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1197],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1199,1202,1204],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1199,1200,1201,1204],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1202],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1199,1204],[1070,1132,1140,1143,1144,1146,1147,1149,1150,1151,1163,1188,1192,1193,1194],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1190,1193,1195,1208,1209],[871,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1143,1144,1146,1147,1148,1149,1150,1151,1153,1163,1168,1180,1188],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1188],[1070,1129,1130,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1131,1132,1140,1144,1147,1149,1150,1151,1163],[1132,1140,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1171],[1070,1132,1133,1138,1140,1143,1144,1147,1149,1150,1151,1153,1163,1168,1180],[1070,1132,1133,1134,1140,1143,1144,1147,1149,1150,1151,1163],[1070,1132,1135,1140,1144,1147,1149,1150,1151,1163,1181],[1070,1132,1136,1137,1140,1144,1147,1149,1150,1151,1154,1163],[1070,1132,1137,1140,1144,1147,1149,1150,1151,1163,1168,1177],[1070,1132,1138,1140,1143,1144,1147,1149,1150,1151,1153,1163],[1070,1131,1132,1139,1140,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1141,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1142,1143,1144,1147,1149,1150,1151,1163],[1070,1131,1132,1140,1143,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1143,1144,1145,1147,1149,1150,1151,1163,1168,1180],[1070,1132,1140,1143,1144,1145,1147,1149,1150,1151,1163,1168,1171],[1070,1119,1132,1140,1143,1144,1146,1147,1149,1150,1151,1153,1163,1168,1180],[1070,1132,1140,1143,1144,1146,1147,1149,1150,1151,1153,1163,1168,1177,1180],[1070,1132,1140,1144,1146,1147,1148,1149,1150,1151,1163,1168,1177,1180],[1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187],[1070,1132,1140,1143,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1144,1147,1149,1151,1163],[1070,1132,1140,1144,1147,1149,1150,1151,1152,1163,1180],[1070,1132,1140,1143,1144,1147,1149,1150,1151,1153,1163,1168],[1070,1132,1140,1144,1147,1149,1150,1151,1154,1163],[1070,1132,1140,1144,1147,1149,1150,1151,1155,1163],[1070,1132,1140,1143,1144,1147,1149,1150,1151,1158,1163],[1070,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187],[1070,1132,1140,1144,1147,1149,1150,1151,1160,1163],[1070,1132,1140,1144,1147,1149,1150,1151,1161,1163],[1070,1132,1137,1140,1144,1147,1149,1150,1151,1153,1163,1171],[1070,1132,1140,1143,1144,1147,1149,1150,1151,1163,1164],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1165,1181,1184],[1070,1132,1140,1143,1144,1147,1149,1150,1151,1163,1168,1170,1171],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1169,1171],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1171,1181],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1172],[1070,1129,1132,1140,1144,1147,1149,1150,1151,1163,1168,1174],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1168,1173],[1070,1132,1140,1143,1144,1147,1149,1150,1151,1163,1175,1176],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1175,1176],[1070,1132,1137,1140,1144,1147,1149,1150,1151,1153,1163,1168,1177],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1178],[1070,1132,1140,1144,1147,1149,1150,1151,1153,1163,1179],[1070,1132,1140,1144,1146,1147,1149,1150,1151,1161,1163,1180],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1181,1182],[1070,1132,1137,1140,1144,1147,1149,1150,1151,1163,1182],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1168,1183],[1070,1132,1140,1144,1147,1149,1150,1151,1152,1163,1184],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1185],[1070,1132,1135,1140,1144,1147,1149,1150,1151,1163],[1070,1132,1137,1140,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1181],[1070,1119,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1180],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1186],[1070,1132,1140,1144,1147,1149,1150,1151,1158,1163],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1176],[1070,1119,1132,1140,1143,1144,1145,1147,1149,1150,1151,1158,1163,1168,1171,1180,1183,1184,1186],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1168,1187],[87,1070,1132,1140,1144,1147,1149,1150,1151,1163,1211,1217],[87,1070,1132,1140,1144,1147,1149,1150,1151,1163,1219],[368,421,422,423,424,1070,1132,1140,1144,1147,1149,1150,1151,1163],[84,85,86,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1168,1188],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1210],[1070,1132,1140,1144,1146,1147,1149,1150,1151,1163,1188,1205,1207],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1168,1188,1206],[1070,1132,1140,1143,1144,1146,1147,1148,1149,1150,1151,1153,1163,1168,1177,1180,1187,1188],[87,856,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,231,855,856,857,1070,1132,1140,1144,1147,1149,1150,1151,1163],[915,918,921,923,924,925,1070,1132,1140,1144,1147,1149,1150,1151,1163],[882,910,915,918,921,923,925,1070,1132,1140,1144,1147,1149,1150,1151,1163],[882,910,915,918,921,925,1070,1132,1140,1144,1147,1149,1150,1151,1163],[948,949,953,1070,1132,1140,1144,1147,1149,1150,1151,1163],[925,948,950,953,1070,1132,1140,1144,1147,1149,1150,1151,1163],[925,948,950,952,1070,1132,1140,1144,1147,1149,1150,1151,1163],[882,910,925,948,950,951,953,1070,1132,1140,1144,1147,1149,1150,1151,1163],[950,953,954,1070,1132,1140,1144,1147,1149,1150,1151,1163],[925,948,950,953,955,1070,1132,1140,1144,1147,1149,1150,1151,1163],[872,882,883,884,908,909,910,1070,1132,1140,1144,1147,1149,1150,1151,1163],[872,883,910,1070,1132,1140,1144,1147,1149,1150,1151,1163],[872,882,883,910,1070,1132,1140,1144,1147,1149,1150,1151,1163],[885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,1070,1132,1140,1144,1147,1149,1150,1151,1163],[872,876,882,884,910,1070,1132,1140,1144,1147,1149,1150,1151,1163],[926,927,947,1070,1132,1140,1144,1147,1149,1150,1151,1163],[882,910,948,950,953,1070,1132,1140,1144,1147,1149,1150,1151,1163],[882,910,1070,1132,1140,1144,1147,1149,1150,1151,1163],[928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,1070,1132,1140,1144,1147,1149,1150,1151,1163],[871,882,910,1070,1132,1140,1144,1147,1149,1150,1151,1163],[915,916,917,921,925,1070,1132,1140,1144,1147,1149,1150,1151,1163],[915,918,921,925,1070,1132,1140,1144,1147,1149,1150,1151,1163],[915,918,919,920,925,1070,1132,1140,1144,1147,1149,1150,1151,1163],[855,1070,1132,1140,1144,1147,1149,1150,1151,1163],[913,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,872,881,910,912,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,92,1070,1132,1140,1144,1147,1149,1150,1151,1163],[116,120,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,114,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,114,115,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,114,115,117,118,119,1070,1132,1140,1144,1147,1149,1150,1151,1163],[114,1070,1132,1140,1144,1147,1149,1150,1151,1163],[92,1070,1132,1140,1144,1147,1149,1150,1151,1163],[922,955,956,1070,1132,1140,1144,1147,1149,1150,1151,1163],[957,1070,1132,1140,1144,1147,1149,1150,1151,1163],[910,911,1070,1132,1140,1144,1147,1149,1150,1151,1163],[872,876,881,882,910,1070,1132,1140,1144,1147,1149,1150,1151,1163],[878,1070,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1085,1088,1091,1092,1132,1140,1144,1147,1149,1150,1151,1163,1180],[1070,1088,1132,1140,1144,1147,1149,1150,1151,1163,1168,1180],[1070,1088,1092,1132,1140,1144,1147,1149,1150,1151,1163,1180],[1070,1132,1140,1144,1147,1149,1150,1151,1163,1168],[1070,1082,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1086,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1084,1085,1088,1132,1140,1144,1147,1149,1150,1151,1163,1180],[1070,1132,1140,1144,1147,1149,1150,1151,1153,1163,1177],[1070,1082,1132,1140,1144,1147,1149,1150,1151,1163,1188],[1070,1084,1088,1132,1140,1144,1147,1149,1150,1151,1153,1163,1180],[1070,1079,1080,1081,1083,1087,1132,1140,1143,1144,1147,1149,1150,1151,1163,1168,1180],[1070,1088,1096,1104,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1080,1086,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1088,1113,1114,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1080,1083,1088,1132,1140,1144,1147,1149,1150,1151,1163,1171,1180,1188],[1070,1088,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1084,1088,1132,1140,1144,1147,1149,1150,1151,1163,1180],[1070,1079,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1082,1083,1084,1086,1087,1088,1089,1090,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1114,1115,1116,1117,1118,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1088,1106,1109,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1088,1096,1097,1098,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1086,1088,1097,1099,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1087,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1080,1082,1088,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1088,1092,1097,1099,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1092,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1086,1088,1091,1132,1140,1144,1147,1149,1150,1151,1163,1180],[1070,1080,1084,1088,1096,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1088,1106,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1099,1132,1140,1144,1147,1149,1150,1151,1163],[1070,1082,1088,1113,1132,1140,1144,1147,1149,1150,1151,1163,1171,1186,1188],[876,880,1070,1132,1140,1144,1147,1149,1150,1151,1163],[871,876,877,879,881,1070,1132,1140,1144,1147,1149,1150,1151,1163],[873,1070,1132,1140,1144,1147,1149,1150,1151,1163],[874,875,1070,1132,1140,1144,1147,1149,1150,1151,1163],[871,874,876,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,103,108,112,301,313,321,795,827,828,844,846,870,972,973,974,975,976,977,978,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,105,310,321,386,394,420,436,439,449,452,531,537,543,549,552,708,795,844,845,846,847,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,321,439,449,452,795,844,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,105,110,112,121,310,321,428,537,543,549,552,626,795,826,827,828,829,830,831,832,833,834,835,844,849,1070,1132,1140,1144,1147,1149,1150,1151,1163],[83,87,101,112,321,795,844,979,980,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,88,89,1002,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,112,313,321,537,543,549,552,795,827,828,844,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,88,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,93,105,111,112,121,122,124,825,844,850,1004,1008,1010,1019,1032,1035,1037,1060,1061,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,100,104,112,121,125,310,321,330,626,795,842,844,848,865,866,961,968,969,981,984,987,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,100,103,112,310,321,330,394,428,708,795,827,829,831,833,842,844,851,859,860,861,862,863,864,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,310,321,795,844,982,983,1070,1132,1140,1144,1147,1149,1150,1151,1163],[83,87,88,101,104,112,310,321,330,420,537,549,558,566,626,795,836,842,844,846,847,848,866,867,967,970,971,972,973,974,975,976,979,980,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,310,321,626,795,844,985,986,1070,1132,1140,1144,1147,1149,1150,1151,1163],[83,87,100,310,321,330,394,428,626,708,795,833,844,846,860,867,868,869,870,914,957,960,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,101,321,394,417,436,439,449,452,489,522,549,558,577,602,708,795,844,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,100,310,321,428,795,831,833,844,845,859,861,864,914,957,962,963,964,965,966,967,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,100,113,310,321,330,428,795,831,833,844,864,962,968,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,112,310,321,428,439,449,507,795,833,842,844,958,959,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,101,102,103,104,108,112,313,321,330,795,827,828,831,843,844,846,870,972,977,978,979,1036,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,100,109,112,310,321,330,394,626,795,831,842,844,851,852,853,854,858,865,968,988,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,90,310,321,626,795,834,844,995,996,997,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,394,436,439,442,449,452,844,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,88,89,90,100,108,109,112,121,125,321,795,826,844,848,989,994,998,1001,1003,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,100,108,112,124,321,420,478,507,626,741,795,834,844,848,858,861,981,991,999,1000,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,108,109,112,310,321,420,626,795,842,844,959,985,990,991,993,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,110,112,121,310,321,394,537,549,558,566,626,708,795,826,834,844,860,861,1005,1006,1007,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,101,102,103,104,112,310,321,330,394,400,403,412,417,420,436,439,449,452,489,522,549,555,558,577,602,626,708,795,830,834,836,844,848,860,863,972,973,974,975,1009,1020,1033,1034,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,104,105,112,310,313,318,321,394,436,439,449,452,489,519,558,602,611,619,708,711,714,795,836,837,838,839,840,841,842,843,844,848,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,100,102,112,310,321,394,475,626,795,841,842,844,848,988,995,1016,1017,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,102,107,112,310,318,321,330,394,420,428,436,439,449,452,519,619,626,708,711,714,795,827,831,834,837,844,845,860,861,866,914,957,1009,1011,1012,1013,1014,1015,1016,1018,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,101,112,310,321,330,394,420,436,439,449,452,558,708,795,834,844,860,992,1009,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,103,106,108,112,310,318,321,330,364,394,403,412,420,428,436,439,449,452,489,519,522,558,566,602,619,626,663,708,711,714,795,827,829,831,832,834,835,837,844,852,860,861,862,863,866,964,985,1009,1011,1012,1013,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,844,1042,1044,1045,1046,1051,1053,1054,1056,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,310,321,394,484,489,522,558,602,663,708,795,834,844,992,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,108,310,321,507,626,795,844,860,1005,1038,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,88,100,108,112,125,310,321,330,394,420,428,626,663,699,705,708,795,831,833,841,844,959,962,963,981,985,988,990,993,1015,1016,1038,1040,1041,1057,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,88,91,795,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,108,112,321,394,420,436,439,449,452,795,844,959,993,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,108,112,321,394,795,834,844,1039,1058,1059,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,127,1062,1070,1132,1140,1144,1147,1149,1150,1151,1163],[93,111,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,100,112,121,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,126,1070,1132,1140,1144,1147,1149,1150,1151,1163],[98,1070,1132,1140,1144,1147,1149,1150,1151,1163],[98,100,1070,1132,1140,1144,1147,1149,1150,1151,1163],[98,99,100,101,102,103,104,105,106,107,108,109,110,1070,1132,1140,1144,1147,1149,1150,1151,1163],[87,124,1070,1132,1140,1144,1147,1149,1150,1151,1163],[100,111,1070,1132,1140,1144,1147,1149,1150,1151,1163]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"87ac5f005e342e517e500f635ad8297809c7ab8e029c3182f5674aea74b8b223","signature":"110ec2c239c14bc4fd89aac3ee8e032f3c9e1df7bfd2a43ffbbb63159bfb44b6"},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"a01def3d1afff119c4d9c07f6509041a14f10b6df16ee7cf8d12b12aca6099b8","signature":"b98544e3bb3ebf75b4724f7754fccd78f293cc75e2ba076085b73cf62a9005eb"},{"version":"7416c885776a188ff0a4babb7a0956502cc58946c534b77b640312d321599e51","signature":"55429dddbacbe47312203c4f7c43d16d89e15ae2b582b988b27204d46dc1d232"},{"version":"863e6a5db1aba04c7300ee4277bd54b263d82aa71e1205cbecec32dc4933d3c5","signature":"6126add4fb32b3fa5c6412b2e02bee8beef8c30193ee2ec22fd2b4dbca5b295b"},{"version":"5657d65e69986258a56073ecaef9b67e481f936c2b4d9100da14263b53debe98","signature":"9f50facd72576e205af4e23e60577ecfa9066f94c88359524cb65eaf7d2adc7a"},{"version":"f734b58ea162765ff4d4a36f671ee06da898921e985a2064510f4925ec1ed062","affectsGlobalScope":true,"impliedFormat":1},{"version":"9b643d11b5bca11af760795e56096beae0ed29e9027fec409481f2ee1cb54bbc","impliedFormat":1},{"version":"55c0569d0b70dbc0bb9a811469a1e2a7b8e2bab2d70c013f2e40dfb2d2803d05","impliedFormat":1},{"version":"37f96daaddc2dd96712b2e86f3901f477ac01a5c2539b1bc07fd609d62039ee1","impliedFormat":1},{"version":"9c5c84c449a3d74e417343410ba9f1bd8bfeb32abd16945a1b3d0592ded31bc8","impliedFormat":1},{"version":"a7f09d2aaf994dbfd872eda4f2411d619217b04dbe0916202304e7a3d4b0f5f8","impliedFormat":1},{"version":"a66ebe9a1302d167b34d302dd6719a83697897f3104d255fe02ff65c47c5814e","impliedFormat":99},"010fa0f5a5bfec93b0fc73289e8b1b3a43fce6752d6b198e57632f07369bbd21",{"version":"39982552c382d02848afd33122fcafab1c6843d54c98c96f369b27b2a4d76fbf","signature":"f2aaa836bab0a3d3723f21d94aeef42be2e06172cf72a34066b4bcc806aed927"},"02f28e7959dce38bc100f9f304538bc7ec2cad0e4fb4cd996fa44b392a2360d5","f617189f5c20a67472e97f7fc65d4daf65554ac5d30c695a45954ad614b5839a","b3c9a4dcb7429b48a7c599b70c9e6623d8ea656db38d0080f3d8f8f677f7770e","62f7f9d6da023ac682cf45723d9de4c6e01a6d77a0e6fbfd7e4eb466ed1c73bb",{"version":"21c48f8637a0881cf896c06cd6594bb080132094c6d9c440af2cb16ca9a926f1","signature":"433faee23092e33adf1fc060727a89bdec793f4ce0aa40f7bd1005c6c76f4d0f"},"019e7d956c4d8f2b0c508c14f1ca2d14b7866159cabfe2551c4edc0ce10be7e4","a06cb4f053350159cf2a1eaeb32af1889fd632f396af7cf4805a1ecb45523c71","46110eb80b41b7450472eca5ee0030449625ff2562af7d0f00a08b718e5859fd",{"version":"1d4af23914771aab827de97c23ce2ed418dff1c7181ac0e105f20a83f8f808d7","signature":"b6c086109375eb696487c751a134b00cf4871a40fc02e5c8e334d256be52e955"},{"version":"04d852c589ba25d348b9c5de7484ebda87cb35e16124e80cf3d69aa2747270e1","signature":"cebaea6cc559680b1e94c080b4ae9972b38a02026cf8eac7d69badcebf37112e"},{"version":"0443ac2b31d655279c49a95d5aa04e4a53682c6c7aaffc78e083c3c9f221256e","signature":"bf9eea90442c49a62b277c77f8f6a467941aa0e494a5cba1213d3ece9a191258"},"4b5db289b716b8f529e53cd1f137db1ba9062865127675d5f6bd562e970c6592","c0a466b289970062647ab96105fdf5a5c4cb2bb7b14caaf182d852d5a7ba4748",{"version":"a437d0929fd84e31cd444b8823f4066cc897be005a4003aa74ae946aed3057b1","impliedFormat":99},{"version":"d439306d5d6b8563d53258134ca6bb28d0b6ca6a557bda753ef75829c000a938","impliedFormat":99},{"version":"40af4d2f89f4de15e69d7ff4915a48d54175698870cae94b40a9dd759d5aaffe","affectsGlobalScope":true,"impliedFormat":99},{"version":"ac93729a812a3b6e5e13338dfb98289bed810e88887b37b7aac5b28c6e6287c1","impliedFormat":99},{"version":"a50c9237f37a07b2d5332d6e77160c89624549a5a318108f7ce82ec36b06a3d7","impliedFormat":99},{"version":"79c164aa4f8a8418df7717206ea52508f72743224a6b9c705f10724c6dbb5548","impliedFormat":1},{"version":"65183e393edd53502c199cdfea624c1395461a8c6603a263f695bd309dcf9048","impliedFormat":99},{"version":"9f49b8064f63b7b3275a8247692967da2458734ea9afcf5ffd86b5c177674740","impliedFormat":99},"dc8f349b1673ef15eea7f2e565827312db1c56ba6e16ab6660c6e623ec866c62","363d2dadc30b89adeee54b024c258db26cb720deb3dc0af8c0b247d51d91bb36","34928375d6427c429b50caea6afbcce2cfe7f09dd46229fceef33d14b86c0396",{"version":"81817630644d0d547dd4bca7f39f3affca53288a8489f6bf082cf06a7a6e2677","signature":"18e593cbf7c01a5d362acc9bfee252ac6514f8753d91442638ad590ab8145a89"},"7c2cabe8d719df7bd72fee16bdef953edc9e06d5b52a2ff4e371366ecd17bf49",{"version":"05321b823dd3781d0b6aac8700bfdc0c9181d56479fe52ba6a40c9196fd661a8","impliedFormat":1},{"version":"deb685eea280337580ecdc1f59ba64df19b8a0a5b26737c152a492d372d75738","impliedFormat":99},{"version":"e8f18d8914599c6b788ab6549287ecf89bd1a9a173e9eb81659edd61f041fc3c","impliedFormat":99},{"version":"6a89c8b199e69d0fa67aa02481d672c80c1077f1668446d995243efd2fc37225","impliedFormat":99},{"version":"e00fc542e2d58412c06217830a0650bc201c706c8eee2d8d27d5ba6b804c6035","impliedFormat":99},{"version":"b46555207d3dbb03ab62585b52a396f48b48a3c40e96723c3ddab672b66ccf2a","impliedFormat":99},{"version":"37b768bac5fe7881c1823e8b8f372b73f2bb4f619e4ed14432df2030f0fd42ae","impliedFormat":99},{"version":"006047b00455c1b865fa1df0ddae8db818bb39a321f3ddda2c2701f893f81aa4","impliedFormat":99},{"version":"537bed5a5d8b5885ebc6f33a2a27bf6af7231a5119410a7c19ca49ece077b985","impliedFormat":99},{"version":"38ef428d44eec84100a2c3d9409607b7d5d79b611b2e9e3b5bf55787fb3cf01a","impliedFormat":99},{"version":"a082dc47e7a81b2075d1be0e1c84abeef96b90f5c4b0df67c882ea36e9b5198a","impliedFormat":99},{"version":"2eb9b16c811eb2e4cc7c088ecafe3dd58d381cb7bcd43c6378f59d6b62343f82","impliedFormat":99},{"version":"0d99404df5e7375c3af5b29e421e971e4d9497f757e08f6d71c55abe12fb4775","impliedFormat":99},{"version":"2ad8375a297254a151082eca24de4880709e22af2b90b5c0a1527a5c34fdfdd8","impliedFormat":99},{"version":"fb1c107b6e709fa8d8183dcb5513a88ef43037b8dfdb148945bb5de406ced872","impliedFormat":99},{"version":"1c6477a91023bd6c797a298f14926e90756eb2d1eddcf04399d003afc3b8c874","impliedFormat":99},{"version":"31881b2ef14f4a800abb5a2e901a380a60890d3e53481f43820e5677e6731071","impliedFormat":99},{"version":"b1ca55067b6f268f36321ef2bcc284d5bd8f728aeb2be639385d9f62bf4a0b3e","impliedFormat":99},{"version":"08415f0037d74b8126615514833ce44bf9e946ee77390b8f68e93df26a905297","impliedFormat":99},{"version":"56c63ffa519c6f7f237f8d4f2475260a32938bf3e0c2287670bce0c5008854cd","impliedFormat":99},{"version":"01a19462afb14049348a4437ca23d8ea8216f2c5a49e2a05bfaaec0acc4987e7","impliedFormat":99},{"version":"18d4f7640b5e7f959234f0226842f5aac95df07414e66afbe0a86624c0317f72","impliedFormat":99},{"version":"c19012befc7fa0dca216cd574620b15da1cf4ad2b62957d835ba6ccdbb1a9c27","impliedFormat":99},{"version":"cc0048f62d66e974d5c563bcc0b94476e8a005406ed07ef41e8693316b2e31bd","impliedFormat":99},{"version":"e97ab9ab0de2905d62b6f01b8929c21c9b66d3caef11e5fe1f024f6b2c168ae7","impliedFormat":99},{"version":"4dcdbdbc992d114e52247e2f960b05cf9d65d3142114bf08552b18938cb3d56b","impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"ddb5454371b8da3a72ec536ad319f9f4e0a9851ffa961ae174484296a88a70db","impliedFormat":1},{"version":"fb7c8a2d7e2b50ada1e15b223d3bb83690bd34fd764aa0e009918549e440db1d","impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"9c909c17f69f125976e5c320eded3e693890d21b18cbc4caa246ec4fda260dcd","impliedFormat":1},{"version":"7915d50018073244a9bcb3621e79b8e0ad4eedfb6b053fc945cad60c983bb11b","impliedFormat":1},{"version":"ea7b47bc357858506e6161065b1a8997cfbc5d1dcdf233966da9d01d74721ef8","impliedFormat":1},{"version":"50444daaee4bf4ad85ad8eb52e3ad5c6bba420aad9e2a800043a78f4d8bc436c","impliedFormat":99},{"version":"1fa33d8db2a9d2a7dbfb7a24718cccbcde8364d10cce29b1a7eea4cf3a530cbb","impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"90300bef1c0e2523c97fdd178b9d50e3f39646ade67faab69be4e445937c862a","impliedFormat":1},{"version":"381437930df37907c030519b23ffea4d8113f46e4431a70bfe008a0c43c63648","impliedFormat":1},{"version":"695cbb89013bc9e87fb24b0df020fe605c54f0ab5c267b5bf0490ed097044197","impliedFormat":1},{"version":"f43780383543bfcdc0a2ee850375e1f03d94bdb1b85091d5b11bb8b2023c8b49","impliedFormat":1},{"version":"303638e9e9378e3cce14c10a276251b2b6baea811f882b0adb6d8b7e44a8245e","impliedFormat":1},{"version":"93fc1a008c4786aa9970b7a4c56295bef4d39c243af63cbfcbd5548ca4fdd535","impliedFormat":1},{"version":"6b91aca1948fd92e4fb32e91e94955e7b7c12fb8cbc0a40eb55f1808886e53e8","impliedFormat":1},{"version":"1e197b6e669b8ece0a68c684af9a4394d8c47e58eaa040391cbdadcc1b5020a0","impliedFormat":1},{"version":"fccfc90c19498513d5c4b9c705706660eba9eb493bc38cdc16a11e9d384cd086","impliedFormat":1},{"version":"b288bbe96ea05e353f008a4d445fb8589a82f2a1c4d4d0bdfc283a19020dc96f","impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"cf32b34fb9148d541c100a83fd3d204ced00c76871b4811d53b710ff15a948a1","impliedFormat":1},{"version":"6940a178bd12acca76e270f0b0c4d907b9cc469d28833bd59a3276f11668591e","impliedFormat":1},{"version":"22165b22578a128275b69d52c0cacc6ab19e36eb95e10da18f1bca58cd6ac887","impliedFormat":1},{"version":"ea7b47bc357858506e6161065b1a8997cfbc5d1dcdf233966da9d01d74721ef8","impliedFormat":1},{"version":"9dc9c7a268e5b2caa79a5a5040a86ba5ddf1cba20d8715ceaf2b76f79ee444fc","impliedFormat":99},{"version":"9be491a96d84a67f0d94eff72780b05f5d87e72e35ab479d5d178ec3992afa16","impliedFormat":99},{"version":"c048b081418f530417dd4193b47890bc734711378df819f0ff217144f6775afa","impliedFormat":99},{"version":"43d809531ce93c48c965969fbf6a005d509b56bd2cd99c0e77347185ebd8fce0","impliedFormat":99},{"version":"bf0b1e6c1bb4930244203a593c6db7aed456e635c31aba73ee2102c55998861f","impliedFormat":99},{"version":"58e8c4bed19bfa7264f90353b891ff96094228a20416623bb998f1ae441e958a","impliedFormat":99},{"version":"171e17f251c65245d7b0d18da35b9e9c900576ef6db03a59cae533353e222a90","impliedFormat":99},{"version":"76e3666a9f4495c6d15035095a9bb678a4c3e20014dc8eb9c8df8dc091ec8981","impliedFormat":99},{"version":"055bc641ca1f1eed76df9bc84ec55aaff34e65d364fea6ae7f274ba301726768","impliedFormat":99},{"version":"22ebe7ce1ddc8ee5e70f28c41930c63401e178c637d628b9af9f7a9c456e86b0","impliedFormat":99},{"version":"041c4afbee0a17614e9d4a8aa4385ffbbbfa1a5d5148c9aab0dce964be1af0d6","impliedFormat":99},{"version":"00d259e465df20202e848bf8d192056919e460a3de20aa14f59d523d3af38b29","impliedFormat":99},{"version":"9cbb746b8d46880874f6a8f8c64dfa925ec0cf70412d4ad5e00a8756c82edf3c","impliedFormat":99},{"version":"fd23901347e68e39f7043fc6787b2af6c7094d6c7ef6038ee909cfe26da625c1","impliedFormat":99},{"version":"b27d92f5ce61e0ccb00a4f1f19665ff995df3f16b4b7005a651ffe7255c45cab","impliedFormat":99},{"version":"118a23aa24572ae8fe1a2dc0014d73a0ce45d62bdb988a71bcb6c021dc592c26","impliedFormat":99},{"version":"37f91e6110c28b1d1a7a82cdf44c66fe0259b38c74440b8acbf9d14ddfa451ae","impliedFormat":99},{"version":"47ceda52be9bebcfdda6181b496963f530cf61719fda168f052f6ca483add543","impliedFormat":99},{"version":"3eeab58ad93111ccf9287c7f32b1a8037f23d28783e96b93d097290919fe386e","impliedFormat":99},{"version":"5f6442d0a9bbb961b58f45d09690a034734aeea01f2875cb0e7ec31aa3676ef7","impliedFormat":99},{"version":"6511839e63105744b3bb8b340791218b253bdae80c7d57c288dcc85bc6f91317","impliedFormat":99},{"version":"a361409ddb9ecedc609eac1cc6f752383b1a667be212846927b660727e346d85","impliedFormat":99},{"version":"3f01edcdc9641acfb6689126d9506248d3a3afe3e4a23e2f7588988ba693f349","impliedFormat":99},{"version":"8365f863e47c17b2412fc736f8e279ee225129b9436af8ba9b746fd5d59b06ae","impliedFormat":99},{"version":"6ac1b4401d51471ae0d6b6bcce637e550eb78d75b1cfe993b6eaca9898d74976","impliedFormat":99},{"version":"0b4d305552d9cce2397e6c618cb27d241f64eb4e3496e66d926a7f66a8e0c6b3","impliedFormat":99},{"version":"894395299a4761cd4e38c20bf17bfce27a3cbdc2650054e5fc28e692fddc4b4c","impliedFormat":99},{"version":"7568f6aaaf6b62b7f3f72ebd07bbabd95749a0f969dfb15e7789d4a3c8e080a1","impliedFormat":99},{"version":"039d7ce09e9246c255c7acc1c00ba3afe7e98b4767547ccb6b77274109f8a5c1","impliedFormat":99},{"version":"b4b9514c90add4b59499251f760f01aa7fdaacb02894ff0d885286094cef8c2a","impliedFormat":99},{"version":"f670e23ac2377ed32187f39d02be707c9c0cd61e95786a6ba49ea7f860baa50d","impliedFormat":99},{"version":"25f27d8da6c42f1622b0b01fc5c78f48c79c645e10c4849fc8c5521faa9ace29","impliedFormat":99},{"version":"54e17510b0440980e3bc8ce141c9b922adb6c8e77ee81c443870bf684679255a","impliedFormat":99},{"version":"3e9e2f295358fa46f10faa524be6e99a42114752b0e195ae997f550968ea481f","impliedFormat":99},{"version":"74cf1308a1f0de094f0e8567541b0a0e126426ec2eb4ef68c9cd97fa4d0d9272","impliedFormat":99},{"version":"dcd1e783bde43c7d570ce309cc21e9d9d7b3110491aef9c5c5ce87c6a53f7e5d","impliedFormat":99},{"version":"08bc14542d8d34fd138945413e31ecf65668e029f966b5aab5b25e8e421efead","impliedFormat":99},{"version":"17648a898be56a6a9c4a6305e84ba220bc76d4355f0f55696726f1eb1fcd6d4d","impliedFormat":99},{"version":"cc6c1ade000cc9b7f8c79d8bdddb145950bbe7d404e5b3b938537a0bbfba73bd","impliedFormat":99},{"version":"eb97def43c2617552f76eb367e7f5531127fa03fdf991ef12cf5ae8fcc52c7ed","impliedFormat":99},{"version":"f49bde1443de7aaf05371f049ee0710619bde1b7bb7042192512e5cab672b3fc","impliedFormat":99},{"version":"a704c8b701194cc47d333b093f87db332694b124e304fb0167be09ff3304d353","impliedFormat":99},{"version":"358f8d33b436d21a7c313f02e900b805eb1c6abda3d675f703ada38eea3b92d5","impliedFormat":99},{"version":"dbcf8b1a2d94e9a1f0fa3fd5152114a14f83d8dba8d3f8dd773be476adac937f","impliedFormat":99},{"version":"ee63e60be6f56e08cf8d7b5ab750078fc6d08f69cdf70ee43fd0693d10c65d2f","impliedFormat":99},{"version":"4807b8b139747bd82ef181b5eaf8676c1f9012be0ad91feb1173bd57f08aaac8","impliedFormat":99},{"version":"ceee442c1035bd941c9fbddbab08fce2e34d1e23d79d56a48c0444bb45d705b7","impliedFormat":99},{"version":"fb9bcb4ee14feca03c05eaff9f1eb826bb1e75bade5e64f98c65ecc79b910949","impliedFormat":99},{"version":"f8ee6c9ecf3a39cb551db7d6f0aea157cd272ac477c561331efd734a13b34134","impliedFormat":99},{"version":"f72af7f1a38a5b8ae564be5eb68a8c25e5cf9cf4c567ddfa471a481425369c79","impliedFormat":99},{"version":"aef37af42cec810a643f24ba90f2f7d55c3e05ec5e31adca4c3318e578822aa6","impliedFormat":99},{"version":"ce35f35a8d59172dbf5cd945c253512114d6020e7dd30d399d372e473eff2515","impliedFormat":99},{"version":"e9e8a6bbb3819df983667e1bbf9c993e954c009f575c1f5d2063d55c1af47d1a","impliedFormat":99},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"b6abb79b5ce1a00b991e3568a1f7ddffdafa6f27235d8c41d440ae3e1395024a","impliedFormat":99},{"version":"bf0b1e6c1bb4930244203a593c6db7aed456e635c31aba73ee2102c55998861f","impliedFormat":99},{"version":"44993fcc19de9502ac3f58734809acbe0b7af3f5cca12761dc33d9a77cf02d1b","impliedFormat":99},{"version":"d172b164580892e56129985557aaf73b4e45279e4e0774e1df53282e6fd89427","impliedFormat":99},{"version":"9104e9de24372f5469c59b5df6cf7cb3f8252268a933e4fd6a2dd09610b165a8","impliedFormat":99},{"version":"68f1a4ec2937052ae0dd18407eb8d1b579708970ced79c6e7cfe4a93d0a00385","impliedFormat":99},{"version":"efe0fabfc89403ce6a4a8b1fe3a7633f1161b7e10d9824299560f2d15e4e606e","impliedFormat":99},{"version":"863e3b3ffefbe39c727cf30147ffe04c04f1c94d5e8f4ac846b227bad8152c93","impliedFormat":99},{"version":"e84f2065c605965fd1d44de2cddf0509dce060b4d9e79c01a884a0899fe877db","impliedFormat":99},{"version":"4546ed6a4f9981e2009e8bc0047130eef10c6ad12958a4093d6a6d720548508f","impliedFormat":99},{"version":"16725a633f5f5c1cd82e2baf4b0ae521da7f6055339f837bf2695bc3fd44373f","impliedFormat":99},{"version":"664104ab990ca5d100a69e159f9f8874551d94a187db834309af14fee2d64f4e","impliedFormat":99},{"version":"542e50c2dca6d24f5cb9cb2b7a5c07d450850af21ef253838bb2bbfb175a3e8c","impliedFormat":99},{"version":"b87a5b1b4ef40860bb48923e0abed7183883a6b4bf16ee7d1ddd745e1c52737b","impliedFormat":99},{"version":"2631b7256705a9ace791907cd28a1272f7c46fc33126332011b6e6ec4504763e","impliedFormat":99},{"version":"fd8b58b771380655281dca6ed40019cd8ecd639ef6ec74baa91662ca0e0ae458","impliedFormat":99},{"version":"6a73dc1806928e57c21fc51d00f40e4e92f17dc6b31ddfa95365a837651587c0","impliedFormat":99},{"version":"ce35f35a8d59172dbf5cd945c253512114d6020e7dd30d399d372e473eff2515","impliedFormat":99},{"version":"97912ca64fedc028914d9f1585e30d98a1e1e46a426a06f2190024067b8a534f","impliedFormat":99},{"version":"a9b65aa46a4613eef2bef431366d8f5f166e8226c6fae3688c67ca102c3d6a79","impliedFormat":99},{"version":"45af3936c6c68c1ebf71c6f69375b64df0bb3ff0ee66c9af8ddb4c43f426110a","impliedFormat":99},{"version":"0caecd57de90295669dd561bf9f0e4c4478434e14e0741c2b0fbed44e38563eb","impliedFormat":99},{"version":"9bf450866b0ae8f5539cc364ebcb566c8eac607bd4cb3c6ce786134b4e6815bc","impliedFormat":99},{"version":"78c0f55d5519d39233daf5562c5704a0322dd7abcc1e72afb015cac550be32d3","impliedFormat":99},{"version":"78b8de068c89bd325bad4d1da693b679f57bb2a0f4a0140e9f58f12d7a913fc6","impliedFormat":99},{"version":"f72af7f1a38a5b8ae564be5eb68a8c25e5cf9cf4c567ddfa471a481425369c79","impliedFormat":99},{"version":"205d330174cc427f3002517bae08e2cf8b8e134cfe086cc80fe18a07efeca799","impliedFormat":99},{"version":"f1cd4f713f4437d86a7e618fc260e84bb609de484c7774d3138b0e52f1ea264e","impliedFormat":99},{"version":"03535e283a156874e32846037dc86e32c53995db4e077d392a8b17c6f26e4f8d","impliedFormat":99},{"version":"8e0b721643bbab457fc721978ca39bb210dee3f84f2693e9f2b463a3079de8e2","impliedFormat":99},{"version":"26714a66ea656e9971107607ff771e07c2d92066fad35f41164ce2f8df516900","impliedFormat":99},{"version":"3c8f12fe817e0928ca30f4df324c0941ba057f1c4cff8e53ce88c5156dada27b","impliedFormat":99},{"version":"d35f81ba39296216f0d88d7b28ed0e02d8c628cf70194b108c0e941cda519ab6","impliedFormat":99},{"version":"87621a249f7a938e9d270b70e560b78b55552eafd08ddf71d2fbd80913699488","impliedFormat":99},{"version":"ab92b4094b7db98dc3c59d5a12afd9a8778a7d0f3304ea8a6497d74c41aa95de","impliedFormat":99},{"version":"400402da2b06f5acd7940db2ee5507784fdab53354062fcddfe4934f3ac04340","impliedFormat":99},{"version":"3e80aeb2dad64ce73bb62a404e1db152fd73bd5849b1777d444939d0c1cfc287","impliedFormat":99},{"version":"61f825380b5ff41a275f6d0cedd145a073524cc24b4963f82c4348574325768c","impliedFormat":99},{"version":"1631f72761156e3e1f414db7ea97cc6b6f1f50904b290f3e6985502be9ee016c","impliedFormat":99},{"version":"b41d3caa8c0839223be817bfedea85bfcf1e682182d51414fd11d9ccaf83792f","impliedFormat":99},{"version":"2b5637680ce53987f0335180e79a9dd639ccfa8f20d46332195dcf11c02e9bb7","impliedFormat":99},{"version":"08bee5ad21bf8bf6d1e66f9bcbcf1c790c1873ae5d63068c02567c357ae619fc","impliedFormat":99},{"version":"a50883ca9e4d58a313d8f8614ddb8bcf4a33587ec85ff9998a971334e34dff0c","impliedFormat":99},{"version":"6cbe055efdadb8b2d27ab470fded80fb4d2219e7b1a0140ffcba3f1ff4e6bd14","impliedFormat":99},{"version":"949ccc4add0506d70be23ded8fe17702ce7ecad3f6b9b2948d12be7b7621c008","impliedFormat":99},{"version":"8b5aa4aceca84ffb115eaa92eb511db532a380715fbe40e0f2691399f59779c4","impliedFormat":99},{"version":"3c84fbf2b9676c3b985e56281412906d998acd2ea3b420679179746d2eb158ef","impliedFormat":99},{"version":"04498bab7aa04819b6f85e0a833cac9a90d2c225449e62a500e0d969a980a0f5","impliedFormat":99},{"version":"603c4205a9e69ac7eee80d9967196c5e1be4e5815507c07a6bc7442a7404a35d","impliedFormat":99},{"version":"953be5c29962c02b750c81742c6c8e3ec88f0dca93b490ae0c25d06ec09a336b","impliedFormat":99},{"version":"93c47ea71b8ac6043e85e16a7f5a12fdf28283e0c3e64818b24ef77339dde953","impliedFormat":99},{"version":"c1faba1a4367b207aa0c37ab286daf320200659b052887e5d017f1a19a1bc939","impliedFormat":99},{"version":"0a5c9fcea7d8dfde5b22c26763cf7c8822a99ba7774b87d4faa63fe165f371d3","impliedFormat":99},{"version":"acbbdccb0deb733cb3c04d97084b6d51b2f3f1257fd84005ab982b068d08e084","impliedFormat":99},{"version":"cd80c1f39858c9aaf24cb6cf109d90b16470b4c4af5b712b350e6e18b08c1d7e","impliedFormat":99},{"version":"938cfdec82f866cebaba7a0d8f7d41aec9cf34ba53628c444d4c0edd90123b39","impliedFormat":99},{"version":"ef0a3e581b336ec4522badc01575daa324a63e76b7317ceda2ef887a5168e2e2","impliedFormat":99},{"version":"5a3458dfcbd3d376e91a57ff64ae747c34f8ca1b503b1be1a84f490b56da1638","impliedFormat":99},{"version":"684fed66904651fd676b78ec044da251651f4dfaedb163df74b2280013d5cd5f","impliedFormat":99},{"version":"78156ec80b86cc8f8651968051ed8f9eb4b2f02559500365ee12c689c2febd9e","impliedFormat":99},{"version":"e463bccc0c9e8e19113e8f5684fa1e0d357fd66cbc7a495a3c4854442268ab0b","impliedFormat":99},{"version":"e8c0fce94bf97316262ce31a0946120e9dafdf2dfda1dc9a71b5e7b1c1337b53","impliedFormat":99},{"version":"a16ecd75e1660eebf91b31f0a6e06fbc1cba65a6b6afe313dab362bd1e5b95c1","impliedFormat":99},{"version":"a9e0a480c019837e2634ee2ac49d078e9548032f2f69e9f7c4465ce4e871155f","impliedFormat":99},{"version":"2e415d3626693f39e40f19ad427f6ad173dc4bde2a7c4ef6a655f30d052b61b0","impliedFormat":99},{"version":"07c33a8bf964265d8a37515f8cb754b82ecdb6b2ae1e2ce18b09c14b9d13b704","impliedFormat":99},{"version":"ec031aac2844e250f72acb0123642f6eb9483250ad7389a79b3757963a890504","impliedFormat":99},{"version":"c98069496e78eba403f51c1a7d582ae0e0f338e2d63b6417e561c9f56cbe88c6","impliedFormat":99},{"version":"7263d25edc36d45908af60cedfa14b898f558e17a7e967b2e1fed0082431461b","impliedFormat":99},{"version":"4b0e0173e248db6eab5b9402044f2f1a2d086e99d9d8af6c4a7f46f52cb6d787","impliedFormat":99},{"version":"dab4f30b9d72cb7596989c6cee8787309e45945f236d984db885ad611e59a259","impliedFormat":99},{"version":"a39d68209be7cdeb86ea872366f7c9f3578e657dde3eb1489012833c87028ff3","impliedFormat":99},{"version":"d86678c90586f9e0be0060703cbfce7ae586cae66eac159afc1b355e2dd2f163","impliedFormat":99},{"version":"c5e59270f3237a2bf344ac83ab3095f30c0ad8f3f07e41f266e662ce544520c5","impliedFormat":99},{"version":"71b85fe7dd2be824ca331849424a64b6417214047772f914db895ac812e06b6f","impliedFormat":99},{"version":"1bfb743c928bfe9fbf9ce88bdfaf8235edb1d3ea0b5ab446603d71c4ac87d802","impliedFormat":99},{"version":"b6e92e897f1bd0dab01bb0f64bd70956f574c7752f7bbdc7f107460a074b707d","impliedFormat":99},{"version":"843c0a76abaef274128b61eae8c21f04202905ab2f53b7f03486ea81aa1c0110","impliedFormat":99},{"version":"a3c33f57bb6ce04191478ea23a17293d382cddb7aee7b56bb5aed3ca49c7fa60","impliedFormat":99},{"version":"c9bfc8572556f746686beb2ac476f999356253c4b3fcba189327b25b30c47801","impliedFormat":99},{"version":"b8c88b5a41a26a1b3518415afadf5160e88fa4a4887978b071893a7c64b43014","impliedFormat":99},{"version":"6af214e64dbf7c599257f7f0851cb57b267c6eef97dbca04b1f2d204ac571fdb","impliedFormat":99},{"version":"7197ba787985c196aae100b99b32e5b271627c340a5883a52c83923f796ccce8","impliedFormat":99},{"version":"ac84c9b0786abb646dfce8480f6ebf83370a47a45d8bd7e2bc705f1069bc71b5","impliedFormat":99},{"version":"3e1850cc32b15cc8e9e7617ade862f50d4d4220ba423ed2542915649e84ca483","impliedFormat":99},{"version":"b95e18604b5d61baf87320e5bd776467df49d18a26e93b5ab18599ea37d4e7bc","impliedFormat":99},{"version":"98c33da6fd946601b36415c760e677c1faed100c361fee8c45565d8d6a00aca1","impliedFormat":99},{"version":"afabd37daf4bc1b2604caedd796ec9deb277d7f3f1927ecea80cc9eeda678518","impliedFormat":99},{"version":"0dfe325b190de07f861c28e1027730a186591562f3890a03ee53c66da76a2065","impliedFormat":99},{"version":"c59eee5e50312900effee1403fa07d9386e95dfaf20411a854729acdf6787629","impliedFormat":99},{"version":"8c8b35b1251978c2156c04db23ce6b842f48db71d39b42dd3c537dfa099e5ef9","impliedFormat":99},{"version":"ffe2657207e83f7b1a8ba2def29185ee81571f5e120176f981e544e589192958","impliedFormat":99},{"version":"9b571fa31a14b8e1e8e7412743e6000be66b7d350358938c1e42bcd18701c31f","impliedFormat":99},{"version":"9a14a6f51a079956ce0a7ee0826c7898825dea24be60e10802e18b46f142efc3","impliedFormat":99},{"version":"f3789c8262f633fd3f474f2f7e36537a29c65bb60a351efb2ddf47208909b962","impliedFormat":99},{"version":"f0410c617e9f6d332d7b860a1c3a679f7fa3e00e89699dfbc6b4f563b12b350c","impliedFormat":99},{"version":"7cbe98b14f6634dda9f63a1fbb217b7eee8053c03e28fdd2b9cd6dc27e0a819a","impliedFormat":99},{"version":"f54071d7f4208a2aea12ea153599608607f44f0d8b6d20a47da8f72e30a5dbfd","impliedFormat":99},{"version":"b6b726231178cb2695b8a83519d4fa50a03e800fa9b2dd75193a56bf6cb58a08","impliedFormat":99},{"version":"70a29119482d358ab4f28d28ee2dcd05d6cbf8e678068855d016e10a9256ec12","impliedFormat":1},{"version":"869ac759ae8f304536d609082732cb025a08dcc38237fe619caf3fcdd41dde6f","impliedFormat":1},{"version":"0ea900fe6565f9133e06bce92e3e9a4b5a69234e83d40b7df2e1752b8d2b5002","impliedFormat":1},{"version":"e5408f95ca9ac5997c0fea772d68b1bf390e16c2a8cad62858553409f2b12412","impliedFormat":1},{"version":"3c1332a48695617fc5c8a1aead8f09758c2e73018bd139882283fb5a5b8536a6","impliedFormat":1},{"version":"9260b03453970e98ce9b1ad851275acd9c7d213c26c7d86bae096e8e9db4e62b","impliedFormat":1},{"version":"083838d2f5fea0c28f02ce67087101f43bd6e8697c51fd48029261653095080c","impliedFormat":1},{"version":"969132719f0f5822e669f6da7bd58ea0eb47f7899c1db854f8f06379f753b365","impliedFormat":1},{"version":"94ca5d43ff6f9dc8b1812b0770b761392e6eac1948d99d2da443dc63c32b2ec1","impliedFormat":1},{"version":"2cbc88cf54c50e74ee5642c12217e6fd5415e1b35232d5666d53418bae210b3b","impliedFormat":1},{"version":"ccb226557417c606f8b1bba85d178f4bcea3f8ae67b0e86292709a634a1d389d","impliedFormat":1},{"version":"5ea98f44cc9de1fe05d037afe4813f3dcd3a8c5de43bdd7db24624a364fad8e6","impliedFormat":1},{"version":"5260a62a7d326565c7b42293ed427e4186b9d43d6f160f50e134a18385970d02","impliedFormat":1},{"version":"0b3fc2d2d41ad187962c43cb38117d0aee0d3d515c8a6750aaea467da76b42aa","impliedFormat":1},{"version":"ed219f328224100dad91505388453a8c24a97367d1bc13dcec82c72ab13012b7","impliedFormat":1},{"version":"6847b17c96eb44634daa112849db0c9ade344fe23e6ced190b7eeb862beca9f4","impliedFormat":1},{"version":"d479a5128f27f63b58d57a61e062bd68fa43b684271449a73a4d3e3666a599a7","impliedFormat":1},{"version":"6f308b141358ac799edc3e83e887441852205dc1348310d30b62c69438b93ca0","impliedFormat":1},{"version":"ef5813952c53ea286963133baf66787308c84eed7338d8c61613a8762167bf79","impliedFormat":99},{"version":"5ca32089fa4a40b1369f085635aadc4bf853bc4ea4dd49eac0779bf9f62423a3","impliedFormat":99},{"version":"5a46f69508e086a0f63d8fb15717422e9ea54d1813be3798c2220bbd9c8ef43c","impliedFormat":99},{"version":"21e29420bf5da1147cf6ebcd8cd85afa21dc3cbf04aee331a042ae6f94c1fa63","impliedFormat":99},{"version":"2532ef3d4f071e7d873ccc1c5766f71fc9007f4e768096b9b5bbe9924abc4a85","impliedFormat":99},{"version":"98f2ac6d25c8ed61bc7afa717b56e11c826fcae1d36c9999248dc85d37454947","impliedFormat":99},{"version":"9bab9e8d65ff83bceec753685598d1d522ca1735a2983eb8c881dc8389b6c008","impliedFormat":99},{"version":"0356b906e53157425c8beb4e5673c71fa80d88e1cd32759d4bd57e59698ef88f","impliedFormat":99},{"version":"0d3d2bf02e634ab678adc2916045058d136c4420bfe710c4557a160b67aed36a","impliedFormat":99},{"version":"edca1f05d978d3c2feae191a82e34710dd8fedb83a24c2fab15373be5be8a378","impliedFormat":99},{"version":"36ac04ebfefc210ab3c0148cbfc451f3434e9ca7048b19827a98247875923176","impliedFormat":99},{"version":"866c88db9c98b1497eb50a58cffa811f35d0aa7ae14361e07bab37f1966e7fba","impliedFormat":99},{"version":"d44ad42a40c4e84bcccc9a5db198f86afa6196d42e152cedbe09d513bff01fb5","impliedFormat":99},{"version":"4f20bc9c75b4515c25c3de1cc6c5391972991a25136b796f8c6601a809e80796","impliedFormat":99},{"version":"4f3b2abbe8fbd186f5d599de906c5afd2ec4328b13285dbbab5cddc3cf3b7373","impliedFormat":99},{"version":"2670ba717e7b90210f244401d5fe6f729cf879cb2938b6536c9c118371ef24a2","impliedFormat":99},{"version":"2e86a352fce1cf1df7be54b242d65c5efa3d66a445a60b2a0f7c33a60ed76eeb","impliedFormat":99},{"version":"b85a123b9f8fc782828d80ce35261e7a06f97affb3dde7cb158da6f7bbd17016","impliedFormat":99},{"version":"02e6668da999217b040e0d8d6e41daa96d7f59eda7bd9dc9156378584116b296","impliedFormat":99},{"version":"7c52a6d05a6e68269e63bc63fad6e869368a141ad23a20e2350c831dc499c5f2","impliedFormat":1},{"version":"217de2289fff8451ec63629b4a49eac597c68425b9bac8fceacc861dc7f33989","impliedFormat":99},{"version":"1a45026d00ce38b0e8deb084a105fe02bdcc32b7050195cc6351c2bb5b554c33","impliedFormat":99},{"version":"97bc3fd65336434e6330e0a9141807cbde8ba4045989809632f70ba93f70f6d3","impliedFormat":99},{"version":"d5bcc410b5ab12693f89a3c477f8dba724d881d87498adfa8ed292869b393c7e","impliedFormat":99},{"version":"09938ea562ff26325e6adccda5de5fc7403c28798335cc3d947eee9b6d5940b0","impliedFormat":99},{"version":"9f313a2d30d03a9954269fa7c7f5cca86ffe2ae6c1ea14741c3e2794aa805806","impliedFormat":99},{"version":"2c4945c48f529153672e10dc7b67f414ac7e7678bfcd5d6b79842ae28a330002","impliedFormat":99},{"version":"0e77db673ec8f065fca99ba005c8be50f615ae00c86f340696bf81cf65bce59e","impliedFormat":99},{"version":"ef83f22620073b4b9e666191044faad4f2b3a5b4bb87e8487b8200bcc75102df","impliedFormat":99},{"version":"99cec35e19fac2229b5c6ba317476fd2694f15a0e9a9d38f146c5f5edfe3ada3","impliedFormat":99},{"version":"730a7f1b457f1b6017fb7a000cb9c1ce9798c3f0f247f1cd751ea7d2aebdf1fe","impliedFormat":99},{"version":"98ab624c4bb847ffac693acecf770154c9763eeb7228e28b873aa2d2ec9eacc4","impliedFormat":99},{"version":"6d26c9ddd47ab86552f4d06e7bf051661237856cc0e5cf75d634853bbd562166","impliedFormat":99},{"version":"680d0952320aceb8891190e27707ac15753b603df67c4437ac7b6e9fa64d8744","impliedFormat":99},{"version":"0a202409812f7dd20d61ded10a6984b79882fe264c76364dc53dca951a28c737","impliedFormat":99},{"version":"06d5971c8b4a3bc00bf57f4332d3bfd92636dd4abda4fa0357c7c1dd496b1407","impliedFormat":99},{"version":"16bc3daf1ea7a6d3ce2407e25ca4ae2ba980c9f683f083c7ad6dedec22b64ecb","impliedFormat":99},{"version":"719f559f65d32823f1db11af17b4ee08fbb19d5acd4b6feb7b6610ccc83af179","impliedFormat":99},{"version":"32e457b81fe1c22b636600c5afaeaf9b53610174cf3bfd3ae6163b6b4251424f","impliedFormat":99},{"version":"0e974dacd2db2d61518aa2b96e39cda96fe082f297f1648ac92aa06d22f652e6","impliedFormat":99},{"version":"aa29bfc666c850f62d2d0b1bb1efd7a56074a96b309667e0de5e0f6c9a893957","impliedFormat":99},{"version":"218daa4b2d1f8f6d3c4f022acce45b10b65d04086a1ab74ea7a135814521627d","impliedFormat":99},{"version":"7f7b3faa89da29e2f52f73f7f2dd37b40c7d1e6dd8b820be1f9603bbd37080a0","impliedFormat":99},{"version":"19129eddecdecfc0dd69e7d02bf2adf525f390269f0667af7d9d14fd9933ad53","impliedFormat":99},{"version":"93f2f1257d136a1173e26beddd168ebaa5b50479fc9cdeafd3c3fdee92db670c","impliedFormat":99},{"version":"8a50a838343a8ee7318f5a4a33defa84d325cb035ff67d4cef3f04cc3dbd7c72","impliedFormat":99},{"version":"93f0399b89384f652cb73f597865e287b69db239dbb52c044a6844cb44a45b1b","impliedFormat":99},{"version":"cc545c484b2a0cd1a77e63252fa8bf49064ed577781cc7f273c8b499f231e9d7","impliedFormat":99},{"version":"9553bb2ddc97cadf255d6056236f335fb3d0b34cd3ff34ef7dc170d0004d8f05","impliedFormat":99},{"version":"522651983601a3d0a24eb8104086714d8e9a958810503275e45cd6ff263cf416","impliedFormat":99},{"version":"4a42853bde0c734cab8c5194afa6e78a6875090d310d472127c84110b8468870","impliedFormat":99},{"version":"ddec04cd05ab7614a2d51c3fbafa772b47cec4d7d6be80c1de8d37e4366692d1","impliedFormat":99},{"version":"a28d089808860737ef08c33c36db5e3db57ec5c5fd41acdbeb0f0d1d8f7a1519","impliedFormat":99},{"version":"8bf2591f190490dc2bd3425f53b56b941cf05d0d4e7c69beb67f473a19d1d87b","impliedFormat":99},{"version":"51b1dce48fa5bde70b49e5586d0bf7ba3371e172df994fd6401bba8b436fb852","impliedFormat":99},{"version":"09a2cc054e9070ff418f718c410e0065a56447a91e4770d619b58142b7ca7800","impliedFormat":99},{"version":"c0e40d24064092ec578bc6f7a61e8a20b14e450b69978017a94c1ce30c3d840b","impliedFormat":99},{"version":"aec5756720255bd7045409db869db09031ce31003dc654175f552d59b196313f","impliedFormat":99},{"version":"86892d5bcae518db21850a892aa682878f77bc6ff1fe096f5f706c91e547cde3","impliedFormat":99},{"version":"920fb154685f4ceae115152b5880295f0da66e60674d22852b18424d2828053a","impliedFormat":99},{"version":"d22c80b0d938d2a571dbe1707606222fb97bd1d4bbb46fe42e326bdee6545ca3","impliedFormat":99},{"version":"4053a0866f10634083ba91f2166420b1c29a2509b64803bd192f50baeb221265","impliedFormat":99},{"version":"71748069e3823c2c09f87fd64f2078d2ac74d80c19bb2d44e3d61e9d5342a23a","impliedFormat":99},{"version":"8b5762f3138b2894db972d51cb539f1ff2bf6b231129667cb89962d4711f9c70","impliedFormat":99},{"version":"ffa366f1f2b7ccf00d170f120836a57cc74e8548e3e72b41bd0cee00dab9dd2a","impliedFormat":99},{"version":"8c85e5dbbf569edf4c83e9e2e5cdf69d3e0644c676d22224899f38c0691a158a","impliedFormat":99},{"version":"aa94cdb0dbaac5ab520157f991bdcdc953c2fbb0436cb4ef6252bba926429a34","impliedFormat":99},{"version":"f440eb21669554667141024bf26145e5bf7de56eddf9eaeaff94310b911f4cf0","impliedFormat":99},{"version":"664ea2d1a61cbe738cf3a4cbe619f775868a97d06398cfe2867173356786988a","impliedFormat":99},{"version":"43246e78fc3edad75b54a70ca2298c86f78023d3d26513fa0a2f7dc8f41bccda","impliedFormat":99},{"version":"8ea7b3318983c9b2e3afa2eaf76d0f7c20c15a571c35567920f0f89848b09fec","impliedFormat":99},{"version":"060bc6464f23a8cfe35ff7b91a3ca4ad918b4f760a96e666453ea093b412a336","impliedFormat":99},{"version":"960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","impliedFormat":1},{"version":"2e7ebdc7d8af978c263890bbde991e88d6aa31cc29d46735c9c5f45f0a41243b","impliedFormat":1},{"version":"b57fd1c0a680d220e714b76d83eff51a08670f56efcc5d68abc82f5a2684f0c0","impliedFormat":1},{"version":"8cf121e98669f724256d06bebafec912b92bb042a06d4944f7fb27a56c545109","impliedFormat":1},{"version":"1084565c68b2aed5d6d5cea394799bd688afdf4dc99f4e3615957857c15bb231","impliedFormat":1},{"version":"057a6bc4d8d4ebc4817ad261915f898cf589b62194058913ed9eb4c25f14544f","impliedFormat":99},{"version":"ebaccf8f7b32b5e70b50a0f7f85fd1f3274109ff139dd672b151f05281d0fc99","impliedFormat":99},{"version":"90eb37365f7f73460de47970a44dbf4760990badf21b3223e8ce0207ed874903","impliedFormat":99},{"version":"3127a03a881f78c9145d7db821295531e8c577a8a0738847e70af2b6ad9778f3","impliedFormat":99},{"version":"892acb5e07ceaa0b42725ffd0625b833e77cd148f19117e510334bc815b0b3bd","impliedFormat":99},{"version":"1a35bd51a28387166ff9069b79c5b1b45d917efc33381368083a645c78aa5006","impliedFormat":99},{"version":"01805149ab10adad177b7e7d9e446af6c95e1f7f48db2800e050dcdf90ddfafe","impliedFormat":99},{"version":"57afd9ed037a00dd2715e6128c9f305f287c9b29d9c7f556e4daa074d35a90e5","impliedFormat":99},{"version":"221c6bb2c1152e37f7254d5a167f11ffd57f12c734e970ea15cdc59a97f2038e","impliedFormat":99},{"version":"34b2c4b951dc5a34e03fc0eb0181da3890bd7c720cf8296104aeba2111748826","impliedFormat":99},{"version":"5b6c6c22a039478fa3bc034d6d91d10c0e4d20af1829d986b78a85232cbe0d2f","impliedFormat":99},{"version":"ac67258368872db1e2d5a8fd53fa649fe31c5abe6f62786fd4bc6e6ad51ccb9d","impliedFormat":99},{"version":"3c6e09ab22d0aff0db5dd3b434ca44ed623154cfc5625c8739c5a4b380c25dfb","impliedFormat":99},{"version":"1397759591619d547cbcaea8d94cca1ed29e9f6f13beffaffe9f9307e5955861","impliedFormat":99},{"version":"77381f3914dde6135f903652e311c5bb8053dae28607f519a3716ead90429f85","impliedFormat":99},{"version":"03f966b8e3ca8d79f635c66a3217ebb184a9d6bd6ccb20270d35a7177b418889","impliedFormat":99},{"version":"788ec71568d441083686e3c32d5238de15aab63b59481f9b91174d8b4fb71100","impliedFormat":99},{"version":"976851b5b8d431a8c0767507e182658bb195c7d2fa94a2249f653628791e34b8","impliedFormat":99},{"version":"6d9b1602e3d14e16b782dec30666f2e42d287d6a5345fb7ae52111f9a1e1f92d","impliedFormat":99},{"version":"bb94a73f650bed26030748153efe4730ffc5578a5fae54c34e287956e729340d","impliedFormat":99},{"version":"07c9867e04c1628c47fde22389e075d615795c6b7c66ea90af6c281810699d0a","impliedFormat":99},{"version":"75f943dba7fb8f9472368465096d5f536ef3ef477376d83134978110362ce726","impliedFormat":99},{"version":"fda0aedb30d6f3671dd757a418a60b32699a0a9fe545f68b0be1aea21b1bbdab","impliedFormat":99},{"version":"23abf55ba0b7a59b9bfd17491675b818fc178c581686840a7aef27e45205383c","impliedFormat":99},{"version":"06d3015b06f1f22899905d74207c52e54c051f0466975156de9067ceb884ee47","impliedFormat":99},{"version":"badf4bd328dba83445227652bc1fc2a2d33eb30090e2dbf94d04844c48f3fe30","impliedFormat":99},{"version":"3ecd423076cd6107967e1b9187f38919490d790b258df54e8a6572a93ded5f96","impliedFormat":99},{"version":"3544ad39f2a89044a4d79b878d07a10b9380d39adc2aac3e480b75122ed4c570","impliedFormat":99},{"version":"c1c550ec07e285fd750ac5e3c8ac73e6ab28d775c1cbe29bb97820f169dba940","impliedFormat":99},{"version":"242258092f0ed6960f328b9d7a455c6559c7253c6b57b08883a2fb859c4cfdbb","impliedFormat":99},{"version":"d30e1f8098a34d3b71f1681959f993968fd6d16f40c653689705980ff6610e9e","impliedFormat":99},{"version":"848ac64950a137510b1f47d87cb0f1fe15c7eb06c8e1c2823ae63f413430653c","impliedFormat":99},{"version":"b31006747ab661a13d4bd6bd42715aa1fa8c2288d99a8d2bc4d1f8f81be0d7ed","impliedFormat":99},{"version":"b99e048d5bd6cf544e47f48d4b6893d62bae40217b4d477213e4043b11b0d1ce","impliedFormat":99},{"version":"31f800e9c3607ff0e370bd5a2b73501567dfcf03b7c7c9c9e8927c10a0467efd","impliedFormat":99},{"version":"75624353ffcf91bb2b7911b44075d19a7b9283670f2a78938c17e82e50d1c0f3","impliedFormat":99},{"version":"cad130d0060930b3e5108137b6860fb1eec34406d2710233512256e0b857a252","impliedFormat":99},{"version":"f54bb4e54d36037ae537835edc7d64caff0e33b34fac0a2c3e035a418258ab62","impliedFormat":99},{"version":"725e63c5518a0ca69dc44c12dc4cde29218e4bfd8088368ec67836f394cfc7a4","impliedFormat":99},{"version":"f69b380742957c3cb43b061ab3293ac7ba9d2af1771eba33ef2f814de2353140","impliedFormat":99},{"version":"a6c16d7e6060828143259e5ce1ad0228e3a34e2ff2cf35d2300adc78b6fcb130","impliedFormat":99},{"version":"de9ff289e55588add27a015cc023023660d6b8a21da1a64baa237d0f448b2e96","impliedFormat":99},{"version":"2e92b32bb0b1241e6df9676055172700214318acac3047979c4e03cd74286baf","impliedFormat":99},{"version":"2f7d6f80dd8dd07edff2652926a4b8eeaedafb51775bea7c889afbc795d40b4f","impliedFormat":99},{"version":"32a7a268524728eabdef3c3303a884504d020038f4f320105a96ab7e01430c71","impliedFormat":99},{"version":"586e33bd7f51d99245ff9513e6d603b8522379f29a3f0005176411e16ffeb42e","impliedFormat":99},{"version":"0528549bceed39a3d94c2bbefde7eab0778460dae5eef4ff71f04fcb8c8ec6f0","impliedFormat":99},{"version":"17d424fb44cd45655049d153d11a71cb236155abb50d605e1d91c3736799004b","impliedFormat":99},{"version":"715201e7e601dfdfa08c336f663ec650517e74840d7f988d876f841f0816d297","impliedFormat":99},{"version":"03ceff4db920e1831332a5a40c2eaf8056f221b9e3e672bc294ebc89537c9ff8","impliedFormat":99},{"version":"fef81c4e9f1dfb18873d09b8013567fdb97c0b0bbc3ee7a76c1f2a260af72c8b","impliedFormat":99},{"version":"feca50aa0695b84a0e01990e23e6ba7ab6bd81d50378f5089609b17e52ce97e4","impliedFormat":99},{"version":"377862d812238033feb16a3174f3eca5449b5786727572fc546cb6f1e973adef","impliedFormat":99},{"version":"e362bee8c7c56dad6c0f52b2d83316ed53c6aca843ccc4c1a88b7e55382e0b52","impliedFormat":99},{"version":"9ad91c508ec913a91b433a23c6221e74ccd438b96e001050a7a4cef41a2aef8d","impliedFormat":99},{"version":"eb7e19c5a59896a08776f58b63212ebf6b4c52c24cb6f0574c8ad2e462fc1277","impliedFormat":99},{"version":"c5676e6ff4ed5b0069a3dea05479e3a5abd938dedd4f5ca813f744728066fae8","impliedFormat":99},{"version":"eb874afa240860c59d2443e281d8a0437598f65aa84a3eaa9b5a63533a7e3d99","impliedFormat":99},{"version":"7944d3987fda085b3b5a9325ec52f998d0172d4138fcdcbbff60e34b562656cc","impliedFormat":99},{"version":"b944764dcffb404b05669dede7b7008e62b21a8f7c0cc1c021294490a99e555f","impliedFormat":99},{"version":"5e695fcebbb6a7ff65a5413649befc0510bb34c2e8ac4aa86a55daf77256e17a","impliedFormat":99},{"version":"503a8ac885749cc70864c0dfff99302888a41964e4a9fcaf83ab8d01eef3e458","impliedFormat":99},{"version":"015b9884efeea4f3ffbf092e1c1d6eb69ade71d7d79833468e9c18e36545e142","impliedFormat":99},{"version":"8637312eb67001e93cee29113dfcab695b3e12332a5f4d2fba22471d01978b3d","impliedFormat":99},{"version":"8dfeb90bd8f28f690c724ee3c00d2d32ad633884e159fcfb5ce4e82ee5589c5c","impliedFormat":99},{"version":"eb203bc5bcac0edfc18f2079033038917a42d99775d78566f9844810845aa49d","impliedFormat":99},{"version":"f5df5c1a71732a42fdf23542b344d7069a4e0a68adbec151982b93571442b068","impliedFormat":99},{"version":"b532dd989593d814d9bfcb3131b4331de4b35ade064427001676d1fff001ddd9","impliedFormat":99},{"version":"ca6970eff86a31fd8d9c132f80dbd1aa54d2dcd76a5b2a9108ae8c394bd7e7a1","impliedFormat":99},{"version":"3dad5f9d2442b6a1ee26187724f0a1ebdf9f89b5dff0fb3b8ba1eea11db6d7ba","impliedFormat":99},{"version":"5fca4b593907fc70848e8590d14dba0cf0410e6c061e39c177835e700ad089bf","impliedFormat":99},{"version":"9cd0fc5364ed46b35a958c51c45e4bc47dfaf32750d536b16faab83e885f6c1a","impliedFormat":99},{"version":"4876014affafb8fe03898c335c396ec29ff29ec8ae3b50ad5ea5ff98c9323c8d","impliedFormat":99},{"version":"255cfcfd791b6f0dfd44f17f8bf6d4dfd733b4a8fec6c15efed8013d794016c2","impliedFormat":99},{"version":"8c12c27dc0c277c184812b6605f122f971c2a7b0347e32e995c0b410d96d687f","impliedFormat":99},{"version":"d15d43b6b19a969858befe90f60009952298120dcaab7110cff78a388a50f7a0","impliedFormat":99},{"version":"a6c66a8706af12cecf4c42f17508d6a76b78388e849d8d59b7933a68fdd8487c","impliedFormat":99},{"version":"37b5ab7dcd9f3954013a12e1e873953d8be801cc3f97b4e5d9c4dc895d8fc4ac","impliedFormat":99},{"version":"1277bf682a6d071861d20d2df102d950dedc15e49a96f211b1a4d2c87c83a912","impliedFormat":99},{"version":"8cfe0fafb887fb38150159834ac34b3e91d883b250ba4e1154ce88ed057d9fe2","impliedFormat":99},{"version":"f16b5d560b0e248818ee7c18cba59cdf9e4efa20107be3722e8232aa4a05b61b","impliedFormat":99},{"version":"da5d2ad94cbe6ead090c5dabeb266eb81a958354e487442dfe8313beb467f99c","impliedFormat":99},{"version":"1656706a594b924adfc45a7e9088c63caafb5c2ba689fce0d757d1ee5f016b17","impliedFormat":99},{"version":"50ef2957360f31ed9f3aa91a1bb75d927890469424d1713bb2a5c3eb1aacc4b4","impliedFormat":99},{"version":"a050ee6f9c5833d18643f86c0618ffe791cc15e7dd758f21738e305749e9b002","impliedFormat":99},{"version":"d6d3c9c634567472794a7de284b8220174b57c8ac73b351398436c100bf43cc9","impliedFormat":99},{"version":"a3a561696b28f4e190b734060801f98f6b90cf445996871d2a98e96e4802948c","impliedFormat":99},{"version":"bcaf57053cdd116527f18f99ed70085db39bed9a251510fcd6903e99df6910d2","impliedFormat":99},{"version":"522ff1756b55a8c06ccc949b09b4cafe6fe922fbb1e2d780dc04e992673f6375","impliedFormat":99},{"version":"002a3431688069033aec66620393cd1b97a621e2e3f14742cf59eb472970e32e","impliedFormat":99},{"version":"04ea39e4b3e1d6e56bc1f0bd0c7b19aeb4d35b678937b3ad54c63d44b44900c9","impliedFormat":99},{"version":"7a54a284c5fb690b97ce715f0e7d861c3b150765751cb6bffd6c479c8d5b0313","impliedFormat":99},{"version":"68e90b09ebdc70f73bbf7a632837f153a215ec5fa44354061181d706a991a3b6","impliedFormat":99},{"version":"d7fbd0ea7793a151d792f6ad7d7c9a9ab7dbc69d970d0d0e57b408cba59ab91c","impliedFormat":99},{"version":"c59df2ff58c6adc907ed95ae1e0ddc2f6a123ca1189926dbafa3fae1fe8f40b5","impliedFormat":99},{"version":"b9e75acf8c49e675de4d1f0ddc5f9ccead5e31ce10814bc6c3e159f5aedac1f1","impliedFormat":99},{"version":"717c55229509a89e25c3c3a83a1de364e4db51be5002a738800f76f0ac168868","impliedFormat":99},{"version":"72526a38ff02f77db02a437640df162dd7b542026e0cd0c30b80b4847b154be0","impliedFormat":99},{"version":"74645fa7216f163be6da9092526d7ab1aa4c2840830b5e4bfc901fa592853650","impliedFormat":99},{"version":"ec4ec119f797f71ee6d8110930dad93c689a1683484171621a2702b873d8af1f","impliedFormat":99},{"version":"194560fdeec7316cd47bc201df705df31023382e09a022e780abae975795045b","impliedFormat":99},{"version":"afa28e0c1b26066a331fa400dde21e065ff2275238f41a66d931f56804326b2e","impliedFormat":99},{"version":"09c6639e5622dc1693276f4c7684b0f0f4992d5c4e5c0769dd576e95c50635f7","impliedFormat":99},{"version":"0af521e519e48440bd69f5683fd26542d478c8110c1bde2815a732ea790d5448","impliedFormat":99},{"version":"53c73e3bcfdd414d1f43d62801c7bc03c491c7b13a9f8e7decd2a73afff8a10f","impliedFormat":99},{"version":"49062a955da1d4880135873f5c08988c920429c3785349ed1b4e112b9269d8f7","impliedFormat":99},{"version":"334bc494ebf7f62684a30a916455dc63c6895784a74b07b835d28d0297785496","impliedFormat":99},{"version":"1c671fa97ad69902c110c7890527f5720a785a2e0b68efcb77c16f37d6274d67","impliedFormat":99},{"version":"907467198cc07e6eac62f7eb2bcc7afc31e3ee433ae60000eca62213de971e6d","impliedFormat":99},{"version":"4263e62ba6e779cd26752ab3fcfb42249d009efcf110bf7a69412c1f33582e22","impliedFormat":99},{"version":"fff135e7d6bc235d1968beb6e5d061e243ae19a723a9e2d5b79052eb63318590","impliedFormat":99},{"version":"a723cf11acbb7f1d9b620b90a5cdc50f60f9ac8c2ec7bb6f69751729093180b6","impliedFormat":99},{"version":"019bfea6e0ea6051fe1d51f3d0671fccd704731d54ab218d9a8a42afcde54a41","impliedFormat":99},{"version":"3f9f8c7286eb740abc5ab238fe81d3c4fd5fcde423a120cf55fefd480d694743","impliedFormat":99},{"version":"3f854a9e492f56ef132efbc1bdc155896b97618a2c15eb06248bd88478303be2","impliedFormat":99},{"version":"984d0fd8112e3cdde9bc9cf0875f69676cd5a150caabb228cf067741e1241add","impliedFormat":99},{"version":"401914ef3c9067ec980a75be5e0abbed382a42a279d91cf040e6ec9f455e218b","impliedFormat":99},{"version":"6b95bc34efdbe1082609ab0a1522f30f4b79a906e479af1295d4aba7fa887f58","impliedFormat":99},{"version":"c81e7a416c0e77487b511c0f345797d6323214968009b52dc8c2aa5c9faf7210","impliedFormat":99},{"version":"48f5798a88443d6fbcf24be78dd95bcfd0d173b9639bf3772ea499773adf472a","impliedFormat":99},{"version":"0d8ab497f53d6142282bacf32f1538fc607e267e058074286528126fd1c2db6c","impliedFormat":99},{"version":"5b81a34a60401dac6213a45e2bbde3e57060ff06f847cb005337816ff2015189","impliedFormat":99},{"version":"0b7afe6e094ac7b826a680d4a3838166c438d0d9b0a8867766e137bb2eb24a24","impliedFormat":99},{"version":"8ae43e29b6a1b72cec9bd415afd180de9a9d83423c7d7c8f4d61e090f85ad572","impliedFormat":99},{"version":"f8449256f5c820606e9da9e5dcffd574d48981b8b6520c234b15f8a6bc3dfa70","impliedFormat":99},{"version":"c5aa8fd497a5ce7145a9ab4327fa9a86e8cf04abd71957c9b702e118546b72db","impliedFormat":99},{"version":"3de403593b664a953f7b10950653129a6b70e97fbdbcc79ad8292cebd6602274","impliedFormat":99},{"version":"35c011c44b69e88a5798bb61158c26e35ce74df571c095c029b29d182924c2f8","impliedFormat":99},{"version":"fc41464bb043aad346f6c4a9761ca347ca90ee6912d53b38b8fea621626be77e","impliedFormat":99},{"version":"c9bf49c427e33b552a03b20084624635957dc8468eca2a3d461f0582a011c5b8","impliedFormat":99},{"version":"f4d2c3633596eb54d2bb659bc1c60da3d4157c74c6b6e19f8d27965da2b46bf4","impliedFormat":99},{"version":"cf0c6c6b7ae29e49b64116ac726435fa589a9f4181dcf0fa95e5c06ca07a1954","impliedFormat":99},{"version":"53b2c7304bea0d35da3f158365ecd0794a49cbd8882ff2f7122f99a737854993","impliedFormat":99},{"version":"8ba0c3329dd73b8da0be21357da0dcf8c59e56df9378548e2baa7c05ddd1ee7b","impliedFormat":99},{"version":"6f40ad7380099493513c35be209c0b10a531c4e3bf3acf27d5400d030c59971a","impliedFormat":99},{"version":"d2f0d9d92558f5e5406a561675e6437524bee447f554a8ba6f4dbdd627d0b2e5","impliedFormat":99},{"version":"1a6f8bdae8370c07682bd8dbffb161c2430ea51bd25f0384c66919b4da006ff2","impliedFormat":99},{"version":"ef74f47c63b7a4d7a022c1f569f3ca9c14e3277e0385b037587665d69b96be7d","impliedFormat":99},{"version":"4198bc4505f06500bd9b7db780972b9a301cc946896287e0c9da7d140849ea46","impliedFormat":99},{"version":"990241e0a1ce99f55d209b7957d8ad37ef44aadb98a65d771ace925343a53d27","impliedFormat":99},{"version":"b4b440d99a10cbfd6272aac5bfd9aa9622b9c1f9c43f7d5cf79cb43825614958","impliedFormat":99},{"version":"741587fb86739542002fd67fed070c07e34dbfd9bbfde95ca955144b861d00f3","impliedFormat":99},{"version":"85f6fec457861b1cd7267dce1155878bd33d26f4076db4f399376b74ff492410","impliedFormat":99},{"version":"6989d42d669be40f6591a8fdb8e705df5fec8968a38206f5a0047f47c230d1b2","impliedFormat":99},{"version":"c4dc3d6e7fc6a9f92964a638d033397f68eba61f3c250405a93449081b626034","impliedFormat":99},{"version":"a534aae35e31df8c5dfae7d984612adca9d5641b59b49ead295066dee45b4dfe","impliedFormat":99},{"version":"5bde73a7726033c08aa3a1578dac8f1734dddd9a630f9b985d67365049abfdb1","impliedFormat":99},{"version":"d0b1cdaa14a443a383bfe147dc579b4a836b73f8dfe2b3289e58e871fcad0bf8","impliedFormat":99},{"version":"2546d813c0fcb88951aeeb0c59d42fcc188ca463a6b64045cc091cbe01737664","impliedFormat":99},{"version":"fa36613a2eca835645eda5b9d42edcd51ee8caf8b1b9925fb616c3ca9ca2f1eb","impliedFormat":99},{"version":"4e233c71ce329908730909620ef85af24b60fe520d85d0ab6cd0c8fdb209166a","impliedFormat":99},{"version":"aad34743471540dc34740144e1dccc42c9b4a1522a8f60ea6f8bece95f226aa5","impliedFormat":99},{"version":"9286fbfc02a92a99210da22629d15ace72a71714c3204bb1f21d1647340b6a1f","impliedFormat":99},{"version":"3f6ff7fa12f7ae9e51fb3335767a23feb2042397ff6dd78836ab8380ce06b760","impliedFormat":99},{"version":"9ff80c1ff411da4263c981e187df80b25032f1ac386c137fc4e39252d69819c3","impliedFormat":99},{"version":"05e7d52d0f13fc255dae1568da631c3b31ae36097bf4fa7fafa5d4fc0a902d2f","impliedFormat":99},{"version":"9de7ba484e55a135129114a55baf6401450d4dcdf6072a4026e96a6c491c0df1","impliedFormat":99},{"version":"be8c3c8a9be63d5d07ab0916d6a4636b47da24e8f09fa2bd23be05c1b6426598","impliedFormat":99},{"version":"035cdb01dc859990cc531611dd6c7bb0144f5c02a911b06e7dfbf3232ee0bc73","impliedFormat":99},{"version":"1a95f139da85d7daf0a3e6de7aaf243cad13900f61ed2764a9bbdf64d64ac8ce","impliedFormat":99},{"version":"cce8976bec1dfccb5e48ed58df797a393e3c894397b40986884a173e3ef8fb51","impliedFormat":99},{"version":"d1dfa8127d21751115a0a6ae3e0e0e41f70eabf45e23787ba2d327a14669e518","impliedFormat":99},{"version":"ef87c5b95fbe2151e96c89e6c80ad7dcfa895a7001ea9c0cc258eca3eb84ae49","impliedFormat":99},{"version":"2433129fe6d3d67b8268ba54abd4ab1c7c2f7a32444d4c6a68a9a10be06cc617","impliedFormat":99},{"version":"e969d9b9fd9ca2e023ef701519ccd75e207dd52b92f9af22e15c04fea8e719c4","impliedFormat":99},{"version":"22f273ce016495159b7c0ddba1521435c4ae8f05329efe96fcec598508d5a682","impliedFormat":99},{"version":"dd429b03ce8ba91ab6f204d6c2c7ca00fb3cff07b956da1ac8c60360da28d866","impliedFormat":99},{"version":"b7a63ff548e03c363de65f81f7c31bf98f77b73f13054ece8ee2bc1c1ed9cf6b","impliedFormat":99},{"version":"10122199ed1aab7af1a1b1e1836a79d1401f4700bbd5b85aa1a52cc7d5e200d3","impliedFormat":99},{"version":"5f49779e856a15a93dbc55628c6dd22787c4729a6ecd4a3ef0226ce3efa54d6a","impliedFormat":99},{"version":"bb836f3e3bb9cff93ea6cd392b5fcb88aae3d664d7c09171e6ffacc2f0a44759","impliedFormat":99},{"version":"663757479ca123153d940314df55e939999c56e28b2b52f6c7c8a6f00b59a78e","impliedFormat":99},{"version":"02d5344b11cf703ffd698f1874f5298d855ae6a91c3a2d42c3d95b70c2f4e6f7","impliedFormat":99},{"version":"1db8be2061f286903f62930c719d46369a876340c2571ddc2cfa8b65e462001e","impliedFormat":99},{"version":"d6f8d517ec72c416556f8fae1280d2dc202cdf7bf00621827360bed778a8c19b","impliedFormat":99},{"version":"84c6f7ed4db89f3c5b300c81430eb633116492ca46951c6bb5dd45808c71810c","impliedFormat":99},{"version":"3801017d48638edbf32c445143b804711d2bc1a2ef51f0dceb25fe8a5b591bd5","impliedFormat":99},{"version":"2d5537810389a683449de9b0896ca4b130b93a339d8d72836649f08cebd17f1d","impliedFormat":99},{"version":"900fd868eedf9974863b2cc58d7aee9e7730fed6c7787329c66f02ead215f307","impliedFormat":99},{"version":"558d19d1b6743e92b564bfbf3edf3501ed8bdb2d090181b4fe5003b884694c38","impliedFormat":99},{"version":"2dbd8d1b3b34d8ba5f3c9fb13253d08f3b07fc1710138824011f858907e1670c","impliedFormat":99},{"version":"9ac492280c55460036216dacf01dbe5148e3965aa4372b5fdc3edab7f4c49203","impliedFormat":99},{"version":"657b6b8b5d76a9fc986b9330495f3b4fbb9c7b34c271e53deda88eaa8973cfb2","impliedFormat":99},{"version":"17a97fa195741417d6a71aee84fcedf034cbcaa861a61da46fb6e721ce7ae2e0","impliedFormat":99},{"version":"b2051cf12a3afba968a368f700d1b845824955d478807229b25560ceb55abfdc","impliedFormat":99},{"version":"ee2f8c4790ef349e7777b3faaf599823e82e3e59a4bfc2c67c3e1775d3bee50c","impliedFormat":99},{"version":"8effb19bf88f12addeb45df0c5d05e0f6464612d3d6b34f1da8ca8c2c1c5cc12","impliedFormat":99},{"version":"56aaa79117a6b4b58caac3c352370dfac66540c34356b2a0862841c3f6d30db7","impliedFormat":99},{"version":"bec1c0e444418bd6b168ffb15b76b9441c761bb2d243c089fa6ea378b2cc72ef","impliedFormat":99},{"version":"f6655a2e1d991e617b3695cb250f9a997ad09620c5399cb8de06fd685d3643d3","impliedFormat":99},{"version":"5c7d1b8744a3c63cb23db59258fcee28ef638307c6862f51572805162a851b51","impliedFormat":99},{"version":"448a88c8e7eda3d8999b7022cfe4dbd1cf586e71e21e999bdbbcdd436ac58b8d","impliedFormat":99},{"version":"7fcabc4baa02f69019cbf2b48048fd9454a8b7c0c83c776ed9d92bf53df14d6a","impliedFormat":99},{"version":"ceec50190a9d3d13a8500a8e1d1b6f8f5a3f6be45dc8e9f983530d84dbd69cd7","impliedFormat":99},{"version":"42b9d795a3152c6bb0f641da28297b91d5424cdbe936952ad18c20f501bed1f0","impliedFormat":99},{"version":"37488fdc6ffd2d40cb049ddab8ba198c8e887dfe77510c6c83efb6de34e2fe68","impliedFormat":99},{"version":"af582471a53417da3ef5d56ae772d08eaee896dba489a77fb76428f2c0116ea2","impliedFormat":99},{"version":"661b89ea587a659596859486a0123a631c34b5057993284d60ef9b87c015797f","impliedFormat":99},{"version":"0e6f5d456e1b73ad322c4b0bdcf10b0f9a8a0b75414d5b9e00d9f561a43874df","impliedFormat":99},{"version":"8cabe28809e715b1e2633c3e849053c2b9e2449d311d2494df93baeffe7e713f","impliedFormat":99},{"version":"e72931e0fd3c01a2153527880a56b53a2fbbe198421809dc2a7c3a93ea74997f","impliedFormat":99},{"version":"b70eb8f22c1217715e2c34d1a83a75d5fa024c32b1aef4b7c4db3f98645cb395","impliedFormat":99},{"version":"fc86007838a8c03afea1015f1cc20a7aa55fab268c6f6314943289e3e85425cc","impliedFormat":99},{"version":"3a5b6c07dd61016f03d7d4b9b8714fc10e0ecfb2f358783449a6385b930409fd","impliedFormat":99},{"version":"0b70dc15cd46f0b2f0d705744aa3dc4798b87f5113589ca5e1a7053af8edc756","impliedFormat":99},{"version":"02eb91b64a184428de52c5a303bcbe0e7de5a878a74692ca1b777ddf336ca361","impliedFormat":99},{"version":"ae1fc7ed3c72167972acd4f771883d14dd13d635c3b585606218ea4f9f5662c9","impliedFormat":99},{"version":"f0e4cb01dc2ffb699d0d7e4f0f14208d1ba6e5cbc12a83afab2553a8729661fe","impliedFormat":99},{"version":"3608e6f20899db55d817ab7a76390aea19b8e3bf7cb4becb5f3b70b833db038f","impliedFormat":99},{"version":"434af61f55bf25916aba2d8abcec57ceeef35571daff914fe7b54aba771312c1","impliedFormat":99},{"version":"3f31fbb79cd50033ef517ce3296f511ba8654758609015026227740f4892e187","impliedFormat":99},{"version":"38977f661ec68bcec7c0087960fc6fb6d5addb7cd48da0e19d734b5f09e799b3","impliedFormat":99},{"version":"590a91fe582b89a9bad5b5b4d1a6d9747c5287f6e1b23a2a57d1aa60c1a23180","impliedFormat":99},{"version":"ef2c251603129991a413e295b5bce5d0ada22726bba363db26e563f9162d491f","impliedFormat":99},{"version":"42aa868d84ffa9aac2f5d08dbdfe6cb79436b96d227b836bd655159bbfddba5d","impliedFormat":99},{"version":"157a1f916813abf3e1faadae34279ee65110d7dc8146711240196ce0e46cbcec","impliedFormat":99},{"version":"7d0101529b77bd85692b2a831308a7534a478c60b95a1798c07e14d3a14e4b21","impliedFormat":99},{"version":"4a0d53890ed17ea582794de930248bb3a5a16547b9659f46664149a853f8b1ac","impliedFormat":99},{"version":"19ea1b64d140b3fb5d1b699b09f1aaa60ebf32014f6dee279b96d92ca662d871","impliedFormat":99},{"version":"b2d2ab3ab26f446cad62cc23ded652641a44deb9d19280550c74cc81c7cd4263","impliedFormat":99},{"version":"d3bb594337c7b16cd0aa2f54710afd9c5352f24d0ac83bf02a1efce7e731a0b4","impliedFormat":99},{"version":"9afee2d40467087a6aed46b5fef0548c2a1351d533f2aafc68cb47694a81f7c2","impliedFormat":99},{"version":"372c39fd10f96d006497fc2bf9d56d0a602119244ed46d087a2bd5bb037821d9","impliedFormat":99},{"version":"86aab19392ce35fbf19b7beb7968772b78380fb3962b020eab778e2060b68087","impliedFormat":99},{"version":"d9e8f082189fbcd24d1c13275aaffebaf48c9222d20654d61ad7082f6f2df101","impliedFormat":99},{"version":"8f2350543fe05a8d34952c3dae8f9781594751f5ef130384446a729e3dac7bff","impliedFormat":99},{"version":"cc27791842a8f54b24e8c3c631fe842f96421d257d0f7b636ba416f8ea454bc5","impliedFormat":99},{"version":"87622b9b115ff00fdcb1ad2e5c0f6064249dd577cd94140d2429aed76218195d","impliedFormat":99},{"version":"987a12239021ad858813841f22475f2a225d3333a2dfd9beb32222c9e2dc2505","impliedFormat":99},{"version":"ed3f6a7fbdb2e7d6bc2636b3f56c08ed34d2ba80ad3c4d30f03a8b12298ba100","impliedFormat":99},{"version":"f2b4e9551b694795727201a46b5b0d09383c6fc88966d3472aec3df1dab18074","impliedFormat":99},{"version":"ae868f126890affa478b4628684db9c084b00eaea3ac884ece0184e8f9b4041c","impliedFormat":99},{"version":"0aa2fc9a3936aaed64b486dc8efcbd6c62e0afad81ffd72be408cb97867c0b16","impliedFormat":99},{"version":"e0842052caa52cb6702d9dc7d3f90c799a6123e8509bb79465c14957e990b204","impliedFormat":99},{"version":"1caad517833757199ab3830587bca968433d3e1e485c518989e10a3b77f85b24","impliedFormat":99},{"version":"9087d62992fb955a421851106b0e8c815f3e24120b95c56e8373d384e273e0e5","impliedFormat":99},{"version":"7a5bcb70a2b1b72d52636ef8aed8b8c8a374067367667fcb8517e492f37329c3","impliedFormat":99},{"version":"ebdb84450ad6efa9a70dbb78f4c0f9a16888bd798eefc37f6cd04d2572206242","impliedFormat":99},{"version":"f93d43b0832bc9f5e6a3ec0358bfee8dc2f44f748278f3e6a073220844e78c78","impliedFormat":99},{"version":"29d83f8e43a87dc636d0e5764a89d45129c9a0f0f8abfa0e3a58e9a141cb66d8","impliedFormat":99},{"version":"30d463e7ce174f7a529d3a832711f424c984cf517c08f59dbcd2ccd5b16bb6ea","impliedFormat":99},{"version":"6767ab11a8cda8c0ac2ac7e2252bf7be2299410752049237a48d93c62a4a7195","impliedFormat":99},{"version":"21394e045094d440e762a0e3f8bf9b8b58ea9daa89e399d108ea2d6a3d80fb96","impliedFormat":99},{"version":"256cde5dd5a4f0ed7516ef587efd4bef006317e8daffc232974fac0efe47ecee","impliedFormat":99},{"version":"53c4229dc8cd2aa22a2c58537514818d429b6972555241f821cd7e1701c42d38","impliedFormat":99},{"version":"0fcffee63e98cf059b427289b97d6be2e49eafc9d3d19d8f527aefb0f28f047a","impliedFormat":99},{"version":"6745a82126e61c30cb5a8db54d35886159c53ac5a28f5a61d31fee282598f7c2","impliedFormat":99},{"version":"be768a2f53e62d96a980aa56e02861472f7e974862730dd12fa26cb4bc50e348","impliedFormat":99},{"version":"a33c25c4c281b8cd1967ce9f2d2ad451edce03a2254102365f3cdfbcf1b00d3f","impliedFormat":99},{"version":"1bc5d66f065f14c9c6290f6fe09492e60d30901737b68a1e344f2d61ed001e96","impliedFormat":99},{"version":"bf531fe3337bd1315f2dae65b2607363d05e5a862ea50a547702a4d950201094","impliedFormat":99},{"version":"fe896af05f06c4c6257fdc8e8cad8a278c90d4b38ff6b70efc5b5e3ecc880bb4","impliedFormat":99},{"version":"362db1b55e2006226b53ac79a8ddd5a12976bdd4531badad0ddff27b49817de2","impliedFormat":99},{"version":"c3ff132ac57ce2706280f9e145befc0e7ee6060caebb32ff3022e9c154575876","impliedFormat":99},{"version":"8c1e7fe0b90aeba2f3eab5fe6e5fd66e70ddb6cd998a1eda1c5cfdd6336ba94c","impliedFormat":99},{"version":"acf830a1733f75248a8fc2d3dcaff39c6e76f9ddf27c20ba09a584da138f46b9","impliedFormat":99},{"version":"89af4f75c1f204d678637102d01382e0b8b167e0b213a42a6fab2a64826e815d","impliedFormat":99},{"version":"cd8dd8ebf533d787130cd5371f8e7fc4403f94cdb2e0dc2e5acc4ae681091057","impliedFormat":99},{"version":"50d2f4d075114bd15852e0ae28244f897e8fb7109fdb4bb980cd0d3071ffa87e","impliedFormat":99},{"version":"fb29fb3a2e3247167f4e699f19b47cbbe02e3137794c48d08ef6140c13a82a13","impliedFormat":99},{"version":"5a211830f651041b3d3873533d8bd4afa01263306da8ca2fdc1e0e1d593caf93","impliedFormat":99},{"version":"00287f47a7a9ab63f5e218d1db19923519e6761a3ae2ba9222d2c38a21a4bb35","impliedFormat":99},{"version":"17f1776b27b2c29bebba486721f5d9319dd9b651b6e3be83de3fa216085e948e","impliedFormat":99},{"version":"21e8114b92a2d11e1f58e2be0a9c59e6d7a9d2fae4bcbed1353bfdea98043fae","impliedFormat":99},{"version":"7468715152819058c1a2a27ea8688a7ae51f9800f1273e0815a60b53a0c023ac","impliedFormat":99},{"version":"fcaaf555e60e7e4ae4b60408c7bb84c0ef61d656a4315bcb6589cae1c5ef7741","impliedFormat":99},{"version":"9192851be0a7d39b5599d1c5a22cd17343c9dac43cbcfed922809d311423c422","impliedFormat":99},{"version":"9ddf47eb87c7613d5a5bbb577fe6ce87dd34f2c7681dede0ab9fa1d6bcaa7242","impliedFormat":99},{"version":"57b00b8088284b7178fda7be8f5987d5edcdddfa10bd2f777c9910bbb7ac7e97","impliedFormat":99},{"version":"0244571048467de1c966215b7506b1a65f19594084b159e675f7d03bb4da4ea0","impliedFormat":99},{"version":"cf03afdf519792b0f8bcc22c984a5521c5d192c3f46b1caee9d645dc02cc076c","impliedFormat":99},{"version":"8ef260aeed7f688a8c40f0a3480e8e4ff4c1406b0afc44544a8d0087c9f80cd2","impliedFormat":99},{"version":"121a70198c504bdf22f901de9f5c4b2264e1c35ba4979c5126d8dbf91c08b011","impliedFormat":99},{"version":"500265f07d0faf96f8b04ee1c9e0a77a8e5e1ae07b075adf58105c05db2687ac","impliedFormat":99},{"version":"5eafb802b8483ae0fda85920af0802e633178c701f631ad85db80156054a3840","impliedFormat":99},{"version":"30c0d02586f80d0df6dde2b95d7f1769e1590e92bd13e4b798bdd840ae005797","impliedFormat":99},{"version":"41edc9dcb80ada08b64177bd4405650842e2e17f86f2ba905e5a7395b660c1f6","impliedFormat":99},{"version":"282c37fb44ceeb5bcfcf070f383314a1bc33b1c1f089f682f53e79b0bd90ce7b","impliedFormat":99},{"version":"87858dcdd2e39eb46633a5db6666f202258d0d0c2040a90e775010d92776c5c3","impliedFormat":99},{"version":"57d5f16d751884e0a2e97ef772d1a24f256dd1b82b35397041d91baa85e4bd93","impliedFormat":99},{"version":"d5851073cd5047ff38938d853a37c2d709d68a74017bd4df1010187f44541fa2","impliedFormat":99},{"version":"a6c6485b7c9ac65bb8147e2d6a43a49458edf99a3607fbb75c67f0a08f230fb2","impliedFormat":99},{"version":"979fa80f9aa7e1f015e0a019a28baed03f69924db612889d1899b62b4439f8b7","impliedFormat":99},{"version":"67cfa42620d86ad53914cfec05a9d8f90e43fb28fef9323275d25f6dde1d7790","impliedFormat":99},{"version":"f7f586cb700449ac509cc542095a01fa33d21eee19201ef3793abdc393a70ee7","impliedFormat":99},{"version":"08b4120029f17693ae31a695121c2a37fa1b7f98769aeaf4582ec7a7b25bb352","impliedFormat":99},{"version":"78138a90e0027ff8005665cb6375b94140b8050a120e6ff9a61515d439a15a62","impliedFormat":99},{"version":"acf24ed1b0a60dad01e526804173fa7593491db7826bd5f39a5af335786164be","impliedFormat":99},{"version":"7a1f228faa5fa5b29b96c1ad04293e310a20c22ec1b83b5adbd1ee306625ddb1","impliedFormat":99},{"version":"22d5c827159162dd95e53a3a67e0d84b61f08d549589ce83dc650ba2446e4055","impliedFormat":99},{"version":"7719c09b8acc28e6283481e3907a990b7f1e730f830ace38f57eb7cce753717e","impliedFormat":99},{"version":"54ee6720ce787300bf050b24224405696295d9e2f3f42da366a0b62758835451","impliedFormat":99},{"version":"8db5e7a47d3796b48afb5417f16e3c44c9784dffe6b0daca679e3faab69fbc28","impliedFormat":99},{"version":"2fd73846e6a7602ecbcfba95e7ae8c535340bdd49121ec0da552720bd8273e65","impliedFormat":99},{"version":"91a5549884a38ea6510c6b2b2bc3908d7aaa9d93982423635c6d70173002cbe1","impliedFormat":99},{"version":"94fde0116233179a8b9aff97f1c94a774abd836e257d5f43b77a52be83e47fb5","impliedFormat":99},{"version":"0953aa9d052d4e83a8fb3b88c304c420d44ee7e20d1b341ce91e214d06e96fc3","impliedFormat":99},{"version":"80dd0657da599ac1840dd2bb6787c7742bcb7efb1a7e95890a822dbb01ae9471","impliedFormat":99},{"version":"697929cc709ce1a14bfa22637796c90de5a7deac1afc32d703aed10cd148230b","impliedFormat":99},{"version":"a258c163f1cd5155ffdf6bf9334260cad50b42773f79e47c8b67f665f541d580","impliedFormat":99},{"version":"c2bff621d611a1cc7e0cbf6f8bb2e5fd99930b159d80bfc721bd6e2f3ac1af50","impliedFormat":99},{"version":"56e9483c87ffd60f3811152a21d9704384c6539b13fef717ddbf99c5d944c330","impliedFormat":99},{"version":"97cb603e7ca4203c5cf2402a88dc566e2fa1e2206d97016072066387ecf7087a","impliedFormat":99},{"version":"32f816bc6d64a56503bb2398846ba92f6e058d93a57ca8dba27790b8214fc88c","impliedFormat":99},{"version":"99c9b803342e29e16248f6d03fccbc88f202c57852c4ef2f8f37407965cfbb6a","impliedFormat":99},{"version":"9057244241137ab9d0f8e7b2419d26d6b5794c063ff2a390047ab733e17a84f6","impliedFormat":99},{"version":"8c9a39e52635167098f9a8f44fd15c2c93af92caac24dfabeb62975f11518aff","impliedFormat":99},{"version":"497306690b137169dba6d70af7b3db655ea7b115fa565f8a2d1d80675ddf00a8","impliedFormat":99},{"version":"0c46d7c267ba59b302512de340f4c92b97764eafd086c5b13477fedfa953385d","impliedFormat":99},{"version":"0f2e941fbb7fa25b52f407745686b2e905ec03225af1de5285dc8113cf9f38cc","impliedFormat":99},{"version":"a12f3295a92f365c2919a9b128984c35486282b7de8f3ff81fc360b8f137aaa5","impliedFormat":99},{"version":"38b3fcade0a4b61a87c8b6689f8434112bede7832ba491511aa83f519036d7c4","impliedFormat":99},{"version":"c326bb72f933aa18f366a29a27dfd4193749c4c077b0464bb31054134a84aa8b","impliedFormat":99},{"version":"0222992caad46191f90e9a5987e0c92ca95c5bb631f8f953e4c92b700411321e","impliedFormat":99},{"version":"fbb281974839d3fcc1fc0eb70b71f68688d9d2e3c719f7956f02ada2d03b0e2a","impliedFormat":99},{"version":"488bcf6a8b6a65669199f64f11c75102a11518759dc23f7d0bcb3257e830eab7","impliedFormat":99},{"version":"df38839fca3589013d3cd76564185ab4d19ce938593a27602cfd3e50f42424ab","impliedFormat":99},{"version":"c44f3421179cfb7ac73a38b1b9e1d5d229228327e0ede465d9d9a21c5039203d","impliedFormat":99},{"version":"b4d6ec77adcdc6728c52f2739954c7f5ae1c9598c5f0a6b8e3ae73989590e9d5","impliedFormat":99},{"version":"05718aee3a6d1193f2a4b1772a3ef60f1ebc0228a293b94c84a602fbec0ec5e0","impliedFormat":99},{"version":"b62e58a89eb8b818d7422360e5ef6f69038be1cdac57ae5fabe6f1060aa880dd","impliedFormat":99},{"version":"eb4c841c0bf793dd919904718220df9623006e90628e7e332b708239a5cd3c42","impliedFormat":99},{"version":"0dea1946e1a188dcefc1a78bd3e8d206b482bb0e34205c8bee073bcf9e9a81a8","impliedFormat":99},{"version":"57f207358f2409974d35d0c62cb39b0e2122d87f74314ac36f362a591b0eb02e","impliedFormat":99},{"version":"c9d4c7b66b4f74273a4cb6fff0b42833916c043a4cfa450a13a71ab3a261ad6c","impliedFormat":99},{"version":"943e697697e9e73676b145c331f114e733753cb920d08882f8db5faa841e0f41","impliedFormat":99},{"version":"3dc164317289da2ec08166baca1c10ca42b29fa2ea51d4b1769748c3c06d4da1","impliedFormat":99},{"version":"ca92a9ee21c608133d7c5d16e16936e072b6d48b5a7258736eacc19f76beac38","impliedFormat":99},{"version":"db6d9a3de83202ef18f6cabbb064362b6ec796fa5499e18e89cbbd1f22f81902","impliedFormat":99},{"version":"1bc55655e0c89b5d02451cdfd1d11595aa3b4c55ee829fe502ab352218ef6d1c","impliedFormat":99},{"version":"f8c341677219569376d0eb374bc9c8483c7d13a7d9ba7820ddd68aa188e641b6","impliedFormat":99},{"version":"6e8a8d10c8e40378dc5aa955218c5b4f374465eebc313adc4bafb69b9ad4d77d","impliedFormat":99},{"version":"51eb031a7f09d002181adb6a235a49b25995ab954e9f319b9edab0a8dc3f6e8e","impliedFormat":99},{"version":"3bc01a0f49b6a90662942f70139d9d44b8eaf2527ab95bdaf3a1a7d0383e65c2","impliedFormat":99},{"version":"1fc08a76433c326036f4b07b8eabb370f0e4b66429a17a940b2eadf82e4cd0c0","impliedFormat":99},{"version":"9d71b80f4dd663e7be4960a4b4fc48bdff4f1db34ffc9a3c01b3fa7de1ed2330","impliedFormat":99},{"version":"42670fd2d98fce7eaa84ddb1ba6a2bb6015df92db527913f869eb545d94e60f6","impliedFormat":99},{"version":"dcc306d9e63904256ba262f23cfa59fbfcef86f4caeb88835146164ca2a19bc3","impliedFormat":99},{"version":"18cee427b1962391970a74a31bbd4c150ab4bea0118dfa0ce9722fa276f1530b","impliedFormat":99},{"version":"d53ce1daa4010a2195a1710b2da24e464afc8f8b8dbe976ef3626a5a53e3042c","impliedFormat":99},{"version":"1ce643fded91c3a62f16ba0c7f5e607f68d5792a0282c57019aa64ce61df5c05","impliedFormat":99},{"version":"08b9b1b7f590e2b9dce12e29ef7cc0b0257a1aaea8d0fc2cd88233e36f716d5f","impliedFormat":99},{"version":"1e9201bf6f6968b3a2e05fa337b2d824a9de4f8a4fabb43d3a39def1bacc40b9","impliedFormat":99},{"version":"6a2b97a8d4f8d77bfde0ad800d2ca49f274fa0e25036645345168f033a8b559e","impliedFormat":99},{"version":"676ecc05abaf7e2a33686da7f5a998a8812fde2b4b42cb756b8ee63ef22dad55","impliedFormat":99},{"version":"cca1205cd000d7a9a19dda43d3bd5079ed8d70f81ad1f7d3912d2c4d68c19bcc","impliedFormat":99},{"version":"e98020ecd0cca8549262c22e1e566e35232e038650ab9dec76c4d9c343cd22c0","impliedFormat":99},{"version":"ca747835676df2aa94222860024b77a548e1c1507c3c4fafc25f2d92973f1c19","impliedFormat":99},{"version":"c024e4c849cbd9492e428f6f686d5d47c13f8b1978856abc0b11b758d26469d2","impliedFormat":99},{"version":"c392ac93c5e068db0465a6657921c5e7f191abd0b437b4a9c2adc36da94b0c74","impliedFormat":99},{"version":"479d563dabfecd2b14d7ec2537d3511c20d2a3440296fef7196edbb8b494d3dd","impliedFormat":99},{"version":"322131ab9e1654f5213c906962bc32778f54e7d535e82e2230b852d319ae8621","impliedFormat":99},{"version":"6f7065ce4d734d131e3d2c01210d511cff0e5fae015c31482b320a834825c448","impliedFormat":99},{"version":"247b3b8c56f8371ada220c9a9f6add3dfc4fdd2b9071bedb5ed419ea10940452","impliedFormat":99},{"version":"4a76d4e462ed14f907f9481cefebe4ceab9ac5c5b3aa4385c345d8a9f4cda619","impliedFormat":99},{"version":"b1f0deff4fe7bf2f0cb9c21e20be987cbb795315dcadac0b68d9e76c95966ca9","impliedFormat":99},{"version":"ef1a82d8c935053d44d6f528e058d05eef67ddb888eebc3a91834fdcbdba346d","impliedFormat":99},{"version":"eb97b7250139e59ed75255aef10fc86db69cd581bde7e22e6489b0b040f4c6e4","impliedFormat":99},{"version":"8b2c52cb91dcde62bbfa05daf76ba4da979808cd0e689320fc9762376b4ac6c3","impliedFormat":99},{"version":"9eb7631a1e210d6b0909ffc776eade0f1a70008574cbf9c3649168028bc563f1","impliedFormat":99},{"version":"6b88fe55b86bc79c7520b2679c7986923c71a5bc33854175955e31b5b9e6038b","impliedFormat":99},{"version":"069e31ae523cb318e9aae15f78260447ccd27bffa5f319f56489c0a416490eb0","impliedFormat":99},{"version":"1ff0faca356af9440189026e7ead9f4461af4109fff62c9508b8c0ed9a49ce68","impliedFormat":99},{"version":"0bcf85264f800550fdc97d3cb0ff2f8f7d75a943e01c6c15ec377f4b51bb5f02","impliedFormat":99},{"version":"b4f4fc24849f8b8f21fd31bc16d4057ef33af97e8e3cd57b247399ca506152cc","impliedFormat":99},{"version":"dcf64894451cde209d632119dec1e8fce24e4904b284b940d90435a92a2c6385","impliedFormat":99},{"version":"5aeb99822fa7426946e3a084fe3b60cf8d62b9a22399e3991be0826bf8928b8d","impliedFormat":99},{"version":"96880c28fb55d3330569b71bd61ef4d0af993ceaa9db5655becdcf6fb82b3489","impliedFormat":99},{"version":"68f1a4ec2937052ae0dd18407eb8d1b579708970ced79c6e7cfe4a93d0a00385","impliedFormat":99},{"version":"efe0fabfc89403ce6a4a8b1fe3a7633f1161b7e10d9824299560f2d15e4e606e","impliedFormat":99},{"version":"7967fa7a9f6773b95983f48e97e7035febdf1d68e9d6d076e21ea2616c206356","impliedFormat":99},{"version":"b49164adeeee1b545ec30cf015f23d0b6fc7f5721c5b81812cdf394140986ca7","impliedFormat":99},{"version":"39fdb2b6872a2169add72f5d44f397ea69374ea938c5343229e108f007253bf8","impliedFormat":99},{"version":"6bede1e3bc1902af03665eb6935d9619fe485fcb17df7fc647ee6ee74a802a9d","impliedFormat":99},{"version":"4c4cd7a14fe65ee08a34e47c43850496cc8ae8e7cc89ec8a2c8458ac4038ee4a","impliedFormat":99},{"version":"5d5e263808e7c276dd788f1a6ad27f227fd41741346dfa56c70dbe38f9fe6151","impliedFormat":99},{"version":"88a7b0cf5b7e0e2111357089b57302f06fa1b6227dfb0771d3f27a5e9d8dd9be","impliedFormat":99},{"version":"ef7c9468b5a48fa6b69b344224a00b9208ee59133e201e1e97a16c77863ab9af","impliedFormat":99},{"version":"6328ab8645c1d5bb6e8a6842d7948b10f2f3f604a3bb9d3a128323dcb6488d27","impliedFormat":99},{"version":"0eec40d2a72f5ffcd1186d8b777a22757bb5fc63725df49c17930cdc93863278","impliedFormat":99},{"version":"8f2dd4412647aea2f4051ec8b633ab31d777c9b818fc13ddb2b4bd3f14c6ab15","impliedFormat":99},{"version":"725790a23df77a71cb1aa042061abeebf5aca3adf564c3078c6f5bb925c8b8c6","impliedFormat":99},{"version":"5dda0fdf62bcaa5710d1ccd97adea53f875e01e854995e55488256ecba4f84a8","impliedFormat":99},{"version":"57c99c92a7d6b1874c36afbfc38f0a69f40821cb8e5a4c1fc949ab2d0ed9dc48","impliedFormat":99},{"version":"bf0b1e6c1bb4930244203a593c6db7aed456e635c31aba73ee2102c55998861f","impliedFormat":99},{"version":"684fed66904651fd676b78ec044da251651f4dfaedb163df74b2280013d5cd5f","impliedFormat":99},{"version":"1cad8abbc5f25133dea041deb44aa979498ee0b66e1ddc3d00f299e3629d4d6f","impliedFormat":99},{"version":"54dfbe6b81ce997409cc2c0bc37f492eeca1130ad5025e5b9148e857a8e34478","impliedFormat":99},{"version":"4bb6f54e837a952382d05afe37f3fea393c3908b14223cef578b882b00e9b31a","impliedFormat":99},{"version":"f7b3b183e6fbd30930c3e6bf7ce1953433c5cfce3142e1f0247fc4c6c26c5535","impliedFormat":99},{"version":"53c0d5e4b66e6f7fec9b79c3f776b85cd6be1e1d5d62bf57c63ecfde794ec6a5","impliedFormat":99},{"version":"7764e57eda6746e2ddab9b085a0fcb35d2c8ecee5d36759ae21c29038014a824","impliedFormat":99},{"version":"c3bd90fd93652ea125e8ba975bbd68d17f88ccacd0abd408fc2c64d1331a19cc","impliedFormat":99},{"version":"80e2f6580bb45d179d283cfac2863e94ad87c2ddce90e33dfab141ac4115379a","impliedFormat":99},{"version":"c2043b6cddf15439ba19f3293a7d8626ac8f31be86d9d8998c3323af94feeb8c","impliedFormat":99},{"version":"c3ce2db820d63c84554c94c5f929ef7786a4e4a7d61db6fac09bf2e85243e51a","impliedFormat":99},{"version":"8dfeb49bc8ac66938f09bc428ad4285975421bd18558604f0e098932dce8f9da","impliedFormat":99},{"version":"b7c1b2e00df8531e5e0d58efd255a2af435c1b68a04dc6214003a592b6fd5127","impliedFormat":99},{"version":"5d27a5d59ac05633bb38b263a713c2a2b15050dd6037f57efe7b897968778fb8","impliedFormat":99},{"version":"e61ec63942cec5365c27d711a3e47f0189aa2e8dff000f806a91e0a77aa36c10","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"0cd3d259f10d4a23a3d08d75a25160dc6782e75f44513f23f1e36fda7ca9df75",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"0881e0902c55b772d3ba4d5be01ec185410b7999dc0827a726acf3cf83ea5fe9",{"version":"d84a38f64df7be31347f09c47292a6317578aedb10bdcfe5f67a2975a8b147bc","signature":"cf09a3fa5240d6d043bea225b3aa7d1216a1f01fa73e19b3d40b711b5c62ffdd"},{"version":"f6bed20b8206785a6df1b2536cfeea832ea2683c49c3a925f209214894111402","signature":"46e644fcc3450a48892553e217bb468d9225cabb97dc8a0f01d043a7a1927e3d"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"37c7961117708394f64361ade31a41f96cef7f2a6606300821c72438dd4abda3","impliedFormat":1},{"version":"d519b53ae419dfdb7c9fa4406f15b4f9b75611a243b0880cf8d431e4dae26d97","affectsGlobalScope":true,"impliedFormat":1},{"version":"3d9189f26f01d4e36d3fb380810ef5999992235282e3c293da77d1d8aed09d9f","impliedFormat":1},{"version":"3787007c141f3168eddd3a2f0c1bc7518892336835811c8e1ca0dee48601f66e","impliedFormat":1},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"12b3c4b5cf0f53d8b75ed01673fa10734e0a06e80b57e424988d2b7cd11ba8da","signature":"303651336ce8927b7d65f3a3b6b783130698d789f6bed02d34d3dd8c5a61f1f7"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"2b37ba54ec067598bf912d56fcb81f6d8ad86a045c757e79440bdef97b52fe1b","impliedFormat":99},{"version":"1bc9dd465634109668661f998485a32da369755d9f32b5a55ed64a525566c94b","impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","impliedFormat":99},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"9d62e577adb05f5aafed137e747b3a1b26f8dce7b20f350d22f6fb3255a3c0ed","impliedFormat":99},{"version":"7ed92bcef308af6e3925b3b61c83ad6157a03ff15c7412cf325f24042fe5d363","impliedFormat":99},{"version":"3da9062d0c762c002b7ab88187d72e1978c0224db61832221edc8f4eb0b54414","impliedFormat":99},{"version":"84dbf6af43b0b5ad42c01e332fddf4c690038248140d7c4ccb74a424e9226d4d","impliedFormat":99},{"version":"00884fc0ea3731a9ffecffcde8b32e181b20e1039977a8ae93ae5bce3ab3d245","impliedFormat":99},{"version":"0bd8b6493d9bf244afe133ccb52d32d293de8d08d15437cca2089beed5f5a6b5","impliedFormat":99},{"version":"7fc3099c95752c6e7b0ea215915464c7203e835fcd6878210f2ce4f0dcbbfe67","impliedFormat":99},{"version":"83b5499dbc74ee1add93aef162f7d44b769dcef3a74afb5f80c70f9a5ce77cc0","impliedFormat":99},{"version":"8bf8b772b38fc4da471248320f49a2219c363a9669938c720e0e0a5a2531eabf","impliedFormat":99},{"version":"7da6e8c98eacf084c961e039255f7ebb9d97a43377e7eee2695cb77fec640c66","impliedFormat":99},{"version":"0b5b064c5145a48cd3e2a5d9528c63f49bac55aa4bc5f5b4e68a160066401375","impliedFormat":99},{"version":"702ff40d28906c05d9d60b23e646c2577ad1cc7cd177d5c0791255a2eab13c07","impliedFormat":99},{"version":"49ff0f30d6e757d865ae0b422103f42737234e624815eee2b7f523240aa0c8f8","impliedFormat":99},{"version":"0389aacf0ffd49a877a46814a21a4770f33fc33e99951a1584de866c8e971993","impliedFormat":99},{"version":"5cb7a51cf151c1056b61f078cf80b811e19787d1f29a33a2a6e4bf00334bbc10","impliedFormat":99},{"version":"215aa8915d707f97ad511b7abbf7eda51d3a7048e9a656955cf0dda767ae7db0","impliedFormat":99},{"version":"0d689a717fbef83da07ab4de33f83db5cbcec9bc4e3b04edb106c538a50a0210","impliedFormat":99},{"version":"d00bc73e8d1f4137f2f6238bb3aa2bbdad8573658cc95920e2cdfa7ad491a8d8","impliedFormat":99},{"version":"e3667aa9f5245d1a99fb4a2a1ac48daf1429040c29cc0d262e3843f9ae3b9d65","impliedFormat":99},{"version":"08c0f3222b50ec2b534be1a59392660102549129246425d33ec43f35aa051dc6","impliedFormat":99},{"version":"612fb780f312e6bb3c40f3cb2b827ea7455b922198f651c799d844fdd44cf2e9","impliedFormat":99},{"version":"bcd98e8f44bc76e4fcb41e4b1a8bab648161a942653a3d1f261775a891d258de","impliedFormat":99},{"version":"5abaa19aa91bb4f63ea58154ada5d021e33b1f39aa026ca56eb95f13b12c497a","impliedFormat":99},{"version":"356a18b0c50f297fee148f4a2c64b0affd352cbd6f21c7b6bfa569d30622c693","impliedFormat":99},{"version":"5876027679fd5257b92eb55d62efee634358012b9f25c5711ad02b918e52c837","impliedFormat":99},{"version":"f5622423ee5642dcf2b92d71b37967b458e8df3cf90b468675ff9fddaa532a0f","impliedFormat":99},{"version":"70265bc75baf24ec0d61f12517b91ea711732b9c349fceef71a446c4ff4a247a","impliedFormat":99},{"version":"41a4b2454b2d3a13b4fc4ec57d6a0a639127369f87da8f28037943019705d619","impliedFormat":99},{"version":"e9b82ac7186490d18dffaafda695f5d975dfee549096c0bf883387a8b6c3ab5a","impliedFormat":99},{"version":"eed9b5f5a6998abe0b408db4b8847a46eb401c9924ddc5b24b1cede3ebf4ee8c","impliedFormat":99},{"version":"af85fde8986fdad68e96e871ae2d5278adaf2922d9879043b9313b18fae920b1","impliedFormat":99},{"version":"8a1f5d2f7cf4bf851cc9baae82056c3316d3c6d29561df28aff525556095554b","impliedFormat":99},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","impliedFormat":99},{"version":"e87873f06fa094e76ac439c7756b264f3c76a41deb8bc7d39c1d30e0f03ef547","impliedFormat":99},{"version":"488861dc4f870c77c2f2f72c1f27a63fa2e81106f308e3fc345581938928f925","impliedFormat":99},{"version":"eff73acfacda1d3e62bb3cb5bc7200bb0257ea0c8857ce45b3fee5bfec38ad12","impliedFormat":99},{"version":"aff4ac6e11917a051b91edbb9a18735fe56bcfd8b1802ea9dbfb394ad8f6ce8e","impliedFormat":99},{"version":"1f68aed2648740ac69c6634c112fcaae4252fbae11379d6eabee09c0fbf00286","impliedFormat":99},{"version":"5e7c2eff249b4a86fb31e6b15e4353c3ddd5c8aefc253f4c3e4d9caeb4a739d4","impliedFormat":99},{"version":"14c8d1819e24a0ccb0aa64f85c61a6436c403eaf44c0e733cdaf1780fed5ec9f","impliedFormat":99},{"version":"d36518bd617ff673c7d9f372706f241932a43f27673187f2a8472e93c40041c6","impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","impliedFormat":99},{"version":"413d50bc66826f899c842524e5f50f42d45c8cb3b26fd478a62f26ac8da3d90e","impliedFormat":99},{"version":"d9083e10a491b6f8291c7265555ba0e9d599d1f76282812c399ab7639019f365","impliedFormat":99},{"version":"09de774ebab62974edad71cb3c7c6fa786a3fda2644e6473392bd4b600a9c79c","impliedFormat":99},{"version":"e8bcc823792be321f581fcdd8d0f2639d417894e67604d884c38b699284a1a2a","impliedFormat":99},{"version":"7c99839c518dcf5ab8a741a97c190f0703c0a71e30c6d44f0b7921b0deec9f67","impliedFormat":99},{"version":"44c14e4da99cd71f9fe4e415756585cec74b9e7dc47478a837d5bedfb7db1e04","impliedFormat":99},{"version":"1f46ee2b76d9ae1159deb43d14279d04bcebcb9b75de4012b14b1f7486e36f82","impliedFormat":99},{"version":"2838028b54b421306639f4419606306b940a5c5fcc5bc485954cbb0ab84d90f4","impliedFormat":99},{"version":"7116e0399952e03afe9749a77ceaca29b0e1950989375066a9ddc9cb0b7dd252","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"4e0d28a761d88fb4d57451fb967779495e4f495a5a0e4c0e52b2a76145982e40","signature":"16e3799350d1f3a0d101d380ec20d147ad8629da355c9cf56f27783834427f33"},"cecd7fa1d2e59638bc175bce7115526f7f0d3429ebc6ebe836951e263c3d6c5c",{"version":"1cb20f51765a41c1de27cb1a46ed84e9bbfbd84019c25abd01335fc097f3299a","signature":"6f890af548f42019685b603c52a427c54d0595cd52dd6a09a6e81482fcf33a2e"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"38a08d8977ff3f9111720a31c01449040d2574d77c5890cc77841e1d35497ff9","signature":"1852ab54aca89c618c47168e8b7d15616017d8542802914c65172608b7bff030"},{"version":"e5d55cc726a8a953da863bb577a0626319ab927b2821b80e524920750c743db3","signature":"e1f2b0ce216b3047dffdf319d0c20e5b384675f2a3243e390281ff6412522533"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"d3d8bb9f024cf5b93a895f1a1fc888268d0e9cf086931fb4e13a044138fe64fa","f67de8039badd18bce93f6baa5a008856e0d6dbe2280c37136455d4bed6346b3",{"version":"1e1b022795fa44905e8dfddd4b65a6a5c286ec22cd44733d528bffc722d273ce","signature":"b9487daa1e6a6154af3389340df9ced32273319f1cd3ed915daea5bac16a3ea8"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"a2e5868416b88203f139bdb6020caa8f788043f4c3e570d109e2633407d80bd4",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"c06c767666d6ad05434ec340af8c8a296e4c1cfc6d79686c20d2131fcbf7614a",{"version":"b0a64978acccb01ed1ced0f7831fad0dc002f34a2e035dd185221a8ad6416d29","signature":"236b0bba42b31e64875af7a0f19f9fb4745402678ac7281a7967b55306ccbbd1"},{"version":"cfe017182032453214e99dea0a7b3be77bdab57c64985ba089e5da550d83b9b8","signature":"5004c6b3437d621488f37a730ca7950c02d494c62f17dedee70cdecab0e37e84"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"6a8860221043016b3dc2aa98c96bf6214cf6b5f72af0302b864d9b630bd41089",{"version":"855a04a135f7c922aff11a7503e7ea9da5686064f6c35e778dfc46dbe2642874","signature":"af8a01288ef6dad00866190adbd7df1fe3f4a9b0b60b9be172b3b3224338c98b"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"ba6efe7a6b73ea3211dac001f61baf319d46f2999d08b9737a219da3da85567d",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"c438a81d9744772f2f47e2cd9e0f94819c5b5d0cc0a5ce223d60f25c92a8b9c1","signature":"6fbb03d7732e4d061d7265ac608e5e2591b23134129e887bbd7fb19aa00c11c9"},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"533f50c2c2ec5f734db425e0bc0405b8da2406e160545f834ad82134f2c39cb7","signature":"450fd488d58fd5f49b8d4d7b73d43e4c534d9055dce468afed58d1da8c928c2b"},{"version":"bb2b81a9f7da9ec666f1836ef0a8c9d9a1e343410fdb769b8567a6037e4b3559","signature":"30fa44558bfd7ebaf45bd26e72be535a174aecb8285dbc25555380931791d601"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"fb6cb92624a71d3c6f9ae1e1bd100062b6ef2ef7375a88d2b3cd66552c262314","signature":"db6931e7e391787a80fbdb51c39a051c1306ca21b15e9e33de86184245c785c2"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"42d00c1edd006dc836e08da63459b2772e30e4e9db0fdddc7a30ef94ae0414d3",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"847d40cd2a3ca15b9b88d590f661005f6179ed58629dae656d28fe3a2406b786","signature":"bea2af3230c5b8bbced5c64829d9b3e494ffd0d1f7613dd80931b35e768c2d19"},{"version":"9cb4e67644a537160e8cd1e71d1232cf2d3b07a90bd4541d6e4d41105babf13a","signature":"929e4d1cc037603f52537363de9d329f80cefd6393c17e91f551d90a5e3ea292"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"31ab59e8e622030a89f45ccc6c272bdd40ba3955206d25a0f7fd30d9125d6a81",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"4345fe3c0d15ccc75971db4f0ce11acd6ca84d5bd4c033f550ad9afefc36dd44","signature":"5e2b61ae1830c63f6ac68c22286ee0c6b267a21af56e001680d2175aa87d3b07"},{"version":"dcd9b4f70bc5317286d5593b5fe3b113bf43513128140a81695e2996272e5428","signature":"2abe61f517d6d2c4e0475abffcfa5a73798aa79456e340e25dcbd9dfbc9814cd"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"f268db160ba1ae75f0686ed46becb625847d81cdd982f65371012917a72090f1","signature":"f6adc0045d29bf73aba7c04b7cd140532e4b405731bdea8e8c5f1b0946cb79f2"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"28c57c602a13665d81237397bb078fc467d6a0f6288f55b555d51b86dec7e2d3",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"97e0a23ac45763f990b704b66cabbb48df07eddc5bf46054a34d72e350f1088e","impliedFormat":99},{"version":"fe9dd679e568dc2a0e5e6959f77b53f8bc1f126d46b0d17631347ba57470b808","impliedFormat":99},{"version":"86245b010961138b1c4ce2e0610b8b9577157dac3f7eeaf3d20017ee01e7760b","impliedFormat":99},{"version":"126eac20336c7374782d571be802e7b7adb9fc5b24c0dd0dfc37bfc9774d9182","impliedFormat":99},{"version":"760c9ccae9612ff1cd7d39c6eb7cdf913ca528a7f89afeee33f6759d62715e43","impliedFormat":99},{"version":"54e76a6612d9b83fde2b1cc0569f20c5b8d38f7a860b88a1d9d805399bfeead3","impliedFormat":99},{"version":"5a4ddf80b1bdab540fe5d3f837921e9e8dc559a1a319e75451c30f0d5f62ac0f","impliedFormat":99},{"version":"0c6ef3deba595b7dc7b4ee09342435c7a2392fe7752e335acdedfe2476529638","impliedFormat":99},{"version":"00fab36b3130e6d7a2316d0583a2e2a4d328a6f4e01817d90d8b07baad69b4e1","impliedFormat":99},{"version":"9001790195bf5cf382c676ded6da44833812e677bb9f31fcb22fa47d389039f4","impliedFormat":99},{"version":"e9549a400fa6ed33871effcd70b9bc5ab77f24ecc6349c97d8da7ae078e6a25a","impliedFormat":99},{"version":"0007221ceab1fe355d6dbbdf4bb71cad7584ffe9794ab152a1c68a921f2408ca","impliedFormat":99},{"version":"dd7928e76087e0bb029074c20675aeb38eff85513d5f941f440c26d82dd5436c","impliedFormat":99},{"version":"b35f88c4ae41d4b085da718dde3ddff0b176337470275fee82ad0aa84858db07","impliedFormat":99},{"version":"626e531e56621998a9d6488eb25c93f4091fd7a5484724458925b1ef0982a778","impliedFormat":99},"c9f54e8d99ecfb65a99b9ee67a7fce1295edc57ee9332f6c8bf7fdef1dc0c57b",{"version":"887b2fe56fd31d1c3b2bb7ef7269327d10cd1a1d87630f3a175c88a7f3929e51","signature":"6a2af332405b595dea3ecd65f0543ed7f208d4da3f38ef651af342aca0b47c90"},"727e71e0bf37867bba73f2364d1c9618ae73c6b61cce1e9b5fb9415b964a3f7b","f8f51fe7ef6e782ca3f865b6b68f5aa2017a9d9e4f8b199db2cc4435aba15ba4","32f3ed83e7324bd2d58313a7645fa05193a116197a58aae14b98a5fd8209dc6c",{"version":"a5d0c7d115792d9dc5204e6167e3a920534142834421c83a65cb67fcb7feb59f","signature":"5cfb0884787a1a06e5afd468dc94fea17ca4b3ab36bfc4c4ee33d51cb6592a02"},"b4fec866aa0ea4289e716354a29227ed9d840c4d59293dd23e587cc4dfb50d9f","ddb76d82cbdb29d8dbedbc72835ebcade5f6797d9d53e7b8fd5c39b1cc681ae4","7c7c8c7ac9c9bc8ec47884c5072a9f75dd62a50a4ceafd26e7ba6d1d64f4be17","2d30d4dd0291d7c301276ddcb21e17bb35e6219971cb38d337d8c6f1d43003b4","b79b9ac24cf51475b92378868b8c4c5637e18712232d9c5215d39a9e3a7101a9",{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"237ba5ac2a95702a114a309e39c53a5bddff5f6333b325db9764df9b34f3502b","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"1d024184fb57c58c5c91823f9d10b4915a4867b7934e89115fd0d861a9df27c8","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"b0b69c61b0f0ec8ca15db4c8c41f6e77f4cacb784d42bca948f42dea33e8757e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f96a48183254c00d24575401f1a761b4ce4927d927407e7862a83e06ce5d6964","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"f83fb2b1338afbb3f9d733c7d6e8b135826c41b0518867df0c0ace18ae1aa270","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"757227c8b345c57d76f7f0e3bbad7a91ffca23f1b2547cbed9e10025816c9cb7","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9451a46a89ed209e2e08329e6cac59f89356eae79a7230f916d8cc38725407c7","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"e236b5eba291f51bdf32c231673e6cab81b5410850e61f51a7a524dddadc0f95","impliedFormat":1},{"version":"f7ba0e839daa0702e3ff1a1a871c0d8ea2d586ce684dd8a72c786c36a680b1d9","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"f64deb26664af64dc274637343bde8d82f930c77af05a412c7d310b77207a448","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"17d06eb5709839c7ce719f0c38ada6f308fb433f2cd6d8c87b35856e07400950","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"2a00d005e3af99cd1cfa75220e60c61b04bfb6be7ca7453bfe2ef6cca37cc03c","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"c3877fef8a43cd434f9728f25a97575b0eb73d92f38b5c87c840daccc3e21d97","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"1dbd83860e7634f9c236647f45dbc5d3c4f9eba8827d87209d6e9826fdf4dbd5","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"b37f83e7deea729aa9ce5593f78905afb45b7532fdff63041d374f60059e7852","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"f9e22729fa06ed20f8b1fe60670b7c74933fdfd44d869ddfb1919c15a5cf12fb","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"689be50b735f145624c6f391042155ae2ff6b90a93bac11ca5712bc866f6010c","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","impliedFormat":1},{"version":"18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","impliedFormat":1},{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","impliedFormat":1},{"version":"b2d0630483bf337ef9dac326c3334a245aa4946e9f60f12baf7da5be44beafbb","impliedFormat":1},{"version":"ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","impliedFormat":1},{"version":"26b7d0cd4b41ab557ef9e3bfeec42dcf24252843633e3d29f38d2c0b13aaa528","impliedFormat":1},{"version":"7fadb2778688ebf3fd5b8d04f63d5bf27a43a3e420bc80732d3c6239067d1a4b","impliedFormat":1},{"version":"916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","impliedFormat":1},{"version":"e85d04f57b46201ddc8ba238a84322432a4803a5d65e0bbd8b3b4f05345edd51","impliedFormat":1},{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"7233cac35711f43b7493061d2fe7636deb6d14f8cb58e4b3ff248be46f0b543d","impliedFormat":1},{"version":"3cef134032da5e1bfabba59a03a58d91ed59f302235034279bb25a5a5b65ca62","affectsGlobalScope":true,"impliedFormat":1},{"version":"199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","impliedFormat":1},{"version":"ddef25f825320de051dcb0e62ffce621b41c67712b5b4105740c32fd83f4c449","impliedFormat":1},{"version":"1b3dffaa4ca8e38ac434856843505af767a614d187fb3a5ef4fcebb023c355aa","impliedFormat":1},{"version":"7fa8d75d229eeaee235a801758d9c694e94405013fe77d5d1dd8e3201fc414f1","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1}],"root":[83,[88,91],[99,113],[122,126],844,[848,850],865,[959,961],968,969,[979,981],984,[987,989],993,994,998,1001,1003,1004,1008,1010,1018,1019,1032,1034,1035,1037,1039,[1057,1067]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":4},"referencedMap":[[1052,1],[1045,2],[1053,3],[1056,4],[1054,5],[1050,6],[1055,2],[1042,7],[1051,8],[1044,9],[158,10],[157,7],[160,11],[159,12],[170,13],[163,14],[171,15],[168,13],[172,16],[166,13],[167,17],[169,18],[165,19],[164,20],[173,21],[161,22],[162,23],[152,7],[153,24],[176,25],[174,26],[175,27],[178,28],[177,29],[155,30],[154,31],[156,32],[1047,7],[1049,33],[1048,33],[834,34],[867,34],[1036,34],[1040,34],[1033,34],[847,34],[967,34],[997,34],[1016,34],[964,34],[990,34],[829,34],[870,34],[853,34],[975,34],[851,34],[852,34],[962,34],[982,34],[983,34],[842,34],[1027,34],[1015,34],[1006,34],[840,34],[826,34],[1041,34],[1009,34],[1005,34],[827,34],[986,34],[1011,34],[854,34],[860,34],[965,34],[963,34],[966,34],[864,34],[833,34],[863,34],[996,34],[845,34],[836,34],[868,34],[991,34],[1000,34],[1023,34],[846,34],[843,34],[866,34],[1013,34],[977,34],[839,34],[1029,34],[1020,34],[1022,34],[974,34],[970,34],[1014,34],[1007,34],[958,34],[1012,34],[1031,34],[1038,34],[828,34],[869,34],[1028,34],[862,34],[973,34],[985,34],[995,34],[992,34],[1017,34],[841,34],[1021,34],[861,34],[1030,34],[859,34],[835,34],[972,34],[1026,34],[1025,34],[999,34],[971,34],[1024,34],[831,34],[830,34],[976,34],[832,34],[978,34],[837,34],[838,34],[468,35],[467,7],[469,36],[462,37],[461,7],[463,38],[465,39],[464,7],[466,40],[471,41],[470,7],[472,42],[317,43],[314,7],[318,44],[323,45],[322,7],[324,46],[326,47],[325,7],[327,48],[360,49],[359,7],[361,50],[363,51],[362,7],[364,52],[366,53],[365,7],[367,54],[373,55],[372,7],[374,56],[376,57],[375,7],[377,58],[382,59],[381,7],[383,60],[379,61],[378,7],[380,62],[793,63],[794,7],[795,64],[385,65],[384,7],[386,66],[393,67],[392,7],[394,68],[306,69],[305,7],[307,70],[304,71],[303,7],[388,72],[390,26],[387,7],[389,73],[391,74],[411,75],[410,7],[412,76],[396,77],[395,7],[397,78],[399,79],[398,7],[400,80],[402,81],[401,7],[403,82],[405,83],[404,7],[406,84],[408,85],[407,7],[409,86],[416,87],[415,7],[417,88],[329,89],[328,7],[330,90],[419,91],[418,7],[420,92],[615,26],[616,93],[427,94],[426,7],[428,95],[128,7],[129,7],[130,7],[131,7],[132,7],[133,7],[134,7],[135,7],[136,7],[137,7],[148,96],[138,7],[139,7],[140,7],[141,7],[142,7],[143,7],[144,7],[145,7],[146,7],[147,7],[430,97],[429,98],[431,99],[432,100],[433,101],[796,7],[448,102],[447,7],[449,103],[435,104],[434,7],[436,105],[438,106],[437,7],[439,107],[441,108],[440,7],[442,109],[451,110],[450,7],[452,111],[454,112],[453,7],[455,113],[459,114],[458,7],[460,115],[474,116],[473,7],[475,117],[370,118],[371,119],[480,120],[479,7],[481,121],[486,122],[485,7],[487,123],[489,124],[488,125],[483,126],[482,7],[484,127],[491,128],[490,7],[492,129],[494,130],[493,7],[495,131],[497,132],[496,7],[498,133],[816,134],[819,135],[809,136],[810,137],[502,138],[503,7],[504,139],[500,140],[499,7],[501,141],[797,118],[798,142],[506,143],[505,7],[507,144],[309,145],[308,7],[310,146],[509,147],[508,7],[510,148],[515,149],[514,7],[516,150],[512,151],[511,7],[513,152],[825,153],[824,154],[823,155],[525,156],[524,157],[523,7],[519,158],[518,159],[517,7],[478,160],[477,161],[476,7],[522,162],[521,163],[520,7],[302,164],[414,165],[413,7],[528,166],[527,167],[526,7],[531,168],[530,169],[529,7],[552,170],[551,171],[550,7],[540,172],[539,173],[538,7],[534,174],[533,175],[532,7],[543,176],[542,177],[541,7],[537,178],[536,179],[535,7],[546,180],[545,181],[544,7],[549,182],[548,183],[547,7],[555,184],[554,185],[553,7],[566,186],[565,187],[564,7],[558,188],[557,189],[556,7],[560,190],[559,191],[569,192],[568,193],[567,7],[446,194],[445,195],[444,7],[443,7],[573,196],[572,197],[571,7],[570,198],[801,199],[800,200],[799,26],[577,201],[576,202],[575,7],[298,203],[581,204],[580,205],[579,7],[584,206],[583,207],[582,7],[313,208],[312,209],[311,7],[563,210],[562,211],[561,7],[353,212],[356,213],[354,214],[355,7],[351,215],[350,216],[349,26],[592,217],[591,218],[590,7],[589,219],[585,220],[588,221],[586,26],[587,222],[595,223],[594,224],[593,7],[598,225],[597,226],[596,7],[602,227],[601,228],[600,7],[599,229],[605,230],[604,231],[603,7],[457,232],[456,118],[611,233],[610,234],[609,7],[608,235],[607,7],[606,26],[619,236],[618,237],[617,7],[614,238],[613,239],[612,7],[623,240],[622,241],[621,7],[629,242],[628,243],[627,7],[632,244],[631,245],[630,7],[635,246],[633,247],[634,98],[658,248],[656,249],[655,7],[657,26],[638,250],[637,251],[636,7],[641,252],[640,253],[639,7],[644,254],[643,255],[642,7],[647,256],[646,257],[645,7],[650,258],[649,259],[648,7],[654,260],[652,261],[651,7],[653,26],[722,262],[718,263],[723,264],[294,265],[151,7],[724,7],[721,266],[297,267],[719,268],[720,269],[293,7],[295,270],[733,271],[740,7],[738,7],[150,7],[741,272],[734,7],[716,273],[715,274],[725,275],[730,7],[292,7],[739,7],[729,7],[731,276],[732,277],[737,278],[727,279],[728,280],[717,281],[735,7],[736,7],[296,7],[301,282],[300,283],[299,7],[660,284],[659,285],[663,286],[662,287],[661,7],[699,288],[698,289],[697,7],[687,290],[686,291],[685,7],[666,292],[665,293],[664,7],[669,294],[668,295],[667,7],[672,296],[671,297],[670,7],[696,298],[695,299],[694,7],[675,300],[674,301],[673,7],[684,302],[683,303],[679,7],[678,304],[676,305],[677,7],[690,306],[689,307],[688,7],[693,308],[692,309],[691,7],[705,310],[704,311],[703,7],[702,312],[701,313],[700,7],[804,314],[803,315],[802,26],[708,316],[707,317],[706,7],[711,318],[710,319],[709,7],[714,320],[713,321],[712,7],[682,322],[681,323],[680,7],[626,324],[625,325],[624,7],[620,326],[369,327],[321,328],[320,329],[319,7],[821,330],[820,26],[822,331],[358,332],[357,333],[574,334],[578,26],[806,335],[805,7],[746,336],[749,337],[750,34],[753,338],[756,339],[792,340],[759,341],[760,342],[791,343],[763,344],[766,345],[352,333],[769,346],[772,347],[316,348],[781,349],[784,350],[775,351],[787,352],[790,353],[778,354],[811,7],[808,355],[807,118],[225,7],[230,356],[227,357],[226,358],[229,359],[228,358],[181,360],[182,361],[183,362],[180,363],[179,26],[186,364],[187,365],[236,366],[237,7],[238,367],[203,368],[204,369],[254,7],[255,370],[205,364],[206,371],[276,372],[273,7],[274,373],[275,374],[277,375],[239,376],[240,377],[188,378],[726,379],[241,380],[242,381],[198,382],[190,7],[201,383],[202,384],[189,7],[199,379],[200,385],[211,364],[212,386],[263,387],[266,388],[269,7],[270,7],[267,7],[268,389],[261,7],[264,7],[265,7],[262,390],[207,364],[208,391],[209,364],[210,392],[223,7],[224,393],[232,394],[233,395],[280,396],[279,397],[281,7],[283,398],[278,399],[284,400],[282,379],[291,401],[260,402],[259,155],[258,382],[214,403],[213,364],[216,404],[215,364],[272,405],[271,7],[218,406],[217,364],[220,407],[219,364],[235,408],[234,364],[287,409],[289,410],[286,411],[288,7],[285,399],[185,412],[184,382],[244,413],[243,414],[192,415],[196,364],[195,416],[197,417],[193,418],[191,418],[194,419],[257,420],[256,421],[222,422],[221,364],[253,423],[252,7],[249,424],[248,425],[246,7],[247,426],[245,7],[251,427],[250,7],[290,7],[149,26],[744,7],[745,428],[742,7],[743,429],[812,7],[813,430],[747,7],[748,431],[751,7],[752,432],[754,433],[755,434],[814,7],[815,435],[817,7],[818,436],[758,437],[757,7],[762,438],[761,7],[765,439],[764,7],[768,440],[767,441],[771,442],[770,26],[315,26],[780,443],[779,7],[783,444],[782,26],[774,445],[773,26],[786,446],[785,7],[789,447],[788,26],[777,448],[776,7],[348,449],[344,450],[331,7],[347,451],[340,452],[338,453],[337,453],[336,452],[333,453],[334,452],[342,454],[335,453],[332,452],[339,453],[345,455],[346,456],[341,457],[343,453],[98,458],[97,7],[1190,459],[1191,460],[1196,461],[1189,462],[1198,463],[1203,464],[1202,465],[1201,466],[1204,467],[1199,7],[1195,468],[1210,469],[1209,468],[872,470],[1211,26],[1212,7],[1205,7],[1213,471],[1200,7],[882,470],[1206,7],[1197,7],[1214,472],[1129,473],[1130,473],[1131,474],[1070,475],[1132,476],[1133,477],[1134,478],[1068,7],[1135,479],[1136,480],[1137,481],[1138,482],[1139,483],[1140,484],[1141,484],[1142,485],[1143,486],[1144,487],[1145,488],[1071,7],[1069,7],[1146,489],[1147,490],[1148,491],[1188,492],[1149,493],[1150,494],[1151,493],[1152,495],[1153,496],[1154,497],[1155,498],[1156,498],[1157,498],[1158,499],[1159,500],[1160,501],[1161,502],[1162,503],[1163,504],[1164,504],[1165,505],[1166,7],[1167,7],[1168,506],[1169,507],[1170,506],[1171,508],[1172,509],[1173,510],[1174,511],[1175,512],[1176,513],[1177,514],[1178,515],[1179,516],[1180,517],[1181,518],[1182,519],[1183,520],[1184,521],[1185,522],[1072,493],[1073,7],[1074,523],[1075,524],[1076,7],[1077,525],[1078,7],[1120,526],[1121,527],[1122,528],[1123,528],[1124,529],[1125,7],[1126,476],[1127,530],[1128,527],[1186,531],[1187,532],[1215,7],[1216,7],[86,7],[1193,7],[1194,7],[127,26],[1002,26],[1218,533],[1217,7],[1219,534],[421,7],[422,327],[425,535],[423,26],[368,26],[424,327],[84,7],[87,536],[231,26],[1220,7],[1192,537],[1221,538],[1208,539],[1207,540],[1222,462],[871,7],[1223,7],[1224,541],[1046,2],[85,7],[857,542],[858,543],[94,7],[951,7],[925,544],[924,545],[923,546],[950,547],[949,548],[953,549],[952,550],[955,551],[954,552],[910,553],[884,554],[885,555],[886,555],[887,555],[888,555],[889,555],[890,555],[891,555],[892,555],[893,555],[894,555],[908,556],[895,555],[896,555],[897,555],[898,555],[899,555],[900,555],[901,555],[902,555],[904,555],[905,555],[903,555],[906,555],[907,555],[909,555],[883,557],[948,558],[928,559],[929,559],[930,559],[931,559],[932,559],[933,559],[934,560],[936,559],[935,559],[947,561],[937,559],[939,559],[938,559],[941,559],[940,559],[942,559],[943,559],[944,559],[945,559],[946,559],[927,559],[926,562],[918,563],[916,564],[917,564],[921,565],[919,564],[920,564],[922,564],[915,7],[856,566],[855,7],[914,567],[913,568],[93,569],[121,570],[115,571],[116,572],[118,571],[120,573],[117,574],[114,26],[119,7],[96,575],[92,7],[957,576],[956,577],[912,578],[911,579],[95,7],[1043,7],[879,580],[878,7],[81,7],[82,7],[13,7],[14,7],[16,7],[15,7],[2,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[23,7],[24,7],[3,7],[25,7],[26,7],[4,7],[27,7],[31,7],[28,7],[29,7],[30,7],[32,7],[33,7],[34,7],[5,7],[35,7],[36,7],[37,7],[38,7],[6,7],[42,7],[39,7],[40,7],[41,7],[43,7],[7,7],[44,7],[49,7],[50,7],[45,7],[46,7],[47,7],[48,7],[8,7],[54,7],[51,7],[52,7],[53,7],[55,7],[9,7],[56,7],[57,7],[58,7],[60,7],[59,7],[61,7],[62,7],[10,7],[63,7],[64,7],[65,7],[11,7],[66,7],[67,7],[68,7],[69,7],[70,7],[1,7],[71,7],[72,7],[12,7],[76,7],[74,7],[79,7],[78,7],[73,7],[77,7],[75,7],[80,7],[1096,581],[1108,582],[1094,583],[1109,584],[1118,585],[1085,586],[1086,587],[1084,588],[1117,472],[1112,589],[1116,590],[1088,591],[1105,592],[1087,593],[1115,594],[1082,595],[1083,589],[1089,596],[1090,7],[1095,597],[1093,596],[1080,598],[1119,599],[1110,600],[1099,601],[1098,596],[1100,602],[1103,603],[1097,604],[1101,605],[1113,472],[1091,606],[1092,607],[1104,608],[1081,584],[1107,609],[1106,596],[1102,610],[1111,7],[1079,7],[1114,611],[881,612],[877,7],[880,613],[874,614],[873,470],[876,615],[875,616],[979,617],[848,618],[88,26],[1061,619],[850,620],[83,7],[1034,621],[1003,622],[1064,623],[89,624],[1062,625],[988,626],[865,627],[984,628],[981,629],[987,630],[961,631],[980,632],[968,633],[969,634],[960,635],[1037,636],[989,637],[998,638],[1065,639],[1004,640],[1001,641],[994,642],[90,26],[1008,643],[1035,644],[849,645],[1018,646],[1019,647],[1010,648],[1032,649],[1057,650],[993,651],[91,624],[1039,652],[1058,653],[959,654],[1059,655],[1060,656],[1063,657],[112,658],[122,659],[1066,660],[113,7],[100,661],[123,7],[109,662],[110,661],[106,661],[104,661],[108,661],[105,661],[107,661],[102,661],[111,663],[101,661],[99,661],[103,661],[124,7],[1067,7],[844,664],[125,665],[126,7]],"semanticDiagnosticsPerFile":[[959,[{"start":1432,"length":7,"messageText":"Cannot assign to 'current' because it is a read-only property.","category":1,"code":2540}]],[1032,[{"start":45990,"length":5,"code":2339,"category":1,"messageText":"Property 'color' does not exist on type 'Output'."},{"start":46101,"length":5,"code":2339,"category":1,"messageText":"Property 'color' does not exist on type 'Output'."},{"start":46468,"length":8,"code":2339,"category":1,"messageText":"Property 'category' does not exist on type 'Output'."},{"start":46513,"length":5,"code":2339,"category":1,"messageText":"Property 'color' does not exist on type 'Output'."},{"start":46535,"length":5,"code":2339,"category":1,"messageText":"Property 'color' does not exist on type 'Output'."}]],[1058,[{"start":8239,"length":3,"code":2322,"category":1,"messageText":{"messageText":"Type 'RefObject' is not assignable to type 'LegacyRef | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'RefObject' is not assignable to type 'RefObject'.","category":1,"code":2322,"next":[{"messageText":"Type 'HTMLDivElement | null' is not assignable to type 'HTMLDivElement'.","category":1,"code":2322,"next":[{"messageText":"Type 'null' is not assignable to type 'HTMLDivElement'.","category":1,"code":2322}]}]}]},"relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":10381,"length":3,"messageText":"The expected type comes from property 'ref' which is declared here on type 'DetailedHTMLProps, HTMLDivElement>'","category":3,"code":6500}]},{"start":27025,"length":6,"code":2769,"category":1,"messageText":{"messageText":"No overload matches this call.","category":1,"code":2769,"next":[{"messageText":"Overload 1 of 3, '(props: { href: string; } & ButtonOwnProps & Omit & CommonProps & Omit, HTMLAnchorElement>, \"ref\"> & { ...; }, \"style\" | ... 27 more ... | \"startIcon\">): Element', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Type '(close?: boolean) => Promise' is not assignable to type 'MouseEventHandler'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'close' and 'event' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'MouseEvent' is not assignable to type 'boolean | undefined'.","category":1,"code":2322}]}]}]},{"messageText":"Overload 2 of 3, '(props: { component: ElementType; } & ButtonOwnProps & Omit & CommonProps & Omit<...>): Element | null', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Property 'component' is missing in type '{ children: string; variant: \"contained\"; startIcon: Element; onClick: (close?: boolean) => Promise; disabled: boolean; size: \"small\"; sx: { bgcolor: string; textTransform: \"none\"; fontWeight: number; fontSize: string; px: number; '&:hover': { ...; }; }; }' but required in type '{ component: ElementType; }'.","category":1,"code":2741,"canonicalHead":{"code":2322,"messageText":"Type '{ children: string; variant: \"contained\"; startIcon: Element; onClick: (close?: boolean) => Promise; disabled: boolean; size: \"small\"; sx: { bgcolor: string; textTransform: \"none\"; fontWeight: number; fontSize: string; px: number; '&:hover': { ...; }; }; }' is not assignable to type '{ component: ElementType; }'."}}]},{"messageText":"Overload 3 of 3, '(props: DefaultComponentProps>>): Element | null', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Type '(close?: boolean) => Promise' is not assignable to type 'MouseEventHandler'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'close' and 'event' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'MouseEvent' is not assignable to type 'boolean | undefined'.","category":1,"code":2322}]}]}]}]},"relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":98271,"length":7,"messageText":"The expected type comes from property 'onClick' which is declared here on type 'IntrinsicAttributes & { href: string; } & ButtonOwnProps & Omit & CommonProps & Omit<...>'","category":3,"code":6500},{"file":"./node_modules/@mui/material/esm/overridablecomponent/index.d.ts","start":539,"length":9,"messageText":"'component' is declared here.","category":3,"code":2728},{"file":"./node_modules/@types/react/index.d.ts","start":98271,"length":7,"messageText":"The expected type comes from property 'onClick' which is declared here on type 'IntrinsicAttributes & ButtonOwnProps & Omit & CommonProps & Omit<...>'","category":3,"code":6500}]}]]],"affectedFilesPendingEmit":[979,848,88,1061,850,83,1034,1003,1064,89,1062,988,865,984,981,987,961,980,968,969,960,1037,989,998,1065,1004,1001,994,90,1008,1035,849,1018,1019,1010,1032,1057,993,91,1039,1058,959,1059,1060,1063,112,122,1066,113,100,123,109,110,106,104,108,105,107,102,111,101,99,103,124,1067,844,125],"version":"5.9.3"}
\ No newline at end of file
+{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/app/components/richeditorutils.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./src/app/components/elementselectioncontext.tsx","./src/app/components/usedomelementselector.ts","./src/app/pages/dashboard/usecanvascontrols.ts","./node_modules/redux/dist/redux.d.ts","./node_modules/immer/dist/immer.d.ts","./node_modules/reselect/dist/reselect.d.ts","./node_modules/redux-thunk/dist/redux-thunk.d.ts","./node_modules/@reduxjs/toolkit/dist/uncheckedindexed.ts","./node_modules/@reduxjs/toolkit/dist/index.d.mts","./src/shared/config.ts","./src/shared/state/agentsslice.ts","./src/shared/state/dashboardlayoutslice.ts","./src/app/pages/dashboard/usedashboardselection.ts","./node_modules/html-to-image/lib/types.d.ts","./node_modules/html-to-image/lib/index.d.ts","./src/app/pages/views/captureviewthumbnail.ts","./src/app/pages/views/useiframeelementselector.ts","./node_modules/react-redux/dist/react-redux.d.ts","./src/shared/state/tempstateslice.ts","./src/shared/state/templatesslice.ts","./src/shared/state/skillsslice.ts","./src/shared/state/toolsslice.ts","./src/shared/state/modesslice.ts","./src/shared/state/settingsslice.ts","./src/shared/state/mcpregistryslice.ts","./src/shared/state/skillregistryslice.ts","./src/shared/state/outputsslice.ts","./src/shared/state/dashboardsslice.ts","./src/shared/state/store.ts","./src/shared/hooks.ts","./src/shared/sanitizesvg.ts","./node_modules/react-router/dist/development/router-clsu7khk.d.mts","./node_modules/react-router/dist/development/browser-dzsjabdq.d.mts","./node_modules/react-router/dist/development/dom-export.d.mts","./node_modules/react-router/dist/development/register-cryj3cjg.d.mts","./node_modules/react-router/dist/development/index-react-server-client-ezwjgpn_.d.mts","./node_modules/react-router/node_modules/cookie/dist/index.d.ts","./node_modules/react-router/dist/development/index.d.mts","./node_modules/react-router-dom/dist/index.d.mts","./src/shared/hooks/usekeyboardshortcuts.ts","./src/shared/styles/claudetokens.ts","./src/shared/ws/websocketmanager.ts","./src/types/css-modules.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@mui/material/esm/colors/amber.d.ts","./node_modules/@mui/material/esm/colors/blue.d.ts","./node_modules/@mui/material/esm/colors/bluegrey.d.ts","./node_modules/@mui/material/esm/colors/brown.d.ts","./node_modules/@mui/material/esm/colors/common.d.ts","./node_modules/@mui/material/esm/colors/cyan.d.ts","./node_modules/@mui/material/esm/colors/deeporange.d.ts","./node_modules/@mui/material/esm/colors/deeppurple.d.ts","./node_modules/@mui/material/esm/colors/green.d.ts","./node_modules/@mui/material/esm/colors/grey.d.ts","./node_modules/@mui/material/esm/colors/indigo.d.ts","./node_modules/@mui/material/esm/colors/lightblue.d.ts","./node_modules/@mui/material/esm/colors/lightgreen.d.ts","./node_modules/@mui/material/esm/colors/lime.d.ts","./node_modules/@mui/material/esm/colors/orange.d.ts","./node_modules/@mui/material/esm/colors/pink.d.ts","./node_modules/@mui/material/esm/colors/purple.d.ts","./node_modules/@mui/material/esm/colors/red.d.ts","./node_modules/@mui/material/esm/colors/teal.d.ts","./node_modules/@mui/material/esm/colors/yellow.d.ts","./node_modules/@mui/material/esm/colors/index.d.ts","./node_modules/@mui/types/esm/index.d.ts","./node_modules/@mui/material/esm/styles/identifier.d.ts","./node_modules/@mui/material/esm/styles/createpalette.d.ts","./node_modules/@emotion/sheet/dist/declarations/src/index.d.ts","./node_modules/@emotion/sheet/dist/emotion-sheet.cjs.d.mts","./node_modules/@emotion/utils/dist/declarations/src/types.d.ts","./node_modules/@emotion/utils/dist/declarations/src/index.d.ts","./node_modules/@emotion/utils/dist/emotion-utils.cjs.d.mts","./node_modules/@emotion/cache/dist/declarations/src/types.d.ts","./node_modules/@emotion/cache/dist/declarations/src/index.d.ts","./node_modules/@emotion/cache/dist/emotion-cache.cjs.default.d.ts","./node_modules/@emotion/cache/dist/emotion-cache.cjs.d.mts","./node_modules/@emotion/serialize/dist/declarations/src/index.d.ts","./node_modules/@emotion/serialize/dist/emotion-serialize.cjs.d.mts","./node_modules/@emotion/react/dist/declarations/src/context.d.ts","./node_modules/@emotion/react/dist/declarations/src/types.d.ts","./node_modules/@emotion/react/dist/declarations/src/theming.d.ts","./node_modules/@emotion/react/dist/declarations/src/jsx-namespace.d.ts","./node_modules/@emotion/react/dist/declarations/src/jsx.d.ts","./node_modules/@emotion/react/dist/declarations/src/global.d.ts","./node_modules/@emotion/react/dist/declarations/src/keyframes.d.ts","./node_modules/@emotion/react/dist/declarations/src/class-names.d.ts","./node_modules/@emotion/react/dist/declarations/src/css.d.ts","./node_modules/@emotion/react/dist/declarations/src/index.d.ts","./node_modules/@emotion/react/dist/emotion-react.cjs.d.mts","./node_modules/@emotion/styled/dist/declarations/src/jsx-namespace.d.ts","./node_modules/@emotion/styled/dist/declarations/src/types.d.ts","./node_modules/@emotion/styled/dist/declarations/src/index.d.ts","./node_modules/@emotion/styled/dist/emotion-styled.cjs.default.d.ts","./node_modules/@emotion/styled/dist/emotion-styled.cjs.d.mts","./node_modules/@mui/styled-engine/esm/styledengineprovider/styledengineprovider.d.ts","./node_modules/@mui/styled-engine/esm/styledengineprovider/index.d.ts","./node_modules/@mui/styled-engine/esm/globalstyles/globalstyles.d.ts","./node_modules/@mui/styled-engine/esm/globalstyles/index.d.ts","./node_modules/@mui/styled-engine/esm/index.d.ts","./node_modules/@mui/system/esm/style/style.d.ts","./node_modules/@mui/system/esm/style/index.d.ts","./node_modules/@mui/system/esm/borders/borders.d.ts","./node_modules/@mui/system/esm/borders/index.d.ts","./node_modules/@mui/system/esm/createbreakpoints/createbreakpoints.d.ts","./node_modules/@mui/system/esm/createtheme/shape.d.ts","./node_modules/@mui/system/esm/createtheme/createspacing.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/standardcssproperties.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/aliasescssproperties.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/overwritecssproperties.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/stylefunctionsx.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/extendsxprop.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/defaultsxconfig.d.ts","./node_modules/@mui/system/esm/stylefunctionsx/index.d.ts","./node_modules/@mui/system/esm/createtheme/applystyles.d.ts","./node_modules/@mui/system/esm/csscontainerqueries/csscontainerqueries.d.ts","./node_modules/@mui/system/esm/csscontainerqueries/index.d.ts","./node_modules/@mui/system/esm/createtheme/createtheme.d.ts","./node_modules/@mui/system/esm/createtheme/index.d.ts","./node_modules/@mui/system/esm/breakpoints/breakpoints.d.ts","./node_modules/@mui/system/esm/breakpoints/index.d.ts","./node_modules/@mui/system/esm/compose/compose.d.ts","./node_modules/@mui/system/esm/compose/index.d.ts","./node_modules/@mui/system/esm/display/display.d.ts","./node_modules/@mui/system/esm/display/index.d.ts","./node_modules/@mui/system/esm/flexbox/flexbox.d.ts","./node_modules/@mui/system/esm/flexbox/index.d.ts","./node_modules/@mui/system/esm/cssgrid/cssgrid.d.ts","./node_modules/@mui/system/esm/cssgrid/index.d.ts","./node_modules/@mui/system/esm/palette/palette.d.ts","./node_modules/@mui/system/esm/palette/index.d.ts","./node_modules/@mui/system/esm/positions/positions.d.ts","./node_modules/@mui/system/esm/positions/index.d.ts","./node_modules/@mui/system/esm/shadows/shadows.d.ts","./node_modules/@mui/system/esm/shadows/index.d.ts","./node_modules/@mui/system/esm/sizing/sizing.d.ts","./node_modules/@mui/system/esm/sizing/index.d.ts","./node_modules/@mui/system/esm/typography/typography.d.ts","./node_modules/@mui/system/esm/typography/index.d.ts","./node_modules/@mui/system/esm/getthemevalue/getthemevalue.d.ts","./node_modules/@mui/system/esm/getthemevalue/index.d.ts","./node_modules/@mui/private-theming/esm/defaulttheme/index.d.ts","./node_modules/@mui/private-theming/esm/themeprovider/themeprovider.d.ts","./node_modules/@mui/private-theming/esm/themeprovider/index.d.ts","./node_modules/@mui/private-theming/esm/usetheme/usetheme.d.ts","./node_modules/@mui/private-theming/esm/usetheme/index.d.ts","./node_modules/@mui/private-theming/esm/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/@mui/system/esm/globalstyles/globalstyles.d.ts","./node_modules/@mui/system/esm/globalstyles/index.d.ts","./node_modules/@mui/system/esm/spacing/spacing.d.ts","./node_modules/@mui/system/esm/spacing/index.d.ts","./node_modules/@mui/system/esm/box/box.d.ts","./node_modules/@mui/system/esm/box/boxclasses.d.ts","./node_modules/@mui/system/esm/box/index.d.ts","./node_modules/@mui/system/esm/createbox/createbox.d.ts","./node_modules/@mui/system/esm/createbox/index.d.ts","./node_modules/@mui/system/esm/createstyled/createstyled.d.ts","./node_modules/@mui/system/esm/createstyled/index.d.ts","./node_modules/@mui/system/esm/styled/styled.d.ts","./node_modules/@mui/system/esm/styled/index.d.ts","./node_modules/@mui/system/esm/usethemeprops/usethemeprops.d.ts","./node_modules/@mui/system/esm/usethemeprops/getthemeprops.d.ts","./node_modules/@mui/system/esm/usethemeprops/index.d.ts","./node_modules/@mui/system/esm/usetheme/usetheme.d.ts","./node_modules/@mui/system/esm/usetheme/index.d.ts","./node_modules/@mui/system/esm/usethemewithoutdefault/usethemewithoutdefault.d.ts","./node_modules/@mui/system/esm/usethemewithoutdefault/index.d.ts","./node_modules/@mui/system/esm/usemediaquery/usemediaquery.d.ts","./node_modules/@mui/system/esm/usemediaquery/index.d.ts","./node_modules/@mui/system/esm/colormanipulator/colormanipulator.d.ts","./node_modules/@mui/system/esm/colormanipulator/index.d.ts","./node_modules/@mui/system/esm/themeprovider/themeprovider.d.ts","./node_modules/@mui/system/esm/themeprovider/index.d.ts","./node_modules/@mui/system/esm/memotheme.d.ts","./node_modules/@mui/system/esm/initcolorschemescript/initcolorschemescript.d.ts","./node_modules/@mui/system/esm/initcolorschemescript/index.d.ts","./node_modules/@mui/system/esm/cssvars/localstoragemanager.d.ts","./node_modules/@mui/system/esm/cssvars/usecurrentcolorscheme.d.ts","./node_modules/@mui/system/esm/cssvars/createcssvarsprovider.d.ts","./node_modules/@mui/system/esm/cssvars/preparecssvars.d.ts","./node_modules/@mui/system/esm/cssvars/preparetypographyvars.d.ts","./node_modules/@mui/system/esm/cssvars/createcssvarstheme.d.ts","./node_modules/@mui/system/esm/cssvars/getcolorschemeselector.d.ts","./node_modules/@mui/system/esm/cssvars/index.d.ts","./node_modules/@mui/system/esm/cssvars/creategetcssvar.d.ts","./node_modules/@mui/system/esm/cssvars/cssvarsparser.d.ts","./node_modules/@mui/system/esm/responsiveproptype/responsiveproptype.d.ts","./node_modules/@mui/system/esm/responsiveproptype/index.d.ts","./node_modules/@mui/system/esm/container/containerclasses.d.ts","./node_modules/@mui/system/esm/container/containerprops.d.ts","./node_modules/@mui/system/esm/container/createcontainer.d.ts","./node_modules/@mui/system/esm/container/container.d.ts","./node_modules/@mui/system/esm/container/index.d.ts","./node_modules/@mui/system/esm/grid/gridprops.d.ts","./node_modules/@mui/system/esm/grid/grid.d.ts","./node_modules/@mui/system/esm/grid/creategrid.d.ts","./node_modules/@mui/system/esm/grid/gridclasses.d.ts","./node_modules/@mui/system/esm/grid/traversebreakpoints.d.ts","./node_modules/@mui/system/esm/grid/gridgenerator.d.ts","./node_modules/@mui/system/esm/grid/index.d.ts","./node_modules/@mui/system/esm/stack/stackprops.d.ts","./node_modules/@mui/system/esm/stack/stack.d.ts","./node_modules/@mui/system/esm/stack/createstack.d.ts","./node_modules/@mui/system/esm/stack/stackclasses.d.ts","./node_modules/@mui/system/esm/stack/index.d.ts","./node_modules/@mui/system/esm/version/index.d.ts","./node_modules/@mui/system/esm/index.d.ts","./node_modules/@mui/material/esm/styles/shadows.d.ts","./node_modules/@mui/material/esm/styles/createtransitions.d.ts","./node_modules/@mui/material/esm/styles/createmixins.d.ts","./node_modules/@mui/material/esm/styles/createtypography.d.ts","./node_modules/@mui/material/esm/styles/zindex.d.ts","./node_modules/@mui/material/esm/styles/createthemefoundation.d.ts","./node_modules/@mui/material/esm/overridablecomponent/index.d.ts","./node_modules/@mui/material/esm/svgicon/svgiconclasses.d.ts","./node_modules/@mui/material/esm/svgicon/svgicon.d.ts","./node_modules/@mui/material/esm/svgicon/index.d.ts","./node_modules/@mui/material/esm/internal/index.d.ts","./node_modules/@mui/material/esm/buttonbase/touchrippleclasses.d.ts","./node_modules/@mui/material/esm/buttonbase/touchripple.d.ts","./node_modules/@mui/material/esm/buttonbase/buttonbaseclasses.d.ts","./node_modules/@mui/material/esm/buttonbase/buttonbase.d.ts","./node_modules/@mui/material/esm/buttonbase/index.d.ts","./node_modules/@mui/material/esm/iconbutton/iconbuttonclasses.d.ts","./node_modules/@mui/material/esm/iconbutton/iconbutton.d.ts","./node_modules/@mui/material/esm/iconbutton/index.d.ts","./node_modules/@mui/material/esm/paper/paperclasses.d.ts","./node_modules/@mui/material/esm/paper/paper.d.ts","./node_modules/@mui/material/esm/paper/index.d.ts","./node_modules/@mui/material/esm/alert/alertclasses.d.ts","./node_modules/@mui/utils/esm/types/index.d.ts","./node_modules/@mui/material/esm/utils/types.d.ts","./node_modules/@mui/material/esm/alert/alert.d.ts","./node_modules/@mui/material/esm/alert/index.d.ts","./node_modules/@mui/material/esm/typography/typographyclasses.d.ts","./node_modules/@mui/material/esm/typography/typography.d.ts","./node_modules/@mui/material/esm/typography/index.d.ts","./node_modules/@mui/material/esm/alerttitle/alerttitleclasses.d.ts","./node_modules/@mui/material/esm/alerttitle/alerttitle.d.ts","./node_modules/@mui/material/esm/alerttitle/index.d.ts","./node_modules/@mui/material/esm/appbar/appbarclasses.d.ts","./node_modules/@mui/material/esm/appbar/appbar.d.ts","./node_modules/@mui/material/esm/appbar/index.d.ts","./node_modules/@mui/material/esm/chip/chipclasses.d.ts","./node_modules/@mui/material/esm/chip/chip.d.ts","./node_modules/@mui/material/esm/chip/index.d.ts","./node_modules/@popperjs/core/lib/enums.d.ts","./node_modules/@popperjs/core/lib/modifiers/popperoffsets.d.ts","./node_modules/@popperjs/core/lib/modifiers/flip.d.ts","./node_modules/@popperjs/core/lib/modifiers/hide.d.ts","./node_modules/@popperjs/core/lib/modifiers/offset.d.ts","./node_modules/@popperjs/core/lib/modifiers/eventlisteners.d.ts","./node_modules/@popperjs/core/lib/modifiers/computestyles.d.ts","./node_modules/@popperjs/core/lib/modifiers/arrow.d.ts","./node_modules/@popperjs/core/lib/modifiers/preventoverflow.d.ts","./node_modules/@popperjs/core/lib/modifiers/applystyles.d.ts","./node_modules/@popperjs/core/lib/types.d.ts","./node_modules/@popperjs/core/lib/modifiers/index.d.ts","./node_modules/@popperjs/core/lib/utils/detectoverflow.d.ts","./node_modules/@popperjs/core/lib/createpopper.d.ts","./node_modules/@popperjs/core/lib/popper-lite.d.ts","./node_modules/@popperjs/core/lib/popper.d.ts","./node_modules/@popperjs/core/lib/index.d.ts","./node_modules/@popperjs/core/index.d.ts","./node_modules/@mui/material/esm/portal/portal.types.d.ts","./node_modules/@mui/material/esm/portal/portal.d.ts","./node_modules/@mui/material/esm/portal/index.d.ts","./node_modules/@mui/material/esm/utils/polymorphiccomponent.d.ts","./node_modules/@mui/material/esm/popper/basepopper.types.d.ts","./node_modules/@mui/material/esm/popper/popper.d.ts","./node_modules/@mui/material/esm/popper/popperclasses.d.ts","./node_modules/@mui/material/esm/popper/index.d.ts","./node_modules/@mui/material/esm/useautocomplete/useautocomplete.d.ts","./node_modules/@mui/material/esm/useautocomplete/index.d.ts","./node_modules/@mui/material/esm/autocomplete/autocompleteclasses.d.ts","./node_modules/@mui/material/esm/autocomplete/autocomplete.d.ts","./node_modules/@mui/material/esm/autocomplete/index.d.ts","./node_modules/@mui/material/esm/avatar/avatarclasses.d.ts","./node_modules/@mui/material/esm/avatar/avatar.d.ts","./node_modules/@mui/material/esm/avatar/index.d.ts","./node_modules/@mui/material/esm/avatargroup/avatargroupclasses.d.ts","./node_modules/@mui/material/esm/avatargroup/avatargroup.d.ts","./node_modules/@mui/material/esm/avatargroup/index.d.ts","./node_modules/@types/react-transition-group/transition.d.ts","./node_modules/@mui/material/esm/transitions/transition.d.ts","./node_modules/@mui/material/esm/fade/fade.d.ts","./node_modules/@mui/material/esm/fade/index.d.ts","./node_modules/@mui/material/esm/backdrop/backdropclasses.d.ts","./node_modules/@mui/material/esm/backdrop/backdrop.d.ts","./node_modules/@mui/material/esm/backdrop/index.d.ts","./node_modules/@mui/material/esm/badge/badgeclasses.d.ts","./node_modules/@mui/material/esm/badge/badge.d.ts","./node_modules/@mui/material/esm/badge/index.d.ts","./node_modules/@mui/material/esm/bottomnavigationaction/bottomnavigationactionclasses.d.ts","./node_modules/@mui/material/esm/bottomnavigationaction/bottomnavigationaction.d.ts","./node_modules/@mui/material/esm/bottomnavigationaction/index.d.ts","./node_modules/@mui/material/esm/bottomnavigation/bottomnavigationclasses.d.ts","./node_modules/@mui/material/esm/bottomnavigation/bottomnavigation.d.ts","./node_modules/@mui/material/esm/bottomnavigation/index.d.ts","./node_modules/@mui/material/esm/breadcrumbs/breadcrumbsclasses.d.ts","./node_modules/@mui/material/esm/breadcrumbs/breadcrumbs.d.ts","./node_modules/@mui/material/esm/breadcrumbs/index.d.ts","./node_modules/@mui/material/esm/buttongroup/buttongroupclasses.d.ts","./node_modules/@mui/material/esm/buttongroup/buttongroup.d.ts","./node_modules/@mui/material/esm/buttongroup/buttongroupcontext.d.ts","./node_modules/@mui/material/esm/buttongroup/buttongroupbuttoncontext.d.ts","./node_modules/@mui/material/esm/buttongroup/index.d.ts","./node_modules/@mui/material/esm/button/buttonclasses.d.ts","./node_modules/@mui/material/esm/button/button.d.ts","./node_modules/@mui/material/esm/button/index.d.ts","./node_modules/@mui/material/esm/cardactionarea/cardactionareaclasses.d.ts","./node_modules/@mui/material/esm/cardactionarea/cardactionarea.d.ts","./node_modules/@mui/material/esm/cardactionarea/index.d.ts","./node_modules/@mui/material/esm/cardactions/cardactionsclasses.d.ts","./node_modules/@mui/material/esm/cardactions/cardactions.d.ts","./node_modules/@mui/material/esm/cardactions/index.d.ts","./node_modules/@mui/material/esm/cardcontent/cardcontentclasses.d.ts","./node_modules/@mui/material/esm/cardcontent/cardcontent.d.ts","./node_modules/@mui/material/esm/cardcontent/index.d.ts","./node_modules/@mui/material/esm/cardheader/cardheaderclasses.d.ts","./node_modules/@mui/material/esm/cardheader/cardheader.d.ts","./node_modules/@mui/material/esm/cardheader/index.d.ts","./node_modules/@mui/material/esm/cardmedia/cardmediaclasses.d.ts","./node_modules/@mui/material/esm/cardmedia/cardmedia.d.ts","./node_modules/@mui/material/esm/cardmedia/index.d.ts","./node_modules/@mui/material/esm/card/cardclasses.d.ts","./node_modules/@mui/material/esm/card/card.d.ts","./node_modules/@mui/material/esm/card/index.d.ts","./node_modules/@mui/material/esm/internal/switchbaseclasses.d.ts","./node_modules/@mui/material/esm/internal/switchbase.d.ts","./node_modules/@mui/material/esm/checkbox/checkboxclasses.d.ts","./node_modules/@mui/material/esm/checkbox/checkbox.d.ts","./node_modules/@mui/material/esm/checkbox/index.d.ts","./node_modules/@mui/material/esm/circularprogress/circularprogressclasses.d.ts","./node_modules/@mui/material/esm/circularprogress/circularprogress.d.ts","./node_modules/@mui/material/esm/circularprogress/index.d.ts","./node_modules/@types/react-transition-group/config.d.ts","./node_modules/@types/react-transition-group/csstransition.d.ts","./node_modules/@types/react-transition-group/switchtransition.d.ts","./node_modules/@types/react-transition-group/transitiongroup.d.ts","./node_modules/@types/react-transition-group/index.d.ts","./node_modules/@mui/material/esm/collapse/collapseclasses.d.ts","./node_modules/@mui/material/esm/collapse/collapse.d.ts","./node_modules/@mui/material/esm/collapse/index.d.ts","./node_modules/@mui/material/esm/container/containerclasses.d.ts","./node_modules/@mui/material/esm/container/container.d.ts","./node_modules/@mui/material/esm/container/index.d.ts","./node_modules/@mui/material/esm/cssbaseline/cssbaseline.d.ts","./node_modules/@mui/material/esm/cssbaseline/index.d.ts","./node_modules/@mui/material/esm/dialogactions/dialogactionsclasses.d.ts","./node_modules/@mui/material/esm/dialogactions/dialogactions.d.ts","./node_modules/@mui/material/esm/dialogactions/index.d.ts","./node_modules/@mui/material/esm/dialogcontent/dialogcontentclasses.d.ts","./node_modules/@mui/material/esm/dialogcontent/dialogcontent.d.ts","./node_modules/@mui/material/esm/dialogcontent/index.d.ts","./node_modules/@mui/material/esm/dialogcontenttext/dialogcontenttextclasses.d.ts","./node_modules/@mui/material/esm/dialogcontenttext/dialogcontenttext.d.ts","./node_modules/@mui/material/esm/dialogcontenttext/index.d.ts","./node_modules/@mui/material/esm/modal/modalmanager.d.ts","./node_modules/@mui/material/esm/modal/modalclasses.d.ts","./node_modules/@mui/material/esm/modal/modal.d.ts","./node_modules/@mui/material/esm/modal/index.d.ts","./node_modules/@mui/material/esm/dialog/dialogclasses.d.ts","./node_modules/@mui/material/esm/dialog/dialog.d.ts","./node_modules/@mui/material/esm/dialog/index.d.ts","./node_modules/@mui/material/esm/dialogtitle/dialogtitleclasses.d.ts","./node_modules/@mui/material/esm/dialogtitle/dialogtitle.d.ts","./node_modules/@mui/material/esm/dialogtitle/index.d.ts","./node_modules/@mui/material/esm/divider/dividerclasses.d.ts","./node_modules/@mui/material/esm/divider/divider.d.ts","./node_modules/@mui/material/esm/divider/index.d.ts","./node_modules/@mui/material/esm/slide/slide.d.ts","./node_modules/@mui/material/esm/slide/index.d.ts","./node_modules/@mui/material/esm/drawer/drawerclasses.d.ts","./node_modules/@mui/material/esm/drawer/drawer.d.ts","./node_modules/@mui/material/esm/drawer/index.d.ts","./node_modules/@mui/material/esm/accordionactions/accordionactionsclasses.d.ts","./node_modules/@mui/material/esm/accordionactions/accordionactions.d.ts","./node_modules/@mui/material/esm/accordionactions/index.d.ts","./node_modules/@mui/material/esm/accordiondetails/accordiondetailsclasses.d.ts","./node_modules/@mui/material/esm/accordiondetails/accordiondetails.d.ts","./node_modules/@mui/material/esm/accordiondetails/index.d.ts","./node_modules/@mui/material/esm/accordion/accordionclasses.d.ts","./node_modules/@mui/material/esm/accordion/accordion.d.ts","./node_modules/@mui/material/esm/accordion/index.d.ts","./node_modules/@mui/material/esm/accordionsummary/accordionsummaryclasses.d.ts","./node_modules/@mui/material/esm/accordionsummary/accordionsummary.d.ts","./node_modules/@mui/material/esm/accordionsummary/index.d.ts","./node_modules/@mui/material/esm/fab/fabclasses.d.ts","./node_modules/@mui/material/esm/fab/fab.d.ts","./node_modules/@mui/material/esm/fab/index.d.ts","./node_modules/@mui/material/esm/inputbase/inputbaseclasses.d.ts","./node_modules/@mui/material/esm/inputbase/inputbase.d.ts","./node_modules/@mui/material/esm/inputbase/index.d.ts","./node_modules/@mui/material/esm/filledinput/filledinputclasses.d.ts","./node_modules/@mui/material/esm/filledinput/filledinput.d.ts","./node_modules/@mui/material/esm/filledinput/index.d.ts","./node_modules/@mui/material/esm/formcontrollabel/formcontrollabelclasses.d.ts","./node_modules/@mui/material/esm/formcontrollabel/formcontrollabel.d.ts","./node_modules/@mui/material/esm/formcontrollabel/index.d.ts","./node_modules/@mui/material/esm/formcontrol/formcontrolclasses.d.ts","./node_modules/@mui/material/esm/formcontrol/formcontrol.d.ts","./node_modules/@mui/material/esm/formcontrol/formcontrolcontext.d.ts","./node_modules/@mui/material/esm/formcontrol/useformcontrol.d.ts","./node_modules/@mui/material/esm/formcontrol/index.d.ts","./node_modules/@mui/material/esm/formgroup/formgroupclasses.d.ts","./node_modules/@mui/material/esm/formgroup/formgroup.d.ts","./node_modules/@mui/material/esm/formgroup/index.d.ts","./node_modules/@mui/material/esm/formhelpertext/formhelpertextclasses.d.ts","./node_modules/@mui/material/esm/formhelpertext/formhelpertext.d.ts","./node_modules/@mui/material/esm/formhelpertext/index.d.ts","./node_modules/@mui/material/esm/formlabel/formlabelclasses.d.ts","./node_modules/@mui/material/esm/formlabel/formlabel.d.ts","./node_modules/@mui/material/esm/formlabel/index.d.ts","./node_modules/@mui/material/esm/gridlegacy/gridlegacyclasses.d.ts","./node_modules/@mui/material/esm/gridlegacy/gridlegacy.d.ts","./node_modules/@mui/material/esm/gridlegacy/index.d.ts","./node_modules/@mui/material/esm/grid/grid.d.ts","./node_modules/@mui/material/esm/grid/gridclasses.d.ts","./node_modules/@mui/material/esm/grid/index.d.ts","./node_modules/@mui/material/esm/icon/iconclasses.d.ts","./node_modules/@mui/material/esm/icon/icon.d.ts","./node_modules/@mui/material/esm/icon/index.d.ts","./node_modules/@mui/material/esm/imagelist/imagelistclasses.d.ts","./node_modules/@mui/material/esm/imagelist/imagelist.d.ts","./node_modules/@mui/material/esm/imagelist/index.d.ts","./node_modules/@mui/material/esm/imagelistitembar/imagelistitembarclasses.d.ts","./node_modules/@mui/material/esm/imagelistitembar/imagelistitembar.d.ts","./node_modules/@mui/material/esm/imagelistitembar/index.d.ts","./node_modules/@mui/material/esm/imagelistitem/imagelistitemclasses.d.ts","./node_modules/@mui/material/esm/imagelistitem/imagelistitem.d.ts","./node_modules/@mui/material/esm/imagelistitem/index.d.ts","./node_modules/@mui/material/esm/inputadornment/inputadornmentclasses.d.ts","./node_modules/@mui/material/esm/inputadornment/inputadornment.d.ts","./node_modules/@mui/material/esm/inputadornment/index.d.ts","./node_modules/@mui/material/esm/inputlabel/inputlabelclasses.d.ts","./node_modules/@mui/material/esm/inputlabel/inputlabel.d.ts","./node_modules/@mui/material/esm/inputlabel/index.d.ts","./node_modules/@mui/material/esm/input/inputclasses.d.ts","./node_modules/@mui/material/esm/input/input.d.ts","./node_modules/@mui/material/esm/input/index.d.ts","./node_modules/@mui/material/esm/linearprogress/linearprogressclasses.d.ts","./node_modules/@mui/material/esm/linearprogress/linearprogress.d.ts","./node_modules/@mui/material/esm/linearprogress/index.d.ts","./node_modules/@mui/material/esm/link/linkclasses.d.ts","./node_modules/@mui/material/esm/link/link.d.ts","./node_modules/@mui/material/esm/link/index.d.ts","./node_modules/@mui/material/esm/listitemavatar/listitemavatarclasses.d.ts","./node_modules/@mui/material/esm/listitemavatar/listitemavatar.d.ts","./node_modules/@mui/material/esm/listitemavatar/index.d.ts","./node_modules/@mui/material/esm/listitemicon/listitemiconclasses.d.ts","./node_modules/@mui/material/esm/listitemicon/listitemicon.d.ts","./node_modules/@mui/material/esm/listitemicon/index.d.ts","./node_modules/@mui/material/esm/listitem/listitemclasses.d.ts","./node_modules/@mui/material/esm/listitem/listitem.d.ts","./node_modules/@mui/material/esm/listitem/index.d.ts","./node_modules/@mui/material/esm/listitembutton/listitembuttonclasses.d.ts","./node_modules/@mui/material/esm/listitembutton/listitembutton.d.ts","./node_modules/@mui/material/esm/listitembutton/index.d.ts","./node_modules/@mui/material/esm/listitemsecondaryaction/listitemsecondaryactionclasses.d.ts","./node_modules/@mui/material/esm/listitemsecondaryaction/listitemsecondaryaction.d.ts","./node_modules/@mui/material/esm/listitemsecondaryaction/index.d.ts","./node_modules/@mui/material/esm/listitemtext/listitemtextclasses.d.ts","./node_modules/@mui/material/esm/listitemtext/listitemtext.d.ts","./node_modules/@mui/material/esm/listitemtext/index.d.ts","./node_modules/@mui/material/esm/list/listclasses.d.ts","./node_modules/@mui/material/esm/list/list.d.ts","./node_modules/@mui/material/esm/list/index.d.ts","./node_modules/@mui/material/esm/listsubheader/listsubheaderclasses.d.ts","./node_modules/@mui/material/esm/listsubheader/listsubheader.d.ts","./node_modules/@mui/material/esm/listsubheader/index.d.ts","./node_modules/@mui/material/esm/menuitem/menuitemclasses.d.ts","./node_modules/@mui/material/esm/menuitem/menuitem.d.ts","./node_modules/@mui/material/esm/menuitem/index.d.ts","./node_modules/@mui/material/esm/menulist/menulist.d.ts","./node_modules/@mui/material/esm/menulist/index.d.ts","./node_modules/@mui/material/esm/popover/popoverclasses.d.ts","./node_modules/@mui/material/esm/popover/popover.d.ts","./node_modules/@mui/material/esm/popover/index.d.ts","./node_modules/@mui/material/esm/menu/menuclasses.d.ts","./node_modules/@mui/material/esm/menu/menu.d.ts","./node_modules/@mui/material/esm/menu/index.d.ts","./node_modules/@mui/material/esm/mobilestepper/mobilestepperclasses.d.ts","./node_modules/@mui/material/esm/mobilestepper/mobilestepper.d.ts","./node_modules/@mui/material/esm/mobilestepper/index.d.ts","./node_modules/@mui/material/esm/nativeselect/nativeselectinput.d.ts","./node_modules/@mui/material/esm/nativeselect/nativeselectclasses.d.ts","./node_modules/@mui/material/esm/nativeselect/nativeselect.d.ts","./node_modules/@mui/material/esm/nativeselect/index.d.ts","./node_modules/@mui/material/esm/usemediaquery/index.d.ts","./node_modules/@mui/material/esm/outlinedinput/outlinedinputclasses.d.ts","./node_modules/@mui/material/esm/outlinedinput/outlinedinput.d.ts","./node_modules/@mui/material/esm/outlinedinput/index.d.ts","./node_modules/@mui/material/esm/usepagination/usepagination.d.ts","./node_modules/@mui/material/esm/pagination/paginationclasses.d.ts","./node_modules/@mui/material/esm/pagination/pagination.d.ts","./node_modules/@mui/material/esm/pagination/index.d.ts","./node_modules/@mui/material/esm/paginationitem/paginationitemclasses.d.ts","./node_modules/@mui/material/esm/paginationitem/paginationitem.d.ts","./node_modules/@mui/material/esm/paginationitem/index.d.ts","./node_modules/@mui/material/esm/radiogroup/radiogroup.d.ts","./node_modules/@mui/material/esm/radiogroup/radiogroupcontext.d.ts","./node_modules/@mui/material/esm/radiogroup/useradiogroup.d.ts","./node_modules/@mui/material/esm/radiogroup/radiogroupclasses.d.ts","./node_modules/@mui/material/esm/radiogroup/index.d.ts","./node_modules/@mui/material/esm/radio/radioclasses.d.ts","./node_modules/@mui/material/esm/radio/radio.d.ts","./node_modules/@mui/material/esm/radio/index.d.ts","./node_modules/@mui/material/esm/rating/ratingclasses.d.ts","./node_modules/@mui/material/esm/rating/rating.d.ts","./node_modules/@mui/material/esm/rating/index.d.ts","./node_modules/@mui/material/esm/scopedcssbaseline/scopedcssbaselineclasses.d.ts","./node_modules/@mui/material/esm/scopedcssbaseline/scopedcssbaseline.d.ts","./node_modules/@mui/material/esm/scopedcssbaseline/index.d.ts","./node_modules/@mui/material/esm/select/selectinput.d.ts","./node_modules/@mui/material/esm/select/selectclasses.d.ts","./node_modules/@mui/material/esm/select/select.d.ts","./node_modules/@mui/material/esm/select/index.d.ts","./node_modules/@mui/material/esm/skeleton/skeletonclasses.d.ts","./node_modules/@mui/material/esm/skeleton/skeleton.d.ts","./node_modules/@mui/material/esm/skeleton/index.d.ts","./node_modules/@mui/material/esm/slider/useslider.types.d.ts","./node_modules/@mui/material/esm/slider/slidervaluelabel.types.d.ts","./node_modules/@mui/material/esm/slider/slidervaluelabel.d.ts","./node_modules/@mui/material/esm/slider/sliderclasses.d.ts","./node_modules/@mui/material/esm/slider/slider.d.ts","./node_modules/@mui/material/esm/slider/index.d.ts","./node_modules/@mui/material/esm/snackbarcontent/snackbarcontentclasses.d.ts","./node_modules/@mui/material/esm/snackbarcontent/snackbarcontent.d.ts","./node_modules/@mui/material/esm/snackbarcontent/index.d.ts","./node_modules/@mui/material/esm/clickawaylistener/clickawaylistener.d.ts","./node_modules/@mui/material/esm/clickawaylistener/index.d.ts","./node_modules/@mui/material/esm/snackbar/snackbarclasses.d.ts","./node_modules/@mui/material/esm/snackbar/snackbar.d.ts","./node_modules/@mui/material/esm/snackbar/index.d.ts","./node_modules/@mui/material/esm/transitions/index.d.ts","./node_modules/@mui/material/esm/speeddial/speeddialclasses.d.ts","./node_modules/@mui/material/esm/speeddial/speeddial.d.ts","./node_modules/@mui/material/esm/speeddial/index.d.ts","./node_modules/@mui/material/esm/tooltip/tooltipclasses.d.ts","./node_modules/@mui/material/esm/tooltip/tooltip.d.ts","./node_modules/@mui/material/esm/tooltip/index.d.ts","./node_modules/@mui/material/esm/speeddialaction/speeddialactionclasses.d.ts","./node_modules/@mui/material/esm/speeddialaction/speeddialaction.d.ts","./node_modules/@mui/material/esm/speeddialaction/index.d.ts","./node_modules/@mui/material/esm/speeddialicon/speeddialiconclasses.d.ts","./node_modules/@mui/material/esm/speeddialicon/speeddialicon.d.ts","./node_modules/@mui/material/esm/speeddialicon/index.d.ts","./node_modules/@mui/material/esm/stack/stack.d.ts","./node_modules/@mui/material/esm/stack/stackclasses.d.ts","./node_modules/@mui/material/esm/stack/index.d.ts","./node_modules/@mui/material/esm/stepbutton/stepbuttonclasses.d.ts","./node_modules/@mui/material/esm/stepbutton/stepbutton.d.ts","./node_modules/@mui/material/esm/stepbutton/index.d.ts","./node_modules/@mui/material/esm/stepconnector/stepconnectorclasses.d.ts","./node_modules/@mui/material/esm/stepconnector/stepconnector.d.ts","./node_modules/@mui/material/esm/stepconnector/index.d.ts","./node_modules/@mui/material/esm/stepcontent/stepcontentclasses.d.ts","./node_modules/@mui/material/esm/stepcontent/stepcontent.d.ts","./node_modules/@mui/material/esm/stepcontent/index.d.ts","./node_modules/@mui/material/esm/stepicon/stepiconclasses.d.ts","./node_modules/@mui/material/esm/stepicon/stepicon.d.ts","./node_modules/@mui/material/esm/stepicon/index.d.ts","./node_modules/@mui/material/esm/steplabel/steplabelclasses.d.ts","./node_modules/@mui/material/esm/steplabel/steplabel.d.ts","./node_modules/@mui/material/esm/steplabel/index.d.ts","./node_modules/@mui/material/esm/stepper/stepperclasses.d.ts","./node_modules/@mui/material/esm/stepper/stepper.d.ts","./node_modules/@mui/material/esm/stepper/steppercontext.d.ts","./node_modules/@mui/material/esm/stepper/index.d.ts","./node_modules/@mui/material/esm/step/stepclasses.d.ts","./node_modules/@mui/material/esm/step/step.d.ts","./node_modules/@mui/material/esm/step/stepcontext.d.ts","./node_modules/@mui/material/esm/step/index.d.ts","./node_modules/@mui/material/esm/swipeabledrawer/swipeabledrawer.d.ts","./node_modules/@mui/material/esm/swipeabledrawer/index.d.ts","./node_modules/@mui/material/esm/switch/switchclasses.d.ts","./node_modules/@mui/material/esm/switch/switch.d.ts","./node_modules/@mui/material/esm/switch/index.d.ts","./node_modules/@mui/material/esm/tablebody/tablebodyclasses.d.ts","./node_modules/@mui/material/esm/tablebody/tablebody.d.ts","./node_modules/@mui/material/esm/tablebody/index.d.ts","./node_modules/@mui/material/esm/tablecell/tablecellclasses.d.ts","./node_modules/@mui/material/esm/tablecell/tablecell.d.ts","./node_modules/@mui/material/esm/tablecell/index.d.ts","./node_modules/@mui/material/esm/tablecontainer/tablecontainerclasses.d.ts","./node_modules/@mui/material/esm/tablecontainer/tablecontainer.d.ts","./node_modules/@mui/material/esm/tablecontainer/index.d.ts","./node_modules/@mui/material/esm/tablehead/tableheadclasses.d.ts","./node_modules/@mui/material/esm/tablehead/tablehead.d.ts","./node_modules/@mui/material/esm/tablehead/index.d.ts","./node_modules/@mui/material/esm/tablepaginationactions/tablepaginationactions.d.ts","./node_modules/@mui/material/esm/tablepaginationactions/tablepaginationactionsclasses.d.ts","./node_modules/@mui/material/esm/tablepaginationactions/index.d.ts","./node_modules/@mui/material/esm/tablepagination/tablepaginationclasses.d.ts","./node_modules/@mui/material/esm/toolbar/toolbarclasses.d.ts","./node_modules/@mui/material/esm/toolbar/toolbar.d.ts","./node_modules/@mui/material/esm/toolbar/index.d.ts","./node_modules/@mui/material/esm/tablepagination/tablepagination.d.ts","./node_modules/@mui/material/esm/tablepagination/index.d.ts","./node_modules/@mui/material/esm/table/tableclasses.d.ts","./node_modules/@mui/material/esm/table/table.d.ts","./node_modules/@mui/material/esm/table/index.d.ts","./node_modules/@mui/material/esm/tablerow/tablerowclasses.d.ts","./node_modules/@mui/material/esm/tablerow/tablerow.d.ts","./node_modules/@mui/material/esm/tablerow/index.d.ts","./node_modules/@mui/material/esm/tablesortlabel/tablesortlabelclasses.d.ts","./node_modules/@mui/material/esm/tablesortlabel/tablesortlabel.d.ts","./node_modules/@mui/material/esm/tablesortlabel/index.d.ts","./node_modules/@mui/material/esm/tablefooter/tablefooterclasses.d.ts","./node_modules/@mui/material/esm/tablefooter/tablefooter.d.ts","./node_modules/@mui/material/esm/tablefooter/index.d.ts","./node_modules/@mui/material/esm/tab/tabclasses.d.ts","./node_modules/@mui/material/esm/tab/tab.d.ts","./node_modules/@mui/material/esm/tab/index.d.ts","./node_modules/@mui/material/esm/tabscrollbutton/tabscrollbuttonclasses.d.ts","./node_modules/@mui/material/esm/tabscrollbutton/tabscrollbutton.d.ts","./node_modules/@mui/material/esm/tabscrollbutton/index.d.ts","./node_modules/@mui/material/esm/tabs/tabsclasses.d.ts","./node_modules/@mui/material/esm/tabs/tabs.d.ts","./node_modules/@mui/material/esm/tabs/index.d.ts","./node_modules/@mui/material/esm/textfield/textfieldclasses.d.ts","./node_modules/@mui/material/esm/textfield/textfield.d.ts","./node_modules/@mui/material/esm/textfield/index.d.ts","./node_modules/@mui/material/esm/togglebutton/togglebuttonclasses.d.ts","./node_modules/@mui/material/esm/togglebutton/togglebutton.d.ts","./node_modules/@mui/material/esm/togglebutton/index.d.ts","./node_modules/@mui/material/esm/togglebuttongroup/togglebuttongroupclasses.d.ts","./node_modules/@mui/material/esm/togglebuttongroup/togglebuttongroup.d.ts","./node_modules/@mui/material/esm/togglebuttongroup/index.d.ts","./node_modules/@mui/material/esm/styles/props.d.ts","./node_modules/@mui/material/esm/styles/overrides.d.ts","./node_modules/@mui/material/esm/styles/variants.d.ts","./node_modules/@mui/material/esm/styles/components.d.ts","./node_modules/@mui/material/esm/styles/createthemenovars.d.ts","./node_modules/@mui/material/esm/styles/createthemewithvars.d.ts","./node_modules/@mui/material/esm/styles/createtheme.d.ts","./node_modules/@mui/material/esm/styles/adaptv4theme.d.ts","./node_modules/@mui/material/esm/styles/createcolorscheme.d.ts","./node_modules/@mui/material/esm/styles/createstyles.d.ts","./node_modules/@mui/material/esm/styles/responsivefontsizes.d.ts","./node_modules/@mui/system/esm/createbreakpoints/index.d.ts","./node_modules/@mui/material/esm/styles/usetheme.d.ts","./node_modules/@mui/material/esm/styles/usethemeprops.d.ts","./node_modules/@mui/material/esm/styles/slotshouldforwardprop.d.ts","./node_modules/@mui/material/esm/styles/rootshouldforwardprop.d.ts","./node_modules/@mui/material/esm/styles/styled.d.ts","./node_modules/@mui/material/esm/styles/themeprovider.d.ts","./node_modules/@mui/material/esm/styles/cssutils.d.ts","./node_modules/@mui/material/esm/styles/makestyles.d.ts","./node_modules/@mui/material/esm/styles/withstyles.d.ts","./node_modules/@mui/material/esm/styles/withtheme.d.ts","./node_modules/@mui/material/esm/styles/themeproviderwithvars.d.ts","./node_modules/@mui/material/esm/styles/getoverlayalpha.d.ts","./node_modules/@mui/material/esm/styles/shouldskipgeneratingvar.d.ts","./node_modules/@mui/material/esm/styles/excludevariablesfromroot.d.ts","./node_modules/@mui/material/esm/styles/index.d.ts","./node_modules/@mui/utils/esm/classnamegenerator/classnamegenerator.d.ts","./node_modules/@mui/utils/esm/classnamegenerator/index.d.ts","./node_modules/@mui/utils/esm/capitalize/capitalize.d.ts","./node_modules/@mui/utils/esm/capitalize/index.d.ts","./node_modules/@mui/material/esm/utils/capitalize.d.ts","./node_modules/@mui/utils/esm/createchainedfunction/createchainedfunction.d.ts","./node_modules/@mui/utils/esm/createchainedfunction/index.d.ts","./node_modules/@mui/material/esm/utils/createchainedfunction.d.ts","./node_modules/@mui/material/esm/utils/createsvgicon.d.ts","./node_modules/@mui/utils/esm/debounce/debounce.d.ts","./node_modules/@mui/utils/esm/debounce/index.d.ts","./node_modules/@mui/material/esm/utils/debounce.d.ts","./node_modules/@mui/utils/esm/deprecatedproptype/deprecatedproptype.d.ts","./node_modules/@mui/utils/esm/deprecatedproptype/index.d.ts","./node_modules/@mui/material/esm/utils/deprecatedproptype.d.ts","./node_modules/@mui/utils/esm/ismuielement/ismuielement.d.ts","./node_modules/@mui/utils/esm/ismuielement/index.d.ts","./node_modules/@mui/material/esm/utils/ismuielement.d.ts","./node_modules/@mui/material/esm/utils/memotheme.d.ts","./node_modules/@mui/utils/esm/ownerdocument/ownerdocument.d.ts","./node_modules/@mui/utils/esm/ownerdocument/index.d.ts","./node_modules/@mui/material/esm/utils/ownerdocument.d.ts","./node_modules/@mui/utils/esm/ownerwindow/ownerwindow.d.ts","./node_modules/@mui/utils/esm/ownerwindow/index.d.ts","./node_modules/@mui/material/esm/utils/ownerwindow.d.ts","./node_modules/@mui/utils/esm/requirepropfactory/requirepropfactory.d.ts","./node_modules/@mui/utils/esm/requirepropfactory/index.d.ts","./node_modules/@mui/material/esm/utils/requirepropfactory.d.ts","./node_modules/@mui/utils/esm/setref/setref.d.ts","./node_modules/@mui/utils/esm/setref/index.d.ts","./node_modules/@mui/material/esm/utils/setref.d.ts","./node_modules/@mui/utils/esm/useenhancedeffect/useenhancedeffect.d.ts","./node_modules/@mui/utils/esm/useenhancedeffect/index.d.ts","./node_modules/@mui/material/esm/utils/useenhancedeffect.d.ts","./node_modules/@mui/utils/esm/useid/useid.d.ts","./node_modules/@mui/utils/esm/useid/index.d.ts","./node_modules/@mui/material/esm/utils/useid.d.ts","./node_modules/@mui/utils/esm/unsupportedprop/unsupportedprop.d.ts","./node_modules/@mui/utils/esm/unsupportedprop/index.d.ts","./node_modules/@mui/material/esm/utils/unsupportedprop.d.ts","./node_modules/@mui/utils/esm/usecontrolled/usecontrolled.d.ts","./node_modules/@mui/utils/esm/usecontrolled/index.d.ts","./node_modules/@mui/material/esm/utils/usecontrolled.d.ts","./node_modules/@mui/utils/esm/useeventcallback/useeventcallback.d.ts","./node_modules/@mui/utils/esm/useeventcallback/index.d.ts","./node_modules/@mui/material/esm/utils/useeventcallback.d.ts","./node_modules/@mui/utils/esm/useforkref/useforkref.d.ts","./node_modules/@mui/utils/esm/useforkref/index.d.ts","./node_modules/@mui/material/esm/utils/useforkref.d.ts","./node_modules/@mui/material/esm/utils/mergeslotprops.d.ts","./node_modules/@mui/material/esm/utils/index.d.ts","./node_modules/@mui/material/esm/box/box.d.ts","./node_modules/@mui/material/esm/box/boxclasses.d.ts","./node_modules/@mui/material/esm/box/index.d.ts","./node_modules/@mui/material/esm/darkscrollbar/index.d.ts","./node_modules/@mui/material/esm/grow/grow.d.ts","./node_modules/@mui/material/esm/grow/index.d.ts","./node_modules/@mui/material/esm/nossr/nossr.types.d.ts","./node_modules/@mui/material/esm/nossr/nossr.d.ts","./node_modules/@mui/material/esm/nossr/index.d.ts","./node_modules/@mui/material/esm/textareaautosize/textareaautosize.types.d.ts","./node_modules/@mui/material/esm/textareaautosize/textareaautosize.d.ts","./node_modules/@mui/material/esm/textareaautosize/index.d.ts","./node_modules/@mui/material/esm/usescrolltrigger/usescrolltrigger.d.ts","./node_modules/@mui/material/esm/usescrolltrigger/index.d.ts","./node_modules/@mui/material/esm/zoom/zoom.d.ts","./node_modules/@mui/material/esm/zoom/index.d.ts","./node_modules/@mui/material/esm/globalstyles/globalstyles.d.ts","./node_modules/@mui/material/esm/globalstyles/index.d.ts","./node_modules/@mui/material/esm/version/index.d.ts","./node_modules/@mui/utils/esm/composeclasses/composeclasses.d.ts","./node_modules/@mui/utils/esm/composeclasses/index.d.ts","./node_modules/@mui/utils/esm/generateutilityclass/generateutilityclass.d.ts","./node_modules/@mui/utils/esm/generateutilityclass/index.d.ts","./node_modules/@mui/material/esm/generateutilityclass/index.d.ts","./node_modules/@mui/utils/esm/generateutilityclasses/generateutilityclasses.d.ts","./node_modules/@mui/utils/esm/generateutilityclasses/index.d.ts","./node_modules/@mui/material/esm/generateutilityclasses/index.d.ts","./node_modules/@mui/material/esm/unstable_trapfocus/focustrap.types.d.ts","./node_modules/@mui/material/esm/unstable_trapfocus/focustrap.d.ts","./node_modules/@mui/material/esm/unstable_trapfocus/index.d.ts","./node_modules/@mui/material/esm/initcolorschemescript/initcolorschemescript.d.ts","./node_modules/@mui/material/esm/initcolorschemescript/index.d.ts","./node_modules/@mui/material/esm/index.d.ts","./node_modules/@mui/icons-material/esm/dashboard.d.ts","./node_modules/@mui/icons-material/esm/description.d.ts","./node_modules/@mui/icons-material/esm/psychology.d.ts","./node_modules/@mui/icons-material/esm/build.d.ts","./node_modules/@mui/icons-material/esm/tune.d.ts","./node_modules/@mui/icons-material/esm/terminal.d.ts","./node_modules/@mui/icons-material/esm/viewquilt.d.ts","./node_modules/@mui/icons-material/esm/expandmore.d.ts","./node_modules/@mui/icons-material/esm/add.d.ts","./node_modules/@mui/icons-material/esm/settings.d.ts","./node_modules/@mui/icons-material/esm/viewsidebaroutlined.d.ts","./node_modules/@mui/icons-material/esm/arrowbackoutlined.d.ts","./node_modules/@mui/icons-material/esm/arrowforwardoutlined.d.ts","./node_modules/@mui/icons-material/esm/folderopen.d.ts","./node_modules/@mui/icons-material/esm/visibility.d.ts","./node_modules/@mui/icons-material/esm/visibilityoff.d.ts","./node_modules/@mui/icons-material/esm/lightmode.d.ts","./node_modules/@mui/icons-material/esm/darkmode.d.ts","./node_modules/@mui/icons-material/esm/save.d.ts","./node_modules/@mui/icons-material/esm/close.d.ts","./node_modules/@mui/icons-material/esm/keyboard.d.ts","./src/shared/styles/themecontext.tsx","./node_modules/@mui/icons-material/esm/folder.d.ts","./node_modules/@mui/icons-material/esm/insertdrivefileoutlined.d.ts","./node_modules/@mui/icons-material/esm/arrowupward.d.ts","./src/app/components/directorybrowser.tsx","./src/app/pages/settings/settings.tsx","./node_modules/@mui/icons-material/esm/expandless.d.ts","./node_modules/@mui/icons-material/esm/notificationsactive.d.ts","./node_modules/@mui/icons-material/esm/send.d.ts","./node_modules/@mui/icons-material/esm/check.d.ts","./node_modules/@mui/icons-material/esm/edit.d.ts","./node_modules/@mui/icons-material/esm/search.d.ts","./node_modules/@mui/icons-material/esm/questionanswer.d.ts","./node_modules/@mui/icons-material/esm/extension.d.ts","./src/app/pages/agentchat/approvalbar.tsx","./src/app/components/globalapprovaloverlay.tsx","./src/app/components/layout/appshell.tsx","./node_modules/@mui/icons-material/esm/checkcircle.d.ts","./node_modules/@mui/icons-material/esm/cancel.d.ts","./node_modules/@mui/icons-material/esm/dragindicator.d.ts","./node_modules/motion-utils/dist/index.d.ts","./node_modules/motion-dom/dist/index.d.ts","./node_modules/framer-motion/dist/types.d-docc-kzb.d.ts","./node_modules/framer-motion/dist/types/index.d.ts","./node_modules/@mui/icons-material/esm/keyboardarrowdown.d.ts","./node_modules/@mui/icons-material/esm/adsclick.d.ts","./node_modules/@mui/icons-material/esm/folderoutlined.d.ts","./node_modules/@mui/icons-material/esm/psychologyoutlined.d.ts","./node_modules/@mui/icons-material/esm/buildoutlined.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/vfile-message/lib/index.d.ts","./node_modules/vfile-message/index.d.ts","./node_modules/vfile/lib/index.d.ts","./node_modules/vfile/index.d.ts","./node_modules/unified/lib/callable-instance.d.ts","./node_modules/trough/lib/index.d.ts","./node_modules/trough/index.d.ts","./node_modules/unified/lib/index.d.ts","./node_modules/unified/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/mdast-util-to-hast/lib/state.d.ts","./node_modules/mdast-util-to-hast/lib/footer.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/blockquote.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/delete.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/emphasis.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/heading.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/html.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/inline-code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list-item.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/paragraph.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/root.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/strong.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-cell.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-row.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/text.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/index.d.ts","./node_modules/mdast-util-to-hast/lib/index.d.ts","./node_modules/mdast-util-to-hast/index.d.ts","./node_modules/remark-rehype/lib/index.d.ts","./node_modules/remark-rehype/index.d.ts","./node_modules/react-markdown/lib/index.d.ts","./node_modules/react-markdown/index.d.ts","./node_modules/micromark-util-types/index.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/html.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-footnote/index.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/html.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-strikethrough/index.d.ts","./node_modules/micromark-extension-gfm/index.d.ts","./node_modules/mdast-util-from-markdown/lib/types.d.ts","./node_modules/mdast-util-from-markdown/lib/index.d.ts","./node_modules/mdast-util-from-markdown/index.d.ts","./node_modules/mdast-util-to-markdown/lib/types.d.ts","./node_modules/mdast-util-to-markdown/lib/index.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","./node_modules/mdast-util-to-markdown/index.d.ts","./node_modules/mdast-util-gfm-footnote/lib/index.d.ts","./node_modules/mdast-util-gfm-footnote/index.d.ts","./node_modules/markdown-table/index.d.ts","./node_modules/mdast-util-gfm-table/lib/index.d.ts","./node_modules/mdast-util-gfm-table/index.d.ts","./node_modules/mdast-util-gfm/lib/index.d.ts","./node_modules/mdast-util-gfm/index.d.ts","./node_modules/remark-gfm/lib/index.d.ts","./node_modules/remark-gfm/index.d.ts","./node_modules/@mui/icons-material/esm/openinfull.d.ts","./src/app/pages/views/viewpreview.tsx","./src/app/pages/agentchat/viewbubble.tsx","./src/app/pages/agentchat/messagebubble.tsx","./node_modules/@mui/icons-material/esm/checkcircleoutline.d.ts","./node_modules/@mui/icons-material/esm/erroroutline.d.ts","./node_modules/@mui/icons-material/esm/block.d.ts","./node_modules/@mui/icons-material/esm/email.d.ts","./node_modules/@mui/icons-material/esm/event.d.ts","./node_modules/@mui/icons-material/esm/attachfile.d.ts","./src/app/pages/agentchat/toolcallbubble.tsx","./src/app/pages/agentchat/toolgroupbubble.tsx","./node_modules/@mui/icons-material/esm/micnoneoutlined.d.ts","./node_modules/@mui/icons-material/esm/stop.d.ts","./node_modules/@mui/icons-material/esm/smarttoyoutlined.d.ts","./node_modules/@mui/icons-material/esm/questionansweroutlined.d.ts","./node_modules/@mui/icons-material/esm/mapoutlined.d.ts","./node_modules/@mui/icons-material/esm/categoryoutlined.d.ts","./node_modules/@mui/icons-material/esm/tuneoutlined.d.ts","./node_modules/@mui/icons-material/esm/language.d.ts","./node_modules/@mui/icons-material/esm/viewquiltoutlined.d.ts","./src/app/components/commandpicker.tsx","./src/app/pages/agentchat/templateinvokemodal.tsx","./src/app/pages/agentchat/chatinput.tsx","./node_modules/@mui/icons-material/esm/chevronleft.d.ts","./node_modules/@mui/icons-material/esm/chevronright.d.ts","./src/app/pages/agentchat/branchnavigator.tsx","./node_modules/@mui/icons-material/esm/refresh.d.ts","./node_modules/@mui/icons-material/esm/difference.d.ts","./src/app/pages/agentchat/diffviewer.tsx","./src/app/pages/agentchat/agentchat.tsx","./src/app/pages/dashboard/agentcard.tsx","./node_modules/@mui/icons-material/esm/bolt.d.ts","./node_modules/@mui/icons-material/esm/gridviewrounded.d.ts","./node_modules/@mui/icons-material/esm/removecircleoutline.d.ts","./src/app/pages/views/inputschemaform.tsx","./src/app/pages/dashboard/dashboardviewcard.tsx","./node_modules/@mui/icons-material/esm/remove.d.ts","./node_modules/@mui/icons-material/esm/fitscreen.d.ts","./node_modules/@mui/icons-material/esm/autoawesome.d.ts","./src/app/pages/dashboard/canvascontrols.tsx","./node_modules/@mui/icons-material/esm/stickynote2outlined.d.ts","./node_modules/@mui/icons-material/esm/historyrounded.d.ts","./src/app/pages/dashboard/dashboardtoolbar.tsx","./node_modules/@types/react-dom/index.d.ts","./src/app/components/selectionoverlay.tsx","./src/app/pages/dashboard/dashboard.tsx","./node_modules/@mui/icons-material/esm/deleteoutline.d.ts","./node_modules/@mui/icons-material/esm/contentcopy.d.ts","./node_modules/@mui/icons-material/esm/morevert.d.ts","./src/app/pages/dashboardselection/dashboardselection.tsx","./node_modules/@mui/icons-material/esm/delete.d.ts","./src/app/pages/templates/templates.tsx","./node_modules/@mui/icons-material/esm/download.d.ts","./node_modules/@mui/icons-material/esm/openinnew.d.ts","./node_modules/@mui/icons-material/esm/keyboardarrowright.d.ts","./node_modules/@mui/icons-material/esm/morehoriz.d.ts","./node_modules/@mui/icons-material/esm/code.d.ts","./node_modules/@mui/icons-material/esm/autofixhigh.d.ts","./node_modules/@mui/icons-material/esm/restartalt.d.ts","./src/app/pages/skills/skillbuilderchat.tsx","./src/app/pages/skills/skills.tsx","./node_modules/@mui/icons-material/esm/lock.d.ts","./node_modules/@mui/icons-material/esm/schedule.d.ts","./node_modules/@mui/icons-material/esm/map.d.ts","./node_modules/@mui/icons-material/esm/hourglassempty.d.ts","./node_modules/@mui/icons-material/esm/storefront.d.ts","./node_modules/@mui/icons-material/esm/star.d.ts","./node_modules/@mui/icons-material/esm/sort.d.ts","./node_modules/@mui/icons-material/esm/cloud.d.ts","./node_modules/@mui/icons-material/esm/public.d.ts","./node_modules/@mui/icons-material/esm/link.d.ts","./node_modules/@mui/icons-material/esm/security.d.ts","./node_modules/@mui/icons-material/esm/pantool.d.ts","./src/app/pages/tools/tools.tsx","./node_modules/@mui/icons-material/esm/arrowforward.d.ts","./src/app/components/richprompteditor.tsx","./src/app/pages/modes/modes.tsx","./node_modules/@mui/icons-material/esm/alternateemail.d.ts","./src/app/pages/commands/commands.tsx","./node_modules/@mui/icons-material/esm/playarrow.d.ts","./src/app/pages/views/viewcard.tsx","./node_modules/@mui/icons-material/esm/arrowback.d.ts","./node_modules/@mui/icons-material/esm/dataobject.d.ts","./node_modules/@mui/icons-material/esm/javascript.d.ts","./node_modules/@mui/icons-material/esm/style.d.ts","./node_modules/@mui/icons-material/esm/insertdrivefile.d.ts","./node_modules/@codemirror/state/dist/index.d.ts","./node_modules/style-mod/src/style-mod.d.ts","./node_modules/@codemirror/view/dist/index.d.ts","./node_modules/@codemirror/commands/dist/index.d.ts","./node_modules/codemirror/dist/index.d.ts","./node_modules/@lezer/common/dist/index.d.ts","./node_modules/@lezer/lr/dist/index.d.ts","./node_modules/@lezer/highlight/dist/index.d.ts","./node_modules/@codemirror/language/dist/index.d.ts","./node_modules/@codemirror/theme-one-dark/dist/index.d.ts","./node_modules/@codemirror/autocomplete/dist/index.d.ts","./node_modules/@codemirror/lang-html/dist/index.d.ts","./node_modules/@codemirror/lang-python/dist/index.d.ts","./node_modules/@codemirror/lint/dist/index.d.ts","./node_modules/@codemirror/lang-json/dist/index.d.ts","./src/app/pages/views/codeeditor.tsx","./src/app/pages/views/vieweditor.tsx","./src/app/pages/views/viewrundialog.tsx","./src/app/pages/views/views.tsx","./src/app/components/keyboardshortcutshelp.tsx","./src/app/main.tsx","./src/index.tsx","./src/app/components/slashcommandpicker.tsx","./src/app/pages/dashboard/closeagentdialog.tsx","./src/shared/modals/underconstruction/underconstruction.tsx","./src/shared/styles/getstylevalue.tsx","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/blob.d.ts","./node_modules/@types/node/web-globals/console.d.ts","./node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/encoding.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/utility.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client-stats.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/h2c-client.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-call-history.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/snapshot-agent.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cache-interceptor.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/importmeta.d.ts","./node_modules/@types/node/web-globals/messaging.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/performance.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/web-globals/streams.d.ts","./node_modules/@types/node/web-globals/timers.d.ts","./node_modules/@types/node/web-globals/url.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/inspector/promises.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/path/posix.d.ts","./node_modules/@types/node/path/win32.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/quic.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/test/reporters.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/util/types.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/bonjour/index.d.ts","./node_modules/@types/send/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/connect-history-api-fallback/index.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/eslint/use-at-your-own-risk.d.ts","./node_modules/@types/eslint/index.d.ts","./node_modules/@types/eslint-scope/index.d.ts","./node_modules/@types/estree-jsx/index.d.ts","./node_modules/@types/http-errors/index.d.ts","./node_modules/@types/mime/index.d.ts","./node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/express/node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/express/index.d.ts","./node_modules/@types/hoist-non-react-statics/index.d.ts","./node_modules/@types/html-minifier-terser/index.d.ts","./node_modules/@types/http-proxy/index.d.ts","./node_modules/@types/node-forge/index.d.ts","./node_modules/@types/parse-json/index.d.ts","./node_modules/@types/prismjs/index.d.ts","./node_modules/@types/react-redux/node_modules/redux/index.d.ts","./node_modules/@types/react-redux/index.d.ts","./node_modules/@types/react-syntax-highlighter/index.d.ts","./node_modules/@types/retry/index.d.ts","./node_modules/@types/serve-index/index.d.ts","./node_modules/@types/sockjs/index.d.ts","./node_modules/@types/use-sync-external-store/index.d.ts","./node_modules/@types/ws/index.d.ts"],"fileIdsList":[[1054,1056,1059,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1054,1056,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1054,1059,1062,1064,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1056,1062,1067,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1062,1064,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1054,1055,1056,1059,1060,1061,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1156,1159,1161,1162,1163,1175],[1054,1062,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1054,1055,1082,1144,1152,1156,1159,1161,1162,1163,1175],[160,161,1082,1144,1152,1156,1159,1161,1162,1163,1175],[162,163,1082,1144,1152,1156,1159,1161,1162,1163,1175],[162,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,166,169,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,164,1082,1144,1152,1156,1159,1161,1162,1163,1175],[160,166,1082,1144,1152,1156,1159,1161,1162,1163,1175],[164,166,167,168,169,171,172,173,174,175,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,170,1082,1144,1152,1156,1159,1161,1162,1163,1175],[166,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,168,1082,1144,1152,1156,1159,1161,1162,1163,1175],[170,1082,1144,1152,1156,1159,1161,1162,1163,1175],[176,1082,1144,1152,1156,1159,1161,1162,1163,1175],[85,160,1082,1144,1152,1156,1159,1161,1162,1163,1175],[165,1082,1144,1152,1156,1159,1161,1162,1163,1175],[156,1082,1144,1152,1156,1159,1161,1162,1163,1175],[166,177,178,179,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,1082,1144,1152,1156,1159,1161,1162,1163,1175],[166,177,178,1082,1144,1152,1156,1159,1161,1162,1163,1175],[180,181,1082,1144,1152,1156,1159,1161,1162,1163,1175],[180,1082,1144,1152,1156,1159,1161,1162,1163,1175],[158,1082,1144,1152,1156,1159,1161,1162,1163,1175],[157,1082,1144,1152,1156,1159,1161,1162,1163,1175],[159,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1059,1082,1144,1152,1156,1159,1161,1162,1163,1175],[305,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,316,320,373,471,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[471,472,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,465,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[465,466,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,468,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[468,469,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,311,320,474,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[474,475,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,305,306,314,317,318,320,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[318,321,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,325,326,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[326,327,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,316,329,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[329,330,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,314,317,320,334,360,362,363,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[363,364,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,305,320,366,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[366,367,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,320,368,369,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[369,370,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,320,373,375,376,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[376,377,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,320,379,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[379,380,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,385,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[385,386,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,311,320,382,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[382,383,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,295,302,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[797,798,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,305,320,388,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[388,389,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,311,396,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[396,397,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,308,309,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[307,309,310,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,306,307,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,391,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,392,1082,1144,1152,1156,1159,1161,1162,1163,1175],[391,392,393,394,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,317,414,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[414,415,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,311,320,399,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[399,400,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,402,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[402,403,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,405,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[405,406,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,320,325,408,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[408,409,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,411,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[411,412,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,320,418,419,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[419,420,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,320,332,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[332,333,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,422,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[422,423,1082,1144,1152,1156,1159,1161,1162,1163,1175],[619,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,373,429,430,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[430,431,1082,1144,1152,1156,1159,1161,1162,1163,1175],[132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,433,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,1082,1144,1152,1156,1159,1161,1162,1163,1175],[433,434,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[436,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,317,320,373,378,450,451,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[451,452,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,438,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[438,439,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,441,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[441,442,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,325,444,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[444,445,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,325,454,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[454,455,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,457,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[457,458,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,317,320,373,378,450,461,462,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[462,463,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,311,477,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[477,478,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,373,1082,1144,1152,1156,1159,1161,1162,1163,1175],[374,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,306,482,483,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[483,484,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,489,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,490,1082,1144,1152,1156,1159,1161,1162,1163,1175],[489,490,491,492,1082,1144,1152,1156,1159,1161,1162,1163,1175],[491,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,325,486,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[486,487,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,494,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[494,495,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,497,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[497,498,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,500,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[500,501,1082,1144,1152,1156,1159,1161,1162,1163,1175],[819,1082,1144,1152,1156,1159,1161,1162,1163,1175],[822,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[813,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,295,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[506,507,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,503,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[503,504,1082,1144,1152,1156,1159,1161,1162,1163,1175],[801,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,509,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[509,510,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,311,312,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[312,313,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,512,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[512,513,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,518,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[518,519,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,515,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[515,516,1082,1144,1152,1156,1159,1161,1162,1163,1175],[152,305,311,314,317,322,325,328,331,334,355,360,362,365,368,371,375,378,381,384,387,390,395,398,401,404,407,410,413,416,421,424,432,435,437,440,443,446,450,453,456,459,461,464,467,470,473,476,479,482,485,488,493,496,499,502,505,508,511,514,517,520,523,526,529,532,535,538,541,544,547,550,553,556,559,562,564,567,570,573,577,578,581,585,588,593,596,599,602,606,609,615,618,620,623,627,630,633,636,639,642,645,648,651,654,658,662,664,667,670,673,676,679,682,686,688,691,694,697,700,703,706,709,712,715,718,745,796,799,800,802,805,808,810,812,814,815,817,820,823,826,828,1082,1144,1152,1156,1159,1161,1162,1163,1175],[827,1082,1144,1152,1156,1159,1161,1162,1163,1175],[235,1082,1144,1152,1156,1159,1161,1162,1163,1175],[527,528,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,306,482,527,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[521,522,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,521,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[480,481,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,480,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[524,525,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,502,524,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,306,311,320,417,1082,1144,1152,1156,1159,1161,1162,1163,1175],[530,531,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,530,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[533,534,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,325,533,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[554,555,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,554,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[542,543,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,320,542,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[536,537,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,306,536,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[545,546,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,311,545,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[539,540,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,539,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[548,549,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,548,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[551,552,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,325,551,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[557,558,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,557,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[568,569,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,317,320,373,378,450,564,567,568,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[560,561,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,311,560,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[563,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,302,556,1082,1144,1152,1156,1159,1161,1162,1163,1175],[571,572,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,317,320,532,571,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[447,448,449,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,320,355,378,448,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[575,576,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,529,574,575,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[803,804,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,803,1082,1144,1152,1156,1159,1161,1162,1163,1175],[579,580,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,482,579,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[583,584,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,582,583,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[586,587,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,320,582,586,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[315,316,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,315,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[565,566,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,317,319,320,373,378,450,565,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,320,352,355,356,1082,1144,1152,1156,1159,1161,1162,1163,1175],[357,358,359,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,357,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[353,354,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,353,1082,1144,1152,1156,1159,1161,1162,1163,1175],[594,595,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,320,418,594,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[589,591,592,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,496,1082,1144,1152,1156,1159,1161,1162,1163,1175],[496,1082,1144,1152,1156,1159,1161,1162,1163,1175],[590,1082,1144,1152,1156,1159,1161,1162,1163,1175],[597,598,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,320,597,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[600,601,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,600,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[604,605,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,485,529,570,581,603,604,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,570,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[607,608,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,607,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[460,1082,1144,1152,1156,1159,1161,1162,1163,1175],[613,614,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,320,610,612,613,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,611,1082,1144,1152,1156,1159,1161,1162,1163,1175],[621,622,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,373,618,620,621,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[616,617,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,317,616,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[625,626,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,479,624,625,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[631,632,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,479,630,631,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[634,635,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,634,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[637,638,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,725,1082,1144,1152,1156,1159,1161,1162,1163,1175],[659,660,661,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,659,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[640,641,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,311,640,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[643,644,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,643,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[646,647,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,373,432,646,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[649,650,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,305,306,649,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[652,653,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,651,652,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[655,656,657,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,317,655,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[155,295,296,297,298,299,300,719,720,721,725,1082,1144,1152,1156,1159,1161,1162,1163,1175],[719,720,721,1082,1144,1152,1156,1159,1161,1162,1163,1175],[724,1082,1144,1152,1156,1159,1161,1162,1163,1175],[85,295,1082,1144,1152,1156,1159,1161,1162,1163,1175],[155,301,723,724,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,155,272,295,296,297,298,299,300,1082,1144,1152,1156,1159,1161,1162,1163,1175],[155,295,296,297,298,299,300,301,722,1082,1144,1152,1156,1159,1161,1162,1163,1175],[301,722,723,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,155,298,1082,1144,1152,1156,1159,1161,1162,1163,1175],[298,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,154,155,272,295,296,297,298,299,300,719,720,721,722,724,725,726,727,728,729,730,731,732,735,736,737,738,739,740,741,742,743,744,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,305,308,311,314,317,322,325,328,331,334,360,365,368,371,378,381,384,387,390,395,398,401,404,407,410,413,416,421,424,432,435,440,443,446,450,453,456,459,464,467,470,473,476,479,482,485,488,493,496,499,502,505,508,511,514,517,520,523,526,529,532,535,538,541,544,547,550,553,556,559,562,564,567,570,573,577,581,585,588,593,596,599,602,606,609,615,618,623,627,630,633,636,639,642,645,648,651,654,658,662,667,670,673,676,679,682,686,688,691,694,697,700,703,709,712,715,718,719,1082,1144,1152,1156,1159,1161,1162,1163,1175],[305,308,311,314,317,322,325,328,331,334,360,365,368,371,378,381,384,387,390,395,398,401,404,407,410,413,416,421,424,432,435,437,440,443,446,450,453,456,459,464,467,470,473,476,479,482,485,488,493,496,499,502,505,508,511,514,517,520,523,526,529,532,535,538,541,544,547,550,553,556,559,562,564,567,570,573,577,578,581,585,588,593,596,599,602,606,609,615,618,623,627,630,633,636,639,642,645,648,651,654,658,662,664,667,670,673,676,679,682,686,688,691,694,697,700,703,709,712,715,718,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,299,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,725,733,734,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,235,272,295,723,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,235,264,295,724,1082,1144,1152,1156,1159,1161,1162,1163,1175],[725,1082,1144,1152,1156,1159,1161,1162,1163,1175],[722,725,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,719,1082,1144,1152,1156,1159,1161,1162,1163,1175],[303,304,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,303,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[663,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,320,464,1082,1144,1152,1156,1159,1161,1162,1163,1175],[665,666,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,320,418,665,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[701,702,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,311,701,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[689,690,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,689,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[668,669,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,668,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[671,672,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,671,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[674,675,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,674,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[698,699,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,698,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[677,678,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,677,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[683,687,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,314,320,562,606,673,682,683,686,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[680,681,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,305,313,1082,1144,1152,1156,1159,1161,1162,1163,1175],[692,693,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,692,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[695,696,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,302,311,320,695,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[707,708,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,305,320,706,707,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[704,705,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,305,311,320,704,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[806,807,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,806,1082,1144,1152,1156,1159,1161,1162,1163,1175],[710,711,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,320,482,485,493,499,526,529,581,606,710,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[713,714,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,311,713,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[716,717,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,306,716,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[684,685,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,302,684,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[628,629,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,295,306,320,360,373,628,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[373,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,372,1082,1144,1152,1156,1159,1161,1162,1163,1175],[323,324,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,295,299,302,323,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,824,1082,1144,1152,1156,1159,1161,1162,1163,1175],[824,825,1082,1144,1152,1156,1159,1161,1162,1163,1175],[361,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,1082,1144,1152,1156,1159,1161,1162,1163,1175],[257,725,1082,1144,1152,1156,1159,1161,1162,1163,1175],[809,1082,1144,1152,1156,1159,1161,1162,1163,1175],[749,1082,1144,1152,1156,1159,1161,1162,1163,1175],[752,1082,1144,1152,1156,1159,1161,1162,1163,1175],[756,1082,1144,1152,1156,1159,1161,1162,1163,1175],[759,1082,1144,1152,1156,1159,1161,1162,1163,1175],[320,747,750,753,754,757,760,763,764,767,770,773,776,779,782,785,788,791,794,795,1082,1144,1152,1156,1159,1161,1162,1163,1175],[762,1082,1144,1152,1156,1159,1161,1162,1163,1175],[187,725,1082,1144,1152,1156,1159,1161,1162,1163,1175],[319,1082,1144,1152,1156,1159,1161,1162,1163,1175],[766,1082,1144,1152,1156,1159,1161,1162,1163,1175],[769,1082,1144,1152,1156,1159,1161,1162,1163,1175],[772,1082,1144,1152,1156,1159,1161,1162,1163,1175],[775,1082,1144,1152,1156,1159,1161,1162,1163,1175],[295,319,745,1082,1144,1152,1156,1159,1161,1162,1163,1175],[784,1082,1144,1152,1156,1159,1161,1162,1163,1175],[787,1082,1144,1152,1156,1159,1161,1162,1163,1175],[778,1082,1144,1152,1156,1159,1161,1162,1163,1175],[790,1082,1144,1152,1156,1159,1161,1162,1163,1175],[793,1082,1144,1152,1156,1159,1161,1162,1163,1175],[781,1082,1144,1152,1156,1159,1161,1162,1163,1175],[811,1082,1144,1152,1156,1159,1161,1162,1163,1175],[229,231,233,1082,1144,1152,1156,1159,1161,1162,1163,1175],[230,1082,1144,1152,1156,1159,1161,1162,1163,1175],[229,1082,1144,1152,1156,1159,1161,1162,1163,1175],[232,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,177,1082,1144,1152,1156,1159,1161,1162,1163,1175],[185,1082,1144,1152,1156,1159,1161,1162,1163,1175],[85,177,182,184,186,1082,1144,1152,1156,1159,1161,1162,1163,1175],[183,1082,1144,1152,1156,1159,1161,1162,1163,1175],[189,1082,1144,1152,1156,1159,1161,1162,1163,1175],[190,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,189,191,201,206,210,212,214,216,218,220,222,224,226,239,1082,1144,1152,1156,1159,1161,1162,1163,1175],[240,241,1082,1144,1152,1156,1159,1161,1162,1163,1175],[187,189,192,201,206,1082,1144,1152,1156,1159,1161,1162,1163,1175],[207,1082,1144,1152,1156,1159,1161,1162,1163,1175],[258,1082,1144,1152,1156,1159,1161,1162,1163,1175],[209,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,278,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,201,206,277,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,187,206,278,1082,1144,1152,1156,1159,1161,1162,1163,1175],[277,278,280,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,206,242,1082,1144,1152,1156,1159,1161,1162,1163,1175],[243,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,1082,1144,1152,1156,1159,1161,1162,1163,1175],[192,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,187,201,206,1082,1144,1152,1156,1159,1161,1162,1163,1175],[245,1082,1144,1152,1156,1159,1161,1162,1163,1175],[187,1082,1144,1152,1156,1159,1161,1162,1163,1175],[187,192,193,194,201,202,204,1082,1144,1152,1156,1159,1161,1162,1163,1175],[202,205,1082,1144,1152,1156,1159,1161,1162,1163,1175],[203,1082,1144,1152,1156,1159,1161,1162,1163,1175],[215,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,264,265,266,1082,1144,1152,1156,1159,1161,1162,1163,1175],[268,1082,1144,1152,1156,1159,1161,1162,1163,1175],[265,267,268,269,270,271,1082,1144,1152,1156,1159,1161,1162,1163,1175],[265,1082,1144,1152,1156,1159,1161,1162,1163,1175],[211,1082,1144,1152,1156,1159,1161,1162,1163,1175],[213,1082,1144,1152,1156,1159,1161,1162,1163,1175],[227,1082,1144,1152,1156,1159,1161,1162,1163,1175],[187,206,235,1082,1144,1152,1156,1159,1161,1162,1163,1175],[236,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,187,253,282,295,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,282,1082,1144,1152,1156,1159,1161,1162,1163,1175],[192,194,201,282,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,201,206,242,1082,1144,1152,1156,1159,1161,1162,1163,1175],[282,283,284,285,286,287,1082,1144,1152,1156,1159,1161,1162,1163,1175],[187,189,191,192,193,194,201,204,206,208,210,212,214,216,218,220,222,224,226,228,234,237,239,242,244,246,248,251,253,255,257,259,261,262,268,270,272,273,274,276,279,281,288,293,294,1082,1144,1152,1156,1159,1161,1162,1163,1175],[263,1082,1144,1152,1156,1159,1161,1162,1163,1175],[217,1082,1144,1152,1156,1159,1161,1162,1163,1175],[219,1082,1144,1152,1156,1159,1161,1162,1163,1175],[275,1082,1144,1152,1156,1159,1161,1162,1163,1175],[221,1082,1144,1152,1156,1159,1161,1162,1163,1175],[223,1082,1144,1152,1156,1159,1161,1162,1163,1175],[238,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,153,187,192,194,289,295,1082,1144,1152,1156,1159,1161,1162,1163,1175],[289,290,291,292,1082,1144,1152,1156,1159,1161,1162,1163,1175],[153,289,1082,1144,1152,1156,1159,1161,1162,1163,1175],[188,1082,1144,1152,1156,1159,1161,1162,1163,1175],[247,1082,1144,1152,1156,1159,1161,1162,1163,1175],[246,1082,1144,1152,1156,1159,1161,1162,1163,1175],[195,1082,1144,1152,1156,1159,1161,1162,1163,1175],[198,1082,1144,1152,1156,1159,1161,1162,1163,1175],[195,196,197,198,199,200,1082,1144,1152,1156,1159,1161,1162,1163,1175],[85,1082,1144,1152,1156,1159,1161,1162,1163,1175],[85,187,195,196,197,1082,1144,1152,1156,1159,1161,1162,1163,1175],[260,1082,1144,1152,1156,1159,1161,1162,1163,1175],[234,1082,1144,1152,1156,1159,1161,1162,1163,1175],[225,1082,1144,1152,1156,1159,1161,1162,1163,1175],[256,1082,1144,1152,1156,1159,1161,1162,1163,1175],[252,1082,1144,1152,1156,1159,1161,1162,1163,1175],[206,1082,1144,1152,1156,1159,1161,1162,1163,1175],[249,250,1082,1144,1152,1156,1159,1161,1162,1163,1175],[254,1082,1144,1152,1156,1159,1161,1162,1163,1175],[748,1082,1144,1152,1156,1159,1161,1162,1163,1175],[746,1082,1144,1152,1156,1159,1161,1162,1163,1175],[816,1082,1144,1152,1156,1159,1161,1162,1163,1175],[751,1082,1144,1152,1156,1159,1161,1162,1163,1175],[755,1082,1144,1152,1156,1159,1161,1162,1163,1175],[86,1082,1144,1152,1156,1159,1161,1162,1163,1175],[758,1082,1144,1152,1156,1159,1161,1162,1163,1175],[818,1082,1144,1152,1156,1159,1161,1162,1163,1175],[821,1082,1144,1152,1156,1159,1161,1162,1163,1175],[761,1082,1144,1152,1156,1159,1161,1162,1163,1175],[765,1082,1144,1152,1156,1159,1161,1162,1163,1175],[768,1082,1144,1152,1156,1159,1161,1162,1163,1175],[771,1082,1144,1152,1156,1159,1161,1162,1163,1175],[86,87,1082,1144,1152,1156,1159,1161,1162,1163,1175],[774,1082,1144,1152,1156,1159,1161,1162,1163,1175],[783,1082,1144,1152,1156,1159,1161,1162,1163,1175],[786,1082,1144,1152,1156,1159,1161,1162,1163,1175],[777,1082,1144,1152,1156,1159,1161,1162,1163,1175],[789,1082,1144,1152,1156,1159,1161,1162,1163,1175],[792,1082,1144,1152,1156,1159,1161,1162,1163,1175],[780,1082,1144,1152,1156,1159,1161,1162,1163,1175],[351,1082,1144,1152,1156,1159,1161,1162,1163,1175],[345,347,1082,1144,1152,1156,1159,1161,1162,1163,1175],[335,345,346,348,349,350,1082,1144,1152,1156,1159,1161,1162,1163,1175],[345,1082,1144,1152,1156,1159,1161,1162,1163,1175],[335,345,1082,1144,1152,1156,1159,1161,1162,1163,1175],[336,337,338,339,340,341,342,343,344,1082,1144,1152,1156,1159,1161,1162,1163,1175],[336,340,341,344,345,348,1082,1144,1152,1156,1159,1161,1162,1163,1175],[336,337,338,339,340,341,342,343,344,345,346,348,349,1082,1144,1152,1156,1159,1161,1162,1163,1175],[335,336,337,338,339,340,341,342,343,344,1082,1144,1152,1156,1159,1161,1162,1163,1175],[91,92,93,94,95,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1156,1158,1159,1161,1162,1163,1175,1200,1201],[1082,1144,1150,1152,1156,1159,1161,1162,1163,1175,1200],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1192,1200,1207],[1082,1144,1152,1156,1158,1159,1161,1162,1163,1175,1200],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1209],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1211,1214,1216],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1211,1212,1213,1216],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1214],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1211,1216],[1082,1144,1152,1155,1156,1158,1159,1161,1162,1163,1175,1200,1204,1205,1206],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1202,1205,1207,1220,1221],[880,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1155,1156,1158,1159,1160,1161,1162,1163,1165,1175,1180,1192,1200],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1200],[1082,1141,1142,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1143,1144,1152,1156,1159,1161,1162,1163,1175],[1144,1152,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1183],[1082,1144,1145,1150,1152,1155,1156,1159,1161,1162,1163,1165,1175,1180,1192],[1082,1144,1145,1146,1152,1155,1156,1159,1161,1162,1163,1175],[1082,1144,1147,1152,1156,1159,1161,1162,1163,1175,1193],[1082,1144,1148,1149,1152,1156,1159,1161,1162,1163,1166,1175],[1082,1144,1149,1152,1156,1159,1161,1162,1163,1175,1180,1189],[1082,1144,1150,1152,1155,1156,1159,1161,1162,1163,1165,1175],[1082,1143,1144,1151,1152,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1153,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1154,1155,1156,1159,1161,1162,1163,1175],[1082,1143,1144,1152,1155,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1155,1156,1157,1159,1161,1162,1163,1175,1180,1192],[1082,1144,1152,1155,1156,1157,1159,1161,1162,1163,1175,1180,1183],[1082,1131,1144,1152,1155,1156,1158,1159,1161,1162,1163,1165,1175,1180,1192],[1082,1144,1152,1155,1156,1158,1159,1161,1162,1163,1165,1175,1180,1189,1192],[1082,1144,1152,1156,1158,1159,1160,1161,1162,1163,1175,1180,1189,1192],[1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199],[1082,1144,1152,1155,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1156,1159,1161,1163,1175],[1082,1144,1152,1156,1159,1161,1162,1163,1164,1175,1192],[1082,1144,1152,1155,1156,1159,1161,1162,1163,1165,1175,1180],[1082,1144,1152,1156,1159,1161,1162,1163,1166,1175],[1082,1144,1152,1156,1159,1161,1162,1163,1167,1175],[1082,1144,1152,1155,1156,1159,1161,1162,1163,1170,1175],[1082,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199],[1082,1144,1152,1156,1159,1161,1162,1163,1172,1175],[1082,1144,1152,1156,1159,1161,1162,1163,1173,1175],[1082,1144,1149,1152,1156,1159,1161,1162,1163,1165,1175,1183],[1082,1144,1152,1155,1156,1159,1161,1162,1163,1175,1176],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1177,1193,1196],[1082,1144,1152,1155,1156,1159,1161,1162,1163,1175,1180,1182,1183],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1181,1183],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1183,1193],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1184],[1082,1141,1144,1152,1156,1159,1161,1162,1163,1175,1180,1186],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1180,1185],[1082,1144,1152,1155,1156,1159,1161,1162,1163,1175,1187,1188],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1187,1188],[1082,1144,1149,1152,1156,1159,1161,1162,1163,1165,1175,1180,1189],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1190],[1082,1144,1152,1156,1159,1161,1162,1163,1165,1175,1191],[1082,1144,1152,1156,1158,1159,1161,1162,1163,1173,1175,1192],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1193,1194],[1082,1144,1149,1152,1156,1159,1161,1162,1163,1175,1194],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1180,1195],[1082,1144,1152,1156,1159,1161,1162,1163,1164,1175,1196],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1197],[1082,1144,1147,1152,1156,1159,1161,1162,1163,1175],[1082,1144,1149,1152,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1193],[1082,1131,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1192],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1198],[1082,1144,1152,1156,1159,1161,1162,1163,1170,1175],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1188],[1082,1131,1144,1152,1155,1156,1157,1159,1161,1162,1163,1170,1175,1180,1183,1192,1195,1196,1198],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1180,1199],[87,1082,1144,1152,1156,1159,1161,1162,1163,1175,1223,1229],[87,1082,1144,1152,1156,1159,1161,1162,1163,1175,1231],[372,425,426,427,428,1082,1144,1152,1156,1159,1161,1162,1163,1175],[84,85,86,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1180,1200],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1222],[1082,1144,1152,1156,1158,1159,1161,1162,1163,1175,1200,1217,1219],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1180,1200,1218],[1082,1144,1152,1155,1156,1158,1159,1160,1161,1162,1163,1165,1175,1180,1189,1192,1199,1200],[87,872,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,235,871,872,873,1082,1144,1152,1156,1159,1161,1162,1163,1175],[101,1082,1144,1152,1156,1159,1161,1162,1163,1175],[924,927,930,932,933,934,1082,1144,1152,1156,1159,1161,1162,1163,1175],[891,919,924,927,930,932,934,1082,1144,1152,1156,1159,1161,1162,1163,1175],[891,919,924,927,930,934,1082,1144,1152,1156,1159,1161,1162,1163,1175],[957,958,962,1082,1144,1152,1156,1159,1161,1162,1163,1175],[934,957,959,962,1082,1144,1152,1156,1159,1161,1162,1163,1175],[934,957,959,961,1082,1144,1152,1156,1159,1161,1162,1163,1175],[891,919,934,957,959,960,962,1082,1144,1152,1156,1159,1161,1162,1163,1175],[959,962,963,1082,1144,1152,1156,1159,1161,1162,1163,1175],[934,957,959,962,964,1082,1144,1152,1156,1159,1161,1162,1163,1175],[881,891,892,893,917,918,919,1082,1144,1152,1156,1159,1161,1162,1163,1175],[881,892,919,1082,1144,1152,1156,1159,1161,1162,1163,1175],[881,891,892,919,1082,1144,1152,1156,1159,1161,1162,1163,1175],[894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,1082,1144,1152,1156,1159,1161,1162,1163,1175],[881,885,891,893,919,1082,1144,1152,1156,1159,1161,1162,1163,1175],[935,936,956,1082,1144,1152,1156,1159,1161,1162,1163,1175],[891,919,957,959,962,1082,1144,1152,1156,1159,1161,1162,1163,1175],[891,919,1082,1144,1152,1156,1159,1161,1162,1163,1175],[937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,1082,1144,1152,1156,1159,1161,1162,1163,1175],[880,891,919,1082,1144,1152,1156,1159,1161,1162,1163,1175],[924,925,926,930,934,1082,1144,1152,1156,1159,1161,1162,1163,1175],[924,927,930,934,1082,1144,1152,1156,1159,1161,1162,1163,1175],[924,927,928,929,934,1082,1144,1152,1156,1159,1161,1162,1163,1175],[871,1082,1144,1152,1156,1159,1161,1162,1163,1175],[922,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,881,890,919,921,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,91,1082,1144,1152,1156,1159,1161,1162,1163,1175],[121,125,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,119,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,119,120,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,119,120,122,123,124,1082,1144,1152,1156,1159,1161,1162,1163,1175],[119,1082,1144,1152,1156,1159,1161,1162,1163,1175],[91,1082,1144,1152,1156,1159,1161,1162,1163,1175],[931,964,965,1082,1144,1152,1156,1159,1161,1162,1163,1175],[966,1082,1144,1152,1156,1159,1161,1162,1163,1175],[919,920,1082,1144,1152,1156,1159,1161,1162,1163,1175],[881,885,890,891,919,1082,1144,1152,1156,1159,1161,1162,1163,1175],[887,1082,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1097,1100,1103,1104,1144,1152,1156,1159,1161,1162,1163,1175,1192],[1082,1100,1144,1152,1156,1159,1161,1162,1163,1175,1180,1192],[1082,1100,1104,1144,1152,1156,1159,1161,1162,1163,1175,1192],[1082,1144,1152,1156,1159,1161,1162,1163,1175,1180],[1082,1094,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1098,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1096,1097,1100,1144,1152,1156,1159,1161,1162,1163,1175,1192],[1082,1144,1152,1156,1159,1161,1162,1163,1165,1175,1189],[1082,1094,1144,1152,1156,1159,1161,1162,1163,1175,1200],[1082,1096,1100,1144,1152,1156,1159,1161,1162,1163,1165,1175,1192],[1082,1091,1092,1093,1095,1099,1144,1152,1155,1156,1159,1161,1162,1163,1175,1180,1192],[1082,1100,1108,1116,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1092,1098,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1100,1125,1126,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1092,1095,1100,1144,1152,1156,1159,1161,1162,1163,1175,1183,1192,1200],[1082,1100,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1096,1100,1144,1152,1156,1159,1161,1162,1163,1175,1192],[1082,1091,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1094,1095,1096,1098,1099,1100,1101,1102,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1126,1127,1128,1129,1130,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1100,1118,1121,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1100,1108,1109,1110,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1098,1100,1109,1111,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1099,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1092,1094,1100,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1100,1104,1109,1111,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1104,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1098,1100,1103,1144,1152,1156,1159,1161,1162,1163,1175,1192],[1082,1092,1096,1100,1108,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1100,1118,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1111,1144,1152,1156,1159,1161,1162,1163,1175],[1082,1094,1100,1125,1144,1152,1156,1159,1161,1162,1163,1175,1183,1198,1200],[885,889,1082,1144,1152,1156,1159,1161,1162,1163,1175],[880,885,886,888,890,1082,1144,1152,1156,1159,1161,1162,1163,1175],[882,1082,1144,1152,1156,1159,1161,1162,1163,1175],[883,884,1082,1144,1152,1156,1159,1161,1162,1163,1175],[880,883,885,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,109,114,117,305,317,325,799,831,832,851,853,879,981,982,983,984,985,986,987,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,97,111,314,325,390,398,424,440,443,453,456,535,541,547,553,556,712,799,851,852,853,854,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,98,117,314,325,334,799,837,851,857,858,865,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,325,443,453,456,799,851,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,111,115,117,126,314,325,432,541,547,553,556,630,799,830,831,832,833,834,835,836,837,838,839,840,841,842,851,856,866,1082,1144,1152,1156,1159,1161,1162,1163,1175],[83,87,107,117,325,799,851,988,989,1011,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,88,89,1011,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,117,317,325,541,547,553,556,799,831,832,851,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,88,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,105,111,116,117,126,127,128,829,851,867,1013,1017,1019,1028,1041,1044,1046,1072,1073,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,98,110,117,126,129,314,325,334,630,799,849,851,855,865,875,970,977,978,990,993,996,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,98,109,117,314,325,334,398,432,712,799,831,833,835,837,849,851,857,859,860,861,862,863,864,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,314,325,799,851,991,992,1082,1144,1152,1156,1159,1161,1162,1163,1175],[83,87,88,97,107,110,117,314,325,334,424,450,541,553,562,570,630,799,843,849,851,853,854,855,875,876,976,979,980,981,982,983,984,985,988,989,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,97,314,325,630,799,851,994,995,1082,1144,1152,1156,1159,1161,1162,1163,1175],[83,87,98,314,325,334,398,432,450,630,712,799,837,849,851,853,861,876,877,878,879,923,966,969,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,107,325,398,421,440,443,453,456,493,526,553,562,581,606,712,799,851,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,98,314,325,432,799,835,837,851,852,857,859,862,923,966,971,972,973,974,975,976,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,98,118,314,325,334,432,799,835,837,851,857,971,977,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,114,117,314,325,432,443,453,511,799,837,849,851,967,968,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,107,108,109,110,114,117,317,325,334,799,831,832,835,850,851,853,879,981,986,987,988,1045,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,98,99,117,314,325,334,398,630,799,835,849,851,860,865,868,869,870,874,977,997,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,90,314,325,630,799,838,851,1004,1005,1006,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,398,440,443,446,453,456,851,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,88,89,90,98,99,100,114,116,117,126,129,325,799,830,851,855,998,1003,1007,1010,1012,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,88,98,114,117,128,325,424,482,511,630,745,799,838,851,855,862,874,990,1000,1008,1009,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,99,114,117,314,325,424,630,799,849,851,968,994,999,1000,1002,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,99,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,115,117,126,314,325,398,541,553,562,570,630,712,799,830,838,851,861,862,1014,1015,1016,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,107,108,109,110,117,314,325,334,398,404,407,416,421,424,440,443,453,456,493,526,553,559,562,581,606,630,712,799,834,838,843,851,855,861,864,981,982,983,984,1018,1029,1042,1043,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,110,111,117,314,322,325,398,440,443,453,456,493,523,562,606,615,623,712,715,718,799,843,844,845,846,847,848,849,850,851,855,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,97,98,108,117,314,325,398,479,630,799,848,849,851,855,997,1004,1025,1026,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,108,113,117,314,322,325,334,398,424,432,440,443,453,456,523,623,630,712,715,718,799,831,835,838,844,851,852,861,862,875,923,966,1018,1020,1021,1022,1023,1024,1025,1027,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,107,117,314,325,334,398,424,440,443,453,456,562,712,799,838,851,861,1001,1018,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,109,112,114,117,314,322,325,334,368,398,407,416,424,432,440,443,453,456,493,523,526,562,570,606,623,630,667,712,715,718,799,831,833,835,836,838,839,844,851,861,862,863,864,868,875,973,994,1018,1020,1021,1022,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1082,1144,1152,1156,1159,1161,1162,1163,1175],[102,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,851,1054,1056,1057,1058,1063,1065,1066,1068,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,314,325,398,488,493,526,562,606,667,712,799,838,851,1001,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,114,314,325,511,630,799,851,861,1014,1047,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,88,97,98,103,114,117,129,314,325,334,398,424,432,630,667,703,709,712,799,835,837,838,848,851,852,968,971,972,990,994,997,999,1002,1014,1024,1025,1047,1049,1050,1051,1052,1053,1069,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,88,104,799,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,114,117,325,398,424,440,443,453,456,799,851,968,1002,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,114,117,325,398,799,838,851,1048,1070,1071,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,131,1074,1082,1144,1152,1156,1159,1161,1162,1163,1175],[105,116,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,98,117,126,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,130,1082,1144,1152,1156,1159,1161,1162,1163,1175],[96,97,1082,1144,1152,1156,1159,1161,1162,1163,1175],[96,97,98,1082,1144,1152,1156,1159,1161,1162,1163,1175],[96,98,99,106,107,108,109,110,111,112,113,114,115,1082,1144,1152,1156,1159,1161,1162,1163,1175],[96,1082,1144,1152,1156,1159,1161,1162,1163,1175],[87,128,1082,1144,1152,1156,1159,1161,1162,1163,1175],[97,98,116,1082,1144,1152,1156,1159,1161,1162,1163,1175]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"87ac5f005e342e517e500f635ad8297809c7ab8e029c3182f5674aea74b8b223","signature":"110ec2c239c14bc4fd89aac3ee8e032f3c9e1df7bfd2a43ffbbb63159bfb44b6"},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"a01def3d1afff119c4d9c07f6509041a14f10b6df16ee7cf8d12b12aca6099b8","signature":"b98544e3bb3ebf75b4724f7754fccd78f293cc75e2ba076085b73cf62a9005eb"},{"version":"72acba80a8803b1f5c3b7a3f8589a1fb26a53cef5815755ff0d460b358c7e2f6","signature":"3aa8e3d47bad01dc122187b458b5b071f1b60ca1c24e08b24a2d4d00d0888248"},{"version":"a38c3bc463bdc2933d0487f49dbbab1c8b396e9723db2f894091de35452e8dbe","signature":"2226411363434efd8af39351e8a7c3eaf91f3c3ef4ee11eefa8eca59380787c0"},{"version":"f734b58ea162765ff4d4a36f671ee06da898921e985a2064510f4925ec1ed062","affectsGlobalScope":true,"impliedFormat":1},{"version":"55c0569d0b70dbc0bb9a811469a1e2a7b8e2bab2d70c013f2e40dfb2d2803d05","impliedFormat":1},{"version":"37f96daaddc2dd96712b2e86f3901f477ac01a5c2539b1bc07fd609d62039ee1","impliedFormat":1},{"version":"9c5c84c449a3d74e417343410ba9f1bd8bfeb32abd16945a1b3d0592ded31bc8","impliedFormat":1},{"version":"a7f09d2aaf994dbfd872eda4f2411d619217b04dbe0916202304e7a3d4b0f5f8","impliedFormat":1},{"version":"a66ebe9a1302d167b34d302dd6719a83697897f3104d255fe02ff65c47c5814e","impliedFormat":99},{"version":"90a9b8fbb9d719f76d1aed407acd2fc26add4c9bf151b965c02353ba04b109f5","signature":"6613ff52532f9fcc1be549ffcd6e3fb726c42b79a1b8b10af5b5aaef5a112310"},{"version":"3039caea19522a426460a27ecc8b726a779cdc49430d047bcea6930065d5c97e","signature":"fe220d1190752f8e24ab998423040335cd3d2de1ebe4a5051df78b79933e95c2"},{"version":"1a830c919ed2d966b36a68b5679787759730f442f418346bc8385e9952e5275a","signature":"0adcfc3c85ae888c3cc28b0f2664abc07612338345ecf07c5e8acd8780b9fabd"},{"version":"a175322d47d98f20166f6bb32fad10f61825e66bca9bf1509181c20725205239","signature":"0ff4abe1f7e8020bd38a17648b7976096bc779709b4f9ad4dee011df1ab9cbb5"},{"version":"ee09b9348d02aec6cd1cebb94c27896c10d47efa042a3fbc9c90dd6a7f6af752","impliedFormat":1},{"version":"bf673997a66d2225f43fe1b51cdddd497d0a8c08a990ee331457f2d017563075","impliedFormat":1},{"version":"b6ccbac29e6d17043c49bc900e2574e25b8529ac883cc80da2ebf7983061ba60","signature":"caf5f406fd509e80cfa6bd4fae67cc103efd8e34737e7831d46800e92b57937e"},{"version":"5657d65e69986258a56073ecaef9b67e481f936c2b4d9100da14263b53debe98","signature":"9f50facd72576e205af4e23e60577ecfa9066f94c88359524cb65eaf7d2adc7a"},{"version":"9b643d11b5bca11af760795e56096beae0ed29e9027fec409481f2ee1cb54bbc","impliedFormat":1},"010fa0f5a5bfec93b0fc73289e8b1b3a43fce6752d6b198e57632f07369bbd21",{"version":"934a88597a1c97bb153d9c608fb8a91eb9f75f62f678199cec3c8dc67802e8cd","signature":"f9d833c0d1c00feef58ba15a134e6c5a64e289ec6e934c5448e0cbc95d3020e4"},{"version":"272b1ee0aaebdb31adad232eea206dc3506ca4c67f0dc868fc8ba9ae307daf91","signature":"610fee1fb6bfe24cc042d71a28bbba228d6a2747e556b4e3823e21f106c8c11e"},{"version":"8d2ed349c3bdaf2495cdcd22b5ff1bd87939b4fb0c2c8eefd987861d1c119ee3","signature":"b50571a7e98a9d336eda49bcc0f1d7d8ddd6717205255adab52625a3739fc8f1"},{"version":"82b3f3d21bf6ddc49d87d772a91f3ac013cb7d8d5ddbafb6259f7654d778e588","signature":"a8c9de08e315883c96a7b3c1ad9eed8d38437a61e366caa9ad3679ce47489745"},{"version":"b8cde5ccca88b1a811d567aa813ebcac8cb002f1dfa13a96a7ac3712dd179e66","signature":"433faee23092e33adf1fc060727a89bdec793f4ce0aa40f7bd1005c6c76f4d0f"},{"version":"9fff4e72433acb3414b18c2262bb9adebfd89eaeb6f34ef8e37efae388a5278b","signature":"6d5f04a5f6a2decbaa59b112158545b2cc5a0961f1864cf93f70674be3330feb"},{"version":"76f2ddd9847d42c0c4c30627cc56a8ab5f34598d8eedf886bdd1373cb10f9813","signature":"2efe0d54d8d30d147b79063f07114802414b51cf2f37d03ae10cebfccc0cd1dd"},{"version":"2008dbd9f521bf99ccd10eacd8014ffdcfa492d74d9dfaa2a0f8265cb649fe3e","signature":"75e7dfb53ff49fef237668f682e61e68b008b8b5335d91ab3230fee3a4000561"},{"version":"2a35ec25b82cc3eb85a648e61f3960d9986f489ac9dea719dc93d1c4e52ed3d1","signature":"cebaea6cc559680b1e94c080b4ae9972b38a02026cf8eac7d69badcebf37112e"},"0443ac2b31d655279c49a95d5aa04e4a53682c6c7aaffc78e083c3c9f221256e","4b5db289b716b8f529e53cd1f137db1ba9062865127675d5f6bd562e970c6592","c0a466b289970062647ab96105fdf5a5c4cb2bb7b14caaf182d852d5a7ba4748",{"version":"a437d0929fd84e31cd444b8823f4066cc897be005a4003aa74ae946aed3057b1","impliedFormat":99},{"version":"d439306d5d6b8563d53258134ca6bb28d0b6ca6a557bda753ef75829c000a938","impliedFormat":99},{"version":"40af4d2f89f4de15e69d7ff4915a48d54175698870cae94b40a9dd759d5aaffe","affectsGlobalScope":true,"impliedFormat":99},{"version":"ac93729a812a3b6e5e13338dfb98289bed810e88887b37b7aac5b28c6e6287c1","impliedFormat":99},{"version":"a50c9237f37a07b2d5332d6e77160c89624549a5a318108f7ce82ec36b06a3d7","impliedFormat":99},{"version":"79c164aa4f8a8418df7717206ea52508f72743224a6b9c705f10724c6dbb5548","impliedFormat":1},{"version":"65183e393edd53502c199cdfea624c1395461a8c6603a263f695bd309dcf9048","impliedFormat":99},{"version":"9f49b8064f63b7b3275a8247692967da2458734ea9afcf5ffd86b5c177674740","impliedFormat":99},"dc8f349b1673ef15eea7f2e565827312db1c56ba6e16ab6660c6e623ec866c62","34928375d6427c429b50caea6afbcce2cfe7f09dd46229fceef33d14b86c0396",{"version":"d835cb2685558874fa9d8a20683f8c40b04273c8f30ddbd571668225555905bf","signature":"18e593cbf7c01a5d362acc9bfee252ac6514f8753d91442638ad590ab8145a89"},"7c2cabe8d719df7bd72fee16bdef953edc9e06d5b52a2ff4e371366ecd17bf49",{"version":"05321b823dd3781d0b6aac8700bfdc0c9181d56479fe52ba6a40c9196fd661a8","impliedFormat":1},{"version":"deb685eea280337580ecdc1f59ba64df19b8a0a5b26737c152a492d372d75738","impliedFormat":99},{"version":"e8f18d8914599c6b788ab6549287ecf89bd1a9a173e9eb81659edd61f041fc3c","impliedFormat":99},{"version":"6a89c8b199e69d0fa67aa02481d672c80c1077f1668446d995243efd2fc37225","impliedFormat":99},{"version":"e00fc542e2d58412c06217830a0650bc201c706c8eee2d8d27d5ba6b804c6035","impliedFormat":99},{"version":"b46555207d3dbb03ab62585b52a396f48b48a3c40e96723c3ddab672b66ccf2a","impliedFormat":99},{"version":"37b768bac5fe7881c1823e8b8f372b73f2bb4f619e4ed14432df2030f0fd42ae","impliedFormat":99},{"version":"006047b00455c1b865fa1df0ddae8db818bb39a321f3ddda2c2701f893f81aa4","impliedFormat":99},{"version":"537bed5a5d8b5885ebc6f33a2a27bf6af7231a5119410a7c19ca49ece077b985","impliedFormat":99},{"version":"38ef428d44eec84100a2c3d9409607b7d5d79b611b2e9e3b5bf55787fb3cf01a","impliedFormat":99},{"version":"a082dc47e7a81b2075d1be0e1c84abeef96b90f5c4b0df67c882ea36e9b5198a","impliedFormat":99},{"version":"2eb9b16c811eb2e4cc7c088ecafe3dd58d381cb7bcd43c6378f59d6b62343f82","impliedFormat":99},{"version":"0d99404df5e7375c3af5b29e421e971e4d9497f757e08f6d71c55abe12fb4775","impliedFormat":99},{"version":"2ad8375a297254a151082eca24de4880709e22af2b90b5c0a1527a5c34fdfdd8","impliedFormat":99},{"version":"fb1c107b6e709fa8d8183dcb5513a88ef43037b8dfdb148945bb5de406ced872","impliedFormat":99},{"version":"1c6477a91023bd6c797a298f14926e90756eb2d1eddcf04399d003afc3b8c874","impliedFormat":99},{"version":"31881b2ef14f4a800abb5a2e901a380a60890d3e53481f43820e5677e6731071","impliedFormat":99},{"version":"b1ca55067b6f268f36321ef2bcc284d5bd8f728aeb2be639385d9f62bf4a0b3e","impliedFormat":99},{"version":"08415f0037d74b8126615514833ce44bf9e946ee77390b8f68e93df26a905297","impliedFormat":99},{"version":"56c63ffa519c6f7f237f8d4f2475260a32938bf3e0c2287670bce0c5008854cd","impliedFormat":99},{"version":"01a19462afb14049348a4437ca23d8ea8216f2c5a49e2a05bfaaec0acc4987e7","impliedFormat":99},{"version":"18d4f7640b5e7f959234f0226842f5aac95df07414e66afbe0a86624c0317f72","impliedFormat":99},{"version":"c19012befc7fa0dca216cd574620b15da1cf4ad2b62957d835ba6ccdbb1a9c27","impliedFormat":99},{"version":"cc0048f62d66e974d5c563bcc0b94476e8a005406ed07ef41e8693316b2e31bd","impliedFormat":99},{"version":"e97ab9ab0de2905d62b6f01b8929c21c9b66d3caef11e5fe1f024f6b2c168ae7","impliedFormat":99},{"version":"4dcdbdbc992d114e52247e2f960b05cf9d65d3142114bf08552b18938cb3d56b","impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"ddb5454371b8da3a72ec536ad319f9f4e0a9851ffa961ae174484296a88a70db","impliedFormat":1},{"version":"fb7c8a2d7e2b50ada1e15b223d3bb83690bd34fd764aa0e009918549e440db1d","impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"9c909c17f69f125976e5c320eded3e693890d21b18cbc4caa246ec4fda260dcd","impliedFormat":1},{"version":"7915d50018073244a9bcb3621e79b8e0ad4eedfb6b053fc945cad60c983bb11b","impliedFormat":1},{"version":"ea7b47bc357858506e6161065b1a8997cfbc5d1dcdf233966da9d01d74721ef8","impliedFormat":1},{"version":"50444daaee4bf4ad85ad8eb52e3ad5c6bba420aad9e2a800043a78f4d8bc436c","impliedFormat":99},{"version":"1fa33d8db2a9d2a7dbfb7a24718cccbcde8364d10cce29b1a7eea4cf3a530cbb","impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"90300bef1c0e2523c97fdd178b9d50e3f39646ade67faab69be4e445937c862a","impliedFormat":1},{"version":"381437930df37907c030519b23ffea4d8113f46e4431a70bfe008a0c43c63648","impliedFormat":1},{"version":"695cbb89013bc9e87fb24b0df020fe605c54f0ab5c267b5bf0490ed097044197","impliedFormat":1},{"version":"f43780383543bfcdc0a2ee850375e1f03d94bdb1b85091d5b11bb8b2023c8b49","impliedFormat":1},{"version":"303638e9e9378e3cce14c10a276251b2b6baea811f882b0adb6d8b7e44a8245e","impliedFormat":1},{"version":"93fc1a008c4786aa9970b7a4c56295bef4d39c243af63cbfcbd5548ca4fdd535","impliedFormat":1},{"version":"6b91aca1948fd92e4fb32e91e94955e7b7c12fb8cbc0a40eb55f1808886e53e8","impliedFormat":1},{"version":"1e197b6e669b8ece0a68c684af9a4394d8c47e58eaa040391cbdadcc1b5020a0","impliedFormat":1},{"version":"fccfc90c19498513d5c4b9c705706660eba9eb493bc38cdc16a11e9d384cd086","impliedFormat":1},{"version":"b288bbe96ea05e353f008a4d445fb8589a82f2a1c4d4d0bdfc283a19020dc96f","impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"cf32b34fb9148d541c100a83fd3d204ced00c76871b4811d53b710ff15a948a1","impliedFormat":1},{"version":"6940a178bd12acca76e270f0b0c4d907b9cc469d28833bd59a3276f11668591e","impliedFormat":1},{"version":"22165b22578a128275b69d52c0cacc6ab19e36eb95e10da18f1bca58cd6ac887","impliedFormat":1},{"version":"ea7b47bc357858506e6161065b1a8997cfbc5d1dcdf233966da9d01d74721ef8","impliedFormat":1},{"version":"9dc9c7a268e5b2caa79a5a5040a86ba5ddf1cba20d8715ceaf2b76f79ee444fc","impliedFormat":99},{"version":"9be491a96d84a67f0d94eff72780b05f5d87e72e35ab479d5d178ec3992afa16","impliedFormat":99},{"version":"c048b081418f530417dd4193b47890bc734711378df819f0ff217144f6775afa","impliedFormat":99},{"version":"43d809531ce93c48c965969fbf6a005d509b56bd2cd99c0e77347185ebd8fce0","impliedFormat":99},{"version":"bf0b1e6c1bb4930244203a593c6db7aed456e635c31aba73ee2102c55998861f","impliedFormat":99},{"version":"58e8c4bed19bfa7264f90353b891ff96094228a20416623bb998f1ae441e958a","impliedFormat":99},{"version":"171e17f251c65245d7b0d18da35b9e9c900576ef6db03a59cae533353e222a90","impliedFormat":99},{"version":"76e3666a9f4495c6d15035095a9bb678a4c3e20014dc8eb9c8df8dc091ec8981","impliedFormat":99},{"version":"055bc641ca1f1eed76df9bc84ec55aaff34e65d364fea6ae7f274ba301726768","impliedFormat":99},{"version":"22ebe7ce1ddc8ee5e70f28c41930c63401e178c637d628b9af9f7a9c456e86b0","impliedFormat":99},{"version":"041c4afbee0a17614e9d4a8aa4385ffbbbfa1a5d5148c9aab0dce964be1af0d6","impliedFormat":99},{"version":"00d259e465df20202e848bf8d192056919e460a3de20aa14f59d523d3af38b29","impliedFormat":99},{"version":"9cbb746b8d46880874f6a8f8c64dfa925ec0cf70412d4ad5e00a8756c82edf3c","impliedFormat":99},{"version":"fd23901347e68e39f7043fc6787b2af6c7094d6c7ef6038ee909cfe26da625c1","impliedFormat":99},{"version":"b27d92f5ce61e0ccb00a4f1f19665ff995df3f16b4b7005a651ffe7255c45cab","impliedFormat":99},{"version":"118a23aa24572ae8fe1a2dc0014d73a0ce45d62bdb988a71bcb6c021dc592c26","impliedFormat":99},{"version":"37f91e6110c28b1d1a7a82cdf44c66fe0259b38c74440b8acbf9d14ddfa451ae","impliedFormat":99},{"version":"47ceda52be9bebcfdda6181b496963f530cf61719fda168f052f6ca483add543","impliedFormat":99},{"version":"3eeab58ad93111ccf9287c7f32b1a8037f23d28783e96b93d097290919fe386e","impliedFormat":99},{"version":"5f6442d0a9bbb961b58f45d09690a034734aeea01f2875cb0e7ec31aa3676ef7","impliedFormat":99},{"version":"6511839e63105744b3bb8b340791218b253bdae80c7d57c288dcc85bc6f91317","impliedFormat":99},{"version":"a361409ddb9ecedc609eac1cc6f752383b1a667be212846927b660727e346d85","impliedFormat":99},{"version":"3f01edcdc9641acfb6689126d9506248d3a3afe3e4a23e2f7588988ba693f349","impliedFormat":99},{"version":"8365f863e47c17b2412fc736f8e279ee225129b9436af8ba9b746fd5d59b06ae","impliedFormat":99},{"version":"6ac1b4401d51471ae0d6b6bcce637e550eb78d75b1cfe993b6eaca9898d74976","impliedFormat":99},{"version":"0b4d305552d9cce2397e6c618cb27d241f64eb4e3496e66d926a7f66a8e0c6b3","impliedFormat":99},{"version":"894395299a4761cd4e38c20bf17bfce27a3cbdc2650054e5fc28e692fddc4b4c","impliedFormat":99},{"version":"7568f6aaaf6b62b7f3f72ebd07bbabd95749a0f969dfb15e7789d4a3c8e080a1","impliedFormat":99},{"version":"039d7ce09e9246c255c7acc1c00ba3afe7e98b4767547ccb6b77274109f8a5c1","impliedFormat":99},{"version":"b4b9514c90add4b59499251f760f01aa7fdaacb02894ff0d885286094cef8c2a","impliedFormat":99},{"version":"f670e23ac2377ed32187f39d02be707c9c0cd61e95786a6ba49ea7f860baa50d","impliedFormat":99},{"version":"25f27d8da6c42f1622b0b01fc5c78f48c79c645e10c4849fc8c5521faa9ace29","impliedFormat":99},{"version":"54e17510b0440980e3bc8ce141c9b922adb6c8e77ee81c443870bf684679255a","impliedFormat":99},{"version":"3e9e2f295358fa46f10faa524be6e99a42114752b0e195ae997f550968ea481f","impliedFormat":99},{"version":"74cf1308a1f0de094f0e8567541b0a0e126426ec2eb4ef68c9cd97fa4d0d9272","impliedFormat":99},{"version":"dcd1e783bde43c7d570ce309cc21e9d9d7b3110491aef9c5c5ce87c6a53f7e5d","impliedFormat":99},{"version":"08bc14542d8d34fd138945413e31ecf65668e029f966b5aab5b25e8e421efead","impliedFormat":99},{"version":"17648a898be56a6a9c4a6305e84ba220bc76d4355f0f55696726f1eb1fcd6d4d","impliedFormat":99},{"version":"cc6c1ade000cc9b7f8c79d8bdddb145950bbe7d404e5b3b938537a0bbfba73bd","impliedFormat":99},{"version":"eb97def43c2617552f76eb367e7f5531127fa03fdf991ef12cf5ae8fcc52c7ed","impliedFormat":99},{"version":"f49bde1443de7aaf05371f049ee0710619bde1b7bb7042192512e5cab672b3fc","impliedFormat":99},{"version":"a704c8b701194cc47d333b093f87db332694b124e304fb0167be09ff3304d353","impliedFormat":99},{"version":"358f8d33b436d21a7c313f02e900b805eb1c6abda3d675f703ada38eea3b92d5","impliedFormat":99},{"version":"dbcf8b1a2d94e9a1f0fa3fd5152114a14f83d8dba8d3f8dd773be476adac937f","impliedFormat":99},{"version":"ee63e60be6f56e08cf8d7b5ab750078fc6d08f69cdf70ee43fd0693d10c65d2f","impliedFormat":99},{"version":"4807b8b139747bd82ef181b5eaf8676c1f9012be0ad91feb1173bd57f08aaac8","impliedFormat":99},{"version":"ceee442c1035bd941c9fbddbab08fce2e34d1e23d79d56a48c0444bb45d705b7","impliedFormat":99},{"version":"fb9bcb4ee14feca03c05eaff9f1eb826bb1e75bade5e64f98c65ecc79b910949","impliedFormat":99},{"version":"f8ee6c9ecf3a39cb551db7d6f0aea157cd272ac477c561331efd734a13b34134","impliedFormat":99},{"version":"f72af7f1a38a5b8ae564be5eb68a8c25e5cf9cf4c567ddfa471a481425369c79","impliedFormat":99},{"version":"aef37af42cec810a643f24ba90f2f7d55c3e05ec5e31adca4c3318e578822aa6","impliedFormat":99},{"version":"ce35f35a8d59172dbf5cd945c253512114d6020e7dd30d399d372e473eff2515","impliedFormat":99},{"version":"e9e8a6bbb3819df983667e1bbf9c993e954c009f575c1f5d2063d55c1af47d1a","impliedFormat":99},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"b6abb79b5ce1a00b991e3568a1f7ddffdafa6f27235d8c41d440ae3e1395024a","impliedFormat":99},{"version":"bf0b1e6c1bb4930244203a593c6db7aed456e635c31aba73ee2102c55998861f","impliedFormat":99},{"version":"44993fcc19de9502ac3f58734809acbe0b7af3f5cca12761dc33d9a77cf02d1b","impliedFormat":99},{"version":"d172b164580892e56129985557aaf73b4e45279e4e0774e1df53282e6fd89427","impliedFormat":99},{"version":"9104e9de24372f5469c59b5df6cf7cb3f8252268a933e4fd6a2dd09610b165a8","impliedFormat":99},{"version":"68f1a4ec2937052ae0dd18407eb8d1b579708970ced79c6e7cfe4a93d0a00385","impliedFormat":99},{"version":"efe0fabfc89403ce6a4a8b1fe3a7633f1161b7e10d9824299560f2d15e4e606e","impliedFormat":99},{"version":"863e3b3ffefbe39c727cf30147ffe04c04f1c94d5e8f4ac846b227bad8152c93","impliedFormat":99},{"version":"e84f2065c605965fd1d44de2cddf0509dce060b4d9e79c01a884a0899fe877db","impliedFormat":99},{"version":"4546ed6a4f9981e2009e8bc0047130eef10c6ad12958a4093d6a6d720548508f","impliedFormat":99},{"version":"16725a633f5f5c1cd82e2baf4b0ae521da7f6055339f837bf2695bc3fd44373f","impliedFormat":99},{"version":"664104ab990ca5d100a69e159f9f8874551d94a187db834309af14fee2d64f4e","impliedFormat":99},{"version":"542e50c2dca6d24f5cb9cb2b7a5c07d450850af21ef253838bb2bbfb175a3e8c","impliedFormat":99},{"version":"b87a5b1b4ef40860bb48923e0abed7183883a6b4bf16ee7d1ddd745e1c52737b","impliedFormat":99},{"version":"2631b7256705a9ace791907cd28a1272f7c46fc33126332011b6e6ec4504763e","impliedFormat":99},{"version":"fd8b58b771380655281dca6ed40019cd8ecd639ef6ec74baa91662ca0e0ae458","impliedFormat":99},{"version":"6a73dc1806928e57c21fc51d00f40e4e92f17dc6b31ddfa95365a837651587c0","impliedFormat":99},{"version":"ce35f35a8d59172dbf5cd945c253512114d6020e7dd30d399d372e473eff2515","impliedFormat":99},{"version":"97912ca64fedc028914d9f1585e30d98a1e1e46a426a06f2190024067b8a534f","impliedFormat":99},{"version":"a9b65aa46a4613eef2bef431366d8f5f166e8226c6fae3688c67ca102c3d6a79","impliedFormat":99},{"version":"45af3936c6c68c1ebf71c6f69375b64df0bb3ff0ee66c9af8ddb4c43f426110a","impliedFormat":99},{"version":"0caecd57de90295669dd561bf9f0e4c4478434e14e0741c2b0fbed44e38563eb","impliedFormat":99},{"version":"9bf450866b0ae8f5539cc364ebcb566c8eac607bd4cb3c6ce786134b4e6815bc","impliedFormat":99},{"version":"78c0f55d5519d39233daf5562c5704a0322dd7abcc1e72afb015cac550be32d3","impliedFormat":99},{"version":"78b8de068c89bd325bad4d1da693b679f57bb2a0f4a0140e9f58f12d7a913fc6","impliedFormat":99},{"version":"f72af7f1a38a5b8ae564be5eb68a8c25e5cf9cf4c567ddfa471a481425369c79","impliedFormat":99},{"version":"205d330174cc427f3002517bae08e2cf8b8e134cfe086cc80fe18a07efeca799","impliedFormat":99},{"version":"f1cd4f713f4437d86a7e618fc260e84bb609de484c7774d3138b0e52f1ea264e","impliedFormat":99},{"version":"03535e283a156874e32846037dc86e32c53995db4e077d392a8b17c6f26e4f8d","impliedFormat":99},{"version":"8e0b721643bbab457fc721978ca39bb210dee3f84f2693e9f2b463a3079de8e2","impliedFormat":99},{"version":"26714a66ea656e9971107607ff771e07c2d92066fad35f41164ce2f8df516900","impliedFormat":99},{"version":"3c8f12fe817e0928ca30f4df324c0941ba057f1c4cff8e53ce88c5156dada27b","impliedFormat":99},{"version":"d35f81ba39296216f0d88d7b28ed0e02d8c628cf70194b108c0e941cda519ab6","impliedFormat":99},{"version":"87621a249f7a938e9d270b70e560b78b55552eafd08ddf71d2fbd80913699488","impliedFormat":99},{"version":"ab92b4094b7db98dc3c59d5a12afd9a8778a7d0f3304ea8a6497d74c41aa95de","impliedFormat":99},{"version":"400402da2b06f5acd7940db2ee5507784fdab53354062fcddfe4934f3ac04340","impliedFormat":99},{"version":"3e80aeb2dad64ce73bb62a404e1db152fd73bd5849b1777d444939d0c1cfc287","impliedFormat":99},{"version":"61f825380b5ff41a275f6d0cedd145a073524cc24b4963f82c4348574325768c","impliedFormat":99},{"version":"1631f72761156e3e1f414db7ea97cc6b6f1f50904b290f3e6985502be9ee016c","impliedFormat":99},{"version":"b41d3caa8c0839223be817bfedea85bfcf1e682182d51414fd11d9ccaf83792f","impliedFormat":99},{"version":"2b5637680ce53987f0335180e79a9dd639ccfa8f20d46332195dcf11c02e9bb7","impliedFormat":99},{"version":"08bee5ad21bf8bf6d1e66f9bcbcf1c790c1873ae5d63068c02567c357ae619fc","impliedFormat":99},{"version":"a50883ca9e4d58a313d8f8614ddb8bcf4a33587ec85ff9998a971334e34dff0c","impliedFormat":99},{"version":"6cbe055efdadb8b2d27ab470fded80fb4d2219e7b1a0140ffcba3f1ff4e6bd14","impliedFormat":99},{"version":"949ccc4add0506d70be23ded8fe17702ce7ecad3f6b9b2948d12be7b7621c008","impliedFormat":99},{"version":"8b5aa4aceca84ffb115eaa92eb511db532a380715fbe40e0f2691399f59779c4","impliedFormat":99},{"version":"3c84fbf2b9676c3b985e56281412906d998acd2ea3b420679179746d2eb158ef","impliedFormat":99},{"version":"04498bab7aa04819b6f85e0a833cac9a90d2c225449e62a500e0d969a980a0f5","impliedFormat":99},{"version":"603c4205a9e69ac7eee80d9967196c5e1be4e5815507c07a6bc7442a7404a35d","impliedFormat":99},{"version":"953be5c29962c02b750c81742c6c8e3ec88f0dca93b490ae0c25d06ec09a336b","impliedFormat":99},{"version":"93c47ea71b8ac6043e85e16a7f5a12fdf28283e0c3e64818b24ef77339dde953","impliedFormat":99},{"version":"c1faba1a4367b207aa0c37ab286daf320200659b052887e5d017f1a19a1bc939","impliedFormat":99},{"version":"0a5c9fcea7d8dfde5b22c26763cf7c8822a99ba7774b87d4faa63fe165f371d3","impliedFormat":99},{"version":"acbbdccb0deb733cb3c04d97084b6d51b2f3f1257fd84005ab982b068d08e084","impliedFormat":99},{"version":"cd80c1f39858c9aaf24cb6cf109d90b16470b4c4af5b712b350e6e18b08c1d7e","impliedFormat":99},{"version":"938cfdec82f866cebaba7a0d8f7d41aec9cf34ba53628c444d4c0edd90123b39","impliedFormat":99},{"version":"ef0a3e581b336ec4522badc01575daa324a63e76b7317ceda2ef887a5168e2e2","impliedFormat":99},{"version":"5a3458dfcbd3d376e91a57ff64ae747c34f8ca1b503b1be1a84f490b56da1638","impliedFormat":99},{"version":"684fed66904651fd676b78ec044da251651f4dfaedb163df74b2280013d5cd5f","impliedFormat":99},{"version":"78156ec80b86cc8f8651968051ed8f9eb4b2f02559500365ee12c689c2febd9e","impliedFormat":99},{"version":"e463bccc0c9e8e19113e8f5684fa1e0d357fd66cbc7a495a3c4854442268ab0b","impliedFormat":99},{"version":"e8c0fce94bf97316262ce31a0946120e9dafdf2dfda1dc9a71b5e7b1c1337b53","impliedFormat":99},{"version":"a16ecd75e1660eebf91b31f0a6e06fbc1cba65a6b6afe313dab362bd1e5b95c1","impliedFormat":99},{"version":"a9e0a480c019837e2634ee2ac49d078e9548032f2f69e9f7c4465ce4e871155f","impliedFormat":99},{"version":"2e415d3626693f39e40f19ad427f6ad173dc4bde2a7c4ef6a655f30d052b61b0","impliedFormat":99},{"version":"07c33a8bf964265d8a37515f8cb754b82ecdb6b2ae1e2ce18b09c14b9d13b704","impliedFormat":99},{"version":"ec031aac2844e250f72acb0123642f6eb9483250ad7389a79b3757963a890504","impliedFormat":99},{"version":"c98069496e78eba403f51c1a7d582ae0e0f338e2d63b6417e561c9f56cbe88c6","impliedFormat":99},{"version":"7263d25edc36d45908af60cedfa14b898f558e17a7e967b2e1fed0082431461b","impliedFormat":99},{"version":"4b0e0173e248db6eab5b9402044f2f1a2d086e99d9d8af6c4a7f46f52cb6d787","impliedFormat":99},{"version":"dab4f30b9d72cb7596989c6cee8787309e45945f236d984db885ad611e59a259","impliedFormat":99},{"version":"a39d68209be7cdeb86ea872366f7c9f3578e657dde3eb1489012833c87028ff3","impliedFormat":99},{"version":"d86678c90586f9e0be0060703cbfce7ae586cae66eac159afc1b355e2dd2f163","impliedFormat":99},{"version":"c5e59270f3237a2bf344ac83ab3095f30c0ad8f3f07e41f266e662ce544520c5","impliedFormat":99},{"version":"71b85fe7dd2be824ca331849424a64b6417214047772f914db895ac812e06b6f","impliedFormat":99},{"version":"1bfb743c928bfe9fbf9ce88bdfaf8235edb1d3ea0b5ab446603d71c4ac87d802","impliedFormat":99},{"version":"b6e92e897f1bd0dab01bb0f64bd70956f574c7752f7bbdc7f107460a074b707d","impliedFormat":99},{"version":"843c0a76abaef274128b61eae8c21f04202905ab2f53b7f03486ea81aa1c0110","impliedFormat":99},{"version":"a3c33f57bb6ce04191478ea23a17293d382cddb7aee7b56bb5aed3ca49c7fa60","impliedFormat":99},{"version":"c9bfc8572556f746686beb2ac476f999356253c4b3fcba189327b25b30c47801","impliedFormat":99},{"version":"b8c88b5a41a26a1b3518415afadf5160e88fa4a4887978b071893a7c64b43014","impliedFormat":99},{"version":"6af214e64dbf7c599257f7f0851cb57b267c6eef97dbca04b1f2d204ac571fdb","impliedFormat":99},{"version":"7197ba787985c196aae100b99b32e5b271627c340a5883a52c83923f796ccce8","impliedFormat":99},{"version":"ac84c9b0786abb646dfce8480f6ebf83370a47a45d8bd7e2bc705f1069bc71b5","impliedFormat":99},{"version":"3e1850cc32b15cc8e9e7617ade862f50d4d4220ba423ed2542915649e84ca483","impliedFormat":99},{"version":"b95e18604b5d61baf87320e5bd776467df49d18a26e93b5ab18599ea37d4e7bc","impliedFormat":99},{"version":"98c33da6fd946601b36415c760e677c1faed100c361fee8c45565d8d6a00aca1","impliedFormat":99},{"version":"afabd37daf4bc1b2604caedd796ec9deb277d7f3f1927ecea80cc9eeda678518","impliedFormat":99},{"version":"0dfe325b190de07f861c28e1027730a186591562f3890a03ee53c66da76a2065","impliedFormat":99},{"version":"c59eee5e50312900effee1403fa07d9386e95dfaf20411a854729acdf6787629","impliedFormat":99},{"version":"8c8b35b1251978c2156c04db23ce6b842f48db71d39b42dd3c537dfa099e5ef9","impliedFormat":99},{"version":"ffe2657207e83f7b1a8ba2def29185ee81571f5e120176f981e544e589192958","impliedFormat":99},{"version":"9b571fa31a14b8e1e8e7412743e6000be66b7d350358938c1e42bcd18701c31f","impliedFormat":99},{"version":"9a14a6f51a079956ce0a7ee0826c7898825dea24be60e10802e18b46f142efc3","impliedFormat":99},{"version":"f3789c8262f633fd3f474f2f7e36537a29c65bb60a351efb2ddf47208909b962","impliedFormat":99},{"version":"f0410c617e9f6d332d7b860a1c3a679f7fa3e00e89699dfbc6b4f563b12b350c","impliedFormat":99},{"version":"7cbe98b14f6634dda9f63a1fbb217b7eee8053c03e28fdd2b9cd6dc27e0a819a","impliedFormat":99},{"version":"f54071d7f4208a2aea12ea153599608607f44f0d8b6d20a47da8f72e30a5dbfd","impliedFormat":99},{"version":"b6b726231178cb2695b8a83519d4fa50a03e800fa9b2dd75193a56bf6cb58a08","impliedFormat":99},{"version":"70a29119482d358ab4f28d28ee2dcd05d6cbf8e678068855d016e10a9256ec12","impliedFormat":1},{"version":"869ac759ae8f304536d609082732cb025a08dcc38237fe619caf3fcdd41dde6f","impliedFormat":1},{"version":"0ea900fe6565f9133e06bce92e3e9a4b5a69234e83d40b7df2e1752b8d2b5002","impliedFormat":1},{"version":"e5408f95ca9ac5997c0fea772d68b1bf390e16c2a8cad62858553409f2b12412","impliedFormat":1},{"version":"3c1332a48695617fc5c8a1aead8f09758c2e73018bd139882283fb5a5b8536a6","impliedFormat":1},{"version":"9260b03453970e98ce9b1ad851275acd9c7d213c26c7d86bae096e8e9db4e62b","impliedFormat":1},{"version":"083838d2f5fea0c28f02ce67087101f43bd6e8697c51fd48029261653095080c","impliedFormat":1},{"version":"969132719f0f5822e669f6da7bd58ea0eb47f7899c1db854f8f06379f753b365","impliedFormat":1},{"version":"94ca5d43ff6f9dc8b1812b0770b761392e6eac1948d99d2da443dc63c32b2ec1","impliedFormat":1},{"version":"2cbc88cf54c50e74ee5642c12217e6fd5415e1b35232d5666d53418bae210b3b","impliedFormat":1},{"version":"ccb226557417c606f8b1bba85d178f4bcea3f8ae67b0e86292709a634a1d389d","impliedFormat":1},{"version":"5ea98f44cc9de1fe05d037afe4813f3dcd3a8c5de43bdd7db24624a364fad8e6","impliedFormat":1},{"version":"5260a62a7d326565c7b42293ed427e4186b9d43d6f160f50e134a18385970d02","impliedFormat":1},{"version":"0b3fc2d2d41ad187962c43cb38117d0aee0d3d515c8a6750aaea467da76b42aa","impliedFormat":1},{"version":"ed219f328224100dad91505388453a8c24a97367d1bc13dcec82c72ab13012b7","impliedFormat":1},{"version":"6847b17c96eb44634daa112849db0c9ade344fe23e6ced190b7eeb862beca9f4","impliedFormat":1},{"version":"d479a5128f27f63b58d57a61e062bd68fa43b684271449a73a4d3e3666a599a7","impliedFormat":1},{"version":"6f308b141358ac799edc3e83e887441852205dc1348310d30b62c69438b93ca0","impliedFormat":1},{"version":"ef5813952c53ea286963133baf66787308c84eed7338d8c61613a8762167bf79","impliedFormat":99},{"version":"5ca32089fa4a40b1369f085635aadc4bf853bc4ea4dd49eac0779bf9f62423a3","impliedFormat":99},{"version":"5a46f69508e086a0f63d8fb15717422e9ea54d1813be3798c2220bbd9c8ef43c","impliedFormat":99},{"version":"21e29420bf5da1147cf6ebcd8cd85afa21dc3cbf04aee331a042ae6f94c1fa63","impliedFormat":99},{"version":"2532ef3d4f071e7d873ccc1c5766f71fc9007f4e768096b9b5bbe9924abc4a85","impliedFormat":99},{"version":"98f2ac6d25c8ed61bc7afa717b56e11c826fcae1d36c9999248dc85d37454947","impliedFormat":99},{"version":"9bab9e8d65ff83bceec753685598d1d522ca1735a2983eb8c881dc8389b6c008","impliedFormat":99},{"version":"0356b906e53157425c8beb4e5673c71fa80d88e1cd32759d4bd57e59698ef88f","impliedFormat":99},{"version":"0d3d2bf02e634ab678adc2916045058d136c4420bfe710c4557a160b67aed36a","impliedFormat":99},{"version":"edca1f05d978d3c2feae191a82e34710dd8fedb83a24c2fab15373be5be8a378","impliedFormat":99},{"version":"36ac04ebfefc210ab3c0148cbfc451f3434e9ca7048b19827a98247875923176","impliedFormat":99},{"version":"866c88db9c98b1497eb50a58cffa811f35d0aa7ae14361e07bab37f1966e7fba","impliedFormat":99},{"version":"d44ad42a40c4e84bcccc9a5db198f86afa6196d42e152cedbe09d513bff01fb5","impliedFormat":99},{"version":"4f20bc9c75b4515c25c3de1cc6c5391972991a25136b796f8c6601a809e80796","impliedFormat":99},{"version":"4f3b2abbe8fbd186f5d599de906c5afd2ec4328b13285dbbab5cddc3cf3b7373","impliedFormat":99},{"version":"2670ba717e7b90210f244401d5fe6f729cf879cb2938b6536c9c118371ef24a2","impliedFormat":99},{"version":"2e86a352fce1cf1df7be54b242d65c5efa3d66a445a60b2a0f7c33a60ed76eeb","impliedFormat":99},{"version":"b85a123b9f8fc782828d80ce35261e7a06f97affb3dde7cb158da6f7bbd17016","impliedFormat":99},{"version":"02e6668da999217b040e0d8d6e41daa96d7f59eda7bd9dc9156378584116b296","impliedFormat":99},{"version":"7c52a6d05a6e68269e63bc63fad6e869368a141ad23a20e2350c831dc499c5f2","impliedFormat":1},{"version":"217de2289fff8451ec63629b4a49eac597c68425b9bac8fceacc861dc7f33989","impliedFormat":99},{"version":"1a45026d00ce38b0e8deb084a105fe02bdcc32b7050195cc6351c2bb5b554c33","impliedFormat":99},{"version":"97bc3fd65336434e6330e0a9141807cbde8ba4045989809632f70ba93f70f6d3","impliedFormat":99},{"version":"d5bcc410b5ab12693f89a3c477f8dba724d881d87498adfa8ed292869b393c7e","impliedFormat":99},{"version":"09938ea562ff26325e6adccda5de5fc7403c28798335cc3d947eee9b6d5940b0","impliedFormat":99},{"version":"9f313a2d30d03a9954269fa7c7f5cca86ffe2ae6c1ea14741c3e2794aa805806","impliedFormat":99},{"version":"2c4945c48f529153672e10dc7b67f414ac7e7678bfcd5d6b79842ae28a330002","impliedFormat":99},{"version":"0e77db673ec8f065fca99ba005c8be50f615ae00c86f340696bf81cf65bce59e","impliedFormat":99},{"version":"ef83f22620073b4b9e666191044faad4f2b3a5b4bb87e8487b8200bcc75102df","impliedFormat":99},{"version":"99cec35e19fac2229b5c6ba317476fd2694f15a0e9a9d38f146c5f5edfe3ada3","impliedFormat":99},{"version":"730a7f1b457f1b6017fb7a000cb9c1ce9798c3f0f247f1cd751ea7d2aebdf1fe","impliedFormat":99},{"version":"98ab624c4bb847ffac693acecf770154c9763eeb7228e28b873aa2d2ec9eacc4","impliedFormat":99},{"version":"6d26c9ddd47ab86552f4d06e7bf051661237856cc0e5cf75d634853bbd562166","impliedFormat":99},{"version":"680d0952320aceb8891190e27707ac15753b603df67c4437ac7b6e9fa64d8744","impliedFormat":99},{"version":"0a202409812f7dd20d61ded10a6984b79882fe264c76364dc53dca951a28c737","impliedFormat":99},{"version":"06d5971c8b4a3bc00bf57f4332d3bfd92636dd4abda4fa0357c7c1dd496b1407","impliedFormat":99},{"version":"16bc3daf1ea7a6d3ce2407e25ca4ae2ba980c9f683f083c7ad6dedec22b64ecb","impliedFormat":99},{"version":"719f559f65d32823f1db11af17b4ee08fbb19d5acd4b6feb7b6610ccc83af179","impliedFormat":99},{"version":"32e457b81fe1c22b636600c5afaeaf9b53610174cf3bfd3ae6163b6b4251424f","impliedFormat":99},{"version":"0e974dacd2db2d61518aa2b96e39cda96fe082f297f1648ac92aa06d22f652e6","impliedFormat":99},{"version":"aa29bfc666c850f62d2d0b1bb1efd7a56074a96b309667e0de5e0f6c9a893957","impliedFormat":99},{"version":"218daa4b2d1f8f6d3c4f022acce45b10b65d04086a1ab74ea7a135814521627d","impliedFormat":99},{"version":"7f7b3faa89da29e2f52f73f7f2dd37b40c7d1e6dd8b820be1f9603bbd37080a0","impliedFormat":99},{"version":"19129eddecdecfc0dd69e7d02bf2adf525f390269f0667af7d9d14fd9933ad53","impliedFormat":99},{"version":"93f2f1257d136a1173e26beddd168ebaa5b50479fc9cdeafd3c3fdee92db670c","impliedFormat":99},{"version":"8a50a838343a8ee7318f5a4a33defa84d325cb035ff67d4cef3f04cc3dbd7c72","impliedFormat":99},{"version":"93f0399b89384f652cb73f597865e287b69db239dbb52c044a6844cb44a45b1b","impliedFormat":99},{"version":"cc545c484b2a0cd1a77e63252fa8bf49064ed577781cc7f273c8b499f231e9d7","impliedFormat":99},{"version":"9553bb2ddc97cadf255d6056236f335fb3d0b34cd3ff34ef7dc170d0004d8f05","impliedFormat":99},{"version":"522651983601a3d0a24eb8104086714d8e9a958810503275e45cd6ff263cf416","impliedFormat":99},{"version":"4a42853bde0c734cab8c5194afa6e78a6875090d310d472127c84110b8468870","impliedFormat":99},{"version":"ddec04cd05ab7614a2d51c3fbafa772b47cec4d7d6be80c1de8d37e4366692d1","impliedFormat":99},{"version":"a28d089808860737ef08c33c36db5e3db57ec5c5fd41acdbeb0f0d1d8f7a1519","impliedFormat":99},{"version":"8bf2591f190490dc2bd3425f53b56b941cf05d0d4e7c69beb67f473a19d1d87b","impliedFormat":99},{"version":"51b1dce48fa5bde70b49e5586d0bf7ba3371e172df994fd6401bba8b436fb852","impliedFormat":99},{"version":"09a2cc054e9070ff418f718c410e0065a56447a91e4770d619b58142b7ca7800","impliedFormat":99},{"version":"c0e40d24064092ec578bc6f7a61e8a20b14e450b69978017a94c1ce30c3d840b","impliedFormat":99},{"version":"aec5756720255bd7045409db869db09031ce31003dc654175f552d59b196313f","impliedFormat":99},{"version":"86892d5bcae518db21850a892aa682878f77bc6ff1fe096f5f706c91e547cde3","impliedFormat":99},{"version":"920fb154685f4ceae115152b5880295f0da66e60674d22852b18424d2828053a","impliedFormat":99},{"version":"d22c80b0d938d2a571dbe1707606222fb97bd1d4bbb46fe42e326bdee6545ca3","impliedFormat":99},{"version":"4053a0866f10634083ba91f2166420b1c29a2509b64803bd192f50baeb221265","impliedFormat":99},{"version":"71748069e3823c2c09f87fd64f2078d2ac74d80c19bb2d44e3d61e9d5342a23a","impliedFormat":99},{"version":"8b5762f3138b2894db972d51cb539f1ff2bf6b231129667cb89962d4711f9c70","impliedFormat":99},{"version":"ffa366f1f2b7ccf00d170f120836a57cc74e8548e3e72b41bd0cee00dab9dd2a","impliedFormat":99},{"version":"8c85e5dbbf569edf4c83e9e2e5cdf69d3e0644c676d22224899f38c0691a158a","impliedFormat":99},{"version":"aa94cdb0dbaac5ab520157f991bdcdc953c2fbb0436cb4ef6252bba926429a34","impliedFormat":99},{"version":"f440eb21669554667141024bf26145e5bf7de56eddf9eaeaff94310b911f4cf0","impliedFormat":99},{"version":"664ea2d1a61cbe738cf3a4cbe619f775868a97d06398cfe2867173356786988a","impliedFormat":99},{"version":"43246e78fc3edad75b54a70ca2298c86f78023d3d26513fa0a2f7dc8f41bccda","impliedFormat":99},{"version":"8ea7b3318983c9b2e3afa2eaf76d0f7c20c15a571c35567920f0f89848b09fec","impliedFormat":99},{"version":"060bc6464f23a8cfe35ff7b91a3ca4ad918b4f760a96e666453ea093b412a336","impliedFormat":99},{"version":"960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","impliedFormat":1},{"version":"2e7ebdc7d8af978c263890bbde991e88d6aa31cc29d46735c9c5f45f0a41243b","impliedFormat":1},{"version":"b57fd1c0a680d220e714b76d83eff51a08670f56efcc5d68abc82f5a2684f0c0","impliedFormat":1},{"version":"8cf121e98669f724256d06bebafec912b92bb042a06d4944f7fb27a56c545109","impliedFormat":1},{"version":"1084565c68b2aed5d6d5cea394799bd688afdf4dc99f4e3615957857c15bb231","impliedFormat":1},{"version":"057a6bc4d8d4ebc4817ad261915f898cf589b62194058913ed9eb4c25f14544f","impliedFormat":99},{"version":"ebaccf8f7b32b5e70b50a0f7f85fd1f3274109ff139dd672b151f05281d0fc99","impliedFormat":99},{"version":"90eb37365f7f73460de47970a44dbf4760990badf21b3223e8ce0207ed874903","impliedFormat":99},{"version":"3127a03a881f78c9145d7db821295531e8c577a8a0738847e70af2b6ad9778f3","impliedFormat":99},{"version":"892acb5e07ceaa0b42725ffd0625b833e77cd148f19117e510334bc815b0b3bd","impliedFormat":99},{"version":"1a35bd51a28387166ff9069b79c5b1b45d917efc33381368083a645c78aa5006","impliedFormat":99},{"version":"01805149ab10adad177b7e7d9e446af6c95e1f7f48db2800e050dcdf90ddfafe","impliedFormat":99},{"version":"57afd9ed037a00dd2715e6128c9f305f287c9b29d9c7f556e4daa074d35a90e5","impliedFormat":99},{"version":"221c6bb2c1152e37f7254d5a167f11ffd57f12c734e970ea15cdc59a97f2038e","impliedFormat":99},{"version":"34b2c4b951dc5a34e03fc0eb0181da3890bd7c720cf8296104aeba2111748826","impliedFormat":99},{"version":"5b6c6c22a039478fa3bc034d6d91d10c0e4d20af1829d986b78a85232cbe0d2f","impliedFormat":99},{"version":"ac67258368872db1e2d5a8fd53fa649fe31c5abe6f62786fd4bc6e6ad51ccb9d","impliedFormat":99},{"version":"3c6e09ab22d0aff0db5dd3b434ca44ed623154cfc5625c8739c5a4b380c25dfb","impliedFormat":99},{"version":"1397759591619d547cbcaea8d94cca1ed29e9f6f13beffaffe9f9307e5955861","impliedFormat":99},{"version":"77381f3914dde6135f903652e311c5bb8053dae28607f519a3716ead90429f85","impliedFormat":99},{"version":"03f966b8e3ca8d79f635c66a3217ebb184a9d6bd6ccb20270d35a7177b418889","impliedFormat":99},{"version":"788ec71568d441083686e3c32d5238de15aab63b59481f9b91174d8b4fb71100","impliedFormat":99},{"version":"976851b5b8d431a8c0767507e182658bb195c7d2fa94a2249f653628791e34b8","impliedFormat":99},{"version":"6d9b1602e3d14e16b782dec30666f2e42d287d6a5345fb7ae52111f9a1e1f92d","impliedFormat":99},{"version":"bb94a73f650bed26030748153efe4730ffc5578a5fae54c34e287956e729340d","impliedFormat":99},{"version":"07c9867e04c1628c47fde22389e075d615795c6b7c66ea90af6c281810699d0a","impliedFormat":99},{"version":"75f943dba7fb8f9472368465096d5f536ef3ef477376d83134978110362ce726","impliedFormat":99},{"version":"fda0aedb30d6f3671dd757a418a60b32699a0a9fe545f68b0be1aea21b1bbdab","impliedFormat":99},{"version":"23abf55ba0b7a59b9bfd17491675b818fc178c581686840a7aef27e45205383c","impliedFormat":99},{"version":"06d3015b06f1f22899905d74207c52e54c051f0466975156de9067ceb884ee47","impliedFormat":99},{"version":"badf4bd328dba83445227652bc1fc2a2d33eb30090e2dbf94d04844c48f3fe30","impliedFormat":99},{"version":"3ecd423076cd6107967e1b9187f38919490d790b258df54e8a6572a93ded5f96","impliedFormat":99},{"version":"3544ad39f2a89044a4d79b878d07a10b9380d39adc2aac3e480b75122ed4c570","impliedFormat":99},{"version":"c1c550ec07e285fd750ac5e3c8ac73e6ab28d775c1cbe29bb97820f169dba940","impliedFormat":99},{"version":"242258092f0ed6960f328b9d7a455c6559c7253c6b57b08883a2fb859c4cfdbb","impliedFormat":99},{"version":"d30e1f8098a34d3b71f1681959f993968fd6d16f40c653689705980ff6610e9e","impliedFormat":99},{"version":"848ac64950a137510b1f47d87cb0f1fe15c7eb06c8e1c2823ae63f413430653c","impliedFormat":99},{"version":"b31006747ab661a13d4bd6bd42715aa1fa8c2288d99a8d2bc4d1f8f81be0d7ed","impliedFormat":99},{"version":"b99e048d5bd6cf544e47f48d4b6893d62bae40217b4d477213e4043b11b0d1ce","impliedFormat":99},{"version":"31f800e9c3607ff0e370bd5a2b73501567dfcf03b7c7c9c9e8927c10a0467efd","impliedFormat":99},{"version":"75624353ffcf91bb2b7911b44075d19a7b9283670f2a78938c17e82e50d1c0f3","impliedFormat":99},{"version":"cad130d0060930b3e5108137b6860fb1eec34406d2710233512256e0b857a252","impliedFormat":99},{"version":"f54bb4e54d36037ae537835edc7d64caff0e33b34fac0a2c3e035a418258ab62","impliedFormat":99},{"version":"725e63c5518a0ca69dc44c12dc4cde29218e4bfd8088368ec67836f394cfc7a4","impliedFormat":99},{"version":"f69b380742957c3cb43b061ab3293ac7ba9d2af1771eba33ef2f814de2353140","impliedFormat":99},{"version":"a6c16d7e6060828143259e5ce1ad0228e3a34e2ff2cf35d2300adc78b6fcb130","impliedFormat":99},{"version":"de9ff289e55588add27a015cc023023660d6b8a21da1a64baa237d0f448b2e96","impliedFormat":99},{"version":"2e92b32bb0b1241e6df9676055172700214318acac3047979c4e03cd74286baf","impliedFormat":99},{"version":"2f7d6f80dd8dd07edff2652926a4b8eeaedafb51775bea7c889afbc795d40b4f","impliedFormat":99},{"version":"32a7a268524728eabdef3c3303a884504d020038f4f320105a96ab7e01430c71","impliedFormat":99},{"version":"586e33bd7f51d99245ff9513e6d603b8522379f29a3f0005176411e16ffeb42e","impliedFormat":99},{"version":"0528549bceed39a3d94c2bbefde7eab0778460dae5eef4ff71f04fcb8c8ec6f0","impliedFormat":99},{"version":"17d424fb44cd45655049d153d11a71cb236155abb50d605e1d91c3736799004b","impliedFormat":99},{"version":"715201e7e601dfdfa08c336f663ec650517e74840d7f988d876f841f0816d297","impliedFormat":99},{"version":"03ceff4db920e1831332a5a40c2eaf8056f221b9e3e672bc294ebc89537c9ff8","impliedFormat":99},{"version":"fef81c4e9f1dfb18873d09b8013567fdb97c0b0bbc3ee7a76c1f2a260af72c8b","impliedFormat":99},{"version":"feca50aa0695b84a0e01990e23e6ba7ab6bd81d50378f5089609b17e52ce97e4","impliedFormat":99},{"version":"377862d812238033feb16a3174f3eca5449b5786727572fc546cb6f1e973adef","impliedFormat":99},{"version":"e362bee8c7c56dad6c0f52b2d83316ed53c6aca843ccc4c1a88b7e55382e0b52","impliedFormat":99},{"version":"9ad91c508ec913a91b433a23c6221e74ccd438b96e001050a7a4cef41a2aef8d","impliedFormat":99},{"version":"eb7e19c5a59896a08776f58b63212ebf6b4c52c24cb6f0574c8ad2e462fc1277","impliedFormat":99},{"version":"c5676e6ff4ed5b0069a3dea05479e3a5abd938dedd4f5ca813f744728066fae8","impliedFormat":99},{"version":"eb874afa240860c59d2443e281d8a0437598f65aa84a3eaa9b5a63533a7e3d99","impliedFormat":99},{"version":"7944d3987fda085b3b5a9325ec52f998d0172d4138fcdcbbff60e34b562656cc","impliedFormat":99},{"version":"b944764dcffb404b05669dede7b7008e62b21a8f7c0cc1c021294490a99e555f","impliedFormat":99},{"version":"5e695fcebbb6a7ff65a5413649befc0510bb34c2e8ac4aa86a55daf77256e17a","impliedFormat":99},{"version":"503a8ac885749cc70864c0dfff99302888a41964e4a9fcaf83ab8d01eef3e458","impliedFormat":99},{"version":"015b9884efeea4f3ffbf092e1c1d6eb69ade71d7d79833468e9c18e36545e142","impliedFormat":99},{"version":"8637312eb67001e93cee29113dfcab695b3e12332a5f4d2fba22471d01978b3d","impliedFormat":99},{"version":"8dfeb90bd8f28f690c724ee3c00d2d32ad633884e159fcfb5ce4e82ee5589c5c","impliedFormat":99},{"version":"eb203bc5bcac0edfc18f2079033038917a42d99775d78566f9844810845aa49d","impliedFormat":99},{"version":"f5df5c1a71732a42fdf23542b344d7069a4e0a68adbec151982b93571442b068","impliedFormat":99},{"version":"b532dd989593d814d9bfcb3131b4331de4b35ade064427001676d1fff001ddd9","impliedFormat":99},{"version":"ca6970eff86a31fd8d9c132f80dbd1aa54d2dcd76a5b2a9108ae8c394bd7e7a1","impliedFormat":99},{"version":"3dad5f9d2442b6a1ee26187724f0a1ebdf9f89b5dff0fb3b8ba1eea11db6d7ba","impliedFormat":99},{"version":"5fca4b593907fc70848e8590d14dba0cf0410e6c061e39c177835e700ad089bf","impliedFormat":99},{"version":"9cd0fc5364ed46b35a958c51c45e4bc47dfaf32750d536b16faab83e885f6c1a","impliedFormat":99},{"version":"4876014affafb8fe03898c335c396ec29ff29ec8ae3b50ad5ea5ff98c9323c8d","impliedFormat":99},{"version":"255cfcfd791b6f0dfd44f17f8bf6d4dfd733b4a8fec6c15efed8013d794016c2","impliedFormat":99},{"version":"8c12c27dc0c277c184812b6605f122f971c2a7b0347e32e995c0b410d96d687f","impliedFormat":99},{"version":"d15d43b6b19a969858befe90f60009952298120dcaab7110cff78a388a50f7a0","impliedFormat":99},{"version":"a6c66a8706af12cecf4c42f17508d6a76b78388e849d8d59b7933a68fdd8487c","impliedFormat":99},{"version":"37b5ab7dcd9f3954013a12e1e873953d8be801cc3f97b4e5d9c4dc895d8fc4ac","impliedFormat":99},{"version":"1277bf682a6d071861d20d2df102d950dedc15e49a96f211b1a4d2c87c83a912","impliedFormat":99},{"version":"8cfe0fafb887fb38150159834ac34b3e91d883b250ba4e1154ce88ed057d9fe2","impliedFormat":99},{"version":"f16b5d560b0e248818ee7c18cba59cdf9e4efa20107be3722e8232aa4a05b61b","impliedFormat":99},{"version":"da5d2ad94cbe6ead090c5dabeb266eb81a958354e487442dfe8313beb467f99c","impliedFormat":99},{"version":"1656706a594b924adfc45a7e9088c63caafb5c2ba689fce0d757d1ee5f016b17","impliedFormat":99},{"version":"50ef2957360f31ed9f3aa91a1bb75d927890469424d1713bb2a5c3eb1aacc4b4","impliedFormat":99},{"version":"a050ee6f9c5833d18643f86c0618ffe791cc15e7dd758f21738e305749e9b002","impliedFormat":99},{"version":"d6d3c9c634567472794a7de284b8220174b57c8ac73b351398436c100bf43cc9","impliedFormat":99},{"version":"a3a561696b28f4e190b734060801f98f6b90cf445996871d2a98e96e4802948c","impliedFormat":99},{"version":"bcaf57053cdd116527f18f99ed70085db39bed9a251510fcd6903e99df6910d2","impliedFormat":99},{"version":"522ff1756b55a8c06ccc949b09b4cafe6fe922fbb1e2d780dc04e992673f6375","impliedFormat":99},{"version":"002a3431688069033aec66620393cd1b97a621e2e3f14742cf59eb472970e32e","impliedFormat":99},{"version":"04ea39e4b3e1d6e56bc1f0bd0c7b19aeb4d35b678937b3ad54c63d44b44900c9","impliedFormat":99},{"version":"7a54a284c5fb690b97ce715f0e7d861c3b150765751cb6bffd6c479c8d5b0313","impliedFormat":99},{"version":"68e90b09ebdc70f73bbf7a632837f153a215ec5fa44354061181d706a991a3b6","impliedFormat":99},{"version":"d7fbd0ea7793a151d792f6ad7d7c9a9ab7dbc69d970d0d0e57b408cba59ab91c","impliedFormat":99},{"version":"c59df2ff58c6adc907ed95ae1e0ddc2f6a123ca1189926dbafa3fae1fe8f40b5","impliedFormat":99},{"version":"b9e75acf8c49e675de4d1f0ddc5f9ccead5e31ce10814bc6c3e159f5aedac1f1","impliedFormat":99},{"version":"717c55229509a89e25c3c3a83a1de364e4db51be5002a738800f76f0ac168868","impliedFormat":99},{"version":"72526a38ff02f77db02a437640df162dd7b542026e0cd0c30b80b4847b154be0","impliedFormat":99},{"version":"74645fa7216f163be6da9092526d7ab1aa4c2840830b5e4bfc901fa592853650","impliedFormat":99},{"version":"ec4ec119f797f71ee6d8110930dad93c689a1683484171621a2702b873d8af1f","impliedFormat":99},{"version":"194560fdeec7316cd47bc201df705df31023382e09a022e780abae975795045b","impliedFormat":99},{"version":"afa28e0c1b26066a331fa400dde21e065ff2275238f41a66d931f56804326b2e","impliedFormat":99},{"version":"09c6639e5622dc1693276f4c7684b0f0f4992d5c4e5c0769dd576e95c50635f7","impliedFormat":99},{"version":"0af521e519e48440bd69f5683fd26542d478c8110c1bde2815a732ea790d5448","impliedFormat":99},{"version":"53c73e3bcfdd414d1f43d62801c7bc03c491c7b13a9f8e7decd2a73afff8a10f","impliedFormat":99},{"version":"49062a955da1d4880135873f5c08988c920429c3785349ed1b4e112b9269d8f7","impliedFormat":99},{"version":"334bc494ebf7f62684a30a916455dc63c6895784a74b07b835d28d0297785496","impliedFormat":99},{"version":"1c671fa97ad69902c110c7890527f5720a785a2e0b68efcb77c16f37d6274d67","impliedFormat":99},{"version":"907467198cc07e6eac62f7eb2bcc7afc31e3ee433ae60000eca62213de971e6d","impliedFormat":99},{"version":"4263e62ba6e779cd26752ab3fcfb42249d009efcf110bf7a69412c1f33582e22","impliedFormat":99},{"version":"fff135e7d6bc235d1968beb6e5d061e243ae19a723a9e2d5b79052eb63318590","impliedFormat":99},{"version":"a723cf11acbb7f1d9b620b90a5cdc50f60f9ac8c2ec7bb6f69751729093180b6","impliedFormat":99},{"version":"019bfea6e0ea6051fe1d51f3d0671fccd704731d54ab218d9a8a42afcde54a41","impliedFormat":99},{"version":"3f9f8c7286eb740abc5ab238fe81d3c4fd5fcde423a120cf55fefd480d694743","impliedFormat":99},{"version":"3f854a9e492f56ef132efbc1bdc155896b97618a2c15eb06248bd88478303be2","impliedFormat":99},{"version":"984d0fd8112e3cdde9bc9cf0875f69676cd5a150caabb228cf067741e1241add","impliedFormat":99},{"version":"401914ef3c9067ec980a75be5e0abbed382a42a279d91cf040e6ec9f455e218b","impliedFormat":99},{"version":"6b95bc34efdbe1082609ab0a1522f30f4b79a906e479af1295d4aba7fa887f58","impliedFormat":99},{"version":"c81e7a416c0e77487b511c0f345797d6323214968009b52dc8c2aa5c9faf7210","impliedFormat":99},{"version":"48f5798a88443d6fbcf24be78dd95bcfd0d173b9639bf3772ea499773adf472a","impliedFormat":99},{"version":"0d8ab497f53d6142282bacf32f1538fc607e267e058074286528126fd1c2db6c","impliedFormat":99},{"version":"5b81a34a60401dac6213a45e2bbde3e57060ff06f847cb005337816ff2015189","impliedFormat":99},{"version":"0b7afe6e094ac7b826a680d4a3838166c438d0d9b0a8867766e137bb2eb24a24","impliedFormat":99},{"version":"8ae43e29b6a1b72cec9bd415afd180de9a9d83423c7d7c8f4d61e090f85ad572","impliedFormat":99},{"version":"f8449256f5c820606e9da9e5dcffd574d48981b8b6520c234b15f8a6bc3dfa70","impliedFormat":99},{"version":"c5aa8fd497a5ce7145a9ab4327fa9a86e8cf04abd71957c9b702e118546b72db","impliedFormat":99},{"version":"3de403593b664a953f7b10950653129a6b70e97fbdbcc79ad8292cebd6602274","impliedFormat":99},{"version":"35c011c44b69e88a5798bb61158c26e35ce74df571c095c029b29d182924c2f8","impliedFormat":99},{"version":"fc41464bb043aad346f6c4a9761ca347ca90ee6912d53b38b8fea621626be77e","impliedFormat":99},{"version":"c9bf49c427e33b552a03b20084624635957dc8468eca2a3d461f0582a011c5b8","impliedFormat":99},{"version":"f4d2c3633596eb54d2bb659bc1c60da3d4157c74c6b6e19f8d27965da2b46bf4","impliedFormat":99},{"version":"cf0c6c6b7ae29e49b64116ac726435fa589a9f4181dcf0fa95e5c06ca07a1954","impliedFormat":99},{"version":"53b2c7304bea0d35da3f158365ecd0794a49cbd8882ff2f7122f99a737854993","impliedFormat":99},{"version":"8ba0c3329dd73b8da0be21357da0dcf8c59e56df9378548e2baa7c05ddd1ee7b","impliedFormat":99},{"version":"6f40ad7380099493513c35be209c0b10a531c4e3bf3acf27d5400d030c59971a","impliedFormat":99},{"version":"d2f0d9d92558f5e5406a561675e6437524bee447f554a8ba6f4dbdd627d0b2e5","impliedFormat":99},{"version":"1a6f8bdae8370c07682bd8dbffb161c2430ea51bd25f0384c66919b4da006ff2","impliedFormat":99},{"version":"ef74f47c63b7a4d7a022c1f569f3ca9c14e3277e0385b037587665d69b96be7d","impliedFormat":99},{"version":"4198bc4505f06500bd9b7db780972b9a301cc946896287e0c9da7d140849ea46","impliedFormat":99},{"version":"990241e0a1ce99f55d209b7957d8ad37ef44aadb98a65d771ace925343a53d27","impliedFormat":99},{"version":"b4b440d99a10cbfd6272aac5bfd9aa9622b9c1f9c43f7d5cf79cb43825614958","impliedFormat":99},{"version":"741587fb86739542002fd67fed070c07e34dbfd9bbfde95ca955144b861d00f3","impliedFormat":99},{"version":"85f6fec457861b1cd7267dce1155878bd33d26f4076db4f399376b74ff492410","impliedFormat":99},{"version":"6989d42d669be40f6591a8fdb8e705df5fec8968a38206f5a0047f47c230d1b2","impliedFormat":99},{"version":"c4dc3d6e7fc6a9f92964a638d033397f68eba61f3c250405a93449081b626034","impliedFormat":99},{"version":"a534aae35e31df8c5dfae7d984612adca9d5641b59b49ead295066dee45b4dfe","impliedFormat":99},{"version":"5bde73a7726033c08aa3a1578dac8f1734dddd9a630f9b985d67365049abfdb1","impliedFormat":99},{"version":"d0b1cdaa14a443a383bfe147dc579b4a836b73f8dfe2b3289e58e871fcad0bf8","impliedFormat":99},{"version":"2546d813c0fcb88951aeeb0c59d42fcc188ca463a6b64045cc091cbe01737664","impliedFormat":99},{"version":"fa36613a2eca835645eda5b9d42edcd51ee8caf8b1b9925fb616c3ca9ca2f1eb","impliedFormat":99},{"version":"4e233c71ce329908730909620ef85af24b60fe520d85d0ab6cd0c8fdb209166a","impliedFormat":99},{"version":"aad34743471540dc34740144e1dccc42c9b4a1522a8f60ea6f8bece95f226aa5","impliedFormat":99},{"version":"9286fbfc02a92a99210da22629d15ace72a71714c3204bb1f21d1647340b6a1f","impliedFormat":99},{"version":"3f6ff7fa12f7ae9e51fb3335767a23feb2042397ff6dd78836ab8380ce06b760","impliedFormat":99},{"version":"9ff80c1ff411da4263c981e187df80b25032f1ac386c137fc4e39252d69819c3","impliedFormat":99},{"version":"05e7d52d0f13fc255dae1568da631c3b31ae36097bf4fa7fafa5d4fc0a902d2f","impliedFormat":99},{"version":"9de7ba484e55a135129114a55baf6401450d4dcdf6072a4026e96a6c491c0df1","impliedFormat":99},{"version":"be8c3c8a9be63d5d07ab0916d6a4636b47da24e8f09fa2bd23be05c1b6426598","impliedFormat":99},{"version":"035cdb01dc859990cc531611dd6c7bb0144f5c02a911b06e7dfbf3232ee0bc73","impliedFormat":99},{"version":"1a95f139da85d7daf0a3e6de7aaf243cad13900f61ed2764a9bbdf64d64ac8ce","impliedFormat":99},{"version":"cce8976bec1dfccb5e48ed58df797a393e3c894397b40986884a173e3ef8fb51","impliedFormat":99},{"version":"d1dfa8127d21751115a0a6ae3e0e0e41f70eabf45e23787ba2d327a14669e518","impliedFormat":99},{"version":"ef87c5b95fbe2151e96c89e6c80ad7dcfa895a7001ea9c0cc258eca3eb84ae49","impliedFormat":99},{"version":"2433129fe6d3d67b8268ba54abd4ab1c7c2f7a32444d4c6a68a9a10be06cc617","impliedFormat":99},{"version":"e969d9b9fd9ca2e023ef701519ccd75e207dd52b92f9af22e15c04fea8e719c4","impliedFormat":99},{"version":"22f273ce016495159b7c0ddba1521435c4ae8f05329efe96fcec598508d5a682","impliedFormat":99},{"version":"dd429b03ce8ba91ab6f204d6c2c7ca00fb3cff07b956da1ac8c60360da28d866","impliedFormat":99},{"version":"b7a63ff548e03c363de65f81f7c31bf98f77b73f13054ece8ee2bc1c1ed9cf6b","impliedFormat":99},{"version":"10122199ed1aab7af1a1b1e1836a79d1401f4700bbd5b85aa1a52cc7d5e200d3","impliedFormat":99},{"version":"5f49779e856a15a93dbc55628c6dd22787c4729a6ecd4a3ef0226ce3efa54d6a","impliedFormat":99},{"version":"bb836f3e3bb9cff93ea6cd392b5fcb88aae3d664d7c09171e6ffacc2f0a44759","impliedFormat":99},{"version":"663757479ca123153d940314df55e939999c56e28b2b52f6c7c8a6f00b59a78e","impliedFormat":99},{"version":"02d5344b11cf703ffd698f1874f5298d855ae6a91c3a2d42c3d95b70c2f4e6f7","impliedFormat":99},{"version":"1db8be2061f286903f62930c719d46369a876340c2571ddc2cfa8b65e462001e","impliedFormat":99},{"version":"d6f8d517ec72c416556f8fae1280d2dc202cdf7bf00621827360bed778a8c19b","impliedFormat":99},{"version":"84c6f7ed4db89f3c5b300c81430eb633116492ca46951c6bb5dd45808c71810c","impliedFormat":99},{"version":"3801017d48638edbf32c445143b804711d2bc1a2ef51f0dceb25fe8a5b591bd5","impliedFormat":99},{"version":"2d5537810389a683449de9b0896ca4b130b93a339d8d72836649f08cebd17f1d","impliedFormat":99},{"version":"900fd868eedf9974863b2cc58d7aee9e7730fed6c7787329c66f02ead215f307","impliedFormat":99},{"version":"558d19d1b6743e92b564bfbf3edf3501ed8bdb2d090181b4fe5003b884694c38","impliedFormat":99},{"version":"2dbd8d1b3b34d8ba5f3c9fb13253d08f3b07fc1710138824011f858907e1670c","impliedFormat":99},{"version":"9ac492280c55460036216dacf01dbe5148e3965aa4372b5fdc3edab7f4c49203","impliedFormat":99},{"version":"657b6b8b5d76a9fc986b9330495f3b4fbb9c7b34c271e53deda88eaa8973cfb2","impliedFormat":99},{"version":"17a97fa195741417d6a71aee84fcedf034cbcaa861a61da46fb6e721ce7ae2e0","impliedFormat":99},{"version":"b2051cf12a3afba968a368f700d1b845824955d478807229b25560ceb55abfdc","impliedFormat":99},{"version":"ee2f8c4790ef349e7777b3faaf599823e82e3e59a4bfc2c67c3e1775d3bee50c","impliedFormat":99},{"version":"8effb19bf88f12addeb45df0c5d05e0f6464612d3d6b34f1da8ca8c2c1c5cc12","impliedFormat":99},{"version":"56aaa79117a6b4b58caac3c352370dfac66540c34356b2a0862841c3f6d30db7","impliedFormat":99},{"version":"bec1c0e444418bd6b168ffb15b76b9441c761bb2d243c089fa6ea378b2cc72ef","impliedFormat":99},{"version":"f6655a2e1d991e617b3695cb250f9a997ad09620c5399cb8de06fd685d3643d3","impliedFormat":99},{"version":"5c7d1b8744a3c63cb23db59258fcee28ef638307c6862f51572805162a851b51","impliedFormat":99},{"version":"448a88c8e7eda3d8999b7022cfe4dbd1cf586e71e21e999bdbbcdd436ac58b8d","impliedFormat":99},{"version":"7fcabc4baa02f69019cbf2b48048fd9454a8b7c0c83c776ed9d92bf53df14d6a","impliedFormat":99},{"version":"ceec50190a9d3d13a8500a8e1d1b6f8f5a3f6be45dc8e9f983530d84dbd69cd7","impliedFormat":99},{"version":"42b9d795a3152c6bb0f641da28297b91d5424cdbe936952ad18c20f501bed1f0","impliedFormat":99},{"version":"37488fdc6ffd2d40cb049ddab8ba198c8e887dfe77510c6c83efb6de34e2fe68","impliedFormat":99},{"version":"af582471a53417da3ef5d56ae772d08eaee896dba489a77fb76428f2c0116ea2","impliedFormat":99},{"version":"661b89ea587a659596859486a0123a631c34b5057993284d60ef9b87c015797f","impliedFormat":99},{"version":"0e6f5d456e1b73ad322c4b0bdcf10b0f9a8a0b75414d5b9e00d9f561a43874df","impliedFormat":99},{"version":"8cabe28809e715b1e2633c3e849053c2b9e2449d311d2494df93baeffe7e713f","impliedFormat":99},{"version":"e72931e0fd3c01a2153527880a56b53a2fbbe198421809dc2a7c3a93ea74997f","impliedFormat":99},{"version":"b70eb8f22c1217715e2c34d1a83a75d5fa024c32b1aef4b7c4db3f98645cb395","impliedFormat":99},{"version":"fc86007838a8c03afea1015f1cc20a7aa55fab268c6f6314943289e3e85425cc","impliedFormat":99},{"version":"3a5b6c07dd61016f03d7d4b9b8714fc10e0ecfb2f358783449a6385b930409fd","impliedFormat":99},{"version":"0b70dc15cd46f0b2f0d705744aa3dc4798b87f5113589ca5e1a7053af8edc756","impliedFormat":99},{"version":"02eb91b64a184428de52c5a303bcbe0e7de5a878a74692ca1b777ddf336ca361","impliedFormat":99},{"version":"ae1fc7ed3c72167972acd4f771883d14dd13d635c3b585606218ea4f9f5662c9","impliedFormat":99},{"version":"f0e4cb01dc2ffb699d0d7e4f0f14208d1ba6e5cbc12a83afab2553a8729661fe","impliedFormat":99},{"version":"3608e6f20899db55d817ab7a76390aea19b8e3bf7cb4becb5f3b70b833db038f","impliedFormat":99},{"version":"434af61f55bf25916aba2d8abcec57ceeef35571daff914fe7b54aba771312c1","impliedFormat":99},{"version":"3f31fbb79cd50033ef517ce3296f511ba8654758609015026227740f4892e187","impliedFormat":99},{"version":"38977f661ec68bcec7c0087960fc6fb6d5addb7cd48da0e19d734b5f09e799b3","impliedFormat":99},{"version":"590a91fe582b89a9bad5b5b4d1a6d9747c5287f6e1b23a2a57d1aa60c1a23180","impliedFormat":99},{"version":"ef2c251603129991a413e295b5bce5d0ada22726bba363db26e563f9162d491f","impliedFormat":99},{"version":"42aa868d84ffa9aac2f5d08dbdfe6cb79436b96d227b836bd655159bbfddba5d","impliedFormat":99},{"version":"157a1f916813abf3e1faadae34279ee65110d7dc8146711240196ce0e46cbcec","impliedFormat":99},{"version":"7d0101529b77bd85692b2a831308a7534a478c60b95a1798c07e14d3a14e4b21","impliedFormat":99},{"version":"4a0d53890ed17ea582794de930248bb3a5a16547b9659f46664149a853f8b1ac","impliedFormat":99},{"version":"19ea1b64d140b3fb5d1b699b09f1aaa60ebf32014f6dee279b96d92ca662d871","impliedFormat":99},{"version":"b2d2ab3ab26f446cad62cc23ded652641a44deb9d19280550c74cc81c7cd4263","impliedFormat":99},{"version":"d3bb594337c7b16cd0aa2f54710afd9c5352f24d0ac83bf02a1efce7e731a0b4","impliedFormat":99},{"version":"9afee2d40467087a6aed46b5fef0548c2a1351d533f2aafc68cb47694a81f7c2","impliedFormat":99},{"version":"372c39fd10f96d006497fc2bf9d56d0a602119244ed46d087a2bd5bb037821d9","impliedFormat":99},{"version":"86aab19392ce35fbf19b7beb7968772b78380fb3962b020eab778e2060b68087","impliedFormat":99},{"version":"d9e8f082189fbcd24d1c13275aaffebaf48c9222d20654d61ad7082f6f2df101","impliedFormat":99},{"version":"8f2350543fe05a8d34952c3dae8f9781594751f5ef130384446a729e3dac7bff","impliedFormat":99},{"version":"cc27791842a8f54b24e8c3c631fe842f96421d257d0f7b636ba416f8ea454bc5","impliedFormat":99},{"version":"87622b9b115ff00fdcb1ad2e5c0f6064249dd577cd94140d2429aed76218195d","impliedFormat":99},{"version":"987a12239021ad858813841f22475f2a225d3333a2dfd9beb32222c9e2dc2505","impliedFormat":99},{"version":"ed3f6a7fbdb2e7d6bc2636b3f56c08ed34d2ba80ad3c4d30f03a8b12298ba100","impliedFormat":99},{"version":"f2b4e9551b694795727201a46b5b0d09383c6fc88966d3472aec3df1dab18074","impliedFormat":99},{"version":"ae868f126890affa478b4628684db9c084b00eaea3ac884ece0184e8f9b4041c","impliedFormat":99},{"version":"0aa2fc9a3936aaed64b486dc8efcbd6c62e0afad81ffd72be408cb97867c0b16","impliedFormat":99},{"version":"e0842052caa52cb6702d9dc7d3f90c799a6123e8509bb79465c14957e990b204","impliedFormat":99},{"version":"1caad517833757199ab3830587bca968433d3e1e485c518989e10a3b77f85b24","impliedFormat":99},{"version":"9087d62992fb955a421851106b0e8c815f3e24120b95c56e8373d384e273e0e5","impliedFormat":99},{"version":"7a5bcb70a2b1b72d52636ef8aed8b8c8a374067367667fcb8517e492f37329c3","impliedFormat":99},{"version":"ebdb84450ad6efa9a70dbb78f4c0f9a16888bd798eefc37f6cd04d2572206242","impliedFormat":99},{"version":"f93d43b0832bc9f5e6a3ec0358bfee8dc2f44f748278f3e6a073220844e78c78","impliedFormat":99},{"version":"29d83f8e43a87dc636d0e5764a89d45129c9a0f0f8abfa0e3a58e9a141cb66d8","impliedFormat":99},{"version":"30d463e7ce174f7a529d3a832711f424c984cf517c08f59dbcd2ccd5b16bb6ea","impliedFormat":99},{"version":"6767ab11a8cda8c0ac2ac7e2252bf7be2299410752049237a48d93c62a4a7195","impliedFormat":99},{"version":"21394e045094d440e762a0e3f8bf9b8b58ea9daa89e399d108ea2d6a3d80fb96","impliedFormat":99},{"version":"256cde5dd5a4f0ed7516ef587efd4bef006317e8daffc232974fac0efe47ecee","impliedFormat":99},{"version":"53c4229dc8cd2aa22a2c58537514818d429b6972555241f821cd7e1701c42d38","impliedFormat":99},{"version":"0fcffee63e98cf059b427289b97d6be2e49eafc9d3d19d8f527aefb0f28f047a","impliedFormat":99},{"version":"6745a82126e61c30cb5a8db54d35886159c53ac5a28f5a61d31fee282598f7c2","impliedFormat":99},{"version":"be768a2f53e62d96a980aa56e02861472f7e974862730dd12fa26cb4bc50e348","impliedFormat":99},{"version":"a33c25c4c281b8cd1967ce9f2d2ad451edce03a2254102365f3cdfbcf1b00d3f","impliedFormat":99},{"version":"1bc5d66f065f14c9c6290f6fe09492e60d30901737b68a1e344f2d61ed001e96","impliedFormat":99},{"version":"bf531fe3337bd1315f2dae65b2607363d05e5a862ea50a547702a4d950201094","impliedFormat":99},{"version":"fe896af05f06c4c6257fdc8e8cad8a278c90d4b38ff6b70efc5b5e3ecc880bb4","impliedFormat":99},{"version":"362db1b55e2006226b53ac79a8ddd5a12976bdd4531badad0ddff27b49817de2","impliedFormat":99},{"version":"c3ff132ac57ce2706280f9e145befc0e7ee6060caebb32ff3022e9c154575876","impliedFormat":99},{"version":"8c1e7fe0b90aeba2f3eab5fe6e5fd66e70ddb6cd998a1eda1c5cfdd6336ba94c","impliedFormat":99},{"version":"acf830a1733f75248a8fc2d3dcaff39c6e76f9ddf27c20ba09a584da138f46b9","impliedFormat":99},{"version":"89af4f75c1f204d678637102d01382e0b8b167e0b213a42a6fab2a64826e815d","impliedFormat":99},{"version":"cd8dd8ebf533d787130cd5371f8e7fc4403f94cdb2e0dc2e5acc4ae681091057","impliedFormat":99},{"version":"50d2f4d075114bd15852e0ae28244f897e8fb7109fdb4bb980cd0d3071ffa87e","impliedFormat":99},{"version":"fb29fb3a2e3247167f4e699f19b47cbbe02e3137794c48d08ef6140c13a82a13","impliedFormat":99},{"version":"5a211830f651041b3d3873533d8bd4afa01263306da8ca2fdc1e0e1d593caf93","impliedFormat":99},{"version":"00287f47a7a9ab63f5e218d1db19923519e6761a3ae2ba9222d2c38a21a4bb35","impliedFormat":99},{"version":"17f1776b27b2c29bebba486721f5d9319dd9b651b6e3be83de3fa216085e948e","impliedFormat":99},{"version":"21e8114b92a2d11e1f58e2be0a9c59e6d7a9d2fae4bcbed1353bfdea98043fae","impliedFormat":99},{"version":"7468715152819058c1a2a27ea8688a7ae51f9800f1273e0815a60b53a0c023ac","impliedFormat":99},{"version":"fcaaf555e60e7e4ae4b60408c7bb84c0ef61d656a4315bcb6589cae1c5ef7741","impliedFormat":99},{"version":"9192851be0a7d39b5599d1c5a22cd17343c9dac43cbcfed922809d311423c422","impliedFormat":99},{"version":"9ddf47eb87c7613d5a5bbb577fe6ce87dd34f2c7681dede0ab9fa1d6bcaa7242","impliedFormat":99},{"version":"57b00b8088284b7178fda7be8f5987d5edcdddfa10bd2f777c9910bbb7ac7e97","impliedFormat":99},{"version":"0244571048467de1c966215b7506b1a65f19594084b159e675f7d03bb4da4ea0","impliedFormat":99},{"version":"cf03afdf519792b0f8bcc22c984a5521c5d192c3f46b1caee9d645dc02cc076c","impliedFormat":99},{"version":"8ef260aeed7f688a8c40f0a3480e8e4ff4c1406b0afc44544a8d0087c9f80cd2","impliedFormat":99},{"version":"121a70198c504bdf22f901de9f5c4b2264e1c35ba4979c5126d8dbf91c08b011","impliedFormat":99},{"version":"500265f07d0faf96f8b04ee1c9e0a77a8e5e1ae07b075adf58105c05db2687ac","impliedFormat":99},{"version":"5eafb802b8483ae0fda85920af0802e633178c701f631ad85db80156054a3840","impliedFormat":99},{"version":"30c0d02586f80d0df6dde2b95d7f1769e1590e92bd13e4b798bdd840ae005797","impliedFormat":99},{"version":"41edc9dcb80ada08b64177bd4405650842e2e17f86f2ba905e5a7395b660c1f6","impliedFormat":99},{"version":"282c37fb44ceeb5bcfcf070f383314a1bc33b1c1f089f682f53e79b0bd90ce7b","impliedFormat":99},{"version":"87858dcdd2e39eb46633a5db6666f202258d0d0c2040a90e775010d92776c5c3","impliedFormat":99},{"version":"57d5f16d751884e0a2e97ef772d1a24f256dd1b82b35397041d91baa85e4bd93","impliedFormat":99},{"version":"d5851073cd5047ff38938d853a37c2d709d68a74017bd4df1010187f44541fa2","impliedFormat":99},{"version":"a6c6485b7c9ac65bb8147e2d6a43a49458edf99a3607fbb75c67f0a08f230fb2","impliedFormat":99},{"version":"979fa80f9aa7e1f015e0a019a28baed03f69924db612889d1899b62b4439f8b7","impliedFormat":99},{"version":"67cfa42620d86ad53914cfec05a9d8f90e43fb28fef9323275d25f6dde1d7790","impliedFormat":99},{"version":"f7f586cb700449ac509cc542095a01fa33d21eee19201ef3793abdc393a70ee7","impliedFormat":99},{"version":"08b4120029f17693ae31a695121c2a37fa1b7f98769aeaf4582ec7a7b25bb352","impliedFormat":99},{"version":"78138a90e0027ff8005665cb6375b94140b8050a120e6ff9a61515d439a15a62","impliedFormat":99},{"version":"acf24ed1b0a60dad01e526804173fa7593491db7826bd5f39a5af335786164be","impliedFormat":99},{"version":"7a1f228faa5fa5b29b96c1ad04293e310a20c22ec1b83b5adbd1ee306625ddb1","impliedFormat":99},{"version":"22d5c827159162dd95e53a3a67e0d84b61f08d549589ce83dc650ba2446e4055","impliedFormat":99},{"version":"7719c09b8acc28e6283481e3907a990b7f1e730f830ace38f57eb7cce753717e","impliedFormat":99},{"version":"54ee6720ce787300bf050b24224405696295d9e2f3f42da366a0b62758835451","impliedFormat":99},{"version":"8db5e7a47d3796b48afb5417f16e3c44c9784dffe6b0daca679e3faab69fbc28","impliedFormat":99},{"version":"2fd73846e6a7602ecbcfba95e7ae8c535340bdd49121ec0da552720bd8273e65","impliedFormat":99},{"version":"91a5549884a38ea6510c6b2b2bc3908d7aaa9d93982423635c6d70173002cbe1","impliedFormat":99},{"version":"94fde0116233179a8b9aff97f1c94a774abd836e257d5f43b77a52be83e47fb5","impliedFormat":99},{"version":"0953aa9d052d4e83a8fb3b88c304c420d44ee7e20d1b341ce91e214d06e96fc3","impliedFormat":99},{"version":"80dd0657da599ac1840dd2bb6787c7742bcb7efb1a7e95890a822dbb01ae9471","impliedFormat":99},{"version":"697929cc709ce1a14bfa22637796c90de5a7deac1afc32d703aed10cd148230b","impliedFormat":99},{"version":"a258c163f1cd5155ffdf6bf9334260cad50b42773f79e47c8b67f665f541d580","impliedFormat":99},{"version":"c2bff621d611a1cc7e0cbf6f8bb2e5fd99930b159d80bfc721bd6e2f3ac1af50","impliedFormat":99},{"version":"56e9483c87ffd60f3811152a21d9704384c6539b13fef717ddbf99c5d944c330","impliedFormat":99},{"version":"97cb603e7ca4203c5cf2402a88dc566e2fa1e2206d97016072066387ecf7087a","impliedFormat":99},{"version":"32f816bc6d64a56503bb2398846ba92f6e058d93a57ca8dba27790b8214fc88c","impliedFormat":99},{"version":"99c9b803342e29e16248f6d03fccbc88f202c57852c4ef2f8f37407965cfbb6a","impliedFormat":99},{"version":"9057244241137ab9d0f8e7b2419d26d6b5794c063ff2a390047ab733e17a84f6","impliedFormat":99},{"version":"8c9a39e52635167098f9a8f44fd15c2c93af92caac24dfabeb62975f11518aff","impliedFormat":99},{"version":"497306690b137169dba6d70af7b3db655ea7b115fa565f8a2d1d80675ddf00a8","impliedFormat":99},{"version":"0c46d7c267ba59b302512de340f4c92b97764eafd086c5b13477fedfa953385d","impliedFormat":99},{"version":"0f2e941fbb7fa25b52f407745686b2e905ec03225af1de5285dc8113cf9f38cc","impliedFormat":99},{"version":"a12f3295a92f365c2919a9b128984c35486282b7de8f3ff81fc360b8f137aaa5","impliedFormat":99},{"version":"38b3fcade0a4b61a87c8b6689f8434112bede7832ba491511aa83f519036d7c4","impliedFormat":99},{"version":"c326bb72f933aa18f366a29a27dfd4193749c4c077b0464bb31054134a84aa8b","impliedFormat":99},{"version":"0222992caad46191f90e9a5987e0c92ca95c5bb631f8f953e4c92b700411321e","impliedFormat":99},{"version":"fbb281974839d3fcc1fc0eb70b71f68688d9d2e3c719f7956f02ada2d03b0e2a","impliedFormat":99},{"version":"488bcf6a8b6a65669199f64f11c75102a11518759dc23f7d0bcb3257e830eab7","impliedFormat":99},{"version":"df38839fca3589013d3cd76564185ab4d19ce938593a27602cfd3e50f42424ab","impliedFormat":99},{"version":"c44f3421179cfb7ac73a38b1b9e1d5d229228327e0ede465d9d9a21c5039203d","impliedFormat":99},{"version":"b4d6ec77adcdc6728c52f2739954c7f5ae1c9598c5f0a6b8e3ae73989590e9d5","impliedFormat":99},{"version":"05718aee3a6d1193f2a4b1772a3ef60f1ebc0228a293b94c84a602fbec0ec5e0","impliedFormat":99},{"version":"b62e58a89eb8b818d7422360e5ef6f69038be1cdac57ae5fabe6f1060aa880dd","impliedFormat":99},{"version":"eb4c841c0bf793dd919904718220df9623006e90628e7e332b708239a5cd3c42","impliedFormat":99},{"version":"0dea1946e1a188dcefc1a78bd3e8d206b482bb0e34205c8bee073bcf9e9a81a8","impliedFormat":99},{"version":"57f207358f2409974d35d0c62cb39b0e2122d87f74314ac36f362a591b0eb02e","impliedFormat":99},{"version":"c9d4c7b66b4f74273a4cb6fff0b42833916c043a4cfa450a13a71ab3a261ad6c","impliedFormat":99},{"version":"943e697697e9e73676b145c331f114e733753cb920d08882f8db5faa841e0f41","impliedFormat":99},{"version":"3dc164317289da2ec08166baca1c10ca42b29fa2ea51d4b1769748c3c06d4da1","impliedFormat":99},{"version":"ca92a9ee21c608133d7c5d16e16936e072b6d48b5a7258736eacc19f76beac38","impliedFormat":99},{"version":"db6d9a3de83202ef18f6cabbb064362b6ec796fa5499e18e89cbbd1f22f81902","impliedFormat":99},{"version":"1bc55655e0c89b5d02451cdfd1d11595aa3b4c55ee829fe502ab352218ef6d1c","impliedFormat":99},{"version":"f8c341677219569376d0eb374bc9c8483c7d13a7d9ba7820ddd68aa188e641b6","impliedFormat":99},{"version":"6e8a8d10c8e40378dc5aa955218c5b4f374465eebc313adc4bafb69b9ad4d77d","impliedFormat":99},{"version":"51eb031a7f09d002181adb6a235a49b25995ab954e9f319b9edab0a8dc3f6e8e","impliedFormat":99},{"version":"3bc01a0f49b6a90662942f70139d9d44b8eaf2527ab95bdaf3a1a7d0383e65c2","impliedFormat":99},{"version":"1fc08a76433c326036f4b07b8eabb370f0e4b66429a17a940b2eadf82e4cd0c0","impliedFormat":99},{"version":"9d71b80f4dd663e7be4960a4b4fc48bdff4f1db34ffc9a3c01b3fa7de1ed2330","impliedFormat":99},{"version":"42670fd2d98fce7eaa84ddb1ba6a2bb6015df92db527913f869eb545d94e60f6","impliedFormat":99},{"version":"dcc306d9e63904256ba262f23cfa59fbfcef86f4caeb88835146164ca2a19bc3","impliedFormat":99},{"version":"18cee427b1962391970a74a31bbd4c150ab4bea0118dfa0ce9722fa276f1530b","impliedFormat":99},{"version":"d53ce1daa4010a2195a1710b2da24e464afc8f8b8dbe976ef3626a5a53e3042c","impliedFormat":99},{"version":"1ce643fded91c3a62f16ba0c7f5e607f68d5792a0282c57019aa64ce61df5c05","impliedFormat":99},{"version":"08b9b1b7f590e2b9dce12e29ef7cc0b0257a1aaea8d0fc2cd88233e36f716d5f","impliedFormat":99},{"version":"1e9201bf6f6968b3a2e05fa337b2d824a9de4f8a4fabb43d3a39def1bacc40b9","impliedFormat":99},{"version":"6a2b97a8d4f8d77bfde0ad800d2ca49f274fa0e25036645345168f033a8b559e","impliedFormat":99},{"version":"676ecc05abaf7e2a33686da7f5a998a8812fde2b4b42cb756b8ee63ef22dad55","impliedFormat":99},{"version":"cca1205cd000d7a9a19dda43d3bd5079ed8d70f81ad1f7d3912d2c4d68c19bcc","impliedFormat":99},{"version":"e98020ecd0cca8549262c22e1e566e35232e038650ab9dec76c4d9c343cd22c0","impliedFormat":99},{"version":"ca747835676df2aa94222860024b77a548e1c1507c3c4fafc25f2d92973f1c19","impliedFormat":99},{"version":"c024e4c849cbd9492e428f6f686d5d47c13f8b1978856abc0b11b758d26469d2","impliedFormat":99},{"version":"c392ac93c5e068db0465a6657921c5e7f191abd0b437b4a9c2adc36da94b0c74","impliedFormat":99},{"version":"479d563dabfecd2b14d7ec2537d3511c20d2a3440296fef7196edbb8b494d3dd","impliedFormat":99},{"version":"322131ab9e1654f5213c906962bc32778f54e7d535e82e2230b852d319ae8621","impliedFormat":99},{"version":"6f7065ce4d734d131e3d2c01210d511cff0e5fae015c31482b320a834825c448","impliedFormat":99},{"version":"247b3b8c56f8371ada220c9a9f6add3dfc4fdd2b9071bedb5ed419ea10940452","impliedFormat":99},{"version":"4a76d4e462ed14f907f9481cefebe4ceab9ac5c5b3aa4385c345d8a9f4cda619","impliedFormat":99},{"version":"b1f0deff4fe7bf2f0cb9c21e20be987cbb795315dcadac0b68d9e76c95966ca9","impliedFormat":99},{"version":"ef1a82d8c935053d44d6f528e058d05eef67ddb888eebc3a91834fdcbdba346d","impliedFormat":99},{"version":"eb97b7250139e59ed75255aef10fc86db69cd581bde7e22e6489b0b040f4c6e4","impliedFormat":99},{"version":"8b2c52cb91dcde62bbfa05daf76ba4da979808cd0e689320fc9762376b4ac6c3","impliedFormat":99},{"version":"9eb7631a1e210d6b0909ffc776eade0f1a70008574cbf9c3649168028bc563f1","impliedFormat":99},{"version":"6b88fe55b86bc79c7520b2679c7986923c71a5bc33854175955e31b5b9e6038b","impliedFormat":99},{"version":"069e31ae523cb318e9aae15f78260447ccd27bffa5f319f56489c0a416490eb0","impliedFormat":99},{"version":"1ff0faca356af9440189026e7ead9f4461af4109fff62c9508b8c0ed9a49ce68","impliedFormat":99},{"version":"0bcf85264f800550fdc97d3cb0ff2f8f7d75a943e01c6c15ec377f4b51bb5f02","impliedFormat":99},{"version":"b4f4fc24849f8b8f21fd31bc16d4057ef33af97e8e3cd57b247399ca506152cc","impliedFormat":99},{"version":"dcf64894451cde209d632119dec1e8fce24e4904b284b940d90435a92a2c6385","impliedFormat":99},{"version":"5aeb99822fa7426946e3a084fe3b60cf8d62b9a22399e3991be0826bf8928b8d","impliedFormat":99},{"version":"96880c28fb55d3330569b71bd61ef4d0af993ceaa9db5655becdcf6fb82b3489","impliedFormat":99},{"version":"68f1a4ec2937052ae0dd18407eb8d1b579708970ced79c6e7cfe4a93d0a00385","impliedFormat":99},{"version":"efe0fabfc89403ce6a4a8b1fe3a7633f1161b7e10d9824299560f2d15e4e606e","impliedFormat":99},{"version":"7967fa7a9f6773b95983f48e97e7035febdf1d68e9d6d076e21ea2616c206356","impliedFormat":99},{"version":"b49164adeeee1b545ec30cf015f23d0b6fc7f5721c5b81812cdf394140986ca7","impliedFormat":99},{"version":"39fdb2b6872a2169add72f5d44f397ea69374ea938c5343229e108f007253bf8","impliedFormat":99},{"version":"6bede1e3bc1902af03665eb6935d9619fe485fcb17df7fc647ee6ee74a802a9d","impliedFormat":99},{"version":"4c4cd7a14fe65ee08a34e47c43850496cc8ae8e7cc89ec8a2c8458ac4038ee4a","impliedFormat":99},{"version":"5d5e263808e7c276dd788f1a6ad27f227fd41741346dfa56c70dbe38f9fe6151","impliedFormat":99},{"version":"88a7b0cf5b7e0e2111357089b57302f06fa1b6227dfb0771d3f27a5e9d8dd9be","impliedFormat":99},{"version":"ef7c9468b5a48fa6b69b344224a00b9208ee59133e201e1e97a16c77863ab9af","impliedFormat":99},{"version":"6328ab8645c1d5bb6e8a6842d7948b10f2f3f604a3bb9d3a128323dcb6488d27","impliedFormat":99},{"version":"0eec40d2a72f5ffcd1186d8b777a22757bb5fc63725df49c17930cdc93863278","impliedFormat":99},{"version":"8f2dd4412647aea2f4051ec8b633ab31d777c9b818fc13ddb2b4bd3f14c6ab15","impliedFormat":99},{"version":"725790a23df77a71cb1aa042061abeebf5aca3adf564c3078c6f5bb925c8b8c6","impliedFormat":99},{"version":"5dda0fdf62bcaa5710d1ccd97adea53f875e01e854995e55488256ecba4f84a8","impliedFormat":99},{"version":"57c99c92a7d6b1874c36afbfc38f0a69f40821cb8e5a4c1fc949ab2d0ed9dc48","impliedFormat":99},{"version":"bf0b1e6c1bb4930244203a593c6db7aed456e635c31aba73ee2102c55998861f","impliedFormat":99},{"version":"684fed66904651fd676b78ec044da251651f4dfaedb163df74b2280013d5cd5f","impliedFormat":99},{"version":"1cad8abbc5f25133dea041deb44aa979498ee0b66e1ddc3d00f299e3629d4d6f","impliedFormat":99},{"version":"54dfbe6b81ce997409cc2c0bc37f492eeca1130ad5025e5b9148e857a8e34478","impliedFormat":99},{"version":"4bb6f54e837a952382d05afe37f3fea393c3908b14223cef578b882b00e9b31a","impliedFormat":99},{"version":"f7b3b183e6fbd30930c3e6bf7ce1953433c5cfce3142e1f0247fc4c6c26c5535","impliedFormat":99},{"version":"53c0d5e4b66e6f7fec9b79c3f776b85cd6be1e1d5d62bf57c63ecfde794ec6a5","impliedFormat":99},{"version":"7764e57eda6746e2ddab9b085a0fcb35d2c8ecee5d36759ae21c29038014a824","impliedFormat":99},{"version":"c3bd90fd93652ea125e8ba975bbd68d17f88ccacd0abd408fc2c64d1331a19cc","impliedFormat":99},{"version":"80e2f6580bb45d179d283cfac2863e94ad87c2ddce90e33dfab141ac4115379a","impliedFormat":99},{"version":"c2043b6cddf15439ba19f3293a7d8626ac8f31be86d9d8998c3323af94feeb8c","impliedFormat":99},{"version":"c3ce2db820d63c84554c94c5f929ef7786a4e4a7d61db6fac09bf2e85243e51a","impliedFormat":99},{"version":"8dfeb49bc8ac66938f09bc428ad4285975421bd18558604f0e098932dce8f9da","impliedFormat":99},{"version":"b7c1b2e00df8531e5e0d58efd255a2af435c1b68a04dc6214003a592b6fd5127","impliedFormat":99},{"version":"5d27a5d59ac05633bb38b263a713c2a2b15050dd6037f57efe7b897968778fb8","impliedFormat":99},{"version":"e61ec63942cec5365c27d711a3e47f0189aa2e8dff000f806a91e0a77aa36c10","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"0cd3d259f10d4a23a3d08d75a25160dc6782e75f44513f23f1e36fda7ca9df75",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"2165468caad244c3eed37b304fa2a8023fbcad89f1d5f5c7f4c3619ffe92f832","signature":"0f09eb23956f5d9942b47e91d5f7f0451b4c7fe2c9288fd0d8c58993aac60001"},{"version":"c6689bf18fa13997fcc44276a504a7b3c091e533a4799b4d4a8e8bf38e8a0a95","signature":"cf09a3fa5240d6d043bea225b3aa7d1216a1f01fa73e19b3d40b711b5c62ffdd"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"12b3c4b5cf0f53d8b75ed01673fa10734e0a06e80b57e424988d2b7cd11ba8da",{"version":"50a31725c97f260da9a3c26a185509dd7c2c74dd905233b0f9befc06f03234af","signature":"b607d70fd1e0dff036aec2917a74fb645d36171640c78667bb09faa4e0597816"},{"version":"b4f0c4515a4e0a8e85ee348120135f722c3f6799063336820b4e41e479405079","signature":"46e644fcc3450a48892553e217bb468d9225cabb97dc8a0f01d043a7a1927e3d"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"37c7961117708394f64361ade31a41f96cef7f2a6606300821c72438dd4abda3","impliedFormat":1},{"version":"d519b53ae419dfdb7c9fa4406f15b4f9b75611a243b0880cf8d431e4dae26d97","affectsGlobalScope":true,"impliedFormat":1},{"version":"3d9189f26f01d4e36d3fb380810ef5999992235282e3c293da77d1d8aed09d9f","impliedFormat":1},{"version":"3787007c141f3168eddd3a2f0c1bc7518892336835811c8e1ca0dee48601f66e","impliedFormat":1},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"2b37ba54ec067598bf912d56fcb81f6d8ad86a045c757e79440bdef97b52fe1b","impliedFormat":99},{"version":"1bc9dd465634109668661f998485a32da369755d9f32b5a55ed64a525566c94b","impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","impliedFormat":99},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"9d62e577adb05f5aafed137e747b3a1b26f8dce7b20f350d22f6fb3255a3c0ed","impliedFormat":99},{"version":"7ed92bcef308af6e3925b3b61c83ad6157a03ff15c7412cf325f24042fe5d363","impliedFormat":99},{"version":"3da9062d0c762c002b7ab88187d72e1978c0224db61832221edc8f4eb0b54414","impliedFormat":99},{"version":"84dbf6af43b0b5ad42c01e332fddf4c690038248140d7c4ccb74a424e9226d4d","impliedFormat":99},{"version":"00884fc0ea3731a9ffecffcde8b32e181b20e1039977a8ae93ae5bce3ab3d245","impliedFormat":99},{"version":"0bd8b6493d9bf244afe133ccb52d32d293de8d08d15437cca2089beed5f5a6b5","impliedFormat":99},{"version":"7fc3099c95752c6e7b0ea215915464c7203e835fcd6878210f2ce4f0dcbbfe67","impliedFormat":99},{"version":"83b5499dbc74ee1add93aef162f7d44b769dcef3a74afb5f80c70f9a5ce77cc0","impliedFormat":99},{"version":"8bf8b772b38fc4da471248320f49a2219c363a9669938c720e0e0a5a2531eabf","impliedFormat":99},{"version":"7da6e8c98eacf084c961e039255f7ebb9d97a43377e7eee2695cb77fec640c66","impliedFormat":99},{"version":"0b5b064c5145a48cd3e2a5d9528c63f49bac55aa4bc5f5b4e68a160066401375","impliedFormat":99},{"version":"702ff40d28906c05d9d60b23e646c2577ad1cc7cd177d5c0791255a2eab13c07","impliedFormat":99},{"version":"49ff0f30d6e757d865ae0b422103f42737234e624815eee2b7f523240aa0c8f8","impliedFormat":99},{"version":"0389aacf0ffd49a877a46814a21a4770f33fc33e99951a1584de866c8e971993","impliedFormat":99},{"version":"5cb7a51cf151c1056b61f078cf80b811e19787d1f29a33a2a6e4bf00334bbc10","impliedFormat":99},{"version":"215aa8915d707f97ad511b7abbf7eda51d3a7048e9a656955cf0dda767ae7db0","impliedFormat":99},{"version":"0d689a717fbef83da07ab4de33f83db5cbcec9bc4e3b04edb106c538a50a0210","impliedFormat":99},{"version":"d00bc73e8d1f4137f2f6238bb3aa2bbdad8573658cc95920e2cdfa7ad491a8d8","impliedFormat":99},{"version":"e3667aa9f5245d1a99fb4a2a1ac48daf1429040c29cc0d262e3843f9ae3b9d65","impliedFormat":99},{"version":"08c0f3222b50ec2b534be1a59392660102549129246425d33ec43f35aa051dc6","impliedFormat":99},{"version":"612fb780f312e6bb3c40f3cb2b827ea7455b922198f651c799d844fdd44cf2e9","impliedFormat":99},{"version":"bcd98e8f44bc76e4fcb41e4b1a8bab648161a942653a3d1f261775a891d258de","impliedFormat":99},{"version":"5abaa19aa91bb4f63ea58154ada5d021e33b1f39aa026ca56eb95f13b12c497a","impliedFormat":99},{"version":"356a18b0c50f297fee148f4a2c64b0affd352cbd6f21c7b6bfa569d30622c693","impliedFormat":99},{"version":"5876027679fd5257b92eb55d62efee634358012b9f25c5711ad02b918e52c837","impliedFormat":99},{"version":"f5622423ee5642dcf2b92d71b37967b458e8df3cf90b468675ff9fddaa532a0f","impliedFormat":99},{"version":"70265bc75baf24ec0d61f12517b91ea711732b9c349fceef71a446c4ff4a247a","impliedFormat":99},{"version":"41a4b2454b2d3a13b4fc4ec57d6a0a639127369f87da8f28037943019705d619","impliedFormat":99},{"version":"e9b82ac7186490d18dffaafda695f5d975dfee549096c0bf883387a8b6c3ab5a","impliedFormat":99},{"version":"eed9b5f5a6998abe0b408db4b8847a46eb401c9924ddc5b24b1cede3ebf4ee8c","impliedFormat":99},{"version":"af85fde8986fdad68e96e871ae2d5278adaf2922d9879043b9313b18fae920b1","impliedFormat":99},{"version":"8a1f5d2f7cf4bf851cc9baae82056c3316d3c6d29561df28aff525556095554b","impliedFormat":99},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","impliedFormat":99},{"version":"e87873f06fa094e76ac439c7756b264f3c76a41deb8bc7d39c1d30e0f03ef547","impliedFormat":99},{"version":"488861dc4f870c77c2f2f72c1f27a63fa2e81106f308e3fc345581938928f925","impliedFormat":99},{"version":"eff73acfacda1d3e62bb3cb5bc7200bb0257ea0c8857ce45b3fee5bfec38ad12","impliedFormat":99},{"version":"aff4ac6e11917a051b91edbb9a18735fe56bcfd8b1802ea9dbfb394ad8f6ce8e","impliedFormat":99},{"version":"1f68aed2648740ac69c6634c112fcaae4252fbae11379d6eabee09c0fbf00286","impliedFormat":99},{"version":"5e7c2eff249b4a86fb31e6b15e4353c3ddd5c8aefc253f4c3e4d9caeb4a739d4","impliedFormat":99},{"version":"14c8d1819e24a0ccb0aa64f85c61a6436c403eaf44c0e733cdaf1780fed5ec9f","impliedFormat":99},{"version":"d36518bd617ff673c7d9f372706f241932a43f27673187f2a8472e93c40041c6","impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","impliedFormat":99},{"version":"413d50bc66826f899c842524e5f50f42d45c8cb3b26fd478a62f26ac8da3d90e","impliedFormat":99},{"version":"d9083e10a491b6f8291c7265555ba0e9d599d1f76282812c399ab7639019f365","impliedFormat":99},{"version":"09de774ebab62974edad71cb3c7c6fa786a3fda2644e6473392bd4b600a9c79c","impliedFormat":99},{"version":"e8bcc823792be321f581fcdd8d0f2639d417894e67604d884c38b699284a1a2a","impliedFormat":99},{"version":"7c99839c518dcf5ab8a741a97c190f0703c0a71e30c6d44f0b7921b0deec9f67","impliedFormat":99},{"version":"44c14e4da99cd71f9fe4e415756585cec74b9e7dc47478a837d5bedfb7db1e04","impliedFormat":99},{"version":"1f46ee2b76d9ae1159deb43d14279d04bcebcb9b75de4012b14b1f7486e36f82","impliedFormat":99},{"version":"2838028b54b421306639f4419606306b940a5c5fcc5bc485954cbb0ab84d90f4","impliedFormat":99},{"version":"7116e0399952e03afe9749a77ceaca29b0e1950989375066a9ddc9cb0b7dd252","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"618d88deb6fa2d8e19c89c83b6bb160f3a1f3de80b9e78902027e446b5014117","signature":"2eb2e11e23bc3924a490591d4c603fc16cd2ac520d2c2171b2466b5bd5fc5eba"},{"version":"b75dc867e65093746082ddc59e13483be35c60ed336ee80fde8d3d9070eb0e92","signature":"0d3d07a9293b67202150783519bb1593a4dab168b8bc8f090f883bbb0a77cc38"},{"version":"990bc8949a497a61a5ee5702557c99ade4f80e51f5e08d03f58c82b0726bfc50","signature":"6f890af548f42019685b603c52a427c54d0595cd52dd6a09a6e81482fcf33a2e"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"38a08d8977ff3f9111720a31c01449040d2574d77c5890cc77841e1d35497ff9","e5d55cc726a8a953da863bb577a0626319ab927b2821b80e524920750c743db3",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"a9b4296e49ec4a0d5f807884b3a2cefc529a4c7c795de9e2b46ec8a5403743af","signature":"7d87572a5788005e55b6703eab619195740b139ba950ad1ec7621fa5a81932c0"},"f67de8039badd18bce93f6baa5a008856e0d6dbe2280c37136455d4bed6346b3",{"version":"c27b444aefe131b6d4a338e6ee0e2224bdeb9ed7c06607d48350e3aebc748980","signature":"b9487daa1e6a6154af3389340df9ced32273319f1cd3ed915daea5bac16a3ea8"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"a2e5868416b88203f139bdb6020caa8f788043f4c3e570d109e2633407d80bd4",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"ceb88e0114c2e972422d9c1a2807da278f2475bcba6e2c4b0dea1fce38a5d28a","signature":"69c4227dccee304e15ea1ffc12d58bc1e7acf904c1dca7c02031c5a024ef73f4"},"b0a64978acccb01ed1ced0f7831fad0dc002f34a2e035dd185221a8ad6416d29",{"version":"f33708694c63b384a4414504121651d5d04cda21a6baa73074bee644f8a049e2","signature":"3ccc601af5d2a5bb0812bc4bd1b5b9be6d1a00863a7b04e0cd23d3ead998176b"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"6a8860221043016b3dc2aa98c96bf6214cf6b5f72af0302b864d9b630bd41089",{"version":"0290d5402f37c7a1bd424e990ac43d7f4657489875f70b016d78b2a598ec7442","signature":"990d5fe8911389eb8b0e76106ce65bb8cac8ae454c7c431ac6a3aa1005ffde18"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"ba6efe7a6b73ea3211dac001f61baf319d46f2999d08b9737a219da3da85567d",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"2ae8cd9b187b078c5e5926fd436ddec540be365ff5624a389b2ab4891b090f89","signature":"6fbb03d7732e4d061d7265ac608e5e2591b23134129e887bbd7fb19aa00c11c9"},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"270a1b90e54d767c5b905ee139ac4b97acae7422d6a976bce63beb3bdf480406","signature":"73d30b22f0069c3fce4293cc8ebaa55f72efa470dab1cd257a4c698a042214a2"},{"version":"9a3befd9fb000024e4bf5d0d78b3f5192d4182871056a0a713de947f747f066a","signature":"30fa44558bfd7ebaf45bd26e72be535a174aecb8285dbc25555380931791d601"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"fb6cb92624a71d3c6f9ae1e1bd100062b6ef2ef7375a88d2b3cd66552c262314",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},"42d00c1edd006dc836e08da63459b2772e30e4e9db0fdddc7a30ef94ae0414d3",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"449a2fba673619c80e6ff2328ddda1f8f2d89c4ecadff375fc3975444397174d","signature":"bea2af3230c5b8bbced5c64829d9b3e494ffd0d1f7613dd80931b35e768c2d19"},"9cb4e67644a537160e8cd1e71d1232cf2d3b07a90bd4541d6e4d41105babf13a",{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"b8efebe5837e98941e8c6e8d29e806e3c2b35b08bf0b61fcccef0193c4158d72","signature":"8343fba056c21a050dfd5a506e7459068c1ef6f429a2a72cbe8e9193a3f5faeb"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"da2b672bd0a6ffd30af489f3cd3fbcad8dc577a01656db8ce6875ae8b77a9ffc","signature":"5e2b61ae1830c63f6ac68c22286ee0c6b267a21af56e001680d2175aa87d3b07"},{"version":"4975152ef204206c9d1fa05c84fad9da69daa95561f084520b57dc0a384aeb6b","signature":"2abe61f517d6d2c4e0475abffcfa5a73798aa79456e340e25dcbd9dfbc9814cd"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"3e6b9dd057a0b1b4d375fc94cb8fe8bca11a6f25d9cc7c1288bd856ce8afc79e","signature":"f6adc0045d29bf73aba7c04b7cd140532e4b405731bdea8e8c5f1b0946cb79f2"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"ec23f00161009682ce88521800f20bdc0eea1b666299fc8bcd65610ae424ac01","signature":"d713b7d242c18d1ebcf857fb093e109746fc4bb0fb855de123833aa0d4b753d9"},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"8b6824a01148a5f0b9bac41612d43495cb082b3a8cc2b1f14ea33298d6ac00b8","impliedFormat":99},{"version":"97e0a23ac45763f990b704b66cabbb48df07eddc5bf46054a34d72e350f1088e","impliedFormat":99},{"version":"fe9dd679e568dc2a0e5e6959f77b53f8bc1f126d46b0d17631347ba57470b808","impliedFormat":99},{"version":"86245b010961138b1c4ce2e0610b8b9577157dac3f7eeaf3d20017ee01e7760b","impliedFormat":99},{"version":"126eac20336c7374782d571be802e7b7adb9fc5b24c0dd0dfc37bfc9774d9182","impliedFormat":99},{"version":"760c9ccae9612ff1cd7d39c6eb7cdf913ca528a7f89afeee33f6759d62715e43","impliedFormat":99},{"version":"54e76a6612d9b83fde2b1cc0569f20c5b8d38f7a860b88a1d9d805399bfeead3","impliedFormat":99},{"version":"5a4ddf80b1bdab540fe5d3f837921e9e8dc559a1a319e75451c30f0d5f62ac0f","impliedFormat":99},{"version":"0c6ef3deba595b7dc7b4ee09342435c7a2392fe7752e335acdedfe2476529638","impliedFormat":99},{"version":"00fab36b3130e6d7a2316d0583a2e2a4d328a6f4e01817d90d8b07baad69b4e1","impliedFormat":99},{"version":"9001790195bf5cf382c676ded6da44833812e677bb9f31fcb22fa47d389039f4","impliedFormat":99},{"version":"e9549a400fa6ed33871effcd70b9bc5ab77f24ecc6349c97d8da7ae078e6a25a","impliedFormat":99},{"version":"0007221ceab1fe355d6dbbdf4bb71cad7584ffe9794ab152a1c68a921f2408ca","impliedFormat":99},{"version":"dd7928e76087e0bb029074c20675aeb38eff85513d5f941f440c26d82dd5436c","impliedFormat":99},{"version":"b35f88c4ae41d4b085da718dde3ddff0b176337470275fee82ad0aa84858db07","impliedFormat":99},{"version":"626e531e56621998a9d6488eb25c93f4091fd7a5484724458925b1ef0982a778","impliedFormat":99},"c9f54e8d99ecfb65a99b9ee67a7fce1295edc57ee9332f6c8bf7fdef1dc0c57b",{"version":"2bbdc3faeb438b0ceaa66a7913b11428fcd6086152ab72c06884c8a500ada603","signature":"6a2af332405b595dea3ecd65f0543ed7f208d4da3f38ef651af342aca0b47c90"},{"version":"7f1ca600a24602def60bf42700f0d85a1b84cb5aaaba9305cb73774d61ce294a","signature":"367265720e06f78102aae4102573d6b6958369304d0eb92bccfe114885ee37ee"},"f8f51fe7ef6e782ca3f865b6b68f5aa2017a9d9e4f8b199db2cc4435aba15ba4",{"version":"ea4a34fd70b800da3df6fe7f88927fb9f0d79a0318075f5c91922687997ebe79","signature":"3bdb42fa5fa90c8d2ffa9e9e9b93d78e830082ae40236f8de308142f51346c12"},"c7bb825b60a65a1bae8477379685c4c286d67e6928efb41c2e0185e039acc3fe","b4fec866aa0ea4289e716354a29227ed9d840c4d59293dd23e587cc4dfb50d9f","ddb76d82cbdb29d8dbedbc72835ebcade5f6797d9d53e7b8fd5c39b1cc681ae4","7c7c8c7ac9c9bc8ec47884c5072a9f75dd62a50a4ceafd26e7ba6d1d64f4be17","2d30d4dd0291d7c301276ddcb21e17bb35e6219971cb38d337d8c6f1d43003b4","b79b9ac24cf51475b92378868b8c4c5637e18712232d9c5215d39a9e3a7101a9",{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"237ba5ac2a95702a114a309e39c53a5bddff5f6333b325db9764df9b34f3502b","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"1d024184fb57c58c5c91823f9d10b4915a4867b7934e89115fd0d861a9df27c8","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"b0b69c61b0f0ec8ca15db4c8c41f6e77f4cacb784d42bca948f42dea33e8757e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f96a48183254c00d24575401f1a761b4ce4927d927407e7862a83e06ce5d6964","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"f83fb2b1338afbb3f9d733c7d6e8b135826c41b0518867df0c0ace18ae1aa270","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"757227c8b345c57d76f7f0e3bbad7a91ffca23f1b2547cbed9e10025816c9cb7","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9451a46a89ed209e2e08329e6cac59f89356eae79a7230f916d8cc38725407c7","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"e236b5eba291f51bdf32c231673e6cab81b5410850e61f51a7a524dddadc0f95","impliedFormat":1},{"version":"f7ba0e839daa0702e3ff1a1a871c0d8ea2d586ce684dd8a72c786c36a680b1d9","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"f64deb26664af64dc274637343bde8d82f930c77af05a412c7d310b77207a448","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"17d06eb5709839c7ce719f0c38ada6f308fb433f2cd6d8c87b35856e07400950","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"2a00d005e3af99cd1cfa75220e60c61b04bfb6be7ca7453bfe2ef6cca37cc03c","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"c3877fef8a43cd434f9728f25a97575b0eb73d92f38b5c87c840daccc3e21d97","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"1dbd83860e7634f9c236647f45dbc5d3c4f9eba8827d87209d6e9826fdf4dbd5","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"b37f83e7deea729aa9ce5593f78905afb45b7532fdff63041d374f60059e7852","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"f9e22729fa06ed20f8b1fe60670b7c74933fdfd44d869ddfb1919c15a5cf12fb","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"689be50b735f145624c6f391042155ae2ff6b90a93bac11ca5712bc866f6010c","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","impliedFormat":1},{"version":"18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","impliedFormat":1},{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","impliedFormat":1},{"version":"b2d0630483bf337ef9dac326c3334a245aa4946e9f60f12baf7da5be44beafbb","impliedFormat":1},{"version":"ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","impliedFormat":1},{"version":"26b7d0cd4b41ab557ef9e3bfeec42dcf24252843633e3d29f38d2c0b13aaa528","impliedFormat":1},{"version":"7fadb2778688ebf3fd5b8d04f63d5bf27a43a3e420bc80732d3c6239067d1a4b","impliedFormat":1},{"version":"916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","impliedFormat":1},{"version":"e85d04f57b46201ddc8ba238a84322432a4803a5d65e0bbd8b3b4f05345edd51","impliedFormat":1},{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"7233cac35711f43b7493061d2fe7636deb6d14f8cb58e4b3ff248be46f0b543d","impliedFormat":1},{"version":"3cef134032da5e1bfabba59a03a58d91ed59f302235034279bb25a5a5b65ca62","affectsGlobalScope":true,"impliedFormat":1},{"version":"199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","impliedFormat":1},{"version":"ddef25f825320de051dcb0e62ffce621b41c67712b5b4105740c32fd83f4c449","impliedFormat":1},{"version":"1b3dffaa4ca8e38ac434856843505af767a614d187fb3a5ef4fcebb023c355aa","impliedFormat":1},{"version":"7fa8d75d229eeaee235a801758d9c694e94405013fe77d5d1dd8e3201fc414f1","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1}],"root":[83,[88,90],[97,100],103,104,[106,118],[127,130],851,855,856,[865,867],[968,970],977,978,[988,990],993,[996,998],1002,1003,1007,1010,1012,1013,1017,1019,1027,1028,1041,1043,1044,1046,1048,[1069,1079]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":4},"referencedMap":[[1064,1],[1057,2],[1065,3],[1068,4],[1066,5],[1062,6],[1067,2],[1054,7],[1063,8],[1056,9],[162,10],[161,7],[164,11],[163,12],[174,13],[167,14],[175,15],[172,13],[176,16],[170,13],[171,17],[173,18],[169,19],[168,20],[177,21],[165,22],[166,23],[156,7],[157,24],[180,25],[178,26],[179,27],[182,28],[181,29],[159,30],[158,31],[160,32],[1059,7],[1061,33],[1060,33],[838,34],[876,34],[1045,34],[1049,34],[841,34],[1042,34],[842,34],[854,34],[976,34],[1006,34],[1025,34],[973,34],[999,34],[833,34],[879,34],[869,34],[984,34],[860,34],[868,34],[971,34],[991,34],[992,34],[849,34],[1036,34],[1024,34],[1015,34],[847,34],[830,34],[1050,34],[1018,34],[1014,34],[831,34],[995,34],[1020,34],[870,34],[861,34],[974,34],[972,34],[975,34],[857,34],[837,34],[864,34],[1005,34],[852,34],[843,34],[877,34],[1000,34],[1009,34],[1032,34],[1053,34],[853,34],[1051,34],[850,34],[875,34],[1022,34],[986,34],[846,34],[1038,34],[1029,34],[1031,34],[983,34],[979,34],[1023,34],[1016,34],[858,34],[967,34],[1021,34],[1040,34],[1047,34],[832,34],[878,34],[1037,34],[863,34],[982,34],[994,34],[1004,34],[1001,34],[1026,34],[848,34],[1030,34],[862,34],[1039,34],[859,34],[839,34],[981,34],[1035,34],[1034,34],[1008,34],[980,34],[1033,34],[1052,34],[835,34],[834,34],[985,34],[836,34],[987,34],[840,34],[844,34],[845,34],[472,35],[471,7],[473,36],[466,37],[465,7],[467,38],[469,39],[468,7],[470,40],[475,41],[474,7],[476,42],[321,43],[318,7],[322,44],[327,45],[326,7],[328,46],[330,47],[329,7],[331,48],[364,49],[363,7],[365,50],[367,51],[366,7],[368,52],[370,53],[369,7],[371,54],[377,55],[376,7],[378,56],[380,57],[379,7],[381,58],[386,59],[385,7],[387,60],[383,61],[382,7],[384,62],[797,63],[798,7],[799,64],[389,65],[388,7],[390,66],[397,67],[396,7],[398,68],[310,69],[309,7],[311,70],[308,71],[307,7],[392,72],[394,26],[391,7],[393,73],[395,74],[415,75],[414,7],[416,76],[400,77],[399,7],[401,78],[403,79],[402,7],[404,80],[406,81],[405,7],[407,82],[409,83],[408,7],[410,84],[412,85],[411,7],[413,86],[420,87],[419,7],[421,88],[333,89],[332,7],[334,90],[423,91],[422,7],[424,92],[619,26],[620,93],[431,94],[430,7],[432,95],[132,7],[133,7],[134,7],[135,7],[136,7],[137,7],[138,7],[139,7],[140,7],[141,7],[152,96],[142,7],[143,7],[144,7],[145,7],[146,7],[147,7],[148,7],[149,7],[150,7],[151,7],[434,97],[433,98],[435,99],[436,100],[437,101],[800,7],[452,102],[451,7],[453,103],[439,104],[438,7],[440,105],[442,106],[441,7],[443,107],[445,108],[444,7],[446,109],[455,110],[454,7],[456,111],[458,112],[457,7],[459,113],[463,114],[462,7],[464,115],[478,116],[477,7],[479,117],[374,118],[375,119],[484,120],[483,7],[485,121],[490,122],[489,7],[491,123],[493,124],[492,125],[487,126],[486,7],[488,127],[495,128],[494,7],[496,129],[498,130],[497,7],[499,131],[501,132],[500,7],[502,133],[820,134],[823,135],[813,136],[814,137],[506,138],[507,7],[508,139],[504,140],[503,7],[505,141],[801,118],[802,142],[510,143],[509,7],[511,144],[313,145],[312,7],[314,146],[513,147],[512,7],[514,148],[519,149],[518,7],[520,150],[516,151],[515,7],[517,152],[829,153],[828,154],[827,155],[529,156],[528,157],[527,7],[523,158],[522,159],[521,7],[482,160],[481,161],[480,7],[526,162],[525,163],[524,7],[306,164],[418,165],[417,7],[532,166],[531,167],[530,7],[535,168],[534,169],[533,7],[556,170],[555,171],[554,7],[544,172],[543,173],[542,7],[538,174],[537,175],[536,7],[547,176],[546,177],[545,7],[541,178],[540,179],[539,7],[550,180],[549,181],[548,7],[553,182],[552,183],[551,7],[559,184],[558,185],[557,7],[570,186],[569,187],[568,7],[562,188],[561,189],[560,7],[564,190],[563,191],[573,192],[572,193],[571,7],[450,194],[449,195],[448,7],[447,7],[577,196],[576,197],[575,7],[574,198],[805,199],[804,200],[803,26],[581,201],[580,202],[579,7],[302,203],[585,204],[584,205],[583,7],[588,206],[587,207],[586,7],[317,208],[316,209],[315,7],[567,210],[566,211],[565,7],[357,212],[360,213],[358,214],[359,7],[355,215],[354,216],[353,26],[596,217],[595,218],[594,7],[593,219],[589,220],[592,221],[590,26],[591,222],[599,223],[598,224],[597,7],[602,225],[601,226],[600,7],[606,227],[605,228],[604,7],[603,229],[609,230],[608,231],[607,7],[461,232],[460,118],[615,233],[614,234],[613,7],[612,235],[611,7],[610,26],[623,236],[622,237],[621,7],[618,238],[617,239],[616,7],[627,240],[626,241],[625,7],[633,242],[632,243],[631,7],[636,244],[635,245],[634,7],[639,246],[637,247],[638,98],[662,248],[660,249],[659,7],[661,26],[642,250],[641,251],[640,7],[645,252],[644,253],[643,7],[648,254],[647,255],[646,7],[651,256],[650,257],[649,7],[654,258],[653,259],[652,7],[658,260],[656,261],[655,7],[657,26],[726,262],[722,263],[727,264],[298,265],[155,7],[728,7],[725,266],[301,267],[723,268],[724,269],[297,7],[299,270],[737,271],[744,7],[742,7],[154,7],[745,272],[738,7],[720,273],[719,274],[729,275],[734,7],[296,7],[743,7],[733,7],[735,276],[736,277],[741,278],[731,279],[732,280],[721,281],[739,7],[740,7],[300,7],[305,282],[304,283],[303,7],[664,284],[663,285],[667,286],[666,287],[665,7],[703,288],[702,289],[701,7],[691,290],[690,291],[689,7],[670,292],[669,293],[668,7],[673,294],[672,295],[671,7],[676,296],[675,297],[674,7],[700,298],[699,299],[698,7],[679,300],[678,301],[677,7],[688,302],[687,303],[683,7],[682,304],[680,305],[681,7],[694,306],[693,307],[692,7],[697,308],[696,309],[695,7],[709,310],[708,311],[707,7],[706,312],[705,313],[704,7],[808,314],[807,315],[806,26],[712,316],[711,317],[710,7],[715,318],[714,319],[713,7],[718,320],[717,321],[716,7],[686,322],[685,323],[684,7],[630,324],[629,325],[628,7],[624,326],[373,327],[325,328],[324,329],[323,7],[825,330],[824,26],[826,331],[362,332],[361,333],[578,334],[582,26],[810,335],[809,7],[750,336],[753,337],[754,34],[757,338],[760,339],[796,340],[763,341],[764,342],[795,343],[767,344],[770,345],[356,333],[773,346],[776,347],[320,348],[785,349],[788,350],[779,351],[791,352],[794,353],[782,354],[815,7],[812,355],[811,118],[229,7],[234,356],[231,357],[230,358],[233,359],[232,358],[185,360],[186,361],[187,362],[184,363],[183,26],[190,364],[191,365],[240,366],[241,7],[242,367],[207,368],[208,369],[258,7],[259,370],[209,364],[210,371],[280,372],[277,7],[278,373],[279,374],[281,375],[243,376],[244,377],[192,378],[730,379],[245,380],[246,381],[202,382],[194,7],[205,383],[206,384],[193,7],[203,379],[204,385],[215,364],[216,386],[267,387],[270,388],[273,7],[274,7],[271,7],[272,389],[265,7],[268,7],[269,7],[266,390],[211,364],[212,391],[213,364],[214,392],[227,7],[228,393],[236,394],[237,395],[284,396],[283,397],[285,7],[287,398],[282,399],[288,400],[286,379],[295,401],[264,402],[263,155],[262,382],[218,403],[217,364],[220,404],[219,364],[276,405],[275,7],[222,406],[221,364],[224,407],[223,364],[239,408],[238,364],[291,409],[293,410],[290,411],[292,7],[289,399],[189,412],[188,382],[248,413],[247,414],[196,415],[200,364],[199,416],[201,417],[197,418],[195,418],[198,419],[261,420],[260,421],[226,422],[225,364],[257,423],[256,7],[253,424],[252,425],[250,7],[251,426],[249,7],[255,427],[254,7],[294,7],[153,26],[748,7],[749,428],[746,7],[747,429],[816,7],[817,430],[751,7],[752,431],[755,7],[756,432],[758,433],[759,434],[818,7],[819,435],[821,7],[822,436],[762,437],[761,7],[766,438],[765,7],[769,439],[768,7],[772,440],[771,441],[775,442],[774,26],[319,26],[784,443],[783,7],[787,444],[786,26],[778,445],[777,26],[790,446],[789,7],[793,447],[792,26],[781,448],[780,7],[352,449],[348,450],[335,7],[351,451],[344,452],[342,453],[341,453],[340,452],[337,453],[338,452],[346,454],[339,453],[336,452],[343,453],[349,455],[350,456],[345,457],[347,453],[96,458],[95,7],[1202,459],[1203,460],[1208,461],[1201,462],[1210,463],[1215,464],[1214,465],[1213,466],[1216,467],[1211,7],[1207,468],[1222,469],[1221,468],[881,470],[1223,26],[1224,7],[1217,7],[1225,471],[1212,7],[891,470],[1218,7],[1209,7],[1226,472],[1141,473],[1142,473],[1143,474],[1082,475],[1144,476],[1145,477],[1146,478],[1080,7],[1147,479],[1148,480],[1149,481],[1150,482],[1151,483],[1152,484],[1153,484],[1154,485],[1155,486],[1156,487],[1157,488],[1083,7],[1081,7],[1158,489],[1159,490],[1160,491],[1200,492],[1161,493],[1162,494],[1163,493],[1164,495],[1165,496],[1166,497],[1167,498],[1168,498],[1169,498],[1170,499],[1171,500],[1172,501],[1173,502],[1174,503],[1175,504],[1176,504],[1177,505],[1178,7],[1179,7],[1180,506],[1181,507],[1182,506],[1183,508],[1184,509],[1185,510],[1186,511],[1187,512],[1188,513],[1189,514],[1190,515],[1191,516],[1192,517],[1193,518],[1194,519],[1195,520],[1196,521],[1197,522],[1084,493],[1085,7],[1086,523],[1087,524],[1088,7],[1089,525],[1090,7],[1132,526],[1133,527],[1134,528],[1135,528],[1136,529],[1137,7],[1138,476],[1139,530],[1140,527],[1198,531],[1199,532],[1227,7],[1228,7],[86,7],[1205,7],[1206,7],[131,26],[1011,26],[1230,533],[1229,7],[1231,534],[425,7],[426,327],[429,535],[427,26],[372,26],[428,327],[84,7],[87,536],[235,26],[1232,7],[1204,537],[1233,538],[1220,539],[1219,540],[1234,462],[880,7],[1235,7],[1236,541],[1058,2],[85,7],[873,542],[874,543],[102,544],[101,7],[92,7],[960,7],[934,545],[933,546],[932,547],[959,548],[958,549],[962,550],[961,551],[964,552],[963,553],[919,554],[893,555],[894,556],[895,556],[896,556],[897,556],[898,556],[899,556],[900,556],[901,556],[902,556],[903,556],[917,557],[904,556],[905,556],[906,556],[907,556],[908,556],[909,556],[910,556],[911,556],[913,556],[914,556],[912,556],[915,556],[916,556],[918,556],[892,558],[957,559],[937,560],[938,560],[939,560],[940,560],[941,560],[942,560],[943,561],[945,560],[944,560],[956,562],[946,560],[948,560],[947,560],[950,560],[949,560],[951,560],[952,560],[953,560],[954,560],[955,560],[936,560],[935,563],[927,564],[925,565],[926,565],[930,566],[928,565],[929,565],[931,565],[924,7],[872,567],[871,7],[923,568],[922,569],[105,570],[126,571],[120,572],[121,573],[123,572],[125,574],[122,575],[119,26],[124,7],[94,576],[91,7],[966,577],[965,578],[921,579],[920,580],[93,7],[1055,7],[888,581],[887,7],[81,7],[82,7],[13,7],[14,7],[16,7],[15,7],[2,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[23,7],[24,7],[3,7],[25,7],[26,7],[4,7],[27,7],[31,7],[28,7],[29,7],[30,7],[32,7],[33,7],[34,7],[5,7],[35,7],[36,7],[37,7],[38,7],[6,7],[42,7],[39,7],[40,7],[41,7],[43,7],[7,7],[44,7],[49,7],[50,7],[45,7],[46,7],[47,7],[48,7],[8,7],[54,7],[51,7],[52,7],[53,7],[55,7],[9,7],[56,7],[57,7],[58,7],[60,7],[59,7],[61,7],[62,7],[10,7],[63,7],[64,7],[65,7],[11,7],[66,7],[67,7],[68,7],[69,7],[70,7],[1,7],[71,7],[72,7],[12,7],[76,7],[74,7],[79,7],[78,7],[73,7],[77,7],[75,7],[80,7],[1108,582],[1120,583],[1106,584],[1121,585],[1130,586],[1097,587],[1098,588],[1096,589],[1129,472],[1124,590],[1128,591],[1100,592],[1117,593],[1099,594],[1127,595],[1094,596],[1095,590],[1101,597],[1102,7],[1107,598],[1105,597],[1092,599],[1131,600],[1122,601],[1111,602],[1110,597],[1112,603],[1115,604],[1109,605],[1113,606],[1125,472],[1103,607],[1104,608],[1116,609],[1093,585],[1119,610],[1118,597],[1114,611],[1123,7],[1091,7],[1126,612],[890,613],[886,7],[889,614],[883,615],[882,470],[885,616],[884,617],[988,618],[855,619],[88,26],[866,620],[1073,621],[867,622],[83,7],[1043,623],[1012,624],[1076,625],[89,626],[1074,627],[997,628],[865,629],[993,630],[990,631],[996,632],[970,633],[989,634],[977,635],[978,636],[969,637],[1046,638],[998,639],[1007,640],[1077,641],[1013,642],[1010,643],[1003,644],[90,26],[100,645],[1017,646],[1044,647],[856,648],[1027,649],[1028,650],[1019,651],[1041,652],[103,653],[1069,654],[1002,655],[104,626],[1048,656],[1070,657],[968,658],[1071,659],[1072,660],[1075,661],[97,7],[117,662],[127,663],[1078,664],[118,7],[98,665],[99,666],[115,665],[112,665],[110,665],[114,665],[111,665],[113,665],[108,665],[116,667],[107,665],[106,668],[109,665],[128,7],[1079,7],[851,669],[129,670],[130,7]],"semanticDiagnosticsPerFile":[[968,[{"start":1899,"length":7,"messageText":"Cannot assign to 'current' because it is a read-only property.","category":1,"code":2540}]],[1041,[{"start":46512,"length":5,"code":2339,"category":1,"messageText":"Property 'color' does not exist on type 'Output'."},{"start":46623,"length":5,"code":2339,"category":1,"messageText":"Property 'color' does not exist on type 'Output'."},{"start":46990,"length":8,"code":2339,"category":1,"messageText":"Property 'category' does not exist on type 'Output'."},{"start":47035,"length":5,"code":2339,"category":1,"messageText":"Property 'color' does not exist on type 'Output'."},{"start":47057,"length":5,"code":2339,"category":1,"messageText":"Property 'color' does not exist on type 'Output'."}]],[1070,[{"start":10687,"length":3,"code":2322,"category":1,"messageText":{"messageText":"Type 'RefObject' is not assignable to type 'LegacyRef | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'RefObject' is not assignable to type 'RefObject'.","category":1,"code":2322,"next":[{"messageText":"Type 'HTMLDivElement | null' is not assignable to type 'HTMLDivElement'.","category":1,"code":2322,"next":[{"messageText":"Type 'null' is not assignable to type 'HTMLDivElement'.","category":1,"code":2322}]}]}]},"relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":10381,"length":3,"messageText":"The expected type comes from property 'ref' which is declared here on type 'DetailedHTMLProps, HTMLDivElement>'","category":3,"code":6500}]},{"start":53933,"length":8,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type 'Language'.","relatedInformation":[{"file":"./src/app/pages/views/codeeditor.tsx","start":680,"length":8,"messageText":"The expected type comes from property 'language' which is declared here on type 'IntrinsicAttributes & Props'","category":3,"code":6500}]}]]],"affectedFilesPendingEmit":[988,855,88,866,1073,867,83,1043,1012,1076,89,1074,997,865,993,990,996,970,989,977,978,969,1046,998,1007,1077,1013,1010,1003,90,100,1017,1044,856,1027,1028,1019,1041,103,1069,1002,104,1048,1070,968,1071,1072,1075,97,117,127,1078,118,98,99,115,112,110,114,111,113,108,116,107,106,109,128,1079,851,129],"version":"5.9.3"}
\ No newline at end of file
diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js
index 11730c53..a900012f 100644
--- a/frontend/webpack.config.js
+++ b/frontend/webpack.config.js
@@ -1,5 +1,6 @@
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = (env, argv) => {
const isDevelopment = argv.mode === 'development';
@@ -10,6 +11,7 @@ module.exports = (env, argv) => {
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
+ publicPath: isDevelopment ? '/' : './',
clean: true
},
@@ -60,7 +62,16 @@ module.exports = (env, argv) => {
template: './public/index.html',
filename: 'index.html',
favicon: './public/favicon.ico'
- })
+ }),
+ new CopyWebpackPlugin({
+ patterns: [
+ {
+ from: 'public',
+ to: '.',
+ globOptions: { ignore: ['**/index.html', '**/favicon.ico'] },
+ },
+ ],
+ }),
],
devtool: isDevelopment ? 'source-map' : false,
diff --git a/run.sh b/run.sh
new file mode 100755
index 00000000..68a48501
--- /dev/null
+++ b/run.sh
@@ -0,0 +1,162 @@
+#!/bin/bash
+# The comment above is shebang, DO NOT REMOVE
+SCRIPT_ABSPATH="$(readlink -f "${BASH_SOURCE[0]}")"
+if [[ "$OSTYPE" == "darwin"* ]]; then
+ sed -i '' 's/\r//g' "$SCRIPT_ABSPATH"
+else
+ sed -i 's/\r//g' "$SCRIPT_ABSPATH"
+fi
+chmod +x "$SCRIPT_ABSPATH"
+
+PROJECT_ROOT="$(dirname "$SCRIPT_ABSPATH")"
+
+BLUE='\033[0;34m'
+GREEN='\033[0;32m'
+RED='\033[0;31m'
+YELLOW='\033[0;33m'
+BOLD='\033[1m'
+RESET='\033[0m'
+
+BACKEND_PID=""
+FRONTEND_PID=""
+ELECTRON_PID=""
+SHUTTING_DOWN=false
+
+kill_tree() {
+ local pid=$1 sig=${2:-TERM}
+ local children
+ children=$(pgrep -P "$pid" 2>/dev/null)
+ for child in $children; do
+ kill_tree "$child" "$sig"
+ done
+ kill -"$sig" "$pid" 2>/dev/null
+}
+
+cleanup() {
+ $SHUTTING_DOWN && return
+ SHUTTING_DOWN=true
+
+ echo ""
+ echo -e "${YELLOW}${BOLD}Gracefully shutting down all services...${RESET}"
+
+ for pid in $ELECTRON_PID $BACKEND_PID $FRONTEND_PID; do
+ [[ -n "$pid" ]] && kill_tree "$pid" TERM
+ done
+
+ local elapsed=0
+ while (( elapsed < 5 )); do
+ local alive=false
+ for pid in $ELECTRON_PID $BACKEND_PID $FRONTEND_PID; do
+ [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null && alive=true
+ done
+ $alive || break
+ sleep 1
+ ((elapsed++))
+ done
+
+ for pid in $ELECTRON_PID $BACKEND_PID $FRONTEND_PID; do
+ [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null && kill_tree "$pid" KILL
+ done
+
+ wait 2>/dev/null
+ echo -e "${GREEN}${BOLD}All services stopped.${RESET}"
+}
+
+trap 'cleanup; exit 0' INT TERM
+trap cleanup EXIT
+
+# --- Start backend ---
+echo -e "${BLUE}${BOLD}[backend]${RESET} Starting backend server..."
+bash "$PROJECT_ROOT/backend/run.sh" > >(
+ while IFS= read -r line; do
+ printf "${BLUE}${BOLD}[backend]${RESET} %s\n" "$line"
+ done
+) 2>&1 &
+BACKEND_PID=$!
+
+# --- Wait for backend to become healthy ---
+echo -e "${YELLOW}${BOLD}Waiting for backend (http://localhost:8324) to be ready...${RESET}"
+MAX_WAIT=120
+elapsed=0
+while (( elapsed < MAX_WAIT )); do
+ if curl -s -o /dev/null --connect-timeout 1 http://localhost:8324/ 2>/dev/null; then
+ echo -e "${GREEN}${BOLD}Backend is ready!${RESET}"
+ break
+ fi
+ if ! kill -0 "$BACKEND_PID" 2>/dev/null; then
+ echo -e "${RED}${BOLD}Backend process exited before becoming ready.${RESET}"
+ exit 1
+ fi
+ sleep 2
+ ((elapsed += 2))
+done
+
+if (( elapsed >= MAX_WAIT )); then
+ echo -e "${RED}${BOLD}Backend did not become ready within ${MAX_WAIT}s. Aborting.${RESET}"
+ exit 1
+fi
+
+# --- Start frontend ---
+echo -e "${GREEN}${BOLD}[frontend]${RESET} Starting frontend dev server..."
+bash "$PROJECT_ROOT/frontend/run.sh" > >(
+ while IFS= read -r line; do
+ printf "${GREEN}${BOLD}[frontend]${RESET} %s\n" "$line"
+ done
+) 2>&1 &
+FRONTEND_PID=$!
+
+# --- Wait for frontend dev server to become available ---
+echo -e "${YELLOW}${BOLD}Waiting for frontend (http://localhost:3000) to be ready...${RESET}"
+FRONTEND_MAX_WAIT=60
+frontend_elapsed=0
+while (( frontend_elapsed < FRONTEND_MAX_WAIT )); do
+ if curl -s -o /dev/null --connect-timeout 1 http://localhost:3000/ 2>/dev/null; then
+ echo -e "${GREEN}${BOLD}Frontend is ready!${RESET}"
+ break
+ fi
+ if ! kill -0 "$FRONTEND_PID" 2>/dev/null; then
+ echo -e "${RED}${BOLD}Frontend process exited before becoming ready.${RESET}"
+ exit 1
+ fi
+ sleep 2
+ ((frontend_elapsed += 2))
+done
+
+if (( frontend_elapsed >= FRONTEND_MAX_WAIT )); then
+ echo -e "${RED}${BOLD}Frontend did not become ready within ${FRONTEND_MAX_WAIT}s. Aborting.${RESET}"
+ exit 1
+fi
+
+# --- Start Electron in dev mode ---
+MAGENTA='\033[0;35m'
+echo -e "${MAGENTA}${BOLD}[electron]${RESET} Launching Electron dev shell..."
+(cd "$PROJECT_ROOT/electron" && ELECTRON_DEV=1 npx electron .) > >(
+ while IFS= read -r line; do
+ printf "${MAGENTA}${BOLD}[electron]${RESET} %s\n" "$line"
+ done
+) 2>&1 &
+ELECTRON_PID=$!
+
+echo ""
+echo -e "${BOLD}All services are running. Press Ctrl+C to stop.${RESET}"
+echo -e " Backend: ${BLUE}http://localhost:8324${RESET}"
+echo -e " Frontend: ${GREEN}http://localhost:3000${RESET}"
+echo -e " Electron: ${MAGENTA}dev shell (pid $ELECTRON_PID)${RESET}"
+echo ""
+
+# --- Monitor: if any service exits, tear down all ---
+while ! $SHUTTING_DOWN; do
+ if ! kill -0 "$BACKEND_PID" 2>/dev/null; then
+ echo -e "${RED}${BOLD}Backend process exited unexpectedly. Shutting down...${RESET}"
+ exit 1
+ fi
+ if [[ -n "$FRONTEND_PID" ]] && ! kill -0 "$FRONTEND_PID" 2>/dev/null; then
+ echo -e "${RED}${BOLD}Frontend process exited unexpectedly. Shutting down...${RESET}"
+ exit 1
+ fi
+ if [[ -n "$ELECTRON_PID" ]] && ! kill -0 "$ELECTRON_PID" 2>/dev/null; then
+ echo -e "${YELLOW}${BOLD}Electron process exited. Shutting down...${RESET}"
+ exit 0
+ fi
+ sleep 3
+done
diff --git a/scripts/build-app.sh b/scripts/build-app.sh
new file mode 100755
index 00000000..4453332d
--- /dev/null
+++ b/scripts/build-app.sh
@@ -0,0 +1,94 @@
+#!/bin/bash
+set -euo pipefail
+
+# Master build script for the OpenSwarm desktop app.
+#
+# Usage:
+# bash scripts/build-app.sh Local dev build (unsigned)
+# bash scripts/build-app.sh --publish Production build (signed, notarized, published to GitHub Releases)
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
+
+ENV_FILE="$PROJECT_ROOT/backend/.env"
+if [[ -f "$ENV_FILE" ]]; then
+ set -a
+ source "$ENV_FILE"
+ set +a
+fi
+
+PUBLISH_MODE=false
+if [[ "${1:-}" == "--publish" ]]; then
+ PUBLISH_MODE=true
+fi
+
+echo "========================================"
+echo " OpenSwarm Desktop App Builder"
+if $PUBLISH_MODE; then
+ echo " Mode: PRODUCTION (sign + notarize + publish)"
+else
+ echo " Mode: LOCAL (unsigned)"
+fi
+echo "========================================"
+echo ""
+
+if $PUBLISH_MODE; then
+ missing_vars=()
+ [[ -z "${APPLE_ID:-}" ]] && missing_vars+=("APPLE_ID")
+ [[ -z "${APPLE_APP_SPECIFIC_PASSWORD:-}" ]] && missing_vars+=("APPLE_APP_SPECIFIC_PASSWORD")
+ [[ -z "${APPLE_TEAM_ID:-}" ]] && missing_vars+=("APPLE_TEAM_ID")
+ [[ -z "${GH_TOKEN:-}" ]] && missing_vars+=("GH_TOKEN")
+ if [[ ${#missing_vars[@]} -gt 0 ]]; then
+ echo "ERROR: Missing required environment variables for --publish mode:"
+ printf ' - %s\n' "${missing_vars[@]}"
+ echo ""
+ echo "See script header for details."
+ exit 1
+ fi
+fi
+
+# Step 1: Build frontend
+echo "[1/3] Building frontend..."
+cd "$PROJECT_ROOT/frontend"
+npm ci
+npm run build
+
+if [[ ! -f "$PROJECT_ROOT/frontend/dist/index.html" ]]; then
+ echo "ERROR: Frontend build failed — dist/index.html not found"
+ exit 1
+fi
+echo "Frontend build complete."
+echo ""
+
+# Step 2: Build Python environment
+echo "[2/3] Building Python environment..."
+bash "$SCRIPT_DIR/build-python-env.sh"
+
+if [[ ! -d "$PROJECT_ROOT/electron/python-env" ]]; then
+ echo "ERROR: Python environment not found at electron/python-env/"
+ exit 1
+fi
+echo "Python environment ready."
+echo ""
+
+# Step 3: Package with electron-builder
+echo "[3/3] Packaging with electron-builder..."
+cd "$PROJECT_ROOT/electron"
+npm install
+
+if $PUBLISH_MODE; then
+ npx electron-builder --mac --publish always
+else
+ export CSC_IDENTITY_AUTO_DISCOVERY=false
+ npx electron-builder --mac --publish never
+fi
+
+echo ""
+echo "========================================"
+echo " Build Complete!"
+echo "========================================"
+echo ""
+echo "Output files:"
+ls -lh "$PROJECT_ROOT/electron/dist/"*.dmg 2>/dev/null || true
+ls -lh "$PROJECT_ROOT/electron/dist/"*.zip 2>/dev/null || true
+echo ""
diff --git a/scripts/build-python-env.sh b/scripts/build-python-env.sh
new file mode 100755
index 00000000..af321c58
--- /dev/null
+++ b/scripts/build-python-env.sh
@@ -0,0 +1,121 @@
+#!/bin/bash
+set -euo pipefail
+
+# Build an embedded Python environment for the Electron app.
+#
+# Downloads a standalone Python build from python-build-standalone,
+# creates a venv, and installs all backend dependencies.
+# The resulting python-env/ directory is bundled into the Electron app.
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
+ELECTRON_DIR="$PROJECT_ROOT/electron"
+PYTHON_ENV_DIR="$ELECTRON_DIR/python-env"
+
+PYTHON_VERSION="3.13"
+PYTHON_FULL_VERSION="3.13.2"
+ARCH="$(uname -m)"
+
+if [[ "$ARCH" == "arm64" ]]; then
+ PLATFORM_TAG="aarch64-apple-darwin"
+elif [[ "$ARCH" == "x86_64" ]]; then
+ PLATFORM_TAG="x86_64-apple-darwin"
+else
+ echo "Unsupported architecture: $ARCH"
+ exit 1
+fi
+
+RELEASE_TAG="20250212"
+TARBALL_NAME="cpython-${PYTHON_FULL_VERSION}+${RELEASE_TAG}-${PLATFORM_TAG}-install_only_stripped.tar.gz"
+DOWNLOAD_URL="https://github.com/indygreg/python-build-standalone/releases/download/${RELEASE_TAG}/${TARBALL_NAME}"
+TEMP_DIR="$(mktemp -d)"
+
+cleanup() {
+ rm -rf "$TEMP_DIR"
+}
+trap cleanup EXIT
+
+echo "=== Building Python Environment ==="
+echo "Architecture: $ARCH ($PLATFORM_TAG)"
+echo "Python: $PYTHON_FULL_VERSION"
+
+# Remove old env if present
+if [[ -d "$PYTHON_ENV_DIR" ]]; then
+ echo "Removing old python-env..."
+ rm -rf "$PYTHON_ENV_DIR"
+fi
+
+# Download standalone Python
+echo "Downloading standalone Python from python-build-standalone..."
+echo "URL: $DOWNLOAD_URL"
+curl -fSL --progress-bar -o "$TEMP_DIR/python.tar.gz" "$DOWNLOAD_URL"
+
+echo "Extracting..."
+tar xzf "$TEMP_DIR/python.tar.gz" -C "$TEMP_DIR"
+
+# The tarball extracts to python/
+EXTRACTED_DIR="$TEMP_DIR/python"
+if [[ ! -d "$EXTRACTED_DIR" ]]; then
+ echo "Error: Expected extracted directory at $EXTRACTED_DIR"
+ ls -la "$TEMP_DIR"
+ exit 1
+fi
+
+# Move into place
+mv "$EXTRACTED_DIR" "$PYTHON_ENV_DIR"
+echo "Python installed to $PYTHON_ENV_DIR"
+
+PYTHON_BIN="$PYTHON_ENV_DIR/bin/python${PYTHON_VERSION}"
+if [[ ! -f "$PYTHON_BIN" ]]; then
+ PYTHON_BIN="$PYTHON_ENV_DIR/bin/python3"
+fi
+
+echo "Python binary: $PYTHON_BIN"
+"$PYTHON_BIN" --version
+
+# Install pip (standalone builds may not include it)
+if ! "$PYTHON_BIN" -m pip --version &>/dev/null; then
+ echo "Installing pip..."
+ "$PYTHON_BIN" -m ensurepip --upgrade
+fi
+
+# Install backend dependencies
+echo "Installing backend dependencies..."
+"$PYTHON_BIN" -m pip install --upgrade pip
+"$PYTHON_BIN" -m pip install -r "$PROJECT_ROOT/backend/requirements.txt"
+
+# Install the debugger module
+echo "Installing debugger module..."
+"$PYTHON_BIN" -m pip install -e "$PROJECT_ROOT/debugger"
+
+# Verify claude-agent-sdk and its bundled binary
+echo "Verifying claude-agent-sdk..."
+"$PYTHON_BIN" -c "import claude_agent_sdk; print(f'claude-agent-sdk installed')"
+
+CLAUDE_BIN=$("$PYTHON_BIN" -c "
+from pathlib import Path
+import claude_agent_sdk
+sdk_dir = Path(claude_agent_sdk.__file__).parent
+bundled = sdk_dir / '_bundled' / 'claude'
+print(bundled)
+")
+if [[ -f "$CLAUDE_BIN" ]]; then
+ echo "Claude binary found: $CLAUDE_BIN"
+ chmod +x "$CLAUDE_BIN"
+else
+ echo "WARNING: Claude binary not found at $CLAUDE_BIN"
+fi
+
+# Clean up build artifacts to reduce size
+echo "Cleaning up..."
+find "$PYTHON_ENV_DIR" -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
+find "$PYTHON_ENV_DIR" -name "*.pyc" -delete 2>/dev/null || true
+find "$PYTHON_ENV_DIR" -type d -name "tests" -exec rm -rf {} + 2>/dev/null || true
+find "$PYTHON_ENV_DIR" -type d -name "test" -exec rm -rf {} + 2>/dev/null || true
+
+TOTAL_SIZE=$(du -sh "$PYTHON_ENV_DIR" | cut -f1)
+echo ""
+echo "=== Python Environment Ready ==="
+echo "Location: $PYTHON_ENV_DIR"
+echo "Size: $TOTAL_SIZE"
+echo ""